diff --git a/.gitmodules b/.gitmodules index ddb22ab7..030e59bb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "libs"] path = libs url = https://github.com/ElementAstro/LithiumLibrary.git +[submodule "src/atom"] + path = src/atom + url = https://github.com/ElementAstro/Atom diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e6a24fa..f77dc553 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,60 +10,30 @@ cmake_minimum_required(VERSION 3.20) project(Lithium VERSION 1.0.0 LANGUAGES C CXX) # Set project options -option(ENABLE_ASYNC "Enable Async Server Mode" ON) -option(ENABLE_NATIVE_SERVER "Enable to use INDI native server" OFF) -option(ENABLE_DEBUG "Enable Debug Mode" OFF) -option(ENABLE_FASHHASH "Enable Using emhash8 as fast hash map" OFF) -option(ENABLE_WEB_SERVER "Enable Web Server" ON) -option(ENABLE_WEB_CLIENT "Enable Web Client" ON) - -# Set compile definitions based on options -if(ENABLE_ASYNC) - add_compile_definitions(ENABLE_ASYNC_FLAG=1) -endif() -if(ENABLE_DEBUG) - add_compile_definitions(ENABLE_DEBUG_FLAG=1) -endif() -if(ENABLE_NATIVE_SERVER) - add_compile_definitions(ENABLE_NATIVE_SERVER_FLAG=1) -endif() -if(ENABLE_FASHHASH) - add_compile_definitions(ENABLE_FASHHASH_FLAG=1) -endif() -if(ENABLE_WEB_SERVER) - add_compile_definitions(ENABLE_WEB_SERVER_FLAG=1) -endif() -if(ENABLE_WEB_CLIENT) - add_compile_definitions(ENABLE_WEB_CLIENT_FLAG=1) -endif() +include(cmake/options.cmake) # Set policies -if(POLICY CMP0003) - cmake_policy(SET CMP0003 NEW) -endif() -if(POLICY CMP0043) - cmake_policy(SET CMP0043 NEW) -endif() +include(cmake/policies.cmake) # Set project directories set(Lithium_PROJECT_ROOT_DIR ${CMAKE_SOURCE_DIR}) set(lithium_src_dir ${Lithium_PROJECT_ROOT_DIR}/src) -set(lithium_module_dir ${lithium_src_dir}/atom) +set(atom_module ${lithium_src_dir}/atom) set(lithium_client_dir ${lithium_src_dir}/client) set(lithium_component_dir ${lithium_src_dir}/addon) set(lithium_task_dir ${lithium_src_dir}/task) -add_custom_target(CmakeAdditionalFiles - SOURCES - ${lithium_src_dir}/../cmake_modules/compiler_options.cmake) -LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/") -LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake_modules/") -include(cmake_modules/compiler_options.cmake) +#add_custom_target(CmakeAdditionalFiles +# SOURCES +# ${lithium_src_dir}/../cmake/compiler_options.cmake) +LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/") +LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/") +include(cmake/compiler_options.cmake) # ------------------ CPM Begin ------------------ set(CPM_DOWNLOAD_VERSION 0.35.6) -set(CPM_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}/cmake_modules/CPM.cmake") +set(CPM_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}/cmake/CPM.cmake") if(NOT (EXISTS ${CPM_DOWNLOAD_LOCATION})) message(STATUS "Downloading CPM.cmake") @@ -130,138 +100,17 @@ endif() include_directories(${CMAKE_CURRENT_BINARY_DIR}) include_directories(${CMAKE_SOURCE_DIR}/libs/) include_directories(${lithium_src_dir}) -include_directories(${lithium_module_dir}) +include_directories(${atom_module}) include_directories(${CMAKE_SOURCE_DIR}/libs/oatpp/oatpp) include_directories(${CMAKE_SOURCE_DIR}/libs/oatpp-swagger/oatpp-swagger) include_directories(${CMAKE_SOURCE_DIR}/libs/oatpp-websocket/oatpp-websocket) include_directories(${CMAKE_SOURCE_DIR}/libs/oatpp-openssl/oatpp-openssl) # Find packages -find_package(OpenSSL REQUIRED) -find_package(ZLIB REQUIRED) -find_package(SQLite3 REQUIRED) -find_package(fmt REQUIRED) -find_package(Readline REQUIRED) - -find_package(Python COMPONENTS Interpreter REQUIRED) +include(cmake/find_packages.cmake) -# Specify the path to requirements.txt -set(REQUIREMENTS_FILE "${CMAKE_CURRENT_SOURCE_DIR}/requirements.txt") - -# Define a function to check if a Python package is installed -function(check_python_package package version) - # Replace hyphens with underscores for the import statement - string(REPLACE "-" "_" import_name ${package}) - - # Check if the package can be imported - execute_process( - COMMAND ${Python_EXECUTABLE} -c "import ${import_name}" - RESULT_VARIABLE result - ) - - if(NOT result EQUAL 0) - set(result FALSE PARENT_SCOPE) - return() - endif() - - # Get the installed package version - execute_process( - COMMAND ${Python_EXECUTABLE} -m pip show ${package} - OUTPUT_VARIABLE package_info - ) - - # Extract version information from the output - string(FIND "${package_info}" "Version:" version_pos) - - if(version_pos EQUAL -1) - set(result FALSE PARENT_SCOPE) - return() # Return false if version not found - endif() - - # Extract the version string - string(SUBSTRING "${package_info}" ${version_pos} 1000 version_string) - string(REGEX REPLACE "Version: ([^ ]+).*" "\\1" installed_version "${version_string}") - - # Compare versions - if("${installed_version}" VERSION_LESS "${version}") - set(result FALSE PARENT_SCOPE) # Return false if installed version is less than required - return() - endif() - - set(result TRUE PARENT_SCOPE) -endfunction() - -if (EXISTS "${CMAKE_BINARY_DIR}/check_marker.txt") - message(STATUS "Check marker file found, skipping the checks.") -else() -# Create a virtual environment -set(VENV_DIR "${CMAKE_BINARY_DIR}/venv") -execute_process( - COMMAND ${Python_EXECUTABLE} -m venv ${VENV_DIR} -) - -set(PYTHON_EXECUTABLE "${VENV_DIR}/bin/python") -set(PIP_EXECUTABLE "${VENV_DIR}/bin/pip") - -# Upgrade pip in the virtual environment -execute_process( - COMMAND ${PIP_EXECUTABLE} install --upgrade pip -) - -# Read the requirements.txt file and install missing packages -file(READ ${REQUIREMENTS_FILE} requirements_content) - -# Split the requirements file content into lines -string(REPLACE "\n" ";" requirements_list "${requirements_content}") - -# Check and install each package -foreach(requirement ${requirements_list}) - # Skip empty lines - string(STRIP ${requirement} trimmed_requirement) - if(trimmed_requirement STREQUAL "") - continue() - endif() - - # Get the package name and version (without the version number) - if(${trimmed_requirement} MATCHES "==") - string(REPLACE "==" ";" parts ${trimmed_requirement}) - elseif(${trimmed_requirement} MATCHES ">=") - string(REPLACE ">=" ";" parts ${trimmed_requirement}) - else() - message(WARNING "Could not parse requirement '${trimmed_requirement}'. Skipping...") - continue() - endif() - - list(GET parts 0 package_name) - list(GET parts 1 package_version) - - # If the package name or version could not be parsed, output a warning and skip - if(NOT package_name OR NOT package_version) - message(WARNING "Could not parse requirement '${trimmed_requirement}'. Skipping...") - continue() - endif() - - # Check if the package is installed - message(STATUS "Checking if Python package '${package_name}' is installed...") - check_python_package(${package_name} ${package_version}) - if(NOT result) - message(STATUS "Package '${package_name}' is not installed or needs an upgrade. Installing...") - execute_process( - COMMAND ${PIP_EXECUTABLE} install ${trimmed_requirement} - RESULT_VARIABLE install_result - ) - if(NOT install_result EQUAL 0) - message(FATAL_ERROR "Failed to install Python package '${package_name}'.") - endif() - else() - message(STATUS "Package '${package_name}' is already installed with a suitable version.") - endif() -endforeach() -execute_process( - COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_BINARY_DIR}/check_marker.txt" - RESULT_VARIABLE result -) -endif() +# Configure Python environment +include(cmake/python_environment.cmake) # Configure config.h configure_file(${lithium_src_dir}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) @@ -271,52 +120,19 @@ set(BUILD_SHARED_LIBS ON) # Add subdirectories add_subdirectory(libs) add_subdirectory(modules) -add_subdirectory(${lithium_module_dir}) -add_subdirectory(${lithium_src_dir}/config) -add_subdirectory(${lithium_src_dir}/task) -add_subdirectory(${lithium_src_dir}/server) -add_subdirectory(${lithium_src_dir}/utils) -add_subdirectory(${lithium_src_dir}/addon) -add_subdirectory(${lithium_src_dir}/client) -add_subdirectory(${lithium_src_dir}/device) -add_subdirectory(tests) -# Set source files -set(component_module - ${lithium_component_dir}/addons.cpp - ${lithium_component_dir}/compiler.cpp - ${lithium_component_dir}/dependency.cpp - ${lithium_component_dir}/loader.cpp - ${lithium_component_dir}/manager.cpp - ${lithium_component_dir}/sandbox.cpp -) +add_subdirectory(${atom_module}) -set(config_module - ${lithium_src_dir}/config/configor.cpp -) +foreach(dir config task server utils addon client target device script debug tools) + add_subdirectory(${lithium_src_dir}/${dir}) +endforeach() -set(debug_module - ${lithium_src_dir}/debug/terminal.cpp - ${lithium_src_dir}/debug/suggestion.cpp - ${lithium_src_dir}/debug/command.cpp - ${lithium_src_dir}/debug/console.cpp - ${lithium_src_dir}/debug/history.cpp - ${lithium_src_dir}/debug/progress.cpp - ${lithium_src_dir}/debug/output_style.cpp - ${lithium_src_dir}/debug/check.cpp -) +add_subdirectory(tests) set(device_module - ${lithium_src_dir}/device/manager.cpp - ${lithium_src_dir}/device/template/device.cpp ) -set(script_module - ${lithium_src_dir}/script/manager.cpp - ${lithium_src_dir}/script/sheller.cpp -) - set(Lithium_module ${lithium_src_dir}/LithiumApp.cpp ${lithium_src_dir}/utils/constant.cpp @@ -348,11 +164,8 @@ target_link_libraries(lithium_server lithium-config lithium-task lithium-addons - oatpp-websocket - oatpp-swagger - oatpp-openssl - oatpp-zlib - oatpp + lithium-debug + lithium-script loguru atom fmt::fmt @@ -360,10 +173,13 @@ target_link_libraries(lithium_server OpenSSL::Crypto ${ZLIB_LIBRARIES} sqlite3 - cpp_httplib tinyxml2 pocketpy ${Readline_LIBRARIES} + ${FFI_LIBRARIES} + pybind11::embed + ${CURSES_LIBRARIES} + yaml-cpp::yaml-cpp ) if(WIN32) @@ -395,17 +211,7 @@ target_compile_definitions(lithium_server PRIVATE LOGURU_DEBUG_LOGGING) set_target_properties(lithium_server PROPERTIES OUTPUT_NAME lithium_server) # Set install paths -if(UNIX AND NOT APPLE) - if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX /usr CACHE PATH "Lithium install path" FORCE) - endif() -endif() - -if(WIN32) - set(CMAKE_INSTALL_PREFIX "C:/Program Files/LithiumServer") -elseif(LINUX) - set(CMAKE_INSTALL_PREFIX "/usr/lithium") -endif() +include(cmake/install_paths.cmake) # Enable folder grouping in IDEs set_property(GLOBAL PROPERTY USE_FOLDERS ON) diff --git a/README.md b/README.md index aabeeabe..0e9d1703 100644 --- a/README.md +++ b/README.md @@ -69,3 +69,6 @@ Alternatively, utilize the provided quick-build scripts to streamline the proces ### Intellectual Inspiration Embarking on the journey with Lithium, we embrace curiosity and an unwavering pursuit of knowledge, echoing the adapted verse which reminds us that every attempt, though fraught with challenges and setbacks, is a necessary step toward wisdom and understanding. Together, let us navigate the vast cosmos of astronomical imaging, our technology the vessel, innovation our sail, advancing relentlessly forward. + +
+
diff --git a/cmake_modules/CPM.cmake b/cmake/CPM.cmake similarity index 100% rename from cmake_modules/CPM.cmake rename to cmake/CPM.cmake diff --git a/cmake_modules/FindASCOM.cmake b/cmake/FindASCOM.cmake similarity index 100% rename from cmake_modules/FindASCOM.cmake rename to cmake/FindASCOM.cmake diff --git a/cmake_modules/FindCFITSIO.cmake b/cmake/FindCFITSIO.cmake similarity index 100% rename from cmake_modules/FindCFITSIO.cmake rename to cmake/FindCFITSIO.cmake diff --git a/cmake/FindFFI.cmake b/cmake/FindFFI.cmake new file mode 100644 index 00000000..f94cbc9a --- /dev/null +++ b/cmake/FindFFI.cmake @@ -0,0 +1,37 @@ +# FindFFI.cmake + +# Locate libffi +# This module defines +# FFI_FOUND - True if libffi was found +# FFI_INCLUDE_DIRS - Include directories for libffi +# FFI_LIBRARIES - Linker flags for libffi + +find_path(FFI_INCLUDE_DIRS + NAMES ffi.h + PATHS /usr/include /usr/local/include +) + +find_library(FFI_LIBRARIES + NAMES ffi + PATHS /usr/lib /usr/local/lib +) + +# Check if both the include directory and the library are found +if (FFI_INCLUDE_DIRS AND FFI_LIBRARIES) + set(FFI_FOUND TRUE) +else() + set(FFI_FOUND FALSE) +endif() + +# Provide a message about the finding +if (FFI_FOUND) + message(STATUS "Found libffi: ${FFI_LIBRARIES}") +else() + message(WARNING "libffi not found") +endif() + +# Export the results +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(FFI DEFAULT_MSG FFI_LIBRARIES FFI_INCLUDE_DIRS) + +mark_as_advanced(FFI_INCLUDE_DIRS FFI_LIBRARIES) diff --git a/cmake_modules/FindGMock.cmake b/cmake/FindGMock.cmake similarity index 100% rename from cmake_modules/FindGMock.cmake rename to cmake/FindGMock.cmake diff --git a/cmake/FindGlib.cmake b/cmake/FindGlib.cmake new file mode 100644 index 00000000..3a7866d4 --- /dev/null +++ b/cmake/FindGlib.cmake @@ -0,0 +1,62 @@ +# - Try to find Glib-2.0 (with gobject) +# Once done, this will define +# +# Glib_FOUND - system has Glib +# Glib_INCLUDE_DIRS - the Glib include directories +# Glib_LIBRARIES - link these to use Glib + +include(LibFindMacros) + +# Use pkg-config to get hints about paths +libfind_pkg_check_modules(Glib_PKGCONF glib-2.0>=2.16) + +# Main include dir +find_path(Glib_INCLUDE_DIR + NAMES glib.h + PATHS ${Glib_PKGCONF_INCLUDE_DIRS} + PATH_SUFFIXES glib-2.0 +) + +# Glib-related libraries also use a separate config header, which is in lib dir +find_path(GlibConfig_INCLUDE_DIR + NAMES glibconfig.h + PATHS ${Glib_PKGCONF_INCLUDE_DIRS} /usr + PATH_SUFFIXES lib/glib-2.0/include +) + +# Finally the library itself +find_library(Glib_LIBRARY + NAMES glib-2.0 + PATHS ${Glib_PKGCONF_LIBRARY_DIRS} +) + +# Find gobject library +find_library(GObject_LIBRARY + NAMES gobject-2.0 + PATHS ${Glib_PKGCONF_LIBRARY_DIRS} +) + +# Find gthread library +find_library(GThread_LIBRARY + NAMES gthread-2.0 + PATHS ${Glib_PKGCONF_LIBRARY_DIRS} +) + +# Set the include dir variables and the libraries and let libfind_process do the rest. +# NOTE: Singular variables for this library, plural for libraries this this lib depends on. +set(Glib_PROCESS_INCLUDES Glib_INCLUDE_DIR GlibConfig_INCLUDE_DIR) +set(Glib_PROCESS_LIBS Glib_LIBRARY GObject_LIBRARY GThread_LIBRARY) +libfind_process(Glib) + +# Redefine variables for backward compatibility +set(GLIB_INCLUDE_DIRS ${Glib_INCLUDE_DIRS}) +set(GLIB_LIBRARIES ${Glib_LIBRARIES}) +set(GLIB_FOUND ${Glib_FOUND}) + +# Provide a summary of the found libraries +if(Glib_FOUND) + message(STATUS "Found Glib: ${Glib_LIBRARIES}") + message(STATUS "Glib include directories: ${Glib_INCLUDE_DIRS}") +else() + message(WARNING "Glib not found") +endif() diff --git a/cmake_modules/FindINDI.cmake b/cmake/FindINDI.cmake similarity index 100% rename from cmake_modules/FindINDI.cmake rename to cmake/FindINDI.cmake diff --git a/cmake_modules/FindJPEG.cmake b/cmake/FindJPEG.cmake similarity index 100% rename from cmake_modules/FindJPEG.cmake rename to cmake/FindJPEG.cmake diff --git a/cmake/FindLibGit2.cmake b/cmake/FindLibGit2.cmake new file mode 100644 index 00000000..f0389d13 --- /dev/null +++ b/cmake/FindLibGit2.cmake @@ -0,0 +1,55 @@ +# FindLibGit2.cmake +# This module looks for the libgit2 library and sets the following variables: +# LIBGIT2_FOUND - True if libgit2 was found +# LIBGIT2_INCLUDE_DIRS - Directories containing libgit2 headers +# LIBGIT2_LIBRARIES - Libraries to link against libgit2 +# LIBGIT2_VERSION - Version of libgit2 found + +# Use pkg-config if available (usually on Linux and macOS) +find_package(PkgConfig QUIET) +if(PkgConfig_FOUND) + pkg_check_modules(PC_LIBGIT2 libgit2) +endif() + +# Try to find libgit2 using the CMake find_path/find_library functions +find_path(LIBGIT2_INCLUDE_DIR + NAMES git2.h + PATHS ${PC_LIBGIT2_INCLUDEDIR} ${PC_LIBGIT2_INCLUDE_DIRS} ENV INCLUDE + PATH_SUFFIXES libgit2 +) + +find_library(LIBGIT2_LIBRARY + NAMES git2 + PATHS ${PC_LIBGIT2_LIBDIR} ${PC_LIBGIT2_LIBRARY_DIRS} ENV LIB +) + +# Check if both the include path and library were found +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LibGit2 REQUIRED_VARS LIBGIT2_LIBRARY LIBGIT2_INCLUDE_DIR + VERSION_VAR PC_LIBGIT2_VERSION) + +# Set output variables +if(LIBGIT2_FOUND) + set(LIBGIT2_INCLUDE_DIRS ${LIBGIT2_INCLUDE_DIR}) + set(LIBGIT2_LIBRARIES ${LIBGIT2_LIBRARY}) + + # Try to extract the version if not provided by pkg-config + if(NOT LIBGIT2_VERSION AND EXISTS "${LIBGIT2_INCLUDE_DIR}/git2/version.h") + file(READ "${LIBGIT2_INCLUDE_DIR}/git2/version.h" _version_header) + string(REGEX MATCHALL "#define[ \t]+LIBGIT2_VER_[A-Z]+[ \t]+([0-9]+)" _version_matches ${_version_header}) + list(GET _version_matches 0 _major_match) + list(GET _version_matches 1 _minor_match) + list(GET _version_matches 2 _patch_match) + string(REGEX REPLACE ".*([0-9]+).*" "\\1" LIBGIT2_VERSION_MAJOR ${_major_match}) + string(REGEX REPLACE ".*([0-9]+).*" "\\1" LIBGIT2_VERSION_MINOR ${_minor_match}) + string(REGEX REPLACE ".*([0-9]+).*" "\\1" LIBGIT2_VERSION_PATCH ${_patch_match}) + set(LIBGIT2_VERSION "${LIBGIT2_VERSION_MAJOR}.${LIBGIT2_VERSION_MINOR}.${LIBGIT2_VERSION_PATCH}") + endif() + + message(STATUS "Found libgit2: ${LIBGIT2_LIBRARY} (include: ${LIBGIT2_INCLUDE_DIR}, version: ${LIBGIT2_VERSION})") +else() + message(STATUS "Could not find libgit2") +endif() + +# Provide variables for consumers of this module +mark_as_advanced(LIBGIT2_INCLUDE_DIR LIBGIT2_LIBRARY) diff --git a/cmake/FindLibSecret.cmake b/cmake/FindLibSecret.cmake new file mode 100644 index 00000000..16b13da0 --- /dev/null +++ b/cmake/FindLibSecret.cmake @@ -0,0 +1,29 @@ +# - Try to find LIBSECRET-1 +# Once done, this will define +# +# LIBSECRET_FOUND - system has LIBSECRET +# LIBSECRET_INCLUDE_DIRS - the LIBSECRET include directories +# LIBSECRET_LIBRARIES - link these to use LIBSECRET + +include(LibFindMacros) + +# Use pkg-config to get hints about paths +libfind_pkg_check_modules(LIBSECRET_PKGCONF LIBSECRET-1) + +# Main include dir +find_path(LIBSECRET_INCLUDE_DIR + NAMES LIBSECRET/secret.h + PATHS ${LIBSECRET_PKGCONF_INCLUDE_DIRS} +) + +# Finally the library itself +find_library(LIBSECRET_LIBRARY + NAMES secret-1 + PATHS ${LIBSECRET_PKGCONF_LIBRARY_DIRS} +) + +# Set the include dir variables and the libraries and let libfind_process do the rest. +# NOTE: Singular variables for this library, plural for libraries this this lib depends on. +set(LIBSECRET_PROCESS_INCLUDES LIBSECRET_INCLUDE_DIR) +set(LIBSECRET_PROCESS_LIBS LIBSECRET_LIBRARY) +libfind_process(LIBSECRET) diff --git a/cmake_modules/FindNova.cmake b/cmake/FindNova.cmake similarity index 100% rename from cmake_modules/FindNova.cmake rename to cmake/FindNova.cmake diff --git a/cmake_modules/FindReadline.cmake b/cmake/FindReadline.cmake similarity index 100% rename from cmake_modules/FindReadline.cmake rename to cmake/FindReadline.cmake diff --git a/cmake_modules/FindSeccomp.cmake b/cmake/FindSeccomp.cmake similarity index 100% rename from cmake_modules/FindSeccomp.cmake rename to cmake/FindSeccomp.cmake diff --git a/cmake_modules/FindYamlCpp.cmake b/cmake/FindYamlCpp.cmake similarity index 100% rename from cmake_modules/FindYamlCpp.cmake rename to cmake/FindYamlCpp.cmake diff --git a/cmake/INDI.cmake b/cmake/INDI.cmake new file mode 100644 index 00000000..6726261c --- /dev/null +++ b/cmake/INDI.cmake @@ -0,0 +1,132 @@ +################################# INDI ################################ +IF(USE_PLUGIN_TELESCOPECONTROL AND NOT WIN32) + + SET(PREFER_SYSTEM_INDILIB 1 CACHE BOOL "Use system-provided INDI instead of the bundled version") + + # Attempt to use system-provided INDI library + find_library(INDICLIENT_LIB indiclient) + if(INDICLIENT_LIB AND PREFER_SYSTEM_INDILIB) + MESSAGE(STATUS "Using system-provided indiclient at ${INDICLIENT_LIB}") + add_library(indiclient UNKNOWN IMPORTED GLOBAL) + set_target_properties(indiclient PROPERTIES IMPORTED_LOCATION "${INDICLIENT_LIB}") + + else() + # Check for specific system symbols + include(CheckSymbolExists) + check_symbol_exists(mremap sys/mman.h HAVE_MREMAP) + check_symbol_exists(timespec_get time.h HAVE_TIMESPEC_GET) + check_symbol_exists(clock_gettime time.h HAVE_CLOCK_GETTIME) + + # Download bundled INDI library + CPMAddPackage( + NAME indiclient + URL https://github.com/indilib/indi/archive/v2.1.0.zip + URL_HASH SHA256=551d23f8ea68b37c9b6504b6e5e55d32319d7605f2a63d78cfc73c2d95cee8f2 + VERSION 2.1.0 + DOWNLOAD_ONLY YES + ) + + # Apply fixes to source files + function(apply_fix input_file output_file pattern replacement) + file(READ ${input_file} file_content) + string(REGEX REPLACE "${pattern}" "${replacement}" file_content "${file_content}") + file(WRITE ${output_file} "${file_content}") + configure_file(${output_file} ${input_file} COPYONLY) + endfunction() + + apply_fix(${indiclient_SOURCE_DIR}/libs/indicore/indidevapi.h + ${indiclient_SOURCE_DIR}/libs/indicore/indidevapi.h.new + "#include .lilxml.h." + "#include \"lilxml.h\"\n#include ") + + apply_fix(${indiclient_SOURCE_DIR}/libs/indicore/libastro.h + ${indiclient_SOURCE_DIR}/libs/indicore/libastro.h.new + "#include " + "") + + apply_fix(${indiclient_SOURCE_DIR}/libs/indibase/inditelescope.h + ${indiclient_SOURCE_DIR}/inditelescope.h.new + "#include " + "struct ln_date;") + + apply_fix(${indiclient_SOURCE_DIR}/libs/indibase/indilogger.h + ${indiclient_SOURCE_DIR}/indilogger.h.new + "#include " + "#ifdef Q_OS_WIN\n#include \n#else\n#include \n#endif") + + # Set library version + set(INDI_SOVERSION "2") + set(CMAKE_INDI_VERSION_MAJOR 2) + set(CMAKE_INDI_VERSION_MINOR 1) + set(CMAKE_INDI_VERSION_RELEASE 0) + set(CMAKE_INDI_VERSION_STRING "${CMAKE_INDI_VERSION_MAJOR}.${CMAKE_INDI_VERSION_MINOR}.${CMAKE_INDI_VERSION_RELEASE}") + set(INDI_VERSION ${CMAKE_INDI_VERSION_STRING}) + set(DATA_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/indi/") + + configure_file(${indiclient_SOURCE_DIR}/config.h.cmake ${indiclient_SOURCE_DIR}/config.h) + configure_file(${indiclient_SOURCE_DIR}/libs/indicore/indiapi.h.in ${indiclient_SOURCE_DIR}/libs/indiapi.h) + + # Define source files for the library + list(APPEND INDILIB_SOURCES + ${indiclient_SOURCE_DIR}/libs/indicore/lilxml.cpp + ${indiclient_SOURCE_DIR}/libs/indicore/base64.c + ${indiclient_SOURCE_DIR}/libs/indicore/indidevapi.c + ${indiclient_SOURCE_DIR}/libs/indicore/indicom.c + ${indiclient_SOURCE_DIR}/libs/indicore/userio.c + ${indiclient_SOURCE_DIR}/libs/indicore/indiuserio.c + ${indiclient_SOURCE_DIR}/libs/indiabstractclient/abstractbaseclient.cpp + ${indiclient_SOURCE_DIR}/libs/indiclient/baseclient.cpp + ${indiclient_SOURCE_DIR}/libs/indidevice/basedevice.cpp + ${indiclient_SOURCE_DIR}/libs/indidevice/indibase.cpp + ${indiclient_SOURCE_DIR}/libs/indidevice/indistandardproperty.cpp + ${indiclient_SOURCE_DIR}/libs/indidevice/parentdevice.cpp + ${indiclient_SOURCE_DIR}/libs/indidevice/watchdeviceproperty.cpp + ${indiclient_SOURCE_DIR}/libs/indidevice/property/indiproperties.cpp + ${indiclient_SOURCE_DIR}/libs/indidevice/property/indipropertybasic.cpp + ${indiclient_SOURCE_DIR}/libs/indidevice/property/indipropertyblob.cpp + ${indiclient_SOURCE_DIR}/libs/indidevice/property/indiproperty.cpp + ${indiclient_SOURCE_DIR}/libs/indidevice/property/indipropertylight.cpp + ${indiclient_SOURCE_DIR}/libs/indidevice/property/indipropertynumber.cpp + ${indiclient_SOURCE_DIR}/libs/indidevice/property/indipropertyswitch.cpp + ${indiclient_SOURCE_DIR}/libs/indidevice/property/indipropertytext.cpp + ${indiclient_SOURCE_DIR}/libs/indidevice/property/indipropertyview.cpp + ${indiclient_SOURCE_DIR}/libs/sockets/tcpsocket.cpp + ) + + if(WIN32) + list(APPEND INDILIB_SOURCES ${indiclient_SOURCE_DIR}/libs/sockets/tcpsocket_win.cpp) + else() + list(APPEND INDILIB_SOURCES ${indiclient_SOURCE_DIR}/libs/sockets/tcpsocket_unix.cpp) + endif() + + # Build the static library + add_library(indiclient STATIC ${INDILIB_SOURCES}) + + # Configure target properties + target_compile_definitions(indiclient + PUBLIC + $<$:HAVE_TIMESPEC_GET> + $<$:HAVE_CLOCK_GETTIME> + ) + + target_include_directories(indiclient + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}/libindi + ${indiclient_SOURCE_DIR}/libindi + ${indiclient_SOURCE_DIR}/libs + PUBLIC + ${CMAKE_CURRENT_BINARY_DIR} + ${indiclient_SOURCE_DIR} + ${indiclient_SOURCE_DIR}/libs/sockets + ${indiclient_SOURCE_DIR}/libs/indiabstractclient + ${indiclient_SOURCE_DIR}/libs/indibase + ${indiclient_SOURCE_DIR}/libs/indicore + ${indiclient_SOURCE_DIR}/libs/indiclient + ${indiclient_SOURCE_DIR}/libs/indidevice + ${indiclient_SOURCE_DIR}/libs/indidevice/property + ) + + target_link_libraries(indiclient ${ZLIB_LIBRARIES}) + endif() + +ENDIF() diff --git a/cmake/LibFindMacros.cmake b/cmake/LibFindMacros.cmake new file mode 100644 index 00000000..ff9233a6 --- /dev/null +++ b/cmake/LibFindMacros.cmake @@ -0,0 +1,98 @@ +# Works the same as find_package, but forwards the "REQUIRED" and "QUIET" arguments +# used for the current package. For this to work, the first parameter must be the +# prefix of the current package, then the prefix of the new package etc, which are +# passed to find_package. +macro (libfind_package PREFIX) + set (LIBFIND_PACKAGE_ARGS ${ARGN}) + if (${PREFIX}_FIND_QUIETLY) + set (LIBFIND_PACKAGE_ARGS ${LIBFIND_PACKAGE_ARGS} QUIET) + endif (${PREFIX}_FIND_QUIETLY) + if (${PREFIX}_FIND_REQUIRED) + set (LIBFIND_PACKAGE_ARGS ${LIBFIND_PACKAGE_ARGS} REQUIRED) + endif (${PREFIX}_FIND_REQUIRED) + find_package(${LIBFIND_PACKAGE_ARGS}) +endmacro (libfind_package) + +# CMake developers made the UsePkgConfig system deprecated in the same release (2.6) +# where they added pkg_check_modules. Consequently I need to support both in my scripts +# to avoid those deprecated warnings. Here's a helper that does just that. +# Works identically to pkg_check_modules, except that no checks are needed prior to use. +macro (libfind_pkg_check_modules PREFIX PKGNAME) + if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) + include(UsePkgConfig) + pkgconfig(${PKGNAME} ${PREFIX}_INCLUDE_DIRS ${PREFIX}_LIBRARY_DIRS ${PREFIX}_LDFLAGS ${PREFIX}_CFLAGS) + else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) + find_package(PkgConfig) + if (PKG_CONFIG_FOUND) + pkg_check_modules(${PREFIX} ${PKGNAME}) + endif (PKG_CONFIG_FOUND) + endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) +endmacro (libfind_pkg_check_modules) + +# Do the final processing once the paths have been detected. +# If include dirs are needed, ${PREFIX}_PROCESS_INCLUDES should be set to contain +# all the variables, each of which contain one include directory. +# Ditto for ${PREFIX}_PROCESS_LIBS and library files. +# Will set ${PREFIX}_FOUND, ${PREFIX}_INCLUDE_DIRS and ${PREFIX}_LIBRARIES. +# Also handles errors in case library detection was required, etc. +macro (libfind_process PREFIX) + # Skip processing if already processed during this run + if (NOT ${PREFIX}_FOUND) + # Start with the assumption that the library was found + set (${PREFIX}_FOUND TRUE) + + # Process all includes and set _FOUND to false if any are missing + foreach (i ${${PREFIX}_PROCESS_INCLUDES}) + if (${i}) + set (${PREFIX}_INCLUDE_DIRS ${${PREFIX}_INCLUDE_DIRS} ${${i}}) + mark_as_advanced(${i}) + else (${i}) + set (${PREFIX}_FOUND FALSE) + endif (${i}) + endforeach (i) + + # Process all libraries and set _FOUND to false if any are missing + foreach (i ${${PREFIX}_PROCESS_LIBS}) + if (${i}) + set (${PREFIX}_LIBRARIES ${${PREFIX}_LIBRARIES} ${${i}}) + mark_as_advanced(${i}) + else (${i}) + set (${PREFIX}_FOUND FALSE) + endif (${i}) + endforeach (i) + + # Print message and/or exit on fatal error + if (${PREFIX}_FOUND) + if (NOT ${PREFIX}_FIND_QUIETLY) + message (STATUS "Found ${PREFIX} ${${PREFIX}_VERSION}") + endif (NOT ${PREFIX}_FIND_QUIETLY) + else (${PREFIX}_FOUND) + if (${PREFIX}_FIND_REQUIRED) + foreach (i ${${PREFIX}_PROCESS_INCLUDES} ${${PREFIX}_PROCESS_LIBS}) + message("${i}=${${i}}") + endforeach (i) + message (FATAL_ERROR "Required library ${PREFIX} NOT FOUND.\nInstall the library (dev version) and try again. If the library is already installed, use ccmake to set the missing variables manually.") + endif (${PREFIX}_FIND_REQUIRED) + endif (${PREFIX}_FOUND) + endif (NOT ${PREFIX}_FOUND) +endmacro (libfind_process) + +macro(libfind_library PREFIX basename) + set(TMP "") + if(MSVC80) + set(TMP -vc80) + endif(MSVC80) + if(MSVC90) + set(TMP -vc90) + endif(MSVC90) + set(${PREFIX}_LIBNAMES ${basename}${TMP}) + if(${ARGC} GREATER 2) + set(${PREFIX}_LIBNAMES ${basename}${TMP}-${ARGV2}) + string(REGEX REPLACE "\\." "_" TMP ${${PREFIX}_LIBNAMES}) + set(${PREFIX}_LIBNAMES ${${PREFIX}_LIBNAMES} ${TMP}) + endif(${ARGC} GREATER 2) + find_library(${PREFIX}_LIBRARY + NAMES ${${PREFIX}_LIBNAMES} + PATHS ${${PREFIX}_PKGCONF_LIBRARY_DIRS} + ) +endmacro(libfind_library) diff --git a/cmake_modules/ScanModule.cmake b/cmake/ScanModule.cmake similarity index 100% rename from cmake_modules/ScanModule.cmake rename to cmake/ScanModule.cmake diff --git a/cmake/compiler_options.cmake b/cmake/compiler_options.cmake new file mode 100644 index 00000000..f15781ff --- /dev/null +++ b/cmake/compiler_options.cmake @@ -0,0 +1,127 @@ +# Set default build type to Debug if not specified +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + message(STATUS "Setting build type to 'Debug' as none was specified.") + set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") +endif() + +# Check and set C++ compiler requirements +include(CheckCXXCompilerFlag) +check_cxx_compiler_flag(-std=c++20 HAS_CXX20_FLAG) +check_cxx_compiler_flag(-std=c++23 HAS_CXX23_FLAG) + +if(HAS_CXX23_FLAG) + set(CMAKE_CXX_STANDARD 23) +elseif(HAS_CXX20_FLAG) + set(CMAKE_CXX_STANDARD 20) +else() + message(FATAL_ERROR "C++20 standard is required!") +endif() + +# Check and set compiler version requirements +function(check_compiler_version) + if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") + execute_process( + COMMAND ${CMAKE_CXX_COMPILER} -dumpfullversion -std=c++${CMAKE_CXX_STANDARD} + OUTPUT_VARIABLE GCC_VERSION + ) + string(REGEX MATCH "[0-9]+\\.[0-9]+" GCC_VERSION ${GCC_VERSION}) + if(GCC_VERSION VERSION_LESS 13.0) + message(WARNING "g++ version ${GCC_VERSION} is too old. Checking for other available compilers.") + find_program(GCC_COMPILER NAMES g++-13 g++-14 g++-15) + if(GCC_COMPILER) + set(CMAKE_CXX_COMPILER ${GCC_COMPILER} CACHE STRING "C++ compiler" FORCE) + message(STATUS "Using g++ compiler found at ${GCC_COMPILER}") + else() + message(FATAL_ERROR "Minimum required version of g++ is 13.0") + endif() + else() + message(STATUS "Using g++ version ${GCC_VERSION}") + endif() + elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + execute_process( + COMMAND ${CMAKE_CXX_COMPILER} --version + OUTPUT_VARIABLE CLANG_VERSION_OUTPUT + ) + string(REGEX MATCH "clang version ([0-9]+\\.[0-9]+)" CLANG_VERSION ${CLANG_VERSION_OUTPUT}) + string(REGEX REPLACE "clang version ([0-9]+\\.[0-9]+).*" "\\1" CLANG_VERSION ${CLANG_VERSION}) + if(CLANG_VERSION VERSION_LESS 16.0) + message(WARNING "clang version ${CLANG_VERSION} is too old. Checking for other available compilers.") + find_program(CLANG_COMPILER NAMES clang-17 clang-18 clang-19) + if(CLANG_COMPILER) + set(CMAKE_CXX_COMPILER ${CLANG_COMPILER} CACHE STRING "C++ compiler" FORCE) + message(STATUS "Using clang compiler found at ${CLANG_COMPILER}") + else() + message(FATAL_ERROR "Minimum required version of clang is 16.0") + endif() + else() + message(STATUS "Using clang version ${CLANG_VERSION}") + endif() + elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.28) + message(WARNING "MSVC version ${CMAKE_CXX_COMPILER_VERSION} is too old. Checking for other available compilers.") + find_program(MSVC_COMPILER NAMES cl) + if(MSVC_COMPILER) + execute_process( + COMMAND ${MSVC_COMPILER} /? + OUTPUT_VARIABLE MSVC_VERSION_OUTPUT + ) + string(REGEX MATCH "Version ([0-9]+\\.[0-9]+)" MSVC_VERSION ${MSVC_VERSION_OUTPUT}) + if(MSVC_VERSION VERSION_LESS 19.28) + message(FATAL_ERROR "Minimum required version of MSVC is 19.28 (Visual Studio 2019 version 16.10)") + else() + set(CMAKE_CXX_COMPILER ${MSVC_COMPILER} CACHE STRING "C++ compiler" FORCE) + message(STATUS "Using MSVC compiler found at ${MSVC_COMPILER}") + endif() + else() + message(FATAL_ERROR "Minimum required version of MSVC is 19.28 (Visual Studio 2019 version 16.10)") + endif() + else() + message(STATUS "Using MSVC version ${CMAKE_CXX_COMPILER_VERSION}") + endif() + endif() +endfunction() + +check_compiler_version() + +# Set C standard +set(CMAKE_C_STANDARD 17) + +# Set compiler flags for Apple platforms +if(APPLE) + check_cxx_compiler_flag(-stdlib=libc++ HAS_LIBCXX_FLAG) + if(HAS_LIBCXX_FLAG) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") + endif() +endif() + +# Set build architecture for non-Apple platforms +if(NOT APPLE) + set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING "Build architecture for non-Apple platforms" FORCE) +endif() + +# Additional compiler flags +if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic") +elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") +endif() + +# Enable Address Sanitizer (ASan) for Debug builds +if(CMAKE_BUILD_TYPE MATCHES "Debug") + if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" AND NOT MINGW) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") + endif() +endif() + +# Enable Link Time Optimization (LTO) for Release builds +if(CMAKE_BUILD_TYPE MATCHES "Release") + if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto") + elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GL") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LTCG") + endif() +endif() diff --git a/cmake/find_packages.cmake b/cmake/find_packages.cmake new file mode 100644 index 00000000..5cbfe824 --- /dev/null +++ b/cmake/find_packages.cmake @@ -0,0 +1,11 @@ +find_package(OpenSSL REQUIRED) +find_package(ZLIB REQUIRED) +find_package(SQLite3 REQUIRED) +find_package(fmt REQUIRED) +find_package(Readline REQUIRED) +find_package(pybind11 CONFIG REQUIRED) +find_package(Python COMPONENTS Interpreter REQUIRED) +include_directories(${pybind11_INCLUDE_DIRS} ${Python_INCLUDE_DIRS}) +find_package(FFI REQUIRED) +find_package(Curses REQUIRED) +find_package(yaml-cpp REQUIRED) diff --git a/cmake/install_paths.cmake b/cmake/install_paths.cmake new file mode 100644 index 00000000..d2d6b05c --- /dev/null +++ b/cmake/install_paths.cmake @@ -0,0 +1,11 @@ +if(UNIX AND NOT APPLE) + if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX /usr CACHE PATH "Lithium install path" FORCE) + endif() +endif() + +if(WIN32) + set(CMAKE_INSTALL_PREFIX "C:/Program Files/LithiumServer") +elseif(LINUX) + set(CMAKE_INSTALL_PREFIX "/usr/lithium") +endif() diff --git a/cmake/options.cmake b/cmake/options.cmake new file mode 100644 index 00000000..dfc90e64 --- /dev/null +++ b/cmake/options.cmake @@ -0,0 +1,25 @@ +option(ENABLE_ASYNC "Enable Async Server Mode" ON) +option(ENABLE_NATIVE_SERVER "Enable to use INDI native server" OFF) +option(ENABLE_DEBUG "Enable Debug Mode" OFF) +option(ENABLE_FASHHASH "Enable Using emhash8 as fast hash map" OFF) +option(ENABLE_WEB_SERVER "Enable Web Server" ON) +option(ENABLE_WEB_CLIENT "Enable Web Client" ON) + +if(ENABLE_ASYNC) + add_compile_definitions(ENABLE_ASYNC_FLAG=1) +endif() +if(ENABLE_DEBUG) + add_compile_definitions(ENABLE_DEBUG_FLAG=1) +endif() +if(ENABLE_NATIVE_SERVER) + add_compile_definitions(ENABLE_NATIVE_SERVER_FLAG=1) +endif() +if(ENABLE_FASHHASH) + add_compile_definitions(ENABLE_FASHHASH_FLAG=1) +endif() +if(ENABLE_WEB_SERVER) + add_compile_definitions(ENABLE_WEB_SERVER_FLAG=1) +endif() +if(ENABLE_WEB_CLIENT) + add_compile_definitions(ENABLE_WEB_CLIENT_FLAG=1) +endif() diff --git a/cmake/policies.cmake b/cmake/policies.cmake new file mode 100644 index 00000000..48ed312c --- /dev/null +++ b/cmake/policies.cmake @@ -0,0 +1,6 @@ +if(POLICY CMP0003) + cmake_policy(SET CMP0003 NEW) +endif() +if(POLICY CMP0043) + cmake_policy(SET CMP0043 NEW) +endif() diff --git a/cmake/python_environment.cmake b/cmake/python_environment.cmake new file mode 100644 index 00000000..4eec3678 --- /dev/null +++ b/cmake/python_environment.cmake @@ -0,0 +1,117 @@ +# Specify the path to requirements.txt +set(REQUIREMENTS_FILE "${CMAKE_CURRENT_SOURCE_DIR}/requirements.txt") + +# Define a function to check if a Python package is installed +function(check_python_package package version) + # Replace hyphens with underscores for the import statement + string(REPLACE "-" "_" import_name ${package}) + + # Check if the package can be imported + execute_process( + COMMAND ${Python_EXECUTABLE} -c "import ${import_name}" + RESULT_VARIABLE result + ) + + if(NOT result EQUAL 0) + set(result FALSE PARENT_SCOPE) + return() + endif() + + # Get the installed package version + execute_process( + COMMAND ${Python_EXECUTABLE} -m pip show ${package} + OUTPUT_VARIABLE package_info + ) + + # Extract version information from the output + string(FIND "${package_info}" "Version:" version_pos) + + if(version_pos EQUAL -1) + set(result FALSE PARENT_SCOPE) + return() # Return false if version not found + endif() + + # Extract the version string + string(SUBSTRING "${package_info}" ${version_pos} 1000 version_string) + string(REGEX REPLACE "Version: ([^ ]+).*" "\\1" installed_version "${version_string}") + + # Compare versions + if("${installed_version}" VERSION_LESS "${version}") + set(result FALSE PARENT_SCOPE) # Return false if installed version is less than required + return() + endif() + + set(result TRUE PARENT_SCOPE) +endfunction() + +if (EXISTS "${CMAKE_BINARY_DIR}/check_marker.txt") + message(STATUS "Check marker file found, skipping the checks.") +else() +# Create a virtual environment +set(VENV_DIR "${CMAKE_BINARY_DIR}/venv") +execute_process( + COMMAND ${Python_EXECUTABLE} -m venv ${VENV_DIR} +) + +set(PYTHON_EXECUTABLE "${VENV_DIR}/bin/python") +set(PIP_EXECUTABLE "${VENV_DIR}/bin/pip") + +# Upgrade pip in the virtual environment +execute_process( + COMMAND ${PIP_EXECUTABLE} install --upgrade pip +) + +# Read the requirements.txt file and install missing packages +file(READ ${REQUIREMENTS_FILE} requirements_content) + +# Split the requirements file content into lines +string(REPLACE "\n" ";" requirements_list "${requirements_content}") + +# Check and install each package +foreach(requirement ${requirements_list}) + # Skip empty lines + string(STRIP ${requirement} trimmed_requirement) + if(trimmed_requirement STREQUAL "") + continue() + endif() + + # Get the package name and version (without the version number) + if(${trimmed_requirement} MATCHES "==") + string(REPLACE "==" ";" parts ${trimmed_requirement}) + elseif(${trimmed_requirement} MATCHES ">=") + string(REPLACE ">=" ";" parts ${trimmed_requirement}) + else() + message(WARNING "Could not parse requirement '${trimmed_requirement}'. Skipping...") + continue() + endif() + + list(GET parts 0 package_name) + list(GET parts 1 package_version) + + # If the package name or version could not be parsed, output a warning and skip + if(NOT package_name OR NOT package_version) + message(WARNING "Could not parse requirement '${trimmed_requirement}'. Skipping...") + continue() + endif() + + # Check if the package is installed + message(STATUS "Checking if Python package '${package_name}' is installed...") + check_python_package(${package_name} ${package_version}) + if(NOT result) + message(STATUS "Package '${package_name}' is not installed or needs an upgrade. Installing...") + execute_process( + COMMAND ${PIP_EXECUTABLE} install ${trimmed_requirement} + RESULT_VARIABLE install_result + ) + if(NOT install_result EQUAL 0) + message(FATAL_ERROR "Failed to install Python package '${package_name}'.") + endif() + else() + message(STATUS "Package '${package_name}' is already installed with a suitable version.") + endif() +endforeach() +execute_process( + COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_BINARY_DIR}/check_marker.txt" + RESULT_VARIABLE result +) +endif() diff --git a/cmake_modules/compiler_options.cmake b/cmake_modules/compiler_options.cmake deleted file mode 100644 index e9d5548d..00000000 --- a/cmake_modules/compiler_options.cmake +++ /dev/null @@ -1,90 +0,0 @@ -# Set default build type to Debug if not specified -if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - message(STATUS "Setting build type to 'Debug' as none was specified.") - set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") -endif() - -# Check and set C++ compiler requirements -include(CheckCXXCompilerFlag) -check_cxx_compiler_flag(-std=c++20 HAS_CXX20_FLAG) -check_cxx_compiler_flag(-std=c++23 HAS_CXX23_FLAG) - -if(HAS_CXX23_FLAG) - set(CMAKE_CXX_STANDARD 23) -elseif(HAS_CXX20_FLAG) - set(CMAKE_CXX_STANDARD 20) -else() - message(FATAL_ERROR "C++20 standard is required!") -endif() - -# Check and set compiler version requirements -if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") - execute_process( - COMMAND ${CMAKE_CXX_COMPILER} -dumpfullversion -std=c++${CMAKE_CXX_STANDARD} - OUTPUT_VARIABLE GCC_VERSION - ) - string(REGEX MATCH "[0-9]+\\.[0-9]+" GCC_VERSION ${GCC_VERSION}) - if(GCC_VERSION VERSION_LESS 10.0) - message(FATAL_ERROR "Minimum required version of g++ is 10.0") - endif() - message(STATUS "Using g++ version ${GCC_VERSION}") -elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - execute_process( - COMMAND ${CMAKE_CXX_COMPILER} --version - OUTPUT_VARIABLE CLANG_VERSION_OUTPUT - ) - string(REGEX MATCH "clang version ([0-9]+\\.[0-9]+)" CLANG_VERSION ${CLANG_VERSION_OUTPUT}) - string(REGEX REPLACE "clang version ([0-9]+\\.[0-9]+).*" "\\1" CLANG_VERSION ${CLANG_VERSION}) - if(CLANG_VERSION VERSION_LESS 10.0) - message(FATAL_ERROR "Minimum required version of clang is 10.0") - endif() - message(STATUS "Using clang version ${CLANG_VERSION}") -elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.28) - message(FATAL_ERROR "Minimum required version of MSVC is 19.28 (Visual Studio 2019 version 16.10)") - endif() - message(STATUS "Using MSVC version ${CMAKE_CXX_COMPILER_VERSION}") -endif() - -# Set C standard -set(CMAKE_C_STANDARD 17) - -# Set compiler flags for Apple platforms -if(APPLE) - check_cxx_compiler_flag(-stdlib=libc++ HAS_LIBCXX_FLAG) - if(HAS_LIBCXX_FLAG) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") - endif() -endif() - -# Set build architecture for non-Apple platforms -if(NOT APPLE) - set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING "Build architecture for non-Apple platforms" FORCE) -endif() - -# Additional compiler flags -if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic") -elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") -endif() - -# Enable Address Sanitizer (ASan) for Debug builds -if(CMAKE_BUILD_TYPE MATCHES "Debug") - if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" AND NOT MINGW) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") - endif() -endif() - -# Enable Link Time Optimization (LTO) for Release builds -if(CMAKE_BUILD_TYPE MATCHES "Release") - if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto") - elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GL") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LTCG") - endif() -endif() diff --git a/conanfile.txt b/conanfile.txt index 3b38b6ab..5e375210 100644 --- a/conanfile.txt +++ b/conanfile.txt @@ -1,7 +1,6 @@ [requires] cfitsio/4.3.1 cpython/3.12.2 -opencv/4.9.0 openssl/3.2.1 pybind11/2.12.0 tinyxml2/10.0.0 diff --git a/config/script/check.json b/config/script/check.json index 4353c796..f724bfdf 100644 --- a/config/script/check.json +++ b/config/script/check.json @@ -1,116 +1,80 @@ { - "danger_patterns": [ + "powershell_danger_patterns": [ { - "pattern": "\\brm\\s+-rf\\b", - "reason": "Potentially destructive operation" + "pattern": "Remove-Item -Recurse -Force", + "reason": "Potentially dangerous command that can delete files recursively and forcefully." }, { - "pattern": "\\bsudo\\b", - "reason": "Elevated permissions, dangerous" - }, - { - "pattern": "\\bmkfs\\b", - "reason": "Filesystem creation, dangerous operation" - }, - { - "pattern": "\\|", - "reason": "Pipeline usage might lead to unintended consequences" - }, - { - "pattern": "2>&1\\s*>\\s*/dev/null", - "reason": "Redirection might hide errors" - }, - { - "pattern": "\\bkill\\s+-9\\b", - "reason": "Forcefully killing processes, consider using safer signal" - }, - { - "pattern": "eval\\s+", - "reason": "Using eval can lead to security vulnerabilities" - }, - { - "pattern": "\\bshutdown\\b", - "reason": "Potentially shuts down or restarts the system" - }, - { - "pattern": "\\bdd\\s+iflag=fullblock", - "reason": "Low-level data copying can lead to data loss or corruption" - }, - { - "pattern": "\\bchmod\\s+([0-7]{3,4}|[ugoa]+\\+?)\\s+[^/].*", - "reason": "Changing file permissions may lead to security issues" - }, - { - "pattern": "\\bchown\\s+[^:]+:[^/]+\\s+[^/].*", - "reason": "Changing file ownership may lead to access issues" - }, - { - "pattern": "\\bssh\\s+root@[^\\s]+", - "reason": "SSH access as root user can be risky" - }, - { - "pattern": "\\bwget\\s+[^\\s]+", - "reason": "Downloading files might lead to unintended consequences" - }, - { - "pattern": "\\bcurl\\s+[^\\s]+", - "reason": "Fetching data from the internet can be risky" + "pattern": "Stop-Process -Force", + "reason": "Forcefully stopping a process can lead to data loss." } ], - "sensitive_patterns": [ - { - "pattern": "password\\s*=\\s*['\"].*['\"]", - "reason": "Possible plaintext password" - }, - { - "pattern": "AWS_SECRET_ACCESS_KEY", - "reason": "AWS secret key detected" - }, - { - "pattern": "GITHUB_TOKEN", - "reason": "GitHub token detected" - }, - { - "pattern": "PRIVATE_KEY", - "reason": "Private key detected" - }, - { - "pattern": "DB_PASSWORD\\s*=\\s*['\"].*['\"]", - "reason": "Database password detected" - }, + "windows_cmd_danger_patterns": [ { - "pattern": "SECRET_KEY\\s*=\\s*['\"].*['\"]", - "reason": "Application secret key detected" + "pattern": "del /s /q", + "reason": "Potentially dangerous command that can delete files recursively and quietly." }, { - "pattern": "API_KEY\\s*=\\s*['\"].*['\"]", - "reason": "API key detected" - }, + "pattern": "taskkill /F", + "reason": "Forcefully killing a task can lead to data loss." + } + ], + "bash_danger_patterns": [ { - "pattern": "TOKEN\\s*=\\s*['\"].*['\"]", - "reason": "Authorization token detected" + "pattern": "rm -rf /", + "reason": "Potentially dangerous command that can delete all files recursively and forcefully." }, { - "pattern": "PASSWORD\\s*=\\s*['\"].*['\"]", - "reason": "Password detected" + "pattern": "kill -9", + "reason": "Forcefully killing a process can lead to data loss." } ], - "environment_patterns": [ + "python_danger_patterns": [ { - "pattern": "\\$\\{?\\w+\\}?", - "reason": "Environment variable dependency detected" + "pattern": "os.system", + "reason": "Using os.system can be dangerous as it allows execution of arbitrary commands." }, { - "pattern": "\\$\\{[^\\}]+\\}", - "reason": "Environment variable with braces detected" - }, + "pattern": "subprocess.call", + "reason": "Using subprocess.call can be dangerous as it allows execution of arbitrary commands." + } + ], + "ruby_danger_patterns": [ { - "pattern": "\\$\\w+", - "reason": "Environment variable placeholder detected" + "pattern": "system", + "reason": "Using system can be dangerous as it allows execution of arbitrary commands." }, { - "pattern": "\\${HOME|USER|SHELL|PATH}", - "reason": "Common environment variables detected" + "pattern": "exec", + "reason": "Using exec can be dangerous as it allows execution of arbitrary commands." } - ] + ], + "replacements": { + "Remove-Item -Recurse -Force": "Remove-Item -Recurse", + "Stop-Process -Force": "Stop-Process", + "rm -rf /": "find . -type f -delete", + "kill -9": "kill -TERM" + }, + "external_commands": { + "powershell": [ + "Invoke-WebRequest", + "Invoke-RestMethod" + ], + "cmd": [ + "curl", + "wget" + ], + "bash": [ + "curl", + "wget" + ], + "python": [ + "os.system", + "subprocess.call" + ], + "ruby": [ + "system", + "exec" + ] + } } diff --git a/data/name.json b/data/name.json new file mode 100644 index 00000000..d23fd0e9 --- /dev/null +++ b/data/name.json @@ -0,0 +1 @@ +[{"ID": "NGC1097", "Name": "小棒旋星系"}, {"ID": "NGC1291", "Name": "雪领星系"}, {"ID": "NGC1313", "Name": "网罟座星系"}, {"ID": "NGC1380", "Name": "天炉座小透镜星系"}, {"ID": "NGC1399", "Name": "天炉座椭圆星系"}, {"ID": "NGC1433", "Name": "时钟座双子A"}, {"ID": "NGC1512", "Name": "时钟座双子B"}, {"ID": "NGC1532", "Name": "波江座进食星系"}, {"ID": "NGC1549", "Name": "剑鱼座双子A"}, {"ID": "NGC1553", "Name": "剑鱼座双子B"}, {"ID": "NGC1566", "Name": "剑鱼座星系"}, {"ID": "NGC1672", "Name": "鱼腹星系"}, {"ID": "NGC1808", "Name": "天鸽座星系"}, {"ID": "NGC2997", "Name": "唧筒座星系"}, {"ID": "NGC6744", "Name": "孔雀座星系"}, {"ID": "M1", "Name": "M1-蟹状星云"}, {"ID": "M2", "Name": "M2"}, {"ID": "M3", "Name": "M3"}, {"ID": "M4", "Name": "M4-蟹状星团"}, {"ID": "M5", "Name": "M5-玫瑰星团"}, {"ID": "M6", "Name": "M6-蝴蝶星团"}, {"ID": "M7", "Name": "M7-托勒密星团"}, {"ID": "M8", "Name": "M8-礁湖星云"}, {"ID": "M9", "Name": "M9"}, {"ID": "M10", "Name": "M10"}, {"ID": "M11", "Name": "M11-野鸭星团"}, {"ID": "M12", "Name": "M12-口香糖球状星团"}, {"ID": "M13", "Name": "M13-武仙座球状星团"}, {"ID": "M14", "Name": "M14"}, {"ID": "M15", "Name": "M15-飞马座星团"}, {"ID": "M16", "Name": "M16-鹰星云"}, {"ID": "M17", "Name": "M17-奥米茄星云"}, {"ID": "M18", "Name": "M18-黑天鹅星团"}, {"ID": "M19", "Name": "M19"}, {"ID": "M20", "Name": "M20-三裂星云"}, {"ID": "M21", "Name": "M21-韦伯的十字架"}, {"ID": "M22", "Name": "M22-人马座大星团"}, {"ID": "M23", "Name": "M23"}, {"ID": "M24", "Name": "M24-人马座恒星云"}, {"ID": "M25", "Name": "M25"}, {"ID": "M26", "Name": "M26"}, {"ID": "M27", "Name": "M27-哑铃星云"}, {"ID": "M28", "Name": "M28"}, {"ID": "M29", "Name": "M29-冷却塔星团"}, {"ID": "M30", "Name": "M30-海蜇星团"}, {"ID": "M31", "Name": "M31-仙女座星系"}, {"ID": "M32", "Name": "M32"}, {"ID": "M33", "Name": "M33-三角座星系"}, {"ID": "M34", "Name": "M34-螺旋星团"}, {"ID": "M35", "Name": "M35-鞋扣星团"}, {"ID": "M36", "Name": "M36-风车星团"}, {"ID": "M37", "Name": "M37-一月椒盐星团"}, {"ID": "M38", "Name": "M38-海星星团"}, {"ID": "M39", "Name": "M39"}, {"ID": "M40", "Name": "M40-温内克4"}, {"ID": "M41", "Name": "M41-小蜂巢星团"}, {"ID": "M42", "Name": "M42-猎户座大星云"}, {"ID": "M43", "Name": "M43-迪马伦星云"}, {"ID": "M44", "Name": "M44-蜂巢星团"}, {"ID": "M45", "Name": "M45-昴星团"}, {"ID": "M46", "Name": "M46"}, {"ID": "M47", "Name": "M47"}, {"ID": "M48", "Name": "M48-蜂巢星团"}, {"ID": "M49", "Name": "M49"}, {"ID": "M50", "Name": "M50-心状星团"}, {"ID": "M51", "Name": "M51-涡状星系"}, {"ID": "M52", "Name": "M52-仙后座椒盐星团"}, {"ID": "M53", "Name": "M53"}, {"ID": "M54", "Name": "M54"}, {"ID": "M55", "Name": "M55-幽灵星团"}, {"ID": "M56", "Name": "M56"}, {"ID": "M57", "Name": "M57-指环星云"}, {"ID": "M58", "Name": "M58"}, {"ID": "M59", "Name": "M59"}, {"ID": "M60", "Name": "M60"}, {"ID": "M61", "Name": "M61-胖螺旋星系"}, {"ID": "M62", "Name": "M62-闪球星团"}, {"ID": "M63", "Name": "M63-向日葵星系"}, {"ID": "M64", "Name": "M64-黑眼星系"}, {"ID": "M65", "Name": "M65-狮子座三重星系"}, {"ID": "M66", "Name": "M66-狮子座三重星系"}, {"ID": "M67", "Name": "M67-金眼星团"}, {"ID": "M68", "Name": "M68"}, {"ID": "M69", "Name": "M69"}, {"ID": "M70", "Name": "M70"}, {"ID": "M71", "Name": "M71-神仙鱼星团"}, {"ID": "M72", "Name": "M72"}, {"ID": "M73", "Name": "M73"}, {"ID": "M74", "Name": "M74-幻影星系"}, {"ID": "M75", "Name": "M75"}, {"ID": "M76", "Name": "M76-小哑铃星云"}, {"ID": "M77", "Name": "M77-鲸鱼座A"}, {"ID": "M78", "Name": "M78-鬼马小精灵星云 "}, {"ID": "M79", "Name": "M79"}, {"ID": "M80", "Name": "M80"}, {"ID": "M81", "Name": "M81-波德星系"}, {"ID": "M82", "Name": "M82-雪茄星系"}, {"ID": "M83", "Name": "M83-南风车星系"}, {"ID": "M84", "Name": "M84-马卡良星系链"}, {"ID": "M85", "Name": "M85"}, {"ID": "M86", "Name": "M86-浮士德V051"}, {"ID": "M87", "Name": "M87-室女座星系"}, {"ID": "M88", "Name": "M88"}, {"ID": "M89", "Name": "M89"}, {"ID": "M90", "Name": "M90"}, {"ID": "M91", "Name": "M91"}, {"ID": "M92", "Name": "M92"}, {"ID": "M93", "Name": "M93-蝴蝶星团"}, {"ID": "M94", "Name": "M94-鳄鱼眼星系"}, {"ID": "M95", "Name": "M95"}, {"ID": "M96", "Name": "M96"}, {"ID": "M97", "Name": "M97-夜枭星云"}, {"ID": "M98", "Name": "M98"}, {"ID": "M99", "Name": "M99-室女座星系团风车"}, {"ID": "M100", "Name": "M100-吹风机星系"}, {"ID": "M101", "Name": "M101-风车星系"}, {"ID": "M102", "Name": "M102-纺锤星系"}, {"ID": "M103", "Name": "M103"}, {"ID": "M104", "Name": "M104-草帽星系"}, {"ID": "M105", "Name": "M105"}, {"ID": "M106", "Name": "M106"}, {"ID": "M107", "Name": "M107-十字架星团"}, {"ID": "M108", "Name": "M108-冲浪板星系"}, {"ID": "M109", "Name": "M109-吸尘器星系"}, {"ID": "M110", "Name": "M110"}, {"ID": "NGC1952", "Name": "M1-蟹状星云"}, {"ID": "NGC7089", "Name": "M2"}, {"ID": "NGC5272", "Name": "M3"}, {"ID": "NGC6121", "Name": "M4-蟹状星团"}, {"ID": "NGC5904", "Name": "M5-玫瑰星团"}, {"ID": "NGC6405", "Name": "M6-蝴蝶星团"}, {"ID": "NGC6475", "Name": "M7-托勒密星团"}, {"ID": "NGC6523", "Name": "M8-礁湖星云"}, {"ID": "NGC6333", "Name": "M9"}, {"ID": "NGC6254", "Name": "M10"}, {"ID": "NGC6705", "Name": "M11-野鸭星团"}, {"ID": "NGC6218", "Name": "M12-口香糖球状星团"}, {"ID": "NGC6205", "Name": "M13-武仙座球状星团"}, {"ID": "NGC6402", "Name": "M14"}, {"ID": "NGC7078", "Name": "M15-飞马座星团"}, {"ID": "NGC6611", "Name": "M16-鹰星云"}, {"ID": "NGC6618", "Name": "M17-奥米茄星云"}, {"ID": "NGC6613", "Name": "M18-黑天鹅星团"}, {"ID": "NGC6273", "Name": "M19"}, {"ID": "NGC6514", "Name": "M20-三裂星云"}, {"ID": "NGC6531", "Name": "M21-韦伯的十字架"}, {"ID": "NGC6656", "Name": "M22-人马座大星团"}, {"ID": "NGC6494", "Name": "M23"}, {"ID": "IC4715", "Name": "M24"}, {"ID": "IC4725", "Name": "M25"}, {"ID": "NGC6694", "Name": "M26"}, {"ID": "NGC6853", "Name": "M27-哑铃星云"}, {"ID": "NGC6626", "Name": "M28"}, {"ID": "NGC6913", "Name": "M29-冷却塔星团"}, {"ID": "NGC7099", "Name": "M30-海蜇星团"}, {"ID": "NGC224", "Name": "M31-仙女座星系"}, {"ID": "NGC221", "Name": "M32"}, {"ID": "NGC598", "Name": "M33-三角座星系"}, {"ID": "NGC1039", "Name": "M34-螺旋星团"}, {"ID": "NGC2168", "Name": "M35-鞋扣星团"}, {"ID": "NGC1960", "Name": "M36-风车星团"}, {"ID": "NGC2099", "Name": "M37-一月椒盐星团"}, {"ID": "NGC1912", "Name": "M38-海星星团"}, {"ID": "NGC7092", "Name": "M39"}, {"ID": null, "Name": "M40-温内克4"}, {"ID": "NGC2287", "Name": "M41-小蜂巢星团"}, {"ID": "NGC1976", "Name": "M42-猎户座大星云"}, {"ID": "NGC1982", "Name": "M43-迪马伦星云"}, {"ID": "NGC2632", "Name": "M44-蜂巢星团"}, {"ID": null, "Name": "M45-昴星团"}, {"ID": "NGC2437", "Name": "M46"}, {"ID": "NGC2422", "Name": "M47"}, {"ID": "NGC2548", "Name": "M48-蜂巢星团"}, {"ID": "NGC4472", "Name": "M49"}, {"ID": "NGC2323", "Name": "M50-心状星团"}, {"ID": "NGC5194", "Name": "M51-涡状星系"}, {"ID": "NGC7654", "Name": "M52-仙后座椒盐星团"}, {"ID": "NGC5024", "Name": "M53"}, {"ID": "NGC6715", "Name": "M54"}, {"ID": "NGC6809", "Name": "M55-幽灵星团"}, {"ID": "NGC6779", "Name": "M56"}, {"ID": "NGC6720", "Name": "M57-指环星云"}, {"ID": "NGC4579", "Name": "M58"}, {"ID": "NGC4621", "Name": "M59"}, {"ID": "NGC4649", "Name": "M60"}, {"ID": "NGC4303", "Name": "M61-胖螺旋星系"}, {"ID": "NGC6266", "Name": "M62-闪球星团"}, {"ID": "NGC5055", "Name": "M63-向日葵星系"}, {"ID": "NGC4826", "Name": "M64-黑眼星系"}, {"ID": "NGC3623", "Name": "M65-狮子座三重星系"}, {"ID": "NGC3627", "Name": "M66-狮子座三重星系"}, {"ID": "NGC2682", "Name": "M67-金眼星团"}, {"ID": "NGC4590", "Name": "M68"}, {"ID": "NGC6637", "Name": "M69"}, {"ID": "NGC6681", "Name": "M70"}, {"ID": "NGC6838", "Name": "M71-神仙鱼星团"}, {"ID": "NGC6981", "Name": "M72"}, {"ID": "NGC6994", "Name": "M73"}, {"ID": "NGC628", "Name": "M74-幻影星系"}, {"ID": "NGC6864", "Name": "M75"}, {"ID": "NGC650", "Name": "M76-小哑铃星云"}, {"ID": "NGC1068", "Name": "M77-鲸鱼座A"}, {"ID": "NGC2068", "Name": "M78-鬼马小精灵星云 "}, {"ID": "NGC1904", "Name": "M79"}, {"ID": "NGC6093", "Name": "M80"}, {"ID": "NGC3031", "Name": "M81-波德星系"}, {"ID": "NGC3034", "Name": "M82-雪茄星系"}, {"ID": "NGC5236", "Name": "M83-南风车星系"}, {"ID": "NGC4374", "Name": "M84-马卡良星系链"}, {"ID": "NGC4382", "Name": "M85"}, {"ID": "NGC4406", "Name": "M86-浮士德V051"}, {"ID": "NGC4486", "Name": "M87-室女座星系"}, {"ID": "NGC4501", "Name": "M88"}, {"ID": "NGC4552", "Name": "M89"}, {"ID": "NGC4569", "Name": "M90"}, {"ID": "NGC4548", "Name": "M91"}, {"ID": "NGC6341", "Name": "M92"}, {"ID": "NGC2447", "Name": "M93-蝴蝶星团"}, {"ID": "NGC4736", "Name": "M94-鳄鱼眼星系"}, {"ID": "NGC3351", "Name": "M95"}, {"ID": "NGC3368", "Name": "M96"}, {"ID": "NGC3587", "Name": "M97-夜枭星云"}, {"ID": "NGC4192", "Name": "M98"}, {"ID": "NGC4254", "Name": "M99-室女座星系团风车"}, {"ID": "NGC4321", "Name": "M100-吹风机星系"}, {"ID": "NGC5457", "Name": "M101-风车星系"}, {"ID": "NGC5866", "Name": "M102-纺锤星系"}, {"ID": "NGC581", "Name": "M103"}, {"ID": "NGC4594", "Name": "M104-草帽星系"}, {"ID": "NGC3379", "Name": "M105"}, {"ID": "NGC4258", "Name": "M106"}, {"ID": "NGC6171", "Name": "M107-十字架星团"}, {"ID": "NGC3556", "Name": "M108-冲浪板星系"}, {"ID": "NGC3992", "Name": "M109-吸尘器星系"}, {"ID": "NGC205", "Name": "M110"}, {"ID": "NGC188", "Name": "C1-近极星团"}, {"ID": "NGC40", "Name": "C2-蝴蝶结星云"}, {"ID": "NGC4236", "Name": "C3"}, {"ID": "NGC7023", "Name": "C4-鸢尾花星云"}, {"ID": "IC342", "Name": "C5-马费伊1星系群"}, {"ID": "NGC6543", "Name": "C6-猫眼星云"}, {"ID": "NGC2403", "Name": "C7"}, {"ID": "NGC559", "Name": "C8"}, {"ID": "NGC663", "Name": "C10-割草机星团"}, {"ID": "NGC7635", "Name": "C11-气泡星云"}, {"ID": "NGC6946", "Name": "C12-烟花星系"}, {"ID": "NGC457", "Name": "C13-蜻蜓星团"}, {"ID": "NGC869", "Name": "C14-双星团"}, {"ID": "NGC884", "Name": "C14-双星团"}, {"ID": "NGC6826", "Name": "C15-眨眼行星状星云"}, {"ID": "NGC7243", "Name": "C16"}, {"ID": "NGC147", "Name": "C17"}, {"ID": "NGC185", "Name": "C18"}, {"ID": "IC5146", "Name": "C19-茧星云"}, {"ID": "NGC7000", "Name": "C20-北美洲星云"}, {"ID": "NGC4449", "Name": "C21"}, {"ID": "NGC7662", "Name": "C22-蓝雪球星云"}, {"ID": "NGC891", "Name": "C23"}, {"ID": "NGC1275", "Name": "C24-英仙座A"}, {"ID": "NGC2419", "Name": "C25-漫游者星团"}, {"ID": "NGC4244", "Name": "C26"}, {"ID": "NGC6888", "Name": "C27-眉月星云"}, {"ID": "NGC752", "Name": "C28"}, {"ID": "NGC5005", "Name": "C29"}, {"ID": "NGC7331", "Name": "C30-鹿舔星系群"}, {"ID": "IC405", "Name": "C31-火焰之星星云"}, {"ID": "NGC4631", "Name": "C32-鲸鱼星系"}, {"ID": "NGC6992", "Name": "C33-东面纱星云"}, {"ID": "NGC6960", "Name": "C34-纤维星云"}, {"ID": "NGC4889", "Name": "C35-后发座B"}, {"ID": "NGC4559", "Name": "C36-锦鲤星系"}, {"ID": "NGC6885", "Name": "C37-狐狸座20星团"}, {"ID": "NGC4565", "Name": "C38-针状星系"}, {"ID": "NGC2392", "Name": "C39-爱斯基摩星云"}, {"ID": "NGC3626", "Name": "C40"}, {"ID": "NGC7006", "Name": "C42"}, {"ID": "NGC7814", "Name": "C43-小墨西哥帽星系"}, {"ID": "NGC7479", "Name": "C44-超人星系"}, {"ID": "NGC5248", "Name": "C45"}, {"ID": "NGC2261", "Name": "C46-哈勃变光星云"}, {"ID": "NGC6934", "Name": "C47"}, {"ID": "NGC2775", "Name": "C48"}, {"ID": "NGC2237", "Name": "C49-玫瑰星云"}, {"ID": "NGC2244", "Name": "C50-玫瑰星云"}, {"ID": "IC1613", "Name": "C51"}, {"ID": "NGC4697", "Name": "C52"}, {"ID": "NGC3115", "Name": "C53-纺锤星系"}, {"ID": "NGC2506", "Name": "C54"}, {"ID": "NGC7009", "Name": "C55-土星状星云"}, {"ID": "NGC246", "Name": "C56-头骨星云"}, {"ID": "NGC6822", "Name": "C57-巴纳德星系"}, {"ID": "NGC2360", "Name": "C58-卡罗琳星团"}, {"ID": "NGC3242", "Name": "C59-木魂星云"}, {"ID": "NGC4038", "Name": "C60-触须星系"}, {"ID": "NGC4039", "Name": "C61-触须星系"}, {"ID": "NGC247", "Name": "C62-伯比奇链"}, {"ID": "NGC7293", "Name": "C63-螺旋星云"}, {"ID": "NGC2362", "Name": "C64-弧矢增六星团"}, {"ID": "NGC253", "Name": "C65-玉夫座星系"}, {"ID": "NGC5694", "Name": "C66"}, {"ID": "NGC1097", "Name": "C67"}, {"ID": "NGC6729", "Name": "C68-南冕座R星云"}, {"ID": "NGC6302", "Name": "C69-小虫星云"}, {"ID": "NGC300", "Name": "C70-南风车星系"}, {"ID": "NGC2477", "Name": "C71-电吉他星团"}, {"ID": "NGC55", "Name": "C72-珍珠串星系"}, {"ID": "NGC1851", "Name": "C73"}, {"ID": "NGC3132", "Name": "C74-双环星云"}, {"ID": "NGC6124", "Name": "C75"}, {"ID": "NGC6231", "Name": "C76-伪彗星星云"}, {"ID": "NGC5128", "Name": "C77-半人马座A"}, {"ID": "NGC6541", "Name": "C78-砂锅星团"}, {"ID": "NGC3201", "Name": "C79"}, {"ID": "NGC5139", "Name": "C80-半人马座奥米茄星团"}, {"ID": "NGC6352", "Name": "C81"}, {"ID": "NGC6193", "Name": "C82"}, {"ID": "NGC4945", "Name": "C83-镊子星系"}, {"ID": "NGC5286", "Name": "C84"}, {"ID": "IC2391", "Name": "C85-船帆座ο星团"}, {"ID": "NGC6397", "Name": "C86"}, {"ID": "NGC1261", "Name": "C87"}, {"ID": "NGC5823", "Name": "C88"}, {"ID": "NGC6087", "Name": "C89-矩尺座S星团"}, {"ID": "NGC2867", "Name": "C90"}, {"ID": "NGC3532", "Name": "C91-许愿井星团"}, {"ID": "NGC3372", "Name": "C92-船底座星云"}, {"ID": "NGC6752", "Name": "C93-孔雀座球状星团"}, {"ID": "NGC4755", "Name": "C94-宝盒星团"}, {"ID": "NGC6025", "Name": "C95"}, {"ID": "NGC2516", "Name": "C96-短跑人星团"}, {"ID": "NGC3766", "Name": "C97-珍珠星团"}, {"ID": "NGC4609", "Name": "C98-煤袋星团"}, {"ID": "IC2944", "Name": "C100-奔鸡星云"}, {"ID": "NGC6744", "Name": "C101"}, {"ID": "IC2602", "Name": "C102-南天七姐妹星团"}, {"ID": "NGC2070", "Name": "C103-狼蛛星云"}, {"ID": "NGC362", "Name": "C104"}, {"ID": "NGC4833", "Name": "C105-南天蝴蝶星团"}, {"ID": "NGC104", "Name": "C106-杜鹃座47球状星团"}, {"ID": "NGC6101", "Name": "C107"}, {"ID": "NGC4372", "Name": "C108"}, {"ID": "NGC3195", "Name": "C109"}, {"ID": "C1", "Name": "C1-近极星团"}, {"ID": "C2", "Name": "C2-蝴蝶结星云"}, {"ID": "C4", "Name": "C4-鸢尾花星云"}, {"ID": "C5", "Name": "C5-马费伊1星系群"}, {"ID": "C6", "Name": "C6-猫眼星云"}, {"ID": "C9", "Name": "C9-洞穴星云"}, {"ID": "C10", "Name": "C10-割草机星团"}, {"ID": "C11", "Name": "C11-气泡星云"}, {"ID": "C12", "Name": "C12-烟花星系"}, {"ID": "C13", "Name": "C13-蜻蜓星团"}, {"ID": "C14", "Name": "C14-双星团"}, {"ID": "C14", "Name": "C14-双星团"}, {"ID": "C15", "Name": "C15-眨眼行星状星云"}, {"ID": "C19", "Name": "C19-茧星云"}, {"ID": "C20", "Name": "C20-北美洲星云"}, {"ID": "C22", "Name": "C22-蓝雪球星云"}, {"ID": "C24", "Name": "C24-英仙座A"}, {"ID": "C25", "Name": "C25-漫游者星团"}, {"ID": "C27", "Name": "C27-眉月星云"}, {"ID": "C30", "Name": "C30-鹿舔星系群"}, {"ID": "C31", "Name": "C31-火焰之星星云"}, {"ID": "C32", "Name": "C32-鲸鱼星系"}, {"ID": "C33", "Name": "C33-东面纱星云"}, {"ID": "C34", "Name": "C34-纤维星云"}, {"ID": "C35", "Name": "C35-后发座B"}, {"ID": "C36", "Name": "C36-锦鲤星系"}, {"ID": "C37", "Name": "C37-狐狸座20星团"}, {"ID": "C38", "Name": "C38-针状星系"}, {"ID": "C39", "Name": "C39-爱斯基摩星云"}, {"ID": "C41", "Name": "C41-毕星团"}, {"ID": "C43", "Name": "C43-小墨西哥帽星系"}, {"ID": "C44", "Name": "C44-超人星系"}, {"ID": "C46", "Name": "C46-哈勃变光星云"}, {"ID": "C49", "Name": "C49-玫瑰星云"}, {"ID": "C50", "Name": "C50-玫瑰星云"}, {"ID": "C53", "Name": "C53-纺锤星系"}, {"ID": "C55", "Name": "C55-土星状星云"}, {"ID": "C56", "Name": "C56-头骨星云"}, {"ID": "C57", "Name": "C57-巴纳德星系"}, {"ID": "C58", "Name": "C58-卡罗琳星团"}, {"ID": "C59", "Name": "C59-木魂星云"}, {"ID": "C60", "Name": "C60-触须星系"}, {"ID": "C61", "Name": "C61-触须星系"}, {"ID": "C62", "Name": "C62-伯比奇链"}, {"ID": "C63", "Name": "C63-螺旋星云"}, {"ID": "C64", "Name": "C64-弧矢增六星团"}, {"ID": "C65", "Name": "C65-玉夫座星系"}, {"ID": "C68", "Name": "C68-南冕座R星云"}, {"ID": "C69", "Name": "C69-小虫星云"}, {"ID": "C70", "Name": "C70-南风车星系"}, {"ID": "C71", "Name": "C71-电吉他星团"}, {"ID": "C72", "Name": "C72-珍珠串星系"}, {"ID": "C74", "Name": "C74-双环星云"}, {"ID": "C76", "Name": "C76-伪彗星星云"}, {"ID": "C77", "Name": "C77-半人马座A"}, {"ID": "C78", "Name": "C78-砂锅星团"}, {"ID": "C80", "Name": "C80-半人马座奥米茄星团"}, {"ID": "C83", "Name": "C83-镊子星系"}, {"ID": "C85", "Name": "C85-船帆座ο星团"}, {"ID": "C89", "Name": "C89-矩尺座S星团"}, {"ID": "C91", "Name": "C91-许愿井星团"}, {"ID": "C92", "Name": "C92-船底座星云"}, {"ID": "C93", "Name": "C93-孔雀座球状星团"}, {"ID": "C94", "Name": "C94-宝盒星团"}, {"ID": "C96", "Name": "C96-短跑人星团"}, {"ID": "C97", "Name": "C97-珍珠星团"}, {"ID": "C98", "Name": "C98-煤袋星团"}, {"ID": "C99", "Name": "C99-煤袋星云"}, {"ID": "C100", "Name": "C100-奔鸡星云"}, {"ID": "C102", "Name": "C102-南天七姐妹星团"}, {"ID": "C103", "Name": "C103-狼蛛星云"}, {"ID": "C105", "Name": "C105-南天蝴蝶星团"}, {"ID": "C106", "Name": "C106-杜鹃座47球状星团"}, {"ID": "NGC104", "Name": "Mel1-杜鹃座47球状星团"}, {"ID": "NGC188", "Name": "Mel2-近极星团"}, {"ID": "NGC288", "Name": "Mel3"}, {"ID": "NGC362", "Name": "Mel4"}, {"ID": "NGC371", "Name": "Mel5"}, {"ID": "NGC436", "Name": "Mel6"}, {"ID": "NGC457", "Name": "Mel7-蜻蜓星团"}, {"ID": "NGC581", "Name": "Mel8-M103"}, {"ID": "NGC654", "Name": "Mel9-迷蝶星团"}, {"ID": "NGC659", "Name": "Mel10-阴阳星团"}, {"ID": "NGC663", "Name": "Mel11-割草机星团"}, {"ID": "NGC752", "Name": "Mel12"}, {"ID": "NGC869", "Name": "Mel13-双星团"}, {"ID": "NGC884", "Name": "Mel14-双星团"}, {"ID": "IC1805", "Name": "Mel15-心脏星云"}, {"ID": "NGC1027", "Name": "Mel16"}, {"ID": "NGC1039", "Name": "Mel17-M34-螺旋星团"}, {"ID": "NGC1245", "Name": "Mel18-帕特里克海星星团"}, {"ID": "NGC1261", "Name": "Mel19"}, {"ID": "NGC1342", "Name": "Mel21-小蝎星团"}, {"ID": "NGC1528", "Name": "Mel23-M&M双星团"}, {"ID": "IC361", "Name": "Mel24"}, {"ID": "NGC1647", "Name": "Mel26-海盗之月星团"}, {"ID": "NGC1664", "Name": "Mel27-4-H 星团"}, {"ID": "NGC1746", "Name": "Mel28"}, {"ID": "NGC1807", "Name": "Mel29-贫双星团"}, {"ID": "NGC1851", "Name": "Mel30"}, {"ID": "NGC1857", "Name": "Mel32"}, {"ID": "NGC1893", "Name": "Mel33-字母Y星团"}, {"ID": "NGC1904", "Name": "Mel34-M79"}, {"ID": "NGC1907", "Name": "Mel35"}, {"ID": "NGC1912", "Name": "Mel36-M38-海星星团"}, {"ID": "NGC1960", "Name": "Mel37-M36-风车星团"}, {"ID": "NGC2099", "Name": "Mel38-M37-一月椒盐星团"}, {"ID": "NGC2126", "Name": "Mel39"}, {"ID": "NGC2158", "Name": "Mel40"}, {"ID": "NGC2168", "Name": "Mel41-M35-鞋扣星团"}, {"ID": "NGC2192", "Name": "Mel42"}, {"ID": "NGC2194", "Name": "Mel43-漫游者星团"}, {"ID": "NGC2204", "Name": "Mel44"}, {"ID": "NGC2215", "Name": "Mel45"}, {"ID": "NGC2243", "Name": "Mel46"}, {"ID": "NGC2244", "Name": "Mel47-玫瑰星云"}, {"ID": "NGC2259", "Name": "Mel48"}, {"ID": "NGC2264", "Name": "Mel49-圣诞树星团"}, {"ID": "NGC2266", "Name": "Mel50"}, {"ID": "NGC2281", "Name": "Mel51-碎心星团"}, {"ID": "NGC2287", "Name": "Mel52-M41-小蜂巢星团"}, {"ID": "NGC2298", "Name": "Mel53"}, {"ID": "NGC2301", "Name": "Mel54-海格的龙星团"}, {"ID": "NGC2304", "Name": "Mel55"}, {"ID": "NGC2309", "Name": "Mel56"}, {"ID": "NGC2314", "Name": "Mel57"}, {"ID": "NGC2323", "Name": "Mel58-M50-心状星团"}, {"ID": "NGC2324", "Name": "Mel59"}, {"ID": "NGC2335", "Name": "Mel60"}, {"ID": "NGC2345", "Name": "Mel61"}, {"ID": "NGC2353", "Name": "Mel62-艾弗里岛星团"}, {"ID": "NGC2355", "Name": "Mel63"}, {"ID": "NGC2360", "Name": "Mel64-卡罗琳星团"}, {"ID": "NGC2362", "Name": "Mel65-弧矢增六星团"}, {"ID": "NGC2421", "Name": "Mel67"}, {"ID": "NGC2422", "Name": "Mel68-M47"}, {"ID": "NGC2420", "Name": "Mel69-彗闪星团"}, {"ID": "NGC2423", "Name": "Mel70"}, {"ID": "NGC2432", "Name": "Mel73"}, {"ID": "NGC2439", "Name": "Mel74-宽箭头星团"}, {"ID": "NGC2437", "Name": "Mel75-M46"}, {"ID": "NGC2447", "Name": "Mel76-M93-蝴蝶星团"}, {"ID": "NGC2455", "Name": "Mel77"}, {"ID": "NGC2477", "Name": "Mel78-电吉他星团"}, {"ID": "NGC2489", "Name": "Mel79"}, {"ID": "NGC2506", "Name": "Mel80"}, {"ID": "NGC2509", "Name": "Mel81"}, {"ID": "NGC2516", "Name": "Mel82-短跑人星团"}, {"ID": "NGC2539", "Name": "Mel83-盘状星团"}, {"ID": "NGC2547", "Name": "Mel84-金耳环星团"}, {"ID": "NGC2548", "Name": "Mel85-M48-蜂巢星团"}, {"ID": "NGC2567", "Name": "Mel86"}, {"ID": "NGC2627", "Name": "Mel87"}, {"ID": "NGC2632", "Name": "Mel88-M44-蜂巢星团"}, {"ID": "NGC2635", "Name": "Mel89"}, {"ID": "NGC2658", "Name": "Mel90"}, {"ID": "NGC2659", "Name": "Mel91"}, {"ID": "NGC2660", "Name": "Mel92"}, {"ID": "NGC2670", "Name": "Mel93"}, {"ID": "NGC2682", "Name": "Mel94-M67-金眼星团"}, {"ID": "NGC2808", "Name": "Mel95"}, {"ID": "NGC2818", "Name": "Mel96"}, {"ID": "IC2488", "Name": "Mel97-珍珠串星团"}, {"ID": "NGC3114", "Name": "Mel98-手状星团"}, {"ID": "NGC3201", "Name": "Mel99"}, {"ID": "NGC3293", "Name": "Mel100-宝石星团"}, {"ID": "IC2602", "Name": "Mel102-南天七姐妹星团"}, {"ID": "NGC3532", "Name": "Mel103-许愿井星团"}, {"ID": "IC2714", "Name": "Mel104-利普-托恩星团"}, {"ID": "NGC3680", "Name": "Mel106"}, {"ID": "NGC3766", "Name": "Mel107-珍珠星团"}, {"ID": "NGC3960", "Name": "Mel108"}, {"ID": "NGC4103", "Name": "Mel109-长尾星团"}, {"ID": "NGC4349", "Name": "Mel110"}, {"ID": "NGC4372", "Name": "Mel112"}, {"ID": "NGC4590", "Name": "Mel113-M68"}, {"ID": "NGC4755", "Name": "Mel114-宝盒星团"}, {"ID": "NGC4833", "Name": "Mel115-南天蝴蝶星团"}, {"ID": "NGC4852", "Name": "Mel116"}, {"ID": "NGC5024", "Name": "Mel117-M53"}, {"ID": "NGC5139", "Name": "Mel118-半人马座奥米茄星团"}, {"ID": "NGC5272", "Name": "Mel119-M3"}, {"ID": "NGC5281", "Name": "Mel120-小蝎星团"}, {"ID": "NGC5286", "Name": "Mel121"}, {"ID": "NGC5316", "Name": "Mel122"}, {"ID": "NGC5460", "Name": "Mel123"}, {"ID": "NGC5466", "Name": "Mel124-雪球星团"}, {"ID": "NGC5617", "Name": "Mel125-德古拉星团"}, {"ID": "NGC5634", "Name": "Mel126"}, {"ID": "NGC5662", "Name": "Mel127-舞毒蛾星团"}, {"ID": "NGC5715", "Name": "Mel128"}, {"ID": "IC4499", "Name": "Mel129"}, {"ID": "NGC5822", "Name": "Mel130"}, {"ID": "NGC5823", "Name": "Mel131"}, {"ID": "NGC5897", "Name": "Mel132-鬼魂球状星团"}, {"ID": "NGC5904", "Name": "Mel133-M5-玫瑰星团"}, {"ID": "NGC5927", "Name": "Mel134"}, {"ID": "NGC5946", "Name": "Mel135"}, {"ID": "NGC5986", "Name": "Mel136"}, {"ID": "NGC5999", "Name": "Mel137"}, {"ID": "NGC6005", "Name": "Mel138"}, {"ID": "NGC6025", "Name": "Mel139"}, {"ID": "NGC6067", "Name": "Mel140"}, {"ID": "NGC6087", "Name": "Mel141-矩尺座S星团"}, {"ID": "NGC6093", "Name": "Mel142-M80"}, {"ID": "NGC6101", "Name": "Mel143"}, {"ID": "NGC6121", "Name": "Mel144-M4-蟹状星团"}, {"ID": "NGC6124", "Name": "Mel145"}, {"ID": "NGC6134", "Name": "Mel146-小枕星团"}, {"ID": "NGC6144", "Name": "Mel147"}, {"ID": "NGC6171", "Name": "Mel148-M107-十字架星团"}, {"ID": "NGC6192", "Name": "Mel149"}, {"ID": "NGC6205", "Name": "Mel150-M13-武仙座球状星团"}, {"ID": "NGC6218", "Name": "Mel151-M12-口香糖球状星团"}, {"ID": "NGC6216", "Name": "Mel152"}, {"ID": "NGC6231", "Name": "Mel153-伪彗星星云"}, {"ID": "NGC6235", "Name": "Mel154"}, {"ID": "NGC6242", "Name": "Mel155"}, {"ID": "NGC6253", "Name": "Mel156"}, {"ID": "NGC6254", "Name": "Mel157-M10"}, {"ID": "NGC6259", "Name": "Mel158"}, {"ID": "NGC6266", "Name": "Mel159-M62-闪球星团"}, {"ID": "NGC6273", "Name": "Mel160-M19"}, {"ID": "NGC6281", "Name": "Mel161-蛾翼星团"}, {"ID": "NGC6284", "Name": "Mel162"}, {"ID": "NGC6287", "Name": "Mel163"}, {"ID": "NGC6293", "Name": "Mel164"}, {"ID": "NGC6304", "Name": "Mel165"}, {"ID": "NGC6318", "Name": "Mel166"}, {"ID": "NGC6333", "Name": "Mel167-M9"}, {"ID": "NGC6341", "Name": "Mel168-M92"}, {"ID": "IC4651", "Name": "Mel169"}, {"ID": "NGC6352", "Name": "Mel170"}, {"ID": "NGC6356", "Name": "Mel171"}, {"ID": "NGC6362", "Name": "Mel172"}, {"ID": "NGC6366", "Name": "Mel173"}, {"ID": "NGC6388", "Name": "Mel174"}, {"ID": "NGC6402", "Name": "Mel175-M14"}, {"ID": "NGC6397", "Name": "Mel176"}, {"ID": "NGC6400", "Name": "Mel177-幻影星团"}, {"ID": "NGC6405", "Name": "Mel178-M6-蝴蝶星团"}, {"ID": "IC4665", "Name": "Mel179-夏季蜂巢星团"}, {"ID": "NGC6441", "Name": "Mel180-银块星团"}, {"ID": "NGC6451", "Name": "Mel181-汤姆拇指星团"}, {"ID": "NGC6469", "Name": "Mel182"}, {"ID": "NGC6475", "Name": "Mel183-M7-托勒密星团"}, {"ID": "NGC6494", "Name": "Mel184-M23"}, {"ID": "NGC6496", "Name": "Mel185"}, {"ID": "NGC6520", "Name": "Mel187-亡灵宝藏星团"}, {"ID": "NGC6531", "Name": "Mel188-M21-韦伯的十字架"}, {"ID": "NGC6535", "Name": "Mel189"}, {"ID": "NGC6539", "Name": "Mel190"}, {"ID": "NGC6541", "Name": "Mel191-砂锅星团"}, {"ID": "NGC6544", "Name": "Mel192-海星星团"}, {"ID": "NGC6553", "Name": "Mel193"}, {"ID": "NGC6558", "Name": "Mel194"}, {"ID": "NGC6569", "Name": "Mel195"}, {"ID": "NGC6584", "Name": "Mel196"}, {"ID": "IC4715", "Name": "Mel197-M24"}, {"ID": "NGC6611", "Name": "Mel198-M16-鹰星云"}, {"ID": "NGC6624", "Name": "Mel199"}, {"ID": "NGC6626", "Name": "Mel200-M28"}, {"ID": "NGC6633", "Name": "Mel201-双胞胎星团"}, {"ID": "NGC6637", "Name": "Mel202-M69"}, {"ID": "NGC6642", "Name": "Mel203-蝌蚪星团"}, {"ID": "IC4725", "Name": "Mel204-M25"}, {"ID": "NGC6645", "Name": "Mel205"}, {"ID": "NGC6649", "Name": "Mel206"}, {"ID": "NGC6652", "Name": "Mel207"}, {"ID": "NGC6656", "Name": "Mel208-M22-人马座大星团"}, {"ID": "NGC6664", "Name": "Mel209-圣诞雪橇星团"}, {"ID": "IC4756", "Name": "Mel210-格拉夫星团"}, {"ID": "NGC6681", "Name": "Mel211-M70"}, {"ID": "NGC6694", "Name": "Mel212-M26"}, {"ID": "NGC6705", "Name": "Mel213-M11-野鸭星团"}, {"ID": "NGC6709", "Name": "Mel214-飞独角兽星团"}, {"ID": "NGC6712", "Name": "Mel215"}, {"ID": "NGC6715", "Name": "Mel216-M54"}, {"ID": "NGC6723", "Name": "Mel217-吊灯星团"}, {"ID": "NGC6752", "Name": "Mel218-孔雀座球状星团"}, {"ID": "NGC6760", "Name": "Mel219"}, {"ID": "NGC6779", "Name": "Mel220-M56"}, {"ID": "NGC6809", "Name": "Mel221-M55-幽灵星团"}, {"ID": "NGC6811", "Name": "Mel222-洞穴星团"}, {"ID": "NGC6819", "Name": "Mel223-狐头星团"}, {"ID": "NGC6830", "Name": "Mel224-贵宾犬星团"}, {"ID": "NGC6834", "Name": "Mel225"}, {"ID": "NGC6838", "Name": "Mel226-M71-神仙鱼星团"}, {"ID": "NGC6864", "Name": "Mel228-M75"}, {"ID": "NGC6866", "Name": "Mel229-风筝星团"}, {"ID": "NGC6934", "Name": "Mel230"}, {"ID": "NGC6939", "Name": "Mel231-鬼套星团"}, {"ID": "NGC6940", "Name": "Mel232-魔斯拉星团"}, {"ID": "NGC6981", "Name": "Mel233-M72"}, {"ID": "NGC7078", "Name": "Mel234-M15-飞马座星团"}, {"ID": "NGC7089", "Name": "Mel235-M2"}, {"ID": "NGC7092", "Name": "Mel236-M39"}, {"ID": "NGC7099", "Name": "Mel237-M30-海蜇星团"}, {"ID": "NGC7209", "Name": "Mel238-飞蜥星团"}, {"ID": "IC1434", "Name": "Mel239"}, {"ID": "NGC7243", "Name": "Mel240"}, {"ID": "NGC7245", "Name": "Mel241"}, {"ID": "NGC7492", "Name": "Mel242"}, {"ID": "NGC7654", "Name": "Mel243-M52-仙后座椒盐星团"}, {"ID": "NGC7762", "Name": "Mel244"}, {"ID": "NGC7789", "Name": "Mel245-卡洛琳玫瑰星团"}, {"ID": "NGC103", "Name": "Cr1"}, {"ID": "NGC129", "Name": "Cr2"}, {"ID": "NGC133", "Name": "Cr3"}, {"ID": "NGC136", "Name": "Cr4"}, {"ID": "NGC146", "Name": "Cr5"}, {"ID": "NGC188", "Name": "Cr6-近极星团"}, {"ID": "NGC225", "Name": "Cr7-帆船星团"}, {"ID": "IC1590", "Name": "Cr8"}, {"ID": "NGC366", "Name": "Cr9"}, {"ID": "NGC381", "Name": "Cr10"}, {"ID": "NGC436", "Name": "Cr11"}, {"ID": "NGC457", "Name": "Cr12-蜻蜓星团"}, {"ID": "NGC559", "Name": "Cr13"}, {"ID": "NGC581", "Name": "Cr14-M103"}, {"ID": "NGC609", "Name": "Cr16"}, {"ID": "NGC637", "Name": "Cr17"}, {"ID": "NGC654", "Name": "Cr18-迷蝶星团"}, {"ID": "NGC659", "Name": "Cr19-阴阳星团"}, {"ID": "NGC663", "Name": "Cr20-割草机星团"}, {"ID": "NGC744", "Name": "Cr22"}, {"ID": "NGC752", "Name": "Cr23"}, {"ID": "NGC869", "Name": "Cr24-双星团"}, {"ID": "NGC884", "Name": "Cr25-双星团"}, {"ID": "NGC956", "Name": "Cr27"}, {"ID": "NGC957", "Name": "Cr28"}, {"ID": "NGC1027", "Name": "Cr30"}, {"ID": "NGC1039", "Name": "Cr31-M34-螺旋星团"}, {"ID": "IC1848", "Name": "Cr32"}, {"ID": "IC1848", "Name": "Cr33"}, {"ID": "IC1848", "Name": "Cr34"}, {"ID": "NGC1193", "Name": "Cr35"}, {"ID": "NGC1220", "Name": "Cr37"}, {"ID": "NGC1245", "Name": "Cr38-帕特里克海星星团"}, {"ID": "NGC1342", "Name": "Cr40-小蝎星团"}, {"ID": "IC348", "Name": "Cr41-卷舌五星云"}, {"ID": "NGC1444", "Name": "Cr43"}, {"ID": "NGC1496", "Name": "Cr44"}, {"ID": "NGC1502", "Name": "Cr45-海盗旗星团"}, {"ID": "NGC1513", "Name": "Cr46"}, {"ID": "NGC1528", "Name": "Cr47-M&M双星团"}, {"ID": "IC361", "Name": "Cr48"}, {"ID": "NGC1545", "Name": "Cr49-M&M双星团"}, {"ID": "NGC1582", "Name": "Cr51"}, {"ID": "NGC1605", "Name": "Cr52"}, {"ID": "NGC1624", "Name": "Cr53"}, {"ID": "NGC1647", "Name": "Cr54-海盗之月星团"}, {"ID": "NGC1662", "Name": "Cr55"}, {"ID": "NGC1664", "Name": "Cr56-4-H 星团"}, {"ID": "NGC1746", "Name": "Cr57"}, {"ID": "NGC1778", "Name": "Cr58"}, {"ID": "NGC1807", "Name": "Cr59-贫双星团"}, {"ID": "NGC1817", "Name": "Cr60-贫双星团"}, {"ID": "NGC1857", "Name": "Cr61"}, {"ID": "NGC1893", "Name": "Cr63-字母Y星团"}, {"ID": "NGC1883", "Name": "Cr64"}, {"ID": "NGC1907", "Name": "Cr66"}, {"ID": "NGC1912", "Name": "Cr67-M38-海星星团"}, {"ID": "NGC1931", "Name": "Cr68-苍蝇星云"}, {"ID": "NGC1960", "Name": "Cr71-M36-风车星团"}, {"ID": "NGC1980", "Name": "Cr72-猎户座遗失宝石"}, {"ID": "NGC1981", "Name": "Cr73-煤车星团"}, {"ID": "NGC2099", "Name": "Cr75-M37-一月椒盐星团"}, {"ID": "NGC2112", "Name": "Cr76"}, {"ID": "NGC2129", "Name": "Cr77"}, {"ID": "NGC2126", "Name": "Cr78"}, {"ID": "NGC2141", "Name": "Cr79"}, {"ID": "NGC2158", "Name": "Cr81"}, {"ID": "NGC2168", "Name": "Cr82-M35-鞋扣星团"}, {"ID": "NGC2169", "Name": "Cr83-37星团"}, {"ID": "NGC2175", "Name": "Cr84"}, {"ID": "NGC2186", "Name": "Cr85"}, {"ID": "NGC2192", "Name": "Cr86"}, {"ID": "NGC2194", "Name": "Cr87-漫游者星团"}, {"ID": "NGC2204", "Name": "Cr88"}, {"ID": "NGC2215", "Name": "Cr90"}, {"ID": "NGC2232", "Name": "Cr93-双锥状星团"}, {"ID": "NGC2236", "Name": "Cr94"}, {"ID": "NGC2243", "Name": "Cr98"}, {"ID": "NGC2244", "Name": "Cr99-玫瑰星云"}, {"ID": "NGC2250", "Name": "Cr100"}, {"ID": "NGC2251", "Name": "Cr101"}, {"ID": "NGC2252", "Name": "Cr102"}, {"ID": "NGC2254", "Name": "Cr103"}, {"ID": "NGC2259", "Name": "Cr108"}, {"ID": "NGC2262", "Name": "Cr109"}, {"ID": "NGC2264", "Name": "Cr112-圣诞树星团"}, {"ID": "NGC2266", "Name": "Cr113"}, {"ID": "NGC2269", "Name": "Cr114-猎头星团"}, {"ID": "NGC2281", "Name": "Cr116-碎心星团"}, {"ID": "NGC2286", "Name": "Cr117"}, {"ID": "NGC2287", "Name": "Cr118-M41-小蜂巢星团"}, {"ID": "NGC2301", "Name": "Cr119-海格的龙星团"}, {"ID": "NGC2304", "Name": "Cr120"}, {"ID": "NGC2309", "Name": "Cr122"}, {"ID": "NGC2311", "Name": "Cr123"}, {"ID": "NGC2323", "Name": "Cr124-M50-心状星团"}, {"ID": "NGC2324", "Name": "Cr125"}, {"ID": "NGC2331", "Name": "Cr126"}, {"ID": "NGC2335", "Name": "Cr127"}, {"ID": "NGC2343", "Name": "Cr128-箭头星团"}, {"ID": "NGC2345", "Name": "Cr129"}, {"ID": "NGC2353", "Name": "Cr130-艾弗里岛星团"}, {"ID": "NGC2354", "Name": "Cr131"}, {"ID": "NGC2355", "Name": "Cr133"}, {"ID": "NGC2360", "Name": "Cr134-卡罗琳星团"}, {"ID": "NGC2362", "Name": "Cr136-弧矢增六星团"}, {"ID": "NGC2367", "Name": "Cr137-查理·布朗的圣诞树"}, {"ID": "NGC2368", "Name": "Cr138"}, {"ID": "NGC2374", "Name": "Cr139"}, {"ID": "NGC2383", "Name": "Cr141"}, {"ID": "NGC2384", "Name": "Cr142"}, {"ID": "NGC2384", "Name": "Cr143"}, {"ID": "NGC2395", "Name": "Cr144"}, {"ID": "NGC2396", "Name": "Cr148"}, {"ID": "NGC2401", "Name": "Cr149"}, {"ID": "NGC2414", "Name": "Cr150"}, {"ID": "NGC2421", "Name": "Cr151"}, {"ID": "NGC2422", "Name": "Cr152-M47"}, {"ID": "NGC2423", "Name": "Cr153"}, {"ID": "NGC2420", "Name": "Cr154-彗闪星团"}, {"ID": "NGC2432", "Name": "Cr157"}, {"ID": "NGC2439", "Name": "Cr158-宽箭头星团"}, {"ID": "NGC2437", "Name": "Cr159-M46"}, {"ID": "NGC2447", "Name": "Cr160-M93-蝴蝶星团"}, {"ID": "NGC2451", "Name": "Cr161-刺蝎星团"}, {"ID": "NGC2453", "Name": "Cr162"}, {"ID": "NGC2455", "Name": "Cr163"}, {"ID": "NGC2467", "Name": "Cr164-骷髅头星云"}, {"ID": "NGC2477", "Name": "Cr165-电吉他星团"}, {"ID": "NGC2482", "Name": "Cr166"}, {"ID": "NGC2489", "Name": "Cr169"}, {"ID": "NGC2506", "Name": "Cr170"}, {"ID": "NGC2509", "Name": "Cr171"}, {"ID": "NGC2516", "Name": "Cr172-短跑人星团"}, {"ID": "NGC2527", "Name": "Cr174"}, {"ID": "NGC2533", "Name": "Cr175"}, {"ID": "NGC2539", "Name": "Cr176-盘状星团"}, {"ID": "NGC2547", "Name": "Cr177-金耳环星团"}, {"ID": "NGC2546", "Name": "Cr178-心与匕首星团"}, {"ID": "NGC2548", "Name": "Cr179-M48-蜂巢星团"}, {"ID": "NGC2567", "Name": "Cr180"}, {"ID": "NGC2571", "Name": "Cr181"}, {"ID": "NGC2579", "Name": "Cr182"}, {"ID": "NGC2580", "Name": "Cr183"}, {"ID": "NGC2587", "Name": "Cr184"}, {"ID": "NGC2588", "Name": "Cr186"}, {"ID": "NGC2627", "Name": "Cr188"}, {"ID": "NGC2632", "Name": "Cr189-M44-蜂巢星团"}, {"ID": "NGC2635", "Name": "Cr190"}, {"ID": "IC2391", "Name": "Cr191-船帆座ο星团"}, {"ID": "IC2395", "Name": "Cr192"}, {"ID": "NGC2660", "Name": "Cr193"}, {"ID": "NGC2659", "Name": "Cr194"}, {"ID": "NGC2658", "Name": "Cr195"}, {"ID": "NGC2669", "Name": "Cr199"}, {"ID": "NGC2670", "Name": "Cr200"}, {"ID": "NGC2671", "Name": "Cr201"}, {"ID": "NGC2682", "Name": "Cr204-M67-金眼星团"}, {"ID": "NGC2818", "Name": "Cr206"}, {"ID": "NGC2849", "Name": "Cr207"}, {"ID": "IC2488", "Name": "Cr208-珍珠串星团"}, {"ID": "NGC2910", "Name": "Cr209"}, {"ID": "NGC2925", "Name": "Cr210"}, {"ID": "NGC2972", "Name": "Cr211"}, {"ID": "NGC3033", "Name": "Cr212"}, {"ID": "NGC3105", "Name": "Cr214"}, {"ID": "NGC3114", "Name": "Cr215-手状星团"}, {"ID": "NGC3228", "Name": "Cr218-女王的私藏星团"}, {"ID": "NGC3255", "Name": "Cr221"}, {"ID": "IC2581", "Name": "Cr222"}, {"ID": "NGC3293", "Name": "Cr224-宝石星团"}, {"ID": "NGC3324", "Name": "Cr225-钥匙孔星云"}, {"ID": "NGC3330", "Name": "Cr226"}, {"ID": "IC2602", "Name": "Cr229-南天七姐妹星团"}, {"ID": "NGC3496", "Name": "Cr237"}, {"ID": "NGC3532", "Name": "Cr238-许愿井星团"}, {"ID": "NGC3572", "Name": "Cr239"}, {"ID": "NGC3590", "Name": "Cr242"}, {"ID": "NGC3603", "Name": "Cr244"}, {"ID": "IC2714", "Name": "Cr245-利普-托恩星团"}, {"ID": "NGC3680", "Name": "Cr247"}, {"ID": "NGC3766", "Name": "Cr248-珍珠星团"}, {"ID": "NGC3960", "Name": "Cr250"}, {"ID": "NGC4052", "Name": "Cr251"}, {"ID": "NGC4103", "Name": "Cr252-长尾星团"}, {"ID": "NGC4230", "Name": "Cr253"}, {"ID": "NGC4337", "Name": "Cr254"}, {"ID": "NGC4349", "Name": "Cr255"}, {"ID": "NGC4439", "Name": "Cr259"}, {"ID": "NGC4463", "Name": "Cr260"}, {"ID": "NGC4609", "Name": "Cr263-煤袋星团"}, {"ID": "NGC4755", "Name": "Cr264-宝盒星团"}, {"ID": "NGC4815", "Name": "Cr265"}, {"ID": "NGC4852", "Name": "Cr266"}, {"ID": "NGC5053", "Name": "Cr267"}, {"ID": "NGC5138", "Name": "Cr270"}, {"ID": "NGC5168", "Name": "Cr273"}, {"ID": "NGC5281", "Name": "Cr276-小蝎星团"}, {"ID": "NGC5288", "Name": "Cr278"}, {"ID": "NGC5316", "Name": "Cr279"}, {"ID": "NGC5460", "Name": "Cr280"}, {"ID": "NGC5606", "Name": "Cr281"}, {"ID": "NGC5617", "Name": "Cr282-德古拉星团"}, {"ID": "NGC5662", "Name": "Cr284-舞毒蛾星团"}, {"ID": "NGC5715", "Name": "Cr286"}, {"ID": "NGC5749", "Name": "Cr287"}, {"ID": "NGC5764", "Name": "Cr288"}, {"ID": "NGC5822", "Name": "Cr289"}, {"ID": "NGC5823", "Name": "Cr290"}, {"ID": "NGC5925", "Name": "Cr291"}, {"ID": "NGC5999", "Name": "Cr293"}, {"ID": "NGC6005", "Name": "Cr294"}, {"ID": "NGC6025", "Name": "Cr296"}, {"ID": "NGC6031", "Name": "Cr297"}, {"ID": "NGC6067", "Name": "Cr298"}, {"ID": "NGC6087", "Name": "Cr300-矩尺座S星团"}, {"ID": "NGC6124", "Name": "Cr301"}, {"ID": "NGC6134", "Name": "Cr303-小枕星团"}, {"ID": "NGC6152", "Name": "Cr304"}, {"ID": "NGC6167", "Name": "Cr305"}, {"ID": "NGC6169", "Name": "Cr306-矩尺座μ星团"}, {"ID": "NGC6178", "Name": "Cr308"}, {"ID": "NGC6192", "Name": "Cr309"}, {"ID": "NGC6193", "Name": "Cr310"}, {"ID": "NGC6200", "Name": "Cr311"}, {"ID": "NGC6204", "Name": "Cr312"}, {"ID": "NGC6208", "Name": "Cr313"}, {"ID": "NGC6222", "Name": "Cr314"}, {"ID": "NGC6231", "Name": "Cr315-伪彗星星云"}, {"ID": "NGC6242", "Name": "Cr317"}, {"ID": "NGC6249", "Name": "Cr319"}, {"ID": "NGC6250", "Name": "Cr320"}, {"ID": "NGC6253", "Name": "Cr321"}, {"ID": "NGC6259", "Name": "Cr322"}, {"ID": "NGC6268", "Name": "Cr323"}, {"ID": "NGC6281", "Name": "Cr324-蛾翼星团"}, {"ID": "NGC6318", "Name": "Cr325"}, {"ID": "NGC6322", "Name": "Cr326"}, {"ID": "IC4651", "Name": "Cr327"}, {"ID": "NGC6352", "Name": "Cr328"}, {"ID": "NGC6355", "Name": "Cr330"}, {"ID": "NGC6374", "Name": "Cr334"}, {"ID": "NGC6383", "Name": "Cr335"}, {"ID": "NGC6396", "Name": "Cr339"}, {"ID": "NGC6404", "Name": "Cr340"}, {"ID": "NGC6405", "Name": "Cr341-M6-蝴蝶星团"}, {"ID": "NGC6400", "Name": "Cr342-幻影星团"}, {"ID": "NGC6416", "Name": "Cr344"}, {"ID": "NGC6426", "Name": "Cr346"}, {"ID": "NGC6425", "Name": "Cr348"}, {"ID": "IC4665", "Name": "Cr349-夏季蜂巢星团"}, {"ID": "NGC6451", "Name": "Cr352-汤姆拇指星团"}, {"ID": "NGC6469", "Name": "Cr353"}, {"ID": "NGC6475", "Name": "Cr354-M7-托勒密星团"}, {"ID": "NGC6494", "Name": "Cr356-M23"}, {"ID": "NGC6507", "Name": "Cr358"}, {"ID": "NGC6514", "Name": "Cr360-M20-三裂星云"}, {"ID": "NGC6520", "Name": "Cr361-亡灵宝藏星团"}, {"ID": "NGC6530", "Name": "Cr362-赫歇尔36"}, {"ID": "NGC6531", "Name": "Cr363-M21-韦伯的十字架"}, {"ID": "NGC6540", "Name": "Cr364"}, {"ID": "NGC6546", "Name": "Cr365"}, {"ID": "NGC6544", "Name": "Cr366-海星星团"}, {"ID": "NGC6558", "Name": "Cr368"}, {"ID": "NGC6568", "Name": "Cr369"}, {"ID": "NGC6583", "Name": "Cr370"}, {"ID": "NGC6595", "Name": "Cr371"}, {"ID": "NGC6604", "Name": "Cr373"}, {"ID": "NGC6603", "Name": "Cr374"}, {"ID": "NGC6611", "Name": "Cr375-M16-鹰星云"}, {"ID": "NGC6613", "Name": "Cr376-M18-黑天鹅星团"}, {"ID": "NGC6618", "Name": "Cr377-M17-奥米茄星云"}, {"ID": "NGC6631", "Name": "Cr379"}, {"ID": "NGC6633", "Name": "Cr380-双胞胎星团"}, {"ID": "NGC6642", "Name": "Cr381-蝌蚪星团"}, {"ID": "IC4725", "Name": "Cr382-M25"}, {"ID": "NGC6645", "Name": "Cr383"}, {"ID": "NGC6649", "Name": "Cr384"}, {"ID": "NGC6664", "Name": "Cr385-圣诞雪橇星团"}, {"ID": "IC4756", "Name": "Cr386-格拉夫星团"}, {"ID": "NGC6694", "Name": "Cr389-M26"}, {"ID": "NGC6704", "Name": "Cr390"}, {"ID": "NGC6705", "Name": "Cr391-M11-野鸭星团"}, {"ID": "NGC6709", "Name": "Cr392-飞独角兽星团"}, {"ID": "NGC6716", "Name": "Cr393"}, {"ID": "NGC6717", "Name": "Cr395"}, {"ID": "NGC6738", "Name": "Cr396"}, {"ID": "NGC6755", "Name": "Cr397-可能的双星团"}, {"ID": "NGC6756", "Name": "Cr398-可能的双星团"}, {"ID": "NGC6802", "Name": "Cr400"}, {"ID": "NGC6811", "Name": "Cr402-洞穴星团"}, {"ID": "NGC6819", "Name": "Cr403-狐头星团"}, {"ID": "NGC6820", "Name": "Cr404"}, {"ID": "NGC6823", "Name": "Cr405"}, {"ID": "NGC6830", "Name": "Cr406-贵宾犬星团"}, {"ID": "NGC6834", "Name": "Cr407"}, {"ID": "NGC6838", "Name": "Cr409-M71-神仙鱼星团"}, {"ID": "NGC6846", "Name": "Cr410"}, {"ID": "NGC6866", "Name": "Cr412-风筝星团"}, {"ID": "NGC6871", "Name": "Cr413"}, {"ID": "IC1311", "Name": "Cr414"}, {"ID": "NGC6883", "Name": "Cr415"}, {"ID": "NGC6882", "Name": "Cr416"}, {"ID": "NGC6885", "Name": "Cr417-狐狸座20星团"}, {"ID": "IC4996", "Name": "Cr418-天鹅座P星团"}, {"ID": "NGC6910", "Name": "Cr420-尺蠖星团"}, {"ID": "NGC6913", "Name": "Cr422-M29-冷却塔星团"}, {"ID": "NGC6939", "Name": "Cr423-鬼套星团"}, {"ID": "NGC6940", "Name": "Cr424-魔斯拉星团"}, {"ID": "NGC6996", "Name": "Cr425-鸟巢"}, {"ID": "NGC6994", "Name": "Cr426-M73"}, {"ID": "NGC7023", "Name": "Cr429-鸢尾花星云"}, {"ID": "NGC7031", "Name": "Cr430"}, {"ID": "NGC7039", "Name": "Cr431"}, {"ID": "IC1369", "Name": "Cr432"}, {"ID": "NGC7044", "Name": "Cr433"}, {"ID": "NGC7062", "Name": "Cr434"}, {"ID": "NGC7063", "Name": "Cr435"}, {"ID": "NGC7067", "Name": "Cr436"}, {"ID": "NGC7086", "Name": "Cr437"}, {"ID": "NGC7092", "Name": "Cr438-M39"}, {"ID": "IC1396", "Name": "Cr439-象鼻星云"}, {"ID": "NGC7128", "Name": "Cr440"}, {"ID": "NGC7129", "Name": "Cr441-小星团星云"}, {"ID": "NGC7142", "Name": "Cr442"}, {"ID": "NGC7160", "Name": "Cr443-短吻鳄星团"}, {"ID": "NGC7209", "Name": "Cr444-飞蜥星团"}, {"ID": "IC1434", "Name": "Cr445"}, {"ID": "NGC7226", "Name": "Cr446"}, {"ID": "NGC7235", "Name": "Cr447"}, {"ID": "NGC7243", "Name": "Cr448"}, {"ID": "NGC7245", "Name": "Cr449"}, {"ID": "NGC7261", "Name": "Cr450"}, {"ID": "NGC7296", "Name": "Cr451"}, {"ID": "NGC7380", "Name": "Cr452-巫师星云"}, {"ID": "NGC7419", "Name": "Cr453"}, {"ID": "NGC7510", "Name": "Cr454-睡鼠星团"}, {"ID": "NGC7654", "Name": "Cr455-M52-仙后座椒盐星团"}, {"ID": "NGC7686", "Name": "Cr456"}, {"ID": "NGC7762", "Name": "Cr457"}, {"ID": "NGC7788", "Name": "Cr459"}, {"ID": "NGC7789", "Name": "Cr460-卡洛琳玫瑰星团"}, {"ID": "NGC7790", "Name": "Cr461-寡妇的网星团"}, {"ID": "NGC189", "Name": "Cr462"}, {"ID": "IC5146", "Name": "Cr470-茧星云"}, {"ID": "NGC40", "Name": "蝴蝶结星云"}, {"ID": "NGC55", "Name": "珍珠串星系"}, {"ID": "NGC87", "Name": "罗伯特四重星系"}, {"ID": "NGC88", "Name": "罗伯特四重星系"}, {"ID": "NGC89", "Name": "罗伯特四重星系"}, {"ID": "NGC92", "Name": "罗伯特四重星系"}, {"ID": "NGC104", "Name": "杜鹃座47球状星团"}, {"ID": "NGC128", "Name": "NGC 128星系群"}, {"ID": "NGC134", "Name": "大王乌贼星系"}, {"ID": "NGC188", "Name": "近极星团"}, {"ID": "NGC206", "Name": "仙女座星系中的大恒星云"}, {"ID": "NGC224", "Name": "仙女座星系"}, {"ID": "NGC225", "Name": "帆船星团"}, {"ID": "NGC246", "Name": "头骨星云"}, {"ID": "NGC247", "Name": "伯比奇链"}, {"ID": "NGC253", "Name": "玉夫座星系"}, {"ID": "NGC281", "Name": "吃豆人星云"}, {"ID": "NGC300", "Name": "南风车星系"}, {"ID": "NGC375", "Name": "双鱼座云"}, {"ID": "NGC383", "Name": "NGC 383星系群"}, {"ID": "NGC262", "Name": "马卡良348"}, {"ID": "NGC292", "Name": "小麦哲伦云"}, {"ID": "NGC404", "Name": "奎宿九之魂"}, {"ID": "NGC507", "Name": "NGC 507星系群"}, {"ID": "NGC457", "Name": "蜻蜓星团"}, {"ID": "NGC488", "Name": "转马星系"}, {"ID": "NGC584", "Name": "小主轴星系"}, {"ID": "NGC598", "Name": "三角座星系"}, {"ID": "NGC628", "Name": "幻影星系"}, {"ID": "NGC650", "Name": "小哑铃星云"}, {"ID": "NGC651", "Name": "小哑铃星云"}, {"ID": "NGC654", "Name": "迷蝶星团"}, {"ID": "NGC659", "Name": "阴阳星团"}, {"ID": "NGC663", "Name": "割草机星团"}, {"ID": "NGC772", "Name": "蕨菜星系"}, {"ID": "NGC869", "Name": "双星团"}, {"ID": "NGC884", "Name": "双星团"}, {"ID": "NGC936", "Name": "达斯·维德的星际战舰"}, {"ID": "NGC1023", "Name": "仙人掌星系"}, {"ID": "NGC1039", "Name": "螺旋星团"}, {"ID": "NGC1049", "Name": "天炉座矮星系球状星团3"}, {"ID": "NGC1068", "Name": "鲸鱼座A"}, {"ID": "NGC1232", "Name": "上帝之眼星系"}, {"ID": "NGC1245", "Name": "帕特里克海星星团"}, {"ID": "NGC1269", "Name": "雪领星系"}, {"ID": "NGC1275", "Name": "英仙座A"}, {"ID": "NGC1316", "Name": "天炉座A"}, {"ID": "NGC1317", "Name": "天炉座B"}, {"ID": "NGC1333", "Name": "胚胎星云"}, {"ID": "NGC1342", "Name": "小蝎星团"}, {"ID": "NGC1350", "Name": "宇宙大眼睛星系"}, {"ID": "NGC1360", "Name": "知更鸟蛋星云"}, {"ID": "NGC1365", "Name": "大棒旋星系"}, {"ID": "NGC1407", "Name": "波江座A星系群"}, {"ID": "NGC1432", "Name": "昴宿四星云"}, {"ID": "NGC1435", "Name": "昴宿五星云"}, {"ID": "NGC1491", "Name": "化石足迹星云"}, {"ID": "NGC1499", "Name": "加利福尼亚星云"}, {"ID": "NGC1501", "Name": "骆驼之眼星云"}, {"ID": "NGC1502", "Name": "海盗旗星团"}, {"ID": "NGC1514", "Name": "水晶球星云"}, {"ID": "NGC1528", "Name": "M&M双星团"}, {"ID": "NGC1535", "Name": "埃及艳后之眼星云"}, {"ID": "NGC1545", "Name": "M&M双星团"}, {"ID": "NGC1554", "Name": "斯特鲁维遗失星云"}, {"ID": "NGC1555", "Name": "欣德变光星云"}, {"ID": "NGC1579", "Name": "北三裂星云"}, {"ID": "NGC1595", "Name": "雕具座星系群"}, {"ID": "NGC1598", "Name": "雕具座星系群"}, {"ID": "NGC1647", "Name": "海盗之月星团"}, {"ID": "NGC1664", "Name": "4-H 星团"}, {"ID": "NGC1788", "Name": "宇宙蝙蝠星云"}, {"ID": "NGC1807", "Name": "贫双星团"}, {"ID": "NGC1817", "Name": "贫双星团"}, {"ID": "NGC1893", "Name": "字母Y星团"}, {"ID": "NGC1910", "Name": "剑鱼座S星团"}, {"ID": "NGC1912", "Name": "海星星团"}, {"ID": "NGC1922", "Name": "海星星团"}, {"ID": "NGC1931", "Name": "苍蝇星云"}, {"ID": "NGC1952", "Name": "蟹状星云"}, {"ID": "NGC1960", "Name": "风车星团"}, {"ID": "NGC1973", "Name": "美人鱼的钱包星云"}, {"ID": "NGC1975", "Name": "跑步者星云"}, {"ID": "NGC1976", "Name": "猎户座大星云"}, {"ID": "NGC1977", "Name": "跑步者星云"}, {"ID": "NGC1980", "Name": "猎户座遗失宝石"}, {"ID": "NGC1981", "Name": "煤车星团"}, {"ID": "NGC1982", "Name": "迪马伦星云"}, {"ID": "NGC1990", "Name": "参宿二星云"}, {"ID": "NGC1999", "Name": "第13珍珠星云"}, {"ID": "NGC2022", "Name": "吻月星云"}, {"ID": "NGC2024", "Name": "火焰星云"}, {"ID": "NGC2060", "Name": "剑鱼座30 B"}, {"ID": "NGC2068", "Name": "鬼马小精灵星云 "}, {"ID": "NGC2070", "Name": "狼蛛星云"}, {"ID": "NGC2080", "Name": "鬼头星云"}, {"ID": "NGC2099", "Name": "一月椒盐星团"}, {"ID": "NGC2146", "Name": "脏手星系"}, {"ID": "NGC2168", "Name": "鞋扣星团"}, {"ID": "NGC2169", "Name": "37星团"}, {"ID": "NGC2170", "Name": "麒麟座R2 IRS3"}, {"ID": "NGC2174", "Name": "猴头星云"}, {"ID": "NGC2194", "Name": "漫游者星团"}, {"ID": "NGC2232", "Name": "双锥状星团"}, {"ID": "NGC2237", "Name": "玫瑰星云"}, {"ID": "NGC2238", "Name": "玫瑰星云"}, {"ID": "NGC2244", "Name": "玫瑰星云"}, {"ID": "NGC2246", "Name": "玫瑰星云"}, {"ID": "NGC2261", "Name": "哈勃变光星云"}, {"ID": "NGC2264", "Name": "圣诞树星团"}, {"ID": "NGC2269", "Name": "猎头星团"}, {"ID": "NGC2281", "Name": "碎心星团"}, {"ID": "NGC2287", "Name": "小蜂巢星团"}, {"ID": "NGC2301", "Name": "海格的龙星团"}, {"ID": "NGC2323", "Name": "心状星团"}, {"ID": "NGC2343", "Name": "箭头星团"}, {"ID": "NGC2346", "Name": "蝴蝶星云"}, {"ID": "NGC2353", "Name": "艾弗里岛星团"}, {"ID": "NGC2359", "Name": "雷神的头盔"}, {"ID": "NGC2360", "Name": "卡罗琳星团"}, {"ID": "NGC2362", "Name": "弧矢增六星团"}, {"ID": "NGC2367", "Name": "查理·布朗的圣诞树"}, {"ID": "NGC2371", "Name": "双子座星云"}, {"ID": "NGC2392", "Name": "爱斯基摩星云"}, {"ID": "NGC2409", "Name": "菲尔瑟213"}, {"ID": "NGC2419", "Name": "漫游者星团"}, {"ID": "NGC2420", "Name": "彗闪星团"}, {"ID": "NGC2439", "Name": "宽箭头星团"}, {"ID": "NGC2440", "Name": "白蝴蝶星云"}, {"ID": "NGC2442", "Name": "肉钩星系"}, {"ID": "NGC2447", "Name": "蝴蝶星团"}, {"ID": "NGC2451", "Name": "刺蝎星团"}, {"ID": "NGC2467", "Name": "骷髅头星云"}, {"ID": "NGC2477", "Name": "电吉他星团"}, {"ID": "NGC2516", "Name": "短跑人星团"}, {"ID": "NGC2537", "Name": "熊掌星系"}, {"ID": "NGC2539", "Name": "盘状星团"}, {"ID": "NGC2546", "Name": "心与匕首星团"}, {"ID": "NGC2547", "Name": "金耳环星团"}, {"ID": "NGC2548", "Name": "蜂巢星团"}, {"ID": "NGC2557", "Name": "马吕斯星系团"}, {"ID": "NGC2573", "Name": "南极星系"}, {"ID": "NGC2632", "Name": "蜂巢星团"}, {"ID": "NGC2682", "Name": "金眼星团"}, {"ID": "NGC2683", "Name": "UFO星系"}, {"ID": "NGC2685", "Name": "螺旋星系"}, {"ID": "NGC2686", "Name": "纺锤星系"}, {"ID": "NGC2736", "Name": "铅笔星云"}, {"ID": "NGC2769", "Name": "NGC 2769星系群"}, {"ID": "NGC2770", "Name": "超新星工厂星系"}, {"ID": "NGC2841", "Name": "虎眼星系"}, {"ID": "NGC2936", "Name": "企鹅星系"}, {"ID": "NGC2937", "Name": "蛋星系"}, {"ID": "NGC3031", "Name": "波德星系"}, {"ID": "NGC3034", "Name": "雪茄星系"}, {"ID": "NGC3077", "Name": "花环星系"}, {"ID": "NGC3079", "Name": "幻影飞碟星系"}, {"ID": "NGC3114", "Name": "手状星团"}, {"ID": "NGC3115", "Name": "纺锤星系"}, {"ID": "NGC3132", "Name": "双环星云"}, {"ID": "NGC3172", "Name": "北极星系"}, {"ID": "NGC3180", "Name": "小风车星系"}, {"ID": "NGC3185", "Name": "狮子座四重星系"}, {"ID": "NGC3187", "Name": "狮子座四重星系"}, {"ID": "NGC3189", "Name": "NGC3190星系群"}, {"ID": "NGC3193", "Name": "狮子座四重星系"}, {"ID": "NGC3228", "Name": "女王的私藏星团"}, {"ID": "NGC3242", "Name": "木魂星云"}, {"ID": "NGC3293", "Name": "宝石星团"}, {"ID": "NGC3324", "Name": "钥匙孔星云"}, {"ID": "NGC3344", "Name": "洋葱切片星系"}, {"ID": "NGC3372", "Name": "船底座星云"}, {"ID": "NGC3432", "Name": "编制针星系"}, {"ID": "NGC3532", "Name": "许愿井星团"}, {"ID": "NGC3556", "Name": "冲浪板星系"}, {"ID": "NGC3561", "Name": "安巴楚勉之结"}, {"ID": "NGC3576", "Name": "自由女神星云"}, {"ID": "NGC3587", "Name": "夜枭星云"}, {"ID": "NGC3621", "Name": "眼镜框星系"}, {"ID": "NGC3623", "Name": "狮子座三重星系"}, {"ID": "NGC3627", "Name": "狮子座三重星系"}, {"ID": "NGC3628", "Name": "汉堡星系"}, {"ID": "NGC3745", "Name": "科普兰七重星系"}, {"ID": "NGC3746", "Name": "科普兰七重星系"}, {"ID": "NGC3748", "Name": "科普兰七重星系"}, {"ID": "NGC3750", "Name": "科普兰七重星系"}, {"ID": "NGC3751", "Name": "科普兰七重星系"}, {"ID": "NGC3753", "Name": "科普兰七重星系"}, {"ID": "NGC3754", "Name": "科普兰七重星系"}, {"ID": "NGC3766", "Name": "珍珠星团"}, {"ID": "NGC3918", "Name": "蓝行星状星云"}, {"ID": "NGC3928", "Name": "微螺旋星系"}, {"ID": "NGC3992", "Name": "吸尘器星系"}, {"ID": "NGC4005", "Name": "NGC 4005星系群"}, {"ID": "NGC4038", "Name": "触须星系"}, {"ID": "NGC4039", "Name": "触须星系"}, {"ID": "NGC4103", "Name": "长尾星团"}, {"ID": "NGC4147", "Name": "踢罐星团"}, {"ID": "NGC4169", "Name": "方盒星系群"}, {"ID": "NGC4170", "Name": "方盒星系群"}, {"ID": "NGC4174", "Name": "方盒星系群"}, {"ID": "NGC4175", "Name": "方盒星系群"}, {"ID": "NGC4194", "Name": "美杜莎星系"}, {"ID": "NGC4216", "Name": "银纹星系"}, {"ID": "NGC4254", "Name": "室女座星系团风车"}, {"ID": "NGC4276", "Name": "浮士德V023"}, {"ID": "NGC4303", "Name": "胖螺旋星系"}, {"ID": "NGC4321", "Name": "吹风机星系"}, {"ID": "NGC4325", "Name": "室女座星系团"}, {"ID": "NGC4361", "Name": "洒水器星云"}, {"ID": "NGC4374", "Name": "马卡良星系链"}, {"ID": "NGC4387", "Name": "星系构成的脸"}, {"ID": "NGC4406", "Name": "浮士德V051"}, {"ID": "NGC4435", "Name": "双眼星系"}, {"ID": "NGC4438", "Name": "双眼星系"}, {"ID": "NGC4473", "Name": "马卡良星系链"}, {"ID": "NGC4477", "Name": "马卡良星系链"}, {"ID": "NGC4486", "Name": "室女座星系"}, {"ID": "NGC4490", "Name": "茧星系"}, {"ID": "NGC4507", "Name": "夏普利-艾姆斯2"}, {"ID": "NGC4526", "Name": "遗失星系"}, {"ID": "NGC4535", "Name": "科普兰遗失星系"}, {"ID": "NGC4559", "Name": "锦鲤星系"}, {"ID": "NGC4565", "Name": "针状星系"}, {"ID": "NGC4567", "Name": "双胞胎星系"}, {"ID": "NGC4568", "Name": "双胞胎星系"}, {"ID": "NGC4594", "Name": "草帽星系"}, {"ID": "NGC4605", "Name": "俄罗斯彩蛋星系"}, {"ID": "NGC4609", "Name": "煤袋星团"}, {"ID": "NGC4622", "Name": "半人马座星系链"}, {"ID": "NGC4631", "Name": "鲸鱼星系"}, {"ID": "NGC4650", "Name": "半人马座星系链"}, {"ID": "NGC4651", "Name": "伞星系"}, {"ID": "NGC4656", "Name": "撬棒星系"}, {"ID": "NGC4657", "Name": "鱼钩星系"}, {"ID": "NGC4666", "Name": "超级风星系"}, {"ID": "NGC4676", "Name": "双鼠星系"}, {"ID": "NGC4669", "Name": "黑胶唱片星系"}, {"ID": "NGC4736", "Name": "鳄鱼眼星系"}, {"ID": "NGC4753", "Name": "尘卷暴星系"}, {"ID": "NGC4755", "Name": "宝盒星团"}, {"ID": "NGC4762", "Name": "纸风筝星系"}, {"ID": "NGC4774", "Name": "腰豆星系"}, {"ID": "NGC4826", "Name": "黑眼星系"}, {"ID": "NGC4833", "Name": "南天蝴蝶星团"}, {"ID": "NGC4889", "Name": "后发座B"}, {"ID": "NGC4898", "Name": "后发座Z彗发星系"}, {"ID": "NGC4945", "Name": "镊子星系"}, {"ID": "NGC4990", "Name": "茧星系"}, {"ID": "NGC5033", "Name": "田鳖星系"}, {"ID": "NGC5044", "Name": "NGC 5044星系群"}, {"ID": "NGC5055", "Name": "向日葵星系"}, {"ID": "NGC5102", "Name": "柱十一之魂"}, {"ID": "NGC5128", "Name": "半人马座A"}, {"ID": "NGC5139", "Name": "半人马座奥米茄星团"}, {"ID": "NGC5189", "Name": "螺旋行星状星云"}, {"ID": "NGC5194", "Name": "涡状星系"}, {"ID": "NGC5195", "Name": "M51替代者"}, {"ID": "NGC5216", "Name": "基南系统"}, {"ID": "NGC5218", "Name": "基南系统"}, {"ID": "NGC5236", "Name": "南风车星系"}, {"ID": "NGC5281", "Name": "小蝎星团"}, {"ID": "NGC5291", "Name": "贝壳星系"}, {"ID": "NGC5353", "Name": "NGC 5353星系群"}, {"ID": "NGC5394", "Name": "苍鹭星系"}, {"ID": "NGC5395", "Name": "苍鹭星系"}, {"ID": "NGC5416", "Name": "NGC 5416星系群"}, {"ID": "NGC5457", "Name": "风车星系"}, {"ID": "NGC5466", "Name": "雪球星团"}, {"ID": "NGC5617", "Name": "德古拉星团"}, {"ID": "NGC5623", "Name": "龙星云"}, {"ID": "NGC5629", "Name": "NGC 5629星系群"}, {"ID": "NGC5662", "Name": "舞毒蛾星团"}, {"ID": "NGC5746", "Name": "刃珠星系"}, {"ID": "NGC5866", "Name": "纺锤星系"}, {"ID": "NGC5882", "Name": "天王星之魂星云"}, {"ID": "NGC5892", "Name": "法思703"}, {"ID": "NGC5897", "Name": "鬼魂球状星团"}, {"ID": "NGC5904", "Name": "玫瑰星团"}, {"ID": "NGC5906", "Name": "分裂星系"}, {"ID": "NGC6027", "Name": "赛弗特六重星系"}, {"ID": "NGC6087", "Name": "矩尺座S星团"}, {"ID": "NGC6121", "Name": "蟹状星团"}, {"ID": "NGC6134", "Name": "小枕星团"}, {"ID": "NGC6171", "Name": "十字架星团"}, {"ID": "NGC6188", "Name": "环星云"}, {"ID": "NGC6169", "Name": "矩尺座μ星团"}, {"ID": "NGC6205", "Name": "武仙座球状星团"}, {"ID": "NGC6210", "Name": "乌龟星云"}, {"ID": "NGC6218", "Name": "口香糖球状星团"}, {"ID": "NGC6229", "Name": "彗星奖球状星团"}, {"ID": "NGC6231", "Name": "伪彗星星云"}, {"ID": "NGC6266", "Name": "闪球星团"}, {"ID": "NGC6281", "Name": "蛾翼星团"}, {"ID": "NGC6302", "Name": "小虫星云"}, {"ID": "NGC6309", "Name": "方盒星云"}, {"ID": "NGC6334", "Name": "猫掌星云"}, {"ID": "NGC6337", "Name": "麦圈星云"}, {"ID": "NGC6357", "Name": "龙虾星云"}, {"ID": "NGC6369", "Name": "小鬼魂星云"}, {"ID": "NGC6380", "Name": "托南钦特拉1球状星团"}, {"ID": "NGC6400", "Name": "幻影星团"}, {"ID": "NGC6405", "Name": "蝴蝶星团"}, {"ID": "NGC6441", "Name": "银块星团"}, {"ID": "NGC6445", "Name": "小宝石星云"}, {"ID": "NGC6451", "Name": "汤姆拇指星团"}, {"ID": "NGC6475", "Name": "托勒密星团"}, {"ID": "NGC6503", "Name": "太空迷航星系"}, {"ID": "NGC6514", "Name": "三裂星云"}, {"ID": "NGC6520", "Name": "亡灵宝藏星团"}, {"ID": "NGC6522", "Name": "巴德窗"}, {"ID": "NGC6523", "Name": "礁湖星云"}, {"ID": "NGC6530", "Name": "赫歇尔36"}, {"ID": "NGC6531", "Name": "韦伯的十字架"}, {"ID": "NGC6537", "Name": "红蜘蛛星云"}, {"ID": "NGC6541", "Name": "砂锅星团"}, {"ID": "NGC6543", "Name": "猫眼星云"}, {"ID": "NGC6544", "Name": "海星星团"}, {"ID": "NGC6563", "Name": "南指环星云"}, {"ID": "NGC6572", "Name": "蓝壁球星云"}, {"ID": "NGC6611", "Name": "鹰星云"}, {"ID": "NGC6613", "Name": "黑天鹅星团"}, {"ID": "NGC6618", "Name": "奥米茄星云"}, {"ID": "NGC6621", "Name": "爱德华星系"}, {"ID": "NGC6622", "Name": "爱德华星系"}, {"ID": "NGC6633", "Name": "双胞胎星团"}, {"ID": "NGC6642", "Name": "蝌蚪星团"}, {"ID": "NGC6656", "Name": "人马座大星团"}, {"ID": "NGC6664", "Name": "圣诞雪橇星团"}, {"ID": "NGC6705", "Name": "野鸭星团"}, {"ID": "NGC6709", "Name": "飞独角兽星团"}, {"ID": "NGC6720", "Name": "指环星云"}, {"ID": "NGC6723", "Name": "吊灯星团"}, {"ID": "NGC6729", "Name": "南冕座R星云"}, {"ID": "NGC6741", "Name": "幻影条纹星云"}, {"ID": "NGC6745", "Name": "鸟头星系"}, {"ID": "NGC6751", "Name": "蒲公英星云"}, {"ID": "NGC6752", "Name": "孔雀座球状星团"}, {"ID": "NGC6755", "Name": "可能的双星团"}, {"ID": "NGC6756", "Name": "可能的双星团"}, {"ID": "NGC6776", "Name": "五角星系"}, {"ID": "NGC6778", "Name": "M76之子"}, {"ID": "NGC6781", "Name": "雪球星云"}, {"ID": "NGC6804", "Name": "收缩星云"}, {"ID": "NGC6809", "Name": "幽灵星团"}, {"ID": "NGC6811", "Name": "洞穴星团"}, {"ID": "NGC6818", "Name": "小宝石星云"}, {"ID": "NGC6819", "Name": "狐头星团"}, {"ID": "NGC6822", "Name": "巴纳德星系"}, {"ID": "NGC6826", "Name": "眨眼行星状星云"}, {"ID": "NGC6830", "Name": "贵宾犬星团"}, {"ID": "NGC6838", "Name": "神仙鱼星团"}, {"ID": "NGC6845", "Name": "克莱莫拉30"}, {"ID": "NGC6853", "Name": "哑铃星云"}, {"ID": "NGC6866", "Name": "风筝星团"}, {"ID": "NGC6872", "Name": "秃鹰星系"}, {"ID": "NGC6885", "Name": "狐狸座20星团"}, {"ID": "NGC6888", "Name": "眉月星云"}, {"ID": "NGC6894", "Name": "小指环星云"}, {"ID": "NGC6905", "Name": "蓝闪星云"}, {"ID": "NGC6907", "Name": "巨兽星系"}, {"ID": "NGC6910", "Name": "尺蠖星团"}, {"ID": "NGC6913", "Name": "冷却塔星团"}, {"ID": "NGC6939", "Name": "鬼套星团"}, {"ID": "NGC6940", "Name": "魔斯拉星团"}, {"ID": "NGC6946", "Name": "烟花星系"}, {"ID": "NGC6960", "Name": "纤维星云"}, {"ID": "NGC6979", "Name": "弗莱明三角星云"}, {"ID": "NGC6990", "Name": "女巫扫帚星系"}, {"ID": "NGC6992", "Name": "东面纱星云"}, {"ID": "NGC6995", "Name": "网星云"}, {"ID": "NGC6996", "Name": "鸟巢"}, {"ID": "NGC7000", "Name": "北美洲星云"}, {"ID": "NGC7008", "Name": "胎儿星云"}, {"ID": "NGC7009", "Name": "土星状星云"}, {"ID": "NGC7023", "Name": "鸢尾花星云"}, {"ID": "NGC7026", "Name": "乳酪汉堡星云"}, {"ID": "NGC7027", "Name": "粉枕星云"}, {"ID": "NGC7048", "Name": "躲猫猫星云"}, {"ID": "NGC7078", "Name": "飞马座星团"}, {"ID": "NGC7088", "Name": "Baxendell's Unphotographable Nebula"}, {"ID": "NGC7099", "Name": "海蜇星团"}, {"ID": "NGC7129", "Name": "小星团星云"}, {"ID": "NGC7160", "Name": "短吻鳄星团"}, {"ID": "NGC7209", "Name": "飞蜥星团"}, {"ID": "NGC7252", "Name": "核和平星系"}, {"ID": "NGC7293", "Name": "螺旋星云"}, {"ID": "NGC7317", "Name": "史蒂芬五重星系"}, {"ID": "NGC7318", "Name": "史蒂芬五重星系"}, {"ID": "NGC7319", "Name": "史蒂芬五重星系"}, {"ID": "NGC7320", "Name": "史蒂芬五重星系"}, {"ID": "NGC7331", "Name": "鹿舔星系群"}, {"ID": "NGC7380", "Name": "巫师星云"}, {"ID": "NGC7385", "Name": "NGC 7385 星系群"}, {"ID": "NGC7424", "Name": "大设计星系"}, {"ID": "NGC7479", "Name": "超人星系"}, {"ID": "NGC7510", "Name": "睡鼠星团"}, {"ID": "NGC7538", "Name": "北礁湖星云"}, {"ID": "NGC7552", "Name": "天鹤座四重星系"}, {"ID": "NGC7582", "Name": "天鹤座四重星系"}, {"ID": "NGC7590", "Name": "天鹤座四重星系"}, {"ID": "NGC7599", "Name": "天鹤座四重星系"}, {"ID": "NGC7635", "Name": "气泡星云"}, {"ID": "NGC7654", "Name": "仙后座椒盐星团"}, {"ID": "NGC7662", "Name": "蓝雪球星云"}, {"ID": "NGC7742", "Name": "荷包蛋星系"}, {"ID": "NGC7789", "Name": "卡洛琳玫瑰星团"}, {"ID": "NGC7790", "Name": "寡妇的网星团"}, {"ID": "NGC7793", "Name": "邦德星系"}, {"ID": "NGC7814", "Name": "小墨西哥帽星系"}, {"ID": "IC10", "Name": "星爆星系"}, {"ID": "IC59", "Name": "策星云"}, {"ID": "IC63", "Name": "策星云"}, {"ID": "IC342", "Name": "马费伊1星系群"}, {"ID": "IC348", "Name": "卷舌五星云"}, {"ID": "IC349", "Name": "巴纳德昴宿五星云"}, {"ID": "IC405", "Name": "火焰之星星云"}, {"ID": "IC410", "Name": "小蝌蚪星云"}, {"ID": "IC417", "Name": "蜘蛛星云"}, {"ID": "IC418", "Name": "万花尺星云"}, {"ID": "IC443", "Name": "水母星云"}, {"ID": "IC708", "Name": "蝴蝶犬星系"}, {"ID": "IC1318", "Name": "天津一星云"}, {"ID": "IC1365", "Name": "ZW II 108星系群"}, {"ID": "IC1396", "Name": "象鼻星云"}, {"ID": "IC1795", "Name": "鱼头星云"}, {"ID": "IC1805", "Name": "心脏星云"}, {"ID": "IC2118", "Name": "女巫头星云"}, {"ID": "IC2199", "Name": "IC 2199 星系群"}, {"ID": "IC2220", "Name": "托比壶星云"}, {"ID": "IC2391", "Name": "船帆座ο星团"}, {"ID": "IC2431", "Name": "布朗宁星系"}, {"ID": "IC2488", "Name": "珍珠串星团"}, {"ID": "IC2574", "Name": "柯丁顿星云"}, {"ID": "IC2602", "Name": "南天七姐妹星团"}, {"ID": "IC2714", "Name": "利普-托恩星团"}, {"ID": "IC2944", "Name": "奔鸡星云"}, {"ID": "IC2948", "Name": "海山五星云"}, {"ID": "IC3568", "Name": "柠檬片星云"}, {"ID": "IC4321", "Name": "贝壳星系"}, {"ID": "IC4406", "Name": "视网膜星云"}, {"ID": "IC4592", "Name": "蓝马头星云"}, {"ID": "IC4593", "Name": "白眼豌豆星云"}, {"ID": "IC4604", "Name": "心宿增四星云"}, {"ID": "IC4606", "Name": "心宿二反射星云"}, {"ID": "IC4628", "Name": "斑节虾星云"}, {"ID": "IC4665", "Name": "夏季蜂巢星团"}, {"ID": "IC4756", "Name": "格拉夫星团"}, {"ID": "IC4946", "Name": "夏普利-艾姆斯5"}, {"ID": "IC4996", "Name": "天鹅座P星团"}, {"ID": "IC5067", "Name": "鹈鹕星云"}, {"ID": "IC5070", "Name": "鹈鹕星云"}, {"ID": "IC5146", "Name": "茧星云"}, {"ID": "IC5148", "Name": "备胎星云"}, {"ID": "IC5173", "Name": "南积分号星系"}] \ No newline at end of file diff --git a/data/ngc2019.json b/data/ngc2019.json new file mode 100644 index 00000000..8f7c9e63 --- /dev/null +++ b/data/ngc2019.json @@ -0,0 +1 @@ +[{"ID":"1","标识":"NGC1","M标识":"NGC1","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h7m15.9s","赤经D(J2000)":"0.12108333333333333","赤纬(J2000)":"+27h42m32s","赤纬D(J2000)":"27.70888888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"120","详细描述":"faint, small, round, between 11th and 14th magnitude stars","简略描述":"F, S, R, bet * 11 and * 14"},{"ID":"2","标识":"NGC2","M标识":"NGC2","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h7m17.1s","赤经D(J2000)":"0.12141666666666667","赤纬(J2000)":"+27h40m43s","赤纬D(J2000)":"27.678611111111113","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.6","方位角":"112","详细描述":"very faint, small, south of GC 1","简略描述":"vF, S, s of G.C. 1"},{"ID":"3","标识":"NGC3","M标识":"NGC3","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h7m16.8s","赤经D(J2000)":"0.12133333333333333","赤纬(J2000)":"+8h18m5s","赤纬D(J2000)":"8.301388888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"111","详细描述":"faint, very small, round, almost stellar","简略描述":"F, vS, R, alm stell"},{"ID":"4","标识":"NGC4","M标识":"NGC4","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h7m24.5s","赤经D(J2000)":"0.12347222222222222","赤纬(J2000)":"+8h22m26s","赤纬D(J2000)":"8.373888888888889","可见光星等V":"15.8","摄影(蓝光)星等B":"16.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"35","详细描述":"extremely faint","简略描述":"eF"},{"ID":"5","标识":"NGC5","M标识":"NGC5","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h7m48.8s","赤经D(J2000)":"0.1302222222222222","赤纬(J2000)":"+35h21m46s","赤纬D(J2000)":"35.36277777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"115","详细描述":"faint, small, round, between 11th and 14th magnitude stars","简略描述":"vF, vS, N = * 13, 14"},{"ID":"6","标识":"NGC6","M标识":"NGC6","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h9m32.6s","赤经D(J2000)":"0.15905555555555556","赤纬(J2000)":"+33h18m32s","赤纬D(J2000)":"33.30888888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"140","详细描述":"extremely faint, very small, considerably extended","简略描述":"eF, vS, cE"},{"ID":"7","标识":"NGC7","M标识":"NGC7","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h8m20.7s","赤经D(J2000)":"0.13908333333333334","赤纬(J2000)":"-29h54m59s","赤纬D(J2000)":"-29.91638888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.2","短轴(分)":"0.5","方位角":"29","详细描述":"extremely faint, considerably large, much extended, very gradually very little brighter middle","简略描述":"eF, cL, mE, vgvlbM"},{"ID":"8","标识":"NGC8","M标识":"NGC8","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h8m45.3s","赤经D(J2000)":"0.14591666666666667","赤纬(J2000)":"+23h50m19s","赤纬D(J2000)":"23.83861111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, nucleus in north end","简略描述":"vF, N in n end"},{"ID":"9","标识":"NGC9","M标识":"NGC9","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h8m54.5s","赤经D(J2000)":"0.14847222222222223","赤纬(J2000)":"+23h49m4s","赤纬D(J2000)":"23.817777777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"155","详细描述":"faint, round, 9th or 10th magnitude star to southeast","简略描述":"F, R, * 9, 10 sf"},{"ID":"10","标识":"NGC10","M标识":"NGC10","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h8m34.3s","赤经D(J2000)":"0.1428611111111111","赤纬(J2000)":"-33h51m28s","赤纬D(J2000)":"-33.85777777777778","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.4","短轴(分)":"1.2","方位角":"26","详细描述":"faint, considerably large, very little extended, gradually a little brighter middle","简略描述":"F, cL, vlE, glbM"},{"ID":"11","标识":"NGC11","M标识":"NGC11","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h8m42.3s","赤经D(J2000)":"0.14508333333333334","赤纬(J2000)":"+37h26m53s","赤纬D(J2000)":"37.448055555555555","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.3","方位角":"111","详细描述":"very faint, very small, very little extended, 2 very faint stars involved","简略描述":"vF, vS, vlE, 2 vF st inv"},{"ID":"12","标识":"NGC12","M标识":"NGC12","拓展名":"","组件":"","Class":"III 868","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h8m44.8s","赤经D(J2000)":"0.14577777777777778","赤纬(J2000)":"+4h36m44s","赤纬D(J2000)":"4.612222222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.1","短轴(分)":"1","方位角":"125","详细描述":"extremely faint, pretty large, very gradually a little brighter middle","简略描述":"eF, pL, vglbM"},{"ID":"13","标识":"NGC13","M标识":"NGC13","拓展名":"","组件":"","Class":"III 866","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h8m47.7s","赤经D(J2000)":"0.14658333333333334","赤纬(J2000)":"+33h25m59s","赤纬D(J2000)":"33.433055555555555","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.3","短轴(分)":"0.6","方位角":"53","详细描述":"very faint, very small, small star plus nebulosity","简略描述":"vF, vS, S st + neb"},{"ID":"14","标识":"NGC14","M标识":"NGC14","拓展名":"","组件":"","Class":"II 591","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h8m46.3s","赤经D(J2000)":"0.14619444444444443","赤纬(J2000)":"+15h48m57s","赤纬D(J2000)":"15.815833333333334","可见光星等V":"12.1","摄影(蓝光)星等B":"12.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.8","短轴(分)":"2.1","方位角":"25","详细描述":"very faint, pretty small, round, gradually a little brighter middle","简略描述":"vF, pS, R, glbM"},{"ID":"15","标识":"NGC15","M标识":"NGC15","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h9m2.4s","赤经D(J2000)":"0.15066666666666667","赤纬(J2000)":"+21h37m30s","赤纬D(J2000)":"21.625","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.6","方位角":"30","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"16","标识":"NGC16","M标识":"NGC16","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h9m4.2s","赤经D(J2000)":"0.15116666666666667","赤纬(J2000)":"+27h43m48s","赤纬D(J2000)":"27.729999999999997","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.8","短轴(分)":"1","方位角":"16","详细描述":"pretty bright, small, round, brighter middle","简略描述":"pB, S, R, bM"},{"ID":"17","标识":"NGC17","M标识":"NGC17","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h11m6.6s","赤经D(J2000)":"0.18516666666666665","赤纬(J2000)":"-12h6m28s","赤纬D(J2000)":"-12.107777777777777","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"2.1","短轴(分)":"0.8","方位角":"30","详细描述":"very faint, extremely small, irregularly round, double star 2 arcmin to west","简略描述":"vF, eS, iR, D * 2' p"},{"ID":"18","标识":"NGC18","M标识":"NGC18","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h9m23s","赤经D(J2000)":"0.15638888888888888","赤纬(J2000)":"+27h43m56s","赤纬D(J2000)":"27.73222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregularly round, much brighter middle, h 4 19s to west","简略描述":"F, vS, iR, mbM, h 4 p 19s"},{"ID":"19","标识":"NGC19","M标识":"NGC19","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h10m40.8s","赤经D(J2000)":"0.178","赤纬(J2000)":"+32h58m58s","赤纬D(J2000)":"32.98277777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"42","详细描述":"most extremely faint, a little extended, 3 very faint stars around","简略描述":"eeF, lE, 3 vF st around"},{"ID":"20","标识":"NGC20","M标识":"NGC20","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h9m32.6s","赤经D(J2000)":"0.15905555555555556","赤纬(J2000)":"+33h18m32s","赤纬D(J2000)":"33.30888888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"140","详细描述":"extremely faint, very small, considerably extended","简略描述":"F, * 10 att"},{"ID":"21","标识":"NGC21","M标识":"NGC21","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h10m47s","赤经D(J2000)":"0.17972222222222223","赤纬(J2000)":"+33h21m7s","赤纬D(J2000)":"33.35194444444445","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"154","详细描述":"extremely faint, small, a little extended","简略描述":"eF, S, lE"},{"ID":"22","标识":"NGC22","M标识":"NGC22","拓展名":"","组件":"","Class":"IV 15","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h9m48.2s","赤经D(J2000)":"0.1633888888888889","赤纬(J2000)":"+27h49m58s","赤纬D(J2000)":"27.83277777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"1","方位角":"160","详细描述":"very faint, pretty small, round, a little brighter middle, mottled but not resolved","简略描述":"vF, pS, R, lbM, r"},{"ID":"23","标识":"NGC23","M标识":"NGC23","拓展名":"","组件":"","Class":"III 147","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h9m53.3s","赤经D(J2000)":"0.16480555555555554","赤纬(J2000)":"+25h55m26s","赤纬D(J2000)":"25.92388888888889","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.1","短轴(分)":"1.3","方位角":"8","详细描述":"3 small stars plus nebulosity","简略描述":"3 S st + neb"},{"ID":"24","标识":"NGC24","M标识":"NGC24","拓展名":"","组件":"","Class":"III 461","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h9m56.1s","赤经D(J2000)":"0.16558333333333333","赤纬(J2000)":"-24h57m52s","赤纬D(J2000)":"-24.964444444444442","可见光星等V":"11.6","摄影(蓝光)星等B":"12.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"5.8","短轴(分)":"1.3","方位角":"46","详细描述":"very faint, considerably large, much extended, gradually brighter middle","简略描述":"vF, cL, mE, gbM"},{"ID":"25","标识":"NGC25","M标识":"NGC25","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h9m59.3s","赤经D(J2000)":"0.16647222222222222","赤纬(J2000)":"-57h1m13s","赤纬D(J2000)":"-57.02027777777778","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"88","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"26","标识":"NGC26","M标识":"NGC26","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h10m25.9s","赤经D(J2000)":"0.1738611111111111","赤纬(J2000)":"+25h49m56s","赤纬D(J2000)":"25.83222222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.1","短轴(分)":"1.4","方位角":"100","详细描述":"very faint, pretty large, round, 2 faint stars to north","简略描述":"vF, pL, R, 2 F st n"},{"ID":"27","标识":"NGC27","M标识":"NGC27","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h10m32.7s","赤经D(J2000)":"0.17575","赤纬(J2000)":"+28h59m49s","赤纬D(J2000)":"28.996944444444445","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"117","详细描述":"extremely faint, very small, extended, bright star near","简略描述":"eF, vS, E, B * nr"},{"ID":"28","标识":"NGC28","M标识":"NGC28","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h10m25.2s","赤经D(J2000)":"0.17366666666666666","赤纬(J2000)":"-56h59m20s","赤纬D(J2000)":"-56.98888888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"119","详细描述":"extremely faint, the preceding (western) of 2","简略描述":"eF, p of 2"},{"ID":"29","标识":"NGC29","M标识":"NGC29","拓展名":"","组件":"","Class":"II 853","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h10m47s","赤经D(J2000)":"0.17972222222222223","赤纬(J2000)":"+33h21m7s","赤纬D(J2000)":"33.35194444444445","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"154","详细描述":"extremely faint, small, a little extended","简略描述":"pB, pL, E 0°"},{"ID":"30","标识":"NGC30","M标识":"NGC30","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h10m50.8s","赤经D(J2000)":"0.18077777777777776","赤纬(J2000)":"+21h58m39s","赤纬D(J2000)":"21.9775","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a 13th magnitude nebulous star","简略描述":"Neb * 13"},{"ID":"31","标识":"NGC31","M标识":"NGC31","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h10m38.5s","赤经D(J2000)":"0.1773611111111111","赤纬(J2000)":"-56h59m10s","赤纬D(J2000)":"-56.986111111111114","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"5","详细描述":"most extremely faint, small, round, following (eastern) of 2","简略描述":"eeF, S, R, f of 2"},{"ID":"32","标识":"NGC32","M标识":"NGC32","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h10m53.2s","赤经D(J2000)":"0.18144444444444444","赤纬(J2000)":"+18h47m33s","赤纬D(J2000)":"18.7925","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"faint (Auwers 1)","简略描述":"F (Auw. 1)"},{"ID":"33","标识":"NGC33","M标识":"NGC33","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h10m56.6s","赤经D(J2000)":"0.18238888888888888","赤纬(J2000)":"+3h40m35s","赤纬D(J2000)":"3.676388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, or nebulous star","简略描述":"eF, vS, or neb st"},{"ID":"34","标识":"NGC34","M标识":"NGC34","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h11m6.6s","赤经D(J2000)":"0.18516666666666665","赤纬(J2000)":"-12h6m28s","赤纬D(J2000)":"-12.107777777777777","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"2.1","短轴(分)":"0.8","方位角":"30","详细描述":"very faint, extremely small, irregularly round, double star 2 arcmin to west","简略描述":"pF, S, R, 2 st nr"},{"ID":"35","标识":"NGC35","M标识":"NGC35","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h11m10.4s","赤经D(J2000)":"0.1862222222222222","赤纬(J2000)":"-12h1m14s","赤纬D(J2000)":"-12.020555555555557","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"135","详细描述":"most extremely faint, pretty small, round","简略描述":"eeF, pS, R"},{"ID":"36","标识":"NGC36","M标识":"NGC36","拓展名":"","组件":"","Class":"III 456","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h11m22.4s","赤经D(J2000)":"0.18955555555555553","赤纬(J2000)":"+6h23m20s","赤纬D(J2000)":"6.388888888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.2","短轴(分)":"1.1","方位角":"21","详细描述":"very faint, pretty small, irregular figure","简略描述":"vF, pS, iF"},{"ID":"37","标识":"NGC37","M标识":"NGC37","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h11m23s","赤经D(J2000)":"0.1897222222222222","赤纬(J2000)":"-56h57m25s","赤纬D(J2000)":"-56.956944444444446","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"35","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"38","标识":"NGC38","M标识":"NGC38","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h11m47s","赤经D(J2000)":"0.1963888888888889","赤纬(J2000)":"-5h35m11s","赤纬D(J2000)":"-5.586388888888888","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"80","详细描述":"faint, small, round, much brighter middle","简略描述":"F, S, R, mbM"},{"ID":"39","标识":"NGC39","M标识":"NGC39","拓展名":"","组件":"","Class":"III 861","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h12m18.8s","赤经D(J2000)":"0.20522222222222222","赤纬(J2000)":"+31h3m39s","赤纬D(J2000)":"31.060833333333335","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"1","方位角":"120","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"40","标识":"NGC40","M标识":"NGC40","拓展名":"","组件":"","Class":"IV 58","业余排名":"2","中文名":"蝴蝶结星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"0h13m1s","赤经D(J2000)":"0.21694444444444444","赤纬(J2000)":"+72h31m21s","赤纬D(J2000)":"72.5225","可见光星等V":"12.3","摄影(蓝光)星等B":"10.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.23","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, very suddenly much brighter middle, 12th magnitude star to southwest","简略描述":"F, vS, R, vsmbM, * 12 sp"},{"ID":"41","标识":"NGC41","M标识":"NGC41","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h12m48s","赤经D(J2000)":"0.21333333333333335","赤纬(J2000)":"+22h1m26s","赤纬D(J2000)":"22.023888888888887","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"123","详细描述":"pretty faint, small, a little extended, gradually brighter middle","简略描述":"pF, S, lE, gbM"},{"ID":"42","标识":"NGC42","M标识":"NGC42","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h12m56.3s","赤经D(J2000)":"0.2156388888888889","赤纬(J2000)":"+22h6m3s","赤纬D(J2000)":"22.100833333333334","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"115","详细描述":"faint, very small, stellar","简略描述":"F, vS, stell"},{"ID":"43","标识":"NGC43","M标识":"NGC43","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h13m0.9s","赤经D(J2000)":"0.21691666666666667","赤纬(J2000)":"+30h54m56s","赤纬D(J2000)":"30.915555555555553","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.5","方位角":"15","详细描述":"extremely faint, 12th magnitude star 45 arcsec to northwest","简略描述":"eF, * 12 np 45\""},{"ID":"44","标识":"NGC44","M标识":"NGC44","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h13m13.4s","赤经D(J2000)":"0.22038888888888888","赤纬(J2000)":"+31h17m12s","赤纬D(J2000)":"31.28666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"45","标识":"NGC45","M标识":"NGC45","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h14m4s","赤经D(J2000)":"0.23444444444444446","赤纬(J2000)":"-23h10m53s","赤纬D(J2000)":"-23.18138888888889","可见光星等V":"10.6","摄影(蓝光)星等B":"11.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"8.5","短轴(分)":"5.9","方位角":"142","详细描述":"extremely faint, large, very gradually a very little brighter middle, large (bright) star in contact following (to the east)","简略描述":"eF, L, vgvlbM, L * cont f"},{"ID":"46","标识":"NGC46","M标识":"NGC46","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h14m10s","赤经D(J2000)":"0.2361111111111111","赤纬(J2000)":"+5h59m14s","赤纬D(J2000)":"5.987222222222222","可见光星等V":"99","摄影(蓝光)星等B":"11.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a nebula (Auwers 2)","简略描述":"Nebula (Auw. 2)"},{"ID":"47","标识":"NGC47","M标识":"NGC47","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h14m30.5s","赤经D(J2000)":"0.24180555555555555","赤纬(J2000)":"-7h10m4s","赤纬D(J2000)":"-7.167777777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"2.3","短轴(分)":"2.1","方位角":"81","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"48","标识":"NGC48","M标识":"NGC48","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h14m2.1s","赤经D(J2000)":"0.23391666666666666","赤纬(J2000)":"+48h14m6s","赤纬D(J2000)":"48.235","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1","方位角":"15","详细描述":"most extremely faint, pretty large, round, very difficult","简略描述":"eeF, pL, R, v diffic"},{"ID":"49","标识":"NGC49","M标识":"NGC49","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h14m22.4s","赤经D(J2000)":"0.23955555555555555","赤纬(J2000)":"+48h14m50s","赤纬D(J2000)":"48.24722222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"1","方位角":"165","详细描述":"most extremely faint, small, round, 2nd of 3","简略描述":"eeF, S, R, 2nd of 3"},{"ID":"50","标识":"NGC50","M标识":"NGC50","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h14m44.6s","赤经D(J2000)":"0.24572222222222223","赤纬(J2000)":"-7h20m42s","赤纬D(J2000)":"-7.345","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.4","短轴(分)":"1.8","方位角":"170","详细描述":"very faint","简略描述":"vF"},{"ID":"51","标识":"NGC51","M标识":"NGC51","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h14m34.8s","赤经D(J2000)":"0.243","赤纬(J2000)":"+48h15m22s","赤纬D(J2000)":"48.25611111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"1","方位角":"20","详细描述":"pretty faint, pretty small, round, brighter middle","简略描述":"pF, pS, R, bM"},{"ID":"52","标识":"NGC52","M标识":"NGC52","拓展名":"","组件":"","Class":"III 183","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h14m40s","赤经D(J2000)":"0.24444444444444444","赤纬(J2000)":"+18h34m54s","赤纬D(J2000)":"18.581666666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.2","短轴(分)":"0.4","方位角":"127","详细描述":"very faint, small, extended","简略描述":"vF, S, E"},{"ID":"53","标识":"NGC53","M标识":"NGC53","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h14m43s","赤经D(J2000)":"0.2452777777777778","赤纬(J2000)":"-60h19m43s","赤纬D(J2000)":"-60.328611111111115","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2","短轴(分)":"1.4","方位角":"172","详细描述":"extremely faint, small, round, brighter middle","简略描述":"eF, S, R, bM"},{"ID":"54","标识":"NGC54","M标识":"NGC54","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h15m7.6s","赤经D(J2000)":"0.2521111111111111","赤纬(J2000)":"-7h6m24s","赤纬D(J2000)":"-7.1066666666666665","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"93","详细描述":"very faint, pretty small, round, 5092 to southwest","简略描述":"vF, pS, R, 5092 sp"},{"ID":"55","标识":"NGC55","M标识":"NGC55","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"珍珠串星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h15m8s","赤经D(J2000)":"0.25222222222222224","赤纬(J2000)":"-39h13m10s","赤纬D(J2000)":"-39.21944444444445","可见光星等V":"7.9","摄影(蓝光)星等B":"8.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"31.2","短轴(分)":"5.9","方位角":"108","详细描述":"very bright, very large, very much extended, triple nucleus","简略描述":"vB, vL, vmE, triN"},{"ID":"56","标识":"NGC56","M标识":"NGC56","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h15m20.6s","赤经D(J2000)":"0.25572222222222224","赤纬(J2000)":"+12h26m40s","赤纬D(J2000)":"12.444444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely large, diffuse","简略描述":"eF, eL, diff"},{"ID":"57","标识":"NGC57","M标识":"NGC57","拓展名":"","组件":"","Class":"II 241, II 243","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h15m30.9s","赤经D(J2000)":"0.25858333333333333","赤纬(J2000)":"+17h19m45s","赤纬D(J2000)":"17.329166666666666","可见光星等V":"11.6","摄影(蓝光)星等B":"12.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.2","短轴(分)":"1.9","方位角":"40","详细描述":"faint, small, round, suddenly brighter middle","简略描述":"F, S, R, sbM"},{"ID":"58","标识":"NGC58","M标识":"NGC58","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h14m30.5s","赤经D(J2000)":"0.24180555555555555","赤纬(J2000)":"-7h10m4s","赤纬D(J2000)":"-7.167777777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"2.3","短轴(分)":"2.1","方位角":"81","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"59","标识":"NGC59","M标识":"NGC59","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h15m25.3s","赤经D(J2000)":"0.2570277777777778","赤纬(J2000)":"-21h26m41s","赤纬D(J2000)":"-21.44472222222222","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.6","短轴(分)":"1.3","方位角":"127","详细描述":"very faint, pretty small, irregularly round, gradually brighter middle","简略描述":"vF, pS, iR, gbM"},{"ID":"60","标识":"NGC60","M标识":"NGC60","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h15m58.2s","赤经D(J2000)":"0.26616666666666666","赤纬(J2000)":"-0h18m13s","赤纬D(J2000)":"-0.3036111111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"155","详细描述":"extremely faint, very small, round, a little brighter middle","简略描述":"eF, vS, R, lbM"},{"ID":"61","标识":"NGC61","M标识":"NGC61","拓展名":"A","组件":"","Class":"III 428","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h16m24s","赤经D(J2000)":"0.2733333333333333","赤纬(J2000)":"-6h19m2s","赤纬D(J2000)":"-6.317222222222222","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"24","详细描述":"very faint, small, irregularly round, pretty suddenly a very little brighter middle","简略描述":"vF, S, iR, psvlbM"},{"ID":"62","标识":"NGC62","M标识":"NGC62","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h17m5.3s","赤经D(J2000)":"0.28480555555555553","赤纬(J2000)":"-13h29m11s","赤纬D(J2000)":"-13.486388888888888","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"130","详细描述":"faint, very small, round, gradually a little brighter middle","简略描述":"F, vS, R, glbM"},{"ID":"63","标识":"NGC63","M标识":"NGC63","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h17m45.5s","赤经D(J2000)":"0.2959722222222222","赤纬(J2000)":"+11h27m0s","赤纬D(J2000)":"11.45","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"108","详细描述":"pretty faint, small, round, suddenly brighter middle","简略描述":"pF, S, R, sbM"},{"ID":"64","标识":"NGC64","M标识":"NGC64","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h17m30.3s","赤经D(J2000)":"0.29175","赤纬(J2000)":"-6h49m30s","赤纬D(J2000)":"-6.825","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"39","详细描述":"most extremely faint, very small, round, very difficult","简略描述":"eeF, vS, R, v diffic"},{"ID":"65","标识":"NGC65","M标识":"NGC65","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h18m58.7s","赤经D(J2000)":"0.31630555555555556","赤纬(J2000)":"-22h52m48s","赤纬D(J2000)":"-22.88","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.8","方位角":"5","详细描述":"extremely faint, very small, round, gradually brighter middle, western of 2","简略描述":"eF, vS, R, gbM, p of 2"},{"ID":"66","标识":"NGC66","M标识":"NGC66","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h19m4.9s","赤经D(J2000)":"0.31802777777777774","赤纬(J2000)":"-22h56m11s","赤纬D(J2000)":"-22.93638888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"32","详细描述":"extremely faint, pretty small, extended 225°, 9th magnitude star 1 arcmin to north, eastern of 2","简略描述":"eF, pS, E, 225°, * 9 n 1', f of 2"},{"ID":"67","标识":"NGC67","M标识":"NGC67","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h18m14.9s","赤经D(J2000)":"0.3041388888888889","赤纬(J2000)":"+30h3m48s","赤纬D(J2000)":"30.063333333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"51","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"68","标识":"NGC68","M标识":"NGC68","拓展名":"","组件":"","Class":"V 16","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h18m18.2s","赤经D(J2000)":"0.3050555555555555","赤纬(J2000)":"+30h4m21s","赤纬D(J2000)":"30.072499999999998","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"0","详细描述":"extremely faint, large, 3 or 4 stars plus nebulosity","简略描述":"eF, L, 3 or 4 st + neb"},{"ID":"69","标识":"NGC69","M标识":"NGC69","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h18m20.4s","赤经D(J2000)":"0.30566666666666664","赤纬(J2000)":"+30h2m26s","赤纬D(J2000)":"30.040555555555557","可见光星等V":"14.7","摄影(蓝光)星等B":"15.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"33","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"70","标识":"NGC70","M标识":"NGC70","拓展名":"","组件":"","Class":"","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h18m22.4s","赤经D(J2000)":"0.30622222222222223","赤纬(J2000)":"+30h4m44s","赤纬D(J2000)":"30.078888888888887","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"0","详细描述":"extremely faint, very small, round, between 2 faint stars","简略描述":"eF, vS, R, bet 2 F st"},{"ID":"71","标识":"NGC71","M标识":"NGC71","拓展名":"","组件":"","Class":"","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0\/P","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h18m23.5s","赤经D(J2000)":"0.3065277777777778","赤纬(J2000)":"+30h3m47s","赤纬D(J2000)":"30.063055555555557","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"129","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"72","标识":"NGC72","M标识":"NGC72","拓展名":"","组件":"","Class":"","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h18m28.4s","赤经D(J2000)":"0.3078888888888889","赤纬(J2000)":"+30h2m26s","赤纬D(J2000)":"30.040555555555557","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"15","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"73","标识":"NGC73","M标识":"NGC73","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h18m38.9s","赤经D(J2000)":"0.31080555555555556","赤纬(J2000)":"-15h19m18s","赤纬D(J2000)":"-15.321666666666667","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"145","详细描述":"very faint, small, round, extremely faint double star close to east","简略描述":"vF, S, R, eF D * close f"},{"ID":"74","标识":"NGC74","M标识":"NGC74","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h18m49.5s","赤经D(J2000)":"0.31375","赤纬(J2000)":"+30h3m41s","赤纬D(J2000)":"30.06138888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"131","详细描述":"extremely faint, small, extended, last of 6","简略描述":"eF, S, E, last of 6"},{"ID":"75","标识":"NGC75","M标识":"NGC75","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h19m26.3s","赤经D(J2000)":"0.3239722222222222","赤纬(J2000)":"+6h26m59s","赤纬D(J2000)":"6.449722222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"76","标识":"NGC76","M标识":"NGC76","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h19m37.7s","赤经D(J2000)":"0.32713888888888887","赤纬(J2000)":"+29h56m3s","赤纬D(J2000)":"29.934166666666666","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.9","方位角":"65","详细描述":"very faint, small, brighter middle","简略描述":"vF, S, bM"},{"ID":"77","标识":"NGC77","M标识":"NGC77","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h20m1.6s","赤经D(J2000)":"0.3337777777777778","赤纬(J2000)":"-22h31m56s","赤纬D(J2000)":"-22.53222222222222","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, very small, irregular figure (due to a star?), 9th magnitude star 3 arcmin to the west","简略描述":"eF, vS, iF (? *), * 9 p 3'"},{"ID":"78","标识":"NGC78","M标识":"NGC78","拓展名":"A","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h20m25.8s","赤经D(J2000)":"0.34049999999999997","赤纬(J2000)":"+0h49m35s","赤纬D(J2000)":"0.8263888888888888","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"80","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"79","标识":"NGC79","M标识":"NGC79","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h21m2.8s","赤经D(J2000)":"0.35077777777777774","赤纬(J2000)":"+22h34m2s","赤纬D(J2000)":"22.56722222222222","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, small, a very little brighter middle","简略描述":"vF, S, vlbM"},{"ID":"80","标识":"NGC80","M标识":"NGC80","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h21m10.9s","赤经D(J2000)":"0.3530277777777778","赤纬(J2000)":"+22h21m28s","赤纬D(J2000)":"22.35777777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.6","方位角":"","详细描述":"faint, small, round, pretty suddenly brighter middle","简略描述":"F, S, R, psbM"},{"ID":"81","标识":"NGC81","M标识":"NGC81","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h21m13.2s","赤经D(J2000)":"0.35366666666666663","赤纬(J2000)":"+22h23m0s","赤纬D(J2000)":"22.383333333333333","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"84","详细描述":"most extremely faint, southwest of h 17","简略描述":"eeF, sp h 17"},{"ID":"82","标识":"NGC82","M标识":"NGC82","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h21m17.6s","赤经D(J2000)":"0.35488888888888886","赤纬(J2000)":"+22h27m40s","赤纬D(J2000)":"22.461111111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, stellar","简略描述":"eF, stellar"},{"ID":"83","标识":"NGC83","M标识":"NGC83","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h21m22.6s","赤经D(J2000)":"0.35627777777777775","赤纬(J2000)":"+22h26m3s","赤纬D(J2000)":"22.434166666666666","可见光星等V":"12.5","摄影(蓝光)星等B":"13.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"extended, binuclear, 3 bright stars near","简略描述":"E, biN, 3 B st nr"},{"ID":"84","标识":"NGC84","M标识":"NGC84","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h21m21.2s","赤经D(J2000)":"0.35588888888888887","赤纬(J2000)":"+22h37m9s","赤纬D(J2000)":"22.61916666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, star and nebulosity","简略描述":"eF, st & neb"},{"ID":"85","标识":"NGC85","M标识":"NGC85","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h21m25.5s","赤经D(J2000)":"0.3570833333333333","赤纬(J2000)":"+22h30m44s","赤纬D(J2000)":"22.51222222222222","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"146","详细描述":"most extremely faint, considerably large, round","简略描述":"eeF, cL, R"},{"ID":"86","标识":"NGC86","M标识":"NGC86","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h21m28.6s","赤经D(J2000)":"0.3579444444444444","赤纬(J2000)":"+22h33m23s","赤纬D(J2000)":"22.55638888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"9","详细描述":"extremely faint, very small, a little brighter middle","简略描述":"eF, vS, lbM"},{"ID":"87","标识":"NGC87","M标识":"NGC87","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"罗伯特四重星系","类型":"Gxy","含重复类型":"Gxy","形态":"IBm\/P","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h21m14.2s","赤经D(J2000)":"0.3539444444444444","赤纬(J2000)":"-48h37m44s","赤纬D(J2000)":"-48.62888888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"14.7","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"171","详细描述":"extremely faint, small, round, gradually brighter middle, 1st of 4","简略描述":"eF, S, R, gbM, 1st of 4"},{"ID":"88","标识":"NGC88","M标识":"NGC88","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"罗伯特四重星系","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h21m22s","赤经D(J2000)":"0.3561111111111111","赤纬(J2000)":"-48h38m23s","赤纬D(J2000)":"-48.63972222222222","可见光星等V":"14.4","摄影(蓝光)星等B":"15","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"145","详细描述":"extremely faint, very small, round, 2nd of 4","简略描述":"eF, vS, R, 2nd of 4"},{"ID":"89","标识":"NGC89","M标识":"NGC89","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"罗伯特四重星系","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h21m24.3s","赤经D(J2000)":"0.35674999999999996","赤纬(J2000)":"-48h39m55s","赤纬D(J2000)":"-48.665277777777774","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"148","详细描述":"very faint, small, round, gradually brighter middle, 3rd of 4","简略描述":"vF, S, R, gbM, 3rd of 4"},{"ID":"90","标识":"NGC90","M标识":"NGC90","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h21m51.6s","赤经D(J2000)":"0.3643333333333333","赤纬(J2000)":"+22h24m2s","赤纬D(J2000)":"22.400555555555552","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.9","短轴(分)":"0.8","方位角":"132","详细描述":"very faint, a little extended.","简略描述":"vF, lE"},{"ID":"91","标识":"NGC91","M标识":"NGC91","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h21m51.7s","赤经D(J2000)":"0.3643611111111111","赤纬(J2000)":"+22h22m8s","赤纬D(J2000)":"22.36888888888889","可见光星等V":"99","摄影(蓝光)星等B":"15.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, 13th magnitude star to southwest.","简略描述":"vF, vS, * 13 sp"},{"ID":"92","标识":"NGC92","M标识":"NGC92","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"罗伯特四重星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h21m31.4s","赤经D(J2000)":"0.3587222222222222","赤纬(J2000)":"-48h37m29s","赤纬D(J2000)":"-48.624722222222225","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"148","详细描述":"faint, small, round, gradually brighter middle, 4th of 4","简略描述":"F, S, R, gbM, 4th of 4"},{"ID":"93","标识":"NGC93","M标识":"NGC93","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h22m3.4s","赤经D(J2000)":"0.3676111111111111","赤纬(J2000)":"+22h24m32s","赤纬D(J2000)":"22.40888888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"48","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"94","标识":"NGC94","M标识":"NGC94","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h22m13.6s","赤经D(J2000)":"0.3704444444444444","赤纬(J2000)":"+22h29m0s","赤纬D(J2000)":"22.483333333333334","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"30","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"95","标识":"NGC95","M标识":"NGC95","拓展名":"","组件":"","Class":"II 257","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h22m13.6s","赤经D(J2000)":"0.3704444444444444","赤纬(J2000)":"+10h29m31s","赤纬D(J2000)":"10.491944444444444","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"90","详细描述":"faint, pretty large, round, gradually brighter middle","简略描述":"F, pL, R, gbM"},{"ID":"96","标识":"NGC96","M标识":"NGC96","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h22m17.8s","赤经D(J2000)":"0.37161111111111106","赤纬(J2000)":"+22h32m48s","赤纬D(J2000)":"22.546666666666667","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, small, a very little brighter middle","简略描述":"vF, S, vlbM"},{"ID":"97","标识":"NGC97","M标识":"NGC97","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h22m30s","赤经D(J2000)":"0.375","赤纬(J2000)":"+29h44m44s","赤纬D(J2000)":"29.745555555555555","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"faint, very small, round, gradually brighter middle","简略描述":"F, vS, R, gbM"},{"ID":"98","标识":"NGC98","M标识":"NGC98","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h22m49.3s","赤经D(J2000)":"0.3803611111111111","赤纬(J2000)":"-45h16m6s","赤纬D(J2000)":"-45.26833333333333","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"0","详细描述":"very faint, pretty small, round, brighter middle, mottled but not resolved","简略描述":"vF, pS, R, bM, r"},{"ID":"99","标识":"NGC99","M标识":"NGC99","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc\/P","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h23m59.6s","赤经D(J2000)":"0.3998888888888889","赤纬(J2000)":"+15h46m12s","赤纬D(J2000)":"15.770000000000001","可见光星等V":"13.7","摄影(蓝光)星等B":"14","B-V":"0.3","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1","短轴(分)":"0.9","方位角":"42","详细描述":"very faint, pretty large, round, gradually brighter middle","简略描述":"vF, pL, R, gbM"},{"ID":"100","标识":"NGC100","M标识":"NGC100","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h24m2.6s","赤经D(J2000)":"0.40072222222222226","赤纬(J2000)":"+16h29m11s","赤纬D(J2000)":"16.48638888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"4.2","短轴(分)":"0.5","方位角":"56","详细描述":"very faint, pretty small, much extended","简略描述":"vF, pS, mE"},{"ID":"101","标识":"NGC101","M标识":"NGC101","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h23m54.5s","赤经D(J2000)":"0.3984722222222222","赤纬(J2000)":"-32h32m11s","赤纬D(J2000)":"-32.53638888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2.1","短轴(分)":"2","方位角":"89","详细描述":"pretty bright, pretty large, a little extended, 14th magnitude star to east","简略描述":"pB, pL, lE, * 14 f"},{"ID":"102","标识":"NGC102","M标识":"NGC102","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h24m36.5s","赤经D(J2000)":"0.4101388888888889","赤纬(J2000)":"-13h57m22s","赤纬D(J2000)":"-13.95611111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.7","方位角":"140","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"103","标识":"NGC103","M标识":"NGC103","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h25m17.3s","赤经D(J2000)":"0.42147222222222225","赤纬(J2000)":"+61h19m19s","赤纬D(J2000)":"61.32194444444445","可见光星等V":"9.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty small, pretty compressed, stars from 11th to 18th magnitude","简略描述":"Cl, pS, pC, st 11…18"},{"ID":"104","标识":"NGC104","M标识":"NGC104","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"杜鹃座47球状星团","类型":"GCL","含重复类型":"GCL","形态":"III","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h24m5.2s","赤经D(J2000)":"0.4014444444444445","赤纬(J2000)":"-72h4m49s","赤纬D(J2000)":"-72.08027777777778","可见光星等V":"4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"50","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very remarkable, very bright, very large, very much compressed middle","简略描述":"globular!! vB, vL, vmCM"},{"ID":"105","标识":"NGC105","M标识":"NGC105","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h25m16.9s","赤经D(J2000)":"0.42136111111111113","赤纬(J2000)":"+12h53m1s","赤纬D(J2000)":"12.88361111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"167","详细描述":"very faint, small, round, a very little brighter middle","简略描述":"vF, S, R, vlbM"},{"ID":"106","标识":"NGC106","M标识":"NGC106","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h24m43.7s","赤经D(J2000)":"0.4121388888888889","赤纬(J2000)":"-5h8m56s","赤纬D(J2000)":"-5.148888888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"100","详细描述":"pretty faint, very small, round, a little brighter middle","简略描述":"pF, vS, R, lbM"},{"ID":"107","标识":"NGC107","M标识":"NGC107","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h25m42.1s","赤经D(J2000)":"0.42836111111111114","赤纬(J2000)":"-8h17m0s","赤纬D(J2000)":"-8.283333333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"142","详细描述":"faint, pretty large, 7th magnitude star 5 arcmin to southeast","简略描述":"F, pL, * 7 sf 5'"},{"ID":"108","标识":"NGC108","M标识":"NGC108","拓展名":"","组件":"","Class":"III 148","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h25m59.7s","赤经D(J2000)":"0.43325","赤纬(J2000)":"+29h12m43s","赤纬D(J2000)":"29.211944444444445","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.3","短轴(分)":"1.8","方位角":"153","详细描述":"pretty faint, pretty large, round, pretty suddenly a little brighter middle","简略描述":"pF, pL, R, pslbM"},{"ID":"109","标识":"NGC109","M标识":"NGC109","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h26m14.6s","赤经D(J2000)":"0.4373888888888889","赤纬(J2000)":"+21h48m28s","赤纬D(J2000)":"21.80777777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.1","短轴(分)":"1","方位角":"77","详细描述":"very faint, small, 3 stars near","简略描述":"vF, S, 3 st nr"},{"ID":"110","标识":"NGC110","M标识":"NGC110","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV1p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h27m25.4s","赤经D(J2000)":"0.45705555555555555","赤纬(J2000)":"+71h23m26s","赤纬D(J2000)":"71.39055555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"19","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty round, a little compressed, stars from 9th to 12th magnitude","简略描述":"Cl, pR, lC, st 9…12"},{"ID":"111","标识":"NGC111","M标识":"NGC111","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h55m42.1s","赤经D(J2000)":"1.928361111111111","赤纬(J2000)":"-3h3m58s","赤纬D(J2000)":"-3.066111111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"85","详细描述":"very faint, small, round, a little brighter middle, 8.5 magnitude star 36 seconds of time to west and 2 arcmin to north (? = 5100)","简略描述":"vF, S, R, lbM, * 8.5 p 36s, n 2' (?=5100)"},{"ID":"112","标识":"NGC112","M标识":"NGC112","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h26m48.8s","赤经D(J2000)":"0.4468888888888889","赤纬(J2000)":"+31h42m10s","赤纬D(J2000)":"31.702777777777776","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.5","方位角":"108","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"113","标识":"NGC113","M标识":"NGC113","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h26m54.7s","赤经D(J2000)":"0.4485277777777778","赤纬(J2000)":"-2h30m2s","赤纬D(J2000)":"-2.5005555555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"1","方位角":"135","详细描述":"very faint, small, suddenly brighter middle","简略描述":"vF, S, sbM"},{"ID":"114","标识":"NGC114","M标识":"NGC114","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h26m58.2s","赤经D(J2000)":"0.4495","赤纬(J2000)":"-1h47m9s","赤纬D(J2000)":"-1.7858333333333332","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"165","详细描述":"very faint, small star in center, western of 2","简略描述":"vF, S * in centre, p of 2"},{"ID":"115","标识":"NGC115","M标识":"NGC115","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h26m46s","赤经D(J2000)":"0.4461111111111111","赤纬(J2000)":"-33h40m34s","赤纬D(J2000)":"-33.67611111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"127","详细描述":"very faint, pretty large, a little extended, double star 2 arcmin to northwest","简略描述":"vF, pL, lE, D * 2' np"},{"ID":"116","标识":"NGC116","M标识":"NGC116","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h27m9s","赤经D(J2000)":"0.4525","赤纬(J2000)":"-7h56m18s","赤纬D(J2000)":"-7.9383333333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"117","标识":"NGC117","M标识":"NGC117","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h27m10.9s","赤经D(J2000)":"0.4530277777777778","赤纬(J2000)":"+1h20m3s","赤纬D(J2000)":"1.3341666666666665","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"100","详细描述":"faint, very small","简略描述":"F, vS"},{"ID":"118","标识":"NGC118","M标识":"NGC118","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h27m16.1s","赤经D(J2000)":"0.4544722222222222","赤纬(J2000)":"-1h46m47s","赤纬D(J2000)":"-1.7797222222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"40","详细描述":"very faint, small star in centre, eastern of 2","简略描述":"vF, S * in centre, f of 2"},{"ID":"119","标识":"NGC119","M标识":"NGC119","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h26m57.6s","赤经D(J2000)":"0.44933333333333336","赤纬(J2000)":"-56h58m40s","赤纬D(J2000)":"-56.97777777777778","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"pretty bright, small, round, much brighter middle","简略描述":"pB, S, R, mbM"},{"ID":"120","标识":"NGC120","M标识":"NGC120","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h27m30.1s","赤经D(J2000)":"0.4583611111111111","赤纬(J2000)":"-1h30m49s","赤纬D(J2000)":"-1.513611111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"73","详细描述":"a nebulous star","简略描述":"Nebulous *"},{"ID":"121","标识":"NGC121","M标识":"NGC121","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h26m47.1s","赤经D(J2000)":"0.4464166666666667","赤纬(J2000)":"-71h32m12s","赤纬D(J2000)":"-71.53666666666666","可见光星等V":"11.2","摄影(蓝光)星等B":"11.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.5","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty small, a little extended, very gradually brighter middle","简略描述":"pB, pS, lE, vgbM"},{"ID":"122","标识":"NGC122","M标识":"NGC122","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h27m38.3s","赤经D(J2000)":"0.4606388888888889","赤纬(J2000)":"-1h38m24s","赤纬D(J2000)":"-1.64","可见光星等V":"99","摄影(蓝光)星等B":"15.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"2 very faint nebulae 4 to 5 arcmin northwest of 8.5 magnitude star","简略描述":"2vF neb 4'-5' np of * 8.5m"},{"ID":"123","标识":"NGC123","M标识":"NGC123","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h27m36.2s","赤经D(J2000)":"0.46005555555555555","赤纬(J2000)":"-1h35m58s","赤纬D(J2000)":"-1.5994444444444447","可见光星等V":"99","摄影(蓝光)星等B":"14.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"2 very faint nebulae 4 to 5 arcmin northwest of 8.5 magnitude star","简略描述":"2vF neb 4'-5' np of * 8.5m"},{"ID":"124","标识":"NGC124","M标识":"NGC124","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h27m52.3s","赤经D(J2000)":"0.46452777777777776","赤纬(J2000)":"-1h48m37s","赤纬D(J2000)":"-1.8102777777777779","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"168","详细描述":"very faint, large, diffuse, 2 faint stars to northwest","简略描述":"vF, L, dif, 2 F st np"},{"ID":"125","标识":"NGC125","M标识":"NGC125","拓展名":"","组件":"","Class":"III 869","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h28m50.3s","赤经D(J2000)":"0.4806388888888889","赤纬(J2000)":"+2h50m19s","赤纬D(J2000)":"2.838611111111111","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"85","详细描述":"very faint, small, brighter middle, double star to southwest","简略描述":"vF, S, bM, D * sp"},{"ID":"126","标识":"NGC126","M标识":"NGC126","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h29m8.1s","赤经D(J2000)":"0.4855833333333333","赤纬(J2000)":"+2h48m40s","赤纬D(J2000)":"2.811111111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"110","详细描述":"very faint, small, a little extended","简略描述":"vF, S, lE"},{"ID":"127","标识":"NGC127","M标识":"NGC127","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h29m12.3s","赤经D(J2000)":"0.48675","赤纬(J2000)":"+2h52m24s","赤纬D(J2000)":"2.8733333333333335","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"70","详细描述":"very faint, very small, round, west of h 25","简略描述":"vF, vS, R, p h 25"},{"ID":"128","标识":"NGC128","M标识":"NGC128","拓展名":"","组件":"","Class":"II 854","业余排名":"7","中文名":"NGC 128星系群","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h29m14.9s","赤经D(J2000)":"0.48747222222222225","赤纬(J2000)":"+2h51m54s","赤纬D(J2000)":"2.865","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.5","短轴(分)":"0.7","方位角":"1","详细描述":"pretty bright, pretty small, a little extended 2°, brighter middle","简略描述":"pB, pS, lE 2°, bM"},{"ID":"129","标识":"NGC129","M标识":"NGC129","拓展名":"","组件":"","Class":"VIII 79","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV2p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h29m58s","赤经D(J2000)":"0.49944444444444447","赤纬(J2000)":"+60h12m42s","赤纬D(J2000)":"60.211666666666666","可见光星等V":"6.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, pretty round, a little compressed, stars from 9th to 13th magnitude","简略描述":"Cl, vL, pR, lC, st 9…13"},{"ID":"130","标识":"NGC130","M标识":"NGC130","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h29m18.6s","赤经D(J2000)":"0.4885","赤纬(J2000)":"+2h52m16s","赤纬D(J2000)":"2.871111111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"52","详细描述":"very faint, very small, round, east of h 25","简略描述":"vF, vS, R, f h 25"},{"ID":"131","标识":"NGC131","M标识":"NGC131","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h29m38.1s","赤经D(J2000)":"0.49391666666666667","赤纬(J2000)":"-33h15m37s","赤纬D(J2000)":"-33.26027777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"13.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"63","详细描述":"faint, pretty large, pretty much extended, very gradually brighter middle, western of 2","简略描述":"F, pL, pmE, vgbM, p of 2"},{"ID":"132","标识":"NGC132","M标识":"NGC132","拓展名":"","组件":"","Class":"II 855","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h30m10.6s","赤经D(J2000)":"0.5029444444444444","赤纬(J2000)":"+2h5m35s","赤纬D(J2000)":"2.093055555555556","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"49","详细描述":"pretty faint, considerably large, round, very gradually a little brighter middle, mottled but not resolved","简略描述":"pF, cL, R, vglbM, r"},{"ID":"133","标识":"NGC133","M标识":"NGC133","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV1p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h31m18s","赤经D(J2000)":"0.5216666666666667","赤纬(J2000)":"+63h21m6s","赤纬D(J2000)":"63.35166666666667","可见光星等V":"9.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, stars from 10th magnitude, double star involved","简略描述":"Cl, pL, st 10…, D * inv"},{"ID":"134","标识":"NGC134","M标识":"NGC134","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"大王乌贼星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h30m21.8s","赤经D(J2000)":"0.5060555555555556","赤纬(J2000)":"-33h14m42s","赤纬D(J2000)":"-33.245","可见光星等V":"10.4","摄影(蓝光)星等B":"11.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"8.4","短轴(分)":"1.8","方位角":"50","详细描述":"very bright, large, very much extended 47°, pretty suddenly brighter middle, eastern of 2, 10th magnitude star 45 arcsec to northwest","简略描述":"vB, L, vmE 47°, psbM, f of 2, * 10 np 45\""},{"ID":"135","标识":"NGC135","M标识":"NGC135","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h31m45.9s","赤经D(J2000)":"0.5294166666666668","赤纬(J2000)":"-13h20m16s","赤纬D(J2000)":"-13.337777777777779","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"136","标识":"NGC136","M标识":"NGC136","拓展名":"","组件":"","Class":"VI 35","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h31m30.7s","赤经D(J2000)":"0.5251944444444445","赤纬(J2000)":"+61h30m33s","赤纬D(J2000)":"61.509166666666665","可见光星等V":"99","摄影(蓝光)星等B":"11.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.5","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very faint, small, extremely compressed","简略描述":"globular, vF, S, eC"},{"ID":"137","标识":"NGC137","M标识":"NGC137","拓展名":"","组件":"","Class":"II 471","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h30m58.1s","赤经D(J2000)":"0.5161388888888889","赤纬(J2000)":"+10h12m31s","赤纬D(J2000)":"10.20861111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"faint, irregular figure, a little brighter middle","简略描述":"F, iF, lbM"},{"ID":"138","标识":"NGC138","M标识":"NGC138","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h30m59.2s","赤经D(J2000)":"0.5164444444444445","赤纬(J2000)":"+5h9m35s","赤纬D(J2000)":"5.159722222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"175","详细描述":"faint, extremely small, suddenly brighter middle","简略描述":"F, eS, sbM"},{"ID":"139","标识":"NGC139","M标识":"NGC139","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h31m6.5s","赤经D(J2000)":"0.5184722222222222","赤纬(J2000)":"+5h4m42s","赤纬D(J2000)":"5.078333333333333","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"171","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"140","标识":"NGC140","M标识":"NGC140","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h31m20.4s","赤经D(J2000)":"0.5223333333333334","赤纬(J2000)":"+30h47m31s","赤纬D(J2000)":"30.791944444444447","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"54","详细描述":"very faint, small, round, gradually brighter middle","简略描述":"vF, S, R, gbM"},{"ID":"141","标识":"NGC141","M标识":"NGC141","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h31m17.6s","赤经D(J2000)":"0.5215555555555557","赤纬(J2000)":"+5h10m46s","赤纬D(J2000)":"5.179444444444445","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"90","详细描述":"very faint, very small, irregularly round","简略描述":"vF, vS, iR"},{"ID":"142","标识":"NGC142","M标识":"NGC142","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h31m7.9s","赤经D(J2000)":"0.5188611111111112","赤纬(J2000)":"-22h37m10s","赤纬D(J2000)":"-22.619444444444444","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"101","详细描述":"extremely faint, small, a little extended, 1st of 3","简略描述":"eF, S, lE, 1st of 3"},{"ID":"143","标识":"NGC143","M标识":"NGC143","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h31m15.5s","赤经D(J2000)":"0.5209722222222223","赤纬(J2000)":"-22h33m36s","赤纬D(J2000)":"-22.560000000000002","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.2","方位角":"20","详细描述":"extremely faint, small, much extended, 2nd of 3","简略描述":"eF, S, mE, 2nd of 3"},{"ID":"144","标识":"NGC144","M标识":"NGC144","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h31m20.7s","赤经D(J2000)":"0.5224166666666668","赤纬(J2000)":"-22h38m46s","赤纬D(J2000)":"-22.64611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, very small, round, 3rd of 3","简略描述":"eF, vS, R, 3rd of 3"},{"ID":"145","标识":"NGC145","M标识":"NGC145","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h31m45.6s","赤经D(J2000)":"0.5293333333333334","赤纬(J2000)":"-5h9m14s","赤纬D(J2000)":"-5.153888888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"57","详细描述":"faint, pretty large, very little extended, very gradually brighter middle, 8th or 9th magnitude star 5 arcmin to east","简略描述":"F, pL, vlE, vgbM, * 8·9 f 5'"},{"ID":"146","标识":"NGC146","M标识":"NGC146","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV3p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h33m3s","赤经D(J2000)":"0.5508333333333334","赤纬(J2000)":"+63h18m6s","赤纬D(J2000)":"63.30166666666666","可见光星等V":"9.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, a little compressed, stars from 11th to 12th magnitude, double star","简略描述":"Cl, pL, lC, st 11-12, D *"},{"ID":"147","标识":"NGC147","M标识":"NGC147","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5\/P","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h33m11.7s","赤经D(J2000)":"0.55325","赤纬(J2000)":"+48h30m26s","赤纬D(J2000)":"48.507222222222225","可见光星等V":"9.5","摄影(蓝光)星等B":"10.5","B-V":"1","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"13.2","短轴(分)":"7.8","方位角":"25","详细描述":"very faint, very large, irregularly round, gradually then suddenly much brighter middle equal to 11th magnitude star","简略描述":"vF, vL, iR, gsmbM * 11"},{"ID":"148","标识":"NGC148","M标识":"NGC148","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h34m15.4s","赤经D(J2000)":"0.5709444444444445","赤纬(J2000)":"-31h47m10s","赤纬D(J2000)":"-31.78611111111111","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2","短轴(分)":"0.8","方位角":"90","详细描述":"very bright, small, a little extended 90°, suddenly much brighter middle equal to 11th magnitude star","简略描述":"vB, S, lE 90°, smbM * 11"},{"ID":"149","标识":"NGC149","M标识":"NGC149","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h33m50.2s","赤经D(J2000)":"0.5639444444444445","赤纬(J2000)":"+30h43m25s","赤纬D(J2000)":"30.723611111111108","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"155","详细描述":"very faint, very small, round, gradually brighter middle equal to 14th magnitude star, 12th magnitude star to southwest","简略描述":"vF, vS, R, gbM * 14, * 12 sp"},{"ID":"150","标识":"NGC150","M标识":"NGC150","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h34m15.7s","赤经D(J2000)":"0.5710277777777778","赤纬(J2000)":"-27h48m18s","赤纬D(J2000)":"-27.805","可见光星等V":"11.4","摄影(蓝光)星等B":"12","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.9","短轴(分)":"1.9","方位角":"118","详细描述":"pretty faint, pretty small, round","简略描述":"pF, pS, R"},{"ID":"151","标识":"NGC151","M标识":"NGC151","拓展名":"","组件":"","Class":"II 478","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h34m2.8s","赤经D(J2000)":"0.5674444444444444","赤纬(J2000)":"-9h42m18s","赤纬D(J2000)":"-9.705","可见光星等V":"11.6","摄影(蓝光)星等B":"12.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.8","短轴(分)":"1.6","方位角":"75","详细描述":"pretty faint, pretty large, a little extended 90°, very gradually a little brighter middle","简略描述":"pF, pL, lE 90°, vglbM"},{"ID":"152","标识":"NGC152","M标识":"NGC152","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h32m56.9s","赤经D(J2000)":"0.5491388888888888","赤纬(J2000)":"-73h6m58s","赤纬D(J2000)":"-73.11611111111111","可见光星等V":"99","摄影(蓝光)星等B":"11.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"very faint, large, round, very gradually a little brighter middle","简略描述":"vF, L, R, vglbM"},{"ID":"153","标识":"NGC153","M标识":"NGC153","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h34m2.8s","赤经D(J2000)":"0.5674444444444444","赤纬(J2000)":"-9h42m18s","赤纬D(J2000)":"-9.705","可见光星等V":"11.6","摄影(蓝光)星等B":"12.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.8","短轴(分)":"1.6","方位角":"75","详细描述":"pretty faint, pretty large, a little extended 90°, very gradually a little brighter middle","简略描述":"pF, pS, R, * nr nf"},{"ID":"154","标识":"NGC154","M标识":"NGC154","拓展名":"","组件":"","Class":"III 467","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h34m19.4s","赤经D(J2000)":"0.5720555555555555","赤纬(J2000)":"-12h39m21s","赤纬D(J2000)":"-12.655833333333334","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"80","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"155","标识":"NGC155","M标识":"NGC155","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h34m40s","赤经D(J2000)":"0.5777777777777777","赤纬(J2000)":"-10h45m58s","赤纬D(J2000)":"-10.766111111111112","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"175","详细描述":"pretty faint, small, round","简略描述":"pF, S, R"},{"ID":"156","标识":"NGC156","M标识":"NGC156","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h34m35.8s","赤经D(J2000)":"0.5766111111111111","赤纬(J2000)":"-8h20m22s","赤纬D(J2000)":"-8.339444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very small, northwest of II 3","简略描述":"vS, np II 3"},{"ID":"157","标识":"NGC157","M标识":"NGC157","拓展名":"","组件":"","Class":"II 3","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h34m46.4s","赤经D(J2000)":"0.5795555555555555","赤纬(J2000)":"-8h23m46s","赤纬D(J2000)":"-8.39611111111111","可见光星等V":"10.4","摄影(蓝光)星等B":"11","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.5","短轴(分)":"2.4","方位角":"36","详细描述":"pretty bright, large, extended, between 2 considerably bright stars","简略描述":"pB, L, E, bet 2 cB st"},{"ID":"158","标识":"NGC158","M标识":"NGC158","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h35m5.5s","赤经D(J2000)":"0.5848611111111112","赤纬(J2000)":"-8h20m42s","赤纬D(J2000)":"-8.345","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very small, northeast of II 3","简略描述":"vS, nf II 3"},{"ID":"159","标识":"NGC159","M标识":"NGC159","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h34m35.4s","赤经D(J2000)":"0.5765","赤纬(J2000)":"-55h47m23s","赤纬D(J2000)":"-55.78972222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"95","详细描述":"very faint, pretty small, round, gradually a little brighter middle, 3 stars to east","简略描述":"vF, pS, R, glbM, 3 st f"},{"ID":"160","标识":"NGC160","M标识":"NGC160","拓展名":"","组件":"","Class":"III 476","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h36m4.1s","赤经D(J2000)":"0.6011388888888889","赤纬(J2000)":"+23h57m29s","赤纬D(J2000)":"23.958055555555553","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2.3","短轴(分)":"1.2","方位角":"45","详细描述":"very faint, very small, stellar, 8th magnitude star 4 arcmin away 17° east of north","简略描述":"vF, vS, stell, * 8, 17°, 4'"},{"ID":"161","标识":"NGC161","M标识":"NGC161","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h35m33.9s","赤经D(J2000)":"0.59275","赤纬(J2000)":"-2h50m54s","赤纬D(J2000)":"-2.8483333333333336","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"27","详细描述":"extremely faint, extremely small, round, nearly between 2 stars","简略描述":"eF, eS, R, nearly bet 2 st"},{"ID":"162","标识":"NGC162","M标识":"NGC162","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h36m9.2s","赤经D(J2000)":"0.6025555555555555","赤纬(J2000)":"+23h57m44s","赤纬D(J2000)":"23.96222222222222","可见光星等V":"99","摄影(蓝光)星等B":"15","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, stellar, h 39 to southwest","简略描述":"eF, stellar, h 39 sp"},{"ID":"163","标识":"NGC163","M标识":"NGC163","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h35m59.7s","赤经D(J2000)":"0.5999166666666667","赤纬(J2000)":"-10h7m17s","赤纬D(J2000)":"-10.12138888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"85","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"164","标识":"NGC164","M标识":"NGC164","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h36m32.9s","赤经D(J2000)":"0.6091388888888889","赤纬(J2000)":"+2h45m0s","赤纬D(J2000)":"2.75","可见光星等V":"15.8","摄影(蓝光)星等B":"16.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"165","标识":"NGC165","M标识":"NGC165","拓展名":"","组件":"","Class":"III 954","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h36m28.9s","赤经D(J2000)":"0.6080277777777777","赤纬(J2000)":"-10h6m23s","赤纬D(J2000)":"-10.106388888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"77","详细描述":"faint, large, star in center, eastern of 2","简略描述":"F, L, st in centre, f of 2"},{"ID":"166","标识":"NGC166","M标识":"NGC166","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h35m48.8s","赤经D(J2000)":"0.5968888888888889","赤纬(J2000)":"-13h36m38s","赤纬D(J2000)":"-13.610555555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"145","详细描述":"extremely faint, small, a little extended, 11th magnitude star to northwest","简略描述":"eF, S, lE, * 11 np"},{"ID":"167","标识":"NGC167","M标识":"NGC167","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h35m22.9s","赤经D(J2000)":"0.5896944444444445","赤纬(J2000)":"-23h22m29s","赤纬D(J2000)":"-23.37472222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.7","方位角":"171","详细描述":"very faint, pretty small, irregularly round","简略描述":"vF, pS, iR"},{"ID":"168","标识":"NGC168","M标识":"NGC168","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h36m38.6s","赤经D(J2000)":"0.6107222222222222","赤纬(J2000)":"-22h35m37s","赤纬D(J2000)":"-22.59361111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"26","详细描述":"extremely faint, small, extended 30°, 10th magnitude star 3 arcmin to northeast","简略描述":"eF, S, E 30°, * 10 nf 3'"},{"ID":"169","标识":"NGC169","M标识":"NGC169","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h36m51.7s","赤经D(J2000)":"0.6143611111111111","赤纬(J2000)":"+23h59m29s","赤纬D(J2000)":"23.99138888888889","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.6","短轴(分)":"0.6","方位角":"88","详细描述":"faint, pretty large, double or binary nucleus, 6th magnitude star 4 arcmin to northeast","简略描述":"F, pL, D or biN, * 6 nf 4'"},{"ID":"170","标识":"NGC170","M标识":"NGC170","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h36m45.9s","赤经D(J2000)":"0.61275","赤纬(J2000)":"+1h53m11s","赤纬D(J2000)":"1.886388888888889","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"79","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"171","标识":"NGC171","M标识":"NGC171","拓展名":"","组件":"","Class":"III 223","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h37m21.5s","赤经D(J2000)":"0.622638888888889","赤纬(J2000)":"-19h56m4s","赤纬D(J2000)":"-19.934444444444445","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.1","短轴(分)":"1.9","方位角":"","详细描述":"very faint, pretty large, a little extended, 2 pretty bright stars to southeast","简略描述":"vF, pL, lE, 2 pB st sf"},{"ID":"172","标识":"NGC172","M标识":"NGC172","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h37m13.6s","赤经D(J2000)":"0.6204444444444445","赤纬(J2000)":"-22h35m12s","赤纬D(J2000)":"-22.586666666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2","短轴(分)":"0.3","方位角":"12","详细描述":"extremely faint, small, extended","简略描述":"eF, S, E"},{"ID":"173","标识":"NGC173","M标识":"NGC173","拓展名":"","组件":"","Class":"III 871","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h37m12.4s","赤经D(J2000)":"0.6201111111111112","赤纬(J2000)":"+1h56m32s","赤纬D(J2000)":"1.9422222222222223","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"15.2","长轴(分)":"3.2","短轴(分)":"2.6","方位角":"90","详细描述":"very faint, small, round, very gradually brighter middle, 11th magnitude star 80 arcsec to southwest","简略描述":"vF, S, R, vgbM, * 11 sp 80\""},{"ID":"174","标识":"NGC174","M标识":"NGC174","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h36m58.8s","赤经D(J2000)":"0.6163333333333333","赤纬(J2000)":"-29h28m40s","赤纬D(J2000)":"-29.477777777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"152","详细描述":"extremely faint, small, very little extended, among bright stars","简略描述":"eF, S, vlE, am B st"},{"ID":"175","标识":"NGC175","M标识":"NGC175","拓展名":"","组件":"","Class":"","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h37m21.5s","赤经D(J2000)":"0.622638888888889","赤纬(J2000)":"-19h56m4s","赤纬D(J2000)":"-19.934444444444445","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.1","短轴(分)":"1.9","方位角":"","详细描述":"very faint, pretty large, a little extended, 2 pretty bright stars to southeast","简略描述":"pB, pL, E, gbM, r"},{"ID":"176","标识":"NGC176","M标识":"NGC176","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h35m58.8s","赤经D(J2000)":"0.5996666666666667","赤纬(J2000)":"-73h9m58s","赤纬D(J2000)":"-73.16611111111112","可见光星等V":"12.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, very little extended, mottled but not resolved, 8th magnitude star near","简略描述":"eF, S, vlE, r, * 8 nr"},{"ID":"177","标识":"NGC177","M标识":"NGC177","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h37m34.3s","赤经D(J2000)":"0.6261944444444445","赤纬(J2000)":"-22h32m57s","赤纬D(J2000)":"-22.549166666666668","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.2","短轴(分)":"0.5","方位角":"11","详细描述":"extremely faint, small, extended 175° (perhaps a star?)","简略描述":"eF, S, E 175° (? *)"},{"ID":"178","标识":"NGC178","M标识":"NGC178","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h39m8.4s","赤经D(J2000)":"0.6523333333333333","赤纬(J2000)":"-14h10m20s","赤纬D(J2000)":"-14.172222222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.1","短轴(分)":"0.9","方位角":"178","详细描述":"faint, small, much extended 0°, brighter middle","简略描述":"F, S, mE 0°, bM"},{"ID":"179","标识":"NGC179","M标识":"NGC179","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h37m46.3s","赤经D(J2000)":"0.6295277777777778","赤纬(J2000)":"-17h51m0s","赤纬D(J2000)":"-17.85","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"113","详细描述":"extremely faint, extremely small, round, bright star to northwest","简略描述":"eF, eS, R, B * np"},{"ID":"180","标识":"NGC180","M标识":"NGC180","拓展名":"","组件":"","Class":"III 876","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h37m57.7s","赤经D(J2000)":"0.6326944444444444","赤纬(J2000)":"+8h38m5s","赤纬D(J2000)":"8.634722222222221","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.9","短轴(分)":"1.3","方位角":"160","详细描述":"very faint, pretty large, irregularly round, star involved to northwest","简略描述":"vF, pL, iR, * np inv"},{"ID":"181","标识":"NGC181","M标识":"NGC181","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h38m23.3s","赤经D(J2000)":"0.6398055555555555","赤纬(J2000)":"+29h28m24s","赤纬D(J2000)":"29.473333333333333","可见光星等V":"14.9","摄影(蓝光)星等B":"15.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"147","详细描述":"extremely faint, extremely small, irregular, very faint star attached","简略描述":"eF, eS, irr, vF * att"},{"ID":"182","标识":"NGC182","M标识":"NGC182","拓展名":"","组件":"","Class":"III 870","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h38m12.4s","赤经D(J2000)":"0.6367777777777778","赤纬(J2000)":"+2h43m43s","赤纬D(J2000)":"2.7286111111111113","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.6","方位角":"75","详细描述":"very faint, small, irregularly round, very gradually brighter middle.","简略描述":"vF, S, iR, vgbM"},{"ID":"183","标识":"NGC183","M标识":"NGC183","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h38m29.3s","赤经D(J2000)":"0.6414722222222222","赤纬(J2000)":"+29h30m42s","赤纬D(J2000)":"29.511666666666667","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"130","详细描述":"pretty faint, very small, round, gradually brighter middle","简略描述":"pF, vS, R, gbM"},{"ID":"184","标识":"NGC184","M标识":"NGC184","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h38m35.8s","赤经D(J2000)":"0.6432777777777777","赤纬(J2000)":"+29h26m51s","赤纬D(J2000)":"29.4475","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"5","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"185","标识":"NGC185","M标识":"NGC185","拓展名":"","组件":"","Class":"II 707","业余排名":"2","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h38m57.6s","赤经D(J2000)":"0.6493333333333333","赤纬(J2000)":"+48h20m14s","赤纬D(J2000)":"48.33722222222222","可见光星等V":"9.2","摄影(蓝光)星等B":"10.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"8","短轴(分)":"7","方位角":"35","详细描述":"pretty bright, very large, irregularly round, very gradually much brighter middle, mottled but nor resolved","简略描述":"pB, vL, iR, vgmbM, r"},{"ID":"186","标识":"NGC186","M标识":"NGC186","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h38m25.2s","赤经D(J2000)":"0.6403333333333333","赤纬(J2000)":"+3h9m58s","赤纬D(J2000)":"3.166111111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"23","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"187","标识":"NGC187","M标识":"NGC187","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h39m30.2s","赤经D(J2000)":"0.6583888888888889","赤纬(J2000)":"-14h39m23s","赤纬D(J2000)":"-14.65638888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"148","详细描述":"faint, small, much extended 150°, brighter middle","简略描述":"F, S, mE 150°, bM"},{"ID":"188","标识":"NGC188","M标识":"NGC188","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"近极星团","类型":"OCL","含重复类型":"OCL","形态":"II2r","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"0h47m30s","赤经D(J2000)":"0.7916666666666666","赤纬(J2000)":"+85h15m30s","赤纬D(J2000)":"85.25833333333334","可见光星等V":"8.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, round, 150-200 stars from 10th to 18th magnitude","简略描述":"Cl, vL, R, 150-200 st 10…18"},{"ID":"189","标识":"NGC189","M标识":"NGC189","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h39m35.6s","赤经D(J2000)":"0.6598888888888889","赤纬(J2000)":"+61h5m42s","赤纬D(J2000)":"61.095","可见光星等V":"8.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, round, stars from 11th to 15th magnitude","简略描述":"Cl, pL, R, st 11…15"},{"ID":"190","标识":"NGC190","M标识":"NGC190","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h38m54.7s","赤经D(J2000)":"0.6485277777777777","赤纬(J2000)":"+7h3m44s","赤纬D(J2000)":"7.062222222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"135","详细描述":"very faint, small, a little extended, several stars near to southwest","简略描述":"vF, S, lE, sev st nr sp"},{"ID":"191","标识":"NGC191","M标识":"NGC191","拓展名":"","组件":"","Class":"II 479","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h38m59.2s","赤经D(J2000)":"0.6497777777777778","赤纬(J2000)":"-9h0m10s","赤纬D(J2000)":"-9.002777777777778","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"128","详细描述":"pretty bright, pretty large, irregularly extended 0°","简略描述":"pB, pL, iE 0°"},{"ID":"192","标识":"NGC192","M标识":"NGC192","拓展名":"","组件":"","Class":"III 872","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h39m13.5s","赤经D(J2000)":"0.65375","赤纬(J2000)":"+0h51m51s","赤纬D(J2000)":"0.8641666666666666","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"167","详细描述":"faint, pretty small, pretty much extended, brighter middle","简略描述":"F, pS, pmE, bM"},{"ID":"193","标识":"NGC193","M标识":"NGC193","拓展名":"","组件":"","Class":"III 595","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h39m18.5s","赤经D(J2000)":"0.6551388888888889","赤纬(J2000)":"+3h19m52s","赤纬D(J2000)":"3.331111111111111","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"55","详细描述":"faint, large, western of 2, 15th magnitude star close to southwest","简略描述":"F, L, p of 2, * 15 close sp"},{"ID":"194","标识":"NGC194","M标识":"NGC194","拓展名":"","组件":"","Class":"II 856","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h39m18.3s","赤经D(J2000)":"0.6550833333333334","赤纬(J2000)":"+3h2m15s","赤纬D(J2000)":"3.0375","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"30","详细描述":"pretty bright, small, round, very gradually brighter middle","简略描述":"pB, S, R, vgbM"},{"ID":"195","标识":"NGC195","M标识":"NGC195","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h39m35.7s","赤经D(J2000)":"0.6599166666666667","赤纬(J2000)":"-9h11m39s","赤纬D(J2000)":"-9.194166666666668","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"45","详细描述":"faint.","简略描述":"F"},{"ID":"196","标识":"NGC196","M标识":"NGC196","拓展名":"","组件":"","Class":"II 860","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h39m17.8s","赤经D(J2000)":"0.6549444444444444","赤纬(J2000)":"+0h54m47s","赤纬D(J2000)":"0.9130555555555556","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"3","详细描述":"faint, pretty small, round, pretty suddenly much brighter middle","简略描述":"F, pS, R, psmbM"},{"ID":"197","标识":"NGC197","M标识":"NGC197","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h39m18.7s","赤经D(J2000)":"0.6551944444444444","赤纬(J2000)":"+0h53m33s","赤纬D(J2000)":"0.8925","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, south of h 41","简略描述":"eF, s of h 41"},{"ID":"198","标识":"NGC198","M标识":"NGC198","拓展名":"","组件":"","Class":"II 857","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h39m22.9s","赤经D(J2000)":"0.6563611111111112","赤纬(J2000)":"+2h47m54s","赤纬D(J2000)":"2.7983333333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"faint, small, very gradually brighter middle","简略描述":"F, S, vgbM"},{"ID":"199","标识":"NGC199","M标识":"NGC199","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h39m33.1s","赤经D(J2000)":"0.6591944444444444","赤纬(J2000)":"+3h8m17s","赤纬D(J2000)":"3.1380555555555554","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"160","详细描述":"faint, very small, 8th magnitude star 27 seconds of time to west and 45 arcsec to south","简略描述":"F, vS, * 8 p 27s, 45\" s"},{"ID":"200","标识":"NGC200","M标识":"NGC200","拓展名":"","组件":"","Class":"II 858","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h39m34.7s","赤经D(J2000)":"0.6596388888888889","赤纬(J2000)":"+2h53m13s","赤纬D(J2000)":"2.8869444444444445","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1","方位角":"161","详细描述":"pretty bright, small, very gradually brighter middle","简略描述":"pB, S, vgbM"},{"ID":"201","标识":"NGC201","M标识":"NGC201","拓展名":"","组件":"","Class":"III 873","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h39m34.9s","赤经D(J2000)":"0.6596944444444445","赤纬(J2000)":"+0h51m37s","赤纬D(J2000)":"0.8602777777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"155","详细描述":"very faint, considerably large, extended, very gradually a little brighter middle","简略描述":"vF, cL, E, vglbM"},{"ID":"202","标识":"NGC202","M标识":"NGC202","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h39m39.7s","赤经D(J2000)":"0.6610277777777778","赤纬(J2000)":"+3h32m8s","赤纬D(J2000)":"3.5355555555555553","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"153","详细描述":"extremely faint, very small, irregularly brighter middle","简略描述":"eF, vS, ibM"},{"ID":"203","标识":"NGC203","M标识":"NGC203","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h39m39.5s","赤经D(J2000)":"0.6609722222222223","赤纬(J2000)":"+3h26m33s","赤纬D(J2000)":"3.4425000000000003","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"85","详细描述":"faint, round, 9th magnitude star 8 arcmin to southwest","简略描述":"F, R, * 9 sp 8'"},{"ID":"204","标识":"NGC204","M标识":"NGC204","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h39m44.2s","赤经D(J2000)":"0.6622777777777779","赤纬(J2000)":"+3h18m0s","赤纬D(J2000)":"3.3","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"30","详细描述":"faint, pretty small, round, very gradually brighter middle, eastern of 2","简略描述":"F, pS, R, vgbM, f of 2"},{"ID":"205","标识":"NGC205","M标识":"M110","拓展名":"","组件":"","Class":"V 18","业余排名":"1","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h40m22.1s","赤经D(J2000)":"0.6728055555555555","赤纬(J2000)":"+41h41m7s","赤纬D(J2000)":"41.68527777777778","可见光星等V":"8.1","摄影(蓝光)星等B":"8.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"19.5","短轴(分)":"11.5","方位角":"170","详细描述":"very bright, very large, much extended 165°, very gradually very much brighter middle","简略描述":"vB, vL, mE 165°, vgvmbM"},{"ID":"206","标识":"NGC206","M标识":"NGC206","拓展名":"","组件":"","Class":"V 36","业余排名":"6.5","中文名":"仙女座星系中的大恒星云","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h40m32.3s","赤经D(J2000)":"0.6756388888888889","赤纬(J2000)":"+40h44m18s","赤纬D(J2000)":"40.73833333333334","可见光星等V":"14","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.2","短轴(分)":"","方位角":"","详细描述":"very faint, very large, much extended 0°","简略描述":"vF, vL, mE 0°"},{"ID":"207","标识":"NGC207","M标识":"NGC207","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h39m40.7s","赤经D(J2000)":"0.6613055555555556","赤纬(J2000)":"-14h14m11s","赤纬D(J2000)":"-14.236388888888888","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"85","详细描述":"very faint, small, a little extended, stellar","简略描述":"vF, S, lE, stellar"},{"ID":"208","标识":"NGC208","M标识":"NGC208","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h40m17.4s","赤经D(J2000)":"0.6715","赤纬(J2000)":"+2h45m21s","赤纬D(J2000)":"2.7558333333333334","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"pretty faint","简略描述":"pF"},{"ID":"209","标识":"NGC209","M标识":"NGC209","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h39m3.5s","赤经D(J2000)":"0.6509722222222223","赤纬(J2000)":"-18h36m30s","赤纬D(J2000)":"-18.608333333333334","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"210","标识":"NGC210","M标识":"NGC210","拓展名":"","组件":"","Class":"II 452","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h40m34.8s","赤经D(J2000)":"0.6763333333333333","赤纬(J2000)":"-13h52m21s","赤纬D(J2000)":"-13.8725","可见光星等V":"10.9","摄影(蓝光)星等B":"11.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"5","短轴(分)":"3.3","方位角":"160","详细描述":"bright, pretty small, round, pretty suddenly brighter middle, mottled but not resolved, 11th magnitude star 2 arcmin to west","简略描述":"B, pS, R, psbM, r, * 11 p 2'"},{"ID":"211","标识":"NGC211","M标识":"NGC211","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h39m39.5s","赤经D(J2000)":"0.6609722222222223","赤纬(J2000)":"+3h26m33s","赤纬D(J2000)":"3.4425000000000003","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"85","详细描述":"faint, round, 9th magnitude star 8 arcmin to southwest","简略描述":"eF, S, mbMN"},{"ID":"212","标识":"NGC212","M标识":"NGC212","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h40m13.4s","赤经D(J2000)":"0.6703888888888888","赤纬(J2000)":"-56h9m9s","赤纬D(J2000)":"-56.152499999999996","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.9","方位角":"131","详细描述":"very faint, small, round, western of 2","简略描述":"vF, S, R, p of 2"},{"ID":"213","标识":"NGC213","M标识":"NGC213","拓展名":"","组件":"","Class":"III 200","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h41m9.9s","赤经D(J2000)":"0.6860833333333334","赤纬(J2000)":"+16h28m11s","赤纬D(J2000)":"16.46972222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"102","详细描述":"faint, small, between 2 small (faint) stars","简略描述":"F, S, bet 2 S st"},{"ID":"214","标识":"NGC214","M标识":"NGC214","拓展名":"","组件":"","Class":"II 209","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h41m28s","赤经D(J2000)":"0.6911111111111111","赤纬(J2000)":"+25h29m58s","赤纬D(J2000)":"25.499444444444446","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"35","详细描述":"pretty faint, pretty small, gradually a very little brighter middle, mottled but not resolved","简略描述":"pF, pS, gvlbM, r"},{"ID":"215","标识":"NGC215","M标识":"NGC215","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h40m48.9s","赤经D(J2000)":"0.6802499999999999","赤纬(J2000)":"-56h12m51s","赤纬D(J2000)":"-56.21416666666667","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"120","详细描述":"faint, small, round, among stars, eastern of 2","简略描述":"F, S, R, am st, f of 2"},{"ID":"216","标识":"NGC216","M标识":"NGC216","拓展名":"","组件":"","Class":"III 244","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h41m27.1s","赤经D(J2000)":"0.6908611111111111","赤纬(J2000)":"-21h2m43s","赤纬D(J2000)":"-21.04527777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"13.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2","短轴(分)":"0.7","方位角":"27","详细描述":"extremely faint, very small, a little extended","简略描述":"eF, vS, lE"},{"ID":"217","标识":"NGC217","M标识":"NGC217","拓展名":"","组件":"","Class":"II 480","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h41m33.9s","赤经D(J2000)":"0.69275","赤纬(J2000)":"-10h1m18s","赤纬D(J2000)":"-10.021666666666668","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.7","短轴(分)":"0.6","方位角":"115","详细描述":"faint, small, a little extended 90°, gradually a little brighter middle","简略描述":"F, S, lE 90°, glbM"},{"ID":"218","标识":"NGC218","M标识":"NGC218","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h46m32s","赤经D(J2000)":"0.7755555555555556","赤纬(J2000)":"+36h19m32s","赤纬D(J2000)":"36.32555555555556","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"20","详细描述":"extremely faint, very small, round, gradually brighter middle","简略描述":"eF, vS, R, gbM"},{"ID":"219","标识":"NGC219","M标识":"NGC219","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h42m11.3s","赤经D(J2000)":"0.7031388888888889","赤纬(J2000)":"+0h54m16s","赤纬D(J2000)":"0.9044444444444445","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"170","详细描述":"faint, small, round, 11th magnitude star 1 arcmin to southwest","简略描述":"F, S, R, * 11 sp 1'"},{"ID":"220","标识":"NGC220","M标识":"NGC220","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h40m30s","赤经D(J2000)":"0.6749999999999999","赤纬(J2000)":"-73h24m15s","赤纬D(J2000)":"-73.40416666666667","可见光星等V":"12.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"faint, irregularly round, very gradually brighter middle, 1st of several","简略描述":"F, iR, vgbM, 1st of several"},{"ID":"221","标识":"NGC221","M标识":"M32","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h42m41.8s","赤经D(J2000)":"0.7116111111111111","赤纬(J2000)":"+40h51m57s","赤纬D(J2000)":"40.865833333333335","可见光星等V":"8.1","摄影(蓝光)星等B":"9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"8.5","短轴(分)":"6.5","方位角":"179","详细描述":"a remarkable object, very very bright, large, round, pretty suddenly much brighter middle and nucleus","简略描述":"! vvB, L, R, psmbMN"},{"ID":"222","标识":"NGC222","M标识":"NGC222","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h40m43.7s","赤经D(J2000)":"0.6788055555555556","赤纬(J2000)":"-73h23m9s","赤纬D(J2000)":"-73.38583333333334","可见光星等V":"12.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"very faint, round, 2nd of several","简略描述":"vF, R, 2nd of several"},{"ID":"223","标识":"NGC223","M标识":"NGC223","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h42m15.9s","赤经D(J2000)":"0.7044166666666666","赤纬(J2000)":"+0h50m46s","赤纬D(J2000)":"0.8461111111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"62","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"224","标识":"NGC224","M标识":"M31","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"仙女座星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h42m44.3s","赤经D(J2000)":"0.7123055555555555","赤纬(J2000)":"+41h16m8s","赤纬D(J2000)":"41.26888888888889","可见光星等V":"3.4","摄影(蓝光)星等B":"4.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"189.1","短轴(分)":"61.7","方位角":"35","详细描述":"a magnificent object, most extremely bright, extremely large, very much extended (Andromeda)","简略描述":"!!! eeB, eL, vmE (Andromeda)"},{"ID":"225","标识":"NGC225","M标识":"NGC225","拓展名":"","组件":"","Class":"VIII 78","业余排名":"6","中文名":"帆船星团","类型":"OCL","含重复类型":"OCL","形态":"III1p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h43m36s","赤经D(J2000)":"0.7266666666666667","赤纬(J2000)":"+61h46m0s","赤纬D(J2000)":"61.766666666666666","可见光星等V":"7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, large, a little compressed, stars from 9th to 10th magnitude","简略描述":"Cl, L, lC, st 9…10"},{"ID":"226","标识":"NGC226","M标识":"NGC226","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h42m53.9s","赤经D(J2000)":"0.7149722222222222","赤纬(J2000)":"+32h34m49s","赤纬D(J2000)":"32.58027777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"105","详细描述":"extremely faint, small, round, 13th magnitude star 20 arcsec to south","简略描述":"eF, S, R, * 13 s 20\""},{"ID":"227","标识":"NGC227","M标识":"NGC227","拓展名":"","组件":"","Class":"II 444","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h42m36.6s","赤经D(J2000)":"0.7101666666666666","赤纬(J2000)":"-1h31m41s","赤纬D(J2000)":"-1.5280555555555555","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"155","详细描述":"faint, pretty large, a little brighter middle","简略描述":"F, pL, lbM"},{"ID":"228","标识":"NGC228","M标识":"NGC228","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h42m54.5s","赤经D(J2000)":"0.7151388888888889","赤纬(J2000)":"+23h30m12s","赤纬D(J2000)":"23.503333333333334","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"126","详细描述":"extremely faint, small, round, fainter of 2","简略描述":"eF, S, R, fainter of 2"},{"ID":"229","标识":"NGC229","M标识":"NGC229","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h43m4.7s","赤经D(J2000)":"0.7179722222222222","赤纬(J2000)":"+23h30m34s","赤纬D(J2000)":"23.509444444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.4","方位角":"96","详细描述":"very faint, small, round, smaller of 2","简略描述":"vF, S, R, smaller of 2"},{"ID":"230","标识":"NGC230","M标识":"NGC230","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h42m27s","赤经D(J2000)":"0.7074999999999999","赤纬(J2000)":"-23h37m44s","赤纬D(J2000)":"-23.628888888888888","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"44","详细描述":"extremely faint, extremely small, round, brighter middle and nucleus","简略描述":"eF, eS, R, bMN"},{"ID":"231","标识":"NGC231","M标识":"NGC231","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h41m6.4s","赤经D(J2000)":"0.6851111111111111","赤纬(J2000)":"-73h21m9s","赤纬D(J2000)":"-73.35249999999999","可见光星等V":"12.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"an irregular train of stars and nebulae","简略描述":"i train of st and neb"},{"ID":"232","标识":"NGC232","M标识":"NGC232","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h42m45.7s","赤经D(J2000)":"0.7126944444444444","赤纬(J2000)":"-23h33m42s","赤纬D(J2000)":"-23.561666666666667","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"42","详细描述":"extremely faint, small, round, brighter middle and nucleus","简略描述":"eF, S, R, bMN"},{"ID":"233","标识":"NGC233","M标识":"NGC233","拓展名":"","组件":"","Class":"III 149","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h43m36.5s","赤经D(J2000)":"0.7268055555555556","赤纬(J2000)":"+30h35m13s","赤纬D(J2000)":"30.586944444444445","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"234","标识":"NGC234","M标识":"NGC234","拓展名":"","组件":"","Class":"II 245","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h43m32.3s","赤经D(J2000)":"0.7256388888888889","赤纬(J2000)":"+14h20m33s","赤纬D(J2000)":"14.342500000000001","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"54","详细描述":"faint, pretty small, irregularly a little extended, brighter middle","简略描述":"F, pS, i lE, bM"},{"ID":"235","标识":"NGC235","M标识":"NGC235","拓展名":"A","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h42m52.7s","赤经D(J2000)":"0.7146388888888888","赤纬(J2000)":"-23h32m28s","赤纬D(J2000)":"-23.541111111111114","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"117","详细描述":"extremely faint, small, round, brighter middle and nucleus","简略描述":"eF, S, R, bMN"},{"ID":"236","标识":"NGC236","M标识":"NGC236","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h43m27.4s","赤经D(J2000)":"0.7242777777777778","赤纬(J2000)":"+2h57m29s","赤纬D(J2000)":"2.9580555555555557","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"1","方位角":"160","详细描述":"very faint, pretty large","简略描述":"vF, pL"},{"ID":"237","标识":"NGC237","M标识":"NGC237","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h43m27.9s","赤经D(J2000)":"0.7244166666666667","赤纬(J2000)":"-0h7m31s","赤纬D(J2000)":"-0.12527777777777777","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"175","详细描述":"very faint, pretty small, a little extended, a little brighter middle","简略描述":"Vf, pS, lE, lbM"},{"ID":"238","标识":"NGC238","M标识":"NGC238","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h43m25.6s","赤经D(J2000)":"0.7237777777777777","赤纬(J2000)":"-50h10m58s","赤纬D(J2000)":"-50.18277777777777","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2","短轴(分)":"1.6","方位角":"96","详细描述":"extremely faint, pretty large, round, gradually a very little brighter middle","简略描述":"eF, pL, R, gvlbM"},{"ID":"239","标识":"NGC239","M标识":"NGC239","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h44m37.5s","赤经D(J2000)":"0.7437499999999999","赤纬(J2000)":"-3h45m36s","赤纬D(J2000)":"-3.76","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.5","方位角":"28","详细描述":"pretty faint, pretty small, extended 20°, brighter middle and nucleus, 8th magnitude star 20 seconds of time to east","简略描述":"pF, pS, E 20°, bMN, * 8 f 20s"},{"ID":"240","标识":"NGC240","M标识":"NGC240","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h45m1.9s","赤经D(J2000)":"0.7505277777777778","赤纬(J2000)":"+6h6m46s","赤纬D(J2000)":"6.112777777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"very faint, small, round, star near to south","简略描述":"vF, S, R, * nr s"},{"ID":"241","标识":"NGC241","M标识":"NGC241","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h43m33.2s","赤经D(J2000)":"0.7258888888888889","赤纬(J2000)":"-73h26m33s","赤纬D(J2000)":"-73.44250000000001","可见光星等V":"99","摄影(蓝光)星等B":"12.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.9","短轴(分)":"","方位角":"","详细描述":"very faint, round","简略描述":"vF, R"},{"ID":"242","标识":"NGC242","M标识":"NGC242","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h43m33.2s","赤经D(J2000)":"0.7258888888888889","赤纬(J2000)":"-73h26m33s","赤纬D(J2000)":"-73.44250000000001","可见光星等V":"99","摄影(蓝光)星等B":"12.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.9","短轴(分)":"","方位角":"","详细描述":"very faint, round","简略描述":"vF, S, bi-N"},{"ID":"243","标识":"NGC243","M标识":"NGC243","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h46m0.7s","赤经D(J2000)":"0.7668611111111112","赤纬(J2000)":"+29h57m35s","赤纬D(J2000)":"29.959722222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"149","详细描述":"faint, very small, round, gradually brighter middle, 10th magnitude star to the west","简略描述":"F, vS, R, gbM, * 10 p"},{"ID":"244","标识":"NGC244","M标识":"NGC244","拓展名":"","组件":"","Class":"III 485","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h45m46.5s","赤经D(J2000)":"0.7629166666666667","赤纬(J2000)":"-15h35m50s","赤纬D(J2000)":"-15.597222222222223","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"1","方位角":"50","详细描述":"very faint, small, irregularly round, mottled but not resolved, 10th magnitude star 5 arcmin to south","简略描述":"vF, S, iR, r, * 10 s 5'"},{"ID":"245","标识":"NGC245","M标识":"NGC245","拓展名":"","组件":"","Class":"II 445","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h46m5.5s","赤经D(J2000)":"0.7681944444444445","赤纬(J2000)":"-1h43m24s","赤纬D(J2000)":"-1.7233333333333334","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"145","详细描述":"faint, pretty small, irregular figure, extremely mottled but not resolved","简略描述":"F, pS, iF, er"},{"ID":"246","标识":"NGC246","M标识":"NGC246","拓展名":"","组件":"","Class":"V 25","业余排名":"2","中文名":"头骨星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h47m3.3s","赤经D(J2000)":"0.78425","赤纬(J2000)":"-11h52m17s","赤纬D(J2000)":"-11.87138888888889","可见光星等V":"10.9","摄影(蓝光)星等B":"8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.08","短轴(分)":"","方位角":"","详细描述":"very faint, large, 4 stars in diffuse nebula","简略描述":"vF, L, 4 st in dif neb"},{"ID":"247","标识":"NGC247","M标识":"NGC247","拓展名":"","组件":"","Class":"V 20","业余排名":"2","中文名":"伯比奇链","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h47m8.3s","赤经D(J2000)":"0.7856388888888889","赤纬(J2000)":"-20h45m36s","赤纬D(J2000)":"-20.76","可见光星等V":"9.1","摄影(蓝光)星等B":"9.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"19.2","短轴(分)":"5.5","方位角":"172","详细描述":"faint, extremely large, very much extended 172°","简略描述":"F, eL, vm E 172°"},{"ID":"248","标识":"NGC248","M标识":"NGC248","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h45m24s","赤经D(J2000)":"0.7566666666666667","赤纬(J2000)":"-73h22m49s","赤纬D(J2000)":"-73.38027777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"faint, small, extended or binuclear, very gradually a little brighter middle","简略描述":"F, S, E or biN, vglbM"},{"ID":"249","标识":"NGC249","M标识":"NGC249","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h45m31.8s","赤经D(J2000)":"0.7588333333333334","赤纬(J2000)":"-73h4m49s","赤纬D(J2000)":"-73.08027777777778","可见光星等V":"99","摄影(蓝光)星等B":"13.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, very little extended, mottled but not resolved","简略描述":"F, pL, vlE, r"},{"ID":"250","标识":"NGC250","M标识":"NGC250","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h47m16s","赤经D(J2000)":"0.7877777777777778","赤纬(J2000)":"+7h54m36s","赤纬D(J2000)":"7.91","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"153","详细描述":"extremely faint, very small, round, among 3 stars","简略描述":"eF, vS, R, am 3 st"},{"ID":"251","标识":"NGC251","M标识":"NGC251","拓展名":"","组件":"","Class":"III 204","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h47m53.9s","赤经D(J2000)":"0.7983055555555556","赤纬(J2000)":"+19h35m49s","赤纬D(J2000)":"19.596944444444443","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"2.4","短轴(分)":"1.9","方位角":"96","详细描述":"very faint, small, round, a little brighter middle, star involved, 2 very small (faint) stars to east","简略描述":"vF, S, R, lbM, * inv, 2 vS st f"},{"ID":"252","标识":"NGC252","M标识":"NGC252","拓展名":"","组件":"","Class":"II 609","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h48m1.7s","赤经D(J2000)":"0.8004722222222223","赤纬(J2000)":"+27h37m24s","赤纬D(J2000)":"27.623333333333335","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"1","方位角":"80","详细描述":"pretty bright, small, round, pretty much brighter middle, mottled but not resolved, double star to west","简略描述":"pB, S, R, pmbM, r, ** p"},{"ID":"253","标识":"NGC253","M标识":"NGC253","拓展名":"","组件":"","Class":"V 1","业余排名":"2","中文名":"玉夫座星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h47m33.1s","赤经D(J2000)":"0.7925277777777777","赤纬(J2000)":"-25h17m15s","赤纬D(J2000)":"-25.2875","可见光星等V":"7.2","摄影(蓝光)星等B":"8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"29","短轴(分)":"6.8","方位角":"52","详细描述":"a most remarkable object, very very bright, very very large, very much extended 54°, gradually brighter middle","简略描述":"!! vvB, vvL, vmE 54°, gbM"},{"ID":"254","标识":"NGC254","M标识":"NGC254","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h47m27.5s","赤经D(J2000)":"0.7909722222222222","赤纬(J2000)":"-31h25m19s","赤纬D(J2000)":"-31.421944444444446","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.6","短轴(分)":"1.7","方位角":"137","详细描述":"very bright, pretty small, a little extended, suddenly much brighter middle, 8th magnitude star 5 arcmin to northeast","简略描述":"vB, pS, lE, smbM, * 8 nf 5'"},{"ID":"255","标识":"NGC255","M标识":"NGC255","拓展名":"","组件":"","Class":"II 472","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h47m47.3s","赤经D(J2000)":"0.7964722222222222","赤纬(J2000)":"-11h28m6s","赤纬D(J2000)":"-11.468333333333334","可见光星等V":"11.9","摄影(蓝光)星等B":"12.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.1","短轴(分)":"2.7","方位角":"15","详细描述":"faint, pretty small, round, gradually brighter middle","简略描述":"F, pS, R, gbM"},{"ID":"256","标识":"NGC256","M标识":"NGC256","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h45m53.3s","赤经D(J2000)":"0.7648055555555555","赤纬(J2000)":"-73h30m25s","赤纬D(J2000)":"-73.50694444444444","可见光星等V":"12.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"faint, small, round, gradually brighter middle, 9th magnitude star 40 arcsec to northeast","简略描述":"F, S, R, gbM, * 9 nf 40\""},{"ID":"257","标识":"NGC257","M标识":"NGC257","拓展名":"","组件":"","Class":"II 863","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h48m1.6s","赤经D(J2000)":"0.8004444444444445","赤纬(J2000)":"+8h17m48s","赤纬D(J2000)":"8.296666666666667","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.9","短轴(分)":"1.3","方位角":"105","详细描述":"pretty large, a little extended, gradually brighter middle, mottled but not resolved","简略描述":"pL, lE, gbM, r"},{"ID":"258","标识":"NGC258","M标识":"NGC258","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h48m12.8s","赤经D(J2000)":"0.8035555555555556","赤纬(J2000)":"+27h39m28s","赤纬D(J2000)":"27.657777777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"108","详细描述":"extremely faint, small, very faint star close","简略描述":"eF, S, vF st close"},{"ID":"259","标识":"NGC259","M标识":"NGC259","拓展名":"","组件":"","Class":"II 621, II 703","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h48m3.2s","赤经D(J2000)":"0.800888888888889","赤纬(J2000)":"-2h46m33s","赤纬D(J2000)":"-2.7758333333333334","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.9","短轴(分)":"0.6","方位角":"139","详细描述":"faint, small, extended 135°, a little brighter middle","简略描述":"F, S, E 135°, lbM"},{"ID":"260","标识":"NGC260","M标识":"NGC260","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc\/P","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h48m34.9s","赤经D(J2000)":"0.8096944444444445","赤纬(J2000)":"+27h41m31s","赤纬D(J2000)":"27.691944444444445","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, pretty small, a little extended","简略描述":"eF, pS, lE"},{"ID":"261","标识":"NGC261","M标识":"NGC261","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h46m27.9s","赤经D(J2000)":"0.7744166666666668","赤纬(J2000)":"-73h6m14s","赤纬D(J2000)":"-73.10388888888889","可见光星等V":"99","摄影(蓝光)星等B":"13","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.9","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, round, gradually brighter middle equivalent to 13th magnitude star","简略描述":"F, pL, R, gbM * 13"},{"ID":"262","标识":"NGC262","M标识":"NGC262","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"马卡良348","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h48m47.1s","赤经D(J2000)":"0.8130833333333334","赤纬(J2000)":"+31h57m27s","赤纬D(J2000)":"31.9575","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"extremely faint, very small, round, very difficult","简略描述":"eF, vS, R, v diffic"},{"ID":"263","标识":"NGC263","M标识":"NGC263","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h48m48.4s","赤经D(J2000)":"0.8134444444444445","赤纬(J2000)":"-13h6m26s","赤纬D(J2000)":"-13.107222222222221","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"45","详细描述":"extremely faint, very small, a little extended 30°","简略描述":"eF, vS, lE 30°"},{"ID":"264","标识":"NGC264","M标识":"NGC264","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h48m20.9s","赤经D(J2000)":"0.8058055555555556","赤纬(J2000)":"-38h14m4s","赤纬D(J2000)":"-38.23444444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"113","详细描述":"faint, small, round, very suddenly very much brighter middle equal to 13th magnitude star","简略描述":"F, S, R, vsm bM * 13"},{"ID":"265","标识":"NGC265","M标识":"NGC265","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h47m11.1s","赤经D(J2000)":"0.7864166666666667","赤纬(J2000)":"-73h28m38s","赤纬D(J2000)":"-73.47722222222222","可见光星等V":"12.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, round","简略描述":"F, pS, R"},{"ID":"266","标识":"NGC266","M标识":"NGC266","拓展名":"","组件":"","Class":"III 153","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h49m47.8s","赤经D(J2000)":"0.8299444444444444","赤纬(J2000)":"+32h16m39s","赤纬D(J2000)":"32.277499999999996","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3","短轴(分)":"2.9","方位角":"99","详细描述":"pretty bright, pretty small, a little extended, pretty suddenly brighter middle, mottled but not resolved, 8th magnitude star 4 arcmin to southeast","简略描述":"pB, pS, lE, psbM, r, * 8 sf 4'"},{"ID":"267","标识":"NGC267","M标识":"NGC267","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h48m2.9s","赤经D(J2000)":"0.8008055555555555","赤纬(J2000)":"-73h16m27s","赤纬D(J2000)":"-73.27416666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.5","短轴(分)":"","方位角":"","详细描述":"a cluster, faint, pretty large, stars very small (faint)","简略描述":"Cl, F, pL, st vS"},{"ID":"268","标识":"NGC268","M标识":"NGC268","拓展名":"","组件":"","Class":"III 463","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h50m9.4s","赤经D(J2000)":"0.8359444444444445","赤纬(J2000)":"-5h11m38s","赤纬D(J2000)":"-5.193888888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"13.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"75","详细描述":"very faint, pretty small, irregularly a little extended, mottled but not resolved","简略描述":"vF, pS, ilE, r"},{"ID":"269","标识":"NGC269","M标识":"NGC269","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h48m21s","赤经D(J2000)":"0.8058333333333334","赤纬(J2000)":"-73h31m54s","赤纬D(J2000)":"-73.53166666666667","可见光星等V":"13.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"270","标识":"NGC270","M标识":"NGC270","拓展名":"","组件":"","Class":"III 955","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h50m32.4s","赤经D(J2000)":"0.8423333333333334","赤纬(J2000)":"-8h39m6s","赤纬D(J2000)":"-8.651666666666667","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"25","详细描述":"pretty faint, very small, irregularly round, pretty gradually brighter middle","简略描述":"pF, vS, iR, pgbM"},{"ID":"271","标识":"NGC271","M标识":"NGC271","拓展名":"","组件":"","Class":"II 446","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h50m41.9s","赤经D(J2000)":"0.8449722222222222","赤纬(J2000)":"-1h54m38s","赤纬D(J2000)":"-1.9105555555555556","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"1.7","方位角":"130","详细描述":"pretty faint, small, a little extended, pretty suddenly brighter middle, 8th magnitude star 5.5 seconds of time to east","简略描述":"pF, S, lE, psbM, * 8 f 5s.5"},{"ID":"272","标识":"NGC272","M标识":"NGC272","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h51m26s","赤经D(J2000)":"0.8572222222222222","赤纬(J2000)":"+35h49m18s","赤纬D(J2000)":"35.82166666666667","可见光星等V":"8.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, large, a little compressed","简略描述":"Cl, L, lC"},{"ID":"273","标识":"NGC273","M标识":"NGC273","拓展名":"","组件":"","Class":"III 430","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h50m48.4s","赤经D(J2000)":"0.8467777777777779","赤纬(J2000)":"-6h53m8s","赤纬D(J2000)":"-6.885555555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.1","短轴(分)":"0.6","方位角":"102","详细描述":"very faint, very small","简略描述":"Vf, vS"},{"ID":"274","标识":"NGC274","M标识":"NGC274","拓展名":"","组件":"","Class":"III 429","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h51m1.8s","赤经D(J2000)":"0.8504999999999999","赤纬(J2000)":"-7h3m24s","赤纬D(J2000)":"-7.056666666666667","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"25","详细描述":"pretty bright, pretty small, suddenly much brighter middle, northwestern of 2","简略描述":"pB, pS, smbM, np of 2"},{"ID":"275","标识":"NGC275","M标识":"NGC275","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h51m4.5s","赤经D(J2000)":"0.85125","赤纬(J2000)":"-7h3m55s","赤纬D(J2000)":"-7.065277777777777","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"126","详细描述":"pretty bright, pretty small, suddenly much brighter middle, northwestern of 2","简略描述":"vF, S, R, sf of 2"},{"ID":"276","标识":"NGC276","M标识":"NGC276","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h52m6.5s","赤经D(J2000)":"0.8684722222222222","赤纬(J2000)":"-22h40m49s","赤纬D(J2000)":"-22.68027777777778","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.4","方位角":"90","详细描述":"extremely faint, pretty small, extended 265°, 11th magnitude star 3 arcmin to north","简略描述":"eF, pS, E 265°, * 11 n 3'"},{"ID":"277","标识":"NGC277","M标识":"NGC277","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h51m17.2s","赤经D(J2000)":"0.8547777777777777","赤纬(J2000)":"-8h35m47s","赤纬D(J2000)":"-8.596388888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"50","详细描述":"faint, pretty small, 11th magnitude star to northwest","简略描述":"F, pS, * 11 np"},{"ID":"278","标识":"NGC278","M标识":"NGC278","拓展名":"","组件":"","Class":"I 159","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h52m4.5s","赤经D(J2000)":"0.8679166666666667","赤纬(J2000)":"+47h33m3s","赤纬D(J2000)":"47.55083333333333","可见光星等V":"10.8","摄影(蓝光)星等B":"11.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"2.1","短轴(分)":"2","方位角":"12","详细描述":"considerably bright, pretty large, round, 2 stars of 10th magnitude near","简略描述":"cB, pL, R, 2 st 10 nr"},{"ID":"279","标识":"NGC279","M标识":"NGC279","拓展名":"","组件":"","Class":"III 439","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h52m8.9s","赤经D(J2000)":"0.8691388888888889","赤纬(J2000)":"-2h13m6s","赤纬D(J2000)":"-2.2183333333333333","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"158","详细描述":"very faint, small, irregularly round, brighter middle, stellar","简略描述":"vF, S, iR, bM, stellar"},{"ID":"280","标识":"NGC280","M标识":"NGC280","拓展名":"","组件":"","Class":"III 477","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h52m30.2s","赤经D(J2000)":"0.8750555555555556","赤纬(J2000)":"+24h21m3s","赤纬D(J2000)":"24.350833333333334","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"95","详细描述":"extremely faint, small, round, 15th magnitude star 30 arcsec to east","简略描述":"eF, S, R, * 15 f 30\""},{"ID":"281","标识":"NGC281","M标识":"NGC281","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"吃豆人星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h52m53.8s","赤经D(J2000)":"0.8816111111111111","赤纬(J2000)":"+56h37m30s","赤纬D(J2000)":"56.625","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"35","短轴(分)":"30","方位角":"","详细描述":"faint, very large, diffuse, small (faint) triple star on northwestern edge","简略描述":"F, vL, dif, S triple * on np edge"},{"ID":"282","标识":"NGC282","M标识":"NGC282","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h52m42s","赤经D(J2000)":"0.8783333333333334","赤纬(J2000)":"+30h38m20s","赤纬D(J2000)":"30.63888888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.9","方位角":"50","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"283","标识":"NGC283","M标识":"NGC283","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h53m13.1s","赤经D(J2000)":"0.8869722222222222","赤纬(J2000)":"-13h9m48s","赤纬D(J2000)":"-13.163333333333334","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"1.6","短轴(分)":"1","方位角":"154","详细描述":"extremely faint, small, round, 1st of 4","简略描述":"eF, S, R, 1st of 4"},{"ID":"284","标识":"NGC284","M标识":"NGC284","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h53m24.2s","赤经D(J2000)":"0.8900555555555555","赤纬(J2000)":"-13h9m30s","赤纬D(J2000)":"-13.158333333333333","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"4","详细描述":"extremely faint, small, round, 2nd of 4","简略描述":"eF, S, R, 2nd of 4"},{"ID":"285","标识":"NGC285","M标识":"NGC285","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h53m29.8s","赤经D(J2000)":"0.8916111111111111","赤纬(J2000)":"-13h9m37s","赤纬D(J2000)":"-13.160277777777779","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"10","详细描述":"extremely faint, small, round, 3rd of 4","简略描述":"eF, S, R, 3rd of 4"},{"ID":"286","标识":"NGC286","M标识":"NGC286","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h53m30.3s","赤经D(J2000)":"0.8917499999999999","赤纬(J2000)":"-13h6m44s","赤纬D(J2000)":"-13.112222222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"10","详细描述":"extremely faint, small, round, 4th of 4","简略描述":"eF, S, R, 4th of 4"},{"ID":"287","标识":"NGC287","M标识":"NGC287","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h53m28.3s","赤经D(J2000)":"0.8911944444444444","赤纬(J2000)":"+32h28m57s","赤纬D(J2000)":"32.4825","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"21","详细描述":"extremely faint, small, round (perhaps RA (00) 46 52?)","简略描述":"eF, S, R (? RA 46m 52s)"},{"ID":"288","标识":"NGC288","M标识":"NGC288","拓展名":"","组件":"","Class":"VI 20","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"X","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h52m45.5s","赤经D(J2000)":"0.8793055555555556","赤纬(J2000)":"-26h35m51s","赤纬D(J2000)":"-26.5975","可见光星等V":"8.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"13","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, large, a little extended, stars from 12th to 16th magnitude","简略描述":"globular, B, L, lE, st 12…16"},{"ID":"289","标识":"NGC289","M标识":"NGC289","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h52m42.1s","赤经D(J2000)":"0.8783611111111111","赤纬(J2000)":"-31h12m20s","赤纬D(J2000)":"-31.205555555555556","可见光星等V":"11","摄影(蓝光)星等B":"11.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"5.1","短轴(分)":"3.6","方位角":"130","详细描述":"very bright, large, pretty much extended, gradually brighter middle, 11th magnitude star to northwest","简略描述":"vB, L, pmE, gbM, * 11 np"},{"ID":"290","标识":"NGC290","M标识":"NGC290","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h51m14.7s","赤经D(J2000)":"0.8540833333333333","赤纬(J2000)":"-73h9m45s","赤纬D(J2000)":"-73.16250000000001","可见光星等V":"12","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"291","标识":"NGC291","M标识":"NGC291","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h53m29.8s","赤经D(J2000)":"0.8916111111111111","赤纬(J2000)":"-8h46m3s","赤纬D(J2000)":"-8.7675","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"45","详细描述":"very faint, very small, a little extended, almost stellar","简略描述":"vF, vS, lE, alm stellar"},{"ID":"292","标识":"NGC292","M标识":"NGC292","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"小麦哲伦云","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h52m38s","赤经D(J2000)":"0.8772222222222222","赤纬(J2000)":"-72h48m0s","赤纬D(J2000)":"-72.8","可见光星等V":"2.3","摄影(蓝光)星等B":"2.7","B-V":"0.4","表面亮度(mag\/arcmin2)":"14","长轴(分)":"319.1","短轴(分)":"205.1","方位角":"45","详细描述":"a cluster, faint, most extremely large, round, stars from 12th to 18th magnitude","简略描述":"Cl, F, eeL, R, st 12…18"},{"ID":"293","标识":"NGC293","M标识":"NGC293","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h54m16s","赤经D(J2000)":"0.9044444444444445","赤纬(J2000)":"-7h14m8s","赤纬D(J2000)":"-7.235555555555556","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"19","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"294","标识":"NGC294","M标识":"NGC294","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h53m5.7s","赤经D(J2000)":"0.8849166666666667","赤纬(J2000)":"-73h22m50s","赤纬D(J2000)":"-73.38055555555555","可见光星等V":"12.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, round, very gradually a little brighter middle, mottled but not resolved","简略描述":"vF, pL, R, vglbM, r"},{"ID":"295","标识":"NGC295","M标识":"NGC295","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h59m32.3s","赤经D(J2000)":"0.9923055555555556","赤纬(J2000)":"+31h47m53s","赤纬D(J2000)":"31.798055555555557","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, star 10 arcsec north, II 214 to northeast","简略描述":"F, S, R, * 10\" n, II 214 nf"},{"ID":"296","标识":"NGC296","M标识":"NGC296","拓展名":"","组件":"","Class":"II 214","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h55m7.4s","赤经D(J2000)":"0.9187222222222222","赤纬(J2000)":"+31h32m32s","赤纬D(J2000)":"31.542222222222225","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.2","短轴(分)":"1","方位角":"164","详细描述":"faint, a little extended, 10th magnitude star 2 arcmin to northeast","简略描述":"F, lE, * 10 nf 2'"},{"ID":"297","标识":"NGC297","M标识":"NGC297","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h54m58.9s","赤经D(J2000)":"0.9163611111111112","赤纬(J2000)":"-7h21m1s","赤纬D(J2000)":"-7.3502777777777775","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"95","详细描述":"extremely faint","简略描述":"eF"},{"ID":"298","标识":"NGC298","M标识":"NGC298","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h55m2.2s","赤经D(J2000)":"0.9172777777777777","赤纬(J2000)":"-7h20m1s","赤纬D(J2000)":"-7.333611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"0.4","方位角":"90","详细描述":"pretty faint","简略描述":"pF"},{"ID":"299","标识":"NGC299","M标识":"NGC299","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h53m24.7s","赤经D(J2000)":"0.8901944444444444","赤纬(J2000)":"-72h11m47s","赤纬D(J2000)":"-72.19638888888889","可见光星等V":"99","摄影(蓝光)星等B":"11.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"pretty bright, very small, round, gradually a very little brighter middle, mottled but not resolved","简略描述":"pB, vS, R, gvlbR, r"},{"ID":"300","标识":"NGC300","M标识":"NGC300","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"南风车星系","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h54m53.3s","赤经D(J2000)":"0.9148055555555555","赤纬(J2000)":"-37h41m3s","赤纬D(J2000)":"-37.68416666666666","可见光星等V":"8.1","摄影(蓝光)星等B":"8.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"19","短轴(分)":"12.9","方位角":"111","详细描述":"pretty bright, very large, very much irregularly extended, very gradually pretty much brighter middle","简略描述":"pB, vL, vmiE, vgpmbM"},{"ID":"301","标识":"NGC301","M标识":"NGC301","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h56m18.3s","赤经D(J2000)":"0.9384166666666667","赤纬(J2000)":"-10h40m24s","赤纬D(J2000)":"-10.673333333333332","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"70","详细描述":"extremely faint, small, irregularly round, gradually brighter middle, 8th magnitude star 30 seconds of time to west","简略描述":"eF, S, iR, gbM, * 8 p 30s"},{"ID":"302","标识":"NGC302","M标识":"NGC302","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h56m25.2s","赤经D(J2000)":"0.9403333333333334","赤纬(J2000)":"-10h39m44s","赤纬D(J2000)":"-10.662222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"303","标识":"NGC303","M标识":"NGC303","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S+S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h54m54.6s","赤经D(J2000)":"0.9151666666666667","赤纬(J2000)":"-16h39m18s","赤纬D(J2000)":"-16.654999999999998","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"158","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"304","标识":"NGC304","M标识":"NGC304","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h56m6s","赤经D(J2000)":"0.935","赤纬(J2000)":"+24h7m38s","赤纬D(J2000)":"24.127222222222223","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"175","详细描述":"pretty faint, small, round, suddenly a very little brighter middle","简略描述":"pF, S, R, svlbM"},{"ID":"305","标识":"NGC305","M标识":"NGC305","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h56m21s","赤经D(J2000)":"0.9391666666666667","赤纬(J2000)":"+12h3m48s","赤纬D(J2000)":"12.063333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, small, scattered stars","简略描述":"Cl, S, sc st"},{"ID":"306","标识":"NGC306","M标识":"NGC306","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h54m15.1s","赤经D(J2000)":"0.9041944444444444","赤纬(J2000)":"-72h14m33s","赤纬D(J2000)":"-72.2425","可见光星等V":"99","摄影(蓝光)星等B":"12.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"faint, very small","简略描述":"F, vS"},{"ID":"307","标识":"NGC307","M标识":"NGC307","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h56m32.5s","赤经D(J2000)":"0.9423611111111111","赤纬(J2000)":"-1h46m20s","赤纬D(J2000)":"-1.7722222222222221","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"85","详细描述":"pretty faint, small, extended","简略描述":"pF, S, E"},{"ID":"308","标识":"NGC308","M标识":"NGC308","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h56m34.3s","赤经D(J2000)":"0.9428611111111111","赤纬(J2000)":"-1h47m1s","赤纬D(J2000)":"-1.783611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, 1 arcmin southeast of h 77","简略描述":"vF, eS, 1' sf h 77"},{"ID":"309","标识":"NGC309","M标识":"NGC309","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h56m42.6s","赤经D(J2000)":"0.9451666666666667","赤纬(J2000)":"-9h54m51s","赤纬D(J2000)":"-9.914166666666667","可见光星等V":"11.9","摄影(蓝光)星等B":"12.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3","短轴(分)":"2.4","方位角":"175","详细描述":"pretty bright, pretty large, 12th or 13th magnitude star to north","简略描述":"pB, pL, * 12·13 n"},{"ID":"310","标识":"NGC310","M标识":"NGC310","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h56m47.9s","赤经D(J2000)":"0.9466388888888889","赤纬(J2000)":"-1h45m53s","赤纬D(J2000)":"-1.7647222222222223","可见光星等V":"99","摄影(蓝光)星等B":"15.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"stellar","简略描述":"Stellar"},{"ID":"311","标识":"NGC311","M标识":"NGC311","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h57m32.8s","赤经D(J2000)":"0.959111111111111","赤纬(J2000)":"+30h16m49s","赤纬D(J2000)":"30.280277777777776","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"120","详细描述":"pretty faint, very small, round, gradually brighter middle","简略描述":"pF, vS, R, gbM"},{"ID":"312","标识":"NGC312","M标识":"NGC312","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h56m15.7s","赤经D(J2000)":"0.9376944444444445","赤纬(J2000)":"-52h46m59s","赤纬D(J2000)":"-52.783055555555556","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"62","详细描述":"faint, small, round, 12th magnitude star to east","简略描述":"F, S, R, * 12 f"},{"ID":"313","标识":"NGC313","M标识":"NGC313","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h57m45.7s","赤经D(J2000)":"0.9626944444444444","赤纬(J2000)":"+30h22m0s","赤纬D(J2000)":"30.366666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, 1 arcmin northwest of II 210","简略描述":"vF, eS, 1' np II 210"},{"ID":"314","标识":"NGC314","M标识":"NGC314","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h56m52.4s","赤经D(J2000)":"0.9478888888888889","赤纬(J2000)":"-31h57m47s","赤纬D(J2000)":"-31.963055555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"168","详细描述":"extremely faint, very small, round, pretty bright star 2 arcmin to east","简略描述":"eF, vS, R, pB * f 2'"},{"ID":"315","标识":"NGC315","M标识":"NGC315","拓展名":"","组件":"","Class":"II 210","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h57m49s","赤经D(J2000)":"0.9636111111111111","赤纬(J2000)":"+30h21m7s","赤纬D(J2000)":"30.351944444444445","可见光星等V":"11.2","摄影(蓝光)星等B":"12.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3","短轴(分)":"2.5","方位角":"43","详细描述":"pretty bright, pretty large, round, gradually brighter middle, 9th magnitude star 3 arcmin to northeast","简略描述":"pB, pL, R, gbM, * 9 nf 3'"},{"ID":"316","标识":"NGC316","M标识":"NGC316","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h57m52.4s","赤经D(J2000)":"0.9645555555555555","赤纬(J2000)":"+30h21m16s","赤纬D(J2000)":"30.354444444444447","可见光星等V":"99","摄影(蓝光)星等B":"14.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, stellar, 1 arcmin east of II 210","简略描述":"vF, eS, stellar, 1' f II 210"},{"ID":"317","标识":"NGC317","M标识":"NGC317","拓展名":"B","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h57m40.5s","赤经D(J2000)":"0.9612499999999999","赤纬(J2000)":"+43h47m31s","赤纬D(J2000)":"43.79194444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"105","详细描述":"most extremely faint, pretty small, a little extended, double star close to east","简略描述":"eeF, pS, lE, D * close f"},{"ID":"318","标识":"NGC318","M标识":"NGC318","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h58m5.2s","赤经D(J2000)":"0.9681111111111111","赤纬(J2000)":"+30h25m34s","赤纬D(J2000)":"30.426111111111112","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"10","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"319","标识":"NGC319","M标识":"NGC319","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h56m57.6s","赤经D(J2000)":"0.9493333333333334","赤纬(J2000)":"-43h50m19s","赤纬D(J2000)":"-43.83861111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.8","方位角":"150","详细描述":"extremely faint, very small, round, a little brighter middle","简略描述":"eF, vS, R, lbM"},{"ID":"320","标识":"NGC320","M标识":"NGC320","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h58m46.4s","赤经D(J2000)":"0.9795555555555555","赤纬(J2000)":"-20h50m25s","赤纬D(J2000)":"-20.840277777777775","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"159","详细描述":"very faint, pretty small, extended 160°, 10th magnitude star to north","简略描述":"vF, pS, E 160°, * 10 n"},{"ID":"321","标识":"NGC321","M标识":"NGC321","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h57m39.2s","赤经D(J2000)":"0.9608888888888888","赤纬(J2000)":"-5h5m9s","赤纬D(J2000)":"-5.085833333333333","可见光星等V":"15","摄影(蓝光)星等B":"15.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"95","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"322","标识":"NGC322","M标识":"NGC322","拓展名":"","组件":"1","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h57m10s","赤经D(J2000)":"0.9527777777777777","赤纬(J2000)":"-43h43m37s","赤纬D(J2000)":"-43.72694444444445","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"153","详细描述":"very faint, very small, round, a little brighter middle, 3 stars to west","简略描述":"vF, vS, R, lbM, 3 st p"},{"ID":"323","标识":"NGC323","M标识":"NGC323","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h56m41.7s","赤经D(J2000)":"0.9449166666666666","赤纬(J2000)":"-52h58m33s","赤纬D(J2000)":"-52.975833333333334","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"175","详细描述":"pretty faint, small, round, brighter middle, western of 2","简略描述":"pF, S, R, bM, p of 2"},{"ID":"324","标识":"NGC324","M标识":"NGC324","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h57m14.6s","赤经D(J2000)":"0.9540555555555555","赤纬(J2000)":"-40h57m34s","赤纬D(J2000)":"-40.95944444444445","可见光星等V":"12.9","摄影(蓝光)星等B":"14","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"95","详细描述":"questionable?, faint, small, stellar","简略描述":"(?), F, S, stellar"},{"ID":"325","标识":"NGC325","M标识":"NGC325","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h57m47.9s","赤经D(J2000)":"0.9633055555555555","赤纬(J2000)":"-5h6m45s","赤纬D(J2000)":"-5.1125","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.2","方位角":"91","详细描述":"extremely faint, very small","简略描述":"vF, vS"},{"ID":"326","标识":"NGC326","M标识":"NGC326","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h58m22.6s","赤经D(J2000)":"0.9729444444444445","赤纬(J2000)":"+26h51m57s","赤纬D(J2000)":"26.865833333333335","可见光星等V":"13.2","摄影(蓝光)星等B":"14.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"faint, a little extended, 9th or 10th magnitude star to southeast","简略描述":"F, lE, * 9·10 sf"},{"ID":"327","标识":"NGC327","M标识":"NGC327","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h57m55.2s","赤经D(J2000)":"0.9653333333333333","赤纬(J2000)":"-5h7m51s","赤纬D(J2000)":"-5.130833333333333","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"175","详细描述":"faint, small, extended","简略描述":"F, S, E"},{"ID":"328","标识":"NGC328","M标识":"NGC328","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h56m57.3s","赤经D(J2000)":"0.94925","赤纬(J2000)":"-52h55m25s","赤纬D(J2000)":"-52.92361111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.6","短轴(分)":"0.5","方位角":"100","详细描述":"very faint, a little extended, very gradually brighter middle, eastern of 2","简略描述":"vF, lE, vgbM, f of 2"},{"ID":"329","标识":"NGC329","M标识":"NGC329","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h58m1.4s","赤经D(J2000)":"0.9670555555555556","赤纬(J2000)":"-5h4m14s","赤纬D(J2000)":"-5.070555555555555","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"20","详细描述":"faint, extended","简略描述":"F, E"},{"ID":"330","标识":"NGC330","M标识":"NGC330","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h56m19.8s","赤经D(J2000)":"0.9388333333333333","赤纬(J2000)":"-72h27m44s","赤纬D(J2000)":"-72.46222222222222","可见光星等V":"9.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.4","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very bright, small, a little extended, stars from 13th to 15th magnitude","简略描述":"globular, vB, S, lE, st 13…15"},{"ID":"331","标识":"NGC331","M标识":"NGC331","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h47m6.7s","赤经D(J2000)":"0.7851944444444444","赤纬(J2000)":"-2h43m52s","赤纬D(J2000)":"-2.7311111111111113","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"135","详细描述":"extremely faint, very small, round, a little brighter middle, 12th magnitude star 3 arcmin northeast","简略描述":"eF, vS, R, lbM, * 12 nf 3'"},{"ID":"332","标识":"NGC332","M标识":"NGC332","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h58m49s","赤经D(J2000)":"0.9802777777777778","赤纬(J2000)":"+7h6m40s","赤纬D(J2000)":"7.111111111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.5","方位角":"165","详细描述":"very faint, small, round, several stars near to south","简略描述":"vF, S, R, sev st nr s"},{"ID":"333","标识":"NGC333","M标识":"NGC333","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h58m51.3s","赤经D(J2000)":"0.9809166666666667","赤纬(J2000)":"-16h28m8s","赤纬D(J2000)":"-16.468888888888888","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"119","详细描述":"no description","简略描述":"No description"},{"ID":"334","标识":"NGC334","M标识":"NGC334","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h58m49.8s","赤经D(J2000)":"0.9805","赤纬(J2000)":"-35h6m56s","赤纬D(J2000)":"-35.11555555555556","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"1","详细描述":"very faint, small, round, gradually a little brighter middle, 2 stars of 11th magnitude to south","简略描述":"vF, S, R, glbM, 2 st 11 s"},{"ID":"335","标识":"NGC335","M标识":"NGC335","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h59m19.6s","赤经D(J2000)":"0.9887777777777778","赤纬(J2000)":"-18h14m3s","赤纬D(J2000)":"-18.234166666666667","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"137","详细描述":"very faint, pretty small, extended, brighter middle","简略描述":"vF, pS, E, bM"},{"ID":"336","标识":"NGC336","M标识":"NGC336","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h58m3s","赤经D(J2000)":"0.9675","赤纬(J2000)":"-18h23m9s","赤纬D(J2000)":"-18.385833333333334","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"41","详细描述":"very faint, very small, round, suddenly brighter middle","简略描述":"vF, vS, R, sbM"},{"ID":"337","标识":"NGC337","M标识":"NGC337","拓展名":"","组件":"","Class":"II 433","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h59m49.9s","赤经D(J2000)":"0.9971944444444444","赤纬(J2000)":"-7h34m41s","赤纬D(J2000)":"-7.578055555555555","可见光星等V":"11.6","摄影(蓝光)星等B":"12.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3","短轴(分)":"1.8","方位角":"141","详细描述":"pretty faint, large, extended, gradually a little brighter middle, 10th magnitude star 21 seconds of time to the east","简略描述":"pF, L, E, glbM, * 10 f 21s"},{"ID":"338","标识":"NGC338","M标识":"NGC338","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h0m36.5s","赤经D(J2000)":"1.010138888888889","赤纬(J2000)":"+30h40m9s","赤纬D(J2000)":"30.66916666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"109","详细描述":"very faint, very small, irregular figure, brighter middle","简略描述":"vF, vS, iF, bM"},{"ID":"339","标识":"NGC339","M标识":"NGC339","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h57m45s","赤经D(J2000)":"0.9624999999999999","赤纬(J2000)":"-74h28m20s","赤纬D(J2000)":"-74.47222222222223","可见光星等V":"12.8","摄影(蓝光)星等B":"12","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.2","短轴(分)":"","方位角":"","详细描述":"faint, large, round, very gradually brighter middle","简略描述":"F, L, R, vgbM"},{"ID":"340","标识":"NGC340","M标识":"NGC340","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h0m34.8s","赤经D(J2000)":"1.0096666666666667","赤纬(J2000)":"-6h51m58s","赤纬D(J2000)":"-6.866111111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"65","详细描述":"very faint, small, extended","简略描述":"vF, S, E"},{"ID":"341","标识":"NGC341","M标识":"NGC341","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h0m45.8s","赤经D(J2000)":"1.0127222222222223","赤纬(J2000)":"-9h11m10s","赤纬D(J2000)":"-9.186111111111112","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"55","详细描述":"faint, pretty large, round, a little brighter middle, mottled but not resolved","简略描述":"F, pL, R, lbM, r"},{"ID":"342","标识":"NGC342","M标识":"NGC342","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h0m49.8s","赤经D(J2000)":"1.0138333333333334","赤纬(J2000)":"-6h46m20s","赤纬D(J2000)":"-6.772222222222222","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"107","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"343","标识":"NGC343","M标识":"NGC343","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h58m23.9s","赤经D(J2000)":"0.9733055555555555","赤纬(J2000)":"-23h13m28s","赤纬D(J2000)":"-23.224444444444444","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"10","详细描述":"extremely faint, very small, irregularly round, suddenly brighter middle and nucleus (perhaps a star?)","简略描述":"eF, vS, iR, sbMN (? *)"},{"ID":"344","标识":"NGC344","M标识":"NGC344","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h58m25.4s","赤经D(J2000)":"0.9737222222222223","赤纬(J2000)":"-23h13m44s","赤纬D(J2000)":"-23.228888888888886","可见光星等V":"16.1","摄影(蓝光)星等B":"16.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"45","详细描述":"extremely faint, very small, irregularly round, suddenly brighter middle and nucleus (perhaps a star?)","简略描述":"eF, vS, iR, sbMN (? *)"},{"ID":"345","标识":"NGC345","M标识":"NGC345","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h1m22s","赤经D(J2000)":"1.0227777777777778","赤纬(J2000)":"-6h53m3s","赤纬D(J2000)":"-6.884166666666666","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"138","详细描述":"very faint, very small, gradually brighter middle","简略描述":"vF, vS, gbM"},{"ID":"346","标识":"NGC346","M标识":"NGC346","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h59m5s","赤经D(J2000)":"0.9847222222222222","赤纬(J2000)":"-72h10m38s","赤纬D(J2000)":"-72.17722222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"14","短轴(分)":"11","方位角":"","详细描述":"bright, large, very irregular figure, much brighter middle similar to double star, mottled but not resolved","简略描述":"B, L, viF, mbMD *, r"},{"ID":"347","标识":"NGC347","M标识":"NGC347","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h1m35.1s","赤经D(J2000)":"1.0264166666666665","赤纬(J2000)":"-6h44m1s","赤纬D(J2000)":"-6.733611111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"118","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"348","标识":"NGC348","M标识":"NGC348","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h0m51.8s","赤经D(J2000)":"1.0143888888888888","赤纬(J2000)":"-53h14m42s","赤纬D(J2000)":"-53.245","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"94","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"349","标识":"NGC349","M标识":"NGC349","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h1m50.7s","赤经D(J2000)":"1.0307499999999998","赤纬(J2000)":"-6h47m59s","赤纬D(J2000)":"-6.799722222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"49","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"350","标识":"NGC350","M标识":"NGC350","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h1m56.6s","赤经D(J2000)":"1.0323888888888888","赤纬(J2000)":"-6h47m43s","赤纬D(J2000)":"-6.795277777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"82","详细描述":"extremely faint","简略描述":"eF"},{"ID":"351","标识":"NGC351","M标识":"NGC351","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h1m57.8s","赤经D(J2000)":"1.032722222222222","赤纬(J2000)":"-1h56m11s","赤纬D(J2000)":"-1.936388888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"142","详细描述":"extremely faint, pretty small, northwestern of 2","简略描述":"eF, pS, np of 2"},{"ID":"352","标识":"NGC352","M标识":"NGC352","拓展名":"","组件":"","Class":"III 191","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h2m9.1s","赤经D(J2000)":"1.0358611111111111","赤纬(J2000)":"-4h14m43s","赤纬D(J2000)":"-4.245277777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.4","短轴(分)":"0.8","方位角":"165","详细描述":"pretty faint, small, irregularly extended, 8th magnitude star 97 seconds of time to east","简略描述":"pF, S, iE, * 8 f 97s"},{"ID":"353","标识":"NGC353","M标识":"NGC353","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h2m24.6s","赤经D(J2000)":"1.0401666666666667","赤纬(J2000)":"-1h57m25s","赤纬D(J2000)":"-1.9569444444444444","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"26","详细描述":"extremely faint, pretty small, round, southeastern of 2","简略描述":"eF, pS, R, sf of 2"},{"ID":"354","标识":"NGC354","M标识":"NGC354","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h3m16.3s","赤经D(J2000)":"1.0545277777777777","赤纬(J2000)":"+22h20m34s","赤纬D(J2000)":"22.342777777777776","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"29","详细描述":"very faint, very small, round, very small (faint) star involved, 14th magnitude star close to west","简略描述":"vF, vS, R, vS * inv, * 14 close p"},{"ID":"355","标识":"NGC355","M标识":"NGC355","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h3m6.9s","赤经D(J2000)":"1.0519166666666666","赤纬(J2000)":"-6h19m25s","赤纬D(J2000)":"-6.323611111111111","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1","短轴(分)":"0.4","方位角":"62","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"356","标识":"NGC356","M标识":"NGC356","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h3m7s","赤经D(J2000)":"1.0519444444444446","赤纬(J2000)":"-6h59m17s","赤纬D(J2000)":"-6.9880555555555555","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"53","详细描述":"very faint, small, irregularly round","简略描述":"vF, S, iR"},{"ID":"357","标识":"NGC357","M标识":"NGC357","拓展名":"","组件":"","Class":"II 434","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h3m21.8s","赤经D(J2000)":"1.0560555555555555","赤纬(J2000)":"-6h20m21s","赤纬D(J2000)":"-6.339166666666666","可见光星等V":"12","摄影(蓝光)星等B":"13.1","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.5","短轴(分)":"1.7","方位角":"33","详细描述":"faint, small, irregularly round, suddenly brighter middle, 14th magnitude star 20 arcsec to northeast","简略描述":"F, S, iR, sbM, * 14 nf 20\""},{"ID":"358","标识":"NGC358","M标识":"NGC358","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h5m10.8s","赤经D(J2000)":"1.0863333333333332","赤纬(J2000)":"+62h1m16s","赤纬D(J2000)":"62.02111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.5","短轴(分)":"","方位角":"","详细描述":"a cluster, very little rich","简略描述":"Cl, vl Ri"},{"ID":"359","标识":"NGC359","M标识":"NGC359","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h4m16.9s","赤经D(J2000)":"1.071361111111111","赤纬(J2000)":"-0h45m52s","赤纬D(J2000)":"-0.7644444444444445","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"135","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"360","标识":"NGC360","M标识":"NGC360","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h2m51.5s","赤经D(J2000)":"1.047638888888889","赤纬(J2000)":"-65h36m32s","赤纬D(J2000)":"-65.60888888888888","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.6","短轴(分)":"0.5","方位角":"144","详细描述":"extremely faint, very much extended 145°, a very little brighter middle","简略描述":"eF, vmE 145°, vlbM"},{"ID":"361","标识":"NGC361","M标识":"NGC361","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h2m11.1s","赤经D(J2000)":"1.0364166666666668","赤纬(J2000)":"-71h36m24s","赤纬D(J2000)":"-71.60666666666665","可见光星等V":"99","摄影(蓝光)星等B":"12","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.6","短轴(分)":"","方位角":"","详细描述":"very very faint, pretty large, very little extended, very gradually brighter middle","简略描述":"vvF, pL, vlE, vgbM"},{"ID":"362","标识":"NGC362","M标识":"NGC362","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"III","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h3m14.3s","赤经D(J2000)":"1.0539722222222223","赤纬(J2000)":"-70h50m52s","赤纬D(J2000)":"-70.84777777777778","可见光星等V":"6.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"14","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very bright, very large, very compressed, very much brighter middle, stars from 13th to 14th magnitude","简略描述":"globular, vB, vL, vC, vmbM, st 13-14"},{"ID":"363","标识":"NGC363","M标识":"NGC363","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h6m15.7s","赤经D(J2000)":"1.1043611111111111","赤纬(J2000)":"-16h32m32s","赤纬D(J2000)":"-16.542222222222225","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"49","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"364","标识":"NGC364","M标识":"NGC364","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h4m40.8s","赤经D(J2000)":"1.078","赤纬(J2000)":"-0h48m10s","赤纬D(J2000)":"-0.8027777777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"30","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"365","标识":"NGC365","M标识":"NGC365","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h4m18.6s","赤经D(J2000)":"1.0718333333333334","赤纬(J2000)":"-35h7m20s","赤纬D(J2000)":"-35.12222222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.6","方位角":"5","详细描述":"faint, small, round, gradually a little brighter middle","简略描述":"F, S, R, glbM"},{"ID":"366","标识":"NGC366","M标识":"NGC366","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h6m25.9s","赤经D(J2000)":"1.1071944444444446","赤纬(J2000)":"+62h13m44s","赤纬D(J2000)":"62.22888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, small","简略描述":"Cl, S"},{"ID":"367","标识":"NGC367","M标识":"NGC367","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h5m48.9s","赤经D(J2000)":"1.0969166666666665","赤纬(J2000)":"-12h7m42s","赤纬D(J2000)":"-12.128333333333334","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"15","详细描述":"extremely faint, pretty small, extended 175°, brighter on the north side, 3 stars of 12th magnitude to northwest","简略描述":"eF, pS, E 175°, bn, 3 st 12 np"},{"ID":"368","标识":"NGC368","M标识":"NGC368","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h4m21.9s","赤经D(J2000)":"1.07275","赤纬(J2000)":"-43h16m34s","赤纬D(J2000)":"-43.27611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"169","详细描述":"extremely faint, very small, 7th or 8th magnitude star 3 arcmin to southwest","简略描述":"eF, vS, * 7·8 sp 3'"},{"ID":"369","标识":"NGC369","M标识":"NGC369","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h5m8.8s","赤经D(J2000)":"1.0857777777777777","赤纬(J2000)":"-17h45m33s","赤纬D(J2000)":"-17.759166666666665","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.8","方位角":"52","详细描述":"very faint, very small, round, gradually brighter middle","简略描述":"vF, vS, R, gbM"},{"ID":"370","标识":"NGC370","M标识":"NGC370","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h6m44.6s","赤经D(J2000)":"1.1123888888888889","赤纬(J2000)":"+32h25m45s","赤纬D(J2000)":"32.42916666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, 13th magnitude star 15 arcsec to south, diffuse","简略描述":"vF, * 13 s 15\", dif"},{"ID":"371","标识":"NGC371","M标识":"NGC371","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h3m26s","赤经D(J2000)":"1.0572222222222223","赤纬(J2000)":"-72h3m54s","赤纬D(J2000)":"-72.065","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7.5","短轴(分)":"","方位角":"","详细描述":"a cluster, faint, large, round, pretty compressed, stars from 14th to 16th magnitude","简略描述":"Cl, F, L, R, pC, st 14…16"},{"ID":"372","标识":"NGC372","M标识":"NGC372","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Dup","形态":"*3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h6m44.6s","赤经D(J2000)":"1.1123888888888889","赤纬(J2000)":"+32h25m45s","赤纬D(J2000)":"32.42916666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, 13th magnitude star 15 arcsec to south, diffuse","简略描述":"Stellar, mbM, r"},{"ID":"373","标识":"NGC373","M标识":"NGC373","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h6m58.3s","赤经D(J2000)":"1.1161944444444445","赤纬(J2000)":"+32h18m32s","赤纬D(J2000)":"32.30888888888889","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"374","标识":"NGC374","M标识":"NGC374","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h7m5.8s","赤经D(J2000)":"1.1182777777777777","赤纬(J2000)":"+32h47m41s","赤纬D(J2000)":"32.79472222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"175","详细描述":"faint, small, between two 15th magnitude stars","简略描述":"F, S, bet 2 st 15"},{"ID":"375","标识":"NGC375","M标识":"NGC375","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"双鱼座云","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h7m5.8s","赤经D(J2000)":"1.1182777777777777","赤纬(J2000)":"+32h20m55s","赤纬D(J2000)":"32.34861111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"376","标识":"NGC376","M标识":"NGC376","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h3m53.4s","赤经D(J2000)":"1.0648333333333333","赤纬(J2000)":"-72h49m26s","赤纬D(J2000)":"-72.82388888888889","可见光星等V":"10.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, small, round","简略描述":"globular, B, S, R"},{"ID":"377","标识":"NGC377","M标识":"NGC377","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h6m35.1s","赤经D(J2000)":"1.10975","赤纬(J2000)":"-20h19m53s","赤纬D(J2000)":"-20.33138888888889","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"30","详细描述":"very faint, very small, much extended, suddenly brighter middle and nucleus","简略描述":"vF, vS, mE, sbMN"},{"ID":"378","标识":"NGC378","M标识":"NGC378","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h6m12s","赤经D(J2000)":"1.1033333333333335","赤纬(J2000)":"-30h10m41s","赤纬D(J2000)":"-30.178055555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"105","详细描述":"very faint, small, round, gradually brighter middle","简略描述":"vF, S, R, gbM"},{"ID":"379","标识":"NGC379","M标识":"NGC379","拓展名":"","组件":"","Class":"II 215","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h7m15.7s","赤经D(J2000)":"1.1210277777777777","赤纬(J2000)":"+32h31m13s","赤纬D(J2000)":"32.52027777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"0","详细描述":"very faint, very small","简略描述":"pF, S, R, bM"},{"ID":"380","标识":"NGC380","M标识":"NGC380","拓展名":"","组件":"","Class":"II 216","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h7m17.6s","赤经D(J2000)":"1.1215555555555556","赤纬(J2000)":"+32h28m58s","赤纬D(J2000)":"32.48277777777778","可见光星等V":"12.5","摄影(蓝光)星等B":"13.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"pretty faint, small, round, suddenly brighter middle","简略描述":"pF, S, R, sbM"},{"ID":"381","标识":"NGC381","M标识":"NGC381","拓展名":"","组件":"","Class":"VIII 64","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h8m20s","赤经D(J2000)":"1.1388888888888888","赤纬(J2000)":"+61h35m0s","赤纬D(J2000)":"61.583333333333336","可见光星等V":"9.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty compressed","简略描述":"Cl, pC"},{"ID":"382","标识":"NGC382","M标识":"NGC382","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h7m23.9s","赤经D(J2000)":"1.1233055555555556","赤纬(J2000)":"+32h24m12s","赤纬D(J2000)":"32.40333333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, small, round, southwestern of double nebula","简略描述":"vF, S, R, sp of D neb"},{"ID":"383","标识":"NGC383","M标识":"NGC383","拓展名":"","组件":"","Class":"II 217","业余排名":"14","中文名":"NGC 383星系群","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h7m24.9s","赤经D(J2000)":"1.1235833333333334","赤纬(J2000)":"+32h24m44s","赤纬D(J2000)":"32.41222222222222","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2","短轴(分)":"1.7","方位角":"30","详细描述":"pretty faint, pretty large, round, gradually brighter middle, northeastern of double nebula","简略描述":"pF, pL, R, gbM, nf of D neb"},{"ID":"384","标识":"NGC384","M标识":"NGC384","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h7m25s","赤经D(J2000)":"1.1236111111111111","赤纬(J2000)":"+32h17m34s","赤纬D(J2000)":"32.29277777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"135","详细描述":"pretty faint, pretty small, southwestern of 2","简略描述":"pF, pS, sp of 2"},{"ID":"385","标识":"NGC385","M标识":"NGC385","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h7m27.2s","赤经D(J2000)":"1.1242222222222222","赤纬(J2000)":"+32h19m10s","赤纬D(J2000)":"32.31944444444445","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"1","方位角":"147","详细描述":"pretty faint, pretty small, round, northeastern of 2","简略描述":"pF, pS, R, nf of 2"},{"ID":"386","标识":"NGC386","M标识":"NGC386","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h7m31.2s","赤经D(J2000)":"1.1253333333333333","赤纬(J2000)":"+32h21m45s","赤纬D(J2000)":"32.362500000000004","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"9","详细描述":"considerably faint, small, round","简略描述":"cF, S, R"},{"ID":"387","标识":"NGC387","M标识":"NGC387","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h7m33s","赤经D(J2000)":"1.1258333333333335","赤纬(J2000)":"+32h23m27s","赤纬D(J2000)":"32.39083333333333","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"388","标识":"NGC388","M标识":"NGC388","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h7m47.1s","赤经D(J2000)":"1.12975","赤纬(J2000)":"+32h18m38s","赤纬D(J2000)":"32.31055555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"15.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"165","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"389","标识":"NGC389","M标识":"NGC389","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h8m29.8s","赤经D(J2000)":"1.1416111111111111","赤纬(J2000)":"+39h41m42s","赤纬D(J2000)":"39.69499999999999","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"54","详细描述":"extremely faint, extremely small, round, star near","简略描述":"eF, eS, R, * nr"},{"ID":"390","标识":"NGC390","M标识":"NGC390","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h7m53.7s","赤经D(J2000)":"1.1315833333333334","赤纬(J2000)":"+32h26m1s","赤纬D(J2000)":"32.433611111111105","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"391","标识":"NGC391","M标识":"NGC391","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h7m22.5s","赤经D(J2000)":"1.1229166666666668","赤纬(J2000)":"+0h55m33s","赤纬D(J2000)":"0.9258333333333333","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"45","详细描述":"faint, small, mottled but not resolved (Auwers 9)","简略描述":"F, S, r (Auw. 9)"},{"ID":"392","标识":"NGC392","M标识":"NGC392","拓展名":"","组件":"","Class":"II 218","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h8m23.3s","赤经D(J2000)":"1.1398055555555555","赤纬(J2000)":"+33h8m0s","赤纬D(J2000)":"33.13333333333333","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"50","详细描述":"faint, very small, round, much brighter middle, between 2 stars","简略描述":"F, vS, R, mbM, bet 2 st"},{"ID":"393","标识":"NGC393","M标识":"NGC393","拓展名":"","组件":"","Class":"I 54","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h8m36.9s","赤经D(J2000)":"1.1435833333333334","赤纬(J2000)":"+39h38m38s","赤纬D(J2000)":"39.64388888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"29","详细描述":"faint, very small, very little extended, gradually brighter middle, four small (faint) stars near","简略描述":"F, vS, vlE, gbM, 4 S st nr"},{"ID":"394","标识":"NGC394","M标识":"NGC394","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h8m26.1s","赤经D(J2000)":"1.1405833333333333","赤纬(J2000)":"+33h8m52s","赤纬D(J2000)":"33.147777777777776","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"129","详细描述":"faint, small, 50 arcsec northeast of II 218","简略描述":"F, S, 50\" nf II 218"},{"ID":"395","标识":"NGC395","M标识":"NGC395","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h5m7.3s","赤经D(J2000)":"1.085361111111111","赤纬(J2000)":"-71h59m39s","赤纬D(J2000)":"-71.99416666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"17","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, round, gradually a little brighter middle","简略描述":"vF, pL, R, glbM"},{"ID":"396","标识":"NGC396","M标识":"NGC396","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h8m8.5s","赤经D(J2000)":"1.1356944444444443","赤纬(J2000)":"+4h31m51s","赤纬D(J2000)":"4.530833333333334","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"70","详细描述":"extremely faint, small, a little extended","简略描述":"eF, S, lE"},{"ID":"397","标识":"NGC397","M标识":"NGC397","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h8m31s","赤经D(J2000)":"1.1419444444444444","赤纬(J2000)":"+33h6m35s","赤纬D(J2000)":"33.109722222222224","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"54","详细描述":"extremely faint, small, round, very faint star to west","简略描述":"eF, S, R, vF * p"},{"ID":"398","标识":"NGC398","M标识":"NGC398","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h8m53.6s","赤经D(J2000)":"1.1482222222222223","赤纬(J2000)":"+32h30m54s","赤纬D(J2000)":"32.515","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"144","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"399","标识":"NGC399","M标识":"NGC399","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h8m59.1s","赤经D(J2000)":"1.14975","赤纬(J2000)":"+32h38m1s","赤纬D(J2000)":"32.63361111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"40","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"400","标识":"NGC400","M标识":"NGC400","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h9m2.5s","赤经D(J2000)":"1.1506944444444445","赤纬(J2000)":"+32h43m59s","赤纬D(J2000)":"32.73305555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, GC 217 to east","简略描述":"eF, vS, GC 217 f"},{"ID":"401","标识":"NGC401","M标识":"NGC401","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h9m7.7s","赤经D(J2000)":"1.1521388888888888","赤纬(J2000)":"+32h45m36s","赤纬D(J2000)":"32.76","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, stellar, 217 to east","简略描述":"eF, stellar, 217 f"},{"ID":"402","标识":"NGC402","M标识":"NGC402","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h9m13.4s","赤经D(J2000)":"1.153722222222222","赤纬(J2000)":"+32h48m21s","赤纬D(J2000)":"32.80583333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, round, 217 three arcmin to south","简略描述":"eF, vS, R, 217 s 3'"},{"ID":"403","标识":"NGC403","M标识":"NGC403","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h9m14.2s","赤经D(J2000)":"1.1539444444444444","赤纬(J2000)":"+32h45m6s","赤纬D(J2000)":"32.751666666666665","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"86","详细描述":"very faint, pretty small, considerably extended, 11th magnitude star 85 arcsec to south","简略描述":"vF, pS, cE, * 11 s 85\""},{"ID":"404","标识":"NGC404","M标识":"NGC404","拓展名":"","组件":"","Class":"II 224","业余排名":"6","中文名":"奎宿九之魂","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h9m26.9s","赤经D(J2000)":"1.1574722222222222","赤纬(J2000)":"+35h43m6s","赤纬D(J2000)":"35.718333333333334","可见光星等V":"10.3","摄影(蓝光)星等B":"11.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.5","短轴(分)":"3.5","方位角":"","详细描述":"pretty bright, considerably large, round, gradually brighter middle, β Andromedae to southeast","简略描述":"pB, cL, R, gbM, β Andr. sf"},{"ID":"405","标识":"NGC405","M标识":"NGC405","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h8m33.6s","赤经D(J2000)":"1.1426666666666667","赤纬(J2000)":"-46h40m6s","赤纬D(J2000)":"-46.66833333333333","可见光星等V":"99","摄影(蓝光)星等B":"7.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely small, stellar, = 7th magnitude star","简略描述":"eS, stellar, = * 7m"},{"ID":"406","标识":"NGC406","M标识":"NGC406","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h7m24.4s","赤经D(J2000)":"1.1234444444444445","赤纬(J2000)":"-69h52m34s","赤纬D(J2000)":"-69.8761111111111","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.6","短轴(分)":"1","方位角":"160","详细描述":"faint, very large, round, very gradually a little brighter middle","简略描述":"F, vL, R, vglbM"},{"ID":"407","标识":"NGC407","M标识":"NGC407","拓展名":"","组件":"","Class":"II 219","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h10m36.5s","赤经D(J2000)":"1.1768055555555557","赤纬(J2000)":"+33h7m31s","赤纬D(J2000)":"33.125277777777775","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"0.4","方位角":"0","详细描述":"very faint, very small, southwestern of 2","简略描述":"vF, vS, sp of 2"},{"ID":"408","标识":"NGC408","M标识":"NGC408","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h10m51s","赤经D(J2000)":"1.1808333333333334","赤纬(J2000)":"+33h9m8s","赤纬D(J2000)":"33.15222222222222","可见光星等V":"99","摄影(蓝光)星等B":"14.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, (WH) II 220 eight seconds of time to east","简略描述":"vF, vS, II 220 f 8s"},{"ID":"409","标识":"NGC409","M标识":"NGC409","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h9m33.2s","赤经D(J2000)":"1.1592222222222222","赤纬(J2000)":"-35h48m20s","赤纬D(J2000)":"-35.80555555555555","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"174","详细描述":"extremely faint, small, round, very small (faint) star near","简略描述":"eF, S, R, vS * nr"},{"ID":"410","标识":"NGC410","M标识":"NGC410","拓展名":"","组件":"","Class":"II 220","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"cD","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h10m58.8s","赤经D(J2000)":"1.183","赤纬(J2000)":"+33h9m9s","赤纬D(J2000)":"33.152499999999996","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.4","短轴(分)":"1.3","方位角":"30","详细描述":"pretty bright, pretty large, northeastern of 2","简略描述":"pB, pL, nf of 2"},{"ID":"411","标识":"NGC411","M标识":"NGC411","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h7m55.7s","赤经D(J2000)":"1.132138888888889","赤纬(J2000)":"-71h46m7s","赤纬D(J2000)":"-71.76861111111111","可见光星等V":"12.2","摄影(蓝光)星等B":"11","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.3","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large, round, gradually a very little brighter middle","简略描述":"eF, pL, R, gvlbM"},{"ID":"412","标识":"NGC412","M标识":"NGC412","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h10m20s","赤经D(J2000)":"1.1722222222222223","赤纬(J2000)":"-20h0m54s","赤纬D(J2000)":"-20.015","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, round, suddenly brighter middle and nucleus (nebulous?)","简略描述":"vF, eS, R, sbMN (Neb?)"},{"ID":"413","标识":"NGC413","M标识":"NGC413","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h12m31.3s","赤经D(J2000)":"1.2086944444444443","赤纬(J2000)":"-2h47m36s","赤纬D(J2000)":"-2.793333333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"151","详细描述":"extremely faint, pretty small, very little extended","简略描述":"eF, pS, vlE"},{"ID":"414","标识":"NGC414","M标识":"NGC414","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h11m17.6s","赤经D(J2000)":"1.1882222222222223","赤纬(J2000)":"+33h6m49s","赤纬D(J2000)":"33.11361111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"35","详细描述":"very faint, small, irregularly round, much brighter middle, II 220 to northwest","简略描述":"vF, S, iR, mbM, II 220 np"},{"ID":"415","标识":"NGC415","M标识":"NGC415","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h10m5.5s","赤经D(J2000)":"1.1681944444444445","赤纬(J2000)":"-35h29m25s","赤纬D(J2000)":"-35.49027777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"55","详细描述":"very faint, small, round, gradually a little brighter middle","简略描述":"vF, S, R, glbM"},{"ID":"416","标识":"NGC416","M标识":"NGC416","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h7m58.5s","赤经D(J2000)":"1.1329166666666668","赤纬(J2000)":"-72h21m25s","赤纬D(J2000)":"-72.35694444444444","可见光星等V":"12.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, round, gradually brighter middle","简略描述":"F, pS, R, gbM"},{"ID":"417","标识":"NGC417","M标识":"NGC417","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h11m5.5s","赤经D(J2000)":"1.1848611111111111","赤纬(J2000)":"-18h8m55s","赤纬D(J2000)":"-18.148611111111112","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"55","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"418","标识":"NGC418","M标识":"NGC418","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h10m35.6s","赤经D(J2000)":"1.1765555555555556","赤纬(J2000)":"-30h13m16s","赤纬D(J2000)":"-30.22111111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2","短轴(分)":"1.7","方位角":"12","详细描述":"faint, pretty large, round, very gradually a little brighter middle, western of 2","简略描述":"F, pL, R, vglbM, p of 2"},{"ID":"419","标识":"NGC419","M标识":"NGC419","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h8m17.2s","赤经D(J2000)":"1.138111111111111","赤纬(J2000)":"-72h53m0s","赤纬D(J2000)":"-72.88333333333334","可见光星等V":"11.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.4","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, round, gradually brighter middle","简略描述":"pB, pL, R, gbM"},{"ID":"420","标识":"NGC420","M标识":"NGC420","拓展名":"","组件":"","Class":"III 154","业余排名":"15","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h12m14.4s","赤经D(J2000)":"1.204","赤纬(J2000)":"+32h7m25s","赤纬D(J2000)":"32.12361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, round, brighter middle","简略描述":"eF, vS (only seen by H)"},{"ID":"421","标识":"NGC421","M标识":"NGC421","拓展名":"","组件":"","Class":"III 155","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h12m9.6s","赤经D(J2000)":"1.2026666666666666","赤纬(J2000)":"+32h7m23s","赤纬D(J2000)":"32.12305555555555","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"1.8","方位角":"174","详细描述":"extremely faint, very small (only seen by H)","简略描述":"F, pS, R, bM"},{"ID":"422","标识":"NGC422","M标识":"NGC422","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h9m25.4s","赤经D(J2000)":"1.1570555555555555","赤纬(J2000)":"-71h46m0s","赤纬D(J2000)":"-71.76666666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large, round, gradually a very little brighter middle","简略描述":"vF (in Nubec. minor)"},{"ID":"423","标识":"NGC423","M标识":"NGC423","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h11m22.1s","赤经D(J2000)":"1.1894722222222223","赤纬(J2000)":"-29h14m4s","赤纬D(J2000)":"-29.234444444444446","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.4","方位角":"114","详细描述":"extremely faint, small, extended, gradually a little brighter middle, eastern of 2","简略描述":"eF, S, E, glbM, f of 2"},{"ID":"424","标识":"NGC424","M标识":"NGC424","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h11m27.6s","赤经D(J2000)":"1.191","赤纬(J2000)":"-38h5m1s","赤纬D(J2000)":"-38.08361111111111","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.3","短轴(分)":"0.8","方位角":"60","详细描述":"very faint, small, round, gradually a little brighter middle","简略描述":"vF, S, R, glbM"},{"ID":"425","标识":"NGC425","M标识":"NGC425","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h13m2.7s","赤经D(J2000)":"1.2174166666666668","赤纬(J2000)":"+38h46m9s","赤纬D(J2000)":"38.76916666666666","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1","短轴(分)":"0.8","方位角":"54","详细描述":"very faint, very small, round, a little brighter middle, 11th magnitude star attached","简略描述":"vF, vS, R, lbM, * 11 att"},{"ID":"426","标识":"NGC426","M标识":"NGC426","拓展名":"","组件":"","Class":"III 592","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h12m48.5s","赤经D(J2000)":"1.2134722222222223","赤纬(J2000)":"-0h17m23s","赤纬D(J2000)":"-0.2897222222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1","方位角":"140","详细描述":"very faint, very small, round","简略描述":"Vf, vS, R"},{"ID":"427","标识":"NGC427","M标识":"NGC427","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h12m19.2s","赤经D(J2000)":"1.2053333333333334","赤纬(J2000)":"-32h3m40s","赤纬D(J2000)":"-32.06111111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.6","方位角":"0","详细描述":"3 very small (faint) stars with nebulosity (?)","简略描述":"3 vS st with neby (?)"},{"ID":"428","标识":"NGC428","M标识":"NGC428","拓展名":"","组件":"","Class":"II 622","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h12m55.6s","赤经D(J2000)":"1.2154444444444443","赤纬(J2000)":"+0h58m53s","赤纬D(J2000)":"0.9813888888888889","可见光星等V":"11.5","摄影(蓝光)星等B":"11.9","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"4","短轴(分)":"2.9","方位角":"120","详细描述":"faint, large, round, brighter middle, extremely mottled but not resolved","简略描述":"F, L, R, bM, er"},{"ID":"429","标识":"NGC429","M标识":"NGC429","拓展名":"","组件":"","Class":"III 593","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h12m57.4s","赤经D(J2000)":"1.2159444444444445","赤纬(J2000)":"-0h20m42s","赤纬D(J2000)":"-0.345","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.4","短轴(分)":"0.3","方位角":"19","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"430","标识":"NGC430","M标识":"NGC430","拓展名":"","组件":"","Class":"II 447","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h12m59.9s","赤经D(J2000)":"1.2166388888888888","赤纬(J2000)":"-0h15m9s","赤纬D(J2000)":"-0.2525","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"155","详细描述":"faint, very small, round, very suddenly brighter middle like a star","简略描述":"F, vS, R, vsbM *"},{"ID":"431","标识":"NGC431","M标识":"NGC431","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h14m4.6s","赤经D(J2000)":"1.234611111111111","赤纬(J2000)":"+33h42m19s","赤纬D(J2000)":"33.70527777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"20","详细描述":"faint, small, very suddenly brighter middle","简略描述":"F, S, vsbM"},{"ID":"432","标识":"NGC432","M标识":"NGC432","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h11m46.3s","赤经D(J2000)":"1.1961944444444446","赤纬(J2000)":"-61h31m39s","赤纬D(J2000)":"-61.527499999999996","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"117","详细描述":"faint, small, round, gradually brighter middle, 12th magnitude star to east","简略描述":"F, S, R, gbM, * 12 f"},{"ID":"433","标识":"NGC433","M标识":"NGC433","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h15m9.2s","赤经D(J2000)":"1.2525555555555556","赤纬(J2000)":"+60h7m33s","赤纬D(J2000)":"60.12583333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, small, a little compressed","简略描述":"Cl, S, lC"},{"ID":"434","标识":"NGC434","M标识":"NGC434","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h12m14.3s","赤经D(J2000)":"1.2039722222222222","赤纬(J2000)":"-58h14m50s","赤纬D(J2000)":"-58.24722222222222","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.2","短轴(分)":"1.2","方位角":"6","详细描述":"bright, small, round, pretty suddenly brighter middle","简略描述":"B, S, R, psbM"},{"ID":"435","标识":"NGC435","M标识":"NGC435","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h13m59.8s","赤经D(J2000)":"1.233277777777778","赤纬(J2000)":"+2h4m16s","赤纬D(J2000)":"2.071111111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"12","详细描述":"extremely faint, small, extended","简略描述":"eF, S, E"},{"ID":"436","标识":"NGC436","M标识":"NGC436","拓展名":"","组件":"","Class":"VII 45","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h15m58s","赤经D(J2000)":"1.2661111111111112","赤纬(J2000)":"+58h48m42s","赤纬D(J2000)":"58.81166666666666","可见光星等V":"8.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, small, irregular figure, pretty compressed","简略描述":"Cl, S, iF, pC"},{"ID":"437","标识":"NGC437","M标识":"NGC437","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h14m22.3s","赤经D(J2000)":"1.2395277777777778","赤纬(J2000)":"+5h55m35s","赤纬D(J2000)":"5.926388888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"1","方位角":"130","详细描述":"pretty faint, very small, round, faint star to northwest","简略描述":"pF, vS, R, F * np"},{"ID":"438","标识":"NGC438","M标识":"NGC438","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h13m34.3s","赤经D(J2000)":"1.2261944444444446","赤纬(J2000)":"-37h54m5s","赤纬D(J2000)":"-37.90138888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"36","详细描述":"pretty faint, small, round, gradually a little brighter middle","简略描述":"pF, S, R, glbM"},{"ID":"439","标识":"NGC439","M标识":"NGC439","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h13m47.2s","赤经D(J2000)":"1.2297777777777779","赤纬(J2000)":"-31h44m50s","赤纬D(J2000)":"-31.747222222222224","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.5","短轴(分)":"1.5","方位角":"156","详细描述":"pretty bright, small, round, gradually brighter middle","简略描述":"pB, S, R, gbM"},{"ID":"440","标识":"NGC440","M标识":"NGC440","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h12m48.4s","赤经D(J2000)":"1.2134444444444443","赤纬(J2000)":"-58h16m58s","赤纬D(J2000)":"-58.282777777777774","可见光星等V":"13.2","摄影(蓝光)星等B":"13.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"45","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"441","标识":"NGC441","M标识":"NGC441","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h13m51.1s","赤经D(J2000)":"1.2308611111111112","赤纬(J2000)":"-31h47m20s","赤纬D(J2000)":"-31.78888888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"135","详细描述":"pretty faint, small, round, gradually brighter middle","简略描述":"pF, S, R, gbM"},{"ID":"442","标识":"NGC442","M标识":"NGC442","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h14m38.6s","赤经D(J2000)":"1.2440555555555557","赤纬(J2000)":"-1h1m14s","赤纬D(J2000)":"-1.0205555555555554","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.5","方位角":"157","详细描述":"very faint, small, round, bright star to southeast","简略描述":"vF, S, R, B * sf"},{"ID":"443","标识":"NGC443","M标识":"NGC443","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h15m7.5s","赤经D(J2000)":"1.2520833333333334","赤纬(J2000)":"+33h22m40s","赤纬D(J2000)":"33.37777777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"57","详细描述":"faint, small, round, 15th magnitude star 8 seconds of time to west on parallel","简略描述":"F, S, R, * 15 p 8s on par."},{"ID":"444","标识":"NGC444","M标识":"NGC444","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h15m49.6s","赤经D(J2000)":"1.2637777777777779","赤纬(J2000)":"+31h4m50s","赤纬D(J2000)":"31.080555555555556","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"157","详细描述":"very faint, much extended 135°, a little brighter middle","简略描述":"vF, mE 135°, lbM"},{"ID":"445","标识":"NGC445","M标识":"NGC445","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h14m52.6s","赤经D(J2000)":"1.2479444444444445","赤纬(J2000)":"+1h55m3s","赤纬D(J2000)":"1.9174999999999998","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"153","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"446","标识":"NGC446","M标识":"NGC446","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h16m3.7s","赤经D(J2000)":"1.2676944444444445","赤纬(J2000)":"+4h17m40s","赤纬D(J2000)":"4.294444444444444","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2","短轴(分)":"1.6","方位角":"54","详细描述":"faint, very small, stellar","简略描述":"F, vS, stellar"},{"ID":"447","标识":"NGC447","M标识":"NGC447","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h15m37.9s","赤经D(J2000)":"1.2605277777777777","赤纬(J2000)":"+33h3m59s","赤纬D(J2000)":"33.06638888888889","可见光星等V":"14","摄影(蓝光)星等B":"15.1","B-V":"1.1","表面亮度(mag\/arcmin2)":"15.6","长轴(分)":"2.2","短轴(分)":"2.2","方位角":"","详细描述":"faint, pretty large, brighter middle, 11th magnitude star to northeast","简略描述":"F, pL, bM, * 11 nf"},{"ID":"448","标识":"NGC448","M标识":"NGC448","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h15m16.5s","赤经D(J2000)":"1.2545833333333334","赤纬(J2000)":"-1h37m31s","赤纬D(J2000)":"-1.6252777777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"116","详细描述":"pretty bright, very small, a little extended","简略描述":"pB, vS, lE"},{"ID":"449","标识":"NGC449","M标识":"NGC449","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h16m7.5s","赤经D(J2000)":"1.26875","赤纬(J2000)":"+33h5m20s","赤纬D(J2000)":"33.08888888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"71","详细描述":"very faint, very small, round, a very little brighter middle, very faint star involved","简略描述":"vF, vS, R, vlbM, vF st inv"},{"ID":"450","标识":"NGC450","M标识":"NGC450","拓展名":"","组件":"","Class":"III 440","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h15m30.4s","赤经D(J2000)":"1.2584444444444445","赤纬(J2000)":"-0h51m41s","赤纬D(J2000)":"-0.8613888888888889","可见光星等V":"11.8","摄影(蓝光)星等B":"12.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3","短轴(分)":"2.4","方位角":"72","详细描述":"very faint, large","简略描述":"vF, L"},{"ID":"451","标识":"NGC451","M标识":"NGC451","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h16m12.4s","赤经D(J2000)":"1.270111111111111","赤纬(J2000)":"+33h3m49s","赤纬D(J2000)":"33.06361111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"35","详细描述":"very faint, very small, round, very little brighter middle","简略描述":"vF, vS, R, vlbM"},{"ID":"452","标识":"NGC452","M标识":"NGC452","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h16m15s","赤经D(J2000)":"1.2708333333333333","赤纬(J2000)":"+31h2m0s","赤纬D(J2000)":"31.033333333333335","可见光星等V":"12.5","摄影(蓝光)星等B":"13.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.5","短轴(分)":"0.8","方位角":"43","详细描述":"very faint, extended, 9th magnitude star to northwest, small (faint) star to northeast, very near","简略描述":"vF, E, * 9 np, S * nf, v nr"},{"ID":"453","标识":"NGC453","M标识":"NGC453","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h16m17.3s","赤经D(J2000)":"1.2714722222222221","赤纬(J2000)":"+33h0m53s","赤纬D(J2000)":"33.014722222222225","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, very faint star involved","简略描述":"vF, vS, R, vF st inv"},{"ID":"454","标识":"NGC454","M标识":"NGC454","拓展名":"","组件":"1","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h14m21.6s","赤经D(J2000)":"1.2393333333333334","赤纬(J2000)":"-55h24m2s","赤纬D(J2000)":"-55.400555555555556","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"15","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"455","标识":"NGC455","M标识":"NGC455","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h15m57.6s","赤经D(J2000)":"1.266","赤纬(J2000)":"+5h10m42s","赤纬D(J2000)":"5.178333333333334","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"1.2","方位角":"153","详细描述":"faint, very small, almost stellar","简略描述":"F, vS, alm stell"},{"ID":"456","标识":"NGC456","M标识":"NGC456","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h13m46s","赤经D(J2000)":"1.2294444444444446","赤纬(J2000)":"-73h17m30s","赤纬D(J2000)":"-73.29166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"15","方位角":"","详细描述":"pretty faint, pretty large, irregularly round, mottled but not resolved, 1st of several","简略描述":"pF, pL, iR, r, 1st of sev"},{"ID":"457","标识":"NGC457","M标识":"NGC457","拓展名":"","组件":"","Class":"VII 42","业余排名":"2","中文名":"蜻蜓星团","类型":"OCL","含重复类型":"OCL","形态":"I3r","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h19m33s","赤经D(J2000)":"1.3258333333333334","赤纬(J2000)":"+58h17m42s","赤纬D(J2000)":"58.294999999999995","可见光星等V":"6.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"cluster, bright, large, pretty rich, stars of 7th, 8th and 10th magnitudes","简略描述":"Cl, B, L, pRi, st 7, 8, 10"},{"ID":"458","标识":"NGC458","M标识":"NGC458","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h14m51.6s","赤经D(J2000)":"1.2476666666666667","赤纬(J2000)":"-71h33m4s","赤纬D(J2000)":"-71.55111111111111","可见光星等V":"99","摄影(蓝光)星等B":"10.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.5","短轴(分)":"","方位角":"","详细描述":"pretty faint, large, round, very gradually brighter middle","简略描述":"pF, L, R, vgbM"},{"ID":"459","标识":"NGC459","M标识":"NGC459","拓展名":"","组件":"","Class":"III 205","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h18m8.2s","赤经D(J2000)":"1.3022777777777779","赤纬(J2000)":"+17h33m45s","赤纬D(J2000)":"17.5625","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"33","详细描述":"extremely faint","简略描述":"eF"},{"ID":"460","标识":"NGC460","M标识":"NGC460","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h14m38s","赤经D(J2000)":"1.243888888888889","赤纬(J2000)":"-73h17m30s","赤纬D(J2000)":"-73.29166666666667","可见光星等V":"12.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, irregularly round, gradually brighter middle, mottled but not resolved, 2nd of several","简略描述":"F, pL, iR, gbM, r, 2nd of sev"},{"ID":"461","标识":"NGC461","M标识":"NGC461","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h17m20.3s","赤经D(J2000)":"1.2889722222222222","赤纬(J2000)":"-33h50m28s","赤纬D(J2000)":"-33.84111111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"23","详细描述":"pretty bright, round, gradually a little brighter middle (perhaps 1° wrong?)","简略描述":"pB, R, glbM (? 1° wrong)"},{"ID":"462","标识":"NGC462","M标识":"NGC462","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h18m10.9s","赤经D(J2000)":"1.303027777777778","赤纬(J2000)":"+4h13m35s","赤纬D(J2000)":"4.226388888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"463","标识":"NGC463","M标识":"NGC463","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h18m58.2s","赤经D(J2000)":"1.3161666666666667","赤纬(J2000)":"+16h19m31s","赤纬D(J2000)":"16.325277777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.4","方位角":"4","详细描述":"extremely faint, very small, round, a little brighter middle","简略描述":"eF, vS, R, lbM"},{"ID":"464","标识":"NGC464","M标识":"NGC464","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h19m26.6s","赤经D(J2000)":"1.3240555555555555","赤纬(J2000)":"+34h57m21s","赤纬D(J2000)":"34.95583333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"small","简略描述":"S"},{"ID":"465","标识":"NGC465","M标识":"NGC465","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h15m42.7s","赤经D(J2000)":"1.261861111111111","赤纬(J2000)":"-73h19m27s","赤纬D(J2000)":"-73.32416666666666","可见光星等V":"11.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, irregular figure, 3rd of several","简略描述":"pB, pL, iF, 3rd of sev"},{"ID":"466","标识":"NGC466","M标识":"NGC466","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h17m13.5s","赤经D(J2000)":"1.2870833333333331","赤纬(J2000)":"-58h54m35s","赤纬D(J2000)":"-58.90972222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"103","详细描述":"very faint, pretty small, round, gradually brighter middle","简略描述":"vF, pS, R, gbM"},{"ID":"467","标识":"NGC467","M标识":"NGC467","拓展名":"","组件":"","Class":"I 108","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h19m10.1s","赤经D(J2000)":"1.3194722222222222","赤纬(J2000)":"+3h18m5s","赤纬D(J2000)":"3.301388888888889","可见光星等V":"11.8","摄影(蓝光)星等B":"12.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"1.7","方位角":"","详细描述":"pretty bright, pretty large, round, gradually brighter middle","简略描述":"pB, pL, R, gbM"},{"ID":"468","标识":"NGC468","M标识":"NGC468","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h19m48.4s","赤经D(J2000)":"1.330111111111111","赤纬(J2000)":"+32h46m2s","赤纬D(J2000)":"32.76722222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"171","详细描述":"extremely faint, very small, 9th or 10th magnitude star 14 seconds of time to west, very difficult","简略描述":"vF, eS, stellar"},{"ID":"469","标识":"NGC469","M标识":"NGC469","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h19m33s","赤经D(J2000)":"1.3258333333333334","赤纬(J2000)":"+14h52m19s","赤纬D(J2000)":"14.871944444444445","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"165","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"470","标识":"NGC470","M标识":"NGC470","拓展名":"","组件":"","Class":"III 250","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h19m44.8s","赤经D(J2000)":"1.3291111111111111","赤纬(J2000)":"+3h24m33s","赤纬D(J2000)":"3.4091666666666667","可见光星等V":"11.8","摄影(蓝光)星等B":"12.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.9","短轴(分)":"1.7","方位角":"155","详细描述":"pretty bright, large, irregularly round","简略描述":"pB, L, iR"},{"ID":"471","标识":"NGC471","M标识":"NGC471","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h19m59.6s","赤经D(J2000)":"1.3332222222222223","赤纬(J2000)":"+14h47m9s","赤纬D(J2000)":"14.785833333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"85","详细描述":"nebulous 12th magnitude star","简略描述":"Neb * 12 m"},{"ID":"472","标识":"NGC472","M标识":"NGC472","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h20m28.9s","赤经D(J2000)":"1.341361111111111","赤纬(J2000)":"+32h42m30s","赤纬D(J2000)":"32.708333333333336","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"120","详细描述":"extremely faint, small, round","简略描述":"eF, vS, * 9, 10 p 14s, v diff"},{"ID":"473","标识":"NGC473","M标识":"NGC473","拓展名":"","组件":"","Class":"III 206","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h19m54.9s","赤经D(J2000)":"1.3319166666666666","赤纬(J2000)":"+16h32m42s","赤纬D(J2000)":"16.545","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"1.2","方位角":"153","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"474","标识":"NGC474","M标识":"NGC474","拓展名":"","组件":"","Class":"III 251","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h20m6.7s","赤经D(J2000)":"1.3351944444444444","赤纬(J2000)":"+3h24m58s","赤纬D(J2000)":"3.416111111111111","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"15.5","长轴(分)":"7.1","短轴(分)":"6.3","方位角":"75","详细描述":"pretty bright, small, suddenly much brighter middle, eastern of 2","简略描述":"pB, S, smbM, f of 2"},{"ID":"475","标识":"NGC475","M标识":"NGC475","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h20m1.9s","赤经D(J2000)":"1.333861111111111","赤纬(J2000)":"+14h51m42s","赤纬D(J2000)":"14.861666666666666","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"476","标识":"NGC476","M标识":"NGC476","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h20m19.8s","赤经D(J2000)":"1.3388333333333333","赤纬(J2000)":"+16h1m14s","赤纬D(J2000)":"16.020555555555553","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"102","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"477","标识":"NGC477","M标识":"NGC477","拓展名":"","组件":"","Class":"III 577","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h21m20.3s","赤经D(J2000)":"1.355638888888889","赤纬(J2000)":"+40h29m19s","赤纬D(J2000)":"40.48861111111111","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"150","详细描述":"very faint, pretty small, very little extended, very gradually a little brighter middle","简略描述":"vF, pS, vlE, vglbM"},{"ID":"478","标识":"NGC478","M标识":"NGC478","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h20m8.9s","赤经D(J2000)":"1.3358055555555555","赤纬(J2000)":"-22h22m41s","赤纬D(J2000)":"-22.378055555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"83","详细描述":"extremely faint, extremely small, round, suddenly brighter middle and nucleus","简略描述":"eF, eS, R, sbMN"},{"ID":"479","标识":"NGC479","M标识":"NGC479","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h21m15.7s","赤经D(J2000)":"1.3543611111111111","赤纬(J2000)":"+3h51m46s","赤纬D(J2000)":"3.862777777777778","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"156","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"480","标识":"NGC480","M标识":"NGC480","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h20m34.3s","赤经D(J2000)":"1.342861111111111","赤纬(J2000)":"-9h52m49s","赤纬D(J2000)":"-9.880277777777778","可见光星等V":"15.2","摄影(蓝光)星等B":"16.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"65","详细描述":"extremely faint, very small, round, (nebulous?)","简略描述":"eF, vS, R, (neb ?)"},{"ID":"481","标识":"NGC481","M标识":"NGC481","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h21m12.6s","赤经D(J2000)":"1.3535000000000001","赤纬(J2000)":"-9h12m40s","赤纬D(J2000)":"-9.21111111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"85","详细描述":"very faint, very small, round, faint star to northwest","简略描述":"vF, vS, R, F * np"},{"ID":"482","标识":"NGC482","M标识":"NGC482","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h20m20.4s","赤经D(J2000)":"1.339","赤纬(J2000)":"-40h57m58s","赤纬D(J2000)":"-40.96611111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"0.5","方位角":"84","详细描述":"extremely faint, a little extended","简略描述":"eF, lE"},{"ID":"483","标识":"NGC483","M标识":"NGC483","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h21m56.3s","赤经D(J2000)":"1.365638888888889","赤纬(J2000)":"+33h31m14s","赤纬D(J2000)":"33.52055555555555","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"484","标识":"NGC484","M标识":"NGC484","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h19m34.8s","赤经D(J2000)":"1.3263333333333334","赤纬(J2000)":"-58h31m28s","赤纬D(J2000)":"-58.52444444444444","可见光星等V":"11.1","摄影(蓝光)星等B":"12.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"94","详细描述":"very bright, small, a little extended, pretty suddenly much brighter middle","简略描述":"vB, S, lE, psmbM"},{"ID":"485","标识":"NGC485","M标识":"NGC485","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h21m27.5s","赤经D(J2000)":"1.357638888888889","赤纬(J2000)":"+7h1m5s","赤纬D(J2000)":"7.018055555555556","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"3","详细描述":"considerably faint, pretty large, round, 8th magnitude star 3 1\/2 arcmin to southwest","简略描述":"cF, pL, R, * 8 sp 3?'"},{"ID":"486","标识":"NGC486","M标识":"NGC486","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h21m43s","赤经D(J2000)":"1.3619444444444446","赤纬(J2000)":"+5h20m47s","赤纬D(J2000)":"5.346388888888889","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, extremely small, stellar, 5 arcmin north of h 103","简略描述":"eF, eS, stell, 5' n of h 103"},{"ID":"487","标识":"NGC487","M标识":"NGC487","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h21m55s","赤经D(J2000)":"1.3652777777777778","赤纬(J2000)":"-16h22m12s","赤纬D(J2000)":"-16.37","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"112","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"488","标识":"NGC488","M标识":"NGC488","拓展名":"","组件":"","Class":"III 252","业余排名":"6","中文名":"转马星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h21m46.6s","赤经D(J2000)":"1.3629444444444445","赤纬(J2000)":"+5h15m21s","赤纬D(J2000)":"5.255833333333333","可见光星等V":"10.3","摄影(蓝光)星等B":"11.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"5.4","短轴(分)":"3.9","方位角":"15","详细描述":"pretty bright, large, round, suddenly very much brighter middle, 8th magnitude star 10 arcmin to east","简略描述":"pB, L, R, svmbM, * 8 f 10'"},{"ID":"489","标识":"NGC489","M标识":"NGC489","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h21m53.8s","赤经D(J2000)":"1.3649444444444445","赤纬(J2000)":"+9h12m23s","赤纬D(J2000)":"9.206388888888888","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.7","短轴(分)":"0.4","方位角":"120","详细描述":"pretty bright, small, extended","简略描述":"pB, S, E"},{"ID":"490","标识":"NGC490","M标识":"NGC490","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h22m2.8s","赤经D(J2000)":"1.3674444444444445","赤纬(J2000)":"+5h22m4s","赤纬D(J2000)":"5.3677777777777775","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"9","详细描述":"very faint, very small, round, 8 arcmin northeast of h 103","简略描述":"vF, vS, R, 8' nf h 103"},{"ID":"491","标识":"NGC491","M标识":"NGC491","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h21m20.2s","赤经D(J2000)":"1.355611111111111","赤纬(J2000)":"-34h3m49s","赤纬D(J2000)":"-34.06361111111111","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"1","方位角":"93","详细描述":"bright, small, very little extended, brighter middle, very small (faint) star near","简略描述":"B, S, vlE, bM, vS * nr"},{"ID":"492","标识":"NGC492","M标识":"NGC492","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h22m13.5s","赤经D(J2000)":"1.3704166666666666","赤纬(J2000)":"+5h25m1s","赤纬D(J2000)":"5.416944444444445","可见光星等V":"15.6","摄影(蓝光)星等B":"16.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"120","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"493","标识":"NGC493","M标识":"NGC493","拓展名":"","组件":"","Class":"III 594","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h22m9.2s","赤经D(J2000)":"1.3692222222222223","赤纬(J2000)":"+0h56m47s","赤纬D(J2000)":"0.946388888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"12.9","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.4","短轴(分)":"1.1","方位角":"58","详细描述":"very faint, large, much extended 60°, a little brighter middle","简略描述":"vF, L, mE 60°, lbM"},{"ID":"494","标识":"NGC494","M标识":"NGC494","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h22m55.4s","赤经D(J2000)":"1.3820555555555556","赤纬(J2000)":"+33h10m22s","赤纬D(J2000)":"33.172777777777775","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2","短轴(分)":"0.8","方位角":"100","详细描述":"very faint, pretty large, extended, 3 faint stars to south","简略描述":"vF, pL, E, 3 F st s"},{"ID":"495","标识":"NGC495","M标识":"NGC495","拓展名":"","组件":"","Class":"III 156","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h22m56s","赤经D(J2000)":"1.3822222222222222","赤纬(J2000)":"+33h28m15s","赤纬D(J2000)":"33.47083333333334","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"170","详细描述":"very faint, small, 1st of 3","简略描述":"vF, S, 1st of 3"},{"ID":"496","标识":"NGC496","M标识":"NGC496","拓展名":"","组件":"","Class":"III 157","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m11.6s","赤经D(J2000)":"1.3865555555555555","赤纬(J2000)":"+33h31m41s","赤纬D(J2000)":"33.528055555555554","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"28","详细描述":"very faint, very small (C in Birr diagram), 2nd of 3","简略描述":"vF, vS (C in Birr diagr.), 2nd of 3"},{"ID":"497","标识":"NGC497","M标识":"NGC497","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h22m23.9s","赤经D(J2000)":"1.3733055555555556","赤纬(J2000)":"-0h52m29s","赤纬D(J2000)":"-0.8747222222222223","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.1","短轴(分)":"0.9","方位角":"132","详细描述":"extremely faint, pretty small, round, very little brighter middle, mottled but not resolved","简略描述":"eF, pS, R, vlbM, r"},{"ID":"498","标识":"NGC498","M标识":"NGC498","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m11.2s","赤经D(J2000)":"1.3864444444444444","赤纬(J2000)":"+33h29m24s","赤纬D(J2000)":"33.49","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"most extremely faint, northwest of h 106 (D in Birr diagram)","简略描述":"eeF, np h 106 (D in Birr diagr.)"},{"ID":"499","标识":"NGC499","M标识":"NGC499","拓展名":"","组件":"","Class":"III 158","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m11.5s","赤经D(J2000)":"1.3865277777777778","赤纬(J2000)":"+33h27m35s","赤纬D(J2000)":"33.459722222222226","可见光星等V":"12.1","摄影(蓝光)星等B":"13.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"84","详细描述":"pretty bright, pretty large, round, 3rd of 3","简略描述":"pB, pL, R, 3rd of 3"},{"ID":"500","标识":"NGC500","M标识":"NGC500","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h22m39.3s","赤经D(J2000)":"1.3775833333333334","赤纬(J2000)":"+5h23m16s","赤纬D(J2000)":"5.387777777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"102","详细描述":"very faint, very small, much brighter middle, 11th magnitude star 1 arcmin to northeast","简略描述":"vF, vS, mbM, * 11 nf 1'"},{"ID":"501","标识":"NGC501","M标识":"NGC501","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m22.4s","赤经D(J2000)":"1.3895555555555554","赤纬(J2000)":"+33h26m1s","赤纬D(J2000)":"33.433611111111105","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, small (E in Birr diagram)","简略描述":"vF, S (E in Birr diagr.)"},{"ID":"502","标识":"NGC502","M标识":"NGC502","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h22m55.6s","赤经D(J2000)":"1.382111111111111","赤纬(J2000)":"+9h2m58s","赤纬D(J2000)":"9.049444444444445","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"1","方位角":"66","详细描述":"considerably bright, small, round, brighter middle and nucleus","简略描述":"cB, S, R, bmN"},{"ID":"503","标识":"NGC503","M标识":"NGC503","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m28.4s","赤经D(J2000)":"1.3912222222222221","赤纬(J2000)":"+33h19m56s","赤纬D(J2000)":"33.33222222222223","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"27","详细描述":"extremely faint, extremely small, double star 4 arcmin to southwest","简略描述":"eF, eS, D * 4' sp"},{"ID":"504","标识":"NGC504","M标识":"NGC504","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m28.1s","赤经D(J2000)":"1.391138888888889","赤纬(J2000)":"+33h12m14s","赤纬D(J2000)":"33.20388888888889","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.7","短轴(分)":"0.4","方位角":"47","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"505","标识":"NGC505","M标识":"NGC505","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h22m57.1s","赤经D(J2000)":"1.3825277777777778","赤纬(J2000)":"+9h28m8s","赤纬D(J2000)":"9.46888888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"57","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"506","标识":"NGC506","M标识":"NGC506","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m35.5s","赤经D(J2000)":"1.3931944444444444","赤纬(J2000)":"+33h14m38s","赤纬D(J2000)":"33.24388888888889","可见光星等V":"99","摄影(蓝光)星等B":"15.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, southwest of h 108","简略描述":"vF, vS, sp h 108"},{"ID":"507","标识":"NGC507","M标识":"NGC507","拓展名":"","组件":"","Class":"III 159","业余排名":"14","中文名":"NGC 507星系群","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m40s","赤经D(J2000)":"1.3944444444444444","赤纬(J2000)":"+33h15m24s","赤纬D(J2000)":"33.25666666666667","可见光星等V":"11.2","摄影(蓝光)星等B":"12.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.5","短轴(分)":"2.5","方位角":"","详细描述":"very faint, pretty large, round, brighter middle, southern of 2","简略描述":"vF, pL, R, bM, s of 2"},{"ID":"508","标识":"NGC508","M标识":"NGC508","拓展名":"","组件":"","Class":"III 160","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m40.7s","赤经D(J2000)":"1.3946388888888888","赤纬(J2000)":"+33h16m49s","赤纬D(J2000)":"33.280277777777776","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"very faint, small, northern of 2","简略描述":"vF, S, n of 2"},{"ID":"509","标识":"NGC509","M标识":"NGC509","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m24.1s","赤经D(J2000)":"1.3900277777777776","赤纬(J2000)":"+9h26m0s","赤纬D(J2000)":"9.433333333333334","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"85","详细描述":"very faint, small, extended","简略描述":"vF, S, E"},{"ID":"510","标识":"NGC510","M标识":"NGC510","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m55.5s","赤经D(J2000)":"1.39875","赤纬(J2000)":"+33h29m51s","赤纬D(J2000)":"33.4975","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"511","标识":"NGC511","M标识":"NGC511","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m30.7s","赤经D(J2000)":"1.391861111111111","赤纬(J2000)":"+11h17m27s","赤纬D(J2000)":"11.290833333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"extremely faint, very small, small (faint) star involved, small star attached","简略描述":"eF, vS, S * inv, S * att"},{"ID":"512","标识":"NGC512","M标识":"NGC512","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h23m59.8s","赤经D(J2000)":"1.3999444444444444","赤纬(J2000)":"+33h54m26s","赤纬D(J2000)":"33.907222222222224","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"116","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"513","标识":"NGC513","M标识":"NGC513","拓展名":"","组件":"","Class":"III 169","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h24m26.9s","赤经D(J2000)":"1.4074722222222222","赤纬(J2000)":"+33h47m56s","赤纬D(J2000)":"33.79888888888889","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"75","详细描述":"faint, small, stellar","简略描述":"F, S, stellar"},{"ID":"514","标识":"NGC514","M标识":"NGC514","拓展名":"","组件":"","Class":"II 252","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h24m3.9s","赤经D(J2000)":"1.4010833333333332","赤纬(J2000)":"+12h55m2s","赤纬D(J2000)":"12.917222222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.7","短轴(分)":"3","方位角":"110","详细描述":"faint, large, a little extended, very gradually a little brighter middle, double star to east","简略描述":"F, L, lE, vglbM, ** f"},{"ID":"515","标识":"NGC515","M标识":"NGC515","拓展名":"","组件":"","Class":"III 167","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h24m38.7s","赤经D(J2000)":"1.41075","赤纬(J2000)":"+33h28m20s","赤纬D(J2000)":"33.47222222222222","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"126","详细描述":"pretty faint, very small, round, northwestern of 2","简略描述":"pF, vS, R, np of 2"},{"ID":"516","标识":"NGC516","M标识":"NGC516","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h24m8s","赤经D(J2000)":"1.402222222222222","赤纬(J2000)":"+9h33m7s","赤纬D(J2000)":"9.551944444444445","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"44","详细描述":"extremely faint, small, very difficult, I 151 forty-one seconds of time to east","简略描述":"eF, S, v diffic, I 151 f 41s"},{"ID":"517","标识":"NGC517","M标识":"NGC517","拓展名":"","组件":"","Class":"III 168","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h24m43.8s","赤经D(J2000)":"1.4121666666666666","赤纬(J2000)":"+33h25m44s","赤纬D(J2000)":"33.428888888888885","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"20","详细描述":"pretty faint, round, stellar, southeastern of 2","简略描述":"pF, R, stellar, sf of 2"},{"ID":"518","标识":"NGC518","M标识":"NGC518","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h24m17.7s","赤经D(J2000)":"1.4049166666666666","赤纬(J2000)":"+9h19m51s","赤纬D(J2000)":"9.330833333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"98","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"519","标识":"NGC519","M标识":"NGC519","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h24m28.7s","赤经D(J2000)":"1.4079722222222222","赤纬(J2000)":"-1h38m29s","赤纬D(J2000)":"-1.6413888888888888","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"140","详细描述":"most extremely faint, very small, round, very difficult","简略描述":"eeF, vS, R, v diffic"},{"ID":"520","标识":"NGC520","M标识":"NGC520","拓展名":"","组件":"","Class":"III 253","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa\/P","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h24m34.7s","赤经D(J2000)":"1.4096388888888889","赤纬(J2000)":"+3h47m39s","赤纬D(J2000)":"3.7941666666666665","可见光星等V":"11.4","摄影(蓝光)星等B":"12.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.4","短轴(分)":"1.7","方位角":"130","详细描述":"faint, considerably large, extended 137°","简略描述":"F, cL, E 137°"},{"ID":"521","标识":"NGC521","M标识":"NGC521","拓展名":"","组件":"","Class":"II 461","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h24m33.6s","赤经D(J2000)":"1.4093333333333333","赤纬(J2000)":"+1h43m53s","赤纬D(J2000)":"1.731388888888889","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.7","短轴(分)":"2.4","方位角":"38","详细描述":"faint, pretty large, round, gradually brighter middle","简略描述":"F, pL, R, gbM"},{"ID":"522","标识":"NGC522","M标识":"NGC522","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h24m45.9s","赤经D(J2000)":"1.41275","赤纬(J2000)":"+9h59m42s","赤纬D(J2000)":"9.995","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.8","短轴(分)":"0.5","方位角":"33","详细描述":"extremely faint, pretty large, irregular figure, perhaps cluster plus nebula","简略描述":"eF, pL, iF, ? Cl + neb"},{"ID":"523","标识":"NGC523","M标识":"NGC523","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc\/P","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h25m20.7s","赤经D(J2000)":"1.4224166666666667","赤纬(J2000)":"+34h1m31s","赤纬D(J2000)":"34.025277777777774","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.5","短轴(分)":"0.7","方位角":"108","详细描述":"a double nebula, very faint, very small, position angle 90°, distance 30 arcsec","简略描述":"D neb, vF, vS, pos 90°, dist 30\""},{"ID":"524","标识":"NGC524","M标识":"NGC524","拓展名":"","组件":"","Class":"I 151","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h24m47.8s","赤经D(J2000)":"1.4132777777777776","赤纬(J2000)":"+9h32m19s","赤纬D(J2000)":"9.538611111111111","可见光星等V":"10.2","摄影(蓝光)星等B":"11.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"2.8","短轴(分)":"2.8","方位角":"","详细描述":"very bright, pretty large, much brighter middle, 4 small (faint) stars near","简略描述":"vB, pL, mbM, 4 S st nr"},{"ID":"525","标识":"NGC525","M标识":"NGC525","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h24m52.8s","赤经D(J2000)":"1.4146666666666665","赤纬(J2000)":"+9h42m14s","赤纬D(J2000)":"9.703888888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"8","详细描述":"very faint, very small, 11th or 12th magnitude star 5 seconds of time to west","简略描述":"vF, vS, * 11·12 p 5s"},{"ID":"526","标识":"NGC526","M标识":"NGC526","拓展名":"B","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h23m56.9s","赤经D(J2000)":"1.399138888888889","赤纬(J2000)":"-35h4m9s","赤纬D(J2000)":"-35.06916666666667","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"162","详细描述":"faint, small, a little extended, the preceding (western) of 2","简略描述":"F, S, lE, p of 2"},{"ID":"527","标识":"NGC527","M标识":"NGC527","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h23m58s","赤经D(J2000)":"1.3994444444444445","赤纬(J2000)":"-35h6m55s","赤纬D(J2000)":"-35.11527777777778","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"14","详细描述":"faint, small, a little extended, brighter middle, the following (eastern) of 2","简略描述":"F, S, lE, bM, f of 2"},{"ID":"528","标识":"NGC528","M标识":"NGC528","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h25m33.6s","赤经D(J2000)":"1.4260000000000002","赤纬(J2000)":"+33h40m14s","赤纬D(J2000)":"33.67055555555555","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"55","详细描述":"faint, pretty large, round, a little brighter middle","简略描述":"F, pL, R, lbM"},{"ID":"529","标识":"NGC529","M标识":"NGC529","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h25m40.2s","赤经D(J2000)":"1.4278333333333335","赤纬(J2000)":"+34h42m47s","赤纬D(J2000)":"34.713055555555556","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.4","短轴(分)":"2.1","方位角":"160","详细描述":"pretty bright, very small, suddenly brighter middle, western of 2","简略描述":"pB, vS, sbM, p of 2"},{"ID":"530","标识":"NGC530","M标识":"NGC530","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h24m41.7s","赤经D(J2000)":"1.4115833333333332","赤纬(J2000)":"-1h35m13s","赤纬D(J2000)":"-1.5869444444444445","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"134","详细描述":"extremely faint, small, much extended, faint star to southeast","简略描述":"eF, S, mE, F * sf"},{"ID":"531","标识":"NGC531","M标识":"NGC531","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h26m18.8s","赤经D(J2000)":"1.4385555555555556","赤纬(J2000)":"+34h45m15s","赤纬D(J2000)":"34.75416666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.8","短轴(分)":"0.5","方位角":"34","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"532","标识":"NGC532","M标识":"NGC532","拓展名":"","组件":"","Class":"III 556","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h25m17.1s","赤经D(J2000)":"1.4214166666666668","赤纬(J2000)":"+9h15m51s","赤纬D(J2000)":"9.264166666666666","可见光星等V":"12.9","摄影(蓝光)星等B":"14","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.1","短轴(分)":"1","方位角":"28","详细描述":"very faint, pretty large, extended 30°, brighter middle","简略描述":"vF, pL, E 30°, bM"},{"ID":"533","标识":"NGC533","M标识":"NGC533","拓展名":"","组件":"","Class":"II 462","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h25m31.4s","赤经D(J2000)":"1.425388888888889","赤纬(J2000)":"+1h45m33s","赤纬D(J2000)":"1.7591666666666668","可见光星等V":"11.4","摄影(蓝光)星等B":"12.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3.8","短轴(分)":"2.3","方位角":"50","详细描述":"pretty bright, pretty large, round, gradually brighter middle","简略描述":"pB, pL, R, gbM"},{"ID":"534","标识":"NGC534","M标识":"NGC534","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h24m44.5s","赤经D(J2000)":"1.412361111111111","赤纬(J2000)":"-38h7m44s","赤纬D(J2000)":"-38.12888888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.9","方位角":"142","详细描述":"most extremely faint, small, round, very gradually brighter middle, 1st of 4","简略描述":"eeF, S, R, vgbM, 1st of 4"},{"ID":"535","标识":"NGC535","M标识":"NGC535","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h25m31s","赤经D(J2000)":"1.4252777777777779","赤纬(J2000)":"-1h24m32s","赤纬D(J2000)":"-1.4088888888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.3","方位角":"58","详细描述":"very faint, very small, 1st of 3","简略描述":"vF, vS, 1st of 3"},{"ID":"536","标识":"NGC536","M标识":"NGC536","拓展名":"","组件":"","Class":"III 171","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h26m21.6s","赤经D(J2000)":"1.4393333333333334","赤纬(J2000)":"+34h42m12s","赤纬D(J2000)":"34.70333333333333","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.3","短轴(分)":"1.2","方位角":"68","详细描述":"pretty bright, pretty large, gradually brighter middle, eastern of 2","简略描述":"pB, pL, gbM, f of 2"},{"ID":"537","标识":"NGC537","M标识":"NGC537","拓展名":"","组件":"","Class":"III 170","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc\/P","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h25m20.7s","赤经D(J2000)":"1.4224166666666667","赤纬(J2000)":"+34h1m31s","赤纬D(J2000)":"34.025277777777774","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.5","短轴(分)":"0.7","方位角":"108","详细描述":"a double nebula, very faint, very small, position angle 90°, distance 30 arcsec","简略描述":"Stellar (? = GC 306)"},{"ID":"538","标识":"NGC538","M标识":"NGC538","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h25m26.1s","赤经D(J2000)":"1.4239166666666667","赤纬(J2000)":"-1h33m3s","赤纬D(J2000)":"-1.5508333333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"40","详细描述":"extremely faint, small, much extended, faint star to north","简略描述":"eF, S, mE, F * n"},{"ID":"539","标识":"NGC539","M标识":"NGC539","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h25m21.7s","赤经D(J2000)":"1.4226944444444445","赤纬(J2000)":"-18h9m52s","赤纬D(J2000)":"-18.16444444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"145","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"540","标识":"NGC540","M标识":"NGC540","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h27m8.8s","赤经D(J2000)":"1.4524444444444444","赤纬(J2000)":"-20h2m12s","赤纬D(J2000)":"-20.03666666666667","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"178","详细描述":"very faint, very small, round, suddenly brighter middle and nucleus","简略描述":"vF, vS, R, sbMN"},{"ID":"541","标识":"NGC541","M标识":"NGC541","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h25m44.3s","赤经D(J2000)":"1.4289722222222223","赤纬(J2000)":"-1h22m46s","赤纬D(J2000)":"-1.3794444444444445","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"1.7","方位角":"54","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"542","标识":"NGC542","M标识":"NGC542","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h26m30.9s","赤经D(J2000)":"1.4419166666666667","赤纬(J2000)":"+34h40m34s","赤纬D(J2000)":"34.67611111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.2","方位角":"146","详细描述":"extremely faint, difficult","简略描述":"eF, diffic"},{"ID":"543","标识":"NGC543","M标识":"NGC543","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h25m50s","赤经D(J2000)":"1.4305555555555556","赤纬(J2000)":"-1h17m33s","赤纬D(J2000)":"-1.2925","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"11","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"90","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"544","标识":"NGC544","M标识":"NGC544","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h25m11.8s","赤经D(J2000)":"1.4199444444444445","赤纬(J2000)":"-38h5m40s","赤纬D(J2000)":"-38.09444444444445","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"2","详细描述":"most extremely faint, small, round, very gradually brighter middle, 2nd of 4","简略描述":"eeF, S, R, vgbM, 2nd of 4"},{"ID":"545","标识":"NGC545","M标识":"NGC545","拓展名":"","组件":"","Class":"II 448","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h25m59s","赤经D(J2000)":"1.4330555555555555","赤纬(J2000)":"-1h20m26s","赤纬D(J2000)":"-1.3405555555555555","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.6","短轴(分)":"1.6","方位角":"55","详细描述":"stellar, preceding (western) of double nebula","简略描述":"Stellar, p of D neb"},{"ID":"546","标识":"NGC546","M标识":"NGC546","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h25m12.6s","赤经D(J2000)":"1.4201666666666668","赤纬(J2000)":"-38h4m9s","赤纬D(J2000)":"-38.06916666666667","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"35","详细描述":"most extremely faint, small, round, very gradually better middle, 3rd of 4","简略描述":"eeF, S, R, vgbM, 3rd of 4"},{"ID":"547","标识":"NGC547","M标识":"NGC547","拓展名":"","组件":"","Class":"II 449","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h26m0.7s","赤经D(J2000)":"1.4335277777777777","赤纬(J2000)":"-1h20m42s","赤纬D(J2000)":"-1.345","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.9","短轴(分)":"1.8","方位角":"85","详细描述":"stellar, preceding (western) of double nebula","简略描述":"Stellar, f of D neb"},{"ID":"548","标识":"NGC548","M标识":"NGC548","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h26m2.5s","赤经D(J2000)":"1.434027777777778","赤纬(J2000)":"-1h13m31s","赤纬D(J2000)":"-1.225277777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"135","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"549","标识":"NGC549","M标识":"NGC549","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h25m7s","赤经D(J2000)":"1.4186111111111113","赤纬(J2000)":"-38h0m26s","赤纬D(J2000)":"-38.007222222222225","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"most extremely faint, small, round, very gradually brighter middle, 4th of 4","简略描述":"eeF, S, R, vgbM, 4th of 4"},{"ID":"550","标识":"NGC550","M标识":"NGC550","拓展名":"","组件":"","Class":"II 463","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h26m42.4s","赤经D(J2000)":"1.4451111111111112","赤纬(J2000)":"+2h1m20s","赤纬D(J2000)":"2.022222222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"120","详细描述":"faint, small, extended 90°, brighter middle, mottled but not resolved","简略描述":"F, S, E 90°, bM, r"},{"ID":"551","标识":"NGC551","M标识":"NGC551","拓展名":"","组件":"","Class":"III 560","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h27m40.6s","赤经D(J2000)":"1.4612777777777777","赤纬(J2000)":"+37h10m59s","赤纬D(J2000)":"37.183055555555555","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.8","短轴(分)":"0.8","方位角":"140","详细描述":"very faint, small, extended, very gradually a little brighter middle, 13th magnitude star near","简略描述":"vF, S, E, vglbM, * 13 nr"},{"ID":"552","标识":"NGC552","M标识":"NGC552","拓展名":"","组件":"","Class":"III 172","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h26m57s","赤经D(J2000)":"1.4491666666666667","赤纬(J2000)":"+33h33m28s","赤纬D(J2000)":"33.55777777777777","可见光星等V":"14.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very small, stellar, the preceding (western) of 2, questionable RA","简略描述":"vS, stellar, p of 2, ? RA"},{"ID":"553","标识":"NGC553","M标识":"NGC553","拓展名":"","组件":"","Class":"III 173","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h27m3s","赤经D(J2000)":"1.4508333333333332","赤纬(J2000)":"+33h32m55s","赤纬D(J2000)":"33.54861111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very small, stellar, the following (eastern) of 2, questionable RA","简略描述":"vS, stellar, f of 2, ? RA"},{"ID":"554","标识":"NGC554","M标识":"NGC554","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h27m9.6s","赤经D(J2000)":"1.4526666666666666","赤纬(J2000)":"-22h43m32s","赤纬D(J2000)":"-22.725555555555555","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"177","详细描述":"extremely faint, very small, extended, the 1st of 3 (the others being NGC 555 and NGC 556), 11th magnitude star to east","简略描述":"eF, vS, E, 1st of 3, * 11 f"},{"ID":"555","标识":"NGC555","M标识":"NGC555","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h27m11.7s","赤经D(J2000)":"1.45325","赤纬(J2000)":"-22h45m42s","赤纬D(J2000)":"-22.761666666666667","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"13","详细描述":"extremely faint, small, irregularly round, 2nd of 3","简略描述":"eF, S, iR, 2nd of 3"},{"ID":"556","标识":"NGC556","M标识":"NGC556","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h27m12.5s","赤经D(J2000)":"1.4534722222222223","赤纬(J2000)":"-22h41m50s","赤纬D(J2000)":"-22.697222222222223","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"136","详细描述":"extremely faint, very small, round, 3rd of 3","简略描述":"eF, vS, R, 3rd of 3"},{"ID":"557","标识":"NGC557","M标识":"NGC557","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h26m25.1s","赤经D(J2000)":"1.4403055555555555","赤纬(J2000)":"-1h38m18s","赤纬D(J2000)":"-1.6383333333333332","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"123","详细描述":"extremely faint, small, round, 10th magnitude star to northeast","简略描述":"eF, S, R, * 10 nf"},{"ID":"558","标识":"NGC558","M标识":"NGC558","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h27m16.1s","赤经D(J2000)":"1.4544722222222222","赤纬(J2000)":"-1h58m14s","赤纬D(J2000)":"-1.9705555555555556","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"110","详细描述":"extremely faint, small, extended, 10th-magnitude star to west","简略描述":"eF, S, E, * 10 p"},{"ID":"559","标识":"NGC559","M标识":"NGC559","拓展名":"","组件":"","Class":"VII 48","业余排名":"2","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h29m31s","赤经D(J2000)":"1.4919444444444445","赤纬(J2000)":"+63h18m6s","赤纬D(J2000)":"63.30166666666666","可见光星等V":"9.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, pretty large, pretty rich","简略描述":"Cl, B, pL, pRi"},{"ID":"560","标识":"NGC560","M标识":"NGC560","拓展名":"","组件":"","Class":"III 441","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h27m25.3s","赤经D(J2000)":"1.4570277777777778","赤纬(J2000)":"-1h54m45s","赤纬D(J2000)":"-1.9124999999999999","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.9","短轴(分)":"0.6","方位角":"178","详细描述":"very faint, very small, irregularly extended, western of 2","简略描述":"vF, vS, iE, p of 2"},{"ID":"561","标识":"NGC561","M标识":"NGC561","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h28m18.7s","赤经D(J2000)":"1.4718611111111113","赤纬(J2000)":"+34h18m30s","赤纬D(J2000)":"34.30833333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.5","方位角":"45","详细描述":"extremely faint, pretty large, round","简略描述":"eF, pL, R"},{"ID":"562","标识":"NGC562","M标识":"NGC562","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h28m29.3s","赤经D(J2000)":"1.4748055555555557","赤纬(J2000)":"+48h23m13s","赤纬D(J2000)":"48.386944444444445","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"20","详细描述":"extremely faint, pretty small, round, double star near to south","简略描述":"eF, pS, R, D * nr s"},{"ID":"563","标识":"NGC563","M标识":"NGC563","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h25m21.7s","赤经D(J2000)":"1.4226944444444445","赤纬(J2000)":"-18h9m52s","赤纬D(J2000)":"-18.16444444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"145","详细描述":"very faint, pretty small, a little extended, brighter middle and nucleus, several faint stars near","简略描述":"vF, pS, lE, bMN, sev F st nr"},{"ID":"564","标识":"NGC564","M标识":"NGC564","拓展名":"","组件":"","Class":"III 442","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h27m48.2s","赤经D(J2000)":"1.4633888888888889","赤纬(J2000)":"-1h52m43s","赤纬D(J2000)":"-1.8786111111111112","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"145","详细描述":"very faint, very small, irregular figure, eastern of 2","简略描述":"vF, vS, iF, f of 2"},{"ID":"565","标识":"NGC565","M标识":"NGC565","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h28m10s","赤经D(J2000)":"1.4694444444444446","赤纬(J2000)":"-1h18m21s","赤纬D(J2000)":"-1.3058333333333334","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"36","详细描述":"small, extended (perhaps bi-nuclear?)","简略描述":"S, E (? bi N)"},{"ID":"566","标识":"NGC566","M标识":"NGC566","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h29m2.9s","赤经D(J2000)":"1.484138888888889","赤纬(J2000)":"+32h19m56s","赤纬D(J2000)":"32.33222222222223","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"178","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"567","标识":"NGC567","M标识":"NGC567","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h27m2.3s","赤经D(J2000)":"1.4506388888888888","赤纬(J2000)":"-10h15m53s","赤纬D(J2000)":"-10.264722222222222","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.6","方位角":"134","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"568","标识":"NGC568","M标识":"NGC568","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h27m56.9s","赤经D(J2000)":"1.4658055555555556","赤纬(J2000)":"-35h43m3s","赤纬D(J2000)":"-35.7175","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.2","短轴(分)":"1.3","方位角":"140","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"569","标识":"NGC569","M标识":"NGC569","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h29m7.1s","赤经D(J2000)":"1.4853055555555557","赤纬(J2000)":"+11h7m54s","赤纬D(J2000)":"11.131666666666668","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1","短轴(分)":"0.5","方位角":"163","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"570","标识":"NGC570","M标识":"NGC570","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h28m58.5s","赤经D(J2000)":"1.4829166666666669","赤纬(J2000)":"-0h56m55s","赤纬D(J2000)":"-0.9486111111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"175","详细描述":"very faint, pretty large, round, much brighter middle and nucleus","简略描述":"vF, pL, R, mbMN"},{"ID":"571","标识":"NGC571","M标识":"NGC571","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h29m56.1s","赤经D(J2000)":"1.4989166666666667","赤纬(J2000)":"+32h30m3s","赤纬D(J2000)":"32.50083333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"very faint, pretty small, 13th or 14th magnitude star to southwest","简略描述":"vF, pS, * 13·14 sp"},{"ID":"572","标识":"NGC572","M标识":"NGC572","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h28m36.4s","赤经D(J2000)":"1.476777777777778","赤纬(J2000)":"-39h18m26s","赤纬D(J2000)":"-39.30722222222222","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"124","详细描述":"extremely faint, small, attached to small (faint) star, bright star near","简略描述":"eF, S, att to S *, B * nr"},{"ID":"573","标识":"NGC573","M标识":"NGC573","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h30m49.3s","赤经D(J2000)":"1.5136944444444445","赤纬(J2000)":"+41h15m26s","赤纬D(J2000)":"41.257222222222225","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, round, gradually brighter middle","简略描述":"vF, vS, R, gbM"},{"ID":"574","标识":"NGC574","M标识":"NGC574","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h29m3.1s","赤经D(J2000)":"1.4841944444444446","赤纬(J2000)":"-35h35m55s","赤纬D(J2000)":"-35.59861111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"2","详细描述":"very small, double star involved at position angle 225°","简略描述":"vS, D * pos 225° inv"},{"ID":"575","标识":"NGC575","M标识":"NGC575","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h30m46.4s","赤经D(J2000)":"1.512888888888889","赤纬(J2000)":"+21h26m25s","赤纬D(J2000)":"21.440277777777776","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"66","详细描述":"extremely faint, pretty large, irregularly round","简略描述":"eF, pL, iR"},{"ID":"576","标识":"NGC576","M标识":"NGC576","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h28m57.4s","赤经D(J2000)":"1.4826111111111113","赤纬(J2000)":"-51h35m53s","赤纬D(J2000)":"-51.59805555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.8","方位角":"18","详细描述":"faint, small, round, brighter middle, among 11th magnitude stars","简略描述":"F, S, R, bM, am st 11"},{"ID":"577","标识":"NGC577","M标识":"NGC577","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h30m40.6s","赤经D(J2000)":"1.5112777777777777","赤纬(J2000)":"-1h59m39s","赤纬D(J2000)":"-1.9941666666666666","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"140","详细描述":"faint","简略描述":"F"},{"ID":"578","标识":"NGC578","M标识":"NGC578","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h30m28.9s","赤经D(J2000)":"1.5080277777777777","赤纬(J2000)":"-22h40m0s","赤纬D(J2000)":"-22.666666666666668","可见光星等V":"10.9","摄影(蓝光)星等B":"11.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"4.8","短轴(分)":"3","方位角":"110","详细描述":"bright, large, pretty much extended, gradually pretty much brighter middle","简略描述":"B, L, pmE, gpmbM"},{"ID":"579","标识":"NGC579","M标识":"NGC579","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h31m46.7s","赤经D(J2000)":"1.5296388888888888","赤纬(J2000)":"+33h36m52s","赤纬D(J2000)":"33.614444444444445","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"150","详细描述":"very faint, pretty large, gradually brighter middle","简略描述":"vF, pL, gbM"},{"ID":"580","标识":"NGC580","M标识":"NGC580","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h30m40.6s","赤经D(J2000)":"1.5112777777777777","赤纬(J2000)":"-1h59m39s","赤纬D(J2000)":"-1.9941666666666666","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"140","详细描述":"faint","简略描述":"pF, pS, R"},{"ID":"581","标识":"NGC581","M标识":"M103","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h33m23s","赤经D(J2000)":"1.556388888888889","赤纬(J2000)":"+60h39m30s","赤纬D(J2000)":"60.65833333333333","可见光星等V":"7.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, bright, round, rich, stars from 10th to 11th magnitude","简略描述":"Cl, pL, B, R, Ri, st 10…11"},{"ID":"582","标识":"NGC582","M标识":"NGC582","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h31m58.2s","赤经D(J2000)":"1.5328333333333333","赤纬(J2000)":"+33h28m32s","赤纬D(J2000)":"33.47555555555556","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.2","短轴(分)":"0.6","方位角":"58","详细描述":"very faint, pretty large, pretty much extended, 12th magnitude star to west","简略描述":"vF, pL, pmE, * 12 p"},{"ID":"583","标识":"NGC583","M标识":"NGC583","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h29m44.1s","赤经D(J2000)":"1.4955833333333335","赤纬(J2000)":"-18h20m22s","赤纬D(J2000)":"-18.339444444444442","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"40","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"584","标识":"NGC584","M标识":"NGC584","拓展名":"","组件":"","Class":"I 100","业余排名":"6","中文名":"小主轴星系","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h31m20.5s","赤经D(J2000)":"1.522361111111111","赤纬(J2000)":"-6h52m2s","赤纬D(J2000)":"-6.867222222222223","可见光星等V":"10.5","摄影(蓝光)星等B":"11.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"4.1","短轴(分)":"2","方位角":"72","详细描述":"very bright, pretty large, round, much brighter middle, western of 2","简略描述":"vB, pL, R, mbM, p of 2"},{"ID":"585","标识":"NGC585","M标识":"NGC585","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h31m42.2s","赤经D(J2000)":"1.5283888888888888","赤纬(J2000)":"-0h55m58s","赤纬D(J2000)":"-0.9327777777777777","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.2","短轴(分)":"0.5","方位角":"86","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"586","标识":"NGC586","M标识":"NGC586","拓展名":"","组件":"","Class":"III 431","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h31m36.8s","赤经D(J2000)":"1.5268888888888887","赤纬(J2000)":"-6h53m35s","赤纬D(J2000)":"-6.893055555555555","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"0","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"587","标识":"NGC587","M标识":"NGC587","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h32m33.3s","赤经D(J2000)":"1.5425833333333332","赤纬(J2000)":"+35h21m30s","赤纬D(J2000)":"35.358333333333334","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.2","短轴(分)":"0.8","方位角":"67","详细描述":"very very faint, small, perhaps a small cluster","简略描述":"vvF, S, ? S Cl"},{"ID":"588","标识":"NGC588","M标识":"NGC588","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h32m45.7s","赤经D(J2000)":"1.5460277777777776","赤纬(J2000)":"+30h38m56s","赤纬D(J2000)":"30.648888888888887","可见光星等V":"13.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.65","短轴(分)":"","方位角":"","详细描述":"faint, western of 2","简略描述":"F, p of 2"},{"ID":"589","标识":"NGC589","M标识":"NGC589","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h32m39.9s","赤经D(J2000)":"1.5444166666666665","赤纬(J2000)":"-12h2m32s","赤纬D(J2000)":"-12.042222222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"90","详细描述":"very faint, small, round, gradually brighter middle and nucleus, 10th magnitude star 2 arcmin to southwest","简略描述":"vF, S, R, gbMN, * 10 sp 2'"},{"ID":"590","标识":"NGC590","M标识":"NGC590","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h33m40.7s","赤经D(J2000)":"1.5613055555555555","赤纬(J2000)":"+44h55m45s","赤纬D(J2000)":"44.92916666666667","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.6","短轴(分)":"1.3","方位角":"150","详细描述":"faint, very small, partially resolved? perhaps some stars seen?","简略描述":"F, vS, rr ?"},{"ID":"591","标识":"NGC591","M标识":"NGC591","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h33m31.1s","赤经D(J2000)":"1.558638888888889","赤纬(J2000)":"+35h40m6s","赤纬D(J2000)":"35.66833333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"1","方位角":"5","详细描述":"extremely faint, pretty small, round, a little brighter middle, bright star to southeast","简略描述":"eF, pS, R, lbM, B * sf"},{"ID":"592","标识":"NGC592","M标识":"NGC592","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h33m12s","赤经D(J2000)":"1.5533333333333335","赤纬(J2000)":"+30h38m47s","赤纬D(J2000)":"30.64638888888889","可见光星等V":"13","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, eastern of 2","简略描述":"F, pL, f of 2"},{"ID":"593","标识":"NGC593","M标识":"NGC593","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h32m20.6s","赤经D(J2000)":"1.5390555555555554","赤纬(J2000)":"-12h21m16s","赤纬D(J2000)":"-12.354444444444445","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.2","方位角":"12","详细描述":"a very small cluster, a little extended, nebulous","简略描述":"vS, Cl, lE, nebulous"},{"ID":"594","标识":"NGC594","M标识":"NGC594","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h32m57s","赤经D(J2000)":"1.5491666666666666","赤纬(J2000)":"-16h32m7s","赤纬D(J2000)":"-16.53527777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"32","详细描述":"faint, pretty small, extended, gradually a little brighter middle","简略描述":"F, pS, E, glbM"},{"ID":"595","标识":"NGC595","M标识":"NGC595","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h33m34s","赤经D(J2000)":"1.5594444444444444","赤纬(J2000)":"+30h41m32s","赤纬D(J2000)":"30.692222222222224","可见光星等V":"13.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, involved in M33","简略描述":"vF, S, R, inv in M 33"},{"ID":"596","标识":"NGC596","M标识":"NGC596","拓展名":"","组件":"","Class":"II 4","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h32m52s","赤经D(J2000)":"1.5477777777777777","赤纬(J2000)":"-7h1m55s","赤纬D(J2000)":"-7.031944444444444","可见光星等V":"10.9","摄影(蓝光)星等B":"11.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.2","短轴(分)":"2","方位角":"40","详细描述":"pretty bright, round, brighter middle, mottled but not resolved, 6th magnitude star 12 arcmin to east","简略描述":"pB, R, bM, r, * 6 f 12'"},{"ID":"597","标识":"NGC597","M标识":"NGC597","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h32m14.9s","赤经D(J2000)":"1.5374722222222221","赤纬(J2000)":"-33h29m49s","赤纬D(J2000)":"-33.496944444444445","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"23","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"598","标识":"NGC598","M标识":"M33","拓展名":"","组件":"","Class":"V 17","业余排名":"1","中文名":"三角座星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h33m51.9s","赤经D(J2000)":"1.5644166666666668","赤纬(J2000)":"+30h39m29s","赤纬D(J2000)":"30.658055555555553","可见光星等V":"5.7","摄影(蓝光)星等B":"6.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"68.7","短轴(分)":"41.6","方位角":"23","详细描述":"a remarkable object, extremely bright, extremely large, round, very gradually much brighter middle and nucleus","简略描述":"! eB, cL, R, vgbMN"},{"ID":"599","标识":"NGC599","M标识":"NGC599","拓展名":"","组件":"","Class":"II 473","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h32m53.7s","赤经D(J2000)":"1.54825","赤纬(J2000)":"-12h11m27s","赤纬D(J2000)":"-12.190833333333334","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"135","详细描述":"faint, small, irregular figure, extremely mottled but not resolved","简略描述":"F, S, iF, er"},{"ID":"600","标识":"NGC600","M标识":"NGC600","拓展名":"","组件":"","Class":"III 432","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h33m5.4s","赤经D(J2000)":"1.5515","赤纬(J2000)":"-7h18m44s","赤纬D(J2000)":"-7.312222222222222","可见光星等V":"12.4","摄影(蓝光)星等B":"12.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"2.8","短轴(分)":"2.1","方位角":"18","详细描述":"most extremely faint","简略描述":"eeF"},{"ID":"601","标识":"NGC601","M标识":"NGC601","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h33m6.5s","赤经D(J2000)":"1.5518055555555557","赤纬(J2000)":"-12h12m30s","赤纬D(J2000)":"-12.208333333333332","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, round, 4 arcmin southeast of II 473","简略描述":"vF, vS, R, 4' sf II 473"},{"ID":"602","标识":"NGC602","M标识":"NGC602","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"水蛇座","星座(En)":"HYI","赤经(J2000)":"1h29m26.4s","赤经D(J2000)":"1.4906666666666668","赤纬(J2000)":"-73h33m26s","赤纬D(J2000)":"-73.55722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"34","短轴(分)":"","方位角":"","详细描述":"bright, small, round, pretty suddenly brighter middle similar to a star, mottled but not resolved","简略描述":"B, S, R, psbM * r"},{"ID":"603","标识":"NGC603","M标识":"NGC603","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h34m44.2s","赤经D(J2000)":"1.5789444444444445","赤纬(J2000)":"+30h13m57s","赤纬D(J2000)":"30.232499999999998","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"small nebula or cluster with 3 stars involved","简略描述":"S neb or Cl with 3 st inv"},{"ID":"604","标识":"NGC604","M标识":"NGC604","拓展名":"","组件":"","Class":"III 150","业余排名":"6.5","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h34m32.6s","赤经D(J2000)":"1.5757222222222222","赤纬(J2000)":"+30h47m4s","赤纬D(J2000)":"30.784444444444446","可见光星等V":"12","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.95","短轴(分)":"","方位角":"","详细描述":"bright, very small, round, very very little brighter middle","简略描述":"B, vS, R, vvlbM"},{"ID":"605","标识":"NGC605","M标识":"NGC605","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h35m2.3s","赤经D(J2000)":"1.5839722222222223","赤纬(J2000)":"+41h14m52s","赤纬D(J2000)":"41.24777777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.2","短轴(分)":"1.1","方位角":"145","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"606","标识":"NGC606","M标识":"NGC606","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h34m50.3s","赤经D(J2000)":"1.580638888888889","赤纬(J2000)":"+21h25m5s","赤纬D(J2000)":"21.418055555555558","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"114","详细描述":"extremely faint, pretty small, round, very little brighter middle, mottled but not resolved?","简略描述":"eF, pS, R, vlbM, r ?"},{"ID":"607","标识":"NGC607","M标识":"NGC607","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h34m16.4s","赤经D(J2000)":"1.5712222222222223","赤纬(J2000)":"-7h24m41s","赤纬D(J2000)":"-7.411388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"an 11th magnitude star, nebulous? (Auwers 15)","简略描述":"* 11, nebulous ? (Auw 15)"},{"ID":"608","标识":"NGC608","M标识":"NGC608","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h35m28.1s","赤经D(J2000)":"1.591138888888889","赤纬(J2000)":"+33h39m23s","赤纬D(J2000)":"33.656388888888884","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"32","详细描述":"very faint, pretty suddenly brighter middle, stellar","简略描述":"vF, psbM, stellar"},{"ID":"609","标识":"NGC609","M标识":"NGC609","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3r","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h36m23.7s","赤经D(J2000)":"1.6065833333333335","赤纬(J2000)":"+64h32m12s","赤纬D(J2000)":"64.53666666666666","可见光星等V":"11","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, small, pretty rich, stars from 14th magnitude downwards","简略描述":"Cl, S, pRi, st 14 .."},{"ID":"610","标识":"NGC610","M标识":"NGC610","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h33m33s","赤经D(J2000)":"1.5591666666666668","赤纬(J2000)":"-20h8m38s","赤纬D(J2000)":"-20.14388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, round, very gradually brighter middle, 10th magnitude star 2 arcmin to west","简略描述":"eF, vS, R, vgbM, * 10 p 2'"},{"ID":"611","标识":"NGC611","M标识":"NGC611","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h33m33s","赤经D(J2000)":"1.5591666666666668","赤纬(J2000)":"-20h7m38s","赤纬D(J2000)":"-20.127222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, (perhaps a faint star?), 30 arcsec northeast of last","简略描述":"eF, vS, (? F *), 30\" nf last"},{"ID":"612","标识":"NGC612","M标识":"NGC612","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h33m57.7s","赤经D(J2000)":"1.5660277777777778","赤纬(J2000)":"-36h29m35s","赤纬D(J2000)":"-36.49305555555556","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"172","详细描述":"faint, very small, round, 12th magnitude star to west","简略描述":"F, vS, R, * 12 p"},{"ID":"613","标识":"NGC613","M标识":"NGC613","拓展名":"","组件":"","Class":"I 281","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h34m18.4s","赤经D(J2000)":"1.5717777777777777","赤纬(J2000)":"-29h25m7s","赤纬D(J2000)":"-29.41861111111111","可见光星等V":"10.1","摄影(蓝光)星等B":"10.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"5.5","短轴(分)":"4.2","方位角":"120","详细描述":"very bright, very large, very much extended 118°, suddenly brighter middle, 10th magnitude star to northeast","简略描述":"vB, vL, vmE 118°, sbM, * 10 nf"},{"ID":"614","标识":"NGC614","M标识":"NGC614","拓展名":"","组件":"","Class":"III 174","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h35m52.2s","赤经D(J2000)":"1.5978333333333334","赤纬(J2000)":"+33h40m55s","赤纬D(J2000)":"33.68194444444444","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"pretty faint, pretty suddenly brighter middle, stellar","简略描述":"pF, psbM, stellar"},{"ID":"615","标识":"NGC615","M标识":"NGC615","拓展名":"","组件":"","Class":"II 282","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h35m5.7s","赤经D(J2000)":"1.5849166666666668","赤纬(J2000)":"-7h20m25s","赤纬D(J2000)":"-7.340277777777778","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.7","短轴(分)":"0.9","方位角":"155","详细描述":"pretty bright, pretty large, irregularly a little extended, gradually brighter middle, mottled but not resolved, 8th magnitude star 10 arcmin to northwest","简略描述":"pB, pL, ilE, gbM, r, * 8 np 10'"},{"ID":"616","标识":"NGC616","M标识":"NGC616","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h36m4.2s","赤经D(J2000)":"1.6011666666666668","赤纬(J2000)":"+33h46m15s","赤纬D(J2000)":"33.770833333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebulous double star, 8th magnitude star to northwest","简略描述":"Neb D *, * 8 np"},{"ID":"617","标识":"NGC617","M标识":"NGC617","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h34m2.5s","赤经D(J2000)":"1.5673611111111112","赤纬(J2000)":"-9h46m25s","赤纬D(J2000)":"-9.773611111111112","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, small, a little extended","简略描述":"eF, S, lE"},{"ID":"618","标识":"NGC618","M标识":"NGC618","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h41m36.8s","赤经D(J2000)":"1.6935555555555555","赤纬(J2000)":"+33h17m42s","赤纬D(J2000)":"33.294999999999995","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty suddenly brighter middle, stellar","简略描述":"pB, pL, bM (? Place)"},{"ID":"619","标识":"NGC619","M标识":"NGC619","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h34m51.7s","赤经D(J2000)":"1.5810277777777777","赤纬(J2000)":"-36h29m22s","赤纬D(J2000)":"-36.489444444444445","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.5","短轴(分)":"1","方位角":"130","详细描述":"most extremely faint, very small, round, western of 2","简略描述":"eeF, vS, R, p of 2"},{"ID":"620","标识":"NGC620","M标识":"NGC620","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C\/P","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h36m59.6s","赤经D(J2000)":"1.6165555555555557","赤纬(J2000)":"+42h19m22s","赤纬D(J2000)":"42.32277777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.9","方位角":"3","详细描述":"extremely faint, very small, round, a little brighter middle","简略描述":"eF, vS, R, lbM"},{"ID":"621","标识":"NGC621","M标识":"NGC621","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h36m48.9s","赤经D(J2000)":"1.6135833333333334","赤纬(J2000)":"+35h30m45s","赤纬D(J2000)":"35.5125","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"1","方位角":"24","详细描述":"very faint, extremely small, round, brighter middle and nucleus","简略描述":"vF, eS, R, bMN"},{"ID":"622","标识":"NGC622","M标识":"NGC622","拓展名":"","组件":"","Class":"III 454","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h36m0.1s","赤经D(J2000)":"1.6000277777777778","赤纬(J2000)":"+0h39m49s","赤纬D(J2000)":"0.6636111111111112","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1","方位角":"45","详细描述":"extremely faint, pretty large, diffuse","简略描述":"eF, pL, dif"},{"ID":"623","标识":"NGC623","M标识":"NGC623","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h35m6.5s","赤经D(J2000)":"1.585138888888889","赤纬(J2000)":"-36h29m24s","赤纬D(J2000)":"-36.49","可见光星等V":"12.5","摄影(蓝光)星等B":"13.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2","短轴(分)":"1.5","方位角":"94","详细描述":"faint, small, round, eastern of 2","简略描述":"F, S, R, f of 2"},{"ID":"624","标识":"NGC624","M标识":"NGC624","拓展名":"","组件":"","Class":"III 471","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h35m51.2s","赤经D(J2000)":"1.5975555555555556","赤纬(J2000)":"-10h0m11s","赤纬D(J2000)":"-10.003055555555555","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1","方位角":"100","详细描述":"extremely faint, small, among very small (faint) stars","简略描述":"eF, S, am vS st"},{"ID":"625","标识":"NGC625","M标识":"NGC625","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h35m4.4s","赤经D(J2000)":"1.5845555555555557","赤纬(J2000)":"-41h26m15s","赤纬D(J2000)":"-41.4375","可见光星等V":"11.2","摄影(蓝光)星等B":"11.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"5.8","短轴(分)":"1.9","方位角":"92","详细描述":"bright, large, much extended, gradually pretty much brighter middle","简略描述":"B, L, mE, gpmbM"},{"ID":"626","标识":"NGC626","M标识":"NGC626","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h35m11.9s","赤经D(J2000)":"1.586638888888889","赤纬(J2000)":"-39h8m46s","赤纬D(J2000)":"-39.14611111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.2","短轴(分)":"1.7","方位角":"4","详细描述":"pretty faint, small, round, brighter middle","简略描述":"pF, S, R, bM"},{"ID":"627","标识":"NGC627","M标识":"NGC627","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h42m37s","赤经D(J2000)":"1.7102777777777778","赤纬(J2000)":"+33h34m44s","赤纬D(J2000)":"33.57888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty suddenly brighter middle, stellar","简略描述":"vF, R, place doubtful"},{"ID":"628","标识":"NGC628","M标识":"M74","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"幻影星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h36m41.7s","赤经D(J2000)":"1.6115833333333334","赤纬(J2000)":"+15h47m0s","赤纬D(J2000)":"15.783333333333333","可见光星等V":"9.4","摄影(蓝光)星等B":"10","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"10.5","短轴(分)":"9.5","方位角":"25","详细描述":"a globular cluster, faint, very large, round, very gradually then pretty suddenly much brighter middle, partially resolved, some stars seen","简略描述":"globular, F, vL, R, vg, psmbM, rr"},{"ID":"629","标识":"NGC629","M标识":"NGC629","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h39m2.1s","赤经D(J2000)":"1.6505833333333333","赤纬(J2000)":"+72h52m6s","赤纬D(J2000)":"72.86833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"an irregular figure, 3 stars plus nebulosity (Auwers 15)","简略描述":"iF, 3 st + neb (Auw 16)"},{"ID":"630","标识":"NGC630","M标识":"NGC630","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h35m36.6s","赤经D(J2000)":"1.5935000000000001","赤纬(J2000)":"-39h21m28s","赤纬D(J2000)":"-39.35777777777778","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"60","详细描述":"pretty faint, small, round, brighter middle","简略描述":"pF, S, R, bM"},{"ID":"631","标识":"NGC631","M标识":"NGC631","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h36m47s","赤经D(J2000)":"1.6130555555555557","赤纬(J2000)":"+5h50m9s","赤纬D(J2000)":"5.835833333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.8","方位角":"123","详细描述":"very faint, small, gradually brighter middle","简略描述":"vF, S, gbM"},{"ID":"632","标识":"NGC632","M标识":"NGC632","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h37m17.5s","赤经D(J2000)":"1.621527777777778","赤纬(J2000)":"+5h52m38s","赤纬D(J2000)":"5.877222222222223","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1","短轴(分)":"0.8","方位角":"170","详细描述":"pretty bright, small, round, pretty suddenly brighter middle","简略描述":"pB, S, R, psbM"},{"ID":"633","标识":"NGC633","M标识":"NGC633","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h36m23.3s","赤经D(J2000)":"1.6064722222222223","赤纬(J2000)":"-37h19m15s","赤纬D(J2000)":"-37.32083333333334","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"148","详细描述":"pretty bright, small, round, gradually brighter middle, double star to northwest","简略描述":"pB, S, R, gbM, ** np"},{"ID":"634","标识":"NGC634","M标识":"NGC634","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h38m18.6s","赤经D(J2000)":"1.6385","赤纬(J2000)":"+35h21m53s","赤纬D(J2000)":"35.36472222222223","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.1","短轴(分)":"0.6","方位角":"167","详细描述":"extremely faint, extremely small, several faint stars involved","简略描述":"eF, eS, sev F st inv"},{"ID":"635","标识":"NGC635","M标识":"NGC635","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h38m17.9s","赤经D(J2000)":"1.6383055555555555","赤纬(J2000)":"-22h55m44s","赤纬D(J2000)":"-22.92888888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"636","标识":"NGC636","M标识":"NGC636","拓展名":"","组件":"","Class":"II 283","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h39m6.5s","赤经D(J2000)":"1.6518055555555555","赤纬(J2000)":"-7h30m44s","赤纬D(J2000)":"-7.512222222222222","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.8","短轴(分)":"2","方位角":"40","详细描述":"pretty bright, very small, round, much brighter middle, mottled but not resolved","简略描述":"pB, vS, R, mbM, r"},{"ID":"637","标识":"NGC637","M标识":"NGC637","拓展名":"","组件":"","Class":"VII 49","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h43m3s","赤经D(J2000)":"1.7175","赤纬(J2000)":"+64h2m12s","赤纬D(J2000)":"64.03666666666666","可见光星等V":"8.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty small, bright and very faint stars","简略描述":"Cl, pS, B & vF st"},{"ID":"638","标识":"NGC638","M标识":"NGC638","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h39m37.8s","赤经D(J2000)":"1.6604999999999999","赤纬(J2000)":"+7h14m14s","赤纬D(J2000)":"7.237222222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"20","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"639","标识":"NGC639","M标识":"NGC639","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h38m59.1s","赤经D(J2000)":"1.64975","赤纬(J2000)":"-29h55m30s","赤纬D(J2000)":"-29.925","可见光星等V":"14.1","摄影(蓝光)星等B":"14.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1","短轴(分)":"0.2","方位角":"31","详细描述":"very faint, very small, western of 2","简略描述":"vF, vS, p of 2"},{"ID":"640","标识":"NGC640","M标识":"NGC640","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h39m24.9s","赤经D(J2000)":"1.6569166666666666","赤纬(J2000)":"-9h24m4s","赤纬D(J2000)":"-9.401111111111112","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"145","详细描述":"extremely faint, small, a little extended 170°, a little brighter middle and nucleus, a star about 10 seconds of time and 4 arcmin distant","简略描述":"eF, S, lE 170°, lbMN, * 10 s 4'"},{"ID":"641","标识":"NGC641","M标识":"NGC641","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h38m39s","赤经D(J2000)":"1.6441666666666666","赤纬(J2000)":"-42h31m39s","赤纬D(J2000)":"-42.527499999999996","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"4","详细描述":"faint, small, round, gradually pretty much brighter middle, western of 2","简略描述":"F, S, R, gpmbM, p of 2"},{"ID":"642","标识":"NGC642","M标识":"NGC642","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h39m6.2s","赤经D(J2000)":"1.651722222222222","赤纬(J2000)":"-29h54m55s","赤纬D(J2000)":"-29.915277777777778","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2","短轴(分)":"1.1","方位角":"31","详细描述":"very faint, pretty small, round, gradually brighter middle, star near to east, eastern of 2","简略描述":"vF, pS, R, gbM, * f, nr, f of 2"},{"ID":"643","标识":"NGC643","M标识":"NGC643","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"水蛇座","星座(En)":"HYI","赤经(J2000)":"1h35m0.7s","赤经D(J2000)":"1.5835277777777779","赤纬(J2000)":"-75h33m24s","赤纬D(J2000)":"-75.55666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.5","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, round, very gradually a little brighter middle","简略描述":"vF, pS, R, vglbM"},{"ID":"644","标识":"NGC644","M标识":"NGC644","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h38m52.8s","赤经D(J2000)":"1.648","赤纬(J2000)":"-42h35m8s","赤纬D(J2000)":"-42.58555555555556","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"155","详细描述":"faint, small, very little extended, gradually a little brighter middle, eastern of 2","简略描述":"F, S, vlE, glbM, f of 2"},{"ID":"645","标识":"NGC645","M标识":"NGC645","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h40m8.8s","赤经D(J2000)":"1.669111111111111","赤纬(J2000)":"+5h43m34s","赤纬D(J2000)":"5.726111111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.6","短轴(分)":"1.2","方位角":"125","详细描述":"faint, pretty large, much extended","简略描述":"F, pL, mE"},{"ID":"646","标识":"NGC646","M标识":"NGC646","拓展名":"","组件":"1","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"水蛇座","星座(En)":"HYI","赤经(J2000)":"1h37m21.1s","赤经D(J2000)":"1.6225277777777778","赤纬(J2000)":"-64h53m43s","赤纬D(J2000)":"-64.89527777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"2","短轴(分)":"1.5","方位角":"78","详细描述":"very faint, irregularly round, very gradually a little brighter middle","简略描述":"vF, iR, vglbM"},{"ID":"647","标识":"NGC647","M标识":"NGC647","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h39m56.1s","赤经D(J2000)":"1.6655833333333332","赤纬(J2000)":"-9h14m31s","赤纬D(J2000)":"-9.241944444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"3","详细描述":"extremely faint, pretty small, a little extended 160°, brighter middle and nucleus, 8th magnitude star 16 seconds of time to east","简略描述":"eF, pS, lE 160°, bMN, * 8 f 16s"},{"ID":"648","标识":"NGC648","M标识":"NGC648","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h38m39.8s","赤经D(J2000)":"1.644388888888889","赤纬(J2000)":"-17h49m52s","赤纬D(J2000)":"-17.83111111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"114","详细描述":"very faint, very small, very little extended, suddenly brighter middle and nucleus","简略描述":"vF, vS, vlE, sbMN"},{"ID":"649","标识":"NGC649","M标识":"NGC649","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h40m7.5s","赤经D(J2000)":"1.66875","赤纬(J2000)":"-9h16m18s","赤纬D(J2000)":"-9.271666666666668","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"20","详细描述":"extremely faint, small, extended 0°, brighter middle or double star?","简略描述":"eF, S, E 0°, bM D * ?"},{"ID":"650","标识":"NGC650","M标识":"M76","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"小哑铃星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"1h42m18.1s","赤经D(J2000)":"1.7050277777777778","赤纬(J2000)":"+51h34m17s","赤纬D(J2000)":"51.57138888888889","可见光星等V":"10.1","摄影(蓝光)星等B":"12.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.12","短轴(分)":"","方位角":"","详细描述":"very bright, eastern of double nebula","简略描述":"vB, p of D neb"},{"ID":"651","标识":"NGC651","M标识":"NGC651","拓展名":"","组件":"","Class":"I 193","业余排名":"7","中文名":"小哑铃星云","类型":"PN","含重复类型":"Dup","形态":"PN","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"1h42m22s","赤经D(J2000)":"1.7061111111111111","赤纬(J2000)":"+51h34m50s","赤纬D(J2000)":"51.580555555555556","可见光星等V":"10.1","摄影(蓝光)星等B":"12.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.08","短轴(分)":"","方位角":"","详细描述":"very bright, western of double nebula","简略描述":"vB, f of D neb"},{"ID":"652","标识":"NGC652","M标识":"NGC652","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h40m43.2s","赤经D(J2000)":"1.6786666666666665","赤纬(J2000)":"+7h59m0s","赤纬D(J2000)":"7.983333333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.6","方位角":"55","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"653","标识":"NGC653","M标识":"NGC653","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h42m25.6s","赤经D(J2000)":"1.707111111111111","赤纬(J2000)":"+35h38m19s","赤纬D(J2000)":"35.63861111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1.5","短轴(分)":"0.2","方位角":"39","详细描述":"very faint, pretty large, much extended, a little brighter middle, several faint stars involved","简略描述":"vF, pL, mE, lbM, sev F st inv"},{"ID":"654","标识":"NGC654","M标识":"NGC654","拓展名":"","组件":"","Class":"VII 46","业余排名":"5","中文名":"迷蝶星团","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h43m59.4s","赤经D(J2000)":"1.7331666666666667","赤纬(J2000)":"+61h52m58s","赤纬D(J2000)":"61.882777777777775","可见光星等V":"6.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, irregular figure, rich, one magnitude 6 or 7 star, stars from 11th to 14th magnitude","简略描述":"Cl, iF, Ri, one * 6·7, st 11…14"},{"ID":"655","标识":"NGC655","M标识":"NGC655","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h41m55.1s","赤经D(J2000)":"1.6986388888888888","赤纬(J2000)":"-13h4m57s","赤纬D(J2000)":"-13.0825","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"78","详细描述":"extremely faint, extremely small, gradually brighter middle and nucleus","简略描述":"eF, eS, gbMN"},{"ID":"656","标识":"NGC656","M标识":"NGC656","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h42m27.3s","赤经D(J2000)":"1.7075833333333332","赤纬(J2000)":"+26h8m36s","赤纬D(J2000)":"26.143333333333334","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"35","详细描述":"faint, very small, round, mottled but not resolved?","简略描述":"F, vS, R, r ?"},{"ID":"657","标识":"NGC657","M标识":"NGC657","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h43m29.8s","赤经D(J2000)":"1.7249444444444446","赤纬(J2000)":"+55h52m30s","赤纬D(J2000)":"55.875","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, 12th magnitude stars","简略描述":"Cl, pRi, st 12"},{"ID":"658","标识":"NGC658","M标识":"NGC658","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h42m9.8s","赤经D(J2000)":"1.7027222222222222","赤纬(J2000)":"+12h36m5s","赤纬D(J2000)":"12.601388888888888","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3","短轴(分)":"1.6","方位角":"23","详细描述":"pretty faint, pretty small, much extended, much brighter middle","简略描述":"pF, pS, mE, mbM"},{"ID":"659","标识":"NGC659","M标识":"NGC659","拓展名":"","组件":"","Class":"VIII 65","业余排名":"6","中文名":"阴阳星团","类型":"OCL","含重复类型":"OCL","形态":"III1p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h44m24s","赤经D(J2000)":"1.74","赤纬(J2000)":"+60h40m12s","赤纬D(J2000)":"60.669999999999995","可见光星等V":"7.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, a little rich, bright stars","简略描述":"Cl, lRi, st B"},{"ID":"660","标识":"NGC660","M标识":"NGC660","拓展名":"","组件":"","Class":"II 253","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa\/PRG","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h43m1.8s","赤经D(J2000)":"1.7171666666666667","赤纬(J2000)":"+13h38m37s","赤纬D(J2000)":"13.643611111111111","可见光星等V":"11.2","摄影(蓝光)星等B":"12","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"8.3","短轴(分)":"3.2","方位角":"170","详细描述":"pretty bright, pretty large, extended, brighter middle, mottled but not resolved","简略描述":"pB, pL, E, bM, r"},{"ID":"661","标识":"NGC661","M标识":"NGC661","拓展名":"","组件":"","Class":"II 610","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h44m14.6s","赤经D(J2000)":"1.7373888888888889","赤纬(J2000)":"+28h42m24s","赤纬D(J2000)":"28.706666666666667","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"60","详细描述":"faint, small, round, brighter middle, mottled but not resolved","简略描述":"F, S, R, bM, r"},{"ID":"662","标识":"NGC662","M标识":"NGC662","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h44m35.5s","赤经D(J2000)":"1.7431944444444445","赤纬(J2000)":"+37h41m47s","赤纬D(J2000)":"37.69638888888888","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"20","详细描述":"faint, small, round, much brighter middle","简略描述":"F, S, R, mbM"},{"ID":"663","标识":"NGC663","M标识":"NGC663","拓展名":"","组件":"","Class":"VI 31","业余排名":"2","中文名":"割草机星团","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h46m17s","赤经D(J2000)":"1.771388888888889","赤纬(J2000)":"+61h13m6s","赤纬D(J2000)":"61.218333333333334","可见光星等V":"7.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, large, extremely rich, pretty large (bright) stars","简略描述":"Cl, B, L, eRi, st pL"},{"ID":"664","标识":"NGC664","M标识":"NGC664","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h43m45.9s","赤经D(J2000)":"1.7294166666666668","赤纬(J2000)":"+4h13m21s","赤纬D(J2000)":"4.2225","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"65","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"665","标识":"NGC665","M标识":"NGC665","拓展名":"","组件":"","Class":"II 588","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h44m56s","赤经D(J2000)":"1.748888888888889","赤纬(J2000)":"+10h25m23s","赤纬D(J2000)":"10.423055555555555","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.4","短轴(分)":"1.6","方位角":"125","详细描述":"faint, small, a little extended, brighter middle, mottled but not resolved","简略描述":"F, S, lE, bM, r"},{"ID":"666","标识":"NGC666","M标识":"NGC666","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h46m6s","赤经D(J2000)":"1.7683333333333333","赤纬(J2000)":"+34h22m29s","赤纬D(J2000)":"34.374722222222225","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"80","详细描述":"very faint star in extremely faint, extremely small nebulosity","简略描述":"vF * in eF, eS neby"},{"ID":"667","标识":"NGC667","M标识":"NGC667","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h44m56.6s","赤经D(J2000)":"1.7490555555555556","赤纬(J2000)":"-22h55m9s","赤纬D(J2000)":"-22.91916666666667","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"86","详细描述":"extremely faint, small, round, 10th magnitude star 100 arcsec to northwest","简略描述":"eF, S, R, * 10 np 100\""},{"ID":"668","标识":"NGC668","M标识":"NGC668","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h46m22.6s","赤经D(J2000)":"1.7729444444444444","赤纬(J2000)":"+36h27m36s","赤纬D(J2000)":"36.46","可见光星等V":"13.1","摄影(蓝光)星等B":"13.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"30","详细描述":"pretty faint, pretty small, round, gradually brighter middle","简略描述":"pF, pS, R, gbM"},{"ID":"669","标识":"NGC669","M标识":"NGC669","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h47m16s","赤经D(J2000)":"1.7877777777777777","赤纬(J2000)":"+35h33m47s","赤纬D(J2000)":"35.56305555555555","可见光星等V":"12.3","摄影(蓝光)星等B":"13.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.1","短轴(分)":"0.6","方位角":"36","详细描述":"pretty faint, pretty large, much extended, gradually brighter middle","简略描述":"pF, pL, mE, gbM"},{"ID":"670","标识":"NGC670","M标识":"NGC670","拓展名":"","组件":"","Class":"II 611","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h47m24.9s","赤经D(J2000)":"1.79025","赤纬(J2000)":"+27h53m10s","赤纬D(J2000)":"27.88611111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.1","短轴(分)":"0.9","方位角":"172","详细描述":"faint, small, a little extended","简略描述":"F, S, lE"},{"ID":"671","标识":"NGC671","M标识":"NGC671","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h46m59.1s","赤经D(J2000)":"1.7830833333333334","赤纬(J2000)":"+13h7m31s","赤纬D(J2000)":"13.125277777777779","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"55","详细描述":"extremely faint, pretty small, round, between star and double star","简略描述":"eF, pS, R, bet D * and *"},{"ID":"672","标识":"NGC672","M标识":"NGC672","拓展名":"","组件":"","Class":"I 157","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h47m54s","赤经D(J2000)":"1.7983333333333331","赤纬(J2000)":"+27h25m58s","赤纬D(J2000)":"27.43277777777778","可见光星等V":"10.9","摄影(蓝光)星等B":"11.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"6","短轴(分)":"2.4","方位角":"65","详细描述":"faint, pretty large, much extended 80°","简略描述":"F, pL, mE 80°"},{"ID":"673","标识":"NGC673","M标识":"NGC673","拓展名":"","组件":"","Class":"II 589","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h48m22.4s","赤经D(J2000)":"1.8062222222222222","赤纬(J2000)":"+11h31m17s","赤纬D(J2000)":"11.52138888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.1","短轴(分)":"1.7","方位角":"0","详细描述":"pretty faint, pretty large, extended, a little brighter middle, 11th magnitude star 3 arcmin to northeast","简略描述":"pF, pL, E, lbM, * 11 nf 3'"},{"ID":"674","标识":"NGC674","M标识":"NGC674","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h51m17.5s","赤经D(J2000)":"1.8548611111111113","赤纬(J2000)":"+22h21m27s","赤纬D(J2000)":"22.3575","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"4","短轴(分)":"1.3","方位角":"105","详细描述":"pretty bright, very much extended, 14th magntude star 8 seconds of time to east","简略描述":"pB, vmE, * 14 f 8s"},{"ID":"675","标识":"NGC675","M标识":"NGC675","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h49m8.5s","赤经D(J2000)":"1.8190277777777777","赤纬(J2000)":"+13h3m35s","赤纬D(J2000)":"13.059722222222224","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.4","方位角":"99","详细描述":"very faint, small, round, a little brighter middle, southwestern of 2","简略描述":"vF, S, R, lbM, sp of 2"},{"ID":"676","标识":"NGC676","M标识":"NGC676","拓展名":"","组件":"","Class":"IV 42","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h48m57.2s","赤经D(J2000)":"1.8158888888888889","赤纬(J2000)":"+5h54m22s","赤纬D(J2000)":"5.9061111111111115","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"4","短轴(分)":"1","方位角":"172","详细描述":"very faint, extended 161°, suddenly brighter middle equivalent to 9th magnitude star","简略描述":"vF, E 161°, sbM * 9"},{"ID":"677","标识":"NGC677","M标识":"NGC677","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h49m14s","赤经D(J2000)":"1.8205555555555555","赤纬(J2000)":"+13h3m21s","赤纬D(J2000)":"13.055833333333334","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2","短轴(分)":"2","方位角":"","详细描述":"most extremely faint, small, round, northeastern of 2","简略描述":"eeF, S, R, nf of 2"},{"ID":"678","标识":"NGC678","M标识":"NGC678","拓展名":"","组件":"","Class":"II 228","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h49m24.8s","赤经D(J2000)":"1.8235555555555556","赤纬(J2000)":"+21h59m49s","赤纬D(J2000)":"21.996944444444445","可见光星等V":"12.2","摄影(蓝光)星等B":"13.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4.5","短轴(分)":"0.8","方位角":"78","详细描述":"pretty bright, small, irregularly round, much brighter middle, western of 2","简略描述":"pB, S, iR, mbM, p of 2"},{"ID":"679","标识":"NGC679","M标识":"NGC679","拓展名":"","组件":"","Class":"III 175","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h49m43.7s","赤经D(J2000)":"1.8288055555555556","赤纬(J2000)":"+35h47m10s","赤纬D(J2000)":"35.78611111111111","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.9","短轴(分)":"1.9","方位角":"","详细描述":"faint, stellar","简略描述":"F, Stellar"},{"ID":"680","标识":"NGC680","M标识":"NGC680","拓展名":"","组件":"","Class":"II 229","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h49m47.3s","赤经D(J2000)":"1.8298055555555555","赤纬(J2000)":"+21h58m16s","赤纬D(J2000)":"21.97111111111111","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"156","详细描述":"pretty bright, small, irregularly round, much brighter middle, eastern of 2","简略描述":"pB, S, iR, mbM, f of 2"},{"ID":"681","标识":"NGC681","M标识":"NGC681","拓展名":"","组件":"","Class":"II 481","业余排名":"10","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h49m10.8s","赤经D(J2000)":"1.8196666666666665","赤纬(J2000)":"-10h25m38s","赤纬D(J2000)":"-10.427222222222222","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.7","短轴(分)":"1.8","方位角":"60","详细描述":"pretty faint, considerably large, round, gradually a little brighter middle, small (faint) star 90 arcsec to west","简略描述":"pF, cL, R, glbM, S * p 90\""},{"ID":"682","标识":"NGC682","M标识":"NGC682","拓展名":"","组件":"","Class":"II 501","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h49m4.4s","赤经D(J2000)":"1.8178888888888889","赤纬(J2000)":"-14h58m28s","赤纬D(J2000)":"-14.974444444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"95","详细描述":"considerably faint, small, round, gradually very little brighter middle","简略描述":"cF, S, R, gvlbM"},{"ID":"683","标识":"NGC683","M标识":"NGC683","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h49m46.6s","赤经D(J2000)":"1.829611111111111","赤纬(J2000)":"+11h42m7s","赤纬D(J2000)":"11.701944444444443","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"extremely faint, two 14th magnitude stars 90 arcsec to west","简略描述":"eF, 2 st 14 p 90\""},{"ID":"684","标识":"NGC684","M标识":"NGC684","拓展名":"","组件":"","Class":"II 612","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h50m14.1s","赤经D(J2000)":"1.83725","赤纬(J2000)":"+27h38m46s","赤纬D(J2000)":"27.64611111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.2","短轴(分)":"0.6","方位角":"87","详细描述":"faint, very little extended, 13th magnitude star 100 arcsec to east","简略描述":"F, vlE, * 13 f 100\""},{"ID":"685","标识":"NGC685","M标识":"NGC685","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"1h47m42.8s","赤经D(J2000)":"1.795222222222222","赤纬(J2000)":"-52h45m43s","赤纬D(J2000)":"-52.761944444444445","可见光星等V":"11","摄影(蓝光)星等B":"11.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.6","短轴(分)":"3.1","方位角":"74","详细描述":"faint, very large, round, very gradually very little brighter middle","简略描述":"F, vL, R, vgvlbM"},{"ID":"686","标识":"NGC686","M标识":"NGC686","拓展名":"","组件":"","Class":"III 459","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h48m56s","赤经D(J2000)":"1.8155555555555556","赤纬(J2000)":"-23h47m53s","赤纬D(J2000)":"-23.798055555555557","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"14","详细描述":"very faint, very small, round, gradually brighter middle, extremely mottled but not resolved, 2 stars near","简略描述":"vF, vS, R, gbM, er, 2 st nr"},{"ID":"687","标识":"NGC687","M标识":"NGC687","拓展名":"","组件":"","Class":"III 561","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h50m33.2s","赤经D(J2000)":"1.8425555555555557","赤纬(J2000)":"+36h22m15s","赤纬D(J2000)":"36.37083333333334","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"very faint, stellar","简略描述":"vF, stellar"},{"ID":"688","标识":"NGC688","M标识":"NGC688","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h50m44.1s","赤经D(J2000)":"1.8455833333333336","赤纬(J2000)":"+35h17m5s","赤纬D(J2000)":"35.28472222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.4","短轴(分)":"1.5","方位角":"145","详细描述":"very faint, very small, mottled but not resolved?","简略描述":"vF, vS, r ?"},{"ID":"689","标识":"NGC689","M标识":"NGC689","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h49m51.5s","赤经D(J2000)":"1.8309722222222222","赤纬(J2000)":"-27h27m59s","赤纬D(J2000)":"-27.46638888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.6","方位角":"68","详细描述":"very faint, pretty large, round, gradually brighter middle","简略描述":"vF, pL, R, gbM"},{"ID":"690","标识":"NGC690","M标识":"NGC690","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h47m48s","赤经D(J2000)":"1.7966666666666666","赤纬(J2000)":"-16h43m17s","赤纬D(J2000)":"-16.72138888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"14.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"145","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"691","标识":"NGC691","M标识":"NGC691","拓展名":"","组件":"","Class":"II 617","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h50m41.7s","赤经D(J2000)":"1.8449166666666668","赤纬(J2000)":"+21h45m37s","赤纬D(J2000)":"21.760277777777777","可见光星等V":"11.4","摄影(蓝光)星等B":"12.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.4","短轴(分)":"2.5","方位角":"95","详细描述":"faint, considerably large, very gradually a little brighter middle","简略描述":"F, cL, vglbM"},{"ID":"692","标识":"NGC692","M标识":"NGC692","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h48m42.2s","赤经D(J2000)":"1.8117222222222222","赤纬(J2000)":"-48h38m53s","赤纬D(J2000)":"-48.64805555555556","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.1","短轴(分)":"1.8","方位角":"34","详细描述":"bright, small, round, gradually brighter middle","简略描述":"B, S, R, gbM"},{"ID":"693","标识":"NGC693","M标识":"NGC693","拓展名":"","组件":"","Class":"II 859","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h50m30.9s","赤经D(J2000)":"1.8419166666666669","赤纬(J2000)":"+6h8m41s","赤纬D(J2000)":"6.144722222222223","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"1.1","方位角":"106","详细描述":"pretty faint, small, extended 90°, very gradually a little brighter middle, 10th magnitude star to northeast","简略描述":"pF, S, E 90°, vglbM, * 10 nf"},{"ID":"694","标识":"NGC694","M标识":"NGC694","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h50m58.4s","赤经D(J2000)":"1.8495555555555556","赤纬(J2000)":"+21h59m49s","赤纬D(J2000)":"21.996944444444445","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"16.1","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"160","详细描述":"faint, small, round, between two 15th magnitude stars","简略描述":"F, S, R, bet 2 st 15"},{"ID":"695","标识":"NGC695","M标识":"NGC695","拓展名":"","组件":"","Class":"II 618","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h51m14.2s","赤经D(J2000)":"1.8539444444444446","赤纬(J2000)":"+22h34m58s","赤纬D(J2000)":"22.58277777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"40","详细描述":"very small, stellar","简略描述":"vS, stellar"},{"ID":"696","标识":"NGC696","M标识":"NGC696","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h49m31.2s","赤经D(J2000)":"1.8253333333333333","赤纬(J2000)":"-34h54m18s","赤纬D(J2000)":"-34.905","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"0.6","方位角":"25","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"697","标识":"NGC697","M标识":"NGC697","拓展名":"","组件":"","Class":"III 179","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h51m17.5s","赤经D(J2000)":"1.8548611111111113","赤纬(J2000)":"+22h21m27s","赤纬D(J2000)":"22.3575","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"4","短轴(分)":"1.3","方位角":"105","详细描述":"pretty bright, very much extended, 14th magntude star 8 seconds of time to east","简略描述":"F, cL, E, mbM"},{"ID":"698","标识":"NGC698","M标识":"NGC698","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h49m43.6s","赤经D(J2000)":"1.8287777777777778","赤纬(J2000)":"-34h49m53s","赤纬D(J2000)":"-34.831388888888895","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"164","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"699","标识":"NGC699","M标识":"NGC699","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h50m43.6s","赤经D(J2000)":"1.8454444444444447","赤纬(J2000)":"-12h2m8s","赤纬D(J2000)":"-12.035555555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"135","详细描述":"extremely faint, pretty small, extended 105°, brighter on northwest, curved","简略描述":"eF, pS, E 105°, bnp, curved"},{"ID":"700","标识":"NGC700","M标识":"NGC700","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h52m16.8s","赤经D(J2000)":"1.8713333333333333","赤纬(J2000)":"+36h2m12s","赤纬D(J2000)":"36.03666666666666","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, very small, round, southwest of h 157","简略描述":"eF, vS, R, sp h 157"},{"ID":"701","标识":"NGC701","M标识":"NGC701","拓展名":"","组件":"","Class":"I 62","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h51m3.8s","赤经D(J2000)":"1.8510555555555557","赤纬(J2000)":"-9h42m12s","赤纬D(J2000)":"-9.703333333333333","可见光星等V":"12.2","摄影(蓝光)星等B":"12.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.6","短轴(分)":"1.4","方位角":"40","详细描述":"faint, pretty large, extended, very gradually very little brighter middle, mottled but not resolved","简略描述":"F, pL, E, vgvlbM, r"},{"ID":"702","标识":"NGC702","M标识":"NGC702","拓展名":"","组件":"","Class":"III 192","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h51m19.2s","赤经D(J2000)":"1.8553333333333335","赤纬(J2000)":"-4h3m20s","赤纬D(J2000)":"-4.055555555555555","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"140","详细描述":"extremely faint, very little extended 0°, 13th magnitude star 90 arcsec to south","简略描述":"eF, vlE 0°, * 13 s 90\""},{"ID":"703","标识":"NGC703","M标识":"NGC703","拓展名":"","组件":"","Class":"III 562","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h52m39.6s","赤经D(J2000)":"1.8776666666666666","赤纬(J2000)":"+36h10m20s","赤纬D(J2000)":"36.17222222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"50","详细描述":"very faint, very small, round, 1st of 4","简略描述":"vF, vS, R, 1st of 4"},{"ID":"704","标识":"NGC704","M标识":"NGC704","拓展名":"","组件":"1","Class":"III 563","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h52m37.7s","赤经D(J2000)":"1.877138888888889","赤纬(J2000)":"+36h7m37s","赤纬D(J2000)":"36.12694444444445","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"90","详细描述":"very faint, very small, round, 2nd of 4","简略描述":"vF, vS, R, 2nd of 4"},{"ID":"705","标识":"NGC705","M标识":"NGC705","拓展名":"","组件":"","Class":"III 564","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h52m41.6s","赤经D(J2000)":"1.8782222222222222","赤纬(J2000)":"+36h8m40s","赤纬D(J2000)":"36.144444444444446","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"114","详细描述":"very faint, very small, round, 3rd of 4","简略描述":"vF, vS, R, 3rd of 4"},{"ID":"706","标识":"NGC706","M标识":"NGC706","拓展名":"","组件":"","Class":"II 596","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h51m50.7s","赤经D(J2000)":"1.8640833333333333","赤纬(J2000)":"+6h17m46s","赤纬D(J2000)":"6.296111111111111","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"147","详细描述":"faint, small, brighter middle, 13th magnitude star 1 arcmin to north","简略描述":"F, S, bM, * 13 n 1'"},{"ID":"707","标识":"NGC707","M标识":"NGC707","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h51m27s","赤经D(J2000)":"1.8575000000000002","赤纬(J2000)":"-8h30m22s","赤纬D(J2000)":"-8.50611111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"95","详细描述":"very faint, faint star in centre","简略描述":"vF, F * in centre"},{"ID":"708","标识":"NGC708","M标识":"NGC708","拓展名":"","组件":"","Class":"III 565","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h52m46.4s","赤经D(J2000)":"1.8795555555555556","赤纬(J2000)":"+36h9m8s","赤纬D(J2000)":"36.15222222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"3","短轴(分)":"2.5","方位角":"35","详细描述":"faint, pretty large, brighter middle, 4th of 4","简略描述":"F, pL, bM, 4th of 4"},{"ID":"709","标识":"NGC709","M标识":"NGC709","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h52m50.6s","赤经D(J2000)":"1.8807222222222222","赤纬(J2000)":"+36h13m23s","赤纬D(J2000)":"36.223055555555554","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.5","方位角":"135","详细描述":"very faint, pretty small, between 2 stars, group to southwest","简略描述":"vF, pS, bet 2 st, group sp"},{"ID":"710","标识":"NGC710","M标识":"NGC710","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h52m54s","赤经D(J2000)":"1.8816666666666666","赤纬(J2000)":"+36h3m12s","赤纬D(J2000)":"36.05333333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"45","详细描述":"very faint, pretty small, 2 stars to south","简略描述":"vF, pS, 2 st s"},{"ID":"711","标识":"NGC711","M标识":"NGC711","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h52m27.7s","赤经D(J2000)":"1.8743611111111111","赤纬(J2000)":"+17h30m47s","赤纬D(J2000)":"17.513055555555557","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"15","详细描述":"very faint star in very faint, very small nebulosity","简略描述":"vF * in vF, vS neby"},{"ID":"712","标识":"NGC712","M标识":"NGC712","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h53m8.4s","赤经D(J2000)":"1.8856666666666666","赤纬(J2000)":"+36h49m11s","赤纬D(J2000)":"36.819722222222225","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1","短轴(分)":"0.6","方位角":"85","详细描述":"very faint, round, among pretty bright stars","简略描述":"vF, R, am pB st"},{"ID":"713","标识":"NGC713","M标识":"NGC713","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h55m21.6s","赤经D(J2000)":"1.9226666666666665","赤纬(J2000)":"-9h5m0s","赤纬D(J2000)":"-9.083333333333334","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.3","方位角":"95","详细描述":"extremely faint, pretty small, extended 90°, gradually a little brighter middle and nucleus, 14th magnitude star to northwest","简略描述":"eF, pS, E 90°, glbMN, * 14 np"},{"ID":"714","标识":"NGC714","M标识":"NGC714","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h53m29.6s","赤经D(J2000)":"1.8915555555555554","赤纬(J2000)":"+36h13m17s","赤纬D(J2000)":"36.22138888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"112","详细描述":"faint, very small, round, two 13th magnitude stars to west and northwest","简略描述":"F, vS, R, 2 st 13 p and np"},{"ID":"715","标识":"NGC715","M标识":"NGC715","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h53m12.4s","赤经D(J2000)":"1.8867777777777777","赤纬(J2000)":"-12h52m24s","赤纬D(J2000)":"-12.873333333333333","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"175","详细描述":"extremely faint, small, gradually brighter middle and nucleus","简略描述":"eF, S, gbMN"},{"ID":"716","标识":"NGC716","M标识":"NGC716","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h52m59.5s","赤经D(J2000)":"1.8831944444444444","赤纬(J2000)":"+12h42m30s","赤纬D(J2000)":"12.708333333333332","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"0.8","方位角":"57","详细描述":"extremely faint, small, round, bright star to east","简略描述":"eF, S, R, B * f"},{"ID":"717","标识":"NGC717","M标识":"NGC717","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h53m55s","赤经D(J2000)":"1.898611111111111","赤纬(J2000)":"+36h13m47s","赤纬D(J2000)":"36.22972222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"0.2","方位角":"117","详细描述":"very faint, pretty small, 15th magnitude star 1 arcmin to southeast","简略描述":"vF, pS, * 15 sf 1'"},{"ID":"718","标识":"NGC718","M标识":"NGC718","拓展名":"","组件":"","Class":"II 270","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h53m13s","赤经D(J2000)":"1.8869444444444443","赤纬(J2000)":"+4h11m44s","赤纬D(J2000)":"4.195555555555556","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.3","短轴(分)":"2.2","方位角":"45","详细描述":"pretty bright, small, irregularly round, pretty suddenly much brighter middle","简略描述":"pB, S, iR, psmbM"},{"ID":"719","标识":"NGC719","M标识":"NGC719","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h53m38.8s","赤经D(J2000)":"1.894111111111111","赤纬(J2000)":"+19h50m27s","赤纬D(J2000)":"19.840833333333332","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"150","详细描述":"extremely faint, round, very faint star to east","简略描述":"eF, R, vF * f"},{"ID":"720","标识":"NGC720","M标识":"NGC720","拓展名":"","组件":"","Class":"I 105","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h53m0.4s","赤经D(J2000)":"1.8834444444444445","赤纬(J2000)":"-13h44m19s","赤纬D(J2000)":"-13.73861111111111","可见光星等V":"10.2","摄影(蓝光)星等B":"11.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"4.7","短轴(分)":"2.4","方位角":"140","详细描述":"considerably bright, pretty large, a little extended, pretty suddenly much brighter middle","简略描述":"cB, pL, lE, psmbM"},{"ID":"721","标识":"NGC721","M标识":"NGC721","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h54m45.4s","赤经D(J2000)":"1.912611111111111","赤纬(J2000)":"+39h22m59s","赤纬D(J2000)":"39.38305555555556","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.7","短轴(分)":"1","方位角":"135","详细描述":"extremely faint, pretty large","简略描述":"eF, pL"},{"ID":"722","标识":"NGC722","M标识":"NGC722","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h54m46.9s","赤经D(J2000)":"1.9130277777777778","赤纬(J2000)":"+20h41m54s","赤纬D(J2000)":"20.698333333333334","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"138","详细描述":"very faint, very small, round, β Arietis to north","简略描述":"vF, vS, R, β Arietis n"},{"ID":"723","标识":"NGC723","M标识":"NGC723","拓展名":"","组件":"","Class":"III 460","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h53m45.6s","赤经D(J2000)":"1.896","赤纬(J2000)":"-23h45m26s","赤纬D(J2000)":"-23.75722222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"166","详细描述":"pretty faint, very small, round, very gradually brighter middle","简略描述":"pF, vS, R, vgbM"},{"ID":"724","标识":"NGC724","M标识":"NGC724","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h53m45.6s","赤经D(J2000)":"1.896","赤纬(J2000)":"-23h45m26s","赤纬D(J2000)":"-23.75722222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"166","详细描述":"pretty faint, very small, round, very gradually brighter middle","简略描述":"vF, pL, R, gbM, S * ssp [?=h 166]"},{"ID":"725","标识":"NGC725","M标识":"NGC725","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h52m35.3s","赤经D(J2000)":"1.8764722222222223","赤纬(J2000)":"-16h31m3s","赤纬D(J2000)":"-16.5175","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"78","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"726","标识":"NGC726","M标识":"NGC726","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h55m31.9s","赤经D(J2000)":"1.9255277777777777","赤纬(J2000)":"-10h47m58s","赤纬D(J2000)":"-10.799444444444445","可见光星等V":"14.3","摄影(蓝光)星等B":"14.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"100","详细描述":"very faint, pretty large, irregularly round, 9th magnitude star 3 arcmin to east","简略描述":"vF, pL, iR, * 9 3' f"},{"ID":"727","标识":"NGC727","M标识":"NGC727","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h53m49.3s","赤经D(J2000)":"1.8970277777777778","赤纬(J2000)":"-35h51m21s","赤纬D(J2000)":"-35.85583333333334","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"76","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"728","标识":"NGC728","M标识":"NGC728","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h55m1.5s","赤经D(J2000)":"1.9170833333333333","赤纬(J2000)":"+4h13m22s","赤纬D(J2000)":"4.222777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"suspected nebula (d'Arrest, not found)","简略描述":"Suspected neb (d'A, not found)"},{"ID":"729","标识":"NGC729","M标识":"NGC729","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h53m49.3s","赤经D(J2000)":"1.8970277777777778","赤纬(J2000)":"-35h51m21s","赤纬D(J2000)":"-35.85583333333334","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"76","详细描述":"faint, small, round, brighter middle","简略描述":"eeF, S, R"},{"ID":"730","标识":"NGC730","M标识":"NGC730","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h55m18s","赤经D(J2000)":"1.9216666666666664","赤纬(J2000)":"+5h38m9s","赤纬D(J2000)":"5.635833333333333","可见光星等V":"99","摄影(蓝光)星等B":"14.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very stellar","简略描述":"vF, very stellar"},{"ID":"731","标识":"NGC731","M标识":"NGC731","拓展名":"","组件":"","Class":"III 266","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h54m55.9s","赤经D(J2000)":"1.9155277777777777","赤纬(J2000)":"-9h0m41s","赤纬D(J2000)":"-9.011388888888888","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"1.7","方位角":"","详细描述":"extremely faint, stellar","简略描述":"eF, stellar"},{"ID":"732","标识":"NGC732","M标识":"NGC732","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h56m27.7s","赤经D(J2000)":"1.9410277777777778","赤纬(J2000)":"+36h48m8s","赤纬D(J2000)":"36.80222222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"1","方位角":"28","详细描述":"a very faint star in very faint, very small, round nebulosity","简略描述":"vF * in vF, vS, R neby"},{"ID":"733","标识":"NGC733","M标识":"NGC733","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h56m33.8s","赤经D(J2000)":"1.9427222222222222","赤纬(J2000)":"+33h3m21s","赤纬D(J2000)":"33.05583333333333","可见光星等V":"99","摄影(蓝光)星等B":"15.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, 2 arcmin west of h 169","简略描述":"vF, 2' p h 169"},{"ID":"734","标识":"NGC734","M标识":"NGC734","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h53m28.7s","赤经D(J2000)":"1.8913055555555556","赤纬(J2000)":"-16h59m44s","赤纬D(J2000)":"-16.995555555555555","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"5","详细描述":"very faint, very small, round, brighter middle and nucleus, 11th magnitude star 11 seconds of time to west","简略描述":"vF, vS, R, bMN, * 11 p 11s"},{"ID":"735","标识":"NGC735","M标识":"NGC735","拓展名":"","组件":"","Class":"III 176","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h56m38.2s","赤经D(J2000)":"1.9439444444444445","赤纬(J2000)":"+34h10m39s","赤纬D(J2000)":"34.177499999999995","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.8","短轴(分)":"0.8","方位角":"138","详细描述":"most extremely faint, stellar","简略描述":"eeF, stellar"},{"ID":"736","标识":"NGC736","M标识":"NGC736","拓展名":"","组件":"","Class":"II 221","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h56m41s","赤经D(J2000)":"1.9447222222222222","赤纬(J2000)":"+33h2m40s","赤纬D(J2000)":"33.044444444444444","可见光星等V":"12.1","摄影(蓝光)星等B":"13.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"pretty bright, round, brighter middle","简略描述":"pB, R, bM"},{"ID":"737","标识":"NGC737","M标识":"NGC737","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h56m40.8s","赤经D(J2000)":"1.9446666666666668","赤纬(J2000)":"+33h2m59s","赤纬D(J2000)":"33.04972222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"stellar nebula (perhaps a faint star?), 27 arcsec north of h 169","简略描述":"Stellar neb (? F *), 27\" n of h 169"},{"ID":"738","标识":"NGC738","M标识":"NGC738","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h56m45.6s","赤经D(J2000)":"1.946","赤纬(J2000)":"+33h3m32s","赤纬D(J2000)":"33.05888888888889","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"155","详细描述":"nebula, 75 arcsec northeast of h 169","简略描述":"Neb, 75\" nf h 169"},{"ID":"739","标识":"NGC739","M标识":"NGC739","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h56m54.6s","赤经D(J2000)":"1.9485000000000001","赤纬(J2000)":"+33h16m2s","赤纬D(J2000)":"33.26722222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"127","详细描述":"considerably faint, very small, round, in triangle of stars","简略描述":"cF, vS, R, in Δ of st"},{"ID":"740","标识":"NGC740","M标识":"NGC740","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h56m55s","赤经D(J2000)":"1.948611111111111","赤纬(J2000)":"+33h0m56s","赤纬D(J2000)":"33.01555555555556","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.3","方位角":"137","详细描述":"faint, large, considerably extended","简略描述":"F, L, cE"},{"ID":"741","标识":"NGC741","M标识":"NGC741","拓展名":"","组件":"","Class":"II 271","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h56m20.9s","赤经D(J2000)":"1.939138888888889","赤纬(J2000)":"+5h37m43s","赤纬D(J2000)":"5.628611111111112","可见光星等V":"11.1","摄影(蓝光)星等B":"12.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3","短轴(分)":"2.9","方位角":"90","详细描述":"pretty faint, small, round, western of 2, position angle 102°","简略描述":"pF, S, R, p of 2, pos 102°"},{"ID":"742","标识":"NGC742","M标识":"NGC742","拓展名":"","组件":"","Class":"II 272","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h56m24.1s","赤经D(J2000)":"1.9400277777777777","赤纬(J2000)":"+5h37m33s","赤纬D(J2000)":"5.6258333333333335","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, round, suddenly brighter middle, eastern of 2","简略描述":"vF, vS, R, sbM, f of 2"},{"ID":"743","标识":"NGC743","M标识":"NGC743","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h58m37s","赤经D(J2000)":"1.9769444444444446","赤纬(J2000)":"+60h10m0s","赤纬D(J2000)":"60.166666666666664","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, not rich, double star (h 1098)","简略描述":"Cl, not Ri, D * (h 1098)"},{"ID":"744","标识":"NGC744","M标识":"NGC744","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV2p","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"1h58m33s","赤经D(J2000)":"1.9758333333333336","赤纬(J2000)":"+55h28m24s","赤纬D(J2000)":"55.473333333333336","可见光星等V":"7.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, irregular figure, stars from 11th through 13th magnitude","简略描述":"Cl, pL, pRi, iF, st 11…13"},{"ID":"745","标识":"NGC745","M标识":"NGC745","拓展名":"","组件":"1","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"1h54m7.8s","赤经D(J2000)":"1.9021666666666666","赤纬(J2000)":"-56h41m37s","赤纬D(J2000)":"-56.69361111111111","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"50","详细描述":"pretty bright, small, round, gradually brighter middle","简略描述":"pB, S, R, gbM"},{"ID":"746","标识":"NGC746","M标识":"NGC746","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h57m51s","赤经D(J2000)":"1.9641666666666666","赤纬(J2000)":"+44h55m6s","赤纬D(J2000)":"44.91833333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"13.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"1","方位角":"90","详细描述":"very faint, pretty small, a little extended, several stars near","简略描述":"vF, pS, lE, sev st nr"},{"ID":"747","标识":"NGC747","M标识":"NGC747","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h57m30.4s","赤经D(J2000)":"1.9584444444444444","赤纬(J2000)":"-9h27m46s","赤纬D(J2000)":"-9.462777777777777","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.5","方位角":"175","详细描述":"extremely faint, pretty small, a little extended 180°","简略描述":"eF, pS, lE 180°"},{"ID":"748","标识":"NGC748","M标识":"NGC748","拓展名":"","组件":"","Class":"III 193","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h56m21.8s","赤经D(J2000)":"1.9393888888888888","赤纬(J2000)":"-4h28m2s","赤纬D(J2000)":"-4.467222222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.3","短轴(分)":"1.1","方位角":"138","详细描述":"pretty faint, 9th magnitude star to northwest","简略描述":"pF, * 9 np"},{"ID":"749","标识":"NGC749","M标识":"NGC749","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h55m40.9s","赤经D(J2000)":"1.9280277777777777","赤纬(J2000)":"-29h55m20s","赤纬D(J2000)":"-29.922222222222224","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"111","详细描述":"pretty bright, small, extended, brighter middle","简略描述":"pB, S, E, bM"},{"ID":"750","标识":"NGC750","M标识":"NGC750","拓展名":"","组件":"","Class":"II 222","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h57m32.6s","赤经D(J2000)":"1.9590555555555556","赤纬(J2000)":"+33h12m35s","赤纬D(J2000)":"33.209722222222226","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"162","详细描述":"considerably bright, pretty large, round, a double nebula (with NGC 751), separation 25 arcsec at position angle 173°","简略描述":"cB, pL, R, D neb 173° 25\""},{"ID":"751","标识":"NGC751","M标识":"NGC751","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h57m33.1s","赤经D(J2000)":"1.9591944444444445","赤纬(J2000)":"+33h12m9s","赤纬D(J2000)":"33.2025","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"pretty faint, extremely small, round, brighter middle, a double nebula (with NGC 750), separation 25 arcsec at position angle 173°","简略描述":"pF, eS, R, bM, D neb 173° 25\""},{"ID":"752","标识":"NGC752","M标识":"NGC752","拓展名":"","组件":"","Class":"VII 32","业余排名":"2","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1m","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h57m35s","赤经D(J2000)":"1.9597222222222221","赤纬(J2000)":"+37h50m0s","赤纬D(J2000)":"37.833333333333336","可见光星等V":"5.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"75","短轴(分)":"","方位角":"","详细描述":"a cluster, very very large, rich, stars large (bright) and scattered","简略描述":"Cl, vvL, Ri, st L & sc"},{"ID":"753","标识":"NGC753","M标识":"NGC753","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h57m42.4s","赤经D(J2000)":"1.9617777777777778","赤纬(J2000)":"+35h54m57s","赤纬D(J2000)":"35.91583333333333","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3","短轴(分)":"1.9","方位角":"125","详细描述":"pretty bright, pretty large, round, gradually much brighter middle","简略描述":"pB, pL, R, gmbM"},{"ID":"754","标识":"NGC754","M标识":"NGC754","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"1h54m20.8s","赤经D(J2000)":"1.9057777777777778","赤纬(J2000)":"-56h45m40s","赤纬D(J2000)":"-56.76111111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"93","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"755","标识":"NGC755","M标识":"NGC755","拓展名":"","组件":"","Class":"III 265","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h56m22.6s","赤经D(J2000)":"1.9396111111111112","赤纬(J2000)":"-9h3m45s","赤纬D(J2000)":"-9.0625","可见光星等V":"12.6","摄影(蓝光)星等B":"13.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.3","短轴(分)":"1.1","方位角":"45","详细描述":"very faint, pretty small, very little extended","简略描述":"vF, pS, vlE"},{"ID":"756","标识":"NGC756","M标识":"NGC756","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h54m29s","赤经D(J2000)":"1.9080555555555554","赤纬(J2000)":"-16h42m27s","赤纬D(J2000)":"-16.7075","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"32","详细描述":"faint, very small, round, brighter middle and nucleus","简略描述":"F, vS, R, bMN"},{"ID":"757","标识":"NGC757","M标识":"NGC757","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h54m55.9s","赤经D(J2000)":"1.9155277777777777","赤纬(J2000)":"-9h0m41s","赤纬D(J2000)":"-9.011388888888888","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"1.7","方位角":"","详细描述":"faint, small, gradually brighter middle and nucle, (= h 177?)","简略描述":"F, S, gbMN, (? = h 177)"},{"ID":"758","标识":"NGC758","M标识":"NGC758","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h55m42.1s","赤经D(J2000)":"1.928361111111111","赤纬(J2000)":"-3h3m58s","赤纬D(J2000)":"-3.066111111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"85","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"759","标识":"NGC759","M标识":"NGC759","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h57m50.3s","赤经D(J2000)":"1.9639722222222222","赤纬(J2000)":"+36h20m35s","赤纬D(J2000)":"36.34305555555556","可见光星等V":"12.7","摄影(蓝光)星等B":"13.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"a cluster, very small, round","简略描述":"Cl, vS, R"},{"ID":"760","标识":"NGC760","M标识":"NGC760","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h57m47.3s","赤经D(J2000)":"1.9631388888888888","赤纬(J2000)":"+33h21m19s","赤纬D(J2000)":"33.35527777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, round, 456 to northeast","简略描述":"vF, R, 456 nf"},{"ID":"761","标识":"NGC761","M标识":"NGC761","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h57m49.6s","赤经D(J2000)":"1.9637777777777776","赤纬(J2000)":"+33h22m35s","赤纬D(J2000)":"33.37638888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"143","详细描述":"pretty faint, considerably large, 4 faint stars near","简略描述":"pF, cL, 4 F st nr"},{"ID":"762","标识":"NGC762","M标识":"NGC762","拓展名":"","组件":"","Class":"III 464","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h56m57.9s","赤经D(J2000)":"1.9494166666666666","赤纬(J2000)":"-5h24m8s","赤纬D(J2000)":"-5.402222222222223","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"25","详细描述":"very faint, small, a little extended, very gradually a little brighter middle","简略描述":"vF, S, lE, vglbM"},{"ID":"763","标识":"NGC763","M标识":"NGC763","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h56m22.6s","赤经D(J2000)":"1.9396111111111112","赤纬(J2000)":"-9h3m45s","赤纬D(J2000)":"-9.0625","可见光星等V":"12.6","摄影(蓝光)星等B":"13.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.3","短轴(分)":"1.1","方位角":"45","详细描述":"very faint, pretty small, very little extended","简略描述":"vF, pL, E 65°, gbMN"},{"ID":"764","标识":"NGC764","M标识":"NGC764","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h57m3.3s","赤经D(J2000)":"1.9509166666666666","赤纬(J2000)":"-16h3m41s","赤纬D(J2000)":"-16.06138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, irregularly round, gradually brighter middle","简略描述":"eF, vS, iR, gbM"},{"ID":"765","标识":"NGC765","M标识":"NGC765","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h58m48.1s","赤经D(J2000)":"1.980027777777778","赤纬(J2000)":"+24h53m32s","赤纬D(J2000)":"24.892222222222223","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.9","长轴(分)":"2.8","短轴(分)":"2.8","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"766","标识":"NGC766","M标识":"NGC766","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h58m42s","赤经D(J2000)":"1.9783333333333335","赤纬(J2000)":"+8h20m50s","赤纬D(J2000)":"8.347222222222223","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2","短轴(分)":"2","方位角":"","详细描述":"very faint, small, round, 11th magnitude star 2 arcmin distant at position angle 75°","简略描述":"vF, S, R, * 11, 2', 75°"},{"ID":"767","标识":"NGC767","M标识":"NGC767","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h58m50.8s","赤经D(J2000)":"1.980777777777778","赤纬(J2000)":"-9h35m14s","赤纬D(J2000)":"-9.587222222222223","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"165","详细描述":"extremely faint, pretty small, extended 160°","简略描述":"eF, pS, E 160°"},{"ID":"768","标识":"NGC768","M标识":"NGC768","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h58m40.8s","赤经D(J2000)":"1.9780000000000002","赤纬(J2000)":"+0h31m44s","赤纬D(J2000)":"0.528888888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"30","详细描述":"extremely faint, pretty small, round, 8th magnitude star 30 seconds of time to east","简略描述":"eF, pS, R, * 8 f 30s"},{"ID":"769","标识":"NGC769","M标识":"NGC769","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h59m35.8s","赤经D(J2000)":"1.993277777777778","赤纬(J2000)":"+30h54m35s","赤纬D(J2000)":"30.90972222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"73","详细描述":"very faint, very small, irregularly round, brighter middle, faint star attached","简略描述":"vF, vS, iR, bM, F * att"},{"ID":"770","标识":"NGC770","M标识":"NGC770","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h59m13.5s","赤经D(J2000)":"1.9870833333333333","赤纬(J2000)":"+18h57m18s","赤纬D(J2000)":"18.955","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"15","详细描述":"very faint, small, round, southwest of I 112","简略描述":"vF, S, R, sp I 112"},{"ID":"771","标识":"NGC771","M标识":"NGC771","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"2h3m26s","赤经D(J2000)":"2.057222222222222","赤纬(J2000)":"+72h25m19s","赤纬D(J2000)":"72.42194444444445","可见光星等V":"99","摄影(蓝光)星等B":"4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"suspected nebulous star (50 Cassiopeiae)","简略描述":"Suspected neb * (50 Cassiop.)"},{"ID":"772","标识":"NGC772","M标识":"NGC772","拓展名":"","组件":"","Class":"I 112","业余排名":"6","中文名":"蕨菜星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h59m19.5s","赤经D(J2000)":"1.98875","赤纬(J2000)":"+19h0m27s","赤纬D(J2000)":"19.0075","可见光星等V":"10.3","摄影(蓝光)星等B":"11.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"7.2","短轴(分)":"4.3","方位角":"130","详细描述":"very faint, small, round, southwest of I 112","简略描述":"B, cL, R, gbM, r"},{"ID":"773","标识":"NGC773","M标识":"NGC773","拓展名":"","组件":"","Class":"III 468","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h58m51.9s","赤经D(J2000)":"1.9810833333333335","赤纬(J2000)":"-11h30m55s","赤纬D(J2000)":"-11.515277777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"179","详细描述":"considerably faint, pretty large, extended 0°, gradually a little brighter middle","简略描述":"cF, pL, E 0°, glbM"},{"ID":"774","标识":"NGC774","M标识":"NGC774","拓展名":"","组件":"","Class":"III 214","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h59m34.7s","赤经D(J2000)":"1.9929722222222224","赤纬(J2000)":"+14h0m30s","赤纬D(J2000)":"14.008333333333333","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"165","详细描述":"very faint, stellar","简略描述":"vF, stellar"},{"ID":"775","标识":"NGC775","M标识":"NGC775","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h58m32.5s","赤经D(J2000)":"1.9756944444444446","赤纬(J2000)":"-26h17m38s","赤纬D(J2000)":"-26.29388888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"167","详细描述":"pretty faint, small, round, gradually a little brighter middle","简略描述":"pF, S, R, glbM"},{"ID":"776","标识":"NGC776","M标识":"NGC776","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h59m54.6s","赤经D(J2000)":"1.9985000000000002","赤纬(J2000)":"+23h38m39s","赤纬D(J2000)":"23.644166666666667","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1.7","方位角":"","详细描述":"faint, pretty large","简略描述":"F, pL"},{"ID":"777","标识":"NGC777","M标识":"NGC777","拓展名":"","组件":"","Class":"II 223","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h0m14.8s","赤经D(J2000)":"2.004111111111111","赤纬(J2000)":"+31h25m47s","赤纬D(J2000)":"31.429722222222225","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.5","短轴(分)":"2","方位角":"155","详细描述":"pretty bright, pretty large, round, gradually a little brighter middle","简略描述":"pB, pL, R, glbM"},{"ID":"778","标识":"NGC778","M标识":"NGC778","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h0m19.4s","赤经D(J2000)":"2.005388888888889","赤纬(J2000)":"+31h18m47s","赤纬D(J2000)":"31.313055555555557","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"150","详细描述":"extremely faint, very small, round, a little brighter middle","简略描述":"eF, vS, R, lbM"},{"ID":"779","标识":"NGC779","M标识":"NGC779","拓展名":"","组件":"","Class":"I 101","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h59m42.6s","赤经D(J2000)":"1.9951666666666668","赤纬(J2000)":"-5h57m51s","赤纬D(J2000)":"-5.964166666666667","可见光星等V":"11.2","摄影(蓝光)星等B":"12","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"4.1","短轴(分)":"1.2","方位角":"160","详细描述":"considerably bright, large, much extended 162°, much brighter middle","简略描述":"cB, L, mE 162°, mbM"},{"ID":"780","标识":"NGC780","M标识":"NGC780","拓展名":"","组件":"","Class":"III 583","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h0m35.1s","赤经D(J2000)":"2.00975","赤纬(J2000)":"+28h13m33s","赤纬D(J2000)":"28.22583333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"176","详细描述":"very faint, very small, extended, 3 stars to west","简略描述":"vF, vS, E, 3 st p"},{"ID":"781","标识":"NGC781","M标识":"NGC781","拓展名":"","组件":"","Class":"III 215","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h0m8.8s","赤经D(J2000)":"2.0024444444444445","赤纬(J2000)":"+12h39m20s","赤纬D(J2000)":"12.655555555555557","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"13","详细描述":"extremely faint, stellar","简略描述":"eF, stellar"},{"ID":"782","标识":"NGC782","M标识":"NGC782","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"1h57m40.1s","赤经D(J2000)":"1.9611388888888888","赤纬(J2000)":"-57h47m27s","赤纬D(J2000)":"-57.79083333333333","可见光星等V":"11.9","摄影(蓝光)星等B":"12.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.4","短轴(分)":"2.1","方位角":"23","详细描述":"pretty bright, pretty large, a little extended, 12th magnitude star attached","简略描述":"pB, pL, lE, * 12 att"},{"ID":"783","标识":"NGC783","M标识":"NGC783","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h1m6.6s","赤经D(J2000)":"2.0185","赤纬(J2000)":"+31h52m55s","赤纬D(J2000)":"31.881944444444446","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"35","详细描述":"extremely faint, small, irregularly round, very faint star attached","简略描述":"eF, S, iR, vF st att"},{"ID":"784","标识":"NGC784","M标识":"NGC784","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h1m17.1s","赤经D(J2000)":"2.0214166666666666","赤纬(J2000)":"+28h50m17s","赤纬D(J2000)":"28.838055555555556","可见光星等V":"11.7","摄影(蓝光)星等B":"12.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"6.6","短轴(分)":"1.6","方位角":"0","详细描述":"very faint, large, extended (double?)","简略描述":"vF, L, E (? double)"},{"ID":"785","标识":"NGC785","M标识":"NGC785","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h1m40s","赤经D(J2000)":"2.0277777777777777","赤纬(J2000)":"+31h49m36s","赤纬D(J2000)":"31.826666666666668","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"83","详细描述":"extremely faint, extremely small, very faint star attached","简略描述":"eF, eS, vF * att"},{"ID":"786","标识":"NGC786","M标识":"NGC786","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h1m24.6s","赤经D(J2000)":"2.0235","赤纬(J2000)":"+15h38m46s","赤纬D(J2000)":"15.64611111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"138","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"787","标识":"NGC787","M标识":"NGC787","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h0m48.6s","赤经D(J2000)":"2.0135","赤纬(J2000)":"-9h0m9s","赤纬D(J2000)":"-9.0025","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"2.5","短轴(分)":"1.9","方位角":"90","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"788","标识":"NGC788","M标识":"NGC788","拓展名":"","组件":"","Class":"II 435","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h1m6.4s","赤经D(J2000)":"2.0184444444444445","赤纬(J2000)":"-6h48m56s","赤纬D(J2000)":"-6.815555555555555","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"111","详细描述":"pretty faint, pretty small, round, brighter middle","简略描述":"pF, pS, R, bM"},{"ID":"789","标识":"NGC789","M标识":"NGC789","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h2m26s","赤经D(J2000)":"2.0405555555555552","赤纬(J2000)":"+32h4m20s","赤纬D(J2000)":"32.07222222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"3","详细描述":"very faint, small, irregularly extended","简略描述":"vF, S, lE"},{"ID":"790","标识":"NGC790","M标识":"NGC790","拓展名":"","组件":"","Class":"III 433","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h1m21.6s","赤经D(J2000)":"2.0226666666666664","赤纬(J2000)":"-5h22m14s","赤纬D(J2000)":"-5.370555555555555","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"considerably faint, considerably small, round, brighter middle","简略描述":"cF, cS, R, bM"},{"ID":"791","标识":"NGC791","M标识":"NGC791","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"2h1m44.2s","赤经D(J2000)":"2.0289444444444444","赤纬(J2000)":"+8h29m59s","赤纬D(J2000)":"8.499722222222221","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.6","短轴(分)":"1.6","方位角":"","详细描述":"very faint, small, 14th magnitude star 3 arcmin to east","简略描述":"vF, S, * 14 f 3'"},{"ID":"792","标识":"NGC792","M标识":"NGC792","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h2m15.3s","赤经D(J2000)":"2.037583333333333","赤纬(J2000)":"+15h42m44s","赤纬D(J2000)":"15.712222222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"130","详细描述":"extremely faint, small, round, 11th magnitude star at position angle 75°","简略描述":"eF, S, R, * 11 75°"},{"ID":"793","标识":"NGC793","M标识":"NGC793","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h2m54.5s","赤经D(J2000)":"2.0484722222222222","赤纬(J2000)":"+31h58m53s","赤纬D(J2000)":"31.981388888888887","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very very faint, between 2 stars, southeast of 5210","简略描述":"vvF, bet 2 st, sf 5210"},{"ID":"794","标识":"NGC794","M标识":"NGC794","拓展名":"","组件":"","Class":"III 207","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h2m29.4s","赤经D(J2000)":"2.0415","赤纬(J2000)":"+18h22m22s","赤纬D(J2000)":"18.372777777777777","可见光星等V":"12.7","摄影(蓝光)星等B":"13.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"45","详细描述":"very faint, considerably small, stellar","简略描述":"vF, cS, stellar"},{"ID":"795","标识":"NGC795","M标识":"NGC795","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"1h59m49.3s","赤经D(J2000)":"1.9970277777777778","赤纬(J2000)":"-55h49m28s","赤纬D(J2000)":"-55.824444444444445","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"141","详细描述":"pretty faint, small, round, 2 stars of 11th magnitude near","简略描述":"pF, S, R, 2 st 11 nr"},{"ID":"796","标识":"NGC796","M标识":"NGC796","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"水蛇座","星座(En)":"HYI","赤经(J2000)":"1h56m43.8s","赤经D(J2000)":"1.9455","赤纬(J2000)":"-74h13m12s","赤纬D(J2000)":"-74.22","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, round, star 25 arcsec to northwest","简略描述":"eF, vS, R, * np 25\""},{"ID":"797","标识":"NGC797","M标识":"NGC797","拓展名":"","组件":"","Class":"III 566","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h3m27.9s","赤经D(J2000)":"2.05775","赤纬(J2000)":"+38h7m3s","赤纬D(J2000)":"38.1175","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"65","详细描述":"very faint, small, irregularly round, suddenly brighter middle, star near","简略描述":"vF, S, iR, sbM, * nr"},{"ID":"798","标识":"NGC798","M标识":"NGC798","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h3m19.6s","赤经D(J2000)":"2.0554444444444444","赤纬(J2000)":"+32h4m39s","赤纬D(J2000)":"32.0775","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"137","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"799","标识":"NGC799","M标识":"NGC799","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h2m12.2s","赤经D(J2000)":"2.036722222222222","赤纬(J2000)":"-0h6m1s","赤纬D(J2000)":"-0.10027777777777779","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"2","短轴(分)":"1.7","方位角":"100","详细描述":"most extremely faint, pretty small, round, northern of 2","简略描述":"eeF, pS, R, n of 2"},{"ID":"800","标识":"NGC800","M标识":"NGC800","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h2m11.8s","赤经D(J2000)":"2.036611111111111","赤纬(J2000)":"-0h7m51s","赤纬D(J2000)":"-0.13083333333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.9","方位角":"10","详细描述":"most extremely faint, pretty small, round, southern of 2","简略描述":"eeF, S, R, s of 2"},{"ID":"801","标识":"NGC801","M标识":"NGC801","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h3m44.9s","赤经D(J2000)":"2.062472222222222","赤纬(J2000)":"+38h15m34s","赤纬D(J2000)":"38.25944444444445","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3.1","短轴(分)":"0.7","方位角":"150","详细描述":"extremely faint, pretty small, irregularly round, double star close to east","简略描述":"eF, pS, iR, D * close f"},{"ID":"802","标识":"NGC802","M标识":"NGC802","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"水蛇座","星座(En)":"HYI","赤经(J2000)":"1h59m6.1s","赤经D(J2000)":"1.9850277777777778","赤纬(J2000)":"-67h52m13s","赤纬D(J2000)":"-67.87027777777777","可见光星等V":"13.2","摄影(蓝光)星等B":"13.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"152","详细描述":"most extremely faint, very small, round, 13th magnitude star 100 arcsec to west","简略描述":"eeF, vS, R, * 13 p 100\""},{"ID":"803","标识":"NGC803","M标识":"NGC803","拓展名":"","组件":"","Class":"III 208","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h3m44.8s","赤经D(J2000)":"2.062444444444444","赤纬(J2000)":"+16h1m52s","赤纬D(J2000)":"16.03111111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3","短轴(分)":"1.3","方位角":"8","详细描述":"very faint, small, irregularly round, gradually a little bighter middle, 10th magnitude star 3.5 seconds of time to west","简略描述":"vF, S, iR, glbM, * 10 p 3s.5"},{"ID":"804","标识":"NGC804","M标识":"NGC804","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h4m2.2s","赤经D(J2000)":"2.067277777777778","赤纬(J2000)":"+30h49m57s","赤纬D(J2000)":"30.8325","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.4","短轴(分)":"0.3","方位角":"7","详细描述":"most extremely faint, very small, round, a little brighter middle","简略描述":"eeF, vS, R, lbM"},{"ID":"805","标识":"NGC805","M标识":"NGC805","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h4m29.5s","赤经D(J2000)":"2.0748611111111113","赤纬(J2000)":"+28h48m46s","赤纬D(J2000)":"28.81277777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"115","详细描述":"extremely faint, extremely small, round, two 14th magnitude stars to west","简略描述":"eF, eS, R, 2 st 14 p"},{"ID":"806","标识":"NGC806","M标识":"NGC806","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h3m31.2s","赤经D(J2000)":"2.0586666666666664","赤纬(J2000)":"-9h55m58s","赤纬D(J2000)":"-9.932777777777778","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"60","详细描述":"most extremely faint, small, round, very difficult, pretty bright star to north","简略描述":"eeF, S, R, v diffic, pB * n"},{"ID":"807","标识":"NGC807","M标识":"NGC807","拓展名":"","组件":"","Class":"III 151","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h4m55.5s","赤经D(J2000)":"2.0820833333333337","赤纬(J2000)":"+28h59m16s","赤纬D(J2000)":"28.98777777777778","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"145","详细描述":"very faint, very small, irregularly round, between 2 stars to north and southwest","简略描述":"vF, vS, iR, bet 2 st n and sp"},{"ID":"808","标识":"NGC808","M标识":"NGC808","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h3m56.5s","赤经D(J2000)":"2.065694444444444","赤纬(J2000)":"-23h18m44s","赤纬D(J2000)":"-23.31222222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"7","详细描述":"very faint, pretty small, very little extended","简略描述":"vF, pS, vlE"},{"ID":"809","标识":"NGC809","M标识":"NGC809","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h4m18.9s","赤经D(J2000)":"2.071916666666667","赤纬(J2000)":"-8h44m6s","赤纬D(J2000)":"-8.735","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"179","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"810","标识":"NGC810","M标识":"NGC810","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h5m28.6s","赤经D(J2000)":"2.091277777777778","赤纬(J2000)":"+13h15m4s","赤纬D(J2000)":"13.251111111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"25","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"811","标识":"NGC811","M标识":"NGC811","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h4m30s","赤经D(J2000)":"2.075","赤纬(J2000)":"-9h6m21s","赤纬D(J2000)":"-9.105833333333333","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"42","详细描述":"extremely faint, extremely small, round (nebulous?), 10th magnitude star 1 arcmin to south","简略描述":"eF, eS, R (? neb), * 10 s 1'"},{"ID":"812","标识":"NGC812","M标识":"NGC812","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h6m51.7s","赤经D(J2000)":"2.114361111111111","赤纬(J2000)":"+44h34m21s","赤纬D(J2000)":"44.572500000000005","可见光星等V":"11.3","摄影(蓝光)星等B":"12.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"2.2","短轴(分)":"0.8","方位角":"160","详细描述":"extremely faint, pretty large, extended 45°, brighter middle","简略描述":"eF, pL, E 45°, bM"},{"ID":"813","标识":"NGC813","M标识":"NGC813","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"水蛇座","星座(En)":"HYI","赤经(J2000)":"2h1m36.1s","赤经D(J2000)":"2.0266944444444444","赤纬(J2000)":"-68h26m21s","赤纬D(J2000)":"-68.43916666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"99","详细描述":"pretty faint, small, round, gradually brighter middle","简略描述":"pF, S, R, gbM"},{"ID":"814","标识":"NGC814","M标识":"NGC814","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h10m37.6s","赤经D(J2000)":"2.177111111111111","赤纬(J2000)":"-15h46m24s","赤纬D(J2000)":"-15.773333333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"4","详细描述":"extremely faint, small, round, gradually brighter middle","简略描述":"eF, S, R, gbM"},{"ID":"815","标识":"NGC815","M标识":"NGC815","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C+C","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h10m39.4s","赤经D(J2000)":"2.177611111111111","赤纬(J2000)":"-15h48m46s","赤纬D(J2000)":"-15.812777777777779","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"135","详细描述":"extremely faint, very small, round, gradually brighter middle","简略描述":"eF, vS, R, gbM"},{"ID":"816","标识":"NGC816","M标识":"NGC816","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h8m8.8s","赤经D(J2000)":"2.1357777777777778","赤纬(J2000)":"+29h15m23s","赤纬D(J2000)":"29.25638888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, irregular figure","简略描述":"vF, vS, iF"},{"ID":"817","标识":"NGC817","M标识":"NGC817","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h7m33.6s","赤经D(J2000)":"2.126","赤纬(J2000)":"+17h12m7s","赤纬D(J2000)":"17.201944444444443","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"27","详细描述":"extremely faint, very small, round, 2 stars near","简略描述":"eF, vS, R, 2 st nr"},{"ID":"818","标识":"NGC818","M标识":"NGC818","拓展名":"","组件":"","Class":"II 604","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h8m44.4s","赤经D(J2000)":"2.1456666666666666","赤纬(J2000)":"+38h46m38s","赤纬D(J2000)":"38.77722222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.9","短轴(分)":"1.2","方位角":"113","详细描述":"pretty bright, considerably large, a little extended, much brighter middle","简略描述":"pB, cL, lE, mbM"},{"ID":"819","标识":"NGC819","M标识":"NGC819","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h8m34.5s","赤经D(J2000)":"2.142916666666667","赤纬(J2000)":"+29h14m5s","赤纬D(J2000)":"29.234722222222224","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"10","详细描述":"pretty faint, very small, round, 13th magnitude star to north","简略描述":"pF, vS, R, * 13 n"},{"ID":"820","标识":"NGC820","M标识":"NGC820","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h8m24.9s","赤经D(J2000)":"2.14025","赤纬(J2000)":"+14h20m59s","赤纬D(J2000)":"14.349722222222223","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"72","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"821","标识":"NGC821","M标识":"NGC821","拓展名":"","组件":"","Class":"I 152","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h8m21s","赤经D(J2000)":"2.1391666666666667","赤纬(J2000)":"+10h59m39s","赤纬D(J2000)":"10.994166666666667","可见光星等V":"10.7","摄影(蓝光)星等B":"11.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"2.4","短轴(分)":"1.7","方位角":"25","详细描述":"pretty bright, very small, very little extended, suddenly very much brighter middle, 10th magnitude star 1 arcmin to northwest","简略描述":"pB, vS, vlE, svmbM, * 10 np 1'"},{"ID":"822","标识":"NGC822","M标识":"NGC822","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"2h6m39.2s","赤经D(J2000)":"2.110888888888889","赤纬(J2000)":"-41h9m25s","赤纬D(J2000)":"-41.15694444444444","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"77","详细描述":"considerably faint, very small, round, suddenly brighter middle, mottled but not resolved","简略描述":"cF, vS, R, sbM, r"},{"ID":"823","标识":"NGC823","M标识":"NGC823","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h7m20s","赤经D(J2000)":"2.1222222222222222","赤纬(J2000)":"-25h26m30s","赤纬D(J2000)":"-25.441666666666666","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"102","详细描述":"very faint, very faint double star involved","简略描述":"vF, vF D * inv"},{"ID":"824","标识":"NGC824","M标识":"NGC824","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h6m53.2s","赤经D(J2000)":"2.114777777777778","赤纬(J2000)":"-36h27m12s","赤纬D(J2000)":"-36.45333333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"26","详细描述":"faint, small, round, very suddenly very much brighter middle equivalent to 13th magnitude star","简略描述":"F, S, R, vsvmbM * 13"},{"ID":"825","标识":"NGC825","M标识":"NGC825","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h8m32.4s","赤经D(J2000)":"2.142333333333333","赤纬(J2000)":"+6h19m24s","赤纬D(J2000)":"6.323333333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2","短轴(分)":"0.5","方位角":"53","详细描述":"faint, small, much extended","简略描述":"F, S, mE"},{"ID":"826","标识":"NGC826","M标识":"NGC826","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h9m25.1s","赤经D(J2000)":"2.156972222222222","赤纬(J2000)":"+30h44m22s","赤纬D(J2000)":"30.739444444444445","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"60","详细描述":"extremely faint, small, round, a little brighter middle","简略描述":"eF, S, R, lbM"},{"ID":"827","标识":"NGC827","M标识":"NGC827","拓展名":"","组件":"","Class":"III 227","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h8m56.3s","赤经D(J2000)":"2.148972222222222","赤纬(J2000)":"+7h58m18s","赤纬D(J2000)":"7.971666666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2","短轴(分)":"0.6","方位角":"85","详细描述":"very faint, small, extended, brighter middle, among stars","简略描述":"vF, S, E, bM, am st"},{"ID":"828","标识":"NGC828","M标识":"NGC828","拓展名":"","组件":"","Class":"II 605","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa\/P","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h10m9.5s","赤经D(J2000)":"2.1693055555555554","赤纬(J2000)":"+39h11m28s","赤纬D(J2000)":"39.191111111111105","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.5","短轴(分)":"1.6","方位角":"141","详细描述":"pretty bright, small, irregularly round, double star 15 arcmin to east","简略描述":"pB, S, iR, D * f 15s"},{"ID":"829","标识":"NGC829","M标识":"NGC829","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h8m42.2s","赤经D(J2000)":"2.1450555555555555","赤纬(J2000)":"-7h47m25s","赤纬D(J2000)":"-7.790277777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"60","详细描述":"faint, small, 11th magnitude star to south, 1st of 3","简略描述":"F, S, * 11 s, 1st of 3"},{"ID":"830","标识":"NGC830","M标识":"NGC830","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h8m58.7s","赤经D(J2000)":"2.1496388888888887","赤纬(J2000)":"-7h46m3s","赤纬D(J2000)":"-7.7675","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"72","详细描述":"pretty faint, very small, round, 2nd of 3","简略描述":"pF, vS, R, 2nd of 3"},{"ID":"831","标识":"NGC831","M标识":"NGC831","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h9m34.5s","赤经D(J2000)":"2.1595833333333334","赤纬(J2000)":"+6h5m48s","赤纬D(J2000)":"6.096666666666667","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"102","详细描述":"very faint, pretty small","简略描述":"vF, pS"},{"ID":"832","标识":"NGC832","M标识":"NGC832","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h11m5.4s","赤经D(J2000)":"3.184833333333333","赤纬(J2000)":"+35h23m11s","赤纬D(J2000)":"35.38638888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"95","详细描述":"faint, very small, 9th or 10th magnitude star to southwest","简略描述":"F, vS, * 9·10 sp"},{"ID":"833","标识":"NGC833","M标识":"NGC833","拓展名":"","组件":"","Class":"II 482","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h9m20.8s","赤经D(J2000)":"2.155777777777778","赤纬(J2000)":"-10h7m58s","赤纬D(J2000)":"-10.132777777777779","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"85","详细描述":"faint, small, round, 1st of 4","简略描述":"F, S, R, 1st of 4"},{"ID":"834","标识":"NGC834","M标识":"NGC834","拓展名":"","组件":"","Class":"III 567","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h11m1.2s","赤经D(J2000)":"2.1836666666666664","赤纬(J2000)":"+37h39m58s","赤纬D(J2000)":"37.66611111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"20","详细描述":"very faint, small, a little extended","简略描述":"vF, S, lE"},{"ID":"835","标识":"NGC835","M标识":"NGC835","拓展名":"","组件":"","Class":"II 483","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h9m24.6s","赤经D(J2000)":"2.156833333333333","赤纬(J2000)":"-10h8m7s","赤纬D(J2000)":"-10.135277777777777","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"15","详细描述":"faint, small, round, 1st of 4","简略描述":"F, S, R, 2nd of 4"},{"ID":"836","标识":"NGC836","M标识":"NGC836","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h10m24.8s","赤经D(J2000)":"2.1735555555555552","赤纬(J2000)":"-22h3m18s","赤纬D(J2000)":"-22.055","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"110","详细描述":"extremely faint, small, round, gradually brighter middle and nucleus","简略描述":"eF, S, R, gbMN"},{"ID":"837","标识":"NGC837","M标识":"NGC837","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h10m16.1s","赤经D(J2000)":"2.1711388888888887","赤纬(J2000)":"-22h25m53s","赤纬D(J2000)":"-22.43138888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"12","详细描述":"extremely faint, pretty small, much extended 0°, 10th magnitude star 1 arcmin to north","简略描述":"eF, pS, mE 0°, * 10 n 1'"},{"ID":"838","标识":"NGC838","M标识":"NGC838","拓展名":"","组件":"","Class":"II 484","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h9m38.4s","赤经D(J2000)":"2.1606666666666667","赤纬(J2000)":"-10h8m45s","赤纬D(J2000)":"-10.145833333333332","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"85","详细描述":"very faint, very small, round, 3rd of 4","简略描述":"vF, vS, R, 3rd of 4"},{"ID":"839","标识":"NGC839","M标识":"NGC839","拓展名":"","组件":"","Class":"II 485","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h9m42.9s","赤经D(J2000)":"2.1619166666666665","赤纬(J2000)":"-10h11m0s","赤纬D(J2000)":"-10.183333333333334","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"84","详细描述":"very faint, pretty small, 4th of 4","简略描述":"vF, pS, R, 4th of 4"},{"ID":"840","标识":"NGC840","M标识":"NGC840","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h10m16.1s","赤经D(J2000)":"2.1711388888888887","赤纬(J2000)":"+7h50m45s","赤纬D(J2000)":"7.845833333333333","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.8","短轴(分)":"1","方位角":"73","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"841","标识":"NGC841","M标识":"NGC841","拓展名":"","组件":"","Class":"III 604","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h11m17.4s","赤经D(J2000)":"2.1881666666666666","赤纬(J2000)":"+37h29m51s","赤纬D(J2000)":"37.4975","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"1","方位角":"135","详细描述":"pretty bright, very small, much brighter middle and nucleus equivalent to a 13th or 14th magnitude star","简略描述":"pB, vS, mbMN = * 13·14"},{"ID":"842","标识":"NGC842","M标识":"NGC842","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h9m50.7s","赤经D(J2000)":"2.164083333333333","赤纬(J2000)":"-7h45m45s","赤纬D(J2000)":"-7.7625","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"150","详细描述":"very faint, very small, round, pretty suddenly bright middle, the 3rd of 3","简略描述":"vF, vS, R, psbM, 3rd of 3"},{"ID":"843","标识":"NGC843","M标识":"NGC843","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h11m8.2s","赤经D(J2000)":"2.1856111111111107","赤纬(J2000)":"+32h5m54s","赤纬D(J2000)":"32.098333333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a globular cluster, faint, small, round","简略描述":"globular, F, S, R"},{"ID":"844","标识":"NGC844","M标识":"NGC844","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h10m14.3s","赤经D(J2000)":"2.1706388888888886","赤纬(J2000)":"+6h3m0s","赤纬D(J2000)":"6.05","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small","简略描述":"F, S"},{"ID":"845","标识":"NGC845","M标识":"NGC845","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h12m19.7s","赤经D(J2000)":"2.2054722222222223","赤纬(J2000)":"+37h28m39s","赤纬D(J2000)":"37.4775","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"0.4","方位角":"149","详细描述":"very faint, irregular figure, stellar","简略描述":"vF, iF, stellar"},{"ID":"846","标识":"NGC846","M标识":"NGC846","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h12m12.1s","赤经D(J2000)":"2.203361111111111","赤纬(J2000)":"+44h34m5s","赤纬D(J2000)":"44.56805555555556","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"1.7","方位角":"140","详细描述":"extremely faint, very small, round, gradually brighter middle","简略描述":"eF, vS, R, gbM"},{"ID":"847","标识":"NGC847","M标识":"NGC847","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h12m12.1s","赤经D(J2000)":"2.203361111111111","赤纬(J2000)":"+44h34m5s","赤纬D(J2000)":"44.56805555555556","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"1.7","方位角":"140","详细描述":"extremely faint, very small, round, gradually brighter middle","简略描述":"vF, pL, R"},{"ID":"848","标识":"NGC848","M标识":"NGC848","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h10m17.4s","赤经D(J2000)":"2.1715","赤纬(J2000)":"-10h19m14s","赤纬D(J2000)":"-10.320555555555556","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1","方位角":"135","详细描述":"most extremely faint, pretty large, very difficult, star to northeast","简略描述":"eeF, pL, v diffic, * nf"},{"ID":"849","标识":"NGC849","M标识":"NGC849","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h10m11.2s","赤经D(J2000)":"2.1697777777777776","赤纬(J2000)":"-22h19m23s","赤纬D(J2000)":"-22.323055555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"117","详细描述":"extremely faint, very small, round (nebulous?)","简略描述":"eF, vS, R (? neb)"},{"ID":"850","标识":"NGC850","M标识":"NGC850","拓展名":"","组件":"","Class":"III 259","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h11m13.5s","赤经D(J2000)":"2.1870833333333333","赤纬(J2000)":"-1h29m6s","赤纬D(J2000)":"-1.485","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"85","详细描述":"extremely faint, extremely small, irregular figure","简略描述":"eF, eS, iF"},{"ID":"851","标识":"NGC851","M标识":"NGC851","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h11m12.2s","赤经D(J2000)":"2.186722222222222","赤纬(J2000)":"+3h46m47s","赤纬D(J2000)":"3.779722222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.6","方位角":"135","详细描述":"extremely faint, pretty small, round, very difficult","简略描述":"eF, pS, R, v diffic"},{"ID":"852","标识":"NGC852","M标识":"NGC852","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h8m55.2s","赤经D(J2000)":"2.1486666666666667","赤纬(J2000)":"-56h44m12s","赤纬D(J2000)":"-56.736666666666665","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"74","详细描述":"pretty faint, pretty small, round, gradually a little brighter middle, mottled but not resolved","简略描述":"pF, pS, R, glbM, r"},{"ID":"853","标识":"NGC853","M标识":"NGC853","拓展名":"","组件":"","Class":"II 486","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h11m41s","赤经D(J2000)":"2.194722222222222","赤纬(J2000)":"-9h18m19s","赤纬D(J2000)":"-9.305277777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"69","详细描述":"faint, small, extended","简略描述":"F, S, E"},{"ID":"854","标识":"NGC854","M标识":"NGC854","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h11m30.6s","赤经D(J2000)":"2.1918333333333333","赤纬(J2000)":"-35h50m8s","赤纬D(J2000)":"-35.83555555555556","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"0","详细描述":"considerably faint, pretty small, a little extended 0°, gradually brighter middle","简略描述":"cF, pS, lE 0°, gbM"},{"ID":"855","标识":"NGC855","M标识":"NGC855","拓展名":"","组件":"","Class":"II 613","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h14m3.7s","赤经D(J2000)":"2.2343611111111112","赤纬(J2000)":"+27h52m40s","赤纬D(J2000)":"27.87777777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.6","短轴(分)":"1","方位角":"63","详细描述":"faint, small, a little extended 90°, brighter middle","简略描述":"F, S, lE 90°, bM"},{"ID":"856","标识":"NGC856","M标识":"NGC856","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h13m38.4s","赤经D(J2000)":"2.2273333333333336","赤纬(J2000)":"-0h43m0s","赤纬D(J2000)":"-0.7166666666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"20","详细描述":"extremely faint, small, a little extended, faint star close to east","简略描述":"eF, S, lE, F * close f"},{"ID":"857","标识":"NGC857","M标识":"NGC857","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h12m37s","赤经D(J2000)":"2.210277777777778","赤纬(J2000)":"-31h56m40s","赤纬D(J2000)":"-31.944444444444446","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"92","详细描述":"considerably bright, small, extended, pretty suddenly much brighter middle","简略描述":"cB, S, E, psmbM"},{"ID":"858","标识":"NGC858","M标识":"NGC858","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h12m30.2s","赤经D(J2000)":"2.208388888888889","赤纬(J2000)":"-22h28m17s","赤纬D(J2000)":"-22.47138888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"","详细描述":"extremely faint, pretty large, round","简略描述":"eF, pL, R"},{"ID":"859","标识":"NGC859","M标识":"NGC859","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h13m38.4s","赤经D(J2000)":"2.2273333333333336","赤纬(J2000)":"-0h43m0s","赤纬D(J2000)":"-0.7166666666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"20","详细描述":"extremely faint, small, a little extended, faint star close to east","简略描述":"pF, pS, R, lbM"},{"ID":"860","标识":"NGC860","M标识":"NGC860","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h15m0.1s","赤经D(J2000)":"2.250027777777778","赤纬(J2000)":"+30h46m46s","赤纬D(J2000)":"30.779444444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"138","详细描述":"a 13th magnitude star in faint nebulosity","简略描述":"* 13 in F neb"},{"ID":"861","标识":"NGC861","M标识":"NGC861","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h15m51.1s","赤经D(J2000)":"2.2641944444444446","赤纬(J2000)":"+35h54m50s","赤纬D(J2000)":"35.913888888888884","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"38","详细描述":"very faint, small, double star attached on southwest","简略描述":"vF, S, D * att sp"},{"ID":"862","标识":"NGC862","M标识":"NGC862","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"2h13m2.8s","赤经D(J2000)":"2.2174444444444448","赤纬(J2000)":"-42h2m1s","赤纬D(J2000)":"-42.03361111111111","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, very small, suddenly very much brighter middle","简略描述":"F, vS, svmbM"},{"ID":"863","标识":"NGC863","M标识":"NGC863","拓展名":"","组件":"","Class":"III 260","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h14m33.5s","赤经D(J2000)":"2.242638888888889","赤纬(J2000)":"-0h45m58s","赤纬D(J2000)":"-0.7661111111111111","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"1","方位角":"69","详细描述":"very faint, round, brighter middle, stellar","简略描述":"vF, R, bM, stellar"},{"ID":"864","标识":"NGC864","M标识":"NGC864","拓展名":"","组件":"","Class":"III 457","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h15m27.5s","赤经D(J2000)":"2.2576388888888888","赤纬(J2000)":"+6h0m7s","赤纬D(J2000)":"6.001944444444445","可见光星等V":"10.9","摄影(蓝光)星等B":"11.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"4.7","短轴(分)":"3.5","方位角":"20","详细描述":"extremely faint, considerably large, round, gradually brighter middle, 12th magnitude star attached on southeast","简略描述":"eF, cL, R, gbM, * 12 sf att"},{"ID":"865","标识":"NGC865","M标识":"NGC865","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h16m15.1s","赤经D(J2000)":"2.270861111111111","赤纬(J2000)":"+28h36m3s","赤纬D(J2000)":"28.600833333333334","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"165","详细描述":"extremely faint, extremely small, irregularly round","简略描述":"eF, eS, iR"},{"ID":"866","标识":"NGC866","M标识":"NGC866","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h14m33.5s","赤经D(J2000)":"2.242638888888889","赤纬(J2000)":"-0h45m58s","赤纬D(J2000)":"-0.7661111111111111","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"1","方位角":"69","详细描述":"very faint, round, brighter middle, stellar","简略描述":"pF, pS, R, lbM"},{"ID":"867","标识":"NGC867","M标识":"NGC867","拓展名":"","组件":"","Class":"III 2","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h17m4.8s","赤经D(J2000)":"2.2846666666666664","赤纬(J2000)":"+1h14m41s","赤纬D(J2000)":"1.2447222222222223","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"105","详细描述":"extremely faint, very small, round, brighter middle","简略描述":"eF, vS, R, bM"},{"ID":"868","标识":"NGC868","M标识":"NGC868","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h15m58.5s","赤经D(J2000)":"2.26625","赤纬(J2000)":"-0h42m46s","赤纬D(J2000)":"-0.7127777777777777","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.3","短轴(分)":"1","方位角":"95","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"869","标识":"NGC869","M标识":"NGC869","拓展名":"","组件":"","Class":"VI 33","业余排名":"2","中文名":"双星团","类型":"OCL","含重复类型":"OCL","形态":"I3r","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h19m4s","赤经D(J2000)":"2.3177777777777777","赤纬(J2000)":"+57h8m6s","赤纬D(J2000)":"57.135","可见光星等V":"5.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"18","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a cluster, very very large, very rich, stars from 7th to 14th magnitude","简略描述":"! Cl, vvL, vRi, st 7…14"},{"ID":"870","标识":"NGC870","M标识":"NGC870","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h17m9.1s","赤经D(J2000)":"2.285861111111111","赤纬(J2000)":"+14h31m22s","赤纬D(J2000)":"14.522777777777778","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, stellar, 2 very faint stars close to southwest, south of h 208","简略描述":"eF, stellar, 2 vF st close sp, s of h 208"},{"ID":"871","标识":"NGC871","M标识":"NGC871","拓展名":"","组件":"","Class":"III 201","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h17m10.6s","赤经D(J2000)":"2.286277777777778","赤纬(J2000)":"+14h32m51s","赤纬D(J2000)":"14.5475","可见光星等V":"13.6","摄影(蓝光)星等B":"14.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"4","详细描述":"very faint, very small, extended, 10th magnitude star 5 arcmin to southeast","简略描述":"vF, vS, E, * 10 sf 5'"},{"ID":"872","标识":"NGC872","M标识":"NGC872","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h15m25.2s","赤经D(J2000)":"2.257","赤纬(J2000)":"-17h46m55s","赤纬D(J2000)":"-17.781944444444445","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"174","详细描述":"very faint, pretty small, much extended 0°, gradually very little brighter middle, several faint stars involved","简略描述":"vF, pS, mE 0°, gvlbM, sev F st inv"},{"ID":"873","标识":"NGC873","M标识":"NGC873","拓展名":"","组件":"","Class":"II 474","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h16m32.3s","赤经D(J2000)":"2.275638888888889","赤纬(J2000)":"-11h20m55s","赤纬D(J2000)":"-11.348611111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"145","详细描述":"faint, pretty large, round, very gradually a little brighter middle","简略描述":"F, pL, R, vglbM"},{"ID":"874","标识":"NGC874","M标识":"NGC874","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h16m2.1s","赤经D(J2000)":"2.2672499999999998","赤纬(J2000)":"-23h18m21s","赤纬D(J2000)":"-23.305833333333332","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"173","详细描述":"extremely faint, pretty small, extended 170°, possibly a double star, 10th magnitude star to the northwest","简略描述":"eF, pS, E 170° (? D *), * 10 np"},{"ID":"875","标识":"NGC875","M标识":"NGC875","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h17m4.8s","赤经D(J2000)":"2.2846666666666664","赤纬(J2000)":"+1h14m41s","赤纬D(J2000)":"1.2447222222222223","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"105","详细描述":"extremely faint, very small, round, brighter middle","简略描述":"vF, vS (?? = III 2)"},{"ID":"876","标识":"NGC876","M标识":"NGC876","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h17m53.2s","赤经D(J2000)":"2.298111111111111","赤纬(J2000)":"+14h31m16s","赤纬D(J2000)":"14.521111111111113","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"2","短轴(分)":"0.4","方位角":"20","详细描述":"extremely faint, small, round, 107 arcsec southwest of h 210","简略描述":"eF, S, R, 107\" sp h 210"},{"ID":"877","标识":"NGC877","M标识":"NGC877","拓展名":"","组件":"","Class":"II 246","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h17m59.7s","赤经D(J2000)":"2.2999166666666664","赤纬(J2000)":"+14h32m38s","赤纬D(J2000)":"14.543888888888889","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.4","短轴(分)":"1.9","方位角":"140","详细描述":"pretty faint, pretty large, a little extended, pretty gradually brighter middle, 12th magnitude star 1 arcmin to southeast, 9th magnitude star 285 arcsec distant at position angle 166°","简略描述":"pF, pL, lE, pgbM, * 12 sf 1', * 9 166°, 285\""},{"ID":"878","标识":"NGC878","M标识":"NGC878","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h17m54.2s","赤经D(J2000)":"2.298388888888889","赤纬(J2000)":"-23h23m4s","赤纬D(J2000)":"-23.384444444444444","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"112","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"879","标识":"NGC879","M标识":"NGC879","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h16m51.3s","赤经D(J2000)":"2.2809166666666667","赤纬(J2000)":"-8h57m49s","赤纬D(J2000)":"-8.96361111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"5","详细描述":"extremely faint, pretty small, irregularly round, brighter middle","简略描述":"eF, pS, iR, bM"},{"ID":"880","标识":"NGC880","M标识":"NGC880","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h18m27.2s","赤经D(J2000)":"2.3075555555555556","赤纬(J2000)":"-4h12m19s","赤纬D(J2000)":"-4.205277777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"14","详细描述":"extremely faint, very small, round, suddenly brighter middle and nucleus","简略描述":"eF, vS, R, sbMN"},{"ID":"881","标识":"NGC881","M标识":"NGC881","拓展名":"","组件":"","Class":"II 436","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h18m45.3s","赤经D(J2000)":"2.312583333333333","赤纬(J2000)":"-6h38m22s","赤纬D(J2000)":"-6.639444444444444","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.3","短轴(分)":"1.5","方位角":"135","详细描述":"faint, pretty small, extended, brighter middle, 2 or 3 stars near","简略描述":"F, pS, E, bM, 2 or 3 st nr"},{"ID":"882","标识":"NGC882","M标识":"NGC882","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h19m39.8s","赤经D(J2000)":"2.327722222222222","赤纬(J2000)":"+15h48m53s","赤纬D(J2000)":"15.814722222222223","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"82","详细描述":"extremely faint, round, gradually brighter middle, 16th magnitude star near","简略描述":"eF, R, gbM, * 16 nr"},{"ID":"883","标识":"NGC883","M标识":"NGC883","拓展名":"","组件":"","Class":"II 437","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h19m5.2s","赤经D(J2000)":"2.318111111111111","赤纬(J2000)":"-6h47m26s","赤纬D(J2000)":"-6.790555555555556","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"80","详细描述":"pretty faint, pretty small, very little extended, brighter middle, double star near","简略描述":"pF, pS, vlE, bM, D * nr"},{"ID":"884","标识":"NGC884","M标识":"NGC884","拓展名":"","组件":"","Class":"VI 34","业余排名":"2","中文名":"双星团","类型":"OCL","含重复类型":"OCL","形态":"I3r","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h22m5s","赤经D(J2000)":"2.368055555555556","赤纬(J2000)":"+57h7m48s","赤纬D(J2000)":"57.13","可见光星等V":"6.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"18","短轴(分)":"","方位角":"","详细描述":"most remarkable object, a cluster, very large, very rich, ruby star in middle","简略描述":"! Cl, vL, vRi, ruby * M"},{"ID":"885","标识":"NGC885","M标识":"NGC885","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h14m33.5s","赤经D(J2000)":"2.242638888888889","赤纬(J2000)":"-0h45m58s","赤纬D(J2000)":"-0.7661111111111111","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"1","方位角":"69","详细描述":"very faint, round, brighter middle, stellar","简略描述":"vF, pS, R, lbM"},{"ID":"886","标识":"NGC886","M标识":"NGC886","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"2h23m28.1s","赤经D(J2000)":"2.391138888888889","赤纬(J2000)":"+63h46m16s","赤纬D(J2000)":"63.77111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"14","短轴(分)":"","方位角":"","详细描述":"a cluster, large, a little compressed, scattered, stars from 9th to 13th magnitude","简略描述":"Cl, L, lC, sc, st 9…13"},{"ID":"887","标识":"NGC887","M标识":"NGC887","拓展名":"","组件":"","Class":"III 486","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h19m32.6s","赤经D(J2000)":"2.325722222222222","赤纬(J2000)":"-16h4m9s","赤纬D(J2000)":"-16.069166666666668","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2","短轴(分)":"1.6","方位角":"5","详细描述":"faint, small, irregularly round, pretty gradually brighter middle","简略描述":"F, S, iR, pgbM"},{"ID":"888","标识":"NGC888","M标识":"NGC888","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1\/P","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"2h17m27.1s","赤经D(J2000)":"2.290861111111111","赤纬(J2000)":"-59h51m38s","赤纬D(J2000)":"-59.86055555555556","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, small, round, 2 or 3 very faint stars near","简略描述":"eF, S, R, 2 or 3 vF st nr"},{"ID":"889","标识":"NGC889","M标识":"NGC889","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"2h19m6.8s","赤经D(J2000)":"2.3185555555555553","赤纬(J2000)":"-41h44m57s","赤纬D(J2000)":"-41.74916666666667","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.9","方位角":"103","详细描述":"very faint, very small, round, brighter middle, 7th magnitude star to southeast","简略描述":"vF, vS, R, bM, * 7 sf"},{"ID":"890","标识":"NGC890","M标识":"NGC890","拓展名":"","组件":"","Class":"II 225","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h22m1s","赤经D(J2000)":"2.3669444444444445","赤纬(J2000)":"+33h15m59s","赤纬D(J2000)":"33.26638888888889","可见光星等V":"11.2","摄影(蓝光)星等B":"12.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.5","短轴(分)":"1.7","方位角":"54","详细描述":"bright, small, round, brighter middle, 3 faint stars to southwest","简略描述":"B, S, R, bM, 3 F st sp"},{"ID":"891","标识":"NGC891","M标识":"NGC891","拓展名":"","组件":"","Class":"V 19","业余排名":"2","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h22m33s","赤经D(J2000)":"2.3758333333333335","赤纬(J2000)":"+42h20m50s","赤纬D(J2000)":"42.34722222222222","可见光星等V":"9.9","摄影(蓝光)星等B":"10.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"11.7","短轴(分)":"1.6","方位角":"22","详细描述":"a remarkable object, bright, very large, very much extended 22°","简略描述":"! B, vL, vmE 22°"},{"ID":"892","标识":"NGC892","M标识":"NGC892","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h20m52s","赤经D(J2000)":"2.347777777777778","赤纬(J2000)":"-23h6m49s","赤纬D(J2000)":"-23.113611111111112","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"6","详细描述":"extremely faint, extremely small, extended? nebulous?","简略描述":"eF, eS, E?, neb?"},{"ID":"893","标识":"NGC893","M标识":"NGC893","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"2h19m58.1s","赤经D(J2000)":"2.3328055555555554","赤纬(J2000)":"-41h24m10s","赤纬D(J2000)":"-41.40277777777778","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"119","详细描述":"pretty faint, pretty small, round, a little brighter middle, 8th magnitude star 4 arcmin to east","简略描述":"pF, pS, R, lbM, * 8 f 4'"},{"ID":"894","标识":"NGC894","M标识":"NGC894","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h21m34.5s","赤经D(J2000)":"2.3595833333333336","赤纬(J2000)":"-5h30m35s","赤纬D(J2000)":"-5.509722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extended, brighter middle, a double nebula, connected with NGC 895","简略描述":"vF, E, bM, D neb, connected"},{"ID":"895","标识":"NGC895","M标识":"NGC895","拓展名":"","组件":"","Class":"II 438","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h21m36.5s","赤经D(J2000)":"2.360138888888889","赤纬(J2000)":"-5h31m16s","赤纬D(J2000)":"-5.521111111111111","可见光星等V":"11.7","摄影(蓝光)星等B":"12.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3.6","短轴(分)":"2.6","方位角":"126","详细描述":"very faint, extended, brighter middle, a double nebula, connected with NGC 895","简略描述":"F, vL, iR, gbM, D neb, connected"},{"ID":"896","标识":"NGC896","M标识":"NGC896","拓展名":"","组件":"","Class":"III 695","业余排名":"6.5","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"2h25m27.8s","赤经D(J2000)":"2.4243888888888887","赤纬(J2000)":"+62h1m10s","赤纬D(J2000)":"62.019444444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"10","方位角":"","详细描述":"extremely faint, pretty large, irregular figure","简略描述":"eF, pL, iF"},{"ID":"897","标识":"NGC897","M标识":"NGC897","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h21m6.4s","赤经D(J2000)":"2.351777777777778","赤纬(J2000)":"-33h43m15s","赤纬D(J2000)":"-33.72083333333334","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.1","短轴(分)":"1.3","方位角":"17","详细描述":"pretty bright, small, round, pretty suddenly brighter middle, 10th magnitude star 35 arcsec to east","简略描述":"pB, S, R, psbM, * 10 f 35\""},{"ID":"898","标识":"NGC898","M标识":"NGC898","拓展名":"","组件":"","Class":"III 570","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h23m20.2s","赤经D(J2000)":"2.3889444444444443","赤纬(J2000)":"+41h57m6s","赤纬D(J2000)":"41.95166666666667","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.8","短轴(分)":"0.4","方位角":"170","详细描述":"extremely faint, very small, a little extended","简略描述":"eF, vS, lE"},{"ID":"899","标识":"NGC899","M标识":"NGC899","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h21m53.1s","赤经D(J2000)":"2.36475","赤纬(J2000)":"-20h49m23s","赤纬D(J2000)":"-20.823055555555555","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"116","详细描述":"pretty bright, small, gradually brighter middle, mottled but not resolved, double star to west","简略描述":"pB, S, gbM, r, D * p"},{"ID":"900","标识":"NGC900","M标识":"NGC900","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h23m32.1s","赤经D(J2000)":"2.3922499999999998","赤纬(J2000)":"+26h30m43s","赤纬D(J2000)":"26.511944444444445","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"30","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"901","标识":"NGC901","M标识":"NGC901","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h23m34s","赤经D(J2000)":"2.392777777777778","赤纬(J2000)":"+26h33m24s","赤纬D(J2000)":"26.55666666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"902","标识":"NGC902","M标识":"NGC902","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h22m21.8s","赤经D(J2000)":"2.3727222222222224","赤纬(J2000)":"-16h40m44s","赤纬D(J2000)":"-16.67888888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"15","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"903","标识":"NGC903","M标识":"NGC903","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h24m0.8s","赤经D(J2000)":"2.4002222222222223","赤纬(J2000)":"+27h21m25s","赤纬D(J2000)":"27.356944444444444","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"175","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"904","标识":"NGC904","M标识":"NGC904","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h24m5.5s","赤经D(J2000)":"2.4015277777777775","赤纬(J2000)":"+27h20m35s","赤纬D(J2000)":"27.343055555555555","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"130","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"905","标识":"NGC905","M标识":"NGC905","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h22m43.5s","赤经D(J2000)":"2.37875","赤纬(J2000)":"-8h43m7s","赤纬D(J2000)":"-8.71861111111111","可见光星等V":"15.1","摄影(蓝光)星等B":"16","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"115","详细描述":"extremely faint, extremely small, round, perhaps a star","简略描述":"eF, eS, R, ? *"},{"ID":"906","标识":"NGC906","M标识":"NGC906","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h25m16.2s","赤经D(J2000)":"2.4211666666666667","赤纬(J2000)":"+42h5m25s","赤纬D(J2000)":"42.09027777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"143","详细描述":"extremely faint, irregularly extended","简略描述":"eF, iE"},{"ID":"907","标识":"NGC907","M标识":"NGC907","拓展名":"","组件":"","Class":"III 224","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h23m1.7s","赤经D(J2000)":"2.3838055555555555","赤纬(J2000)":"-20h42m41s","赤纬D(J2000)":"-20.711388888888887","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"87","详细描述":"faint, small, extended 90°, gradually brighter middle","简略描述":"F, S, E 90°, gbM"},{"ID":"908","标识":"NGC908","M标识":"NGC908","拓展名":"","组件":"","Class":"I 153","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h23m4.6s","赤经D(J2000)":"2.384611111111111","赤纬(J2000)":"-21h14m0s","赤纬D(J2000)":"-21.233333333333334","可见光星等V":"10.2","摄影(蓝光)星等B":"10.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"6.1","短轴(分)":"2.7","方位角":"75","详细描述":"considerably bright, very large, extended","简略描述":"cB, vL, E"},{"ID":"909","标识":"NGC909","M标识":"NGC909","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h25m22.7s","赤经D(J2000)":"2.422972222222222","赤纬(J2000)":"+42h2m10s","赤纬D(J2000)":"42.03611111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, very small, very small (faint) star involved","简略描述":"vF, vS, vS * inv"},{"ID":"910","标识":"NGC910","M标识":"NGC910","拓展名":"","组件":"","Class":"III 571","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h25m26.8s","赤经D(J2000)":"2.424111111111111","赤纬(J2000)":"+41h49m27s","赤纬D(J2000)":"41.82416666666667","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.6","方位角":"","详细描述":"very faint, pretty small, stellar","简略描述":"vF, pS, stellar"},{"ID":"911","标识":"NGC911","M标识":"NGC911","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h25m42.4s","赤经D(J2000)":"2.428444444444444","赤纬(J2000)":"+41h57m24s","赤纬D(J2000)":"41.95666666666667","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"115","详细描述":"extremely faint, very small, round, brighter middle","简略描述":"eF, vS, R, bM"},{"ID":"912","标识":"NGC912","M标识":"NGC912","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h25m42.7s","赤经D(J2000)":"2.4285277777777776","赤纬(J2000)":"+41h46m41s","赤纬D(J2000)":"41.778055555555554","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"153","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"913","标识":"NGC913","M标识":"NGC913","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h25m44.8s","赤经D(J2000)":"2.4291111111111108","赤纬(J2000)":"+41h47m57s","赤纬D(J2000)":"41.799166666666665","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"24","详细描述":"extremely faint, very small, a little brighter middle","简略描述":"eF, vS, lbM"},{"ID":"914","标识":"NGC914","M标识":"NGC914","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h26m5.1s","赤经D(J2000)":"2.43475","赤纬(J2000)":"+42h8m41s","赤纬D(J2000)":"42.14472222222222","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"117","详细描述":"extremely faint, pretty large, diffuse","简略描述":"eF, pL, dif"},{"ID":"915","标识":"NGC915","M标识":"NGC915","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h25m45.5s","赤经D(J2000)":"2.4293055555555556","赤纬(J2000)":"+27h13m18s","赤纬D(J2000)":"27.221666666666664","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"916","标识":"NGC916","M标识":"NGC916","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h25m47.6s","赤经D(J2000)":"2.4298888888888888","赤纬(J2000)":"+27h14m35s","赤纬D(J2000)":"27.243055555555557","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"0","详细描述":"extremely faint","简略描述":"eF"},{"ID":"917","标识":"NGC917","M标识":"NGC917","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h26m7.7s","赤经D(J2000)":"2.4354722222222223","赤纬(J2000)":"+31h54m44s","赤纬D(J2000)":"31.91222222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2.5","短轴(分)":"1.3","方位角":"55","详细描述":"very faint, small, round, 4 stars near (perhaps a very small cluster?)","简略描述":"vF, S, R, 4 st nr (? vS Cl)"},{"ID":"918","标识":"NGC918","M标识":"NGC918","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h25m50.8s","赤经D(J2000)":"2.4307777777777777","赤纬(J2000)":"+18h29m45s","赤纬D(J2000)":"18.495833333333334","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"3.5","短轴(分)":"2","方位角":"158","详细描述":"pretty faint, large, round, 10th magnitude star 3 arcmin to southeast","简略描述":"pF, L, R, * 10 sf 3'"},{"ID":"919","标识":"NGC919","M标识":"NGC919","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h26m16.6s","赤经D(J2000)":"2.4379444444444447","赤纬(J2000)":"+27h12m41s","赤纬D(J2000)":"27.211388888888887","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"138","详细描述":"extremely faint","简略描述":"eF"},{"ID":"920","标识":"NGC920","M标识":"NGC920","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h28m45.8s","赤经D(J2000)":"2.479388888888889","赤纬(J2000)":"+45h58m16s","赤纬D(J2000)":"45.971111111111114","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"34","详细描述":"extremely faint, extremely small, round, 1 or 2 extremely faint stars near","简略描述":"eF, eS, R, 1 or 2 eF st nr"},{"ID":"921","标识":"NGC921","M标识":"NGC921","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h26m33.5s","赤经D(J2000)":"2.4426388888888892","赤纬(J2000)":"-15h50m51s","赤纬D(J2000)":"-15.8475","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"84","详细描述":"extremely faint, small, round, gradually brighter middle","简略描述":"eF, S, R, gbM"},{"ID":"922","标识":"NGC922","M标识":"NGC922","拓展名":"","组件":"","Class":"III 239","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd\/P","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h25m3.5s","赤经D(J2000)":"2.417638888888889","赤纬(J2000)":"-24h47m21s","赤纬D(J2000)":"-24.789166666666667","可见光星等V":"12.1","摄影(蓝光)星等B":"12.5","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2","短轴(分)":"1.6","方位角":"172","详细描述":"considerably faint, pretty large, round, gradually pretty much better middle","简略描述":"cF, pL, R, gpmbM"},{"ID":"923","标识":"NGC923","M标识":"NGC923","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h27m34.6s","赤经D(J2000)":"2.459611111111111","赤纬(J2000)":"+41h58m41s","赤纬D(J2000)":"41.97805555555556","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"95","详细描述":"very faint, small, round, gradually then suddenly brighter middle","简略描述":"vF, S, R, gsbM"},{"ID":"924","标识":"NGC924","M标识":"NGC924","拓展名":"","组件":"","Class":"III 474","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h26m46.7s","赤经D(J2000)":"2.446305555555556","赤纬(J2000)":"+20h29m50s","赤纬D(J2000)":"20.497222222222224","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.3","短轴(分)":"1.3","方位角":"53","详细描述":"extremely faint, very small, irregularly round","简略描述":"eF, vS, iR"},{"ID":"925","标识":"NGC925","M标识":"NGC925","拓展名":"","组件":"","Class":"III 177","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h27m16.8s","赤经D(J2000)":"2.4546666666666668","赤纬(J2000)":"+33h34m44s","赤纬D(J2000)":"33.57888888888889","可见光星等V":"10.1","摄影(蓝光)星等B":"10.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"10.5","短轴(分)":"5.9","方位角":"102","详细描述":"considerably faint, considerably large, extended, very gradually brighter middle, two 13th magnitude stars to northwest","简略描述":"cF, cL, E, vgbM, 2 st 13 np"},{"ID":"926","标识":"NGC926","M标识":"NGC926","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h26m6.6s","赤经D(J2000)":"2.435166666666667","赤纬(J2000)":"-0h19m57s","赤纬D(J2000)":"-0.33249999999999996","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"1","方位角":"36","详细描述":"very faint, pretty small","简略描述":"vF, pS"},{"ID":"927","标识":"NGC927","M标识":"NGC927","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h26m37.3s","赤经D(J2000)":"2.4436944444444446","赤纬(J2000)":"+12h9m19s","赤纬D(J2000)":"12.155277777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"faint, small, brighter middle","简略描述":"F, S, bM"},{"ID":"928","标识":"NGC928","M标识":"NGC928","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h27m40.8s","赤经D(J2000)":"2.4613333333333336","赤纬(J2000)":"+27h13m15s","赤纬D(J2000)":"27.22083333333333","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"35","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"929","标识":"NGC929","M标识":"NGC929","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h27m18.1s","赤经D(J2000)":"2.455027777777778","赤纬(J2000)":"-12h5m14s","赤纬D(J2000)":"-12.087222222222223","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.6","方位角":"170","详细描述":"extremely faint, small, extended 170°, 8.5 magnitude star 4 arcmin to north","简略描述":"eF, S, E 170°, * 8.5 n 4'"},{"ID":"930","标识":"NGC930","M标识":"NGC930","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h27m56.7s","赤经D(J2000)":"2.4657500000000003","赤纬(J2000)":"+20h20m33s","赤纬D(J2000)":"20.342499999999998","可见光星等V":"14.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.1","短轴(分)":"0.1","方位角":"","详细描述":"extremely faint, small, irregularly round, very gradually brighter middle, II 489 one arcmin southeast","简略描述":"eF, S, iR, vgbM, II 489 sf 1'"},{"ID":"931","标识":"NGC931","M标识":"NGC931","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h28m14.5s","赤经D(J2000)":"2.4706944444444447","赤纬(J2000)":"+31h18m40s","赤纬D(J2000)":"31.311111111111114","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.9","短轴(分)":"0.8","方位角":"72","详细描述":"faint, pretty large, irregularly round","简略描述":"F, pL, iR"},{"ID":"932","标识":"NGC932","M标识":"NGC932","拓展名":"","组件":"","Class":"II 489","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h27m54.6s","赤经D(J2000)":"2.4651666666666667","赤纬(J2000)":"+20h19m59s","赤纬D(J2000)":"20.333055555555557","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.9","短轴(分)":"1.6","方位角":"42","详细描述":"faint, small, a little extended, 3 stars involved","简略描述":"F, S, lE, 3 st inv"},{"ID":"933","标识":"NGC933","M标识":"NGC933","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h29m17.4s","赤经D(J2000)":"2.488166666666667","赤纬(J2000)":"+45h54m43s","赤纬D(J2000)":"45.911944444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"35","详细描述":"extremely faint, extremely small, round, bright star to northeast","简略描述":"eF, eS, R, B * nf"},{"ID":"934","标识":"NGC934","M标识":"NGC934","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h27m32.9s","赤经D(J2000)":"2.459138888888889","赤纬(J2000)":"-0h14m39s","赤纬D(J2000)":"-0.24416666666666667","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"130","详细描述":"very faint, extremely small, perhaps a planetary nebula?","简略描述":"vF, eS, ? planetary"},{"ID":"935","标识":"NGC935","M标识":"NGC935","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h28m11.2s","赤经D(J2000)":"2.469777777777778","赤纬(J2000)":"+19h35m57s","赤纬D(J2000)":"19.599166666666665","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"155","详细描述":"pretty bright, pretty small, round, star 6 seconds of time to east","简略描述":"pB, pS, R, * f 6s"},{"ID":"936","标识":"NGC936","M标识":"NGC936","拓展名":"","组件":"","Class":"IV 23","业余排名":"6","中文名":"达斯·维德的星际战舰","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h27m37.5s","赤经D(J2000)":"2.4604166666666667","赤纬(J2000)":"-1h9m23s","赤纬D(J2000)":"-1.156388888888889","可见光星等V":"10.2","摄影(蓝光)星等B":"11.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"4.7","短轴(分)":"4.1","方位角":"135","详细描述":"very bright, very large, round, much brighter middle and nucleus, western of 2","简略描述":"vB, vL, R, mbMN, p of 2"},{"ID":"937","标识":"NGC937","M标识":"NGC937","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h29m28.1s","赤经D(J2000)":"2.491138888888889","赤纬(J2000)":"+42h14m59s","赤纬D(J2000)":"42.249722222222225","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"117","详细描述":"a very faint star slightly nebulous","简略描述":"vF * slightly nebulous"},{"ID":"938","标识":"NGC938","M标识":"NGC938","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h28m33.5s","赤经D(J2000)":"2.4759722222222225","赤纬(J2000)":"+20h17m2s","赤纬D(J2000)":"20.28388888888889","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"100","详细描述":"pretty bright, small, round, a little brighter middle, 11th magnitude star to southeast","简略描述":"pB, S, R, lbM, * 11 sf"},{"ID":"939","标识":"NGC939","M标识":"NGC939","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h26m21.4s","赤经D(J2000)":"2.439277777777778","赤纬(J2000)":"-44h26m47s","赤纬D(J2000)":"-44.44638888888888","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"1","方位角":"110","详细描述":"very very faint, small, round, gradually very little brighter middle","简略描述":"vvF, S, R, gvlbM"},{"ID":"940","标识":"NGC940","M标识":"NGC940","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h29m27.4s","赤经D(J2000)":"2.4909444444444446","赤纬(J2000)":"+31h38m29s","赤纬D(J2000)":"31.641388888888887","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"9","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"941","标识":"NGC941","M标识":"NGC941","拓展名":"","组件":"","Class":"III 261","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h28m27.8s","赤经D(J2000)":"2.474388888888889","赤纬(J2000)":"-1h9m4s","赤纬D(J2000)":"-1.151111111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"12.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.7","短轴(分)":"1.8","方位角":"170","详细描述":"very faint, considerably large, round, eastern of 2","简略描述":"vF, cL, R, f of 2"},{"ID":"942","标识":"NGC942","M标识":"NGC942","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h29m10.2s","赤经D(J2000)":"2.4861666666666666","赤纬(J2000)":"-10h50m8s","赤纬D(J2000)":"-10.835555555555556","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2.8","短轴(分)":"1.3","方位角":"35","详细描述":"very faint, round, perhaps a nebulous double star with (NGC) 943","简略描述":"vF, R, neb D * ?"},{"ID":"943","标识":"NGC943","M标识":"NGC943","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h29m9.5s","赤经D(J2000)":"2.4859722222222222","赤纬(J2000)":"-10h49m41s","赤纬D(J2000)":"-10.828055555555554","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"2.8","短轴(分)":"1.3","方位角":"15","详细描述":"very faint, round, perhaps a nebulous double star with (NGC) 943","简略描述":"vF, R, neb D * ?"},{"ID":"944","标识":"NGC944","M标识":"NGC944","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h26m41.6s","赤经D(J2000)":"2.4448888888888893","赤纬(J2000)":"-14h30m57s","赤纬D(J2000)":"-14.515833333333333","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"15","详细描述":"extremely faint, small, much extended 0°, suddenly brighter middle.","简略描述":"eF, S, mE 0°, sbM"},{"ID":"945","标识":"NGC945","M标识":"NGC945","拓展名":"","组件":"","Class":"II 487","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h28m37.2s","赤经D(J2000)":"2.4770000000000003","赤纬(J2000)":"-10h32m20s","赤纬D(J2000)":"-10.53888888888889","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.3","短轴(分)":"2.2","方位角":"10","详细描述":"very faint, large, irregularly round, gradually a little brighter middle","简略描述":"vF, L, iR, glbM"},{"ID":"946","标识":"NGC946","M标识":"NGC946","拓展名":"","组件":"","Class":"","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h30m38.4s","赤经D(J2000)":"2.510666666666667","赤纬(J2000)":"+42h13m59s","赤纬D(J2000)":"42.23305555555556","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1","方位角":"65","详细描述":"faint, small, round, gradually a little brighter middle","简略描述":"F, S, R, glbM"},{"ID":"947","标识":"NGC947","M标识":"NGC947","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h28m33.3s","赤经D(J2000)":"2.475916666666667","赤纬(J2000)":"-19h2m32s","赤纬D(J2000)":"-19.042222222222225","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.1","短轴(分)":"1.1","方位角":"50","详细描述":"pretty bright, extended, gradually brighter middle","简略描述":"pB, E, gbM"},{"ID":"948","标识":"NGC948","M标识":"NGC948","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h28m45.4s","赤经D(J2000)":"2.479277777777778","赤纬(J2000)":"-10h30m50s","赤纬D(J2000)":"-10.51388888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"12","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"949","标识":"NGC949","M标识":"NGC949","拓展名":"","组件":"","Class":"I 154","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h30m48.8s","赤经D(J2000)":"2.5135555555555555","赤纬(J2000)":"+37h8m9s","赤纬D(J2000)":"37.13583333333333","可见光星等V":"11.8","摄影(蓝光)星等B":"12.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3","短轴(分)":"1.6","方位角":"148","详细描述":"considerably bright, large, extended, very gradually brighter middle","简略描述":"cB, L, E, vgbM"},{"ID":"950","标识":"NGC950","M标识":"NGC950","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h29m11.6s","赤经D(J2000)":"2.4865555555555554","赤纬(J2000)":"-11h1m30s","赤纬D(J2000)":"-11.025","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"40","详细描述":"extremely faint, small, gradually brighter middle","简略描述":"eF, S, gbM"},{"ID":"951","标识":"NGC951","M标识":"NGC951","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h28m56.9s","赤经D(J2000)":"2.4824722222222224","赤纬(J2000)":"-22h20m57s","赤纬D(J2000)":"-22.349166666666665","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1","短轴(分)":"0.6","方位角":"48","详细描述":"extremely faint, small, extended 0°, perhaps a double star?","简略描述":"eF, S, E 0°, ? D *"},{"ID":"952","标识":"NGC952","M标识":"NGC952","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h29m27.4s","赤经D(J2000)":"2.4909444444444446","赤纬(J2000)":"+31h38m29s","赤纬D(J2000)":"31.641388888888887","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"9","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"953","标识":"NGC953","M标识":"NGC953","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h31m9.8s","赤经D(J2000)":"2.519388888888889","赤纬(J2000)":"+29h35m20s","赤纬D(J2000)":"29.58888888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"pretty faint, small, round, much brighter middle","简略描述":"pF, S, R, mbM"},{"ID":"954","标识":"NGC954","M标识":"NGC954","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h28m51.6s","赤经D(J2000)":"2.4810000000000003","赤纬(J2000)":"-41h24m9s","赤纬D(J2000)":"-41.402499999999996","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"19","详细描述":"very faint, pretty large, a little extended, gradually brighter middle, 8th magnitude star 3 arcmin to southeast","简略描述":"vF, pL, lE, gbM, * 8 sf 3'"},{"ID":"955","标识":"NGC955","M标识":"NGC955","拓展名":"","组件":"","Class":"II 278","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h30m33.1s","赤经D(J2000)":"2.5091944444444443","赤纬(J2000)":"-1h6m30s","赤纬D(J2000)":"-1.1083333333333334","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.9","短轴(分)":"0.9","方位角":"19","详细描述":"pretty bright, small, extended, pretty suddenly brighter middle","简略描述":"pB, S, E, psbM"},{"ID":"956","标识":"NGC956","M标识":"NGC956","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV1p","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h32m14.9s","赤经D(J2000)":"2.537472222222222","赤纬(J2000)":"+44h38m48s","赤纬D(J2000)":"44.64666666666667","可见光星等V":"99","摄影(蓝光)星等B":"8.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, stars from 9th to 15th magnitude","简略描述":"Cl, pRi, st 9…15"},{"ID":"957","标识":"NGC957","M标识":"NGC957","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h33m21s","赤经D(J2000)":"2.555833333333333","赤纬(J2000)":"+57h33m36s","赤纬D(J2000)":"57.559999999999995","可见光星等V":"7.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, stars from 13th to 15th magnitude","简略描述":"Cl, pL, pRi, st 13…15"},{"ID":"958","标识":"NGC958","M标识":"NGC958","拓展名":"","组件":"","Class":"II 237","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h30m42.5s","赤经D(J2000)":"2.5118055555555556","赤纬(J2000)":"-2h56m27s","赤纬D(J2000)":"-2.9408333333333334","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.9","短轴(分)":"0.9","方位角":"10","详细描述":"pretty faint, irregularly a little extended, brighter middle","简略描述":"pF, ilE, bM"},{"ID":"959","标识":"NGC959","M标识":"NGC959","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h32m24s","赤经D(J2000)":"2.54","赤纬(J2000)":"+35h29m42s","赤纬D(J2000)":"35.495","可见光星等V":"12.4","摄影(蓝光)星等B":"13","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.3","短轴(分)":"1.4","方位角":"65","详细描述":"extremely faint, pretty large, a little extended, a little brighter middle","简略描述":"eF, pL, lE, lbM"},{"ID":"960","标识":"NGC960","M标识":"NGC960","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h31m41.3s","赤经D(J2000)":"2.528138888888889","赤纬(J2000)":"-9h18m1s","赤纬D(J2000)":"-9.300277777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"125","详细描述":"extremely faint, very small, round, possibly nebulous, 9th magnitude star to southwest","简略描述":"eF, vS, R, ? neb, * 9 sp"},{"ID":"961","标识":"NGC961","M标识":"NGC961","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sm","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h41m2.2s","赤经D(J2000)":"2.6839444444444447","赤纬(J2000)":"-6h56m8s","赤纬D(J2000)":"-6.935555555555556","可见光星等V":"12.8","摄影(蓝光)星等B":"13.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"49","详细描述":"extremely faint, pretty small, extended 230°, 10th magnitude star attached","简略描述":"eF, pS, E 230°, * 10 att"},{"ID":"962","标识":"NGC962","M标识":"NGC962","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h32m39.9s","赤经D(J2000)":"2.5444166666666663","赤纬(J2000)":"+28h4m15s","赤纬D(J2000)":"28.070833333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"175","详细描述":"extremely faint, small, gradually brighter middle and nucleus","简略描述":"eF, S, gbMN"},{"ID":"963","标识":"NGC963","M标识":"NGC963","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h30m31.1s","赤经D(J2000)":"2.508638888888889","赤纬(J2000)":"-4h12m56s","赤纬D(J2000)":"-4.2155555555555555","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"eF, S, R, gbM, r"},{"ID":"964","标识":"NGC964","M标识":"NGC964","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h31m5.7s","赤经D(J2000)":"2.51825","赤纬(J2000)":"-36h2m5s","赤纬D(J2000)":"-36.03472222222222","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"2.1","短轴(分)":"0.5","方位角":"31","详细描述":"pretty bright, pretty small, much extended 215°","简略描述":"pB, pS, mE 215°"},{"ID":"965","标识":"NGC965","M标识":"NGC965","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h32m25.1s","赤经D(J2000)":"2.5403055555555554","赤纬(J2000)":"-18h38m25s","赤纬D(J2000)":"-18.640277777777776","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.8","方位角":"10","详细描述":"very faint, small, gradually brighter middle","简略描述":"vF, S, gbM"},{"ID":"966","标识":"NGC966","M标识":"NGC966","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h31m47.1s","赤经D(J2000)":"2.52975","赤纬(J2000)":"-19h52m54s","赤纬D(J2000)":"-19.881666666666668","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.9","方位角":"112","详细描述":"extremely faint, round, 9th-magnitude star 2 arcmin to southwest","简略描述":"eF, R, * 9 sp 2'"},{"ID":"967","标识":"NGC967","M标识":"NGC967","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h32m12.8s","赤经D(J2000)":"2.536888888888889","赤纬(J2000)":"-17h12m59s","赤纬D(J2000)":"-17.21638888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"1","方位角":"33","详细描述":"faint, small, irregularly round, gradually brighter middle","简略描述":"F, S, iR, gbM"},{"ID":"968","标识":"NGC968","M标识":"NGC968","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h34m6.1s","赤经D(J2000)":"2.568361111111111","赤纬(J2000)":"+34h28m50s","赤纬D(J2000)":"34.480555555555554","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.7","短轴(分)":"1.5","方位角":"60","详细描述":"pretty faint, pretty small, round, brighter middle","简略描述":"pF, pS, R, bM"},{"ID":"969","标识":"NGC969","M标识":"NGC969","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h34m8s","赤经D(J2000)":"2.5688888888888886","赤纬(J2000)":"+32h56m47s","赤纬D(J2000)":"32.94638888888888","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"1","方位角":"3","详细描述":"small, round, pretty suddenly bright middle, 1st of 5","简略描述":"S, R, psbM, 1st of 5"},{"ID":"970","标识":"NGC970","M标识":"NGC970","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h34m11.7s","赤经D(J2000)":"2.5699166666666664","赤纬(J2000)":"+32h58m35s","赤纬D(J2000)":"32.97638888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"55","详细描述":"very faint, very small, round, 2nd of 5","简略描述":"vF, vS, R, 2nd of 5"},{"ID":"971","标识":"NGC971","M标识":"NGC971","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h34m15.7s","赤经D(J2000)":"2.5710277777777777","赤纬(J2000)":"+32h58m45s","赤纬D(J2000)":"32.97916666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, 3rd of 5","简略描述":"vF, vS, R, 3rd of 5"},{"ID":"972","标识":"NGC972","M标识":"NGC972","拓展名":"","组件":"","Class":"II 211","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h34m13.3s","赤经D(J2000)":"2.5703611111111107","赤纬(J2000)":"+29h18m37s","赤纬D(J2000)":"29.310277777777777","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.3","短轴(分)":"1.6","方位角":"152","详细描述":"pretty bright, considerably large, a little extended, gradually much brighter middle, 3 stars to south","简略描述":"pB, cL, lE, gmbM, 3 st s"},{"ID":"973","标识":"NGC973","M标识":"NGC973","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h34m20.1s","赤经D(J2000)":"2.57225","赤纬(J2000)":"+32h30m20s","赤纬D(J2000)":"32.50555555555555","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.7","短轴(分)":"0.5","方位角":"48","详细描述":"most extremely faint, small, much extended, pretty bright star near to southwest","简略描述":"eeF, S, mE, pB * nr sp"},{"ID":"974","标识":"NGC974","M标识":"NGC974","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h34m25.7s","赤经D(J2000)":"2.5738055555555555","赤纬(J2000)":"+32h57m18s","赤纬D(J2000)":"32.955000000000005","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"63","详细描述":"very faint, round, brighter middle, 4th of 5","简略描述":"vF, R, bM, 4th of 5"},{"ID":"975","标识":"NGC975","M标识":"NGC975","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h33m22.7s","赤经D(J2000)":"2.5563055555555554","赤纬(J2000)":"+9h36m7s","赤纬D(J2000)":"9.601944444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"0","详细描述":"very faint, considerably extended","简略描述":"vF, cE"},{"ID":"976","标识":"NGC976","M标识":"NGC976","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h33m59.9s","赤经D(J2000)":"2.566638888888889","赤纬(J2000)":"+20h58m38s","赤纬D(J2000)":"20.97722222222222","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"162","详细描述":"very faint, very small, 4 faint stars near","简略描述":"vF, vS, 4 F st nr"},{"ID":"977","标识":"NGC977","M标识":"NGC977","拓展名":"","组件":"","Class":"III 472","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h33m3.4s","赤经D(J2000)":"2.5509444444444442","赤纬(J2000)":"-10h45m34s","赤纬D(J2000)":"-10.759444444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"2","短轴(分)":"1.6","方位角":"26","详细描述":"extremely faint, pretty small, round, very little brighter middle, among scattered stars","简略描述":"eF, pS, R, vlbM, am sc st"},{"ID":"978","标识":"NGC978","M标识":"NGC978","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h34m47s","赤经D(J2000)":"2.579722222222222","赤纬(J2000)":"+32h50m42s","赤纬D(J2000)":"32.845","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"1","方位角":"62","详细描述":"pretty bright, round, 5th of 5","简略描述":"pB, R, 5th of 5"},{"ID":"979","标识":"NGC979","M标识":"NGC979","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h31m38.7s","赤经D(J2000)":"2.5274166666666664","赤纬(J2000)":"-44h31m27s","赤纬D(J2000)":"-44.524166666666666","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"0","详细描述":"faint, small, round, between 2 stars in parallel","简略描述":"F, S, R, bet 2 st in par"},{"ID":"980","标识":"NGC980","M标识":"NGC980","拓展名":"","组件":"","Class":"III 572","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h35m18.5s","赤经D(J2000)":"2.5884722222222223","赤纬(J2000)":"+40h55m37s","赤纬D(J2000)":"40.926944444444445","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"110","详细描述":"very faint, pretty small, southwestern of 2","简略描述":"vF, pS, sp of 2"},{"ID":"981","标识":"NGC981","M标识":"NGC981","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h32m59.8s","赤经D(J2000)":"2.5499444444444443","赤纬(J2000)":"-10h58m25s","赤纬D(J2000)":"-10.973611111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.6","方位角":"5","详细描述":"extremely faint, small, gradually brighter middle","简略描述":"eF, S, gbM"},{"ID":"982","标识":"NGC982","M标识":"NGC982","拓展名":"","组件":"","Class":"III 573","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h35m24.8s","赤经D(J2000)":"2.590222222222222","赤纬(J2000)":"+40h52m10s","赤纬D(J2000)":"40.86944444444445","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"132","详细描述":"faint, small, northeastern of 2","简略描述":"F, S, nf of 2"},{"ID":"983","标识":"NGC983","M标识":"NGC983","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h38m55.7s","赤经D(J2000)":"2.6488055555555556","赤纬(J2000)":"+34h37m19s","赤纬D(J2000)":"34.621944444444445","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"146","详细描述":"extremely faint, very small, round, brighter middle","简略描述":"eF, vS, R, bM"},{"ID":"984","标识":"NGC984","M标识":"NGC984","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h34m43s","赤经D(J2000)":"2.578611111111111","赤纬(J2000)":"+23h24m49s","赤纬D(J2000)":"23.41361111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2","短轴(分)":"1.2","方位角":"120","详细描述":"very faint, extremely small, round, brighter middle","简略描述":"vF, eS, R, bM"},{"ID":"985","标识":"NGC985","M标识":"NGC985","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Ring\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h34m37.4s","赤经D(J2000)":"2.5770555555555554","赤纬(J2000)":"-8h47m6s","赤纬D(J2000)":"-8.785","可见光星等V":"13.4","摄影(蓝光)星等B":"14","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.9","方位角":"69","详细描述":"very faint, very small, round, brighter middle and nucleus","简略描述":"vF, vS, R, bMN"},{"ID":"986","标识":"NGC986","M标识":"NGC986","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h33m34.1s","赤经D(J2000)":"2.559472222222222","赤纬(J2000)":"-39h2m45s","赤纬D(J2000)":"-39.045833333333334","可见光星等V":"10.9","摄影(蓝光)星等B":"11.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4","短轴(分)":"3.2","方位角":"150","详细描述":"pretty bright, large, pretty much extended, suddenly brighter middle, bi-nuclear","简略描述":"pB, L, pmE, sbM, bi-N"},{"ID":"987","标识":"NGC987","M标识":"NGC987","拓展名":"","组件":"","Class":"III 161","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h36m49.5s","赤经D(J2000)":"2.61375","赤纬(J2000)":"+33h19m38s","赤纬D(J2000)":"33.327222222222225","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"39","详细描述":"faint, small, very little extended, brighter middle, mottled but not resolved, 2 stars of 14th magnitude to northwest","简略描述":"F, S, vlE, bM, r, 2 st 14 np"},{"ID":"988","标识":"NGC988","M标识":"NGC988","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h35m27.3s","赤经D(J2000)":"2.5909166666666668","赤纬(J2000)":"-9h21m18s","赤纬D(J2000)":"-9.355","可见光星等V":"11","摄影(蓝光)星等B":"11.4","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"4.1","短轴(分)":"1.6","方位角":"114","详细描述":"nebulous 7.5 magnitude star","简略描述":"Neb * 7.5 m"},{"ID":"989","标识":"NGC989","M标识":"NGC989","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h33m46s","赤经D(J2000)":"2.562777777777778","赤纬(J2000)":"-16h30m41s","赤纬D(J2000)":"-16.511388888888888","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"80","详细描述":"faint, very small, round, brighter middle and nucleus","简略描述":"F, vS, R, bMN"},{"ID":"990","标识":"NGC990","M标识":"NGC990","拓展名":"","组件":"","Class":"III 557","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h36m18.1s","赤经D(J2000)":"2.605027777777778","赤纬(J2000)":"+11h38m32s","赤纬D(J2000)":"11.642222222222221","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"42","详细描述":"faint, small, round, pretty suddenly brighter middle","简略描述":"F, S, R, psbM"},{"ID":"991","标识":"NGC991","M标识":"NGC991","拓展名":"","组件":"","Class":"III 434","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h35m32.6s","赤经D(J2000)":"2.592388888888889","赤纬(J2000)":"-7h9m18s","赤纬D(J2000)":"-7.155","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3","短轴(分)":"2.7","方位角":"60","详细描述":"very faint, considerably large, irregular figure, very little brighter middle","简略描述":"vF, cL, iF, vlbM"},{"ID":"992","标识":"NGC992","M标识":"NGC992","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h37m25.5s","赤经D(J2000)":"2.6237500000000002","赤纬(J2000)":"+21h6m1s","赤纬D(J2000)":"21.10027777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"7","详细描述":"pretty faint, pretty small, much extended, star to south","简略描述":"pF, pS, mE, * s"},{"ID":"993","标识":"NGC993","M标识":"NGC993","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h36m46s","赤经D(J2000)":"2.612777777777778","赤纬(J2000)":"+2h3m1s","赤纬D(J2000)":"2.0502777777777776","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"110","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"994","标识":"NGC994","M标识":"NGC994","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h36m46s","赤经D(J2000)":"2.612777777777778","赤纬(J2000)":"+2h3m1s","赤纬D(J2000)":"2.0502777777777776","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"110","详细描述":"extremely faint, very small","简略描述":"eeF, pS, R, vF * close, nr 5251"},{"ID":"995","标识":"NGC995","M标识":"NGC995","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h38m31.9s","赤经D(J2000)":"2.6421944444444443","赤纬(J2000)":"+41h31m44s","赤纬D(J2000)":"41.528888888888886","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"35","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"996","标识":"NGC996","M标识":"NGC996","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h38m39.6s","赤经D(J2000)":"2.6443333333333334","赤纬(J2000)":"+41h38m50s","赤纬D(J2000)":"41.64722222222222","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"997","标识":"NGC997","M标识":"NGC997","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E+C","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h37m14.4s","赤经D(J2000)":"2.6206666666666667","赤纬(J2000)":"+7h18m22s","赤纬D(J2000)":"7.306111111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"faint, small","简略描述":"F, S"},{"ID":"998","标识":"NGC998","M标识":"NGC998","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h37m16.5s","赤经D(J2000)":"2.62125","赤纬(J2000)":"+7h20m9s","赤纬D(J2000)":"7.335833333333333","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"177","详细描述":"very faint","简略描述":"vF"},{"ID":"999","标识":"NGC999","M标识":"NGC999","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h38m47.4s","赤经D(J2000)":"2.6465","赤纬(J2000)":"+41h40m16s","赤纬D(J2000)":"41.67111111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"48","详细描述":"extremely faint","简略描述":"eF"},{"ID":"1000","标识":"NGC1000","M标识":"NGC1000","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h38m49.7s","赤经D(J2000)":"2.6471388888888887","赤纬(J2000)":"+41h27m37s","赤纬D(J2000)":"41.46027777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very very faint, pretty small, diffuse","简略描述":"vvF, pS, dif"},{"ID":"1001","标识":"NGC1001","M标识":"NGC1001","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h39m12.6s","赤经D(J2000)":"2.6534999999999997","赤纬(J2000)":"+41h40m18s","赤纬D(J2000)":"41.67166666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"132","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"1002","标识":"NGC1002","M标识":"NGC1002","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h38m55.7s","赤经D(J2000)":"2.6488055555555556","赤纬(J2000)":"+34h37m19s","赤纬D(J2000)":"34.621944444444445","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"146","详细描述":"very faint, very small, irregularly round, brighter middle and nucleus","简略描述":"vF, vS, iR, bMN"},{"ID":"1003","标识":"NGC1003","M标识":"NGC1003","拓展名":"","组件":"","Class":"II 238","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h39m16.6s","赤经D(J2000)":"2.654611111111111","赤纬(J2000)":"+40h52m22s","赤纬D(J2000)":"40.87277777777778","可见光星等V":"11.5","摄影(蓝光)星等B":"12","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"4.3","短轴(分)":"1.3","方位角":"97","详细描述":"pretty faint, large, extended 90°±, much brighter middle, mottled but not resolved","简略描述":"pF, L, E 90° ±, mbM, r"},{"ID":"1004","标识":"NGC1004","M标识":"NGC1004","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h37m41.7s","赤经D(J2000)":"2.62825","赤纬(J2000)":"+1h58m32s","赤纬D(J2000)":"1.9755555555555557","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"115","详细描述":"pretty faint, very small, round, very much brighter middle, 11th magnitude star 2 seconds of time to west","简略描述":"pF, vS, R, vmbM, * 11 p 2s"},{"ID":"1005","标识":"NGC1005","M标识":"NGC1005","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h39m27.6s","赤经D(J2000)":"2.6576666666666666","赤纬(J2000)":"+41h29m36s","赤纬D(J2000)":"41.49333333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.8","方位角":"65","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"1006","标识":"NGC1006","M标识":"NGC1006","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h37m34.8s","赤经D(J2000)":"2.626333333333333","赤纬(J2000)":"-11h1m31s","赤纬D(J2000)":"-11.025277777777779","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"most extremely faint, pretty small, round, a little brighter middle","简略描述":"eeF, pS, R, lbM"},{"ID":"1007","标识":"NGC1007","M标识":"NGC1007","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h37m52.2s","赤经D(J2000)":"2.6311666666666667","赤纬(J2000)":"+2h9m20s","赤纬D(J2000)":"2.1555555555555554","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"48","详细描述":"extremely faint, stellar","简略描述":"eF, stellar"},{"ID":"1008","标识":"NGC1008","M标识":"NGC1008","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h37m55.2s","赤经D(J2000)":"2.632","赤纬(J2000)":"+2h4m49s","赤纬D(J2000)":"2.080277777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"85","详细描述":"very faint, extremely small, stellar","简略描述":"vF, eS, stellar"},{"ID":"1009","标识":"NGC1009","M标识":"NGC1009","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h38m18.9s","赤经D(J2000)":"2.6385833333333335","赤纬(J2000)":"+2h18m36s","赤纬D(J2000)":"2.3099999999999996","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"0.2","方位角":"124","详细描述":"most extremely faint, pretty small, round, 9th magnitude star to southeast","简略描述":"eeF, pS, R, * 9 sf"},{"ID":"1010","标识":"NGC1010","M标识":"NGC1010","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h37m34.8s","赤经D(J2000)":"2.626333333333333","赤纬(J2000)":"-11h1m31s","赤纬D(J2000)":"-11.025277777777779","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"most extremely faint, pretty small, round, a little brighter middle","简略描述":"eF, S, R"},{"ID":"1011","标识":"NGC1011","M标识":"NGC1011","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h37m38.8s","赤经D(J2000)":"2.6274444444444445","赤纬(J2000)":"-11h0m18s","赤纬D(J2000)":"-11.005","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, small, round, a little brighter middle","简略描述":"eF, S, R, lbM"},{"ID":"1012","标识":"NGC1012","M标识":"NGC1012","拓展名":"","组件":"","Class":"III 152","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h39m14.7s","赤经D(J2000)":"2.6540833333333333","赤纬(J2000)":"+30h9m5s","赤纬D(J2000)":"30.15138888888889","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.5","短轴(分)":"1.1","方位角":"24","详细描述":"faint, pretty small, irregularly round, brighter middle, star involved","简略描述":"F, pS, iR, bM, st inv"},{"ID":"1013","标识":"NGC1013","M标识":"NGC1013","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h37m50.4s","赤经D(J2000)":"2.6306666666666665","赤纬(J2000)":"-11h30m24s","赤纬D(J2000)":"-11.506666666666666","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"75","详细描述":"most extremely faint, very small, round, between two distant double stars","简略描述":"eeF, vS, R, bet 2 dist D st"},{"ID":"1014","标识":"NGC1014","M标识":"NGC1014","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h38m0.8s","赤经D(J2000)":"2.6335555555555556","赤纬(J2000)":"-9h34m19s","赤纬D(J2000)":"-9.571944444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, irregularly round, preceding (western) of 2","简略描述":"eF, eS, iR, p of 2"},{"ID":"1015","标识":"NGC1015","M标识":"NGC1015","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h38m11.6s","赤经D(J2000)":"2.6365555555555553","赤纬(J2000)":"-1h19m6s","赤纬D(J2000)":"-1.3183333333333334","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"1.7","方位角":"16","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"1016","标识":"NGC1016","M标识":"NGC1016","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h38m19.6s","赤经D(J2000)":"2.638777777777778","赤纬(J2000)":"+2h7m9s","赤纬D(J2000)":"2.1191666666666666","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2","短轴(分)":"2","方位角":"","详细描述":"faint, small, round, pretty suddenly brighter middle","简略描述":"F, S, R, psbM"},{"ID":"1017","标识":"NGC1017","M标识":"NGC1017","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h37m49.9s","赤经D(J2000)":"2.630527777777778","赤纬(J2000)":"-11h0m38s","赤纬D(J2000)":"-11.010555555555555","可见光星等V":"14.4","摄影(蓝光)星等B":"15","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"50","详细描述":"most extremely faint, very small, round, very difficult","简略描述":"eeF, vS, R, v diffic"},{"ID":"1018","标识":"NGC1018","M标识":"NGC1018","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h38m10.3s","赤经D(J2000)":"2.6361944444444445","赤纬(J2000)":"-9h32m39s","赤纬D(J2000)":"-9.544166666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1","短轴(分)":"0.6","方位角":"170","详细描述":"extremely faint, very small, extended 180°, following (eastern) of 2","简略描述":"eF, vS, E 180°, f of 2"},{"ID":"1019","标识":"NGC1019","M标识":"NGC1019","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h38m27.4s","赤经D(J2000)":"2.6409444444444445","赤纬(J2000)":"+1h54m29s","赤纬D(J2000)":"1.9080555555555554","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.9","方位角":"40","详细描述":"very faint, small, a little extended","简略描述":"vF, S, lE"},{"ID":"1020","标识":"NGC1020","M标识":"NGC1020","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h38m44.3s","赤经D(J2000)":"2.6456388888888887","赤纬(J2000)":"+2h13m52s","赤纬D(J2000)":"2.2311111111111113","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"20","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"1021","标识":"NGC1021","M标识":"NGC1021","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h38m47.9s","赤经D(J2000)":"2.646638888888889","赤纬(J2000)":"+2h13m2s","赤纬D(J2000)":"2.2172222222222224","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"160","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"1022","标识":"NGC1022","M标识":"NGC1022","拓展名":"","组件":"","Class":"I 102","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h38m32.5s","赤经D(J2000)":"2.642361111111111","赤纬(J2000)":"-6h40m39s","赤纬D(J2000)":"-6.6775","可见光星等V":"11.3","摄影(蓝光)星等B":"12.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.4","短轴(分)":"2.2","方位角":"12","详细描述":"considerably bright, pretty large, round, much brighter middle, 11th magnitude star 2 arcmin to northeast","简略描述":"cB, pL, R, mbM, * 11 nf 2'"},{"ID":"1023","标识":"NGC1023","M标识":"NGC1023","拓展名":"","组件":"","Class":"I 156","业余排名":"5","中文名":"仙人掌星系","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h40m24.1s","赤经D(J2000)":"2.673361111111111","赤纬(J2000)":"+39h3m48s","赤纬D(J2000)":"39.06333333333333","可见光星等V":"9.4","摄影(蓝光)星等B":"10.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"7.4","短轴(分)":"2.5","方位角":"87","详细描述":"very bright, very large, very much extended, very very much brighter middle","简略描述":"vB, vL, vmE, vvmbM"},{"ID":"1024","标识":"NGC1024","M标识":"NGC1024","拓展名":"","组件":"","Class":"II 592","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h39m11.8s","赤经D(J2000)":"2.653277777777778","赤纬(J2000)":"+10h50m52s","赤纬D(J2000)":"10.847777777777779","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3.9","短轴(分)":"1.5","方位角":"155","详细描述":"pretty faint, small, a little extended, brighter middle, 11th magnitude star 1 arcmin to northeast","简略描述":"pF, S, lE, bM, * 11 nf 1'"},{"ID":"1025","标识":"NGC1025","M标识":"NGC1025","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"2h36m19.9s","赤经D(J2000)":"2.6055277777777777","赤纬(J2000)":"-54h51m49s","赤纬D(J2000)":"-54.86361111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"6","详细描述":"extremely faint, small, round, preceding (western) of 2","简略描述":"eF, S, R, p of 2"},{"ID":"1026","标识":"NGC1026","M标识":"NGC1026","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h39m19.2s","赤经D(J2000)":"2.655333333333333","赤纬(J2000)":"+6h32m40s","赤纬D(J2000)":"6.544444444444444","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"114","详细描述":"pretty faint, small, round, pretty suddenly brighter middle","简略描述":"pF, S, R, psbM"},{"ID":"1027","标识":"NGC1027","M标识":"NGC1027","拓展名":"","组件":"","Class":"VIII 66","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"2h42m36s","赤经D(J2000)":"2.71","赤纬(J2000)":"+61h35m42s","赤纬D(J2000)":"61.595","可见光星等V":"6.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, large, scattered stars, one 10th magnitude","简略描述":"Cl, L, sc st, one 10 m"},{"ID":"1028","标识":"NGC1028","M标识":"NGC1028","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h39m37.1s","赤经D(J2000)":"2.6603055555555555","赤纬(J2000)":"+10h50m36s","赤纬D(J2000)":"10.843333333333334","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"15","详细描述":"extremely faint","简略描述":"eF"},{"ID":"1029","标识":"NGC1029","M标识":"NGC1029","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h39m36.4s","赤经D(J2000)":"2.660111111111111","赤纬(J2000)":"+10h47m36s","赤纬D(J2000)":"10.793333333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"70","详细描述":"faint, small, much extended","简略描述":"F, S, mE"},{"ID":"1030","标识":"NGC1030","M标识":"NGC1030","拓展名":"","组件":"","Class":"III 581","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h39m50.5s","赤经D(J2000)":"2.6640277777777777","赤纬(J2000)":"+18h1m26s","赤纬D(J2000)":"18.023888888888887","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"8","详细描述":"very faint, irregularly extended","简略描述":"vF, iE"},{"ID":"1031","标识":"NGC1031","M标识":"NGC1031","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"2h36m38.6s","赤经D(J2000)":"2.6107222222222224","赤纬(J2000)":"-54h51m32s","赤纬D(J2000)":"-54.85888888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"23","详细描述":"faint, small, round, gradually brighter middle, 11th magnitude star 2 arcmin to south","简略描述":"F, S, R, gbM, * 11 s 2'"},{"ID":"1032","标识":"NGC1032","M标识":"NGC1032","拓展名":"","组件":"","Class":"II 5","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h39m23.6s","赤经D(J2000)":"2.6565555555555553","赤纬(J2000)":"+1h5m38s","赤纬D(J2000)":"1.093888888888889","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.4","短轴(分)":"1.1","方位角":"68","详细描述":"pretty bright, small, very little extended, brighter middle, 3 star trapezoid","简略描述":"pB, S, vlE, bM, 3 st trap"},{"ID":"1033","标识":"NGC1033","M标识":"NGC1033","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h40m16.1s","赤经D(J2000)":"2.6711388888888887","赤纬(J2000)":"-8h46m35s","赤纬D(J2000)":"-8.77638888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"1","方位角":"0","详细描述":"extremely faint, pretty large, irregularly extended 190°, suddenly brighter middle and nucleus","简略描述":"eF, pL, iE 190°, sbMN"},{"ID":"1034","标识":"NGC1034","M标识":"NGC1034","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h38m13.9s","赤经D(J2000)":"2.6371944444444444","赤纬(J2000)":"-15h48m33s","赤纬D(J2000)":"-15.809166666666668","可见光星等V":"14","摄影(蓝光)星等B":"14.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"142","详细描述":"very faint, very small, a little extended, a little brighter middle, 2 bright stars 20 seconds of time to the west","简略描述":"vF, vS, lE, lbM, 2 B st p 20s"},{"ID":"1035","标识":"NGC1035","M标识":"NGC1035","拓展名":"","组件":"","Class":"II 284","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h39m29s","赤经D(J2000)":"2.6580555555555554","赤纬(J2000)":"-8h7m57s","赤纬D(J2000)":"-8.1325","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.2","短轴(分)":"0.6","方位角":"150","详细描述":"pretty faint, large, much extended, mottled but not resolved, 17th magnitude star attached on southeast","简略描述":"pF, L, mE, r, * 17 att sf"},{"ID":"1036","标识":"NGC1036","M标识":"NGC1036","拓展名":"","组件":"","Class":"III 475","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h40m29s","赤经D(J2000)":"2.674722222222222","赤纬(J2000)":"+19h17m49s","赤纬D(J2000)":"19.296944444444446","可见光星等V":"13.2","摄影(蓝光)星等B":"13.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"2","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"1037","标识":"NGC1037","M标识":"NGC1037","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h39m58.3s","赤经D(J2000)":"2.6661944444444443","赤纬(J2000)":"-1h44m3s","赤纬D(J2000)":"-1.7341666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, very small, much extended, very difficult","简略描述":"eeF, vS, mE, v diffic"},{"ID":"1038","标识":"NGC1038","M标识":"NGC1038","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h40m6.3s","赤经D(J2000)":"2.6684166666666664","赤纬(J2000)":"+1h30m34s","赤纬D(J2000)":"1.5094444444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"61","详细描述":"extremely faint, pretty small, round, a little brighter middle","简略描述":"eF, pS, R, lbM"},{"ID":"1039","标识":"NGC1039","M标识":"M34","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"螺旋星团","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h42m5s","赤经D(J2000)":"2.7013888888888893","赤纬(J2000)":"+42h45m42s","赤纬D(J2000)":"42.76166666666666","可见光星等V":"5.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, very large, a little compressed, scattered 9th magnitude stars","简略描述":"Cl, B, vL, lC, sc st 9"},{"ID":"1040","标识":"NGC1040","M标识":"NGC1040","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h43m12.5s","赤经D(J2000)":"2.720138888888889","赤纬(J2000)":"+41h30m1s","赤纬D(J2000)":"41.500277777777775","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"40","详细描述":"faint, small, brighter middle","简略描述":"F, S, bM"},{"ID":"1041","标识":"NGC1041","M标识":"NGC1041","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h40m25.2s","赤经D(J2000)":"2.6736666666666666","赤纬(J2000)":"-5h26m24s","赤纬D(J2000)":"-5.44","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"57","详细描述":"pretty faint, pretty small, irregularly round, brighter middle","简略描述":"pF, pS, iR, bM"},{"ID":"1042","标识":"NGC1042","M标识":"NGC1042","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h40m23.9s","赤经D(J2000)":"2.6733055555555554","赤纬(J2000)":"-8h26m3s","赤纬D(J2000)":"-8.434166666666666","可见光星等V":"11","摄影(蓝光)星等B":"11.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"4.3","短轴(分)":"3.6","方位角":"18","详细描述":"most extremely faint, large, round, northwestern of 2","简略描述":"eeF, L, R, np of 2"},{"ID":"1043","标识":"NGC1043","M标识":"NGC1043","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h40m46.5s","赤经D(J2000)":"2.679583333333333","赤纬(J2000)":"+1h20m35s","赤纬D(J2000)":"1.3430555555555554","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"110","详细描述":"most extremely faint, small, round, very difficult","简略描述":"eeF, S, R, v diffic"},{"ID":"1044","标识":"NGC1044","M标识":"NGC1044","拓展名":"","组件":"","Class":"III 228","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h41m6.1s","赤经D(J2000)":"2.685027777777778","赤纬(J2000)":"+8h44m19s","赤纬D(J2000)":"8.73861111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"14.4","B-V":"1.2","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, very small, preceding (western) of 2, 10th magnitude star to west","简略描述":"vF, vS, p of 2, * 10 p"},{"ID":"1045","标识":"NGC1045","M标识":"NGC1045","拓展名":"","组件":"","Class":"II 488","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h40m29.1s","赤经D(J2000)":"2.67475","赤纬(J2000)":"-11h16m40s","赤纬D(J2000)":"-11.277777777777779","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"40","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"1046","标识":"NGC1046","M标识":"NGC1046","拓展名":"","组件":"","Class":"III 229","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h41m12.8s","赤经D(J2000)":"2.6868888888888893","赤纬(J2000)":"+8h43m12s","赤纬D(J2000)":"8.72","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, very small, following (eastern) of 2","简略描述":"eF, vS, f of 2"},{"ID":"1047","标识":"NGC1047","M标识":"NGC1047","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h40m32.8s","赤经D(J2000)":"2.675777777777778","赤纬(J2000)":"-8h8m50s","赤纬D(J2000)":"-8.147222222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"88","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"1048","标识":"NGC1048","M标识":"NGC1048","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h40m37.9s","赤经D(J2000)":"2.6771944444444444","赤纬(J2000)":"-8h32m1s","赤纬D(J2000)":"-8.53361111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.3","方位角":"101","详细描述":"most extremely faint, pretty small, round, southeastern of 2","简略描述":"eeF, pS, R, sf of 2"},{"ID":"1049","标识":"NGC1049","M标识":"NGC1049","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"天炉座矮星系球状星团3","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h39m48.1s","赤经D(J2000)":"2.663361111111111","赤纬(J2000)":"-34h15m30s","赤纬D(J2000)":"-34.25833333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, round, stellar","简略描述":"pB, S, R, stellar"},{"ID":"1050","标识":"NGC1050","M标识":"NGC1050","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h42m35.6s","赤经D(J2000)":"2.709888888888889","赤纬(J2000)":"+34h45m51s","赤纬D(J2000)":"34.76416666666667","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"113","详细描述":"faint, small, 18th magnitude star involved on north","简略描述":"F, S, * 18 inv n"},{"ID":"1051","标识":"NGC1051","M标识":"NGC1051","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h41m2.2s","赤经D(J2000)":"2.6839444444444447","赤纬(J2000)":"-6h56m8s","赤纬D(J2000)":"-6.935555555555556","可见光星等V":"12.8","摄影(蓝光)星等B":"13.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"49","详细描述":"extremely faint, a little extended northwest - southeast, attached star on northwest","简略描述":"eF, lE npsf, * att np"},{"ID":"1052","标识":"NGC1052","M标识":"NGC1052","拓展名":"","组件":"","Class":"I 63","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h41m4.6s","赤经D(J2000)":"2.6846111111111113","赤纬(J2000)":"-8h15m17s","赤纬D(J2000)":"-8.254722222222222","可见光星等V":"10.5","摄影(蓝光)星等B":"11.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.8","短轴(分)":"2","方位角":"126","详细描述":"bright, pretty large, round, much brighter middle equivalent to 12th magnitude star","简略描述":"B, pL, R, mbM * 12"},{"ID":"1053","标识":"NGC1053","M标识":"NGC1053","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h43m12.5s","赤经D(J2000)":"2.720138888888889","赤纬(J2000)":"+41h30m1s","赤纬D(J2000)":"41.500277777777775","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"40","详细描述":"very faint, very small, a little extended, 3 or 4 stars in a line near","简略描述":"vF, vS, lE, 3 or 4 st in line nr"},{"ID":"1054","标识":"NGC1054","M标识":"NGC1054","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h42m15.8s","赤经D(J2000)":"2.704388888888889","赤纬(J2000)":"+18h13m3s","赤纬D(J2000)":"18.217499999999998","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"33","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"1055","标识":"NGC1055","M标识":"NGC1055","拓展名":"","组件":"","Class":"I 1","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h41m45.3s","赤经D(J2000)":"2.6959166666666667","赤纬(J2000)":"+0h26m34s","赤纬D(J2000)":"0.44277777777777777","可见光星等V":"10.6","摄影(蓝光)星等B":"11.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"7.6","短轴(分)":"2.7","方位角":"105","详细描述":"pretty faint, considerably large, irregularly extended 80°, brighter middle, 11th magnitude star 1 arcmin north","简略描述":"pF, cL, iE 80°, bM, * 11 n 1'"},{"ID":"1056","标识":"NGC1056","M标识":"NGC1056","拓展名":"","组件":"","Class":"III 584","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h42m48.4s","赤经D(J2000)":"2.7134444444444448","赤纬(J2000)":"+28h34m28s","赤纬D(J2000)":"28.574444444444445","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.4","短轴(分)":"1.1","方位角":"160","详细描述":"faint, small, round, pretty suddenly brighter middle","简略描述":"F, S, R, psbM"},{"ID":"1057","标识":"NGC1057","M标识":"NGC1057","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h43m2.8s","赤经D(J2000)":"2.7174444444444448","赤纬(J2000)":"+32h29m30s","赤纬D(J2000)":"32.49166666666667","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"115","详细描述":"very faint, double","简略描述":"vF, double"},{"ID":"1058","标识":"NGC1058","M标识":"NGC1058","拓展名":"","组件":"","Class":"II 633","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h43m29.9s","赤经D(J2000)":"2.724972222222222","赤纬(J2000)":"+37h20m29s","赤纬D(J2000)":"37.34138888888889","可见光星等V":"11.2","摄影(蓝光)星等B":"11.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.5","短轴(分)":"2.5","方位角":"","详细描述":"pretty faint, considerably large, round, gradually a little brighter middle","简略描述":"pF, cL, R, glbM"},{"ID":"1059","标识":"NGC1059","M标识":"NGC1059","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h42m35.5s","赤经D(J2000)":"2.7098611111111115","赤纬(J2000)":"+17h59m46s","赤纬D(J2000)":"17.996111111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, hardly sure (d'Arrest not found)","简略描述":"eF, hardly sure (d'A not found)"},{"ID":"1060","标识":"NGC1060","M标识":"NGC1060","拓展名":"","组件":"","Class":"III 162","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h43m15s","赤经D(J2000)":"2.7208333333333337","赤纬(J2000)":"+32h25m29s","赤纬D(J2000)":"32.42472222222222","可见光星等V":"11.8","摄影(蓝光)星等B":"13","B-V":"1.2","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.3","短轴(分)":"1.7","方位角":"75","详细描述":"faint, pretty large, round, a little brighter middle, 7.5 magnitude star 46 seconds of time to east, 3 arcmin south","简略描述":"F, pL, R, lbM, * 7.5 f 46s, 3' s"},{"ID":"1061","标识":"NGC1061","M标识":"NGC1061","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h43m15.8s","赤经D(J2000)":"2.7210555555555556","赤纬(J2000)":"+32h28m2s","赤纬D(J2000)":"32.467222222222226","可见光星等V":"14.1","摄影(蓝光)星等B":"14.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"42","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"1062","标识":"NGC1062","M标识":"NGC1062","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h43m24.4s","赤经D(J2000)":"2.7234444444444446","赤纬(J2000)":"+32h27m45s","赤纬D(J2000)":"32.462500000000006","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint","简略描述":"eeF"},{"ID":"1063","标识":"NGC1063","M标识":"NGC1063","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h42m9.9s","赤经D(J2000)":"2.70275","赤纬(J2000)":"-5h34m6s","赤纬D(J2000)":"-5.568333333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"105","详细描述":"very faint, pretty small, irregularly round, mottled but not resolved?","简略描述":"vF, pS, iR, r ?"},{"ID":"1064","标识":"NGC1064","M标识":"NGC1064","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h42m23.3s","赤经D(J2000)":"2.7064722222222226","赤纬(J2000)":"-9h21m46s","赤纬D(J2000)":"-9.362777777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.1","短轴(分)":"1","方位角":"30","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"1065","标识":"NGC1065","M标识":"NGC1065","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h42m6.2s","赤经D(J2000)":"2.7017222222222226","赤纬(J2000)":"-15h5m30s","赤纬D(J2000)":"-15.091666666666667","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"170","详细描述":"most extremely faint, pretty small, star near to south, 7.5 magnitude star to west","简略描述":"eeF, pS, * nr s, * 7.5 p"},{"ID":"1066","标识":"NGC1066","M标识":"NGC1066","拓展名":"","组件":"","Class":"III 163","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h43m49.9s","赤经D(J2000)":"2.730527777777778","赤纬(J2000)":"+32h28m32s","赤纬D(J2000)":"32.47555555555556","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"57","详细描述":"very faint, pretty large, round, a little brighter middle, southern of 2","简略描述":"vF, pL, R, lbM, s of 2"},{"ID":"1067","标识":"NGC1067","M标识":"NGC1067","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h43m50.6s","赤经D(J2000)":"2.7307222222222225","赤纬(J2000)":"+32h30m42s","赤纬D(J2000)":"32.51166666666666","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"1","方位角":"165","详细描述":"extremely faint, small, northern of 2","简略描述":"eF, S, n of 2"},{"ID":"1068","标识":"NGC1068","M标识":"M77","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"鲸鱼座A","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h42m40.8s","赤经D(J2000)":"2.7113333333333336","赤纬(J2000)":"-0h0m46s","赤纬D(J2000)":"-0.012777777777777779","可见光星等V":"8.9","摄影(蓝光)星等B":"9.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"7.1","短轴(分)":"6","方位角":"70","详细描述":"very bright, pretty large, irregularly round, suddenly brighter middle, partially resolved nucleus (some stars seen)","简略描述":"vB, pL, iR, sbMrrN"},{"ID":"1069","标识":"NGC1069","M标识":"NGC1069","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h42m59.9s","赤经D(J2000)":"2.7166388888888893","赤纬(J2000)":"-8h17m20s","赤纬D(J2000)":"-8.28888888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"145","详细描述":"most extremely faint, pretty small, round, 8.5 magnitude star near to east","简略描述":"eeF, pS, R, * 8.5 nr f"},{"ID":"1070","标识":"NGC1070","M标识":"NGC1070","拓展名":"","组件":"","Class":"II 273","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h43m22s","赤经D(J2000)":"2.722777777777778","赤纬(J2000)":"+4h58m7s","赤纬D(J2000)":"4.9686111111111115","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.3","短轴(分)":"1.9","方位角":"175","详细描述":"pretty faint, small, irregularly round, gradually brighter middle","简略描述":"pF, S, iR, gbM"},{"ID":"1071","标识":"NGC1071","M标识":"NGC1071","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h43m7.8s","赤经D(J2000)":"2.7188333333333334","赤纬(J2000)":"-8h46m27s","赤纬D(J2000)":"-8.774166666666668","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"160","详细描述":"extremely faint, very small, extended 0°, between 2 stars","简略描述":"eF, vS, E 0°, bet 2 st"},{"ID":"1072","标识":"NGC1072","M标识":"NGC1072","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h43m31.3s","赤经D(J2000)":"2.7253611111111113","赤纬(J2000)":"+0h18m25s","赤纬D(J2000)":"0.3069444444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"11","详细描述":"extremely faint, very small, round, several very faint stars involved","简略描述":"eF, vS, R, sev vF st inv"},{"ID":"1073","标识":"NGC1073","M标识":"NGC1073","拓展名":"","组件":"","Class":"III 455","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h43m40.3s","赤经D(J2000)":"2.7278611111111113","赤纬(J2000)":"+1h22m34s","赤纬D(J2000)":"1.376111111111111","可见光星等V":"11","摄影(蓝光)星等B":"11.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"4.9","短轴(分)":"4.3","方位角":"15","详细描述":"very faint, large, a little brighter middle, extremely mottled but not resolved","简略描述":"vF, L, lbM, er"},{"ID":"1074","标识":"NGC1074","M标识":"NGC1074","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h43m36s","赤经D(J2000)":"2.7266666666666666","赤纬(J2000)":"-16h17m49s","赤纬D(J2000)":"-16.296944444444446","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"15.2","长轴(分)":"2","短轴(分)":"1.3","方位角":"167","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"1075","标识":"NGC1075","M标识":"NGC1075","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h43m33.5s","赤经D(J2000)":"2.7259722222222225","赤纬(J2000)":"-16h12m4s","赤纬D(J2000)":"-16.20111111111111","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"132","详细描述":"very faint, very small, brighter middle and nucleus","简略描述":"vF, vS, bMN"},{"ID":"1076","标识":"NGC1076","M标识":"NGC1076","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h43m29.1s","赤经D(J2000)":"2.7247500000000002","赤纬(J2000)":"-14h45m18s","赤纬D(J2000)":"-14.755","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"1.1","方位角":"99","详细描述":"very faint, pretty small, round, bright star 22 seconds of time to east","简略描述":"vF, pS, R, B * f 22s"},{"ID":"1077","标识":"NGC1077","M标识":"NGC1077","拓展名":"A","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h46m0.6s","赤经D(J2000)":"2.7668333333333335","赤纬(J2000)":"+40h5m24s","赤纬D(J2000)":"40.09","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"165","详细描述":"very faint, pretty large, extended","简略描述":"vF, pL, E"},{"ID":"1078","标识":"NGC1078","M标识":"NGC1078","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h44m8s","赤经D(J2000)":"2.7355555555555555","赤纬(J2000)":"-9h27m7s","赤纬D(J2000)":"-9.451944444444443","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"18","详细描述":"extremely faint, extremely small, round (= (NGC) 1064?)","简略描述":"eF, eS, R (? = 1064)"},{"ID":"1079","标识":"NGC1079","M标识":"NGC1079","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a\/P","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h43m44.5s","赤经D(J2000)":"2.729027777777778","赤纬(J2000)":"-29h0m10s","赤纬D(J2000)":"-29.002777777777776","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"5.5","短轴(分)":"3.1","方位角":"87","详细描述":"bright, pretty large, pretty much extended, suddenly brighter middle","简略描述":"B, pL, pmE, sbM"},{"ID":"1080","标识":"NGC1080","M标识":"NGC1080","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h45m10.1s","赤经D(J2000)":"2.7528055555555557","赤纬(J2000)":"-4h42m39s","赤纬D(J2000)":"-4.710833333333333","可见光星等V":"13.5","摄影(蓝光)星等B":"14.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"174","详细描述":"very faint, pretty small, irregular round","简略描述":"vF, pS, iR"},{"ID":"1081","标识":"NGC1081","M标识":"NGC1081","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h45m5.4s","赤经D(J2000)":"2.7515","赤纬(J2000)":"-15h35m15s","赤纬D(J2000)":"-15.5875","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"27","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"1082","标识":"NGC1082","M标识":"NGC1082","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h45m41.2s","赤经D(J2000)":"2.7614444444444444","赤纬(J2000)":"-8h10m48s","赤纬D(J2000)":"-8.18","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"120","详细描述":"most extremely faint, pretty small, a little extended","简略描述":"eeF, pS, lE"},{"ID":"1083","标识":"NGC1083","M标识":"NGC1083","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h45m40.7s","赤经D(J2000)":"2.7613055555555555","赤纬(J2000)":"-15h21m26s","赤纬D(J2000)":"-15.357222222222221","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"17","详细描述":"most extremely faint, pretty small, much extended, northwestern of 2","简略描述":"eeF, pS, mE, np of 2"},{"ID":"1084","标识":"NGC1084","M标识":"NGC1084","拓展名":"","组件":"","Class":"I 64","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h45m59.8s","赤经D(J2000)":"2.766611111111111","赤纬(J2000)":"-7h34m40s","赤纬D(J2000)":"-7.5777777777777775","可见光星等V":"10.7","摄影(蓝光)星等B":"11.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.8","短轴(分)":"1.4","方位角":"30","详细描述":"very bright, pretty large, extended, gradually pretty much brighter middle","简略描述":"vB, pL, E, gpmbM"},{"ID":"1085","标识":"NGC1085","M标识":"NGC1085","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h46m25.2s","赤经D(J2000)":"2.7736666666666667","赤纬(J2000)":"+3h36m28s","赤纬D(J2000)":"3.6077777777777778","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"15","详细描述":"faint, small, round, a little brighter middle, between 2 stars","简略描述":"F, S, R, lbM, bet 2 st"},{"ID":"1086","标识":"NGC1086","M标识":"NGC1086","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h47m56.2s","赤经D(J2000)":"2.7989444444444445","赤纬(J2000)":"+41h14m48s","赤纬D(J2000)":"41.24666666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"1","方位角":"35","详细描述":"very faint, pretty small, double star near","简略描述":"vF, pS, D * nr"},{"ID":"1087","标识":"NGC1087","M标识":"NGC1087","拓展名":"","组件":"","Class":"II 466","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h46m25.2s","赤经D(J2000)":"2.7736666666666667","赤纬(J2000)":"-0h29m57s","赤纬D(J2000)":"-0.49916666666666665","可见光星等V":"10.9","摄影(蓝光)星等B":"11.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.9","短轴(分)":"2.3","方位角":"5","详细描述":"pretty bright, considerably large, a little extended, much brighter middle","简略描述":"pB, cL, lE, mbM"},{"ID":"1088","标识":"NGC1088","M标识":"NGC1088","拓展名":"","组件":"","Class":"III 582","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h47m3.9s","赤经D(J2000)":"2.7844166666666665","赤纬(J2000)":"+16h12m1s","赤纬D(J2000)":"16.200277777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.6","方位角":"99","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"1089","标识":"NGC1089","M标识":"NGC1089","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h46m10s","赤经D(J2000)":"2.7694444444444444","赤纬(J2000)":"-15h4m25s","赤纬D(J2000)":"-15.073611111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"15","详细描述":"most extremely faint, small, round, southeastern of 2","简略描述":"eeF, S, R, sf of 2"},{"ID":"1090","标识":"NGC1090","M标识":"NGC1090","拓展名":"","组件":"","Class":"II 465","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h46m34s","赤经D(J2000)":"2.776111111111111","赤纬(J2000)":"-0h14m52s","赤纬D(J2000)":"-0.2477777777777778","可见光星等V":"11.8","摄影(蓝光)星等B":"12.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3.9","短轴(分)":"1.8","方位角":"102","详细描述":"very faint, pretty large, irregularly round, brighter middle","简略描述":"vF, pL, iR, bM"},{"ID":"1091","标识":"NGC1091","M标识":"NGC1091","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h45m22.3s","赤经D(J2000)":"2.7561944444444446","赤纬(J2000)":"-17h32m0s","赤纬D(J2000)":"-17.533333333333335","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"77","详细描述":"very faint, very small, round, suddenly brighter middle and nucleus","简略描述":"vF, vS, R, sbMN"},{"ID":"1092","标识":"NGC1092","M标识":"NGC1092","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h45m29.5s","赤经D(J2000)":"2.7581944444444444","赤纬(J2000)":"-17h32m33s","赤纬D(J2000)":"-17.5425","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"170","详细描述":"very faint, very small, round, suddenly brighter middle and nucleus.","简略描述":"vF, vS, R, sbMN"},{"ID":"1093","标识":"NGC1093","M标识":"NGC1093","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h48m16.1s","赤经D(J2000)":"2.804472222222222","赤纬(J2000)":"+34h25m12s","赤纬D(J2000)":"34.419999999999995","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1","方位角":"100","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"1094","标识":"NGC1094","M标识":"NGC1094","拓展名":"","组件":"","Class":"III 462","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h47m27.8s","赤经D(J2000)":"2.7910555555555554","赤纬(J2000)":"-0h17m7s","赤纬D(J2000)":"-0.2852777777777778","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"1","方位角":"85","详细描述":"very faint, small, round, 2 small (faint) stars to west","简略描述":"vF, S, R, 2 S st p"},{"ID":"1095","标识":"NGC1095","M标识":"NGC1095","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h47m37.7s","赤经D(J2000)":"2.7938055555555557","赤纬(J2000)":"+4h38m17s","赤纬D(J2000)":"4.638055555555555","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"45","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"1096","标识":"NGC1096","M标识":"NGC1096","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"2h43m49.3s","赤经D(J2000)":"2.7303611111111112","赤纬(J2000)":"-59h54m50s","赤纬D(J2000)":"-59.913888888888884","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.9","短轴(分)":"1.8","方位角":"50","详细描述":"faint, pretty small, round, gradually a little brighter middle","简略描述":"F, pS, R, glbM"},{"ID":"1097","标识":"NGC1097","M标识":"NGC1097","拓展名":"","组件":"","Class":"V 48","业余排名":"2","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h46m19.5s","赤经D(J2000)":"2.7720833333333332","赤纬(J2000)":"-30h16m32s","赤纬D(J2000)":"-30.275555555555556","可见光星等V":"9.5","摄影(蓝光)星等B":"10.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"9.4","短轴(分)":"6.6","方位角":"130","详细描述":"very bright, large, very much extended 151°, very bright middle and nucleus","简略描述":"vB, L, vmE 151°, vbMN"},{"ID":"1098","标识":"NGC1098","M标识":"NGC1098","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h44m53.6s","赤经D(J2000)":"2.748222222222222","赤纬(J2000)":"-17h39m34s","赤纬D(J2000)":"-17.659444444444443","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"102","详细描述":"faint, very small, round, brighter middle and nucleus, 1st of 3","简略描述":"F, vS, R, bMN, 1st of 3"},{"ID":"1099","标识":"NGC1099","M标识":"NGC1099","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h45m17.8s","赤经D(J2000)":"2.7549444444444444","赤纬(J2000)":"-17h42m31s","赤纬D(J2000)":"-17.70861111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.9","短轴(分)":"0.6","方位角":"10","详细描述":"faint, pretty small, a little extended, brighter middle and nucleus, 2nd of 3","简略描述":"F, pS, lE, bMN, 2nd of 3"},{"ID":"1100","标识":"NGC1100","M标识":"NGC1100","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h45m35.9s","赤经D(J2000)":"2.7599722222222223","赤纬(J2000)":"-17h41m19s","赤纬D(J2000)":"-17.68861111111111","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"58","详细描述":"faint, very small, a little extended, brighter middle and nucleus, 3rd of 3","简略描述":"F, vS, lE, bMN, 3rd of 3"},{"ID":"1101","标识":"NGC1101","M标识":"NGC1101","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h48m14.7s","赤经D(J2000)":"2.8040833333333333","赤纬(J2000)":"+4h34m43s","赤纬D(J2000)":"4.578611111111111","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1","方位角":"120","详细描述":"very faint, extremely small, round, brighter middle, 13th magnitude star to west","简略描述":"vF, eS, R, bM, * 13 p"},{"ID":"1102","标识":"NGC1102","M标识":"NGC1102","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h47m12.8s","赤经D(J2000)":"2.786888888888889","赤纬(J2000)":"-22h12m32s","赤纬D(J2000)":"-22.20888888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"90","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"1103","标识":"NGC1103","M标识":"NGC1103","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h48m6s","赤经D(J2000)":"2.8016666666666663","赤纬(J2000)":"-13h57m34s","赤纬D(J2000)":"-13.959444444444443","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.2","短轴(分)":"0.6","方位角":"45","详细描述":"most extremely faint, small, extended, 15th magnitude star involved, 11th magnitude star to east","简略描述":"eeF, S, E, * 15 inv, * 11 f"},{"ID":"1104","标识":"NGC1104","M标识":"NGC1104","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h48m38.7s","赤经D(J2000)":"2.8107499999999996","赤纬(J2000)":"-0h16m17s","赤纬D(J2000)":"-0.2713888888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"70","详细描述":"very faint, very small, mottled but not resolved, 14th magnitude star to south","简略描述":"vF, vS, r, * 14 s"},{"ID":"1105","标识":"NGC1105","M标识":"NGC1105","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h43m41.9s","赤经D(J2000)":"2.7283055555555555","赤纬(J2000)":"-15h42m21s","赤纬D(J2000)":"-15.705833333333333","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"1106","标识":"NGC1106","M标识":"NGC1106","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h50m40.5s","赤经D(J2000)":"2.8445833333333335","赤纬(J2000)":"+41h40m20s","赤纬D(J2000)":"41.67222222222222","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"1","方位角":"27","详细描述":"very faint, very small, very faint star attached on south","简略描述":"vF, vS, vF * att s"},{"ID":"1107","标识":"NGC1107","M标识":"NGC1107","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h49m19.5s","赤经D(J2000)":"2.822083333333333","赤纬(J2000)":"+8h5m36s","赤纬D(J2000)":"8.093333333333334","可见光星等V":"12.2","摄影(蓝光)星等B":"13.5","B-V":"1.3","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"140","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"1108","标识":"NGC1108","M标识":"NGC1108","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h48m38.5s","赤经D(J2000)":"2.810694444444444","赤纬(J2000)":"-7h57m2s","赤纬D(J2000)":"-7.950555555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"85","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"1109","标识":"NGC1109","M标识":"NGC1109","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h47m43.5s","赤经D(J2000)":"2.7954166666666667","赤纬(J2000)":"+13h15m20s","赤纬D(J2000)":"13.255555555555556","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"150","详细描述":"very faint","简略描述":"vF"},{"ID":"1110","标识":"NGC1110","M标识":"NGC1110","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h49m9.4s","赤经D(J2000)":"2.8192777777777773","赤纬(J2000)":"-7h50m17s","赤纬D(J2000)":"-7.838055555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.9","短轴(分)":"0.5","方位角":"18","详细描述":"extremely faint, pretty large, extended 348°","简略描述":"eF, pL, E 348°"},{"ID":"1111","标识":"NGC1111","M标识":"NGC1111","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h48m39.3s","赤经D(J2000)":"2.8109166666666665","赤纬(J2000)":"+13h15m33s","赤纬D(J2000)":"13.259166666666667","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"5","详细描述":"faint, very small, stellar","简略描述":"F, vS, stellar"},{"ID":"1112","标识":"NGC1112","M标识":"NGC1112","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h49m0.4s","赤经D(J2000)":"2.8167777777777774","赤纬(J2000)":"+13h13m25s","赤纬D(J2000)":"13.223611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"3","详细描述":"faint, pretty small","简略描述":"F, pS"},{"ID":"1113","标识":"NGC1113","M标识":"NGC1113","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h49m4.6s","赤经D(J2000)":"2.817944444444444","赤纬(J2000)":"+13h18m27s","赤纬D(J2000)":"13.307500000000001","可见光星等V":"99","摄影(蓝光)星等B":"15.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"1114","标识":"NGC1114","M标识":"NGC1114","拓展名":"","组件":"","Class":"III 449","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h49m7s","赤经D(J2000)":"2.8186111111111107","赤纬(J2000)":"-16h59m38s","赤纬D(J2000)":"-16.99388888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.8","短轴(分)":"0.8","方位角":"9","详细描述":"pretty faint, pretty large, pretty much extended, gradually a little brighter middle","简略描述":"pF, pL, pmE, glbM"},{"ID":"1115","标识":"NGC1115","M标识":"NGC1115","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h50m25.4s","赤经D(J2000)":"2.840388888888889","赤纬(J2000)":"+13h16m1s","赤纬D(J2000)":"13.266944444444444","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"12","详细描述":"very faint","简略描述":"vF"},{"ID":"1116","标识":"NGC1116","M标识":"NGC1116","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h50m35.8s","赤经D(J2000)":"2.843277777777778","赤纬(J2000)":"+13h20m6s","赤纬D(J2000)":"13.335","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.3","方位角":"27","详细描述":"very faint","简略描述":"vF"},{"ID":"1117","标识":"NGC1117","M标识":"NGC1117","拓展名":"A","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h51m12.9s","赤经D(J2000)":"2.8535833333333334","赤纬(J2000)":"+13h11m33s","赤纬D(J2000)":"13.1925","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"30","详细描述":"very faint","简略描述":"Close to a S *"},{"ID":"1118","标识":"NGC1118","M标识":"NGC1118","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h49m58.7s","赤经D(J2000)":"2.832972222222222","赤纬(J2000)":"-12h9m50s","赤纬D(J2000)":"-12.16388888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.2","短轴(分)":"0.7","方位角":"90","详细描述":"extremely faint, very small, extended east-west","简略描述":"eF, vS, E pf"},{"ID":"1119","标识":"NGC1119","M标识":"NGC1119","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h48m17s","赤经D(J2000)":"2.804722222222222","赤纬(J2000)":"-17h59m17s","赤纬D(J2000)":"-17.988055555555558","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"0","详细描述":"faint, extremely small, round (perhaps a faint star?)","简略描述":"F, eS, R (? F *)"},{"ID":"1120","标识":"NGC1120","M标识":"NGC1120","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h49m4s","赤经D(J2000)":"2.8177777777777777","赤纬(J2000)":"-14h28m13s","赤纬D(J2000)":"-14.470277777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"40","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"1121","标识":"NGC1121","M标识":"NGC1121","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h50m39.1s","赤经D(J2000)":"2.8441944444444447","赤纬(J2000)":"-1h44m3s","赤纬D(J2000)":"-1.7341666666666666","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"10","详细描述":"faint, much extended","简略描述":"F, mE"},{"ID":"1122","标识":"NGC1122","M标识":"NGC1122","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h52m51.2s","赤经D(J2000)":"2.880888888888889","赤纬(J2000)":"+42h12m19s","赤纬D(J2000)":"42.20527777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"40","详细描述":"very faint, pretty small, round, star near to north","简略描述":"vF, pS, R, * nr n"},{"ID":"1123","标识":"NGC1123","M标识":"NGC1123","拓展名":"","组件":"","Class":"II 601","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h52m51.2s","赤经D(J2000)":"2.880888888888889","赤纬(J2000)":"+42h12m19s","赤纬D(J2000)":"42.20527777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"40","详细描述":"very faint, pretty small, round, star near to north","简略描述":"cF, S, iR, vgbM, r"},{"ID":"1124","标识":"NGC1124","M标识":"NGC1124","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h51m36s","赤经D(J2000)":"2.86","赤纬(J2000)":"-25h42m5s","赤纬D(J2000)":"-25.70138888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.8","方位角":"164","详细描述":"extremely faint, extremely small, irregularly round, gradually brighter middle, 9th magnitude star 1 arcmin northeast","简略描述":"eF, eS, iR, gbM, * 9 nf 1'"},{"ID":"1125","标识":"NGC1125","M标识":"NGC1125","拓展名":"","组件":"","Class":"III 450","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h51m40.3s","赤经D(J2000)":"2.8611944444444446","赤纬(J2000)":"-16h39m3s","赤纬D(J2000)":"-16.65083333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"0.9","方位角":"51","详细描述":"very faint, small, a little extended, gradually brighter middle","简略描述":"vF, S, lE, gbM"},{"ID":"1126","标识":"NGC1126","M标识":"NGC1126","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h52m18.7s","赤经D(J2000)":"2.871861111111111","赤纬(J2000)":"-1h17m47s","赤纬D(J2000)":"-1.2963888888888888","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"135","详细描述":"most extremely faint, small, round, h273 to east","简略描述":"eeF, S, R, h 273 f"},{"ID":"1127","标识":"NGC1127","M标识":"NGC1127","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h52m51.8s","赤经D(J2000)":"2.8810555555555557","赤纬(J2000)":"+13h15m25s","赤纬D(J2000)":"13.256944444444445","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"39","详细描述":"very faint","简略描述":"vF"},{"ID":"1128","标识":"NGC1128","M标识":"NGC1128","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h57m41.5s","赤经D(J2000)":"2.961527777777778","赤纬(J2000)":"+6h1m36s","赤纬D(J2000)":"6.026666666666666","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, small, a little extended, 2 faint stars close to west","简略描述":"eF, S, lE, 2 F st close p"},{"ID":"1129","标识":"NGC1129","M标识":"NGC1129","拓展名":"","组件":"","Class":"II 602","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h54m27.3s","赤经D(J2000)":"2.907583333333333","赤纬(J2000)":"+41h34m47s","赤纬D(J2000)":"41.57972222222222","可见光星等V":"12.4","摄影(蓝光)星等B":"13.5","B-V":"1.1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"2.9","短轴(分)":"2.1","方位角":"90","详细描述":"extremely faint, pretty small, irregularly round, very gradually a little brighter middle, double or faint star to southwest","简略描述":"cF, pS, iR, vglbM, D or F * sp"},{"ID":"1130","标识":"NGC1130","M标识":"NGC1130","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h54m24.5s","赤经D(J2000)":"2.9068055555555556","赤纬(J2000)":"+41h36m22s","赤纬D(J2000)":"41.60611111111111","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"36","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"1131","标识":"NGC1131","M标识":"NGC1131","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h54m34s","赤经D(J2000)":"2.9094444444444445","赤纬(J2000)":"+41h33m33s","赤纬D(J2000)":"41.55916666666666","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"1132","标识":"NGC1132","M标识":"NGC1132","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h52m51.8s","赤经D(J2000)":"2.8810555555555557","赤纬(J2000)":"-1h16m28s","赤纬D(J2000)":"-1.2744444444444445","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.5","短轴(分)":"1.3","方位角":"140","详细描述":"extremely faint, pretty large, gradually brighter middle, 8th magnitude star to east","简略描述":"eF, pL, gbM, * 8 f"},{"ID":"1133","标识":"NGC1133","M标识":"NGC1133","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h52m42.2s","赤经D(J2000)":"2.878388888888889","赤纬(J2000)":"-8h48m16s","赤纬D(J2000)":"-8.804444444444446","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"157","详细描述":"very faint, very small, a little extended 45°, two stars to northwest and northeast","简略描述":"vF, vS, lE 45°, 2 st np, nf"},{"ID":"1134","标识":"NGC1134","M标识":"NGC1134","拓展名":"","组件":"","Class":"II 254","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h53m41.1s","赤经D(J2000)":"2.89475","赤纬(J2000)":"+13h0m53s","赤纬D(J2000)":"13.014722222222222","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.5","短轴(分)":"0.9","方位角":"148","详细描述":"faint, small, irregularly round, mottled but not resolved","简略描述":"F, S, iR, r"},{"ID":"1135","标识":"NGC1135","M标识":"NGC1135","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"2h50m47.2s","赤经D(J2000)":"2.8464444444444448","赤纬(J2000)":"-54h55m46s","赤纬D(J2000)":"-54.92944444444444","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"72","详细描述":"faint, round, gradually brighter middle","简略描述":"F, R, gbM"},{"ID":"1136","标识":"NGC1136","M标识":"NGC1136","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"2h50m53.6s","赤经D(J2000)":"2.848222222222222","赤纬(J2000)":"-54h58m34s","赤纬D(J2000)":"-54.976111111111116","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"80","详细描述":"faint, round, gradually brighter middle","简略描述":"F, R, gbM"},{"ID":"1137","标识":"NGC1137","M标识":"NGC1137","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h54m2.7s","赤经D(J2000)":"2.90075","赤纬(J2000)":"+2h57m43s","赤纬D(J2000)":"2.9619444444444447","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.2","短轴(分)":"1.3","方位角":"20","详细描述":"very faint, pretty small, round, a little brighter middle","简略描述":"vF, pS, R, lbM"},{"ID":"1138","标识":"NGC1138","M标识":"NGC1138","拓展名":"","组件":"","Class":"III 580","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h56m36.3s","赤经D(J2000)":"2.943416666666667","赤纬(J2000)":"+43h2m50s","赤纬D(J2000)":"43.04722222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"very faint, very small, round, gradually brighter middle, in a triangle with 2 small (faint) stars","简略描述":"vF, vS, R, gbM, 2 S st Δ"},{"ID":"1139","标识":"NGC1139","M标识":"NGC1139","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h52m46.7s","赤经D(J2000)":"2.879638888888889","赤纬(J2000)":"-14h31m44s","赤纬D(J2000)":"-14.52888888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"36","详细描述":"very faint, small, round, gradually brighter middle and nucleus","简略描述":"vF, S, R, gbMN"},{"ID":"1140","标识":"NGC1140","M标识":"NGC1140","拓展名":"","组件":"","Class":"II 470","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h54m33.5s","赤经D(J2000)":"2.9093055555555556","赤纬(J2000)":"-10h1m41s","赤纬D(J2000)":"-10.028055555555556","可见光星等V":"12.5","摄影(蓝光)星等B":"12.8","B-V":"0.3","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"1","方位角":"169","详细描述":"pretty bright, small, round, stellar","简略描述":"pB, S, R, stellar"},{"ID":"1141","标识":"NGC1141","M标识":"NGC1141","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Ring A","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h55m9.7s","赤经D(J2000)":"2.919361111111111","赤纬(J2000)":"-0h10m41s","赤纬D(J2000)":"-0.17805555555555555","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"110","详细描述":"very faint, small, western of double nebula","简略描述":"vF, S, p of D neb"},{"ID":"1142","标识":"NGC1142","M标识":"NGC1142","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Ring B","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h55m12.2s","赤经D(J2000)":"2.9200555555555554","赤纬(J2000)":"-0h11m2s","赤纬D(J2000)":"-0.18388888888888888","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"130","详细描述":"pretty faint, small, round, eastern of double nebula","简略描述":"pF, S, R, f of D neb"},{"ID":"1143","标识":"NGC1143","M标识":"NGC1143","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Ring A","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h55m9.7s","赤经D(J2000)":"2.919361111111111","赤纬(J2000)":"-0h10m41s","赤纬D(J2000)":"-0.17805555555555555","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"110","详细描述":"very faint, small, western of double nebula","简略描述":"eF, S, R, p of 2"},{"ID":"1144","标识":"NGC1144","M标识":"NGC1144","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Ring B","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h55m12.2s","赤经D(J2000)":"2.9200555555555554","赤纬(J2000)":"-0h11m2s","赤纬D(J2000)":"-0.18388888888888888","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"130","详细描述":"pretty faint, small, round, eastern of double nebula","简略描述":"eF, S, R, f of 2"},{"ID":"1145","标识":"NGC1145","M标识":"NGC1145","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h54m33.4s","赤经D(J2000)":"2.9092777777777776","赤纬(J2000)":"-18h38m9s","赤纬D(J2000)":"-18.635833333333334","可见光星等V":"12.4","摄影(蓝光)星等B":"13.6","B-V":"1.2","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.2","短轴(分)":"0.5","方位角":"60","详细描述":"faint, pretty large, pretty much extended, 2 small (faint) stars to east","简略描述":"F, pL, pmE, 2 S st f"},{"ID":"1146","标识":"NGC1146","M标识":"NGC1146","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h57m41s","赤经D(J2000)":"2.961388888888889","赤纬(J2000)":"+46h25m3s","赤纬D(J2000)":"46.4175","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"cluster, very small, very faint plus nebulosity","简略描述":"Cl, vS, vF + neb"},{"ID":"1147","标识":"NGC1147","M标识":"NGC1147","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h55m9.2s","赤经D(J2000)":"2.919222222222222","赤纬(J2000)":"-9h7m11s","赤纬D(J2000)":"-9.119722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, extended 0°, 9.5 magnitude star 6 arcmin to east","简略描述":"eF, vS, E 0°, * 9.5 f 6'"},{"ID":"1148","标识":"NGC1148","M标识":"NGC1148","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h57m4.3s","赤经D(J2000)":"2.9511944444444445","赤纬(J2000)":"-7h41m8s","赤纬D(J2000)":"-7.685555555555556","可见光星等V":"14.9","摄影(蓝光)星等B":"15.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.9","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"84","详细描述":"extremely faint, pretty small, round, very difficult, northwestern of 2","简略描述":"eF, pS, R, v diffic, np of 2"},{"ID":"1149","标识":"NGC1149","M标识":"NGC1149","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h57m23.8s","赤经D(J2000)":"2.956611111111111","赤纬(J2000)":"-0h18m32s","赤纬D(J2000)":"-0.3088888888888889","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"130","详细描述":"very faint, very small, round, brighter middle, small (faint) star 30 arcsec to west","简略描述":"vF, vS, R, bM, S * p 30\""},{"ID":"1150","标识":"NGC1150","M标识":"NGC1150","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h57m1.3s","赤经D(J2000)":"2.9503611111111114","赤纬(J2000)":"-15h2m55s","赤纬D(J2000)":"-15.04861111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"73","详细描述":"very faint, small, round, suddenly brighter middle and nucleus","简略描述":"vF, S, R, sbMN"},{"ID":"1151","标识":"NGC1151","M标识":"NGC1151","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h57m4.6s","赤经D(J2000)":"2.951277777777778","赤纬(J2000)":"-15h0m48s","赤纬D(J2000)":"-15.013333333333334","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"10","详细描述":"extremely faint, small, round (nebulous?), near last","简略描述":"eF, S, R (neb ?), nr last"},{"ID":"1152","标识":"NGC1152","M标识":"NGC1152","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h57m33.6s","赤经D(J2000)":"2.9593333333333334","赤纬(J2000)":"-7h45m35s","赤纬D(J2000)":"-7.759722222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"29","详细描述":"most extremely faint, small, round, very difficult, southeastern of 2, star to south","简略描述":"eeF, S, R, v diffic, sf of 2, * s"},{"ID":"1153","标识":"NGC1153","M标识":"NGC1153","拓展名":"","组件":"","Class":"II 274","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h58m10.2s","赤经D(J2000)":"2.9695","赤纬(J2000)":"+3h21m43s","赤纬D(J2000)":"3.3619444444444446","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"45","详细描述":"faint, very small, irregularly a little extended, suddenly brighter middle, extremely mottled but not resolved","简略描述":"F, vS, ilE, sbM, er"},{"ID":"1154","标识":"NGC1154","M标识":"NGC1154","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h58m7.6s","赤经D(J2000)":"2.968777777777778","赤纬(J2000)":"-10h21m49s","赤纬D(J2000)":"-10.36361111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.8","方位角":"124","详细描述":"extremely faint, small, a little brighter middle, southwestern of 2","简略描述":"eF, S, lbM, sp of 2"},{"ID":"1155","标识":"NGC1155","M标识":"NGC1155","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h58m13s","赤经D(J2000)":"2.970277777777778","赤纬(J2000)":"-10h21m1s","赤纬D(J2000)":"-10.350277777777777","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.8","方位角":"165","详细描述":"extremely faint, small, a little brighter middle, northeastern of 2","简略描述":"eF, S, lbM, nf of 2"},{"ID":"1156","标识":"NGC1156","M标识":"NGC1156","拓展名":"","组件":"","Class":"II 619","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h59m42.1s","赤经D(J2000)":"2.9950277777777776","赤纬(J2000)":"+25h14m14s","赤纬D(J2000)":"25.237222222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.6","短轴(分)":"1.7","方位角":"34","详细描述":"pretty bright, considerably large, pretty much extended 0°, between 2 stars","简略描述":"pB, cL, pmE 0°, bet 2 st"},{"ID":"1157","标识":"NGC1157","M标识":"NGC1157","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h58m6.6s","赤经D(J2000)":"2.9685","赤纬(J2000)":"-15h7m5s","赤纬D(J2000)":"-15.118055555555555","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"169","详细描述":"extremely faint, pretty small, extended 0°, suddenly brighter middle and nucleus","简略描述":"eF, pS, E 0°, sbMN"},{"ID":"1158","标识":"NGC1158","M标识":"NGC1158","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h57m11.4s","赤经D(J2000)":"2.9531666666666667","赤纬(J2000)":"-14h23m42s","赤纬D(J2000)":"-14.395","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"147","详细描述":"extremely faint, small, round, suddenly brighter middle and nucleus","简略描述":"eF, S, R, sbMN"},{"ID":"1159","标识":"NGC1159","M标识":"NGC1159","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h0m46.4s","赤经D(J2000)":"3.012888888888889","赤纬(J2000)":"+43h9m46s","赤纬D(J2000)":"43.16277777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"123","详细描述":"very faint, small, round, very little brighter middle","简略描述":"vF, S, R, vlbM"},{"ID":"1160","标识":"NGC1160","M标识":"NGC1160","拓展名":"","组件":"","Class":"III 199","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h1m13.2s","赤经D(J2000)":"3.0203333333333333","赤纬(J2000)":"+44h57m20s","赤纬D(J2000)":"44.955555555555556","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"50","详细描述":"faint, extended","简略描述":"F, E"},{"ID":"1161","标识":"NGC1161","M标识":"NGC1161","拓展名":"","组件":"","Class":"II 239","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h1m14.1s","赤经D(J2000)":"3.020583333333333","赤纬(J2000)":"+44h53m51s","赤纬D(J2000)":"44.8975","可见光星等V":"11","摄影(蓝光)星等B":"12.1","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.8","短轴(分)":"2","方位角":"23","详细描述":"faint, pretty small, a little extended, suddenly brighter middle","简略描述":"F, pS, lE, sbM"},{"ID":"1162","标识":"NGC1162","M标识":"NGC1162","拓展名":"","组件":"","Class":"III 469","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h58m55.9s","赤经D(J2000)":"2.9821944444444446","赤纬(J2000)":"-12h23m54s","赤纬D(J2000)":"-12.398333333333333","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"faint, round, gradually a little brighter middle, stellar","简略描述":"F, R, glbM, stellar"},{"ID":"1163","标识":"NGC1163","M标识":"NGC1163","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h0m22s","赤经D(J2000)":"3.006111111111111","赤纬(J2000)":"-17h9m10s","赤纬D(J2000)":"-17.152777777777775","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.2","短轴(分)":"0.3","方位角":"141","详细描述":"very faint, pretty small, much extended 75°","简略描述":"vF, pS, mE 75°"},{"ID":"1164","标识":"NGC1164","M标识":"NGC1164","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h1m59.8s","赤经D(J2000)":"3.0332777777777777","赤纬(J2000)":"+42h35m8s","赤纬D(J2000)":"42.58555555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"145","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"1165","标识":"NGC1165","M标识":"NGC1165","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h58m47.7s","赤经D(J2000)":"2.979916666666667","赤纬(J2000)":"-32h5m58s","赤纬D(J2000)":"-32.099444444444444","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.5","短轴(分)":"0.9","方位角":"115","详细描述":"very faint, pretty large, extended, very little brighter middle","简略描述":"vF, pL, E, vlbM"},{"ID":"1166","标识":"NGC1166","M标识":"NGC1166","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"3h0m34.9s","赤经D(J2000)":"3.0096944444444444","赤纬(J2000)":"+11h50m34s","赤纬D(J2000)":"11.842777777777778","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"1167","标识":"NGC1167","M标识":"NGC1167","拓展名":"","组件":"","Class":"III 178","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h1m42.3s","赤经D(J2000)":"3.0284166666666668","赤纬(J2000)":"+35h12m21s","赤纬D(J2000)":"35.20583333333334","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"3.3","短轴(分)":"2.3","方位角":"70","详细描述":"very faint, pretty large, round, suddenly pretty much brighter middle","简略描述":"vF, pL, R, spmbM"},{"ID":"1168","标识":"NGC1168","M标识":"NGC1168","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"3h0m47s","赤经D(J2000)":"3.0130555555555554","赤纬(J2000)":"+11h46m20s","赤纬D(J2000)":"11.772222222222224","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"18","详细描述":"extremely faint","简略描述":"eF"},{"ID":"1169","标识":"NGC1169","M标识":"NGC1169","拓展名":"","组件":"","Class":"II 620","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h3m34.8s","赤经D(J2000)":"3.0596666666666663","赤纬(J2000)":"+46h23m11s","赤纬D(J2000)":"46.38638888888889","可见光星等V":"11.3","摄影(蓝光)星等B":"12.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"4","短轴(分)":"2.6","方位角":"28","详细描述":"pretty faint, pretty small, irregular figure, suddenly brighter middle","简略描述":"pF, pS, iF, sbM"},{"ID":"1170","标识":"NGC1170","M标识":"NGC1170","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"3h2m26.8s","赤经D(J2000)":"3.0407777777777776","赤纬(J2000)":"+27h4m22s","赤纬D(J2000)":"27.072777777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely large, diffused","简略描述":"eL, dif"},{"ID":"1171","标识":"NGC1171","M标识":"NGC1171","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h3m58.9s","赤经D(J2000)":"3.066361111111111","赤纬(J2000)":"+43h23m52s","赤纬D(J2000)":"43.397777777777776","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.9","短轴(分)":"1","方位角":"147","详细描述":"very faint, pretty large, irregular figure","简略描述":"vF, pL, iF"},{"ID":"1172","标识":"NGC1172","M标识":"NGC1172","拓展名":"","组件":"","Class":"II 502","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h1m36s","赤经D(J2000)":"3.0266666666666664","赤纬(J2000)":"-14h50m12s","赤纬D(J2000)":"-14.836666666666668","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.3","短轴(分)":"1.7","方位角":"27","详细描述":"pretty faint, pretty large, round, pretty suddenly bright middle","简略描述":"pF, pL, R, psbM"},{"ID":"1173","标识":"NGC1173","M标识":"NGC1173","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h3m57.7s","赤经D(J2000)":"3.066027777777778","赤纬(J2000)":"+42h23m1s","赤纬D(J2000)":"42.38361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, stellar nucleus","简略描述":"eF, vS, stellar Nucl"},{"ID":"1174","标识":"NGC1174","M标识":"NGC1174","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h5m30.9s","赤经D(J2000)":"3.0919166666666666","赤纬(J2000)":"+42h50m8s","赤纬D(J2000)":"42.83555555555556","可见光星等V":"11.4","摄影(蓝光)星等B":"12.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"3.2","短轴(分)":"1.2","方位角":"122","详细描述":"pretty faint, pretty small, a little extended, pretty bright star close to east","简略描述":"pF, pS, lE, pB * close f"},{"ID":"1175","标识":"NGC1175","M标识":"NGC1175","拓展名":"","组件":"","Class":"II 607","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h4m32.3s","赤经D(J2000)":"3.0756388888888893","赤纬(J2000)":"+42h20m25s","赤纬D(J2000)":"42.34027777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.9","短轴(分)":"0.7","方位角":"153","详细描述":"faint, considerably large, extended","简略描述":"F, cL, E"},{"ID":"1176","标识":"NGC1176","M标识":"NGC1176","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h4m34.8s","赤经D(J2000)":"3.0763333333333334","赤纬(J2000)":"+42h23m38s","赤纬D(J2000)":"42.39388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"13th magnitude star in very faint nebulosity","简略描述":"* 13 in vF neb"},{"ID":"1177","标识":"NGC1177","M标识":"NGC1177","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h4m37.2s","赤经D(J2000)":"3.0770000000000004","赤纬(J2000)":"+42h21m46s","赤纬D(J2000)":"42.36277777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, round, northeast of II 607","简略描述":"vF, S, R, nf II 607"},{"ID":"1178","标识":"NGC1178","M标识":"NGC1178","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h4m38.7s","赤经D(J2000)":"3.0774166666666667","赤纬(J2000)":"+42h18m51s","赤纬D(J2000)":"42.314166666666665","可见光星等V":"99","摄影(蓝光)星等B":"13.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"13th-magnitude star in very faint nebulosity (?)","简略描述":"* 13 in vF neb (?)"},{"ID":"1179","标识":"NGC1179","M标识":"NGC1179","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h2m38.5s","赤经D(J2000)":"3.0440277777777776","赤纬(J2000)":"-18h53m52s","赤纬D(J2000)":"-18.897777777777776","可见光星等V":"12","摄影(蓝光)星等B":"12.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"15","长轴(分)":"4.7","短轴(分)":"3.8","方位角":"35","详细描述":"extremely faint, pretty small, gradually brighter middle, 12th magnitude star 1 arcmin to east","简略描述":"eF, pS, gbM, * 12 f 1'"},{"ID":"1180","标识":"NGC1180","M标识":"NGC1180","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h1m51s","赤经D(J2000)":"3.0308333333333333","赤纬(J2000)":"-15h1m49s","赤纬D(J2000)":"-15.030277777777778","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"5","详细描述":"extremely faint, very small, round, brighter middle and nucleus","简略描述":"eF, vS, R, bMN"},{"ID":"1181","标识":"NGC1181","M标识":"NGC1181","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h1m42.8s","赤经D(J2000)":"3.0285555555555557","赤纬(J2000)":"-15h3m10s","赤纬D(J2000)":"-15.052777777777779","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"100","详细描述":"extremely faint, very small, round, brighter middle and nucleus","简略描述":"eF, vS, R, bMN"},{"ID":"1182","标识":"NGC1182","M标识":"NGC1182","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h3m28.4s","赤经D(J2000)":"3.057888888888889","赤纬(J2000)":"-9h40m14s","赤纬D(J2000)":"-9.670555555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"15","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"115","详细描述":"extremely faint, pretty small, extended 120°, 10th magnitude star 2 1\/2 arcmin southwest","简略描述":"eF, pS, E 120°, * sp 2?'"},{"ID":"1183","标识":"NGC1183","M标识":"NGC1183","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h4m46.1s","赤经D(J2000)":"3.0794722222222224","赤纬(J2000)":"+42h22m10s","赤纬D(J2000)":"42.36944444444445","可见光星等V":"99","摄影(蓝光)星等B":"13.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"13th magnitude star involved in nebulosity","简略描述":"* 13 inv in neb"},{"ID":"1184","标识":"NGC1184","M标识":"NGC1184","拓展名":"","组件":"","Class":"II 704","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"3h16m45.3s","赤经D(J2000)":"3.2792499999999998","赤纬(J2000)":"+80h47m35s","赤纬D(J2000)":"80.79305555555555","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.8","短轴(分)":"0.6","方位角":"165","详细描述":"faint, pretty large, much extended","简略描述":"F, pL, mE"},{"ID":"1185","标识":"NGC1185","M标识":"NGC1185","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h2m59.2s","赤经D(J2000)":"3.0497777777777775","赤纬(J2000)":"-9h7m59s","赤纬D(J2000)":"-9.133055555555556","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"30","详细描述":"extremely faint, pretty small, extended 15°","简略描述":"eF, pS, E 15°"},{"ID":"1186","标识":"NGC1186","M标识":"NGC1186","拓展名":"","组件":"","Class":"IV 43","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h5m30.9s","赤经D(J2000)":"3.0919166666666666","赤纬(J2000)":"+42h50m8s","赤纬D(J2000)":"42.83555555555556","可见光星等V":"11.4","摄影(蓝光)星等B":"12.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"3.2","短轴(分)":"1.2","方位角":"122","详细描述":"pretty faint, pretty small, a little extended, pretty bright star close to east","简略描述":"F * with neb appendages"},{"ID":"1187","标识":"NGC1187","M标识":"NGC1187","拓展名":"","组件":"","Class":"III 245","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h2m37.6s","赤经D(J2000)":"3.0437777777777777","赤纬(J2000)":"-22h52m2s","赤纬D(J2000)":"-22.86722222222222","可见光星等V":"10.8","摄影(蓝光)星等B":"11.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"14","长轴(分)":"4.2","短轴(分)":"3.2","方位角":"130","详细描述":"pretty faint, considerably large, pretty much extended, gradually brighter middle equivalent to a 16th magnitude star, mottled but not resolved","简略描述":"pF, cL, pmE, gbM * 16, r"},{"ID":"1188","标识":"NGC1188","M标识":"NGC1188","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h3m43.4s","赤经D(J2000)":"3.0620555555555553","赤纬(J2000)":"-15h29m5s","赤纬D(J2000)":"-15.48472222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.5","方位角":"170","详细描述":"extremely faint, very small, round, preceding h286","简略描述":"eF, vS, R, p h 286"},{"ID":"1189","标识":"NGC1189","M标识":"NGC1189","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h3m24.2s","赤经D(J2000)":"3.056722222222222","赤纬(J2000)":"-15h37m23s","赤纬D(J2000)":"-15.623055555555556","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"96","详细描述":"extremely faint, very small, round, preceding h286","简略描述":"eF, vS, R, p h 286"},{"ID":"1190","标识":"NGC1190","M标识":"NGC1190","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h3m26s","赤经D(J2000)":"3.057222222222222","赤纬(J2000)":"-15h39m44s","赤纬D(J2000)":"-15.662222222222223","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"95","详细描述":"extremely faint, very small, round, preceding h286","简略描述":"eF, vS, R, p h 286"},{"ID":"1191","标识":"NGC1191","M标识":"NGC1191","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h3m30.8s","赤经D(J2000)":"3.0585555555555555","赤纬(J2000)":"-15h41m8s","赤纬D(J2000)":"-15.685555555555556","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"60","详细描述":"extremely faint, very small, round, preceding h286","简略描述":"eF, vS, R, p h 286"},{"ID":"1192","标识":"NGC1192","M标识":"NGC1192","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h3m34.6s","赤经D(J2000)":"3.059611111111111","赤纬(J2000)":"-15h40m44s","赤纬D(J2000)":"-15.678888888888888","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"102","详细描述":"extremely faint, very small, round, preceding h286","简略描述":"eF, vS, R, p h 286"},{"ID":"1193","标识":"NGC1193","M标识":"NGC1193","拓展名":"","组件":"","Class":"II 608","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h5m55s","赤经D(J2000)":"3.0986111111111114","赤纬(J2000)":"+44h23m0s","赤纬D(J2000)":"44.38333333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"faint, considerably large, extremely mottled but not resolved","简略描述":"F, cL, er"},{"ID":"1194","标识":"NGC1194","M标识":"NGC1194","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"3h3m49.1s","赤经D(J2000)":"3.063638888888889","赤纬(J2000)":"-1h6m12s","赤纬D(J2000)":"-1.1033333333333335","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"1","方位角":"140","详细描述":"faint, small, round, gradually a little brighter middle","简略描述":"F, S, R, glbM"},{"ID":"1195","标识":"NGC1195","M标识":"NGC1195","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h3m32.7s","赤经D(J2000)":"3.059083333333333","赤纬(J2000)":"-12h2m21s","赤纬D(J2000)":"-12.039166666666667","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, extremely small, 12th magnitude star to southeast, h 2505 to southeast","简略描述":"eF, eS, * 12 sf, h 2505 sf"},{"ID":"1196","标识":"NGC1196","M标识":"NGC1196","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h3m35.2s","赤经D(J2000)":"3.0597777777777777","赤纬(J2000)":"-12h4m33s","赤纬D(J2000)":"-12.075833333333334","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"very faint, southwestern of 2","简略描述":"vF, sp of 2"},{"ID":"1197","标识":"NGC1197","M标识":"NGC1197","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h6m14.1s","赤经D(J2000)":"3.1039166666666667","赤纬(J2000)":"+44h3m40s","赤纬D(J2000)":"44.06111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty small, considerably extended, several very faint stars near","简略描述":"pF, pS, cE, sev vF st nr"},{"ID":"1198","标识":"NGC1198","M标识":"NGC1198","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h6m13.3s","赤经D(J2000)":"3.1036944444444448","赤纬(J2000)":"+41h50m56s","赤纬D(J2000)":"41.848888888888894","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"120","详细描述":"nebulous 11th magnitude star","简略描述":"Neb * 11"},{"ID":"1199","标识":"NGC1199","M标识":"NGC1199","拓展名":"","组件":"","Class":"II 503","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h3m38.4s","赤经D(J2000)":"3.0606666666666666","赤纬(J2000)":"-15h36m48s","赤纬D(J2000)":"-15.613333333333333","可见光星等V":"11.4","摄影(蓝光)星等B":"12.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.3","短轴(分)":"1.7","方位角":"63","详细描述":"considerably bright, pretty small, irregularly round, suddenly much brighter middle","简略描述":"cB, pS, iR, smbM"},{"ID":"1200","标识":"NGC1200","M标识":"NGC1200","拓展名":"","组件":"","Class":"II 475","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h3m54.5s","赤经D(J2000)":"3.065138888888889","赤纬(J2000)":"-11h59m29s","赤纬D(J2000)":"-11.991388888888888","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.9","短轴(分)":"2.3","方位角":"93","详细描述":"pretty faint, considerably large, irregularly round, brighter middle, northeastern of 2","简略描述":"pF, cL, iR, bM, nf of 2"},{"ID":"1201","标识":"NGC1201","M标识":"NGC1201","拓展名":"","组件":"","Class":"I 109","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/S0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h4m7.9s","赤经D(J2000)":"3.0688611111111115","赤纬(J2000)":"-26h4m8s","赤纬D(J2000)":"-26.06888888888889","可见光星等V":"10.7","摄影(蓝光)星等B":"11.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.6","短轴(分)":"2.1","方位角":"7","详细描述":"considerably bright, pretty small, very little extended, mottled but not resolved, small (faint) star near","简略描述":"cB, pS, vlE, r, S * nr"},{"ID":"1202","标识":"NGC1202","M标识":"NGC1202","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h5m2.4s","赤经D(J2000)":"3.084","赤纬(J2000)":"-6h29m31s","赤纬D(J2000)":"-6.491944444444444","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"94","详细描述":"extremely faint, small, two stars 4 arcmin northeast","简略描述":"eF, S, 2 st 4' nf"},{"ID":"1203","标识":"NGC1203","M标识":"NGC1203","拓展名":"A","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h5m14s","赤经D(J2000)":"3.0872222222222225","赤纬(J2000)":"-14h22m51s","赤纬D(J2000)":"-14.380833333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"","详细描述":"very faint, small, round, brighter middle and nucleus (nebulous?)","简略描述":"vF, S, R, bMN (neb ?)"},{"ID":"1204","标识":"NGC1204","M标识":"NGC1204","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h4m39.9s","赤经D(J2000)":"3.07775","赤纬(J2000)":"-12h20m30s","赤纬D(J2000)":"-12.341666666666667","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"69","详细描述":"extremely faint, extended 45°, mottled but not resolved, several stars involved","简略描述":"eF, E 45°, r, sev st inv"},{"ID":"1205","标识":"NGC1205","M标识":"NGC1205","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h3m28.4s","赤经D(J2000)":"3.057888888888889","赤纬(J2000)":"-9h40m14s","赤纬D(J2000)":"-9.670555555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"15","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"115","详细描述":"extremely faint, pretty small, extended 25°, 9.5 magnitude star 3 arcmin southwest","简略描述":"eF, pS, E 25°, * 9.5 3' sp"},{"ID":"1206","标识":"NGC1206","M标识":"NGC1206","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h6m9.7s","赤经D(J2000)":"3.1026944444444444","赤纬(J2000)":"-8h49m58s","赤纬D(J2000)":"-8.832777777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, very small, very little extended 0°","简略描述":"eF, vS, vlE 0°"},{"ID":"1207","标识":"NGC1207","M标识":"NGC1207","拓展名":"","组件":"","Class":"III 578","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h8m15.4s","赤经D(J2000)":"3.137611111111111","赤纬(J2000)":"+38h22m56s","赤纬D(J2000)":"38.382222222222225","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.3","短轴(分)":"1.6","方位角":"123","详细描述":"considerably faint, very small, round, pretty suddenly brighter in west-northwestern end","简略描述":"cF, vS, R, psb in npp end"},{"ID":"1208","标识":"NGC1208","M标识":"NGC1208","拓展名":"","组件":"","Class":"II 285","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h6m11.7s","赤经D(J2000)":"3.10325","赤纬(J2000)":"-9h32m27s","赤纬D(J2000)":"-9.540833333333333","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"80","详细描述":"pretty bright, small, a little extended 80°±, a little brighter middle","简略描述":"pB, S, lE 80° ±, lbM"},{"ID":"1209","标识":"NGC1209","M标识":"NGC1209","拓展名":"","组件":"","Class":"II 504","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h6m2.9s","赤经D(J2000)":"3.1008055555555556","赤纬(J2000)":"-15h36m40s","赤纬D(J2000)":"-15.61111111111111","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.2","短轴(分)":"1.1","方位角":"85","详细描述":"bright, small, considerably extended, pretty suddenly brighter middle","简略描述":"B, S, cE, psbM"},{"ID":"1210","标识":"NGC1210","M标识":"NGC1210","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h6m45.3s","赤经D(J2000)":"3.1125833333333333","赤纬(J2000)":"-25h42m59s","赤纬D(J2000)":"-25.71638888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1","短轴(分)":"0.9","方位角":"156","详细描述":"extremely faint, very small, irregularly round, gradually brighter middle and nucleus","简略描述":"eF, vS, iR, gbMN"},{"ID":"1211","标识":"NGC1211","M标识":"NGC1211","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"3h6m52.4s","赤经D(J2000)":"3.1145555555555555","赤纬(J2000)":"-0h47m39s","赤纬D(J2000)":"-0.7941666666666667","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.1","短轴(分)":"1.9","方位角":"30","详细描述":"pretty bright, very small, round, much brighter middle and nucleus equivalent to a 9th or 10th magnitude star","简略描述":"pB, vS, R, mbMN = * 9·10"},{"ID":"1212","标识":"NGC1212","M标识":"NGC1212","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h9m42.3s","赤经D(J2000)":"3.16175","赤纬(J2000)":"+40h53m35s","赤纬D(J2000)":"40.893055555555556","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.5","方位角":"22","详细描述":"extremely faint, small, round, Algol near","简略描述":"eF, S, R, Algol nr"},{"ID":"1213","标识":"NGC1213","M标识":"NGC1213","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h9m17.3s","赤经D(J2000)":"3.1548055555555554","赤纬(J2000)":"+38h38m57s","赤纬D(J2000)":"38.649166666666666","可见光星等V":"14.4","摄影(蓝光)星等B":"15","B-V":"0.6","表面亮度(mag\/arcmin2)":"15.3","长轴(分)":"1.8","短轴(分)":"1.4","方位角":"54","详细描述":"extremely faint, a little extended, star close to north, difficult","简略描述":"eF, lE, * close n, diffic"},{"ID":"1214","标识":"NGC1214","M标识":"NGC1214","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h6m56s","赤经D(J2000)":"3.115555555555556","赤纬(J2000)":"-9h32m39s","赤纬D(J2000)":"-9.544166666666667","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"40","详细描述":"faint, pretty small, irregularly round, h 285 to west","简略描述":"F, pS, iR, h 285 p"},{"ID":"1215","标识":"NGC1215","M标识":"NGC1215","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h7m9.6s","赤经D(J2000)":"3.1193333333333335","赤纬(J2000)":"-9h35m34s","赤纬D(J2000)":"-9.592777777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"65","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"1216","标识":"NGC1216","M标识":"NGC1216","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h7m18.5s","赤经D(J2000)":"3.1218055555555555","赤纬(J2000)":"-9h36m45s","赤纬D(J2000)":"-9.612499999999999","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"65","详细描述":"extremely faint, small, stellar, 3rd of 3","简略描述":"eF, S, stellar, 3rd of 3"},{"ID":"1217","标识":"NGC1217","M标识":"NGC1217","拓展名":"","组件":"1","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h6m6s","赤经D(J2000)":"3.1016666666666666","赤纬(J2000)":"-39h2m9s","赤纬D(J2000)":"-39.03583333333333","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"50","详细描述":"pretty faint, small, round, pretty suddenly brighter middle","简略描述":"pF, S, R, psbM"},{"ID":"1218","标识":"NGC1218","M标识":"NGC1218","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"3h8m26.1s","赤经D(J2000)":"3.1405833333333333","赤纬(J2000)":"+4h6m41s","赤纬D(J2000)":"4.1113888888888885","可见光星等V":"12.6","摄影(蓝光)星等B":"13.8","B-V":"1.2","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"1","方位角":"155","详细描述":"pretty faint, pretty small, round","简略描述":"pF, pS, R"},{"ID":"1219","标识":"NGC1219","M标识":"NGC1219","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"3h8m28.1s","赤经D(J2000)":"3.141138888888889","赤纬(J2000)":"+2h6m29s","赤纬D(J2000)":"2.1080555555555556","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.8","方位角":"30","详细描述":"faint, pretty large, round","简略描述":"F, pL, R"},{"ID":"1220","标识":"NGC1220","M标识":"NGC1220","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h11m40.6s","赤经D(J2000)":"3.194611111111111","赤纬(J2000)":"+53h20m53s","赤纬D(J2000)":"53.34805555555556","可见光星等V":"11.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"cluster, very small, stars very faint","简略描述":"Cl, vS, st vF"},{"ID":"1221","标识":"NGC1221","M标识":"NGC1221","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h8m15.6s","赤经D(J2000)":"3.1376666666666666","赤纬(J2000)":"-4h15m35s","赤纬D(J2000)":"-4.259722222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"164","详细描述":"extremely faint, very small, extended 170°, star to south","简略描述":"eF, vS, E 170°, * s"},{"ID":"1222","标识":"NGC1222","M标识":"NGC1222","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h8m56.9s","赤经D(J2000)":"3.149138888888889","赤纬(J2000)":"-2h57m20s","赤纬D(J2000)":"-2.9555555555555557","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"169","详细描述":"very faint star in pretty faint, small, round nebula","简略描述":"vF * in pF, S, R neb"},{"ID":"1223","标识":"NGC1223","M标识":"NGC1223","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"cD","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h8m19.9s","赤经D(J2000)":"3.138861111111111","赤纬(J2000)":"-4h8m19s","赤纬D(J2000)":"-4.1386111111111115","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"1","方位角":"4","详细描述":"extremely faint, small, round, gradually brighter middle and nucleus, preceding (western) of 2","简略描述":"eF, S, R, gbMN, p of 2"},{"ID":"1224","标识":"NGC1224","M标识":"NGC1224","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h11m13.5s","赤经D(J2000)":"3.1870833333333333","赤纬(J2000)":"+41h21m48s","赤纬D(J2000)":"41.36333333333334","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"0.8","方位角":"0","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"1225","标识":"NGC1225","M标识":"NGC1225","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h8m47.3s","赤经D(J2000)":"3.146472222222222","赤纬(J2000)":"-4h6m6s","赤纬D(J2000)":"-4.101666666666667","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.6","方位角":"142","详细描述":"extremely faint, very small, round, following (eastern) of 2","简略描述":"eF, vS, R, f of 2"},{"ID":"1226","标识":"NGC1226","M标识":"NGC1226","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E2","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h11m5.4s","赤经D(J2000)":"3.184833333333333","赤纬(J2000)":"+35h23m11s","赤纬D(J2000)":"35.38638888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"95","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"1227","标识":"NGC1227","M标识":"NGC1227","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h11m7.8s","赤经D(J2000)":"3.1854999999999998","赤纬(J2000)":"+35h19m31s","赤纬D(J2000)":"35.32527777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1","短轴(分)":"0.9","方位角":"63","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"1228","标识":"NGC1228","M标识":"NGC1228","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h8m11.7s","赤经D(J2000)":"3.1365833333333333","赤纬(J2000)":"-22h55m21s","赤纬D(J2000)":"-22.9225","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"77","详细描述":"extremely faint, extremely small, round, gradually brighter middle, preceding (western) of 2","简略描述":"eF, eS, R, gbM, p of 2"},{"ID":"1229","标识":"NGC1229","M标识":"NGC1229","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h8m10.8s","赤经D(J2000)":"3.1363333333333334","赤纬(J2000)":"-22h57m38s","赤纬D(J2000)":"-22.960555555555555","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"74","详细描述":"extremely faint, extremely small, round, gradually brighter middle, preceding (western) of 2","简略描述":"eF, eS, R, gbM, f of 2"},{"ID":"1230","标识":"NGC1230","M标识":"NGC1230","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0\/P","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h8m16.3s","赤经D(J2000)":"3.137861111111111","赤纬(J2000)":"-22h59m2s","赤纬D(J2000)":"-22.983888888888888","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"107","详细描述":"perhaps a faint star","简略描述":"? F *"},{"ID":"1231","标识":"NGC1231","M标识":"NGC1231","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h6m29.3s","赤经D(J2000)":"3.108138888888889","赤纬(J2000)":"-15h34m9s","赤纬D(J2000)":"-15.569166666666666","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, pretty large, extended (perhaps nebulous)","简略描述":"eF, pL, E (? neb)"},{"ID":"1232","标识":"NGC1232","M标识":"NGC1232","拓展名":"","组件":"","Class":"II 258","业余排名":"3","中文名":"上帝之眼星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h9m45.3s","赤经D(J2000)":"3.162583333333333","赤纬(J2000)":"-20h34m45s","赤纬D(J2000)":"-20.579166666666666","可见光星等V":"9.9","摄影(蓝光)星等B":"10.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"7.4","短轴(分)":"6.5","方位角":"108","详细描述":"pretty bright, considerably large, round, gradually brighter middle, mottled but not resolved","简略描述":"pB, cL, R, gbM, r"},{"ID":"1233","标识":"NGC1233","M标识":"NGC1233","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h12m33.1s","赤经D(J2000)":"3.2091944444444445","赤纬(J2000)":"+39h19m9s","赤纬D(J2000)":"39.31916666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"27","详细描述":"faint, very small, round, diffuse","简略描述":"F, vS, R, diff"},{"ID":"1234","标识":"NGC1234","M标识":"NGC1234","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h9m39s","赤经D(J2000)":"3.160833333333333","赤纬(J2000)":"-7h50m45s","赤纬D(J2000)":"-7.845833333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"1.8","短轴(分)":"0.9","方位角":"141","详细描述":"extremely faint, small, irregularly round, star or stars involved","简略描述":"eF, S, iR, * or st inv"},{"ID":"1235","标识":"NGC1235","M标识":"NGC1235","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h12m33.1s","赤经D(J2000)":"3.2091944444444445","赤纬(J2000)":"+39h19m9s","赤纬D(J2000)":"39.31916666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"27","详细描述":"faint, very small, round, diffuse","简略描述":"vF, S, lE"},{"ID":"1236","标识":"NGC1236","M标识":"NGC1236","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"3h11m27.9s","赤经D(J2000)":"3.1910833333333333","赤纬(J2000)":"+10h48m32s","赤纬D(J2000)":"10.80888888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"27","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"1237","标识":"NGC1237","M标识":"NGC1237","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h10m8.9s","赤经D(J2000)":"3.169138888888889","赤纬(J2000)":"-8h41m31s","赤纬D(J2000)":"-8.691944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, extended 170°, perhaps a double star","简略描述":"vF, S, E 170°, ? D *"},{"ID":"1238","标识":"NGC1238","M标识":"NGC1238","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h10m52.6s","赤经D(J2000)":"3.1812777777777774","赤纬(J2000)":"-10h44m51s","赤纬D(J2000)":"-10.747499999999999","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"110","详细描述":"very faint, pretty small, round, II 900 to northeast","简略描述":"vF, pS, R, II 900 nf"},{"ID":"1239","标识":"NGC1239","M标识":"NGC1239","拓展名":"","组件":"","Class":"III 262","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h10m53.7s","赤经D(J2000)":"3.181583333333333","赤纬(J2000)":"-2h33m9s","赤纬D(J2000)":"-2.5524999999999998","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"44","详细描述":"extremely faint, stellar (RA +30 seconds of time?)","简略描述":"eF, stellar (? RA + 30s)"},{"ID":"1240","标识":"NGC1240","M标识":"NGC1240","拓展名":"","组件":"","Class":"III 164","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"3h13m26.6s","赤经D(J2000)":"3.2240555555555557","赤纬(J2000)":"+30h30m27s","赤纬D(J2000)":"30.5075","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, perhaps very small (faint) star?","简略描述":"eF, vS, ? vS st"},{"ID":"1241","标识":"NGC1241","M标识":"NGC1241","拓展名":"","组件":"","Class":"II 286","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h11m14.6s","赤经D(J2000)":"3.1873888888888886","赤纬(J2000)":"-8h55m20s","赤纬D(J2000)":"-8.922222222222222","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.4","短轴(分)":"1.6","方位角":"145","详细描述":"faint, pretty large, round, very gradually a little brighter middle, 9th magnitude star to north","简略描述":"F, pL, R, vglbM, * 9 n"},{"ID":"1242","标识":"NGC1242","M标识":"NGC1242","拓展名":"","组件":"","Class":"III 591","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h11m19.3s","赤经D(J2000)":"3.1886944444444443","赤纬(J2000)":"-8h54m11s","赤纬D(J2000)":"-8.903055555555556","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"130","详细描述":"faint, pretty large, round, very gradually a little brighter middle, 9th magnitude star to north","简略描述":"vF, S"},{"ID":"1243","标识":"NGC1243","M标识":"NGC1243","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h11m25.4s","赤经D(J2000)":"3.1903888888888887","赤纬(J2000)":"-8h56m43s","赤纬D(J2000)":"-8.945277777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"1244","标识":"NGC1244","M标识":"NGC1244","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h6m31s","赤经D(J2000)":"3.108611111111111","赤纬(J2000)":"-66h46m33s","赤纬D(J2000)":"-66.77583333333334","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"2","详细描述":"faint, small, pretty much extended, gradually brighter middle","简略描述":"F, S, pmE, gbM"},{"ID":"1245","标识":"NGC1245","M标识":"NGC1245","拓展名":"","组件":"","Class":"VI 25","业余排名":"6","中文名":"帕特里克海星星团","类型":"OCL","含重复类型":"OCL","形态":"III1r","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h14m41.4s","赤经D(J2000)":"3.2448333333333332","赤纬(J2000)":"+47h14m19s","赤纬D(J2000)":"47.23861111111111","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"cluster, pretty large, rich, compressed, irregularly round, stars from 12th to 15th magnitude","简略描述":"Cl, pL, Ri, C, iR, st 12…15"},{"ID":"1246","标识":"NGC1246","M标识":"NGC1246","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h7m2.3s","赤经D(J2000)":"3.1173055555555558","赤纬(J2000)":"-66h56m18s","赤纬D(J2000)":"-66.93833333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"31","详细描述":"pretty faint, small, round, gradually a little brighter middle","简略描述":"pF, S, R, glbM"},{"ID":"1247","标识":"NGC1247","M标识":"NGC1247","拓展名":"","组件":"","Class":"II 900","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h12m14.3s","赤经D(J2000)":"3.203972222222222","赤纬(J2000)":"-10h28m52s","赤纬D(J2000)":"-10.481111111111112","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.4","短轴(分)":"0.5","方位角":"69","详细描述":"faint, pretty large, extended 80°","简略描述":"F, pL, E 80°"},{"ID":"1248","标识":"NGC1248","M标识":"NGC1248","拓展名":"","组件":"","Class":"III 443","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h12m48.4s","赤经D(J2000)":"3.2134444444444448","赤纬(J2000)":"-5h13m29s","赤纬D(J2000)":"-5.224722222222223","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"1","方位角":"90","详细描述":"considerably faint, small, a little extended, brighter middle, 9th magnitude star 5 arcmin to north","简略描述":"cF, S, lE, bM, * 9 n 5'"},{"ID":"1249","标识":"NGC1249","M标识":"NGC1249","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h10m1.1s","赤经D(J2000)":"3.166972222222222","赤纬(J2000)":"-53h20m10s","赤纬D(J2000)":"-53.336111111111116","可见光星等V":"11.8","摄影(蓝光)星等B":"12.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"4.7","短轴(分)":"2.5","方位角":"86","详细描述":"bright, large, very much extended 80°, very gradually brighter middle","简略描述":"B, L, vmE 80°, vgbM"},{"ID":"1250","标识":"NGC1250","M标识":"NGC1250","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h15m21s","赤经D(J2000)":"3.2558333333333334","赤纬(J2000)":"+41h21m20s","赤纬D(J2000)":"41.355555555555554","可见光星等V":"12.9","摄影(蓝光)星等B":"14","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.1","短轴(分)":"0.6","方位角":"159","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"1251","标识":"NGC1251","M标识":"NGC1251","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"3h14m9.1s","赤经D(J2000)":"3.2358611111111113","赤纬(J2000)":"+1h27m25s","赤纬D(J2000)":"1.4569444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint","简略描述":"F"},{"ID":"1252","标识":"NGC1252","M标识":"NGC1252","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h10m44s","赤经D(J2000)":"3.178888888888889","赤纬(J2000)":"-57h45m30s","赤纬D(J2000)":"-57.75833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"cluster of 18 or 20 stars","简略描述":"Cl of 18 or 20 st"},{"ID":"1253","标识":"NGC1253","M标识":"NGC1253","拓展名":"","组件":"","Class":"IV 17","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h14m9.2s","赤经D(J2000)":"3.235888888888889","赤纬(J2000)":"-2h49m23s","赤纬D(J2000)":"-2.8230555555555554","可见光星等V":"11.7","摄影(蓝光)星等B":"12.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"5.3","短轴(分)":"2.3","方位角":"81","详细描述":"a 12th magnitude star with nebulosity to east, 90 arcsec long","简略描述":"* 12 with neb f, 90\" l"},{"ID":"1254","标识":"NGC1254","M标识":"NGC1254","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"3h14m23.8s","赤经D(J2000)":"3.2399444444444443","赤纬(J2000)":"+2h40m40s","赤纬D(J2000)":"2.6777777777777776","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"42","详细描述":"faint, very small, stellar","简略描述":"F, vS, stellar"},{"ID":"1255","标识":"NGC1255","M标识":"NGC1255","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h13m32s","赤经D(J2000)":"3.2255555555555557","赤纬(J2000)":"-25h43m28s","赤纬D(J2000)":"-25.724444444444444","可见光星等V":"10.9","摄影(蓝光)星等B":"11.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4.2","短轴(分)":"2.7","方位角":"123","详细描述":"faint, pretty large, faint star close to west","简略描述":"F, pL, F * close p"},{"ID":"1256","标识":"NGC1256","M标识":"NGC1256","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h13m58.1s","赤经D(J2000)":"3.2328055555555557","赤纬(J2000)":"-21h59m11s","赤纬D(J2000)":"-21.98638888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"108","详细描述":"faint, small, extended, almost stellar, 8th magnitude star to northwest","简略描述":"F, S, E, alm stell, * 8 np"},{"ID":"1257","标识":"NGC1257","M标识":"NGC1257","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h16m59.5s","赤经D(J2000)":"3.2831944444444443","赤纬(J2000)":"+41h31m46s","赤纬D(J2000)":"41.529444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"stellar nebula","简略描述":"Stellar neb"},{"ID":"1258","标识":"NGC1258","M标识":"NGC1258","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h14m5.4s","赤经D(J2000)":"3.2348333333333334","赤纬(J2000)":"-21h46m28s","赤纬D(J2000)":"-21.774444444444445","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"17","详细描述":"extremely faint, pretty small, very little extended, 12 arcmin north of h 2516","简略描述":"eF, pS, vlE, 12' n of h 2516"},{"ID":"1259","标识":"NGC1259","M标识":"NGC1259","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h17m17.3s","赤经D(J2000)":"3.2881388888888887","赤纬(J2000)":"+41h23m8s","赤纬D(J2000)":"41.385555555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, small, round, very little brighter middle","简略描述":"vF, S, R, vlbM"},{"ID":"1260","标识":"NGC1260","M标识":"NGC1260","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h17m27.2s","赤经D(J2000)":"3.290888888888889","赤纬(J2000)":"+41h24m19s","赤纬D(J2000)":"41.405277777777776","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"86","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"1261","标识":"NGC1261","M标识":"NGC1261","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"II","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h12m15.3s","赤经D(J2000)":"3.20425","赤纬(J2000)":"-55h12m59s","赤纬D(J2000)":"-55.21638888888889","可见光星等V":"8.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6.8","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, large, round, partially resolved (some stars seen)","简略描述":"globular, B, L, R, rr"},{"ID":"1262","标识":"NGC1262","M标识":"NGC1262","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h15m33.6s","赤经D(J2000)":"3.259333333333333","赤纬(J2000)":"-15h52m48s","赤纬D(J2000)":"-15.88","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"135","详细描述":"extremely faint, pretty small, irregularly round, suddenly brighter middle and nucleus","简略描述":"eF, pS, iR, sbMN"},{"ID":"1263","标识":"NGC1263","M标识":"NGC1263","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h15m39.5s","赤经D(J2000)":"3.260972222222222","赤纬(J2000)":"-15h5m54s","赤纬D(J2000)":"-15.098333333333334","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"0","详细描述":"very faint, small, a little extended, suddenly brighter middle","简略描述":"vF, S, lE, sbM"},{"ID":"1264","标识":"NGC1264","M标识":"NGC1264","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h17m59.5s","赤经D(J2000)":"3.299861111111111","赤纬(J2000)":"+41h31m13s","赤纬D(J2000)":"41.52027777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.5","方位角":"30","详细描述":"very faint, small, very little brighter middle","简略描述":"vF, S, vlbM"},{"ID":"1265","标识":"NGC1265","M标识":"NGC1265","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h18m8.4s","赤经D(J2000)":"3.3023333333333333","赤纬(J2000)":"+41h45m16s","赤纬D(J2000)":"41.754444444444445","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.5","方位角":"125","详细描述":"very faint, very small, much brighter middle","简略描述":"vF, vS, mbM"},{"ID":"1266","标识":"NGC1266","M标识":"NGC1266","拓展名":"","组件":"","Class":"III 194","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h16m0.7s","赤经D(J2000)":"3.266861111111111","赤纬(J2000)":"-2h25m36s","赤纬D(J2000)":"-2.4266666666666663","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1","方位角":"115","详细描述":"very faint, pretty small, 13th magnitude star 2 arcmin to southwest","简略描述":"vF, pS, * 13 sp 2'"},{"ID":"1267","标识":"NGC1267","M标识":"NGC1267","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h18m44.8s","赤经D(J2000)":"3.312444444444444","赤纬(J2000)":"+41h28m3s","赤纬D(J2000)":"41.4675","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"30","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"1268","标识":"NGC1268","M标识":"NGC1268","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h18m45.2s","赤经D(J2000)":"3.3125555555555555","赤纬(J2000)":"+41h29m21s","赤纬D(J2000)":"41.48916666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"120","详细描述":"extremely faint, small, a little extended, cometic","简略描述":"eF, S, lE, com"},{"ID":"1269","标识":"NGC1269","M标识":"NGC1269","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"雪领星系","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h17m18.3s","赤经D(J2000)":"3.2884166666666665","赤纬(J2000)":"-41h6m26s","赤纬D(J2000)":"-41.10722222222223","可见光星等V":"8.5","摄影(蓝光)星等B":"9.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"11","短轴(分)":"9.5","方位角":"72","详细描述":"very bright, round, gradually much brighter middle","简略描述":"vB, R, gmbM"},{"ID":"1270","标识":"NGC1270","M标识":"NGC1270","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h18m58.1s","赤经D(J2000)":"3.3161388888888887","赤纬(J2000)":"+41h28m13s","赤纬D(J2000)":"41.47027777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"14.3","B-V":"1.2","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"15","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"1271","标识":"NGC1271","M标识":"NGC1271","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0?","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h19m11.2s","赤经D(J2000)":"3.3197777777777775","赤纬(J2000)":"+41h21m13s","赤纬D(J2000)":"41.353611111111114","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"127","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"1272","标识":"NGC1272","M标识":"NGC1272","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h19m21.3s","赤经D(J2000)":"3.322583333333333","赤纬(J2000)":"+41h29m26s","赤纬D(J2000)":"41.49055555555556","可见光星等V":"11.8","摄影(蓝光)星等B":"12.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"2","方位角":"0","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"1273","标识":"NGC1273","M标识":"NGC1273","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h19m26.8s","赤经D(J2000)":"3.324111111111111","赤纬(J2000)":"+41h32m24s","赤纬D(J2000)":"41.54","可见光星等V":"13.2","摄影(蓝光)星等B":"14.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"144","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"1274","标识":"NGC1274","M标识":"NGC1274","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h19m40.6s","赤经D(J2000)":"3.3279444444444444","赤纬(J2000)":"+41h32m58s","赤纬D(J2000)":"41.54944444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"38","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"1275","标识":"NGC1275","M标识":"NGC1275","拓展名":"","组件":"","Class":"II 603","业余排名":"2","中文名":"英仙座A","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h19m48.1s","赤经D(J2000)":"3.3300277777777776","赤纬(J2000)":"+41h30m41s","赤纬D(J2000)":"41.51138888888889","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.3","短轴(分)":"1.6","方位角":"110","详细描述":"faint, small","简略描述":"F, S"},{"ID":"1276","标识":"NGC1276","M标识":"NGC1276","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h19m51.1s","赤经D(J2000)":"3.330861111111111","赤纬(J2000)":"+41h38m33s","赤纬D(J2000)":"41.6425","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"1277","标识":"NGC1277","M标识":"NGC1277","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h19m51.4s","赤经D(J2000)":"3.330944444444444","赤纬(J2000)":"+41h34m27s","赤纬D(J2000)":"41.57416666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"92","详细描述":"very faint, very small, northwest of II 603","简略描述":"vF, vS, np II 603"},{"ID":"1278","标识":"NGC1278","M标识":"NGC1278","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h19m54.1s","赤经D(J2000)":"3.331694444444444","赤纬(J2000)":"+41h33m49s","赤纬D(J2000)":"41.56361111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13.6","B-V":"1.2","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"102","详细描述":"pretty bright, pretty small, round, brighter middle","简略描述":"pB, pS, R, bM"},{"ID":"1279","标识":"NGC1279","M标识":"NGC1279","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h19m59.1s","赤经D(J2000)":"3.333083333333333","赤纬(J2000)":"+41h28m47s","赤纬D(J2000)":"41.47972222222222","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"0","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"1280","标识":"NGC1280","M标识":"NGC1280","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"3h17m57s","赤经D(J2000)":"3.2991666666666664","赤纬(J2000)":"-0h10m8s","赤纬D(J2000)":"-0.16888888888888887","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"55","详细描述":"very faint, very small, round, gradually brighter middle, mottled but not resolved","简略描述":"vF, vS, R, gbM, r"},{"ID":"1281","标识":"NGC1281","M标识":"NGC1281","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h20m6.3s","赤经D(J2000)":"3.3350833333333334","赤纬(J2000)":"+41h37m47s","赤纬D(J2000)":"41.62972222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14.5","B-V":"1.2","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"66","详细描述":"very faint, small, 11th magnitude star one arcmin to west","简略描述":"vF, S, * 11 p 1'"},{"ID":"1282","标识":"NGC1282","M标识":"NGC1282","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h20m12s","赤经D(J2000)":"3.336666666666667","赤纬(J2000)":"+41h22m1s","赤纬D(J2000)":"41.36694444444444","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"25","详细描述":"very faint, small, a little brighter middle and nucleus","简略描述":"vF, S, lbMN"},{"ID":"1283","标识":"NGC1283","M标识":"NGC1283","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h20m15.5s","赤经D(J2000)":"3.337638888888889","赤纬(J2000)":"+41h23m55s","赤纬D(J2000)":"41.39861111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"73","详细描述":"very faint, small, very little brighter middle","简略描述":"vF, S, vlbM"},{"ID":"1284","标识":"NGC1284","M标识":"NGC1284","拓展名":"","组件":"","Class":"III 956","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h17m45.4s","赤经D(J2000)":"3.2959444444444443","赤纬(J2000)":"-10h17m19s","赤纬D(J2000)":"-10.288611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"30","详细描述":"extremely faint, very small, 2 stars to south","简略描述":"eF, vS, 2 st s"},{"ID":"1285","标识":"NGC1285","M标识":"NGC1285","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h17m53.4s","赤经D(J2000)":"3.2981666666666665","赤纬(J2000)":"-7h17m51s","赤纬D(J2000)":"-7.2975","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"34","详细描述":"pretty faint, small","简略描述":"pF, S"},{"ID":"1286","标识":"NGC1286","M标识":"NGC1286","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h17m48.5s","赤经D(J2000)":"3.2968055555555553","赤纬(J2000)":"-7h36m59s","赤纬D(J2000)":"-7.616388888888888","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"150","详细描述":"extremely faint, extremely small, round, 4 bright stars to south","简略描述":"eF, eS, R, 4 B st s"},{"ID":"1287","标识":"NGC1287","M标识":"NGC1287","拓展名":"","组件":"","Class":"III 195","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h18m33.3s","赤经D(J2000)":"3.30925","赤纬(J2000)":"-2h43m50s","赤纬D(J2000)":"-2.7305555555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"130","详细描述":"very faint, very small, irregularly round","简略描述":"vF, vS, iR"},{"ID":"1288","标识":"NGC1288","M标识":"NGC1288","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h17m13.2s","赤经D(J2000)":"3.287","赤纬(J2000)":"-32h34m35s","赤纬D(J2000)":"-32.57638888888889","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.3","短轴(分)":"1.9","方位角":"166","详细描述":"very faint, large, round, very gradually a little brighter middle","简略描述":"vF, L, R, vglbM"},{"ID":"1289","标识":"NGC1289","M标识":"NGC1289","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h18m49.8s","赤经D(J2000)":"3.313833333333333","赤纬(J2000)":"-1h58m23s","赤纬D(J2000)":"-1.9730555555555558","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"100","详细描述":"very faint, small, round, 4 stars following (to the east)","简略描述":"vF, S, R, 4 st f"},{"ID":"1290","标识":"NGC1290","M标识":"NGC1290","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h19m25.1s","赤经D(J2000)":"3.3236388888888886","赤纬(J2000)":"-13h59m21s","赤纬D(J2000)":"-13.989166666666666","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"85","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"1291","标识":"NGC1291","M标识":"NGC1291","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h17m18.3s","赤经D(J2000)":"3.2884166666666665","赤纬(J2000)":"-41h6m26s","赤纬D(J2000)":"-41.10722222222223","可见光星等V":"8.5","摄影(蓝光)星等B":"9.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"11","短轴(分)":"9.5","方位角":"72","详细描述":"very bright, round, gradually much brighter middle","简略描述":"globular, vB, pL, R, mbM, er"},{"ID":"1292","标识":"NGC1292","M标识":"NGC1292","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h18m14.8s","赤经D(J2000)":"3.3041111111111108","赤纬(J2000)":"-27h36m38s","赤纬D(J2000)":"-27.610555555555557","可见光星等V":"12.2","摄影(蓝光)星等B":"12.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3","短轴(分)":"1.4","方位角":"7","详细描述":"faint, pretty small, a little extended, very gradually brighter middle, small (faint) double star near","简略描述":"F, pS, lE, vgbM, S D * nr"},{"ID":"1293","标识":"NGC1293","M标识":"NGC1293","拓展名":"","组件":"","Class":"III 574","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h21m36.4s","赤经D(J2000)":"3.3601111111111113","赤纬(J2000)":"+41h23m36s","赤纬D(J2000)":"41.39333333333333","可见光星等V":"13.4","摄影(蓝光)星等B":"14.5","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, round, brighter middle, northwestern of 2","简略描述":"vF, R, bM, np of 2"},{"ID":"1294","标识":"NGC1294","M标识":"NGC1294","拓展名":"","组件":"","Class":"III 575","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h21m40s","赤经D(J2000)":"3.361111111111111","赤纬(J2000)":"+41h21m38s","赤纬D(J2000)":"41.36055555555556","可见光星等V":"13.2","摄影(蓝光)星等B":"14.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"0","详细描述":"very faint, round, brighter middle, southeastern of 2","简略描述":"vF, R, bM, sf of 2"},{"ID":"1295","标识":"NGC1295","M标识":"NGC1295","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h20m3.2s","赤经D(J2000)":"3.3342222222222224","赤纬(J2000)":"-13h59m52s","赤纬D(J2000)":"-13.997777777777777","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"175","详细描述":"extremely faint, very small, gradually brighter middle and nucleus, 10th magnitude star 3 arcmin following (to the east)","简略描述":"eF, vS, gbMN, * 10 f 3'"},{"ID":"1296","标识":"NGC1296","M标识":"NGC1296","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h18m49.7s","赤经D(J2000)":"3.3138055555555552","赤纬(J2000)":"-13h3m44s","赤纬D(J2000)":"-13.062222222222223","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"0","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"1297","标识":"NGC1297","M标识":"NGC1297","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h19m14s","赤经D(J2000)":"3.3205555555555555","赤纬(J2000)":"-19h6m0s","赤纬D(J2000)":"-19.1","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.3","短轴(分)":"1.9","方位角":"3","详细描述":"faint, pretty small","简略描述":"F, pS"},{"ID":"1298","标识":"NGC1298","M标识":"NGC1298","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h20m13s","赤经D(J2000)":"3.3369444444444447","赤纬(J2000)":"-2h6m49s","赤纬D(J2000)":"-2.113611111111111","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"70","详细描述":"faint, pretty small, round, 13th magnitude star to southwest","简略描述":"F, pS, R, * 13 sp"},{"ID":"1299","标识":"NGC1299","M标识":"NGC1299","拓展名":"","组件":"","Class":"II 287","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h20m9.6s","赤经D(J2000)":"3.3360000000000003","赤纬(J2000)":"-6h15m43s","赤纬D(J2000)":"-6.2619444444444445","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"45","详细描述":"very faint, small, very little extended, gradually brighter middle, extremely mottled but not resolved","简略描述":"vF, S, vlE, gbM, er"},{"ID":"1300","标识":"NGC1300","M标识":"NGC1300","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h19m40.7s","赤经D(J2000)":"3.327972222222222","赤纬(J2000)":"-19h24m41s","赤纬D(J2000)":"-19.411388888888887","可见光星等V":"10.4","摄影(蓝光)星等B":"11.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"6.2","短轴(分)":"4.1","方位角":"106","详细描述":"considerably bright, very large, very much extended, pretty suddenly very much brighter middle","简略描述":"cB, vL, vmE, psvmbM"},{"ID":"1301","标识":"NGC1301","M标识":"NGC1301","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h20m35.4s","赤经D(J2000)":"3.343166666666667","赤纬(J2000)":"-18h42m57s","赤纬D(J2000)":"-18.715833333333332","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"0.5","方位角":"140","详细描述":"very faint, much extended 135°","简略描述":"vF, mE 135°"},{"ID":"1302","标识":"NGC1302","M标识":"NGC1302","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h19m51.1s","赤经D(J2000)":"3.330861111111111","赤纬(J2000)":"-26h3m38s","赤纬D(J2000)":"-26.060555555555556","可见光星等V":"10.7","摄影(蓝光)星等B":"11.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.9","短轴(分)":"3.7","方位角":"","详细描述":"small, round, pretty suddenly very much brighter middle, 9th magnitude star 1 arcmin northwest","简略描述":"S, R, psvmbM, * 9 np 1'"},{"ID":"1303","标识":"NGC1303","M标识":"NGC1303","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h20m40.7s","赤经D(J2000)":"3.344638888888889","赤纬(J2000)":"-7h23m39s","赤纬D(J2000)":"-7.394166666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"28","详细描述":"very faint, several stars involved","简略描述":"vF, sev st inv"},{"ID":"1304","标识":"NGC1304","M标识":"NGC1304","拓展名":"","组件":"","Class":"III 444","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h21m12.7s","赤经D(J2000)":"3.353527777777778","赤纬(J2000)":"-4h35m1s","赤纬D(J2000)":"-4.583611111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"48","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"1305","标识":"NGC1305","M标识":"NGC1305","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h21m22.9s","赤经D(J2000)":"3.356361111111111","赤纬(J2000)":"-2h18m59s","赤纬D(J2000)":"-2.3163888888888886","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1","方位角":"130","详细描述":"pretty bright, pretty small, round, 16th magnitude star attached","简略描述":"pB, pS, R, * 16 att"},{"ID":"1306","标识":"NGC1306","M标识":"NGC1306","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h21m3s","赤经D(J2000)":"3.3508333333333336","赤纬(J2000)":"-25h30m44s","赤纬D(J2000)":"-25.51222222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, very small, gradually brighter middle, magnitude 10.5 star 4 arcmin to east","简略描述":"vF, vS, gbM, * 10.5 f 4'"},{"ID":"1307","标识":"NGC1307","M标识":"NGC1307","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h21m12.7s","赤经D(J2000)":"3.353527777777778","赤纬(J2000)":"-4h35m1s","赤纬D(J2000)":"-4.583611111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"48","详细描述":"extremely faint, very small","简略描述":"eF, vS, R, * 9.5 nf"},{"ID":"1308","标识":"NGC1308","M标识":"NGC1308","拓展名":"","组件":"","Class":"III 568","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h22m28.5s","赤经D(J2000)":"3.3745833333333333","赤纬(J2000)":"-2h45m26s","赤纬D(J2000)":"-2.757222222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"57","详细描述":"extremely faint, small, irregular figure, among 3 or 4 stars","简略描述":"eF, S, iF, am 3 or 4 st"},{"ID":"1309","标识":"NGC1309","M标识":"NGC1309","拓展名":"","组件":"","Class":"I 106","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h22m6.3s","赤经D(J2000)":"3.3684166666666666","赤纬(J2000)":"-15h24m0s","赤纬D(J2000)":"-15.4","可见光星等V":"11.5","摄影(蓝光)星等B":"12","B-V":"0.5","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.3","短轴(分)":"2.2","方位角":"45","详细描述":"considerably bright, considerably large, irregularly round, gradually brighter middle, 8th magnitude star 4 arcmin southwest","简略描述":"cB, cL, iR, gbM, * 8 sp 4'"},{"ID":"1310","标识":"NGC1310","M标识":"NGC1310","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h21m3.5s","赤经D(J2000)":"3.3509722222222225","赤纬(J2000)":"-37h6m8s","赤纬D(J2000)":"-37.102222222222224","可见光星等V":"12.1","摄影(蓝光)星等B":"12.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"95","详细描述":"a globular cluster, very faint, pretty large, round, very gradually very little brighter middle","简略描述":"globular, vF, pL, R, vgvlbM"},{"ID":"1311","标识":"NGC1311","M标识":"NGC1311","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h20m6.7s","赤经D(J2000)":"3.335194444444445","赤纬(J2000)":"-52h11m14s","赤纬D(J2000)":"-52.18722222222222","可见光星等V":"13","摄影(蓝光)星等B":"13.4","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3","短轴(分)":"0.8","方位角":"40","详细描述":"faint, pretty large, much extended 37°, gradually brighter middle","简略描述":"F, pL, mE 37°, gbM"},{"ID":"1312","标识":"NGC1312","M标识":"NGC1312","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h23m41.8s","赤经D(J2000)":"3.3949444444444445","赤纬(J2000)":"+1h11m4s","赤纬D(J2000)":"1.1844444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint","简略描述":"F"},{"ID":"1313","标识":"NGC1313","M标识":"NGC1313","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h18m16s","赤经D(J2000)":"3.304444444444444","赤纬(J2000)":"-66h29m43s","赤纬D(J2000)":"-66.49527777777777","可见光星等V":"8.7","摄影(蓝光)星等B":"9.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"13","长轴(分)":"9.2","短轴(分)":"7.2","方位角":"38","详细描述":"pretty bright, large, extended, very gradually brighter middle, mottled but not resolved","简略描述":"pB, L, E, vgbM, r"},{"ID":"1314","标识":"NGC1314","M标识":"NGC1314","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h22m41.1s","赤经D(J2000)":"3.3780833333333335","赤纬(J2000)":"-4h11m11s","赤纬D(J2000)":"-4.186388888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.9","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"90","详细描述":"a 10th magnitude star with an extremely faint, considerably large, extended nebula to south","简略描述":"* 10 with eF, cL, E neb s"},{"ID":"1315","标识":"NGC1315","M标识":"NGC1315","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h23m6.5s","赤经D(J2000)":"3.3851388888888887","赤纬(J2000)":"-21h22m29s","赤纬D(J2000)":"-21.37472222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"55","详细描述":"pretty bright, small, round, gradually brighter middle","简略描述":"pB, S, R, gbM"},{"ID":"1316","标识":"NGC1316","M标识":"NGC1316","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"天炉座A","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h22m41.4s","赤经D(J2000)":"3.3781666666666665","赤纬(J2000)":"-37h12m28s","赤纬D(J2000)":"-37.20777777777778","可见光星等V":"8.5","摄影(蓝光)星等B":"9.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"11","短轴(分)":"7.2","方位角":"50","详细描述":"very bright, considerably large, very little extended, very suddenly very much brighter middle and nucleus","简略描述":"vB, cL, vlE, vsvmbMN"},{"ID":"1317","标识":"NGC1317","M标识":"NGC1317","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"天炉座B","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h22m44.2s","赤经D(J2000)":"3.3789444444444445","赤纬(J2000)":"-37h6m12s","赤纬D(J2000)":"-37.10333333333333","可见光星等V":"11","摄影(蓝光)星等B":"11.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.8","短轴(分)":"2.4","方位角":"78","详细描述":"pretty bright, pretty small, pretty suddenly brighter middle","简略描述":"pB, pS, psbM"},{"ID":"1318","标识":"NGC1318","M标识":"NGC1318","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h22m44.2s","赤经D(J2000)":"3.3789444444444445","赤纬(J2000)":"-37h6m12s","赤纬D(J2000)":"-37.10333333333333","可见光星等V":"11","摄影(蓝光)星等B":"11.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.8","短轴(分)":"2.4","方位角":"78","详细描述":"pretty bright, pretty small, pretty suddenly brighter middle","简略描述":"F"},{"ID":"1319","标识":"NGC1319","M标识":"NGC1319","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h23m56.5s","赤经D(J2000)":"3.3990277777777775","赤纬(J2000)":"-21h31m38s","赤纬D(J2000)":"-21.52722222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"27","详细描述":"faint, small, round, brighter middle, western of 2","简略描述":"F, S, R, bM, p of 2"},{"ID":"1320","标识":"NGC1320","M标识":"NGC1320","拓展名":"","组件":"","Class":"III 197","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h24m48.6s","赤经D(J2000)":"3.4135","赤纬(J2000)":"-3h2m33s","赤纬D(J2000)":"-3.0425","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.9","短轴(分)":"0.7","方位角":"135","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"1321","标识":"NGC1321","M标识":"NGC1321","拓展名":"","组件":"","Class":"III 196","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h24m48.6s","赤经D(J2000)":"3.4135","赤纬(J2000)":"-3h0m55s","赤纬D(J2000)":"-3.015277777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"85","详细描述":"faint, small, extended east-west, double or binuclear","简略描述":"F, S, E pf, D or biN"},{"ID":"1322","标识":"NGC1322","M标识":"NGC1322","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h24m54.6s","赤经D(J2000)":"3.4151666666666665","赤纬(J2000)":"-2h55m7s","赤纬D(J2000)":"-2.918611111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.8","方位角":"115","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"1323","标识":"NGC1323","M标识":"NGC1323","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h24m56s","赤经D(J2000)":"3.4155555555555557","赤纬(J2000)":"-2h49m18s","赤纬D(J2000)":"-2.8216666666666663","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"86","详细描述":"extremely faint, extremely small, 13th magnitude star 25± arcsec to southwest","简略描述":"eF, eS, * 13 sp 25\"±"},{"ID":"1324","标识":"NGC1324","M标识":"NGC1324","拓展名":"","组件":"","Class":"III 445","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h25m1.7s","赤经D(J2000)":"3.4171388888888887","赤纬(J2000)":"-5h44m43s","赤纬D(J2000)":"-5.745277777777778","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.1","短轴(分)":"0.8","方位角":"135","详细描述":"very faint, pretty small, pretty much extended","简略描述":"vF, pS, pmE"},{"ID":"1325","标识":"NGC1325","M标识":"NGC1325","拓展名":"","组件":"","Class":"IV 77","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h24m25.5s","赤经D(J2000)":"3.4070833333333335","赤纬(J2000)":"-21h32m35s","赤纬D(J2000)":"-21.543055555555558","可见光星等V":"11.5","摄影(蓝光)星等B":"12.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"4.8","短轴(分)":"1.6","方位角":"56","详细描述":"faint, much extended 239°, cometic, 9.5 magnitude star attached","简略描述":"F, mE 239°, com, * 9.5 att"},{"ID":"1326","标识":"NGC1326","M标识":"NGC1326","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h23m56.4s","赤经D(J2000)":"3.399","赤纬(J2000)":"-36h27m51s","赤纬D(J2000)":"-36.46416666666667","可见光星等V":"10.5","摄影(蓝光)星等B":"11.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.9","短轴(分)":"2.9","方位角":"77","详细描述":"a planetary nebula? pretty small, very suddenly very much brighter middle and nucleus","简略描述":"planetary? pS, vsvmbMN"},{"ID":"1327","标识":"NGC1327","M标识":"NGC1327","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h25m23.2s","赤经D(J2000)":"3.423111111111111","赤纬(J2000)":"-25h40m46s","赤纬D(J2000)":"-25.679444444444446","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.3","方位角":"176","详细描述":"extremely faint, very small, possibly nebulous","简略描述":"eF, vS, neb ?"},{"ID":"1328","标识":"NGC1328","M标识":"NGC1328","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h25m39s","赤经D(J2000)":"3.4274999999999998","赤纬(J2000)":"-4h7m28s","赤纬D(J2000)":"-4.124444444444444","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.6","方位角":"134","详细描述":"very faint, extremely small, round, brighter middle and nucleus","简略描述":"vF, eS, R, bMN"},{"ID":"1329","标识":"NGC1329","M标识":"NGC1329","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h26m2.5s","赤经D(J2000)":"3.434027777777778","赤纬(J2000)":"-17h35m30s","赤纬D(J2000)":"-17.591666666666665","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"35","详细描述":"faint, pretty small, round, gradually a little brighter middle","简略描述":"F, pS, R, glbM"},{"ID":"1330","标识":"NGC1330","M标识":"NGC1330","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h29m4.4s","赤经D(J2000)":"3.4845555555555556","赤纬(J2000)":"+41h40m32s","赤纬D(J2000)":"41.675555555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint stars in very faint, small nebulosity","简略描述":"vF st in vF, S neb"},{"ID":"1331","标识":"NGC1331","M标识":"NGC1331","拓展名":"","组件":"","Class":"III 959","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h26m28.2s","赤经D(J2000)":"3.4411666666666667","赤纬(J2000)":"-21h21m20s","赤纬D(J2000)":"-21.355555555555558","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"3","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"1332","标识":"NGC1332","M标识":"NGC1332","拓展名":"","组件":"","Class":"I 60","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h26m17s","赤经D(J2000)":"3.4380555555555556","赤纬(J2000)":"-21h20m4s","赤纬D(J2000)":"-21.334444444444443","可见光星等V":"10.3","摄影(蓝光)星等B":"11.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"4.5","短轴(分)":"1.4","方位角":"115","详细描述":"very bright, small, extended 114°, suddenly much brighter middle and nucleus","简略描述":"vB, S, E 114°, smbMN"},{"ID":"1333","标识":"NGC1333","M标识":"NGC1333","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"胚胎星云","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h29m18s","赤经D(J2000)":"3.4883333333333333","赤纬(J2000)":"+31h25m0s","赤纬D(J2000)":"31.416666666666668","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"3","方位角":"","详细描述":"faint, large, 10th magnitude star to northeast (Auwers No. 17)","简略描述":"F, L, * 10 nf (Auw No 17)"},{"ID":"1334","标识":"NGC1334","M标识":"NGC1334","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h30m1.7s","赤经D(J2000)":"3.500472222222222","赤纬(J2000)":"+41h49m57s","赤纬D(J2000)":"41.8325","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"115","详细描述":"extremely faint, pretty large, a little brighter middle","简略描述":"eF, pL, lbM"},{"ID":"1335","标识":"NGC1335","M标识":"NGC1335","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h30m19.4s","赤经D(J2000)":"3.505388888888889","赤纬(J2000)":"+41h34m24s","赤纬D(J2000)":"41.57333333333334","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"174","详细描述":"very faint star in very faint, extremely small nebulosity","简略描述":"vF * in vF, eS neb"},{"ID":"1336","标识":"NGC1336","M标识":"NGC1336","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h26m32s","赤经D(J2000)":"3.4422222222222225","赤纬(J2000)":"-35h42m48s","赤纬D(J2000)":"-35.71333333333334","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.1","短轴(分)":"1.5","方位角":"22","详细描述":"very faint, small, very little extended, gradually brighter middle","简略描述":"vF, S, vlE, gbM"},{"ID":"1337","标识":"NGC1337","M标识":"NGC1337","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h28m5.6s","赤经D(J2000)":"3.4682222222222223","赤纬(J2000)":"-8h23m18s","赤纬D(J2000)":"-8.388333333333334","可见光星等V":"11.9","摄影(蓝光)星等B":"12.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"5.7","短轴(分)":"1.5","方位角":"144","详细描述":"extremely faint, very large, much extended north-south","简略描述":"eF, vL, mE ns"},{"ID":"1338","标识":"NGC1338","M标识":"NGC1338","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h28m54.4s","赤经D(J2000)":"3.481777777777778","赤纬(J2000)":"-12h9m11s","赤纬D(J2000)":"-12.153055555555556","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"55","详细描述":"very faint, small, irregularly round, a little brighter middle, mottled but not resolved","简略描述":"vF, S, iR, lbM, r"},{"ID":"1339","标识":"NGC1339","M标识":"NGC1339","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h28m6.5s","赤经D(J2000)":"3.468472222222222","赤纬(J2000)":"-32h17m8s","赤纬D(J2000)":"-32.285555555555554","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"172","详细描述":"considerably bright, pretty small, round, pretty suddenly brighter middle, double star to west","简略描述":"cB, pS, R, psbM, D * p"},{"ID":"1340","标识":"NGC1340","M标识":"NGC1340","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E5","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h28m19.5s","赤经D(J2000)":"3.4720833333333334","赤纬(J2000)":"-31h4m5s","赤纬D(J2000)":"-31.068055555555556","可见光星等V":"10.4","摄影(蓝光)星等B":"11.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"4.8","短轴(分)":"3.1","方位角":"165","详细描述":"very bright, pretty small, a little extended, pretty suddenly brighter middle (? I 257)","简略描述":"vB, pS, lE, psbM (? I 257)"},{"ID":"1341","标识":"NGC1341","M标识":"NGC1341","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h27m58.3s","赤经D(J2000)":"3.4661944444444446","赤纬(J2000)":"-37h8m58s","赤纬D(J2000)":"-37.14944444444444","可见光星等V":"11.8","摄影(蓝光)星等B":"12.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"89","详细描述":"faint, small, round, 12th magnitude star to southeast","简略描述":"F, S, R, * 12 sf"},{"ID":"1342","标识":"NGC1342","M标识":"NGC1342","拓展名":"","组件":"","Class":"VIII 88","业余排名":"6","中文名":"小蝎星团","类型":"OCL","含重复类型":"OCL","形态":"III3p","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h31m38s","赤经D(J2000)":"3.527222222222222","赤纬(J2000)":"+37h22m36s","赤纬D(J2000)":"37.376666666666665","可见光星等V":"6.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"17","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, about 60 stars","简略描述":"Cl, vL, ab 60 st"},{"ID":"1343","标识":"NGC1343","M标识":"NGC1343","拓展名":"","组件":"","Class":"III 694","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"3h37m49.8s","赤经D(J2000)":"3.6305","赤纬(J2000)":"+72h34m17s","赤纬D(J2000)":"72.57138888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.6","短轴(分)":"1.6","方位角":"80","详细描述":"faint, very small, irregularly round, gradually brighter middle, double star very near","简略描述":"F, vS, iR, gbM, D * v nr"},{"ID":"1344","标识":"NGC1344","M标识":"NGC1344","拓展名":"","组件":"","Class":"I 257","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h28m19.5s","赤经D(J2000)":"3.4720833333333334","赤纬(J2000)":"-31h4m5s","赤纬D(J2000)":"-31.068055555555556","可见光星等V":"10.4","摄影(蓝光)星等B":"11.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"4.8","短轴(分)":"3.1","方位角":"165","详细描述":"very bright, pretty small, a little extended, pretty suddenly brighter middle (? I 257)","简略描述":"cB, pL, iR, vgbM"},{"ID":"1345","标识":"NGC1345","M标识":"NGC1345","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h29m31.5s","赤经D(J2000)":"3.4920833333333334","赤纬(J2000)":"-17h46m45s","赤纬D(J2000)":"-17.779166666666665","可见光星等V":"13.8","摄影(蓝光)星等B":"14.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"108","详细描述":"very faint, small, round, pretty suddenly a little brighter middle","简略描述":"vF, S, R, pslbM"},{"ID":"1346","标识":"NGC1346","M标识":"NGC1346","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h30m13.2s","赤经D(J2000)":"3.5036666666666667","赤纬(J2000)":"-5h32m35s","赤纬D(J2000)":"-5.543055555555555","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"85","详细描述":"extremely faint, extremely small, round, brighter middle, 13th magnitude star to west","简略描述":"eF, eS, R, bM, * 13 p"},{"ID":"1347","标识":"NGC1347","M标识":"NGC1347","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h29m41.8s","赤经D(J2000)":"3.4949444444444446","赤纬(J2000)":"-22h16m45s","赤纬D(J2000)":"-22.279166666666665","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"12","详细描述":"extremely faint, pretty small, extended 130°, suddenly brighter middle and nucleus","简略描述":"eF, pS, E 130°, sbMN"},{"ID":"1348","标识":"NGC1348","M标识":"NGC1348","拓展名":"","组件":"","Class":"VIII 84","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h34m6s","赤经D(J2000)":"3.568333333333333","赤纬(J2000)":"+51h25m12s","赤纬D(J2000)":"51.419999999999995","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, a little rich, stars large (bright)","简略描述":"Cl, lRi, st L"},{"ID":"1349","标识":"NGC1349","M标识":"NGC1349","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h31m27.4s","赤经D(J2000)":"3.524277777777778","赤纬(J2000)":"+4h22m53s","赤纬D(J2000)":"4.381388888888888","可见光星等V":"13.1","摄影(蓝光)星等B":"14.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"most extremely faint, small, round, between 2 stars","简略描述":"eeF, S, R, bet 2 st"},{"ID":"1350","标识":"NGC1350","M标识":"NGC1350","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"宇宙大眼睛星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h31m7.9s","赤经D(J2000)":"3.518861111111111","赤纬(J2000)":"-33h37m38s","赤纬D(J2000)":"-33.62722222222222","可见光星等V":"10.3","摄影(蓝光)星等B":"11.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"5.9","短轴(分)":"3.1","方位角":"170","详细描述":"bright, large, much extended, very much brighter middle and round nucleus","简略描述":"B, L, mE, vmbMRN"},{"ID":"1351","标识":"NGC1351","M标识":"NGC1351","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h30m34.9s","赤经D(J2000)":"3.5096944444444444","赤纬(J2000)":"-34h51m12s","赤纬D(J2000)":"-34.85333333333333","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.8","短轴(分)":"1.7","方位角":"140","详细描述":"pretty bright, pretty small, round, pretty suddenly brighter middle","简略描述":"pB, pS, R, psbM"},{"ID":"1352","标识":"NGC1352","M标识":"NGC1352","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h31m32.9s","赤经D(J2000)":"3.5258055555555554","赤纬(J2000)":"-19h16m40s","赤纬D(J2000)":"-19.27777777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.7","方位角":"116","详细描述":"extremely faint, pretty suddenly a little brighter middle, diffuse, 8th magnitude star to southeast","简略描述":"eF, pslbM, diff, * 8 sf"},{"ID":"1353","标识":"NGC1353","M标识":"NGC1353","拓展名":"","组件":"","Class":"III 246","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h32m3.1s","赤经D(J2000)":"3.534194444444444","赤纬(J2000)":"-20h49m8s","赤纬D(J2000)":"-20.81888888888889","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.4","短轴(分)":"1.4","方位角":"138","详细描述":"pretty bright, considerably large, irregularly extended, much brighter middle","简略描述":"pB, cL, iE, mbM"},{"ID":"1354","标识":"NGC1354","M标识":"NGC1354","拓展名":"","组件":"","Class":"III 487","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h32m29.2s","赤经D(J2000)":"3.541444444444444","赤纬(J2000)":"-15h13m15s","赤纬D(J2000)":"-15.220833333333333","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.3","短轴(分)":"0.8","方位角":"150","详细描述":"very faint, small, a little extended, gradually a little brighter middle","简略描述":"vF, S, lE, glbM"},{"ID":"1355","标识":"NGC1355","M标识":"NGC1355","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h33m23.5s","赤经D(J2000)":"3.5565277777777777","赤纬(J2000)":"-4h59m54s","赤纬D(J2000)":"-4.998333333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"78","详细描述":"pretty faint, small","简略描述":"pF, S"},{"ID":"1356","标识":"NGC1356","M标识":"NGC1356","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h30m40.7s","赤经D(J2000)":"3.5113055555555555","赤纬(J2000)":"-50h18m33s","赤纬D(J2000)":"-50.30916666666666","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"173","详细描述":"very faint, pretty large, irregularly round, gradually brighter middle, star near","简略描述":"vF, pL, iR, gbM, * nr"},{"ID":"1357","标识":"NGC1357","M标识":"NGC1357","拓展名":"","组件":"","Class":"II 290","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h33m17.1s","赤经D(J2000)":"3.55475","赤纬(J2000)":"-13h39m52s","赤纬D(J2000)":"-13.664444444444445","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.2","短轴(分)":"2.4","方位角":"85","详细描述":"pretty faint, pretty large, round, a little brighter middle, 9th magnitude star to northeast","简略描述":"pF, pL, R, lbM, * 9 nf"},{"ID":"1358","标识":"NGC1358","M标识":"NGC1358","拓展名":"","组件":"","Class":"III 446","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h33m39.7s","赤经D(J2000)":"3.5610277777777775","赤纬(J2000)":"-5h5m20s","赤纬D(J2000)":"-5.088888888888889","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.1","短轴(分)":"1.4","方位角":"3","详细描述":"very faint, small, between 2 stars","简略描述":"vF, S, bet 2 st"},{"ID":"1359","标识":"NGC1359","M标识":"NGC1359","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm\/P","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h33m47.8s","赤经D(J2000)":"3.5632777777777775","赤纬(J2000)":"-19h29m27s","赤纬D(J2000)":"-19.490833333333335","可见光星等V":"12.2","摄影(蓝光)星等B":"12.6","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.5","短轴(分)":"1.5","方位角":"139","详细描述":"faint, large, round, very gradually a little brighter middle","简略描述":"F, L, R, vglbM"},{"ID":"1360","标识":"NGC1360","M标识":"NGC1360","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"知更鸟蛋星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h33m14.6s","赤经D(J2000)":"3.5540555555555553","赤纬(J2000)":"-25h52m16s","赤纬D(J2000)":"-25.871111111111112","可见光星等V":"9.4","摄影(蓝光)星等B":"9.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6.42","短轴(分)":"","方位角":"","详细描述":"an 8th magnitude star in bright, large nebula, extended north-south","简略描述":"* 8 in B, L neb, E ns"},{"ID":"1361","标识":"NGC1361","M标识":"NGC1361","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3\/P","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h34m17.7s","赤经D(J2000)":"3.571583333333333","赤纬(J2000)":"-6h15m52s","赤纬D(J2000)":"-6.264444444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"39","详细描述":"extremely faint, extremely small, gradually brighter middle and nucleus","简略描述":"eF, eS, gbMN"},{"ID":"1362","标识":"NGC1362","M标识":"NGC1362","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h33m53s","赤经D(J2000)":"3.564722222222222","赤纬(J2000)":"-20h16m56s","赤纬D(J2000)":"-20.28222222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"7","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"1363","标识":"NGC1363","M标识":"NGC1363","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h34m49.5s","赤经D(J2000)":"3.5804166666666664","赤纬(J2000)":"-9h50m32s","赤纬D(J2000)":"-9.842222222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"69","详细描述":"very faint, small, round, 7th magnitude star 3.5 arcmin southwest, southwestern of 2","简略描述":"vF, S, R, * 7 sp 3'.5, sp of 2"},{"ID":"1364","标识":"NGC1364","M标识":"NGC1364","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h34m59s","赤经D(J2000)":"3.583055555555555","赤纬(J2000)":"-9h50m20s","赤纬D(J2000)":"-9.83888888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, small, very little extended, northeastern of 2","简略描述":"vF, S, vlE, nf of 2"},{"ID":"1365","标识":"NGC1365","M标识":"NGC1365","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"大棒旋星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h33m36.7s","赤经D(J2000)":"3.5601944444444444","赤纬(J2000)":"-36h8m27s","赤纬D(J2000)":"-36.14083333333333","可见光星等V":"9.6","摄影(蓝光)星等B":"10.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"11","短轴(分)":"6.2","方位角":"32","详细描述":"a very remarkable object, very bright, very large, much extended, mottled but not resolved nucleus","简略描述":"!! vB, vL, mE, rN"},{"ID":"1366","标识":"NGC1366","M标识":"NGC1366","拓展名":"","组件":"","Class":"III 857","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h33m53.6s","赤经D(J2000)":"3.5648888888888886","赤纬(J2000)":"-31h11m36s","赤纬D(J2000)":"-31.193333333333335","可见光星等V":"11.1","摄影(蓝光)星等B":"12","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.1","短轴(分)":"0.9","方位角":"2","详细描述":"very faint, small, irregular figure, a little brighter middle","简略描述":"vF, S, iF, lbM"},{"ID":"1367","标识":"NGC1367","M标识":"NGC1367","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h35m1.2s","赤经D(J2000)":"3.583666666666667","赤纬(J2000)":"-24h56m0s","赤纬D(J2000)":"-24.933333333333334","可见光星等V":"10.7","摄影(蓝光)星等B":"11.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"5.6","短轴(分)":"3.9","方位角":"135","详细描述":"very faint","简略描述":"vF"},{"ID":"1368","标识":"NGC1368","M标识":"NGC1368","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h34m58.8s","赤经D(J2000)":"3.5829999999999997","赤纬(J2000)":"-15h39m20s","赤纬D(J2000)":"-15.655555555555557","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"108","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"1369","标识":"NGC1369","M标识":"NGC1369","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h36m45.2s","赤经D(J2000)":"3.6125555555555557","赤纬(J2000)":"-36h15m20s","赤纬D(J2000)":"-36.25555555555555","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"12","详细描述":"faint","简略描述":"F"},{"ID":"1370","标识":"NGC1370","M标识":"NGC1370","拓展名":"","组件":"","Class":"III 559, III 960","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h35m14.4s","赤经D(J2000)":"3.5873333333333335","赤纬(J2000)":"-20h22m24s","赤纬D(J2000)":"-20.373333333333335","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"1","方位角":"50","详细描述":"very faint, small, round, between two 14th magnitude stars","简略描述":"vF, S, R, bet 2 st 14"},{"ID":"1371","标识":"NGC1371","M标识":"NGC1371","拓展名":"","组件":"","Class":"II 262","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h35m1.2s","赤经D(J2000)":"3.583666666666667","赤纬(J2000)":"-24h56m0s","赤纬D(J2000)":"-24.933333333333334","可见光星等V":"10.7","摄影(蓝光)星等B":"11.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"5.6","短轴(分)":"3.9","方位角":"135","详细描述":"very faint","简略描述":"pB, pL, vlE, psbM"},{"ID":"1372","标识":"NGC1372","M标识":"NGC1372","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h36m59.7s","赤经D(J2000)":"3.6165833333333333","赤纬(J2000)":"-15h52m54s","赤纬D(J2000)":"-15.881666666666668","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, very small, round, gradually a little brighter middle","简略描述":"vF, vS, R, glbM"},{"ID":"1373","标识":"NGC1373","M标识":"NGC1373","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h34m59.1s","赤经D(J2000)":"3.583083333333333","赤纬(J2000)":"-35h10m16s","赤纬D(J2000)":"-35.17111111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"131","详细描述":"extremely faint, very small, western of 3","简略描述":"eF, vS, p of 3"},{"ID":"1374","标识":"NGC1374","M标识":"NGC1374","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h35m16.6s","赤经D(J2000)":"3.5879444444444446","赤纬(J2000)":"-35h13m33s","赤纬D(J2000)":"-35.225833333333334","可见光星等V":"11.1","摄影(蓝光)星等B":"12","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.7","短轴(分)":"2.4","方位角":"124","详细描述":"very bright, pretty large, a little extended, gradually much brighter middle, 2nd of 3","简略描述":"vB, pL, lE, gmbM, 2nd of 3"},{"ID":"1375","标识":"NGC1375","M标识":"NGC1375","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h35m16.8s","赤经D(J2000)":"3.588","赤纬(J2000)":"-35h15m57s","赤纬D(J2000)":"-35.26583333333333","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.3","短轴(分)":"0.9","方位角":"91","详细描述":"bright, small, a little extended, pretty much brighter middle, 3rd of 3","简略描述":"B, S, lE, pmbM, 3rd of 3"},{"ID":"1376","标识":"NGC1376","M标识":"NGC1376","拓展名":"","组件":"","Class":"II 288","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h37m6s","赤经D(J2000)":"3.618333333333333","赤纬(J2000)":"-5h2m34s","赤纬D(J2000)":"-5.042777777777777","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.1","短轴(分)":"1.9","方位角":"95","详细描述":"extremely faint, pretty large, irregularly round, brighter middle, mottled but not resolved","简略描述":"eF, pL, iR, bM, r"},{"ID":"1377","标识":"NGC1377","M标识":"NGC1377","拓展名":"","组件":"","Class":"III 961","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h36m39s","赤经D(J2000)":"3.6108333333333333","赤纬(J2000)":"-20h54m5s","赤纬D(J2000)":"-20.90138888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.8","短轴(分)":"0.9","方位角":"92","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"1378","标识":"NGC1378","M标识":"NGC1378","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h35m58.2s","赤经D(J2000)":"3.5995000000000004","赤纬(J2000)":"-35h12m40s","赤纬D(J2000)":"-35.211111111111116","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint","简略描述":"F"},{"ID":"1379","标识":"NGC1379","M标识":"NGC1379","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h36m3.8s","赤经D(J2000)":"3.6010555555555555","赤纬(J2000)":"-35h26m27s","赤纬D(J2000)":"-35.44083333333333","可见光星等V":"10.9","摄影(蓝光)星等B":"11.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.4","短轴(分)":"2.3","方位角":"17","详细描述":"a globular cluster, brighter, pretty large, round, gradually pretty much brighter middle","简略描述":"globular, B, pL, R, gpmbM"},{"ID":"1380","标识":"NGC1380","M标识":"NGC1380","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h36m27.5s","赤经D(J2000)":"3.607638888888889","赤纬(J2000)":"-34h58m31s","赤纬D(J2000)":"-34.97527777777778","可见光星等V":"9.9","摄影(蓝光)星等B":"10.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"4","短轴(分)":"2.4","方位角":"7","详细描述":"very bright, large, round, pretty suddenly brighter middle","简略描述":"vB, L, R, psbM"},{"ID":"1381","标识":"NGC1381","M标识":"NGC1381","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h36m31.8s","赤经D(J2000)":"3.6088333333333336","赤纬(J2000)":"-35h17m43s","赤纬D(J2000)":"-35.29527777777778","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"2.6","短轴(分)":"0.8","方位角":"139","详细描述":"faint","简略描述":"F"},{"ID":"1382","标识":"NGC1382","M标识":"NGC1382","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h37m9s","赤经D(J2000)":"3.6191666666666666","赤纬(J2000)":"-35h11m44s","赤纬D(J2000)":"-35.19555555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"26","详细描述":"faint","简略描述":"F"},{"ID":"1383","标识":"NGC1383","M标识":"NGC1383","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h37m39.2s","赤经D(J2000)":"3.6275555555555554","赤纬(J2000)":"-18h20m22s","赤纬D(J2000)":"-18.339444444444442","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.9","短轴(分)":"0.8","方位角":"91","详细描述":"pretty faint, small, round, pretty suddenly much brighter middle","简略描述":"pF, S, R, psmbM"},{"ID":"1384","标识":"NGC1384","M标识":"NGC1384","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h39m13.5s","赤经D(J2000)":"3.65375","赤纬(J2000)":"+15h49m10s","赤纬D(J2000)":"15.819444444444445","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"135","详细描述":"nebulous 13th magnitude star","简略描述":"Neb * 13"},{"ID":"1385","标识":"NGC1385","M标识":"NGC1385","拓展名":"","组件":"","Class":"II 263","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h37m28.6s","赤经D(J2000)":"3.6246111111111112","赤纬(J2000)":"-24h30m10s","赤纬D(J2000)":"-24.502777777777776","可见光星等V":"10.9","摄影(蓝光)星等B":"11.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.6","短轴(分)":"2.2","方位角":"171","详细描述":"pretty bright, pretty small, round, gradually pretty much brighter middle","简略描述":"pB, pS, R, gpmbM"},{"ID":"1386","标识":"NGC1386","M标识":"NGC1386","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h36m46.3s","赤经D(J2000)":"3.612861111111111","赤纬(J2000)":"-35h59m56s","赤纬D(J2000)":"-35.99888888888889","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"3.4","短轴(分)":"1.3","方位角":"25","详细描述":"faint","简略描述":"F"},{"ID":"1387","标识":"NGC1387","M标识":"NGC1387","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h36m57.2s","赤经D(J2000)":"3.615888888888889","赤纬(J2000)":"-35h30m21s","赤纬D(J2000)":"-35.505833333333335","可见光星等V":"10.7","摄影(蓝光)星等B":"11.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.8","短轴(分)":"2.6","方位角":"119","详细描述":"a globular cluster, very bright, pretty large, round, gradually much brighter middle","简略描述":"globular, vB, pL, R, gmbM"},{"ID":"1388","标识":"NGC1388","M标识":"NGC1388","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h38m12s","赤经D(J2000)":"3.6366666666666667","赤纬(J2000)":"-15h53m58s","赤纬D(J2000)":"-15.899444444444445","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"1389","标识":"NGC1389","M标识":"NGC1389","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h37m11.7s","赤经D(J2000)":"3.6199166666666667","赤纬(J2000)":"-35h44m44s","赤纬D(J2000)":"-35.745555555555555","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.3","短轴(分)":"1.2","方位角":"30","详细描述":"faint","简略描述":"F"},{"ID":"1390","标识":"NGC1390","M标识":"NGC1390","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h37m52.2s","赤经D(J2000)":"3.6311666666666667","赤纬(J2000)":"-19h0m27s","赤纬D(J2000)":"-19.0075","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"19","详细描述":"very faint, pretty small, extended 260°","简略描述":"vF, pS, E 260°"},{"ID":"1391","标识":"NGC1391","M标识":"NGC1391","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h38m52.9s","赤经D(J2000)":"3.6480277777777776","赤纬(J2000)":"-18h21m16s","赤纬D(J2000)":"-18.354444444444447","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"65","详细描述":"extremely faint, small, round, gradually brighter middle and nucleus","简略描述":"eF, S, R, gbMN"},{"ID":"1392","标识":"NGC1392","M标识":"NGC1392","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h37m30.3s","赤经D(J2000)":"3.6250833333333334","赤纬(J2000)":"-37h8m5s","赤纬D(J2000)":"-37.13472222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"1393","标识":"NGC1393","M标识":"NGC1393","拓展名":"","组件":"","Class":"III 451","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h38m38.4s","赤经D(J2000)":"3.644","赤纬(J2000)":"-18h25m43s","赤纬D(J2000)":"-18.428611111111113","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"170","详细描述":"faint, small, round, gradually a little brighter middle","简略描述":"F, S, R, glbM"},{"ID":"1394","标识":"NGC1394","M标识":"NGC1394","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h39m6.7s","赤经D(J2000)":"3.6518611111111112","赤纬(J2000)":"-18h17m32s","赤纬D(J2000)":"-18.292222222222225","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"5","详细描述":"very faint, very small, extended 170°, suddenly brighter middle and nucleus","简略描述":"vF, vS, E 170°, sbMN"},{"ID":"1395","标识":"NGC1395","M标识":"NGC1395","拓展名":"","组件":"","Class":"I 58","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h38m29.6s","赤经D(J2000)":"3.6415555555555557","赤纬(J2000)":"-23h1m38s","赤纬D(J2000)":"-23.02722222222222","可见光星等V":"9.6","摄影(蓝光)星等B":"10.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"5","短轴(分)":"4.5","方位角":"120","详细描述":"bright, pretty small, extended, pretty suddenly much brighter middle","简略描述":"B, pS, E, psmbM"},{"ID":"1396","标识":"NGC1396","M标识":"NGC1396","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h38m6.5s","赤经D(J2000)":"3.6351388888888887","赤纬(J2000)":"-35h26m23s","赤纬D(J2000)":"-35.439722222222215","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"90","详细描述":"faint","简略描述":"F"},{"ID":"1397","标识":"NGC1397","M标识":"NGC1397","拓展名":"","组件":"","Class":"III 569","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h39m47.1s","赤经D(J2000)":"3.6630833333333332","赤纬(J2000)":"-4h40m11s","赤纬D(J2000)":"-4.669722222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"105","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"1398","标识":"NGC1398","M标识":"NGC1398","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h38m52s","赤经D(J2000)":"3.647777777777778","赤纬(J2000)":"-26h20m14s","赤纬D(J2000)":"-26.33722222222222","可见光星等V":"9.7","摄影(蓝光)星等B":"10.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"7.2","短轴(分)":"5.2","方位角":"100","详细描述":"considerably bright, considerably large, round, very much brighter middle","简略描述":"cB, cL, R, vmbM"},{"ID":"1399","标识":"NGC1399","M标识":"NGC1399","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h38m28.9s","赤经D(J2000)":"3.6413611111111113","赤纬(J2000)":"-35h26m59s","赤纬D(J2000)":"-35.44972222222222","可见光星等V":"9.6","摄影(蓝光)星等B":"10.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"6.9","短轴(分)":"6.5","方位角":"76","详细描述":"a globular cluster, very bright, pretty large, pretty suddenly much brighter middle, partially resolved (some stars seen)","简略描述":"globular, vB, pL, psbM, rr"},{"ID":"1400","标识":"NGC1400","M标识":"NGC1400","拓展名":"","组件":"","Class":"II 593","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h39m30.7s","赤经D(J2000)":"3.6585277777777776","赤纬(J2000)":"-18h41m17s","赤纬D(J2000)":"-18.688055555555557","可见光星等V":"11","摄影(蓝光)星等B":"11.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.5","短轴(分)":"2.1","方位角":"40","详细描述":"considerably bright, pretty small, round, pretty suddenly much brighter middle","简略描述":"cB, pS, R, psmbM"},{"ID":"1401","标识":"NGC1401","M标识":"NGC1401","拓展名":"","组件":"","Class":"III 247","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h39m21.8s","赤经D(J2000)":"3.6560555555555556","赤纬(J2000)":"-22h43m28s","赤纬D(J2000)":"-22.724444444444444","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.4","短轴(分)":"0.6","方位角":"130","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"1402","标识":"NGC1402","M标识":"NGC1402","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h39m30.4s","赤经D(J2000)":"3.658444444444444","赤纬(J2000)":"-18h31m37s","赤纬D(J2000)":"-18.526944444444442","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"88","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"1403","标识":"NGC1403","M标识":"NGC1403","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h39m10.8s","赤经D(J2000)":"3.653","赤纬(J2000)":"-22h23m20s","赤纬D(J2000)":"-22.38888888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"163","详细描述":"very faint, extremely small, nebulous star","简略描述":"vF, eS, neb *"},{"ID":"1404","标识":"NGC1404","M标识":"NGC1404","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h38m51.7s","赤经D(J2000)":"3.6476944444444444","赤纬(J2000)":"-35h35m34s","赤纬D(J2000)":"-35.59277777777778","可见光星等V":"10","摄影(蓝光)星等B":"11","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"3.3","短轴(分)":"3","方位角":"163","详细描述":"very bright, pretty large, round, pretty suddenly much brighter middle","简略描述":"vB, pL, R, psmbM"},{"ID":"1405","标识":"NGC1405","M标识":"NGC1405","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h40m19s","赤经D(J2000)":"3.6719444444444442","赤纬(J2000)":"-15h31m51s","赤纬D(J2000)":"-15.530833333333334","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"153","详细描述":"extremely faint, pretty large, much extended 150°, gradually a little brighter middle, faint star involved","简略描述":"eF, pL, mE 150°, glbM, F st inv"},{"ID":"1406","标识":"NGC1406","M标识":"NGC1406","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h39m23s","赤经D(J2000)":"3.656388888888889","赤纬(J2000)":"-31h19m20s","赤纬D(J2000)":"-31.322222222222223","可见光星等V":"11.8","摄影(蓝光)星等B":"12.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.9","短轴(分)":"0.7","方位角":"15","详细描述":"faint, considerably large, very much extended, very gradually a little brighter middle, 7th magnitude star to northwest","简略描述":"F, cL, vmE, vglbM, * 7 np"},{"ID":"1407","标识":"NGC1407","M标识":"NGC1407","拓展名":"","组件":"","Class":"I 107","业余排名":"5","中文名":"波江座A星系群","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h40m11.8s","赤经D(J2000)":"3.6699444444444445","赤纬(J2000)":"-18h34m49s","赤纬D(J2000)":"-18.580277777777777","可见光星等V":"9.7","摄影(蓝光)星等B":"10.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"4.6","短轴(分)":"4.3","方位角":"35","详细描述":"very bright, large, round, suddenly very much brighter middle and nucleus","简略描述":"vB, L, R, svmbMN"},{"ID":"1408","标识":"NGC1408","M标识":"NGC1408","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h39m20s","赤经D(J2000)":"3.6555555555555554","赤纬(J2000)":"-35h31m30s","赤纬D(J2000)":"-35.525","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint","简略描述":"F"},{"ID":"1409","标识":"NGC1409","M标识":"NGC1409","拓展名":"","组件":"","Class":"III 263","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h41m10.4s","赤经D(J2000)":"3.6862222222222223","赤纬(J2000)":"-1h18m7s","赤纬D(J2000)":"-1.3019444444444446","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.8","方位角":"130","详细描述":"extremely faint, stellar or a little extended","简略描述":"eF, stellar or lE"},{"ID":"1410","标识":"NGC1410","M标识":"NGC1410","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h41m10.8s","赤经D(J2000)":"3.6863333333333337","赤纬(J2000)":"-1h17m55s","赤纬D(J2000)":"-1.298611111111111","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"120","详细描述":"makes a double nebula with h 304, position 0°","简略描述":"Makes D neb with h 304, pos 0°"},{"ID":"1411","标识":"NGC1411","M标识":"NGC1411","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h38m44.9s","赤经D(J2000)":"3.6458055555555555","赤纬(J2000)":"-44h6m2s","赤纬D(J2000)":"-44.10055555555556","可见光星等V":"11.3","摄影(蓝光)星等B":"12.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.8","短轴(分)":"1.4","方位角":"6","详细描述":"bright, pretty small, round, suddenly much brighter middle","简略描述":"B, pS, R, smbM"},{"ID":"1412","标识":"NGC1412","M标识":"NGC1412","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h40m29.3s","赤经D(J2000)":"3.6748055555555554","赤纬(J2000)":"-26h51m43s","赤纬D(J2000)":"-26.861944444444447","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"131","详细描述":"faint, small, extended, gradually brighter middle, star 2 arcmin to southwest","简略描述":"F, S, E, gbM, * sf 2'"},{"ID":"1413","标识":"NGC1413","M标识":"NGC1413","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h40m11.5s","赤经D(J2000)":"3.669861111111111","赤纬(J2000)":"-15h36m37s","赤纬D(J2000)":"-15.610277777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1","短轴(分)":"0.8","方位角":"57","详细描述":"extremely faint, very small, round, a little brighter middle","简略描述":"eF, vS, R, lbM"},{"ID":"1414","标识":"NGC1414","M标识":"NGC1414","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h40m57s","赤经D(J2000)":"3.6824999999999997","赤纬(J2000)":"-21h42m48s","赤纬D(J2000)":"-21.71333333333333","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"0.3","方位角":"172","详细描述":"extremely faint, pretty small, much extended 0°, brighter middle and nucleus","简略描述":"eF, pS, mE 0°, bMN"},{"ID":"1415","标识":"NGC1415","M标识":"NGC1415","拓展名":"","组件":"","Class":"II 267","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h40m56.9s","赤经D(J2000)":"3.682472222222222","赤纬(J2000)":"-22h33m51s","赤纬D(J2000)":"-22.56416666666667","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.6","短轴(分)":"1.7","方位角":"148","详细描述":"pretty bright, small, a little extended, pretty gradually a little brighter middle, star to southeast","简略描述":"pB, S, lE, pglbM, * sf"},{"ID":"1416","标识":"NGC1416","M标识":"NGC1416","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h41m2.8s","赤经D(J2000)":"3.6841111111111116","赤纬(J2000)":"-22h43m9s","赤纬D(J2000)":"-22.719166666666666","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"extremely faint, small, round, 8.6 magnitude star 2 arcmin to north","简略描述":"eF, S, R, * 8.6 n 2'"},{"ID":"1417","标识":"NGC1417","M标识":"NGC1417","拓展名":"","组件":"","Class":"II 455","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h41m57.2s","赤经D(J2000)":"3.6992222222222226","赤纬(J2000)":"-4h42m19s","赤纬D(J2000)":"-4.705277777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.3","短轴(分)":"1.2","方位角":"0","详细描述":"pretty faint, pretty large, a little extended, a little brighter middle, star to southeast","简略描述":"pF, pL, lE, lbM, * sf"},{"ID":"1418","标识":"NGC1418","M标识":"NGC1418","拓展名":"","组件":"","Class":"II 456","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h42m16.2s","赤经D(J2000)":"3.7045000000000003","赤纬(J2000)":"-4h43m54s","赤纬D(J2000)":"-4.7316666666666665","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.6","方位角":"15","详细描述":"very faint, small, extended, 11th magnitude star 1 arcmin to southeast","简略描述":"vF, S, E, * 11 sf 1'"},{"ID":"1419","标识":"NGC1419","M标识":"NGC1419","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h40m42s","赤经D(J2000)":"3.6783333333333332","赤纬(J2000)":"-37h30m40s","赤纬D(J2000)":"-37.51111111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"pretty faint, pretty small, round, pretty suddenly brighter middle","简略描述":"pF, pS, R, psbM"},{"ID":"1420","标识":"NGC1420","M标识":"NGC1420","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h42m40s","赤经D(J2000)":"3.7111111111111112","赤纬(J2000)":"-5h51m8s","赤纬D(J2000)":"-5.852222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, 13th magnitude star to west","简略描述":"F, vS, * 13 p"},{"ID":"1421","标识":"NGC1421","M标识":"NGC1421","拓展名":"","组件":"","Class":"II 291","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h42m29.4s","赤经D(J2000)":"3.708166666666667","赤纬(J2000)":"-13h29m16s","赤纬D(J2000)":"-13.487777777777778","可见光星等V":"11.4","摄影(蓝光)星等B":"12","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"3.4","短轴(分)":"0.8","方位角":"0","详细描述":"faint, considerably large, much extended 0°, mottled but not resolved","简略描述":"F, cL, mE 0°, r"},{"ID":"1422","标识":"NGC1422","M标识":"NGC1422","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h41m31.3s","赤经D(J2000)":"3.692027777777778","赤纬(J2000)":"-21h40m51s","赤纬D(J2000)":"-21.680833333333336","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.3","短轴(分)":"0.6","方位角":"65","详细描述":"extremely faint, pretty small, extended 80°","简略描述":"eF, pS, E 80°"},{"ID":"1423","标识":"NGC1423","M标识":"NGC1423","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h42m40.1s","赤经D(J2000)":"3.711138888888889","赤纬(J2000)":"-6h22m54s","赤纬D(J2000)":"-6.381666666666666","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"22","详细描述":"most extremely faint, small, round, very difficult","简略描述":"eeF, S, R, v diffic"},{"ID":"1424","标识":"NGC1424","M标识":"NGC1424","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h43m14s","赤经D(J2000)":"3.720555555555556","赤纬(J2000)":"-4h43m49s","赤纬D(J2000)":"-4.730277777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"11","详细描述":"very faint, 10th or 11th magnitude star to northwest","简略描述":"vF, * 10·11 np"},{"ID":"1425","标识":"NGC1425","M标识":"NGC1425","拓展名":"","组件":"","Class":"II 852","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h42m11.5s","赤经D(J2000)":"3.7031944444444447","赤纬(J2000)":"-29h53m39s","赤纬D(J2000)":"-29.894166666666667","可见光星等V":"10.6","摄影(蓝光)星等B":"11.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"5.8","短轴(分)":"2.5","方位角":"129","详细描述":"faint, pretty large, irregularly round, gradually brighter middle","简略描述":"F, pL, iR, gbM"},{"ID":"1426","标识":"NGC1426","M标识":"NGC1426","拓展名":"","组件":"","Class":"III 248","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h42m49.3s","赤经D(J2000)":"3.7136944444444446","赤纬(J2000)":"-22h6m28s","赤纬D(J2000)":"-22.10777777777778","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.6","短轴(分)":"1.6","方位角":"111","详细描述":"pretty faint, small, a little extended, brighter middle","简略描述":"pF, S, lE, bM"},{"ID":"1427","标识":"NGC1427","M标识":"NGC1427","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h42m19.2s","赤经D(J2000)":"3.7053333333333334","赤纬(J2000)":"-35h23m34s","赤纬D(J2000)":"-35.39277777777778","可见光星等V":"10.9","摄影(蓝光)星等B":"11.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.8","短轴(分)":"2.6","方位角":"76","详细描述":"pretty faint, small, round, pretty suddenly much brighter middle","简略描述":"pF, S, R, psmbM"},{"ID":"1428","标识":"NGC1428","M标识":"NGC1428","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h42m22.9s","赤经D(J2000)":"3.706361111111111","赤纬(J2000)":"-35h9m14s","赤纬D(J2000)":"-35.153888888888886","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"118","详细描述":"faint","简略描述":"F"},{"ID":"1429","标识":"NGC1429","M标识":"NGC1429","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h44m4.1s","赤经D(J2000)":"3.734472222222222","赤纬(J2000)":"-4h43m5s","赤纬D(J2000)":"-4.718055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, extended 0°, gradually brighter middle and nucleus, eastern of 2","简略描述":"eF, vS, E 0°, gbMN, f of 2"},{"ID":"1430","标识":"NGC1430","M标识":"NGC1430","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h43m25.2s","赤经D(J2000)":"3.723666666666667","赤纬(J2000)":"-18h13m28s","赤纬D(J2000)":"-18.224444444444444","可见光星等V":"99","摄影(蓝光)星等B":"13.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, extended 20°, suddenly brighter middle and nucleus","简略描述":"eF, S, E 20°, sbMN"},{"ID":"1431","标识":"NGC1431","M标识":"NGC1431","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h44m40.7s","赤经D(J2000)":"3.744638888888889","赤纬(J2000)":"+2h50m8s","赤纬D(J2000)":"2.8355555555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.8","方位角":"160","详细描述":"extremely faint, pretty large, irregularly round","简略描述":"eF, pL, iR"},{"ID":"1432","标识":"NGC1432","M标识":"NGC1432","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"昴宿四星云","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h45m49.5s","赤经D(J2000)":"3.76375","赤纬(J2000)":"+24h22m6s","赤纬D(J2000)":"24.368333333333332","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"26","短轴(分)":"26","方位角":"","详细描述":"extremely faint, very large, diffuse (Maja Plejadum)","简略描述":"eF, vL, dif (Maja Plejadum)"},{"ID":"1433","标识":"NGC1433","M标识":"NGC1433","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h42m1.2s","赤经D(J2000)":"3.7003333333333335","赤纬(J2000)":"-47h13m19s","赤纬D(J2000)":"-47.221944444444446","可见光星等V":"9.9","摄影(蓝光)星等B":"10.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"6.5","短轴(分)":"5.9","方位角":"99","详细描述":"very bright, large, pretty much extended, very suddenly very much brighter middle equivalent to 10th magnitude star","简略描述":"vB, L, pmE, vsvmbM * 10"},{"ID":"1434","标识":"NGC1434","M标识":"NGC1434","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h46m12.8s","赤经D(J2000)":"3.7702222222222224","赤纬(J2000)":"-9h40m59s","赤纬D(J2000)":"-9.683055555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"165","详细描述":"extremely faint, small, round, 8.5 magnitude star 25 seconds of time to east and 3 arcmin to north","简略描述":"eF, S, R, * 8.5 f 25s, n 3'"},{"ID":"1435","标识":"NGC1435","M标识":"NGC1435","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"昴宿五星云","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h46m10s","赤经D(J2000)":"3.7694444444444444","赤纬(J2000)":"+23h45m54s","赤纬D(J2000)":"23.765","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"30","短轴(分)":"30","方位角":"","详细描述":"very faint, very large, diffuse (Merope)","简略描述":"vF, vL, dif (Merope)"},{"ID":"1436","标识":"NGC1436","M标识":"NGC1436","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h43m37.1s","赤经D(J2000)":"3.7269722222222224","赤纬(J2000)":"-35h51m15s","赤纬D(J2000)":"-35.85416666666667","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.1","短轴(分)":"2","方位角":"150","详细描述":"a globular cluster, very bright, pretty much extended, pretty gradually brighter middle","简略描述":"globular, vB, pmE, pgbM"},{"ID":"1437","标识":"NGC1437","M标识":"NGC1437","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h43m37.1s","赤经D(J2000)":"3.7269722222222224","赤纬(J2000)":"-35h51m15s","赤纬D(J2000)":"-35.85416666666667","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.1","短轴(分)":"2","方位角":"150","详细描述":"a globular cluster, very bright, pretty much extended, pretty gradually brighter middle","简略描述":"F, vL, R, glbM"},{"ID":"1438","标识":"NGC1438","M标识":"NGC1438","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h45m17.1s","赤经D(J2000)":"3.75475","赤纬(J2000)":"-23h0m8s","赤纬D(J2000)":"-23.002222222222223","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2","短轴(分)":"0.9","方位角":"69","详细描述":"extremely faint, much extended, nuclear, 10th magnitude star 1 arcmin to east","简略描述":"eF, mE, N, * 10 f 1'"},{"ID":"1439","标识":"NGC1439","M标识":"NGC1439","拓展名":"","组件":"","Class":"III 249","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h44m49.8s","赤经D(J2000)":"3.7471666666666668","赤纬(J2000)":"-21h55m13s","赤纬D(J2000)":"-21.92027777777778","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.4","短轴(分)":"2.2","方位角":"27","详细描述":"faint, pretty small, gradually pretty much brighter middle","简略描述":"F, pS, gpmbM"},{"ID":"1440","标识":"NGC1440","M标识":"NGC1440","拓展名":"","组件":"","Class":"II 458","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h45m2.9s","赤经D(J2000)":"3.7508055555555555","赤纬(J2000)":"-18h15m59s","赤纬D(J2000)":"-18.26638888888889","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.2","短轴(分)":"1.6","方位角":"28","详细描述":"pretty bright, pretty small, round, suddenly much brighter middle equivalent to 13th magnitude star","简略描述":"pB, pS, R, smbM * 13"},{"ID":"1441","标识":"NGC1441","M标识":"NGC1441","拓展名":"","组件":"","Class":"II 597","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h45m43s","赤经D(J2000)":"3.7619444444444445","赤纬(J2000)":"-4h5m30s","赤纬D(J2000)":"-4.091666666666667","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"0.7","方位角":"90","详细描述":"very faint, small, irregularly extended, 12th magnitude star to east","简略描述":"vF, S, iE, * 12 f"},{"ID":"1442","标识":"NGC1442","M标识":"NGC1442","拓展名":"","组件":"","Class":"II 594","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h45m2.9s","赤经D(J2000)":"3.7508055555555555","赤纬(J2000)":"-18h15m59s","赤纬D(J2000)":"-18.26638888888889","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.2","短轴(分)":"1.6","方位角":"28","详细描述":"pretty bright, pretty small, round, suddenly much brighter middle equivalent to 13th magnitude star","简略描述":"pB, vS, bM (? = II 458)"},{"ID":"1443","标识":"NGC1443","M标识":"NGC1443","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h45m53.1s","赤经D(J2000)":"3.76475","赤纬(J2000)":"-4h3m8s","赤纬D(J2000)":"-4.052222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, northeast of II 597","简略描述":"vF, nf II 597"},{"ID":"1444","标识":"NGC1444","M标识":"NGC1444","拓展名":"","组件":"","Class":"VIII 80","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV1p","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h49m25s","赤经D(J2000)":"3.823611111111111","赤纬(J2000)":"+52h39m18s","赤纬D(J2000)":"52.655","可见光星等V":"6.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster of about 30 stars from 12th to 14th magnitude","简略描述":"Cl of ab 30 st 12…14"},{"ID":"1445","标识":"NGC1445","M标识":"NGC1445","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h44m56.2s","赤经D(J2000)":"3.7489444444444446","赤纬(J2000)":"-9h51m21s","赤纬D(J2000)":"-9.855833333333333","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"14","详细描述":"very faint, small, round, 9th magnitude star 2 arcmin to northwest","简略描述":"vF, S, R, * 9 np 2'"},{"ID":"1446","标识":"NGC1446","M标识":"NGC1446","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h45m57.5s","赤经D(J2000)":"3.765972222222222","赤纬(J2000)":"-4h6m42s","赤纬D(J2000)":"-4.111666666666666","可见光星等V":"99","摄影(蓝光)星等B":"14.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, east of II 597","简略描述":"eF, f II 597"},{"ID":"1447","标识":"NGC1447","M标识":"NGC1447","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h45m47.1s","赤经D(J2000)":"3.7630833333333333","赤纬(J2000)":"-9h1m6s","赤纬D(J2000)":"-9.018333333333334","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"0.5","方位角":"105","详细描述":"very faint, small, round, nebulous?, 7th or 8th magnitude star 3 arcmin to east","简略描述":"vF, S, R, neb? * 7·8 f 3'"},{"ID":"1448","标识":"NGC1448","M标识":"NGC1448","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h44m31.3s","赤经D(J2000)":"3.742027777777778","赤纬(J2000)":"-44h38m45s","赤纬D(J2000)":"-44.645833333333336","可见光星等V":"10.7","摄影(蓝光)星等B":"11.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"7.6","短轴(分)":"1.7","方位角":"41","详细描述":"pretty bright, large, very much extended 222°","简略描述":"pB, L, vmE 222°"},{"ID":"1449","标识":"NGC1449","M标识":"NGC1449","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h46m3s","赤经D(J2000)":"3.7675","赤纬(J2000)":"-4h8m17s","赤纬D(J2000)":"-4.138055555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.5","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"22","详细描述":"very faint, very small, very little extended","简略描述":"vF, vS, vlE"},{"ID":"1450","标识":"NGC1450","M标识":"NGC1450","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h45m36.5s","赤经D(J2000)":"3.7601388888888887","赤纬(J2000)":"-9h14m5s","赤纬D(J2000)":"-9.23472222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"40","详细描述":"extremely faint, pretty small, round (perhaps double? distance 0.4 arcmin)","简略描述":"eF, pS, R (? D, dist 0'.4)"},{"ID":"1451","标识":"NGC1451","M标识":"NGC1451","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h46m7.1s","赤经D(J2000)":"3.768638888888889","赤纬(J2000)":"-4h4m9s","赤纬D(J2000)":"-4.069166666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"33","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"1452","标识":"NGC1452","M标识":"NGC1452","拓展名":"","组件":"","Class":"II 459","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h45m22.3s","赤经D(J2000)":"3.7561944444444446","赤纬(J2000)":"-18h37m59s","赤纬D(J2000)":"-18.633055555555558","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.8","短轴(分)":"1.5","方位角":"113","详细描述":"faint, round, a little brighter middle","简略描述":"F, R, lbM"},{"ID":"1453","标识":"NGC1453","M标识":"NGC1453","拓展名":"","组件":"","Class":"I 155","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h46m27.2s","赤经D(J2000)":"3.7742222222222224","赤纬(J2000)":"-3h58m8s","赤纬D(J2000)":"-3.968888888888889","可见光星等V":"11.5","摄影(蓝光)星等B":"12.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.4","短轴(分)":"1.9","方位角":"45","详细描述":"pretty bright, small, round, 17th magnitude star in middle","简略描述":"pB, S, R, * 17 m"},{"ID":"1454","标识":"NGC1454","M标识":"NGC1454","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h45m59.3s","赤经D(J2000)":"3.766472222222222","赤纬(J2000)":"-20h39m6s","赤纬D(J2000)":"-20.651666666666664","可见光星等V":"99","摄影(蓝光)星等B":"15.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, round, (perhaps a star?), magnitude 9.5 star 3 arcmin to southwest","简略描述":"vF, eS, R, (? *), * 9.5 sp 3'"},{"ID":"1455","标识":"NGC1455","M标识":"NGC1455","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h45m22.3s","赤经D(J2000)":"3.7561944444444446","赤纬(J2000)":"-18h37m59s","赤纬D(J2000)":"-18.633055555555558","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.8","短轴(分)":"1.5","方位角":"113","详细描述":"faint, round, a little brighter middle","简略描述":"vF, S, lE 30°, sbMN"},{"ID":"1456","标识":"NGC1456","M标识":"NGC1456","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h48m8.3s","赤经D(J2000)":"3.8023055555555554","赤纬(J2000)":"+22h33m30s","赤纬D(J2000)":"22.558333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"double star of magnitudes 10 to 12, companion nebulous (130° position angle, 9 arcsec separation)","简略描述":"D * 10-12, comp nebulous (130°, 9\")"},{"ID":"1457","标识":"NGC1457","M标识":"NGC1457","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h44m31.3s","赤经D(J2000)":"3.742027777777778","赤纬(J2000)":"-44h38m45s","赤纬D(J2000)":"-44.645833333333336","可见光星等V":"10.7","摄影(蓝光)星等B":"11.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"7.6","短轴(分)":"1.7","方位角":"41","详细描述":"pretty faint, pretty large, extremely extended 42°, very gradually pretty much brighter middle","简略描述":"pF, pL, eE 42°, vgpmbM"},{"ID":"1458","标识":"NGC1458","M标识":"NGC1458","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h45m2.9s","赤经D(J2000)":"3.7508055555555555","赤纬(J2000)":"-18h15m59s","赤纬D(J2000)":"-18.26638888888889","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.2","短轴(分)":"1.6","方位角":"28","详细描述":"very faint, very small, round, planetary nebula? nebulous?","简略描述":"vF, vS, R, planetary? neb?"},{"ID":"1459","标识":"NGC1459","M标识":"NGC1459","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h46m57.9s","赤经D(J2000)":"3.78275","赤纬(J2000)":"-25h31m17s","赤纬D(J2000)":"-25.52138888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"167","详细描述":"extremely faint, pretty small, gradually brighter middle","简略描述":"eF, pS, gbM"},{"ID":"1460","标识":"NGC1460","M标识":"NGC1460","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h46m13.6s","赤经D(J2000)":"3.7704444444444443","赤纬(J2000)":"-36h41m48s","赤纬D(J2000)":"-36.696666666666665","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"1","方位角":"63","详细描述":"faint, small, round, star attached","简略描述":"F, S, R, * att"},{"ID":"1461","标识":"NGC1461","M标识":"NGC1461","拓展名":"","组件":"","Class":"II 460","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h48m27.1s","赤经D(J2000)":"3.8075277777777776","赤纬(J2000)":"-16h23m34s","赤纬D(J2000)":"-16.392777777777777","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3","短轴(分)":"0.9","方位角":"155","详细描述":"pretty bright, small, a little extended, much brighter middle and nucleus","简略描述":"pB, S, lE, mbMN"},{"ID":"1462","标识":"NGC1462","M标识":"NGC1462","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h50m23.4s","赤经D(J2000)":"3.8398333333333334","赤纬(J2000)":"+6h58m23s","赤纬D(J2000)":"6.973055555555556","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"48","详细描述":"very faint, small, very little extended","简略描述":"vF, S, vlE"},{"ID":"1463","标识":"NGC1463","M标识":"NGC1463","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h46m15.5s","赤经D(J2000)":"3.770972222222222","赤纬(J2000)":"-59h48m37s","赤纬D(J2000)":"-59.81027777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"45","详细描述":"considerably faint, small, round, gradually a little brighter middle, among 7 bright stars","简略描述":"cF, S, R, glbM, am 7 B st"},{"ID":"1464","标识":"NGC1464","M标识":"NGC1464","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S\/P","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h51m24.4s","赤经D(J2000)":"3.856777777777778","赤纬(J2000)":"-15h24m8s","赤纬D(J2000)":"-15.402222222222223","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"44","详细描述":"pretty faint, small, round, 2 stars near","简略描述":"pF, S, R, 2 st nr"},{"ID":"1465","标识":"NGC1465","M标识":"NGC1465","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h53m31.9s","赤经D(J2000)":"3.8921944444444443","赤纬(J2000)":"+32h29m34s","赤纬D(J2000)":"32.49277777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"165","详细描述":"pretty faint, pretty small, round, pretty bright star near to west","简略描述":"pF, pS, R, pB * nr p"},{"ID":"1466","标识":"NGC1466","M标识":"NGC1466","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"水蛇座","星座(En)":"HYI","赤经(J2000)":"3h44m33.4s","赤经D(J2000)":"3.742611111111111","赤纬(J2000)":"-71h40m18s","赤纬D(J2000)":"-71.67166666666667","可见光星等V":"11.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.9","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty small, irregularly round, gradually a little brighter middle, 7th magnitude star to east","简略描述":"pF, pS, iR, glbM, * 7 f"},{"ID":"1467","标识":"NGC1467","M标识":"NGC1467","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h51m52.7s","赤经D(J2000)":"3.864638888888889","赤纬(J2000)":"-8h50m16s","赤纬D(J2000)":"-8.837777777777779","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"55","详细描述":"extremely faint, very small, round, 9th magnitude star 4 arcmin to south","简略描述":"eF, vS, R, * 9 s 4'"},{"ID":"1468","标识":"NGC1468","M标识":"NGC1468","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h52m12.5s","赤经D(J2000)":"3.870138888888889","赤纬(J2000)":"-6h20m55s","赤纬D(J2000)":"-6.3486111111111105","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"135","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"1469","标识":"NGC1469","M标识":"NGC1469","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"4h0m27.8s","赤经D(J2000)":"4.007722222222222","赤纬(J2000)":"+68h34m39s","赤纬D(J2000)":"68.5775","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.9","短轴(分)":"0.8","方位角":"153","详细描述":"very faint, very small, round, bright star near","简略描述":"vF, vS, R, B * nr"},{"ID":"1470","标识":"NGC1470","M标识":"NGC1470","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h52m9.8s","赤经D(J2000)":"3.869388888888889","赤纬(J2000)":"-9h0m0s","赤纬D(J2000)":"-9","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"169","详细描述":"extremely faint, small, extended 0°","简略描述":"eF, S, E 0°"},{"ID":"1471","标识":"NGC1471","M标识":"NGC1471","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h51m24.4s","赤经D(J2000)":"3.856777777777778","赤纬(J2000)":"-15h24m8s","赤纬D(J2000)":"-15.402222222222223","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"44","详细描述":"pretty faint, small, round, 2 stars near","简略描述":"vF, vS, E 45°"},{"ID":"1472","标识":"NGC1472","M标识":"NGC1472","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h53m47.3s","赤经D(J2000)":"3.896472222222222","赤纬(J2000)":"-8h34m5s","赤纬D(J2000)":"-8.568055555555555","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"70","详细描述":"very faint, extremely small, stellar nucleus, 1st of 3","简略描述":"vF, eS, stell N, 1st of 3"},{"ID":"1473","标识":"NGC1473","M标识":"NGC1473","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"水蛇座","星座(En)":"HYI","赤经(J2000)":"3h47m26.2s","赤经D(J2000)":"3.790611111111111","赤纬(J2000)":"-68h13m14s","赤纬D(J2000)":"-68.22055555555556","可见光星等V":"12.9","摄影(蓝光)星等B":"13.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"36","详细描述":"considerably faint, pretty large, round, gradually a very little brighter middle","简略描述":"cF, pL, R, gvlbM"},{"ID":"1474","标识":"NGC1474","M标识":"NGC1474","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h54m30.3s","赤经D(J2000)":"3.9084166666666667","赤纬(J2000)":"+10h42m25s","赤纬D(J2000)":"10.706944444444444","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"1","方位角":"0","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"1475","标识":"NGC1475","M标识":"NGC1475","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h53m49.8s","赤经D(J2000)":"3.8971666666666667","赤纬(J2000)":"-8h8m15s","赤纬D(J2000)":"-8.1375","可见光星等V":"15.4","摄影(蓝光)星等B":"16.4","B-V":"1","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, extremely small, round, 14th magnitude star 4 arcmin to northwest","简略描述":"eF, eS, R, * 14 np 4'"},{"ID":"1476","标识":"NGC1476","M标识":"NGC1476","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h52m8.6s","赤经D(J2000)":"3.8690555555555557","赤纬(J2000)":"-44h31m56s","赤纬D(J2000)":"-44.532222222222224","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"86","详细描述":"considerably faint, small, extended 90°, gradually brighter middle","简略描述":"cF, S, E 90°, gbM"},{"ID":"1477","标识":"NGC1477","M标识":"NGC1477","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h54m2.8s","赤经D(J2000)":"3.900777777777778","赤纬(J2000)":"-8h34m28s","赤纬D(J2000)":"-8.574444444444444","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"170","详细描述":"extremely faint, very small, 2nd of 3","简略描述":"eF, vS, 2nd of 3"},{"ID":"1478","标识":"NGC1478","M标识":"NGC1478","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h54m7.3s","赤经D(J2000)":"3.9020277777777777","赤纬(J2000)":"-8h33m18s","赤纬D(J2000)":"-8.555000000000001","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"52","详细描述":"extremely faint, very small. 3rd of 3","简略描述":"eF, vS, 3rd of 3"},{"ID":"1479","标识":"NGC1479","M标识":"NGC1479","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h54m20.4s","赤经D(J2000)":"3.9056666666666664","赤纬(J2000)":"-10h12m31s","赤纬D(J2000)":"-10.20861111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, extended, western of 2","简略描述":"eF, S, E, p of 2"},{"ID":"1480","标识":"NGC1480","M标识":"NGC1480","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h54m32s","赤经D(J2000)":"3.908888888888889","赤纬(J2000)":"-10h15m30s","赤纬D(J2000)":"-10.258333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, irregularly round, eastern of 2 (the other being NGC 1479), 10th magnitude star 30 seconds of time to east","简略描述":"eF, S, iR, f of 2, * 10 f 30s"},{"ID":"1481","标识":"NGC1481","M标识":"NGC1481","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h54m28.9s","赤经D(J2000)":"3.908027777777778","赤纬(J2000)":"-20h25m36s","赤纬D(J2000)":"-20.42666666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.7","方位角":"133","详细描述":"extremely faint, small, round, 2 bright stars to east, western of 2","简略描述":"eF, S, R, 2 B st f, p of 2"},{"ID":"1482","标识":"NGC1482","M标识":"NGC1482","拓展名":"","组件":"","Class":"III 962","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h54m38.9s","赤经D(J2000)":"3.9108055555555556","赤纬(J2000)":"-20h30m7s","赤纬D(J2000)":"-20.501944444444444","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.4","短轴(分)":"1.4","方位角":"103","详细描述":"faint, small, very little extended, 2 stars of 10th magnitude near, eastern of 2","简略描述":"F, S, vlE, 2 st 10 nr, f of 2"},{"ID":"1483","标识":"NGC1483","M标识":"NGC1483","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h52m47.7s","赤经D(J2000)":"3.879916666666667","赤纬(J2000)":"-47h28m42s","赤纬D(J2000)":"-47.47833333333333","可见光星等V":"12.7","摄影(蓝光)星等B":"13.1","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"125","详细描述":"considerably faint, pretty large, round, very gradually a little brighter middle","简略描述":"cF, pL, R, vglbM"},{"ID":"1484","标识":"NGC1484","M标识":"NGC1484","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h54m17.4s","赤经D(J2000)":"3.9048333333333334","赤纬(J2000)":"-36h58m15s","赤纬D(J2000)":"-36.97083333333334","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.5","短轴(分)":"0.6","方位角":"80","详细描述":"very faint, large, extended, very gradually a very little brighter middle","简略描述":"vF, L, E, vgvlbM"},{"ID":"1485","标识":"NGC1485","M标识":"NGC1485","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"4h5m3.4s","赤经D(J2000)":"4.0842777777777775","赤纬(J2000)":"+70h59m48s","赤纬D(J2000)":"70.99666666666667","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.1","短轴(分)":"0.7","方位角":"22","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"1486","标识":"NGC1486","M标识":"NGC1486","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h56m18.8s","赤经D(J2000)":"3.938555555555556","赤纬(J2000)":"-21h49m15s","赤纬D(J2000)":"-21.820833333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"2","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"1487","标识":"NGC1487","M标识":"NGC1487","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h55m45s","赤经D(J2000)":"3.9291666666666667","赤纬(J2000)":"-42h22m4s","赤纬D(J2000)":"-42.367777777777775","可见光星等V":"11.6","摄影(蓝光)星等B":"12.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.4","短轴(分)":"1.7","方位角":"55","详细描述":"pretty bright, pretty large, round, gradually brighter middle, 2 stars in a triangle (with the object)","简略描述":"pB, pL, R, gbM, 2 st form a Δ"},{"ID":"1488","标识":"NGC1488","M标识":"NGC1488","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h0m4.7s","赤经D(J2000)":"4.001305555555556","赤纬(J2000)":"+18h34m0s","赤纬D(J2000)":"18.566666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a 12th magnitude star involved in nebulosity (Auwers 19)","简略描述":"* 12 inv in Neb (Auw 19)"},{"ID":"1489","标识":"NGC1489","M标识":"NGC1489","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h57m38.1s","赤经D(J2000)":"3.9605833333333336","赤纬(J2000)":"-19h13m2s","赤纬D(J2000)":"-19.21722222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"12","详细描述":"extremely faint, pretty small, extended 190","简略描述":"eF, pS, E 190°"},{"ID":"1490","标识":"NGC1490","M标识":"NGC1490","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h53m34.1s","赤经D(J2000)":"3.8928055555555554","赤纬(J2000)":"-66h1m5s","赤纬D(J2000)":"-66.01805555555555","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"142","详细描述":"pretty bright, small, very little extended, pretty much brighter middle","简略描述":"pB, S, vlE, pmbM"},{"ID":"1491","标识":"NGC1491","M标识":"NGC1491","拓展名":"","组件":"","Class":"I 258","业余排名":"6.5","中文名":"化石足迹星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"4h3m13.5s","赤经D(J2000)":"4.05375","赤纬(J2000)":"+51h18m58s","赤纬D(J2000)":"51.316111111111105","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"25","方位角":"","详细描述":"very bright, small, irregular figure, brighter middle, mottled but not resolved, star involved","简略描述":"vB, S, iF, bM, r, * inv"},{"ID":"1492","标识":"NGC1492","M标识":"NGC1492","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h58m13.1s","赤经D(J2000)":"3.9703055555555555","赤纬(J2000)":"-35h26m45s","赤纬D(J2000)":"-35.44583333333333","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"10","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"1493","标识":"NGC1493","M标识":"NGC1493","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h57m27.5s","赤经D(J2000)":"3.957638888888889","赤纬(J2000)":"-46h12m42s","赤纬D(J2000)":"-46.211666666666666","可见光星等V":"11.3","摄影(蓝光)星等B":"11.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.8","短轴(分)":"2.8","方位角":"","详细描述":"faint, considerably large, round, very gradually a little brighter middle","简略描述":"F, cL, R, vglbM"},{"ID":"1494","标识":"NGC1494","M标识":"NGC1494","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h57m42.5s","赤经D(J2000)":"3.961805555555556","赤纬(J2000)":"-48h54m34s","赤纬D(J2000)":"-48.909444444444446","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.3","短轴(分)":"2","方位角":"179","详细描述":"faint, large, round, very gradually a very little brighter middle, 3 stars to north","简略描述":"F, L, R, vgvlbM, 3 st n"},{"ID":"1495","标识":"NGC1495","M标识":"NGC1495","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h58m21.4s","赤经D(J2000)":"3.972611111111111","赤纬(J2000)":"-44h27m57s","赤纬D(J2000)":"-44.465833333333336","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3","短轴(分)":"0.5","方位角":"105","详细描述":"extremely faint, small, a little extended 90°, very gradually a very little brighter middle","简略描述":"eF, S, lE 90°, vgvlbM"},{"ID":"1496","标识":"NGC1496","M标识":"NGC1496","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"4h4m31.8s","赤经D(J2000)":"4.0755","赤纬(J2000)":"+52h39m41s","赤纬D(J2000)":"52.66138888888889","可见光星等V":"9.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, segment of a ring","简略描述":"Cl, segment of a ring"},{"ID":"1497","标识":"NGC1497","M标识":"NGC1497","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h2m6.8s","赤经D(J2000)":"4.035222222222222","赤纬(J2000)":"+23h8m0s","赤纬D(J2000)":"23.133333333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"60","详细描述":"extremely faint, very small, irregularly round, much brighter middle","简略描述":"eF, vS, iR, mbM"},{"ID":"1498","标识":"NGC1498","M标识":"NGC1498","拓展名":"","组件":"","Class":"VII 3","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h3m6.8s","赤经D(J2000)":"4.051888888888889","赤纬(J2000)":"-11h49m38s","赤纬D(J2000)":"-11.827222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, small, compressed","简略描述":"Cl, S, C"},{"ID":"1499","标识":"NGC1499","M标识":"NGC1499","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"加利福尼亚星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"4h1m10s","赤经D(J2000)":"4.019444444444445","赤纬(J2000)":"+36h27m36s","赤纬D(J2000)":"36.46","可见光星等V":"99","摄影(蓝光)星等B":"5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"120","短轴(分)":"60","方位角":"120","详细描述":"very faint, very large, extended north-south, diffuse","简略描述":"vF, vL, E ns, dif"},{"ID":"1500","标识":"NGC1500","M标识":"NGC1500","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"3h58m14s","赤经D(J2000)":"3.970555555555556","赤纬(J2000)":"-52h19m42s","赤纬D(J2000)":"-52.32833333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"101","详细描述":"faint, very small, round, pretty much brighter middle, 8th magnitude star to northwest","简略描述":"F, vS, R, pmbM, * 8 np"},{"ID":"1501","标识":"NGC1501","M标识":"NGC1501","拓展名":"","组件":"","Class":"IV 53","业余排名":"5","中文名":"骆驼之眼星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"4h6m59.4s","赤经D(J2000)":"4.116499999999999","赤纬(J2000)":"+60h55m17s","赤纬D(J2000)":"60.921388888888885","可见光星等V":"11.5","摄影(蓝光)星等B":"13.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.87","短轴(分)":"","方位角":"","详细描述":"a planetary, pretty bright, pretty small, very little extended, 1 arcmin diameter","简略描述":"planetary, pB, pS, vlE, 1' diam"},{"ID":"1502","标识":"NGC1502","M标识":"NGC1502","拓展名":"","组件":"","Class":"VII 47","业余排名":"5","中文名":"海盗旗星团","类型":"OCL","含重复类型":"OCL","形态":"II3p","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"4h7m49.2s","赤经D(J2000)":"4.130333333333333","赤纬(J2000)":"+62h19m54s","赤纬D(J2000)":"62.33166666666667","可见光星等V":"6.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, considerably compressed, irregular figure","简略描述":"Cl, pRi, cC, iF"},{"ID":"1503","标识":"NGC1503","M标识":"NGC1503","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h56m33.3s","赤经D(J2000)":"3.9425833333333338","赤纬(J2000)":"-66h2m26s","赤纬D(J2000)":"-66.04055555555556","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"140","详细描述":"extremely faint, pretty small, round, 10th magnitude star to northwest","简略描述":"eF, pS, R, * 10 np"},{"ID":"1504","标识":"NGC1504","M标识":"NGC1504","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h2m29.6s","赤经D(J2000)":"4.041555555555555","赤纬(J2000)":"-9h20m6s","赤纬D(J2000)":"-9.335","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"20","详细描述":"extremely faint, small, round, gradually brighter middle","简略描述":"eF, S, R, gbM"},{"ID":"1505","标识":"NGC1505","M标识":"NGC1505","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h2m36.3s","赤经D(J2000)":"4.043416666666666","赤纬(J2000)":"-9h19m19s","赤纬D(J2000)":"-9.321944444444444","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"80","详细描述":"extremely faint, small, round, gradually brighter middle","简略描述":"eF, S, R, gbM"},{"ID":"1506","标识":"NGC1506","M标识":"NGC1506","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h0m21.6s","赤经D(J2000)":"4.006","赤纬(J2000)":"-52h34m24s","赤纬D(J2000)":"-52.57333333333334","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"80","详细描述":"very most extremely faint, small, round, between 2 stars of magnitude 12 and 13","简略描述":"eeeF, S, R, bet 2 st 12 and 13"},{"ID":"1507","标识":"NGC1507","M标识":"NGC1507","拓展名":"","组件":"","Class":"II 279","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h4m27.2s","赤经D(J2000)":"4.074222222222222","赤纬(J2000)":"-2h11m19s","赤纬D(J2000)":"-2.188611111111111","可见光星等V":"12.3","摄影(蓝光)星等B":"12.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.6","短轴(分)":"1","方位角":"11","详细描述":"very faint, pretty large, much extended, a very little brighter middle, extremely mottled but not resolved","简略描述":"vF, pL, mE, vlbM, er"},{"ID":"1508","标识":"NGC1508","M标识":"NGC1508","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h5m47.6s","赤经D(J2000)":"4.096555555555555","赤纬(J2000)":"+25h24m33s","赤纬D(J2000)":"25.409166666666664","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"24","详细描述":"very faint, very small, round, brighter middle, mottled but not resolved","简略描述":"vF, vS, R, bM, r"},{"ID":"1509","标识":"NGC1509","M标识":"NGC1509","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h3m55.1s","赤经D(J2000)":"4.065305555555556","赤纬(J2000)":"-11h10m43s","赤纬D(J2000)":"-11.17861111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"50","详细描述":"very faint, very small, a little extended, faint star near to west","简略描述":"vF, vS, lE, F * nr p"},{"ID":"1510","标识":"NGC1510","M标识":"NGC1510","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"4h3m32.5s","赤经D(J2000)":"4.059027777777778","赤纬(J2000)":"-43h23m59s","赤纬D(J2000)":"-43.39972222222222","可见光星等V":"13","摄影(蓝光)星等B":"13.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.2","短轴(分)":"1.8","方位角":"90","详细描述":"faint, pretty large, round, very gradually much brighter middle","简略描述":"F, pL, R, vgmbM"},{"ID":"1511","标识":"NGC1511","M标识":"NGC1511","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"水蛇座","星座(En)":"HYI","赤经(J2000)":"3h59m36.8s","赤经D(J2000)":"3.9935555555555555","赤纬(J2000)":"-67h38m5s","赤纬D(J2000)":"-67.63472222222222","可见光星等V":"11.3","摄影(蓝光)星等B":"11.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"3.5","短轴(分)":"1.3","方位角":"125","详细描述":"pretty bright, pretty small, much extended 121.5°, gradually brighter middle","简略描述":"pB, pS, mE 121°.5 gbM"},{"ID":"1512","标识":"NGC1512","M标识":"NGC1512","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"4h3m54s","赤经D(J2000)":"4.0649999999999995","赤纬(J2000)":"-43h20m56s","赤纬D(J2000)":"-43.348888888888894","可见光星等V":"10.3","摄影(蓝光)星等B":"11.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"8.9","短轴(分)":"5.6","方位角":"90","详细描述":"a globular cluster, bright, considerably large, round, brighter middle, partially resolved, some stars seen","简略描述":"globular, B, cL, R, bM, rr"},{"ID":"1513","标识":"NGC1513","M标识":"NGC1513","拓展名":"","组件":"","Class":"VII 60","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1m","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"4h9m57s","赤经D(J2000)":"4.1658333333333335","赤纬(J2000)":"+49h30m54s","赤纬D(J2000)":"49.515","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, large, very rich, pretty compressed, stars very large","简略描述":"Cl, L, vRi, pC, st vL"},{"ID":"1514","标识":"NGC1514","M标识":"NGC1514","拓展名":"","组件":"","Class":"IV 69","业余排名":"5","中文名":"水晶球星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h9m17s","赤经D(J2000)":"4.154722222222222","赤纬(J2000)":"+30h46m35s","赤纬D(J2000)":"30.77638888888889","可见光星等V":"10.9","摄影(蓝光)星等B":"10","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.2","短轴(分)":"","方位角":"","详细描述":"9th magnitude star in a 3 arcmin diameter nebula","简略描述":"* 9m in neb 3' diam"},{"ID":"1515","标识":"NGC1515","M标识":"NGC1515","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h4m2.1s","赤经D(J2000)":"4.06725","赤纬(J2000)":"-54h6m0s","赤纬D(J2000)":"-54.1","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"5.4","短轴(分)":"1.3","方位角":"17","详细描述":"bright, large, very much extended 10°, brighter middle","简略描述":"B, L, vmE 10°, bM"},{"ID":"1516","标识":"NGC1516","M标识":"NGC1516","拓展名":"A","组件":"","Class":"III 499","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h8m7.5s","赤经D(J2000)":"4.135416666666667","赤纬(J2000)":"-8h49m46s","赤纬D(J2000)":"-8.829444444444444","可见光星等V":"14.6","摄影(蓝光)星等B":"15","B-V":"0.4","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"55","详细描述":"most extremely faint, small, extended, pretty suddenly much brighter middle, extremely mottled but not resolved","简略描述":"eeF, S, E, psmbM, er"},{"ID":"1517","标识":"NGC1517","M标识":"NGC1517","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h9m11.9s","赤经D(J2000)":"4.153305555555556","赤纬(J2000)":"+8h38m56s","赤纬D(J2000)":"8.648888888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"1","方位角":"0","详细描述":"very faint, very small, round, mottled but not resolved, 9th or 10th magnitude star to southeast","简略描述":"vF, vS, R, r, * 9, 10 sf"},{"ID":"1518","标识":"NGC1518","M标识":"NGC1518","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h6m49s","赤经D(J2000)":"4.113611111111111","赤纬(J2000)":"-21h10m46s","赤纬D(J2000)":"-21.179444444444446","可见光星等V":"11.8","摄影(蓝光)星等B":"12.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.9","短轴(分)":"1.4","方位角":"35","详细描述":"bright, large, pretty much extended, gradually brighter middle, 8th magnitude star to southwest","简略描述":"B, L, pmE, gbM, * 8 sp"},{"ID":"1519","标识":"NGC1519","M标识":"NGC1519","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h8m7.2s","赤经D(J2000)":"4.1353333333333335","赤纬(J2000)":"-17h11m34s","赤纬D(J2000)":"-17.192777777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.1","短轴(分)":"0.6","方位角":"108","详细描述":"very faint, small, a little extended, very small star involved","简略描述":"vF, S, lE, vS * inv"},{"ID":"1520","标识":"NGC1520","M标识":"NGC1520","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"3h57m51.1s","赤经D(J2000)":"3.964194444444445","赤纬(J2000)":"-76h48m20s","赤纬D(J2000)":"-76.80555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, a little rich, stars of 9th to 10th magnitude","简略描述":"Cl, pL, lRi, st 9-10"},{"ID":"1521","标识":"NGC1521","M标识":"NGC1521","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h8m18.7s","赤经D(J2000)":"4.138527777777778","赤纬(J2000)":"-21h3m6s","赤纬D(J2000)":"-21.051666666666666","可见光星等V":"11.4","摄影(蓝光)星等B":"12.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.7","短轴(分)":"1.6","方位角":"10","详细描述":"pretty bright, round, brighter middle","简略描述":"pB, R, bM"},{"ID":"1522","标识":"NGC1522","M标识":"NGC1522","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h6m7.6s","赤经D(J2000)":"4.10211111111111","赤纬(J2000)":"-52h40m10s","赤纬D(J2000)":"-52.669444444444444","可见光星等V":"13.6","摄影(蓝光)星等B":"13.9","B-V":"0.3","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"42","详细描述":"extremely faint, very small, round, very little brighter middle","简略描述":"eF, vS, R, vlbM"},{"ID":"1523","标识":"NGC1523","M标识":"NGC1523","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h6m11s","赤经D(J2000)":"4.103055555555555","赤纬(J2000)":"-54h5m16s","赤纬D(J2000)":"-54.08777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, round","简略描述":"vF, R"},{"ID":"1524","标识":"NGC1524","M标识":"NGC1524","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h8m7.5s","赤经D(J2000)":"4.135416666666667","赤纬(J2000)":"-8h49m46s","赤纬D(J2000)":"-8.829444444444444","可见光星等V":"14.6","摄影(蓝光)星等B":"15","B-V":"0.4","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"55","详细描述":"most extremely faint, small, extended, pretty suddenly much brighter middle, extremely mottled but not resolved","简略描述":"eF, pS, R, gbM, D neb 340°, 0'.5"},{"ID":"1525","标识":"NGC1525","M标识":"NGC1525","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h8m8.2s","赤经D(J2000)":"4.135611111111111","赤纬(J2000)":"-8h50m5s","赤纬D(J2000)":"-8.834722222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"126","详细描述":"most extremely faint, small, extended, pretty suddenly much brighter middle, extremely mottled but not resolved","简略描述":"eF, pS, R, gbM, D neb 340°, 0'.5"},{"ID":"1526","标识":"NGC1526","M标识":"NGC1526","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"4h5m12.3s","赤经D(J2000)":"4.086749999999999","赤纬(J2000)":"-65h50m24s","赤纬D(J2000)":"-65.83999999999999","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"36","详细描述":"extremely faint, very small, round, gradually a little brighter middle","简略描述":"eF, vS, R, glbM"},{"ID":"1527","标识":"NGC1527","M标识":"NGC1527","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"4h8m24.1s","赤经D(J2000)":"4.140027777777778","赤纬(J2000)":"-47h53m48s","赤纬D(J2000)":"-47.89666666666667","可见光星等V":"10.8","摄影(蓝光)星等B":"11.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"3.9","短轴(分)":"1.5","方位角":"78","详细描述":"pretty bright, pretty small, extended 77°, very suddenly much bright middle and round nucleus","简略描述":"pB, pS, E 77°, vsmbMRN"},{"ID":"1528","标识":"NGC1528","M标识":"NGC1528","拓展名":"","组件":"","Class":"VII 61","业余排名":"5","中文名":"M&M双星团","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"4h15m19s","赤经D(J2000)":"4.255277777777778","赤纬(J2000)":"+51h12m42s","赤纬D(J2000)":"51.211666666666666","可见光星等V":"6.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"18","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, very rich, considerably compressed","简略描述":"Cl, B, vRi, cC"},{"ID":"1529","标识":"NGC1529","M标识":"NGC1529","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"4h7m19.9s","赤经D(J2000)":"4.122194444444444","赤纬(J2000)":"-62h53m58s","赤纬D(J2000)":"-62.89944444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"164","详细描述":"very faint, small, round, gradually brighter middle","简略描述":"vF, S, R, gbM"},{"ID":"1530","标识":"NGC1530","M标识":"NGC1530","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"4h23m26.9s","赤经D(J2000)":"4.390805555555556","赤纬(J2000)":"+75h17m40s","赤纬D(J2000)":"75.29444444444444","可见光星等V":"11.5","摄影(蓝光)星等B":"12.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"4.4","短轴(分)":"2.5","方位角":"24","详细描述":"pretty bright, large","简略描述":"pB, L"},{"ID":"1531","标识":"NGC1531","M标识":"NGC1531","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h11m59.1s","赤经D(J2000)":"4.19975","赤纬(J2000)":"-32h51m3s","赤纬D(J2000)":"-32.850833333333334","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"122","详细描述":"pretty bright, pretty large, round, brighter middle, northwestern of 2","简略描述":"pB, pL, R, bM, np of 2"},{"ID":"1532","标识":"NGC1532","M标识":"NGC1532","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h12m3.8s","赤经D(J2000)":"4.2010555555555555","赤纬(J2000)":"-32h52m23s","赤纬D(J2000)":"-32.87305555555555","可见光星等V":"9.9","摄影(蓝光)星等B":"10.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"11.6","短轴(分)":"3.4","方位角":"33","详细描述":"bright, very large, very much extended 32°, pretty suddenly much brighter middle","简略描述":"B, vL, vmE 32°, psmbM"},{"ID":"1533","标识":"NGC1533","M标识":"NGC1533","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h9m51.9s","赤经D(J2000)":"4.164416666666667","赤纬(J2000)":"-56h7m4s","赤纬D(J2000)":"-56.117777777777775","可见光星等V":"10.7","摄影(蓝光)星等B":"11.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.8","短轴(分)":"2.3","方位角":"151","详细描述":"very bright, very large, round, suddenly much brighter middle, 2 stars of magnitude 10 to northeast","简略描述":"vB, vL, R, smbM, 2 st 10 nf"},{"ID":"1534","标识":"NGC1534","M标识":"NGC1534","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"4h8m46.2s","赤经D(J2000)":"4.146166666666667","赤纬(J2000)":"-62h47m50s","赤纬D(J2000)":"-62.79722222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"76","详细描述":"faint, small, round, very small star 3\/4 of a degree to southeast","简略描述":"F, S, R, vS * ?d sf"},{"ID":"1535","标识":"NGC1535","M标识":"NGC1535","拓展名":"","组件":"","Class":"IV 26","业余排名":"3","中文名":"埃及艳后之眼星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h14m15.8s","赤经D(J2000)":"4.237722222222223","赤纬(J2000)":"-12h44m20s","赤纬D(J2000)":"-12.738888888888889","可见光星等V":"9.6","摄影(蓝光)星等B":"9.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.85","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, very bright, small, round, pretty suddenly or very suddenly brighter middle, mottled but not resolved","简略描述":"planetary, vB, S, R, ps, vsbM, r"},{"ID":"1536","标识":"NGC1536","M标识":"NGC1536","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"4h11m0.2s","赤经D(J2000)":"4.1833888888888895","赤纬(J2000)":"-56h28m57s","赤纬D(J2000)":"-56.4825","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.1","短轴(分)":"1.5","方位角":"155","详细描述":"very faint, round, pretty large, very little brighter middle","简略描述":"vF, R, pL, vlbM"},{"ID":"1537","标识":"NGC1537","M标识":"NGC1537","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h13m40.7s","赤经D(J2000)":"4.227972222222222","赤纬(J2000)":"-31h38m44s","赤纬D(J2000)":"-31.645555555555553","可见光星等V":"10.6","摄影(蓝光)星等B":"11.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.9","短轴(分)":"2.6","方位角":"98","详细描述":"very bright, pretty small, a little extended, pretty suddenly very much brighter middle","简略描述":"vB, pS, lE, psvmbM"},{"ID":"1538","标识":"NGC1538","M标识":"NGC1538","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h14m56s","赤经D(J2000)":"4.248888888888889","赤纬(J2000)":"-13h11m29s","赤纬D(J2000)":"-13.19138888888889","可见光星等V":"15.1","摄影(蓝光)星等B":"16","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, very small, round, gradually brighter middle","简略描述":"eF, vS, R, gbM"},{"ID":"1539","标识":"NGC1539","M标识":"NGC1539","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h19m1.9s","赤经D(J2000)":"4.317194444444445","赤纬(J2000)":"+26h49m39s","赤纬D(J2000)":"26.8275","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, very small, gradually brighter middle","简略描述":"vF, vS, gbM"},{"ID":"1540","标识":"NGC1540","M标识":"NGC1540","拓展名":"A","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h15m10.2s","赤经D(J2000)":"4.252833333333333","赤纬(J2000)":"-28h28m46s","赤纬D(J2000)":"-28.479444444444443","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"72","详细描述":"very faint, very small, extended, gradually a very little brighter middle, mottled but not resolved","简略描述":"vF, vS, E, gvlbM, r"},{"ID":"1541","标识":"NGC1541","M标识":"NGC1541","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h17m0.2s","赤经D(J2000)":"4.283388888888889","赤纬(J2000)":"+0h50m7s","赤纬D(J2000)":"0.8352777777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"83","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"1542","标识":"NGC1542","M标识":"NGC1542","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h17m14.1s","赤经D(J2000)":"4.28725","赤纬(J2000)":"+4h46m55s","赤纬D(J2000)":"4.781944444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"128","详细描述":"very faint, small, extended","简略描述":"vF, S, E"},{"ID":"1543","标识":"NGC1543","M标识":"NGC1543","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"4h12m43.1s","赤经D(J2000)":"4.211972222222222","赤纬(J2000)":"-57h44m14s","赤纬D(J2000)":"-57.73722222222222","可见光星等V":"10.5","摄影(蓝光)星等B":"11.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.8","短轴(分)":"2.8","方位角":"93","详细描述":"bright, pretty large, extended, suddenly much brighter middle and nucleus equal to an 11th magnitude star","简略描述":"B, pL, E, smbMN = * 11"},{"ID":"1544","标识":"NGC1544","M标识":"NGC1544","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"5h2m36.2s","赤经D(J2000)":"5.043388888888889","赤纬(J2000)":"+86h13m22s","赤纬D(J2000)":"86.22277777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"130","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"1545","标识":"NGC1545","M标识":"NGC1545","拓展名":"","组件":"","Class":"VIII 85","业余排名":"5","中文名":"M&M双星团","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"4h20m56.2s","赤经D(J2000)":"4.348944444444444","赤纬(J2000)":"+50h15m19s","赤纬D(J2000)":"50.25527777777778","可见光星等V":"6.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, a little compressed, stars large","简略描述":"Cl, pRi, lC, st L"},{"ID":"1546","标识":"NGC1546","M标识":"NGC1546","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h14m36.7s","赤经D(J2000)":"4.243527777777778","赤纬(J2000)":"-56h3m37s","赤纬D(J2000)":"-56.06027777777778","可见光星等V":"10.9","摄影(蓝光)星等B":"11.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"3.2","短轴(分)":"1.9","方位角":"147","详细描述":"pretty bright, a little extended, gradually brighter middle and extended nucleus, double star to west","简略描述":"pB, lE, gbMEN, ** p"},{"ID":"1547","标识":"NGC1547","M标识":"NGC1547","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h17m12.3s","赤经D(J2000)":"4.28675","赤纬(J2000)":"-17h51m27s","赤纬D(J2000)":"-17.8575","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"133","详细描述":"pretty faint, pretty small, irregularly round (a cluster or nebula with stars involved?)","简略描述":"pF, pS, iR (? Cl or neb w st inv)"},{"ID":"1548","标识":"NGC1548","M标识":"NGC1548","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"4h20m49.6s","赤经D(J2000)":"4.3471111111111105","赤纬(J2000)":"+36h53m55s","赤纬D(J2000)":"36.89861111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"30","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, a little rich, a little compressed, stars from 10th to 12th magnitude","简略描述":"Cl, vL, lRi, lC, st 10…12"},{"ID":"1549","标识":"NGC1549","M标识":"NGC1549","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h15m45s","赤经D(J2000)":"4.2625","赤纬(J2000)":"-55h35m29s","赤纬D(J2000)":"-55.59138888888889","可见光星等V":"9.8","摄影(蓝光)星等B":"10.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"4.9","短轴(分)":"4.1","方位角":"135","详细描述":"bright, pretty small, round","简略描述":"B, pS, R"},{"ID":"1550","标识":"NGC1550","M标识":"NGC1550","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h19m38.1s","赤经D(J2000)":"4.327249999999999","赤纬(J2000)":"+2h24m34s","赤纬D(J2000)":"2.4094444444444445","可见光星等V":"12","摄影(蓝光)星等B":"13.1","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.2","短轴(分)":"1.9","方位角":"30","详细描述":"very faint, small, round, 13th magnitude star near","简略描述":"vF, S, R, * 13 nr"},{"ID":"1551","标识":"NGC1551","M标识":"NGC1551","拓展名":"","组件":"","Class":"II 464","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h19m38.1s","赤经D(J2000)":"4.327249999999999","赤纬(J2000)":"+2h24m34s","赤纬D(J2000)":"2.4094444444444445","可见光星等V":"12","摄影(蓝光)星等B":"13.1","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.2","短轴(分)":"1.9","方位角":"30","详细描述":"very faint, small, round, 13th magnitude star near","简略描述":"F, vS, R, probably = 835"},{"ID":"1552","标识":"NGC1552","M标识":"NGC1552","拓展名":"","组件":"","Class":"III 490","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h20m17.6s","赤经D(J2000)":"4.338222222222222","赤纬(J2000)":"-0h41m33s","赤纬D(J2000)":"-0.6925","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"110","详细描述":"considerably faint, pretty small, a little extended, very gradually brighter middle, 11th magnitude star to southwest","简略描述":"cF, pS, lE, vgbM, * 11 sp"},{"ID":"1553","标识":"NGC1553","M标识":"NGC1553","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h16m10.6s","赤经D(J2000)":"4.269611111111111","赤纬(J2000)":"-55h46m46s","赤纬D(J2000)":"-55.779444444444444","可见光星等V":"9.4","摄影(蓝光)星等B":"10.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"4.5","短轴(分)":"2.8","方位角":"150","详细描述":"very bright, pretty small, round, gradually much brighter middle, among 3 stars","简略描述":"vB, pS, R, gmbM, am 3 st"},{"ID":"1554","标识":"NGC1554","M标识":"NGC1554","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"斯特鲁维遗失星云","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h21m43.5s","赤经D(J2000)":"4.362083333333333","赤纬(J2000)":"+19h31m16s","赤纬D(J2000)":"19.52111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a magnificent or otherwise interesting object, variable, small, round, with a northern nucleus equivalent to a 13th magnitude star","简略描述":"!!! var, S, R, Nn = * 13"},{"ID":"1555","标识":"NGC1555","M标识":"NGC1555","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"欣德变光星云","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h21m56.7s","赤经D(J2000)":"4.365749999999999","赤纬(J2000)":"+19h32m4s","赤纬D(J2000)":"19.534444444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"a magnificent or otherwise interesting object, very faint, small, variable (Auwers 20)","简略描述":"!!! vF, S, variable (Auw 20)"},{"ID":"1556","标识":"NGC1556","M标识":"NGC1556","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h17m44.7s","赤经D(J2000)":"4.29575","赤纬(J2000)":"-50h9m51s","赤纬D(J2000)":"-50.16416666666667","可见光星等V":"13.1","摄影(蓝光)星等B":"13.5","B-V":"0.4","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"167","详细描述":"considerably faint, small, round, very gradually a little brighter middle","简略描述":"cF, S, R, vglbM"},{"ID":"1557","标识":"NGC1557","M标识":"NGC1557","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"水蛇座","星座(En)":"HYI","赤经(J2000)":"4h13m14s","赤经D(J2000)":"4.220555555555555","赤纬(J2000)":"-70h30m30s","赤纬D(J2000)":"-70.50833333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, very little compressed, about 20 scattered stars","简略描述":"Cl, vlC, ab 20 sc st"},{"ID":"1558","标识":"NGC1558","M标识":"NGC1558","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h20m15.7s","赤经D(J2000)":"4.337694444444444","赤纬(J2000)":"-45h1m52s","赤纬D(J2000)":"-45.03111111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.5","短轴(分)":"1","方位角":"72","详细描述":"pretty faint, small, extended, gradually brighter middle","简略描述":"pF, S, E, gbM"},{"ID":"1559","标识":"NGC1559","M标识":"NGC1559","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"4h17m36.7s","赤经D(J2000)":"4.293527777777777","赤纬(J2000)":"-62h47m2s","赤纬D(J2000)":"-62.78388888888889","可见光星等V":"10.7","摄影(蓝光)星等B":"11","B-V":"0.3","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"3.5","短轴(分)":"2","方位角":"64","详细描述":"very bright, very large, much extended, very gradually pretty much brighter middle, 14th magnitude star attached on north","简略描述":"vB, vL, mE, vgpmbM, * 14 att n"},{"ID":"1560","标识":"NGC1560","M标识":"NGC1560","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"4h32m47.5s","赤经D(J2000)":"4.5465277777777775","赤纬(J2000)":"+71h52m46s","赤纬D(J2000)":"71.87944444444443","可见光星等V":"11.4","摄影(蓝光)星等B":"12.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"9.8","短轴(分)":"1.5","方位角":"23","详细描述":"very faint, large, extended, 9.3 magnitude star to southwest","简略描述":"vF, L, E, * 9.3 sp"},{"ID":"1561","标识":"NGC1561","M标识":"NGC1561","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h23m1s","赤经D(J2000)":"4.383611111111112","赤纬(J2000)":"-15h50m43s","赤纬D(J2000)":"-15.845277777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"175","详细描述":"very faint, very small, a little extended 170°, gradually a little brighter middle, 8th magnitude star 6 seconds to west","简略描述":"vF, vS, lE 170°, glbM, * 8 p 6s"},{"ID":"1562","标识":"NGC1562","M标识":"NGC1562","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h21m47.6s","赤经D(J2000)":"4.3632222222222214","赤纬(J2000)":"-15h45m19s","赤纬D(J2000)":"-15.755277777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, extremely small, round, gradually a little brighter middle","简略描述":"vF, eS, R, glbM"},{"ID":"1563","标识":"NGC1563","M标识":"NGC1563","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h22m53.9s","赤经D(J2000)":"4.381638888888888","赤纬(J2000)":"-15h43m58s","赤纬D(J2000)":"-15.732777777777779","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"80","详细描述":"extremely faint, very small, round, a little brighter middle, a double nebula with NGC 1564","简略描述":"eF, vS, R, lbM, D"},{"ID":"1564","标识":"NGC1564","M标识":"NGC1564","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h23m0.9s","赤经D(J2000)":"4.383583333333334","赤纬(J2000)":"-15h44m20s","赤纬D(J2000)":"-15.738888888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"20","详细描述":"extremely faint, very small, round, a little brighter middle, a double nebula with NGC 1563","简略描述":"eF, vS, R, lbM, D"},{"ID":"1565","标识":"NGC1565","M标识":"NGC1565","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h23m23.6s","赤经D(J2000)":"4.38988888888889","赤纬(J2000)":"-15h44m41s","赤纬D(J2000)":"-15.74472222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"170","详细描述":"extremely faint, pretty small, a little extended","简略描述":"eF, pS, lE"},{"ID":"1566","标识":"NGC1566","M标识":"NGC1566","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h20m0.5s","赤经D(J2000)":"4.3334722222222215","赤纬(J2000)":"-54h56m14s","赤纬D(J2000)":"-54.93722222222222","可见光星等V":"9.7","摄影(蓝光)星等B":"10.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"8.2","短轴(分)":"6.5","方位角":"60","详细描述":"bright, very large, very gradually then suddenly very much brighter middle, 15 seconds of time diameter in RA","简略描述":"B, vL, vg, svmbM, 15s d in RA"},{"ID":"1567","标识":"NGC1567","M标识":"NGC1567","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h21m8.7s","赤经D(J2000)":"4.352416666666667","赤纬(J2000)":"-48h15m17s","赤纬D(J2000)":"-48.25472222222222","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"1568","标识":"NGC1568","M标识":"NGC1568","拓展名":"A","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h24m20.6s","赤经D(J2000)":"4.405722222222223","赤纬(J2000)":"-0h44m17s","赤纬D(J2000)":"-0.7380555555555555","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"135","详细描述":"extremely faint, very small, round, nearly between 2 stars","简略描述":"eF, vS, R, nearly bet 2 st"},{"ID":"1569","标识":"NGC1569","M标识":"NGC1569","拓展名":"","组件":"","Class":"II 768","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"4h30m49.1s","赤经D(J2000)":"4.513638888888889","赤纬(J2000)":"+64h50m53s","赤纬D(J2000)":"64.84805555555555","可见光星等V":"11","摄影(蓝光)星等B":"11.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.7","短轴(分)":"1.8","方位角":"120","详细描述":"pretty bright, small, a little extended, brighter nucleus and middle, 9.5 magnitude star 1 arcmin to north","简略描述":"pB, S, lE, bNM, * 9.5 n 1'"},{"ID":"1570","标识":"NGC1570","M标识":"NGC1570","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h22m8.9s","赤经D(J2000)":"4.369138888888888","赤纬(J2000)":"-43h37m48s","赤纬D(J2000)":"-43.63","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"172","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"1571","标识":"NGC1571","M标识":"NGC1571","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E2","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h22m8.9s","赤经D(J2000)":"4.369138888888888","赤纬(J2000)":"-43h37m48s","赤纬D(J2000)":"-43.63","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"172","详细描述":"faint, small, round, gradually brighter middle","简略描述":"vF, S, R, gbM, ** nf"},{"ID":"1572","标识":"NGC1572","M标识":"NGC1572","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h22m42.7s","赤经D(J2000)":"4.378527777777777","赤纬(J2000)":"-40h36m4s","赤纬D(J2000)":"-40.60111111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.4","短轴(分)":"1.2","方位角":"0","详细描述":"pretty faint, small, round, 13th magnitude star 1 arcmin to northeast","简略描述":"pF, S, R, * 13 nf 1'"},{"ID":"1573","标识":"NGC1573","M标识":"NGC1573","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"4h35m4.2s","赤经D(J2000)":"4.584499999999999","赤纬(J2000)":"+73h15m47s","赤纬D(J2000)":"73.26305555555555","可见光星等V":"11.7","摄影(蓝光)星等B":"12.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.9","短轴(分)":"1.3","方位角":"35","详细描述":"very faint, small, magnitude 9.5 star to east","简略描述":"vF, S, * 9.5 f"},{"ID":"1574","标识":"NGC1574","M标识":"NGC1574","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/S0","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"4h21m58.6s","赤经D(J2000)":"4.3662777777777775","赤纬(J2000)":"-56h58m28s","赤纬D(J2000)":"-56.974444444444444","可见光星等V":"10.4","摄影(蓝光)星等B":"11.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"4","短轴(分)":"3.6","方位角":"134","详细描述":"pretty bright, small, round, pretty gradually brighter middle, 2 small (faint) stars to southeast","简略描述":"pB, S, R, pgbM, 2 S st sf"},{"ID":"1575","标识":"NGC1575","M标识":"NGC1575","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB?","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h26m20.5s","赤经D(J2000)":"4.439027777777778","赤纬(J2000)":"-10h5m56s","赤纬D(J2000)":"-10.09888888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"130","详细描述":"very faint, pretty small, round, 9.5 magnitude star 2 arcmin to south","简略描述":"vF, pS, R, * 9.5 s 2'"},{"ID":"1576","标识":"NGC1576","M标识":"NGC1576","拓展名":"","组件":"","Class":"III 587","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h26m18.7s","赤经D(J2000)":"4.438527777777778","赤纬(J2000)":"-3h37m15s","赤纬D(J2000)":"-3.6208333333333336","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"127","详细描述":"extremely faint, brighter middle, between 2 stars","简略描述":"eF, bM, bet 2 st"},{"ID":"1577","标识":"NGC1577","M标识":"NGC1577","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h26m20.5s","赤经D(J2000)":"4.439027777777778","赤纬(J2000)":"-10h5m56s","赤纬D(J2000)":"-10.09888888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"130","详细描述":"very faint, pretty small, round, 9.5 magnitude star 2 arcmin to south","简略描述":"vF, pL, R, lbM, * nr s"},{"ID":"1578","标识":"NGC1578","M标识":"NGC1578","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h23m46.7s","赤经D(J2000)":"4.396305555555556","赤纬(J2000)":"-51h35m58s","赤纬D(J2000)":"-51.599444444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"177","详细描述":"pretty faint, small, round, brighter middle","简略描述":"pF, S, R, bM"},{"ID":"1579","标识":"NGC1579","M标识":"NGC1579","拓展名":"","组件":"","Class":"I 217","业余排名":"5","中文名":"北三裂星云","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"4h30m14.2s","赤经D(J2000)":"4.5039444444444445","赤纬(J2000)":"+35h16m47s","赤纬D(J2000)":"35.27972222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"8","方位角":"","详细描述":"pretty bright, very large, irregularly round, much brighter middle, 8th magnitude star 2 arcmin distant at position angle 350°","简略描述":"pB, vL, iR, mbM, * 8 350°, 2'"},{"ID":"1580","标识":"NGC1580","M标识":"NGC1580","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h28m18.4s","赤经D(J2000)":"4.471777777777778","赤纬(J2000)":"-5h10m45s","赤纬D(J2000)":"-5.179166666666667","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"95","详细描述":"very faint, very small, round, mottled but not resolved","简略描述":"vF, vS, R, r"},{"ID":"1581","标识":"NGC1581","M标识":"NGC1581","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h24m44.9s","赤经D(J2000)":"4.412472222222223","赤纬(J2000)":"-54h56m32s","赤纬D(J2000)":"-54.94222222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"80","详细描述":"faint, small, extended, gradually a little brighter middle","简略描述":"F, S, E, glbM"},{"ID":"1582","标识":"NGC1582","M标识":"NGC1582","拓展名":"","组件":"","Class":"VIII 70","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV2p","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"4h31m39s","赤经D(J2000)":"4.5275","赤纬(J2000)":"+43h44m36s","赤纬D(J2000)":"43.74333333333333","可见光星等V":"7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"24","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, pretty rich, a little compressed, stars large (bright)","简略描述":"Cl, vL, pRi, lC, st L"},{"ID":"1583","标识":"NGC1583","M标识":"NGC1583","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h28m20.7s","赤经D(J2000)":"4.472416666666667","赤纬(J2000)":"-17h35m46s","赤纬D(J2000)":"-17.59611111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, very small, round, suddenly brighter middle and nucleus","简略描述":"F, vS, R, sbMN"},{"ID":"1584","标识":"NGC1584","M标识":"NGC1584","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h28m10.2s","赤经D(J2000)":"4.4695","赤纬(J2000)":"-17h31m26s","赤纬D(J2000)":"-17.523888888888887","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, extremely small, round, suddenly brighter middle and nucleus","简略描述":"F, eS, R, sbMN"},{"ID":"1585","标识":"NGC1585","M标识":"NGC1585","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h27m33s","赤经D(J2000)":"4.4591666666666665","赤纬(J2000)":"-42h9m54s","赤纬D(J2000)":"-42.165","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"175","详细描述":"pretty faint, small, round, gradually brighter middle, 12th magnitude star at position angle 287.8°","简略描述":"pF, S, R, gbM, * 12, 287°.8"},{"ID":"1586","标识":"NGC1586","M标识":"NGC1586","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h30m38.2s","赤经D(J2000)":"4.510611111111111","赤纬(J2000)":"-0h18m19s","赤纬D(J2000)":"-0.30527777777777776","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"155","详细描述":"very faint, irregular figure, very little brighter middle, between a double star and a 14th magnitude star","简略描述":"vF, iF, vlbM, bet ** & * 14"},{"ID":"1587","标识":"NGC1587","M标识":"NGC1587","拓展名":"","组件":"","Class":"II 8","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h30m40s","赤经D(J2000)":"4.511111111111111","赤纬(J2000)":"+0h39m45s","赤纬D(J2000)":"0.6625","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"70","详细描述":"faint, pretty small, round, mottled but not resolved, western of double nebula","简略描述":"F, pS, R, r, p of D neb"},{"ID":"1588","标识":"NGC1588","M标识":"NGC1588","拓展名":"","组件":"","Class":"II 9","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h30m43.7s","赤经D(J2000)":"4.512138888888889","赤纬(J2000)":"+0h39m55s","赤纬D(J2000)":"0.6652777777777777","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"175","详细描述":"faint, very small, round, mottled but not resolved, eastern of double nebula","简略描述":"F, vS, R, r, f of D neb"},{"ID":"1589","标识":"NGC1589","M标识":"NGC1589","拓展名":"","组件":"","Class":"II 7","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h30m45.4s","赤经D(J2000)":"4.512611111111111","赤纬(J2000)":"+0h51m48s","赤纬D(J2000)":"0.8633333333333333","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.2","短轴(分)":"1","方位角":"160","详细描述":"faint, pretty large, a little extended 132°, a star 80 arcsec distant at position angle 42°","简略描述":"F, pL, lE 132°, * 42°, 80\""},{"ID":"1590","标识":"NGC1590","M标识":"NGC1590","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h31m10.2s","赤经D(J2000)":"4.5195","赤纬(J2000)":"+7h37m51s","赤纬D(J2000)":"7.630833333333334","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"95","详细描述":"faint, small, 12th magnitude star to northeast","简略描述":"F, S, * 12 nf"},{"ID":"1591","标识":"NGC1591","M标识":"NGC1591","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h29m30.7s","赤经D(J2000)":"4.4918611111111115","赤纬(J2000)":"-26h42m46s","赤纬D(J2000)":"-26.712777777777777","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"30","详细描述":"pretty faint, pretty small, round, gradually brighter middle","简略描述":"pF, pS, R, gbM"},{"ID":"1592","标识":"NGC1592","M标识":"NGC1592","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h29m40.7s","赤经D(J2000)":"4.494638888888889","赤纬(J2000)":"-27h24m29s","赤纬D(J2000)":"-27.408055555555553","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.7","短轴(分)":"1","方位角":"96","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"1593","标识":"NGC1593","M标识":"NGC1593","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h32m6.1s","赤经D(J2000)":"4.535027777777778","赤纬(J2000)":"+0h34m4s","赤纬D(J2000)":"0.5677777777777777","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"130","详细描述":"very faint","简略描述":"vF"},{"ID":"1594","标识":"NGC1594","M标识":"NGC1594","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h30m51.5s","赤经D(J2000)":"4.514305555555556","赤纬(J2000)":"-5h47m52s","赤纬D(J2000)":"-5.797777777777777","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"60","详细描述":"very faint, pretty small","简略描述":"vF, pS"},{"ID":"1595","标识":"NGC1595","M标识":"NGC1595","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"雕具座星系群","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h28m21.6s","赤经D(J2000)":"4.472666666666667","赤纬(J2000)":"-47h48m55s","赤纬D(J2000)":"-47.81527777777777","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"17","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"1596","标识":"NGC1596","M标识":"NGC1596","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h27m38s","赤经D(J2000)":"4.460555555555556","赤纬(J2000)":"-55h1m35s","赤纬D(J2000)":"-55.02638888888889","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"3.7","短轴(分)":"0.9","方位角":"20","详细描述":"bright, pretty large, much extended 15°, suddenly much brighter middle, western of 2","简略描述":"B, pL, mE 15°, smbM, p of 2"},{"ID":"1597","标识":"NGC1597","M标识":"NGC1597","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h31m13.4s","赤经D(J2000)":"4.520388888888889","赤纬(J2000)":"-11h17m24s","赤纬D(J2000)":"-11.29","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"95","详细描述":"extremely faint, very small, round, gradually brighter middle","简略描述":"eF, vS, R, gbM"},{"ID":"1598","标识":"NGC1598","M标识":"NGC1598","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"雕具座星系群","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h28m33.4s","赤经D(J2000)":"4.475944444444445","赤纬(J2000)":"-47h46m57s","赤纬D(J2000)":"-47.7825","可见光星等V":"13.3","摄影(蓝光)星等B":"13.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"123","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"1599","标识":"NGC1599","M标识":"NGC1599","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h31m38.8s","赤经D(J2000)":"4.527444444444445","赤纬(J2000)":"-4h35m19s","赤纬D(J2000)":"-4.588611111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.1","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"174","详细描述":"very faint, very small, round, very little brighter middle","简略描述":"vF, vS, R, vlbM"},{"ID":"1600","标识":"NGC1600","M标识":"NGC1600","拓展名":"","组件":"","Class":"I 158","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h31m39.9s","赤经D(J2000)":"4.52775","赤纬(J2000)":"-5h5m14s","赤纬D(J2000)":"-5.087222222222222","可见光星等V":"10.9","摄影(蓝光)星等B":"11.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.5","短轴(分)":"1.7","方位角":"15","详细描述":"pretty bright, pretty large, round, gradually much brighter middle","简略描述":"pB, pL, R, gmbM"},{"ID":"1601","标识":"NGC1601","M标识":"NGC1601","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h31m41.7s","赤经D(J2000)":"4.52825","赤纬(J2000)":"-5h3m35s","赤纬D(J2000)":"-5.059722222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"90","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"1602","标识":"NGC1602","M标识":"NGC1602","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm\/P","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h27m54.4s","赤经D(J2000)":"4.465111111111112","赤纬(J2000)":"-55h3m24s","赤纬D(J2000)":"-55.056666666666665","可见光星等V":"13","摄影(蓝光)星等B":"13.3","B-V":"0.3","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"83","详细描述":"extremely faint, pretty large, a little extended, the following (eastern) of 2","简略描述":"eF, pL, lE, f of 2"},{"ID":"1603","标识":"NGC1603","M标识":"NGC1603","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h31m49.9s","赤经D(J2000)":"4.5305277777777775","赤纬(J2000)":"-5h5m38s","赤纬D(J2000)":"-5.0938888888888885","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"37","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"1604","标识":"NGC1604","M标识":"NGC1604","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h31m58.5s","赤经D(J2000)":"4.532916666666667","赤纬(J2000)":"-5h22m10s","赤纬D(J2000)":"-5.3694444444444445","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.7","方位角":"71","详细描述":"extremely faint, small, round, between a star and a double star","简略描述":"eF, S, R, bet * and D *"},{"ID":"1605","标识":"NGC1605","M标识":"NGC1605","拓展名":"","组件":"","Class":"VI 26","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1m","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"4h34m52.2s","赤经D(J2000)":"4.581166666666666","赤纬(J2000)":"+45h16m17s","赤纬D(J2000)":"45.271388888888886","可见光星等V":"10.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"cluster, very faint, pretty small, compressed, stars extremely small","简略描述":"Cl, vF, pS, C, st eS"},{"ID":"1606","标识":"NGC1606","M标识":"NGC1606","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h32m3.3s","赤经D(J2000)":"4.53425","赤纬(J2000)":"-5h1m55s","赤纬D(J2000)":"-5.031944444444444","可见光星等V":"14.9","摄影(蓝光)星等B":"15.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"1607","标识":"NGC1607","M标识":"NGC1607","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h32m3.1s","赤经D(J2000)":"4.534194444444444","赤纬(J2000)":"-4h27m38s","赤纬D(J2000)":"-4.460555555555556","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.4","方位角":"50","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"1608","标识":"NGC1608","M标识":"NGC1608","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h32m6.1s","赤经D(J2000)":"4.535027777777778","赤纬(J2000)":"+0h34m4s","赤纬D(J2000)":"0.5677777777777777","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"130","详细描述":"pretty faint, considerably small, 12th magnitude star 2 arcmin to north","简略描述":"pF, eS, * 12 m 2' n"},{"ID":"1609","标识":"NGC1609","M标识":"NGC1609","拓展名":"","组件":"","Class":"III 585","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h32m45s","赤经D(J2000)":"4.545833333333333","赤纬(J2000)":"-4h22m19s","赤纬D(J2000)":"-4.371944444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"95","详细描述":"very faint, extremely small, 17th magnitude star 45 arcsec to north","简略描述":"vF, eS, * 17 45\" n"},{"ID":"1610","标识":"NGC1610","M标识":"NGC1610","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h32m44.7s","赤经D(J2000)":"4.54575","赤纬(J2000)":"-4h34m55s","赤纬D(J2000)":"-4.581944444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, round, brighter middle and nucleus","简略描述":"eF, vS, R, bMN"},{"ID":"1611","标识":"NGC1611","M标识":"NGC1611","拓展名":"","组件":"","Class":"III 586","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h33m5.8s","赤经D(J2000)":"4.551611111111111","赤纬(J2000)":"-4h17m49s","赤纬D(J2000)":"-4.296944444444445","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2","短轴(分)":"0.6","方位角":"108","详细描述":"extremely faint, small, extended 90°±","简略描述":"eF, S, E 90° ±"},{"ID":"1612","标识":"NGC1612","M标识":"NGC1612","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h33m13.1s","赤经D(J2000)":"4.553638888888889","赤纬(J2000)":"-4h10m19s","赤纬D(J2000)":"-4.171944444444445","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"1","方位角":"142","详细描述":"very faint, very small, round, gradually much brighter middle","简略描述":"vF, vS, R, gmbM"},{"ID":"1613","标识":"NGC1613","M标识":"NGC1613","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h33m25.3s","赤经D(J2000)":"4.557027777777778","赤纬(J2000)":"-4h15m54s","赤纬D(J2000)":"-4.265","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.8","方位角":"45","详细描述":"faint, very small, round, much brighter middle","简略描述":"F, vS, R, mbM"},{"ID":"1614","标识":"NGC1614","M标识":"NGC1614","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h33m59.8s","赤经D(J2000)":"4.5666111111111105","赤纬(J2000)":"-8h34m45s","赤纬D(J2000)":"-8.579166666666666","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"142","详细描述":"pretty faint, small, round, a little brighter middle","简略描述":"pF, S, R, lbM"},{"ID":"1615","标识":"NGC1615","M标识":"NGC1615","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h36m1.9s","赤经D(J2000)":"4.600527777777778","赤纬(J2000)":"+19h57m3s","赤纬D(J2000)":"19.950833333333332","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"115","详细描述":"very faint, very small, round, a little brighter middle, very small star involved","简略描述":"vF, vS, R, lbM, vS * inv"},{"ID":"1616","标识":"NGC1616","M标识":"NGC1616","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h32m41.9s","赤经D(J2000)":"4.544972222222222","赤纬(J2000)":"-43h42m54s","赤纬D(J2000)":"-43.715","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"0.9","方位角":"36","详细描述":"faint, small, extended, very gradually a little brighter middle","简略描述":"F, S, E, vglbM"},{"ID":"1617","标识":"NGC1617","M标识":"NGC1617","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h31m39.5s","赤经D(J2000)":"4.527638888888889","赤纬(J2000)":"-54h36m7s","赤纬D(J2000)":"-54.60194444444445","可见光星等V":"10.4","摄影(蓝光)星等B":"11.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"4.3","短轴(分)":"2.1","方位角":"107","详细描述":"bright, large, much extended 106°, very gradually then very suddenly much brighter middle and nucleus 5 arcsec (across)","简略描述":"B, L, mE 106°, vg, vsmbMN 5\""},{"ID":"1618","标识":"NGC1618","M标识":"NGC1618","拓展名":"","组件":"","Class":"II 524","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h36m6.6s","赤经D(J2000)":"4.6018333333333326","赤纬(J2000)":"-3h8m55s","赤纬D(J2000)":"-3.1486111111111112","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.4","短轴(分)":"0.8","方位角":"26","详细描述":"faint, small, irregular figure, little brighter middle, 2 stars to southeast","简略描述":"F, S, iF, lbM, 2 st sf"},{"ID":"1619","标识":"NGC1619","M标识":"NGC1619","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h36m11.4s","赤经D(J2000)":"4.603166666666667","赤纬(J2000)":"-4h49m57s","赤纬D(J2000)":"-4.8325","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, round","简略描述":"eeF, S, R"},{"ID":"1620","标识":"NGC1620","M标识":"NGC1620","拓展名":"","组件":"","Class":"II 514","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h36m37.2s","赤经D(J2000)":"4.610333333333333","赤纬(J2000)":"-0h8m39s","赤纬D(J2000)":"-0.14416666666666667","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.9","短轴(分)":"1","方位角":"25","详细描述":"very faint, pretty large, much extended 140°, bright double star to northeast","简略描述":"vF, pL, mE 140°, B ** nf"},{"ID":"1621","标识":"NGC1621","M标识":"NGC1621","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E4","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h36m25s","赤经D(J2000)":"4.606944444444444","赤纬(J2000)":"-4h59m12s","赤纬D(J2000)":"-4.986666666666666","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"105","详细描述":"extremely faint, small, round, little brighter middle","简略描述":"eF, S, R, lbM"},{"ID":"1622","标识":"NGC1622","M标识":"NGC1622","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h36m36.6s","赤经D(J2000)":"4.610166666666666","赤纬(J2000)":"-3h11m18s","赤纬D(J2000)":"-3.188333333333333","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.7","短轴(分)":"0.7","方位角":"33","详细描述":"very faint, small, 20th magnitude star 5 seconds of time to west, (WH) II 524 to west","简略描述":"vF, S, * 20 p 5s, II 524 p"},{"ID":"1623","标识":"NGC1623","M标识":"NGC1623","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h35m32.2s","赤经D(J2000)":"4.5922777777777775","赤纬(J2000)":"-13h33m23s","赤纬D(J2000)":"-13.55638888888889","可见光星等V":"15.6","摄影(蓝光)星等B":"16.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"15","详细描述":"extremely faint, very small, round, gradually brighter middle and nucleus","简略描述":"eF, vS, R, gbMN"},{"ID":"1624","标识":"NGC1624","M标识":"NGC1624","拓展名":"","组件":"","Class":"V 49","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2pn","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"4h40m36.4s","赤经D(J2000)":"4.676777777777778","赤纬(J2000)":"+50h27m42s","赤纬D(J2000)":"50.461666666666666","可见光星等V":"11.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"faint, considerably large, irregular figure, 6 or 7 stars plus nebula","简略描述":"F, cL, iF, 6 or 7 st + neb"},{"ID":"1625","标识":"NGC1625","M标识":"NGC1625","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h37m6.3s","赤经D(J2000)":"4.6184166666666675","赤纬(J2000)":"-3h18m14s","赤纬D(J2000)":"-3.303888888888889","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"2.1","短轴(分)":"0.5","方位角":"131","详细描述":"very faint, extended 141°, suddenly brighter middle, faint star attached on northwest, 6th magnitude star 48 seconds of time to west","简略描述":"vF, E 141°, sbM, F * att np, * 6 p 48s"},{"ID":"1626","标识":"NGC1626","M标识":"NGC1626","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h36m25s","赤经D(J2000)":"4.606944444444444","赤纬(J2000)":"-4h59m12s","赤纬D(J2000)":"-4.986666666666666","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"105","详细描述":"extremely faint, small, round, little brighter middle","简略描述":"eF, vS, R, * 8 np"},{"ID":"1627","标识":"NGC1627","M标识":"NGC1627","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h37m37.9s","赤经D(J2000)":"4.627194444444445","赤纬(J2000)":"-4h53m17s","赤纬D(J2000)":"-4.888055555555555","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"1.5","方位角":"138","详细描述":"extremely faint, pretty large, round, 2 stars to southeast, southern of 2","简略描述":"eF, pL, R, 2 st sf, s of 2"},{"ID":"1628","标识":"NGC1628","M标识":"NGC1628","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h37m36.1s","赤经D(J2000)":"4.626694444444445","赤纬(J2000)":"-4h42m57s","赤纬D(J2000)":"-4.715833333333333","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"6","详细描述":"very faint, pretty small, much extended north south, northern of 2","简略描述":"vF, pS, mE ns, n of 2"},{"ID":"1629","标识":"NGC1629","M标识":"NGC1629","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"水蛇座","星座(En)":"HYI","赤经(J2000)":"4h29m37s","赤经D(J2000)":"4.493611111111111","赤纬(J2000)":"-71h50m18s","赤纬D(J2000)":"-71.83833333333332","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, round, gradually a little brighter middle","简略描述":"vF, pL, R, glbM"},{"ID":"1630","标识":"NGC1630","M标识":"NGC1630","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h37m15.4s","赤经D(J2000)":"4.6209444444444445","赤纬(J2000)":"-18h54m7s","赤纬D(J2000)":"-18.901944444444442","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"140","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"1631","标识":"NGC1631","M标识":"NGC1631","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h38m24.1s","赤经D(J2000)":"4.640027777777777","赤纬(J2000)":"-20h39m1s","赤纬D(J2000)":"-20.650277777777777","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"44","详细描述":"nebula; no description","简略描述":"Neb. No description"},{"ID":"1632","标识":"NGC1632","M标识":"NGC1632","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h39m58.5s","赤经D(J2000)":"4.666250000000001","赤纬(J2000)":"-9h27m21s","赤纬D(J2000)":"-9.455833333333333","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.6","方位角":"40","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"1633","标识":"NGC1633","M标识":"NGC1633","拓展名":"","组件":"","Class":"III 952","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h40m9.1s","赤经D(J2000)":"4.669194444444445","赤纬(J2000)":"+7h20m59s","赤纬D(J2000)":"7.349722222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.9","方位角":"51","详细描述":"extremely faint, small, round, 8th magnitude star to southwest, preceding (western) of double nebula","简略描述":"eF, S, R, * 8 sp, p of D neb"},{"ID":"1634","标识":"NGC1634","M标识":"NGC1634","拓展名":"","组件":"","Class":"III 953","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h40m9.8s","赤经D(J2000)":"4.669388888888889","赤纬(J2000)":"+7h20m20s","赤纬D(J2000)":"7.338888888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"109","详细描述":"extremely faint, very small, following (eastern) of double nebula","简略描述":"eF, vS, f of D neb"},{"ID":"1635","标识":"NGC1635","M标识":"NGC1635","拓展名":"","组件":"","Class":"II 515","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h40m7.9s","赤经D(J2000)":"4.668861111111111","赤纬(J2000)":"-0h32m50s","赤纬D(J2000)":"-0.5472222222222222","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"5","详细描述":"faint, small, round, brighter middle, 11th magnitude star 12.5 seconds of time to northeast","简略描述":"F, S, R, bM, * 11 nf 12s.5"},{"ID":"1636","标识":"NGC1636","M标识":"NGC1636","拓展名":"","组件":"","Class":"II 522","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h40m40.2s","赤经D(J2000)":"4.677833333333334","赤纬(J2000)":"-8h36m28s","赤纬D(J2000)":"-8.607777777777777","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"0","详细描述":"very faint, pretty small, round, very gradually brighter middle, mottled but not resolved, star 1 arcmin to northeast","简略描述":"vF, pS, R, vgbM, r, * nf 1'"},{"ID":"1637","标识":"NGC1637","M标识":"NGC1637","拓展名":"","组件":"","Class":"I 122","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h41m28.2s","赤经D(J2000)":"4.691166666666667","赤纬(J2000)":"-2h51m28s","赤纬D(J2000)":"-2.8577777777777778","可见光星等V":"10.8","摄影(蓝光)星等B":"11.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.3","短轴(分)":"2.7","方位角":"24","详细描述":"considerably bright, large, round, very gradually brighter middle","简略描述":"cB, L, R, vgbM"},{"ID":"1638","标识":"NGC1638","M标识":"NGC1638","拓展名":"","组件":"","Class":"II 525","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h41m36.4s","赤经D(J2000)":"4.693444444444444","赤纬(J2000)":"-1h48m30s","赤纬D(J2000)":"-1.8083333333333333","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"70","详细描述":"faint, pretty large, a little extended","简略描述":"F, pL, lE"},{"ID":"1639","标识":"NGC1639","M标识":"NGC1639","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h40m52.3s","赤经D(J2000)":"4.681194444444444","赤纬(J2000)":"-16h59m29s","赤纬D(J2000)":"-16.99138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, round, between 2 stars","简略描述":"eF, vS, R, bet 2 st"},{"ID":"1640","标识":"NGC1640","M标识":"NGC1640","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h42m14.5s","赤经D(J2000)":"4.704027777777778","赤纬(J2000)":"-20h26m5s","赤纬D(J2000)":"-20.434722222222224","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.7","短轴(分)":"2.3","方位角":"45","详细描述":"very faint, pretty small, extended 40°, gradually brighter middle","简略描述":"vF, pS, E 40°, gbM"},{"ID":"1641","标识":"NGC1641","M标识":"NGC1641","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h35m38s","赤经D(J2000)":"4.5938888888888885","赤纬(J2000)":"-65h46m6s","赤纬D(J2000)":"-65.76833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"6","方位角":"","详细描述":"cluster, pretty large, pretty rich, pretty much compressed, stars from 11th to 16th magnitude","简略描述":"Cl, pL, pRi, pmC, st 11…16"},{"ID":"1642","标识":"NGC1642","M标识":"NGC1642","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h42m54.9s","赤经D(J2000)":"4.71525","赤纬(J2000)":"+0h37m8s","赤纬D(J2000)":"0.6188888888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"175","详细描述":"faint, round, cometary, making a triangle with two 18th magnitude stars to the east","简略描述":"F, R, Cometary, Δ with 2 st 18, f"},{"ID":"1643","标识":"NGC1643","M标识":"NGC1643","拓展名":"","组件":"","Class":"III 588","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h43m43.9s","赤经D(J2000)":"4.728861111111112","赤纬(J2000)":"-5h19m8s","赤纬D(J2000)":"-5.318888888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"147","详细描述":"extremely faint, very small, irregularly round, brighter middle","简略描述":"eF, vS, iR, bM"},{"ID":"1644","标识":"NGC1644","M标识":"NGC1644","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h37m39.6s","赤经D(J2000)":"4.627666666666667","赤纬(J2000)":"-66h11m49s","赤纬D(J2000)":"-66.19694444444445","可见光星等V":"12.9","摄影(蓝光)星等B":"12.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.6","短轴(分)":"","方位角":"","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"1645","标识":"NGC1645","M标识":"NGC1645","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a\/P","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h44m6.3s","赤经D(J2000)":"4.735083333333334","赤纬(J2000)":"-5h27m54s","赤纬D(J2000)":"-5.465","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.1","短轴(分)":"0.9","方位角":"85","详细描述":"very faint, pretty small, round (h 328 to northwest)","简略描述":"vF, pS, R (h 328 np)"},{"ID":"1646","标识":"NGC1646","M标识":"NGC1646","拓展名":"","组件":"1","Class":"II 523","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h44m23.5s","赤经D(J2000)":"4.739861111111111","赤纬(J2000)":"-8h31m53s","赤纬D(J2000)":"-8.53138888888889","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.2","短轴(分)":"1.3","方位角":"165","详细描述":"faint, very small, irregularly round, brighter middle, 7th magnitude star to northwest","简略描述":"F, vS, iR, bM, * 7 np"},{"ID":"1647","标识":"NGC1647","M标识":"NGC1647","拓展名":"","组件":"","Class":"VIII 8","业余排名":"5","中文名":"海盗之月星团","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h45m42.2s","赤经D(J2000)":"4.761722222222223","赤纬(J2000)":"+19h7m9s","赤纬D(J2000)":"19.11916666666667","可见光星等V":"6.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"40","短轴(分)":"","方位角":"","详细描述":"cluster, very large, large stars, scattered","简略描述":"Cl, vL, st L, sc"},{"ID":"1648","标识":"NGC1648","M标识":"NGC1648","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h44m34.7s","赤经D(J2000)":"4.742972222222222","赤纬(J2000)":"-8h28m42s","赤纬D(J2000)":"-8.478333333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"4","详细描述":"most extremely faint, pretty small, very difficult, (WH) II 523 to southwest","简略描述":"eeF, pS, v diffic, II 523 sp"},{"ID":"1649","标识":"NGC1649","M标识":"NGC1649","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h38m22.9s","赤经D(J2000)":"4.639694444444444","赤纬(J2000)":"-68h40m23s","赤纬D(J2000)":"-68.67305555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, round, gradually brighter middle","简略描述":"F, pS, R, gbM"},{"ID":"1650","标识":"NGC1650","M标识":"NGC1650","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h45m11.4s","赤经D(J2000)":"4.753166666666667","赤纬(J2000)":"-15h52m12s","赤纬D(J2000)":"-15.870000000000001","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.3","短轴(分)":"1.3","方位角":"170","详细描述":"very faint, pretty small, extended 0°, brighter middle and nucleus","简略描述":"vF, pS, E 0°, bMN"},{"ID":"1651","标识":"NGC1651","M标识":"NGC1651","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"4h37m32.7s","赤经D(J2000)":"4.625750000000001","赤纬(J2000)":"-70h35m8s","赤纬D(J2000)":"-70.58555555555554","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.5","短轴(分)":"","方位角":"","详细描述":"pretty faint, large, very little extended, very gradually a little brighter middle","简略描述":"pF, L, vlE, vglbM"},{"ID":"1652","标识":"NGC1652","M标识":"NGC1652","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h38m22.9s","赤经D(J2000)":"4.639694444444444","赤纬(J2000)":"-68h40m23s","赤纬D(J2000)":"-68.67305555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, gradually a little brighter middle","简略描述":"vF, S, R, glbM"},{"ID":"1653","标识":"NGC1653","M标识":"NGC1653","拓展名":"","组件":"","Class":"II 526","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h45m47.5s","赤经D(J2000)":"4.763194444444444","赤纬(J2000)":"-2h23m34s","赤纬D(J2000)":"-2.392777777777778","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"faint, considerably small, round, a little brighter middle","简略描述":"F, cS, R, lbM"},{"ID":"1654","标识":"NGC1654","M标识":"NGC1654","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h45m48.4s","赤经D(J2000)":"4.763444444444445","赤纬(J2000)":"-2h5m0s","赤纬D(J2000)":"-2.0833333333333335","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, small, round, a little brighter middle, mottled but not resolved? western of 2","简略描述":"F, S, R, lbM, r? p of 2"},{"ID":"1655","标识":"NGC1655","M标识":"NGC1655","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h47m11.8s","赤经D(J2000)":"4.786611111111111","赤纬(J2000)":"+20h55m25s","赤纬D(J2000)":"20.92361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, round, gradually brighter middle, 10th magnitude star to south","简略描述":"pB, R, gbM, * 10 s"},{"ID":"1656","标识":"NGC1656","M标识":"NGC1656","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h45m53.3s","赤经D(J2000)":"4.764805555555555","赤纬(J2000)":"-5h8m11s","赤纬D(J2000)":"-5.136388888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"1","方位角":"123","详细描述":"extremely faint, irregular figure?","简略描述":"eF, iF ?"},{"ID":"1657","标识":"NGC1657","M标识":"NGC1657","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h46m7.3s","赤经D(J2000)":"4.768694444444445","赤纬(J2000)":"-2h4m37s","赤纬D(J2000)":"-2.0769444444444445","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"150","详细描述":"fainter but larger than preceding (western) one","简略描述":"Fainter but larger than p one"},{"ID":"1658","标识":"NGC1658","M标识":"NGC1658","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h44m1.1s","赤经D(J2000)":"4.733638888888889","赤纬(J2000)":"-41h27m49s","赤纬D(J2000)":"-41.46361111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"124","详细描述":"faint, pretty small, pretty much extended, gradually a little brighter middle","简略描述":"F, pS, pmE, glbM"},{"ID":"1659","标识":"NGC1659","M标识":"NGC1659","拓展名":"","组件":"","Class":"III 589","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h46m30s","赤经D(J2000)":"4.775","赤纬(J2000)":"-4h47m19s","赤纬D(J2000)":"-4.788611111111111","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"50","详细描述":"pretty faint, pretty small, irregularly extended 90°±, brighter middle","简略描述":"pF, pS, iE 90° ±, bM"},{"ID":"1660","标识":"NGC1660","M标识":"NGC1660","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h44m11.1s","赤经D(J2000)":"4.736416666666667","赤纬(J2000)":"-41h29m52s","赤纬D(J2000)":"-41.49777777777778","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.5","方位角":"32","详细描述":"very faint, small, a little extended, gradually a little brighter middle","简略描述":"vF, S, lE, glbM"},{"ID":"1661","标识":"NGC1661","M标识":"NGC1661","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h47m7.7s","赤经D(J2000)":"4.785472222222222","赤纬(J2000)":"-2h3m18s","赤纬D(J2000)":"-2.0549999999999997","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"35","详细描述":"very faint, very small, brighter middle","简略描述":"vF, vS, bM"},{"ID":"1662","标识":"NGC1662","M标识":"NGC1662","拓展名":"","组件":"","Class":"VII 1","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h48m27s","赤经D(J2000)":"4.8075","赤纬(J2000)":"+10h55m48s","赤纬D(J2000)":"10.93","可见光星等V":"6.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster of large (bright) and small (faint) scattered stars","简略描述":"Cl of L & S sc st"},{"ID":"1663","标识":"NGC1663","M标识":"NGC1663","拓展名":"","组件":"","Class":"VIII 7","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV2p","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h49m24.3s","赤经D(J2000)":"4.823416666666667","赤纬(J2000)":"+13h8m27s","赤纬D(J2000)":"13.140833333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"","方位角":"","详细描述":"a cluster, a little rich, stars large (bright) and small (faint)","简略描述":"Cl, lRi, st L & S"},{"ID":"1664","标识":"NGC1664","M标识":"NGC1664","拓展名":"","组件":"","Class":"VIII 59","业余排名":"6","中文名":"4-H 星团","类型":"OCL","含重复类型":"OCL","形态":"III1p","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"4h51m5.4s","赤经D(J2000)":"4.8515","赤纬(J2000)":"+43h40m34s","赤纬D(J2000)":"43.67611111111111","可见光星等V":"7.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"18","短轴(分)":"","方位角":"","详细描述":"a cluster, a little rich, a little compressed, pretty large","简略描述":"Cl, lRi, lC, pL"},{"ID":"1665","标识":"NGC1665","M标识":"NGC1665","拓展名":"","组件":"","Class":"II 457","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h48m17s","赤经D(J2000)":"4.804722222222222","赤纬(J2000)":"-5h25m38s","赤纬D(J2000)":"-5.427222222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"50","详细描述":"extremely faint, pretty large, round, a little brighter middle","简略描述":"eF, pL, R, lbM"},{"ID":"1666","标识":"NGC1666","M标识":"NGC1666","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h48m32.8s","赤经D(J2000)":"4.809111111111111","赤纬(J2000)":"-6h34m10s","赤纬D(J2000)":"-6.569444444444445","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"143","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"1667","标识":"NGC1667","M标识":"NGC1667","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h48m37s","赤经D(J2000)":"4.810277777777777","赤纬(J2000)":"-6h19m13s","赤纬D(J2000)":"-6.320277777777777","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1","方位角":"20","详细描述":"pretty faint, pretty small, round, mottled but not resolved?","简略描述":"pF, pS, R, r?"},{"ID":"1668","标识":"NGC1668","M标识":"NGC1668","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h46m5.9s","赤经D(J2000)":"4.768305555555555","赤纬(J2000)":"-44h43m58s","赤纬D(J2000)":"-44.73277777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"107","详细描述":"extremely faint, round, attached to 14th magnitude star","简略描述":"eF, R, att to * 14"},{"ID":"1669","标识":"NGC1669","M标识":"NGC1669","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h43m0s","赤经D(J2000)":"4.716666666666667","赤纬(J2000)":"-65h48m51s","赤纬D(J2000)":"-65.81416666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"97","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"1670","标识":"NGC1670","M标识":"NGC1670","拓展名":"","组件":"","Class":"III 501","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h49m42.6s","赤经D(J2000)":"4.8285","赤纬(J2000)":"-2h45m36s","赤纬D(J2000)":"-2.76","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"72","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"1671","标识":"NGC1671","M标识":"NGC1671","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h49m33.8s","赤经D(J2000)":"4.8260555555555555","赤纬(J2000)":"+0h15m12s","赤纬D(J2000)":"0.25333333333333335","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"130","详细描述":"pretty faint, pretty small, round","简略描述":"pF, pS, R"},{"ID":"1672","标识":"NGC1672","M标识":"NGC1672","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h45m42.8s","赤经D(J2000)":"4.761888888888889","赤纬(J2000)":"-59h14m52s","赤纬D(J2000)":"-59.24777777777778","可见光星等V":"9.7","摄影(蓝光)星等B":"10.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"6.7","短轴(分)":"5.6","方位角":"170","详细描述":"bright, large, suddenly much brighter middle and nucleus","简略描述":"B, L, smbMN"},{"ID":"1673","标识":"NGC1673","M标识":"NGC1673","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"4h42m39.7s","赤经D(J2000)":"4.711027777777778","赤纬(J2000)":"-69h49m17s","赤纬D(J2000)":"-69.82138888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"14.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"very faint, small, attached to 10th magnitude star","简略描述":"vF, S, att to * 10"},{"ID":"1674","标识":"NGC1674","M标识":"NGC1674","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h52m25s","赤经D(J2000)":"4.873611111111112","赤纬(J2000)":"+23h51m37s","赤纬D(J2000)":"23.860277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"two faint nebulae in the same field","简略描述":"Two F neb in same field"},{"ID":"1675","标识":"NGC1675","M标识":"NGC1675","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Dup","形态":"*Grp","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h52m25s","赤经D(J2000)":"4.873611111111112","赤纬(J2000)":"+23h51m37s","赤纬D(J2000)":"23.860277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"two faint nebulae in the same field","简略描述":"Two F neb in same field"},{"ID":"1676","标识":"NGC1676","M标识":"NGC1676","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h43m54.2s","赤经D(J2000)":"4.731722222222222","赤纬(J2000)":"-68h49m40s","赤纬D(J2000)":"-68.82777777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, irregularly round, mottled but not resolved","简略描述":"vF, pL, iR, r"},{"ID":"1677","标识":"NGC1677","M标识":"NGC1677","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h46m30s","赤经D(J2000)":"4.775","赤纬(J2000)":"-4h47m19s","赤纬D(J2000)":"-4.788611111111111","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"50","详细描述":"pretty faint, pretty small, irregularly extended 90°±, brighter middle","简略描述":"pF, pL, lE"},{"ID":"1678","标识":"NGC1678","M标识":"NGC1678","拓展名":"","组件":"","Class":"III 502","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h51m35.4s","赤经D(J2000)":"4.859833333333333","赤纬(J2000)":"-2h37m22s","赤纬D(J2000)":"-2.622777777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"72","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"1679","标识":"NGC1679","M标识":"NGC1679","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h49m55.5s","赤经D(J2000)":"4.832083333333333","赤纬(J2000)":"-31h58m2s","赤纬D(J2000)":"-31.96722222222222","可见光星等V":"11.6","摄影(蓝光)星等B":"12.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.7","短轴(分)":"2","方位角":"150","详细描述":"very bright, large, irregularly round, 4 stars involved","简略描述":"vB, L, iR, 4 st inv"},{"ID":"1680","标识":"NGC1680","M标识":"NGC1680","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"4h48m33.7s","赤经D(J2000)":"4.8093611111111105","赤纬(J2000)":"-47h49m0s","赤纬D(J2000)":"-47.81666666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"102","详细描述":"very faint, small, round, mottled but not resolved or star involved","简略描述":"vF, S, R, r or st inv"},{"ID":"1681","标识":"NGC1681","M标识":"NGC1681","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h51m50.1s","赤经D(J2000)":"4.863916666666666","赤纬(J2000)":"-5h48m11s","赤纬D(J2000)":"-5.803055555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"142","详细描述":"very faint, small, round, very little brighter middle","简略描述":"vF, S, R, vlbM"},{"ID":"1682","标识":"NGC1682","M标识":"NGC1682","拓展名":"","组件":"","Class":"II 527","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h52m19.7s","赤经D(J2000)":"4.872138888888889","赤纬(J2000)":"-3h6m19s","赤纬D(J2000)":"-3.105277777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, very small, II 528 twelve seconds± of time to east, 9th magnitude star 4.5 arcmin to south","简略描述":"vF, vS, II 528 f 12s ±, * 9 s 4'.5"},{"ID":"1683","标识":"NGC1683","M标识":"NGC1683","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h52m17.5s","赤经D(J2000)":"4.871527777777779","赤纬(J2000)":"-3h1m27s","赤纬D(J2000)":"-3.0241666666666664","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.4","方位角":"162","详细描述":"very faint, round","简略描述":"vF, R"},{"ID":"1684","标识":"NGC1684","M标识":"NGC1684","拓展名":"","组件":"","Class":"II 528","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h52m31.1s","赤经D(J2000)":"4.875305555555556","赤纬(J2000)":"-3h6m20s","赤纬D(J2000)":"-3.1055555555555556","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.2","短轴(分)":"1.7","方位角":"93","详细描述":"pretty faint, pretty small, round, brighter middle, 9th magnitude star at position angle 225°±","简略描述":"pF, pS, R, bM, * 9, 225° ±"},{"ID":"1685","标识":"NGC1685","M标识":"NGC1685","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h52m34.2s","赤经D(J2000)":"4.876166666666667","赤纬(J2000)":"-2h56m59s","赤纬D(J2000)":"-2.9497222222222224","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"135","详细描述":"faint","简略描述":"F"},{"ID":"1686","标识":"NGC1686","M标识":"NGC1686","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h52m54.7s","赤经D(J2000)":"4.881861111111111","赤纬(J2000)":"-15h20m47s","赤纬D(J2000)":"-15.346388888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"0.3","方位角":"27","详细描述":"extremely faint, very small, much extended 30°","简略描述":"eF, vS, mE 30°"},{"ID":"1687","标识":"NGC1687","M标识":"NGC1687","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h51m21.1s","赤经D(J2000)":"4.8558611111111105","赤纬(J2000)":"-33h56m21s","赤纬D(J2000)":"-33.939166666666665","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"40","详细描述":"very faint, small, round, very gradually a little brighter middle","简略描述":"vF, S, R, vglbM"},{"ID":"1688","标识":"NGC1688","M标识":"NGC1688","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h48m23.5s","赤经D(J2000)":"4.806527777777777","赤纬(J2000)":"-59h48m0s","赤纬D(J2000)":"-59.8","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.4","短轴(分)":"1.9","方位角":"177","详细描述":"pretty bright, pretty large, irregularly round, pretty gradually much brighter middle","简略描述":"pB, pL, iR, pgmbM"},{"ID":"1689","标识":"NGC1689","M标识":"NGC1689","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h48m37s","赤经D(J2000)":"4.810277777777777","赤纬(J2000)":"-6h19m13s","赤纬D(J2000)":"-6.320277777777777","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1","方位角":"20","详细描述":"pretty faint, pretty small, round, mottled but not resolved?","简略描述":"pB, pS, lE"},{"ID":"1690","标识":"NGC1690","M标识":"NGC1690","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h54m19.3s","赤经D(J2000)":"4.9053611111111115","赤纬(J2000)":"+1h38m26s","赤纬D(J2000)":"1.6405555555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"very faint, very small, among very small (faint) stars, large (bright) star to southwest","简略描述":"vF, vS, am vS st, L * sp"},{"ID":"1691","标识":"NGC1691","M标识":"NGC1691","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h54m38.3s","赤经D(J2000)":"4.910638888888889","赤纬(J2000)":"+3h16m4s","赤纬D(J2000)":"3.267777777777778","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.3","短轴(分)":"1.8","方位角":"37","详细描述":"faint, small, 11th magnitude star involved","简略描述":"F, S, * 11 inv"},{"ID":"1692","标识":"NGC1692","M标识":"NGC1692","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h55m23.7s","赤经D(J2000)":"4.92325","赤纬(J2000)":"-20h34m16s","赤纬D(J2000)":"-20.57111111111111","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"5","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"1693","标识":"NGC1693","M标识":"NGC1693","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h47m38.8s","赤经D(J2000)":"4.794111111111111","赤纬(J2000)":"-69h20m37s","赤纬D(J2000)":"-69.3436111111111","可见光星等V":"12.9","摄影(蓝光)星等B":"13.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"1694","标识":"NGC1694","M标识":"NGC1694","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h55m16.8s","赤经D(J2000)":"4.921333333333334","赤纬(J2000)":"-4h39m8s","赤纬D(J2000)":"-4.652222222222223","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"34","详细描述":"very faint, very small, round, suddenly brighter middle","简略描述":"vF, vS, R, sbM"},{"ID":"1695","标识":"NGC1695","M标识":"NGC1695","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h47m44.5s","赤经D(J2000)":"4.795694444444444","赤纬(J2000)":"-69h22m26s","赤纬D(J2000)":"-69.37388888888889","可见光星等V":"12.2","摄影(蓝光)星等B":"12.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.5","短轴(分)":"","方位角":"","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"1696","标识":"NGC1696","M标识":"NGC1696","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h48m30s","赤经D(J2000)":"4.808333333333334","赤纬(J2000)":"-68h14m35s","赤纬D(J2000)":"-68.24305555555556","可见光星等V":"14","摄影(蓝光)星等B":"14.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.9","短轴(分)":"","方位角":"","详细描述":"very faint, extended, very little brighter middle","简略描述":"vF, E, vlbM"},{"ID":"1697","标识":"NGC1697","M标识":"NGC1697","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h48m36.4s","赤经D(J2000)":"4.810111111111111","赤纬(J2000)":"-68h33m29s","赤纬D(J2000)":"-68.55805555555555","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.6","短轴(分)":"","方位角":"","详细描述":"a globular cluster, pretty bright, large, round, partially resolved (some stars seen)","简略描述":"globular, pB, L, R, rr"},{"ID":"1698","标识":"NGC1698","M标识":"NGC1698","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h49m4.5s","赤经D(J2000)":"4.817916666666666","赤纬(J2000)":"-69h6m49s","赤纬D(J2000)":"-69.11361111111111","可见光星等V":"12.1","摄影(蓝光)星等B":"12.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.6","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty small, round, gradually a little brighter middle","简略描述":"pB, pS, R, glbM"},{"ID":"1699","标识":"NGC1699","M标识":"NGC1699","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h56m59.5s","赤经D(J2000)":"4.949861111111112","赤纬(J2000)":"-4h45m26s","赤纬D(J2000)":"-4.7572222222222225","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"155","详细描述":"most extremely faint, pretty small, round, between 2 stars, north of 932","简略描述":"eeF, pS, R, bet 2 st, n of 932"},{"ID":"1700","标识":"NGC1700","M标识":"NGC1700","拓展名":"","组件":"","Class":"IV 32","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h56m56.2s","赤经D(J2000)":"4.948944444444445","赤纬(J2000)":"-4h51m55s","赤纬D(J2000)":"-4.865277777777777","可见光星等V":"11.2","摄影(蓝光)星等B":"12.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.3","短轴(分)":"2.1","方位角":"120","详细描述":"considerably bright, small, much brighter starlike middle","简略描述":"cB, S, mbM *"},{"ID":"1701","标识":"NGC1701","M标识":"NGC1701","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h55m51.1s","赤经D(J2000)":"4.930861111111112","赤纬(J2000)":"-29h53m1s","赤纬D(J2000)":"-29.88361111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"137","详细描述":"faint, small, very little extended, gradually a little brighter middle, 10th magnitude star 75 arcsec to southeast","简略描述":"F, S, vlE, glbM, * 10, 75\" sf"},{"ID":"1702","标识":"NGC1702","M标识":"NGC1702","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"4h49m27.7s","赤经D(J2000)":"4.824361111111111","赤纬(J2000)":"-69h51m3s","赤纬D(J2000)":"-69.85083333333333","可见光星等V":"12.5","摄影(蓝光)星等B":"12.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"cluster, very faint, small","简略描述":"Cl, vF, S"},{"ID":"1703","标识":"NGC1703","M标识":"NGC1703","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h52m51.9s","赤经D(J2000)":"4.881083333333334","赤纬(J2000)":"-59h44m34s","赤纬D(J2000)":"-59.74277777777778","可见光星等V":"11.3","摄影(蓝光)星等B":"11.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.9","短轴(分)":"2.6","方位角":"6","详细描述":"faint, large, round, very gradually a little brighter middle, double star attached","简略描述":"F, L, R, vglbM, ** att"},{"ID":"1704","标识":"NGC1704","M标识":"NGC1704","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h49m55.5s","赤经D(J2000)":"4.832083333333333","赤纬(J2000)":"-69h45m23s","赤纬D(J2000)":"-69.75638888888889","可见光星等V":"11.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, a little extended, mottled but not resolved","简略描述":"F, pS, lE, r"},{"ID":"1705","标识":"NGC1705","M标识":"NGC1705","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"4h54m13.9s","赤经D(J2000)":"4.9038611111111114","赤纬(J2000)":"-53h21m38s","赤纬D(J2000)":"-53.36055555555556","可见光星等V":"12.4","摄影(蓝光)星等B":"12.8","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"50","详细描述":"pretty faint, small, round, pretty much brighter middle","简略描述":"pF, S, R, pmbM"},{"ID":"1706","标识":"NGC1706","M标识":"NGC1706","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h52m31.1s","赤经D(J2000)":"4.875305555555556","赤纬(J2000)":"-62h59m10s","赤纬D(J2000)":"-62.986111111111114","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"1","方位角":"124","详细描述":"faint, pretty small, round, very gradually a little brighter middle","简略描述":"F, pS, R, vglbM"},{"ID":"1707","标识":"NGC1707","M标识":"NGC1707","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h58m21.1s","赤经D(J2000)":"4.972527777777778","赤纬(J2000)":"+8h14m20s","赤纬D(J2000)":"8.238888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"small, round, well resolved, clearly consisting of stars","简略描述":"S, R, rrr"},{"ID":"1708","标识":"NGC1708","M标识":"NGC1708","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"5h3m27s","赤经D(J2000)":"5.0575","赤纬(J2000)":"+52h50m0s","赤纬D(J2000)":"52.833333333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"cluster, very large, pretty rich, a little compressed, large and small stars","简略描述":"Cl, vL, pRi, lC, st L and S"},{"ID":"1709","标识":"NGC1709","M标识":"NGC1709","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h58m44s","赤经D(J2000)":"4.978888888888889","赤纬(J2000)":"-0h28m40s","赤纬D(J2000)":"-0.4777777777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"49","详细描述":"very faint, very small, northwest of (WH) II 516","简略描述":"vF, vS, np II 516"},{"ID":"1710","标识":"NGC1710","M标识":"NGC1710","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"4h57m16.8s","赤经D(J2000)":"4.954666666666667","赤纬(J2000)":"-15h17m20s","赤纬D(J2000)":"-15.28888888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1","方位角":"15","详细描述":"very faint, very small, round, brighter middle and nucleus, 13th magnitude star involved","简略描述":"vF, vS, R, bMN, * 13 inv"},{"ID":"1711","标识":"NGC1711","M标识":"NGC1711","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"4h50m36.2s","赤经D(J2000)":"4.843388888888889","赤纬(J2000)":"-69h59m8s","赤纬D(J2000)":"-69.98555555555555","可见光星等V":"10.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.4","短轴(分)":"","方位角":"","详细描述":"globular cluster, bright, small, irregularly round, well resolved, clearly consisting of stars, stars of magnitude 14","简略描述":"globular, B, S, iR, rrr, st 14"},{"ID":"1712","标识":"NGC1712","M标识":"NGC1712","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h50m58.5s","赤经D(J2000)":"4.849583333333333","赤纬(J2000)":"-69h24m27s","赤纬D(J2000)":"-69.4075","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.5","短轴(分)":"","方位角":"","详细描述":"cluster, pretty bright, small","简略描述":"Cl, pB, S"},{"ID":"1713","标识":"NGC1713","M标识":"NGC1713","拓展名":"","组件":"","Class":"II 516","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h58m54.7s","赤经D(J2000)":"4.981861111111111","赤纬(J2000)":"-0h29m19s","赤纬D(J2000)":"-0.4886111111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.9","B-V":"1.2","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"45","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"1714","标识":"NGC1714","M标识":"NGC1714","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h52m8.4s","赤经D(J2000)":"4.869000000000001","赤纬(J2000)":"-66h55m32s","赤纬D(J2000)":"-66.92555555555556","可见光星等V":"11.6","摄影(蓝光)星等B":"11.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"very bright, small, extended or bi-nuclear, brighter middle, southwestern of 2","简略描述":"vB, S, E or bi-N, bM, sp of 2"},{"ID":"1715","标识":"NGC1715","M标识":"NGC1715","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h52m10.5s","赤经D(J2000)":"4.869583333333334","赤纬(J2000)":"-66h54m32s","赤纬D(J2000)":"-66.9088888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, suddenly brighter middle, 2 stars near, northeastern of 2","简略描述":"vF, S, R, sbM, 2 st nr, nf of 2"},{"ID":"1716","标识":"NGC1716","M标识":"NGC1716","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"4h58m13.2s","赤经D(J2000)":"4.9703333333333335","赤纬(J2000)":"-20h21m48s","赤纬D(J2000)":"-20.363333333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"20","详细描述":"pretty faint, pretty large, round, gradually a little brighter middle","简略描述":"pF, pL, R, glbM"},{"ID":"1717","标识":"NGC1717","M标识":"NGC1717","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h58m17.6s","赤经D(J2000)":"4.971555555555556","赤纬(J2000)":"-0h14m58s","赤纬D(J2000)":"-0.24944444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, northwest of (WH) II 516","简略描述":"np h 340 (? F *)"},{"ID":"1718","标识":"NGC1718","M标识":"NGC1718","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h52m25.4s","赤经D(J2000)":"4.873722222222223","赤纬(J2000)":"-67h3m3s","赤纬D(J2000)":"-67.05083333333333","可见光星等V":"12.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, round, very gradually a little brighter middle","简略描述":"F, pS, R, vglbM"},{"ID":"1719","标识":"NGC1719","M标识":"NGC1719","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h59m34.5s","赤经D(J2000)":"4.992916666666667","赤纬(J2000)":"-0h15m38s","赤纬D(J2000)":"-0.26055555555555554","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"102","详细描述":"pretty faint, small, irregularly round, pretty suddenly a little brighter middle","简略描述":"pF, S, iR, pslbM"},{"ID":"1720","标识":"NGC1720","M标识":"NGC1720","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h59m20.5s","赤经D(J2000)":"4.989027777777777","赤纬(J2000)":"-7h51m33s","赤纬D(J2000)":"-7.859166666666666","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2","短轴(分)":"1.2","方位角":"78","详细描述":"pretty faint, pretty large, a little brighter middle, h 341 near","简略描述":"pF, pL, lbM, h 341 nr"},{"ID":"1721","标识":"NGC1721","M标识":"NGC1721","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h59m17.4s","赤经D(J2000)":"4.988166666666666","赤纬(J2000)":"-11h7m6s","赤纬D(J2000)":"-11.118333333333334","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.9","短轴(分)":"1","方位角":"132","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"1722","标识":"NGC1722","M标识":"NGC1722","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h51m50.7s","赤经D(J2000)":"4.864083333333333","赤纬(J2000)":"-69h23m56s","赤纬D(J2000)":"-69.39888888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"13.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"cluster, pretty faint, small, round, 2nd of 3","简略描述":"Cl, pF, S, R, 2nd of 3"},{"ID":"1723","标识":"NGC1723","M标识":"NGC1723","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa\/P","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h59m25.9s","赤经D(J2000)":"4.9905277777777775","赤纬(J2000)":"-10h58m50s","赤纬D(J2000)":"-10.980555555555556","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.6","短轴(分)":"1.8","方位角":"144","详细描述":"faint, between two 9th magnitude stars, 10th magnitude stars north and south, 3rd star to east","简略描述":"F, bet 2 st 9, 10 n & s, 3rd * f"},{"ID":"1724","标识":"NGC1724","M标识":"NGC1724","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h3m33s","赤经D(J2000)":"5.059166666666666","赤纬(J2000)":"+49h29m30s","赤纬D(J2000)":"49.49166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"cluster, very small, stars plus nebula?","简略描述":"Cl, vS, st + neb?"},{"ID":"1725","标识":"NGC1725","M标识":"NGC1725","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h59m22.9s","赤经D(J2000)":"4.989694444444445","赤纬(J2000)":"-11h7m55s","赤纬D(J2000)":"-11.131944444444445","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"1","方位角":"20","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"1726","标识":"NGC1726","M标识":"NGC1726","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h59m41.9s","赤经D(J2000)":"4.994972222222223","赤纬(J2000)":"-7h45m18s","赤纬D(J2000)":"-7.755","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"0","详细描述":"faint, round, 13th magnitude star to south","简略描述":"F, R, * 13 s"},{"ID":"1727","标识":"NGC1727","M标识":"NGC1727","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h52m20s","赤经D(J2000)":"4.872222222222223","赤纬(J2000)":"-69h20m42s","赤纬D(J2000)":"-69.345","可见光星等V":"11.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.5","短轴(分)":"","方位角":"","详细描述":"cluster, pretty bright, pretty small, pretty much extended, stars of 12th magnitude","简略描述":"Cl, pB, pS, pmE, st 12"},{"ID":"1728","标识":"NGC1728","M标识":"NGC1728","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h59m27.8s","赤经D(J2000)":"4.991055555555556","赤纬(J2000)":"-11h7m24s","赤纬D(J2000)":"-11.123333333333333","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2","短轴(分)":"0.7","方位角":"177","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"1729","标识":"NGC1729","M标识":"NGC1729","拓展名":"","组件":"","Class":"III 503","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h0m15.6s","赤经D(J2000)":"5.004333333333333","赤纬(J2000)":"-3h21m11s","赤纬D(J2000)":"-3.3530555555555557","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"30","详细描述":"very faint, pretty large, 2 bright stars very near","简略描述":"vF, pL, 2B st v nr"},{"ID":"1730","标识":"NGC1730","M标识":"NGC1730","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"4h59m31.7s","赤经D(J2000)":"4.992138888888889","赤纬(J2000)":"-15h49m24s","赤纬D(J2000)":"-15.823333333333332","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.3","短轴(分)":"1","方位角":"100","详细描述":"faint, pretty small, a little extended, between 2 faint stars (per Ormond Stone, a double nebula of 10 arcsec separation)","简略描述":"F, pS, lE, bet 2 F st (O St D, Δ 10\")"},{"ID":"1731","标识":"NGC1731","M标识":"NGC1731","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h53m32.1s","赤经D(J2000)":"4.89225","赤纬(J2000)":"-66h55m31s","赤纬D(J2000)":"-66.92527777777778","可见光星等V":"9.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"cluster, pretty large, a little rich, a little compressed, stars from 10th to 15th magnitude","简略描述":"Cl, pL, lRi, lC, st 10…15"},{"ID":"1732","标识":"NGC1732","M标识":"NGC1732","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h53m10.6s","赤经D(J2000)":"4.886277777777777","赤纬(J2000)":"-68h39m0s","赤纬D(J2000)":"-68.65","可见光星等V":"12.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.9","短轴(分)":"","方位角":"","详细描述":"small, round, close double star in middle","简略描述":"S, R, close ** in M"},{"ID":"1733","标识":"NGC1733","M标识":"NGC1733","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h54m4.8s","赤经D(J2000)":"4.9013333333333335","赤纬(J2000)":"-66h40m58s","赤纬D(J2000)":"-66.68277777777779","可见光星等V":"13.3","摄影(蓝光)星等B":"13.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty small, round, gradually brighter middle","简略描述":"eF, pS, R, gbM"},{"ID":"1734","标识":"NGC1734","M标识":"NGC1734","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h53m33.6s","赤经D(J2000)":"4.892666666666666","赤纬(J2000)":"-68h46m8s","赤纬D(J2000)":"-68.76888888888888","可见光星等V":"13.1","摄影(蓝光)星等B":"13.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.3","短轴(分)":"","方位角":"","详细描述":"pretty bright, large, round, gradually much brighter middle","简略描述":"pB, L, R, gmbM"},{"ID":"1735","标识":"NGC1735","M标识":"NGC1735","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h54m19.7s","赤经D(J2000)":"4.9054722222222225","赤纬(J2000)":"-67h5m59s","赤纬D(J2000)":"-67.09972222222221","可见光星等V":"10.8","摄影(蓝光)星等B":"10.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.6","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty small, round, 2 stars attached","简略描述":"pF, pS, R, 2 st att"},{"ID":"1736","标识":"NGC1736","M标识":"NGC1736","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h53m1.6s","赤经D(J2000)":"4.8837777777777776","赤纬(J2000)":"-68h3m12s","赤纬D(J2000)":"-68.05333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"bright, round, mottled but not resolved","简略描述":"B, R, r"},{"ID":"1737","标识":"NGC1737","M标识":"NGC1737","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h53m57.8s","赤经D(J2000)":"4.899388888888889","赤纬(J2000)":"-69h10m28s","赤纬D(J2000)":"-69.17444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, 1st of 4","简略描述":"vF, S, 1st of 4"},{"ID":"1738","标识":"NGC1738","M标识":"NGC1738","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h1m46.5s","赤经D(J2000)":"5.029583333333333","赤纬(J2000)":"-18h9m27s","赤纬D(J2000)":"-18.1575","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"38","详细描述":"very faint, small, extended 45°","简略描述":"vF, S, E 45°"},{"ID":"1739","标识":"NGC1739","M标识":"NGC1739","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h1m47.3s","赤经D(J2000)":"5.029805555555556","赤纬(J2000)":"-18h10m2s","赤纬D(J2000)":"-18.16722222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"105","详细描述":"extremely faint, very small, a little extended, in field with last","简略描述":"eF, vS, lE, in field with last"},{"ID":"1740","标识":"NGC1740","M标识":"NGC1740","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h1m54.7s","赤经D(J2000)":"5.031861111111111","赤纬(J2000)":"-3h17m45s","赤纬D(J2000)":"-3.2958333333333334","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"55","详细描述":"extremely faint, very small, 12th magnitude star to southwest","简略描述":"eF, vS, * 12 sp"},{"ID":"1741","标识":"NGC1741","M标识":"NGC1741","拓展名":"A","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sdm","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"5h1m38.7s","赤经D(J2000)":"5.027416666666666","赤纬(J2000)":"-4h15m32s","赤纬D(J2000)":"-4.2588888888888885","可见光星等V":"15","摄影(蓝光)星等B":"15.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"63","详细描述":"very faint, very small, very small excentric part involved","简略描述":"vF, vS, vS excent pt inv"},{"ID":"1742","标识":"NGC1742","M标识":"NGC1742","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h2m0.5s","赤经D(J2000)":"5.033472222222222","赤纬(J2000)":"-3h17m14s","赤纬D(J2000)":"-3.2872222222222223","可见光星等V":"99","摄影(蓝光)星等B":"13.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, 3.6 seconds of time to the east of h 342","简略描述":"vF, vS, 3s.6 f h 342"},{"ID":"1743","标识":"NGC1743","M标识":"NGC1743","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h54m3.2s","赤经D(J2000)":"4.900888888888889","赤纬(J2000)":"-69h11m57s","赤纬D(J2000)":"-69.19916666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"2","方位角":"","详细描述":"bright, pretty large, round, gradually brighter middle, mottled but not resolved, 2nd of 4","简略描述":"B, pL, R, gbM, r, 2nd of 4"},{"ID":"1744","标识":"NGC1744","M标识":"NGC1744","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"4h59m57.6s","赤经D(J2000)":"4.999333333333333","赤纬(J2000)":"-26h1m22s","赤纬D(J2000)":"-26.022777777777776","可见光星等V":"11.1","摄影(蓝光)星等B":"11.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"7.4","短轴(分)":"3.5","方位角":"168","详细描述":"faint, very large, very much extended, very gradually very little brighter middle","简略描述":"F, vL, vmE, vgvlbM"},{"ID":"1745","标识":"NGC1745","M标识":"NGC1745","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h54m20.7s","赤经D(J2000)":"4.90575","赤纬(J2000)":"-69h9m32s","赤纬D(J2000)":"-69.1588888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, 3rd of 4","简略描述":"F, S, 3rd of 4"},{"ID":"1746","标识":"NGC1746","M标识":"NGC1746","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"5h3m50s","赤经D(J2000)":"5.063888888888889","赤纬(J2000)":"+23h46m12s","赤纬D(J2000)":"23.77","可见光星等V":"6.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"40","短轴(分)":"","方位角":"","详细描述":"cluster, poor","简略描述":"Cl, P"},{"ID":"1747","标识":"NGC1747","M标识":"NGC1747","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h55m11s","赤经D(J2000)":"4.919722222222222","赤纬(J2000)":"-67h10m8s","赤纬D(J2000)":"-67.16888888888889","可见光星等V":"9.4","摄影(蓝光)星等B":"9.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"cluster, pretty small, a little rich, stars very small","简略描述":"Cl, pS, lRi, st vS"},{"ID":"1748","标识":"NGC1748","M标识":"NGC1748","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h54m23.7s","赤经D(J2000)":"4.906583333333334","赤纬(J2000)":"-69h11m6s","赤纬D(J2000)":"-69.185","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, very small, round, 4th of 4","简略描述":"pB, vS, R, 4th of 4"},{"ID":"1749","标识":"NGC1749","M标识":"NGC1749","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h54m56.1s","赤经D(J2000)":"4.915583333333334","赤纬(J2000)":"-68h11m20s","赤纬D(J2000)":"-68.1888888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"13.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"very faint, round, preceding (western) of 2","简略描述":"vF, R, p of 2"},{"ID":"1750","标识":"NGC1750","M标识":"NGC1750","拓展名":"","组件":"","Class":"VIII 43","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"5h3m54s","赤经D(J2000)":"5.0649999999999995","赤纬(J2000)":"+23h39m30s","赤纬D(J2000)":"23.65833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"12","方位角":"","详细描述":"cluster, large stars, very considerably scarce","简略描述":"Cl, st L, vc sc"},{"ID":"1751","标识":"NGC1751","M标识":"NGC1751","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"4h54m12.1s","赤经D(J2000)":"4.903361111111112","赤纬(J2000)":"-69h48m23s","赤纬D(J2000)":"-69.80638888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large, irregularly round","简略描述":"eF, pL, iR"},{"ID":"1752","标识":"NGC1752","M标识":"NGC1752","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"5h2m9.6s","赤经D(J2000)":"5.036","赤纬(J2000)":"-8h14m27s","赤纬D(J2000)":"-8.240833333333333","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.6","短轴(分)":"0.8","方位角":"70","详细描述":"faint, pretty large, pretty much extended, two or three 11th magnitude stars to northeast","简略描述":"F, pL, pmE, 2 or 3 st 11 nf"},{"ID":"1753","标识":"NGC1753","M标识":"NGC1753","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h2m32.2s","赤经D(J2000)":"5.042277777777778","赤纬(J2000)":"-3h20m41s","赤纬D(J2000)":"-3.3447222222222224","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"165","详细描述":"most extremely faint, pretty small, round, southeast of h 342","简略描述":"eeF, pS, R, sf h 342"},{"ID":"1754","标识":"NGC1754","M标识":"NGC1754","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"4h54m17.9s","赤经D(J2000)":"4.904972222222223","赤纬(J2000)":"-70h26m30s","赤纬D(J2000)":"-70.44166666666668","可见光星等V":"12","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, 13th magnitude star attached at 135°","简略描述":"F, S, R, * 13 att, 135°"},{"ID":"1755","标识":"NGC1755","M标识":"NGC1755","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h55m14.9s","赤经D(J2000)":"4.920805555555556","赤纬(J2000)":"-68h12m15s","赤纬D(J2000)":"-68.20416666666667","可见光星等V":"9.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.6","短轴(分)":"","方位角":"","详细描述":"very bright, pretty large, round, gradually brighter middle","简略描述":"vB, pL, R, gbM, f of 2"},{"ID":"1756","标识":"NGC1756","M标识":"NGC1756","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h54m49.9s","赤经D(J2000)":"4.913861111111111","赤纬(J2000)":"-69h14m15s","赤纬D(J2000)":"-69.2375","可见光星等V":"12.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.1","短轴(分)":"","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"1757","标识":"NGC1757","M标识":"NGC1757","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"5h2m39.3s","赤经D(J2000)":"5.04425","赤纬(J2000)":"-4h43m23s","赤纬D(J2000)":"-4.723055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very large diffuse nebula in zigzags??","简略描述":"vL dif neb in zigzags ??"},{"ID":"1758","标识":"NGC1758","M标识":"NGC1758","拓展名":"","组件":"","Class":"VII 21","业余排名":"8.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV1p","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"5h4m36s","赤经D(J2000)":"5.076666666666666","赤纬(J2000)":"+23h47m54s","赤纬D(J2000)":"23.798333333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"40","短轴(分)":"","方位角":"","详细描述":"cluster, pretty compressed, stars large and small","简略描述":"Cl, pC, st L and S"},{"ID":"1759","标识":"NGC1759","M标识":"NGC1759","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"5h0m49s","赤经D(J2000)":"5.0136111111111115","赤纬(J2000)":"-38h40m25s","赤纬D(J2000)":"-38.67361111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"very faint, pretty large, very gradually a little brighter middle","简略描述":"vF, pL, vglbM"},{"ID":"1760","标识":"NGC1760","M标识":"NGC1760","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h56m36s","赤经D(J2000)":"4.943333333333333","赤纬(J2000)":"-66h31m24s","赤纬D(J2000)":"-66.52333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, 3 very small stars involved","简略描述":"vF, S, 3 vS st inv"},{"ID":"1761","标识":"NGC1761","M标识":"NGC1761","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h56m42s","赤经D(J2000)":"4.945","赤纬(J2000)":"-66h28m45s","赤纬D(J2000)":"-66.47916666666667","可见光星等V":"9.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"cluster, large, much compressed, double star of 9th magnitude","简略描述":"Cl, L, mC, ** 9 m"},{"ID":"1762","标识":"NGC1762","M标识":"NGC1762","拓展名":"","组件":"","Class":"III 453","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h3m37s","赤经D(J2000)":"5.060277777777777","赤纬(J2000)":"+1h34m24s","赤纬D(J2000)":"1.5733333333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"175","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"1763","标识":"NGC1763","M标识":"NGC1763","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h56m45s","赤经D(J2000)":"4.945833333333334","赤纬(J2000)":"-66h25m6s","赤纬D(J2000)":"-66.41833333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"3","方位角":"","详细描述":"very bright, very large, very irregularly much extended","简略描述":"vB, vL, vimE"},{"ID":"1764","标识":"NGC1764","M标识":"NGC1764","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h56m27.8s","赤经D(J2000)":"4.941055555555556","赤纬(J2000)":"-67h41m38s","赤纬D(J2000)":"-67.69388888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"12.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"1765","标识":"NGC1765","M标识":"NGC1765","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h58m24.3s","赤经D(J2000)":"4.973416666666667","赤纬(J2000)":"-62h1m40s","赤纬D(J2000)":"-62.02777777777778","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"1","方位角":"150","详细描述":"considerably faint, small, round, gradually a little brighter middle","简略描述":"cF, S, R, glbM"},{"ID":"1766","标识":"NGC1766","M标识":"NGC1766","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"4h55m57.7s","赤经D(J2000)":"4.9326944444444445","赤纬(J2000)":"-70h13m31s","赤纬D(J2000)":"-70.22527777777778","可见光星等V":"12.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"considerably faint, small, gradually brighter middle","简略描述":"cF, S, gbM"},{"ID":"1767","标识":"NGC1767","M标识":"NGC1767","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h56m27.4s","赤经D(J2000)":"4.940944444444445","赤纬(J2000)":"-69h24m2s","赤纬D(J2000)":"-69.40055555555556","可见光星等V":"10.6","摄影(蓝光)星等B":"10.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.6","短轴(分)":"","方位角":"","详细描述":"no description (in Nubecula major)","简略描述":"No descr (in Nubec Major)"},{"ID":"1768","标识":"NGC1768","M标识":"NGC1768","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h57m0.2s","赤经D(J2000)":"4.950055555555556","赤纬(J2000)":"-68h14m58s","赤纬D(J2000)":"-68.24944444444445","可见光星等V":"12.8","摄影(蓝光)星等B":"12.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.9","短轴(分)":"","方位角":"","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"1769","标识":"NGC1769","M标识":"NGC1769","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h57m44.7s","赤经D(J2000)":"4.962416666666667","赤纬(J2000)":"-66h27m49s","赤纬D(J2000)":"-66.46361111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"bright, large, irregularly round, very suddenly much brighter middle like a double star of 10th magnitude","简略描述":"B, L, iR, vsmbM ** 10"},{"ID":"1770","标识":"NGC1770","M标识":"NGC1770","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h57m18s","赤经D(J2000)":"4.955","赤纬(J2000)":"-68h24m54s","赤纬D(J2000)":"-68.415","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.6","短轴(分)":"","方位角":"","详细描述":"cluster plus nebula, pretty large, pretty rich, stars from 11th to 18th magnitude","简略描述":"Cl + neb, pL, pRi, st 11…18"},{"ID":"1771","标识":"NGC1771","M标识":"NGC1771","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h58m55.6s","赤经D(J2000)":"4.982111111111111","赤纬(J2000)":"-63h17m54s","赤纬D(J2000)":"-63.29833333333333","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.8","短轴(分)":"0.5","方位角":"136","详细描述":"very faint, much extended, gradually a little brighter middle, 7.8 magnitude star to northwest","简略描述":"vF, mE, glbM, * 7·8 np"},{"ID":"1772","标识":"NGC1772","M标识":"NGC1772","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h56m52.9s","赤经D(J2000)":"4.948027777777778","赤纬(J2000)":"-69h33m22s","赤纬D(J2000)":"-69.55611111111111","可见光星等V":"11","摄影(蓝光)星等B":"11.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.5","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty small, irregularly round, partially resolved, some stars seen","简略描述":"pB, pS, iR, rr"},{"ID":"1773","标识":"NGC1773","M标识":"NGC1773","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h58m12s","赤经D(J2000)":"4.97","赤纬(J2000)":"-66h21m57s","赤纬D(J2000)":"-66.36583333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty large, irregularly round, 2 or 3 bright stars near","简略描述":"pF, pL, iR, 2 or 3 B st nr"},{"ID":"1774","标识":"NGC1774","M标识":"NGC1774","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h58m6.9s","赤经D(J2000)":"4.968583333333333","赤纬(J2000)":"-67h14m33s","赤纬D(J2000)":"-67.2425","可见光星等V":"10.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.8","短轴(分)":"","方位角":"","详细描述":"bright, small, round, suddenly much brighter middle, double star plus nebula","简略描述":"B, S, R, smbM, ** + neb"},{"ID":"1775","标识":"NGC1775","M标识":"NGC1775","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"4h56m53.4s","赤经D(J2000)":"4.948166666666667","赤纬(J2000)":"-70h25m47s","赤纬D(J2000)":"-70.42972222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large, irregularly round","简略描述":"eF, pL, iR"},{"ID":"1776","标识":"NGC1776","M标识":"NGC1776","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h58m39.8s","赤经D(J2000)":"4.977722222222222","赤纬(J2000)":"-66h25m47s","赤纬D(J2000)":"-66.42972222222222","可见光星等V":"13","摄影(蓝光)星等B":"13.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.1","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, gradually brighter middle","简略描述":"vF, S, R, gbM"},{"ID":"1777","标识":"NGC1777","M标识":"NGC1777","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"4h55m47.8s","赤经D(J2000)":"4.929944444444445","赤纬(J2000)":"-74h17m8s","赤纬D(J2000)":"-74.28555555555555","可见光星等V":"12.8","摄影(蓝光)星等B":"13.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.1","短轴(分)":"","方位角":"","详细描述":"extremely faint, extended, 9th magnitude double star attached on the east","简略描述":"eF, E, ** 9 att, f"},{"ID":"1778","标识":"NGC1778","M标识":"NGC1778","拓展名":"","组件":"","Class":"VIII 61","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h8m5s","赤经D(J2000)":"5.134722222222223","赤纬(J2000)":"+37h1m24s","赤纬D(J2000)":"37.02333333333333","可见光星等V":"7.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"cluster, pretty compressed, a little rich, irregular figure, stars large","简略描述":"Cl, pC, lRi, iF, st L"},{"ID":"1779","标识":"NGC1779","M标识":"NGC1779","拓展名":"","组件":"","Class":"III 500","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"5h5m18s","赤经D(J2000)":"5.088333333333333","赤纬(J2000)":"-9h8m52s","赤纬D(J2000)":"-9.147777777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.5","短轴(分)":"1.4","方位角":"108","详细描述":"pretty bright, small, round, gradually pretty much brighter middle","简略描述":"pB, S, R, gpmbM"},{"ID":"1780","标识":"NGC1780","M标识":"NGC1780","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h6m20.7s","赤经D(J2000)":"5.10575","赤纬(J2000)":"-19h28m1s","赤纬D(J2000)":"-19.466944444444444","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"84","详细描述":"extremely faint, extremely small, gradually brighter middle","简略描述":"eF, eS, gbM"},{"ID":"1781","标识":"NGC1781","M标识":"NGC1781","拓展名":"","组件":"","Class":"III 268","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h7m55.1s","赤经D(J2000)":"5.131972222222222","赤纬(J2000)":"-18h11m24s","赤纬D(J2000)":"-18.19","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"45","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"1782","标识":"NGC1782","M标识":"NGC1782","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h57m51.2s","赤经D(J2000)":"4.964222222222222","赤纬(J2000)":"-69h23m32s","赤纬D(J2000)":"-69.39222222222223","可见光星等V":"10.5","摄影(蓝光)星等B":"10.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"globular cluster, pretty bright, small, round, pretty much brighter middle, partially resolved, some stars seen","简略描述":"globular, pB, S, R, pmbM, rr"},{"ID":"1783","标识":"NGC1783","M标识":"NGC1783","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h59m8.8s","赤经D(J2000)":"4.985777777777778","赤纬(J2000)":"-65h59m7s","赤纬D(J2000)":"-65.98527777777778","可见光星等V":"10.9","摄影(蓝光)星等B":"10.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"considerably bright, large, round, very gradually pretty much brighter middle, mottled but not resolved","简略描述":"cB, L, R, vgpmbM, r"},{"ID":"1784","标识":"NGC1784","M标识":"NGC1784","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h5m27.1s","赤经D(J2000)":"5.090861111111111","赤纬(J2000)":"-11h52m16s","赤纬D(J2000)":"-11.871111111111112","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"4.1","短轴(分)":"2.6","方位角":"105","详细描述":"pretty bright, pretty large, very little extended, very gradually brighter middle, among stars","简略描述":"pB, pL, vlE, vgbM, am st"},{"ID":"1785","标识":"NGC1785","M标识":"NGC1785","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h58m35.3s","赤经D(J2000)":"4.976472222222222","赤纬(J2000)":"-68h50m37s","赤纬D(J2000)":"-68.8436111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"no description, in Nubecula major","简略描述":"No description, in Nubec major"},{"ID":"1786","标识":"NGC1786","M标识":"NGC1786","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"II","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h59m7.9s","赤经D(J2000)":"4.985527777777778","赤纬(J2000)":"-67h44m43s","赤纬D(J2000)":"-67.74527777777777","可见光星等V":"10.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.6","短轴(分)":"","方位角":"","详细描述":"very bright, pretty small, a little extended, very suddenly very much brighter middle equivalent to 9th magnitude star","简略描述":"vB, pS, lE, vsvmbM * 9"},{"ID":"1787","标识":"NGC1787","M标识":"NGC1787","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h0m2s","赤经D(J2000)":"5.000555555555556","赤纬(J2000)":"-65h47m42s","赤纬D(J2000)":"-65.795","可见光星等V":"10.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"23","短轴(分)":"","方位角":"","详细描述":"cluster, very large, pretty rich","简略描述":"Cl, vL, pRi"},{"ID":"1788","标识":"NGC1788","M标识":"NGC1788","拓展名":"","组件":"","Class":"V 32","业余排名":"6","中文名":"宇宙蝙蝠星云","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h6m53.2s","赤经D(J2000)":"5.114777777777777","赤纬(J2000)":"-3h20m28s","赤纬D(J2000)":"-3.341111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"3","方位角":"","详细描述":"bright, considerably large, round, brighter middle like a 15th magnitude triple star, 10th magnitude star involved in the nebulosity at a distance of 1 1\/2 arcmin, and position angle 318°","简略描述":"B, cL, R, bM *** 15, * 10, 1?' 318°, inv in the neby"},{"ID":"1789","标识":"NGC1789","M标识":"NGC1789","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"4h57m51.2s","赤经D(J2000)":"4.964222222222222","赤纬(J2000)":"-71h54m3s","赤纬D(J2000)":"-71.90083333333334","可见光星等V":"13.1","摄影(蓝光)星等B":"13.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.5","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, round, very gradually a little brighter middle","简略描述":"vF, pS, R, vglbM"},{"ID":"1790","标识":"NGC1790","M标识":"NGC1790","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h11m7.2s","赤经D(J2000)":"5.185333333333333","赤纬(J2000)":"+52h3m30s","赤纬D(J2000)":"52.05833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"cluster, group of eight or nine 10th magnitude stars","简略描述":"Cl, group of 8 or 9 st 10"},{"ID":"1791","标识":"NGC1791","M标识":"NGC1791","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"4h59m6.6s","赤经D(J2000)":"4.985166666666666","赤纬(J2000)":"-70h10m8s","赤纬D(J2000)":"-70.16888888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"13.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.3","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"1792","标识":"NGC1792","M标识":"NGC1792","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h5m13.8s","赤经D(J2000)":"5.087166666666667","赤纬(J2000)":"-37h58m47s","赤纬D(J2000)":"-37.97972222222222","可见光星等V":"10.2","摄影(蓝光)星等B":"10.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"5.2","短轴(分)":"2.6","方位角":"137","详细描述":"very bright, very large, much extended 314°, gradually a little bright middle, partially resolved, some stars seen","简略描述":"vB, vL, mE 314°, glbM, rr"},{"ID":"1793","标识":"NGC1793","M标识":"NGC1793","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h59m38.3s","赤经D(J2000)":"4.993972222222222","赤纬(J2000)":"-69h33m28s","赤纬D(J2000)":"-69.55777777777777","可见光星等V":"12.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.3","短轴(分)":"","方位角":"","详细描述":"faint, small, round, gradually a little brighter middle","简略描述":"F, S, R, glbM"},{"ID":"1794","标识":"NGC1794","M标识":"NGC1794","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h7m55.1s","赤经D(J2000)":"5.131972222222222","赤纬(J2000)":"-18h11m24s","赤纬D(J2000)":"-18.19","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"45","详细描述":"extremely faint, very small, stellar","简略描述":"vF, eS, gbM (? = III 268)"},{"ID":"1795","标识":"NGC1795","M标识":"NGC1795","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h59m47s","赤经D(J2000)":"4.996388888888889","赤纬(J2000)":"-69h48m5s","赤纬D(J2000)":"-69.80138888888888","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.6","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, a little extended","简略描述":"F, pL, lE"},{"ID":"1796","标识":"NGC1796","M标识":"NGC1796","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h2m42.8s","赤经D(J2000)":"5.045222222222222","赤纬(J2000)":"-61h8m23s","赤纬D(J2000)":"-61.13972222222222","可见光星等V":"12.3","摄影(蓝光)星等B":"12.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"1","方位角":"102","详细描述":"pretty faint, pretty small, pretty much extended, very gradually a little brighter middle","简略描述":"pF, pS, pmE, vglbM"},{"ID":"1797","标识":"NGC1797","M标识":"NGC1797","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"5h7m44.9s","赤经D(J2000)":"5.129138888888889","赤纬(J2000)":"-8h1m8s","赤纬D(J2000)":"-8.01888888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.6","短轴(分)":"1","方位角":"90","详细描述":"most extremely faint, small, round, very faint star to northwest","简略描述":"eeF, S, R, vF * np"},{"ID":"1798","标识":"NGC1798","M标识":"NGC1798","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h11m39.3s","赤经D(J2000)":"5.19425","赤纬(J2000)":"+47h41m44s","赤纬D(J2000)":"47.69555555555555","可见光星等V":"10","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"small, a cluster or a cluster plus nebulosity","简略描述":"S, Cl or Cl + neb"},{"ID":"1799","标识":"NGC1799","M标识":"NGC1799","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"5h7m44.5s","赤经D(J2000)":"5.129027777777777","赤纬(J2000)":"-7h58m8s","赤纬D(J2000)":"-7.968888888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"125","详细描述":"very faint, very small, very little extended","简略描述":"vF, vS, vlE"},{"ID":"1800","标识":"NGC1800","M标识":"NGC1800","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h6m25.4s","赤经D(J2000)":"5.107055555555555","赤纬(J2000)":"-31h57m16s","赤纬D(J2000)":"-31.954444444444444","可见光星等V":"12.6","摄影(蓝光)星等B":"13.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"1.1","方位角":"113","详细描述":"pretty bright, pretty much extended, gradually pretty much brighter middle, 13th magnitude star to east","简略描述":"pB, pmE, gpmbM, * 13 f"},{"ID":"1801","标识":"NGC1801","M标识":"NGC1801","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h0m34.6s","赤经D(J2000)":"5.009611111111111","赤纬(J2000)":"-69h36m50s","赤纬D(J2000)":"-69.61388888888888","可见光星等V":"12.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.2","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, round, very gradually a little brighter middle, preceding (western) of 2","简略描述":"F, pL, R, vglbM, p of 2"},{"ID":"1802","标识":"NGC1802","M标识":"NGC1802","拓展名":"","组件":"","Class":"VIII 41","业余排名":"15","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"5h10m14s","赤经D(J2000)":"5.170555555555556","赤纬(J2000)":"+24h7m30s","赤纬D(J2000)":"24.125","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"cluster, stars considerably scattered","简略描述":"Cl, st c sc"},{"ID":"1803","标识":"NGC1803","M标识":"NGC1803","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"5h5m26.5s","赤经D(J2000)":"5.090694444444444","赤纬(J2000)":"-49h34m3s","赤纬D(J2000)":"-49.5675","可见光星等V":"12.9","摄影(蓝光)星等B":"13.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"62","详细描述":"faint, small, round, very gradually a little brighter middle, 11th magnitude star to the southeast, perhaps nebulous","简略描述":"F, S, R, vglbM, * 11 sf, ? neb"},{"ID":"1804","标识":"NGC1804","M标识":"NGC1804","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h1m3.3s","赤经D(J2000)":"5.0175833333333335","赤纬(J2000)":"-69h4m58s","赤纬D(J2000)":"-69.08277777777778","可见光星等V":"11.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"1805","标识":"NGC1805","M标识":"NGC1805","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h2m21.4s","赤经D(J2000)":"5.0392777777777775","赤纬(J2000)":"-66h6m44s","赤纬D(J2000)":"-66.11222222222221","可见光星等V":"10.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.2","短轴(分)":"","方位角":"","详细描述":"bright, very small, very suddenly much brighter middle, stars plus nebulosity","简略描述":"B, vS, vsmbM, st + neb"},{"ID":"1806","标识":"NGC1806","M标识":"NGC1806","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h2m11.4s","赤经D(J2000)":"5.0365","赤纬(J2000)":"-67h59m2s","赤纬D(J2000)":"-67.98388888888888","可见光星等V":"99","摄影(蓝光)星等B":"11.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.2","短轴(分)":"","方位角":"","详细描述":"pretty bright, large, gradually brighter middle","简略描述":"pB, L, gbM"},{"ID":"1807","标识":"NGC1807","M标识":"NGC1807","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"贫双星团","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"5h10m46s","赤经D(J2000)":"5.179444444444445","赤纬(J2000)":"+16h30m48s","赤纬D(J2000)":"16.513333333333332","可见光星等V":"7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"cluster, pretty rich, large and small stars","简略描述":"Cl, pRi, st L & S"},{"ID":"1808","标识":"NGC1808","M标识":"NGC1808","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h7m42.5s","赤经D(J2000)":"5.128472222222221","赤纬(J2000)":"-37h30m48s","赤纬D(J2000)":"-37.513333333333335","可见光星等V":"9.9","摄影(蓝光)星等B":"10.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"6.5","短轴(分)":"3.9","方位角":"133","详细描述":"bright, large, extended, pretty suddenly bright middle","简略描述":"B, L, E, psbM"},{"ID":"1809","标识":"NGC1809","M标识":"NGC1809","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h2m5.3s","赤经D(J2000)":"5.034805555555556","赤纬(J2000)":"-69h34m6s","赤纬D(J2000)":"-69.56833333333333","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.2","短轴(分)":"0.8","方位角":"143","详细描述":"pretty faint, small, round, gradually brighter middle, 2nd of 2","简略描述":"pF, S, R, gbM, 2nd of 2"},{"ID":"1810","标识":"NGC1810","M标识":"NGC1810","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h3m23.3s","赤经D(J2000)":"5.056472222222222","赤纬(J2000)":"-66h22m55s","赤纬D(J2000)":"-66.38194444444444","可见光星等V":"11.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"considerably faint, small, round, a little brighter middle, globular cluster following (to the east)","简略描述":"cF, S, R, lbM, globular f"},{"ID":"1811","标识":"NGC1811","M标识":"NGC1811","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h8m42.5s","赤经D(J2000)":"5.145138888888889","赤纬(J2000)":"-29h16m35s","赤纬D(J2000)":"-29.27638888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"0.4","方位角":"60","详细描述":"considerably faint, small, a little extended, preceding (western) of 2","简略描述":"cF, S, lE, p of 2"},{"ID":"1812","标识":"NGC1812","M标识":"NGC1812","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h8m52.8s","赤经D(J2000)":"5.148000000000001","赤纬(J2000)":"-29h15m6s","赤纬D(J2000)":"-29.251666666666665","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"8","详细描述":"faint, small, round, gradually a little brighter middle, following (eastern) of 2","简略描述":"F, S, R, glbM, f of 2"},{"ID":"1813","标识":"NGC1813","M标识":"NGC1813","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h2m40.4s","赤经D(J2000)":"5.044555555555555","赤纬(J2000)":"-70h19m5s","赤纬D(J2000)":"-70.31805555555555","可见光星等V":"12.8","摄影(蓝光)星等B":"12.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, mottled but not resolved","简略描述":"vF, S, R, r"},{"ID":"1814","标识":"NGC1814","M标识":"NGC1814","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h3m46.5s","赤经D(J2000)":"5.062916666666666","赤纬(J2000)":"-67h18m3s","赤纬D(J2000)":"-67.30083333333333","可见光星等V":"9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"very faint, round, smaller of 2 in cluster","简略描述":"vF, R, s of 2 in Cl"},{"ID":"1815","标识":"NGC1815","M标识":"NGC1815","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h2m27.3s","赤经D(J2000)":"5.040916666666667","赤纬(J2000)":"-70h37m16s","赤纬D(J2000)":"-70.6211111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"12.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, very little brighter middle, among stars","简略描述":"F, vS, R, vlbM, am st"},{"ID":"1816","标识":"NGC1816","M标识":"NGC1816","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h3m50.8s","赤经D(J2000)":"5.064111111111111","赤纬(J2000)":"-67h15m39s","赤纬D(J2000)":"-67.26083333333334","可见光星等V":"9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"very faint, round, 2nd nebula in cluster","简略描述":"vF, R, 2nd neb in Cl"},{"ID":"1817","标识":"NGC1817","M标识":"NGC1817","拓展名":"","组件":"","Class":"VII 4","业余排名":"6","中文名":"贫双星团","类型":"OCL","含重复类型":"OCL","形态":"III1m","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"5h12m27s","赤经D(J2000)":"5.2075000000000005","赤纬(J2000)":"+16h41m0s","赤纬D(J2000)":"16.683333333333334","可见光星等V":"7.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"cluster, large, rich, a little compressed, stars from 11th to 14th magnitude","简略描述":"Cl, L, Ri, lC, st 11…14"},{"ID":"1818","标识":"NGC1818","M标识":"NGC1818","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h4m14.8s","赤经D(J2000)":"5.070777777777778","赤纬(J2000)":"-66h26m4s","赤纬D(J2000)":"-66.43444444444445","可见光星等V":"9.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.4","短轴(分)":"","方位角":"","详细描述":"globular cluster, very bright, pretty large, round, very much compressed, partially resolved, some stars seen","简略描述":"globular, vB, pL, R, vmC, rr"},{"ID":"1819","标识":"NGC1819","M标识":"NGC1819","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h11m46s","赤经D(J2000)":"5.196111111111112","赤纬(J2000)":"+5h12m3s","赤纬D(J2000)":"5.200833333333334","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"1","方位角":"120","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"1820","标识":"NGC1820","M标识":"NGC1820","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h4m4s","赤经D(J2000)":"5.067777777777778","赤纬(J2000)":"-67h16m18s","赤纬D(J2000)":"-67.27166666666666","可见光星等V":"9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"cluster, pretty large, rich, compressed, irregular figure","简略描述":"Cl, pL, Ri, C, iF"},{"ID":"1821","标识":"NGC1821","M标识":"NGC1821","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h11m46s","赤经D(J2000)":"5.196111111111112","赤纬(J2000)":"-15h8m4s","赤纬D(J2000)":"-15.134444444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"125","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"1822","标识":"NGC1822","M标识":"NGC1822","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h5m9.2s","赤经D(J2000)":"5.0858888888888885","赤纬(J2000)":"-66h12m38s","赤纬D(J2000)":"-66.21055555555556","可见光星等V":"13.2","摄影(蓝光)星等B":"13.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"very faint, small, preceding (western) of 2","简略描述":"vF, S, p of 2"},{"ID":"1823","标识":"NGC1823","M标识":"NGC1823","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h3m25s","赤经D(J2000)":"5.0569444444444445","赤纬(J2000)":"-70h20m8s","赤纬D(J2000)":"-70.33555555555554","可见光星等V":"12.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.9","短轴(分)":"","方位角":"","详细描述":"cluster, pretty faint, large, irregular figure, stars from 12th to 15th magnitude","简略描述":"Cl, pF, L, iF, st 12…15"},{"ID":"1824","标识":"NGC1824","M标识":"NGC1824","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h6m56s","赤经D(J2000)":"5.115555555555555","赤纬(J2000)":"-59h43m31s","赤纬D(J2000)":"-59.72527777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.2","短轴(分)":"0.8","方位角":"160","详细描述":"very faint, pretty large, very much extended 162°","简略描述":"vF, pL, vmE 162°"},{"ID":"1825","标识":"NGC1825","M标识":"NGC1825","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h4m19s","赤经D(J2000)":"5.071944444444444","赤纬(J2000)":"-68h55m36s","赤纬D(J2000)":"-68.92666666666668","可见光星等V":"12","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"no description, in Nubecula major","简略描述":"No description, in Nubec major"},{"ID":"1826","标识":"NGC1826","M标识":"NGC1826","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h5m34s","赤经D(J2000)":"5.092777777777777","赤纬(J2000)":"-66h13m52s","赤纬D(J2000)":"-66.23111111111112","可见光星等V":"13.3","摄影(蓝光)星等B":"13.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.9","短轴(分)":"","方位角":"","详细描述":"very faint, small, following (eastern) of 2","简略描述":"vF, S, f of 2"},{"ID":"1827","标识":"NGC1827","M标识":"NGC1827","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h10m4.4s","赤经D(J2000)":"5.167888888888889","赤纬(J2000)":"-36h57m37s","赤纬D(J2000)":"-36.96027777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3","短轴(分)":"0.7","方位角":"120","详细描述":"very faint, very much extended, long ray, 11th magnitude star involved","简略描述":"vF, vmE, long ray, * 11 inv"},{"ID":"1828","标识":"NGC1828","M标识":"NGC1828","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h4m20.9s","赤经D(J2000)":"5.072472222222222","赤纬(J2000)":"-69h23m18s","赤纬D(J2000)":"-69.38833333333334","可见光星等V":"12.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"faint, small, round, 1st of 3","简略描述":"F, S, R, 1st of 3"},{"ID":"1829","标识":"NGC1829","M标识":"NGC1829","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h4m57.4s","赤经D(J2000)":"5.0826111111111105","赤纬(J2000)":"-68h3m20s","赤纬D(J2000)":"-68.05555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.1","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, round, mottled but not resolved","简略描述":"F, pL, R, r"},{"ID":"1830","标识":"NGC1830","M标识":"NGC1830","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h4m38.3s","赤经D(J2000)":"5.077305555555555","赤纬(J2000)":"-69h20m25s","赤纬D(J2000)":"-69.34027777777777","可见光星等V":"12.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, round, 2nd of 3","简略描述":"F, pS, R, 2nd of 3"},{"ID":"1831","标识":"NGC1831","M标识":"NGC1831","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h6m16.2s","赤经D(J2000)":"5.1045","赤纬(J2000)":"-64h55m7s","赤纬D(J2000)":"-64.91861111111112","可见光星等V":"11.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.9","短轴(分)":"","方位角":"","详细描述":"bright, large, round, gradually a little brighter middle, mottled but not resolved","简略描述":"B, L, R, glbM, r"},{"ID":"1832","标识":"NGC1832","M标识":"NGC1832","拓展名":"","组件":"","Class":"II 292","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h12m3s","赤经D(J2000)":"5.200833333333334","赤纬(J2000)":"-15h41m20s","赤纬D(J2000)":"-15.68888888888889","可见光星等V":"11.3","摄影(蓝光)星等B":"12","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.6","短轴(分)":"1.7","方位角":"12","详细描述":"pretty bright, irregularly round, much brighter middle, considerable star 1 arcmin to northeast","简略描述":"pB, iR, mbM, c * nf 1'"},{"ID":"1833","标识":"NGC1833","M标识":"NGC1833","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h4m21.8s","赤经D(J2000)":"5.072722222222222","赤纬(J2000)":"-70h43m54s","赤纬D(J2000)":"-70.73166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.1","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, 1st of several","简略描述":"vF, pL, 1st of sev"},{"ID":"1834","标识":"NGC1834","M标识":"NGC1834","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h5m11.4s","赤经D(J2000)":"5.0865","赤纬(J2000)":"-69h12m27s","赤纬D(J2000)":"-69.2075","可见光星等V":"99","摄影(蓝光)星等B":"11.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"planetary?, bright, extremely small, a little extended","简略描述":"planetary ? B, eS, lE"},{"ID":"1835","标识":"NGC1835","M标识":"NGC1835","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h5m5.7s","赤经D(J2000)":"5.0849166666666665","赤纬(J2000)":"-69h24m15s","赤纬D(J2000)":"-69.40416666666667","可见光星等V":"10.6","摄影(蓝光)星等B":"11.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"considerably bright, small, round, gradually much brighter middle, 3rd of 3","简略描述":"cB, S, R, gmbM, 3rd of 3"},{"ID":"1836","标识":"NGC1836","M标识":"NGC1836","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h5m34.5s","赤经D(J2000)":"5.0929166666666665","赤纬(J2000)":"-68h37m41s","赤纬D(J2000)":"-68.62805555555555","可见光星等V":"12.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"star plus nebula, 1st of several","简略描述":"st + neb, 1st of sev"},{"ID":"1837","标识":"NGC1837","M标识":"NGC1837","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h4m55.9s","赤经D(J2000)":"5.082194444444444","赤纬(J2000)":"-70h42m51s","赤纬D(J2000)":"-70.71416666666667","可见光星等V":"10.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.3","短轴(分)":"","方位角":"","详细描述":"cluster, large, rich, scattered stars","简略描述":"Cl, L, Ri, st sc"},{"ID":"1838","标识":"NGC1838","M标识":"NGC1838","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h6m47s","赤经D(J2000)":"5.1130555555555555","赤纬(J2000)":"-68h25m24s","赤纬D(J2000)":"-68.42333333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"cluster, large, very little compressed","简略描述":"Cl, L, vlC"},{"ID":"1839","标识":"NGC1839","M标识":"NGC1839","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h6m2.4s","赤经D(J2000)":"5.100666666666666","赤纬(J2000)":"-68h37m37s","赤纬D(J2000)":"-68.62694444444443","可见光星等V":"11.8","摄影(蓝光)星等B":"11.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"stars plus nebula, pretty bright, irregular figure, 2nd of several","简略描述":"st + neb, pB, iF, 2nd of sev"},{"ID":"1840","标识":"NGC1840","M标识":"NGC1840","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h5m19.2s","赤经D(J2000)":"5.088666666666667","赤纬(J2000)":"-71h45m47s","赤纬D(J2000)":"-71.76305555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"faint, round, brighter middle, mottled but not resolved (min of RA questionable?)","简略描述":"F, R, bM, r (? min of RA)"},{"ID":"1841","标识":"NGC1841","M标识":"NGC1841","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"4h45m23.1s","赤经D(J2000)":"4.7564166666666665","赤纬(J2000)":"-83h59m49s","赤纬D(J2000)":"-83.99694444444445","可见光星等V":"14.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.4","短轴(分)":"","方位角":"","详细描述":"pretty faint, large, irregularly round, very suddenly brighter middle, mottled but not resolved","简略描述":"pF, L, iR, vsbM, r"},{"ID":"1842","标识":"NGC1842","M标识":"NGC1842","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h7m18.2s","赤经D(J2000)":"5.121722222222222","赤纬(J2000)":"-67h16m24s","赤纬D(J2000)":"-67.27333333333333","可见光星等V":"14","摄影(蓝光)星等B":"14.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"very very faint, round, preceding (western) of 2","简略描述":"vvF, R, p of 2"},{"ID":"1843","标识":"NGC1843","M标识":"NGC1843","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h14m6.1s","赤经D(J2000)":"5.235027777777778","赤纬(J2000)":"-10h37m36s","赤纬D(J2000)":"-10.626666666666667","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.1","短轴(分)":"1.7","方位角":"122","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"1844","标识":"NGC1844","M标识":"NGC1844","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h7m30.7s","赤经D(J2000)":"5.125194444444444","赤纬(J2000)":"-67h19m25s","赤纬D(J2000)":"-67.3236111111111","可见光星等V":"12.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.3","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty large, round, gradually brighter middle, following (eastern) of 2","简略描述":"pF, pL, R, gbM, f of 2"},{"ID":"1845","标识":"NGC1845","M标识":"NGC1845","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h5m45s","赤经D(J2000)":"5.095833333333333","赤纬(J2000)":"-70h34m54s","赤纬D(J2000)":"-70.58166666666666","可见光星等V":"10.2","摄影(蓝光)星等B":"10.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"cluster, very little compressed middle, stars of 9th and 11th through 16th magnitude","简略描述":"Cl, vlCM, st 9, 11…16"},{"ID":"1846","标识":"NGC1846","M标识":"NGC1846","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h7m34.7s","赤经D(J2000)":"5.126305555555555","赤纬(J2000)":"-67h27m31s","赤纬D(J2000)":"-67.45861111111111","可见光星等V":"11.3","摄影(蓝光)星等B":"12.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.8","短轴(分)":"","方位角":"","详细描述":"pretty bright, considerably large, round, very gradually a little brighter middle, mottled but not resolved","简略描述":"pB, cL, R, vglbM, r"},{"ID":"1847","标识":"NGC1847","M标识":"NGC1847","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h7m8.2s","赤经D(J2000)":"5.118944444444444","赤纬(J2000)":"-68h58m17s","赤纬D(J2000)":"-68.9713888888889","可见光星等V":"11.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"bright, small, a little extended, double star in middle","简略描述":"B, S, lE, ** in M"},{"ID":"1848","标识":"NGC1848","M标识":"NGC1848","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h7m27.2s","赤经D(J2000)":"5.124222222222222","赤纬(J2000)":"-71h11m44s","赤纬D(J2000)":"-71.19555555555556","可见光星等V":"9.7","摄影(蓝光)星等B":"9.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"cluster, very little compressed, stars from 9th magnitude","简略描述":"Cl, vlC, st 9…"},{"ID":"1849","标识":"NGC1849","M标识":"NGC1849","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h9m34.9s","赤经D(J2000)":"5.159694444444445","赤纬(J2000)":"-66h18m57s","赤纬D(J2000)":"-66.31583333333333","可见光星等V":"12.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.3","短轴(分)":"","方位角":"","详细描述":"very faint, small, a little extended, gradually a little brighter middle","简略描述":"vF, S, lE, glbM"},{"ID":"1850","标识":"NGC1850","M标识":"NGC1850","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h8m44.8s","赤经D(J2000)":"5.145777777777778","赤纬(J2000)":"-68h45m42s","赤纬D(J2000)":"-68.76166666666667","可见光星等V":"9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.4","短轴(分)":"","方位角":"","详细描述":"remarkable object, a globular cluster, very bright, large, a little extended, very much compressed middle, partially resolved, some stars seen","简略描述":"globular! vB, L, lE, vmCM, rr"},{"ID":"1851","标识":"NGC1851","M标识":"NGC1851","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"II","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h14m6.3s","赤经D(J2000)":"5.235083333333334","赤纬(J2000)":"-40h2m48s","赤纬D(J2000)":"-40.04666666666667","可见光星等V":"7.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"remarkable object, a globular cluster, very bright, very large, round, very suddenly very very much brighter middle, well resolved, clearly consisting of stars","简略描述":"globular! vB, vL, R, vsvvbM, rrr"},{"ID":"1852","标识":"NGC1852","M标识":"NGC1852","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h9m24s","赤经D(J2000)":"5.156666666666667","赤纬(J2000)":"-67h46m39s","赤纬D(J2000)":"-67.7775","可见光星等V":"12","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.8","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, round, very gradually a little brighter middle","简略描述":"F, pL, R, vglbM"},{"ID":"1853","标识":"NGC1853","M标识":"NGC1853","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h12m16s","赤经D(J2000)":"5.204444444444444","赤纬(J2000)":"-57h23m58s","赤纬D(J2000)":"-57.39944444444444","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2","短轴(分)":"0.7","方位角":"43","详细描述":"faint, small, much extended 45°, very gradually very little brighter middle, 11th magnitude star to northeast","简略描述":"F, S, mE 45°, vgvlbM, * 11 nf"},{"ID":"1854","标识":"NGC1854","M标识":"NGC1854","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h9m20s","赤经D(J2000)":"5.155555555555556","赤纬(J2000)":"-68h50m51s","赤纬D(J2000)":"-68.8475","可见光星等V":"10.4","摄影(蓝光)星等B":"10.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"globular cluster, considerably bright, small, round, gradually brighter middle, 2nd of 3","简略描述":"globular, cB, S, R, gbM, 2nd of 3"},{"ID":"1855","标识":"NGC1855","M标识":"NGC1855","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"GCL","含重复类型":"Dup","形态":"GCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h9m20s","赤经D(J2000)":"5.155555555555556","赤纬(J2000)":"-68h50m51s","赤纬D(J2000)":"-68.8475","可见光星等V":"10.4","摄影(蓝光)星等B":"10.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"globular cluster, considerably bright, small, round, gradually brighter middle, 2nd of 3","简略描述":"Cl, vB, L, R, st 12"},{"ID":"1856","标识":"NGC1856","M标识":"NGC1856","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h9m29.4s","赤经D(J2000)":"5.158166666666667","赤纬(J2000)":"-69h7m40s","赤纬D(J2000)":"-69.12777777777777","可见光星等V":"10.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.8","短轴(分)":"","方位角":"","详细描述":"bright, pretty large, round, gradually brighter middle, 12 seconds of time diameter in RA","简略描述":"B, pL, R, gbM, 12s diam RA"},{"ID":"1857","标识":"NGC1857","M标识":"NGC1857","拓展名":"","组件":"","Class":"VII 33","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h20m5s","赤经D(J2000)":"5.334722222222222","赤纬(J2000)":"+39h20m36s","赤纬D(J2000)":"39.343333333333334","可见光星等V":"7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"cluster, pretty rich, pretty compressed, stars from 7th magnitude downward.","简略描述":"Cl, pRi, pC, st 7…"},{"ID":"1858","标识":"NGC1858","M标识":"NGC1858","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h9m55s","赤经D(J2000)":"5.165277777777778","赤纬(J2000)":"-68h53m54s","赤纬D(J2000)":"-68.89833333333334","可见光星等V":"9.9","摄影(蓝光)星等B":"9.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"bright, large, irregularly extended, binuclear, a cluster plus nebulosity","简略描述":"B, L, iE, biN, Cl + neb"},{"ID":"1859","标识":"NGC1859","M标识":"NGC1859","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h11m31.8s","赤经D(J2000)":"5.192166666666667","赤纬(J2000)":"-65h14m59s","赤纬D(J2000)":"-65.24972222222222","可见光星等V":"12.3","摄影(蓝光)星等B":"12.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"faint, small, round, very gradually brighter middle, 7th magnitude star 6 arcmin to northeast","简略描述":"F, S, R, vgbM, * 7 nf 6'"},{"ID":"1860","标识":"NGC1860","M标识":"NGC1860","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h10m39.6s","赤经D(J2000)":"5.177666666666667","赤纬(J2000)":"-68h45m8s","赤纬D(J2000)":"-68.75222222222222","可见光星等V":"11","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, round, very gradually brighter middle","简略描述":"F, pL, R, vgbM"},{"ID":"1861","标识":"NGC1861","M标识":"NGC1861","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h10m22.2s","赤经D(J2000)":"5.172833333333334","赤纬(J2000)":"-70h46m38s","赤纬D(J2000)":"-70.77722222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"13.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large, round, gradually a very little brighter middle","简略描述":"eF, pL, R, gvlbM"},{"ID":"1862","标识":"NGC1862","M标识":"NGC1862","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h12m34.6s","赤经D(J2000)":"5.209611111111111","赤纬(J2000)":"-66h9m16s","赤纬D(J2000)":"-66.15444444444445","可见光星等V":"13.3","摄影(蓝光)星等B":"13.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.3","短轴(分)":"","方位角":"","详细描述":"pretty faint, large, irregularly round, very gradually brighter middle, mottled but not resolved","简略描述":"pF, L, iR, vgbM, r"},{"ID":"1863","标识":"NGC1863","M标识":"NGC1863","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h11m39.6s","赤经D(J2000)":"5.194333333333334","赤纬(J2000)":"-68h43m37s","赤纬D(J2000)":"-68.72694444444444","可见光星等V":"11","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"very bright, very small, round, mottled but not resolved or stellar","简略描述":"vB, vS, R, r or stellar"},{"ID":"1864","标识":"NGC1864","M标识":"NGC1864","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h12m40.7s","赤经D(J2000)":"5.211305555555556","赤纬(J2000)":"-67h37m17s","赤纬D(J2000)":"-67.62138888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.9","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, irregularly round, brighter middle, mottled but not resolved or stellar","简略描述":"F, pS, iR, bM, r or stellar"},{"ID":"1865","标识":"NGC1865","M标识":"NGC1865","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h12m25.1s","赤经D(J2000)":"5.206972222222222","赤纬(J2000)":"-68h46m16s","赤纬D(J2000)":"-68.77111111111111","可见光星等V":"12.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, round, very gradually a little brighter middle","简略描述":"vF, pL, R, vglbM"},{"ID":"1866","标识":"NGC1866","M标识":"NGC1866","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h13m39.1s","赤经D(J2000)":"5.2275277777777776","赤纬(J2000)":"-65h27m56s","赤纬D(J2000)":"-65.46555555555555","可见光星等V":"9.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.5","短轴(分)":"","方位角":"","详细描述":"very bright, large, round, very gradually much brighter middle, mottled but not resolved","简略描述":"vB, L, R, vgmbM, r"},{"ID":"1867","标识":"NGC1867","M标识":"NGC1867","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h13m42.5s","赤经D(J2000)":"5.228472222222222","赤纬(J2000)":"-66h17m39s","赤纬D(J2000)":"-66.29416666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"13.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.3","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large, round","简略描述":"eF, pL, R"},{"ID":"1868","标识":"NGC1868","M标识":"NGC1868","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h14m36.5s","赤经D(J2000)":"5.2434722222222225","赤纬(J2000)":"-63h57m18s","赤纬D(J2000)":"-63.955000000000005","可见光星等V":"11.6","摄影(蓝光)星等B":"12","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.9","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, round, very gradually a little brighter middle","简略描述":"pB, pL, R, vglbM"},{"ID":"1869","标识":"NGC1869","M标识":"NGC1869","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h13m52s","赤经D(J2000)":"5.231111111111111","赤纬(J2000)":"-67h22m40s","赤纬D(J2000)":"-67.37777777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"14","短轴(分)":"","方位角":"","详细描述":"cluster, large, pretty rich, scattered stars","简略描述":"Cl, L, pRi, st sc"},{"ID":"1870","标识":"NGC1870","M标识":"NGC1870","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h13m10s","赤经D(J2000)":"5.219444444444445","赤纬(J2000)":"-69h7m1s","赤纬D(J2000)":"-69.11694444444444","可见光星等V":"11.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"bright, small, round, gradually a little brighter middle","简略描述":"B, S, R, glbM"},{"ID":"1871","标识":"NGC1871","M标识":"NGC1871","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h13m51.8s","赤经D(J2000)":"5.231055555555556","赤纬(J2000)":"-67h27m10s","赤纬D(J2000)":"-67.45277777777778","可见光星等V":"10.1","摄影(蓝光)星等B":"10.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"cluster, a little rich, 2nd of several","简略描述":"Cl, lRi, 2nd of sev"},{"ID":"1872","标识":"NGC1872","M标识":"NGC1872","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h13m10.8s","赤经D(J2000)":"5.219666666666667","赤纬(J2000)":"-69h19m2s","赤纬D(J2000)":"-69.31722222222221","可见光星等V":"11","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"pretty bright, round, gradually brighter middle, 1st of group","简略描述":"pB, R, gbM, 1st of group"},{"ID":"1873","标识":"NGC1873","M标识":"NGC1873","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h13m55.7s","赤经D(J2000)":"5.232138888888889","赤纬(J2000)":"-67h20m4s","赤纬D(J2000)":"-67.33444444444444","可见光星等V":"10.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.5","短轴(分)":"","方位角":"","详细描述":"cluster, 3rd of several","简略描述":"Cl, 3rd of sev"},{"ID":"1874","标识":"NGC1874","M标识":"NGC1874","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h13m11.7s","赤经D(J2000)":"5.219916666666667","赤纬(J2000)":"-69h22m35s","赤纬D(J2000)":"-69.37638888888888","可见光星等V":"99","摄影(蓝光)星等B":"9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"nebula and cluster, binuclear","简略描述":"neb and Cl, biN"},{"ID":"1875","标识":"NGC1875","M标识":"NGC1875","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h21m45.7s","赤经D(J2000)":"5.362694444444444","赤纬(J2000)":"+6h41m20s","赤纬D(J2000)":"6.688888888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"20","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"1876","标识":"NGC1876","M标识":"NGC1876","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h13m18.5s","赤经D(J2000)":"5.221805555555556","赤纬(J2000)":"-69h21m52s","赤纬D(J2000)":"-69.36444444444444","可见光星等V":"11.7","摄影(蓝光)星等B":"11.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, irregularly round, binuclear, 2nd in group","简略描述":"pB, iR, biN, 2nd in group"},{"ID":"1877","标识":"NGC1877","M标识":"NGC1877","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h13m39s","赤经D(J2000)":"5.2275","赤纬(J2000)":"-69h23m0s","赤纬D(J2000)":"-69.38333333333334","可见光星等V":"99","摄影(蓝光)星等B":"12","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"very faint, 3rd of group in cluster","简略描述":"vF, 3rd of group in Cl"},{"ID":"1878","标识":"NGC1878","M标识":"NGC1878","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h12m51s","赤经D(J2000)":"5.214166666666667","赤纬(J2000)":"-70h28m18s","赤纬D(J2000)":"-70.47166666666666","可见光星等V":"12.9","摄影(蓝光)星等B":"13.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.1","短轴(分)":"","方位角":"","详细描述":"very faint, a little extended, gradually a very little brighter middle, mottled but not resolved","简略描述":"vF, lE, gvlbM, r"},{"ID":"1879","标识":"NGC1879","M标识":"NGC1879","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h19m48.1s","赤经D(J2000)":"5.330027777777778","赤纬(J2000)":"-32h8m33s","赤纬D(J2000)":"-32.1425","可见光星等V":"12.8","摄影(蓝光)星等B":"13.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.5","短轴(分)":"1.7","方位角":"60","详细描述":"very faint, large, round, very gradually very little brighter middle, 12th magnitude star to west","简略描述":"vF, L, R, vgvlbM, * 12 p"},{"ID":"1880","标识":"NGC1880","M标识":"NGC1880","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h13m39.2s","赤经D(J2000)":"5.227555555555556","赤纬(J2000)":"-69h22m52s","赤纬D(J2000)":"-69.38111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"4th of group in cluster","简略描述":"4th of group in Cl"},{"ID":"1881","标识":"NGC1881","M标识":"NGC1881","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h13m36s","赤经D(J2000)":"5.226666666666667","赤纬(J2000)":"-69h17m54s","赤纬D(J2000)":"-69.29833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, double star to west","简略描述":"vF, ** p"},{"ID":"1882","标识":"NGC1882","M标识":"NGC1882","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h15m33.4s","赤经D(J2000)":"5.259277777777778","赤纬(J2000)":"-66h7m47s","赤纬D(J2000)":"-66.12972222222221","可见光星等V":"12.3","摄影(蓝光)星等B":"12.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"pretty faint, round, very gradually very little brighter middle, mottled but not resolved","简略描述":"pF, R, vgvlbM, r"},{"ID":"1883","标识":"NGC1883","M标识":"NGC1883","拓展名":"","组件":"","Class":"VII 34","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3p","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h25m54.1s","赤经D(J2000)":"5.431694444444445","赤纬(J2000)":"+46h29m25s","赤纬D(J2000)":"46.49027777777778","可见光星等V":"12","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"cluster, very faint, pretty rich, pretty compressed, irregular figure","简略描述":"Cl, vF, pRi, pC, iF"},{"ID":"1884","标识":"NGC1884","M标识":"NGC1884","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h15m58s","赤经D(J2000)":"5.266111111111111","赤纬(J2000)":"-66h9m48s","赤纬D(J2000)":"-66.16333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large","简略描述":"eF, pL"},{"ID":"1885","标识":"NGC1885","M标识":"NGC1885","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h15m5.9s","赤经D(J2000)":"5.2516388888888885","赤纬(J2000)":"-68h58m40s","赤纬D(J2000)":"-68.97777777777777","可见光星等V":"12","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"pretty bright, very small, round, brighter middle","简略描述":"pB, vS, R, bM"},{"ID":"1886","标识":"NGC1886","M标识":"NGC1886","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h21m48.2s","赤经D(J2000)":"5.363388888888888","赤纬(J2000)":"-23h48m36s","赤纬D(J2000)":"-23.810000000000002","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.1","短轴(分)":"0.4","方位角":"60","详细描述":"very faint, pretty large, extended 240°, 8th magnitude star 40 arcsec to southwest","简略描述":"vF, pL, E 240°, * 8 sp 40\""},{"ID":"1887","标识":"NGC1887","M标识":"NGC1887","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h16m6s","赤经D(J2000)":"5.2683333333333335","赤纬(J2000)":"-66h19m7s","赤纬D(J2000)":"-66.31861111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"12.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.1","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, star 25 arcsec to west","简略描述":"vF, vS, R, * p 25\""},{"ID":"1888","标识":"NGC1888","M标识":"NGC1888","拓展名":"","组件":"","Class":"II 289","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h22m34.4s","赤经D(J2000)":"5.376222222222222","赤纬(J2000)":"-11h30m1s","赤纬D(J2000)":"-11.500277777777777","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3","短轴(分)":"0.8","方位角":"145","详细描述":"pretty bright, pretty large, round, mottled but not resolved","简略描述":"pB, pL, R, r"},{"ID":"1889","标识":"NGC1889","M标识":"NGC1889","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h22m35.3s","赤经D(J2000)":"5.376472222222222","赤纬(J2000)":"-11h29m49s","赤纬D(J2000)":"-11.496944444444443","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"165","详细描述":"pretty bright, pretty large, round, mottled but not resolved","简略描述":"Makes a close D neb with h 352"},{"ID":"1890","标识":"NGC1890","M标识":"NGC1890","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h13m45.9s","赤经D(J2000)":"5.229416666666666","赤纬(J2000)":"-72h4m41s","赤纬D(J2000)":"-72.07805555555555","可见光星等V":"12.8","摄影(蓝光)星等B":"13.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, gradually a little brighter middle","简略描述":"vF, S, R, glbM"},{"ID":"1891","标识":"NGC1891","M标识":"NGC1891","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h21m44s","赤经D(J2000)":"5.362222222222222","赤纬(J2000)":"-35h47m24s","赤纬D(J2000)":"-35.79","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"cluster, large, scattered, double star taken","简略描述":"Cl, L, sc, ** taken"},{"ID":"1892","标识":"NGC1892","M标识":"NGC1892","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h17m9.5s","赤经D(J2000)":"5.285972222222222","赤纬(J2000)":"-64h57m37s","赤纬D(J2000)":"-64.96027777777778","可见光星等V":"12.2","摄影(蓝光)星等B":"12.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.9","短轴(分)":"0.8","方位角":"74","详细描述":"considerably faint, pretty large, extended 90°±, very gradually little brighter middle","简略描述":"cF, pL, E 90° ±, vglbM"},{"ID":"1893","标识":"NGC1893","M标识":"NGC1893","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"字母Y星团","类型":"OCL","含重复类型":"OCL","形态":"II2mn","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h22m45.6s","赤经D(J2000)":"5.379333333333333","赤纬(J2000)":"+33h24m52s","赤纬D(J2000)":"33.41444444444444","可见光星等V":"7.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"cluster, large, rich, a little compressed","简略描述":"Cl, L, Ri, lC"},{"ID":"1894","标识":"NGC1894","M标识":"NGC1894","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h15m51.3s","赤经D(J2000)":"5.26425","赤纬(J2000)":"-69h28m7s","赤纬D(J2000)":"-69.46861111111112","可见光星等V":"12.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, rich, suddenly brighter middle, mottled but not resolved, star involved","简略描述":"F, pL, R, sbM, r, st inv"},{"ID":"1895","标识":"NGC1895","M标识":"NGC1895","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h16m52.4s","赤经D(J2000)":"5.2812222222222225","赤纬(J2000)":"-67h19m47s","赤纬D(J2000)":"-67.32972222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty large, rich, gradually very little brighter middle","简略描述":"pF, pL, R, gvlbM"},{"ID":"1896","标识":"NGC1896","M标识":"NGC1896","拓展名":"","组件":"","Class":"VIII 4","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h25m6s","赤经D(J2000)":"5.418333333333334","赤纬(J2000)":"+29h22m0s","赤纬D(J2000)":"29.366666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"cluster, very large, rich, very little compressed, stars from 9th to 12th magnitude","简略描述":"Cl, vL, Ri, vlC, st 9…12"},{"ID":"1897","标识":"NGC1897","M标识":"NGC1897","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h17m32.4s","赤经D(J2000)":"5.292333333333334","赤纬(J2000)":"-67h26m56s","赤纬D(J2000)":"-67.44888888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"13.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"1898","标识":"NGC1898","M标识":"NGC1898","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h16m42.4s","赤经D(J2000)":"5.278444444444444","赤纬(J2000)":"-69h39m23s","赤纬D(J2000)":"-69.6563888888889","可见光星等V":"11.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, round","简略描述":"F, pS, R"},{"ID":"1899","标识":"NGC1899","M标识":"NGC1899","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h17m46s","赤经D(J2000)":"5.296111111111111","赤纬(J2000)":"-67h54m0s","赤纬D(J2000)":"-67.9","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, round, very gradually a little brighter middle, three 10th magnitude stars to west","简略描述":"F, pS, R, vglbM, 3 st 10 p"},{"ID":"1900","标识":"NGC1900","M标识":"NGC1900","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h19m9.4s","赤经D(J2000)":"5.319277777777778","赤纬(J2000)":"-63h1m25s","赤纬D(J2000)":"-63.02361111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, a little extended, very gradually very little brighter middle, 7th magnitude star to northwest","简略描述":"F, pL, lE, vgvlbM, * 7 np"},{"ID":"1901","标识":"NGC1901","M标识":"NGC1901","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III3m","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h17m48s","赤经D(J2000)":"5.296666666666667","赤纬(J2000)":"-68h26m0s","赤纬D(J2000)":"-68.43333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"40","短轴(分)":"","方位角":"","详细描述":"cluster, bright middle, a little rich, stars from 7th magnitude downwards","简略描述":"Cl, BM, lRi, st 7…"},{"ID":"1902","标识":"NGC1902","M标识":"NGC1902","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h18m19.2s","赤经D(J2000)":"5.3053333333333335","赤纬(J2000)":"-66h37m39s","赤纬D(J2000)":"-66.6275","可见光星等V":"11.8","摄影(蓝光)星等B":"10","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.6","短轴(分)":"","方位角":"","详细描述":"globular cluster, pretty bright, pretty large, round, pretty much brighter middle, partially resolved, some stars seen","简略描述":"globular, pB, pL, R, pmbM, rr"},{"ID":"1903","标识":"NGC1903","M标识":"NGC1903","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h17m22.4s","赤经D(J2000)":"5.289555555555555","赤纬(J2000)":"-69h20m7s","赤纬D(J2000)":"-69.33527777777778","可见光星等V":"11.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"very bright, small, round, gradually much brighter middle","简略描述":"vB, S, R, gmbM"},{"ID":"1904","标识":"NGC1904","M标识":"M79","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"V","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h24m10.6s","赤经D(J2000)":"5.4029444444444445","赤纬(J2000)":"-24h31m25s","赤纬D(J2000)":"-24.52361111111111","可见光星等V":"7.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9.6","短轴(分)":"","方位角":"","详细描述":"a globular cluster, pretty large, extremely rich, extremely compressed, well resolved, clearly consisting of stars","简略描述":"globular, pL, eRi, eC, rrr"},{"ID":"1905","标识":"NGC1905","M标识":"NGC1905","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h18m23.6s","赤经D(J2000)":"5.306555555555556","赤纬(J2000)":"-67h16m41s","赤纬D(J2000)":"-67.27805555555555","可见光星等V":"13.2","摄影(蓝光)星等B":"13.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"faint, small, round, mottled but not resolved","简略描述":"F, S, R, r"},{"ID":"1906","标识":"NGC1906","M标识":"NGC1906","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h24m47.1s","赤经D(J2000)":"5.413083333333334","赤纬(J2000)":"-15h56m34s","赤纬D(J2000)":"-15.942777777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"145","详细描述":"extremely faint, pretty small, extended 0°, gradually a little brighter middle","简略描述":"eF, pS, E 0°, glbM"},{"ID":"1907","标识":"NGC1907","M标识":"NGC1907","拓展名":"","组件":"","Class":"VII 39","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1m","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h28m4.5s","赤经D(J2000)":"5.4679166666666665","赤纬(J2000)":"+35h19m32s","赤纬D(J2000)":"35.32555555555556","可见光星等V":"8.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"cluster, pretty rich, pretty compressed, round, stars from 9th to 12th magnitude","简略描述":"Cl, pRi, pC, R, st 9…12"},{"ID":"1908","标识":"NGC1908","M标识":"NGC1908","拓展名":"","组件":"","Class":"V 33","业余排名":"15","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h25m53.7s","赤经D(J2000)":"5.431583333333333","赤纬(J2000)":"-2h31m44s","赤纬D(J2000)":"-2.528888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very diffused nebula suspected","简略描述":"v diffused neb susp"},{"ID":"1909","标识":"NGC1909","M标识":"NGC1909","拓展名":"","组件":"","Class":"V 38","业余排名":"13","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"5h25m54s","赤经D(J2000)":"5.431666666666667","赤纬(J2000)":"-8h1m0s","赤纬D(J2000)":"-8.016666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely large, strongly suspected (2° in PD)","简略描述":"eL, strongly susp (2° in PD)"},{"ID":"1910","标识":"NGC1910","M标识":"NGC1910","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"剑鱼座S星团","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h18m33.4s","赤经D(J2000)":"5.309277777777778","赤纬(J2000)":"-69h13m49s","赤纬D(J2000)":"-69.23027777777779","可见光星等V":"11.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8.5","短轴(分)":"","方位角":"","详细描述":"cluster, large, pretty rich, irregularly round, stars from 11th to 16th magnitude","简略描述":"Cl, L, pRi, iR, st 11…16"},{"ID":"1911","标识":"NGC1911","M标识":"NGC1911","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Dup","形态":"EN+OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h20m33s","赤经D(J2000)":"5.342499999999999","赤纬(J2000)":"-66h46m43s","赤纬D(J2000)":"-66.7786111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, round, gradually brighter middle, among stars","简略描述":"F, R, gbM, am st"},{"ID":"1912","标识":"NGC1912","M标识":"M38","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"海星星团","类型":"OCL","含重复类型":"OCL","形态":"II2r","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h28m43s","赤经D(J2000)":"5.478611111111111","赤纬(J2000)":"+35h51m18s","赤纬D(J2000)":"35.855000000000004","可见光星等V":"6.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"cluster, bright, very large, very rich, irregular figure, large and small stars","简略描述":"Cl, B, vL, vRi, iF, st L & S"},{"ID":"1913","标识":"NGC1913","M标识":"NGC1913","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h18m19.4s","赤经D(J2000)":"5.3053888888888885","赤纬(J2000)":"-69h32m12s","赤纬D(J2000)":"-69.53666666666666","可见光星等V":"11.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"standard","简略描述":"No description, in Nubec major"},{"ID":"1914","标识":"NGC1914","M标识":"NGC1914","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h17m39.8s","赤经D(J2000)":"5.294388888888888","赤纬(J2000)":"-71h15m21s","赤纬D(J2000)":"-71.25583333333333","可见光星等V":"12","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.2","短轴(分)":"","方位角":"","详细描述":"faint, large, irregularly extended","简略描述":"F, L, iE"},{"ID":"1915","标识":"NGC1915","M标识":"NGC1915","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h19m42.3s","赤经D(J2000)":"5.328416666666667","赤纬(J2000)":"-66h49m17s","赤纬D(J2000)":"-66.82138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large","简略描述":"eF, pL"},{"ID":"1916","标识":"NGC1916","M标识":"NGC1916","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h18m36.5s","赤经D(J2000)":"5.310138888888889","赤纬(J2000)":"-69h24m25s","赤纬D(J2000)":"-69.40694444444445","可见光星等V":"10.4","摄影(蓝光)星等B":"11.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"bright, small, round, very gradually very much brighter middle, mottled but not resolved","简略描述":"B, S, R, vgvmbM, r"},{"ID":"1917","标识":"NGC1917","M标识":"NGC1917","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h19m1.2s","赤经D(J2000)":"5.317","赤纬(J2000)":"-68h59m54s","赤纬D(J2000)":"-68.99833333333333","可见光星等V":"12.3","摄影(蓝光)星等B":"12.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, large, round, very gradually a little brighter middle","简略描述":"vF, L, R, vglbM"},{"ID":"1918","标识":"NGC1918","M标识":"NGC1918","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"SNR","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h19m7.1s","赤经D(J2000)":"5.318638888888889","赤纬(J2000)":"-69h39m45s","赤纬D(J2000)":"-69.66250000000001","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"standard","简略描述":"No description, in Nubec major"},{"ID":"1919","标识":"NGC1919","M标识":"NGC1919","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h20m18s","赤经D(J2000)":"5.338333333333333","赤纬(J2000)":"-66h53m20s","赤纬D(J2000)":"-66.8888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"cluster, extremely faint, large, irregularly round, much compressed, partially resolved, some stars seen","简略描述":"Cl, eF, L, iR, mC, rr"},{"ID":"1920","标识":"NGC1920","M标识":"NGC1920","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h20m33s","赤经D(J2000)":"5.342499999999999","赤纬(J2000)":"-66h46m43s","赤纬D(J2000)":"-66.7786111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, round, gradually brighter middle, among stars","简略描述":"pB, pL, R, vgbM"},{"ID":"1921","标识":"NGC1921","M标识":"NGC1921","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h19m22.8s","赤经D(J2000)":"5.3229999999999995","赤纬(J2000)":"-69h47m16s","赤纬D(J2000)":"-69.78777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, a little extended, mottled but not resolved","简略描述":"vF, pS, lE, r"},{"ID":"1922","标识":"NGC1922","M标识":"NGC1922","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"海星星团","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h19m50s","赤经D(J2000)":"5.330555555555556","赤纬(J2000)":"-69h30m6s","赤纬D(J2000)":"-69.50166666666667","可见光星等V":"11.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"standard","简略描述":"No description, in Nubec major"},{"ID":"1923","标识":"NGC1923","M标识":"NGC1923","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h21m34.1s","赤经D(J2000)":"5.359472222222222","赤纬(J2000)":"-65h29m12s","赤纬D(J2000)":"-65.48666666666666","可见光星等V":"11.2","摄影(蓝光)星等B":"11.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.9","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"1924","标识":"NGC1924","M标识":"NGC1924","拓展名":"","组件":"","Class":"III 447","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h28m1.9s","赤经D(J2000)":"5.467194444444445","赤纬(J2000)":"-5h18m37s","赤纬D(J2000)":"-5.310277777777777","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"140","详细描述":"very faint, pretty large, irregularly round, stars near","简略描述":"vF, pL, iR, st nr"},{"ID":"1925","标识":"NGC1925","M标识":"NGC1925","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h21m30s","赤经D(J2000)":"5.358333333333333","赤纬(J2000)":"-65h48m48s","赤纬D(J2000)":"-65.81333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"11","短轴(分)":"","方位角":"","详细描述":"cluster, very little rich, a little compressed, stars of 10th magnitude","简略描述":"Cl, vlRi, lC, st 10"},{"ID":"1926","标识":"NGC1926","M标识":"NGC1926","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h20m34.2s","赤经D(J2000)":"5.342833333333333","赤纬(J2000)":"-69h31m27s","赤纬D(J2000)":"-69.52416666666666","可见光星等V":"11.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, irregularly round, mottled but not resolved, in diffuse nebula","简略描述":"pB, pL, iR, r, in dif n"},{"ID":"1927","标识":"NGC1927","M标识":"NGC1927","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h28m42.9s","赤经D(J2000)":"5.478583333333334","赤纬(J2000)":"-8h22m38s","赤纬D(J2000)":"-8.377222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"diffused nebulosity","简略描述":"Diffused nebulosity"},{"ID":"1928","标识":"NGC1928","M标识":"NGC1928","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h20m56.6s","赤经D(J2000)":"5.349055555555555","赤纬(J2000)":"-69h28m41s","赤纬D(J2000)":"-69.47805555555556","可见光星等V":"11.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty large, round, gradually brighter middle","简略描述":"pF, pL, R, gbM"},{"ID":"1929","标识":"NGC1929","M标识":"NGC1929","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h21m37s","赤经D(J2000)":"5.360277777777777","赤纬(J2000)":"-67h54m48s","赤纬D(J2000)":"-67.91333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, preceding of group","简略描述":"F, p of group"},{"ID":"1930","标识":"NGC1930","M标识":"NGC1930","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"5h25m56.6s","赤经D(J2000)":"5.432388888888889","赤纬(J2000)":"-46h43m42s","赤纬D(J2000)":"-46.72833333333333","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"1.2","方位角":"32","详细描述":"pretty faint, small, round, brighter middle, 4 bright stars to west","简略描述":"pF, S, R, bM, 4 B st p"},{"ID":"1931","标识":"NGC1931","M标识":"NGC1931","拓展名":"","组件":"","Class":"I 261","业余排名":"6","中文名":"苍蝇星云","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h31m25.7s","赤经D(J2000)":"5.523805555555556","赤纬(J2000)":"+34h14m42s","赤纬D(J2000)":"34.245","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very bright, large, round, bright triple star in middle","简略描述":"vB, L, R, B *** in M"},{"ID":"1932","标识":"NGC1932","M标识":"NGC1932","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h22m17.3s","赤经D(J2000)":"5.371472222222222","赤纬(J2000)":"-66h9m14s","赤纬D(J2000)":"-66.1538888888889","可见光星等V":"99","摄影(蓝光)星等B":"13.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, round, suddenly much brighter middle, part of a double nebula separated by 80 arcsec, at a position angle of 26° (relative to each other)","简略描述":"pB, S, R, smbM, D neb 26°, 80\""},{"ID":"1933","标识":"NGC1933","M标识":"NGC1933","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h22m27.3s","赤经D(J2000)":"5.37425","赤纬(J2000)":"-66h9m8s","赤纬D(J2000)":"-66.15222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, round, stellar, part of a double nebula separated by 80 arcsec, at a position angle of 26° (relative to each other)","简略描述":"eF, R, stellar, D neb 26°, 80\""},{"ID":"1934","标识":"NGC1934","M标识":"NGC1934","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h21m54s","赤经D(J2000)":"5.364999999999999","赤纬(J2000)":"-67h54m54s","赤纬D(J2000)":"-67.915","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"2nd nebula of group","简略描述":"2nd neb of group"},{"ID":"1935","标识":"NGC1935","M标识":"NGC1935","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h21m58.8s","赤经D(J2000)":"5.366333333333333","赤纬(J2000)":"-67h57m27s","赤纬D(J2000)":"-67.9575","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, round, 3rd of group","简略描述":"pF, S, R, 3rd of group"},{"ID":"1936","标识":"NGC1936","M标识":"NGC1936","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h22m14.6s","赤经D(J2000)":"5.370722222222222","赤纬(J2000)":"-67h58m34s","赤纬D(J2000)":"-67.97611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a remarkable object, pretty bright, small, round, 4th of group","简略描述":"!, pB, S, R, 4th of group"},{"ID":"1937","标识":"NGC1937","M标识":"NGC1937","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h22m24s","赤经D(J2000)":"5.373333333333333","赤纬(J2000)":"-67h54m0s","赤纬D(J2000)":"-67.9","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, follows a group","简略描述":"vF, pL, follows a group"},{"ID":"1938","标识":"NGC1938","M标识":"NGC1938","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h21m24.8s","赤经D(J2000)":"5.356888888888888","赤纬(J2000)":"-69h56m22s","赤纬D(J2000)":"-69.93944444444445","可见光星等V":"11.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty small, round, gradually a little brighter middle, part of a double nebula separated by 50 arcsec, with a position angle of 339°","简略描述":"pB, pS, R, glbM, D neb 339°, 50\""},{"ID":"1939","标识":"NGC1939","M标识":"NGC1939","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h21m26.7s","赤经D(J2000)":"5.3574166666666665","赤纬(J2000)":"-69h56m59s","赤纬D(J2000)":"-69.94972222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"faint, small, round, gradually a little brighter middle, part of a double nebula separated by 50 arcsec, with a position angle of 339°","简略描述":"F, S, R, glbM, D neb 339°, 50\""},{"ID":"1940","标识":"NGC1940","M标识":"NGC1940","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h22m43.8s","赤经D(J2000)":"5.378833333333333","赤纬(J2000)":"-67h11m12s","赤纬D(J2000)":"-67.18666666666667","可见光星等V":"11.9","摄影(蓝光)星等B":"12.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"pretty bright, very small, round, brighter middle, 2 stars of 9th and 10th magnitude to east","简略描述":"pB, vS, R, bM, 2 st 9 & 10 f"},{"ID":"1941","标识":"NGC1941","M标识":"NGC1941","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h23m7.8s","赤经D(J2000)":"5.3855","赤纬(J2000)":"-66h22m43s","赤纬D(J2000)":"-66.3786111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very small, nebula plus stars","简略描述":"vS, neb + st"},{"ID":"1942","标识":"NGC1942","M标识":"NGC1942","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h24m44.6s","赤经D(J2000)":"5.41238888888889","赤纬(J2000)":"-63h56m32s","赤纬D(J2000)":"-63.94222222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.1","短轴(分)":"","方位角":"","详细描述":"extremely faint, stellar, 14th magnitude star plus nebula","简略描述":"eF, stell, * 14 + neb"},{"ID":"1943","标识":"NGC1943","M标识":"NGC1943","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h22m28.8s","赤经D(J2000)":"5.374666666666666","赤纬(J2000)":"-70h9m18s","赤纬D(J2000)":"-70.155","可见光星等V":"99","摄影(蓝光)星等B":"12","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty small, irregularly round, very gradually a little brighter middle, 15th magnitude star 60 arcsec distant at position angle 190°.6","简略描述":"pF, pS, iR, vglbM, * 15, 190°.6, 60\""},{"ID":"1944","标识":"NGC1944","M标识":"NGC1944","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h21m57.4s","赤经D(J2000)":"5.365944444444444","赤纬(J2000)":"-72h29m40s","赤纬D(J2000)":"-72.49444444444444","可见光星等V":"11.8","摄影(蓝光)星等B":"12.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.3","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, round, brighter middle","简略描述":"pB, pL, R, bM"},{"ID":"1945","标识":"NGC1945","M标识":"NGC1945","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h24m54s","赤经D(J2000)":"5.415","赤纬(J2000)":"-66h27m12s","赤纬D(J2000)":"-66.45333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most excessively extremely faint, very very large, irregularly diffuse","简略描述":"eeeF, vvL, irr dif"},{"ID":"1946","标识":"NGC1946","M标识":"NGC1946","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h25m16.4s","赤经D(J2000)":"5.421222222222222","赤纬(J2000)":"-66h23m41s","赤纬D(J2000)":"-66.39472222222223","可见光星等V":"12.6","摄影(蓝光)星等B":"12.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"pretty faint, round, gradually brighter middle, mottled but not resolved","简略描述":"pF, R, gbM, r"},{"ID":"1947","标识":"NGC1947","M标识":"NGC1947","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h26m47.3s","赤经D(J2000)":"5.446472222222223","赤纬(J2000)":"-63h45m39s","赤纬D(J2000)":"-63.76083333333333","可见光星等V":"10.7","摄影(蓝光)星等B":"11.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3","短轴(分)":"2.6","方位角":"119","详细描述":"pretty bright, large, round, gradually a little brighter middle, 9th magnitude star to northwest","简略描述":"pB, L, R, glbM, * 9 np"},{"ID":"1948","标识":"NGC1948","M标识":"NGC1948","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h25m46.3s","赤经D(J2000)":"5.429527777777778","赤纬(J2000)":"-66h16m1s","赤纬D(J2000)":"-66.26694444444445","可见光星等V":"11.6","摄影(蓝光)星等B":"11.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"cluster, considerably large, rich, stars of 13th magnitude","简略描述":"Cl, cL, Ri, st 13"},{"ID":"1949","标识":"NGC1949","M标识":"NGC1949","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h25m5s","赤经D(J2000)":"5.418055555555556","赤纬(J2000)":"-68h28m16s","赤纬D(J2000)":"-68.47111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, round, pretty suddenly brighter middle","简略描述":"pB, S, R, psbM"},{"ID":"1950","标识":"NGC1950","M标识":"NGC1950","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h24m33.1s","赤经D(J2000)":"5.409194444444445","赤纬(J2000)":"-69h54m9s","赤纬D(J2000)":"-69.9025","可见光星等V":"13.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"","简略描述":"The 1st of a group of 7!"},{"ID":"1951","标识":"NGC1951","M标识":"NGC1951","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h26m6.9s","赤经D(J2000)":"5.43525","赤纬(J2000)":"-66h35m50s","赤纬D(J2000)":"-66.59722222222221","可见光星等V":"10.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.9","短轴(分)":"","方位角":"","详细描述":"","简略描述":"B, lE, sbM ** 10 & 11"},{"ID":"1952","标识":"NGC1952","M标识":"M1","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"蟹状星云","类型":"Nb","含重复类型":"Nb","形态":"SNR","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"5h34m31.9s","赤经D(J2000)":"5.575527777777777","赤纬(J2000)":"+22h0m52s","赤纬D(J2000)":"22.014444444444443","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"4","方位角":"","详细描述":"very bright, very large, extended 135°±, very gradually a little brighter middle, mottled but not resolved","简略描述":"vB, vL, E 135° ±, vglbM, r"},{"ID":"1953","标识":"NGC1953","M标识":"NGC1953","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h25m27.9s","赤经D(J2000)":"5.424416666666667","赤纬(J2000)":"-68h50m18s","赤纬D(J2000)":"-68.83833333333332","可见光星等V":"11.7","摄影(蓝光)星等B":"11.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, round, gradually a little brighter middle","简略描述":"pB, S, R, glbM"},{"ID":"1954","标识":"NGC1954","M标识":"NGC1954","拓展名":"","组件":"","Class":"III 590","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h32m48.3s","赤经D(J2000)":"5.54675","赤纬(J2000)":"-14h3m44s","赤纬D(J2000)":"-14.062222222222223","可见光星等V":"11.8","摄影(蓝光)星等B":"12.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"4.2","短轴(分)":"2","方位角":"150","详细描述":"very faint, small, round, suddenly much brighter middle","简略描述":"vF, S, R, smbM"},{"ID":"1955","标识":"NGC1955","M标识":"NGC1955","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h26m10s","赤经D(J2000)":"5.436111111111112","赤纬(J2000)":"-67h29m51s","赤纬D(J2000)":"-67.4975","可见光星等V":"9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.8","短轴(分)":"","方位角":"","详细描述":"a cluster, rich, 2nd of several","简略描述":"Cl, Ri, 2nd of sev"},{"ID":"1956","标识":"NGC1956","M标识":"NGC1956","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h19m35.6s","赤经D(J2000)":"5.326555555555555","赤纬(J2000)":"-77h43m47s","赤纬D(J2000)":"-77.72972222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.9","短轴(分)":"0.8","方位角":"68","详细描述":"extremely faint, small, gradually brighter middle","简略描述":"eF, S, gbM"},{"ID":"1957","标识":"NGC1957","M标识":"NGC1957","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h32m55.1s","赤经D(J2000)":"5.548638888888889","赤纬(J2000)":"-14h7m57s","赤纬D(J2000)":"-14.1325","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"169","详细描述":"extremely faint, pretty small, round, brighter middle and nucleus, 15th magnitude star involved","简略描述":"eF, pS, R, bMN, * 15 inv"},{"ID":"1958","标识":"NGC1958","M标识":"NGC1958","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h25m30.6s","赤经D(J2000)":"5.425166666666667","赤纬(J2000)":"-69h50m13s","赤纬D(J2000)":"-69.83694444444444","可见光星等V":"13","摄影(蓝光)星等B":"13.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, pL, iR, vgbM, 2nd of group!"},{"ID":"1959","标识":"NGC1959","M标识":"NGC1959","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h25m36.7s","赤经D(J2000)":"5.426861111111111","赤纬(J2000)":"-69h55m37s","赤纬D(J2000)":"-69.92694444444444","可见光星等V":"12.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, vL, vgbM, 3rd of group!"},{"ID":"1960","标识":"NGC1960","M标识":"M36","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"风车星团","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h36m17.7s","赤经D(J2000)":"5.604916666666666","赤纬(J2000)":"+34h8m27s","赤纬D(J2000)":"34.14083333333333","可见光星等V":"6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, B, vL, vRi, lC, st 9…11 sc"},{"ID":"1961","标识":"NGC1961","M标识":"NGC1961","拓展名":"","组件":"","Class":"III 747","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"5h42m3.9s","赤经D(J2000)":"5.701083333333334","赤纬(J2000)":"+69h22m43s","赤纬D(J2000)":"69.3786111111111","可见光星等V":"11","摄影(蓝光)星等B":"11.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"4.5","短轴(分)":"3.1","方位角":"85","详细描述":"considerably faint, pretty large, irregular figure, much brighter middle, extremely mottled but not resolved, star involved (questionable Polar Distance)","简略描述":"cF, pL, iF, mbM, er, * inv (? PD)"},{"ID":"1962","标识":"NGC1962","M标识":"NGC1962","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h26m17.8s","赤经D(J2000)":"5.438277777777778","赤纬(J2000)":"-68h50m16s","赤纬D(J2000)":"-68.83777777777777","可见光星等V":"11.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, pL, R, 1st of 4!"},{"ID":"1963","标识":"NGC1963","M标识":"NGC1963","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h32m10.8s","赤经D(J2000)":"5.536333333333333","赤纬(J2000)":"-36h22m50s","赤纬D(J2000)":"-36.38055555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"14","短轴(分)":"","方位角":"","详细描述":"a cluster, stars from 8th to 11th magnitude","简略描述":"Cl, st 8…11"},{"ID":"1964","标识":"NGC1964","M标识":"NGC1964","拓展名":"","组件":"","Class":"IV 21","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h33m21.8s","赤经D(J2000)":"5.556055555555555","赤纬(J2000)":"-21h56m43s","赤纬D(J2000)":"-21.94527777777778","可见光星等V":"10.8","摄影(蓝光)星等B":"11.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"5.6","短轴(分)":"1.8","方位角":"32","详细描述":"","简略描述":"F, vS, R, vsvmbM * 12, 3 st inv"},{"ID":"1965","标识":"NGC1965","M标识":"NGC1965","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h26m29.1s","赤经D(J2000)":"5.441416666666667","赤纬(J2000)":"-68h48m23s","赤纬D(J2000)":"-68.80638888888889","可见光星等V":"99","摄影(蓝光)星等B":"8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, S, 2nd of 4!"},{"ID":"1966","标识":"NGC1966","M标识":"NGC1966","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h26m45s","赤经D(J2000)":"5.445833333333334","赤纬(J2000)":"-68h48m54s","赤纬D(J2000)":"-68.815","可见光星等V":"99","摄影(蓝光)星等B":"8.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"13","短轴(分)":"13","方位角":"","详细描述":"","简略描述":"pB, R, pslbM, 3rd of 4, in pL, irr Cl"},{"ID":"1967","标识":"NGC1967","M标识":"NGC1967","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h26m43.4s","赤经D(J2000)":"5.445388888888889","赤纬(J2000)":"-69h6m6s","赤纬D(J2000)":"-69.10166666666666","可见光星等V":"10.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.4","短轴(分)":"","方位角":"","详细描述":"no description, in Nubecula major","简略描述":"No description, in Nubec major"},{"ID":"1968","标识":"NGC1968","M标识":"NGC1968","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h27m24s","赤经D(J2000)":"5.456666666666667","赤纬(J2000)":"-67h27m48s","赤纬D(J2000)":"-67.46333333333334","可见光星等V":"9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.1","短轴(分)":"","方位角":"","详细描述":"a cluster, rich, 3rd of several","简略描述":"Cl, Ri, 3rd of sev"},{"ID":"1969","标识":"NGC1969","M标识":"NGC1969","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h26m32.4s","赤经D(J2000)":"5.442333333333334","赤纬(J2000)":"-69h50m29s","赤纬D(J2000)":"-69.84138888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, S, 4th of gr of 7"},{"ID":"1970","标识":"NGC1970","M标识":"NGC1970","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h26m52.7s","赤经D(J2000)":"5.447972222222223","赤纬(J2000)":"-68h50m12s","赤纬D(J2000)":"-68.83666666666666","可见光星等V":"99","摄影(蓝光)星等B":"8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"4th of 4","简略描述":"4th of 4"},{"ID":"1971","标识":"NGC1971","M标识":"NGC1971","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h26m45.3s","赤经D(J2000)":"5.445916666666667","赤纬(J2000)":"-69h51m6s","赤纬D(J2000)":"-69.85166666666666","可见光星等V":"11.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"","简略描述":"5th of gr of 7"},{"ID":"1972","标识":"NGC1972","M标识":"NGC1972","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h26m47.4s","赤经D(J2000)":"5.4465","赤纬(J2000)":"-69h50m18s","赤纬D(J2000)":"-69.83833333333332","可见光星等V":"12.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.9","短轴(分)":"","方位角":"","详细描述":"","简略描述":"6th of gr of 7! D, a vS neb np"},{"ID":"1973","标识":"NGC1973","M标识":"NGC1973","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"美人鱼的钱包星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h35m4.8s","赤经D(J2000)":"5.584666666666666","赤纬(J2000)":"-4h43m55s","赤纬D(J2000)":"-4.731944444444444","可见光星等V":"99","摄影(蓝光)星等B":"7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"5","方位角":"","详细描述":"","简略描述":"* 8·9 inv in Neb (V 30)"},{"ID":"1974","标识":"NGC1974","M标识":"NGC1974","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h28m0.4s","赤经D(J2000)":"5.466777777777778","赤纬(J2000)":"-67h25m23s","赤纬D(J2000)":"-67.42305555555556","可见光星等V":"9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"a cluster, large, irregular","简略描述":"Cl, L, irr"},{"ID":"1975","标识":"NGC1975","M标识":"NGC1975","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"跑步者星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h35m18s","赤经D(J2000)":"5.588333333333333","赤纬(J2000)":"-4h41m0s","赤纬D(J2000)":"-4.683333333333334","可见光星等V":"99","摄影(蓝光)星等B":"7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"5","方位角":"","详细描述":"","简略描述":"B ** inv in neb (V 30)"},{"ID":"1976","标识":"NGC1976","M标识":"M42","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"猎户座大星云","类型":"Nb","含重复类型":"Nb","形态":"EN+RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h35m17.1s","赤经D(J2000)":"5.588083333333333","赤纬(J2000)":"-5h23m25s","赤纬D(J2000)":"-5.390277777777778","可见光星等V":"4","摄影(蓝光)星等B":"3.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"40","短轴(分)":"35","方位角":"","详细描述":"","简略描述":"!!! Θ? Orionis and the great neb"},{"ID":"1977","标识":"NGC1977","M标识":"NGC1977","拓展名":"","组件":"","Class":"V 30","业余排名":"6.5","中文名":"跑步者星云","类型":"Nb","含重复类型":"Nb","形态":"RN+OCL","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h35m18s","赤经D(J2000)":"5.588333333333333","赤纬(J2000)":"-4h49m15s","赤纬D(J2000)":"-4.820833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"","简略描述":"!!, c? 42 Orionis and neb"},{"ID":"1978","标识":"NGC1978","M标识":"NGC1978","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h28m45.2s","赤经D(J2000)":"5.479222222222222","赤纬(J2000)":"-66h14m14s","赤纬D(J2000)":"-66.23722222222223","可见光星等V":"10.7","摄影(蓝光)星等B":"10.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.9","短轴(分)":"","方位角":"","详细描述":"very bright, very large, a little extended, very gradually pretty much brighter middle","简略描述":"vB, vL, lE, vgpmbM"},{"ID":"1979","标识":"NGC1979","M标识":"NGC1979","拓展名":"","组件":"","Class":"III 240","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h34m1.1s","赤经D(J2000)":"5.566972222222222","赤纬(J2000)":"-23h18m37s","赤纬D(J2000)":"-23.310277777777777","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"1.8","方位角":"","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"1980","标识":"NGC1980","M标识":"NGC1980","拓展名":"","组件":"","Class":"V 31","业余排名":"5","中文名":"猎户座遗失宝石","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h35m25s","赤经D(J2000)":"5.590277777777778","赤纬(J2000)":"-5h54m54s","赤纬D(J2000)":"-5.915","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, vvL, ι 44 Orionis inv"},{"ID":"1981","标识":"NGC1981","M标识":"NGC1981","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"煤车星团","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h35m12s","赤经D(J2000)":"5.586666666666666","赤纬(J2000)":"-4h26m0s","赤纬D(J2000)":"-4.433333333333334","可见光星等V":"4.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"28","短轴(分)":"","方位角":"","详细描述":"a cluster, very bright, a little rich, stars large, scattered","简略描述":"Cl, vB, lRi, st L, sc"},{"ID":"1982","标识":"NGC1982","M标识":"M43","拓展名":"","组件":"","Class":"III 1","业余排名":"1","中文名":"迪马伦星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h35m31.3s","赤经D(J2000)":"5.592027777777777","赤纬(J2000)":"-5h16m3s","赤纬D(J2000)":"-5.2675","可见光星等V":"99","摄影(蓝光)星等B":"6.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"15","方位角":"","详细描述":"","简略描述":"! vB, vL, R with tail, mbM * 8·9"},{"ID":"1983","标识":"NGC1983","M标识":"NGC1983","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h27m44.3s","赤经D(J2000)":"5.462305555555556","赤纬(J2000)":"-68h59m10s","赤纬D(J2000)":"-68.98611111111111","可见光星等V":"9.9","摄影(蓝光)星等B":"10.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, pretty rich, irregular figure","简略描述":"Cl, vL, pRi, iF"},{"ID":"1984","标识":"NGC1984","M标识":"NGC1984","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h27m41s","赤经D(J2000)":"5.461388888888889","赤纬(J2000)":"-69h8m4s","赤纬D(J2000)":"-69.13444444444445","可见光星等V":"10","摄影(蓝光)星等B":"10","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, place of **"},{"ID":"1985","标识":"NGC1985","M标识":"NGC1985","拓展名":"","组件":"","Class":"III 865","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h37m47.8s","赤经D(J2000)":"5.629944444444445","赤纬(J2000)":"+31h59m20s","赤纬D(J2000)":"31.98888888888889","可见光星等V":"99","摄影(蓝光)星等B":"12.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.68","短轴(分)":"","方位角":"","详细描述":"considerably faint, small, round, pretty suddenly brighter middle","简略描述":"cF, S, R, psbM"},{"ID":"1986","标识":"NGC1986","M标识":"NGC1986","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h27m39s","赤经D(J2000)":"5.460833333333333","赤纬(J2000)":"-69h58m22s","赤纬D(J2000)":"-69.97277777777778","可见光星等V":"11.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"bright, pretty large, round, gradually brighter middle","简略描述":"B, pL, R, gbM"},{"ID":"1987","标识":"NGC1987","M标识":"NGC1987","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h27m17.2s","赤经D(J2000)":"5.454777777777778","赤纬(J2000)":"-70h44m15s","赤纬D(J2000)":"-70.7375","可见光星等V":"99","摄影(蓝光)星等B":"12.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"faint, large, irregularly round, 3 stars to west","简略描述":"F, L, iR, 3 st p"},{"ID":"1988","标识":"NGC1988","M标识":"NGC1988","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"5h37m26.5s","赤经D(J2000)":"5.624027777777778","赤纬(J2000)":"+21h13m7s","赤纬D(J2000)":"21.21861111111111","可见光星等V":"99","摄影(蓝光)星等B":"11","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"!!!, variable (?)"},{"ID":"1989","标识":"NGC1989","M标识":"NGC1989","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h34m23.4s","赤经D(J2000)":"5.573166666666666","赤纬(J2000)":"-30h48m2s","赤纬D(J2000)":"-30.800555555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"106","详细描述":"very faint, small, round, a little brighter middle, star near","简略描述":"vF, S, R, lbM, st nr"},{"ID":"1990","标识":"NGC1990","M标识":"NGC1990","拓展名":"","组件":"","Class":"V 34","业余排名":"6.5","中文名":"参宿二星云","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h36m12.8s","赤经D(J2000)":"5.603555555555555","赤纬(J2000)":"-1h12m5s","赤纬D(J2000)":"-1.2013888888888888","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"50","短轴(分)":"10","方位角":"","详细描述":"","简略描述":"!!!, eL, E, ε Orionis inv p"},{"ID":"1991","标识":"NGC1991","M标识":"NGC1991","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h28m0.4s","赤经D(J2000)":"5.466777777777778","赤纬(J2000)":"-67h25m23s","赤纬D(J2000)":"-67.42305555555556","可见光星等V":"9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, 4th of sev"},{"ID":"1992","标识":"NGC1992","M标识":"NGC1992","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h34m31.8s","赤经D(J2000)":"5.5755","赤纬(J2000)":"-30h53m49s","赤纬D(J2000)":"-30.896944444444443","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"45","详细描述":"most extremely faint, very small","简略描述":"eeF, vS"},{"ID":"1993","标识":"NGC1993","M标识":"NGC1993","拓展名":"","组件":"","Class":"III 269","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h35m25.4s","赤经D(J2000)":"5.590388888888889","赤纬(J2000)":"-17h48m54s","赤纬D(J2000)":"-17.815","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"80","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"1994","标识":"NGC1994","M标识":"NGC1994","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h28m21.8s","赤经D(J2000)":"5.472722222222222","赤纬(J2000)":"-69h8m31s","赤纬D(J2000)":"-69.14194444444445","可见光星等V":"9.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"a cluster, extremely small, stars from 11th to 16th magnitude","简略描述":"Cl, eS, st 11…16"},{"ID":"1995","标识":"NGC1995","M标识":"NGC1995","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"5h33m3.3s","赤经D(J2000)":"5.550916666666667","赤纬(J2000)":"-48h40m28s","赤纬D(J2000)":"-48.67444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, round, brighter middle, difficult, western of 2","简略描述":"eeF, R, bM, diffic, p of 2"},{"ID":"1996","标识":"NGC1996","M标识":"NGC1996","拓展名":"","组件":"","Class":"VIII 42","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"5h38m10.2s","赤经D(J2000)":"5.636166666666666","赤纬(J2000)":"+25h49m4s","赤纬D(J2000)":"25.817777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"22","短轴(分)":"","方位角":"","详细描述":"a cluster, large, a little compressed, a little rich","简略描述":"Cl, L, lC, lRi"},{"ID":"1997","标识":"NGC1997","M标识":"NGC1997","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h30m34.4s","赤经D(J2000)":"5.509555555555556","赤纬(J2000)":"-63h12m15s","赤纬D(J2000)":"-63.20416666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.3","短轴(分)":"","方位角":"","详细描述":"extremely faint, considerably small, round","简略描述":"eF, cS, R"},{"ID":"1998","标识":"NGC1998","M标识":"NGC1998","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"5h33m15.7s","赤经D(J2000)":"5.554361111111111","赤纬(J2000)":"-48h41m43s","赤纬D(J2000)":"-48.695277777777775","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"20","详细描述":"","简略描述":"vF, R, gbM, st s, f of 2"},{"ID":"1999","标识":"NGC1999","M标识":"NGC1999","拓展名":"","组件":"","Class":"IV 33","业余排名":"6","中文名":"第13珍珠星云","类型":"Nb","含重复类型":"Nb","形态":"EN+RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h36m25.4s","赤经D(J2000)":"5.607055555555555","赤纬(J2000)":"-6h42m57s","赤纬D(J2000)":"-6.715833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"2","方位角":"","详细描述":"","简略描述":"* 10, 11 inv in Neb"},{"ID":"2000","标识":"NGC2000","M标识":"NGC2000","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h27m29.3s","赤经D(J2000)":"5.458138888888889","赤纬(J2000)":"-71h52m46s","赤纬D(J2000)":"-71.87944444444443","可见光星等V":"11.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, round, a very little brighter middle","简略描述":"F, pL, R, vlbM"},{"ID":"2001","标识":"NGC2001","M标识":"NGC2001","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h29m2.1s","赤经D(J2000)":"5.4839166666666666","赤纬(J2000)":"-68h46m10s","赤纬D(J2000)":"-68.76944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"a cluster, stars of 13th magnitude","简略描述":"Cl, st 13m"},{"ID":"2002","标识":"NGC2002","M标识":"NGC2002","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h30m20.4s","赤经D(J2000)":"5.5056666666666665","赤纬(J2000)":"-66h53m3s","赤纬D(J2000)":"-66.88416666666667","可见光星等V":"10.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"very bright, small, round, double star plus nebula in very large cluster","简略描述":"vB, S, R, ** + neb in vLCl"},{"ID":"2003","标识":"NGC2003","M标识":"NGC2003","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h30m54.4s","赤经D(J2000)":"5.5151111111111115","赤纬(J2000)":"-66h27m59s","赤纬D(J2000)":"-66.46638888888889","可见光星等V":"11.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.1","短轴(分)":"","方位角":"","详细描述":"bright, small, stellar, mottled but not resolved","简略描述":"B, S, stellar, r"},{"ID":"2004","标识":"NGC2004","M标识":"NGC2004","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h30m40.3s","赤经D(J2000)":"5.5111944444444445","赤纬(J2000)":"-67h17m10s","赤纬D(J2000)":"-67.28611111111111","可见光星等V":"9.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.7","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, pretty large, pretty rich, compressed, stars of 12th magnitude","简略描述":"globular, B, pL, pRi, C, st 12"},{"ID":"2005","标识":"NGC2005","M标识":"NGC2005","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h30m10.9s","赤经D(J2000)":"5.503027777777778","赤纬(J2000)":"-69h45m9s","赤纬D(J2000)":"-69.7525","可见光星等V":"11.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.8","短轴(分)":"","方位角":"","详细描述":"no description, in Nubecula Major","简略描述":"No description, in Nubec major"},{"ID":"2006","标识":"NGC2006","M标识":"NGC2006","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h31m19.6s","赤经D(J2000)":"5.522111111111111","赤纬(J2000)":"-66h58m19s","赤纬D(J2000)":"-66.97194444444445","可见光星等V":"11.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"a cluster, extremely large, very rich, very bright very small nucleus and middle","简略描述":"Cl, eL, vRi, vBvSNM"},{"ID":"2007","标识":"NGC2007","M标识":"NGC2007","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"5h34m58.9s","赤经D(J2000)":"5.583027777777778","赤纬(J2000)":"-50h55m18s","赤纬D(J2000)":"-50.92166666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"0.6","方位角":"83","详细描述":"extremely faint, pretty large, round","简略描述":"eF, pL, R"},{"ID":"2008","标识":"NGC2008","M标识":"NGC2008","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"5h35m3.8s","赤经D(J2000)":"5.584388888888888","赤纬(J2000)":"-50h57m58s","赤纬D(J2000)":"-50.96611111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"13.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"105","详细描述":"extremely faint, pretty large, round, a very little brighter middle","简略描述":"eF, pL, R, vlbM"},{"ID":"2009","标识":"NGC2009","M标识":"NGC2009","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h30m59.2s","赤经D(J2000)":"5.516444444444445","赤纬(J2000)":"-69h10m54s","赤纬D(J2000)":"-69.18166666666667","可见光星等V":"11","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty small, round, gradually a little brighter middle, in a cluster","简略描述":"pF, pS, R, glbM, in Cl"},{"ID":"2010","标识":"NGC2010","M标识":"NGC2010","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h30m35s","赤经D(J2000)":"5.509722222222222","赤纬(J2000)":"-70h49m11s","赤纬D(J2000)":"-70.81972222222223","可见光星等V":"11.7","摄影(蓝光)星等B":"11.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.2","短轴(分)":"","方位角":"","详细描述":"faint, considerably large, round, very gradually a little brighter middle","简略描述":"F, cL, R, vglbM"},{"ID":"2011","标识":"NGC2011","M标识":"NGC2011","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h32m20.3s","赤经D(J2000)":"5.538972222222222","赤纬(J2000)":"-67h31m24s","赤纬D(J2000)":"-67.52333333333333","可见光星等V":"10.6","摄影(蓝光)星等B":"10.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"very bright, small, round, pretty suddenly much brighter middle","简略描述":"vB, S, R, psmbM"},{"ID":"2012","标识":"NGC2012","M标识":"NGC2012","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h22m35.1s","赤经D(J2000)":"5.376416666666667","赤纬(J2000)":"-79h51m7s","赤纬D(J2000)":"-79.85194444444444","可见光星等V":"12.9","摄影(蓝光)星等B":"14","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"117","详细描述":"very faint, small, a little extended, brighter middle, 2 stars 9 (arcmin) to northeast","简略描述":"vF, S, lE, bM, 2 st 9 nf"},{"ID":"2013","标识":"NGC2013","M标识":"NGC2013","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h44m1.6s","赤经D(J2000)":"5.733777777777778","赤纬(J2000)":"+55h47m22s","赤纬D(J2000)":"55.78944444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, very little rich, stars of 11th magnitude","简略描述":"Cl, vlRi, st 11"},{"ID":"2014","标识":"NGC2014","M标识":"NGC2014","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h32m19.9s","赤经D(J2000)":"5.538861111111111","赤纬(J2000)":"-67h41m24s","赤纬D(J2000)":"-67.69","可见光星等V":"9","摄影(蓝光)星等B":"9.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.8","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty compressed, irregular figure, stars from 9th to 15th magnitude","简略描述":"Cl, pL, pC, iF, st 9…15"},{"ID":"2015","标识":"NGC2015","M标识":"NGC2015","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h32m6s","赤经D(J2000)":"5.535","赤纬(J2000)":"-69h14m36s","赤纬D(J2000)":"-69.24333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5.6","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, rich, very little compressed","简略描述":"Cl, vL, Ri, vlC"},{"ID":"2016","标识":"NGC2016","M标识":"NGC2016","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h31m36s","赤经D(J2000)":"5.526666666666666","赤纬(J2000)":"-69h56m30s","赤纬D(J2000)":"-69.94166666666668","可见光星等V":"10.4","摄影(蓝光)星等B":"10.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.3","短轴(分)":"","方位角":"","详细描述":"faint, very large, irregularly round, gradually brighter middle","简略描述":"F, vL, iR, gbM"},{"ID":"2017","标识":"NGC2017","M标识":"NGC2017","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h39m16.2s","赤经D(J2000)":"5.6545000000000005","赤纬(J2000)":"-17h50m59s","赤纬D(J2000)":"-17.849722222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster of large (bright) stars","简略描述":"Cl of L st"},{"ID":"2018","标识":"NGC2018","M标识":"NGC2018","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h31m20.2s","赤经D(J2000)":"5.522277777777778","赤纬(J2000)":"-71h3m58s","赤纬D(J2000)":"-71.06611111111111","可见光星等V":"10.9","摄影(蓝光)星等B":"10.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.8","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, round, pretty gradually a little brighter middle, 10th magnitude star involved on west","简略描述":"pB, pL, R, pglbM, * 10 p inv"},{"ID":"2019","标识":"NGC2019","M标识":"NGC2019","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h31m56.7s","赤经D(J2000)":"5.532416666666666","赤纬(J2000)":"-70h9m35s","赤纬D(J2000)":"-70.15972222222223","可见光星等V":"10.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"bright, pretty large, gradually brighter middle","简略描述":"B, pL, gbM"},{"ID":"2020","标识":"NGC2020","M标识":"NGC2020","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h33m12.7s","赤经D(J2000)":"5.553527777777777","赤纬(J2000)":"-67h42m57s","赤纬D(J2000)":"-67.71583333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"faint, very large, very little extended, very gradually a little brighter middle","简略描述":"F, vL, vlE, vglbM"},{"ID":"2021","标识":"NGC2021","M标识":"NGC2021","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h33m30.7s","赤经D(J2000)":"5.558527777777778","赤纬(J2000)":"-67h27m11s","赤纬D(J2000)":"-67.45305555555557","可见光星等V":"12.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.9","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, in pretty large cluster","简略描述":"vF, S, R, in pLCl"},{"ID":"2022","标识":"NGC2022","M标识":"NGC2022","拓展名":"","组件":"","Class":"IV 34","业余排名":"5","中文名":"吻月星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h42m6.2s","赤经D(J2000)":"5.701722222222222","赤纬(J2000)":"+9h5m12s","赤纬D(J2000)":"9.086666666666668","可见光星等V":"11.6","摄影(蓝光)星等B":"12.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.65","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, pretty bright, very small, very little extended","简略描述":"planetary, pB, vS, vlE"},{"ID":"2023","标识":"NGC2023","M标识":"NGC2023","拓展名":"","组件":"","Class":"IV 24","业余排名":"6.5","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h41m38.2s","赤经D(J2000)":"5.693944444444445","赤纬(J2000)":"-2h15m33s","赤纬D(J2000)":"-2.2591666666666668","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"10","方位角":"","详细描述":"a bright star in middle of large, little extended nebula","简略描述":"B * in M of L, lE neb"},{"ID":"2024","标识":"NGC2024","M标识":"NGC2024","拓展名":"","组件":"","Class":"V 28","业余排名":"6","中文名":"火焰星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h41m42s","赤经D(J2000)":"5.695","赤纬(J2000)":"-1h51m24s","赤纬D(J2000)":"-1.8566666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"30","短轴(分)":"30","方位角":"","详细描述":"a remarkable object, irregular, bright, very very large, black spaces included","简略描述":"! irr, B, vvL, black sp incl"},{"ID":"2025","标识":"NGC2025","M标识":"NGC2025","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h32m33.7s","赤经D(J2000)":"5.542694444444444","赤纬(J2000)":"-71h42m56s","赤纬D(J2000)":"-71.71555555555555","可见光星等V":"10.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.9","短轴(分)":"","方位角":"","详细描述":"very bright, very small, a little extended, gradually much brighter middle, mottled but not resolved","简略描述":"vB, vS, lE, gmbM, r"},{"ID":"2026","标识":"NGC2026","M标识":"NGC2026","拓展名":"","组件":"","Class":"VIII 28","业余排名":"15","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"5h43m12s","赤经D(J2000)":"5.72","赤纬(J2000)":"+20h8m0s","赤纬D(J2000)":"20.133333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, a little rich, a little compressed, stars pretty large (bright)","简略描述":"Cl, lRi, lC, st pL"},{"ID":"2027","标识":"NGC2027","M标识":"NGC2027","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h34m59.8s","赤经D(J2000)":"5.583277777777777","赤纬(J2000)":"-66h54m59s","赤纬D(J2000)":"-66.91638888888889","可见光星等V":"11.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, rich, stars from 9th to 11th magnitude","简略描述":"Cl, vL, Ri, st 9…11"},{"ID":"2028","标识":"NGC2028","M标识":"NGC2028","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h33m48.6s","赤经D(J2000)":"5.5634999999999994","赤纬(J2000)":"-69h57m7s","赤纬D(J2000)":"-69.95194444444445","可见光星等V":"12.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"2029","标识":"NGC2029","M标识":"NGC2029","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h35m38s","赤经D(J2000)":"5.5938888888888885","赤纬(J2000)":"-66h2m0s","赤纬D(J2000)":"-66.03333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, round, gradually brighter middle, in considerably large cluster","简略描述":"pB, pL, R, gbM, in cLCl"},{"ID":"2030","标识":"NGC2030","M标识":"NGC2030","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h35m0s","赤经D(J2000)":"5.583333333333333","赤纬(J2000)":"-67h33m18s","赤纬D(J2000)":"-67.55499999999999","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, large, irregularly round, gradually brighter middle, 1st of 3","简略描述":"pB, L, iR, gbM, 1st of 3"},{"ID":"2031","标识":"NGC2031","M标识":"NGC2031","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h33m41.9s","赤经D(J2000)":"5.561638888888889","赤纬(J2000)":"-70h59m13s","赤纬D(J2000)":"-70.98694444444445","可见光星等V":"10.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.4","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, pretty large, round, gradually brighter middle, partially resolved (some stars seen)","简略描述":"globular, B, pL, R, gbM, rr"},{"ID":"2032","标识":"NGC2032","M标识":"NGC2032","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h35m20s","赤经D(J2000)":"5.588888888888889","赤纬(J2000)":"-67h34m36s","赤纬D(J2000)":"-67.57666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"bright, large, extended, 2nd of 3","简略描述":"B, L, E, 2nd of 3"},{"ID":"2033","标识":"NGC2033","M标识":"NGC2033","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h34m30.6s","赤经D(J2000)":"5.575166666666666","赤纬(J2000)":"-69h46m48s","赤纬D(J2000)":"-69.78","可见光星等V":"11.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"a cluster, in Nubecula Major","简略描述":"Cl, in Nubec major"},{"ID":"2034","标识":"NGC2034","M标识":"NGC2034","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h35m32.8s","赤经D(J2000)":"5.592444444444444","赤纬(J2000)":"-66h54m13s","赤纬D(J2000)":"-66.90361111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, rich","简略描述":"Cl, vL, Ri"},{"ID":"2035","标识":"NGC2035","M标识":"NGC2035","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h35m32.5s","赤经D(J2000)":"5.592361111111111","赤纬(J2000)":"-67h35m8s","赤纬D(J2000)":"-67.58555555555554","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"3","方位角":"","详细描述":"bright, large, round, brighter middle, 3rd of 3","简略描述":"B, L, R, bM, 3rd of 3"},{"ID":"2036","标识":"NGC2036","M标识":"NGC2036","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h34m31.5s","赤经D(J2000)":"5.5754166666666665","赤纬(J2000)":"-70h3m52s","赤纬D(J2000)":"-70.06444444444445","可见光星等V":"12.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, round, gradually brighter middle","简略描述":"vF, pL, R, gbM"},{"ID":"2037","标识":"NGC2037","M标识":"NGC2037","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h34m54s","赤经D(J2000)":"5.581666666666666","赤纬(J2000)":"-69h44m12s","赤纬D(J2000)":"-69.73666666666666","可见光星等V":"10.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"a cluster in Nubecula Major","简略描述":"Cl, in Nubec major"},{"ID":"2038","标识":"NGC2038","M标识":"NGC2038","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h34m42.4s","赤经D(J2000)":"5.578444444444444","赤纬(J2000)":"-70h33m47s","赤纬D(J2000)":"-70.56305555555555","可见光星等V":"11.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, round, gradually brighter middle, 9th magnitude star 5 arcmin to northwest","简略描述":"pB, S, R, gmM, * 9 np 5'"},{"ID":"2039","标识":"NGC2039","M标识":"NGC2039","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h44m1s","赤经D(J2000)":"5.733611111111111","赤纬(J2000)":"+8h41m30s","赤纬D(J2000)":"8.691666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"55","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, a little rich, a little compressed","简略描述":"Cl, vL, lRi, lC"},{"ID":"2040","标识":"NGC2040","M标识":"NGC2040","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h36m7.6s","赤经D(J2000)":"5.60211111111111","赤纬(J2000)":"-67h34m4s","赤纬D(J2000)":"-67.56777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"3","方位角":"","详细描述":"faint, large, irregularly round, gradually a little brighter middle, mottled but not resolved","简略描述":"F, L, iR, glbM, r"},{"ID":"2041","标识":"NGC2041","M标识":"NGC2041","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h36m28.1s","赤经D(J2000)":"5.607805555555555","赤纬(J2000)":"-66h59m23s","赤纬D(J2000)":"-66.98972222222223","可见光星等V":"10.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"bright, small, round, very gradually a little brighter middle","简略描述":"B, S, R, vglbM"},{"ID":"2042","标识":"NGC2042","M标识":"NGC2042","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h36m9.6s","赤经D(J2000)":"5.602666666666666","赤纬(J2000)":"-68h55m25s","赤纬D(J2000)":"-68.92361111111111","可见光星等V":"9.6","摄影(蓝光)星等B":"9.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, rich, stars from 12th to 15th magnitude","简略描述":"Cl, vL, Ri, st 12…15"},{"ID":"2043","标识":"NGC2043","M标识":"NGC2043","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h35m57.3s","赤经D(J2000)":"5.59925","赤纬(J2000)":"-70h4m28s","赤纬D(J2000)":"-70.07444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"small, extended group of faint stars involved in faint nebulosity","简略描述":"S, E group of F st inv in F neby"},{"ID":"2044","标识":"NGC2044","M标识":"NGC2044","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h36m6s","赤经D(J2000)":"5.601666666666667","赤纬(J2000)":"-69h11m55s","赤纬D(J2000)":"-69.19861111111112","可见光星等V":"10.6","摄影(蓝光)星等B":"10.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"a cluster in Nubecula Major","简略描述":"Cl, in Nubec major"},{"ID":"2045","标识":"NGC2045","M标识":"NGC2045","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"5h45m1.4s","赤经D(J2000)":"5.750388888888889","赤纬(J2000)":"+12h53m18s","赤纬D(J2000)":"12.888333333333334","可见光星等V":"99","摄影(蓝光)星等B":"6.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a magnitude 8 or 9 star with faint nebulosity","简略描述":"* 8·9 with F neb"},{"ID":"2046","标识":"NGC2046","M标识":"NGC2046","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h35m37.6s","赤经D(J2000)":"5.5937777777777775","赤纬(J2000)":"-70h14m27s","赤纬D(J2000)":"-70.24083333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.3","短轴(分)":"","方位角":"","详细描述":"very faint, round, gradually brighter middle, 1st of 7","简略描述":"vF, R, gbM, 1st of 7"},{"ID":"2047","标识":"NGC2047","M标识":"NGC2047","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h35m53.1s","赤经D(J2000)":"5.598083333333333","赤纬(J2000)":"-70h11m34s","赤纬D(J2000)":"-70.19277777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"faint, small, a little extended, 2nd of 7","简略描述":"F, S, lE, 2nd of 7"},{"ID":"2048","标识":"NGC2048","M标识":"NGC2048","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+*","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h35m55.4s","赤经D(J2000)":"5.5987222222222215","赤纬(J2000)":"-69h38m58s","赤纬D(J2000)":"-69.64944444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"very faint, large, pretty much extended","简略描述":"vF, L, pmE"},{"ID":"2049","标识":"NGC2049","M标识":"NGC2049","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h43m15.1s","赤经D(J2000)":"5.720861111111112","赤纬(J2000)":"-30h4m41s","赤纬D(J2000)":"-30.078055555555554","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"1","方位角":"168","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"2050","标识":"NGC2050","M标识":"NGC2050","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h36m38.9s","赤经D(J2000)":"5.610805555555555","赤纬(J2000)":"-69h23m1s","赤纬D(J2000)":"-69.38361111111112","可见光星等V":"9.3","摄影(蓝光)星等B":"9.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"cluster plus nebula, much compressed, irregular figure, stars very small","简略描述":"Cl + neb, mC, iF, st vS"},{"ID":"2051","标识":"NGC2051","M标识":"NGC2051","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h36m7.4s","赤经D(J2000)":"5.602055555555555","赤纬(J2000)":"-71h0m41s","赤纬D(J2000)":"-71.01138888888889","可见光星等V":"11.7","摄影(蓝光)星等B":"12","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, round, gradually brighter middle","简略描述":"pB, S, R, gbM"},{"ID":"2052","标识":"NGC2052","M标识":"NGC2052","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h37m11.1s","赤经D(J2000)":"5.619750000000001","赤纬(J2000)":"-69h46m27s","赤纬D(J2000)":"-69.77416666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"18","短轴(分)":"12","方位角":"","详细描述":"extremely faint, very very small, very gradually a little brighter middle","简略描述":"eF, vvS, vglbM"},{"ID":"2053","标识":"NGC2053","M标识":"NGC2053","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h37m39.8s","赤经D(J2000)":"5.627722222222222","赤纬(J2000)":"-67h24m47s","赤纬D(J2000)":"-67.41305555555556","可见光星等V":"12.2","摄影(蓝光)星等B":"12.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, a little extended, gradually brighter middle","简略描述":"F, pL, lE, gbM"},{"ID":"2054","标识":"NGC2054","M标识":"NGC2054","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h45m15.6s","赤经D(J2000)":"5.754333333333333","赤纬(J2000)":"-10h4m58s","赤纬D(J2000)":"-10.082777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, irregularly round, mottled but not resolved?, 9th to magnitude 10.7 star 7 arcmin to north","简略描述":"vF, pS, iR, r? * 9·10 7' n"},{"ID":"2055","标识":"NGC2055","M标识":"NGC2055","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h37m3s","赤经D(J2000)":"5.617500000000001","赤纬(J2000)":"-69h25m54s","赤纬D(J2000)":"-69.43166666666667","可见光星等V":"8.4","摄影(蓝光)星等B":"8.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"cluster, very large, rich, stars from 10th to 15th magnitude","简略描述":"Cl, vL, Ri, st 10…15"},{"ID":"2056","标识":"NGC2056","M标识":"NGC2056","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h36m34.1s","赤经D(J2000)":"5.609472222222222","赤纬(J2000)":"-70h40m19s","赤纬D(J2000)":"-70.67194444444445","可见光星等V":"12.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"pretty bright, round, brighter middle, preceding (western) of 2 (the other being NGC 2075), 9th magnitude star between (them)","简略描述":"pB, R, bM, p of 2, * 9 bet"},{"ID":"2057","标识":"NGC2057","M标识":"NGC2057","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h36m55.2s","赤经D(J2000)":"5.615333333333333","赤纬(J2000)":"-70h16m8s","赤纬D(J2000)":"-70.26888888888888","可见光星等V":"12.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.8","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, round, gradually brighter middle, 3rd of 7","简略描述":"pF, S, R, gbM, 3rd of 7"},{"ID":"2058","标识":"NGC2058","M标识":"NGC2058","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h36m54.3s","赤经D(J2000)":"5.615083333333333","赤纬(J2000)":"-70h9m44s","赤纬D(J2000)":"-70.16222222222223","可见光星等V":"11.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.8","短轴(分)":"","方位角":"","详细描述":"very bright, pretty large, round, gradually brighter middle, 4th of 7","简略描述":"vB, pL, R, gbM, 4th of 7"},{"ID":"2059","标识":"NGC2059","M标识":"NGC2059","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h37m0.6s","赤经D(J2000)":"5.616833333333334","赤纬(J2000)":"-70h7m45s","赤纬D(J2000)":"-70.12916666666666","可见光星等V":"12.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"very faint, 5th of 7","简略描述":"vF, 5th of 7"},{"ID":"2060","标识":"NGC2060","M标识":"NGC2060","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"剑鱼座30 B","类型":"Nb","含重复类型":"Nb","形态":"SNR","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h37m51.6s","赤经D(J2000)":"5.631","赤纬(J2000)":"-69h10m23s","赤纬D(J2000)":"-69.17305555555556","可见光星等V":"9.6","摄影(蓝光)星等B":"9.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebula, no description, in Nubecula major","简略描述":"neb, no descrip, in Nub maj"},{"ID":"2061","标识":"NGC2061","M标识":"NGC2061","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h42m41.9s","赤经D(J2000)":"5.711638888888889","赤纬(J2000)":"-34h0m14s","赤纬D(J2000)":"-34.00388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"8","方位角":"","详细描述":"cluster, large, a little compressed, stars of 13th magnitude","简略描述":"Cl, L, lC, st 13"},{"ID":"2062","标识":"NGC2062","M标识":"NGC2062","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h40m2.8s","赤经D(J2000)":"5.6674444444444445","赤纬(J2000)":"-66h52m33s","赤纬D(J2000)":"-66.87583333333333","可见光星等V":"12.7","摄影(蓝光)星等B":"13","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.9","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, extended, gradually a little brighter middle, two 10th magnitude stars to south","简略描述":"vF, pS, E, glbM, 2 st 10 s"},{"ID":"2063","标识":"NGC2063","M标识":"NGC2063","拓展名":"","组件":"","Class":"VIII 2","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h46m44s","赤经D(J2000)":"5.778888888888889","赤纬(J2000)":"+8h42m50s","赤纬D(J2000)":"8.713888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"","方位角":"","详细描述":"cluster, poor, small scattered stars","简略描述":"Cl, poor, S sc st"},{"ID":"2064","标识":"NGC2064","M标识":"NGC2064","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h46m18.4s","赤经D(J2000)":"5.7717777777777775","赤纬(J2000)":"+0h0m21s","赤纬D(J2000)":"0.005833333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"extremely faint, very small, 9th or 10th magnitude star 4 arcmin to northwest","简略描述":"eF, vS, * 9·10 np 4'"},{"ID":"2065","标识":"NGC2065","M标识":"NGC2065","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h37m38.5s","赤经D(J2000)":"5.627361111111112","赤纬(J2000)":"-70h14m12s","赤纬D(J2000)":"-70.23666666666666","可见光星等V":"11.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.6","短轴(分)":"","方位角":"","详细描述":"bright, round, 6th of 7","简略描述":"B, R, 6th of 7"},{"ID":"2066","标识":"NGC2066","M标识":"NGC2066","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h37m43.2s","赤经D(J2000)":"5.628666666666667","赤纬(J2000)":"-70h10m0s","赤纬D(J2000)":"-70.16666666666667","可见光星等V":"13.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"very faint, very small, extended, 7th of 7","简略描述":"vF, vS, E, 7th of 7"},{"ID":"2067","标识":"NGC2067","M标识":"NGC2067","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h46m32s","赤经D(J2000)":"5.775555555555555","赤纬(J2000)":"+0h7m54s","赤纬D(J2000)":"0.13166666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"3","方位角":"","详细描述":"faint, pretty large, M78 to the south","简略描述":"F, pL, M 78 s"},{"ID":"2068","标识":"NGC2068","M标识":"M78","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"鬼马小精灵星云 ","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h46m45s","赤经D(J2000)":"5.779166666666667","赤纬(J2000)":"+0h4m48s","赤纬D(J2000)":"0.08","可见光星等V":"99","摄影(蓝光)星等B":"8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"6","方位角":"","详细描述":"bright, large, wispy, gradually much brighter nucleus, 3 stars involved, mottled but not resolved","简略描述":"B, L, wisp, gmbN, 3 st inv, r"},{"ID":"2069","标识":"NGC2069","M标识":"NGC2069","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h38m40s","赤经D(J2000)":"5.644444444444444","赤纬(J2000)":"-69h0m18s","赤纬D(J2000)":"-69.005","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, large, extended","简略描述":"F, L, E"},{"ID":"2070","标识":"NGC2070","M标识":"NGC2070","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"狼蛛星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h38m42.5s","赤经D(J2000)":"5.645138888888888","赤纬(J2000)":"-69h6m3s","赤纬D(J2000)":"-69.10083333333333","可见光星等V":"99","摄影(蓝光)星等B":"5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"30","短轴(分)":"20","方位角":"","详细描述":"faint, large, extended","简略描述":"!!! vB, vL, looped"},{"ID":"2071","标识":"NGC2071","M标识":"NGC2071","拓展名":"","组件":"","Class":"IV 36","业余排名":"6.5","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h47m7.2s","赤经D(J2000)":"5.785333333333333","赤纬(J2000)":"+0h17m39s","赤纬D(J2000)":"0.2941666666666667","可见光星等V":"99","摄影(蓝光)星等B":"8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"5","方位角":"","详细描述":"double star (10th and 14th magnitudes) with very faint large chevelure","简略描述":"D * (10 & 14 m) with vF, L chev"},{"ID":"2072","标识":"NGC2072","M标识":"NGC2072","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h38m24.5s","赤经D(J2000)":"5.640138888888888","赤纬(J2000)":"-70h14m3s","赤纬D(J2000)":"-70.23416666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.3","短轴(分)":"","方位角":"","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"2073","标识":"NGC2073","M标识":"NGC2073","拓展名":"","组件":"","Class":"III 241","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h45m53.8s","赤经D(J2000)":"5.764944444444445","赤纬(J2000)":"-21h59m57s","赤纬D(J2000)":"-21.999166666666667","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"","详细描述":"extremely faint, very small, round, gradually brighter middle","简略描述":"eF, vS, R, gbM"},{"ID":"2074","标识":"NGC2074","M标识":"NGC2074","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h39m3.6s","赤经D(J2000)":"5.651000000000001","赤纬(J2000)":"-69h29m53s","赤纬D(J2000)":"-69.49805555555555","可见光星等V":"99","摄影(蓝光)星等B":"8.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, much extended, 5 stars involved","简略描述":"pB, pL, mE, 5 st inv"},{"ID":"2075","标识":"NGC2075","M标识":"NGC2075","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h38m20.8s","赤经D(J2000)":"5.63911111111111","赤纬(J2000)":"-70h41m9s","赤纬D(J2000)":"-70.68583333333333","可见光星等V":"11.5","摄影(蓝光)星等B":"11.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"bright, round, brighter middle, partially resolved, some stars seen, following (eastern) of 2","简略描述":"B, R, bM, rr, f of 2"},{"ID":"2076","标识":"NGC2076","M标识":"NGC2076","拓展名":"","组件":"","Class":"III 267","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h46m47.4s","赤经D(J2000)":"5.779833333333333","赤纬(J2000)":"-16h46m58s","赤纬D(J2000)":"-16.782777777777778","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.2","短轴(分)":"1.3","方位角":"45","详细描述":"very faint, pretty small, irregularly extended, brighter middle","简略描述":"vF, pS, iE, bM"},{"ID":"2077","标识":"NGC2077","M标识":"NGC2077","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h39m36s","赤经D(J2000)":"5.66","赤纬(J2000)":"-69h39m26s","赤纬D(J2000)":"-69.65722222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"15","方位角":"","详细描述":"faint, round, preceding (western) of double nebula","简略描述":"F, R, p of D neb"},{"ID":"2078","标识":"NGC2078","M标识":"NGC2078","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h39m39.3s","赤经D(J2000)":"5.660916666666667","赤纬(J2000)":"-69h44m38s","赤纬D(J2000)":"-69.74388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebula, northwestern of group of 7","简略描述":"neb, np of gr of 7"},{"ID":"2079","标识":"NGC2079","M标识":"NGC2079","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h39m40s","赤经D(J2000)":"5.661111111111111","赤纬(J2000)":"-69h46m26s","赤纬D(J2000)":"-69.77388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebula, southwestern of group of 7","简略描述":"neb, sp of gr of 7"},{"ID":"2080","标识":"NGC2080","M标识":"NGC2080","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"鬼头星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h39m44.2s","赤经D(J2000)":"5.662277777777778","赤纬(J2000)":"-69h38m44s","赤纬D(J2000)":"-69.64555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"bright, round, following (eastern) of double nebula","简略描述":"B, R, f of D neb"},{"ID":"2081","标识":"NGC2081","M标识":"NGC2081","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h39m59.5s","赤经D(J2000)":"5.6665277777777785","赤纬(J2000)":"-69h24m21s","赤纬D(J2000)":"-69.40583333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"cluster, very faint, much compressed, stars plus nebulosity","简略描述":"Cl, vF, mC, st + neb"},{"ID":"2082","标识":"NGC2082","M标识":"NGC2082","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h41m50.9s","赤经D(J2000)":"5.697472222222222","赤纬(J2000)":"-64h18m5s","赤纬D(J2000)":"-64.30138888888888","可见光星等V":"12.1","摄影(蓝光)星等B":"12.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"37","详细描述":"pretty faint, large, round, gradually a little brighter middle","简略描述":"pF, L, R, glbM"},{"ID":"2083","标识":"NGC2083","M标识":"NGC2083","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h39m59.3s","赤经D(J2000)":"5.666472222222223","赤纬(J2000)":"-69h44m16s","赤纬D(J2000)":"-69.73777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebula, northeastern of group of 7","简略描述":"neb, nf of gr of 7"},{"ID":"2084","标识":"NGC2084","M标识":"NGC2084","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h40m7.1s","赤经D(J2000)":"5.668638888888889","赤纬(J2000)":"-69h45m34s","赤纬D(J2000)":"-69.75944444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebula, southeastern of group of 7","简略描述":"neb, sf of gr of 7"},{"ID":"2085","标识":"NGC2085","M标识":"NGC2085","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h40m9s","赤经D(J2000)":"5.669166666666667","赤纬(J2000)":"-69h40m24s","赤纬D(J2000)":"-69.67333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, round, 10th magnitude star very near","简略描述":"vF, R, * 10 v nr"},{"ID":"2086","标识":"NGC2086","M标识":"NGC2086","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h40m13s","赤经D(J2000)":"5.670277777777778","赤纬(J2000)":"-69h40m5s","赤纬D(J2000)":"-69.66805555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"bright, pretty small, round, a little brighter middle, 10th magnitude star to west","简略描述":"B, pS, R, lbM, * 10 p"},{"ID":"2087","标识":"NGC2087","M标识":"NGC2087","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"5h44m16.1s","赤经D(J2000)":"5.737805555555556","赤纬(J2000)":"-55h31m59s","赤纬D(J2000)":"-55.533055555555556","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"136","详细描述":"extremely faint, pretty small, round, very little brighter middle","简略描述":"eF, pS, R, vlbM"},{"ID":"2088","标识":"NGC2088","M标识":"NGC2088","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h40m59.9s","赤经D(J2000)":"5.683305555555556","赤纬(J2000)":"-68h27m56s","赤纬D(J2000)":"-68.46555555555555","可见光星等V":"12.5","摄影(蓝光)星等B":"12.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"2089","标识":"NGC2089","M标识":"NGC2089","拓展名":"","组件":"","Class":"III 270","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h47m51.3s","赤经D(J2000)":"5.797583333333333","赤纬(J2000)":"-17h36m10s","赤纬D(J2000)":"-17.602777777777778","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.9","短轴(分)":"1.2","方位角":"39","详细描述":"very faint, extremely small, stellar","简略描述":"vF, eS, stellar"},{"ID":"2090","标识":"NGC2090","M标识":"NGC2090","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h47m1.6s","赤经D(J2000)":"5.783777777777778","赤纬(J2000)":"-34h15m3s","赤纬D(J2000)":"-34.25083333333333","可见光星等V":"11.2","摄影(蓝光)星等B":"12","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"4.9","短轴(分)":"2.4","方位角":"13","详细描述":"globular cluster, bright, pretty large, irregularly round, gradually brighter middle","简略描述":"globular, B, pL, iR, gbM"},{"ID":"2091","标识":"NGC2091","M标识":"NGC2091","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h40m58.1s","赤经D(J2000)":"5.682805555555555","赤纬(J2000)":"-69h26m14s","赤纬D(J2000)":"-69.43722222222223","可见光星等V":"12.1","摄影(蓝光)星等B":"12.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"very faint, small, much extended, gradually a little brighter middle, perhaps double?","简略描述":"vF, S, mE, glbM, ? D"},{"ID":"2092","标识":"NGC2092","M标识":"NGC2092","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h41m22.1s","赤经D(J2000)":"5.689472222222222","赤纬(J2000)":"-69h13m27s","赤纬D(J2000)":"-69.22416666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, round, partially resolved, some stars seen","简略描述":"vF, pL, R, rr"},{"ID":"2093","标识":"NGC2093","M标识":"NGC2093","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h41m49.8s","赤经D(J2000)":"5.697166666666667","赤纬(J2000)":"-68h55m17s","赤纬D(J2000)":"-68.9213888888889","可见光星等V":"11.6","摄影(蓝光)星等B":"11.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"2094","标识":"NGC2094","M标识":"NGC2094","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h42m8s","赤经D(J2000)":"5.702222222222223","赤纬(J2000)":"-68h21m48s","赤纬D(J2000)":"-68.36333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"2095","标识":"NGC2095","M标识":"NGC2095","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h42m50s","赤经D(J2000)":"5.7138888888888895","赤纬(J2000)":"-67h19m12s","赤纬D(J2000)":"-67.32","可见光星等V":"13.1","摄影(蓝光)星等B":"13.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"cluster, faint, considerably small, irregular","简略描述":"Cl, F, cS, irr"},{"ID":"2096","标识":"NGC2096","M标识":"NGC2096","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h42m17.9s","赤经D(J2000)":"5.7049722222222226","赤纬(J2000)":"-68h27m31s","赤纬D(J2000)":"-68.45861111111111","可见光星等V":"11.3","摄影(蓝光)星等B":"11.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"nebula, no description, in Nubecula major","简略描述":"neb, no descrip, in Nub major"},{"ID":"2097","标识":"NGC2097","M标识":"NGC2097","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h44m16s","赤经D(J2000)":"5.737777777777778","赤纬(J2000)":"-62h47m8s","赤纬D(J2000)":"-62.785555555555554","可见光星等V":"13.7","摄影(蓝光)星等B":"14.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.8","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, irregularly round, pretty suddenly a little brighter middle equivalent to a 16th magnitude star","简略描述":"vF, pS, iR, pslbM * 16"},{"ID":"2098","标识":"NGC2098","M标识":"NGC2098","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h42m30.4s","赤经D(J2000)":"5.708444444444445","赤纬(J2000)":"-68h16m32s","赤纬D(J2000)":"-68.27555555555556","可见光星等V":"10.7","摄影(蓝光)星等B":"10.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.6","短轴(分)":"","方位角":"","详细描述":"globular cluster, bright, small, partially resolved, some stars seen","简略描述":"globular, B, S, rr"},{"ID":"2099","标识":"NGC2099","M标识":"M37","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"一月椒盐星团","类型":"OCL","含重复类型":"OCL","形态":"II1r","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h52m18.3s","赤经D(J2000)":"5.8717500000000005","赤纬(J2000)":"+32h33m11s","赤纬D(J2000)":"32.55305555555555","可见光星等V":"5.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"cluster, rich, pretty compressed middle, stars large and small","简略描述":"Cl, Ri, pCM, st L & S"},{"ID":"2100","标识":"NGC2100","M标识":"NGC2100","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h42m9.1s","赤经D(J2000)":"5.702527777777778","赤纬(J2000)":"-69h12m43s","赤纬D(J2000)":"-69.21194444444444","可见光星等V":"9.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.8","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, pretty large, irregularly round, partially resolved (some stars seen)","简略描述":"globular, B, pL, irrR, rr"},{"ID":"2101","标识":"NGC2101","M标识":"NGC2101","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm\/P","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"5h46m22.4s","赤经D(J2000)":"5.772888888888889","赤纬(J2000)":"-52h5m24s","赤纬D(J2000)":"-52.09","可见光星等V":"13.3","摄影(蓝光)星等B":"13.7","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"2","短轴(分)":"1.3","方位角":"85","详细描述":"","简略描述":"eF, pS, R, 3 st 10 sf"},{"ID":"2102","标识":"NGC2102","M标识":"NGC2102","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h42m20.6s","赤经D(J2000)":"5.705722222222223","赤纬(J2000)":"-69h29m14s","赤纬D(J2000)":"-69.48722222222223","可见光星等V":"11.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"nebula, no description, in Nubecula major","简略描述":"neb, no descrip, in Nub maj"},{"ID":"2103","标识":"NGC2103","M标识":"NGC2103","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h41m40s","赤经D(J2000)":"5.694444444444445","赤纬(J2000)":"-71h19m54s","赤纬D(J2000)":"-71.33166666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, large, pretty much extended, gradually brighter middle equivalent to 13th magnitude star","简略描述":"pB, L, pmE, gbM * 13"},{"ID":"2104","标识":"NGC2104","M标识":"NGC2104","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"5h47m4.2s","赤经D(J2000)":"5.7844999999999995","赤纬(J2000)":"-51h33m11s","赤纬D(J2000)":"-51.55305555555555","可见光星等V":"12.7","摄影(蓝光)星等B":"13.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2","短轴(分)":"0.9","方位角":"160","详细描述":"pretty bright, pretty small, round, gradually a little brighter middle","简略描述":"pB, pS, R, glbM"},{"ID":"2105","标识":"NGC2105","M标识":"NGC2105","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h44m19.2s","赤经D(J2000)":"5.738666666666667","赤纬(J2000)":"-66h55m4s","赤纬D(J2000)":"-66.91777777777779","可见光星等V":"12.2","摄影(蓝光)星等B":"12.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, round, gradually brighter middle","简略描述":"F, pS, R, gbM"},{"ID":"2106","标识":"NGC2106","M标识":"NGC2106","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h50m46.3s","赤经D(J2000)":"5.8461944444444445","赤纬(J2000)":"-21h34m1s","赤纬D(J2000)":"-21.566944444444445","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.7","短轴(分)":"1.4","方位角":"103","详细描述":"very faint, small, very little extended, gradually brighter middle","简略描述":"vF, S, vlE, gbM"},{"ID":"2107","标识":"NGC2107","M标识":"NGC2107","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h43m13s","赤经D(J2000)":"5.720277777777778","赤纬(J2000)":"-70h38m24s","赤纬D(J2000)":"-70.64","可见光星等V":"11.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.1","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty small, round, gradually brighter middle","简略描述":"pB, pS, R, gbM"},{"ID":"2108","标识":"NGC2108","M标识":"NGC2108","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h43m55.3s","赤经D(J2000)":"5.732027777777778","赤纬(J2000)":"-69h10m51s","赤纬D(J2000)":"-69.18083333333334","可见光星等V":"12.8","摄影(蓝光)星等B":"12.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large, a little extended","简略描述":"eF, pL, lE"},{"ID":"2109","标识":"NGC2109","M标识":"NGC2109","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h44m23s","赤经D(J2000)":"5.739722222222222","赤纬(J2000)":"-68h32m52s","赤纬D(J2000)":"-68.54777777777778","可见光星等V":"12.2","摄影(蓝光)星等B":"12.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, round, very gradually a little brighter middle","简略描述":"F, pS, R, vglbM"},{"ID":"2110","标识":"NGC2110","M标识":"NGC2110","拓展名":"","组件":"","Class":"III 448","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h52m11.2s","赤经D(J2000)":"5.869777777777778","赤纬(J2000)":"-7h27m23s","赤纬D(J2000)":"-7.456388888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"173","详细描述":"extremely faint, considerably small, a little extended, pretty suddenly a little brighter middle, extremely mottled but not resolved","简略描述":"eF, cS, lE, pslbM, er"},{"ID":"2111","标识":"NGC2111","M标识":"NGC2111","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h44m33.1s","赤经D(J2000)":"5.742527777777778","赤纬(J2000)":"-70h59m36s","赤纬D(J2000)":"-70.99333333333334","可见光星等V":"12.5","摄影(蓝光)星等B":"12.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.6","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, gradually brighter middle","简略描述":"vF, S, R, gbM"},{"ID":"2112","标识":"NGC2112","M标识":"NGC2112","拓展名":"","组件":"","Class":"VII 24","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h53m45.2s","赤经D(J2000)":"5.895888888888888","赤纬(J2000)":"+0h24m39s","赤纬D(J2000)":"0.4108333333333334","可见光星等V":"9.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"18","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, a little rich, pretty compressed, stars small (faint)","简略描述":"Cl, pL, lRi, pC, st S"},{"ID":"2113","标识":"NGC2113","M标识":"NGC2113","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h45m24.6s","赤经D(J2000)":"5.756833333333334","赤纬(J2000)":"-69h46m27s","赤纬D(J2000)":"-69.77416666666666","可见光星等V":"12.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.8","短轴(分)":"","方位角":"","详细描述":"a cluster, faint, small, irregular figure, very little compressed, partially resolved (some stars seen)","简略描述":"Cl, F, S, iF, vlC, rr"},{"ID":"2114","标识":"NGC2114","M标识":"NGC2114","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h46m12.2s","赤经D(J2000)":"5.7700555555555555","赤纬(J2000)":"-68h2m54s","赤纬D(J2000)":"-68.04833333333333","可见光星等V":"12.5","摄影(蓝光)星等B":"12.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large, irregularly round","简略描述":"eF, pL, iR"},{"ID":"2115","标识":"NGC2115","M标识":"NGC2115","拓展名":"A","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"5h51m19.8s","赤经D(J2000)":"5.855499999999999","赤纬(J2000)":"-50h35m0s","赤纬D(J2000)":"-50.583333333333336","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"50","详细描述":"","简略描述":"eeF, vS, 3 st 10 sp"},{"ID":"2116","标识":"NGC2116","M标识":"NGC2116","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h47m15.2s","赤经D(J2000)":"5.787555555555556","赤纬(J2000)":"-68h30m29s","赤纬D(J2000)":"-68.50805555555556","可见光星等V":"12.9","摄影(蓝光)星等B":"13.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"faint, small, round, 11th magnitude star to west","简略描述":"F, S, R, * 11 p"},{"ID":"2117","标识":"NGC2117","M标识":"NGC2117","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h47m46s","赤经D(J2000)":"5.796111111111111","赤纬(J2000)":"-67h27m1s","赤纬D(J2000)":"-67.45027777777779","可见光星等V":"12.7","摄影(蓝光)星等B":"12","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.3","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, irregularly round, very little brighter middle, clearly consisting of stars","简略描述":"F, pL, iR, vlbM, rrr"},{"ID":"2118","标识":"NGC2118","M标识":"NGC2118","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h47m39.6s","赤经D(J2000)":"5.794333333333333","赤纬(J2000)":"-69h7m55s","赤纬D(J2000)":"-69.13194444444444","可见光星等V":"12","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.3","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very bright, very small, very suddenly much brighter middle, partially resolved (some stars seen)","简略描述":"globular, vB, vS, vsmbM, rr"},{"ID":"2119","标识":"NGC2119","M标识":"NGC2119","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h57m26.9s","赤经D(J2000)":"5.957472222222222","赤纬(J2000)":"+11h56m56s","赤纬D(J2000)":"11.94888888888889","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"1","方位角":"145","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"2120","标识":"NGC2120","M标识":"NGC2120","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h50m34.8s","赤经D(J2000)":"5.843","赤纬(J2000)":"-63h40m30s","赤纬D(J2000)":"-63.675","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"considerably faint, pretty large, round, very gradually a little brighter middle","简略描述":"cF, pL, R, vglbM"},{"ID":"2121","标识":"NGC2121","M标识":"NGC2121","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h48m12.4s","赤经D(J2000)":"5.803444444444445","赤纬(J2000)":"-71h28m52s","赤纬D(J2000)":"-71.48111111111112","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.7","短轴(分)":"","方位角":"","详细描述":"very faint, considerably large, very gradually brighter middle","简略描述":"vF, cL, vgbM"},{"ID":"2122","标识":"NGC2122","M标识":"NGC2122","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h48m52.6s","赤经D(J2000)":"5.814611111111111","赤纬(J2000)":"-70h4m12s","赤纬D(J2000)":"-70.07","可见光星等V":"10.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.5","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, pB, iF, gvmCM, st 15"},{"ID":"2123","标识":"NGC2123","M标识":"NGC2123","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h51m43.4s","赤经D(J2000)":"5.862055555555555","赤纬(J2000)":"-65h19m18s","赤纬D(J2000)":"-65.32166666666666","可见光星等V":"12.6","摄影(蓝光)星等B":"12.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"pretty bright, very small, round, gradually brighter middle","简略描述":"pB, vS, R, gbM"},{"ID":"2124","标识":"NGC2124","M标识":"NGC2124","拓展名":"","组件":"","Class":"III 225","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h57m52.3s","赤经D(J2000)":"5.964527777777778","赤纬(J2000)":"-20h5m6s","赤纬D(J2000)":"-20.084999999999997","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.7","短轴(分)":"0.9","方位角":"5","详细描述":"most extremely faint, pretty small, extended, mottled but not resolved","简略描述":"eeF, pS, E, r"},{"ID":"2125","标识":"NGC2125","M标识":"NGC2125","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h50m54.3s","赤经D(J2000)":"5.848416666666666","赤纬(J2000)":"-69h28m45s","赤纬D(J2000)":"-69.47916666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, round, gradually brighter middle","简略描述":"vF, pS, R, gbM"},{"ID":"2126","标识":"NGC2126","M标识":"NGC2126","拓展名":"","组件":"","Class":"VIII 68","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"6h2m32.9s","赤经D(J2000)":"6.042472222222222","赤纬(J2000)":"+49h51m57s","赤纬D(J2000)":"49.865833333333335","可见光星等V":"10.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, not Ri, * 7 m north"},{"ID":"2127","标识":"NGC2127","M标识":"NGC2127","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h51m22.4s","赤经D(J2000)":"5.856222222222222","赤纬(J2000)":"-69h21m41s","赤纬D(J2000)":"-69.36138888888888","可见光星等V":"11.6","摄影(蓝光)星等B":"12","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"pretty bright, very small, round, gradually much brighter middle","简略描述":"pB, vS, R, gmbM"},{"ID":"2128","标识":"NGC2128","M标识":"NGC2128","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"6h4m34s","赤经D(J2000)":"6.076111111111111","赤纬(J2000)":"+57h37m39s","赤纬D(J2000)":"57.6275","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"60","详细描述":"very faint, very small, very little extended","简略描述":"vF, vS, vlE"},{"ID":"2129","标识":"NGC2129","M标识":"NGC2129","拓展名":"","组件":"","Class":"VIII 26","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III3p","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h1m6.5s","赤经D(J2000)":"6.018472222222222","赤纬(J2000)":"+23h19m4s","赤纬D(J2000)":"23.317777777777778","可见光星等V":"6.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, pL, 40 or 50 st 8…15"},{"ID":"2130","标识":"NGC2130","M标识":"NGC2130","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h52m23.8s","赤经D(J2000)":"5.873277777777778","赤纬(J2000)":"-67h20m3s","赤纬D(J2000)":"-67.33416666666666","可见光星等V":"12","摄影(蓝光)星等B":"12.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, round, gradually a little brighter middle","简略描述":"F, pS, R, glbM"},{"ID":"2131","标识":"NGC2131","M标识":"NGC2131","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h58m47.2s","赤经D(J2000)":"5.979777777777778","赤纬(J2000)":"-26h39m11s","赤纬D(J2000)":"-26.653055555555554","可见光星等V":"14","摄影(蓝光)星等B":"14.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"118","详细描述":"very faint, pretty small, round, gradually brighter middle","简略描述":"vF, pS, R, gbM"},{"ID":"2132","标识":"NGC2132","M标识":"NGC2132","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"5h55m9.1s","赤经D(J2000)":"5.919194444444445","赤纬(J2000)":"-59h54m37s","赤纬D(J2000)":"-59.91027777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"45","短轴(分)":"","方位角":"","详细描述":"a cluster, very little compressed, stars large and small","简略描述":"Cl, vlC, st L & S"},{"ID":"2133","标识":"NGC2133","M标识":"NGC2133","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h51m28.8s","赤经D(J2000)":"5.858","赤纬(J2000)":"-71h10m30s","赤纬D(J2000)":"-71.17500000000001","可见光星等V":"99","摄影(蓝光)星等B":"12","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, round, gradually pretty much brighter middle","简略描述":"F, pL, R, gpmbM"},{"ID":"2134","标识":"NGC2134","M标识":"NGC2134","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h51m56.7s","赤经D(J2000)":"5.865749999999999","赤纬(J2000)":"-71h5m50s","赤纬D(J2000)":"-71.09722222222221","可见光星等V":"11.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.5","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, pretty large, round, gradually much brighter middle, mottled but not resolved","简略描述":"globular, B, pL, R, gmbM, r"},{"ID":"2135","标识":"NGC2135","M标识":"NGC2135","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h53m35s","赤经D(J2000)":"5.893055555555555","赤纬(J2000)":"-67h25m38s","赤纬D(J2000)":"-67.42722222222223","可见光星等V":"12.1","摄影(蓝光)星等B":"12.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, round, mottled but not resolved, among stars","简略描述":"F, pS, R, r, am st"},{"ID":"2136","标识":"NGC2136","M标识":"NGC2136","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h52m58.5s","赤经D(J2000)":"5.8829166666666675","赤纬(J2000)":"-69h29m33s","赤纬D(J2000)":"-69.4925","可见光星等V":"10.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.9","短轴(分)":"","方位角":"","详细描述":"a globular cluster, pretty bright, round, gradually much brighter middle, partially resolved (some stars seen), stars from 14th to 16th magnitude","简略描述":"globular, pB, R, gmbM, rr, st 14…16"},{"ID":"2137","标识":"NGC2137","M标识":"NGC2137","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h53m13.2s","赤经D(J2000)":"5.887","赤纬(J2000)":"-69h28m55s","赤纬D(J2000)":"-69.48194444444445","可见光星等V":"12.7","摄影(蓝光)星等B":"12.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, eastern of 2","简略描述":"vF, S, R, f of 2"},{"ID":"2138","标识":"NGC2138","M标识":"NGC2138","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h54m48.8s","赤经D(J2000)":"5.913555555555556","赤纬(J2000)":"-65h50m7s","赤纬D(J2000)":"-65.83527777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"2139","标识":"NGC2139","M标识":"NGC2139","拓展名":"","组件":"","Class":"II 264","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"6h1m8s","赤经D(J2000)":"6.018888888888889","赤纬(J2000)":"-23h40m22s","赤纬D(J2000)":"-23.672777777777778","可见光星等V":"11.6","摄影(蓝光)星等B":"12","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.4","短轴(分)":"1.9","方位角":"140","详细描述":"faint, small","简略描述":"F, S"},{"ID":"2140","标识":"NGC2140","M标识":"NGC2140","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h54m16.3s","赤经D(J2000)":"5.904527777777778","赤纬(J2000)":"-68h36m0s","赤纬D(J2000)":"-68.6","可见光星等V":"12.4","摄影(蓝光)星等B":"12.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty small, irregularly round, brighter middle","简略描述":"pF, pS, iR, bM"},{"ID":"2141","标识":"NGC2141","M标识":"NGC2141","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3r","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"6h2m55s","赤经D(J2000)":"6.048611111111111","赤纬(J2000)":"+10h26m47s","赤纬D(J2000)":"10.446388888888889","可见光星等V":"9.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, pS, dif (Sw not found)"},{"ID":"2142","标识":"NGC2142","M标识":"NGC2142","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h1m50.3s","赤经D(J2000)":"6.030638888888888","赤纬(J2000)":"-10h35m51s","赤纬D(J2000)":"-10.5975","可见光星等V":"99","摄影(蓝光)星等B":"5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* (3 Monoc) inv in pL, F, neb"},{"ID":"2143","标识":"NGC2143","M标识":"NGC2143","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"6h3m7.4s","赤经D(J2000)":"6.0520555555555555","赤纬(J2000)":"+5h43m42s","赤纬D(J2000)":"5.7283333333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"11","短轴(分)":"","方位角":"","详细描述":"a cluster, large, pretty rich, very little compressed, stars of 10th magnitude","简略描述":"Cl, L, pRi, vlC, st 10"},{"ID":"2144","标识":"NGC2144","M标识":"NGC2144","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h40m56.3s","赤经D(J2000)":"5.682305555555556","赤纬(J2000)":"-82h7m8s","赤纬D(J2000)":"-82.11888888888888","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"93","详细描述":"faint, pretty small, irregularly round, brighter middle","简略描述":"F, pS, iR, bM"},{"ID":"2145","标识":"NGC2145","M标识":"NGC2145","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h54m22.8s","赤经D(J2000)":"5.906333333333333","赤纬(J2000)":"-70h54m7s","赤纬D(J2000)":"-70.90194444444445","可见光星等V":"12.1","摄影(蓝光)星等B":"12.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"faint, a little extended, mottled but not resolved","简略描述":"F, lE, r"},{"ID":"2146","标识":"NGC2146","M标识":"NGC2146","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"脏手星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBab\/P","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"6h18m38.3s","赤经D(J2000)":"6.310638888888889","赤纬(J2000)":"+78h21m21s","赤纬D(J2000)":"78.35583333333332","可见光星等V":"10.6","摄影(蓝光)星等B":"11.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"5.4","短轴(分)":"2.9","方位角":"123","详细描述":"pretty bright, 2 arcmin long, a little extended","简略描述":"pB, 2' l, lE"},{"ID":"2147","标识":"NGC2147","M标识":"NGC2147","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h55m45.7s","赤经D(J2000)":"5.9293611111111115","赤纬(J2000)":"-68h12m6s","赤纬D(J2000)":"-68.20166666666667","可见光星等V":"12.9","摄影(蓝光)星等B":"13.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.1","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, round, brighter middle","简略描述":"eF, S, R, bM"},{"ID":"2148","标识":"NGC2148","M标识":"NGC2148","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"5h58m45.6s","赤经D(J2000)":"5.979333333333334","赤纬(J2000)":"-59h7m35s","赤纬D(J2000)":"-59.12638888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"150","详细描述":"","简略描述":"eF, S, R, * 12 v nr"},{"ID":"2149","标识":"NGC2149","M标识":"NGC2149","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h3m30.7s","赤经D(J2000)":"6.058527777777778","赤纬(J2000)":"-9h43m50s","赤纬D(J2000)":"-9.730555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"2","方位角":"","详细描述":"faint, 12th magnitude star involved","简略描述":"F, * 12 inv"},{"ID":"2150","标识":"NGC2150","M标识":"NGC2150","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h55m46.4s","赤经D(J2000)":"5.929555555555556","赤纬(J2000)":"-69h33m39s","赤纬D(J2000)":"-69.56083333333333","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"143","详细描述":"faint, very small, round, very suddenly much brighter middle, stellar","简略描述":"F, vS, R, vsmbM, stellar"},{"ID":"2151","标识":"NGC2151","M标识":"NGC2151","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h56m20.5s","赤经D(J2000)":"5.939027777777778","赤纬(J2000)":"-69h1m3s","赤纬D(J2000)":"-69.0175","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, round, brighter middle","简略描述":"F, pS, R, bM"},{"ID":"2152","标识":"NGC2152","M标识":"NGC2152","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"6h0m55s","赤经D(J2000)":"6.0152777777777775","赤纬(J2000)":"-50h44m27s","赤纬D(J2000)":"-50.740833333333335","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"69","详细描述":"most extremely faint, round, 15th magnitude star attached","简略描述":"eeF, R, * 15 att"},{"ID":"2153","标识":"NGC2153","M标识":"NGC2153","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h57m51.8s","赤经D(J2000)":"5.964388888888889","赤纬(J2000)":"-66h24m3s","赤纬D(J2000)":"-66.40083333333334","可见光星等V":"13.1","摄影(蓝光)星等B":"13.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.3","短轴(分)":"","方位角":"","详细描述":"most extremely faint, a little extended, 16th magnitude star attached","简略描述":"eeF, lE, * 16 att"},{"ID":"2154","标识":"NGC2154","M标识":"NGC2154","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h57m38.3s","赤经D(J2000)":"5.960638888888889","赤纬(J2000)":"-67h15m44s","赤纬D(J2000)":"-67.26222222222222","可见光星等V":"11.8","摄影(蓝光)星等B":"12.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.4","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, round, very gradually a little brighter middle","简略描述":"F, pL, R, vglbM"},{"ID":"2155","标识":"NGC2155","M标识":"NGC2155","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h58m33.3s","赤经D(J2000)":"5.9759166666666665","赤纬(J2000)":"-65h28m35s","赤纬D(J2000)":"-65.47638888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.1","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, round, very gradually a little brighter middle","简略描述":"F, pL, R, vglbM"},{"ID":"2156","标识":"NGC2156","M标识":"NGC2156","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h57m50.4s","赤经D(J2000)":"5.964","赤纬(J2000)":"-68h27m39s","赤纬D(J2000)":"-68.46083333333334","可见光星等V":"11.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.1","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, round, gradually brighter middle, 1st of 3","简略描述":"pB, S, R, gbM, 1st of 3"},{"ID":"2157","标识":"NGC2157","M标识":"NGC2157","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h57m34.9s","赤经D(J2000)":"5.959694444444445","赤纬(J2000)":"-69h11m50s","赤纬D(J2000)":"-69.19722222222222","可见光星等V":"10.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.7","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very bright, small, round, very gradually very much brighter middle, partially resolved (some stars seen)","简略描述":"globular, vB, S, R, vgvmbM, rr"},{"ID":"2158","标识":"NGC2158","M标识":"NGC2158","拓展名":"","组件":"","Class":"VI 17","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3r","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h7m25.6s","赤经D(J2000)":"6.123777777777778","赤纬(J2000)":"+24h5m46s","赤纬D(J2000)":"24.09611111111111","可见光星等V":"8.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty small, much compressed, very rich, irregular triangle, stars extremely small (faint)","简略描述":"Cl, pS, mC, vRi, irr Δ, st eS"},{"ID":"2159","标识":"NGC2159","M标识":"NGC2159","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h58m3s","赤经D(J2000)":"5.9675","赤纬(J2000)":"-68h37m28s","赤纬D(J2000)":"-68.62444444444444","可见光星等V":"11.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.9","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pF, S, R, gbM, * 15 att nf"},{"ID":"2160","标识":"NGC2160","M标识":"NGC2160","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h58m12.9s","赤经D(J2000)":"5.97025","赤纬(J2000)":"-68h17m23s","赤纬D(J2000)":"-68.28972222222222","可见光星等V":"12.2","摄影(蓝光)星等B":"12.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty small, round, gradually brighter middle","简略描述":"pF, pS, R, gbM"},{"ID":"2161","标识":"NGC2161","M标识":"NGC2161","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h55m43.2s","赤经D(J2000)":"5.9286666666666665","赤纬(J2000)":"-74h21m14s","赤纬D(J2000)":"-74.35388888888889","可见光星等V":"13","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.2","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, round, gradually pretty much brighter middle","简略描述":"F, pL, R, gpmbM"},{"ID":"2162","标识":"NGC2162","M标识":"NGC2162","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h0m30.4s","赤经D(J2000)":"6.008444444444445","赤纬(J2000)":"-63h43m20s","赤纬D(J2000)":"-63.72222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.1","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, round, very gradually a little brighter middle","简略描述":"F, pL, R, vglbM"},{"ID":"2163","标识":"NGC2163","M标识":"NGC2163","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"6h7m49.5s","赤经D(J2000)":"6.130416666666666","赤纬(J2000)":"+18h39m27s","赤纬D(J2000)":"18.6575","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"2","方位角":"","详细描述":"","简略描述":"eF, E, dif, * 11 att s"},{"ID":"2164","标识":"NGC2164","M标识":"NGC2164","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h58m55s","赤经D(J2000)":"5.981944444444444","赤纬(J2000)":"-68h30m56s","赤纬D(J2000)":"-68.51555555555555","可见光星等V":"10.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.5","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very bright, round, much compressed middle, partially resolved (some stars seen)","简略描述":"globular, vB, R, mCM, rr"},{"ID":"2165","标识":"NGC2165","M标识":"NGC2165","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"6h11m4s","赤经D(J2000)":"6.184444444444445","赤纬(J2000)":"+51h40m42s","赤纬D(J2000)":"51.67833333333333","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, poor, stars of 11th magnitude","简略描述":"Cl, pL, poor, st 11"},{"ID":"2166","标识":"NGC2166","M标识":"NGC2166","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h59m33.8s","赤经D(J2000)":"5.9927222222222225","赤纬(J2000)":"-67h56m29s","赤纬D(J2000)":"-67.9413888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"2167","标识":"NGC2167","M标识":"NGC2167","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h6m58.6s","赤经D(J2000)":"6.1162777777777775","赤纬(J2000)":"-6h12m10s","赤纬D(J2000)":"-6.202777777777778","可见光星等V":"6.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebulous 7th magnitude star, among 3 stars","简略描述":"Nebulous * 7, am 3 st"},{"ID":"2168","标识":"NGC2168","M标识":"M35","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"鞋扣星团","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h9m0s","赤经D(J2000)":"6.15","赤纬(J2000)":"+24h21m0s","赤纬D(J2000)":"24.35","可见光星等V":"5.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, vL, cRi, pC, st 9...16"},{"ID":"2169","标识":"NGC2169","M标识":"NGC2169","拓展名":"","组件":"","Class":"VIII 24","业余排名":"5","中文名":"37星团","类型":"OCL","含重复类型":"OCL","形态":"I3p","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"6h8m24.3s","赤经D(J2000)":"6.140083333333334","赤纬(J2000)":"+13h57m53s","赤纬D(J2000)":"13.964722222222221","可见光星等V":"5.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, S, lRi, pmC, ** Σ 848"},{"ID":"2170","标识":"NGC2170","M标识":"NGC2170","拓展名":"","组件":"","Class":"IV 19","业余排名":"6.5","中文名":"麒麟座R2 IRS3","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h7m31.3s","赤经D(J2000)":"6.12536111111111","赤纬(J2000)":"-6h23m53s","赤纬D(J2000)":"-6.398055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"2","方位角":"","详细描述":"","简略描述":"* 9 in vF, pL neb, E 170°"},{"ID":"2171","标识":"NGC2171","M标识":"NGC2171","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Cloud","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h44m13.8s","赤经D(J2000)":"5.737166666666667","赤纬(J2000)":"-70h40m9s","赤纬D(J2000)":"-70.66916666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, large, round, gradually a little brighter middle","简略描述":"eF, L, R, glbM"},{"ID":"2172","标识":"NGC2172","M标识":"NGC2172","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h0m5.9s","赤经D(J2000)":"6.0016388888888885","赤纬(J2000)":"-68h38m13s","赤纬D(J2000)":"-68.63694444444445","可见光星等V":"11.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"faint, considerably large, round, a little brighter middle","简略描述":"F, cL, R, lbM"},{"ID":"2173","标识":"NGC2173","M标识":"NGC2173","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h57m58.5s","赤经D(J2000)":"5.9662500000000005","赤纬(J2000)":"-72h58m41s","赤纬D(J2000)":"-72.97805555555556","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.4","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty large, round, gradually much brighter middle","简略描述":"pF, pL, R, gmbM"},{"ID":"2174","标识":"NGC2174","M标识":"NGC2174","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"猴头星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"6h9m0.3s","赤经D(J2000)":"6.150083333333334","赤纬(J2000)":"+20h38m26s","赤纬D(J2000)":"20.640555555555554","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.5","短轴(分)":"2","方位角":"","详细描述":"extremely faint, between 3 very faint stars","简略描述":"eF, bet 3 vF st"},{"ID":"2175","标识":"NGC2175","M标识":"NGC2175","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"6h9m38.6s","赤经D(J2000)":"6.160722222222223","赤纬(J2000)":"+20h29m18s","赤纬D(J2000)":"20.488333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"40","短轴(分)":"30","方位角":"","详细描述":"8th-magnitude star in nebulosity","简略描述":"* 8 m in neb (Auw No 21)"},{"ID":"2176","标识":"NGC2176","M标识":"NGC2176","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h1m19.4s","赤经D(J2000)":"6.022055555555555","赤纬(J2000)":"-66h51m12s","赤纬D(J2000)":"-66.85333333333332","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.3","短轴(分)":"","方位角":"","详细描述":"most extremely faint, pretty large, round, gradually brighter middle","简略描述":"eeF, pL, R, gbM"},{"ID":"2177","标识":"NGC2177","M标识":"NGC2177","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h1m16.5s","赤经D(J2000)":"6.02125","赤纬(J2000)":"-67h44m0s","赤纬D(J2000)":"-67.73333333333333","可见光星等V":"12.8","摄影(蓝光)星等B":"13","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregularly round, a little brighter middle, mottled but not resolved","简略描述":"F, vS, iR, lbM, r"},{"ID":"2178","标识":"NGC2178","M标识":"NGC2178","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"6h2m47.5s","赤经D(J2000)":"6.0465277777777775","赤纬(J2000)":"-63h45m50s","赤纬D(J2000)":"-63.763888888888886","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"2179","标识":"NGC2179","M标识":"NGC2179","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"6h8m2.1s","赤经D(J2000)":"6.133916666666667","赤纬(J2000)":"-21h44m46s","赤纬D(J2000)":"-21.746111111111112","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"170","详细描述":"faint, pretty small, very much extended, gradually a little brighter middle","简略描述":"F, pS, vmE, glbM"},{"ID":"2180","标识":"NGC2180","M标识":"NGC2180","拓展名":"","组件":"","Class":"VIII 6","业余排名":"15","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"6h9m36.2s","赤经D(J2000)":"6.160055555555556","赤纬(J2000)":"+4h42m44s","赤纬D(J2000)":"4.7122222222222225","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, a little compressed, stars large and small","简略描述":"Cl, pRi, lC, st L and S"},{"ID":"2181","标识":"NGC2181","M标识":"NGC2181","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h2m43.7s","赤经D(J2000)":"6.045472222222222","赤纬(J2000)":"-65h15m54s","赤纬D(J2000)":"-65.265","可见光星等V":"13.6","摄影(蓝光)星等B":"13.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.6","短轴(分)":"","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"2182","标识":"NGC2182","M标识":"NGC2182","拓展名":"","组件":"","Class":"IV 38","业余排名":"6.5","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h9m30.9s","赤经D(J2000)":"6.1585833333333335","赤纬(J2000)":"-6h19m35s","赤纬D(J2000)":"-6.326388888888888","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"2","方位角":"","详细描述":"","简略描述":"pB **, L * neb, E 90° ±"},{"ID":"2183","标识":"NGC2183","M标识":"NGC2183","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h10m46.9s","赤经D(J2000)":"6.179694444444444","赤纬(J2000)":"-6h12m43s","赤纬D(J2000)":"-6.211944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"","简略描述":"eF, S, lE, * 11·12 sp"},{"ID":"2184","标识":"NGC2184","M标识":"NGC2184","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"6h11m0s","赤经D(J2000)":"6.183333333333334","赤纬(J2000)":"-3h29m0s","赤纬D(J2000)":"-3.4833333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"33","短轴(分)":"","方位角":"","详细描述":"a cluster, large, very little compressed","简略描述":"Cl, L, vlC"},{"ID":"2185","标识":"NGC2185","M标识":"NGC2185","拓展名":"","组件":"","Class":"IV 20","业余排名":"6","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h11m0.4s","赤经D(J2000)":"6.1834444444444445","赤纬(J2000)":"-6h13m36s","赤纬D(J2000)":"-6.226666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"","简略描述":"* 11 and 4 S st in vF, L neb"},{"ID":"2186","标识":"NGC2186","M标识":"NGC2186","拓展名":"","组件":"","Class":"VII 25","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"6h12m7.1s","赤经D(J2000)":"6.201972222222222","赤纬(J2000)":"+5h27m31s","赤纬D(J2000)":"5.458611111111111","可见光星等V":"8.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, pretty compressed, stars large and small","简略描述":"Cl, pL, pRi, pC, st L and S"},{"ID":"2187","标识":"NGC2187","M标识":"NGC2187","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h3m52.4s","赤经D(J2000)":"6.064555555555556","赤纬(J2000)":"-69h34m40s","赤纬D(J2000)":"-69.57777777777777","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"99","详细描述":"","简略描述":"pB, pS, R, gbM, vF, R, glbM, D neb 12°.5"},{"ID":"2188","标识":"NGC2188","M标识":"NGC2188","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"6h10m9.7s","赤经D(J2000)":"6.169361111111112","赤纬(J2000)":"-34h6m18s","赤纬D(J2000)":"-34.105000000000004","可见光星等V":"11.7","摄影(蓝光)星等B":"12.1","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"4.2","短轴(分)":"1.1","方位角":"175","详细描述":"pretty faint, pretty large, very much extended, gradually a very little brighter middle","简略描述":"pF, pL, vmE, gvlbM"},{"ID":"2189","标识":"NGC2189","M标识":"NGC2189","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"6h12m17s","赤经D(J2000)":"6.204722222222222","赤纬(J2000)":"+1h3m42s","赤纬D(J2000)":"1.0616666666666668","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"2 clusters nr 2 st 9·10 & 10·11"},{"ID":"2190","标识":"NGC2190","M标识":"NGC2190","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"6h1m4.1s","赤经D(J2000)":"6.017805555555555","赤纬(J2000)":"-74h43m32s","赤纬D(J2000)":"-74.72555555555556","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, round, gradually a little brighter middle","简略描述":"vF, pL, R, glbM"},{"ID":"2191","标识":"NGC2191","M标识":"NGC2191","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"6h8m23.7s","赤经D(J2000)":"6.139916666666667","赤纬(J2000)":"-52h30m44s","赤纬D(J2000)":"-52.51222222222222","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"118","详细描述":"","简略描述":"pB, vS, E, vsbM, * 9 p 5s"},{"ID":"2192","标识":"NGC2192","M标识":"NGC2192","拓展名":"","组件":"","Class":"VII 57","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1p","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"6h15m17.4s","赤经D(J2000)":"6.254833333333333","赤纬(J2000)":"+39h51m19s","赤纬D(J2000)":"39.85527777777778","可见光星等V":"10.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, considerably large, compressed, irregular figure, stars very small","简略描述":"Cl, cL, C, iF, st vS"},{"ID":"2193","标识":"NGC2193","M标识":"NGC2193","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h6m17.9s","赤经D(J2000)":"6.104972222222222","赤纬(J2000)":"-65h5m57s","赤纬D(J2000)":"-65.09916666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.9","短轴(分)":"","方位角":"","详细描述":"faint, irregular figure, gradually a little brighter middle, 2 or 3 stars involved","简略描述":"F, iF, glbM, 2 or 3 st inv"},{"ID":"2194","标识":"NGC2194","M标识":"NGC2194","拓展名":"","组件":"","Class":"VI 5","业余排名":"6","中文名":"漫游者星团","类型":"OCL","含重复类型":"OCL","形态":"III1r","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"6h13m45.9s","赤经D(J2000)":"6.229416666666666","赤纬(J2000)":"+12h48m24s","赤纬D(J2000)":"12.806666666666667","可见光星等V":"8.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, L, Ri, gvmCM"},{"ID":"2195","标识":"NGC2195","M标识":"NGC2195","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"6h14m34.8s","赤经D(J2000)":"6.243","赤纬(J2000)":"+17h38m22s","赤纬D(J2000)":"17.639444444444443","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, S, 2 S st inv, * 10 n 31\""},{"ID":"2196","标识":"NGC2196","M标识":"NGC2196","拓展名":"","组件":"","Class":"II 265","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"6h12m9.6s","赤经D(J2000)":"6.2026666666666666","赤纬(J2000)":"-21h48m22s","赤纬D(J2000)":"-21.80611111111111","可见光星等V":"11","摄影(蓝光)星等B":"11.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.8","短轴(分)":"2.2","方位角":"35","详细描述":"pretty faint, pretty small, very little extended, pretty much brighter middle, star near","简略描述":"pF, pS, vlE, pmbM, st nr"},{"ID":"2197","标识":"NGC2197","M标识":"NGC2197","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h6m8.7s","赤经D(J2000)":"6.102416666666667","赤纬(J2000)":"-67h5m51s","赤纬D(J2000)":"-67.0975","可见光星等V":"13.5","摄影(蓝光)星等B":"13.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, round, gradually brighter middle","简略描述":"vF, pS, R, gbM"},{"ID":"2198","标识":"NGC2198","M标识":"NGC2198","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"6h13m54s","赤经D(J2000)":"6.2316666666666665","赤纬(J2000)":"+0h59m42s","赤纬D(J2000)":"0.995","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, bet 2 st 9·10 and 10·11"},{"ID":"2199","标识":"NGC2199","M标识":"NGC2199","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"6h4m44.9s","赤经D(J2000)":"6.079138888888889","赤纬(J2000)":"-73h24m0s","赤纬D(J2000)":"-73.4","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2","短轴(分)":"0.8","方位角":"37","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"2200","标识":"NGC2200","M标识":"NGC2200","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"6h13m17.4s","赤经D(J2000)":"6.2215","赤纬(J2000)":"-43h39m47s","赤纬D(J2000)":"-43.66305555555555","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"161","详细描述":"","简略描述":"eF, pS, R, vlbM, ? 134° PD"},{"ID":"2201","标识":"NGC2201","M标识":"NGC2201","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"6h13m31.4s","赤经D(J2000)":"6.225388888888889","赤纬(J2000)":"-43h42m18s","赤纬D(J2000)":"-43.705000000000005","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"113","详细描述":"","简略描述":"eF, S, R, pslbM, ? 134° PD"},{"ID":"2202","标识":"NGC2202","M标识":"NGC2202","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"6h16m50.7s","赤经D(J2000)":"6.28075","赤纬(J2000)":"+5h59m48s","赤纬D(J2000)":"5.996666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"","简略描述":"** Chief of Cl"},{"ID":"2203","标识":"NGC2203","M标识":"NGC2203","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"6h4m42.7s","赤经D(J2000)":"6.0785277777777775","赤纬(J2000)":"-75h26m18s","赤纬D(J2000)":"-75.43833333333333","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.3","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, irregularly round, very gradually pretty much brighter middle, mottled but not resolved","简略描述":"pB, pL, iR, vgpmbM, r"},{"ID":"2204","标识":"NGC2204","M标识":"NGC2204","拓展名":"","组件":"","Class":"VII 13","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III3m","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h15m33s","赤经D(J2000)":"6.259166666666666","赤纬(J2000)":"-18h39m54s","赤纬D(J2000)":"-18.665","可见光星等V":"8.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, large, pretty rich, a little compressed","简略描述":"Cl, L, pRi, lC"},{"ID":"2205","标识":"NGC2205","M标识":"NGC2205","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"6h10m32.8s","赤经D(J2000)":"6.175777777777778","赤纬(J2000)":"-62h32m19s","赤纬D(J2000)":"-62.53861111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"80","详细描述":"pretty faint, small, round, brighter middle","简略描述":"pF, S, R, bM"},{"ID":"2206","标识":"NGC2206","M标识":"NGC2206","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h15m59.7s","赤经D(J2000)":"6.266583333333333","赤纬(J2000)":"-26h45m55s","赤纬D(J2000)":"-26.76527777777778","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.4","短轴(分)":"1.3","方位角":"138","详细描述":"faint, pretty small, very little extended, pretty suddenly a little brighter middle","简略描述":"F, pS, vlE, pslbM"},{"ID":"2207","标识":"NGC2207","M标识":"NGC2207","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc\/P","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h16m21.8s","赤经D(J2000)":"6.272722222222222","赤纬(J2000)":"-21h22m22s","赤纬D(J2000)":"-21.372777777777777","可见光星等V":"10.9","摄影(蓝光)星等B":"11.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.9","短轴(分)":"2.2","方位角":"141","详细描述":"","简略描述":"pB, pL, mE 87°, pslbMRN"},{"ID":"2208","标识":"NGC2208","M标识":"NGC2208","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"6h22m34.6s","赤经D(J2000)":"6.376277777777777","赤纬(J2000)":"+51h54m36s","赤纬D(J2000)":"51.91","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"110","详细描述":"pretty faint, pretty small, a little extended","简略描述":"pF, pS, lE"},{"ID":"2209","标识":"NGC2209","M标识":"NGC2209","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"6h8m33.5s","赤经D(J2000)":"6.142638888888889","赤纬(J2000)":"-73h50m16s","赤纬D(J2000)":"-73.83777777777777","可见光星等V":"13.2","摄影(蓝光)星等B":"13.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.8","短轴(分)":"","方位角":"","详细描述":"very faint, considerably large, round, gradually a very little brighter middle","简略描述":"vF, cL, R, gvlbM"},{"ID":"2210","标识":"NGC2210","M标识":"NGC2210","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h11m31.9s","赤经D(J2000)":"6.192194444444445","赤纬(J2000)":"-69h7m15s","赤纬D(J2000)":"-69.12083333333332","可见光星等V":"10.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.1","短轴(分)":"","方位角":"","详细描述":"very bright, pretty large, round, much brighter middle, mottled but not resolved","简略描述":"vB, pL, R, mbM, r"},{"ID":"2211","标识":"NGC2211","M标识":"NGC2211","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h18m30.2s","赤经D(J2000)":"6.308388888888889","赤纬(J2000)":"-18h32m16s","赤纬D(J2000)":"-18.53777777777778","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"22","详细描述":"very faint, pretty small, extended 45°, brighter middle and nucleus","简略描述":"vF, pS, E 45°, bMN"},{"ID":"2212","标识":"NGC2212","M标识":"NGC2212","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h18m35.7s","赤经D(J2000)":"6.309916666666666","赤纬(J2000)":"-18h31m12s","赤纬D(J2000)":"-18.52","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"136","详细描述":"extremely faint, very small, round, in field with last","简略描述":"eF, vS, R, in field with last"},{"ID":"2213","标识":"NGC2213","M标识":"NGC2213","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"6h10m42s","赤经D(J2000)":"6.178333333333334","赤纬(J2000)":"-71h31m42s","赤纬D(J2000)":"-71.52833333333334","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.1","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, S, R, glbM, *** P"},{"ID":"2214","标识":"NGC2214","M标识":"NGC2214","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h12m57.5s","赤经D(J2000)":"6.215972222222223","赤纬(J2000)":"-68h15m33s","赤纬D(J2000)":"-68.25916666666667","可见光星等V":"10.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.6","短轴(分)":"","方位角":"","详细描述":"bright, pretty small, a little extended, gradually brighter middle, clearly consisting of stars","简略描述":"B, pS, lE, gbM, rrr"},{"ID":"2215","标识":"NGC2215","M标识":"NGC2215","拓展名":"","组件":"","Class":"VII 20","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h20m49.2s","赤经D(J2000)":"6.3469999999999995","赤纬(J2000)":"-7h17m2s","赤纬D(J2000)":"-7.283888888888889","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a cluster, considerably large, pretty rich, pretty compressed, stars from 11th to 15th magnitude","简略描述":"Cl, cL, pRi, pC, st 11…15"},{"ID":"2216","标识":"NGC2216","M标识":"NGC2216","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h21m30.7s","赤经D(J2000)":"6.358527777777778","赤纬(J2000)":"-22h5m14s","赤纬D(J2000)":"-22.08722222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"20","详细描述":"very faint, pretty large, round, very gradually a little brighter middle","简略描述":"vF, pL, R, vglbM"},{"ID":"2217","标识":"NGC2217","M标识":"NGC2217","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h21m39.8s","赤经D(J2000)":"6.361055555555555","赤纬(J2000)":"-27h14m3s","赤纬D(J2000)":"-27.234166666666667","可见光星等V":"10.7","摄影(蓝光)星等B":"11.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"4.7","短轴(分)":"4.3","方位角":"21","详细描述":"very bright, small, round, pretty suddenly much brighter middle, mottled but not resolved","简略描述":"vB, S, R, psmbM, r"},{"ID":"2218","标识":"NGC2218","M标识":"NGC2218","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h24m42s","赤经D(J2000)":"6.411666666666667","赤纬(J2000)":"+19h20m42s","赤纬D(J2000)":"19.345","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint cluster (Auwers No. 22)","简略描述":"F, Cl (Auwers No 22)"},{"ID":"2219","标识":"NGC2219","M标识":"NGC2219","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h23m44.3s","赤经D(J2000)":"6.3956388888888895","赤纬(J2000)":"-4h40m36s","赤纬D(J2000)":"-4.676666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, P, vlC, st 6, 11…12"},{"ID":"2220","标识":"NGC2220","M标识":"NGC2220","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"6h21m12s","赤经D(J2000)":"6.353333333333333","赤纬(J2000)":"-44h45m28s","赤纬D(J2000)":"-44.757777777777775","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, poor, stars from 8th magnitude","简略描述":"Cl, B, P, st 8…"},{"ID":"2221","标识":"NGC2221","M标识":"NGC2221","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"6h20m15.8s","赤经D(J2000)":"6.337722222222222","赤纬(J2000)":"-57h34m43s","赤纬D(J2000)":"-57.578611111111115","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2","短轴(分)":"0.5","方位角":"0","详细描述":"very faint, a little extended, very gradually brighter middle, western of 2","简略描述":"vF, lE, vgbM, p of 2"},{"ID":"2222","标识":"NGC2222","M标识":"NGC2222","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"6h20m16.8s","赤经D(J2000)":"6.338","赤纬(J2000)":"-57h32m0s","赤纬D(J2000)":"-57.53333333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"150","详细描述":"very faint, a little extended, very gradually a very little brighter middle, eastern of 2","简略描述":"vF, lE, vgvlbM, f of 2"},{"ID":"2223","标识":"NGC2223","M标识":"NGC2223","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h24m35.8s","赤经D(J2000)":"6.409944444444445","赤纬(J2000)":"-22h50m19s","赤纬D(J2000)":"-22.83861111111111","可见光星等V":"11.5","摄影(蓝光)星等B":"12.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3","短轴(分)":"2.6","方位角":"175","详细描述":"faint, pretty large, round, very gradually a little brighter middle, 2 stars involved","简略描述":"F, pL, R, vglbM, 2 st inv"},{"ID":"2224","标识":"NGC2224","M标识":"NGC2224","拓展名":"","组件":"","Class":"VII 35","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h27m32s","赤经D(J2000)":"6.458888888888889","赤纬(J2000)":"+12h39m20s","赤纬D(J2000)":"12.655555555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, pC, with neb?"},{"ID":"2225","标识":"NGC2225","M标识":"NGC2225","拓展名":"","组件":"","Class":"VII 26","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h26m37.5s","赤经D(J2000)":"6.4437500000000005","赤纬(J2000)":"-9h38m32s","赤纬D(J2000)":"-9.642222222222221","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"40","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed middle, stars from 12th to 15th magnitude","简略描述":"Cl, P, lCM, st 12…15"},{"ID":"2226","标识":"NGC2226","M标识":"NGC2226","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"OCL","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h26m37.5s","赤经D(J2000)":"6.4437500000000005","赤纬(J2000)":"-9h38m32s","赤纬D(J2000)":"-9.642222222222221","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"40","短轴(分)":"","方位角":"","详细描述":"","简略描述":"S, v diffic, * 10 close s"},{"ID":"2227","标识":"NGC2227","M标识":"NGC2227","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h25m57.9s","赤经D(J2000)":"6.43275","赤纬(J2000)":"-22h0m17s","赤纬D(J2000)":"-22.004722222222224","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.1","短轴(分)":"1.2","方位角":"19","详细描述":"","简略描述":"eF, R, ** p 270°, 90\""},{"ID":"2228","标识":"NGC2228","M标识":"NGC2228","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h21m15.9s","赤经D(J2000)":"6.354416666666666","赤纬(J2000)":"-64h27m33s","赤纬D(J2000)":"-64.45916666666668","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, round, gradually a little brighter middle","简略描述":"F, S, R, glbM"},{"ID":"2229","标识":"NGC2229","M标识":"NGC2229","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h21m23.8s","赤经D(J2000)":"6.3566111111111105","赤纬(J2000)":"-64h57m24s","赤纬D(J2000)":"-64.95666666666666","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"133","详细描述":"extremely faint, very small, round, 1st of 3","简略描述":"eF, vS, R, 1st of 3"},{"ID":"2230","标识":"NGC2230","M标识":"NGC2230","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h21m27.9s","赤经D(J2000)":"6.357749999999999","赤纬(J2000)":"-64h59m34s","赤纬D(J2000)":"-64.99277777777777","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"77","详细描述":"extremely faint, small, a little extended, 2nd of 3","简略描述":"eF, S, lE, 2nd of 3"},{"ID":"2231","标识":"NGC2231","M标识":"NGC2231","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h20m43s","赤经D(J2000)":"6.345277777777778","赤纬(J2000)":"-67h31m7s","赤纬D(J2000)":"-67.51861111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, round, gradually a very little brighter middle, double star to east","简略描述":"F, pL, R, gvlbM, ** f"},{"ID":"2232","标识":"NGC2232","M标识":"NGC2232","拓展名":"","组件":"","Class":"VIII 25","业余排名":"5","中文名":"双锥状星团","类型":"OCL","含重复类型":"OCL","形态":"IV3p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h27m15s","赤经D(J2000)":"6.454166666666667","赤纬(J2000)":"-4h45m30s","赤纬D(J2000)":"-4.758333333333334","可见光星等V":"4.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"45","短轴(分)":"","方位角":"","详细描述":"","简略描述":"B * (10 Monoc) + CL"},{"ID":"2233","标识":"NGC2233","M标识":"NGC2233","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h21m40.1s","赤经D(J2000)":"6.361138888888888","赤纬(J2000)":"-65h2m0s","赤纬D(J2000)":"-65.03333333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"39","详细描述":"extremely faint, small, 3rd of 3","简略描述":"eF, S, 3rd of 3"},{"ID":"2234","标识":"NGC2234","M标识":"NGC2234","拓展名":"","组件":"","Class":"VIII 9","业余排名":"12","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h29m29.2s","赤经D(J2000)":"6.491444444444444","赤纬(J2000)":"+16h43m8s","赤纬D(J2000)":"16.718888888888888","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"35","短轴(分)":"","方位角":"","详细描述":"a cluster, extremely large, pretty rich, a little compressed, stars large and small","简略描述":"Cl, eL, pRi, lC, st L & S"},{"ID":"2235","标识":"NGC2235","M标识":"NGC2235","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h22m22.2s","赤经D(J2000)":"6.372833333333333","赤纬(J2000)":"-64h56m5s","赤纬D(J2000)":"-64.93472222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1","方位角":"68","详细描述":"very faint, small, round, 12th magnitude star near","简略描述":"vF, S, R, * 12 nr"},{"ID":"2236","标识":"NGC2236","M标识":"NGC2236","拓展名":"","组件":"","Class":"VII 5","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h29m39.6s","赤经D(J2000)":"6.4943333333333335","赤纬(J2000)":"+6h49m51s","赤纬D(J2000)":"6.8308333333333335","可见光星等V":"8.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, pRi, pC, st 10, 12…15"},{"ID":"2237","标识":"NGC2237","M标识":"NGC2237","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"玫瑰星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h30m54.6s","赤经D(J2000)":"6.5151666666666666","赤纬(J2000)":"+5h2m52s","赤纬D(J2000)":"5.047777777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"80","短轴(分)":"50","方位角":"","详细描述":"","简略描述":"pB, vvL, dif (? = 5361)"},{"ID":"2238","标识":"NGC2238","M标识":"NGC2238","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"玫瑰星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h30m40.3s","赤经D(J2000)":"6.5111944444444445","赤纬(J2000)":"+5h0m47s","赤纬D(J2000)":"5.013055555555556","可见光星等V":"99","摄影(蓝光)星等B":"6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"80","短轴(分)":"60","方位角":"","详细描述":"","简略描述":"S * in nebulosity"},{"ID":"2239","标识":"NGC2239","M标识":"NGC2239","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"II3p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h32m19s","赤经D(J2000)":"6.538611111111111","赤纬(J2000)":"+4h51m24s","赤纬D(J2000)":"4.8566666666666665","可见光星等V":"4.8","摄影(蓝光)星等B":"5.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"24","短轴(分)":"","方位角":"","详细描述":"8th-magnitude star in a large, poor, bright cluster","简略描述":"* 8 in L, P, B Cl"},{"ID":"2240","标识":"NGC2240","M标识":"NGC2240","拓展名":"","组件":"","Class":"VIII 49","业余排名":"15","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"6h33m10.5s","赤经D(J2000)":"6.5529166666666665","赤纬(J2000)":"+35h15m2s","赤纬D(J2000)":"35.25055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, pL, P, vlC, st 7, 10…15"},{"ID":"2241","标识":"NGC2241","M标识":"NGC2241","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h22m53.3s","赤经D(J2000)":"6.3814722222222215","赤纬(J2000)":"-68h55m29s","赤纬D(J2000)":"-68.92472222222223","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.3","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, round, gradually a little brighter middle","简略描述":"vF, pL, R, glbM"},{"ID":"2242","标识":"NGC2242","M标识":"NGC2242","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"6h34m7.4s","赤经D(J2000)":"6.568722222222222","赤纬(J2000)":"+44h46m40s","赤纬D(J2000)":"44.77777777777778","可见光星等V":"15","摄影(蓝光)星等B":"15.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.37","短轴(分)":"","方位角":"","详细描述":"most extremely faint, very small, round, faint star to northeast","简略描述":"eeF, vS, R, F * nf"},{"ID":"2243","标识":"NGC2243","M标识":"NGC2243","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2r","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h29m34.4s","赤经D(J2000)":"6.492888888888889","赤纬(J2000)":"-31h16m53s","赤纬D(J2000)":"-31.281388888888888","可见光星等V":"9.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8.3","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pB, cL, R, vglbM, 4'"},{"ID":"2244","标识":"NGC2244","M标识":"NGC2244","拓展名":"","组件":"","Class":"VII 2","业余排名":"2","中文名":"玫瑰星云","类型":"OCL","含重复类型":"OCL","形态":"II3p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h32m19s","赤经D(J2000)":"6.538611111111111","赤纬(J2000)":"+4h51m24s","赤纬D(J2000)":"4.8566666666666665","可见光星等V":"4.8","摄影(蓝光)星等B":"5.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"24","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, beautiful, st sc (12 Monoc)"},{"ID":"2245","标识":"NGC2245","M标识":"NGC2245","拓展名":"","组件":"","Class":"IV 3","业余排名":"6.5","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h32m41.2s","赤经D(J2000)":"6.544777777777778","赤纬(J2000)":"+10h9m24s","赤纬D(J2000)":"10.156666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"4","方位角":"","详细描述":"","简略描述":"pL, com, mbN sf alm *, * 7·8 nf"},{"ID":"2246","标识":"NGC2246","M标识":"NGC2246","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"玫瑰星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h32m33.7s","赤经D(J2000)":"6.542694444444444","赤纬(J2000)":"+5h7m42s","赤纬D(J2000)":"5.128333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, large, irregularly round, extremely difficult","简略描述":"eeF, L, irrR, e diffic"},{"ID":"2247","标识":"NGC2247","M标识":"NGC2247","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h33m5.1s","赤经D(J2000)":"6.551416666666666","赤纬(J2000)":"+10h19m18s","赤纬D(J2000)":"10.321666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"6","方位角":"","详细描述":"","简略描述":"Neb * in eF, eL neby, nf IV 3"},{"ID":"2248","标识":"NGC2248","M标识":"NGC2248","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h34m35.3s","赤经D(J2000)":"6.576472222222222","赤纬(J2000)":"+26h18m21s","赤纬D(J2000)":"26.305833333333332","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Small cluster (Auw 23)"},{"ID":"2249","标识":"NGC2249","M标识":"NGC2249","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h25m49.6s","赤经D(J2000)":"6.430444444444444","赤纬(J2000)":"-68h55m11s","赤纬D(J2000)":"-68.91972222222223","可见光星等V":"12.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.7","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, round, very gradually brighter middle, double star to west","简略描述":"pB, pL, R, vgbM, ** p"},{"ID":"2250","标识":"NGC2250","M标识":"NGC2250","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV2p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h33m49.8s","赤经D(J2000)":"6.563833333333333","赤纬(J2000)":"-5h5m4s","赤纬D(J2000)":"-5.084444444444444","可见光星等V":"8.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, pRi, lC, iF, st 8, 12…14"},{"ID":"2251","标识":"NGC2251","M标识":"NGC2251","拓展名":"","组件":"","Class":"VIII 3","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h34m38.4s","赤经D(J2000)":"6.577333333333333","赤纬(J2000)":"+8h21m59s","赤纬D(J2000)":"8.366388888888888","可见光星等V":"7.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, extended, rich, a little compressed","简略描述":"Cl, vL, E, Ri, lC"},{"ID":"2252","标识":"NGC2252","M标识":"NGC2252","拓展名":"","组件":"","Class":"VIII 50","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV2p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h34m19.8s","赤经D(J2000)":"6.572166666666666","赤纬(J2000)":"+5h19m22s","赤纬D(J2000)":"5.322777777777778","可见光星等V":"99","摄影(蓝光)星等B":"7.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"18","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, pretty rich, a little compressed, stars small (faint)","简略描述":"Cl, vL, pRi, lC, st S"},{"ID":"2253","标识":"NGC2253","M标识":"NGC2253","拓展名":"","组件":"","Class":"VII 54","业余排名":"6.5","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"6h42m0s","赤经D(J2000)":"6.7","赤纬(J2000)":"+65h51m0s","赤纬D(J2000)":"65.85","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, stars extremely small (faint)","简略描述":"vF, st eS"},{"ID":"2254","标识":"NGC2254","M标识":"NGC2254","拓展名":"","组件":"","Class":"VII 22","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h35m46.6s","赤经D(J2000)":"6.596277777777778","赤纬(J2000)":"+7h40m15s","赤纬D(J2000)":"7.670833333333333","可见光星等V":"9.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, small, pretty compressed, irregular figure, stars from 11th to 13th magnitude","简略描述":"Cl, S, pC, iF, st 11…13"},{"ID":"2255","标识":"NGC2255","M标识":"NGC2255","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"6h33m58.6s","赤经D(J2000)":"6.566277777777778","赤纬(J2000)":"-34h48m42s","赤纬D(J2000)":"-34.81166666666666","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"152","详细描述":"extremely faint, small, a little extended, very little brighter middle","简略描述":"eF, S, lE, vlbM"},{"ID":"2256","标识":"NGC2256","M标识":"NGC2256","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"6h47m14.2s","赤经D(J2000)":"6.787277777777778","赤纬(J2000)":"+74h14m13s","赤纬D(J2000)":"74.23694444444445","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.3","短轴(分)":"2","方位角":"72","详细描述":"","简略描述":"F, R, * 9.5 3' sf"},{"ID":"2257","标识":"NGC2257","M标识":"NGC2257","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"6h30m13s","赤经D(J2000)":"6.503611111111111","赤纬(J2000)":"-64h19m29s","赤纬D(J2000)":"-64.32472222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.2","短轴(分)":"","方位角":"","详细描述":"faint, considerably large, round, very gradually a little brighter middle, mottled but not resolved, 17.0 seconds of time diameter","简略描述":"F, cL, R, vglbM, r, 17s.0 d"},{"ID":"2258","标识":"NGC2258","M标识":"NGC2258","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"6h47m46.5s","赤经D(J2000)":"6.79625","赤纬(J2000)":"+74h28m53s","赤纬D(J2000)":"74.48138888888889","可见光星等V":"11.9","摄影(蓝光)星等B":"13","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.3","短轴(分)":"1.5","方位角":"150","详细描述":"","简略描述":"F, 2 st 10·11 f"},{"ID":"2259","标识":"NGC2259","M标识":"NGC2259","拓展名":"","组件":"","Class":"VI 28","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h38m33.3s","赤经D(J2000)":"6.642583333333333","赤纬(J2000)":"+10h52m57s","赤纬D(J2000)":"10.8825","可见光星等V":"10.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.5","短轴(分)":"","方位角":"","详细描述":"a cluster, considerably rich, extremely compressed, irregular figure, stars extremely small (faint)","简略描述":"Cl, cRi, eC, iF, st eS"},{"ID":"2260","标识":"NGC2260","M标识":"NGC2260","拓展名":"","组件":"","Class":"VIII 48","业余排名":"12","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h38m3s","赤经D(J2000)":"6.634166666666666","赤纬(J2000)":"-1h28m20s","赤纬D(J2000)":"-1.4722222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, poor, very little compressed, stars large and small","简略描述":"Cl, vL, P, vlC, st L & S"},{"ID":"2261","标识":"NGC2261","M标识":"NGC2261","拓展名":"","组件":"","Class":"IV 2","业余排名":"2","中文名":"哈勃变光星云","类型":"Nb","含重复类型":"Nb","形态":"EN+RN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h39m9.5s","赤经D(J2000)":"6.652638888888889","赤纬(J2000)":"+8h44m40s","赤纬D(J2000)":"8.744444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"1","方位角":"","详细描述":"","简略描述":"B, vmE 330°, N com = * 11"},{"ID":"2262","标识":"NGC2262","M标识":"NGC2262","拓展名":"","组件":"","Class":"VII 37","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h39m38.7s","赤经D(J2000)":"6.66075","赤纬(J2000)":"+1h8m30s","赤纬D(J2000)":"1.1416666666666666","可见光星等V":"11.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, very compressed, irregularly round, brighter middle, stars extremely small (faint)","简略描述":"Cl, vC, iR, bM, st eS"},{"ID":"2263","标识":"NGC2263","M标识":"NGC2263","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h38m28.8s","赤经D(J2000)":"6.641333333333333","赤纬(J2000)":"-24h50m55s","赤纬D(J2000)":"-24.84861111111111","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.6","短轴(分)":"2","方位角":"143","详细描述":"pretty faint, a little extended, between 2 very small (faint) stars, pretty suddenly a little brighter middle","简略描述":"pF, lE, bet 2 vS st, pslbM"},{"ID":"2264","标识":"NGC2264","M标识":"NGC2264","拓展名":"","组件":"","Class":"V 27, VIII 5","业余排名":"5","中文名":"圣诞树星团","类型":"OCL","含重复类型":"OCL","形态":"IV3pn","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h40m58.2s","赤经D(J2000)":"6.682833333333334","赤纬(J2000)":"+9h53m44s","赤纬D(J2000)":"9.895555555555555","可见光星等V":"4.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"40","短轴(分)":"","方位角":"","详细描述":"","简略描述":"15 Monoc, Cl, **, ? Neb"},{"ID":"2265","标识":"NGC2265","M标识":"NGC2265","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h41m41.6s","赤经D(J2000)":"6.694888888888889","赤纬(J2000)":"+11h54m19s","赤纬D(J2000)":"11.905277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, P, 30 or 40 st 12…13"},{"ID":"2266","标识":"NGC2266","M标识":"NGC2266","拓展名":"","组件":"","Class":"VI 21","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h43m19.2s","赤经D(J2000)":"6.722","赤纬(J2000)":"+26h58m10s","赤纬D(J2000)":"26.96944444444444","可见光星等V":"9.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty small, extremely compressed, rich, stars from 11th to 15th magnitude","简略描述":"Cl, pS, eC, Ri, st 11…15"},{"ID":"2267","标识":"NGC2267","M标识":"NGC2267","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h40m51.7s","赤经D(J2000)":"6.6810277777777785","赤纬(J2000)":"-32h28m56s","赤纬D(J2000)":"-32.48222222222223","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"120","详细描述":"","简略描述":"pB, S, R, 2 or 3 st v nr"},{"ID":"2268","标识":"NGC2268","M标识":"NGC2268","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"7h14m17.5s","赤经D(J2000)":"7.238194444444445","赤纬(J2000)":"+84h22m56s","赤纬D(J2000)":"84.38222222222221","可见光星等V":"11.5","摄影(蓝光)星等B":"12.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.7","短轴(分)":"1.5","方位角":"63","详细描述":"pretty faint, pretty large, a little extended","简略描述":"pF, pL, lE"},{"ID":"2269","标识":"NGC2269","M标识":"NGC2269","拓展名":"","组件":"","Class":"VI 3","业余排名":"6.5","中文名":"猎头星团","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h43m17s","赤经D(J2000)":"6.721388888888889","赤纬(J2000)":"+4h37m28s","赤纬D(J2000)":"4.624444444444445","可见光星等V":"10","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, very much compressed, not rich, stars very small","简略描述":"Cl, vmC, not Ri, st vS"},{"ID":"2270","标识":"NGC2270","M标识":"NGC2270","拓展名":"","组件":"","Class":"VII 36","业余排名":"15","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h43m57.7s","赤经D(J2000)":"6.732694444444444","赤纬(J2000)":"+3h28m45s","赤纬D(J2000)":"3.479166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, a little compressed, not rich","简略描述":"Cl, lC, not Ri"},{"ID":"2271","标识":"NGC2271","M标识":"NGC2271","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h42m52.9s","赤经D(J2000)":"6.7146944444444445","赤纬(J2000)":"-23h28m33s","赤纬D(J2000)":"-23.47583333333333","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.1","短轴(分)":"1.4","方位角":"71","详细描述":"pretty faint, small, round, gradually brighter middle, among stars","简略描述":"pF, S, R, gbM, am st"},{"ID":"2272","标识":"NGC2272","M标识":"NGC2272","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h42m41.2s","赤经D(J2000)":"6.711444444444445","赤纬(J2000)":"-27h27m35s","赤纬D(J2000)":"-27.459722222222222","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.4","短轴(分)":"1.6","方位角":"123","详细描述":"pretty faint, pretty small, very little extended, brighter middle, mottled but not resolved","简略描述":"pF, pS, vlE, bM, r"},{"ID":"2273","标识":"NGC2273","M标识":"NGC2273","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"6h50m8.4s","赤经D(J2000)":"6.835666666666667","赤纬(J2000)":"+60h50m45s","赤纬D(J2000)":"60.84583333333334","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3.6","短轴(分)":"2","方位角":"50","详细描述":"faint, small, irregularly round, mottled but not resolved?","简略描述":"F, S, iR, r?"},{"ID":"2274","标识":"NGC2274","M标识":"NGC2274","拓展名":"","组件":"","Class":"II 614","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h47m17.4s","赤经D(J2000)":"6.788166666666666","赤纬(J2000)":"+33h34m3s","赤纬D(J2000)":"33.5675","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"169","详细描述":"faint, small, brighter middle","简略描述":"F, S, bM"},{"ID":"2275","标识":"NGC2275","M标识":"NGC2275","拓展名":"","组件":"","Class":"II 615","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h47m17.9s","赤经D(J2000)":"6.788305555555556","赤纬(J2000)":"+33h35m57s","赤纬D(J2000)":"33.59916666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"157","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"2276","标识":"NGC2276","M标识":"NGC2276","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"7h27m13.6s","赤经D(J2000)":"7.453777777777778","赤纬(J2000)":"+85h45m18s","赤纬D(J2000)":"85.755","可见光星等V":"11.4","摄影(蓝光)星等B":"11.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.3","短轴(分)":"1.9","方位角":"20","详细描述":"","简略描述":"F, 60\", lbM"},{"ID":"2277","标识":"NGC2277","M标识":"NGC2277","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h47m47s","赤经D(J2000)":"6.796388888888889","赤纬(J2000)":"+33h27m17s","赤纬D(J2000)":"33.45472222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"13.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"cluster, very small, a little rich","简略描述":"Cl, vS, lRi"},{"ID":"2278","标识":"NGC2278","M标识":"NGC2278","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h48m16.3s","赤经D(J2000)":"6.8045277777777775","赤纬(J2000)":"+33h23m43s","赤纬D(J2000)":"33.39527777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"2279","标识":"NGC2279","M标识":"NGC2279","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h48m24.7s","赤经D(J2000)":"6.806861111111111","赤纬(J2000)":"+33h24m52s","赤纬D(J2000)":"33.41444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, stellar nucleus","简略描述":"vF, vS, stellar Nucl"},{"ID":"2280","标识":"NGC2280","M标识":"NGC2280","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h44m48.9s","赤经D(J2000)":"6.7469166666666665","赤纬(J2000)":"-27h38m20s","赤纬D(J2000)":"-27.63888888888889","可见光星等V":"10.3","摄影(蓝光)星等B":"10.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"6.3","短轴(分)":"3","方位角":"163","详细描述":"pretty faint, pretty large, a little extended, gradually brighter middle","简略描述":"pF, pL, lE, gbM"},{"ID":"2281","标识":"NGC2281","M标识":"NGC2281","拓展名":"","组件":"","Class":"VIII 71","业余排名":"5","中文名":"碎心星团","类型":"OCL","含重复类型":"OCL","形态":"I3p","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"6h48m17.8s","赤经D(J2000)":"6.804944444444445","赤纬(J2000)":"+41h4m44s","赤纬D(J2000)":"41.07888888888889","可见光星等V":"5.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"","方位角":"","详细描述":"cluster, pretty rich, very little compressed, stars pretty large","简略描述":"Cl, pRi, vlC, st pL"},{"ID":"2282","标识":"NGC2282","M标识":"NGC2282","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h46m51.2s","赤经D(J2000)":"6.780888888888889","赤纬(J2000)":"+1h18m54s","赤纬D(J2000)":"1.315","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"3","方位角":"","详细描述":"10th magnitude star in faint, round nebulosity","简略描述":"* 10 in F, R neby"},{"ID":"2283","标识":"NGC2283","M标识":"NGC2283","拓展名":"","组件":"","Class":"III 271","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h45m52.6s","赤经D(J2000)":"6.764611111111111","赤纬(J2000)":"-18h12m37s","赤纬D(J2000)":"-18.210277777777776","可见光星等V":"11.5","摄影(蓝光)星等B":"12.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3.6","短轴(分)":"2.7","方位角":"2","详细描述":"","简略描述":"3 or 4 S st + neb"},{"ID":"2284","标识":"NGC2284","M标识":"NGC2284","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h49m9.5s","赤经D(J2000)":"6.819305555555555","赤纬(J2000)":"+33h11m40s","赤纬D(J2000)":"33.19444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, mottled but not resolved","简略描述":"F, r"},{"ID":"2285","标识":"NGC2285","M标识":"NGC2285","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h49m36s","赤经D(J2000)":"6.826666666666666","赤纬(J2000)":"+33h21m54s","赤纬D(J2000)":"33.365","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, mottled but not resolved?","简略描述":"eF, eS, r ?"},{"ID":"2286","标识":"NGC2286","M标识":"NGC2286","拓展名":"","组件":"","Class":"VIII 31","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV3m","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h47m40.1s","赤经D(J2000)":"6.794472222222222","赤纬(J2000)":"-3h8m52s","赤纬D(J2000)":"-3.147777777777778","可见光星等V":"7.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, L, C, ab 100 st 9…15"},{"ID":"2287","标识":"NGC2287","M标识":"M41","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"小蜂巢星团","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h46m0s","赤经D(J2000)":"6.766666666666667","赤纬(J2000)":"-20h45m24s","赤纬D(J2000)":"-20.756666666666668","可见光星等V":"4.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"39","短轴(分)":"","方位角":"","详细描述":"cluster, very large, bright, a little compressed, stars from 8th magnitude","简略描述":"Cl, vL, B, lC, st 8…"},{"ID":"2288","标识":"NGC2288","M标识":"NGC2288","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h50m51.9s","赤经D(J2000)":"6.84775","赤纬(J2000)":"+33h27m45s","赤纬D(J2000)":"33.462500000000006","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"93","详细描述":"","简略描述":"cF, S, R, (β of Lord R's diag)"},{"ID":"2289","标识":"NGC2289","M标识":"NGC2289","拓展名":"","组件":"","Class":"III 897","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h50m53.5s","赤经D(J2000)":"6.848194444444444","赤纬(J2000)":"+33h28m44s","赤纬D(J2000)":"33.47888888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"14.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"92","详细描述":"","简略描述":"eF, vS, (= γ)"},{"ID":"2290","标识":"NGC2290","M标识":"NGC2290","拓展名":"","组件":"","Class":"III 898","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h50m56.9s","赤经D(J2000)":"6.849138888888889","赤纬(J2000)":"+33h26m15s","赤纬D(J2000)":"33.4375","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"50","详细描述":"","简略描述":"F, S, gbM (= α)"},{"ID":"2291","标识":"NGC2291","M标识":"NGC2291","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h50m58.6s","赤经D(J2000)":"6.849611111111111","赤纬(J2000)":"+33h31m30s","赤纬D(J2000)":"33.525","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.8","方位角":"126","详细描述":"","简略描述":"eF, vS, (= δ)"},{"ID":"2292","标识":"NGC2292","M标识":"NGC2292","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h47m39.4s","赤经D(J2000)":"6.794277777777777","赤纬(J2000)":"-26h44m47s","赤纬D(J2000)":"-26.74638888888889","可见光星等V":"11","摄影(蓝光)星等B":"12","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"4","短轴(分)":"3.5","方位角":"124","详细描述":"extremely faint, round, gradually brighter middle, double nebula, among stars","简略描述":"eF, R, gbM, D neb, am st"},{"ID":"2293","标识":"NGC2293","M标识":"NGC2293","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h47m42.8s","赤经D(J2000)":"6.795222222222222","赤纬(J2000)":"-26h45m17s","赤纬D(J2000)":"-26.754722222222224","可见光星等V":"11.2","摄影(蓝光)星等B":"12.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"4","短轴(分)":"3.2","方位角":"125","详细描述":"pretty bright, round, gradually brighter middle, double nebula, among stars","简略描述":"pB, R, gbM, D neb, am st"},{"ID":"2294","标识":"NGC2294","M标识":"NGC2294","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h51m11.3s","赤经D(J2000)":"6.853138888888888","赤纬(J2000)":"+33h31m38s","赤纬D(J2000)":"33.52722222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"6","详细描述":"","简略描述":"eeF, (ε of Lord R's diag)"},{"ID":"2295","标识":"NGC2295","M标识":"NGC2295","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h47m23.2s","赤经D(J2000)":"6.789777777777777","赤纬(J2000)":"-26h44m10s","赤纬D(J2000)":"-26.73611111111111","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.1","短轴(分)":"0.6","方位角":"46","详细描述":"","简略描述":"eF, S, R, bet st, D neb p"},{"ID":"2296","标识":"NGC2296","M标识":"NGC2296","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h48m39s","赤经D(J2000)":"6.810833333333333","赤纬(J2000)":"-16h54m4s","赤纬D(J2000)":"-16.90111111111111","可见光星等V":"99","摄影(蓝光)星等B":"13","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"2.4","方位角":"175","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"2297","标识":"NGC2297","M标识":"NGC2297","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"6h44m24.5s","赤经D(J2000)":"6.740138888888889","赤纬(J2000)":"-63h43m3s","赤纬D(J2000)":"-63.7175","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"101","详细描述":"very faint, small, round, very gradually a little brighter middle","简略描述":"vF, S, R, vglbM"},{"ID":"2298","标识":"NGC2298","M标识":"NGC2298","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VI","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"6h48m59.2s","赤经D(J2000)":"6.8164444444444445","赤纬(J2000)":"-36h0m17s","赤纬D(J2000)":"-36.00472222222222","可见光星等V":"9.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, pretty large, irregularly round, gradually brighter middle, partially resolved (some stars seen)","简略描述":"globular, B, pL, iR, gbM, rr"},{"ID":"2299","标识":"NGC2299","M标识":"NGC2299","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"II2p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h51m56.6s","赤经D(J2000)":"6.865722222222222","赤纬(J2000)":"-7h5m4s","赤纬D(J2000)":"-7.084444444444444","可见光星等V":"8.9","摄影(蓝光)星等B":"9.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.5","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl of 30 or 40 st"},{"ID":"2300","标识":"NGC2300","M标识":"NGC2300","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"7h32m20.3s","赤经D(J2000)":"7.538972222222222","赤纬(J2000)":"+85h42m33s","赤纬D(J2000)":"85.70916666666668","可见光星等V":"11","摄影(蓝光)星等B":"12.1","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.8","短轴(分)":"2","方位角":"78","详细描述":"pretty bright, pretty large, a little extended, brighter middle","简略描述":"pB, pL, lE, bM"},{"ID":"2301","标识":"NGC2301","M标识":"NGC2301","拓展名":"","组件":"","Class":"VI 27","业余排名":"5","中文名":"海格的龙星团","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h51m45.2s","赤经D(J2000)":"6.862555555555555","赤纬(J2000)":"+0h27m33s","赤纬D(J2000)":"0.45916666666666667","可见光星等V":"6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, rich, large, irregular figure, stars large and small","简略描述":"Cl, Ri, L, iF, st L & S"},{"ID":"2302","标识":"NGC2302","M标识":"NGC2302","拓展名":"","组件":"","Class":"VIII 39","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h51m56.6s","赤经D(J2000)":"6.865722222222222","赤纬(J2000)":"-7h5m4s","赤纬D(J2000)":"-7.084444444444444","可见光星等V":"8.9","摄影(蓝光)星等B":"9.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.5","短轴(分)":"","方位角":"","详细描述":"a cluster, large, poor, a little compressed","简略描述":"Cl, L, P, lC"},{"ID":"2303","标识":"NGC2303","M标识":"NGC2303","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"6h56m17.4s","赤经D(J2000)":"6.938166666666667","赤纬(J2000)":"+45h29m36s","赤纬D(J2000)":"45.49333333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"extremely faint, very small, round, several stars near","简略描述":"eF, vS, R, sev st nr"},{"ID":"2304","标识":"NGC2304","M标识":"NGC2304","拓展名":"","组件":"","Class":"VI 2","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h55m11.8s","赤经D(J2000)":"6.919944444444445","赤纬(J2000)":"+17h59m19s","赤纬D(J2000)":"17.988611111111112","可见光星等V":"10","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, rich, much compressed, stars very small","简略描述":"Cl, pL, Ri, mC, st vS"},{"ID":"2305","标识":"NGC2305","M标识":"NGC2305","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2\/P","星座(Zh)":"飞鱼座","星座(En)":"VOL","赤经(J2000)":"6h48m37.3s","赤经D(J2000)":"6.810361111111111","赤纬(J2000)":"-64h16m22s","赤纬D(J2000)":"-64.27277777777778","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.1","短轴(分)":"1.5","方位角":"142","详细描述":"very faint, very small, round, making a triangle with 2 stars","简略描述":"vF, vS, R, 2 st Δ"},{"ID":"2306","标识":"NGC2306","M标识":"NGC2306","拓展名":"","组件":"","Class":"VIII 51","业余排名":"15","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h54m29.5s","赤经D(J2000)":"6.908194444444445","赤纬(J2000)":"-7h11m55s","赤纬D(J2000)":"-7.198611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, very little compressed","简略描述":"Cl, P, vlC"},{"ID":"2307","标识":"NGC2307","M标识":"NGC2307","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"飞鱼座","星座(En)":"VOL","赤经(J2000)":"6h48m51s","赤经D(J2000)":"6.814166666666667","赤纬(J2000)":"-64h20m6s","赤纬D(J2000)":"-64.335","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"145","详细描述":"very faint, pretty small, very little extended 90°","简略描述":"vF, pS, vlE 90°"},{"ID":"2308","标识":"NGC2308","M标识":"NGC2308","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"6h58m37.5s","赤经D(J2000)":"6.977083333333334","赤纬(J2000)":"+45h12m40s","赤纬D(J2000)":"45.211111111111116","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"170","详细描述":"extremely faint, very small, very faint star involved","简略描述":"eF, vS, vF * inv"},{"ID":"2309","标识":"NGC2309","M标识":"NGC2309","拓展名":"","组件":"","Class":"VI 18","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h56m3.6s","赤经D(J2000)":"6.934333333333334","赤纬(J2000)":"-7h10m28s","赤纬D(J2000)":"-7.174444444444445","可见光星等V":"10.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, much compressed, stars of 13th magnitude","简略描述":"Cl, pL, pRi, mC, st 13"},{"ID":"2310","标识":"NGC2310","M标识":"NGC2310","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"6h53m53.8s","赤经D(J2000)":"6.8982777777777775","赤纬(J2000)":"-40h51m49s","赤纬D(J2000)":"-40.86361111111111","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"4.3","短轴(分)":"0.8","方位角":"47","详细描述":"pretty bright, pretty large, very much extended 45°, pretty suddenly a little brighter middle","简略描述":"pB, pL, vmE 45°, pslbM"},{"ID":"2311","标识":"NGC2311","M标识":"NGC2311","拓展名":"","组件":"","Class":"VIII 60","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h57m47.5s","赤经D(J2000)":"6.9631944444444445","赤纬(J2000)":"-4h36m41s","赤纬D(J2000)":"-4.6113888888888885","可见光星等V":"9.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, a little compressed, not rich","简略描述":"Cl, lC, not Ri"},{"ID":"2312","标识":"NGC2312","M标识":"NGC2312","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h58m47s","赤经D(J2000)":"6.979722222222223","赤纬(J2000)":"+10h17m44s","赤纬D(J2000)":"10.295555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"2.5","方位角":"","详细描述":"a cluster, poor","简略描述":"Cl, P"},{"ID":"2313","标识":"NGC2313","M标识":"NGC2313","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h58m2.8s","赤经D(J2000)":"6.967444444444444","赤纬(J2000)":"-7h56m42s","赤纬D(J2000)":"-7.945","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"2314","标识":"NGC2314","M标识":"NGC2314","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"7h10m31.8s","赤经D(J2000)":"7.1755","赤纬(J2000)":"+75h19m40s","赤纬D(J2000)":"75.32777777777777","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"25","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"2315","标识":"NGC2315","M标识":"NGC2315","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h2m33s","赤经D(J2000)":"7.0424999999999995","赤纬(J2000)":"+50h35m27s","赤纬D(J2000)":"50.590833333333336","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"116","详细描述":"extremely faint","简略描述":"eF"},{"ID":"2316","标识":"NGC2316","M标识":"NGC2316","拓展名":"","组件":"","Class":"II 304","业余排名":"6.5","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN+EN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h59m40.8s","赤经D(J2000)":"6.994666666666666","赤纬(J2000)":"-7h46m38s","赤纬D(J2000)":"-7.777222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"3","方位角":"","详细描述":"a remarkable object, a cluster, very large, rich, pretty compressed, extended, stars from 12th to 16th magnitude","简略描述":"pF, S, R, r, S st inv"},{"ID":"2317","标识":"NGC2317","M标识":"NGC2317","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Nb","含重复类型":"Dup","形态":"RN+EN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h59m40.8s","赤经D(J2000)":"6.994666666666666","赤纬(J2000)":"-7h46m38s","赤纬D(J2000)":"-7.777222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"3","方位角":"","详细描述":"","简略描述":"Makes a close D neb with h 421"},{"ID":"2318","标识":"NGC2318","M标识":"NGC2318","拓展名":"","组件":"","Class":"VII 14","业余排名":"12","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h59m27s","赤经D(J2000)":"6.990833333333334","赤纬(J2000)":"-13h41m52s","赤纬D(J2000)":"-13.697777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, L, sc, st 8…9"},{"ID":"2319","标识":"NGC2319","M标识":"NGC2319","拓展名":"","组件":"","Class":"VIII 1B","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h0m32.2s","赤经D(J2000)":"7.008944444444444","赤纬(J2000)":"+3h2m34s","赤纬D(J2000)":"3.042777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"16","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl of v sc st, st 8, 9…"},{"ID":"2320","标识":"NGC2320","M标识":"NGC2320","拓展名":"","组件":"","Class":"II 861","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h5m41.9s","赤经D(J2000)":"7.094972222222222","赤纬(J2000)":"+50h34m51s","赤纬D(J2000)":"50.58083333333334","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"140","详细描述":"","简略描述":"pB, S, iR, gbM, * 8, 120°"},{"ID":"2321","标识":"NGC2321","M标识":"NGC2321","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h5m58.9s","赤经D(J2000)":"7.099694444444444","赤纬(J2000)":"+50h45m24s","赤纬D(J2000)":"50.75666666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"135","详细描述":"","简略描述":"vF, 12' n of h 424"},{"ID":"2322","标识":"NGC2322","M标识":"NGC2322","拓展名":"","组件":"","Class":"III 874","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h6m0.3s","赤经D(J2000)":"7.100083333333333","赤纬(J2000)":"+50h30m38s","赤纬D(J2000)":"50.510555555555555","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"136","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"2323","标识":"NGC2323","M标识":"M50","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"心状星团","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h2m47.8s","赤经D(J2000)":"7.046611111111111","赤纬(J2000)":"-8h22m33s","赤纬D(J2000)":"-8.375833333333334","可见光星等V":"5.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a cluster, very large, rich, pretty compressed, extended, stars from 12th to 16th magnitude","简略描述":"! Cl, vL, Ri, pC, E, st 12…16"},{"ID":"2324","标识":"NGC2324","M标识":"NGC2324","拓展名":"","组件":"","Class":"VII 38","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2r","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h4m7.9s","赤经D(J2000)":"7.068861111111111","赤纬(J2000)":"+1h2m41s","赤纬D(J2000)":"1.0447222222222223","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a cluster, large, rich, considerably compressed, stars from 12th to 16th magnitude","简略描述":"Cl, L, Ri, cC, st 12…16"},{"ID":"2325","标识":"NGC2325","M标识":"NGC2325","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h2m40.2s","赤经D(J2000)":"7.0445","赤纬(J2000)":"-28h41m52s","赤纬D(J2000)":"-28.697777777777777","可见光星等V":"11.3","摄影(蓝光)星等B":"12.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3","短轴(分)":"1.5","方位角":"6","详细描述":"pretty bright, pretty large, a little extended, gradually brighter middle","简略描述":"pB, pL, lE, gbM"},{"ID":"2326","标识":"NGC2326","M标识":"NGC2326","拓展名":"","组件":"","Class":"II 734","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h8m10.9s","赤经D(J2000)":"7.136361111111111","赤纬(J2000)":"+50h40m56s","赤纬D(J2000)":"50.68222222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.9","短轴(分)":"1.8","方位角":"120","详细描述":"","简略描述":"vF, pL, iR, psmbM, st p"},{"ID":"2327","标识":"NGC2327","M标识":"NGC2327","拓展名":"","组件":"","Class":"IV 25","业余排名":"7","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h4m7.2s","赤经D(J2000)":"7.068666666666666","赤纬(J2000)":"-11h18m51s","赤纬D(J2000)":"-11.314166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"","简略描述":"pB ** inv in S, vF, neb"},{"ID":"2328","标识":"NGC2328","M标识":"NGC2328","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h2m36.1s","赤经D(J2000)":"7.043361111111111","赤纬(J2000)":"-42h4m5s","赤纬D(J2000)":"-42.06805555555556","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"115","详细描述":"very faint, small, very little extended, brighter middle, among stars","简略描述":"vF, S, vlE, bM, am st"},{"ID":"2329","标识":"NGC2329","M标识":"NGC2329","拓展名":"","组件":"","Class":"II 735","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h9m7.9s","赤经D(J2000)":"7.1521944444444445","赤纬(J2000)":"+48h36m57s","赤纬D(J2000)":"48.615833333333335","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"175","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"2330","标识":"NGC2330","M标识":"NGC2330","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h9m28.3s","赤经D(J2000)":"7.157861111111112","赤纬(J2000)":"+50h9m11s","赤纬D(J2000)":"50.153055555555554","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"30","详细描述":"Not seen by Kobold (with the 18-inch refractor at Strassburg), who observed eleven nebulae about this place","简略描述":"vF, vS, v stellar"},{"ID":"2331","标识":"NGC2331","M标识":"NGC2331","拓展名":"","组件":"","Class":"VIII 40","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV1p","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h6m59.8s","赤经D(J2000)":"7.11661111111111","赤纬(J2000)":"+27h15m42s","赤纬D(J2000)":"27.261666666666667","可见光星等V":"8.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"19","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, L, vlC, S Cl inv"},{"ID":"2332","标识":"NGC2332","M标识":"NGC2332","拓展名":"","组件":"","Class":"II 862","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h9m33.8s","赤经D(J2000)":"7.1593888888888895","赤纬(J2000)":"+50h10m55s","赤纬D(J2000)":"50.18194444444444","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"1","方位角":"60","详细描述":"faint, small, round, pretty suddenly brighter middle","简略描述":"F, S, R, psbM"},{"ID":"2333","标识":"NGC2333","M标识":"NGC2333","拓展名":"","组件":"","Class":"III 899","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h8m21.2s","赤经D(J2000)":"7.139222222222223","赤纬(J2000)":"+35h10m12s","赤纬D(J2000)":"35.169999999999995","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"35","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"2334","标识":"NGC2334","M标识":"NGC2334","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h11m33.6s","赤经D(J2000)":"7.192666666666667","赤纬(J2000)":"+50h14m56s","赤纬D(J2000)":"50.24888888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"80","详细描述":"Not seen by Kobold (with the 18-inch refractor at Strassburg), who observed eleven nebulae about this place","简略描述":"vF, bet 2 st 12"},{"ID":"2335","标识":"NGC2335","M标识":"NGC2335","拓展名":"","组件":"","Class":"VIII 32","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III3m","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h6m49.4s","赤经D(J2000)":"7.113722222222222","赤纬(J2000)":"-10h1m43s","赤纬D(J2000)":"-10.028611111111111","可见光星等V":"7.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, large, a little compressed","简略描述":"Cl, L, lC"},{"ID":"2336","标识":"NGC2336","M标识":"NGC2336","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"7h27m3.6s","赤经D(J2000)":"7.4510000000000005","赤纬(J2000)":"+80h10m40s","赤纬D(J2000)":"80.17777777777778","可见光星等V":"10.4","摄影(蓝光)星等B":"11.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"7.1","短轴(分)":"3.9","方位角":"178","详细描述":"pretty bright, pretty large, round, 2 stars of 11th magnitude near","简略描述":"pB, pL, R, 2 st 11 nr"},{"ID":"2337","标识":"NGC2337","M标识":"NGC2337","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h10m13.6s","赤经D(J2000)":"7.170444444444445","赤纬(J2000)":"+44h27m25s","赤纬D(J2000)":"44.456944444444446","可见光星等V":"12.4","摄影(蓝光)星等B":"13","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.1","短轴(分)":"1.4","方位角":"120","详细描述":"extremely faint, small, extended","简略描述":"eF, S, E"},{"ID":"2338","标识":"NGC2338","M标识":"NGC2338","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h7m43s","赤经D(J2000)":"7.128611111111111","赤纬(J2000)":"-5h43m0s","赤纬D(J2000)":"-5.716666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, very little compressed","简略描述":"Cl, vlC"},{"ID":"2339","标识":"NGC2339","M标识":"NGC2339","拓展名":"","组件":"","Class":"II 769","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h8m20.3s","赤经D(J2000)":"7.138972222222223","赤纬(J2000)":"+18h46m46s","赤纬D(J2000)":"18.779444444444444","可见光星等V":"11.8","摄影(蓝光)星等B":"12.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.7","短轴(分)":"2","方位角":"175","详细描述":"pretty bright, pretty large, round, gradually a little brighter middle","简略描述":"pB, pL, R, glbM"},{"ID":"2340","标识":"NGC2340","M标识":"NGC2340","拓展名":"","组件":"","Class":"II 736","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h11m10.7s","赤经D(J2000)":"7.186305555555556","赤纬(J2000)":"+50h10m29s","赤纬D(J2000)":"50.17472222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"84","详细描述":"pretty faint, small, round, gradually a little brighter middle, mottled but not resolved","简略描述":"pF, S, R, glbM, r"},{"ID":"2341","标识":"NGC2341","M标识":"NGC2341","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc\/P","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h9m12s","赤经D(J2000)":"7.153333333333333","赤纬(J2000)":"+20h36m12s","赤纬D(J2000)":"20.603333333333335","可见光星等V":"13.2","摄影(蓝光)星等B":"13.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"2342","标识":"NGC2342","M标识":"NGC2342","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h9m18.1s","赤经D(J2000)":"7.155027777777778","赤纬(J2000)":"+20h38m13s","赤纬D(J2000)":"20.636944444444445","可见光星等V":"12.6","摄影(蓝光)星等B":"13.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"126","详细描述":"pretty faint, small, a little extended, very little brighter middle","简略描述":"pF, S, lE, vlbM"},{"ID":"2343","标识":"NGC2343","M标识":"NGC2343","拓展名":"","组件":"","Class":"VIII 33","业余排名":"6","中文名":"箭头星团","类型":"OCL","含重复类型":"OCL","形态":"III3p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h8m6.7s","赤经D(J2000)":"7.135194444444445","赤纬(J2000)":"-10h37m0s","赤纬D(J2000)":"-10.616666666666667","可见光星等V":"6.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, considerably large, poor, a little compressed","简略描述":"Cl, cL, P, lC"},{"ID":"2344","标识":"NGC2344","M标识":"NGC2344","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h12m28.6s","赤经D(J2000)":"7.207944444444444","赤纬(J2000)":"+47h10m2s","赤纬D(J2000)":"47.16722222222222","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"165","详细描述":"pretty bright, pretty small, round, a little brighter middle","简略描述":"pB, pS, R, lbM"},{"ID":"2345","标识":"NGC2345","M标识":"NGC2345","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h8m18.7s","赤经D(J2000)":"7.138527777777778","赤纬(J2000)":"-13h11m37s","赤纬D(J2000)":"-13.193611111111112","可见光星等V":"7.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, gradually brighter middle, stars from 10th to 14th magnitude","简略描述":"Cl, pL, pRi, gbM, st 10…14"},{"ID":"2346","标识":"NGC2346","M标识":"NGC2346","拓展名":"","组件":"","Class":"IV 65","业余排名":"6.5","中文名":"蝴蝶星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h9m22.5s","赤经D(J2000)":"7.15625","赤纬(J2000)":"-0h48m22s","赤纬D(J2000)":"-0.8061111111111111","可见光星等V":"11.6","摄影(蓝光)星等B":"11.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.87","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* 10 nff with S, vF, neb"},{"ID":"2347","标识":"NGC2347","M标识":"NGC2347","拓展名":"","组件":"","Class":"III 746","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"7h16m4s","赤经D(J2000)":"7.267777777777778","赤纬(J2000)":"+64h42m41s","赤纬D(J2000)":"64.71138888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"4","详细描述":"very faint, small, round, a little brighter middle","简略描述":"vF, S, R, lbM"},{"ID":"2348","标识":"NGC2348","M标识":"NGC2348","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"飞鱼座","星座(En)":"VOL","赤经(J2000)":"7h3m2.7s","赤经D(J2000)":"7.05075","赤纬(J2000)":"-67h23m39s","赤纬D(J2000)":"-67.39416666666668","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"11","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, P, lC, 30 st ±"},{"ID":"2349","标识":"NGC2349","M标识":"NGC2349","拓展名":"","组件":"","Class":"VII 27","业余排名":"15","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h10m48.1s","赤经D(J2000)":"7.180027777777778","赤纬(J2000)":"-8h35m34s","赤纬D(J2000)":"-8.592777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"cluster, considerably large, poor, considerably compressed","简略描述":"Cl, cL, P, cC"},{"ID":"2350","标识":"NGC2350","M标识":"NGC2350","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h13m12.1s","赤经D(J2000)":"7.220027777777778","赤纬(J2000)":"+12h15m59s","赤纬D(J2000)":"12.266388888888889","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"110","详细描述":"extremely faint, extremely small, irregularly round","简略描述":"eF, eS, iR"},{"ID":"2351","标识":"NGC2351","M标识":"NGC2351","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h13m30s","赤经D(J2000)":"7.2250000000000005","赤纬(J2000)":"-10h28m58s","赤纬D(J2000)":"-10.482777777777779","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, a little compressed, double star taken","简略描述":"Cl, lC, ** taken"},{"ID":"2352","标识":"NGC2352","M标识":"NGC2352","拓展名":"","组件":"","Class":"VII 15","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h13m5.7s","赤经D(J2000)":"7.21825","赤纬(J2000)":"-24h2m20s","赤纬D(J2000)":"-24.03888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, pretty compressed","简略描述":"Cl, pRi, pC"},{"ID":"2353","标识":"NGC2353","M标识":"NGC2353","拓展名":"","组件":"","Class":"VIII 34","业余排名":"6","中文名":"艾弗里岛星团","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h14m30.3s","赤经D(J2000)":"7.24175","赤纬(J2000)":"-10h15m57s","赤纬D(J2000)":"-10.265833333333333","可见光星等V":"7.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"18","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, L, lC, one vB *"},{"ID":"2354","标识":"NGC2354","M标识":"NGC2354","拓展名":"","组件":"","Class":"VII 16","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h14m10s","赤经D(J2000)":"7.236111111111112","赤纬(J2000)":"-25h41m24s","赤纬D(J2000)":"-25.69","可见光星等V":"6.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"18","短轴(分)":"","方位角":"","详细描述":"a cluster, considerably rich, a little compressed","简略描述":"Cl, cRi, lC"},{"ID":"2355","标识":"NGC2355","M标识":"NGC2355","拓展名":"","组件":"","Class":"VI 6","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h16m59.2s","赤经D(J2000)":"7.283111111111111","赤纬(J2000)":"+13h45m0s","赤纬D(J2000)":"13.75","可见光星等V":"9.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"cluster, pretty large, rich (including 30 Canis Majoris)","简略描述":"Cl, pS, pRi, mC, st 15…16"},{"ID":"2356","标识":"NGC2356","M标识":"NGC2356","拓展名":"","组件":"","Class":"VII 6","业余排名":"15","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"II2p","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h16m59.2s","赤经D(J2000)":"7.283111111111111","赤纬(J2000)":"+13h45m0s","赤纬D(J2000)":"13.75","可见光星等V":"9.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a cluster, a little compressed","简略描述":"Cl, lC"},{"ID":"2357","标识":"NGC2357","M标识":"NGC2357","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h17m40.9s","赤经D(J2000)":"7.294694444444445","赤纬(J2000)":"+23h21m23s","赤纬D(J2000)":"23.35638888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3.6","短轴(分)":"0.5","方位角":"122","详细描述":"extremely faint, large, much extended, brighter middle, faint star involved","简略描述":"eF, L, mE, bM, F st inv"},{"ID":"2358","标识":"NGC2358","M标识":"NGC2358","拓展名":"","组件":"","Class":"VIII 45","业余排名":"15","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h16m56.3s","赤经D(J2000)":"7.282305555555555","赤纬(J2000)":"-17h7m0s","赤纬D(J2000)":"-17.116666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed","简略描述":"Cl, P, lC"},{"ID":"2359","标识":"NGC2359","M标识":"NGC2359","拓展名":"","组件":"","Class":"V 21","业余排名":"6.5","中文名":"雷神的头盔","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h18m30s","赤经D(J2000)":"7.308333333333334","赤纬(J2000)":"-13h15m50s","赤纬D(J2000)":"-13.26388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"4","方位角":"","详细描述":"cluster, pretty large, rich (including 30 Canis Majoris)","简略描述":"!!, vF, vvL, viF"},{"ID":"2360","标识":"NGC2360","M标识":"NGC2360","拓展名":"","组件":"","Class":"VII 12","业余排名":"2","中文名":"卡罗琳星团","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h17m43.1s","赤经D(J2000)":"7.295305555555555","赤纬(J2000)":"-15h38m29s","赤纬D(J2000)":"-15.641388888888889","可见光星等V":"7.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"14","短轴(分)":"","方位角":"","详细描述":"cluster, very large, rich, pretty compressed, stars from 9th to 12th magnitude","简略描述":"Cl, vL, Ri, pC, st 9…12"},{"ID":"2361","标识":"NGC2361","M标识":"NGC2361","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h18m23.7s","赤经D(J2000)":"7.306583333333333","赤纬(J2000)":"-13h12m32s","赤纬D(J2000)":"-13.208888888888888","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very very faint, very small","简略描述":"vvF, vS"},{"ID":"2362","标识":"NGC2362","M标识":"NGC2362","拓展名":"","组件":"","Class":"VII 17","业余排名":"2","中文名":"弧矢增六星团","类型":"OCL","含重复类型":"OCL","形态":"I3p","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h18m41.4s","赤经D(J2000)":"7.3115","赤纬(J2000)":"-24h57m15s","赤纬D(J2000)":"-24.954166666666666","可见光星等V":"3.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"cluster, pretty large, rich (including 30 Canis Majoris)","简略描述":"Cl, pL, Ri (30 Can maj)"},{"ID":"2363","标识":"NGC2363","M标识":"NGC2363","拓展名":"","组件":"","Class":"III 748","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"7h28m29.9s","赤经D(J2000)":"7.474972222222222","赤纬(J2000)":"+69h11m34s","赤纬D(J2000)":"69.19277777777778","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1","方位角":"20","详细描述":"","简略描述":"Neb * or vF, vS, III 748 sf"},{"ID":"2364","标识":"NGC2364","M标识":"NGC2364","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h20m46.4s","赤经D(J2000)":"7.346222222222222","赤纬(J2000)":"-7h32m58s","赤纬D(J2000)":"-7.549444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty compressed, stars pretty large (bright), bifid","简略描述":"Cl, pC, st pL, bifid"},{"ID":"2365","标识":"NGC2365","M标识":"NGC2365","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h22m22.3s","赤经D(J2000)":"7.372861111111111","赤纬(J2000)":"+22h5m0s","赤纬D(J2000)":"22.083333333333332","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.8","短轴(分)":"1.4","方位角":"170","详细描述":"very faint, pretty small, round, pretty suddenly brighter middle","简略描述":"vF, pS, R, psbM"},{"ID":"2366","标识":"NGC2366","M标识":"NGC2366","拓展名":"","组件":"","Class":"III 748","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"7h28m54.8s","赤经D(J2000)":"7.481888888888889","赤纬(J2000)":"+69h12m58s","赤纬D(J2000)":"69.21611111111112","可见光星等V":"11.1","摄影(蓝光)星等B":"11.5","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"8.1","短轴(分)":"3","方位角":"25","详细描述":"","简略描述":"vF, pL, mbM, vS * inv, curved tails"},{"ID":"2367","标识":"NGC2367","M标识":"NGC2367","拓展名":"","组件":"","Class":"VIII 27","业余排名":"6.5","中文名":"查理·布朗的圣诞树","类型":"OCL","含重复类型":"OCL","形态":"IV3p","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h20m6s","赤经D(J2000)":"7.335","赤纬(J2000)":"-21h52m54s","赤纬D(J2000)":"-21.881666666666668","可见光星等V":"7.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, small, poor, a little compressed","简略描述":"Cl, S, P, lC"},{"ID":"2368","标识":"NGC2368","M标识":"NGC2368","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV2p","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h21m2.2s","赤经D(J2000)":"7.35061111111111","赤纬(J2000)":"-10h22m28s","赤纬D(J2000)":"-10.374444444444444","可见光星等V":"11.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, small, pretty rich, stars of 15th magnitude","简略描述":"Cl, S, pRi, st 15"},{"ID":"2369","标识":"NGC2369","M标识":"NGC2369","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"7h16m37.7s","赤经D(J2000)":"7.277138888888889","赤纬(J2000)":"-62h20m38s","赤纬D(J2000)":"-62.34388888888889","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.5","短轴(分)":"1.1","方位角":"177","详细描述":"pretty bright, pretty large, irregularly extended, gradually a little brighter middle","简略描述":"pB, pL, iE, glbM"},{"ID":"2370","标识":"NGC2370","M标识":"NGC2370","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h25m1.5s","赤经D(J2000)":"7.417083333333333","赤纬(J2000)":"+23h47m1s","赤纬D(J2000)":"23.783611111111114","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"43","详细描述":"extremely faint, very small, extended","简略描述":"eF, vS, E"},{"ID":"2371","标识":"NGC2371","M标识":"NGC2371","拓展名":"","组件":"","Class":"II 316","业余排名":"5","中文名":"双子座星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h25m33.9s","赤经D(J2000)":"7.426083333333334","赤纬(J2000)":"+29h29m18s","赤纬D(J2000)":"29.488333333333333","可见光星等V":"11.2","摄影(蓝光)星等B":"13","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.03","短轴(分)":"","方位角":"","详细描述":"bright, small, round, brighter middle and nucleus, western part of a double nebula","简略描述":"B, S, R, bMN, p of D neb"},{"ID":"2372","标识":"NGC2372","M标识":"NGC2372","拓展名":"","组件":"","Class":"II 317","业余排名":"6","中文名":"","类型":"PN","含重复类型":"Dup","形态":"PN","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h25m33.9s","赤经D(J2000)":"7.426083333333334","赤纬(J2000)":"+29h29m18s","赤纬D(J2000)":"29.488333333333333","可见光星等V":"11.2","摄影(蓝光)星等B":"13","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.03","短轴(分)":"","方位角":"","详细描述":"bright, small, round, brighter middle and nucleus, western part of a double nebula","简略描述":"pB, S, R, bMN, f of D neb"},{"ID":"2373","标识":"NGC2373","M标识":"NGC2373","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h26m36.9s","赤经D(J2000)":"7.443583333333334","赤纬(J2000)":"+33h49m27s","赤纬D(J2000)":"33.82416666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"159","详细描述":"","简略描述":"eF, vS (ζ in Ld R's diag)"},{"ID":"2374","标识":"NGC2374","M标识":"NGC2374","拓展名":"","组件":"","Class":"VIII 35","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3p","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h23m56s","赤经D(J2000)":"7.398888888888889","赤纬(J2000)":"-13h15m48s","赤纬D(J2000)":"-13.263333333333334","可见光星等V":"8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, pretty rich, a little compressed, stars large","简略描述":"Cl, vL, pRi, lC, st L"},{"ID":"2375","标识":"NGC2375","M标识":"NGC2375","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h27m9.4s","赤经D(J2000)":"7.4526111111111115","赤纬(J2000)":"+33h49m57s","赤纬D(J2000)":"33.8325","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"1","方位角":"170","详细描述":"","简略描述":"eF, vS, h 446 f 17s, 1' s (ε)"},{"ID":"2376","标识":"NGC2376","M标识":"NGC2376","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h26m35.9s","赤经D(J2000)":"7.443305555555556","赤纬(J2000)":"+23h4m24s","赤纬D(J2000)":"23.073333333333334","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"2377","标识":"NGC2377","M标识":"NGC2377","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h24m56.7s","赤经D(J2000)":"7.41575","赤纬(J2000)":"-9h39m38s","赤纬D(J2000)":"-9.660555555555556","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"170","详细描述":"extremely faint, very small star involved, 11th magnitude star to south","简略描述":"eF, vS * inv, * 11 s"},{"ID":"2378","标识":"NGC2378","M标识":"NGC2378","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h27m23.9s","赤经D(J2000)":"7.4566388888888895","赤纬(J2000)":"+33h49m55s","赤纬D(J2000)":"33.831944444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"2 vF close st in eF neb, h 446 f 2s, 1' s"},{"ID":"2379","标识":"NGC2379","M标识":"NGC2379","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h27m26.2s","赤经D(J2000)":"7.457277777777778","赤纬(J2000)":"+33h48m43s","赤纬D(J2000)":"33.81194444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"127","详细描述":"","简略描述":"vF, vS (δ)"},{"ID":"2380","标识":"NGC2380","M标识":"NGC2380","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h23m54.5s","赤经D(J2000)":"7.398472222222223","赤纬(J2000)":"-27h31m43s","赤纬D(J2000)":"-27.52861111111111","可见光星等V":"11.2","摄影(蓝光)星等B":"12.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.1","短轴(分)":"2","方位角":"168","详细描述":"pretty faint, pretty small, round, very suddenly much brighter middle, among stars","简略描述":"pF, pS, R, vsmbM, am st"},{"ID":"2381","标识":"NGC2381","M标识":"NGC2381","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"7h19m57.4s","赤经D(J2000)":"7.3326111111111105","赤纬(J2000)":"-63h4m1s","赤纬D(J2000)":"-63.066944444444445","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"very faint, very small, round, among stars","简略描述":"vF, vS, R, am st"},{"ID":"2382","标识":"NGC2382","M标识":"NGC2382","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h23m54.5s","赤经D(J2000)":"7.398472222222223","赤纬(J2000)":"-27h31m43s","赤纬D(J2000)":"-27.52861111111111","可见光星等V":"11.2","摄影(蓝光)星等B":"12.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.1","短轴(分)":"2","方位角":"168","详细描述":"pretty faint, small, round, brighter middle","简略描述":"pF, S, R, bM"},{"ID":"2383","标识":"NGC2383","M标识":"NGC2383","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h24m39.9s","赤经D(J2000)":"7.411083333333334","赤纬(J2000)":"-20h56m51s","赤纬D(J2000)":"-20.9475","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty small, pretty much compressed, stars of 12th magnitude","简略描述":"Cl, pS, pmC, st 12"},{"ID":"2384","标识":"NGC2384","M标识":"NGC2384","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV3p","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h25m10s","赤经D(J2000)":"7.419444444444445","赤纬(J2000)":"-21h1m18s","赤纬D(J2000)":"-21.021666666666665","可见光星等V":"7.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, lC, bifid, **"},{"ID":"2385","标识":"NGC2385","M标识":"NGC2385","拓展名":"","组件":"","Class":"III 900","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h28m28.2s","赤经D(J2000)":"7.4745","赤纬(J2000)":"+33h50m17s","赤纬D(J2000)":"33.838055555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.7","方位角":"54","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"2386","标识":"NGC2386","M标识":"NGC2386","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h28m38.1s","赤经D(J2000)":"7.47725","赤纬(J2000)":"+33h46m35s","赤纬D(J2000)":"33.77638888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"stellar","简略描述":"Stellar"},{"ID":"2387","标识":"NGC2387","M标识":"NGC2387","拓展名":"","组件":"","Class":"II 820","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"7h29m26.1s","赤经D(J2000)":"7.490583333333333","赤纬(J2000)":"+36h46m8s","赤纬D(J2000)":"36.76888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, stellar","简略描述":"pB, S, stellar"},{"ID":"2388","标识":"NGC2388","M标识":"NGC2388","拓展名":"","组件":"","Class":"III 901","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h28m53.5s","赤经D(J2000)":"7.481527777777778","赤纬(J2000)":"+33h49m8s","赤纬D(J2000)":"33.81888888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.6","方位角":"65","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"2389","标识":"NGC2389","M标识":"NGC2389","拓展名":"","组件":"","Class":"III 703","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h29m4.8s","赤经D(J2000)":"7.484666666666667","赤纬(J2000)":"+33h51m39s","赤纬D(J2000)":"33.86083333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"13.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2","短轴(分)":"1.4","方位角":"83","详细描述":"very faint, small, round, pretty suddenly brighter middle","简略描述":"vF, S, R, psbM"},{"ID":"2390","标识":"NGC2390","M标识":"NGC2390","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h29m4.2s","赤经D(J2000)":"7.4845","赤纬(J2000)":"+33h50m13s","赤纬D(J2000)":"33.83694444444445","可见光星等V":"99","摄影(蓝光)星等B":"13.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"2391","标识":"NGC2391","M标识":"NGC2391","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h29m7.6s","赤经D(J2000)":"7.485444444444444","赤纬(J2000)":"+33h49m33s","赤纬D(J2000)":"33.825833333333335","可见光星等V":"99","摄影(蓝光)星等B":"15.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"2392","标识":"NGC2392","M标识":"NGC2392","拓展名":"","组件":"","Class":"IV 45","业余排名":"2","中文名":"爱斯基摩星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h29m10.8s","赤经D(J2000)":"7.4863333333333335","赤纬(J2000)":"+20h54m45s","赤纬D(J2000)":"20.912499999999998","可见光星等V":"9.1","摄影(蓝光)星等B":"9.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.9","短轴(分)":"","方位角":"","详细描述":"About its spectrum see Pickering, [A.N.] 4089, p.141","简略描述":"B, S, R, * 9 M, * 8 nf 100\""},{"ID":"2393","标识":"NGC2393","M标识":"NGC2393","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h30m4.9s","赤经D(J2000)":"7.501361111111111","赤纬(J2000)":"+34h1m40s","赤纬D(J2000)":"34.02777777777778","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"103","详细描述":"extremely faint, pretty small, a little extended, diffuse, mottled but not resolved?","简略描述":"eF, pS, lE, dif, r?"},{"ID":"2394","标识":"NGC2394","M标识":"NGC2394","拓展名":"","组件":"","Class":"VIII 44","业余排名":"12","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h28m36.5s","赤经D(J2000)":"7.476805555555556","赤纬(J2000)":"+7h5m14s","赤纬D(J2000)":"7.087222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, large, poor, very little compressed, stars large","简略描述":"Cl, L, P, vlC, st L"},{"ID":"2395","标识":"NGC2395","M标识":"NGC2395","拓展名":"","组件":"","Class":"VIII 11","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1p","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h27m12.8s","赤经D(J2000)":"7.453555555555556","赤纬(J2000)":"+13h36m30s","赤纬D(J2000)":"13.608333333333333","可见光星等V":"8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, compressed","简略描述":"Cl, pRi, C"},{"ID":"2396","标识":"NGC2396","M标识":"NGC2396","拓展名":"","组件":"","Class":"VIII 36","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III3p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h28m0s","赤经D(J2000)":"7.466666666666667","赤纬(J2000)":"-11h43m0s","赤纬D(J2000)":"-11.716666666666667","可见光星等V":"7.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, very little compressed","简略描述":"Cl, vL, vlC"},{"ID":"2397","标识":"NGC2397","M标识":"NGC2397","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞鱼座","星座(En)":"VOL","赤经(J2000)":"7h21m19.5s","赤经D(J2000)":"7.355416666666667","赤纬(J2000)":"-69h0m5s","赤纬D(J2000)":"-69.00138888888888","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.5","短轴(分)":"1.2","方位角":"123","详细描述":"","简略描述":"pB, cL, cE 117°, lbM"},{"ID":"2398","标识":"NGC2398","M标识":"NGC2398","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h30m16.2s","赤经D(J2000)":"7.5045","赤纬(J2000)":"+24h29m17s","赤纬D(J2000)":"24.488055555555558","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"150","详细描述":"very faint, extremely small, brighter middle, mottled but not resolved?","简略描述":"vF, eS, bM, r ?"},{"ID":"2399","标识":"NGC2399","M标识":"NGC2399","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h29m49.9s","赤经D(J2000)":"7.497194444444444","赤纬(J2000)":"-0h12m49s","赤纬D(J2000)":"-0.2136111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"two faint nebulae (Auwers 24 & 25), ? very small clusters","简略描述":"Two F neb (Auw 24 & 25) ? vS clusters"},{"ID":"2400","标识":"NGC2400","M标识":"NGC2400","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h29m55.1s","赤经D(J2000)":"7.498638888888889","赤纬(J2000)":"-0h12m51s","赤纬D(J2000)":"-0.21416666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"two faint nebulae (Auwers 24 & 25), ? very small clusters","简略描述":"Two F neb (Auw 24 & 25) ? vS clusters"},{"ID":"2401","标识":"NGC2401","M标识":"NGC2401","拓展名":"","组件":"","Class":"VII 65","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h29m24.3s","赤经D(J2000)":"7.490083333333334","赤纬(J2000)":"-13h58m0s","赤纬D(J2000)":"-13.966666666666667","可见光星等V":"12.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"cluster, small, considerably rich, considerably compressed, stars very small","简略描述":"Cl, S, cRi, cC, st vS"},{"ID":"2402","标识":"NGC2402","M标识":"NGC2402","拓展名":"","组件":"1","Class":"III 19","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h30m46.5s","赤经D(J2000)":"7.5129166666666665","赤纬(J2000)":"+9h38m51s","赤纬D(J2000)":"9.647499999999999","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, small, round, slightly brighter middle, star involved","简略描述":"eF, S, R, lbM, * inv"},{"ID":"2403","标识":"NGC2403","M标识":"NGC2403","拓展名":"","组件":"","Class":"V 44","业余排名":"2","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"7h36m50.6s","赤经D(J2000)":"7.614055555555555","赤纬(J2000)":"+65h36m6s","赤纬D(J2000)":"65.60166666666666","可见光星等V":"8.5","摄影(蓝光)星等B":"8.9","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"23.4","短轴(分)":"11.8","方位角":"127","详细描述":"very remarkable, considerably bright, extremely large, very much extended, very gradually much brighter middle and nucleus","简略描述":"!! cB, eL, vmE, vgmbMN"},{"ID":"2404","标识":"NGC2404","M标识":"NGC2404","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"7h37m7s","赤经D(J2000)":"7.618611111111112","赤纬(J2000)":"+65h36m40s","赤纬D(J2000)":"65.6111111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.4","短轴(分)":"","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"2405","标识":"NGC2405","M标识":"NGC2405","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h32m13.9s","赤经D(J2000)":"7.537194444444444","赤纬(J2000)":"+25h54m22s","赤纬D(J2000)":"25.90611111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"105","详细描述":"very faint, small, irregularly round","简略描述":"vF, S, iR"},{"ID":"2406","标识":"NGC2406","M标识":"NGC2406","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h31m47.7s","赤经D(J2000)":"7.529916666666667","赤纬(J2000)":"+18h17m19s","赤纬D(J2000)":"18.288611111111113","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"51","详细描述":"extremely faint, extremely small, very small nucleus?","简略描述":"eF, eS, vSN ?"},{"ID":"2407","标识":"NGC2407","M标识":"NGC2407","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h31m56.6s","赤经D(J2000)":"7.532388888888889","赤纬(J2000)":"+18h20m1s","赤纬D(J2000)":"18.33361111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"1","方位角":"42","详细描述":"extremely faint, extremely small, very small nucleus?","简略描述":"eF, eS, vSN ?"},{"ID":"2408","标识":"NGC2408","M标识":"NGC2408","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"7h40m30s","赤经D(J2000)":"7.675000000000001","赤纬(J2000)":"+71h40m0s","赤纬D(J2000)":"71.66666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"cluster, very slightly compressed","简略描述":"Cl, vlC"},{"ID":"2409","标识":"NGC2409","M标识":"NGC2409","拓展名":"","组件":"","Class":"","业余排名":"8.5","中文名":"菲尔瑟213","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h31m36.7s","赤经D(J2000)":"7.526861111111111","赤纬(J2000)":"-17h11m23s","赤纬D(J2000)":"-17.189722222222223","可见光星等V":"7.3","摄影(蓝光)星等B":"7.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.5","短轴(分)":"","方位角":"","详细描述":"cluster, small but bright, stars from 8th to 10th magnitude","简略描述":"Cl, S but B, st 8…10"},{"ID":"2410","标识":"NGC2410","M标识":"NGC2410","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h35m2.2s","赤经D(J2000)":"7.583944444444444","赤纬(J2000)":"+32h49m21s","赤纬D(J2000)":"32.822500000000005","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.4","短轴(分)":"0.7","方位角":"31","详细描述":"extremely faint, very small, several very faint stars involved","简略描述":"eF, vS, sev vF st inv"},{"ID":"2411","标识":"NGC2411","M标识":"NGC2411","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h34m36.4s","赤经D(J2000)":"7.576777777777777","赤纬(J2000)":"+18h16m55s","赤纬D(J2000)":"18.281944444444445","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"50","详细描述":"14th-magnitude star, slightly nebulous","简略描述":"* 14 m slightly nebs"},{"ID":"2412","标识":"NGC2412","M标识":"NGC2412","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h34m21.5s","赤经D(J2000)":"7.572638888888888","赤纬(J2000)":"+8h32m51s","赤纬D(J2000)":"8.5475","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, 8th-magnitude star 59 arcsec and 1.5 seconds of time to the southeast, 13th-magnitude star 10 arcsec away","简略描述":"vF, * 8 f 59s, 1'.5 s, * 13 s, 10\""},{"ID":"2413","标识":"NGC2413","M标识":"NGC2413","拓展名":"","组件":"","Class":"VIII 52","业余排名":"12","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h33m19s","赤经D(J2000)":"7.5552777777777775","赤纬(J2000)":"-13h7m9s","赤纬D(J2000)":"-13.119166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"cluster, very large, poor, very slightly compressed","简略描述":"Cl, vL, P, vlC"},{"ID":"2414","标识":"NGC2414","M标识":"NGC2414","拓展名":"","组件":"","Class":"VIII 37","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h33m12.8s","赤经D(J2000)":"7.553555555555556","赤纬(J2000)":"-15h27m14s","赤纬D(J2000)":"-15.453888888888889","可见光星等V":"7.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"cluster, poor, slightly compressed, stars 9th-magnitude etc","简略描述":"Cl, P, lC, st 9, &c"},{"ID":"2415","标识":"NGC2415","M标识":"NGC2415","拓展名":"","组件":"","Class":"II 821","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h36m56.5s","赤经D(J2000)":"7.615694444444444","赤纬(J2000)":"+35h14m31s","赤纬D(J2000)":"35.24194444444444","可见光星等V":"12.4","摄影(蓝光)星等B":"12.8","B-V":"0.4","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"pretty bright, considerably small, round, very gradually very slightly brighter middle, mottled but not resolved, almost planetary nebular","简略描述":"pB, cS, R, vgvlbM, r, alm planetary"},{"ID":"2416","标识":"NGC2416","M标识":"NGC2416","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h35m41.4s","赤经D(J2000)":"7.594833333333333","赤纬(J2000)":"+11h36m45s","赤纬D(J2000)":"11.612499999999999","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.7","方位角":"110","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"2417","标识":"NGC2417","M标识":"NGC2417","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"7h30m12.1s","赤经D(J2000)":"7.503361111111111","赤纬(J2000)":"-62h15m9s","赤纬D(J2000)":"-62.2525","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.8","短轴(分)":"1.9","方位角":"81","详细描述":"very faint, large, round, gradually brighter middle, mottled but not resolved","简略描述":"vF, L, R, gbM, R"},{"ID":"2418","标识":"NGC2418","M标识":"NGC2418","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h36m37.4s","赤经D(J2000)":"7.610388888888888","赤纬(J2000)":"+17h53m2s","赤纬D(J2000)":"17.883888888888887","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"1.8","方位角":"","详细描述":"very faint, extremely small, brighter middle","简略描述":"vF, eS, bM"},{"ID":"2419","标识":"NGC2419","M标识":"NGC2419","拓展名":"","组件":"","Class":"I 218","业余排名":"2","中文名":"漫游者星团","类型":"GCL","含重复类型":"GCL","形态":"II","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h38m8.5s","赤经D(J2000)":"7.635694444444444","赤纬(J2000)":"+38h52m57s","赤纬D(J2000)":"38.8825","可见光星等V":"10.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.6","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, slightly extended 90°, very gradually brighter middle, 7th or 8th magnitude star 4 arcmin distant in direction 267°","简略描述":"pB, pL, lE 90°, vgbM, * 7·8 267°, 4' dist"},{"ID":"2420","标识":"NGC2420","M标识":"NGC2420","拓展名":"","组件":"","Class":"VI 1","业余排名":"6","中文名":"彗闪星团","类型":"OCL","含重复类型":"OCL","形态":"I2r","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h38m23.8s","赤经D(J2000)":"7.639944444444444","赤纬(J2000)":"+21h34m27s","赤纬D(J2000)":"21.574166666666667","可见光星等V":"8.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"cluster, considerably large, rich, compressed, stars from 11th to 18th magnitude","简略描述":"Cl, cL, Ri, C, st 11…18"},{"ID":"2421","标识":"NGC2421","M标识":"NGC2421","拓展名":"","组件":"","Class":"VII 67","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2m","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h36m12s","赤经D(J2000)":"7.603333333333333","赤纬(J2000)":"-20h36m42s","赤纬D(J2000)":"-20.611666666666668","可见光星等V":"8.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"cluster, large, considerably rich, stars from 11th to 13th magnitude","简略描述":"Cl, L, cRi, st 11…13"},{"ID":"2422","标识":"NGC2422","M标识":"M47","拓展名":"","组件":"","Class":"VIII 38","业余排名":"1","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h36m35s","赤经D(J2000)":"7.609722222222222","赤纬(J2000)":"-14h28m47s","赤纬D(J2000)":"-14.479722222222222","可见光星等V":"4.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"","方位角":"","详细描述":"cluster, bright, very large, pretty rich, stars large and small","简略描述":"Cl, B, vL, pRi, st L and S"},{"ID":"2423","标识":"NGC2423","M标识":"NGC2423","拓展名":"","组件":"","Class":"VII 28","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV2m","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h37m6.7s","赤经D(J2000)":"7.6185277777777785","赤纬(J2000)":"-13h52m17s","赤纬D(J2000)":"-13.87138888888889","可见光星等V":"6.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"cluster, very large, rich, pretty compressed, stars very small","简略描述":"Cl, vL, Ri, pC, st vS"},{"ID":"2424","标识":"NGC2424","M标识":"NGC2424","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h40m39.3s","赤经D(J2000)":"7.677583333333334","赤纬(J2000)":"+39h14m0s","赤纬D(J2000)":"39.233333333333334","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.6","短轴(分)":"0.5","方位角":"81","详细描述":"very faint, pretty small, much extended, slightly brightly middle, mottled but not resolved?","简略描述":"vE, pS, mE, lbM, r ?"},{"ID":"2425","标识":"NGC2425","M标识":"NGC2425","拓展名":"","组件":"","Class":"VIII 87","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h38m17.6s","赤经D(J2000)":"7.638222222222222","赤纬(J2000)":"-14h52m40s","赤纬D(J2000)":"-14.877777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"cluster, poor, small, stars very small","简略描述":"Cl, P, S, st vS"},{"ID":"2426","标识":"NGC2426","M标识":"NGC2426","拓展名":"","组件":"","Class":"II 822","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h43m18.4s","赤经D(J2000)":"7.721777777777778","赤纬(J2000)":"+52h19m5s","赤纬D(J2000)":"52.31805555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"considerably faint, round, very gradually brighter middle, mottled but not resolved, 8th magnitude star to west","简略描述":"cF, R, vgbM, r, * 8 p"},{"ID":"2427","标识":"NGC2427","M标识":"NGC2427","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h36m27.9s","赤经D(J2000)":"7.607749999999999","赤纬(J2000)":"-47h38m9s","赤纬D(J2000)":"-47.63583333333333","可见光星等V":"11.5","摄影(蓝光)星等B":"12.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"4.9","短轴(分)":"2","方位角":"122","详细描述":"extremely faint, large, pretty much extended, gradually much brighter middle, 2 stars involved","简略描述":"eF, L, pmE, gmbM, 2 st inv"},{"ID":"2428","标识":"NGC2428","M标识":"NGC2428","拓展名":"","组件":"","Class":"VIII 47","业余排名":"15","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h39m22s","赤经D(J2000)":"7.6561111111111115","赤纬(J2000)":"-16h31m42s","赤纬D(J2000)":"-16.528333333333332","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"13","短轴(分)":"","方位角":"","详细描述":"cluster, very large, very slightly compressed","简略描述":"Cl, vL, vlC"},{"ID":"2429","标识":"NGC2429","M标识":"NGC2429","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h43m47.5s","赤经D(J2000)":"7.729861111111111","赤纬(J2000)":"+52h21m27s","赤纬D(J2000)":"52.3575","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"145","详细描述":"pretty faint, pretty small, very much extended, 12th magnitude star attached","简略描述":"pF, pS, vmE, * 12 att"},{"ID":"2430","标识":"NGC2430","M标识":"NGC2430","拓展名":"","组件":"","Class":"VIII 46","业余排名":"12","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h39m41s","赤经D(J2000)":"7.661388888888889","赤纬(J2000)":"-16h17m46s","赤纬D(J2000)":"-16.296111111111113","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7.5","短轴(分)":"","方位角":"","详细描述":"cluster, very large, very slightly compressed","简略描述":"Cl, vL, vlC"},{"ID":"2431","标识":"NGC2431","M标识":"NGC2431","拓展名":"","组件":"","Class":"III 829","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h45m13.3s","赤经D(J2000)":"7.753694444444444","赤纬(J2000)":"+53h4m32s","赤纬D(J2000)":"53.07555555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"planetary nebula, pretty bright, pretty small, very slightly extended, mottled but not resolved, 3.75 sec of time diameter","简略描述":"eF, vS, R, bM"},{"ID":"2432","标识":"NGC2432","M标识":"NGC2432","拓展名":"","组件":"","Class":"VI 36","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h40m53s","赤经D(J2000)":"7.681388888888889","赤纬(J2000)":"-19h4m36s","赤纬D(J2000)":"-19.076666666666668","可见光星等V":"10.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"cluster, pretty large, pretty compressed, extended 0°, stars large and small","简略描述":"Cl, pL, pC, E 0°, st L and S"},{"ID":"2433","标识":"NGC2433","M标识":"NGC2433","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h42m43.6s","赤经D(J2000)":"7.712111111111112","赤纬(J2000)":"+9h15m33s","赤纬D(J2000)":"9.259166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, with a 15th-magnitude star 90 arcsec to the southwest","简略描述":"eF, * 15, 90\" sp"},{"ID":"2434","标识":"NGC2434","M标识":"NGC2434","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"飞鱼座","星座(En)":"VOL","赤经(J2000)":"7h34m51.5s","赤经D(J2000)":"7.580972222222222","赤纬(J2000)":"-69h17m4s","赤纬D(J2000)":"-69.28444444444445","可见光星等V":"11.2","摄影(蓝光)星等B":"12.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.4","短轴(分)":"2.2","方位角":"133","详细描述":"pretty bright, small, round, pretty much brighter middle, three 11th-magnitude stars to north","简略描述":"pB, S, R, pmbM, 3 st 11 n"},{"ID":"2435","标识":"NGC2435","M标识":"NGC2435","拓展名":"","组件":"","Class":"II 616","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h44m13.4s","赤经D(J2000)":"7.737055555555556","赤纬(J2000)":"+31h39m2s","赤纬D(J2000)":"31.650555555555552","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.2","短轴(分)":"0.5","方位角":"36","详细描述":"faint, small, slightly brighter middle","简略描述":"F, S, lbM"},{"ID":"2436","标识":"NGC2436","M标识":"NGC2436","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h45m13.3s","赤经D(J2000)":"7.753694444444444","赤纬(J2000)":"+53h4m32s","赤纬D(J2000)":"53.07555555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"2437","标识":"NGC2437","M标识":"M46","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h41m46.8s","赤经D(J2000)":"7.6963333333333335","赤纬(J2000)":"-14h48m36s","赤纬D(J2000)":"-14.81","可见光星等V":"6.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a remarkable object, cluster, very bright, very rich, very large, involving a planetary nebula","简略描述":"!, Cl, vB, vRi, vL, inv planetary"},{"ID":"2438","标识":"NGC2438","M标识":"NGC2438","拓展名":"","组件":"","Class":"IV 39","业余排名":"5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h41m50.6s","赤经D(J2000)":"7.697388888888889","赤纬(J2000)":"-14h44m5s","赤纬D(J2000)":"-14.73472222222222","可见光星等V":"10.8","摄影(蓝光)星等B":"10.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.27","短轴(分)":"","方位角":"","详细描述":"planetary nebula, pretty bright, pretty small, very slightly extended, mottled but not resolved, 3.75 sec of time diameter","简略描述":"planetary, pB, pS, vlE, r, 3s.75 d"},{"ID":"2439","标识":"NGC2439","M标识":"NGC2439","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"宽箭头星团","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h40m45.4s","赤经D(J2000)":"7.679277777777778","赤纬(J2000)":"-31h41m33s","赤纬D(J2000)":"-31.6925","可见光星等V":"6.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"","方位角":"","详细描述":"cluster, bright, pretty rich, pretty large, slightly compressed, stars of 9th and 12th through 14th magnitude","简略描述":"Cl, B, pRi, pL, lC, st 9,12…14"},{"ID":"2440","标识":"NGC2440","M标识":"NGC2440","拓展名":"","组件":"","Class":"IV 64","业余排名":"5","中文名":"白蝴蝶星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h41m55.4s","赤经D(J2000)":"7.698722222222222","赤纬(J2000)":"-18h12m29s","赤纬D(J2000)":"-18.208055555555553","可见光星等V":"9.4","摄影(蓝光)星等B":"10.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.32","短轴(分)":"","方位角":"","详细描述":"planetary nebula, considerably bright, not very well defined","简略描述":"planetary, cB, not v well def"},{"ID":"2441","标识":"NGC2441","M标识":"NGC2441","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"7h51m54.5s","赤经D(J2000)":"7.865138888888889","赤纬(J2000)":"+73h0m55s","赤纬D(J2000)":"73.01527777777778","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"1.8","方位角":"45","详细描述":"very faint, pretty small","简略描述":"vF, pS"},{"ID":"2442","标识":"NGC2442","M标识":"NGC2442","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"肉钩星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"飞鱼座","星座(En)":"VOL","赤经(J2000)":"7h36m23.8s","赤经D(J2000)":"7.6066111111111105","赤纬(J2000)":"-69h31m51s","赤纬D(J2000)":"-69.53083333333333","可见光星等V":"10.4","摄影(蓝光)星等B":"11.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"6","短轴(分)":"5","方位角":"27","详细描述":"considerably large, very faint, round","简略描述":"cL, vF, R, D neb, 40°"},{"ID":"2443","标识":"NGC2443","M标识":"NGC2443","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"飞鱼座","星座(En)":"VOL","赤经(J2000)":"7h36m23.8s","赤经D(J2000)":"7.6066111111111105","赤纬(J2000)":"-69h31m51s","赤纬D(J2000)":"-69.53083333333333","可见光星等V":"10.4","摄影(蓝光)星等B":"11.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"6","短轴(分)":"5","方位角":"27","详细描述":"","简略描述":"pL, vF, R, D * inv M"},{"ID":"2444","标识":"NGC2444","M标识":"NGC2444","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h46m53s","赤经D(J2000)":"7.7813888888888885","赤纬(J2000)":"+39h1m57s","赤纬D(J2000)":"39.0325","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"27","详细描述":"very faint, much brighter middle","简略描述":"vF, mbM"},{"ID":"2445","标识":"NGC2445","M标识":"NGC2445","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Ring B","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h46m55s","赤经D(J2000)":"7.781944444444444","赤纬(J2000)":"+39h0m56s","赤纬D(J2000)":"39.01555555555556","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"18","详细描述":"very faint, much brighter middle, small star attached to south","简略描述":"vF, mbM, S * att s"},{"ID":"2446","标识":"NGC2446","M标识":"NGC2446","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h48m39.2s","赤经D(J2000)":"7.810888888888889","赤纬(J2000)":"+54h36m42s","赤纬D(J2000)":"54.611666666666665","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.9","短轴(分)":"1","方位角":"124","详细描述":"faint, among 4 stars","简略描述":"F, am 4 st"},{"ID":"2447","标识":"NGC2447","M标识":"M93","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"蝴蝶星团","类型":"OCL","含重复类型":"OCL","形态":"IV1p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h44m30s","赤经D(J2000)":"7.741666666666667","赤纬(J2000)":"-23h51m24s","赤纬D(J2000)":"-23.85666666666667","可见光星等V":"6.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"cluster, large, pretty rich, slightly compressed, stars from 8th to 13th magnitude","简略描述":"Cl, L, pRi, lC, st 8…13"},{"ID":"2448","标识":"NGC2448","M标识":"NGC2448","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h44m34.5s","赤经D(J2000)":"7.742916666666667","赤纬(J2000)":"-24h40m51s","赤纬D(J2000)":"-24.680833333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"cluster of 18 or 20 stars from 11th to 13th magnitude","简略描述":"Cl of 18 or 20 st 11…13"},{"ID":"2449","标识":"NGC2449","M标识":"NGC2449","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h47m20.4s","赤经D(J2000)":"7.789","赤纬(J2000)":"+26h55m50s","赤纬D(J2000)":"26.930555555555557","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"137","详细描述":"extremely faint, extremely small, round, brighter middle, mottled but not resolved","简略描述":"eF, eS, R, bM, r"},{"ID":"2450","标识":"NGC2450","M标识":"NGC2450","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h47m32.2s","赤经D(J2000)":"7.792277777777778","赤纬(J2000)":"+27h1m10s","赤纬D(J2000)":"27.019444444444442","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"156","详细描述":"extremely faint, very small, small star involved","简略描述":"eF, vS, S * inv"},{"ID":"2451","标识":"NGC2451","M标识":"NGC2451","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"刺蝎星团","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h45m24s","赤经D(J2000)":"7.756666666666667","赤纬(J2000)":"-37h57m0s","赤纬D(J2000)":"-37.95","可见光星等V":"2.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"50","短轴(分)":"","方位角":"","详细描述":"a cluster, very very large, very little compressed, 1 star of magnitude 4.5","简略描述":"Cl, vvL, vlC, 1 * 4·5 m"},{"ID":"2452","标识":"NGC2452","M标识":"NGC2452","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h47m26.2s","赤经D(J2000)":"7.790611111111111","赤纬(J2000)":"-27h20m6s","赤纬D(J2000)":"-27.334999999999997","可见光星等V":"12","摄影(蓝光)星等B":"12.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.48","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, faint, small, a little extended, among 60 stars","简略描述":"planetary, F, S, lE, am 60 st"},{"ID":"2453","标识":"NGC2453","M标识":"NGC2453","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h47m34.1s","赤经D(J2000)":"7.792805555555556","赤纬(J2000)":"-27h11m41s","赤纬D(J2000)":"-27.19472222222222","可见光星等V":"8.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, small, pretty rich, pretty compressed","简略描述":"Cl, S, pRi, pC"},{"ID":"2454","标识":"NGC2454","M标识":"NGC2454","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h50m34.9s","赤经D(J2000)":"7.8430277777777775","赤纬(J2000)":"+16h22m9s","赤纬D(J2000)":"16.36916666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"100","详细描述":"very faint, extremely small, round, brighter middle","简略描述":"vF, eS, R, bM"},{"ID":"2455","标识":"NGC2455","M标识":"NGC2455","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h49m0s","赤经D(J2000)":"7.816666666666666","赤纬(J2000)":"-21h18m6s","赤纬D(J2000)":"-21.301666666666666","可见光星等V":"10.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, considerably large, pretty rich, a little compressed, stars of 12th magnitude","简略描述":"Cl, cL, pRi, lC, st 12"},{"ID":"2456","标识":"NGC2456","M标识":"NGC2456","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h54m10.7s","赤经D(J2000)":"7.902972222222223","赤纬(J2000)":"+55h29m43s","赤纬D(J2000)":"55.49527777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"30","详细描述":"very faint, round, very gradually brighter middle","简略描述":"vF, R, vgbM"},{"ID":"2457","标识":"NGC2457","M标识":"NGC2457","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h54m45.7s","赤经D(J2000)":"7.912694444444445","赤纬(J2000)":"+55h32m50s","赤纬D(J2000)":"55.54722222222222","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"84","详细描述":"faint, pretty large, round, h467 to the southwest","简略描述":"F, pL, R, h 467 sp"},{"ID":"2458","标识":"NGC2458","M标识":"NGC2458","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h55m51.6s","赤经D(J2000)":"7.931","赤纬(J2000)":"+56h42m39s","赤纬D(J2000)":"56.71083333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"170","详细描述":"very faint, 12th magnitude star close","简略描述":"vF, * 12 close"},{"ID":"2459","标识":"NGC2459","M标识":"NGC2459","拓展名":"","组件":"","Class":"III 479","业余排名":"15","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h52m1.7s","赤经D(J2000)":"7.867138888888889","赤纬(J2000)":"+9h33m29s","赤纬D(J2000)":"9.558055555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.5","短轴(分)":"","方位角":"","详细描述":"very faint, small, partially resolved group (some stars seen) plus nebulosity","简略描述":"vF, S, rr group + neb"},{"ID":"2460","标识":"NGC2460","M标识":"NGC2460","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"7h56m52.8s","赤经D(J2000)":"7.948","赤纬(J2000)":"+60h20m58s","赤纬D(J2000)":"60.349444444444444","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.5","短轴(分)":"1.9","方位角":"40","详细描述":"faint, small, round, small star in centre","简略描述":"F, S, R, S * in centre"},{"ID":"2461","标识":"NGC2461","M标识":"NGC2461","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h56m26.2s","赤经D(J2000)":"7.940611111111111","赤纬(J2000)":"+56h40m26s","赤纬D(J2000)":"56.67388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"13th magnitude star, slightly nebulous","简略描述":"* 13 slightly nebulous"},{"ID":"2462","标识":"NGC2462","M标识":"NGC2462","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h56m31.9s","赤经D(J2000)":"7.942194444444445","赤纬(J2000)":"+56h41m12s","赤纬D(J2000)":"56.68666666666666","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"162","详细描述":"very faint, very small, very little brighter middle","简略描述":"vF, vS, vlbM"},{"ID":"2463","标识":"NGC2463","M标识":"NGC2463","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h57m12.2s","赤经D(J2000)":"7.953388888888889","赤纬(J2000)":"+56h40m37s","赤纬D(J2000)":"56.676944444444445","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, round","简略描述":"eF, R"},{"ID":"2464","标识":"NGC2464","M标识":"NGC2464","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h57m32.3s","赤经D(J2000)":"7.958972222222222","赤纬(J2000)":"+56h41m27s","赤纬D(J2000)":"56.69083333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty small cluster, stars extremely faint, nebulous","简略描述":"pS Cl, st eF, nebulous"},{"ID":"2465","标识":"NGC2465","M标识":"NGC2465","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h57m25s","赤经D(J2000)":"7.956944444444445","赤纬(J2000)":"+56h49m17s","赤纬D(J2000)":"56.82138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"star, nebulous ?","简略描述":"*, nebulous?"},{"ID":"2466","标识":"NGC2466","M标识":"NGC2466","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞鱼座","星座(En)":"VOL","赤经(J2000)":"7h45m15.6s","赤经D(J2000)":"7.754333333333333","赤纬(J2000)":"-71h24m39s","赤纬D(J2000)":"-71.41083333333334","可见光星等V":"13","摄影(蓝光)星等B":"13.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"7","详细描述":"very faint, small, round, a little brighter middle","简略描述":"vF, S, R, lbM"},{"ID":"2467","标识":"NGC2467","M标识":"NGC2467","拓展名":"","组件":"","Class":"IV 22","业余排名":"3","中文名":"骷髅头星云","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h52m26s","赤经D(J2000)":"7.87388888888889","赤纬(J2000)":"-26h26m12s","赤纬D(J2000)":"-26.436666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, very large, round, extremely mottled but not resolved, middle equivalent to 8th magnitude star","简略描述":"pB, vL, R, er, * 8 M"},{"ID":"2468","标识":"NGC2468","M标识":"NGC2468","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h58m2.2s","赤经D(J2000)":"7.9672777777777775","赤纬(J2000)":"+56h21m33s","赤纬D(J2000)":"56.35916666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"45","详细描述":"faint, round, brighter middle","简略描述":"F, R, bM"},{"ID":"2469","标识":"NGC2469","M标识":"NGC2469","拓展名":"","组件":"","Class":"III 836","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h58m3.2s","赤经D(J2000)":"7.967555555555555","赤纬(J2000)":"+56h40m48s","赤纬D(J2000)":"56.68","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.7","方位角":"160","详细描述":"faint, very small, round, 9th magnitude star to southeast","简略描述":"F, vS, R, * 9 sf"},{"ID":"2470","标识":"NGC2470","M标识":"NGC2470","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h54m20.4s","赤经D(J2000)":"7.905666666666667","赤纬(J2000)":"+4h27m36s","赤纬D(J2000)":"4.46","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2","短轴(分)":"0.6","方位角":"128","详细描述":"extremely faint, small, a little extended, between 2 stars","简略描述":"eF, S, lE, bet 2 st"},{"ID":"2471","标识":"NGC2471","M标识":"NGC2471","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h58m33.2s","赤经D(J2000)":"7.975888888888889","赤纬(J2000)":"+56h46m32s","赤纬D(J2000)":"56.775555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"13th magnitude star, slightly nebulous","简略描述":"* 13, slightly nebulous"},{"ID":"2472","标识":"NGC2472","M标识":"NGC2472","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h58m41.7s","赤经D(J2000)":"7.97825","赤纬(J2000)":"+56h42m4s","赤纬D(J2000)":"56.70111111111111","可见光星等V":"15.3","摄影(蓝光)星等B":"16.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"2 of 10 nebulae in line with h469, 470)","简略描述":"2 of 10 neb, in line with h 469, 470"},{"ID":"2473","标识":"NGC2473","M标识":"NGC2473","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h55m35s","赤经D(J2000)":"7.926388888888889","赤纬(J2000)":"+56h44m11s","赤纬D(J2000)":"56.73638888888889","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"85","详细描述":"2 of 10 nebulae in line with h469, 470)","简略描述":"2 of 10 neb, in line with h 469, 470"},{"ID":"2474","标识":"NGC2474","M标识":"NGC2474","拓展名":"","组件":"","Class":"III 830","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h58m0.3s","赤经D(J2000)":"7.96675","赤纬(J2000)":"+52h51m44s","赤纬D(J2000)":"52.86222222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, pretty small, extended?, brighter middle and very small (faint) star?, large (bright) star to northeast","简略描述":"F, pS, E ?, bMvS * ?, L * nf"},{"ID":"2475","标识":"NGC2475","M标识":"NGC2475","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h57m58.8s","赤经D(J2000)":"7.966333333333334","赤纬(J2000)":"+52h51m26s","赤纬D(J2000)":"52.85722222222223","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"Makes double nebula with h 471","简略描述":"Makes D neb with h 471"},{"ID":"2476","标识":"NGC2476","M标识":"NGC2476","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h56m45.2s","赤经D(J2000)":"7.945888888888889","赤纬(J2000)":"+39h55m40s","赤纬D(J2000)":"39.92777777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"153","详细描述":"very small (faint) star in extremely faint, small nebula","简略描述":"vS * in eF, S neb"},{"ID":"2477","标识":"NGC2477","M标识":"NGC2477","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"电吉他星团","类型":"OCL","含重复类型":"OCL","形态":"I3r","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h52m10s","赤经D(J2000)":"7.869444444444445","赤纬(J2000)":"-38h31m48s","赤纬D(J2000)":"-38.53","可见光星等V":"5.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a cluster, bright, rich, large, a little compressed, 12th magnitude stars","简略描述":"!, Cl, B, Ri, L, lC, st 12"},{"ID":"2478","标识":"NGC2478","M标识":"NGC2478","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"III2m","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h36m35s","赤经D(J2000)":"7.609722222222222","赤纬(J2000)":"-14h28m47s","赤纬D(J2000)":"-14.479722222222222","可见光星等V":"4.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"","方位角":"","详细描述":"a cluster","简略描述":"Cluster"},{"ID":"2479","标识":"NGC2479","M标识":"NGC2479","拓展名":"","组件":"","Class":"VII 58","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1m","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h55m6s","赤经D(J2000)":"7.918333333333334","赤纬(J2000)":"-17h42m28s","赤纬D(J2000)":"-17.70777777777778","可见光星等V":"9.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"11","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, pretty compressed, stars small (faint)","简略描述":"Cl, pL, pRi, pC, st S"},{"ID":"2480","标识":"NGC2480","M标识":"NGC2480","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h57m10.6s","赤经D(J2000)":"7.952944444444444","赤纬(J2000)":"+23h46m47s","赤纬D(J2000)":"23.779722222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"160","详细描述":"very faint, extended northwest southeast, close northwest of h 473","简略描述":"vF, E npsf, close np h 473"},{"ID":"2481","标识":"NGC2481","M标识":"NGC2481","拓展名":"","组件":"","Class":"II 302","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h57m13.7s","赤经D(J2000)":"7.953805555555555","赤纬(J2000)":"+23h46m3s","赤纬D(J2000)":"23.7675","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"18","详细描述":"faint, small, a little extended, brighter middle, extremely mottled but not resolved","简略描述":"F, S, lE, bM, er"},{"ID":"2482","标识":"NGC2482","M标识":"NGC2482","拓展名":"","组件":"","Class":"VII 10","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1m","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h55m12s","赤经D(J2000)":"7.92","赤纬(J2000)":"-24h15m30s","赤纬D(J2000)":"-24.258333333333333","可见光星等V":"7.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, large, considerably rich, very little compressed","简略描述":"Cl, L, cRi, vlC"},{"ID":"2483","标识":"NGC2483","M标识":"NGC2483","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h55m39s","赤经D(J2000)":"7.9275","赤纬(J2000)":"-27h53m42s","赤纬D(J2000)":"-27.895","可见光星等V":"7.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"","方位角":"","详细描述":"a cluster, large, a little compressed","简略描述":"Cl, L, lC"},{"ID":"2484","标识":"NGC2484","M标识":"NGC2484","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h58m28.1s","赤经D(J2000)":"7.974472222222222","赤纬(J2000)":"+37h47m12s","赤纬D(J2000)":"37.78666666666666","可见光星等V":"13","摄影(蓝光)星等B":"14.1","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"145","详细描述":"very faint, very small, round, brighter middle, mottled but not resolved?","简略描述":"vF, vS, R, bM, r?"},{"ID":"2485","标识":"NGC2485","M标识":"NGC2485","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h56m48.7s","赤经D(J2000)":"7.946861111111112","赤纬(J2000)":"+7h28m39s","赤纬D(J2000)":"7.4775","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"153","详细描述":"a nebulous star of 12 magnitude","简略描述":"Neb * 12 m"},{"ID":"2486","标识":"NGC2486","M标识":"NGC2486","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h57m56.5s","赤经D(J2000)":"7.965694444444445","赤纬(J2000)":"+25h9m40s","赤纬D(J2000)":"25.16111111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"97","详细描述":"very faint, small, pretty suddenly brighter middle","简略描述":"vF, S, psbM"},{"ID":"2487","标识":"NGC2487","M标识":"NGC2487","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h58m20.3s","赤经D(J2000)":"7.972305555555556","赤纬(J2000)":"+25h8m57s","赤纬D(J2000)":"25.149166666666666","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.7","短轴(分)":"2.1","方位角":"115","详细描述":"very faint, small, gradually brighter middle","简略描述":"vF, S, gbM"},{"ID":"2488","标识":"NGC2488","M标识":"NGC2488","拓展名":"","组件":"","Class":"III 837","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h1m45.6s","赤经D(J2000)":"8.029333333333334","赤纬(J2000)":"+56h33m10s","赤纬D(J2000)":"56.55277777777778","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"100","详细描述":"very faint, very small, round, gradually a little brighter middle","简略描述":"vF, vS, R, glbM"},{"ID":"2489","标识":"NGC2489","M标识":"NGC2489","拓展名":"","组件":"","Class":"VII 23","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h56m15.9s","赤经D(J2000)":"7.93775","赤纬(J2000)":"-30h3m51s","赤纬D(J2000)":"-30.06416666666667","可见光星等V":"7.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, considerably rich, pretty compressed, stars from 11th to 13th magnitude","简略描述":"Cl, pL, eRi, pC, st 11…13"},{"ID":"2490","标识":"NGC2490","M标识":"NGC2490","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h59m17.9s","赤经D(J2000)":"7.988305555555556","赤纬(J2000)":"+27h4m40s","赤纬D(J2000)":"27.07777777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"45","详细描述":"very faint, small, round, 13th magnitude star 1 arcmin to east, preceding (western) of 2","简略描述":"vF, S, R, * 13 1' f, p of 2"},{"ID":"2491","标识":"NGC2491","M标识":"NGC2491","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h58m27.3s","赤经D(J2000)":"7.9742500000000005","赤纬(J2000)":"+7h59m4s","赤纬D(J2000)":"7.984444444444445","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"93","详细描述":"extremely extremely faint, pretty small, irregularly round, very difficult, bright star to west","简略描述":"eeF, pS, irrR, v diffic, B * p"},{"ID":"2492","标识":"NGC2492","M标识":"NGC2492","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h59m29.7s","赤经D(J2000)":"7.991583333333334","赤纬(J2000)":"+27h1m35s","赤纬D(J2000)":"27.02638888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"very faint, small, round, brighter middle, following (eastern) of 2","简略描述":"vF, S, R, bM, f of 2"},{"ID":"2493","标识":"NGC2493","M标识":"NGC2493","拓展名":"","组件":"","Class":"III 750","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h0m23.8s","赤经D(J2000)":"8.006611111111111","赤纬(J2000)":"+39h49m51s","赤纬D(J2000)":"39.83083333333334","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"1.9","方位角":"","详细描述":"considerably bright, small, round, suddenly brighter middle","简略描述":"cB, S, R, sbM"},{"ID":"2494","标识":"NGC2494","M标识":"NGC2494","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h59m7.2s","赤经D(J2000)":"7.985333333333333","赤纬(J2000)":"-0h38m15s","赤纬D(J2000)":"-0.6375","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"95","详细描述":"faint, small, a little extended","简略描述":"F, S, lE"},{"ID":"2495","标识":"NGC2495","M标识":"NGC2495","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h0m33.2s","赤经D(J2000)":"8.009222222222222","赤纬(J2000)":"+39h50m26s","赤纬D(J2000)":"39.84055555555556","可见光星等V":"15.2","摄影(蓝光)星等B":"15.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"15","详细描述":"Follows III 750 by 2 or 3 arcmin, extremely faint, very small","简略描述":"Follows III 750 2' or 3', eF, vS"},{"ID":"2496","标识":"NGC2496","M标识":"NGC2496","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h58m37.4s","赤经D(J2000)":"7.977055555555555","赤纬(J2000)":"+8h1m41s","赤纬D(J2000)":"8.028055555555556","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"167","详细描述":"very faint, pretty small, round, a little brighter middle, star close to east","简略描述":"vF, pS, R, lbM, * close f"},{"ID":"2497","标识":"NGC2497","M标识":"NGC2497","拓展名":"","组件":"","Class":"III 838","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h2m11.1s","赤经D(J2000)":"8.036416666666666","赤纬(J2000)":"+56h56m32s","赤纬D(J2000)":"56.94222222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"24","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"2498","标识":"NGC2498","M标识":"NGC2498","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h59m38.7s","赤经D(J2000)":"7.994083333333333","赤纬(J2000)":"+24h59m0s","赤纬D(J2000)":"24.983333333333334","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"113","详细描述":"very faint, very small, round, brighter middle and nucleus","简略描述":"vF, vS, R, bMN"},{"ID":"2499","标识":"NGC2499","M标识":"NGC2499","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h58m51.7s","赤经D(J2000)":"7.981027777777778","赤纬(J2000)":"+7h29m34s","赤纬D(J2000)":"7.4927777777777775","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"18","详细描述":"extremely faint, pretty small, irregularly round","简略描述":"eF, pS, iR"},{"ID":"2500","标识":"NGC2500","M标识":"NGC2500","拓展名":"","组件":"","Class":"III 709","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h1m53s","赤经D(J2000)":"8.03138888888889","赤纬(J2000)":"+50h44m12s","赤纬D(J2000)":"50.736666666666665","可见光星等V":"11.6","摄影(蓝光)星等B":"12.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.9","短轴(分)":"2.7","方位角":"48","详细描述":"faint, large, round, very gradually brighter middle, mottled but not resolved, among stars","简略描述":"F, L, R, vgbM, r, am st"},{"ID":"2501","标识":"NGC2501","M标识":"NGC2501","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h58m30s","赤经D(J2000)":"7.9750000000000005","赤纬(J2000)":"-14h21m15s","赤纬D(J2000)":"-14.354166666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"1","方位角":"120","详细描述":"considerably faint, small, very little extended 90°, gradually a little brighter middle, among stars","简略描述":"cF, S, vlE 90°, glbM, am st"},{"ID":"2502","标识":"NGC2502","M标识":"NGC2502","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"7h55m51.5s","赤经D(J2000)":"7.9309722222222225","赤纬(J2000)":"-52h18m25s","赤纬D(J2000)":"-52.30694444444444","可见光星等V":"12","摄影(蓝光)星等B":"13.2","B-V":"1.2","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.1","短轴(分)":"1.3","方位角":"126","详细描述":"pretty faint, small, round, very gradually pretty much brighter middle","简略描述":"pF, S, R, vgpmbM"},{"ID":"2503","标识":"NGC2503","M标识":"NGC2503","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h0m36.8s","赤经D(J2000)":"8.010222222222222","赤纬(J2000)":"+22h24m0s","赤纬D(J2000)":"22.4","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"extremely faint, small, gradually a little brighter middle","简略描述":"eF, S, glbM"},{"ID":"2504","标识":"NGC2504","M标识":"NGC2504","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h59m52.2s","赤经D(J2000)":"7.997833333333333","赤纬(J2000)":"+5h36m28s","赤纬D(J2000)":"5.607777777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"96","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"2505","标识":"NGC2505","M标识":"NGC2505","拓展名":"","组件":"","Class":"III 839","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h4m6.7s","赤经D(J2000)":"8.068527777777778","赤纬(J2000)":"+53h32m59s","赤纬D(J2000)":"53.54972222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"0","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"2506","标识":"NGC2506","M标识":"NGC2506","拓展名":"","组件":"","Class":"VI 37","业余排名":"2","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2r","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"8h0m1.7s","赤经D(J2000)":"8.000472222222223","赤纬(J2000)":"-10h46m11s","赤纬D(J2000)":"-10.769722222222223","可见光星等V":"7.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, very rich, compressed, stars from 11th to 20th magnitude","简略描述":"Cl, pL, vRi, C, st 11…20"},{"ID":"2507","标识":"NGC2507","M标识":"NGC2507","拓展名":"","组件":"","Class":"II 554","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h1m37.1s","赤经D(J2000)":"8.026972222222224","赤纬(J2000)":"+15h42m37s","赤纬D(J2000)":"15.710277777777778","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.5","短轴(分)":"1.8","方位角":"126","详细描述":"pretty bright, pretty large, irregularly round, very gradually brighter middle, extremely mottled but not resolved, star 80 arcsec away in position angle 232°","简略描述":"pB, pL, iR, vgbM, er, * 232°, 80\""},{"ID":"2508","标识":"NGC2508","M标识":"NGC2508","拓展名":"","组件":"","Class":"III 7","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"8h1m57.1s","赤经D(J2000)":"8.032527777777778","赤纬(J2000)":"+8h33m7s","赤纬D(J2000)":"8.551944444444445","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"130","详细描述":"faint, very small, very little extended, 2 stars to west","简略描述":"F, vS, vlE, 2 st p"},{"ID":"2509","标识":"NGC2509","M标识":"NGC2509","拓展名":"","组件":"","Class":"VIII 1","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h0m47.8s","赤经D(J2000)":"8.013277777777779","赤纬(J2000)":"-19h3m2s","赤纬D(J2000)":"-19.050555555555555","可见光星等V":"9.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, pretty rich, a little compressed, stars small (faint)","简略描述":"Cl, B, pRi, lC, st S"},{"ID":"2510","标识":"NGC2510","M标识":"NGC2510","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"8h2m10.5s","赤经D(J2000)":"8.036249999999999","赤纬(J2000)":"+9h29m10s","赤纬D(J2000)":"9.48611111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.7","方位角":"111","详细描述":"γ in Lord Rosse's diagram","简略描述":"γ in Lord Rosse's diagram"},{"ID":"2511","标识":"NGC2511","M标识":"NGC2511","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"8h2m15s","赤经D(J2000)":"8.0375","赤纬(J2000)":"+9h23m43s","赤纬D(J2000)":"9.395277777777777","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"120","详细描述":"extremely faint, III 512 to northeast, (= β) [in Lord Rosse's diagram]","简略描述":"eF, III 512 nf, (= β)"},{"ID":"2512","标识":"NGC2512","M标识":"NGC2512","拓展名":"","组件":"","Class":"III 605","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h3m7.6s","赤经D(J2000)":"8.052111111111111","赤纬(J2000)":"+23h23m30s","赤纬D(J2000)":"23.391666666666666","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"113","详细描述":"very faint, small, irregularly round","简略描述":"vF, S, iR"},{"ID":"2513","标识":"NGC2513","M标识":"NGC2513","拓展名":"","组件":"","Class":"III 512","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h2m24.7s","赤经D(J2000)":"8.040194444444444","赤纬(J2000)":"+9h24m50s","赤纬D(J2000)":"9.41388888888889","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.5","短轴(分)":"2","方位角":"170","详细描述":"faint, small, round, pretty suddenly much brighter middle, mottled but not resolved","简略描述":"F, S, R, psmbM, r"},{"ID":"2514","标识":"NGC2514","M标识":"NGC2514","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h2m49.7s","赤经D(J2000)":"8.047138888888888","赤纬(J2000)":"+15h48m28s","赤纬D(J2000)":"15.807777777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"21","详细描述":"extremely faint, pretty small, irregularly round, diffuse","简略描述":"eF, pS, irrR, dif"},{"ID":"2515","标识":"NGC2515","M标识":"NGC2515","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h3m21.3s","赤经D(J2000)":"8.055916666666667","赤纬(J2000)":"+20h11m17s","赤纬D(J2000)":"20.188055555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, cometic","简略描述":"vF, cometic"},{"ID":"2516","标识":"NGC2516","M标识":"NGC2516","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"短跑人星团","类型":"OCL","含重复类型":"OCL","形态":"I3r","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"7h58m4s","赤经D(J2000)":"7.967777777777778","赤纬(J2000)":"-60h45m12s","赤纬D(J2000)":"-60.75333333333333","可见光星等V":"3.8","摄影(蓝光)星等B":"3.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"22","短轴(分)":"","方位角":"","详细描述":"a cluster, very bright, very large, pretty rich, stars from 7th to 13th magnitude","简略描述":"Cl, vB, vL, pRi, st 7…13"},{"ID":"2517","标识":"NGC2517","M标识":"NGC2517","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h2m47s","赤经D(J2000)":"8.046388888888888","赤纬(J2000)":"-12h19m2s","赤纬D(J2000)":"-12.317222222222222","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.4","短轴(分)":"1","方位角":"67","详细描述":"faint, very small, round, between three 13th to 14th magnitude stars","简略描述":"F, vS, R, bet 3 st 13·14"},{"ID":"2518","标识":"NGC2518","M标识":"NGC2518","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h7m20.2s","赤经D(J2000)":"8.122277777777779","赤纬(J2000)":"+51h7m56s","赤纬D(J2000)":"51.132222222222225","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"1","方位角":"35","详细描述":"two nebulae (the other being NGC 2519), faint, large, round, gradually brighter middle, with a difference of 42 seconds of time in right ascension","简略描述":"Two neb, F, L, R, gbM, Δα = 42s"},{"ID":"2519","标识":"NGC2519","M标识":"NGC2519","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h7m58.8s","赤经D(J2000)":"8.133000000000001","赤纬(J2000)":"+51h7m44s","赤纬D(J2000)":"51.12888888888889","可见光星等V":"99","摄影(蓝光)星等B":"14.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"two nebulae (the other being NGC 2518), faint, large, round, gradually brighter middle, with a difference of 42 seconds of time in right ascension","简略描述":"Two neb, F, L, R, gbM, Δα = 42s"},{"ID":"2520","标识":"NGC2520","M标识":"NGC2520","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"III1p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h4m58.1s","赤经D(J2000)":"8.082805555555556","赤纬(J2000)":"-28h8m46s","赤纬D(J2000)":"-28.14611111111111","可见光星等V":"6.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, pretty rich, pretty compressed","简略描述":"Cl, B, pRi, pC"},{"ID":"2521","标识":"NGC2521","M标识":"NGC2521","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h8m49.4s","赤经D(J2000)":"8.147055555555555","赤纬(J2000)":"+57h46m11s","赤纬D(J2000)":"57.76972222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"45","详细描述":"pretty faint, pretty large, round, pretty suddenly brighter middle, 9th magnitude star 3 arcmin to northwest","简略描述":"pF, pL, R, psbM, * 9, np 3'"},{"ID":"2522","标识":"NGC2522","M标识":"NGC2522","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h6m13.5s","赤经D(J2000)":"8.10375","赤纬(J2000)":"+17h42m24s","赤纬D(J2000)":"17.706666666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.3","方位角":"32","详细描述":"very faint, very small, extended, pretty suddenly brighter middle","简略描述":"vF, vS, E, psbM"},{"ID":"2523","标识":"NGC2523","M标识":"NGC2523","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"8h15m0s","赤经D(J2000)":"8.25","赤纬(J2000)":"+73h34m44s","赤纬D(J2000)":"73.57888888888888","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.9","短轴(分)":"1.8","方位角":"57","详细描述":"pretty bright, pretty large, a little extended, a little brighter middle, star near","简略描述":"pB, pL, lE, lbM, * nr"},{"ID":"2524","标识":"NGC2524","M标识":"NGC2524","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h8m9.6s","赤经D(J2000)":"8.136","赤纬(J2000)":"+39h9m28s","赤纬D(J2000)":"39.157777777777774","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1","方位角":"125","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"2525","标识":"NGC2525","M标识":"NGC2525","拓展名":"","组件":"","Class":"III 877","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h5m38s","赤经D(J2000)":"8.09388888888889","赤纬(J2000)":"-11h25m39s","赤纬D(J2000)":"-11.4275","可见光星等V":"11.6","摄影(蓝光)星等B":"12.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3","短轴(分)":"2","方位角":"75","详细描述":"considerably faint, pretty large, round, very gradually a very little brighter middle, among stars","简略描述":"cF, pL, R, vgvlbM, am st"},{"ID":"2526","标识":"NGC2526","M标识":"NGC2526","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h6m58.4s","赤经D(J2000)":"8.116222222222222","赤纬(J2000)":"+8h0m15s","赤纬D(J2000)":"8.004166666666666","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"131","详细描述":"very faint, small, much extended","简略描述":"vF, S, mE"},{"ID":"2527","标识":"NGC2527","M标识":"NGC2527","拓展名":"","组件":"","Class":"VIII 30","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h4m58.1s","赤经D(J2000)":"8.082805555555556","赤纬(J2000)":"-28h8m46s","赤纬D(J2000)":"-28.14611111111111","可见光星等V":"6.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, pretty rich, pretty compressed","简略描述":"Cl, vL, pRi, lC, st 10…15"},{"ID":"2528","标识":"NGC2528","M标识":"NGC2528","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h7m25s","赤经D(J2000)":"8.123611111111112","赤纬(J2000)":"+39h11m41s","赤纬D(J2000)":"39.19472222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"2529","标识":"NGC2529","M标识":"NGC2529","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h6m57.3s","赤经D(J2000)":"8.115916666666667","赤纬(J2000)":"+17h49m43s","赤纬D(J2000)":"17.828611111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint (suspected)","简略描述":"eF (suspected)"},{"ID":"2530","标识":"NGC2530","M标识":"NGC2530","拓展名":"","组件":"","Class":"III 752","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h7m55.7s","赤经D(J2000)":"8.132138888888889","赤纬(J2000)":"+17h49m6s","赤纬D(J2000)":"17.81833333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"170","详细描述":"extremely faint, a little extended, a very small (faint) star to the north","简略描述":"eF, lE, vS * n"},{"ID":"2531","标识":"NGC2531","M标识":"NGC2531","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h7m56s","赤经D(J2000)":"8.132222222222223","赤纬(J2000)":"+17h50m6s","赤纬D(J2000)":"17.834999999999997","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"2532","标识":"NGC2532","M标识":"NGC2532","拓展名":"","组件":"","Class":"II 726","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h10m15.2s","赤经D(J2000)":"8.170888888888888","赤纬(J2000)":"+33h57m22s","赤纬D(J2000)":"33.95611111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"10","详细描述":"pretty bright, pretty large, round, very gradually a little brighter middle, mottled but not resolved, 2 stars to northeast","简略描述":"pB, pL, R, vglbM, r, 2 st nf"},{"ID":"2533","标识":"NGC2533","M标识":"NGC2533","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h7m4s","赤经D(J2000)":"8.117777777777778","赤纬(J2000)":"-29h52m0s","赤纬D(J2000)":"-29.866666666666667","可见光星等V":"7.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, rich, compressed, stars of 9th and 13th to 14th magnitude","简略描述":"Cl, pL, Ri, C, st 9, 13…14"},{"ID":"2534","标识":"NGC2534","M标识":"NGC2534","拓展名":"","组件":"","Class":"III 840","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1\/P","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h12m54.1s","赤经D(J2000)":"8.215027777777777","赤纬(J2000)":"+55h40m19s","赤纬D(J2000)":"55.67194444444444","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"pretty faint, pretty large, round, pretty suddenly brighter middle, 8th magnitude star at position angle 164°","简略描述":"pF, pL, R, psbM, * 8, 164°"},{"ID":"2535","标识":"NGC2535","M标识":"NGC2535","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc\/P","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h11m13.6s","赤经D(J2000)":"8.187111111111111","赤纬(J2000)":"+25h12m26s","赤纬D(J2000)":"25.20722222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.5","短轴(分)":"1.2","方位角":"12","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"2536","标识":"NGC2536","M标识":"NGC2536","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h11m16.1s","赤经D(J2000)":"8.187805555555556","赤纬(J2000)":"+25h10m47s","赤纬D(J2000)":"25.179722222222225","可见光星等V":"14.2","摄影(蓝光)星等B":"14.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"49","详细描述":"extremely faint, very small, round","简略描述":"vF, vS, R"},{"ID":"2537","标识":"NGC2537","M标识":"NGC2537","拓展名":"","组件":"","Class":"IV 55","业余排名":"9","中文名":"熊掌星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h13m14.4s","赤经D(J2000)":"8.220666666666666","赤纬(J2000)":"+45h59m29s","赤纬D(J2000)":"45.99138888888889","可见光星等V":"11.7","摄影(蓝光)星等B":"12.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"162","详细描述":"a globular cluster, pretty bright, pretty large, round, well resolved, clearly consisting of stars, stars of 20th magnitude","简略描述":"globular, pB, pL, R, rrr, st 20"},{"ID":"2538","标识":"NGC2538","M标识":"NGC2538","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"8h11m23s","赤经D(J2000)":"8.189722222222223","赤纬(J2000)":"+3h37m59s","赤纬D(J2000)":"3.6330555555555555","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"25","详细描述":"very faint, very small, round, much brighter middle","简略描述":"vF, vS, R, mbM"},{"ID":"2539","标识":"NGC2539","M标识":"NGC2539","拓展名":"","组件":"","Class":"VII 11","业余排名":"5","中文名":"盘状星团","类型":"OCL","含重复类型":"OCL","形态":"II1m","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h10m36.9s","赤经D(J2000)":"8.176916666666665","赤纬(J2000)":"-12h49m14s","赤纬D(J2000)":"-12.820555555555556","可见光星等V":"6.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, rich, a little compressed, stars from 11th to 13th magnitude","简略描述":"Cl, vL, Ri, lC, st 11…13"},{"ID":"2540","标识":"NGC2540","M标识":"NGC2540","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h12m46.5s","赤经D(J2000)":"8.212916666666667","赤纬(J2000)":"+26h21m41s","赤纬D(J2000)":"26.36138888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"125","详细描述":"very faint, pretty large, irregularly round, brighter middle, mottled but not resolved","简略描述":"vF, pL, iR, bM, r"},{"ID":"2541","标识":"NGC2541","M标识":"NGC2541","拓展名":"","组件":"","Class":"III 710","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h14m40s","赤经D(J2000)":"8.244444444444444","赤纬(J2000)":"+49h3m43s","赤纬D(J2000)":"49.06194444444444","可见光星等V":"11.8","摄影(蓝光)星等B":"12.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.9","长轴(分)":"6.3","短轴(分)":"3.2","方位角":"165","详细描述":"faint, large, extended, very gradually brighter middle","简略描述":"F, L, E, vgbM"},{"ID":"2542","标识":"NGC2542","M标识":"NGC2542","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h11m16.2s","赤经D(J2000)":"8.187833333333334","赤纬(J2000)":"-12h55m35s","赤纬D(J2000)":"-12.926388888888889","可见光星等V":"99","摄影(蓝光)星等B":"4.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a nebulous 5th magnitude star","简略描述":"Nebulous * 5th mag"},{"ID":"2543","标识":"NGC2543","M标识":"NGC2543","拓展名":"","组件":"","Class":"II 719","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h12m57.8s","赤经D(J2000)":"8.216055555555554","赤纬(J2000)":"+36h15m13s","赤纬D(J2000)":"36.25361111111111","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.3","短轴(分)":"1.2","方位角":"45","详细描述":"faint, pretty large, irregularly round, very gradually brighter middle, double star near","简略描述":"F, pL, iR, vgbM, D * nr"},{"ID":"2544","标识":"NGC2544","M标识":"NGC2544","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"8h21m40.3s","赤经D(J2000)":"8.361194444444443","赤纬(J2000)":"+73h59m18s","赤纬D(J2000)":"73.98833333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"70","详细描述":"most extremely faint, pretty small, round, several bright stars around","简略描述":"eeF, pS, R, sev B st around"},{"ID":"2545","标识":"NGC2545","M标识":"NGC2545","拓展名":"","组件":"","Class":"II 627","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h14m14.1s","赤经D(J2000)":"8.23725","赤纬(J2000)":"+21h21m22s","赤纬D(J2000)":"21.35611111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"1.2","方位角":"170","详细描述":"faint, small, a little extended 45°, 8th magnitude star 4 arcmin to northwest","简略描述":"F, S, lE 45°, * 8 np 4'"},{"ID":"2546","标识":"NGC2546","M标识":"NGC2546","拓展名":"","组件":"","Class":"","业余排名":"4","中文名":"心与匕首星团","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h12m24s","赤经D(J2000)":"8.206666666666665","赤纬(J2000)":"-37h37m0s","赤纬D(J2000)":"-37.61666666666667","可见光星等V":"6.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"70","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, large, a little compressed, irregularly extended, stars from 9th to 12th magnitude","简略描述":"Cl, B, L, lC, iE, st 9…12"},{"ID":"2547","标识":"NGC2547","M标识":"NGC2547","拓展名":"","组件":"","Class":"","业余排名":"4","中文名":"金耳环星团","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"8h10m9s","赤经D(J2000)":"8.169166666666666","赤纬(J2000)":"-49h13m30s","赤纬D(J2000)":"-49.225","可见光星等V":"4.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, large, a little compressed, stars from 7th to 16th magnitude","简略描述":"Cl, B, L, lC, st 7…16"},{"ID":"2548","标识":"NGC2548","M标识":"M48","拓展名":"","组件":"","Class":"VI 22","业余排名":"1","中文名":"蜂巢星团","类型":"OCL","含重复类型":"OCL","形态":"I2m","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h13m43.1s","赤经D(J2000)":"8.22863888888889","赤纬(J2000)":"-5h45m2s","赤纬D(J2000)":"-5.750555555555556","可见光星等V":"5.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"30","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, pretty rich, pretty much compressed, stars from 9th to 13th magnitude","简略描述":"Cl, vL, pRi, pmC, st 9…13"},{"ID":"2549","标识":"NGC2549","M标识":"NGC2549","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h18m58.3s","赤经D(J2000)":"8.316194444444445","赤纬(J2000)":"+57h48m11s","赤纬D(J2000)":"57.80305555555555","可见光星等V":"11.2","摄影(蓝光)星等B":"12.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.8","短轴(分)":"1.2","方位角":"177","详细描述":"pretty bright, small, much extended 0°, pretty suddenly much brighter middle","简略描述":"pB, S, mE 0°, psmbM"},{"ID":"2550","标识":"NGC2550","M标识":"NGC2550","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"8h24m33.7s","赤经D(J2000)":"8.409361111111112","赤纬(J2000)":"+74h0m43s","赤纬D(J2000)":"74.01194444444444","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"1","短轴(分)":"0.4","方位角":"103","详细描述":"most extremely faint, pretty small, considerably extended","简略描述":"eeF, pS, cE"},{"ID":"2551","标识":"NGC2551","M标识":"NGC2551","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"8h24m50.2s","赤经D(J2000)":"8.413944444444445","赤纬(J2000)":"+73h24m45s","赤纬D(J2000)":"73.41250000000001","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.6","短轴(分)":"1","方位角":"55","详细描述":"very faint, small, faint star in centre","简略描述":"vF, S, F * in centre"},{"ID":"2552","标识":"NGC2552","M标识":"NGC2552","拓展名":"","组件":"","Class":"III 711","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h19m19.6s","赤经D(J2000)":"8.322111111111111","赤纬(J2000)":"+50h0m25s","赤纬D(J2000)":"50.00694444444444","可见光星等V":"12.1","摄影(蓝光)星等B":"12.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"3.6","短轴(分)":"2.1","方位角":"57","详细描述":"extremely faint, considerably large, a little extended 45°","简略描述":"eF, cL, lE 45°"},{"ID":"2553","标识":"NGC2553","M标识":"NGC2553","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h17m35.1s","赤经D(J2000)":"8.293083333333334","赤纬(J2000)":"+20h54m12s","赤纬D(J2000)":"20.903333333333332","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"72","详细描述":"very faint, small, gradually a little brighter middle","简略描述":"vF, S, glbM"},{"ID":"2554","标识":"NGC2554","M标识":"NGC2554","拓展名":"","组件":"","Class":"II 303","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h17m53.4s","赤经D(J2000)":"8.298166666666667","赤纬(J2000)":"+23h28m20s","赤纬D(J2000)":"23.47222222222222","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3.2","短轴(分)":"2.4","方位角":"147","详细描述":"faint, small, round, much brighter middle, mottled but not resolved","简略描述":"F, S, R, mbM, r"},{"ID":"2555","标识":"NGC2555","M标识":"NGC2555","拓展名":"","组件":"","Class":"III 256","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h17m56.3s","赤经D(J2000)":"8.298972222222222","赤纬(J2000)":"+0h44m42s","赤纬D(J2000)":"0.745","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"115","详细描述":"very faint, considerably small, irregular figure, 3 small (faint) stars involved?","简略描述":"vF, cS, iF, 3 S st inv?"},{"ID":"2556","标识":"NGC2556","M标识":"NGC2556","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m0.8s","赤经D(J2000)":"8.316888888888888","赤纬(J2000)":"+20h56m15s","赤纬D(J2000)":"20.9375","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"138","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"2557","标识":"NGC2557","M标识":"NGC2557","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"马吕斯星系团","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m10.9s","赤经D(J2000)":"8.319694444444444","赤纬(J2000)":"+21h26m10s","赤纬D(J2000)":"21.43611111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1","方位角":"55","详细描述":"extremely faint, extremely small, round, a little brighter middle","简略描述":"eF, eS, R, lbM"},{"ID":"2558","标识":"NGC2558","M标识":"NGC2558","拓展名":"","组件":"","Class":"III 606","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m12.7s","赤经D(J2000)":"8.320194444444445","赤纬(J2000)":"+20h30m41s","赤纬D(J2000)":"20.511388888888888","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"160","详细描述":"very faint, small, round, suddenly brighter middle, stellar","简略描述":"vF, S, R, sbM, stellar"},{"ID":"2559","标识":"NGC2559","M标识":"NGC2559","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h17m6.1s","赤经D(J2000)":"8.285027777777778","赤纬(J2000)":"-27h27m25s","赤纬D(J2000)":"-27.456944444444442","可见光星等V":"10.9","摄影(蓝光)星等B":"11.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"3","短轴(分)":"1.4","方位角":"6","详细描述":"faint, pretty large, gradually much brighter middle, among 60 stars","简略描述":"F, pL, gmbM, am 60 st"},{"ID":"2560","标识":"NGC2560","M标识":"NGC2560","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m51.9s","赤经D(J2000)":"8.331083333333334","赤纬(J2000)":"+20h59m5s","赤纬D(J2000)":"20.984722222222224","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.4","短轴(分)":"0.3","方位角":"93","详细描述":"faint, pretty large","简略描述":"F, pL"},{"ID":"2561","标识":"NGC2561","M标识":"NGC2561","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h19m36.7s","赤经D(J2000)":"8.32686111111111","赤纬(J2000)":"+4h39m24s","赤纬D(J2000)":"4.656666666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"138","详细描述":"very faint, small, round, making a triangle with 2 stars","简略描述":"vF, S, R, 2 st Δ"},{"ID":"2562","标识":"NGC2562","M标识":"NGC2562","拓展名":"","组件":"","Class":"III 607","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m23.5s","赤经D(J2000)":"8.339861111111112","赤纬(J2000)":"+21h7m54s","赤纬D(J2000)":"21.131666666666668","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1","短轴(分)":"0.7","方位角":"3","详细描述":"very faint, considerably small, round","简略描述":"vF, cS, R"},{"ID":"2563","标识":"NGC2563","M标识":"NGC2563","拓展名":"","组件":"","Class":"II 634","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m35.7s","赤经D(J2000)":"8.343250000000001","赤纬(J2000)":"+21h4m5s","赤纬D(J2000)":"21.068055555555556","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"1.7","方位角":"80","详细描述":"considerably faint, small, round, brighter middle","简略描述":"cF, S, R, bM"},{"ID":"2564","标识":"NGC2564","M标识":"NGC2564","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h18m30s","赤经D(J2000)":"8.308333333333334","赤纬(J2000)":"-21h48m58s","赤纬D(J2000)":"-21.816111111111113","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"81","详细描述":"very faint, small, round, gradually brighter middle, among many stars","简略描述":"vF, S, R, gbM, am many st"},{"ID":"2565","标识":"NGC2565","M标识":"NGC2565","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m48.2s","赤经D(J2000)":"8.330055555555555","赤纬(J2000)":"+22h1m53s","赤纬D(J2000)":"22.031388888888888","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"167","详细描述":"faint, binuclear","简略描述":"F, biN"},{"ID":"2566","标识":"NGC2566","M标识":"NGC2566","拓展名":"","组件":"","Class":"III 288","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h18m45.5s","赤经D(J2000)":"8.31263888888889","赤纬(J2000)":"-25h30m2s","赤纬D(J2000)":"-25.500555555555554","可见光星等V":"11","摄影(蓝光)星等B":"11.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.9","短轴(分)":"1.7","方位角":"62","详细描述":"very faint, considerably large, extremely mottled but not resolved","简略描述":"vF, cL, er"},{"ID":"2567","标识":"NGC2567","M标识":"NGC2567","拓展名":"","组件":"","Class":"VII 64","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h18m32s","赤经D(J2000)":"8.30888888888889","赤纬(J2000)":"-30h38m24s","赤纬D(J2000)":"-30.64","可见光星等V":"7.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"11","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, a little compressed, irregularly round, stars from 11th to 14th magnitude","简略描述":"Cl, pL, pRi, lC, iR, st 11…14"},{"ID":"2568","标识":"NGC2568","M标识":"NGC2568","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h18m18.1s","赤经D(J2000)":"8.305027777777779","赤纬(J2000)":"-37h6m19s","赤纬D(J2000)":"-37.10527777777778","可见光星等V":"10.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, faint star involved","简略描述":"vF, pL, F * inv"},{"ID":"2569","标识":"NGC2569","M标识":"NGC2569","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h21m21.1s","赤经D(J2000)":"8.35586111111111","赤纬(J2000)":"+20h52m5s","赤纬D(J2000)":"20.868055555555557","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"117","详细描述":"very faint, considerably extended, 3 very small (faint) stars to east","简略描述":"vF, cE, 3 vS st f"},{"ID":"2570","标识":"NGC2570","M标识":"NGC2570","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h21m22.6s","赤经D(J2000)":"8.356277777777777","赤纬(J2000)":"+20h54m38s","赤纬D(J2000)":"20.910555555555554","可见光星等V":"14.5","摄影(蓝光)星等B":"15.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"75","详细描述":"most extremely faint, large, round, northern of 2","简略描述":"eeF, L, R, n of 2"},{"ID":"2571","标识":"NGC2571","M标识":"NGC2571","拓展名":"","组件":"","Class":"VI 39","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV1p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h18m56.3s","赤经D(J2000)":"8.31563888888889","赤纬(J2000)":"-29h44m57s","赤纬D(J2000)":"-29.749166666666667","可见光星等V":"7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, considerably rich, a little compressed, stars from 9th magnitude","简略描述":"Cl, vL, cRi, lC, st 9…"},{"ID":"2572","标识":"NGC2572","M标识":"NGC2572","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h21m24.7s","赤经D(J2000)":"8.35686111111111","赤纬(J2000)":"+19h8m52s","赤纬D(J2000)":"19.147777777777776","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"133","详细描述":"extremely faint, very small, irregular figure, 13th magnitude star attached","简略描述":"eF, vS, iF, * 13 att"},{"ID":"2573","标识":"NGC2573","M标识":"NGC2573","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"南极星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"南极座","星座(En)":"OCT","赤经(J2000)":"1h41m53.2s","赤经D(J2000)":"1.6981111111111111","赤纬(J2000)":"-89h20m3s","赤纬D(J2000)":"-89.33416666666666","可见光星等V":"13.5","摄影(蓝光)星等B":"14.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.9","短轴(分)":"0.7","方位角":"85","详细描述":"faint, small, round, gradually a little brighter middle, Polarissima Australis","简略描述":"F, S, R, glbM, Polariss Austr"},{"ID":"2574","标识":"NGC2574","M标识":"NGC2574","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h20m48.1s","赤经D(J2000)":"8.346694444444445","赤纬(J2000)":"-8h55m6s","赤纬D(J2000)":"-8.918333333333333","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.3","短轴(分)":"1.2","方位角":"153","详细描述":"extremely faint, pretty small, partially resolved (some stars seen), magnitude 7.5 star 5 arcmin to northeast","简略描述":"eF, pS, rr, * 7.5 nf 5'"},{"ID":"2575","标识":"NGC2575","M标识":"NGC2575","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h22m45s","赤经D(J2000)":"8.379166666666666","赤纬(J2000)":"+24h17m49s","赤纬D(J2000)":"24.296944444444446","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"145","详细描述":"extremely faint, pretty large, irregularly round, several faint stars involved","简略描述":"eF, pL, iR, sev F st inv"},{"ID":"2576","标识":"NGC2576","M标识":"NGC2576","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h22m57.8s","赤经D(J2000)":"8.382722222222222","赤纬(J2000)":"+25h44m22s","赤纬D(J2000)":"25.739444444444445","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"0.3","方位角":"41","详细描述":"extremely faint, extremely small, stellar","简略描述":"eF, eS, stellar"},{"ID":"2577","标识":"NGC2577","M标识":"NGC2577","拓展名":"","组件":"","Class":"II 259","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h22m43.4s","赤经D(J2000)":"8.378722222222223","赤纬(J2000)":"+22h33m13s","赤纬D(J2000)":"22.553611111111113","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"105","详细描述":"faint, small, irregular figure, mottled but not resolved","简略描述":"F, S, iF, r"},{"ID":"2578","标识":"NGC2578","M标识":"NGC2578","拓展名":"","组件":"","Class":"III 902","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h21m24.2s","赤经D(J2000)":"8.356722222222222","赤纬(J2000)":"-13h19m5s","赤纬D(J2000)":"-13.318055555555555","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.2","短轴(分)":"1.3","方位角":"80","详细描述":"faint, very little extended, gradually brighter middle, mottled but not resolved, among 50 stars","简略描述":"F, vlE, gbM, r, am 50 st"},{"ID":"2579","标识":"NGC2579","M标识":"NGC2579","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV1p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h20m52.7s","赤经D(J2000)":"8.347972222222223","赤纬(J2000)":"-36h12m58s","赤纬D(J2000)":"-36.21611111111111","可见光星等V":"7.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"19","短轴(分)":"","方位角":"","详细描述":"a double star (h 4083) in a pretty small nebula, among 70 stars","简略描述":"D * (h 4083) in pS neb, am 70 st"},{"ID":"2580","标识":"NGC2580","M标识":"NGC2580","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h21m28s","赤经D(J2000)":"8.357777777777777","赤纬(J2000)":"-30h17m30s","赤纬D(J2000)":"-30.291666666666668","可见光星等V":"9.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a cluster, considerably large, pretty rich, pretty compressed, round, stars of 12th magnitude","简略描述":"Cl, cL, pRi, pC, R, st 12"},{"ID":"2581","标识":"NGC2581","M标识":"NGC2581","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h24m30.9s","赤经D(J2000)":"8.408583333333334","赤纬(J2000)":"+18h35m49s","赤纬D(J2000)":"18.596944444444443","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"10","详细描述":"very faint, very small, round, very faint star involved, faint star attached","简略描述":"vF, vS, R, vF * inv, F * att"},{"ID":"2582","标识":"NGC2582","M标识":"NGC2582","拓展名":"","组件":"","Class":"III 753","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h25m12.1s","赤经D(J2000)":"8.420027777777777","赤纬(J2000)":"+20h20m3s","赤纬D(J2000)":"20.334166666666665","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"very faint, pretty small, round, gradually a little brighter middle, star 75 arcsec to west","简略描述":"vF, pS, R, glbM, * p 75\""},{"ID":"2583","标识":"NGC2583","M标识":"NGC2583","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h23m7.9s","赤经D(J2000)":"8.385527777777778","赤纬(J2000)":"-5h0m9s","赤纬D(J2000)":"-5.0025","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, small, round, suddenly brighter middle and nucleus, 1st of 4","简略描述":"vF, S, R, sbMN, 1st of 4"},{"ID":"2584","标识":"NGC2584","M标识":"NGC2584","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h23m15.5s","赤经D(J2000)":"8.387638888888889","赤纬(J2000)":"-4h58m15s","赤纬D(J2000)":"-4.970833333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"2","详细描述":"very faint, small, round, 2nd of 4","简略描述":"vF, S, R, 2nd of 4"},{"ID":"2585","标识":"NGC2585","M标识":"NGC2585","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h23m26.2s","赤经D(J2000)":"8.390611111111111","赤纬(J2000)":"-4h54m55s","赤纬D(J2000)":"-4.915277777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.8","短轴(分)":"0.8","方位角":"95","详细描述":"very faint, small, round, 3rd of 4","简略描述":"vF, S, R, 3rd of 4"},{"ID":"2586","标识":"NGC2586","M标识":"NGC2586","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h23m31.4s","赤经D(J2000)":"8.392055555555554","赤纬(J2000)":"-4h57m5s","赤纬D(J2000)":"-4.951388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty small, round, 4th of 4 (nebulous?)","简略描述":"eF, pS, R, 4th of 4 (? neb)"},{"ID":"2587","标识":"NGC2587","M标识":"NGC2587","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h23m24s","赤经D(J2000)":"8.389999999999999","赤纬(J2000)":"-29h30m31s","赤纬D(J2000)":"-29.50861111111111","可见光星等V":"9.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty much compressed middle, irregular figure, stars from 9th to 13th magnitude","简略描述":"Cl, pmCM, iF, st 9…13"},{"ID":"2588","标识":"NGC2588","M标识":"NGC2588","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h23m9.5s","赤经D(J2000)":"8.385972222222222","赤纬(J2000)":"-32h58m30s","赤纬D(J2000)":"-32.975","可见光星等V":"11.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"a cluster, faint, small, round, gradually brighter middle, stars of 15th magnitude","简略描述":"Cl, F, S, R, gbM, st 15"},{"ID":"2589","标识":"NGC2589","M标识":"NGC2589","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h24m29.4s","赤经D(J2000)":"8.408166666666666","赤纬(J2000)":"-8h46m4s","赤纬D(J2000)":"-8.767777777777779","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty small, a little extended","简略描述":"pF, pS, lE"},{"ID":"2590","标识":"NGC2590","M标识":"NGC2590","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h25m2s","赤经D(J2000)":"8.417222222222222","赤纬(J2000)":"-0h35m28s","赤纬D(J2000)":"-0.5911111111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.2","短轴(分)":"0.7","方位角":"77","详细描述":"a faint star involved in very faint, very small, little extended nebula","简略描述":"F * inv in vF, vS, lE neb"},{"ID":"2591","标识":"NGC2591","M标识":"NGC2591","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"8h37m25.5s","赤经D(J2000)":"8.623750000000001","赤纬(J2000)":"+78h1m32s","赤纬D(J2000)":"78.02555555555556","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"3","短轴(分)":"0.6","方位角":"32","详细描述":"faint, small, extended, a little brighter middle","简略描述":"F, S, E, lbM"},{"ID":"2592","标识":"NGC2592","M标识":"NGC2592","拓展名":"","组件":"","Class":"II 315","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h27m8.1s","赤经D(J2000)":"8.45225","赤纬(J2000)":"+25h58m15s","赤纬D(J2000)":"25.97083333333333","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"45","详细描述":"pretty faint, small, round, very suddenly brighter middle similar to a star","简略描述":"pF, S, R, vsbM *"},{"ID":"2593","标识":"NGC2593","M标识":"NGC2593","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h26m47.8s","赤经D(J2000)":"8.446611111111112","赤纬(J2000)":"+17h22m28s","赤纬D(J2000)":"17.374444444444446","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"172","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"2594","标识":"NGC2594","M标识":"NGC2594","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h27m17.1s","赤经D(J2000)":"8.454749999999999","赤纬(J2000)":"+25h52m43s","赤纬D(J2000)":"25.878611111111113","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"27","详细描述":"extremely faint","简略描述":"eF"},{"ID":"2595","标识":"NGC2595","M标识":"NGC2595","拓展名":"","组件":"","Class":"III 599","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h27m41.9s","赤经D(J2000)":"8.461638888888888","赤纬(J2000)":"+21h28m46s","赤纬D(J2000)":"21.479444444444443","可见光星等V":"12.3","摄影(蓝光)星等B":"12.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"3.2","短轴(分)":"2.4","方位角":"45","详细描述":"very faint, pretty large, irregular figure, mottled but not resolved, double star 2 arcmin to southwest","简略描述":"vF, pL, iF, r, D * sp 2'"},{"ID":"2596","标识":"NGC2596","M标识":"NGC2596","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h27m26.6s","赤经D(J2000)":"8.457388888888888","赤纬(J2000)":"+17h17m4s","赤纬D(J2000)":"17.284444444444446","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"65","详细描述":"very faint, small, a little extended","简略描述":"vF, S, lE"},{"ID":"2597","标识":"NGC2597","M标识":"NGC2597","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h29m57.4s","赤经D(J2000)":"8.499277777777777","赤纬(J2000)":"+21h30m9s","赤纬D(J2000)":"21.5025","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"2598","标识":"NGC2598","M标识":"NGC2598","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h30m2.5s","赤经D(J2000)":"8.500694444444445","赤纬(J2000)":"+21h29m18s","赤纬D(J2000)":"21.488333333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"3","详细描述":"faint, small","简略描述":"F, S"},{"ID":"2599","标识":"NGC2599","M标识":"NGC2599","拓展名":"","组件":"","Class":"III 234","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h32m11.2s","赤经D(J2000)":"8.536444444444445","赤纬(J2000)":"+22h33m39s","赤纬D(J2000)":"22.560833333333335","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"1.7","方位角":"105","详细描述":"very faint, small, stellar","简略描述":"vF, S, stellar"},{"ID":"2600","标识":"NGC2600","M标识":"NGC2600","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h34m44.8s","赤经D(J2000)":"8.57911111111111","赤纬(J2000)":"+52h42m55s","赤纬D(J2000)":"52.71527777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"78","详细描述":"no description","简略描述":"No description"},{"ID":"2601","标识":"NGC2601","M标识":"NGC2601","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"飞鱼座","星座(En)":"VOL","赤经(J2000)":"8h25m30.4s","赤经D(J2000)":"8.42511111111111","赤纬(J2000)":"-68h7m4s","赤纬D(J2000)":"-68.11777777777777","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"120","详细描述":"faint, pretty small, round, gradually brighter middle","简略描述":"F, pS, R, gbM"},{"ID":"2602","标识":"NGC2602","M标识":"NGC2602","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h35m4.3s","赤经D(J2000)":"8.584527777777778","赤纬(J2000)":"+52h49m53s","赤纬D(J2000)":"52.831388888888895","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"30","详细描述":"extremely faint, small, round, star at 95°","简略描述":"eF, S, R, * 95°"},{"ID":"2603","标识":"NGC2603","M标识":"NGC2603","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h34m31.2s","赤经D(J2000)":"8.575333333333333","赤纬(J2000)":"+52h50m25s","赤纬D(J2000)":"52.84027777777778","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"2604","标识":"NGC2604","M标识":"NGC2604","拓展名":"","组件":"","Class":"III 292","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h33m22.9s","赤经D(J2000)":"8.556361111111112","赤纬(J2000)":"+29h32m19s","赤纬D(J2000)":"29.538611111111113","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"1.7","方位角":"","详细描述":"very faint, pretty large, round, a little brighter middle, mottled but not resolved, double star near","简略描述":"vF, pL, R, lbM, r, D * nr"},{"ID":"2605","标识":"NGC2605","M标识":"NGC2605","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h34m53.3s","赤经D(J2000)":"8.581472222222223","赤纬(J2000)":"+52h48m16s","赤纬D(J2000)":"52.80444444444444","可见光星等V":"15.5","摄影(蓝光)星等B":"16.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"20","详细描述":"faint, small, a little brighter middle","简略描述":"F, S, lbM"},{"ID":"2606","标识":"NGC2606","M标识":"NGC2606","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h35m34.4s","赤经D(J2000)":"8.59288888888889","赤纬(J2000)":"+52h47m19s","赤纬D(J2000)":"52.78861111111111","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"45","详细描述":"considerably faint, small, round, star at 310°","简略描述":"cF, S, R, * 310°"},{"ID":"2607","标识":"NGC2607","M标识":"NGC2607","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h33m56.6s","赤经D(J2000)":"8.565722222222224","赤纬(J2000)":"+26h58m23s","赤纬D(J2000)":"26.973055555555554","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"57","详细描述":"extremely faint","简略描述":"eF"},{"ID":"2608","标识":"NGC2608","M标识":"NGC2608","拓展名":"","组件":"","Class":"II 318","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h35m17.2s","赤经D(J2000)":"8.588111111111111","赤纬(J2000)":"+28h28m24s","赤纬D(J2000)":"28.473333333333333","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.9","短轴(分)":"1.2","方位角":"60","详细描述":"faint, very little extended, much brighter middle, mottled but not resolved","简略描述":"F, vlE, mbM, r"},{"ID":"2609","标识":"NGC2609","M标识":"NGC2609","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"8h29m30s","赤经D(J2000)":"8.491666666666665","赤纬(J2000)":"-61h6m36s","赤纬D(J2000)":"-61.11","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty small, a little rich, a little compressed","简略描述":"Cl, pS, lRi, lC"},{"ID":"2610","标识":"NGC2610","M标识":"NGC2610","拓展名":"","组件":"","Class":"IV 35","业余排名":"6.5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h33m23.4s","赤经D(J2000)":"8.556500000000002","赤纬(J2000)":"-16h8m55s","赤纬D(J2000)":"-16.148611111111112","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"faint, small, attached to a 13th magnitude star, 7th magnitude star to northeast","简略描述":"F, S, att to * 13, * 7 nf"},{"ID":"2611","标识":"NGC2611","M标识":"NGC2611","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h35m29.1s","赤经D(J2000)":"8.591416666666667","赤纬(J2000)":"+25h1m40s","赤纬D(J2000)":"25.02777777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"42","详细描述":"very faint, small, pretty much extended, gradually brighter middle","简略描述":"vF, S, pmE, gbM"},{"ID":"2612","标识":"NGC2612","M标识":"NGC2612","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h33m50.1s","赤经D(J2000)":"8.563916666666668","赤纬(J2000)":"-13h10m27s","赤纬D(J2000)":"-13.174166666666666","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.8","短轴(分)":"0.6","方位角":"120","详细描述":"bright, small, extended, pretty suddenly brighter middle, between 2 stars","简略描述":"B, S, E, psbM, bet 2 st"},{"ID":"2613","标识":"NGC2613","M标识":"NGC2613","拓展名":"","组件":"","Class":"II 266","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"罗盘座","星座(En)":"PYX","赤经(J2000)":"8h33m22.8s","赤经D(J2000)":"8.556333333333335","赤纬(J2000)":"-22h58m22s","赤纬D(J2000)":"-22.972777777777775","可见光星等V":"10.3","摄影(蓝光)星等B":"11.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"6.5","短轴(分)":"1.4","方位角":"113","详细描述":"considerably bright, large, very much extended 110°","简略描述":"cB, L, vmE 110°"},{"ID":"2614","标识":"NGC2614","M标识":"NGC2614","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h42m47.6s","赤经D(J2000)":"8.713222222222221","赤纬(J2000)":"+72h58m36s","赤纬D(J2000)":"72.97666666666667","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2","短轴(分)":"1.6","方位角":"150","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"2615","标识":"NGC2615","M标识":"NGC2615","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h34m33.1s","赤经D(J2000)":"8.575861111111111","赤纬(J2000)":"-2h32m50s","赤纬D(J2000)":"-2.547222222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"40","详细描述":"faint, pretty small, a little extended, a little brighter middle, faint star involved, mottled but not resolved","简略描述":"F, pS, lE, lbM, F * inv r"},{"ID":"2616","标识":"NGC2616","M标识":"NGC2616","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h35m34s","赤经D(J2000)":"8.592777777777778","赤纬(J2000)":"-1h51m3s","赤纬D(J2000)":"-1.8508333333333333","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"163","详细描述":"very faint, small, round, star near to northeast","简略描述":"vF, S, R, * nr nf"},{"ID":"2617","标识":"NGC2617","M标识":"NGC2617","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h35m38.9s","赤经D(J2000)":"8.594138888888889","赤纬(J2000)":"-4h5m16s","赤纬D(J2000)":"-4.087777777777777","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"117","详细描述":"extremely faint, very small, 2 very faint stars involved","简略描述":"eF, vS, 2 vF st inv"},{"ID":"2618","标识":"NGC2618","M标识":"NGC2618","拓展名":"","组件":"","Class":"III 257","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h35m53.5s","赤经D(J2000)":"8.598194444444445","赤纬(J2000)":"+0h42m28s","赤纬D(J2000)":"0.7077777777777777","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.5","短轴(分)":"2","方位角":"140","详细描述":"extremely faint, pretty large, irregular figure","简略描述":"eF, pL, iF"},{"ID":"2619","标识":"NGC2619","M标识":"NGC2619","拓展名":"","组件":"","Class":"II 319","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h37m32.6s","赤经D(J2000)":"8.625722222222223","赤纬(J2000)":"+28h42m18s","赤纬D(J2000)":"28.705","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"35","详细描述":"faint, pretty small, round, brighter middle, mottled but not resolved","简略描述":"F, pS, R, bM, r"},{"ID":"2620","标识":"NGC2620","M标识":"NGC2620","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h37m28.3s","赤经D(J2000)":"8.624527777777779","赤纬(J2000)":"+24h56m49s","赤纬D(J2000)":"24.946944444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"0.5","方位角":"93","详细描述":"faint, small, extended","简略描述":"F, S, E"},{"ID":"2621","标识":"NGC2621","M标识":"NGC2621","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h37m36.9s","赤经D(J2000)":"8.626916666666666","赤纬(J2000)":"+25h0m1s","赤纬D(J2000)":"25.00027777777778","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"171","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"2622","标识":"NGC2622","M标识":"NGC2622","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h38m10.9s","赤经D(J2000)":"8.63636111111111","赤纬(J2000)":"+24h53m43s","赤纬D(J2000)":"24.89527777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"45","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"2623","标识":"NGC2623","M标识":"NGC2623","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h38m24.1s","赤经D(J2000)":"8.640027777777778","赤纬(J2000)":"+25h45m17s","赤纬D(J2000)":"25.754722222222224","可见光星等V":"13.4","摄影(蓝光)星等B":"14","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.4","短轴(分)":"0.7","方位角":"60","详细描述":"very faint, very small, round, brighter middle, mottled but not resolved","简略描述":"vF, vS, R, bM, r"},{"ID":"2624","标识":"NGC2624","M标识":"NGC2624","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h38m9.6s","赤经D(J2000)":"8.636","赤纬(J2000)":"+19h43m34s","赤纬D(J2000)":"19.72611111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"15","详细描述":"extremely faint","简略描述":"eF"},{"ID":"2625","标识":"NGC2625","M标识":"NGC2625","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h38m23.1s","赤经D(J2000)":"8.63975","赤纬(J2000)":"+19h42m58s","赤纬D(J2000)":"19.71611111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"45","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"2626","标识":"NGC2626","M标识":"NGC2626","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+RN","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"8h35m31s","赤经D(J2000)":"8.591944444444445","赤纬(J2000)":"-40h40m20s","赤纬D(J2000)":"-40.67222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"5","方位角":"","详细描述":"a 9th magnitude star involved in a pretty bright, pretty large, round nebula","简略描述":"* 9 inv in pB, pL, R neb"},{"ID":"2627","标识":"NGC2627","M标识":"NGC2627","拓展名":"","组件":"","Class":"VII 63","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"罗盘座","星座(En)":"PYX","赤经(J2000)":"8h37m15s","赤经D(J2000)":"8.620833333333334","赤纬(J2000)":"-29h57m18s","赤纬D(J2000)":"-29.955","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"","方位角":"","详细描述":"a cluster, considerably large, pretty rich, pretty compressed, stars from 11th to 13th magnitude","简略描述":"Cl, cL, pRi, pC, st 11…13"},{"ID":"2628","标识":"NGC2628","M标识":"NGC2628","拓展名":"","组件":"","Class":"III 235","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h40m22.6s","赤经D(J2000)":"8.672944444444443","赤纬(J2000)":"+23h32m23s","赤纬D(J2000)":"23.539722222222224","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"2629","标识":"NGC2629","M标识":"NGC2629","拓展名":"","组件":"","Class":"III 982","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h47m15.2s","赤经D(J2000)":"8.787555555555555","赤纬(J2000)":"+72h59m8s","赤纬D(J2000)":"72.98555555555555","可见光星等V":"12.2","摄影(蓝光)星等B":"13.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"105","详细描述":"very faint, small, stellar","简略描述":"vF, S, stellar"},{"ID":"2630","标识":"NGC2630","M标识":"NGC2630","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h47m6s","赤经D(J2000)":"8.785","赤纬(J2000)":"+73h0m0s","赤纬D(J2000)":"73","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, a little extended","简略描述":"2 vF, vS, v nr III 982"},{"ID":"2631","标识":"NGC2631","M标识":"NGC2631","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h47m6s","赤经D(J2000)":"8.785","赤纬(J2000)":"+73h0m0s","赤纬D(J2000)":"73","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"2 very faint, very small, very near III 982","简略描述":"2 vF, vS, v nr III 982"},{"ID":"2632","标识":"NGC2632","M标识":"M44","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"蜂巢星团","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h40m24s","赤经D(J2000)":"8.673333333333332","赤纬(J2000)":"+19h40m12s","赤纬D(J2000)":"19.67","可见光星等V":"3.1","摄影(蓝光)星等B":"3.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"70","短轴(分)":"","方位角":"","详细描述":"Praesepe Cancri","简略描述":"Paesepe Cancri"},{"ID":"2633","标识":"NGC2633","M标识":"NGC2633","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"8h48m4.6s","赤经D(J2000)":"8.801277777777779","赤纬(J2000)":"+74h5m57s","赤纬D(J2000)":"74.09916666666666","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.3","短轴(分)":"1.5","方位角":"175","详细描述":"faint, small, a little extended","简略描述":"F, S, lE"},{"ID":"2634","标识":"NGC2634","M标识":"NGC2634","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"8h48m25.5s","赤经D(J2000)":"8.807083333333335","赤纬(J2000)":"+73h58m2s","赤纬D(J2000)":"73.96722222222222","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"51","详细描述":"2 very faint, very small, very near III 982","简略描述":"F, S, lE"},{"ID":"2635","标识":"NGC2635","M标识":"NGC2635","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3p","星座(Zh)":"罗盘座","星座(En)":"PYX","赤经(J2000)":"8h38m25.9s","赤经D(J2000)":"8.640527777777777","赤纬(J2000)":"-34h46m18s","赤纬D(J2000)":"-34.77166666666667","可见光星等V":"11.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty much compressed, irregular triangle, stars from 13th magnitude","简略描述":"Cl, pmC, irr Δ, st 13…"},{"ID":"2636","标识":"NGC2636","M标识":"NGC2636","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"8h48m24.4s","赤经D(J2000)":"8.806777777777778","赤纬(J2000)":"+73h40m18s","赤纬D(J2000)":"73.67166666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, 2 stars of 11th or 12th magnitude to east","简略描述":"vF, S, 2 st 11·12 f"},{"ID":"2637","标识":"NGC2637","M标识":"NGC2637","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h41m13.4s","赤经D(J2000)":"8.687055555555556","赤纬(J2000)":"+19h41m25s","赤纬D(J2000)":"19.690277777777776","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"30","详细描述":"most extremely faint, very small","简略描述":"eeF, vS"},{"ID":"2638","标识":"NGC2638","M标识":"NGC2638","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h42m25.8s","赤经D(J2000)":"8.707166666666666","赤纬(J2000)":"+37h13m15s","赤纬D(J2000)":"37.22083333333334","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.7","短轴(分)":"0.6","方位角":"72","详细描述":"very faint, very small, irregular figure","简略描述":"vF, vS, iF"},{"ID":"2639","标识":"NGC2639","M标识":"NGC2639","拓展名":"","组件":"","Class":"I 204","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h43m37.8s","赤经D(J2000)":"8.727166666666667","赤纬(J2000)":"+50h12m22s","赤纬D(J2000)":"50.20611111111111","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"140","详细描述":"considerably bright, small, extended 130°, pretty suddenly much brighter middle","简略描述":"cB, S, E 130°, psmbM"},{"ID":"2640","标识":"NGC2640","M标识":"NGC2640","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"8h37m24.7s","赤经D(J2000)":"8.623527777777777","赤纬(J2000)":"-55h7m25s","赤纬D(J2000)":"-55.12361111111111","可见光星等V":"11.1","摄影(蓝光)星等B":"12.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.2","短轴(分)":"1.9","方位角":"104","详细描述":"pretty bright, small, round, 3 or 4 very small (faint) stars near to west","简略描述":"pB, S, R, 3 or 4 vS st p nr"},{"ID":"2641","标识":"NGC2641","M标识":"NGC2641","拓展名":"","组件":"","Class":"III 983","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h47m57.4s","赤经D(J2000)":"8.799277777777778","赤纬(J2000)":"+72h53m47s","赤纬D(J2000)":"72.8963888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"5","详细描述":"very faint, small, stellar","简略描述":"vF, S, stellar"},{"ID":"2642","标识":"NGC2642","M标识":"NGC2642","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h40m44.4s","赤经D(J2000)":"8.679","赤纬(J2000)":"-4h7m20s","赤纬D(J2000)":"-4.122222222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2","短轴(分)":"1.8","方位角":"90","详细描述":"very faint, pretty large, gradually brighter middle, 2 bright stars to south, one to east","简略描述":"vF, pL, gbM, 2 B st s, one f"},{"ID":"2643","标识":"NGC2643","M标识":"NGC2643","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h42m9s","赤经D(J2000)":"8.702499999999999","赤纬(J2000)":"+19h31m20s","赤纬D(J2000)":"19.522222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"an extremely faint nebulous star","简略描述":"eF neb *"},{"ID":"2644","标识":"NGC2644","M标识":"NGC2644","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h41m32s","赤经D(J2000)":"8.692222222222222","赤纬(J2000)":"+4h58m51s","赤纬D(J2000)":"4.980833333333334","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.1","短轴(分)":"0.8","方位角":"14","详细描述":"very faint, pretty large, irregularly oval, several small points","简略描述":"vF, pL, irr oval, sev S points"},{"ID":"2645","标识":"NGC2645","M标识":"NGC2645","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"8h39m3.1s","赤经D(J2000)":"8.650861111111112","赤纬(J2000)":"-46h13m38s","赤纬D(J2000)":"-46.227222222222224","可见光星等V":"7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, small, stars large (bright) and small (faint)","简略描述":"Cl, S, st L and S"},{"ID":"2646","标识":"NGC2646","M标识":"NGC2646","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"8h50m21.8s","赤经D(J2000)":"8.83938888888889","赤纬(J2000)":"+73h27m46s","赤纬D(J2000)":"73.46277777777777","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"very faint, small, 2 faint stars 2.5 arcmin to southeast","简略描述":"vF, S, 2 F st 2'.5 sf"},{"ID":"2647","标识":"NGC2647","M标识":"NGC2647","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h42m43s","赤经D(J2000)":"8.711944444444443","赤纬(J2000)":"+19h39m4s","赤纬D(J2000)":"19.65111111111111","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"18","详细描述":"a nebulous star","简略描述":"Neb *"},{"ID":"2648","标识":"NGC2648","M标识":"NGC2648","拓展名":"","组件":"","Class":"III 49","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h42m39.8s","赤经D(J2000)":"8.711055555555555","赤纬(J2000)":"+14h17m6s","赤纬D(J2000)":"14.285","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.2","短轴(分)":"1.1","方位角":"148","详细描述":"faint, small, very little extended 135°, pretty suddenly brighter middle","简略描述":"F, S, vlE 135°, psbM"},{"ID":"2649","标识":"NGC2649","M标识":"NGC2649","拓展名":"","组件":"","Class":"II 727","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h44m8.1s","赤经D(J2000)":"8.735583333333333","赤纬(J2000)":"+34h43m3s","赤纬D(J2000)":"34.7175","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"90","详细描述":"faint, large, round, mottled but not resolved","简略描述":"F, L, R, r"},{"ID":"2650","标识":"NGC2650","M标识":"NGC2650","拓展名":"","组件":"","Class":"II 908","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h49m58.3s","赤经D(J2000)":"8.83286111111111","赤纬(J2000)":"+70h17m58s","赤纬D(J2000)":"70.29944444444445","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"55","详细描述":"pretty bright, pretty large, irregular figure, extremely mottled but not resolved","简略描述":"pB, pL, iF, er"},{"ID":"2651","标识":"NGC2651","M标识":"NGC2651","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h43m55.1s","赤经D(J2000)":"8.731972222222222","赤纬(J2000)":"+11h46m16s","赤纬D(J2000)":"11.771111111111113","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"114","详细描述":"extremely faint, small, extended","简略描述":"eF, S, E"},{"ID":"2652","标识":"NGC2652","M标识":"NGC2652","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E4","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h42m33.2s","赤经D(J2000)":"9.709222222222222","赤纬(J2000)":"-3h41m57s","赤纬D(J2000)":"-3.6991666666666667","可见光星等V":"10.9","摄影(蓝光)星等B":"11.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.4","短轴(分)":"2.1","方位角":"40","详细描述":"faint, pretty small, extended 50°, gradually brighter middle and stellar nucleus, 9th magnitude star 50 arcsec to southwest","简略描述":"F, pS, E 50°, gbM stell N, * 9 sp 50\""},{"ID":"2653","标识":"NGC2653","M标识":"NGC2653","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"8h54m55.5s","赤经D(J2000)":"8.915416666666667","赤纬(J2000)":"+78h23m39s","赤纬D(J2000)":"78.39416666666668","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, faint star close to north, I 288 to south","简略描述":"vF, vS, F * close n, I 288 s"},{"ID":"2654","标识":"NGC2654","M标识":"NGC2654","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h49m12s","赤经D(J2000)":"8.82","赤纬(J2000)":"+60h13m15s","赤纬D(J2000)":"60.22083333333334","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"4.2","短轴(分)":"0.8","方位角":"63","详细描述":"pretty faint, small, faint star in middle, faint star close to southwest","简略描述":"pF, S, F * in M, F * close sp"},{"ID":"2655","标识":"NGC2655","M标识":"NGC2655","拓展名":"","组件":"","Class":"I 288","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"8h55m37.7s","赤经D(J2000)":"8.927138888888889","赤纬(J2000)":"+78h13m25s","赤纬D(J2000)":"78.22361111111111","可见光星等V":"10.1","摄影(蓝光)星等B":"11","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"4.9","短轴(分)":"4.1","方位角":"85","详细描述":"very bright, considerably large, a little extended 90°, gradually then suddenly very much brighter middle","简略描述":"vB, cL, lE 90°, gsvmbM"},{"ID":"2656","标识":"NGC2656","M标识":"NGC2656","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h47m53.1s","赤经D(J2000)":"8.798083333333333","赤纬(J2000)":"+53h52m34s","赤纬D(J2000)":"53.876111111111115","可见光星等V":"13.8","摄影(蓝光)星等B":"14.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"extremely faint, pretty suddenly brighter middle","简略描述":"eF, psbM"},{"ID":"2657","标识":"NGC2657","M标识":"NGC2657","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h45m15.8s","赤经D(J2000)":"8.754388888888888","赤纬(J2000)":"+9h38m45s","赤纬D(J2000)":"9.645833333333332","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.9","方位角":"153","详细描述":"very faint, very small, irregularly round, faint star attached on east","简略描述":"vF, vS, iR, F * att f"},{"ID":"2658","标识":"NGC2658","M标识":"NGC2658","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"罗盘座","星座(En)":"PYX","赤经(J2000)":"8h43m27.3s","赤经D(J2000)":"8.72425","赤纬(J2000)":"-32h39m22s","赤纬D(J2000)":"-32.65611111111111","可见光星等V":"9.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty small, a little rich, a little compressed, irregular figure, stars from 12th to 13th magnitude","简略描述":"Cl, pS, lRi, lC, iF, st 12·13"},{"ID":"2659","标识":"NGC2659","M标识":"NGC2659","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III3m","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"8h42m36s","赤经D(J2000)":"8.709999999999999","赤纬(J2000)":"-45h0m0s","赤纬D(J2000)":"-45","可见光星等V":"8.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, large, rich, pretty much extended, stars from 11th to 14th magnitude","简略描述":"Cl, L, Ri, pmE, st 11…14"},{"ID":"2660","标识":"NGC2660","M标识":"NGC2660","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"8h42m38s","赤经D(J2000)":"8.710555555555555","赤纬(J2000)":"-47h12m2s","赤纬D(J2000)":"-47.20055555555556","可见光星等V":"8.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty small, much compressed, irregularly round, gradually brighter middle, stars from 13th to 15th magnitude","简略描述":"Cl, pS, mC, iR, gbM, st 13…15"},{"ID":"2661","标识":"NGC2661","M标识":"NGC2661","拓展名":"","组件":"","Class":"III 50","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h45m59.5s","赤经D(J2000)":"8.766527777777778","赤纬(J2000)":"+12h37m11s","赤纬D(J2000)":"12.619722222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"60","详细描述":"extremely faint, considerably large, round, a little brighter middle","简略描述":"eF, cL, R, lbM"},{"ID":"2662","标识":"NGC2662","M标识":"NGC2662","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h45m32s","赤经D(J2000)":"8.758888888888889","赤纬(J2000)":"-15h7m16s","赤纬D(J2000)":"-15.121111111111112","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"0","详细描述":"very faint, very small, round, brighter middle, 15th magnitude star near","简略描述":"vF, vS, R, bM, * 15 nr"},{"ID":"2663","标识":"NGC2663","M标识":"NGC2663","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"罗盘座","星座(En)":"PYX","赤经(J2000)":"8h45m8.3s","赤经D(J2000)":"8.752305555555555","赤纬(J2000)":"-33h47m42s","赤纬D(J2000)":"-33.794999999999995","可见光星等V":"10.6","摄影(蓝光)星等B":"11.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.5","短轴(分)":"2.4","方位角":"110","详细描述":"pretty faint, pretty small, a little extended","简略描述":"pF, pS, lE"},{"ID":"2664","标识":"NGC2664","M标识":"NGC2664","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h47m10.4s","赤经D(J2000)":"8.786222222222221","赤纬(J2000)":"+12h36m13s","赤纬D(J2000)":"12.60361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, stars from 9th to 10th magnitude","简略描述":"Cl, st 9…10"},{"ID":"2665","标识":"NGC2665","M标识":"NGC2665","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h46m0.8s","赤经D(J2000)":"8.76688888888889","赤纬(J2000)":"-19h18m12s","赤纬D(J2000)":"-19.303333333333335","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"1.5","方位角":"144","详细描述":"faint, small, round, gradually brighter middle and nucleus","简略描述":"F, S, R, gbMN"},{"ID":"2666","标识":"NGC2666","M标识":"NGC2666","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h49m47.3s","赤经D(J2000)":"8.829805555555556","赤纬(J2000)":"+44h42m16s","赤纬D(J2000)":"44.70444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, a little compressed","简略描述":"Cl, lC"},{"ID":"2667","标识":"NGC2667","M标识":"NGC2667","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h48m27.2s","赤经D(J2000)":"8.807555555555556","赤纬(J2000)":"+19h1m11s","赤纬D(J2000)":"19.01972222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"78","详细描述":"extremely faint","简略描述":"eF"},{"ID":"2668","标识":"NGC2668","M标识":"NGC2668","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h49m22.5s","赤经D(J2000)":"8.822916666666666","赤纬(J2000)":"+36h42m39s","赤纬D(J2000)":"36.71083333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"155","详细描述":"very faint, very small, round, mottled but not resolved","简略描述":"vF, vS, R, r"},{"ID":"2669","标识":"NGC2669","M标识":"NGC2669","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"8h46m19s","赤经D(J2000)":"8.771944444444445","赤纬(J2000)":"-52h56m6s","赤纬D(J2000)":"-52.934999999999995","可见光星等V":"6.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"14","短轴(分)":"","方位角":"","详细描述":"a cluster, large, poor, a little compressed, stars from 10th to 13th magnitude","简略描述":"Cl, L, P, lC, st 10…13"},{"ID":"2670","标识":"NGC2670","M标识":"NGC2670","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"8h45m30s","赤经D(J2000)":"8.758333333333333","赤纬(J2000)":"-48h47m30s","赤纬D(J2000)":"-48.791666666666664","可见光星等V":"7.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, poor, a little compressed, stars from 13th magnitude","简略描述":"Cl, pL, P, lC, st 13…"},{"ID":"2671","标识":"NGC2671","M标识":"NGC2671","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"8h46m12s","赤经D(J2000)":"8.770000000000001","赤纬(J2000)":"-41h52m38s","赤纬D(J2000)":"-41.87722222222222","可见光星等V":"11.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, a little compressed middle, stars from 12th to 13th magnitude","简略描述":"Cl, pRi, lCM, st 12…13"},{"ID":"2672","标识":"NGC2672","M标识":"NGC2672","拓展名":"","组件":"","Class":"II 48, II 80","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h49m21.8s","赤经D(J2000)":"8.822722222222222","赤纬(J2000)":"+19h4m28s","赤纬D(J2000)":"19.074444444444445","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3","短轴(分)":"2.8","方位角":"117","详细描述":"pretty bright, pretty large, irregularly round, much brighter middle","简略描述":"pB, pL, iR, mbM"},{"ID":"2673","标识":"NGC2673","M标识":"NGC2673","拓展名":"","组件":"","Class":"II 48, II 80","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h49m24.1s","赤经D(J2000)":"8.823361111111112","赤纬(J2000)":"+19h4m29s","赤纬D(J2000)":"19.07472222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"pretty bright, pretty large, irregularly round, much brighter middle","简略描述":"vF, vS, close f h 526"},{"ID":"2674","标识":"NGC2674","M标识":"NGC2674","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h49m13.2s","赤经D(J2000)":"8.820333333333332","赤纬(J2000)":"-14h17m37s","赤纬D(J2000)":"-14.293611111111112","可见光星等V":"14.9","摄影(蓝光)星等B":"15.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"65","详细描述":"extremely faint, small, nebulous?","简略描述":"eF, S, neb ?"},{"ID":"2675","标识":"NGC2675","M标识":"NGC2675","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h52m5s","赤经D(J2000)":"8.868055555555555","赤纬(J2000)":"+53h37m2s","赤纬D(J2000)":"53.617222222222225","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"80","详细描述":"very faint, rich, 15th magnitude star 12 seconds of time to west","简略描述":"vF, R, * 15 p 12s"},{"ID":"2676","标识":"NGC2676","M标识":"NGC2676","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h51m35.6s","赤经D(J2000)":"8.85988888888889","赤纬(J2000)":"+47h33m30s","赤纬D(J2000)":"47.55833333333333","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"most extremely faint, pretty small, round, 4 pretty bright stars to northeast","简略描述":"eeF, pS, R, 4 pB st nf"},{"ID":"2677","标识":"NGC2677","M标识":"NGC2677","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h50m1.3s","赤经D(J2000)":"8.833694444444445","赤纬(J2000)":"+19h0m37s","赤纬D(J2000)":"19.010277777777777","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"171","详细描述":"extremely faint, very small, partially resolved (some stars seen), (very small cluster)","简略描述":"eF, vS, rr (vS Cl)"},{"ID":"2678","标识":"NGC2678","M标识":"NGC2678","拓展名":"","组件":"","Class":"VIII 10","业余排名":"15","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h50m2.7s","赤经D(J2000)":"8.834083333333334","赤纬(J2000)":"+11h20m19s","赤纬D(J2000)":"11.338611111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"2.5","方位角":"","详细描述":"a cluster, very little compressed, poor","简略描述":"Cl, vlC, P"},{"ID":"2679","标识":"NGC2679","M标识":"NGC2679","拓展名":"","组件":"","Class":"III 294","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h51m32.9s","赤经D(J2000)":"8.85913888888889","赤纬(J2000)":"+30h51m54s","赤纬D(J2000)":"30.865000000000002","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"3","详细描述":"pretty faint, pretty small, round, brighter middle, a double nebula with NGC 2680","简略描述":"pF, pS, R, bM, D neb"},{"ID":"2680","标识":"NGC2680","M标识":"NGC2680","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h51m33.6s","赤经D(J2000)":"8.859333333333334","赤纬(J2000)":"+30h51m57s","赤纬D(J2000)":"30.865833333333335","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"10.9","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, brighter middle, a double nebula with NGC 2679","简略描述":"vF, vS, R, bM, D neb"},{"ID":"2681","标识":"NGC2681","M标识":"NGC2681","拓展名":"","组件":"","Class":"I 242","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h53m32.5s","赤经D(J2000)":"8.89236111111111","赤纬(J2000)":"+51h18m47s","赤纬D(J2000)":"51.31305555555555","可见光星等V":"10.3","摄影(蓝光)星等B":"11.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.6","短轴(分)":"3.3","方位角":"36","详细描述":"very bright, very large, very gradaully then very suddenly much brighter middle equal to 10th magnitude star","简略描述":"vB, vL, vg, vsmbM * 10"},{"ID":"2682","标识":"NGC2682","M标识":"M67","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"金眼星团","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h51m18s","赤经D(J2000)":"8.855","赤纬(J2000)":"+11h49m0s","赤纬D(J2000)":"11.816666666666666","可见光星等V":"6.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"","方位角":"","详细描述":"a remarkble object, a cluster, very bright, very large, extremely rich, a little compressed, stars from 10th to 15th magnitude","简略描述":"! Cl, vB, vL, eRi, lC, st 10…15"},{"ID":"2683","标识":"NGC2683","M标识":"NGC2683","拓展名":"","组件":"","Class":"I 200","业余排名":"5","中文名":"UFO星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h52m41.3s","赤经D(J2000)":"8.87813888888889","赤纬(J2000)":"+33h25m12s","赤纬D(J2000)":"33.419999999999995","可见光星等V":"9.8","摄影(蓝光)星等B":"10.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"9.3","短轴(分)":"2.1","方位角":"44","详细描述":"very bright, very large, very much extended 39°, gradually much brighter middle","简略描述":"vB, vL, vmE 39°, gmbM"},{"ID":"2684","标识":"NGC2684","M标识":"NGC2684","拓展名":"","组件":"","Class":"III 712","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h54m53.8s","赤经D(J2000)":"8.914944444444444","赤纬(J2000)":"+49h9m37s","赤纬D(J2000)":"49.16027777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"27","详细描述":"faint, pretty large, round, gradually brighter middle, 4 small (faint) stars near","简略描述":"F, pL, R, gbM, 4 S st nr"},{"ID":"2685","标识":"NGC2685","M标识":"NGC2685","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"螺旋星系","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h55m34.9s","赤经D(J2000)":"8.92636111111111","赤纬(J2000)":"+58h44m5s","赤纬D(J2000)":"58.734722222222224","可见光星等V":"11.3","摄影(蓝光)星等B":"12.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"4.6","短轴(分)":"2.5","方位角":"38","详细描述":"pretty faint, round, faint star in centre","简略描述":"pF, R, F * in centre"},{"ID":"2686","标识":"NGC2686","M标识":"NGC2686","拓展名":"A","组件":"","Class":"","业余排名":"14","中文名":"纺锤星系","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h54m58.8s","赤经D(J2000)":"8.916333333333334","赤纬(J2000)":"+49h8m33s","赤纬D(J2000)":"49.1425","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"54","详细描述":"very faint, very small, double or single star close to east","简略描述":"vF, vS, D or * close f"},{"ID":"2687","标识":"NGC2687","M标识":"NGC2687","拓展名":"B","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h55m5.8s","赤经D(J2000)":"8.918277777777778","赤纬(J2000)":"+49h9m22s","赤纬D(J2000)":"49.15611111111111","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"27","详细描述":"very small","简略描述":"vS"},{"ID":"2688","标识":"NGC2688","M标识":"NGC2688","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h55m11.4s","赤经D(J2000)":"8.919833333333333","赤纬(J2000)":"+49h7m21s","赤纬D(J2000)":"49.1225","可见光星等V":"15.8","摄影(蓝光)星等B":"16.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"96","详细描述":"very very faint, small","简略描述":"vvF, S"},{"ID":"2689","标识":"NGC2689","M标识":"NGC2689","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h55m25.3s","赤经D(J2000)":"8.923694444444443","赤纬(J2000)":"+49h6m55s","赤纬D(J2000)":"49.11527777777778","可见光星等V":"16.3","摄影(蓝光)星等B":"17.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"102","详细描述":"very very faint, small","简略描述":"vvF, S"},{"ID":"2690","标识":"NGC2690","M标识":"NGC2690","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h52m38s","赤经D(J2000)":"8.877222222222223","赤纬(J2000)":"-2h36m13s","赤纬D(J2000)":"-2.6036111111111113","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.9","短轴(分)":"0.5","方位角":"19","详细描述":"pretty faint, small, extended","简略描述":"pF, S, E"},{"ID":"2691","标识":"NGC2691","M标识":"NGC2691","拓展名":"","组件":"","Class":"II 658","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h54m46.3s","赤经D(J2000)":"8.912861111111111","赤纬(J2000)":"+39h32m21s","赤纬D(J2000)":"39.53916666666667","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"165","详细描述":"pretty faint, very small, much brighter middle","简略描述":"pF, vS, mbM"},{"ID":"2692","标识":"NGC2692","M标识":"NGC2692","拓展名":"","组件":"","Class":"III 831","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h56m57.8s","赤经D(J2000)":"8.949388888888889","赤纬(J2000)":"+52h3m57s","赤纬D(J2000)":"52.06583333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"165","详细描述":"very faint, small, round, pretty suddenly brighter middle","简略描述":"vF, S, R, psbM"},{"ID":"2693","标识":"NGC2693","M标识":"NGC2693","拓展名":"","组件":"","Class":"II 823","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h56m59.4s","赤经D(J2000)":"8.949833333333334","赤纬(J2000)":"+51h20m52s","赤纬D(J2000)":"51.34777777777778","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.6","短轴(分)":"1.8","方位角":"160","详细描述":"pretty bright, a little extended, pretty suddenly much brighter middle","简略描述":"pB, lE, psmbM"},{"ID":"2694","标识":"NGC2694","M标识":"NGC2694","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h56m59.2s","赤经D(J2000)":"8.949777777777777","赤纬(J2000)":"+51h19m57s","赤纬D(J2000)":"51.3325","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"very faint, very small, 1 arcmin south of h 535","简略描述":"vF, vS, 1' s of h 535"},{"ID":"2695","标识":"NGC2695","M标识":"NGC2695","拓展名":"","组件":"","Class":"II 280","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h54m27s","赤经D(J2000)":"8.9075","赤纬(J2000)":"-3h4m1s","赤纬D(J2000)":"-3.0669444444444447","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"175","详细描述":"pretty faint, considerably small, round","简略描述":"pF, cS, R"},{"ID":"2696","标识":"NGC2696","M标识":"NGC2696","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h50m42s","赤经D(J2000)":"8.845","赤纬(J2000)":"-5h0m34s","赤纬D(J2000)":"-5.009444444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"2697","标识":"NGC2697","M标识":"NGC2697","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h54m59.3s","赤经D(J2000)":"8.916472222222222","赤纬(J2000)":"-2h59m16s","赤纬D(J2000)":"-2.9877777777777776","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"129","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"2698","标识":"NGC2698","M标识":"NGC2698","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h55m36.4s","赤经D(J2000)":"8.926777777777778","赤纬(J2000)":"-3h11m3s","赤纬D(J2000)":"-3.1841666666666666","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"96","详细描述":"very faint, pretty small, round, 9th magnitude star 4 arcmin to northwest","简略描述":"vF, pS, R, * 9 np 4'"},{"ID":"2699","标识":"NGC2699","M标识":"NGC2699","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h55m48.8s","赤经D(J2000)":"8.930222222222222","赤纬(J2000)":"-3h7m38s","赤纬D(J2000)":"-3.127222222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"1","方位角":"45","详细描述":"very faint, small, round, 15th magnitude to northwest","简略描述":"vF, S, R, * 15 np"},{"ID":"2700","标识":"NGC2700","M标识":"NGC2700","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h55m50.6s","赤经D(J2000)":"8.930722222222222","赤纬(J2000)":"-3h6m58s","赤纬D(J2000)":"-3.116111111111111","可见光星等V":"99","摄影(蓝光)星等B":"15.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, 1 arcmin north of 1727","简略描述":"eF, vS, 1' n of 1727"},{"ID":"2701","标识":"NGC2701","M标识":"NGC2701","拓展名":"","组件":"","Class":"IV 66","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h59m5.5s","赤经D(J2000)":"8.98486111111111","赤纬(J2000)":"+53h46m14s","赤纬D(J2000)":"53.77055555555555","可见光星等V":"12.3","摄影(蓝光)星等B":"12.7","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.2","短轴(分)":"1.6","方位角":"23","详细描述":"pretty bright, fan-shaped, 11th magnitude star attached","简略描述":"pB, fan-shaped, * 11 att"},{"ID":"2702","标识":"NGC2702","M标识":"NGC2702","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h55m54.6s","赤经D(J2000)":"8.931833333333334","赤纬(J2000)":"-3h3m53s","赤纬D(J2000)":"-3.064722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, 4 arcmin northeast of 1727","简略描述":"vF, vS, 4' nf 1727"},{"ID":"2703","标识":"NGC2703","M标识":"NGC2703","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h55m47.1s","赤经D(J2000)":"8.929749999999999","赤纬(J2000)":"-3h18m23s","赤纬D(J2000)":"-3.306388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, a little extended, doubtful","简略描述":"eF, lE, doubtful"},{"ID":"2704","标识":"NGC2704","M标识":"NGC2704","拓展名":"","组件":"","Class":"III 625","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h56m47.7s","赤经D(J2000)":"8.946583333333333","赤纬(J2000)":"+39h22m57s","赤纬D(J2000)":"39.3825","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"2705","标识":"NGC2705","M标识":"NGC2705","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h56m0s","赤经D(J2000)":"8.933333333333334","赤纬(J2000)":"-3h0m51s","赤纬D(J2000)":"-3.0141666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, 3 stars of 14th magnitude to the east and northeast","简略描述":"vF, vS, 3 st 14 f, nf"},{"ID":"2706","标识":"NGC2706","M标识":"NGC2706","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h56m12.3s","赤经D(J2000)":"8.93675","赤纬(J2000)":"-2h33m48s","赤纬D(J2000)":"-2.563333333333333","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"167","详细描述":"very faint, pretty small, much extended, star near to east","简略描述":"vF, pS, mE, * nr f"},{"ID":"2707","标识":"NGC2707","M标识":"NGC2707","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h56m5.6s","赤经D(J2000)":"8.934888888888889","赤纬(J2000)":"-3h3m57s","赤纬D(J2000)":"-3.065833333333333","可见光星等V":"99","摄影(蓝光)星等B":"14.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"2708","标识":"NGC2708","M标识":"NGC2708","拓展名":"","组件":"","Class":"II 281","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h56m7.9s","赤经D(J2000)":"8.935527777777779","赤纬(J2000)":"-3h21m38s","赤纬D(J2000)":"-3.3605555555555555","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.7","短轴(分)":"1.4","方位角":"25","详细描述":"pretty faint, pretty small, extended, 2 stars near","简略描述":"pF, pS, E, 2 st nr"},{"ID":"2709","标识":"NGC2709","M标识":"NGC2709","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h56m12.8s","赤经D(J2000)":"8.93688888888889","赤纬(J2000)":"-3h14m33s","赤纬D(J2000)":"-3.2425","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"81","详细描述":"very faint, pretty small, a little extended, north northeast of II 281","简略描述":"vF, pS, lE, nnf II 281"},{"ID":"2710","标识":"NGC2710","M标识":"NGC2710","拓展名":"","组件":"","Class":"III 841","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h59m48.4s","赤经D(J2000)":"8.996777777777776","赤纬(J2000)":"+55h42m21s","赤纬D(J2000)":"55.70583333333334","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2","短轴(分)":"1","方位角":"125","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"2711","标识":"NGC2711","M标识":"NGC2711","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h57m23.5s","赤经D(J2000)":"8.956527777777778","赤纬(J2000)":"+17h17m17s","赤纬D(J2000)":"17.28805555555556","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"170","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"2712","标识":"NGC2712","M标识":"NGC2712","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h59m30.6s","赤经D(J2000)":"8.991833333333332","赤纬(J2000)":"+44h54m50s","赤纬D(J2000)":"44.913888888888884","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.8","短轴(分)":"1.5","方位角":"178","详细描述":"pretty bright, large, extended, very gradually brighter middle equivalent to 18th magnitude star","简略描述":"pB, L, E, vgbM * 18"},{"ID":"2713","标识":"NGC2713","M标识":"NGC2713","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h57m20.6s","赤经D(J2000)":"8.95572222222222","赤纬(J2000)":"+2h55m17s","赤纬D(J2000)":"2.9213888888888886","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.6","短轴(分)":"1.5","方位角":"107","详细描述":"pretty bright, irregularly round, much brighter middle","简略描述":"pB, iR, mbM"},{"ID":"2714","标识":"NGC2714","M标识":"NGC2714","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"8h53m29.8s","赤经D(J2000)":"8.89161111111111","赤纬(J2000)":"-59h13m3s","赤纬D(J2000)":"-59.2175","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"extremely faint, small, round, pretty suddenly a little brighter middle","简略描述":"eF, S, R, pslbM"},{"ID":"2715","标识":"NGC2715","M标识":"NGC2715","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"9h8m5.9s","赤经D(J2000)":"9.134972222222222","赤纬(J2000)":"+78h5m9s","赤纬D(J2000)":"78.08583333333333","可见光星等V":"11.2","摄影(蓝光)星等B":"11.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4.8","短轴(分)":"1.6","方位角":"22","详细描述":"pretty bright, large, extended","简略描述":"pB, L, E"},{"ID":"2716","标识":"NGC2716","M标识":"NGC2716","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h57m35.8s","赤经D(J2000)":"8.959944444444444","赤纬(J2000)":"+3h5m25s","赤纬D(J2000)":"3.090277777777778","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1.3","短轴(分)":"1","方位角":"30","详细描述":"faint, small, round, much brighter middle","简略描述":"F, S, R, mbM"},{"ID":"2717","标识":"NGC2717","M标识":"NGC2717","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"罗盘座","星座(En)":"PYX","赤经(J2000)":"8h57m1.1s","赤经D(J2000)":"8.950305555555556","赤纬(J2000)":"-24h40m26s","赤纬D(J2000)":"-24.67388888888889","可见光星等V":"12.3","摄影(蓝光)星等B":"13.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.1","短轴(分)":"1.5","方位角":"11","详细描述":"pretty faint, small, round, very gradualy pretty much brighter middle","简略描述":"pF, S, R, vgpmbM"},{"ID":"2718","标识":"NGC2718","M标识":"NGC2718","拓展名":"","组件":"","Class":"II 557","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h58m50.3s","赤经D(J2000)":"8.980638888888889","赤纬(J2000)":"+6h17m38s","赤纬D(J2000)":"6.293888888888889","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.1","短轴(分)":"2.1","方位角":"","详细描述":"faint, pretty large, extended, among 3 stars","简略描述":"F, pL, E, am 3 st"},{"ID":"2719","标识":"NGC2719","M标识":"NGC2719","拓展名":"","组件":"","Class":"III 540","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h0m15.6s","赤经D(J2000)":"9.004333333333333","赤纬(J2000)":"+35h43m40s","赤纬D(J2000)":"35.72777777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"13.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"133","详细描述":"very faint, small, extended 110°, 2 very faint stars involved","简略描述":"vF, S, E 110°, 2 vF st inv"},{"ID":"2720","标识":"NGC2720","M标识":"NGC2720","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h59m8s","赤经D(J2000)":"8.985555555555555","赤纬(J2000)":"+11h8m59s","赤纬D(J2000)":"11.149722222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"2721","标识":"NGC2721","M标识":"NGC2721","拓展名":"","组件":"","Class":"II 529","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h58m56.5s","赤经D(J2000)":"8.98236111111111","赤纬(J2000)":"-4h54m5s","赤纬D(J2000)":"-4.9013888888888895","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.4","短轴(分)":"1.6","方位角":"153","详细描述":"considerably faint, pretty large, round, very gradually brighter middle","简略描述":"cF, pL, R, vgbM"},{"ID":"2722","标识":"NGC2722","M标识":"NGC2722","拓展名":"","组件":"","Class":"III 264","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h58m46.1s","赤经D(J2000)":"8.979472222222222","赤纬(J2000)":"-3h42m35s","赤纬D(J2000)":"-3.7097222222222226","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2","短轴(分)":"1.3","方位角":"64","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"2723","标识":"NGC2723","M标识":"NGC2723","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h0m14.3s","赤经D(J2000)":"9.003972222222222","赤纬(J2000)":"+3h10m42s","赤纬D(J2000)":"3.1783333333333332","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"2724","标识":"NGC2724","M标识":"NGC2724","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h1m1.8s","赤经D(J2000)":"9.017166666666668","赤纬(J2000)":"+35h45m45s","赤纬D(J2000)":"35.7625","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"2","详细描述":"extremely faint, small, stellar","简略描述":"eF, S, stellar"},{"ID":"2725","标识":"NGC2725","M标识":"NGC2725","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h1m3.2s","赤经D(J2000)":"9.017555555555557","赤纬(J2000)":"+11h5m51s","赤纬D(J2000)":"11.0975","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"54","详细描述":"faint, pretty large, preceding (western) of 2","简略描述":"F, pL, p of 2"},{"ID":"2726","标识":"NGC2726","M标识":"NGC2726","拓展名":"","组件":"","Class":"II 834","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h4m56.8s","赤经D(J2000)":"9.082444444444445","赤纬(J2000)":"+59h56m0s","赤纬D(J2000)":"59.93333333333333","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"87","详细描述":"considerably faint, pretty small, irregularly round, extremely mottled but not resolved","简略描述":"cF, pS, iR, er"},{"ID":"2727","标识":"NGC2727","M标识":"NGC2727","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h56m7.9s","赤经D(J2000)":"8.935527777777779","赤纬(J2000)":"-3h21m38s","赤纬D(J2000)":"-3.3605555555555555","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.7","短轴(分)":"1.4","方位角":"25","详细描述":"pretty faint, pretty small, extended, 2 stars near","简略描述":"vF, L, R, bM"},{"ID":"2728","标识":"NGC2728","M标识":"NGC2728","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h1m40.9s","赤经D(J2000)":"9.028027777777778","赤纬(J2000)":"+11h5m1s","赤纬D(J2000)":"11.08361111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"60","详细描述":"very faint, pretty large, a little extended, eastern of 2","简略描述":"vF, pL, lE, f of 2"},{"ID":"2729","标识":"NGC2729","M标识":"NGC2729","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h1m28.6s","赤经D(J2000)":"9.024611111111112","赤纬(J2000)":"+3h43m16s","赤纬D(J2000)":"3.721111111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"6","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"2730","标识":"NGC2730","M标识":"NGC2730","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h2m15.8s","赤经D(J2000)":"9.037722222222222","赤纬(J2000)":"+16h50m18s","赤纬D(J2000)":"16.83833333333333","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"80","详细描述":"very faint, large, round","简略描述":"vF, L, R"},{"ID":"2731","标识":"NGC2731","M标识":"NGC2731","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h2m8.2s","赤经D(J2000)":"9.03561111111111","赤纬(J2000)":"+8h18m2s","赤纬D(J2000)":"8.300555555555556","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"70","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"2732","标识":"NGC2732","M标识":"NGC2732","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"9h13m25s","赤经D(J2000)":"9.223611111111111","赤纬(J2000)":"+79h11m16s","赤纬D(J2000)":"79.18777777777778","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"2.1","短轴(分)":"0.9","方位角":"67","详细描述":"pretty bright, small, extended 45°, 13th magnitude star to northeast","简略描述":"pB, S, E 45°, * 13 nf"},{"ID":"2733","标识":"NGC2733","M标识":"NGC2733","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h58m46.1s","赤经D(J2000)":"8.979472222222222","赤纬(J2000)":"-3h42m35s","赤纬D(J2000)":"-3.7097222222222226","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2","短轴(分)":"1.3","方位角":"64","详细描述":"very faint, very small, stellar","简略描述":"eF, R"},{"ID":"2734","标识":"NGC2734","M标识":"NGC2734","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h3m1.5s","赤经D(J2000)":"9.050416666666667","赤纬(J2000)":"+16h51m51s","赤纬D(J2000)":"16.86416666666667","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"84","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"2735","标识":"NGC2735","M标识":"NGC2735","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h2m38.5s","赤经D(J2000)":"9.044027777777778","赤纬(J2000)":"+25h56m5s","赤纬D(J2000)":"25.934722222222224","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"94","详细描述":"a small (faint) star involved in very faint, very small nebula, extended east-west","简略描述":"S * inv in vF, vS neb, E pf"},{"ID":"2736","标识":"NGC2736","M标识":"NGC2736","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"铅笔星云","类型":"Nb","含重复类型":"Nb","形态":"SNR","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"9h0m17s","赤经D(J2000)":"9.004722222222222","赤纬(J2000)":"-45h56m53s","赤纬D(J2000)":"-45.948055555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"2","方位角":"","详细描述":"a remarkable object, most extremely faint, very large, very very much extended 19°","简略描述":"! eeF, vL, vvmE 19°"},{"ID":"2737","标识":"NGC2737","M标识":"NGC2737","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h3m59.6s","赤经D(J2000)":"9.066555555555556","赤纬(J2000)":"+21h54m23s","赤纬D(J2000)":"21.906388888888888","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"61","详细描述":"very faint, very small, part of a double nebula with the following entry","简略描述":"vF, vS, D neb"},{"ID":"2738","标识":"NGC2738","M标识":"NGC2738","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h4m0.5s","赤经D(J2000)":"9.066805555555556","赤纬(J2000)":"+21h58m6s","赤纬D(J2000)":"21.96833333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"55","详细描述":"pretty bright, small, irregular figure, part of a double nebula with the preceding entry","简略描述":"pB, S, iF, D neb"},{"ID":"2739","标识":"NGC2739","M标识":"NGC2739","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h6m2.7s","赤经D(J2000)":"9.10075","赤纬(J2000)":"+51h44m40s","赤纬D(J2000)":"51.74444444444445","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"96","详细描述":"very faint, small, round, northwest of h 549","简略描述":"vF, S, R, np h 549"},{"ID":"2740","标识":"NGC2740","M标识":"NGC2740","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h6m5s","赤经D(J2000)":"9.101388888888888","赤纬(J2000)":"+51h44m8s","赤纬D(J2000)":"51.73555555555556","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.9","方位角":"45","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"2741","标识":"NGC2741","M标识":"NGC2741","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h3m16.5s","赤经D(J2000)":"9.054583333333333","赤纬(J2000)":"+18h15m38s","赤纬D(J2000)":"18.260555555555555","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"80","详细描述":"very faint, western of 2","简略描述":"vF, p of 2"},{"ID":"2742","标识":"NGC2742","M标识":"NGC2742","拓展名":"","组件":"","Class":"I 249","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h7m33.2s","赤经D(J2000)":"9.12588888888889","赤纬(J2000)":"+60h28m46s","赤纬D(J2000)":"60.47944444444445","可见光星等V":"11.4","摄影(蓝光)星等B":"12","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3","短轴(分)":"1.5","方位角":"87","详细描述":"considerably bright, considerably large, extended 90°, extremely mottled but not resolved","简略描述":"cB, cL, E 90°, er"},{"ID":"2743","标识":"NGC2743","M标识":"NGC2743","拓展名":"","组件":"","Class":"III 608","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h4m54s","赤经D(J2000)":"9.081666666666667","赤纬(J2000)":"+25h0m15s","赤纬D(J2000)":"25.004166666666666","可见光星等V":"13.6","摄影(蓝光)星等B":"14.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"105","详细描述":"extremely faint, small, round, very little brighter middle","简略描述":"eF, S, R, vlbM"},{"ID":"2744","标识":"NGC2744","M标识":"NGC2744","拓展名":"","组件":"","Class":"III 60","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h4m39.1s","赤经D(J2000)":"9.077527777777778","赤纬(J2000)":"+18h27m51s","赤纬D(J2000)":"18.464166666666667","可见光星等V":"13.5","摄影(蓝光)星等B":"13.9","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"120","详细描述":"very faint, small, round, mottled but not resolved, double star near","简略描述":"vF, S, R, r, D * nr"},{"ID":"2745","标识":"NGC2745","M标识":"NGC2745","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h4m39.3s","赤经D(J2000)":"9.077583333333333","赤纬(J2000)":"+18h15m28s","赤纬D(J2000)":"18.25777777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"0","详细描述":"extremely faint, very small, stellar, eastern of 2","简略描述":"eF, vS, stell, f of 2"},{"ID":"2746","标识":"NGC2746","M标识":"NGC2746","拓展名":"","组件":"","Class":"III 825","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h5m59.5s","赤经D(J2000)":"9.099861111111112","赤纬(J2000)":"+35h22m38s","赤纬D(J2000)":"35.37722222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.6","短轴(分)":"1.5","方位角":"123","详细描述":"extremely faint, small, round, very gradually a little brighter middle, 12th magnitude star 50 arcsec to north northwest","简略描述":"eF, S, R, vglbM, * 12 nnp 50\""},{"ID":"2747","标识":"NGC2747","M标识":"NGC2747","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h5m18.3s","赤经D(J2000)":"9.088416666666667","赤纬(J2000)":"+18h26m34s","赤纬D(J2000)":"18.442777777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"170","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"2748","标识":"NGC2748","M标识":"NGC2748","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"9h13m43s","赤经D(J2000)":"9.22861111111111","赤纬(J2000)":"+76h28m33s","赤纬D(J2000)":"76.47583333333334","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.1","短轴(分)":"1.1","方位角":"38","详细描述":"pretty bright, pretty large, extended, very gradually a little brighter middle","简略描述":"pB, pL, E, vglbM"},{"ID":"2749","标识":"NGC2749","M标识":"NGC2749","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h5m21.3s","赤经D(J2000)":"9.08925","赤纬(J2000)":"+18h18m49s","赤纬D(J2000)":"18.31361111111111","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"69","详细描述":"pretty faint, small, round, brighter middle and nucleus equal to 15th magnitude star","简略描述":"pF, S, R, bMN = * 15"},{"ID":"2750","标识":"NGC2750","M标识":"NGC2750","拓展名":"","组件":"","Class":"III 291","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h5m48s","赤经D(J2000)":"9.096666666666668","赤纬(J2000)":"+25h26m15s","赤纬D(J2000)":"25.4375","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.2","短轴(分)":"1.9","方位角":"81","详细描述":"very faint, considerably large, brighter middle and nucleus, 2 considerable stars to west","简略描述":"vF, cL, R, bMN, 2 c st p"},{"ID":"2751","标识":"NGC2751","M标识":"NGC2751","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h5m32.4s","赤经D(J2000)":"9.092333333333334","赤纬(J2000)":"+18h15m43s","赤纬D(J2000)":"18.261944444444445","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"141","详细描述":"extremely faint, extremely small, stellar","简略描述":"eF, eS, stellar"},{"ID":"2752","标识":"NGC2752","M标识":"NGC2752","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h5m42.9s","赤经D(J2000)":"9.09525","赤纬(J2000)":"+18h20m23s","赤纬D(J2000)":"18.33972222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.8","短轴(分)":"0.4","方位角":"58","详细描述":"pretty faint, pretty large, very much extended, gradually brighter middle","简略描述":"pF, pL, vmE, gbM"},{"ID":"2753","标识":"NGC2753","M标识":"NGC2753","拓展名":"","组件":"2","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h7m8.5s","赤经D(J2000)":"9.119027777777779","赤纬(J2000)":"+25h20m39s","赤纬D(J2000)":"25.344166666666666","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, 14th magnitude star 40 arcsec to northwest","简略描述":"vF, vS, * 14 np 40\""},{"ID":"2754","标识":"NGC2754","M标识":"NGC2754","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h5m11.2s","赤经D(J2000)":"9.086444444444446","赤纬(J2000)":"-19h5m5s","赤纬D(J2000)":"-19.084722222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"163","详细描述":"extremely faint, small, round, 1st of 3","简略描述":"eF, S, R, 1st of 3"},{"ID":"2755","标识":"NGC2755","M标识":"NGC2755","拓展名":"","组件":"","Class":"III 626","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h7m58.3s","赤经D(J2000)":"9.132861111111112","赤纬(J2000)":"+41h42m31s","赤纬D(J2000)":"41.70861111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"130","详细描述":"very faint, small, irregular figure, a little brighter middle, mottled but not resolved","简略描述":"vF, S, iF, lbM, r"},{"ID":"2756","标识":"NGC2756","M标识":"NGC2756","拓展名":"","组件":"","Class":"II 828","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h9m0.9s","赤经D(J2000)":"9.15025","赤纬(J2000)":"+53h50m55s","赤纬D(J2000)":"53.84861111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"0","详细描述":"pretty bright, pretty small, extended, very gradually brighter middle","简略描述":"pB, pS, E, vgbM"},{"ID":"2757","标识":"NGC2757","M标识":"NGC2757","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h5m23.4s","赤经D(J2000)":"9.089833333333335","赤纬(J2000)":"-19h2m5s","赤纬D(J2000)":"-19.034722222222225","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, 2nd of 3, perhaps a star","简略描述":"eF, 2nd of 3, ? *"},{"ID":"2758","标识":"NGC2758","M标识":"NGC2758","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h5m31.1s","赤经D(J2000)":"9.091972222222223","赤纬(J2000)":"-19h2m34s","赤纬D(J2000)":"-19.04277777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"0.5","方位角":"19","详细描述":"extremely faint, small, extended 0°, 3rd of 3","简略描述":"eF, S, E 0°, 3rd of 3"},{"ID":"2759","标识":"NGC2759","M标识":"NGC2759","拓展名":"","组件":"","Class":"III 647","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h8m37.2s","赤经D(J2000)":"9.143666666666666","赤纬(J2000)":"+37h37m17s","赤纬D(J2000)":"37.62138888888889","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.7","方位角":"50","详细描述":"very faint, considerably small, round","简略描述":"vF, cS, R"},{"ID":"2760","标识":"NGC2760","M标识":"NGC2760","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"9h15m41.9s","赤经D(J2000)":"9.26163888888889","赤纬(J2000)":"+76h22m57s","赤纬D(J2000)":"76.3825","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, nearly between stars of 8th and 9th magnitude","简略描述":"vF, S, R, nearly bet * 8 & * 9"},{"ID":"2761","标识":"NGC2761","M标识":"NGC2761","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h7m30.7s","赤经D(J2000)":"9.125194444444444","赤纬(J2000)":"+18h26m6s","赤纬D(J2000)":"18.435","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"165","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"2762","标识":"NGC2762","M标识":"NGC2762","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h9m54.4s","赤经D(J2000)":"9.165111111111111","赤纬(J2000)":"+50h25m6s","赤纬D(J2000)":"50.41833333333333","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"10","详细描述":"very very faint, small, round, 1st of 4","简略描述":"vvF, S, R, 1st of 4"},{"ID":"2763","标识":"NGC2763","M标识":"NGC2763","拓展名":"","组件":"","Class":"III 275","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h6m49s","赤经D(J2000)":"9.11361111111111","赤纬(J2000)":"-15h29m57s","赤纬D(J2000)":"-15.499166666666666","可见光星等V":"12","摄影(蓝光)星等B":"12.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.3","短轴(分)":"2","方位角":"120","详细描述":"very faint, pretty small, brighter middle, small (faint) star 30 arcsec to north","简略描述":"vF, pS, bM, S * 30\" n"},{"ID":"2764","标识":"NGC2764","M标识":"NGC2764","拓展名":"","组件":"","Class":"III 236","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h8m17.4s","赤经D(J2000)":"9.138166666666667","赤纬(J2000)":"+21h26m35s","赤纬D(J2000)":"21.443055555555556","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"1","方位角":"15","详细描述":"considerably faint, very small, round, extremely mottled but not resolved, between 2 pretty bright stars","简略描述":"cF, vS, R, er, bet 2 pB st"},{"ID":"2765","标识":"NGC2765","M标识":"NGC2765","拓展名":"","组件":"","Class":"II 520","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h7m36.5s","赤经D(J2000)":"9.126805555555556","赤纬(J2000)":"+3h23m34s","赤纬D(J2000)":"3.392777777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.1","短轴(分)":"1.1","方位角":"107","详细描述":"very faint, pretty large, extended, gradually brighter middle, extremely mottled but not resolved","简略描述":"vF, pL, E, gbM, er"},{"ID":"2766","标识":"NGC2766","M标识":"NGC2766","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h8m47.4s","赤经D(J2000)":"9.1465","赤纬(J2000)":"+29h51m55s","赤纬D(J2000)":"29.86527777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"132","详细描述":"very faint, very small, irregular figure, brighter middle","简略描述":"vF, vS, iF, bM"},{"ID":"2767","标识":"NGC2767","M标识":"NGC2767","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h10m11.8s","赤经D(J2000)":"9.169944444444443","赤纬(J2000)":"+50h24m7s","赤纬D(J2000)":"50.401944444444446","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"170","详细描述":"very faint, suddenly brighter middle equal to 15th magnitude star, 2nd of 4","简略描述":"vF, sbM * 15, 2nd of 4"},{"ID":"2768","标识":"NGC2768","M标识":"NGC2768","拓展名":"","组件":"","Class":"I 250","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h11m37.4s","赤经D(J2000)":"9.193722222222222","赤纬(J2000)":"+60h2m11s","赤纬D(J2000)":"60.03638888888889","可见光星等V":"9.9","摄影(蓝光)星等B":"10.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"6.4","短轴(分)":"3","方位角":"95","详细描述":"considerably bright, considerably large, a little extended, pretty suddenly brighter middle and large bright nucleus","简略描述":"cB, cL, lE, psbMLBN"},{"ID":"2769","标识":"NGC2769","M标识":"NGC2769","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"NGC 2769星系群","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h10m32.3s","赤经D(J2000)":"9.175638888888889","赤纬(J2000)":"+50h26m1s","赤纬D(J2000)":"50.433611111111105","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.8","短轴(分)":"0.4","方位角":"146","详细描述":"pretty faint, small, extended, pretty suddenly a little brighter middle, 3rd of 4","简略描述":"pF, S, E, pslbM, 3rd of 4"},{"ID":"2770","标识":"NGC2770","M标识":"NGC2770","拓展名":"","组件":"","Class":"II 490","业余排名":"14","中文名":"超新星工厂星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h9m33.5s","赤经D(J2000)":"9.159305555555555","赤纬(J2000)":"+33h7m27s","赤纬D(J2000)":"33.12416666666667","可见光星等V":"12.2","摄影(蓝光)星等B":"12.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.7","短轴(分)":"1.1","方位角":"148","详细描述":"faint, large, much extended 150°, mottled but not resolved, 2 stars to north","简略描述":"F, L, mE 150°, r, 2 st n"},{"ID":"2771","标识":"NGC2771","M标识":"NGC2771","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h10m39.7s","赤经D(J2000)":"9.177694444444445","赤纬(J2000)":"+50h22m45s","赤纬D(J2000)":"50.37916666666667","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.3","短轴(分)":"1.9","方位角":"137","详细描述":"very faint, small, a little extended, 4th of 4","简略描述":"vF, S, lE, 4th of 4"},{"ID":"2772","标识":"NGC2772","M标识":"NGC2772","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"罗盘座","星座(En)":"PYX","赤经(J2000)":"9h7m41.8s","赤经D(J2000)":"9.128277777777779","赤纬(J2000)":"-23h37m10s","赤纬D(J2000)":"-23.619444444444444","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"170","详细描述":"extremely faint, a little extended, a little brighter middle","简略描述":"eF, lE, lbM"},{"ID":"2773","标识":"NGC2773","M标识":"NGC2773","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h9m44.1s","赤经D(J2000)":"9.16225","赤纬(J2000)":"+7h10m27s","赤纬D(J2000)":"7.174166666666667","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"83","详细描述":"very faint, small, a little extended","简略描述":"vF, S, lE"},{"ID":"2774","标识":"NGC2774","M标识":"NGC2774","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h10m39.9s","赤经D(J2000)":"9.17775","赤纬(J2000)":"+18h41m48s","赤纬D(J2000)":"18.696666666666665","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, small, round, among 5 small (faint) stars","简略描述":"vF, S, R, am 5 S st"},{"ID":"2775","标识":"NGC2775","M标识":"NGC2775","拓展名":"","组件":"","Class":"I 2","业余排名":"2","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h10m20.1s","赤经D(J2000)":"9.17225","赤纬(J2000)":"+7h2m14s","赤纬D(J2000)":"7.037222222222222","可见光星等V":"10.1","摄影(蓝光)星等B":"11","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"4.3","短轴(分)":"3.3","方位角":"155","详细描述":"considerably bright, considerably large, round, very gradually then very suddenly much brighter middle, mottled but not resolved","简略描述":"cB, cL, R, vgvsmbM, r"},{"ID":"2776","标识":"NGC2776","M标识":"NGC2776","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h12m14.5s","赤经D(J2000)":"9.204027777777776","赤纬(J2000)":"+44h57m17s","赤纬D(J2000)":"44.95472222222222","可见光星等V":"11.6","摄影(蓝光)星等B":"12.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.8","短轴(分)":"2.5","方位角":"0","详细描述":"pretty bright, large, round, very gradually brighter middle, mottled but not resolved","简略描述":"pB, L, R, vgbM, r"},{"ID":"2777","标识":"NGC2777","M标识":"NGC2777","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h10m41.8s","赤经D(J2000)":"9.178277777777778","赤纬(J2000)":"+7h12m26s","赤纬D(J2000)":"7.207222222222223","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"165","详细描述":"faint, small","简略描述":"F, S"},{"ID":"2778","标识":"NGC2778","M标识":"NGC2778","拓展名":"","组件":"","Class":"II 564","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h12m24.5s","赤经D(J2000)":"9.206805555555555","赤纬(J2000)":"+35h1m40s","赤纬D(J2000)":"35.02777777777778","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"1","方位角":"40","详细描述":"pretty bright, small, round, pretty suddenly much brighter middle","简略描述":"pB, S, R, psmbM"},{"ID":"2779","标识":"NGC2779","M标识":"NGC2779","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h12m28.3s","赤经D(J2000)":"9.20786111111111","赤纬(J2000)":"+35h3m14s","赤纬D(J2000)":"35.053888888888885","可见光星等V":"15","摄影(蓝光)星等B":"15.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"161","详细描述":"extremely faint, very small, 92 arcsec northeast of h 566","简略描述":"eF, vS, 92\" nf h 566"},{"ID":"2780","标识":"NGC2780","M标识":"NGC2780","拓展名":"","组件":"","Class":"III 826","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB\/P","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h12m44.3s","赤经D(J2000)":"9.212305555555554","赤纬(J2000)":"+34h55m32s","赤纬D(J2000)":"34.925555555555555","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"150","详细描述":"very faint, small, round, small (faint) double star to west","简略描述":"vF, S, R, S D * p"},{"ID":"2781","标识":"NGC2781","M标识":"NGC2781","拓展名":"","组件":"","Class":"I 66","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h11m27.5s","赤经D(J2000)":"9.190972222222223","赤纬(J2000)":"-14h49m2s","赤纬D(J2000)":"-14.817222222222222","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3","短轴(分)":"1.5","方位角":"79","详细描述":"bright, small, very little extended, pretty suddenly much brighter middle","简略描述":"B, S, vlE, psmbM"},{"ID":"2782","标识":"NGC2782","M标识":"NGC2782","拓展名":"","组件":"","Class":"I 167","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h14m5s","赤经D(J2000)":"9.23472222222222","赤纬(J2000)":"+40h6m49s","赤纬D(J2000)":"40.11361111111111","可见光星等V":"11.6","摄影(蓝光)星等B":"12.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.7","短轴(分)":"2.4","方位角":"74","详细描述":"considerably bright, round, much brighter middle and bright nucleus","简略描述":"cB, R, mbMBN"},{"ID":"2783","标识":"NGC2783","M标识":"NGC2783","拓展名":"","组件":"","Class":"III 295","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h13m39.4s","赤经D(J2000)":"9.227611111111111","赤纬(J2000)":"+29h59m35s","赤纬D(J2000)":"29.993055555555557","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.2","短轴(分)":"1.5","方位角":"168","详细描述":"very faint, very small, round, 2 pretty bright stars to southwest","简略描述":"vF, vS, R, 2 pB st sp"},{"ID":"2784","标识":"NGC2784","M标识":"NGC2784","拓展名":"","组件":"","Class":"I 59","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h12m19.4s","赤经D(J2000)":"9.205388888888889","赤纬(J2000)":"-24h10m21s","赤纬D(J2000)":"-24.1725","可见光星等V":"10.2","摄影(蓝光)星等B":"11.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"5.5","短轴(分)":"2.2","方位角":"73","详细描述":"bright, large, much extended 64°, gradually much brighter middle","简略描述":"B, L, mE 64°, gmbM"},{"ID":"2785","标识":"NGC2785","M标识":"NGC2785","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h15m15.2s","赤经D(J2000)":"9.254222222222221","赤纬(J2000)":"+40h55m5s","赤纬D(J2000)":"40.918055555555554","可见光星等V":"14.1","摄影(蓝光)星等B":"14.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"120","详细描述":"extremely faint, pretty small, irregularly extended, several extremely faint stars involved","简略描述":"eF, pS, iE, sev eF st inv"},{"ID":"2786","标识":"NGC2786","M标识":"NGC2786","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa R","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h13m35.5s","赤经D(J2000)":"9.226527777777777","赤纬(J2000)":"+12h26m26s","赤纬D(J2000)":"12.440555555555555","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"77","详细描述":"very faint, very small, much brighter middle","简略描述":"vF, vS, mbM"},{"ID":"2787","标识":"NGC2787","M标识":"NGC2787","拓展名":"","组件":"","Class":"I 216","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h19m18.4s","赤经D(J2000)":"9.321777777777777","赤纬(J2000)":"+69h12m13s","赤纬D(J2000)":"69.20361111111112","可见光星等V":"10.7","摄影(蓝光)星等B":"11.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"3.1","短轴(分)":"1.8","方位角":"111","详细描述":"bright, pretty large, a little extended 90°, much brighter middle, mottled but not resolved, very small (faint) star involved to the southeast","简略描述":"B, pL, lE 90°, mbM, r, vS * sf inv"},{"ID":"2788","标识":"NGC2788","M标识":"NGC2788","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"9h9m3.3s","赤经D(J2000)":"9.150916666666667","赤纬(J2000)":"-67h55m57s","赤纬D(J2000)":"-67.9325","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.8","短轴(分)":"0.4","方位角":"114","详细描述":"very faint, very small, much extended 105°","简略描述":"vF, vS, mE 105°"},{"ID":"2789","标识":"NGC2789","M标识":"NGC2789","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h14m59.7s","赤经D(J2000)":"9.249916666666666","赤纬(J2000)":"+29h43m49s","赤纬D(J2000)":"29.730277777777776","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"20","详细描述":"pretty faint, small, round, gradually brighter middle","简略描述":"pF, S, R, gbM"},{"ID":"2790","标识":"NGC2790","M标识":"NGC2790","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h15m2.7s","赤经D(J2000)":"9.25075","赤纬(J2000)":"+19h41m51s","赤纬D(J2000)":"19.6975","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"51","详细描述":"very faint, small, round, a little brighter middle","简略描述":"vF, S, R, lbM"},{"ID":"2791","标识":"NGC2791","M标识":"NGC2791","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h15m1.9s","赤经D(J2000)":"9.250527777777778","赤纬(J2000)":"+17h35m34s","赤纬D(J2000)":"17.592777777777776","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"156","详细描述":"faint, round","简略描述":"F, R"},{"ID":"2792","标识":"NGC2792","M标识":"NGC2792","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"9h12m26.5s","赤经D(J2000)":"9.20736111111111","赤纬(J2000)":"-42h25m39s","赤纬D(J2000)":"-42.427499999999995","可见光星等V":"11.6","摄影(蓝光)星等B":"13.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.35","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a planetary nebula, pretty bright equal to a 9th magnitude star, very small, round, among stars","简略描述":"! planetary, pB = * 9, vS, R, am st"},{"ID":"2793","标识":"NGC2793","M标识":"NGC2793","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h16m46.6s","赤经D(J2000)":"9.279611111111112","赤纬(J2000)":"+34h25m56s","赤纬D(J2000)":"34.43222222222222","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"1","方位角":"63","详细描述":"very faint, small, round, double star 5 seconds of time to west, 5 arcmin to north","简略描述":"vF, S, R, D * p 5s, n 5'"},{"ID":"2794","标识":"NGC2794","M标识":"NGC2794","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h16m1.7s","赤经D(J2000)":"9.26713888888889","赤纬(J2000)":"+17h35m22s","赤纬D(J2000)":"17.589444444444442","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"extremely faint, very small, southwestern of 2","简略描述":"eF, vS, sp of 2"},{"ID":"2795","标识":"NGC2795","M标识":"NGC2795","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h16m3.7s","赤经D(J2000)":"9.267694444444444","赤纬(J2000)":"+17h37m42s","赤纬D(J2000)":"17.628333333333334","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1","方位角":"170","详细描述":"extremely faint, very small, northeastern of 2","简略描述":"eF, vS, nf of 2"},{"ID":"2796","标识":"NGC2796","M标识":"NGC2796","拓展名":"","组件":"","Class":"III 296","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h16m41.8s","赤经D(J2000)":"9.27827777777778","赤纬(J2000)":"+30h54m58s","赤纬D(J2000)":"30.91611111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"80","详细描述":"extremely faint, small, round, a little brighter middle","简略描述":"eF, S, R, lbM"},{"ID":"2797","标识":"NGC2797","M标识":"NGC2797","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h16m21.7s","赤经D(J2000)":"9.272694444444445","赤纬(J2000)":"+17h43m38s","赤纬D(J2000)":"17.72722222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"21","详细描述":"extremely faint, several stars near","简略描述":"eF, sev st nr"},{"ID":"2798","标识":"NGC2798","M标识":"NGC2798","拓展名":"","组件":"","Class":"II 708","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa\/P","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h17m22.9s","赤经D(J2000)":"9.289694444444445","赤纬(J2000)":"+42h0m0s","赤纬D(J2000)":"42","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.8","短轴(分)":"0.9","方位角":"160","详细描述":"pretty bright, small, stellar","简略描述":"pB, S, stellar"},{"ID":"2799","标识":"NGC2799","M标识":"NGC2799","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h17m31s","赤经D(J2000)":"9.291944444444445","赤纬(J2000)":"+41h59m38s","赤纬D(J2000)":"41.99388888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.9","短轴(分)":"0.5","方位角":"125","详细描述":"pretty bright, small, stellar","简略描述":"F, cL, vmE, f II 708"},{"ID":"2800","标识":"NGC2800","M标识":"NGC2800","拓展名":"","组件":"","Class":"III 832","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h18m35.1s","赤经D(J2000)":"9.309750000000001","赤纬(J2000)":"+52h30m53s","赤纬D(J2000)":"52.514722222222225","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"15","详细描述":"very faint, small, a little extended, star attached, star involved","简略描述":"vF, S, lE, * att, * inv"},{"ID":"2801","标识":"NGC2801","M标识":"NGC2801","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h16m44.2s","赤经D(J2000)":"9.278944444444445","赤纬(J2000)":"+19h56m7s","赤纬D(J2000)":"19.935277777777777","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.1","短轴(分)":"1","方位角":"62","详细描述":"extremely faint, pretty large","简略描述":"eF, pL"},{"ID":"2802","标识":"NGC2802","M标识":"NGC2802","拓展名":"","组件":"","Class":"III 62","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h16m41.4s","赤经D(J2000)":"9.278166666666667","赤纬(J2000)":"+18h57m50s","赤纬D(J2000)":"18.96388888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"132","详细描述":"very faint, small, round, mottled but not resolved, northwestern of 2","简略描述":"vF, S, R, r, np of 2"},{"ID":"2803","标识":"NGC2803","M标识":"NGC2803","拓展名":"","组件":"","Class":"III 63","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h16m43.8s","赤经D(J2000)":"9.278833333333335","赤纬(J2000)":"+18h57m16s","赤纬D(J2000)":"18.954444444444444","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"45","详细描述":"very faint, small, round, mottled but not resolved, southeastern of 2","简略描述":"vF, S, R, r, sf of 2"},{"ID":"2804","标识":"NGC2804","M标识":"NGC2804","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h16m49.9s","赤经D(J2000)":"9.28052777777778","赤纬(J2000)":"+20h11m54s","赤纬D(J2000)":"20.198333333333334","可见光星等V":"12.8","摄影(蓝光)星等B":"13.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"60","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"2805","标识":"NGC2805","M标识":"NGC2805","拓展名":"","组件":"","Class":"III 878","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h20m20.4s","赤经D(J2000)":"9.339","赤纬(J2000)":"+64h6m10s","赤纬D(J2000)":"64.10277777777777","可见光星等V":"11","摄影(蓝光)星等B":"11.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"6.3","短轴(分)":"4.8","方位角":"140","详细描述":"very faint, large, round, much brighter middle","简略描述":"vF, L, R, mbM"},{"ID":"2806","标识":"NGC2806","M标识":"NGC2806","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h16m56.7s","赤经D(J2000)":"9.282416666666668","赤纬(J2000)":"+20h4m16s","赤纬D(J2000)":"20.07111111111111","可见光星等V":"99","摄影(蓝光)星等B":"14.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, stellar, preceding (west of) h 578","简略描述":"vF, stellar, p h 578"},{"ID":"2807","标识":"NGC2807","M标识":"NGC2807","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h17m0.7s","赤经D(J2000)":"9.283527777777778","赤纬(J2000)":"+20h2m10s","赤纬D(J2000)":"20.03611111111111","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"150","详细描述":"very faint, very small, h 578 is 7 seconds of time to the east and 2 arcmin to the north","简略描述":"vF, vS, h 578 f 7s, n 2'"},{"ID":"2808","标识":"NGC2808","M标识":"NGC2808","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"I","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"9h12m2.6s","赤经D(J2000)":"9.200722222222222","赤纬(J2000)":"-64h51m45s","赤纬D(J2000)":"-64.8625","可见光星等V":"6.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"14","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a globular cluster, very large, extremely rich, very gradually extremely compressed middle, 45 seconds of time diameter, stars from 13th to 15th magnitude","简略描述":"! globular, vL, eRi, vgeCM 45s d, st 13…15"},{"ID":"2809","标识":"NGC2809","M标识":"NGC2809","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h17m6.9s","赤经D(J2000)":"9.28525","赤纬(J2000)":"+20h4m9s","赤纬D(J2000)":"20.069166666666668","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"171","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"2810","标识":"NGC2810","M标识":"NGC2810","拓展名":"","组件":"","Class":"III 749","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h22m4.5s","赤经D(J2000)":"9.367916666666668","赤纬(J2000)":"+71h50m38s","赤纬D(J2000)":"71.84388888888888","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1.7","方位角":"","详细描述":"faint, considerably small, brighter middle","简略描述":"F, cS, bM"},{"ID":"2811","标识":"NGC2811","M标识":"NGC2811","拓展名":"","组件":"","Class":"II 505","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h16m11.2s","赤经D(J2000)":"9.26977777777778","赤纬(J2000)":"-16h18m45s","赤纬D(J2000)":"-16.3125","可见光星等V":"11.3","摄影(蓝光)星等B":"12.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"2.5","短轴(分)":"0.9","方位角":"22","详细描述":"pretty bright, pretty small, extended, pretty suddenly much brighter middle","简略描述":"pB, pS, E, psmbM"},{"ID":"2812","标识":"NGC2812","M标识":"NGC2812","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h17m40.8s","赤经D(J2000)":"9.294666666666666","赤纬(J2000)":"+19h55m9s","赤纬D(J2000)":"19.91916666666667","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.5","短轴(分)":"0.1","方位角":"150","详细描述":"extremely faint","简略描述":"eF"},{"ID":"2813","标识":"NGC2813","M标识":"NGC2813","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h17m45.4s","赤经D(J2000)":"9.295944444444444","赤纬(J2000)":"+19h54m25s","赤纬D(J2000)":"19.90694444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"145","详细描述":"faint","简略描述":"F"},{"ID":"2814","标识":"NGC2814","M标识":"NGC2814","拓展名":"","组件":"","Class":"II 868","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h21m11.5s","赤经D(J2000)":"9.353194444444444","赤纬(J2000)":"+64h15m7s","赤纬D(J2000)":"64.25194444444445","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"179","详细描述":"faint, small, irregular figure, 1st of 2 (d'Arrest, not found)","简略描述":"F, S, iF, 1st of 2 (d'A not found)"},{"ID":"2815","标识":"NGC2815","M标识":"NGC2815","拓展名":"","组件":"","Class":"III 242","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h16m19.5s","赤经D(J2000)":"9.272083333333335","赤纬(J2000)":"-23h38m2s","赤纬D(J2000)":"-23.633888888888887","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.5","短轴(分)":"1.1","方位角":"10","详细描述":"faint, small, a little extended, gradually brighter middle","简略描述":"F, S, lE, gbM"},{"ID":"2816","标识":"NGC2816","M标识":"NGC2816","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h21m46s","赤经D(J2000)":"9.362777777777778","赤纬(J2000)":"+64h15m31s","赤纬D(J2000)":"64.25861111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4.1","短轴(分)":"0.4","方位角":"62","详细描述":"faint, pretty much extended","简略描述":"F, pmE"},{"ID":"2817","标识":"NGC2817","M标识":"NGC2817","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h17m10.6s","赤经D(J2000)":"9.286277777777778","赤纬(J2000)":"-4h45m10s","赤纬D(J2000)":"-4.752777777777778","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2","短轴(分)":"1.7","方位角":"5","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"2818","标识":"NGC2818","M标识":"NGC2818","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN+OCL","星座(Zh)":"罗盘座","星座(En)":"PYX","赤经(J2000)":"9h16m10s","赤经D(J2000)":"9.269444444444446","赤纬(J2000)":"-36h37m34s","赤纬D(J2000)":"-36.626111111111115","可见光星等V":"11.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.4","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a planetary nebula, pretty bright, pretty large, round, very gradually a little brighter middle, in a large cluster","简略描述":"! planetary, pB, pL, R, vglbM, in L Cl"},{"ID":"2819","标识":"NGC2819","M标识":"NGC2819","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h18m9.4s","赤经D(J2000)":"9.302611111111112","赤纬(J2000)":"+16h11m53s","赤纬D(J2000)":"16.198055555555555","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"60","详细描述":"pretty bright, very small, round","简略描述":"pB, vS, R"},{"ID":"2820","标识":"NGC2820","M标识":"NGC2820","拓展名":"","组件":"","Class":"II 869","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h21m46s","赤经D(J2000)":"9.362777777777778","赤纬(J2000)":"+64h15m31s","赤纬D(J2000)":"64.25861111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4.1","短轴(分)":"0.4","方位角":"62","详细描述":"faint, pretty much extended","简略描述":"F, S, E, 2nd of 2"},{"ID":"2821","标识":"NGC2821","M标识":"NGC2821","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"罗盘座","星座(En)":"PYX","赤经(J2000)":"9h16m47.8s","赤经D(J2000)":"9.279944444444446","赤纬(J2000)":"-26h49m0s","赤纬D(J2000)":"-26.816666666666666","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2","短轴(分)":"0.5","方位角":"100","详细描述":"extremely faint, 11th magnitude star attached","简略描述":"eF, * 11 att"},{"ID":"2822","标识":"NGC2822","M标识":"NGC2822","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"9h13m49.8s","赤经D(J2000)":"9.2305","赤纬(J2000)":"-69h38m39s","赤纬D(J2000)":"-69.64416666666668","可见光星等V":"10.9","摄影(蓝光)星等B":"11.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.3","短轴(分)":"2.2","方位角":"90","详细描述":"pretty faint, very small, round, gradually a little brighter middle","简略描述":"pF, vS, R, glbM"},{"ID":"2823","标识":"NGC2823","M标识":"NGC2823","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h19m17.4s","赤经D(J2000)":"9.3215","赤纬(J2000)":"+34h0m30s","赤纬D(J2000)":"34.00833333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"30","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"2824","标识":"NGC2824","M标识":"NGC2824","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h19m2.3s","赤经D(J2000)":"9.317305555555555","赤纬(J2000)":"+26h16m13s","赤纬D(J2000)":"26.27027777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"160","详细描述":"a cluster, small, stars faint, very compressed","简略描述":"Cl, S, st F, vC"},{"ID":"2825","标识":"NGC2825","M标识":"NGC2825","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h19m22.4s","赤经D(J2000)":"9.322888888888889","赤纬(J2000)":"+33h44m35s","赤纬D(J2000)":"33.74305555555556","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"88","详细描述":"faint, pretty small, a little extended, brighter middle","简略描述":"F, pS, lE, bM"},{"ID":"2826","标识":"NGC2826","M标识":"NGC2826","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h19m24.1s","赤经D(J2000)":"9.323361111111112","赤纬(J2000)":"+33h37m25s","赤纬D(J2000)":"33.62361111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"143","详细描述":"very faint, very small, round, h 581 is 7 arcmin to the north","简略描述":"vF, vS, R, h 581 n 7'"},{"ID":"2827","标识":"NGC2827","M标识":"NGC2827","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h19m18.9s","赤经D(J2000)":"9.321916666666667","赤纬(J2000)":"+33h52m51s","赤纬D(J2000)":"33.880833333333335","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"6","详细描述":"very faint, very small, round, 1st of 3","简略描述":"vF, vS, R, 1st of 3"},{"ID":"2828","标识":"NGC2828","M标识":"NGC2828","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h19m34.8s","赤经D(J2000)":"9.326333333333332","赤纬(J2000)":"+33h53m19s","赤纬D(J2000)":"33.88861111111111","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"48","详细描述":"very faint, very small, round, 2nd of 3","简略描述":"vF, vS, R, 2nd of 3"},{"ID":"2829","标识":"NGC2829","M标识":"NGC2829","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h19m52.3s","赤经D(J2000)":"9.331194444444444","赤纬(J2000)":"+33h38m58s","赤纬D(J2000)":"33.64944444444444","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, very small, round, northeast of 1807","简略描述":"eF, vS, R, nf 1807"},{"ID":"2830","标识":"NGC2830","M标识":"NGC2830","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h19m41.2s","赤经D(J2000)":"9.328111111111111","赤纬(J2000)":"+33h44m17s","赤纬D(J2000)":"33.738055555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"112","详细描述":"considerably bright, considerably large, extended, 1st of 3","简略描述":"cB, cL, E, 1st of 3"},{"ID":"2831","标识":"NGC2831","M标识":"NGC2831","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h19m45.6s","赤经D(J2000)":"9.329333333333333","赤纬(J2000)":"+33h44m41s","赤纬D(J2000)":"33.74472222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"considerably bright, considerably large, extended, 1st of 3","简略描述":"F, S, lE, bM, 2nd of 3"},{"ID":"2832","标识":"NGC2832","M标识":"NGC2832","拓展名":"","组件":"","Class":"I 113","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h19m46.8s","赤经D(J2000)":"9.329666666666666","赤纬(J2000)":"+33h44m59s","赤纬D(J2000)":"33.749722222222225","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3","短轴(分)":"2","方位角":"160","详细描述":"faint, very small, round, 3rd of 3","简略描述":"F, vS, R, 3rd of 3"},{"ID":"2833","标识":"NGC2833","M标识":"NGC2833","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h19m57.8s","赤经D(J2000)":"9.332722222222221","赤纬(J2000)":"+33h55m39s","赤纬D(J2000)":"33.927499999999995","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"168","详细描述":"faint, pretty small, round, 3rd of 3 in line","简略描述":"F, pS, R, 3rd of 3 in line"},{"ID":"2834","标识":"NGC2834","M标识":"NGC2834","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h20m2.5s","赤经D(J2000)":"9.334027777777779","赤纬(J2000)":"+33h42m38s","赤纬D(J2000)":"33.71055555555556","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"65","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"2835","标识":"NGC2835","M标识":"NGC2835","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h17m52.6s","赤经D(J2000)":"9.297944444444445","赤纬(J2000)":"-22h21m19s","赤纬D(J2000)":"-22.35527777777778","可见光星等V":"10.5","摄影(蓝光)星等B":"11","B-V":"0.5","表面亮度(mag\/arcmin2)":"14","长轴(分)":"6.6","短轴(分)":"4.4","方位角":"8","详细描述":"faint, 10th magnitude star involved on the east, between two 9th magnitude stars","简略描述":"F, * 10 inv f, bet 2 st 9"},{"ID":"2836","标识":"NGC2836","M标识":"NGC2836","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"9h13m45.3s","赤经D(J2000)":"9.22925","赤纬(J2000)":"-69h19m59s","赤纬D(J2000)":"-69.33305555555555","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.7","短轴(分)":"2","方位角":"112","详细描述":"faint, pretty small, round, gradually a little brighter middle","简略描述":"F, pS, R, glbM"},{"ID":"2837","标识":"NGC2837","M标识":"NGC2837","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h18m23.4s","赤经D(J2000)":"9.306500000000002","赤纬(J2000)":"-16h28m53s","赤纬D(J2000)":"-16.481388888888887","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, round, brighter middle, star 8.5 seconds of time to east","简略描述":"eF, R, bM, * f 8s.5"},{"ID":"2838","标识":"NGC2838","M标识":"NGC2838","拓展名":"","组件":"","Class":"III 627","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h20m43s","赤经D(J2000)":"9.345277777777778","赤纬(J2000)":"+39h18m59s","赤纬D(J2000)":"39.31638888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"2839","标识":"NGC2839","M标识":"NGC2839","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h20m36.3s","赤经D(J2000)":"9.343416666666668","赤纬(J2000)":"+33h39m4s","赤纬D(J2000)":"33.651111111111106","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"2840","标识":"NGC2840","M标识":"NGC2840","拓展名":"","组件":"","Class":"III 827","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h20m52.7s","赤经D(J2000)":"9.347972222222223","赤纬(J2000)":"+35h22m6s","赤纬D(J2000)":"35.36833333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.9","方位角":"110","详细描述":"considerably faint, small, round, 10th magnitude star 2 arcmin to northwest","简略描述":"cF, S, R, * 10 np 2'"},{"ID":"2841","标识":"NGC2841","M标识":"NGC2841","拓展名":"","组件":"","Class":"I 205","业余排名":"5","中文名":"虎眼星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h22m2.3s","赤经D(J2000)":"9.367305555555555","赤纬(J2000)":"+50h58m35s","赤纬D(J2000)":"50.97638888888889","可见光星等V":"9.2","摄影(蓝光)星等B":"10.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"8.1","短轴(分)":"3.5","方位角":"147","详细描述":"very bright, large, very much extended 151°, very suddenly much brighter middle equal to 10th magnitude star","简略描述":"vB, L, vmE 151°, vsmbM = * 10"},{"ID":"2842","标识":"NGC2842","M标识":"NGC2842","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"9h15m36.4s","赤经D(J2000)":"9.260111111111112","赤纬(J2000)":"-63h4m10s","赤纬D(J2000)":"-63.06944444444445","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"120","详细描述":"faint, very small, between 2 stars","简略描述":"F, vS, bet 2 st"},{"ID":"2843","标识":"NGC2843","M标识":"NGC2843","拓展名":"","组件":"","Class":"III 64","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h20m28.7s","赤经D(J2000)":"9.341305555555556","赤纬(J2000)":"+18h55m34s","赤纬D(J2000)":"18.926111111111112","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"57","详细描述":"a small (faint) star and nebula","简略描述":"S * and neb"},{"ID":"2844","标识":"NGC2844","M标识":"NGC2844","拓展名":"","组件":"","Class":"III 628","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h21m48s","赤经D(J2000)":"9.363333333333333","赤纬(J2000)":"+40h9m7s","赤纬D(J2000)":"40.151944444444446","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"13","详细描述":"considerably faint, considerably small","简略描述":"cF, cS"},{"ID":"2845","标识":"NGC2845","M标识":"NGC2845","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"9h18m36.9s","赤经D(J2000)":"9.31025","赤纬(J2000)":"-38h0m35s","赤纬D(J2000)":"-38.00972222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.9","B-V":"1.2","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"2.3","短轴(分)":"1.2","方位角":"70","详细描述":"very faint, small, round, 12th magnitude star attached on southeast","简略描述":"vF, S, R, * 12 att sf"},{"ID":"2846","标识":"NGC2846","M标识":"NGC2846","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h19m40.4s","赤经D(J2000)":"9.32788888888889","赤纬(J2000)":"-14h40m32s","赤纬D(J2000)":"-14.675555555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a very small cluster (nebulous?), 10th magnitude star 4 arcmin to southeast","简略描述":"vS Cl (neb?), * 10 sf 4'"},{"ID":"2847","标识":"NGC2847","M标识":"NGC2847","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h20m8.6s","赤经D(J2000)":"9.335722222222223","赤纬(J2000)":"-16h31m2s","赤纬D(J2000)":"-16.51722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, involved in h 587, on the northwest","简略描述":"vF, S, inv in h 587, np"},{"ID":"2848","标识":"NGC2848","M标识":"NGC2848","拓展名":"","组件":"","Class":"III 488","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h20m9.8s","赤经D(J2000)":"9.336055555555555","赤纬(J2000)":"-16h31m32s","赤纬D(J2000)":"-16.525555555555556","可见光星等V":"11.8","摄影(蓝光)星等B":"12.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.5","短轴(分)":"1.5","方位角":"40","详细描述":"very faint, considerably large, extended 45°, gradually a little brighter middle, 11th magnitude star 3 arcmin to northeast","简略描述":"vF, cL, E 45°, glbM, * 11 nf 3'"},{"ID":"2849","标识":"NGC2849","M标识":"NGC2849","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"9h19m22.8s","赤经D(J2000)":"9.323","赤纬(J2000)":"-40h31m13s","赤纬D(J2000)":"-40.52027777777778","可见光星等V":"12.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"extremely faint, considerably large, round, very gradually a little brighter middle, partially resolved (some stars seen)","简略描述":"eF, cL, R, vglbM, rr"},{"ID":"2850","标识":"NGC2850","M标识":"NGC2850","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h20m56.9s","赤经D(J2000)":"9.34913888888889","赤纬(J2000)":"-4h56m22s","赤纬D(J2000)":"-4.939444444444445","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"30","详细描述":"very faint, very small, round, much brighter middle","简略描述":"vF, vS, R, mbM"},{"ID":"2851","标识":"NGC2851","M标识":"NGC2851","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h20m30.3s","赤经D(J2000)":"9.341750000000001","赤纬(J2000)":"-16h29m43s","赤纬D(J2000)":"-16.49527777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"5","详细描述":"extremely faint, pretty small, much extended, following (east of) III 488","简略描述":"eF, pS, mE, f III 488"},{"ID":"2852","标识":"NGC2852","M标识":"NGC2852","拓展名":"","组件":"","Class":"III 629","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h23m14.5s","赤经D(J2000)":"9.38736111111111","赤纬(J2000)":"+40h9m52s","赤纬D(J2000)":"40.16444444444444","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.6","方位角":"165","详细描述":"very faint, considerably small, round, 10th magnitude star 2 arcmin preceding (to west), 1st of 2","简略描述":"vF, cS, R, * 10 p 2', 1st of 2"},{"ID":"2853","标识":"NGC2853","M标识":"NGC2853","拓展名":"","组件":"","Class":"III 630","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h23m17.4s","赤经D(J2000)":"9.388166666666667","赤纬(J2000)":"+40h12m1s","赤纬D(J2000)":"40.20027777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.6","方位角":"25","详细描述":"very faint, small, very gradually brighter middle, 2nd of 2","简略描述":"vF, S, vgbM, 2nd of 2"},{"ID":"2854","标识":"NGC2854","M标识":"NGC2854","拓展名":"","组件":"","Class":"III 714","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h24m2.9s","赤经D(J2000)":"9.400805555555555","赤纬(J2000)":"+49h12m14s","赤纬D(J2000)":"49.20388888888889","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"50","详细描述":"considerably faint, considerably small, very little extended, pretty gradually a little brighter middle","简略描述":"cF, cS, vlE, pglbM"},{"ID":"2855","标识":"NGC2855","M标识":"NGC2855","拓展名":"","组件":"","Class":"I 132","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h21m27.5s","赤经D(J2000)":"9.35763888888889","赤纬(J2000)":"-11h54m37s","赤纬D(J2000)":"-11.910277777777779","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.5","短轴(分)":"2.2","方位角":"132","详细描述":"pretty bright, pretty large, round, gradually much brighter middle and nucleus","简略描述":"pB, pL, R, gmbMN"},{"ID":"2856","标识":"NGC2856","M标识":"NGC2856","拓展名":"","组件":"","Class":"III 713","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h24m16.2s","赤经D(J2000)":"9.4045","赤纬(J2000)":"+49h14m57s","赤纬D(J2000)":"49.24916666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"134","详细描述":"considerably faint, considerably small, a little extended, brighter middle","简略描述":"cF, cS, lE, bM"},{"ID":"2857","标识":"NGC2857","M标识":"NGC2857","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h24m37.7s","赤经D(J2000)":"9.410472222222223","赤纬(J2000)":"+49h21m26s","赤纬D(J2000)":"49.35722222222223","可见光星等V":"12.3","摄影(蓝光)星等B":"12.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.2","短轴(分)":"2","方位角":"138","详细描述":"very faint, pretty large, 4 stars preceding (to the west)","简略描述":"vF, pL, 4 st p"},{"ID":"2858","标识":"NGC2858","M标识":"NGC2858","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h22m54.9s","赤经D(J2000)":"9.381916666666667","赤纬(J2000)":"+3h9m27s","赤纬D(J2000)":"3.1574999999999998","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"117","详细描述":"very faint, small, much brighter middle","简略描述":"vF, S, mbM"},{"ID":"2859","标识":"NGC2859","M标识":"NGC2859","拓展名":"","组件":"","Class":"I 137","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h24m18.6s","赤经D(J2000)":"9.405166666666666","赤纬(J2000)":"+34h30m48s","赤纬D(J2000)":"34.513333333333335","可见光星等V":"10.9","摄影(蓝光)星等B":"11.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"4.6","短轴(分)":"4.1","方位角":"85","详细描述":"very bright, pretty large, round, suddenly much brighter middle","简略描述":"vB, pL, R, smbM"},{"ID":"2860","标识":"NGC2860","M标识":"NGC2860","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h24m53.2s","赤经D(J2000)":"9.414777777777779","赤纬(J2000)":"+41h3m36s","赤纬D(J2000)":"41.059999999999995","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"108","详细描述":"very faint, very small, round, gradually brighter middle","简略描述":"vF, vS, R, gbM"},{"ID":"2861","标识":"NGC2861","M标识":"NGC2861","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h23m36.5s","赤经D(J2000)":"9.393472222222222","赤纬(J2000)":"+2h8m10s","赤纬D(J2000)":"2.136111111111111","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"6","详细描述":"pretty faint, small, irregularly round, 14th magnitude star following (to the east)","简略描述":"pF, S, iR, * 14 f"},{"ID":"2862","标识":"NGC2862","M标识":"NGC2862","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h24m55s","赤经D(J2000)":"9.415277777777778","赤纬(J2000)":"+26h46m31s","赤纬D(J2000)":"26.775277777777777","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.5","短轴(分)":"0.5","方位角":"114","详细描述":"faint, small, extended, brighter middle","简略描述":"F, S, E, bM"},{"ID":"2863","标识":"NGC2863","M标识":"NGC2863","拓展名":"","组件":"","Class":"III 520","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h23m36.5s","赤经D(J2000)":"9.393472222222222","赤纬(J2000)":"-10h25m59s","赤纬D(J2000)":"-10.433055555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.9","方位角":"120","详细描述":"considerably faint, small, extended, between 2 stars of 12th and 16th magnitude","简略描述":"cF, S, E, bet 2 st 12, 16"},{"ID":"2864","标识":"NGC2864","M标识":"NGC2864","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h24m15.4s","赤经D(J2000)":"9.404277777777779","赤纬(J2000)":"+5h56m24s","赤纬D(J2000)":"5.94","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1","短轴(分)":"0.7","方位角":"12","详细描述":"very faint, pretty large, a little extended","简略描述":"vF, pL, lE"},{"ID":"2865","标识":"NGC2865","M标识":"NGC2865","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h23m30.2s","赤经D(J2000)":"9.391722222222223","赤纬(J2000)":"-23h9m41s","赤纬D(J2000)":"-23.161388888888887","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.5","短轴(分)":"1.8","方位角":"162","详细描述":"bright, small, round, gradually brighter middle","简略描述":"B, S, R, gbM"},{"ID":"2866","标识":"NGC2866","M标识":"NGC2866","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"9h22m6.5s","赤经D(J2000)":"9.368472222222223","赤纬(J2000)":"-51h6m8s","赤纬D(J2000)":"-51.102222222222224","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a cluster, a little compressed","简略描述":"Cl, lC"},{"ID":"2867","标识":"NGC2867","M标识":"NGC2867","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"9h21m25.4s","赤经D(J2000)":"9.357055555555554","赤纬(J2000)":"-58h18m40s","赤纬D(J2000)":"-58.31111111111111","可见光星等V":"9.7","摄影(蓝光)星等B":"9.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.4","短轴(分)":"","方位角":"","详细描述":", while the GC reads 59°·13, 13","简略描述":"!! planetary = * 8, vS, R, * 15, 59° 13\""},{"ID":"2868","标识":"NGC2868","M标识":"NGC2868","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h23m27.2s","赤经D(J2000)":"9.390888888888888","赤纬(J2000)":"-10h25m44s","赤纬D(J2000)":"-10.428888888888888","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"65","详细描述":"extremely faint, small, round, 10 seconds of time preceding (to the west of) next, (?RA 09h 22m)","简略描述":"eF, S, R, 10s p next (?RA 9h 22m)"},{"ID":"2869","标识":"NGC2869","M标识":"NGC2869","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sm","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h23m36.5s","赤经D(J2000)":"9.393472222222222","赤纬(J2000)":"-10h25m59s","赤纬D(J2000)":"-10.433055555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.9","方位角":"120","详细描述":"considerably faint, small, extended, between 2 stars of 12th and 16th magnitude","简略描述":"eF, pS, E 170°, gbM, bet 2 F st"},{"ID":"2870","标识":"NGC2870","M标识":"NGC2870","拓展名":"","组件":"","Class":"III 846","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h27m53.7s","赤经D(J2000)":"9.464916666666666","赤纬(J2000)":"+57h22m33s","赤纬D(J2000)":"57.37583333333333","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.5","短轴(分)":"0.6","方位角":"123","详细描述":"considerably faint, small, extended, very gradually a little brighter middle","简略描述":"cF, S, E, vglbM"},{"ID":"2871","标识":"NGC2871","M标识":"NGC2871","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h25m39.4s","赤经D(J2000)":"9.42761111111111","赤纬(J2000)":"+11h26m38s","赤纬D(J2000)":"11.443888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, h 597 an arcmin to southeast","简略描述":"eF, h 597 sf 1'"},{"ID":"2872","标识":"NGC2872","M标识":"NGC2872","拓展名":"","组件":"","Class":"II 57, II 546","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h25m42.9s","赤经D(J2000)":"9.428583333333332","赤纬(J2000)":"+11h25m58s","赤纬D(J2000)":"11.432777777777778","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.1","短轴(分)":"1.8","方位角":"171","详细描述":"pretty faint, pretty small, round, brighter middle","简略描述":"pF, pS, R, bM"},{"ID":"2873","标识":"NGC2873","M标识":"NGC2873","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h25m48.5s","赤经D(J2000)":"9.430138888888889","赤纬(J2000)":"+11h27m17s","赤纬D(J2000)":"11.454722222222221","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"117","详细描述":"very faint, very small, round, north of extended nebula","简略描述":"vF, vS, R, n of E neb"},{"ID":"2874","标识":"NGC2874","M标识":"NGC2874","拓展名":"","组件":"","Class":"II 58, II 547","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h25m47.8s","赤经D(J2000)":"9.429944444444445","赤纬(J2000)":"+11h25m33s","赤纬D(J2000)":"11.425833333333333","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.2","短轴(分)":"0.7","方位角":"43","详细描述":"pretty faint, pretty small, round, brighter middle","简略描述":"vF, pL, mE"},{"ID":"2875","标识":"NGC2875","M标识":"NGC2875","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h25m48.7s","赤经D(J2000)":"9.430194444444444","赤纬(J2000)":"+11h25m56s","赤纬D(J2000)":"11.432222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, northeast of h 598","简略描述":"eF, nf h 598"},{"ID":"2876","标识":"NGC2876","M标识":"NGC2876","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h25m13.8s","赤经D(J2000)":"9.420499999999999","赤纬(J2000)":"-6h43m0s","赤纬D(J2000)":"-6.716666666666667","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"95","详细描述":"faint, small, several very faint stars involved","简略描述":"F, S, sev vF st inv"},{"ID":"2877","标识":"NGC2877","M标识":"NGC2877","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h25m47.1s","赤经D(J2000)":"9.429749999999999","赤纬(J2000)":"+2h13m43s","赤纬D(J2000)":"2.2286111111111113","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"141","详细描述":"very faint, small, very little extended","简略描述":"vF, S, vlE"},{"ID":"2878","标识":"NGC2878","M标识":"NGC2878","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h25m47.4s","赤经D(J2000)":"9.429833333333333","赤纬(J2000)":"+2h5m24s","赤纬D(J2000)":"2.0900000000000003","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"174","详细描述":"very faint, small, very little extended","简略描述":"vF, S, vlE"},{"ID":"2879","标识":"NGC2879","M标识":"NGC2879","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h25m22.6s","赤经D(J2000)":"9.422944444444443","赤纬(J2000)":"-11h39m8s","赤纬D(J2000)":"-11.652222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"2880","标识":"NGC2880","M标识":"NGC2880","拓展名":"","组件":"","Class":"I 260","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h29m34.6s","赤经D(J2000)":"9.492944444444444","赤纬(J2000)":"+62h29m28s","赤纬D(J2000)":"62.49111111111111","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2","短轴(分)":"1.2","方位角":"140","详细描述":"bright, considerably small, round, much brighter middle, among stars","简略描述":"B, cS, R, mbM, am st"},{"ID":"2881","标识":"NGC2881","M标识":"NGC2881","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h25m54.7s","赤经D(J2000)":"9.431861111111111","赤纬(J2000)":"-11h59m44s","赤纬D(J2000)":"-11.995555555555555","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"135","详细描述":"extremely faint, pretty small, 2 stars 4 arcmin following (to the east)","简略描述":"eF, pS, 2 st 4' f"},{"ID":"2882","标识":"NGC2882","M标识":"NGC2882","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h26m35.9s","赤经D(J2000)":"9.443305555555556","赤纬(J2000)":"+7h57m15s","赤纬D(J2000)":"7.954166666666667","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"80","详细描述":"faint, pretty large, extended","简略描述":"F, pL, E"},{"ID":"2883","标识":"NGC2883","M标识":"NGC2883","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"罗盘座","星座(En)":"PYX","赤经(J2000)":"9h25m18.4s","赤经D(J2000)":"9.421777777777777","赤纬(J2000)":"-34h6m8s","赤纬D(J2000)":"-34.102222222222224","可见光星等V":"14.4","摄影(蓝光)星等B":"15","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.9","长轴(分)":"2.2","短轴(分)":"0.8","方位角":"176","详细描述":"very faint, small, very gradually a little brighter middle, well resolved, clearly consisting of stars, stars of 15th magnitude","简略描述":"vF, S, vglbM, rrr, st 15"},{"ID":"2884","标识":"NGC2884","M标识":"NGC2884","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h26m24.5s","赤经D(J2000)":"9.440138888888889","赤纬(J2000)":"-11h33m20s","赤纬D(J2000)":"-11.555555555555557","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.1","短轴(分)":"1","方位角":"174","详细描述":"faint, small, mottled but not resolved?","简略描述":"F, S, r?"},{"ID":"2885","标识":"NGC2885","M标识":"NGC2885","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h27m18.4s","赤经D(J2000)":"9.45511111111111","赤纬(J2000)":"+23h1m12s","赤纬D(J2000)":"23.02","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"70","详细描述":"extremely faint, very small, extended 90°","简略描述":"eF, vS, E 90°"},{"ID":"2886","标识":"NGC2886","M标识":"NGC2886","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h26m38.7s","赤经D(J2000)":"9.444083333333333","赤纬(J2000)":"-21h44m18s","赤纬D(J2000)":"-21.738333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, pretty large","简略描述":"eeF, pL"},{"ID":"2887","标识":"NGC2887","M标识":"NGC2887","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"9h23m24.3s","赤经D(J2000)":"9.390083333333333","赤纬(J2000)":"-63h48m44s","赤纬D(J2000)":"-63.81222222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.1","短轴(分)":"1.6","方位角":"78","详细描述":"faint, small, round, pretty much brighter middle, bright star near","简略描述":"F, S, R, pmbM, B * nr"},{"ID":"2888","标识":"NGC2888","M标识":"NGC2888","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"罗盘座","星座(En)":"PYX","赤经(J2000)":"9h26m19.6s","赤经D(J2000)":"9.438777777777778","赤纬(J2000)":"-28h2m10s","赤纬D(J2000)":"-28.03611111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"158","详细描述":"considerably faint, small, round, gradually much brighter middle","简略描述":"cF, S, R, gmbM"},{"ID":"2889","标识":"NGC2889","M标识":"NGC2889","拓展名":"","组件":"","Class":"II 555","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h27m12.5s","赤经D(J2000)":"9.45347222222222","赤纬(J2000)":"-11h38m36s","赤纬D(J2000)":"-11.643333333333333","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.3","短轴(分)":"1.9","方位角":"6","详细描述":"pretty faint, pretty small, very little extended, very gradually a little brighter middle, mottled but not resolved","简略描述":"pF, pS, vlE, vglbM, r"},{"ID":"2890","标识":"NGC2890","M标识":"NGC2890","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h26m29.8s","赤经D(J2000)":"9.441611111111111","赤纬(J2000)":"-14h31m44s","赤纬D(J2000)":"-14.52888888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"67","详细描述":"extremely faint, small, round, brighter middle and nucleus","简略描述":"eF, S, R, bMN"},{"ID":"2891","标识":"NGC2891","M标识":"NGC2891","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"罗盘座","星座(En)":"PYX","赤经(J2000)":"9h26m56.6s","赤经D(J2000)":"9.449055555555557","赤纬(J2000)":"-24h46m58s","赤纬D(J2000)":"-24.782777777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"145","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"2892","标识":"NGC2892","M标识":"NGC2892","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h32m52.8s","赤经D(J2000)":"9.548","赤纬(J2000)":"+67h37m3s","赤纬D(J2000)":"67.61749999999999","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"pretty faint, pretty small, round, a little brighter middle","简略描述":"pF, pS, R, lbM"},{"ID":"2893","标识":"NGC2893","M标识":"NGC2893","拓展名":"","组件":"","Class":"III 297","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h30m16.9s","赤经D(J2000)":"9.504694444444445","赤纬(J2000)":"+29h32m25s","赤纬D(J2000)":"29.540277777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"1","方位角":"79","详细描述":"very faint, small, round, very suddenly brighter middle equal to 12th magnitude star","简略描述":"vF, S, R, vsbM * 12"},{"ID":"2894","标识":"NGC2894","M标识":"NGC2894","拓展名":"","组件":"","Class":"III 8","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h29m30.2s","赤经D(J2000)":"9.491722222222222","赤纬(J2000)":"+7h43m6s","赤纬D(J2000)":"7.718333333333334","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.9","短轴(分)":"1","方位角":"27","详细描述":"very faint, extended, extremely mottled but not resolved, 2 or 3 stars involved","简略描述":"vF, E, er, 2 or 3 st inv"},{"ID":"2895","标识":"NGC2895","M标识":"NGC2895","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h32m24.8s","赤经D(J2000)":"9.540222222222223","赤纬(J2000)":"+57h28m59s","赤纬D(J2000)":"57.48305555555556","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"57","详细描述":"very faint, very small, round, very gradually brighter middle, double star 7 arcmin to south","简略描述":"vF, vS, R, vgbM, D * 7' s"},{"ID":"2896","标识":"NGC2896","M标识":"NGC2896","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h30m16.9s","赤经D(J2000)":"9.504694444444445","赤纬(J2000)":"+23h39m49s","赤纬D(J2000)":"23.66361111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"faint, very small, round, 17th magnitude star attached","简略描述":"F, vS, R, * 17 att"},{"ID":"2897","标识":"NGC2897","M标识":"NGC2897","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h29m45.7s","赤经D(J2000)":"9.496027777777776","赤纬(J2000)":"+2h12m27s","赤纬D(J2000)":"2.2075","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"170","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"2898","标识":"NGC2898","M标识":"NGC2898","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h29m46.3s","赤经D(J2000)":"9.496194444444443","赤纬(J2000)":"+2h3m54s","赤纬D(J2000)":"2.065","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.8","方位角":"125","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"2899","标识":"NGC2899","M标识":"NGC2899","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"9h27m3s","赤经D(J2000)":"9.450833333333332","赤纬(J2000)":"-56h6m20s","赤纬D(J2000)":"-56.105555555555554","可见光星等V":"11.8","摄影(蓝光)星等B":"12.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.95","短轴(分)":"1","方位角":"","详细描述":"faint, pretty large, round, gradually much brighter middle, among 80 stars","简略描述":"F, pL, R, gmbM, am 80 st"},{"ID":"2900","标识":"NGC2900","M标识":"NGC2900","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h30m15s","赤经D(J2000)":"9.504166666666666","赤纬(J2000)":"+4h8m37s","赤纬D(J2000)":"4.143611111111111","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"150","详细描述":"most extremely faint, pretty large, round","简略描述":"eeF, pL, R"},{"ID":"2901","标识":"NGC2901","M标识":"NGC2901","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h32m36s","赤经D(J2000)":"9.543333333333333","赤纬(J2000)":"+31h6m0s","赤纬D(J2000)":"31.1","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"no description","简略描述":"No description"},{"ID":"2902","标识":"NGC2902","M标识":"NGC2902","拓展名":"","组件":"","Class":"III 276","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h30m53.1s","赤经D(J2000)":"9.51475","赤纬(J2000)":"-14h44m8s","赤纬D(J2000)":"-14.735555555555555","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"8","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"2903","标识":"NGC2903","M标识":"NGC2903","拓展名":"","组件":"","Class":"I 56","业余排名":"5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h32m9.7s","赤经D(J2000)":"9.536027777777777","赤纬(J2000)":"+21h29m57s","赤纬D(J2000)":"21.499166666666667","可见光星等V":"9","摄影(蓝光)星等B":"9.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"12.6","短轴(分)":"6","方位角":"17","详细描述":"considerably bright, very large, extended, gradually much brighter middle, mottled but not resolved, southwestern of 2","简略描述":"cB, vL, E, gmbM, r, sp of 2"},{"ID":"2904","标识":"NGC2904","M标识":"NGC2904","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h30m16.9s","赤经D(J2000)":"9.504694444444445","赤纬(J2000)":"-30h23m6s","赤纬D(J2000)":"-30.384999999999998","可见光星等V":"12.3","摄影(蓝光)星等B":"13.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"84","详细描述":"faint, small, a little extended, pretty suddenly brighter middle","简略描述":"F, S, lE, psbM"},{"ID":"2905","标识":"NGC2905","M标识":"NGC2905","拓展名":"","组件":"","Class":"I 57","业余排名":"8.5","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h32m11.8s","赤经D(J2000)":"9.53661111111111","赤纬(J2000)":"+21h31m7s","赤纬D(J2000)":"21.51861111111111","可见光星等V":"15","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.1","短轴(分)":"","方位角":"","详细描述":"very faint, considerably large, round, pretty suddenly brighter middle, mottled but not resolved, northeastern of 2","简略描述":"vF, cL, R, psbM, r, nf of 2"},{"ID":"2906","标识":"NGC2906","M标识":"NGC2906","拓展名":"","组件":"","Class":"II 495","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h32m6.2s","赤经D(J2000)":"9.535055555555555","赤纬(J2000)":"+8h26m32s","赤纬D(J2000)":"8.442222222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"75","详细描述":"faint, pretty small, a little extended, gradually brighter middle","简略描述":"F, pS, lE, gbM"},{"ID":"2907","标识":"NGC2907","M标识":"NGC2907","拓展名":"","组件":"","Class":"II 506","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h31m36.6s","赤经D(J2000)":"9.526833333333334","赤纬(J2000)":"-16h44m1s","赤纬D(J2000)":"-16.733611111111113","可见光星等V":"11.6","摄影(蓝光)星等B":"12.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"2","短轴(分)":"1.2","方位角":"115","详细描述":"pretty faint, small, a little extended, much brighter to southeast","简略描述":"pF, S, lE, mb sf"},{"ID":"2908","标识":"NGC2908","M标识":"NGC2908","拓展名":"","组件":"","Class":"III 977","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"9h43m31.2s","赤经D(J2000)":"9.725333333333333","赤纬(J2000)":"+79h42m5s","赤纬D(J2000)":"79.70138888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"2909","标识":"NGC2909","M标识":"NGC2909","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h36m59.8s","赤经D(J2000)":"9.61661111111111","赤纬(J2000)":"+65h56m28s","赤纬D(J2000)":"65.94111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, pretty suddenly brighter middle","简略描述":"eF, S, psbM"},{"ID":"2910","标识":"NGC2910","M标识":"NGC2910","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"9h30m29s","赤经D(J2000)":"9.508055555555556","赤纬(J2000)":"-52h54m50s","赤纬D(J2000)":"-52.913888888888884","可见光星等V":"7.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, considerably large, pretty rich, pretty compressed, stars from 10th to 14th magnitude","简略描述":"Cl, cL, pRi, pC, st 10…14"},{"ID":"2911","标识":"NGC2911","M标识":"NGC2911","拓展名":"","组件":"","Class":"II 40","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h33m46.5s","赤经D(J2000)":"9.562916666666668","赤纬(J2000)":"+10h9m10s","赤纬D(J2000)":"10.152777777777779","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"4","短轴(分)":"3.1","方位角":"140","详细描述":"faint, pretty large, round, gradually brighter middle, western of 2","简略描述":"F, pL, R, gbM, p of 2"},{"ID":"2912","标识":"NGC2912","M标识":"NGC2912","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h33m56.9s","赤经D(J2000)":"9.565805555555556","赤纬(J2000)":"+10h11m33s","赤纬D(J2000)":"10.1925","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, h608 to the southwest","简略描述":"eF, h 608 sp"},{"ID":"2913","标识":"NGC2913","M标识":"NGC2913","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h34m2.7s","赤经D(J2000)":"9.567416666666666","赤纬(J2000)":"+9h28m42s","赤纬D(J2000)":"9.478333333333333","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"140","详细描述":"very faint, pretty large, irregularly round","简略描述":"vF, pL, iR"},{"ID":"2914","标识":"NGC2914","M标识":"NGC2914","拓展名":"","组件":"","Class":"III 513","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h34m2.7s","赤经D(J2000)":"9.567416666666666","赤纬(J2000)":"+10h6m33s","赤纬D(J2000)":"10.109166666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"12","详细描述":"very faint, small, round, brighter middle and nucleus, eastern of 2","简略描述":"vF, S, R, bMN, f of 2"},{"ID":"2915","标识":"NGC2915","M标识":"NGC2915","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"堰蜓座","星座(En)":"CHA","赤经(J2000)":"9h26m13.6s","赤经D(J2000)":"9.437111111111111","赤纬(J2000)":"-76h37m36s","赤纬D(J2000)":"-76.62666666666667","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"129","详细描述":"pretty faint, pretty large, round, gradually brighter middle","简略描述":"pF, pL, R, gbM"},{"ID":"2916","标识":"NGC2916","M标识":"NGC2916","拓展名":"","组件":"","Class":"II 260","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h34m57.5s","赤经D(J2000)":"9.582638888888889","赤纬(J2000)":"+21h42m16s","赤纬D(J2000)":"21.704444444444444","可见光星等V":"12.1","摄影(蓝光)星等B":"12.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.5","短轴(分)":"1.7","方位角":"20","详细描述":"faint, small, very little extended","简略描述":"F, S, vlE"},{"ID":"2917","标识":"NGC2917","M标识":"NGC2917","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h34m27s","赤经D(J2000)":"9.574166666666667","赤纬(J2000)":"-2h30m14s","赤纬D(J2000)":"-2.503888888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"169","详细描述":"pretty faint, small, much brighter middle","简略描述":"pF, S, mbM"},{"ID":"2918","标识":"NGC2918","M标识":"NGC2918","拓展名":"","组件":"","Class":"III 298","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h35m44s","赤经D(J2000)":"9.595555555555556","赤纬(J2000)":"+31h42m19s","赤纬D(J2000)":"31.705277777777777","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1","方位角":"65","详细描述":"very faint, considerably small, round, suddenly brighter middle and nucleus","简略描述":"vF, cS, R, sbMN"},{"ID":"2919","标识":"NGC2919","M标识":"NGC2919","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h34m47.6s","赤经D(J2000)":"9.579888888888888","赤纬(J2000)":"+10h17m2s","赤纬D(J2000)":"10.283888888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"159","详细描述":"faint, pretty small","简略描述":"F, pS"},{"ID":"2920","标识":"NGC2920","M标识":"NGC2920","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h34m12s","赤经D(J2000)":"9.57","赤纬(J2000)":"-20h51m33s","赤纬D(J2000)":"-20.859166666666667","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"129","详细描述":"extremely faint, small, round, western of 2","简略描述":"eF, S, R, p of 2"},{"ID":"2921","标识":"NGC2921","M标识":"NGC2921","拓展名":"","组件":"","Class":"III 597","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa\/P","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h34m31.1s","赤经D(J2000)":"9.575305555555556","赤纬(J2000)":"-20h55m11s","赤纬D(J2000)":"-20.919722222222223","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.9","短轴(分)":"1.1","方位角":"83","详细描述":"very faint, pretty small, a little extended, very gradually a little brighter middle, eastern of 2","简略描述":"vF, pS, lE, vglbM, f of 2"},{"ID":"2922","标识":"NGC2922","M标识":"NGC2922","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h36m52.6s","赤经D(J2000)":"9.614611111111111","赤纬(J2000)":"+37h41m41s","赤纬D(J2000)":"37.69472222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"103","详细描述":"very faint, small, irregularly round, a little brighter middle, mottled but not resolved","简略描述":"vF, S, iR, lbM, r"},{"ID":"2923","标识":"NGC2923","M标识":"NGC2923","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h36m3.8s","赤经D(J2000)":"9.601055555555556","赤纬(J2000)":"+16h45m39s","赤纬D(J2000)":"16.760833333333334","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"15","详细描述":"very faint","简略描述":"vF"},{"ID":"2924","标识":"NGC2924","M标识":"NGC2924","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h35m10.9s","赤经D(J2000)":"9.586361111111112","赤纬(J2000)":"-16h23m53s","赤纬D(J2000)":"-16.398055555555555","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"150","详细描述":"pretty bright, small, round","简略描述":"pB, S, R"},{"ID":"2925","标识":"NGC2925","M标识":"NGC2925","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"9h33m10.9s","赤经D(J2000)":"9.553027777777778","赤纬(J2000)":"-53h23m45s","赤纬D(J2000)":"-53.395833333333336","可见光星等V":"8.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, pretty compressed, double star taken","简略描述":"Cl, pRi, pC, D * taken"},{"ID":"2926","标识":"NGC2926","M标识":"NGC2926","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h37m31s","赤经D(J2000)":"9.625277777777779","赤纬(J2000)":"+32h50m30s","赤纬D(J2000)":"32.84166666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.8","方位角":"120","详细描述":"very faint","简略描述":"vF"},{"ID":"2927","标识":"NGC2927","M标识":"NGC2927","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h37m15.1s","赤经D(J2000)":"9.620861111111111","赤纬(J2000)":"+23h35m25s","赤纬D(J2000)":"23.590277777777775","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"1","方位角":"155","详细描述":"faint, pretty large, round, a little brighter middle","简略描述":"F, pL, R, lbM"},{"ID":"2928","标识":"NGC2928","M标识":"NGC2928","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h37m10.1s","赤经D(J2000)":"9.619472222222223","赤纬(J2000)":"+16h58m39s","赤纬D(J2000)":"16.9775","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"42","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"2929","标识":"NGC2929","M标识":"NGC2929","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h37m29.7s","赤经D(J2000)":"9.624916666666667","赤纬(J2000)":"+23h9m40s","赤纬D(J2000)":"23.16111111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"144","详细描述":"extremely faint, very small, a little extended, very little brighter middle, 1st of 3","简略描述":"eF, vS, lE, vlbM, 1st of 3"},{"ID":"2930","标识":"NGC2930","M标识":"NGC2930","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h37m32.6s","赤经D(J2000)":"9.625722222222223","赤纬(J2000)":"+23h12m13s","赤纬D(J2000)":"23.203611111111112","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"135","详细描述":"extremely faint, small, 2nd of 3","简略描述":"eF, S, 2nd of 3"},{"ID":"2931","标识":"NGC2931","M标识":"NGC2931","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h37m37.6s","赤经D(J2000)":"9.62711111111111","赤纬(J2000)":"+23h14m26s","赤纬D(J2000)":"23.240555555555556","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"69","详细描述":"extremely faint, very small, 3rd of 3","简略描述":"eF, vS, 3rd of 3"},{"ID":"2932","标识":"NGC2932","M标识":"NGC2932","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"9h35m54s","赤经D(J2000)":"9.598333333333334","赤纬(J2000)":"-46h55m0s","赤纬D(J2000)":"-46.916666666666664","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, extremely large, very rich, stars large and small (meaning bright and faint)","简略描述":"Cl, eL, vRi, st L and S"},{"ID":"2933","标识":"NGC2933","M标识":"NGC2933","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h37m55s","赤经D(J2000)":"9.631944444444445","赤纬(J2000)":"+17h0m53s","赤纬D(J2000)":"17.014722222222222","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.4","方位角":"30","详细描述":"faint, very small, a little extended, southwestern of 2","简略描述":"F, vS, lE, sp of 2"},{"ID":"2934","标识":"NGC2934","M标识":"NGC2934","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h37m55.1s","赤经D(J2000)":"9.631972222222222","赤纬(J2000)":"+17h3m18s","赤纬D(J2000)":"17.055","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, northeastern of 2","简略描述":"eF, nf of 2"},{"ID":"2935","标识":"NGC2935","M标识":"NGC2935","拓展名":"","组件":"","Class":"II 556","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h36m44.6s","赤经D(J2000)":"9.612388888888889","赤纬(J2000)":"-21h7m40s","赤纬D(J2000)":"-21.12777777777778","可见光星等V":"11.3","摄影(蓝光)星等B":"12.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"3.7","短轴(分)":"2.8","方位角":"0","详细描述":"pretty bright, pretty small, very little extended, gradually much brighter middle","简略描述":"pB, pS, vlE, gmbM"},{"ID":"2936","标识":"NGC2936","M标识":"NGC2936","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"企鹅星系","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h37m44.4s","赤经D(J2000)":"9.629000000000001","赤纬(J2000)":"+2h45m38s","赤纬D(J2000)":"2.7605555555555554","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"35","详细描述":"very faint, irregularly round","简略描述":"vF, iR"},{"ID":"2937","标识":"NGC2937","M标识":"NGC2937","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"蛋星系","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h37m45.1s","赤经D(J2000)":"9.629194444444446","赤纬(J2000)":"+2h44m53s","赤纬D(J2000)":"2.7480555555555557","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"0","详细描述":"very faint, irregularly round","简略描述":"F, S, like a neb *"},{"ID":"2938","标识":"NGC2938","M标识":"NGC2938","拓展名":"","组件":"","Class":"III 963","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"9h38m24.7s","赤经D(J2000)":"9.640194444444443","赤纬(J2000)":"+76h19m9s","赤纬D(J2000)":"76.31916666666666","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.8","短轴(分)":"1","方位角":"105","详细描述":"extremely faint, small, irregular figure, double star 3 arcmin to east","简略描述":"eF, S, iF, D * f 3'"},{"ID":"2939","标识":"NGC2939","M标识":"NGC2939","拓展名":"","组件":"","Class":"III 4","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h38m7.9s","赤经D(J2000)":"9.635527777777778","赤纬(J2000)":"+9h31m25s","赤纬D(J2000)":"9.523611111111112","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.4","短轴(分)":"0.6","方位角":"157","详细描述":"very faint, small, very little extended, brighter middle, triangle of stars to northeast","简略描述":"vF, S, vlE, bM, Δ st nf"},{"ID":"2940","标识":"NGC2940","M标识":"NGC2940","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h38m5.1s","赤经D(J2000)":"9.63475","赤纬(J2000)":"+9h37m2s","赤纬D(J2000)":"9.617222222222223","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"90","详细描述":"very faint, small, 5 arcmin north of h614","简略描述":"vF, S, 5' n of h 614"},{"ID":"2941","标识":"NGC2941","M标识":"NGC2941","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h38m24.3s","赤经D(J2000)":"9.640083333333333","赤纬(J2000)":"+17h2m40s","赤纬D(J2000)":"17.044444444444448","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"163","详细描述":"extremely faint, very small, a little extended, western of 2","简略描述":"eF, vS, lE, p of 2"},{"ID":"2942","标识":"NGC2942","M标识":"NGC2942","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h39m8s","赤经D(J2000)":"9.652222222222223","赤纬(J2000)":"+34h0m22s","赤纬D(J2000)":"34.00611111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"165","详细描述":"faint, pretty large, very little extended 0°, very gradually a little brighter middle","简略描述":"F, pL, vlE 0°, vglbM"},{"ID":"2943","标识":"NGC2943","M标识":"NGC2943","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h38m32.9s","赤经D(J2000)":"9.642472222222223","赤纬(J2000)":"+17h1m52s","赤纬D(J2000)":"17.03111111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.2","短轴(分)":"1.2","方位角":"130","详细描述":"faint, small, irregularly round, brighter middle, eastern of 2","简略描述":"F, S, iR, bM, f of 2"},{"ID":"2944","标识":"NGC2944","M标识":"NGC2944","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h39m18s","赤经D(J2000)":"9.655000000000001","赤纬(J2000)":"+32h18m38s","赤纬D(J2000)":"32.31055555555555","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.4","方位角":"95","详细描述":"faint, very small, a little brighter middle","简略描述":"F, vS, lbM"},{"ID":"2945","标识":"NGC2945","M标识":"NGC2945","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h37m41s","赤经D(J2000)":"9.628055555555555","赤纬(J2000)":"-22h2m4s","赤纬D(J2000)":"-22.034444444444446","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"168","详细描述":"faint, small, round, gradually a little brighter middle, 2 or 3 small (faint) stars near","简略描述":"F, S, R, glbM, 2 or 3 S st nr"},{"ID":"2946","标识":"NGC2946","M标识":"NGC2946","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h39m1.6s","赤经D(J2000)":"9.650444444444444","赤纬(J2000)":"+17h1m32s","赤纬D(J2000)":"17.025555555555556","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"13","详细描述":"very faint, small, extended","简略描述":"vF, S, E"},{"ID":"2947","标识":"NGC2947","M标识":"NGC2947","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h36m5.8s","赤经D(J2000)":"9.601611111111112","赤纬(J2000)":"-12h26m12s","赤纬D(J2000)":"-12.436666666666667","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"25","详细描述":"extremely faint, pretty large, irregularly round, gradually brighter middle","简略描述":"eF, pL, iR, gbM"},{"ID":"2948","标识":"NGC2948","M标识":"NGC2948","拓展名":"","组件":"","Class":"III 519","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h38m59.2s","赤经D(J2000)":"9.649777777777777","赤纬(J2000)":"+6h57m21s","赤纬D(J2000)":"6.9558333333333335","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"7","详细描述":"very faint, pretty large, very gradually brighter middle","简略描述":"vF, pL, vgbM"},{"ID":"2949","标识":"NGC2949","M标识":"NGC2949","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h39m55.1s","赤经D(J2000)":"9.665305555555555","赤纬(J2000)":"+16h47m4s","赤纬D(J2000)":"16.784444444444446","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"75","详细描述":"very faint, double?","简略描述":"vF, double?"},{"ID":"2950","标识":"NGC2950","M标识":"NGC2950","拓展名":"","组件":"","Class":"IV 68","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h42m34.8s","赤经D(J2000)":"9.709666666666665","赤纬(J2000)":"+58h51m5s","赤纬D(J2000)":"58.85138888888889","可见光星等V":"10.9","摄影(蓝光)星等B":"11.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.7","短轴(分)":"1.8","方位角":"145","详细描述":"bright, pretty small, round, very gradually very much brighter middle and nucleus","简略描述":"B, pS, R, vgvmbMN"},{"ID":"2951","标识":"NGC2951","M标识":"NGC2951","拓展名":"","组件":"2","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h39m40.8s","赤经D(J2000)":"9.661333333333333","赤纬(J2000)":"-0h14m4s","赤纬D(J2000)":"-0.23444444444444446","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"pretty faint, small, extended","简略描述":"pF, S, E"},{"ID":"2952","标识":"NGC2952","M标识":"NGC2952","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h37m37.1s","赤经D(J2000)":"9.626972222222223","赤纬(J2000)":"-10h11m4s","赤纬D(J2000)":"-10.184444444444445","可见光星等V":"14.5","摄影(蓝光)星等B":"15.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"9","详细描述":"extremely faint, pretty small, irregularly round, suddenly brighter middle, 9.5 magnitude star 30 seconds of time to the east","简略描述":"eF, pS, iR, sbM, * 9.5 f 30s"},{"ID":"2953","标识":"NGC2953","M标识":"NGC2953","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h40m27.7s","赤经D(J2000)":"9.67436111111111","赤纬(J2000)":"+14h50m37s","赤纬D(J2000)":"14.843611111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, suspected","简略描述":"eeF, suspected"},{"ID":"2954","标识":"NGC2954","M标识":"NGC2954","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h40m24s","赤经D(J2000)":"9.673333333333332","赤纬(J2000)":"+14h55m21s","赤纬D(J2000)":"14.9225","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"160","详细描述":"very faint, small, round, northern of 2","简略描述":"vF, S, R, n of 2"},{"ID":"2955","标识":"NGC2955","M标识":"NGC2955","拓展名":"","组件":"","Class":"III 541","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h41m16.4s","赤经D(J2000)":"9.687888888888889","赤纬(J2000)":"+35h52m58s","赤纬D(J2000)":"35.882777777777775","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"162","详细描述":"considerably faint, pretty small, irregularly round, gradually a little brighter middle, mottled but not resolved","简略描述":"cF, pS, iR, glbM, r"},{"ID":"2956","标识":"NGC2956","M标识":"NGC2956","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h39m16.9s","赤经D(J2000)":"9.654694444444445","赤纬(J2000)":"-19h6m4s","赤纬D(J2000)":"-19.101111111111113","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"55","详细描述":"very faint, very small, round, 9.5 magnitude star 4 arcmin to southeast","简略描述":"vF, vS, R, * 9.5 sf 4'"},{"ID":"2957","标识":"NGC2957","M标识":"NGC2957","拓展名":"B","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"9h47m17.9s","赤经D(J2000)":"9.788305555555555","赤纬(J2000)":"+72h59m2s","赤纬D(J2000)":"72.98388888888888","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"42","详细描述":"extremely faint, 13th magnitude star near","简略描述":"eF, * 13 nr"},{"ID":"2958","标识":"NGC2958","M标识":"NGC2958","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h40m41.6s","赤经D(J2000)":"9.678222222222221","赤纬(J2000)":"+11h53m19s","赤纬D(J2000)":"11.88861111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.8","方位角":"10","详细描述":"very faint, pretty small, round, a very little brighter middle","简略描述":"vF, pS, R, vlbM"},{"ID":"2959","标识":"NGC2959","M标识":"NGC2959","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h45m8.9s","赤经D(J2000)":"9.752472222222222","赤纬(J2000)":"+68h35m42s","赤纬D(J2000)":"68.595","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"faint, pretty large, round, very gradually a little brighter middle, star to north","简略描述":"F, pL, R, vglbM, st n"},{"ID":"2960","标识":"NGC2960","M标识":"NGC2960","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h40m36.5s","赤经D(J2000)":"9.676805555555555","赤纬(J2000)":"+3h34m38s","赤纬D(J2000)":"3.577222222222222","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.4","短轴(分)":"1","方位角":"40","详细描述":"very faint, round, gradually brighter middle","简略描述":"vF, R, gbM"},{"ID":"2961","标识":"NGC2961","M标识":"NGC2961","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h45m22.3s","赤经D(J2000)":"9.756194444444445","赤纬(J2000)":"+68h36m33s","赤纬D(J2000)":"68.60916666666667","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"137","详细描述":"considerably faint, small, a little extended, northeast of h618","简略描述":"cF, S, lE, nf h 618"},{"ID":"2962","标识":"NGC2962","M标识":"NGC2962","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h40m54s","赤经D(J2000)":"9.681666666666667","赤纬(J2000)":"+5h9m57s","赤纬D(J2000)":"5.1658333333333335","可见光星等V":"11.9","摄影(蓝光)星等B":"13","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.6","短轴(分)":"2","方位角":"3","详细描述":"faint, very small, very little extended, pretty suddenly brighter middle","简略描述":"F, vS, vlE, psbM"},{"ID":"2963","标识":"NGC2963","M标识":"NGC2963","拓展名":"","组件":"","Class":"III 315","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"9h47m49.8s","赤经D(J2000)":"9.797166666666666","赤纬(J2000)":"+72h57m52s","赤纬D(J2000)":"72.96444444444445","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"165","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"2964","标识":"NGC2964","M标识":"NGC2964","拓展名":"","组件":"","Class":"I 114","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h42m54.1s","赤经D(J2000)":"9.715027777777777","赤纬(J2000)":"+31h50m49s","赤纬D(J2000)":"31.846944444444443","可见光星等V":"11.3","摄影(蓝光)星等B":"12","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3","短轴(分)":"1.7","方位角":"97","详细描述":"bright, very large, a little extended, very gradually brighter middle, southwestern of 3","简略描述":"B, vL, lE, vgbM, sp of 3"},{"ID":"2965","标识":"NGC2965","M标识":"NGC2965","拓展名":"","组件":"","Class":"III 751","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h43m19.1s","赤经D(J2000)":"9.721972222222222","赤纬(J2000)":"+36h14m54s","赤纬D(J2000)":"36.248333333333335","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"64","详细描述":"extremely faint, very small, round, brighter middle, mottled but not resolved","简略描述":"eF, vS, R, bM, r"},{"ID":"2966","标识":"NGC2966","M标识":"NGC2966","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h42m11.4s","赤经D(J2000)":"9.703166666666666","赤纬(J2000)":"+4h40m25s","赤纬D(J2000)":"4.673611111111112","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.2","短轴(分)":"0.9","方位角":"72","详细描述":"very faint star in very faint, a little extended nebulosity, faint star 30 arcsec to west","简略描述":"vF * in vF, lE neb, F * p 30\""},{"ID":"2967","标识":"NGC2967","M标识":"NGC2967","拓展名":"","组件":"","Class":"II 275","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h42m3.3s","赤经D(J2000)":"9.700916666666666","赤纬(J2000)":"+0h20m10s","赤纬D(J2000)":"0.3361111111111111","可见光星等V":"11.6","摄影(蓝光)星等B":"12.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3","短轴(分)":"2.8","方位角":"65","详细描述":"pretty faint, pretty large, round, very gradually a little brighter middle","简略描述":"pF, pL, R, vglbM"},{"ID":"2968","标识":"NGC2968","M标识":"NGC2968","拓展名":"","组件":"","Class":"II 491","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h43m11.9s","赤经D(J2000)":"9.719972222222223","赤纬(J2000)":"+31h55m43s","赤纬D(J2000)":"31.928611111111113","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.1","短轴(分)":"1.6","方位角":"45","详细描述":"pretty bright, pretty large, a little extended, very gradually a little brighter middle, 2nd of 3","简略描述":"pB, pL, lE, vglbM, 2nd of 3"},{"ID":"2969","标识":"NGC2969","M标识":"NGC2969","拓展名":"","组件":"","Class":"III 527","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h41m54.5s","赤经D(J2000)":"9.698472222222222","赤纬(J2000)":"-8h36m12s","赤纬D(J2000)":"-8.603333333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"145","详细描述":"very faint, pretty small, irregularly round, very gradually a little brighter middle","简略描述":"vF, pS, iR, vglbM"},{"ID":"2970","标识":"NGC2970","M标识":"NGC2970","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h43m31s","赤经D(J2000)":"9.725277777777778","赤纬(J2000)":"+31h58m39s","赤纬D(J2000)":"31.9775","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"54","详细描述":"faint, northeastern of 3","简略描述":"F, nf of 3"},{"ID":"2971","标识":"NGC2971","M标识":"NGC2971","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h43m46.1s","赤经D(J2000)":"9.729472222222222","赤纬(J2000)":"+36h10m47s","赤纬D(J2000)":"36.17972222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"135","详细描述":"extremely faint, pretty small, irregularly round, a very little brighter middle","简略描述":"eF, pS, iR, vlbM"},{"ID":"2972","标识":"NGC2972","M标识":"NGC2972","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I1p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"9h40m11.5s","赤经D(J2000)":"9.66986111111111","赤纬(J2000)":"-50h19m13s","赤纬D(J2000)":"-50.32027777777778","可见光星等V":"9.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"cluster, small, a little rich, pretty compressed, 13th magnitude stars","简略描述":"Cl, S, lRi, pC, st 13"},{"ID":"2973","标识":"NGC2973","M标识":"NGC2973","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h41m34.7s","赤经D(J2000)":"9.692972222222222","赤纬(J2000)":"-30h2m53s","赤纬D(J2000)":"-30.048055555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty small, 8th magnitude star to east","简略描述":"eF, pS, * 8 f"},{"ID":"2974","标识":"NGC2974","M标识":"NGC2974","拓展名":"","组件":"","Class":"I 61","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h42m33.2s","赤经D(J2000)":"9.709222222222222","赤纬(J2000)":"-3h41m57s","赤纬D(J2000)":"-3.6991666666666667","可见光星等V":"10.9","摄影(蓝光)星等B":"11.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.4","短轴(分)":"2.1","方位角":"40","详细描述":"bright, considerably small, irregularly round, brighter middle, 9th magnitude star 43 arcsec to southwest","简略描述":"B, cS, iR, bM, * 9 sp 43\""},{"ID":"2975","标识":"NGC2975","M标识":"NGC2975","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h41m16s","赤经D(J2000)":"9.687777777777779","赤纬(J2000)":"-16h40m26s","赤纬D(J2000)":"-16.67388888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"","详细描述":"most extremely faint, small, round, gradually brighter middle","简略描述":"eeF, S, R, gbM"},{"ID":"2976","标识":"NGC2976","M标识":"NGC2976","拓展名":"","组件":"","Class":"I 285","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h47m14.7s","赤经D(J2000)":"9.787416666666667","赤纬(J2000)":"+67h55m3s","赤纬D(J2000)":"67.9175","可见光星等V":"10.2","摄影(蓝光)星等B":"10.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"5.9","短轴(分)":"2.7","方位角":"143","详细描述":"bright, very large, much extended 152°, star involved","简略描述":"B, vL, mE 152°, st inv"},{"ID":"2977","标识":"NGC2977","M标识":"NGC2977","拓展名":"","组件":"","Class":"I 282","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"9h43m46.5s","赤经D(J2000)":"9.729583333333334","赤纬(J2000)":"+74h51m38s","赤纬D(J2000)":"74.86055555555555","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.8","短轴(分)":"0.8","方位角":"145","详细描述":"considerably bright, pretty large, irregular figure (place doubtful)","简略描述":"cB, pL, iF (place doubtful)"},{"ID":"2978","标识":"NGC2978","M标识":"NGC2978","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h43m16.7s","赤经D(J2000)":"9.721305555555556","赤纬(J2000)":"-9h44m46s","赤纬D(J2000)":"-9.74611111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"85","详细描述":"extremely faint, small, round, III 528 ten arcmin to north","简略描述":"eF, S, R, III 528 n 10'"},{"ID":"2979","标识":"NGC2979","M标识":"NGC2979","拓展名":"","组件":"","Class":"III 521","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h43m8.6s","赤经D(J2000)":"9.719055555555556","赤纬(J2000)":"-10h22m59s","赤纬D(J2000)":"-10.383055555555556","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.5","短轴(分)":"1","方位角":"30","详细描述":"pretty faint, pretty small, a very little extended, pretty suddenly bright middle","简略描述":"pF, pS, vlE, psbM"},{"ID":"2980","标识":"NGC2980","M标识":"NGC2980","拓展名":"","组件":"","Class":"III 528","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h43m11.9s","赤经D(J2000)":"9.719972222222223","赤纬(J2000)":"-9h36m45s","赤纬D(J2000)":"-9.612499999999999","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"164","详细描述":"very faint, pretty small, a little extended 0°, very gradually a little brighter middle","简略描述":"vF, pS, lE 0°, vglbM"},{"ID":"2981","标识":"NGC2981","M标识":"NGC2981","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h44m56.6s","赤经D(J2000)":"9.749055555555556","赤纬(J2000)":"+31h5m53s","赤纬D(J2000)":"31.098055555555554","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"1","方位角":"77","详细描述":"very faint","简略描述":"vF"},{"ID":"2982","标识":"NGC2982","M标识":"NGC2982","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"9h42m0s","赤经D(J2000)":"9.7","赤纬(J2000)":"-44h1m36s","赤纬D(J2000)":"-44.026666666666664","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"cluster, poor, extended, stars from 10th to 11th magnitude","简略描述":"Cl, P, E, st 10…11"},{"ID":"2983","标识":"NGC2983","M标识":"NGC2983","拓展名":"","组件":"","Class":"III 289","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h43m41.1s","赤经D(J2000)":"9.728083333333334","赤纬(J2000)":"-20h28m39s","赤纬D(J2000)":"-20.4775","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.5","短轴(分)":"1.4","方位角":"95","详细描述":"faint, pretty small, round, brighter middle, mottled but not resolved, stellar","简略描述":"F, pS, R, bM, r, stellar"},{"ID":"2984","标识":"NGC2984","M标识":"NGC2984","拓展名":"","组件":"","Class":"III 34","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h43m40.3s","赤经D(J2000)":"9.72786111111111","赤纬(J2000)":"+11h3m41s","赤纬D(J2000)":"11.061388888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, very small, round, brighter middle (? PD 15')","简略描述":"eF, vS, R, bM (? PD 15')"},{"ID":"2985","标识":"NGC2985","M标识":"NGC2985","拓展名":"","组件":"","Class":"I 78","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h50m21.4s","赤经D(J2000)":"9.83927777777778","赤纬(J2000)":"+72h16m43s","赤纬D(J2000)":"72.2786111111111","可见光星等V":"10.4","摄影(蓝光)星等B":"11.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"4.6","短轴(分)":"3.4","方位角":"0","详细描述":"very bright, considerably large, round, pretty suddenly much brighter middle, star involved to east","简略描述":"vB, cL, R, psmbM, * inv f"},{"ID":"2986","标识":"NGC2986","M标识":"NGC2986","拓展名":"","组件":"","Class":"II 311","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h44m15.9s","赤经D(J2000)":"9.737749999999998","赤纬(J2000)":"-21h16m41s","赤纬D(J2000)":"-21.278055555555554","可见光星等V":"10.8","摄影(蓝光)星等B":"11.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.2","短轴(分)":"2.6","方位角":"105","详细描述":"pretty bright, pretty small, irregularly round, much brighter middle","简略描述":"pB, pS, iR, mbM"},{"ID":"2987","标识":"NGC2987","M标识":"NGC2987","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h45m41.4s","赤经D(J2000)":"9.7615","赤纬(J2000)":"+4h56m29s","赤纬D(J2000)":"4.9413888888888895","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"160","详细描述":"extremely faint, small, irregular figure, several very faint stars involved","简略描述":"eF, S, iF, sev vF st inv"},{"ID":"2988","标识":"NGC2988","M标识":"NGC2988","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h46m47.8s","赤经D(J2000)":"9.779944444444446","赤纬(J2000)":"+22h0m44s","赤纬D(J2000)":"22.01222222222222","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"30","详细描述":"extremely faint, west of h634","简略描述":"eF, p h 634"},{"ID":"2989","标识":"NGC2989","M标识":"NGC2989","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h45m25.2s","赤经D(J2000)":"9.757","赤纬(J2000)":"-18h22m28s","赤纬D(J2000)":"-18.374444444444446","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"38","详细描述":"faint, round, gradually brighter middle, double star to east","简略描述":"F, R, gbM, D * f"},{"ID":"2990","标识":"NGC2990","M标识":"NGC2990","拓展名":"","组件":"","Class":"II 624","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h46m17.3s","赤经D(J2000)":"9.771472222222224","赤纬(J2000)":"+5h42m32s","赤纬D(J2000)":"5.708888888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.1","B-V":"0.4","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"85","详细描述":"faint, pretty small, a little extended 90°","简略描述":"F, pS, lE 90°"},{"ID":"2991","标识":"NGC2991","M标识":"NGC2991","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h46m49.9s","赤经D(J2000)":"9.78052777777778","赤纬(J2000)":"+22h0m48s","赤纬D(J2000)":"22.013333333333332","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"138","详细描述":"faint, very small, brighter middle, southwestern of 2","简略描述":"F, vS, bM, sp of 2"},{"ID":"2992","标识":"NGC2992","M标识":"NGC2992","拓展名":"","组件":"","Class":"III 277","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h45m41.9s","赤经D(J2000)":"9.76163888888889","赤纬(J2000)":"-14h19m37s","赤纬D(J2000)":"-14.326944444444445","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.7","短轴(分)":"0.9","方位角":"15","详细描述":"considerably faint, small, round, brighter middle, stellar, western of 2","简略描述":"cF, S, R, bM, stellar, p of 2"},{"ID":"2993","标识":"NGC2993","M标识":"NGC2993","拓展名":"","组件":"","Class":"III 278","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h45m48.3s","赤经D(J2000)":"9.763416666666666","赤纬(J2000)":"-14h22m8s","赤纬D(J2000)":"-14.36888888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"95","详细描述":"considerably faint, small, round, brighter middle, stellar, western of 2","简略描述":"cF, S, R, bM, stellar, f of 2"},{"ID":"2994","标识":"NGC2994","M标识":"NGC2994","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h47m16.1s","赤经D(J2000)":"9.787805555555556","赤纬(J2000)":"+22h5m21s","赤纬D(J2000)":"22.089166666666664","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1","方位角":"125","详细描述":"faint, small, round, brighter middle, northeastern of 2","简略描述":"F, S, R, bM, nf of 2"},{"ID":"2995","标识":"NGC2995","M标识":"NGC2995","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"9h44m0s","赤经D(J2000)":"9.733333333333333","赤纬(J2000)":"-54h35m0s","赤纬D(J2000)":"-54.583333333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"cluster, poor, a little compressed","简略描述":"Cl, P, lC"},{"ID":"2996","标识":"NGC2996","M标识":"NGC2996","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h46m30.2s","赤经D(J2000)":"9.775055555555557","赤纬(J2000)":"-21h34m16s","赤纬D(J2000)":"-21.57111111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"115","详细描述":"very faint, small, 20th magnitude star 1 arcmin to east","简略描述":"vF, S, * 20 f 1'"},{"ID":"2997","标识":"NGC2997","M标识":"NGC2997","拓展名":"","组件":"","Class":"V 50","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h45m38.6s","赤经D(J2000)":"9.760722222222222","赤纬(J2000)":"-31h11m26s","赤纬D(J2000)":"-31.190555555555555","可见光星等V":"9.5","摄影(蓝光)星等B":"10.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"8.9","短轴(分)":"6.8","方位角":"110","详细描述":"a remarkable object, very faint, very large, very gradually then very suddenly bright middle and 4 arcsec nucleus, 19s.5 d","简略描述":"! vF, vL, vgvsbMN 4\", 19s.5 d"},{"ID":"2998","标识":"NGC2998","M标识":"NGC2998","拓展名":"","组件":"","Class":"II 717","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h48m43.6s","赤经D(J2000)":"9.812111111111111","赤纬(J2000)":"+44h4m54s","赤纬D(J2000)":"44.08166666666667","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.7","短轴(分)":"1.2","方位角":"53","详细描述":"pretty faint, pretty large, extended 51°, brighter middle and nucleus, mottled but not resolved","简略描述":"pF, pL, E 51°, bMN, r"},{"ID":"2999","标识":"NGC2999","M标识":"NGC2999","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"I1p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"9h40m11.5s","赤经D(J2000)":"9.66986111111111","赤纬(J2000)":"-50h19m13s","赤纬D(J2000)":"-50.32027777777778","可见光星等V":"9.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"cluster, small, a little rich, pretty compressed, 13th magnitude stars","简略描述":"Cl, S, lRi, iF, st 12…15"},{"ID":"3000","标识":"NGC3000","M标识":"NGC3000","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h48m51.2s","赤经D(J2000)":"9.814222222222224","赤纬(J2000)":"+44h7m54s","赤纬D(J2000)":"44.13166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregularly round, mottled but not resolved","简略描述":"vF, S, iR, r"},{"ID":"3001","标识":"NGC3001","M标识":"NGC3001","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h46m18.5s","赤经D(J2000)":"9.771805555555556","赤纬(J2000)":"-30h26m13s","赤纬D(J2000)":"-30.436944444444446","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.9","短轴(分)":"2","方位角":"6","详细描述":"faint, small, round, 12th magnitude star attached at 320°","简略描述":"F, S, R, * 12 att 320°"},{"ID":"3002","标识":"NGC3002","M标识":"NGC3002","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h48m57.1s","赤经D(J2000)":"9.815861111111111","赤纬(J2000)":"+44h3m24s","赤纬D(J2000)":"44.056666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, very small","简略描述":"eeF, vS"},{"ID":"3003","标识":"NGC3003","M标识":"NGC3003","拓展名":"","组件":"","Class":"V 26","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h48m35.9s","赤经D(J2000)":"9.809972222222223","赤纬(J2000)":"+33h25m19s","赤纬D(J2000)":"33.42194444444444","可见光星等V":"11.9","摄影(蓝光)星等B":"12.3","B-V":"0.4","表面亮度(mag\/arcmin2)":"14","长轴(分)":"5.7","短轴(分)":"1.4","方位角":"79","详细描述":"a remarkable object, extremely bright, large, very much extended 90°","简略描述":"! cB, L, vmE 90°"},{"ID":"3004","标识":"NGC3004","M标识":"NGC3004","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h49m2.1s","赤经D(J2000)":"9.81725","赤纬(J2000)":"+44h6m42s","赤纬D(J2000)":"44.111666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, suspected","简略描述":"eF, suspected"},{"ID":"3005","标识":"NGC3005","M标识":"NGC3005","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h49m14.9s","赤经D(J2000)":"9.820805555555555","赤纬(J2000)":"+44h7m50s","赤纬D(J2000)":"44.13055555555555","可见光星等V":"14.9","摄影(蓝光)星等B":"15.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"150","详细描述":"very faint, pretty small, extended north northwest south southeast","简略描述":"vF, pS, E nnpssf"},{"ID":"3006","标识":"NGC3006","M标识":"NGC3006","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h49m17.2s","赤经D(J2000)":"9.821444444444444","赤纬(J2000)":"+44h1m32s","赤纬D(J2000)":"44.025555555555556","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"81","详细描述":"very faint, small, stellar","简略描述":"vF, S, stellar"},{"ID":"3007","标识":"NGC3007","M标识":"NGC3007","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h47m45.5s","赤经D(J2000)":"9.795972222222222","赤纬(J2000)":"-6h26m16s","赤纬D(J2000)":"-6.437777777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"90","详细描述":"extremely faint, small, irregularly round, a little brighter middle, mottled but not resolved","简略描述":"eF, S, iR, lbM, r"},{"ID":"3008","标识":"NGC3008","M标识":"NGC3008","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h49m34.1s","赤经D(J2000)":"9.826138888888888","赤纬(J2000)":"+44h6m10s","赤纬D(J2000)":"44.10277777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"135","详细描述":"pretty faint, small, extended, 13th or 14th magnitude star one arcmin to west","简略描述":"pF, S, E, * 13·14 p 1'"},{"ID":"3009","标识":"NGC3009","M标识":"NGC3009","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h50m11.2s","赤经D(J2000)":"9.836444444444446","赤纬(J2000)":"+44h17m43s","赤纬D(J2000)":"44.29527777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"161","详细描述":"pretty faint, round, brighter middle, mottled but not resolved, preceding (western) of 2","简略描述":"pF, R, bM, r, p of 2"},{"ID":"3010","标识":"NGC3010","M标识":"NGC3010","拓展名":"B","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h50m33.2s","赤经D(J2000)":"9.842555555555556","赤纬(J2000)":"+44h18m53s","赤纬D(J2000)":"44.31472222222222","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"70","详细描述":"faint, pretty suddenly brighter middle, partially resolved, some stars seen, following (eastern) of 2","简略描述":"F, psbM, rr, f of 2"},{"ID":"3011","标识":"NGC3011","M标识":"NGC3011","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h49m41.1s","赤经D(J2000)":"9.828083333333334","赤纬(J2000)":"+32h13m18s","赤纬D(J2000)":"32.22166666666667","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"69","详细描述":"most extremely faint, extremely small, stellar","简略描述":"eeF, eS, stellar"},{"ID":"3012","标识":"NGC3012","M标识":"NGC3012","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h49m52s","赤经D(J2000)":"9.831111111111111","赤纬(J2000)":"+34h42m53s","赤纬D(J2000)":"34.71472222222223","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"very faint, pretty large, round, cometic","简略描述":"vF, pL, R, com"},{"ID":"3013","标识":"NGC3013","M标识":"NGC3013","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h50m9.3s","赤经D(J2000)":"9.835916666666668","赤纬(J2000)":"+33h34m11s","赤纬D(J2000)":"33.569722222222225","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"91","详细描述":"pretty faint, pretty small, round, brighter middle, h645 to east","简略描述":"pF, pS, R, bM, h 645 f"},{"ID":"3014","标识":"NGC3014","M标识":"NGC3014","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h49m7.8s","赤经D(J2000)":"9.818833333333334","赤纬(J2000)":"-4h44m34s","赤纬D(J2000)":"-4.7427777777777775","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.9","方位角":"156","详细描述":"extremely faint, pretty large, preceding (western) of 2","简略描述":"eF, pL, p of 2"},{"ID":"3015","标识":"NGC3015","M标识":"NGC3015","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h49m22.9s","赤经D(J2000)":"9.823027777777778","赤纬(J2000)":"+1h8m43s","赤纬D(J2000)":"1.1452777777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"95","详细描述":"faint, very small, almost stellar","简略描述":"F, vS, alm stellar"},{"ID":"3016","标识":"NGC3016","M标识":"NGC3016","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h49m50.6s","赤经D(J2000)":"9.830722222222223","赤纬(J2000)":"+12h41m43s","赤纬D(J2000)":"12.695277777777777","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"70","详细描述":"very faint, small, round, preceding (western) of 2","简略描述":"vF, S, R, p of 2"},{"ID":"3017","标识":"NGC3017","M标识":"NGC3017","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h49m3s","赤经D(J2000)":"9.817499999999999","赤纬(J2000)":"-2h49m17s","赤纬D(J2000)":"-2.8213888888888885","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"extremely faint, very small, 11th magnitude star 3 arcmin to northwest","简略描述":"eF, vS, * 11 np 3'"},{"ID":"3018","标识":"NGC3018","M标识":"NGC3018","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h49m41.6s","赤经D(J2000)":"9.828222222222221","赤纬(J2000)":"+0h37m22s","赤纬D(J2000)":"0.6227777777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"27","详细描述":"very faint, very small, brighter middle","简略描述":"vF, vS, bM"},{"ID":"3019","标识":"NGC3019","M标识":"NGC3019","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h50m7.2s","赤经D(J2000)":"9.835333333333335","赤纬(J2000)":"+12h44m46s","赤纬D(J2000)":"12.74611111111111","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"45","详细描述":"extremely faint, following (eastern) of 2","简略描述":"eF, f of 2"},{"ID":"3020","标识":"NGC3020","M标识":"NGC3020","拓展名":"","组件":"","Class":"III 51","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h50m6.5s","赤经D(J2000)":"9.83513888888889","赤纬(J2000)":"+12h48m49s","赤纬D(J2000)":"12.813611111111111","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3","短轴(分)":"1.6","方位角":"105","详细描述":"extremely faint, pretty small, a little extended 0°, mottled but not resolved","简略描述":"eF, pS, lE 0°, r"},{"ID":"3021","标识":"NGC3021","M标识":"NGC3021","拓展名":"","组件":"","Class":"I 115","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h50m57.2s","赤经D(J2000)":"9.849222222222222","赤纬(J2000)":"+33h33m15s","赤纬D(J2000)":"33.55416666666667","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"110","详细描述":"pretty bright, pretty small, very little extended, much brighter middle, 10th magnitude star at 140°","简略描述":"pB, pS, vlE, mbM, * 10, 140°"},{"ID":"3022","标识":"NGC3022","M标识":"NGC3022","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h49m39.2s","赤经D(J2000)":"9.827555555555556","赤纬(J2000)":"-5h9m59s","赤纬D(J2000)":"-5.166388888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.6","短轴(分)":"1.6","方位角":"","详细描述":"faint, round, very gradually a little brighter middle, following (eastern) of 2","简略描述":"F, R, vglbM, f of 2"},{"ID":"3023","标识":"NGC3023","M标识":"NGC3023","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h49m52.6s","赤经D(J2000)":"9.831277777777778","赤纬(J2000)":"+0h37m8s","赤纬D(J2000)":"0.6188888888888889","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3","短轴(分)":"1.4","方位角":"70","详细描述":"pretty faint, pretty large, irregularly round, a little brighter middle, diffuse","简略描述":"pF, pL, iR, lbM, dif"},{"ID":"3024","标识":"NGC3024","M标识":"NGC3024","拓展名":"","组件":"","Class":"III 52","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h50m27.3s","赤经D(J2000)":"9.840916666666667","赤纬(J2000)":"+12h45m56s","赤纬D(J2000)":"12.765555555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2","短轴(分)":"0.4","方位角":"125","详细描述":"extremely faint, pretty large, extended, mottled but not resolved","简略描述":"eF, pL, E, r"},{"ID":"3025","标识":"NGC3025","M标识":"NGC3025","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h49m29s","赤经D(J2000)":"9.824722222222222","赤纬(J2000)":"-21h44m29s","赤纬D(J2000)":"-21.74138888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"110","详细描述":"extremely faint, very small, round, 9th magnitude star to south","简略描述":"eF, vS, R, * 9 s"},{"ID":"3026","标识":"NGC3026","M标识":"NGC3026","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h50m54.8s","赤经D(J2000)":"9.848555555555556","赤纬(J2000)":"+28h33m5s","赤纬D(J2000)":"28.55138888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.7","短轴(分)":"0.8","方位角":"82","详细描述":"most extremely faint, pretty small, a little extended, very difficult","简略描述":"eeF, pS, lE, v diffic"},{"ID":"3027","标识":"NGC3027","M标识":"NGC3027","拓展名":"","组件":"","Class":"V 23","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h55m40.3s","赤经D(J2000)":"9.92786111111111","赤纬(J2000)":"+72h12m15s","赤纬D(J2000)":"72.20416666666667","可见光星等V":"11.8","摄影(蓝光)星等B":"12.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3.9","短轴(分)":"1.4","方位角":"130","详细描述":"very faint, very large, a little extended, mottled but not resolved","简略描述":"vF, vL, lE, r"},{"ID":"3028","标识":"NGC3028","M标识":"NGC3028","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h49m54.2s","赤经D(J2000)":"9.831722222222222","赤纬(J2000)":"-19h11m4s","赤纬D(J2000)":"-19.184444444444445","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"108","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"3029","标识":"NGC3029","M标识":"NGC3029","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h48m53.8s","赤经D(J2000)":"9.814944444444444","赤纬(J2000)":"-8h3m4s","赤纬D(J2000)":"-8.051111111111112","可见光星等V":"14","摄影(蓝光)星等B":"14.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.4","短轴(分)":"1","方位角":"46","详细描述":"pretty faint, pretty small, round","简略描述":"pF, pS, R"},{"ID":"3030","标识":"NGC3030","M标识":"NGC3030","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h50m10.5s","赤经D(J2000)":"9.83625","赤纬(J2000)":"-12h13m33s","赤纬D(J2000)":"-12.225833333333334","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.9","方位角":"120","详细描述":"extremely faint, very small, round, brighter middle","简略描述":"eF, vS, R, bM"},{"ID":"3031","标识":"NGC3031","M标识":"M81","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"波德星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h55m33.5s","赤经D(J2000)":"9.92597222222222","赤纬(J2000)":"+69h4m2s","赤纬D(J2000)":"69.06722222222221","可见光星等V":"6.9","摄影(蓝光)星等B":"7.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"24.9","短轴(分)":"11.5","方位角":"157","详细描述":"a remarkable object, extremely bright, extremely large, extended 156°, gradually then suddenly very much brighter middle and bright nucleus","简略描述":"! eB, eL, E 156°, gsvmbMBN"},{"ID":"3032","标识":"NGC3032","M标识":"NGC3032","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h52m8.1s","赤经D(J2000)":"9.868916666666667","赤纬(J2000)":"+29h14m12s","赤纬D(J2000)":"29.236666666666668","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"95","详细描述":"faint, small, suddenly brighter middle equivalent to 12th magnitude star, between 2 bright stars","简略描述":"F, S, sbM * 12, bet 2 B st"},{"ID":"3033","标识":"NGC3033","M标识":"NGC3033","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"9h48m40s","赤经D(J2000)":"9.811111111111112","赤纬(J2000)":"-56h24m42s","赤纬D(J2000)":"-56.41166666666666","可见光星等V":"8.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"cluster, pretty large, pretty rich, irregular figure, stars from 11th to 12th magnitude","简略描述":"Cl, pL, pRi, iF, st 11…12"},{"ID":"3034","标识":"NGC3034","M标识":"M82","拓展名":"","组件":"","Class":"IV 79","业余排名":"1","中文名":"雪茄星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h55m54s","赤经D(J2000)":"9.931666666666667","赤纬(J2000)":"+69h40m59s","赤纬D(J2000)":"69.68305555555555","可见光星等V":"8.4","摄影(蓝光)星等B":"9.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"11.2","短轴(分)":"4.3","方位角":"65","详细描述":"a remarkable object, extremely bright, extremely large, extended 156°, gradually then suddenly very much brighter middle and bright nucleus","简略描述":"vB, vL, vmE (ray)"},{"ID":"3035","标识":"NGC3035","M标识":"NGC3035","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h51m54.9s","赤经D(J2000)":"9.86525","赤纬(J2000)":"-6h49m22s","赤纬D(J2000)":"-6.822777777777778","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"153","详细描述":"pretty faint, pretty large, round, several very faint stars involved","简略描述":"pF, pL, R, sev vF st inv"},{"ID":"3036","标识":"NGC3036","M标识":"NGC3036","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"9h49m15.9s","赤经D(J2000)":"9.821083333333332","赤纬(J2000)":"-62h40m32s","赤纬D(J2000)":"-62.675555555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"cluster, considerably large, a little compressed","简略描述":"Cl, cL, lC"},{"ID":"3037","标识":"NGC3037","M标识":"NGC3037","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h51m24.2s","赤经D(J2000)":"9.856722222222222","赤纬(J2000)":"-27h0m39s","赤纬D(J2000)":"-27.010833333333334","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"43","详细描述":"faint, pretty small, round, a little brighter middle","简略描述":"F, pS, R, lbM"},{"ID":"3038","标识":"NGC3038","M标识":"NGC3038","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h51m15.3s","赤经D(J2000)":"9.85425","赤纬(J2000)":"-32h45m13s","赤纬D(J2000)":"-32.75361111111111","可见光星等V":"11.6","摄影(蓝光)星等B":"12.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.5","短轴(分)":"1.4","方位角":"130","详细描述":"pretty bright, pretty small, round","简略描述":"pB, pS, R"},{"ID":"3039","标识":"NGC3039","M标识":"NGC3039","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h52m29.5s","赤经D(J2000)":"9.874861111111112","赤纬(J2000)":"+2h9m13s","赤纬D(J2000)":"2.153611111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"12","详细描述":"very faint, small, irregularly round","简略描述":"vF, S, iR"},{"ID":"3040","标识":"NGC3040","M标识":"NGC3040","拓展名":"A","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h53m5s","赤经D(J2000)":"9.884722222222221","赤纬(J2000)":"+19h25m58s","赤纬D(J2000)":"19.43277777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"171","详细描述":"very faint, very small, brighter middle, mottled but not resolved","简略描述":"vF, vS, bM, r"},{"ID":"3041","标识":"NGC3041","M标识":"NGC3041","拓展名":"","组件":"","Class":"II 98","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h53m7.1s","赤经D(J2000)":"9.885305555555554","赤纬(J2000)":"+16h40m39s","赤纬D(J2000)":"16.677500000000002","可见光星等V":"11.5","摄影(蓝光)星等B":"12.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.7","短轴(分)":"2.4","方位角":"95","详细描述":"a globular cluster, faint, large, round, very gradually a little brighter middle, partially resolved, some stars seen, 2 bright stars to southwest","简略描述":"globular, F, L, R, vglbM, rr, 2 B st sp"},{"ID":"3042","标识":"NGC3042","M标识":"NGC3042","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h53m20.2s","赤经D(J2000)":"9.888944444444444","赤纬(J2000)":"+0h41m52s","赤纬D(J2000)":"0.6977777777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"111","详细描述":"pretty bright, small, very little extended, gradually brighter middle","简略描述":"pB, S, vlE, gbM"},{"ID":"3043","标识":"NGC3043","M标识":"NGC3043","拓展名":"","组件":"","Class":"II 835","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h56m14.4s","赤经D(J2000)":"9.937333333333333","赤纬(J2000)":"+59h18m26s","赤纬D(J2000)":"59.30722222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.7","短轴(分)":"0.6","方位角":"84","详细描述":"considerably faint, pretty small, a little extended, very gradually brighter middle, 10th magnitude star 7 arcmin to north","简略描述":"cF, pS, lE, vgbM, * 10 n 7'"},{"ID":"3044","标识":"NGC3044","M标识":"NGC3044","拓展名":"","组件":"","Class":"III 254","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h53m40.8s","赤经D(J2000)":"9.894666666666666","赤纬(J2000)":"+1h34m46s","赤纬D(J2000)":"1.5794444444444444","可见光星等V":"11.9","摄影(蓝光)星等B":"12.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"4.7","短轴(分)":"0.7","方位角":"115","详细描述":"very faint, very large, very much extended 122°","简略描述":"vF, vL, vmE 122°"},{"ID":"3045","标识":"NGC3045","M标识":"NGC3045","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h53m17.7s","赤经D(J2000)":"9.88825","赤纬(J2000)":"-18h38m38s","赤纬D(J2000)":"-18.64388888888889","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"20","详细描述":"very faint, pretty small, round, a little brighter middle, southwestern of 2","简略描述":"vF, pS, R, lbM, sp of 2"},{"ID":"3046","标识":"NGC3046","M标识":"NGC3046","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h53m20s","赤经D(J2000)":"9.88888888888889","赤纬(J2000)":"-27h19m54s","赤纬D(J2000)":"-27.331666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, round, southwestern of 2","简略描述":"pF, R, sp of 2"},{"ID":"3047","标识":"NGC3047","M标识":"NGC3047","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h54m32s","赤经D(J2000)":"9.908888888888889","赤纬(J2000)":"-1h17m28s","赤纬D(J2000)":"-1.291111111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"3048","标识":"NGC3048","M标识":"NGC3048","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h54m56.5s","赤经D(J2000)":"9.915694444444444","赤纬(J2000)":"+16h27m22s","赤纬D(J2000)":"16.45611111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"123","详细描述":"extremely faint","简略描述":"eF"},{"ID":"3049","标识":"NGC3049","M标识":"NGC3049","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h54m49.5s","赤经D(J2000)":"9.91375","赤纬(J2000)":"+9h16m19s","赤纬D(J2000)":"9.271944444444445","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"1.5","方位角":"25","详细描述":"very faint, very small, faint star very near","简略描述":"vF, vS, F * v nr"},{"ID":"3050","标识":"NGC3050","M标识":"NGC3050","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h43m8.6s","赤经D(J2000)":"9.719055555555556","赤纬(J2000)":"-10h22m59s","赤纬D(J2000)":"-10.383055555555556","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.5","短轴(分)":"1","方位角":"30","详细描述":"very faint, pretty small, very little extended, gradually brighter middle and nucleus","简略描述":"vF, pS, vlE, gbMN"},{"ID":"3051","标识":"NGC3051","M标识":"NGC3051","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h53m58.4s","赤经D(J2000)":"9.899555555555555","赤纬(J2000)":"-27h17m10s","赤纬D(J2000)":"-27.28611111111111","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.1","短轴(分)":"1.9","方位角":"20","详细描述":"pretty faint, small, round, gradually brighter middle, northeastern of 2","简略描述":"pF, S, R, gbM, nf of 2"},{"ID":"3052","标识":"NGC3052","M标识":"NGC3052","拓展名":"","组件":"","Class":"III 272","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h54m28s","赤经D(J2000)":"9.907777777777778","赤纬(J2000)":"-18h38m20s","赤纬D(J2000)":"-18.63888888888889","可见光星等V":"12.2","摄影(蓝光)星等B":"12.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.1","短轴(分)":"1.3","方位角":"102","详细描述":"faint, pretty large, round, gradually a little brighter middle, northeastern of 2","简略描述":"F, pL, R, glbM, nf of 2"},{"ID":"3053","标识":"NGC3053","M标识":"NGC3053","拓展名":"","组件":"","Class":"III 600","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h55m33.6s","赤经D(J2000)":"9.926","赤纬(J2000)":"+16h26m0s","赤纬D(J2000)":"16.433333333333334","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"0.9","方位角":"134","详细描述":"very faint, small, very little extended, gradually brighter middle","简略描述":"vF, S, vlE, gbM"},{"ID":"3054","标识":"NGC3054","M标识":"NGC3054","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h54m28.7s","赤经D(J2000)":"9.907972222222222","赤纬(J2000)":"-25h42m13s","赤纬D(J2000)":"-25.703611111111112","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3.8","短轴(分)":"2.4","方位角":"118","详细描述":"pretty bright, large, irregularly oblong","简略描述":"pB, L, irr oblong"},{"ID":"3055","标识":"NGC3055","M标识":"NGC3055","拓展名":"","组件":"","Class":"VI 4","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h55m17.8s","赤经D(J2000)":"9.92161111111111","赤纬(J2000)":"+4h16m10s","赤纬D(J2000)":"4.269444444444445","可见光星等V":"12.1","摄影(蓝光)星等B":"12.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.1","短轴(分)":"1.3","方位角":"63","详细描述":"faint, pretty large, very little extended, very gradually brighter middle, partially resolved, some stars seen, 7th magnitude star 92 seconds of time to east","简略描述":"F, pL, vlE, vgbM, rr, * 7 f 92s"},{"ID":"3056","标识":"NGC3056","M标识":"NGC3056","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h54m32.7s","赤经D(J2000)":"9.909083333333333","赤纬(J2000)":"-28h17m54s","赤纬D(J2000)":"-28.298333333333336","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"16","详细描述":"pretty bright, small, round, very gradually much brighter middle, 11th magnitude star attached 204°","简略描述":"pB, S, R, vgmbM, * 11 att 204°"},{"ID":"3057","标识":"NGC3057","M标识":"NGC3057","拓展名":"","组件":"","Class":"III 978","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h5m39.5s","赤经D(J2000)":"10.094305555555556","赤纬(J2000)":"+80h17m7s","赤纬D(J2000)":"80.28527777777778","可见光星等V":"13","摄影(蓝光)星等B":"13.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.2","短轴(分)":"1.3","方位角":"5","详细描述":"extremely faint, pretty large, very little brighter middle, 2 small (faint) stars to south","简略描述":"eF, pL, vlbM, 2 S st s"},{"ID":"3058","标识":"NGC3058","M标识":"NGC3058","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h53m36.1s","赤经D(J2000)":"9.89336111111111","赤纬(J2000)":"-12h28m56s","赤纬D(J2000)":"-12.482222222222223","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"30","详细描述":"extremely faint, pretty large, double or binuclear","简略描述":"eF, pL, D or biN"},{"ID":"3059","标识":"NGC3059","M标识":"NGC3059","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"9h50m8s","赤经D(J2000)":"9.835555555555556","赤纬(J2000)":"-73h55m17s","赤纬D(J2000)":"-73.9213888888889","可见光星等V":"11","摄影(蓝光)星等B":"11.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.6","短轴(分)":"3.2","方位角":"70","详细描述":"faint, large, irregularly round, gradually a little brighter middle, small (faint) star involved","简略描述":"F, L, iR, glbM, S * inv"},{"ID":"3060","标识":"NGC3060","M标识":"NGC3060","拓展名":"","组件":"","Class":"III 601","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h56m19.2s","赤经D(J2000)":"9.938666666666666","赤纬(J2000)":"+16h49m53s","赤纬D(J2000)":"16.83138888888889","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"0.6","方位角":"78","详细描述":"very faint, considerably small, very little extended, easily resolvable","简略描述":"vF, cS, vlE, er"},{"ID":"3061","标识":"NGC3061","M标识":"NGC3061","拓展名":"","组件":"","Class":"II 903","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"9h56m11.9s","赤经D(J2000)":"9.93663888888889","赤纬(J2000)":"+75h51m59s","赤纬D(J2000)":"75.86638888888888","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"6","详细描述":"very faint, pretty large, mottled but not resolved","简略描述":"vF, pL, r"},{"ID":"3062","标识":"NGC3062","M标识":"NGC3062","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h56m35.7s","赤经D(J2000)":"9.94325","赤纬(J2000)":"+1h25m45s","赤纬D(J2000)":"1.4291666666666667","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"65","详细描述":"very faint, very small, almost stellar","简略描述":"vF, vS, alm stellar"},{"ID":"3063","标识":"NGC3063","M标识":"NGC3063","拓展名":"","组件":"","Class":"II 909","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h1m41.6s","赤经D(J2000)":"10.028222222222222","赤纬(J2000)":"+72h7m4s","赤纬D(J2000)":"72.11777777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, round","简略描述":"F, pS, R"},{"ID":"3064","标识":"NGC3064","M标识":"NGC3064","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h55m41.4s","赤经D(J2000)":"9.928166666666666","赤纬(J2000)":"-6h21m51s","赤纬D(J2000)":"-6.364166666666667","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"28","详细描述":"extremely faint, very small, extended 45°","简略描述":"eF, vS, E 45°"},{"ID":"3065","标识":"NGC3065","M标识":"NGC3065","拓展名":"","组件":"","Class":"II 333","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h1m55.1s","赤经D(J2000)":"10.031972222222223","赤纬(J2000)":"+72h10m12s","赤纬D(J2000)":"72.17","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"21","详细描述":"pretty faint, very small, round, brighter middle, 11th magnitude star near","简略描述":"pF, vS, R, bM, * 11 nr"},{"ID":"3066","标识":"NGC3066","M标识":"NGC3066","拓展名":"","组件":"","Class":"II 334","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h2m10s","赤经D(J2000)":"10.036111111111111","赤纬(J2000)":"+72h7m32s","赤纬D(J2000)":"72.12555555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"1","方位角":"159","详细描述":"very faint, very small, very gradually a little brighter middle","简略描述":"vF, vS, vglbM"},{"ID":"3067","标识":"NGC3067","M标识":"NGC3067","拓展名":"","组件":"","Class":"II 492","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h58m21.5s","赤经D(J2000)":"9.97263888888889","赤纬(J2000)":"+32h22m12s","赤纬D(J2000)":"32.37","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.4","短轴(分)":"0.9","方位角":"105","详细描述":"pretty bright, pretty large, extended 106°, gradually brighter middle, 9th magnitude star 4 arcmin away at position angle 74°","简略描述":"pB, pL, E 106°, gbM, * 9, 74°, 4'"},{"ID":"3068","标识":"NGC3068","M标识":"NGC3068","拓展名":"","组件":"","Class":"III 293","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h58m40.1s","赤经D(J2000)":"9.977805555555555","赤纬(J2000)":"+28h52m41s","赤纬D(J2000)":"28.878055555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"53","详细描述":"most extremely faint, extremely small, stellar (?)","简略描述":"eeF, eS, stellar (?)"},{"ID":"3069","标识":"NGC3069","M标识":"NGC3069","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h57m56.7s","赤经D(J2000)":"9.96575","赤纬(J2000)":"+10h25m58s","赤纬D(J2000)":"10.432777777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"165","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"3070","标识":"NGC3070","M标识":"NGC3070","拓展名":"","组件":"","Class":"II 59","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h58m6.9s","赤经D(J2000)":"9.968583333333333","赤纬(J2000)":"+10h21m37s","赤纬D(J2000)":"10.360277777777778","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"pretty bright, pretty small, round, gradually much brighter middle and nucleus, among 3 stars","简略描述":"pB, pS, R, gmbMN, am 3 st"},{"ID":"3071","标识":"NGC3071","M标识":"NGC3071","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h58m52.9s","赤经D(J2000)":"9.981361111111111","赤纬(J2000)":"+31h37m15s","赤纬D(J2000)":"31.620833333333334","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"177","详细描述":"nebulous 13th magnitude star","简略描述":"Neb * 13 m"},{"ID":"3072","标识":"NGC3072","M标识":"NGC3072","拓展名":"","组件":"","Class":"III 273","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h57m23.9s","赤经D(J2000)":"9.956638888888888","赤纬(J2000)":"-19h21m17s","赤纬D(J2000)":"-19.354722222222225","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.9","短轴(分)":"0.6","方位角":"71","详细描述":"very faint, pretty small, a little extended, gradually a little brighter middle","简略描述":"vF, pS, lE, glbm"},{"ID":"3073","标识":"NGC3073","M标识":"NGC3073","拓展名":"","组件":"","Class":"III 853","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h0m52.2s","赤经D(J2000)":"10.0145","赤纬(J2000)":"+55h37m6s","赤纬D(J2000)":"55.61833333333333","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"156","详细描述":"very faint, small, very gradually a little brighter middle","简略描述":"vF, S, vglbM"},{"ID":"3074","标识":"NGC3074","M标识":"NGC3074","拓展名":"","组件":"","Class":"III 542","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h59m41.2s","赤经D(J2000)":"9.994777777777777","赤纬(J2000)":"+35h23m36s","赤纬D(J2000)":"35.39333333333333","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.3","短轴(分)":"2.1","方位角":"166","详细描述":"very faint, pretty large, irregularly round, very gradually very little brighter middle","简略描述":"vF, pL, iR, vgvlbM"},{"ID":"3075","标识":"NGC3075","M标识":"NGC3075","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h58m56.3s","赤经D(J2000)":"9.982305555555556","赤纬(J2000)":"+14h25m10s","赤纬D(J2000)":"14.419444444444444","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"135","详细描述":"very very faint, 14th magnitude star attached, 11th magnitude star to east","简略描述":"vvF, * 14 att, * 11 f"},{"ID":"3076","标识":"NGC3076","M标识":"NGC3076","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h57m37.7s","赤经D(J2000)":"9.960472222222222","赤纬(J2000)":"-18h10m42s","赤纬D(J2000)":"-18.178333333333335","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.9","方位角":"","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"3077","标识":"NGC3077","M标识":"NGC3077","拓展名":"","组件":"","Class":"I 286","业余排名":"5","中文名":"花环星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h3m20.3s","赤经D(J2000)":"10.05563888888889","赤纬(J2000)":"+68h44m6s","赤纬D(J2000)":"68.735","可见光星等V":"9.9","摄影(蓝光)星等B":"10.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"5.2","短轴(分)":"4.7","方位角":"45","详细描述":"considerably bright, considerably large, much brighter middle, round with ray","简略描述":"cB, cL, mbM, R with ray"},{"ID":"3078","标识":"NGC3078","M标识":"NGC3078","拓展名":"","组件":"","Class":"II 268","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h58m24.5s","赤经D(J2000)":"9.973472222222222","赤纬(J2000)":"-26h55m34s","赤纬D(J2000)":"-26.926111111111112","可见光星等V":"11.1","摄影(蓝光)星等B":"12.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.7","短轴(分)":"2.3","方位角":"177","详细描述":"pretty bright, small, round, much brighter middle","简略描述":"pB, S, R, mbM"},{"ID":"3079","标识":"NGC3079","M标识":"NGC3079","拓展名":"","组件":"","Class":"V 47","业余排名":"6","中文名":"幻影飞碟星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h1m57.7s","赤经D(J2000)":"10.032694444444445","赤纬(J2000)":"+55h40m53s","赤纬D(J2000)":"55.68138888888889","可见光星等V":"10.9","摄影(蓝光)星等B":"11.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"8.1","短轴(分)":"1.3","方位角":"165","详细描述":"very bright, large, much extended 135°","简略描述":"vB, L, mE 135°"},{"ID":"3080","标识":"NGC3080","M标识":"NGC3080","拓展名":"","组件":"","Class":"III 934","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h59m55.9s","赤经D(J2000)":"9.99886111111111","赤纬(J2000)":"+13h2m39s","赤纬D(J2000)":"13.044166666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"69","详细描述":"very faint","简略描述":"vF"},{"ID":"3081","标识":"NGC3081","M标识":"NGC3081","拓展名":"","组件":"","Class":"III 596","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h59m29.5s","赤经D(J2000)":"9.991527777777778","赤纬(J2000)":"-22h49m34s","赤纬D(J2000)":"-22.82611111111111","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"1.8","方位角":"74","详细描述":"very faint, considerably small, a little brighter middle, triangle of small (faint) stars to northwest","简略描述":"vF, cS, lbM, Δ S st np"},{"ID":"3082","标识":"NGC3082","M标识":"NGC3082","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h58m52.9s","赤经D(J2000)":"9.981361111111111","赤纬(J2000)":"-30h21m27s","赤纬D(J2000)":"-30.3575","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"26","详细描述":"very faint, small, round, double star attached","简略描述":"vF, S, R, D * att"},{"ID":"3083","标识":"NGC3083","M标识":"NGC3083","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h59m49.6s","赤经D(J2000)":"9.99711111111111","赤纬(J2000)":"-2h52m39s","赤纬D(J2000)":"-2.8775","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"50","详细描述":"extremely faint, small, extended","简略描述":"eF, S, E"},{"ID":"3084","标识":"NGC3084","M标识":"NGC3084","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab\/P","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h59m6.1s","赤经D(J2000)":"9.985027777777777","赤纬(J2000)":"-27h7m42s","赤纬D(J2000)":"-27.128333333333334","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"2","详细描述":"very faint, small, round, 13th magnitude star attached on southeast","简略描述":"vF, S, R, * 13 att sf"},{"ID":"3085","标识":"NGC3085","M标识":"NGC3085","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h59m29.1s","赤经D(J2000)":"9.991416666666666","赤纬(J2000)":"-19h29m34s","赤纬D(J2000)":"-19.49277777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"119","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"3086","标识":"NGC3086","M标识":"NGC3086","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h0m10.9s","赤经D(J2000)":"10.003027777777778","赤纬(J2000)":"-2h58m33s","赤纬D(J2000)":"-2.9758333333333336","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"145","详细描述":"extremely faint, small, irregularly round","简略描述":"eF, S, iR"},{"ID":"3087","标识":"NGC3087","M标识":"NGC3087","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h59m8.6s","赤经D(J2000)":"9.985722222222222","赤纬(J2000)":"-34h13m32s","赤纬D(J2000)":"-34.22555555555556","可见光星等V":"10.5","摄影(蓝光)星等B":"11.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"2","方位角":"","详细描述":"pretty bright, small, round, pretty much brighter middle, between 2 stars","简略描述":"pB, S, R, pmbM, bet 2 st"},{"ID":"3088","标识":"NGC3088","M标识":"NGC3088","拓展名":"","组件":"","Class":"III 24","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h1m8.3s","赤经D(J2000)":"10.018972222222223","赤纬(J2000)":"+22h24m22s","赤纬D(J2000)":"22.40611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"69","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"3089","标识":"NGC3089","M标识":"NGC3089","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h59m36.6s","赤经D(J2000)":"9.9935","赤纬(J2000)":"-28h19m52s","赤纬D(J2000)":"-28.33111111111111","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.8","短轴(分)":"1","方位角":"139","详细描述":"pretty faint, pretty small, round, very small (faint) star involved","简略描述":"pF, pS, R, vS st inv"},{"ID":"3090","标识":"NGC3090","M标识":"NGC3090","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h0m30.2s","赤经D(J2000)":"10.00838888888889","赤纬(J2000)":"-2h58m7s","赤纬D(J2000)":"-2.968611111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"90","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"3091","标识":"NGC3091","M标识":"NGC3091","拓展名":"","组件":"","Class":"II 293","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h0m14.1s","赤经D(J2000)":"10.003916666666667","赤纬(J2000)":"-19h38m12s","赤纬D(J2000)":"-19.636666666666667","可见光星等V":"11.1","摄影(蓝光)星等B":"12.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3","短轴(分)":"1.9","方位角":"149","详细描述":"pretty bright, pretty small, irregularly round, brighter middle, western of 2","简略描述":"pB, pS, iR, bM, p of 2"},{"ID":"3092","标识":"NGC3092","M标识":"NGC3092","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h0m47.4s","赤经D(J2000)":"10.013166666666667","赤纬(J2000)":"-3h0m44s","赤纬D(J2000)":"-3.0122222222222224","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"30","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"3093","标识":"NGC3093","M标识":"NGC3093","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h0m53.5s","赤经D(J2000)":"10.014861111111111","赤纬(J2000)":"-2h58m17s","赤纬D(J2000)":"-2.971388888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"50","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"3094","标识":"NGC3094","M标识":"NGC3094","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h1m25.9s","赤经D(J2000)":"10.023861111111112","赤纬(J2000)":"+15h46m12s","赤纬D(J2000)":"15.770000000000001","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"75","详细描述":"faint, brighter middle, 9th magnitude star half an arcmin to southeast","简略描述":"F, bM, * 9 ?' sf"},{"ID":"3095","标识":"NGC3095","M标识":"NGC3095","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h0m5.7s","赤经D(J2000)":"10.001583333333333","赤纬(J2000)":"-31h33m12s","赤纬D(J2000)":"-31.553333333333335","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.6","短轴(分)":"2","方位角":"126","详细描述":"faint, large, extended, very gradually very little brighter middle","简略描述":"F, L, E, vgvlbm"},{"ID":"3096","标识":"NGC3096","M标识":"NGC3096","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h0m33.1s","赤经D(J2000)":"10.009194444444445","赤纬(J2000)":"-19h39m44s","赤纬D(J2000)":"-19.66222222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.8","方位角":"170","详细描述":"extremely faint, round, little brighter middle, eastern of 2","简略描述":"eF, R, lbM, f of 2"},{"ID":"3097","标识":"NGC3097","M标识":"NGC3097","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h3m58.4s","赤经D(J2000)":"10.066222222222223","赤纬(J2000)":"+60h4m59s","赤纬D(J2000)":"60.08305555555556","可见光星等V":"99","摄影(蓝光)星等B":"14.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebulous star? 2 arcmin northwest of h662","简略描述":"Neb *? 2' np h 662"},{"ID":"3098","标识":"NGC3098","M标识":"NGC3098","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h2m16.7s","赤经D(J2000)":"10.037972222222223","赤纬(J2000)":"+24h42m41s","赤纬D(J2000)":"24.711388888888887","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"2.2","短轴(分)":"0.6","方位角":"90","详细描述":"pretty bright, small, extended 85°, pretty suddenly brighter middle and nucleus","简略描述":"pB, S, E 85°, psbMN"},{"ID":"3099","标识":"NGC3099","M标识":"NGC3099","拓展名":"A","组件":"","Class":"III 478","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E+C","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h2m36.5s","赤经D(J2000)":"10.043472222222222","赤纬(J2000)":"+32h42m26s","赤纬D(J2000)":"32.70722222222223","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"3100","标识":"NGC3100","M标识":"NGC3100","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h0m40.8s","赤经D(J2000)":"10.011333333333333","赤纬(J2000)":"-31h39m51s","赤纬D(J2000)":"-31.664166666666667","可见光星等V":"11.1","摄影(蓝光)星等B":"12","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"3.2","短轴(分)":"1.7","方位角":"154","详细描述":"pretty bright, pretty small, round, gradually pretty much brighter middle","简略描述":"pB, pS, R, gpmbM"},{"ID":"3101","标识":"NGC3101","M标识":"NGC3101","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h1m35.5s","赤经D(J2000)":"10.026527777777778","赤纬(J2000)":"-2h59m41s","赤纬D(J2000)":"-2.9947222222222223","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"150","详细描述":"extremely faint","简略描述":"eF"},{"ID":"3102","标识":"NGC3102","M标识":"NGC3102","拓展名":"","组件":"","Class":"III 916","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h4m31.7s","赤经D(J2000)":"10.075472222222222","赤纬(J2000)":"+60h6m28s","赤纬D(J2000)":"60.10777777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, very small, round, brighter middle, 11th magnitude star at position angle 142°","简略描述":"vF, vS, R, bM, * 11, 142°"},{"ID":"3103","标识":"NGC3103","M标识":"NGC3103","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h0m40.8s","赤经D(J2000)":"10.011333333333333","赤纬(J2000)":"-31h39m51s","赤纬D(J2000)":"-31.664166666666667","可见光星等V":"11.1","摄影(蓝光)星等B":"12","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"3.2","短轴(分)":"1.7","方位角":"154","详细描述":"pretty bright, pretty small, round, gradually pretty much brighter middle","简略描述":"eF, pL, R"},{"ID":"3104","标识":"NGC3104","M标识":"NGC3104","拓展名":"","组件":"","Class":"IV 48","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h3m57.1s","赤经D(J2000)":"10.065861111111111","赤纬(J2000)":"+40h45m26s","赤纬D(J2000)":"40.757222222222225","可见光星等V":"13.2","摄影(蓝光)星等B":"13.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"15.2","长轴(分)":"3.3","短轴(分)":"2.2","方位角":"35","详细描述":"extremely faint, pretty large, extended, very faint star involved","简略描述":"eF, pL, E, vF * inv"},{"ID":"3105","标识":"NGC3105","M标识":"NGC3105","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"10h0m39.5s","赤经D(J2000)":"10.010972222222222","赤纬(J2000)":"-54h47m15s","赤纬D(J2000)":"-54.7875","可见光星等V":"9.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"cluster, compact, a little extended, stars from 13th to 16th magnitude","简略描述":"Cl, C, lE, st 13…16"},{"ID":"3106","标识":"NGC3106","M标识":"NGC3106","拓展名":"","组件":"","Class":"II 320","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h4m5.2s","赤经D(J2000)":"10.068111111111111","赤纬(J2000)":"+31h11m9s","赤纬D(J2000)":"31.185833333333335","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"1.8","方位角":"","详细描述":"faint, small, round, suddenly brighter middle","简略描述":"F, S, R, sbM"},{"ID":"3107","标识":"NGC3107","M标识":"NGC3107","拓展名":"","组件":"","Class":"II 898","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h4m22.4s","赤经D(J2000)":"10.072888888888889","赤纬(J2000)":"+13h37m19s","赤纬D(J2000)":"13.621944444444445","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"140","详细描述":"pretty faint, pretty large, irregularly round, 8th magnitude star 112 arcsec distant at position angle 148°","简略描述":"pF, pL, iR, * 8 148°, 112\""},{"ID":"3108","标识":"NGC3108","M标识":"NGC3108","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h2m29.1s","赤经D(J2000)":"10.041416666666667","赤纬(J2000)":"-31h40m33s","赤纬D(J2000)":"-31.675833333333333","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.5","短轴(分)":"1.8","方位角":"110","详细描述":"faint, small, round, gradually a little brighter middle","简略描述":"F, S, R, glbM"},{"ID":"3109","标识":"NGC3109","M标识":"NGC3109","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h3m6.6s","赤经D(J2000)":"10.051833333333335","赤纬(J2000)":"-26h9m30s","赤纬D(J2000)":"-26.15833333333333","可见光星等V":"9.9","摄影(蓝光)星等B":"10.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"19.1","短轴(分)":"3.7","方位角":"93","详细描述":"considerably faint, very large, very much extended 82°, a little brighter middle","简略描述":"cF, vL, vmE 82°, lbM"},{"ID":"3110","标识":"NGC3110","M标识":"NGC3110","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h4m1.9s","赤经D(J2000)":"10.067194444444445","赤纬(J2000)":"-6h28m29s","赤纬D(J2000)":"-6.474722222222223","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"162","详细描述":"faint, very small, irregularly round, mottled but not resolved","简略描述":"F, vS, iR, r"},{"ID":"3111","标识":"NGC3111","M标识":"NGC3111","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h6m7.4s","赤经D(J2000)":"10.102055555555555","赤纬(J2000)":"+47h15m47s","赤纬D(J2000)":"47.26305555555555","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"144","详细描述":"pretty bright, small, round, suddenly much brighter middle equivalent to 12th magnitude star","简略描述":"pB, S, R, smbM * 12"},{"ID":"3112","标识":"NGC3112","M标识":"NGC3112","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h3m59s","赤经D(J2000)":"10.06638888888889","赤纬(J2000)":"-20h46m56s","赤纬D(J2000)":"-20.78222222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.2","方位角":"47","详细描述":"extremely faint, extremely small, round, perhaps nebulous","简略描述":"eF, eS, R, ? Neb"},{"ID":"3113","标识":"NGC3113","M标识":"NGC3113","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h4m26s","赤经D(J2000)":"10.073888888888888","赤纬(J2000)":"-28h26m41s","赤纬D(J2000)":"-28.44472222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.3","短轴(分)":"1.1","方位角":"87","详细描述":"extremely faint, large, makes a triangle with two 8th magnitude stars","简略描述":"eF, L, Δ 2 st 8 m"},{"ID":"3114","标识":"NGC3114","M标识":"NGC3114","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"手状星团","类型":"OCL","含重复类型":"OCL","形态":"II3r","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"10h2m36s","赤经D(J2000)":"10.043333333333333","赤纬(J2000)":"-60h6m0s","赤纬D(J2000)":"-60.1","可见光星等V":"4.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"35","短轴(分)":"","方位角":"","详细描述":"cluster, extremely large, a little compact, bright, stars from 9th to 14th magnitude","简略描述":"Cl, eL, lC, B, st 9…14"},{"ID":"3115","标识":"NGC3115","M标识":"NGC3115","拓展名":"","组件":"","Class":"I 163","业余排名":"2","中文名":"纺锤星系","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h5m14.1s","赤经D(J2000)":"10.087250000000001","赤纬(J2000)":"-7h43m5s","赤纬D(J2000)":"-7.718055555555556","可见光星等V":"8.9","摄影(蓝光)星等B":"9.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"7.2","短轴(分)":"2.4","方位角":"40","详细描述":"very bright, large, very much extended 46°, very gradually suddenly much brighter middle and extended nucleus","简略描述":"vB, L, vmE 46°, vgsmbMEN"},{"ID":"3116","标识":"NGC3116","M标识":"NGC3116","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h6m45s","赤经D(J2000)":"10.112499999999999","赤纬(J2000)":"+31h5m54s","赤纬D(J2000)":"31.098333333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"nebulous star, 13th magnitude","简略描述":"Neb * 13m"},{"ID":"3117","标识":"NGC3117","M标识":"NGC3117","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h6m10.4s","赤经D(J2000)":"10.102888888888888","赤纬(J2000)":"+2h54m48s","赤纬D(J2000)":"2.913333333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"very faint, very small, round, small star involved","简略描述":"vF, vS, R, S * inv"},{"ID":"3118","标识":"NGC3118","M标识":"NGC3118","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h7m11.4s","赤经D(J2000)":"10.119833333333334","赤纬(J2000)":"+33h1m38s","赤纬D(J2000)":"33.02722222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.5","短轴(分)":"0.4","方位角":"41","详细描述":"small group of very faint stars in very faint nebula","简略描述":"S group of vF st in vF neb"},{"ID":"3119","标识":"NGC3119","M标识":"NGC3119","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h6m47.8s","赤经D(J2000)":"10.113277777777778","赤纬(J2000)":"+14h18m20s","赤纬D(J2000)":"14.305555555555557","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"3120","标识":"NGC3120","M标识":"NGC3120","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h5m22.8s","赤经D(J2000)":"10.089666666666668","赤纬(J2000)":"-34h13m15s","赤纬D(J2000)":"-34.22083333333334","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"1","详细描述":"faint, pretty small, round, gradually brighter middle","简略描述":"F, pS, R, gbM"},{"ID":"3121","标识":"NGC3121","M标识":"NGC3121","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h6m51.8s","赤经D(J2000)":"10.114388888888888","赤纬(J2000)":"+14h22m26s","赤纬D(J2000)":"14.373888888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"20","详细描述":"very faint","简略描述":"pF, pL, glbM, * 9.5 np (Auw 26)"},{"ID":"3122","标识":"NGC3122","M标识":"NGC3122","拓展名":"","组件":"","Class":"II 305","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h4m1.9s","赤经D(J2000)":"10.067194444444445","赤纬(J2000)":"-6h28m29s","赤纬D(J2000)":"-6.474722222222223","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"162","详细描述":"faint, very small, irregularly round, mottled but not resolved","简略描述":"F, S, lE, er"},{"ID":"3123","标识":"NGC3123","M标识":"NGC3123","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h18m11.9s","赤经D(J2000)":"10.303305555555557","赤纬(J2000)":"+0h2m25s","赤纬D(J2000)":"0.04027777777777777","可见光星等V":"11","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebula, no description","简略描述":"Neb, no description"},{"ID":"3124","标识":"NGC3124","M标识":"NGC3124","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h6m40s","赤经D(J2000)":"10.11111111111111","赤纬(J2000)":"-19h13m18s","赤纬D(J2000)":"-19.221666666666664","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.9","短轴(分)":"2.5","方位角":"9","详细描述":"faint, pretty large, round, a little brighter middle, double star to south","简略描述":"F, pL, R, lbM, D * s"},{"ID":"3125","标识":"NGC3125","M标识":"NGC3125","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h6m33.2s","赤经D(J2000)":"10.109222222222222","赤纬(J2000)":"-29h56m8s","赤纬D(J2000)":"-29.935555555555556","可见光星等V":"13","摄影(蓝光)星等B":"13.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"114","详细描述":"considerably faint, small, round, very gradually brighter middle","简略描述":"cF, S, R, vgbM"},{"ID":"3126","标识":"NGC3126","M标识":"NGC3126","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h8m20.6s","赤经D(J2000)":"10.139055555555554","赤纬(J2000)":"+31h51m49s","赤纬D(J2000)":"31.863611111111112","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.8","短轴(分)":"0.6","方位角":"123","详细描述":"faint, small, a little extended, nucleus = 15th magnitude star","简略描述":"F, S, lE, N = * 15"},{"ID":"3127","标识":"NGC3127","M标识":"NGC3127","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h6m24.7s","赤经D(J2000)":"10.10686111111111","赤纬(J2000)":"-16h7m34s","赤纬D(J2000)":"-16.12611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.2","短轴(分)":"0.2","方位角":"55","详细描述":"extremely faint, pretty large, much extended 45°","简略描述":"eF, pL, mE 45°"},{"ID":"3128","标识":"NGC3128","M标识":"NGC3128","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h6m1.4s","赤经D(J2000)":"10.100388888888888","赤纬(J2000)":"-16h7m22s","赤纬D(J2000)":"-16.122777777777777","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"175","详细描述":"extremely faint, pretty large, much extended 170°, a little brighter middle","简略描述":"eF, pL, mE 170°, lbM"},{"ID":"3129","标识":"NGC3129","M标识":"NGC3129","拓展名":"","组件":"","Class":"III 65","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h8m22s","赤经D(J2000)":"10.139444444444443","赤纬(J2000)":"+18h25m37s","赤纬D(J2000)":"18.426944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, considerably small, very little extended, mottled but not resolved","简略描述":"eF, cS, vlE, r"},{"ID":"3130","标识":"NGC3130","M标识":"NGC3130","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h8m12.3s","赤经D(J2000)":"10.13675","赤纬(J2000)":"+9h58m36s","赤纬D(J2000)":"9.976666666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.6","方位角":"30","详细描述":"extremely faint, small, pretty suddenly brighter middle, 5th magnitude star to southeast","简略描述":"eF, S, psbM, * 5 sf"},{"ID":"3131","标识":"NGC3131","M标识":"NGC3131","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h8m36.2s","赤经D(J2000)":"10.143388888888888","赤纬(J2000)":"+18h13m52s","赤纬D(J2000)":"18.231111111111108","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.4","短轴(分)":"0.7","方位角":"54","详细描述":"pretty bright, pretty small, pretty much extended, gradually brighter middle","简略描述":"pB, pS, pmE, gbM"},{"ID":"3132","标识":"NGC3132","M标识":"NGC3132","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"双环星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"10h7m1.8s","赤经D(J2000)":"10.117166666666668","赤纬(J2000)":"-40h26m10s","赤纬D(J2000)":"-40.43611111111111","可见光星等V":"9.2","摄影(蓝光)星等B":"8.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.47","短轴(分)":"","方位角":"","详细描述":"a most remarkable object, planetary, very bright, very large, a little extended middle equivalent to 9th magnitude star, 4 seconds of time diameter","简略描述":"!! planetary, vB, vL, lE * 9 m, 4s d"},{"ID":"3133","标识":"NGC3133","M标识":"NGC3133","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h7m12.7s","赤经D(J2000)":"10.120194444444445","赤纬(J2000)":"-11h57m55s","赤纬D(J2000)":"-11.965277777777777","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"25","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"3134","标识":"NGC3134","M标识":"NGC3134","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h12m29.1s","赤经D(J2000)":"10.208083333333333","赤纬(J2000)":"+12h22m37s","赤纬D(J2000)":"12.376944444444446","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"51","详细描述":"very faint, disc","简略描述":"vF, disc"},{"ID":"3135","标识":"NGC3135","M标识":"NGC3135","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h10m54.4s","赤经D(J2000)":"10.181777777777777","赤纬(J2000)":"+45h57m2s","赤纬D(J2000)":"45.95055555555556","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"90","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"3136","标识":"NGC3136","M标识":"NGC3136","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"10h5m48.2s","赤经D(J2000)":"10.096722222222223","赤纬(J2000)":"-67h22m39s","赤纬D(J2000)":"-67.3775","可见光星等V":"10.7","摄影(蓝光)星等B":"11.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"3.1","短轴(分)":"2.1","方位角":"30","详细描述":"pretty bright, pretty small, round, gradually brighter middle, 13th magnitude star to north","简略描述":"pB, pS, R, gbM, * 13 n"},{"ID":"3137","标识":"NGC3137","M标识":"NGC3137","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h9m7.4s","赤经D(J2000)":"10.152055555555556","赤纬(J2000)":"-29h3m49s","赤纬D(J2000)":"-29.06361111111111","可见光星等V":"11.5","摄影(蓝光)星等B":"12.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"6.2","短轴(分)":"2.2","方位角":"1","详细描述":"very faint, small, a little extended","简略描述":"vF, S, lE"},{"ID":"3138","标识":"NGC3138","M标识":"NGC3138","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h9m16.6s","赤经D(J2000)":"10.15461111111111","赤纬(J2000)":"-11h57m26s","赤纬D(J2000)":"-11.95722222222222","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"80","详细描述":"extremely faint, very small, round, 1st of 2","简略描述":"eF, vS, R, 1st of 2"},{"ID":"3139","标识":"NGC3139","M标识":"NGC3139","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h10m5.1s","赤经D(J2000)":"10.168083333333334","赤纬(J2000)":"-11h46m40s","赤纬D(J2000)":"-11.777777777777779","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"75","详细描述":"extremely faint, very small, round, 2nd of 2","简略描述":"eF, vS, R, 2nd of 2"},{"ID":"3140","标识":"NGC3140","M标识":"NGC3140","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h9m27.8s","赤经D(J2000)":"10.157722222222223","赤纬(J2000)":"-16h37m40s","赤纬D(J2000)":"-16.62777777777778","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"41","详细描述":"extremely faint, pretty small, round, suddenly brighter middle and nucleus, 1st of 2","简略描述":"eF, pS, R, sbMN, 1st of 2"},{"ID":"3141","标识":"NGC3141","M标识":"NGC3141","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h9m19.8s","赤经D(J2000)":"10.1555","赤纬(J2000)":"-16h39m11s","赤纬D(J2000)":"-16.653055555555554","可见光星等V":"15.4","摄影(蓝光)星等B":"16.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"26","详细描述":"extremely faint, small, round, 2nd of 2","简略描述":"eF, S, R, 2nd of 2"},{"ID":"3142","标识":"NGC3142","M标识":"NGC3142","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h10m6.4s","赤经D(J2000)":"10.168444444444443","赤纬(J2000)":"-8h28m46s","赤纬D(J2000)":"-8.479444444444445","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.9","方位角":"3","详细描述":"faint, round (d'Arrest PD (97) 43.3, 1 observation)","简略描述":"F, R, (d'A, PD 43'.3, 1 obs)"},{"ID":"3143","标识":"NGC3143","M标识":"NGC3143","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h10m3.9s","赤经D(J2000)":"10.16775","赤纬(J2000)":"-12h34m55s","赤纬D(J2000)":"-12.581944444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"14.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"105","详细描述":"faint, small","简略描述":"F, S"},{"ID":"3144","标识":"NGC3144","M标识":"NGC3144","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h15m32.1s","赤经D(J2000)":"10.258916666666666","赤纬(J2000)":"+74h13m14s","赤纬D(J2000)":"74.22055555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"5","详细描述":"very faint, small, round, 13th magnitude star attached on east","简略描述":"vF, S, R, * 13 att f"},{"ID":"3145","标识":"NGC3145","M标识":"NGC3145","拓展名":"","组件":"","Class":"III 518","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h10m9.9s","赤经D(J2000)":"10.169416666666667","赤纬(J2000)":"-12h26m4s","赤纬D(J2000)":"-12.434444444444445","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3","短轴(分)":"1.6","方位角":"18","详细描述":"faint, pretty large, round, very gradually then suddenly a little brighter middle","简略描述":"F, pL, R, vgslbM"},{"ID":"3146","标识":"NGC3146","M标识":"NGC3146","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h11m9.8s","赤经D(J2000)":"10.186055555555555","赤纬(J2000)":"-20h52m15s","赤纬D(J2000)":"-20.870833333333334","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.9","方位角":"100","详细描述":"extremely faint, small, round, gradually brighter middle","简略描述":"eF, S, R, gbM"},{"ID":"3147","标识":"NGC3147","M标识":"NGC3147","拓展名":"","组件":"","Class":"I 79","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h16m53.2s","赤经D(J2000)":"10.281444444444446","赤纬(J2000)":"+73h24m1s","赤纬D(J2000)":"73.40027777777779","可见光星等V":"10.6","摄影(蓝光)星等B":"11.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.9","短轴(分)":"3.5","方位角":"155","详细描述":"very bright, large, round, very gradually then very suddenly very much brighter middle","简略描述":"vB, L, R, vgvsvmbM"},{"ID":"3148","标识":"NGC3148","M标识":"NGC3148","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h13m43.8s","赤经D(J2000)":"10.228833333333334","赤纬(J2000)":"+50h29m49s","赤纬D(J2000)":"50.496944444444445","可见光星等V":"99","摄影(蓝光)星等B":"6.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"7th magnitude star in photosphere 2 or 3 arcmin in diameter","简略描述":"* 7 in photosphere 2' or 3' d"},{"ID":"3149","标识":"NGC3149","M标识":"NGC3149","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"堰蜓座","星座(En)":"CHA","赤经(J2000)":"10h3m43.4s","赤经D(J2000)":"10.062055555555556","赤纬(J2000)":"-80h25m20s","赤纬D(J2000)":"-80.42222222222223","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2","短轴(分)":"1.9","方位角":"","详细描述":"faint, small, a little extended, very little brighter middle, 15th magnitude star involved","简略描述":"F, S, lE, vlbM, * 15 inv"},{"ID":"3150","标识":"NGC3150","M标识":"NGC3150","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h13m26.2s","赤经D(J2000)":"10.223944444444445","赤纬(J2000)":"+38h39m29s","赤纬D(J2000)":"38.658055555555556","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"173","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"3151","标识":"NGC3151","M标识":"NGC3151","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h13m29s","赤经D(J2000)":"10.224722222222223","赤纬(J2000)":"+38h37m13s","赤纬D(J2000)":"38.62027777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"168","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"3152","标识":"NGC3152","M标识":"NGC3152","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h13m34.1s","赤经D(J2000)":"10.226138888888888","赤纬(J2000)":"+38h50m37s","赤纬D(J2000)":"38.843611111111116","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"75","详细描述":"extremely faint, very small, irregularly round, extremely faint star close to southwest","简略描述":"eF, vS, iR, eF * close sp"},{"ID":"3153","标识":"NGC3153","M标识":"NGC3153","拓展名":"","组件":"","Class":"III 53","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h12m50.5s","赤经D(J2000)":"10.214027777777778","赤纬(J2000)":"+12h40m0s","赤纬D(J2000)":"12.666666666666666","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.1","短轴(分)":"0.9","方位角":"170","详细描述":"extremely faint, pretty large, very little extended, mottled but not resolved, star involved","简略描述":"eF, pL, vlE, r, st inv"},{"ID":"3154","标识":"NGC3154","M标识":"NGC3154","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h13m1.1s","赤经D(J2000)":"10.216972222222223","赤纬(J2000)":"+17h2m4s","赤纬D(J2000)":"17.034444444444446","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"124","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"3155","标识":"NGC3155","M标识":"NGC3155","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S?","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h17m39.7s","赤经D(J2000)":"10.294361111111112","赤纬(J2000)":"+74h20m52s","赤纬D(J2000)":"74.34777777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1","短轴(分)":"0.5","方位角":"41","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"3156","标识":"NGC3156","M标识":"NGC3156","拓展名":"","组件":"","Class":"III 255","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h12m41.1s","赤经D(J2000)":"10.211416666666667","赤纬(J2000)":"+3h7m47s","赤纬D(J2000)":"3.129722222222222","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"47","详细描述":"faint, considerably small, round, pretty suddenly brighter middle, 9th or 10th magnitude star 2 arcmin to southeast","简略描述":"F, cS, R, psbM, * 9·10 sf 2'"},{"ID":"3157","标识":"NGC3157","M标识":"NGC3157","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h11m42.4s","赤经D(J2000)":"10.195111111111112","赤纬(J2000)":"-31h38m34s","赤纬D(J2000)":"-31.642777777777777","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.5","短轴(分)":"0.5","方位角":"38","详细描述":"very faint, pretty small, extended, 8th or 9th magnitude star to southwest","简略描述":"vF, pS, E, * 8·9 sp"},{"ID":"3158","标识":"NGC3158","M标识":"NGC3158","拓展名":"","组件":"","Class":"II 639","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h13m50.5s","赤经D(J2000)":"10.230694444444445","赤纬(J2000)":"+38h45m56s","赤纬D(J2000)":"38.76555555555556","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"1.8","方位角":"0","详细描述":"considerably bright, considerably small, round, pretty suddenly brighter middle, mottled but not resolved","简略描述":"cB, cS, R, psbM, r"},{"ID":"3159","标识":"NGC3159","M标识":"NGC3159","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h13m52.8s","赤经D(J2000)":"10.231333333333334","赤纬(J2000)":"+38h39m18s","赤纬D(J2000)":"38.655","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"15.2","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"156","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"3160","标识":"NGC3160","M标识":"NGC3160","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h13m55.2s","赤经D(J2000)":"10.232","赤纬(J2000)":"+38h50m34s","赤纬D(J2000)":"38.84277777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"140","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"3161","标识":"NGC3161","M标识":"NGC3161","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h13m59.1s","赤经D(J2000)":"10.233083333333333","赤纬(J2000)":"+38h39m28s","赤纬D(J2000)":"38.657777777777774","可见光星等V":"13.7","摄影(蓝光)星等B":"14.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"2","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"3162","标识":"NGC3162","M标识":"NGC3162","拓展名":"","组件":"","Class":"II 43","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h13m31.5s","赤经D(J2000)":"10.225416666666666","赤纬(J2000)":"+22h44m14s","赤纬D(J2000)":"22.737222222222222","可见光星等V":"11.6","摄影(蓝光)星等B":"12.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.1","短轴(分)":"2.7","方位角":"33","详细描述":"pretty faint, considerably large, round, very gradually a little brighter middle, mottled but not resolved, small (faint) star involved","简略描述":"pF, cL, R, vglbM, r, S * inv"},{"ID":"3163","标识":"NGC3163","M标识":"NGC3163","拓展名":"","组件":"","Class":"II 640","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h14m7.1s","赤经D(J2000)":"10.235305555555554","赤纬(J2000)":"+38h39m10s","赤纬D(J2000)":"38.65277777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"30","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"3164","标识":"NGC3164","M标识":"NGC3164","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h15m11.5s","赤经D(J2000)":"10.253194444444444","赤纬(J2000)":"+56h40m20s","赤纬D(J2000)":"56.67222222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"0","详细描述":"extremely faint, small, round, very gradually a little brighter middle","简略描述":"eF, S, R, vglbM"},{"ID":"3165","标识":"NGC3165","M标识":"NGC3165","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sdm","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h13m31.4s","赤经D(J2000)":"10.225388888888888","赤纬(J2000)":"+3h22m30s","赤纬D(J2000)":"3.375","可见光星等V":"13.9","摄影(蓝光)星等B":"14.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"177","详细描述":"very faint, much extended 0°, 1st of 3","简略描述":"vF, mE 0°, 1st of 3"},{"ID":"3166","标识":"NGC3166","M标识":"NGC3166","拓展名":"","组件":"","Class":"I 3","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h13m45.5s","赤经D(J2000)":"10.229305555555555","赤纬(J2000)":"+3h25m33s","赤纬D(J2000)":"3.4258333333333333","可见光星等V":"10.4","摄影(蓝光)星等B":"11.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"4.8","短轴(分)":"2.3","方位角":"87","详细描述":"bright, pretty small, round, pretty suddenly much brighter middle, 2nd of 3","简略描述":"B, pS, R, psmbM, 2nd of 3"},{"ID":"3167","标识":"NGC3167","M标识":"NGC3167","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h14m59.7s","赤经D(J2000)":"9.249916666666666","赤纬(J2000)":"+29h43m49s","赤纬D(J2000)":"29.730277777777776","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"20","详细描述":"faint, small, perhaps very small cluster of very faint stars","简略描述":"F, S, ? vS Cl of vF st"},{"ID":"3168","标识":"NGC3168","M标识":"NGC3168","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h16m23s","赤经D(J2000)":"10.273055555555556","赤纬(J2000)":"+60h14m6s","赤纬D(J2000)":"60.235","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.9","方位角":"45","详细描述":"faint, pretty suddenly brighter middle, stellar, 7th or 8th magnitude star 5 arcmin to northwest","简略描述":"F, psbM, stellar, * 7·8 np 5'"},{"ID":"3169","标识":"NGC3169","M标识":"NGC3169","拓展名":"","组件":"","Class":"I 4","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h14m14.7s","赤经D(J2000)":"10.237416666666666","赤纬(J2000)":"+3h28m1s","赤纬D(J2000)":"3.4669444444444446","可见光星等V":"10.2","摄影(蓝光)星等B":"11.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"4.2","短轴(分)":"2.9","方位角":"45","详细描述":"bright, pretty large, very little extended, pretty gradually much brighter middle, 11th magnitude star 80 arcsec distant at position angle 78°, 3rd of 3","简略描述":"B, pL, vlE, pgmbM, * 11, 78°, 80\", 3rd of 3"},{"ID":"3170","标识":"NGC3170","M标识":"NGC3170","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h16m14.4s","赤经D(J2000)":"10.270666666666667","赤纬(J2000)":"+46h36m45s","赤纬D(J2000)":"46.612500000000004","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"3171","标识":"NGC3171","M标识":"NGC3171","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h15m36.8s","赤经D(J2000)":"10.260222222222222","赤纬(J2000)":"-20h38m51s","赤纬D(J2000)":"-20.6475","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"176","详细描述":"extremely faint, small, round, gradually brighter middle","简略描述":"eF, S, R, gbM"},{"ID":"3172","标识":"NGC3172","M标识":"NGC3172","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"北极星系","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"11h47m14.5s","赤经D(J2000)":"11.78736111111111","赤纬(J2000)":"+89h5m37s","赤纬D(J2000)":"89.0936111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.7","方位角":"39","详细描述":"very faint, round, gradually brighter middle, 11th magnitude star 2 arcmin to south, Polarissima Borealis","简略描述":"vF, R, gbM, * 11 s 2', Polarissima Borealis"},{"ID":"3173","标识":"NGC3173","M标识":"NGC3173","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h14m35s","赤经D(J2000)":"10.243055555555555","赤纬(J2000)":"-27h41m36s","赤纬D(J2000)":"-27.693333333333335","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.1","短轴(分)":"1.7","方位角":"7","详细描述":"extremely faint, small, round, two bright stars to the east","简略描述":"eF, S, R, 2 B st f"},{"ID":"3174","标识":"NGC3174","M标识":"NGC3174","拓展名":"","组件":"","Class":"III 964","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h15m32.1s","赤经D(J2000)":"10.258916666666666","赤纬(J2000)":"+74h13m14s","赤纬D(J2000)":"74.22055555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"5","详细描述":"considerably faint, small, stellar, small star near to east [Place very questionable]","简略描述":"eF, S, stellar, S * f nr [Place??]"},{"ID":"3175","标识":"NGC3175","M标识":"NGC3175","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h14m42.3s","赤经D(J2000)":"10.245083333333332","赤纬(J2000)":"-28h52m16s","赤纬D(J2000)":"-28.871111111111112","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"5.1","短轴(分)":"1.3","方位角":"56","详细描述":"considerably bright, large, much extended 51°, very gradually a little brighter middle","简略描述":"cB, L, mE 51°, vglbM"},{"ID":"3176","标识":"NGC3176","M标识":"NGC3176","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h14m52.1s","赤经D(J2000)":"10.247805555555555","赤纬(J2000)":"-20h0m45s","赤纬D(J2000)":"-20.0125","可见光星等V":"14.2","摄影(蓝光)星等B":"14.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"15","详细描述":"extremely faint, pretty small, irregularly round, perhaps nebulous","简略描述":"eF, pS, iR, ? Neb"},{"ID":"3177","标识":"NGC3177","M标识":"NGC3177","拓展名":"","组件":"","Class":"III 25","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h16m34.1s","赤经D(J2000)":"10.27613888888889","赤纬(J2000)":"+21h7m23s","赤纬D(J2000)":"21.123055555555556","可见光星等V":"12.4","摄影(蓝光)星等B":"13","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"135","详细描述":"considerably faint, small, round, pretty suddenly brighter middle","简略描述":"cF, S, R, psbM"},{"ID":"3178","标识":"NGC3178","M标识":"NGC3178","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h16m9.4s","赤经D(J2000)":"10.269277777777779","赤纬(J2000)":"-15h47m28s","赤纬D(J2000)":"-15.79111111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"70","详细描述":"pretty bright, pretty large, gradually pretty much brighter middle","简略描述":"pB, pL, gpmbM"},{"ID":"3179","标识":"NGC3179","M标识":"NGC3179","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h17m57.2s","赤经D(J2000)":"10.299222222222221","赤纬(J2000)":"+41h6m53s","赤纬D(J2000)":"41.11472222222223","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.8","短轴(分)":"0.5","方位角":"48","详细描述":"small, round, brighter middle and nucleus, in line with 2 stars","简略描述":"S, R, bMN, in line with 2 st"},{"ID":"3180","标识":"NGC3180","M标识":"NGC3180","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"小风车星系","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h18m10.7s","赤经D(J2000)":"10.302972222222223","赤纬(J2000)":"+41h26m57s","赤纬D(J2000)":"41.44916666666666","可见光星等V":"15","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.2","短轴(分)":"","方位角":"","详细描述":"very faint, extended, (and along with NGC 3181) connected with h688","简略描述":"vF, E, connected with h 688"},{"ID":"3181","标识":"NGC3181","M标识":"NGC3181","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h18m11.5s","赤经D(J2000)":"10.303194444444445","赤纬(J2000)":"+41h24m48s","赤纬D(J2000)":"41.413333333333334","可见光星等V":"14.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.3","短轴(分)":"","方位角":"","详细描述":"very faint, extended, (and along with NGC 3180) connected with h688","简略描述":"vF, E, connected with h 688"},{"ID":"3182","标识":"NGC3182","M标识":"NGC3182","拓展名":"","组件":"","Class":"I 265","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h19m33s","赤经D(J2000)":"10.325833333333334","赤纬(J2000)":"+58h12m22s","赤纬D(J2000)":"58.20611111111111","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"155","详细描述":"considerably bright, considerably large, irregularly round, very gradually brighter middle","简略描述":"cB, cL, iR, vgbM"},{"ID":"3183","标识":"NGC3183","M标识":"NGC3183","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h21m48.6s","赤经D(J2000)":"10.3635","赤纬(J2000)":"+74h10m38s","赤纬D(J2000)":"74.17722222222223","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.3","短轴(分)":"1.4","方位角":"161","详细描述":"faint, pretty large, extended, a little brighter middle","简略描述":"F, pL, E, lbM"},{"ID":"3184","标识":"NGC3184","M标识":"NGC3184","拓展名":"","组件":"","Class":"I 168","业余排名":"5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h18m17s","赤经D(J2000)":"10.304722222222223","赤纬(J2000)":"+41h25m24s","赤纬D(J2000)":"41.42333333333333","可见光星等V":"9.8","摄影(蓝光)星等B":"10.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"7.4","短轴(分)":"6.9","方位角":"135","详细描述":"very faint, extended, (and along with NGC 3181) connected with h688","简略描述":"pB, vL, R, vgbM"},{"ID":"3185","标识":"NGC3185","M标识":"NGC3185","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"狮子座四重星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h17m38.4s","赤经D(J2000)":"10.294","赤纬(J2000)":"+21h41m19s","赤纬D(J2000)":"21.68861111111111","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.1","短轴(分)":"1.4","方位角":"130","详细描述":"pretty faint, pretty large, gradually much brighter middle","简略描述":"pF, pL, gmbM"},{"ID":"3186","标识":"NGC3186","M标识":"NGC3186","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h15m53.4s","赤经D(J2000)":"10.264833333333334","赤纬(J2000)":"+6h57m52s","赤纬D(J2000)":"6.964444444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"pretty faint, very small, gradually brighter middle, several faint stars near","简略描述":"pF, vS, gbM, sev F st nr"},{"ID":"3187","标识":"NGC3187","M标识":"NGC3187","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"狮子座四重星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h17m47.7s","赤经D(J2000)":"10.296583333333333","赤纬(J2000)":"+21h52m26s","赤纬D(J2000)":"21.87388888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"13.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"3.6","短轴(分)":"1.6","方位角":"57","详细描述":"very faint, extended","简略描述":"vF, E"},{"ID":"3188","标识":"NGC3188","M标识":"NGC3188","拓展名":"","组件":"","Class":"III 910","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h19m42.9s","赤经D(J2000)":"10.328583333333333","赤纬(J2000)":"+57h25m23s","赤纬D(J2000)":"57.42305555555555","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"168","详细描述":"very faint, pretty large, mottled but not resolved","简略描述":"vF, pL, r"},{"ID":"3189","标识":"NGC3189","M标识":"NGC3189","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"NGC3190星系群","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h18m4.2s","赤经D(J2000)":"10.301166666666667","赤纬(J2000)":"+21h49m56s","赤纬D(J2000)":"21.83222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very very faint, much extended, parallel to h692","简略描述":"vvF, mE, parallel to h 692"},{"ID":"3190","标识":"NGC3190","M标识":"NGC3190","拓展名":"","组件":"","Class":"II 44","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h18m5.6s","赤经D(J2000)":"10.301555555555556","赤纬(J2000)":"+21h49m58s","赤纬D(J2000)":"21.83277777777778","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"4.4","短轴(分)":"1.5","方位角":"125","详细描述":"very faint, extended","简略描述":"B, pS, E, psbMN"},{"ID":"3191","标识":"NGC3191","M标识":"NGC3191","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h19m5.1s","赤经D(J2000)":"10.318083333333334","赤纬(J2000)":"+46h27m18s","赤纬D(J2000)":"46.455000000000005","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"5","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"3192","标识":"NGC3192","M标识":"NGC3192","拓展名":"","组件":"","Class":"III 704","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h19m5.1s","赤经D(J2000)":"10.318083333333334","赤纬(J2000)":"+46h27m18s","赤纬D(J2000)":"46.455000000000005","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"5","详细描述":"faint, small, round, brighter middle","简略描述":"eF, vS, (?=h 691)"},{"ID":"3193","标识":"NGC3193","M标识":"NGC3193","拓展名":"","组件":"","Class":"II 45","业余排名":"6","中文名":"狮子座四重星系","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h18m24.8s","赤经D(J2000)":"10.30688888888889","赤纬(J2000)":"+21h53m38s","赤纬D(J2000)":"21.89388888888889","可见光星等V":"10.9","摄影(蓝光)星等B":"11.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2","短轴(分)":"2","方位角":"","详细描述":"very faint, extended","简略描述":"B, S, vlE, pslbM, * 9.5 354°, 80\""},{"ID":"3194","标识":"NGC3194","M标识":"NGC3194","拓展名":"","组件":"","Class":"III 965","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h17m39.7s","赤经D(J2000)":"10.294361111111112","赤纬(J2000)":"+74h20m52s","赤纬D(J2000)":"74.34777777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1","短轴(分)":"0.5","方位角":"41","详细描述":"very faint, small, round","简略描述":"vF, vS, [Place ??]"},{"ID":"3195","标识":"NGC3195","M标识":"NGC3195","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"堰蜓座","星座(En)":"CHA","赤经(J2000)":"10h9m21.1s","赤经D(J2000)":"10.155861111111111","赤纬(J2000)":"-80h51m29s","赤纬D(J2000)":"-80.85805555555555","可见光星等V":"11.6","摄影(蓝光)星等B":"11.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"","详细描述":"a remarkable object, a planetary nebula, pretty bright, small, a little extended, 13 arcsec diameter, 3 small (faint) stars near","简略描述":"! planetary, pB, S, lE, 13s d, 3 S st nr"},{"ID":"3196","标识":"NGC3196","M标识":"NGC3196","拓展名":"","组件":"","Class":"III 348","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h18m49s","赤经D(J2000)":"10.313611111111111","赤纬(J2000)":"+27h40m10s","赤纬D(J2000)":"27.669444444444444","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"115","详细描述":"most extremely faint, pretty small, a little extended","简略描述":"eeF, pS, lE"},{"ID":"3197","标识":"NGC3197","M标识":"NGC3197","拓展名":"","组件":"","Class":"III 966","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h14m27.3s","赤经D(J2000)":"10.240916666666665","赤纬(J2000)":"+77h49m13s","赤纬D(J2000)":"77.82027777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"1","方位角":"155","详细描述":"very faint, very small [Place very questionable]","简略描述":"vF, vS, [Place ??]"},{"ID":"3198","标识":"NGC3198","M标识":"NGC3198","拓展名":"","组件":"","Class":"I 199","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h19m54.9s","赤经D(J2000)":"10.331916666666666","赤纬(J2000)":"+45h33m0s","赤纬D(J2000)":"45.55","可见光星等V":"10.3","摄影(蓝光)星等B":"10.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"8.5","短轴(分)":"3.3","方位角":"35","详细描述":"pretty bright, very large, much extended 45°, very gradually brighter middle","简略描述":"pB, vL, mE 45°, vgbM"},{"ID":"3199","标识":"NGC3199","M标识":"NGC3199","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"10h17m24s","赤经D(J2000)":"10.29","赤纬(J2000)":"-57h55m18s","赤纬D(J2000)":"-57.92166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"15","方位角":"","详细描述":"a remarkable object, very bright, very large, falcate, double star involved","简略描述":"! vB, vL, falcate, D * inv"},{"ID":"3200","标识":"NGC3200","M标识":"NGC3200","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h18m36.4s","赤经D(J2000)":"10.310111111111112","赤纬(J2000)":"-17h58m56s","赤纬D(J2000)":"-17.98222222222222","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"4.2","短轴(分)":"1.3","方位角":"169","详细描述":"pretty bright, extended 160°, brighter middle and nucleus","简略描述":"pB, E 160°, bMN"},{"ID":"3201","标识":"NGC3201","M标识":"NGC3201","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"X","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"10h17m36.8s","赤经D(J2000)":"10.293555555555555","赤纬(J2000)":"-46h24m38s","赤纬D(J2000)":"-46.410555555555554","可见光星等V":"6.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"globular cluster, very large, irregularly round, a little compressed middle, stars from 13th to 16th magnitude","简略描述":"globular, vL, iR, lCM, st 13…16"},{"ID":"3202","标识":"NGC3202","M标识":"NGC3202","拓展名":"","组件":"","Class":"II 720","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h20m31.6s","赤经D(J2000)":"10.342111111111112","赤纬(J2000)":"+43h1m17s","赤纬D(J2000)":"43.021388888888886","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"20","详细描述":"considerably faint, small, round, very gradually brighter middle, 1st of 3","简略描述":"cF, S, R, vgbM, 1st of 3"},{"ID":"3203","标识":"NGC3203","M标识":"NGC3203","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h19m33.6s","赤经D(J2000)":"10.326","赤纬(J2000)":"-26h41m56s","赤纬D(J2000)":"-26.698888888888888","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.8","短轴(分)":"0.6","方位角":"58","详细描述":"pretty bright, small, considerably extended, gradually brighter middle","简略描述":"pB, S, cE, gbM"},{"ID":"3204","标识":"NGC3204","M标识":"NGC3204","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h20m11.2s","赤经D(J2000)":"10.336444444444446","赤纬(J2000)":"+27h49m2s","赤纬D(J2000)":"27.81722222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"110","详细描述":"extremely faint, pretty large, gradually brighter middle","简略描述":"eF, pL, gbM"},{"ID":"3205","标识":"NGC3205","M标识":"NGC3205","拓展名":"","组件":"","Class":"II 721","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h20m50s","赤经D(J2000)":"10.347222222222223","赤纬(J2000)":"+42h58m18s","赤纬D(J2000)":"42.97166666666667","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"166","详细描述":"considerably faint, small, round, very gradually brighter middle, 2nd of 3","简略描述":"cF, S, R, vgbM, 2nd of 3"},{"ID":"3206","标识":"NGC3206","M标识":"NGC3206","拓展名":"","组件":"","Class":"I 266","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h21m47.6s","赤经D(J2000)":"10.363222222222221","赤纬(J2000)":"+56h55m51s","赤纬D(J2000)":"56.93083333333333","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.9","短轴(分)":"1.9","方位角":"0","详细描述":"pretty bright, considerably large, extended, very gradually little brighter middle","简略描述":"pB, cL, E, vglbM"},{"ID":"3207","标识":"NGC3207","M标识":"NGC3207","拓展名":"","组件":"","Class":"II 722","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h21m0.5s","赤经D(J2000)":"10.350138888888889","赤纬(J2000)":"+42h59m9s","赤纬D(J2000)":"42.98583333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"97","详细描述":"considerably faint, small, round, stellar, 3rd of 3","简略描述":"cF, S, R, stellar, 3rd of 3"},{"ID":"3208","标识":"NGC3208","M标识":"NGC3208","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h19m41.4s","赤经D(J2000)":"10.328166666666666","赤纬(J2000)":"-25h48m52s","赤纬D(J2000)":"-25.814444444444444","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"20","详细描述":"extremely faint, pretty large, irregularly round, gradually brighter middle","简略描述":"eF, pL, iR, gbM"},{"ID":"3209","标识":"NGC3209","M标识":"NGC3209","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h20m38.5s","赤经D(J2000)":"10.344027777777779","赤纬(J2000)":"+25h30m17s","赤纬D(J2000)":"25.504722222222224","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"80","详细描述":"faint, small, round, has a star","简略描述":"F, S, R, has a *"},{"ID":"3210","标识":"NGC3210","M标识":"NGC3210","拓展名":"","组件":"","Class":"III 979","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h27m59.2s","赤经D(J2000)":"10.466444444444443","赤纬(J2000)":"+79h49m59s","赤纬D(J2000)":"79.83305555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"stellar, 1st of 3 in line, 1 arcmin apart","简略描述":"Stellar, 1st of 3 in line, 1' apart"},{"ID":"3211","标识":"NGC3211","M标识":"NGC3211","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"10h17m50.4s","赤经D(J2000)":"10.297333333333333","赤纬(J2000)":"-62h40m12s","赤纬D(J2000)":"-62.669999999999995","可见光星等V":"10.7","摄影(蓝光)星等B":"11.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.32","短轴(分)":"","方位角":"","详细描述":"planetary = a 10th magnitude star, round, among 150 stars","简略描述":"planetary = * 10, R, am 150 st"},{"ID":"3212","标识":"NGC3212","M标识":"NGC3212","拓展名":"","组件":"","Class":"III 980","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h28m16.4s","赤经D(J2000)":"10.471222222222222","赤纬(J2000)":"+79h49m26s","赤纬D(J2000)":"79.82388888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"92","详细描述":"very faint, small, 2nd of 3","简略描述":"vF, S, 2nd of 3"},{"ID":"3213","标识":"NGC3213","M标识":"NGC3213","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h21m17.4s","赤经D(J2000)":"10.354833333333334","赤纬(J2000)":"+19h39m6s","赤纬D(J2000)":"19.651666666666664","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.8","方位角":"133","详细描述":"very faint, very small, round, mottled but not resolved","简略描述":"vF, vS, R, r"},{"ID":"3214","标识":"NGC3214","M标识":"NGC3214","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h23m8.7s","赤经D(J2000)":"10.38575","赤纬(J2000)":"+57h2m20s","赤纬D(J2000)":"57.038888888888884","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"39","详细描述":"considerably bright, very small, round, suddenly brighter middle, 5 arcmin to west of III 911","简略描述":"cB, vS, R, sbM, 5' p III 911"},{"ID":"3215","标识":"NGC3215","M标识":"NGC3215","拓展名":"","组件":"","Class":"III 981","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h28m40.8s","赤经D(J2000)":"10.478","赤纬(J2000)":"+79h48m45s","赤纬D(J2000)":"79.8125","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"1","方位角":"52","详细描述":"very faint, small, 2nd of 3","简略描述":"vF, S, 3rd of 3"},{"ID":"3216","标识":"NGC3216","M标识":"NGC3216","拓展名":"","组件":"","Class":"III 330","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h21m41.2s","赤经D(J2000)":"10.361444444444444","赤纬(J2000)":"+23h55m24s","赤纬D(J2000)":"23.923333333333336","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"1","方位角":"0","详细描述":"very faint, pretty small, round, brighter middle","简略描述":"vF, pS, R, bM"},{"ID":"3217","标识":"NGC3217","M标识":"NGC3217","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h23m32.6s","赤经D(J2000)":"10.392388888888888","赤纬(J2000)":"+10h57m35s","赤纬D(J2000)":"10.959722222222222","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"30","详细描述":"very faint disc","简略描述":"vF disc"},{"ID":"3218","标识":"NGC3218","M标识":"NGC3218","拓展名":"","组件":"","Class":"I 283","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h21m48.6s","赤经D(J2000)":"10.3635","赤纬(J2000)":"+74h10m38s","赤纬D(J2000)":"74.17722222222223","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.3","短轴(分)":"1.4","方位角":"161","详细描述":"considerably bright, considerably large, extremely mottled but not resolved (place very questionable)","简略描述":"cB, cL, er [Place ??]"},{"ID":"3219","标识":"NGC3219","M标识":"NGC3219","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h22m37.4s","赤经D(J2000)":"10.377055555555556","赤纬(J2000)":"+38h34m47s","赤纬D(J2000)":"38.57972222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"60","详细描述":"extremely faint, small, round, a little brighter middle","简略描述":"eF, S, R, lbM"},{"ID":"3220","标识":"NGC3220","M标识":"NGC3220","拓展名":"","组件":"","Class":"III 911","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h23m44.7s","赤经D(J2000)":"10.39575","赤纬(J2000)":"+57h1m36s","赤纬D(J2000)":"57.026666666666664","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"97","详细描述":"pretty faint, considerably large, extended 92°, 9th magnitude star 9.5 arcmin to east","简略描述":"pF, cL, E 92°, * 9 f 9'.5"},{"ID":"3221","标识":"NGC3221","M标识":"NGC3221","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h22m20.2s","赤经D(J2000)":"10.372277777777779","赤纬(J2000)":"+21h34m8s","赤纬D(J2000)":"21.56888888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3.1","短轴(分)":"0.7","方位角":"167","详细描述":"extremely faint, much extended, with ray","简略描述":"eF, mE, ray"},{"ID":"3222","标识":"NGC3222","M标识":"NGC3222","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h22m34.4s","赤经D(J2000)":"10.376222222222223","赤纬(J2000)":"+19h53m12s","赤纬D(J2000)":"19.886666666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"1","方位角":"51","详细描述":"faint, a little brighter middle, partially resolved with some stars seen (per Schultz, binuclear), Auwers 27","简略描述":"F, lbM, rr (Schultz, bi N), Auw 27"},{"ID":"3223","标识":"NGC3223","M标识":"NGC3223","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h21m34.8s","赤经D(J2000)":"10.359666666666666","赤纬(J2000)":"-34h16m1s","赤纬D(J2000)":"-34.26694444444444","可见光星等V":"11","摄影(蓝光)星等B":"11.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"4.1","短轴(分)":"2.7","方位角":"135","详细描述":"pretty bright, very large, very little extended, pretty suddenly a little brighter middle and nucleus","简略描述":"pB, vL, vlE, pslbMN"},{"ID":"3224","标识":"NGC3224","M标识":"NGC3224","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h21m41.1s","赤经D(J2000)":"10.361416666666667","赤纬(J2000)":"-34h41m46s","赤纬D(J2000)":"-34.69611111111111","可见光星等V":"11","摄影(蓝光)星等B":"12","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"133","详细描述":"very faint, pretty small, round, very gradually much brighter middle","简略描述":"vF, pS, R, vgmbM"},{"ID":"3225","标识":"NGC3225","M标识":"NGC3225","拓展名":"","组件":"","Class":"II 882","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h25m9.9s","赤经D(J2000)":"10.419416666666667","赤纬(J2000)":"+58h8m59s","赤纬D(J2000)":"58.14972222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2","短轴(分)":"1","方位角":"155","详细描述":"considerably faint, pretty large, a little extended, very gradually brighter middle","简略描述":"cF, pL, lE, vgbM"},{"ID":"3226","标识":"NGC3226","M标识":"NGC3226","拓展名":"","组件":"","Class":"II 28","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h23m26.9s","赤经D(J2000)":"10.390805555555556","赤纬(J2000)":"+19h53m51s","赤纬D(J2000)":"19.8975","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.8","短轴(分)":"2","方位角":"29","详细描述":"pretty bright, considerably large, round, double nebula (with 3227), separation 138 arcsec at position angle 159°","简略描述":"pB, cL, R, D neb, 159°, 138\""},{"ID":"3227","标识":"NGC3227","M标识":"NGC3227","拓展名":"","组件":"","Class":"II 29","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h23m30.4s","赤经D(J2000)":"10.391777777777778","赤纬(J2000)":"+19h51m55s","赤纬D(J2000)":"19.86527777777778","可见光星等V":"10.3","摄影(蓝光)星等B":"11.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4.1","短轴(分)":"3.9","方位角":"150","详细描述":"pretty bright, considerably large, round, double nebula (with 3227), separation 138 arcsec at position angle 159°","简略描述":"pB, cL, R, D neb, 159°, 138\""},{"ID":"3228","标识":"NGC3228","M标识":"NGC3228","拓展名":"","组件":"","Class":"","业余排名":"4","中文名":"女王的私藏星团","类型":"OCL","含重复类型":"OCL","形态":"I1p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"10h21m22s","赤经D(J2000)":"10.35611111111111","赤纬(J2000)":"-51h43m42s","赤纬D(J2000)":"-51.72833333333333","可见光星等V":"6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"cluster, nine large and a few small stars","简略描述":"Cl, 9 L and a few S st"},{"ID":"3229","标识":"NGC3229","M标识":"NGC3229","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h23m24.6s","赤经D(J2000)":"10.390166666666666","赤纬(J2000)":"+0h3m56s","赤纬D(J2000)":"0.06555555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint","简略描述":"F"},{"ID":"3230","标识":"NGC3230","M标识":"NGC3230","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h23m44s","赤经D(J2000)":"10.395555555555555","赤纬(J2000)":"+12h34m3s","赤纬D(J2000)":"12.567499999999999","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.3","短轴(分)":"1.1","方位角":"115","详细描述":"pretty faint, pretty small, suddenly brighter middle equal to a 14th magnitude star, 9th to 10th magnitude star 19 arcsec to south","简略描述":"pF, pS, sbM * 14, * 9·10 s 19\""},{"ID":"3231","标识":"NGC3231","M标识":"NGC3231","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h26m57.8s","赤经D(J2000)":"10.449388888888889","赤纬(J2000)":"+66h48m45s","赤纬D(J2000)":"66.8125","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"cluster, considerably large, poor, a little compressed, stars from 10th to 12th magnitude","简略描述":"Cl, cL, P, lC, st 10…12"},{"ID":"3232","标识":"NGC3232","M标识":"NGC3232","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h24m24.4s","赤经D(J2000)":"10.406777777777778","赤纬(J2000)":"+28h1m42s","赤纬D(J2000)":"28.028333333333332","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, 11th magnitude star 150 arcsec to west and a little south, preceding (western) of 2","简略描述":"eF, * 11 p 150\", ls, p of 2"},{"ID":"3233","标识":"NGC3233","M标识":"NGC3233","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h21m57.5s","赤经D(J2000)":"10.365972222222222","赤纬(J2000)":"-22h16m4s","赤纬D(J2000)":"-22.267777777777777","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"0.9","方位角":"140","详细描述":"extremely faint, pretty large, irregular figure, stellar nucleus","简略描述":"eF, pL, iF, stell N"},{"ID":"3234","标识":"NGC3234","M标识":"NGC3234","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h24m59.3s","赤经D(J2000)":"10.416472222222222","赤纬(J2000)":"+28h1m27s","赤纬D(J2000)":"28.024166666666666","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"85","详细描述":"pretty bright, pretty small, round, pretty suddenly bright middle (perhaps = 2095)","简略描述":"pB, pS, R, psbM (? = 2095)"},{"ID":"3235","标识":"NGC3235","M标识":"NGC3235","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h24m59.3s","赤经D(J2000)":"10.416472222222222","赤纬(J2000)":"+28h1m27s","赤纬D(J2000)":"28.024166666666666","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"85","详细描述":"pretty bright, pretty small, round, pretty suddenly bright middle (perhaps = 2095)","简略描述":"F, S, f of 2"},{"ID":"3236","标识":"NGC3236","M标识":"NGC3236","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h26m48.4s","赤经D(J2000)":"10.446777777777777","赤纬(J2000)":"+61h16m24s","赤纬D(J2000)":"61.27333333333333","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"48","详细描述":"extremely faint, very small, pretty suddenly bright middle, two stars 11th to 12th magnitude to east","简略描述":"eF, vS, psbM, 2 st 11·12 f"},{"ID":"3237","标识":"NGC3237","M标识":"NGC3237","拓展名":"","组件":"","Class":"III 631","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h25m43.4s","赤经D(J2000)":"10.428722222222222","赤纬(J2000)":"+39h38m50s","赤纬D(J2000)":"39.64722222222222","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"very faint, very small, round, pretty gradually brighter middle","简略描述":"vF, vS, R, pgbM"},{"ID":"3238","标识":"NGC3238","M标识":"NGC3238","拓展名":"","组件":"","Class":"II 883","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h26m42.9s","赤经D(J2000)":"10.44525","赤纬(J2000)":"+57h13m34s","赤纬D(J2000)":"57.226111111111116","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"132","详细描述":"faint, small, round, pretty suddenly little brighter middle","简略描述":"F, S, R, pslbM"},{"ID":"3239","标识":"NGC3239","M标识":"NGC3239","拓展名":"","组件":"","Class":"IV 10","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm\/P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h25m5.5s","赤经D(J2000)":"10.418194444444444","赤纬(J2000)":"+17h9m37s","赤纬D(J2000)":"17.160277777777775","可见光星等V":"11.3","摄影(蓝光)星等B":"11.7","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"4.5","短轴(分)":"2.4","方位角":"81","详细描述":"very faint, 9th magnitude star involved near middle","简略描述":"vF, * 9 inv nr M"},{"ID":"3240","标识":"NGC3240","M标识":"NGC3240","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h24m30.9s","赤经D(J2000)":"10.408583333333334","赤纬(J2000)":"-21h47m29s","赤纬D(J2000)":"-21.79138888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"1","方位角":"78","详细描述":"extremely faint, small, round, star near","简略描述":"eF, S, R, * nr"},{"ID":"3241","标识":"NGC3241","M标识":"NGC3241","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h24m17s","赤经D(J2000)":"10.404722222222222","赤纬(J2000)":"-32h29m0s","赤纬D(J2000)":"-32.483333333333334","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.4","短轴(分)":"1.6","方位角":"123","详细描述":"faint, pretty much extended, gradually a little brighter middle, 11th magnitude star to northwest","简略描述":"F, pmE, glbM, * 11 np"},{"ID":"3242","标识":"NGC3242","M标识":"NGC3242","拓展名":"","组件":"","Class":"IV 27","业余排名":"2","中文名":"木魂星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h24m46.1s","赤经D(J2000)":"10.412805555555556","赤纬(J2000)":"-18h38m31s","赤纬D(J2000)":"-18.641944444444444","可见光星等V":"7.7","摄影(蓝光)星等B":"8.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.07","短轴(分)":"","方位角":"","详细描述":"a remarkable planetary, very bright, a little extended 147°, 45 arcsec diameter, blue","简略描述":"! planetary, vB, lE 147°, 45\" d, blue"},{"ID":"3243","标识":"NGC3243","M标识":"NGC3243","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h26m21.3s","赤经D(J2000)":"10.43925","赤纬(J2000)":"-2h37m20s","赤纬D(J2000)":"-2.6222222222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"125","详细描述":"very faint, small, a little extended, between 2 stars","简略描述":"vF, S, lE, bet 2 st"},{"ID":"3244","标识":"NGC3244","M标识":"NGC3244","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h25m28.8s","赤经D(J2000)":"10.424666666666665","赤纬(J2000)":"-39h49m40s","赤纬D(J2000)":"-39.82777777777778","可见光星等V":"12.3","摄影(蓝光)星等B":"12.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.1","短轴(分)":"1.8","方位角":"170","详细描述":"very faint, 11th magnitude star 90 arcsec to north","简略描述":"vF, * 11 n 90\""},{"ID":"3245","标识":"NGC3245","M标识":"NGC3245","拓展名":"","组件":"","Class":"I 86","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h27m18.2s","赤经D(J2000)":"10.455055555555555","赤纬(J2000)":"+28h30m28s","赤纬D(J2000)":"28.50777777777778","可见光星等V":"10.8","摄影(蓝光)星等B":"11.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"3.2","短轴(分)":"1.8","方位角":"177","详细描述":"very bright, pretty large, extended 0°, suddenly much brighter middle and extended nucleus","简略描述":"vB, pL, E 0°, smbMEN"},{"ID":"3246","标识":"NGC3246","M标识":"NGC3246","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h26m41.9s","赤经D(J2000)":"10.444972222222223","赤纬(J2000)":"+3h51m45s","赤纬D(J2000)":"3.8625000000000003","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.4","短轴(分)":"1.4","方位角":"100","详细描述":"extremely faint, small, round, making a triangle with two stars, 6th magnitude star 8 arcmin distant at position angle 300°","简略描述":"eF, S, R, 2 st Δ, * 6, 300°, 8'"},{"ID":"3247","标识":"NGC3247","M标识":"NGC3247","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"10h24m12s","赤经D(J2000)":"10.403333333333334","赤纬(J2000)":"-57h45m48s","赤纬D(J2000)":"-57.763333333333335","可见光星等V":"7.6","摄影(蓝光)星等B":"8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"stars involved in a nebula","简略描述":"st inv in neb"},{"ID":"3248","标识":"NGC3248","M标识":"NGC3248","拓展名":"","组件":"","Class":"II 347","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h27m45.3s","赤经D(J2000)":"10.462583333333333","赤纬(J2000)":"+22h50m51s","赤纬D(J2000)":"22.8475","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.5","短轴(分)":"1.1","方位角":"135","详细描述":"pretty bright, small, round, pretty suddenly bright middle","简略描述":"pB, S, R, psbM"},{"ID":"3249","标识":"NGC3249","M标识":"NGC3249","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h26m22s","赤经D(J2000)":"10.439444444444444","赤纬(J2000)":"-34h57m50s","赤纬D(J2000)":"-34.96388888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"139","详细描述":"extremely faint, pretty large, round, very gradually very little brighter middle","简略描述":"eF, pL, R, vgvlbM"},{"ID":"3250","标识":"NGC3250","M标识":"NGC3250","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h26m32.1s","赤经D(J2000)":"10.44225","赤纬(J2000)":"-39h56m37s","赤纬D(J2000)":"-39.94361111111111","可见光星等V":"11.1","摄影(蓝光)星等B":"12.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.7","短轴(分)":"2","方位角":"148","详细描述":"pretty bright, pretty large, round, very gradually then pretty suddenly bright middle, 13th magnitude star at position angle of 45°","简略描述":"pB, pL, R, vgpsbM, * 13, 45°"},{"ID":"3251","标识":"NGC3251","M标识":"NGC3251","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h29m16.5s","赤经D(J2000)":"10.487916666666665","赤纬(J2000)":"+26h5m56s","赤纬D(J2000)":"26.098888888888887","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2","短轴(分)":"0.4","方位角":"55","详细描述":"very faint, pretty large, 3 bight stars to southwest","简略描述":"vF, pL, 3 B st sp"},{"ID":"3252","标识":"NGC3252","M标识":"NGC3252","拓展名":"","组件":"","Class":"III 316","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h34m22.3s","赤经D(J2000)":"10.572861111111111","赤纬(J2000)":"+73h45m50s","赤纬D(J2000)":"73.76388888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.9","短轴(分)":"0.6","方位角":"35","详细描述":"extremely faint, pretty small, much extended, mottled but not resolved","简略描述":"eF, pS, mE, r"},{"ID":"3253","标识":"NGC3253","M标识":"NGC3253","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h28m27.3s","赤经D(J2000)":"10.47425","赤纬(J2000)":"+12h42m14s","赤纬D(J2000)":"12.703888888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"45","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"3254","标识":"NGC3254","M标识":"NGC3254","拓展名":"","组件":"","Class":"I 72","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h29m19.9s","赤经D(J2000)":"10.48886111111111","赤纬(J2000)":"+29h29m32s","赤纬D(J2000)":"29.492222222222225","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"4.5","短轴(分)":"1.4","方位角":"46","详细描述":"considerably bright, large, much extended 45°, pretty suddenly much brighter middle and nucleus","简略描述":"cB, L, mE 45°, psmbMN"},{"ID":"3255","标识":"NGC3255","M标识":"NGC3255","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"10h26m31.3s","赤经D(J2000)":"10.442027777777778","赤纬(J2000)":"-60h40m42s","赤纬D(J2000)":"-60.67833333333333","可见光星等V":"11","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty small, very compressed, stars of 15th magnitude","简略描述":"Cl, pS, vC, st 15"},{"ID":"3256","标识":"NGC3256","M标识":"NGC3256","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"10h27m51.4s","赤经D(J2000)":"10.464277777777777","赤纬(J2000)":"-43h54m19s","赤纬D(J2000)":"-43.905277777777776","可见光星等V":"11.5","摄影(蓝光)星等B":"12.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.8","短轴(分)":"2.1","方位角":"85","详细描述":"considerably bright, small, round, gradually much brighter middle","简略描述":"cB, S, R, gmbM"},{"ID":"3257","标识":"NGC3257","M标识":"NGC3257","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h28m47s","赤经D(J2000)":"10.479722222222222","赤纬(J2000)":"-35h39m29s","赤纬D(J2000)":"-35.658055555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.9","方位角":"0","详细描述":"very faint, very small, round, pretty suddenly brighter middle, 1st of 4","简略描述":"vF, vS, R, psbM, 1st of 4"},{"ID":"3258","标识":"NGC3258","M标识":"NGC3258","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h28m53.4s","赤经D(J2000)":"10.4815","赤纬(J2000)":"-35h36m18s","赤纬D(J2000)":"-35.605000000000004","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.9","短轴(分)":"2.5","方位角":"75","详细描述":"considerably faint, small, round, pretty suddenly a little brighter middle, 2nd of 4","简略描述":"cF, S, R, pslbM, 2nd of 4"},{"ID":"3259","标识":"NGC3259","M标识":"NGC3259","拓展名":"","组件":"","Class":"II 870","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h32m34.5s","赤经D(J2000)":"10.542916666666667","赤纬(J2000)":"+65h2m28s","赤纬D(J2000)":"65.0411111111111","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"20","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"3260","标识":"NGC3260","M标识":"NGC3260","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h29m6.1s","赤经D(J2000)":"10.485027777777777","赤纬(J2000)":"-35h35m45s","赤纬D(J2000)":"-35.59583333333334","可见光星等V":"12.6","摄影(蓝光)星等B":"13.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"2","详细描述":"very very faint, very small, round, pretty suddenly a little brighter middle, 3rd of 4","简略描述":"vvF, vS, R, pslbM, 3rd of 4"},{"ID":"3261","标识":"NGC3261","M标识":"NGC3261","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"10h29m1.4s","赤经D(J2000)":"10.483722222222221","赤纬(J2000)":"-44h39m27s","赤纬D(J2000)":"-44.6575","可见光星等V":"11.2","摄影(蓝光)星等B":"12","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.5","短轴(分)":"2.8","方位角":"85","详细描述":"faint, small, round, among stars","简略描述":"F, S, R, am st"},{"ID":"3262","标识":"NGC3262","M标识":"NGC3262","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"10h29m6.1s","赤经D(J2000)":"10.485027777777777","赤纬(J2000)":"-44h9m36s","赤纬D(J2000)":"-44.16","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"108","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"3263","标识":"NGC3263","M标识":"NGC3263","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"10h29m13.3s","赤经D(J2000)":"10.487027777777778","赤纬(J2000)":"-44h7m22s","赤纬D(J2000)":"-44.12277777777778","可见光星等V":"11.9","摄影(蓝光)星等B":"12.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"5.1","短轴(分)":"1.4","方位角":"103","详细描述":"faint, small, much extended 280°, pretty suddenly brighter middle","简略描述":"F, S, mE 280°, psbM"},{"ID":"3264","标识":"NGC3264","M标识":"NGC3264","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h32m19.9s","赤经D(J2000)":"10.53886111111111","赤纬(J2000)":"+56h5m2s","赤纬D(J2000)":"56.08388888888889","可见光星等V":"12","摄影(蓝光)星等B":"12.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.9","短轴(分)":"1.2","方位角":"177","详细描述":"extremely faint, between 2 small (faint) stars","简略描述":"eF, bet 2 S st"},{"ID":"3265","标识":"NGC3265","M标识":"NGC3265","拓展名":"","组件":"","Class":"III 349","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h31m6.8s","赤经D(J2000)":"10.518555555555556","赤纬(J2000)":"+28h47m49s","赤纬D(J2000)":"28.796944444444446","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"73","详细描述":"pretty faint, small, round, pretty suddenly brighter middle, star to southeast","简略描述":"pF, S, R, psbM, * sf"},{"ID":"3266","标识":"NGC3266","M标识":"NGC3266","拓展名":"","组件":"","Class":"II 871","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h33m17.6s","赤经D(J2000)":"10.55488888888889","赤纬(J2000)":"+64h44m59s","赤纬D(J2000)":"64.74972222222222","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"105","详细描述":"considerably faint, very small, round, pretty suddenly much brighter middle like a star","简略描述":"cF, vS, R, psmbM *"},{"ID":"3267","标识":"NGC3267","M标识":"NGC3267","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h29m48.5s","赤经D(J2000)":"10.496805555555556","赤纬(J2000)":"-35h19m22s","赤纬D(J2000)":"-35.32277777777778","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.7","短轴(分)":"1","方位角":"148","详细描述":"extremely faint, very small, round, 1st of 4","简略描述":"eF, vS, R, 1st of 4"},{"ID":"3268","标识":"NGC3268","M标识":"NGC3268","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h30m0.3s","赤经D(J2000)":"10.500083333333333","赤纬(J2000)":"-35h19m32s","赤纬D(J2000)":"-35.32555555555556","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3","短轴(分)":"2.5","方位角":"46","详细描述":"faint, small, round, 2nd of 4","简略描述":"F, S, R, 2nd of 4"},{"ID":"3269","标识":"NGC3269","M标识":"NGC3269","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h29m57s","赤经D(J2000)":"10.499166666666666","赤纬(J2000)":"-35h13m26s","赤纬D(J2000)":"-35.223888888888894","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.4","短轴(分)":"1.1","方位角":"8","详细描述":"faint, small, round, brighter middle, 3rd of 4","简略描述":"F, S, R, bM, 3rd of 4"},{"ID":"3270","标识":"NGC3270","M标识":"NGC3270","拓展名":"","组件":"","Class":"III 331","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h31m30s","赤经D(J2000)":"10.525","赤纬(J2000)":"+24h52m10s","赤纬D(J2000)":"24.869444444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3.1","短轴(分)":"0.8","方位角":"10","详细描述":"considerably faint, very small, extended, gradually a little brighter middle","简略描述":"cF, vS, E, glbM"},{"ID":"3271","标识":"NGC3271","M标识":"NGC3271","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h30m26.5s","赤经D(J2000)":"10.507361111111111","赤纬(J2000)":"-35h21m36s","赤纬D(J2000)":"-35.36","可见光星等V":"11.8","摄影(蓝光)星等B":"12.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.3","短轴(分)":"1.8","方位角":"106","详细描述":"pretty faint, small, extended, pretty much brighter middle, 4th of 4","简略描述":"pF, S, E, pmbM, 4th of 4"},{"ID":"3272","标识":"NGC3272","M标识":"NGC3272","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h31m48.1s","赤经D(J2000)":"10.530027777777779","赤纬(J2000)":"+28h28m10s","赤纬D(J2000)":"28.46944444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregularly round, h 721 to northeast","简略描述":"F, vS, iR, h 721 nf"},{"ID":"3273","标识":"NGC3273","M标识":"NGC3273","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h30m29s","赤经D(J2000)":"10.508055555555556","赤纬(J2000)":"-35h36m40s","赤纬D(J2000)":"-35.611111111111114","可见光星等V":"12.5","摄影(蓝光)星等B":"13.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"97","详细描述":"very faint, very small, round, pretty suddenly a little brighter middle, 4th of 4","简略描述":"vF, vS, R, pslbM, 4th of 4"},{"ID":"3274","标识":"NGC3274","M标识":"NGC3274","拓展名":"","组件":"","Class":"II 358","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h32m17.1s","赤经D(J2000)":"10.538083333333333","赤纬(J2000)":"+27h40m8s","赤纬D(J2000)":"27.66888888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2","短轴(分)":"1.1","方位角":"100","详细描述":"faint, pretty large, round, gradually a little brighter middle, double star to east","简略描述":"F, pL, R, glbM, D * f"},{"ID":"3275","标识":"NGC3275","M标识":"NGC3275","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h30m51.7s","赤经D(J2000)":"10.51436111111111","赤纬(J2000)":"-36h44m13s","赤纬D(J2000)":"-36.73694444444445","可见光星等V":"11.8","摄影(蓝光)星等B":"12.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.8","短轴(分)":"2.1","方位角":"121","详细描述":"faint, large, very little extended, pretty suddenly a little brighter middle","简略描述":"F, L, vlE, pslbM"},{"ID":"3276","标识":"NGC3276","M标识":"NGC3276","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h31m9.1s","赤经D(J2000)":"10.519194444444445","赤纬(J2000)":"-39h56m42s","赤纬D(J2000)":"-39.94499999999999","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.6","方位角":"74","详细描述":"faint, small, 8th magnitude star to west","简略描述":"F, S, * 8 p"},{"ID":"3277","标识":"NGC3277","M标识":"NGC3277","拓展名":"","组件":"","Class":"II 359","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h32m55.4s","赤经D(J2000)":"10.548722222222223","赤纬(J2000)":"+28h30m44s","赤纬D(J2000)":"28.51222222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.1","短轴(分)":"1.8","方位角":"170","详细描述":"considerably bright, considerably small, round, pretty gradually much brighter middle","简略描述":"cB, cS, R, pgmbM"},{"ID":"3278","标识":"NGC3278","M标识":"NGC3278","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h31m35.5s","赤经D(J2000)":"10.526527777777778","赤纬(J2000)":"-39h57m21s","赤纬D(J2000)":"-39.95583333333334","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"62","详细描述":"faint, small, round, double star to northeast","简略描述":"F, S, R, D * nf"},{"ID":"3279","标识":"NGC3279","M标识":"NGC3279","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h34m42.6s","赤经D(J2000)":"10.5785","赤纬(J2000)":"+11h11m49s","赤纬D(J2000)":"11.196944444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.9","短轴(分)":"0.4","方位角":"152","详细描述":"faint, much extended","简略描述":"F, mE"},{"ID":"3280","标识":"NGC3280","M标识":"NGC3280","拓展名":"A","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h32m43.8s","赤经D(J2000)":"10.5455","赤纬(J2000)":"-12h38m12s","赤纬D(J2000)":"-12.636666666666667","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"130","详细描述":"faint, binuclear","简略描述":"F, biN"},{"ID":"3281","标识":"NGC3281","M标识":"NGC3281","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h31m52.2s","赤经D(J2000)":"10.531166666666667","赤纬(J2000)":"-34h51m16s","赤纬D(J2000)":"-34.85444444444445","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.2","短轴(分)":"1.6","方位角":"140","详细描述":"extremely faint, pretty large, extended, gradually a little brighter middle","简略描述":"eF, pL, E, glbM"},{"ID":"3282","标识":"NGC3282","M标识":"NGC3282","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h32m21.8s","赤经D(J2000)":"10.539388888888888","赤纬(J2000)":"-22h18m7s","赤纬D(J2000)":"-22.301944444444445","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.9","短轴(分)":"0.6","方位角":"82","详细描述":"extremely faint star in extremely faint, very small nebula, between 2 stars","简略描述":"eF * in eF, vS neb, bet 2 st"},{"ID":"3283","标识":"NGC3283","M标识":"NGC3283","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"10h31m11.2s","赤经D(J2000)":"10.51977777777778","赤纬(J2000)":"-46h15m2s","赤纬D(J2000)":"-46.25055555555556","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.2","短轴(分)":"1.5","方位角":"168","详细描述":"pretty faint, small, round, gradually brighter middle","简略描述":"pF, S, R, gbM"},{"ID":"3284","标识":"NGC3284","M标识":"NGC3284","拓展名":"","组件":"","Class":"III 912","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h36m21.3s","赤经D(J2000)":"10.605916666666666","赤纬(J2000)":"+58h37m13s","赤纬D(J2000)":"58.62027777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"88","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"3285","标识":"NGC3285","M标识":"NGC3285","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h33m35.8s","赤经D(J2000)":"10.559944444444445","赤纬(J2000)":"-27h27m16s","赤纬D(J2000)":"-27.454444444444444","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.7","短轴(分)":"1.5","方位角":"108","详细描述":"pretty bright, small, a little extended, gradually brighter middle, 1st of 9","简略描述":"pB, S, lE, gbM, 1st of 9"},{"ID":"3286","标识":"NGC3286","M标识":"NGC3286","拓展名":"","组件":"","Class":"III 917","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E3","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h36m21.3s","赤经D(J2000)":"10.605916666666666","赤纬(J2000)":"+58h37m13s","赤纬D(J2000)":"58.62027777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"88","详细描述":"extremely faint, very small","简略描述":"vF, pS, R, pslbM"},{"ID":"3287","标识":"NGC3287","M标识":"NGC3287","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h34m47.3s","赤经D(J2000)":"10.579805555555556","赤纬(J2000)":"+21h38m52s","赤纬D(J2000)":"21.647777777777776","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2","短轴(分)":"0.9","方位角":"20","详细描述":"faint, pretty large, double star 24 seconds of time to west, 4 arcmin to south","简略描述":"F, pL, D * p 24s, s 4'"},{"ID":"3288","标识":"NGC3288","M标识":"NGC3288","拓展名":"","组件":"","Class":"III 918","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h36m25.5s","赤经D(J2000)":"10.607083333333334","赤纬(J2000)":"+58h33m22s","赤纬D(J2000)":"58.55611111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"175","详细描述":"extremely faint, considerably small, round, very gradually a little brighter middle","简略描述":"eF, cS, R, vglbM"},{"ID":"3289","标识":"NGC3289","M标识":"NGC3289","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h34m7.3s","赤经D(J2000)":"10.568694444444445","赤纬(J2000)":"-35h19m23s","赤纬D(J2000)":"-35.323055555555555","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.2","短轴(分)":"0.6","方位角":"153","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"3290","标识":"NGC3290","M标识":"NGC3290","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc\/P","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h35m17.5s","赤经D(J2000)":"10.588194444444445","赤纬(J2000)":"-17h16m36s","赤纬D(J2000)":"-17.276666666666667","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.5","方位角":"60","详细描述":"extremely faint, small, a little extended 0°, gradually brighter middle, bright star 6 arcmin to north","简略描述":"eF, S, lE 0°, gbM, B * n 6'"},{"ID":"3291","标识":"NGC3291","M标识":"NGC3291","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h36m6.2s","赤经D(J2000)":"10.601722222222222","赤纬(J2000)":"+37h16m30s","赤纬D(J2000)":"37.275","可见光星等V":"99","摄影(蓝光)星等B":"14.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a 13th magnitude star involved in a very faint nebula","简略描述":"* 13 inv in vF neb"},{"ID":"3292","标识":"NGC3292","M标识":"NGC3292","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h35m34.4s","赤经D(J2000)":"10.59288888888889","赤纬(J2000)":"-6h10m46s","赤纬D(J2000)":"-6.179444444444445","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"175","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"3293","标识":"NGC3293","M标识":"NGC3293","拓展名":"","组件":"","Class":"","业余排名":"4","中文名":"宝石星团","类型":"OCL","含重复类型":"OCL","形态":"I3r","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"10h35m51s","赤经D(J2000)":"10.5975","赤纬(J2000)":"-58h13m48s","赤纬D(J2000)":"-58.230000000000004","可见光星等V":"4.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, rich, pretty large","简略描述":"Cl, B, Ri, pL"},{"ID":"3294","标识":"NGC3294","M标识":"NGC3294","拓展名":"","组件":"","Class":"I 164","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h36m16s","赤经D(J2000)":"10.604444444444445","赤纬(J2000)":"+37h19m29s","赤纬D(J2000)":"37.32472222222223","可见光星等V":"11.8","摄影(蓝光)星等B":"12.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.4","短轴(分)":"1.8","方位角":"122","详细描述":"considerably bright, large, much extended 135°, gradually a little brighter middle","简略描述":"cB, L, mE 135°, glbM"},{"ID":"3295","标识":"NGC3295","M标识":"NGC3295","拓展名":"A","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h32m43.8s","赤经D(J2000)":"10.5455","赤纬(J2000)":"-12h38m12s","赤纬D(J2000)":"-12.636666666666667","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"130","详细描述":"faint, binuclear","简略描述":"eF, pL, bM, D or st inv"},{"ID":"3296","标识":"NGC3296","M标识":"NGC3296","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h32m45.3s","赤经D(J2000)":"10.545916666666667","赤纬(J2000)":"-12h43m0s","赤纬D(J2000)":"-12.716666666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, pretty small, round, brighter middle","简略描述":"eF, pS, R, bM"},{"ID":"3297","标识":"NGC3297","M标识":"NGC3297","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h33m11.7s","赤经D(J2000)":"10.55325","赤纬(J2000)":"-12h40m16s","赤纬D(J2000)":"-12.671111111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"160","详细描述":"extremely faint, small, irregularly round","简略描述":"eF, S, iR"},{"ID":"3298","标识":"NGC3298","M标识":"NGC3298","拓展名":"","组件":"","Class":"III 767","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h37m12.2s","赤经D(J2000)":"10.620055555555556","赤纬(J2000)":"+50h7m13s","赤纬D(J2000)":"50.12027777777778","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"138","详细描述":"very faint, pretty small, irregularly extended","简略描述":"vF, pS, iE"},{"ID":"3299","标识":"NGC3299","M标识":"NGC3299","拓展名":"","组件":"","Class":"III 54","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h36m23.9s","赤经D(J2000)":"10.606638888888888","赤纬(J2000)":"+12h42m26s","赤纬D(J2000)":"12.70722222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.2","短轴(分)":"1.7","方位角":"3","详细描述":"extremely faint, considerably large, round, very gradually brighter middle, mottled but not resolved","简略描述":"eF, cL, R, vgbM, r"},{"ID":"3300","标识":"NGC3300","M标识":"NGC3300","拓展名":"","组件":"","Class":"III 55","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h36m38.5s","赤经D(J2000)":"10.610694444444444","赤纬(J2000)":"+14h10m16s","赤纬D(J2000)":"14.171111111111111","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"173","详细描述":"considerably faint, considerably small, round, pretty much brighter middle, mottled but not resolved, among bright stars","简略描述":"cF, cS, R, pmbM, r, am B st"},{"ID":"3301","标识":"NGC3301","M标识":"NGC3301","拓展名":"","组件":"","Class":"II 46","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h36m55.8s","赤经D(J2000)":"10.615499999999999","赤纬(J2000)":"+21h52m54s","赤纬D(J2000)":"21.881666666666668","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"3.3","短轴(分)":"1","方位角":"52","详细描述":"","简略描述":"cB, S, lE 53°, psbM, r"},{"ID":"3302","标识":"NGC3302","M标识":"NGC3302","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h35m47.4s","赤经D(J2000)":"10.5965","赤纬(J2000)":"-32h21m30s","赤纬D(J2000)":"-32.358333333333334","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"118","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"3303","标识":"NGC3303","M标识":"NGC3303","拓展名":"","组件":"","Class":"III 66","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc\/P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h36m59.9s","赤经D(J2000)":"10.616638888888888","赤纬(J2000)":"+18h8m13s","赤纬D(J2000)":"18.136944444444445","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"15","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"165","详细描述":"very faint, very small, very little extended, gradually a little brighter middle, mottled but not resolved","简略描述":"vF, vS, vlE, glbM, r"},{"ID":"3304","标识":"NGC3304","M标识":"NGC3304","拓展名":"","组件":"","Class":"III 615","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h37m37.9s","赤经D(J2000)":"10.627194444444445","赤纬(J2000)":"+37h27m23s","赤纬D(J2000)":"37.45638888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"0.6","方位角":"158","详细描述":"very faint, considerably small, pretty suddenly brighter middle, extremely mottled but not resolved","简略描述":"vF, cS, psbM, er"},{"ID":"3305","标识":"NGC3305","M标识":"NGC3305","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h36m11.7s","赤经D(J2000)":"10.60325","赤纬(J2000)":"-27h9m44s","赤纬D(J2000)":"-27.16222222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"","简略描述":"vF, S, R, 2nd of 9"},{"ID":"3306","标识":"NGC3306","M标识":"NGC3306","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h37m10.1s","赤经D(J2000)":"10.619472222222223","赤纬(J2000)":"+12h39m9s","赤纬D(J2000)":"12.6525","可见光星等V":"13.4","摄影(蓝光)星等B":"14","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"141","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"3307","标识":"NGC3307","M标识":"NGC3307","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h36m17.2s","赤经D(J2000)":"10.604777777777777","赤纬(J2000)":"-27h31m44s","赤纬D(J2000)":"-27.528888888888886","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"28","详细描述":"","简略描述":"eeF, 3rd of 9"},{"ID":"3308","标识":"NGC3308","M标识":"NGC3308","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h36m22.3s","赤经D(J2000)":"10.606194444444444","赤纬(J2000)":"-27h26m14s","赤纬D(J2000)":"-27.43722222222222","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"32","详细描述":"","简略描述":"F, S, R, 4th of 9"},{"ID":"3309","标识":"NGC3309","M标识":"NGC3309","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h36m35.7s","赤经D(J2000)":"10.609916666666667","赤纬(J2000)":"-27h31m3s","赤纬D(J2000)":"-27.5175","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.9","短轴(分)":"1.6","方位角":"31","详细描述":"","简略描述":"B, L, R, p of D neb, 5th of 9"},{"ID":"3310","标识":"NGC3310","M标识":"NGC3310","拓展名":"","组件":"","Class":"IV 60","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h38m45.6s","赤经D(J2000)":"10.645999999999999","赤纬(J2000)":"+53h30m12s","赤纬D(J2000)":"53.50333333333333","可见光星等V":"10.8","摄影(蓝光)星等B":"11.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.1","短轴(分)":"2.4","方位角":"156","详细描述":"","简略描述":"cB, pL, R, vg, vsmbMN 15\""},{"ID":"3311","标识":"NGC3311","M标识":"NGC3311","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h36m42.7s","赤经D(J2000)":"10.61186111111111","赤纬(J2000)":"-27h31m43s","赤纬D(J2000)":"-27.52861111111111","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.3","短轴(分)":"2.1","方位角":"19","详细描述":"","简略描述":"B, L, R, f of D neb, 6th of 9"},{"ID":"3312","标识":"NGC3312","M标识":"NGC3312","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h37m2.3s","赤经D(J2000)":"10.617305555555555","赤纬(J2000)":"-27h33m56s","赤纬D(J2000)":"-27.565555555555555","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.3","短轴(分)":"1.2","方位角":"175","详细描述":"","简略描述":"cF, E, gbM, 7th of 9"},{"ID":"3313","标识":"NGC3313","M标识":"NGC3313","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h37m25.5s","赤经D(J2000)":"10.623750000000001","赤纬(J2000)":"-25h19m8s","赤纬D(J2000)":"-25.31888888888889","可见光星等V":"11.4","摄影(蓝光)星等B":"12.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3.9","短轴(分)":"3.2","方位角":"55","详细描述":"","简略描述":"eF, pS, iR, gbMN, * 15 n 3\""},{"ID":"3314","标识":"NGC3314","M标识":"NGC3314","拓展名":"A","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa\/P","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h37m12.7s","赤经D(J2000)":"10.620194444444445","赤纬(J2000)":"-27h41m0s","赤纬D(J2000)":"-27.683333333333334","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"143","详细描述":"8th of 9 nebulae","简略描述":"8th of 9 neb"},{"ID":"3315","标识":"NGC3315","M标识":"NGC3315","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h37m19.2s","赤经D(J2000)":"10.622","赤纬(J2000)":"-27h11m30s","赤纬D(J2000)":"-27.191666666666666","可见光星等V":"13.3","摄影(蓝光)星等B":"14.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"1","方位角":"80","详细描述":"","简略描述":"vF, pL, iR, gvlbM, * 1' np"},{"ID":"3316","标识":"NGC3316","M标识":"NGC3316","拓展名":"","组件":"1","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h37m37.2s","赤经D(J2000)":"10.627","赤纬(J2000)":"-27h35m39s","赤纬D(J2000)":"-27.594166666666666","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"36","详细描述":"","简略描述":"F, S, R, bM, 9th of 9"},{"ID":"3317","标识":"NGC3317","M标识":"NGC3317","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h37m43.1s","赤经D(J2000)":"10.62863888888889","赤纬(J2000)":"-27h31m9s","赤纬D(J2000)":"-27.519166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Neb *, 5' n of h 3284"},{"ID":"3318","标识":"NGC3318","M标识":"NGC3318","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"10h37m15s","赤经D(J2000)":"10.620833333333334","赤纬(J2000)":"-41h37m38s","赤纬D(J2000)":"-41.62722222222222","可见光星等V":"11.6","摄影(蓝光)星等B":"12.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.3","短轴(分)":"1.2","方位角":"78","详细描述":"considerably faint, pretty large, pretty much extended, a little brighter middle","简略描述":"cF, pL, pmE, lbM"},{"ID":"3319","标识":"NGC3319","M标识":"NGC3319","拓展名":"","组件":"","Class":"III 700","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h39m9.6s","赤经D(J2000)":"10.652666666666667","赤纬(J2000)":"+41h41m14s","赤纬D(J2000)":"41.68722222222222","可见光星等V":"11.1","摄影(蓝光)星等B":"11.5","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"6.1","短轴(分)":"3.4","方位角":"37","详细描述":"","简略描述":"cF, L, iE, mb, s of M"},{"ID":"3320","标识":"NGC3320","M标识":"NGC3320","拓展名":"","组件":"","Class":"II 745","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h39m36.5s","赤经D(J2000)":"10.66013888888889","赤纬(J2000)":"+47h23m50s","赤纬D(J2000)":"47.39722222222222","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.2","短轴(分)":"1","方位角":"20","详细描述":"faint, pretty small, much extended, 10th magnitude star to northeast","简略描述":"F, pS, mE, * 10 nf"},{"ID":"3321","标识":"NGC3321","M标识":"NGC3321","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h38m50.5s","赤经D(J2000)":"10.647361111111111","赤纬(J2000)":"-11h38m56s","赤纬D(J2000)":"-11.648888888888889","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.5","短轴(分)":"1.2","方位角":"36","详细描述":"","简略描述":"eF, pS, mE 160°, * np end"},{"ID":"3322","标识":"NGC3322","M标识":"NGC3322","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h38m50.5s","赤经D(J2000)":"10.647361111111111","赤纬(J2000)":"-11h38m56s","赤纬D(J2000)":"-11.648888888888889","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.5","短轴(分)":"1.2","方位角":"36","详细描述":"faint, irregular figure, star to west","简略描述":"F, iF, * p"},{"ID":"3323","标识":"NGC3323","M标识":"NGC3323","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB\/P","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h39m39.1s","赤经D(J2000)":"10.660861111111112","赤纬(J2000)":"+25h19m21s","赤纬D(J2000)":"25.322499999999998","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.6","方位角":"174","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"3324","标识":"NGC3324","M标识":"NGC3324","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"钥匙孔星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"10h37m19.3s","赤经D(J2000)":"10.622027777777777","赤纬(J2000)":"-58h38m3s","赤纬D(J2000)":"-58.634166666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"16","短轴(分)":"14","方位角":"","详细描述":"pretty bright, very very large, irregular figure, double star involved","简略描述":"pB, vvL, iF, D * inv"},{"ID":"3325","标识":"NGC3325","M标识":"NGC3325","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h39m20.4s","赤经D(J2000)":"10.655666666666667","赤纬(J2000)":"-0h11m59s","赤纬D(J2000)":"-0.19972222222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"55","详细描述":"faint, very small, very small star involved","简略描述":"F, vS, vS * inv"},{"ID":"3326","标识":"NGC3326","M标识":"NGC3326","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h39m31.8s","赤经D(J2000)":"10.658833333333334","赤纬(J2000)":"+5h6m26s","赤纬D(J2000)":"5.107222222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, extremely small, stellar","简略描述":"vF, eS, stellar"},{"ID":"3327","标识":"NGC3327","M标识":"NGC3327","拓展名":"","组件":"","Class":"II 348","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h39m57.8s","赤经D(J2000)":"10.666055555555555","赤纬(J2000)":"+24h5m30s","赤纬D(J2000)":"24.091666666666665","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"85","详细描述":"very faint, small, round, gradually brighter middle, very small (faint) star attached","简略描述":"vF, S, R, gbM, vS * att"},{"ID":"3328","标识":"NGC3328","M标识":"NGC3328","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h39m54.2s","赤经D(J2000)":"10.665055555555556","赤纬(J2000)":"+9h18m2s","赤纬D(J2000)":"9.300555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, faint star involved","简略描述":"vF, F st inv"},{"ID":"3329","标识":"NGC3329","M标识":"NGC3329","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h44m39s","赤经D(J2000)":"10.744166666666667","赤纬(J2000)":"+76h48m35s","赤纬D(J2000)":"76.80972222222222","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"140","详细描述":"pretty bright, small, a little extended, pretty suddenly much brighter middle","简略描述":"pB, S, lE, psmbM"},{"ID":"3330","标识":"NGC3330","M标识":"NGC3330","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"10h38m46s","赤经D(J2000)":"10.64611111111111","赤纬(J2000)":"-54h6m54s","赤纬D(J2000)":"-54.115","可见光星等V":"7.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, stars from 9th magnitude","简略描述":"Cl, P, st 9…"},{"ID":"3331","标识":"NGC3331","M标识":"NGC3331","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h40m9s","赤经D(J2000)":"10.669166666666666","赤纬(J2000)":"-23h49m14s","赤纬D(J2000)":"-23.820555555555554","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"27","详细描述":"very faint, small, very little extended 0°","简略描述":"vF, S, vlE 0°"},{"ID":"3332","标识":"NGC3332","M标识":"NGC3332","拓展名":"","组件":"","Class":"I 272","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h40m28.2s","赤经D(J2000)":"10.6745","赤纬(J2000)":"+9h10m57s","赤纬D(J2000)":"9.1825","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"very faint, small, a little extended 130°","简略描述":"vF, S, lE 130°"},{"ID":"3333","标识":"NGC3333","M标识":"NGC3333","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h39m49.7s","赤经D(J2000)":"10.663805555555555","赤纬(J2000)":"-36h2m10s","赤纬D(J2000)":"-36.03611111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.1","短轴(分)":"0.4","方位角":"160","详细描述":"extremely faint, very small, much extended, 15th magnitude star attached","简略描述":"eF, vS, mE, * 15 att"},{"ID":"3334","标识":"NGC3334","M标识":"NGC3334","拓展名":"","组件":"","Class":"II 641","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h41m31.1s","赤经D(J2000)":"10.691972222222223","赤纬(J2000)":"+37h18m45s","赤纬D(J2000)":"37.3125","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"1","方位角":"0","详细描述":"considerably faint, very small, round, brighter middle","简略描述":"cF, vS, R, bM"},{"ID":"3335","标识":"NGC3335","M标识":"NGC3335","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h39m34.1s","赤经D(J2000)":"10.659472222222222","赤纬(J2000)":"-23h55m19s","赤纬D(J2000)":"-23.921944444444446","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"130","详细描述":"very faint, small, irregularly round, gradually brighter middle","简略描述":"vF, S, iR, gbM"},{"ID":"3336","标识":"NGC3336","M标识":"NGC3336","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h40m16.8s","赤经D(J2000)":"10.671333333333333","赤纬(J2000)":"-27h46m38s","赤纬D(J2000)":"-27.77722222222222","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2","短轴(分)":"1.6","方位角":"123","详细描述":"very faint, pretty large, a little extended, gradually a little brighter middle","简略描述":"vF, pL, lE, glbM"},{"ID":"3337","标识":"NGC3337","M标识":"NGC3337","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h41m47.5s","赤经D(J2000)":"10.696527777777778","赤纬(J2000)":"+4h59m20s","赤纬D(J2000)":"4.988888888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"45","详细描述":"extremely faint, very small, almost stellar","简略描述":"eF, vS, alm stellar"},{"ID":"3338","标识":"NGC3338","M标识":"NGC3338","拓展名":"","组件":"","Class":"II 77","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h42m7.6s","赤经D(J2000)":"10.70211111111111","赤纬(J2000)":"+13h44m48s","赤纬D(J2000)":"13.746666666666666","可见光星等V":"11.1","摄影(蓝光)星等B":"11.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"5.7","短轴(分)":"3.4","方位角":"100","详细描述":"","简略描述":"F, cL, E, vgbM, * 7 p 10s"},{"ID":"3339","标识":"NGC3339","M标识":"NGC3339","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h42m10s","赤经D(J2000)":"10.702777777777778","赤纬(J2000)":"-0h22m6s","赤纬D(J2000)":"-0.3683333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, stellar","简略描述":"eF, stellar"},{"ID":"3340","标识":"NGC3340","M标识":"NGC3340","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h42m17.9s","赤经D(J2000)":"10.70497222222222","赤纬(J2000)":"-0h22m37s","赤纬D(J2000)":"-0.3769444444444444","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.9","方位角":"145","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"3341","标识":"NGC3341","M标识":"NGC3341","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h42m31.5s","赤经D(J2000)":"10.708749999999998","赤纬(J2000)":"+5h2m39s","赤纬D(J2000)":"5.0441666666666665","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"24","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"3342","标识":"NGC3342","M标识":"NGC3342","拓展名":"","组件":"","Class":"III 5","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h40m28.2s","赤经D(J2000)":"10.6745","赤纬(J2000)":"+9h10m57s","赤纬D(J2000)":"9.1825","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"3343","标识":"NGC3343","M标识":"NGC3343","拓展名":"","组件":"","Class":"III 317","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h46m10.3s","赤经D(J2000)":"10.769527777777778","赤纬(J2000)":"+73h21m12s","赤纬D(J2000)":"73.35333333333332","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"55","详细描述":"pretty faint, small, round, gradually brighter middle","简略描述":"pF, S, R, gbM"},{"ID":"3344","标识":"NGC3344","M标识":"NGC3344","拓展名":"","组件":"","Class":"I 81","业余排名":"6","中文名":"洋葱切片星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h43m30.9s","赤经D(J2000)":"10.72525","赤纬(J2000)":"+24h55m22s","赤纬D(J2000)":"24.922777777777778","可见光星等V":"9.9","摄影(蓝光)星等B":"10.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"7.1","短轴(分)":"6.5","方位角":"18","详细描述":"considerably bright, large, gradually brighter middle, star involved, 2 stars to east","简略描述":"cB, L, gbM, * inv, 2 st f"},{"ID":"3345","标识":"NGC3345","M标识":"NGC3345","拓展名":"","组件":"","Class":"","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h43m32s","赤经D(J2000)":"10.725555555555555","赤纬(J2000)":"+11h59m6s","赤纬D(J2000)":"11.985","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eeF (if anything)"},{"ID":"3346","标识":"NGC3346","M标识":"NGC3346","拓展名":"","组件":"","Class":"V 7","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h43m38.7s","赤经D(J2000)":"10.727416666666667","赤纬(J2000)":"+14h52m20s","赤纬D(J2000)":"14.872222222222224","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.7","短轴(分)":"2.6","方位角":"90","详细描述":"considerably faint, very large, round, very gradually a very little brighter middle, extremely mottled but not resolved","简略描述":"cF, vL, R, vgvlbM, er"},{"ID":"3347","标识":"NGC3347","M标识":"NGC3347","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h42m46.6s","赤经D(J2000)":"10.712944444444444","赤纬(J2000)":"-36h21m12s","赤纬D(J2000)":"-36.35333333333333","可见光星等V":"11.3","摄影(蓝光)星等B":"12.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.4","短轴(分)":"2.1","方位角":"173","详细描述":"pretty faint, small, much extended 0°±, very suddenly very much brighter middle, 1st of 3","简略描述":"pF, S, mE 0° ±, vsvmbM, 1st of 3"},{"ID":"3348","标识":"NGC3348","M标识":"NGC3348","拓展名":"","组件":"","Class":"I 80","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h47m10s","赤经D(J2000)":"10.786111111111111","赤纬(J2000)":"+72h50m20s","赤纬D(J2000)":"72.83888888888889","可见光星等V":"11.1","摄影(蓝光)星等B":"12.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2","短轴(分)":"2","方位角":"","详细描述":"","简略描述":"B, S, ilE, psbM, * 11 282°, 21s"},{"ID":"3349","标识":"NGC3349","M标识":"NGC3349","拓展名":"","组件":"2","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h43m52.7s","赤经D(J2000)":"10.731305555555556","赤纬(J2000)":"+6h45m26s","赤纬D(J2000)":"6.7572222222222225","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"15","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"3350","标识":"NGC3350","M标识":"NGC3350","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h44m22.9s","赤经D(J2000)":"10.739694444444444","赤纬(J2000)":"+30h43m31s","赤纬D(J2000)":"30.725277777777777","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, very small, 2 stars of 9th or 10th magnitude to south","简略描述":"eF, vS, 2 st 9·10 s"},{"ID":"3351","标识":"NGC3351","M标识":"M95","拓展名":"","组件":"","Class":"I 26","业余排名":"1","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h43m57.8s","赤经D(J2000)":"10.732722222222222","赤纬(J2000)":"+11h42m12s","赤纬D(J2000)":"11.703333333333333","可见光星等V":"9.7","摄影(蓝光)星等B":"10.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"7.4","短轴(分)":"5","方位角":"13","详细描述":"bright, large, round, pretty gradually much brighter middle and nucleus","简略描述":"B, L, R, pgmbMN"},{"ID":"3352","标识":"NGC3352","M标识":"NGC3352","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h44m14.8s","赤经D(J2000)":"10.737444444444444","赤纬(J2000)":"+22h22m17s","赤纬D(J2000)":"22.37138888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"0","详细描述":"pretty bright, small, round, brighter middle and nucleus","简略描述":"pB, S, R, bMN"},{"ID":"3353","标识":"NGC3353","M标识":"NGC3353","拓展名":"","组件":"","Class":"III 842","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h45m22.2s","赤经D(J2000)":"10.756166666666667","赤纬(J2000)":"+55h57m35s","赤纬D(J2000)":"55.959722222222226","可见光星等V":"12.8","摄影(蓝光)星等B":"13.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1","方位角":"60","详细描述":"faint, considerably small, round, pretty gradually brighter middle, star 90 arcsec to south","简略描述":"F, cS, R, pgbM, * s 90\""},{"ID":"3354","标识":"NGC3354","M标识":"NGC3354","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h43m2.8s","赤经D(J2000)":"10.717444444444444","赤纬(J2000)":"-36h21m46s","赤纬D(J2000)":"-36.36277777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"13.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, very little extended, pretty suddenly brighter middle, 2nd of 3","简略描述":"F, S, vlE, psbM, 2nd of 3"},{"ID":"3355","标识":"NGC3355","M标识":"NGC3355","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h43m32.6s","赤经D(J2000)":"10.725722222222222","赤纬(J2000)":"-23h11m36s","赤纬D(J2000)":"-23.193333333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebula, no description","简略描述":"Neb, no description"},{"ID":"3356","标识":"NGC3356","M标识":"NGC3356","拓展名":"","组件":"","Class":"III 107","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h44m12.4s","赤经D(J2000)":"10.736777777777776","赤纬(J2000)":"+6h45m32s","赤纬D(J2000)":"6.7588888888888885","可见光星等V":"13.3","摄影(蓝光)星等B":"13.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"102","详细描述":"very faint, pretty small, round, brighter middle, 9th magnitude star about 150 arcsec to the south","简略描述":"vF, pS, R, bM, * 9 s 150\" ±"},{"ID":"3357","标识":"NGC3357","M标识":"NGC3357","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h44m20.9s","赤经D(J2000)":"10.739138888888888","赤纬(J2000)":"+14h5m4s","赤纬D(J2000)":"14.084444444444445","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"90","详细描述":"faint, small, much brighter middle","简略描述":"F, S, mbM"},{"ID":"3358","标识":"NGC3358","M标识":"NGC3358","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h43m33s","赤经D(J2000)":"10.725833333333334","赤纬(J2000)":"-36h24m39s","赤纬D(J2000)":"-36.41083333333333","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.2","短轴(分)":"1.8","方位角":"141","详细描述":"considerably faint, very small, very little extended, very small (faint) star attached, 3rd of 3","简略描述":"cF, vS, vlE, vS * att, 3rd of 3"},{"ID":"3359","标识":"NGC3359","M标识":"NGC3359","拓展名":"","组件":"","Class":"V 52","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h46m36.3s","赤经D(J2000)":"10.776750000000002","赤纬(J2000)":"+63h13m24s","赤纬D(J2000)":"63.223333333333336","可见光星等V":"10.6","摄影(蓝光)星等B":"11","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"7.2","短轴(分)":"4.4","方位角":"170","详细描述":"pretty bright, large, extended 0°, gradually a little brighter middle","简略描述":"pB, L, E 0°, glbM"},{"ID":"3360","标识":"NGC3360","M标识":"NGC3360","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h44m16.2s","赤经D(J2000)":"10.737833333333333","赤纬(J2000)":"-11h14m33s","赤纬D(J2000)":"-11.2425","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"55","详细描述":"faint pair of nebulae, the eastern one the brighter","简略描述":"F pair of neb, f one the brighter"},{"ID":"3361","标识":"NGC3361","M标识":"NGC3361","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h44m29.1s","赤经D(J2000)":"10.741416666666666","赤纬(J2000)":"-11h12m29s","赤纬D(J2000)":"-11.208055555555555","可见光星等V":"12.8","摄影(蓝光)星等B":"13.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.1","短轴(分)":"0.8","方位角":"155","详细描述":"faint pair of nebulae, the eastern one the brighter","简略描述":"F pair of neb, f one the brighter"},{"ID":"3362","标识":"NGC3362","M标识":"NGC3362","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h44m51.7s","赤经D(J2000)":"10.747694444444443","赤纬(J2000)":"+6h35m50s","赤纬D(J2000)":"6.597222222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"54","详细描述":"very faint, pretty small, round, a little brighter middle, mottled but not resolved","简略描述":"vF, pS, R, lbM, r"},{"ID":"3363","标识":"NGC3363","M标识":"NGC3363","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h45m9.5s","赤经D(J2000)":"10.752638888888889","赤纬(J2000)":"+22h4m43s","赤纬D(J2000)":"22.078611111111112","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"0","详细描述":"faint, pretty small, irregularly round, a little brighter middle, mottled but not resolved","简略描述":"F, pS, iR, lbM, r"},{"ID":"3364","标识":"NGC3364","M标识":"NGC3364","拓展名":"","组件":"","Class":"III 318","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h48m29.5s","赤经D(J2000)":"10.808194444444446","赤纬(J2000)":"+72h25m30s","赤纬D(J2000)":"72.42500000000001","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"very faint, large, round, very gradually brighter middle, mottled but not resolved, double star to southeast","简略描述":"vF, L, R, vgbM, r, D * sf"},{"ID":"3365","标识":"NGC3365","M标识":"NGC3365","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h46m12.7s","赤经D(J2000)":"10.770194444444446","赤纬(J2000)":"+1h48m46s","赤纬D(J2000)":"1.8127777777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"4.5","短轴(分)":"0.8","方位角":"159","详细描述":"considerably faint, large, extremely extended 159°, very gradually a very little brighter middle","简略描述":"eF, L, eE 159°, vgvlbM"},{"ID":"3366","标识":"NGC3366","M标识":"NGC3366","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"10h35m8.1s","赤经D(J2000)":"10.585583333333334","赤纬(J2000)":"-43h41m37s","赤纬D(J2000)":"-43.69361111111111","可见光星等V":"11.3","摄影(蓝光)星等B":"12","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.8","短轴(分)":"0.8","方位角":"37","详细描述":"faint, extended, gradually brighter middle, 6.7 magnitude star very near","简略描述":"F, E, gbM, * 6·7 v nr"},{"ID":"3367","标识":"NGC3367","M标识":"NGC3367","拓展名":"","组件":"","Class":"II 78","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h46m34.9s","赤经D(J2000)":"10.776361111111111","赤纬(J2000)":"+13h45m1s","赤纬D(J2000)":"13.750277777777777","可见光星等V":"11.5","摄影(蓝光)星等B":"12.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.5","短轴(分)":"2.4","方位角":"57","详细描述":"pretty bright, considerably large, irregularly round, very gradually a little brighter middle, mottled but not resolved, 1st of 3","简略描述":"pB, cL, iR, vglbM, r, 1st of 3"},{"ID":"3368","标识":"NGC3368","M标识":"M96","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h46m45.8s","赤经D(J2000)":"10.77938888888889","赤纬(J2000)":"+11h49m12s","赤纬D(J2000)":"11.82","可见光星等V":"9.3","摄影(蓝光)星等B":"10.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"7.8","短轴(分)":"5.2","方位角":"176","详细描述":"very bright, very large, a little extended, very suddenly very much brighter middle, mottled but not resolved","简略描述":"vB, vL, lE, vsvmbM, r"},{"ID":"3369","标识":"NGC3369","M标识":"NGC3369","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h46m44.7s","赤经D(J2000)":"10.779083333333334","赤纬(J2000)":"-25h14m39s","赤纬D(J2000)":"-25.24416666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"114","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"3370","标识":"NGC3370","M标识":"NGC3370","拓展名":"","组件":"","Class":"II 81","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h47m4s","赤经D(J2000)":"10.784444444444444","赤纬(J2000)":"+17h16m26s","赤纬D(J2000)":"17.273888888888887","可见光星等V":"11.6","摄影(蓝光)星等B":"12.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.6","短轴(分)":"1.5","方位角":"148","详细描述":"considerably bright, pretty large, very little extended, gradually brighter middle, mottled but not resolved","简略描述":"cB, pL, vlE, gbM, r"},{"ID":"3371","标识":"NGC3371","M标识":"NGC3371","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E\/SB0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h48m16.7s","赤经D(J2000)":"10.80463888888889","赤纬(J2000)":"+12h37m43s","赤纬D(J2000)":"12.62861111111111","可见光星等V":"9.9","摄影(蓝光)星等B":"10.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"5.4","短轴(分)":"2.7","方位角":"53","详细描述":"extremely faint, round, 2nd of 3","简略描述":"eF, R, 2nd of 3"},{"ID":"3372","标识":"NGC3372","M标识":"NGC3372","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"船底座星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"10h45m6s","赤经D(J2000)":"10.751666666666667","赤纬(J2000)":"-59h52m0s","赤纬D(J2000)":"-59.86666666666667","可见光星等V":"99","摄影(蓝光)星等B":"3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"120","短轴(分)":"120","方位角":"","详细描述":"a remarkable object, the Great nebula, η Arg?s","简略描述":"! Great neb, η Arg?s"},{"ID":"3373","标识":"NGC3373","M标识":"NGC3373","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h48m28s","赤经D(J2000)":"10.807777777777778","赤纬(J2000)":"+12h31m59s","赤纬D(J2000)":"12.533055555555556","可见光星等V":"11.9","摄影(蓝光)星等B":"12.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.9","短轴(分)":"1.3","方位角":"112","详细描述":"faint, round, 3rd of 3","简略描述":"F, R, 3rd of 3"},{"ID":"3374","标识":"NGC3374","M标识":"NGC3374","拓展名":"","组件":"","Class":"III 701","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h48m1s","赤经D(J2000)":"10.800277777777778","赤纬(J2000)":"+43h11m10s","赤纬D(J2000)":"43.18611111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"142","详细描述":"very faint, considerably small, irregularly round","简略描述":"vF, cS, iR"},{"ID":"3375","标识":"NGC3375","M标识":"NGC3375","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h47m0.7s","赤经D(J2000)":"10.783527777777778","赤纬(J2000)":"-9h56m31s","赤纬D(J2000)":"-9.941944444444445","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"153","详细描述":"faint, small, round, gradually much brighter middle","简略描述":"F, S, R, gmbM"},{"ID":"3376","标识":"NGC3376","M标识":"NGC3376","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h47m26.5s","赤经D(J2000)":"10.790694444444444","赤纬(J2000)":"+6h2m55s","赤纬D(J2000)":"6.048611111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"167","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"3377","标识":"NGC3377","M标识":"NGC3377","拓展名":"","组件":"","Class":"II 99","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h47m42.3s","赤经D(J2000)":"10.795083333333332","赤纬(J2000)":"+13h59m9s","赤纬D(J2000)":"13.985833333333332","可见光星等V":"10.4","摄影(蓝光)星等B":"11.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"5","短轴(分)":"3","方位角":"35","详细描述":"very bright, considerably large, a little extended, suddenly very much brighter middle and bright nucleus","简略描述":"vB, cL, lE, svmbMBN"},{"ID":"3378","标识":"NGC3378","M标识":"NGC3378","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h46m43.3s","赤经D(J2000)":"10.778694444444445","赤纬(J2000)":"-40h0m56s","赤纬D(J2000)":"-40.01555555555556","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"11","详细描述":"considerably faint, small, round, gradually a little brighter middle","简略描述":"cF, S, R, glbM"},{"ID":"3379","标识":"NGC3379","M标识":"M105","拓展名":"","组件":"","Class":"I 17","业余排名":"1","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h47m49.5s","赤经D(J2000)":"10.797083333333333","赤纬(J2000)":"+12h34m52s","赤纬D(J2000)":"12.581111111111111","可见光星等V":"9.3","摄影(蓝光)星等B":"10.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"5.3","短轴(分)":"4.8","方位角":"71","详细描述":"very bright, considerably large, round, pretty suddenly brighter middle, mottled but not resolved","简略描述":"vB, cL, R, psbM, r"},{"ID":"3380","标识":"NGC3380","M标识":"NGC3380","拓展名":"","组件":"","Class":"II 360","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h48m12.1s","赤经D(J2000)":"10.803361111111112","赤纬(J2000)":"+28h36m7s","赤纬D(J2000)":"28.601944444444445","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"12","详细描述":"pretty bright, pretty small, round, suddenly brighter middle","简略描述":"pB, pS, R, sbM"},{"ID":"3381","标识":"NGC3381","M标识":"NGC3381","拓展名":"","组件":"","Class":"II 565","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB\/P","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h48m24.7s","赤经D(J2000)":"10.806861111111111","赤纬(J2000)":"+34h42m41s","赤纬D(J2000)":"34.71138888888889","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2","短轴(分)":"1.8","方位角":"60","详细描述":"pretty faint, considerably large, irregularly round, very gradually a little brighter middle, 1st of 3","简略描述":"pF, cL, iR, vglbM, 1st of 3"},{"ID":"3382","标识":"NGC3382","M标识":"NGC3382","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h48m25.5s","赤经D(J2000)":"10.807083333333335","赤纬(J2000)":"+36h43m32s","赤纬D(J2000)":"36.72555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, irregularly round, perhaps a small cluster?","简略描述":"F, S, iR, ? S Cl"},{"ID":"3383","标识":"NGC3383","M标识":"NGC3383","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h47m19.2s","赤经D(J2000)":"10.788666666666666","赤纬(J2000)":"-24h26m16s","赤纬D(J2000)":"-24.43777777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"24","详细描述":"faint, pretty large, irregularly round, gradually a little brighter middle","简略描述":"F, pL, iR, glbM"},{"ID":"3384","标识":"NGC3384","M标识":"NGC3384","拓展名":"","组件":"","Class":"I 18","业余排名":"5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h48m16.7s","赤经D(J2000)":"10.80463888888889","赤纬(J2000)":"+12h37m43s","赤纬D(J2000)":"12.62861111111111","可见光星等V":"9.9","摄影(蓝光)星等B":"10.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"5.4","短轴(分)":"2.7","方位角":"53","详细描述":"extremely faint, round, 2nd of 3","简略描述":"vB, L, R, psmbM, 2nd of 3"},{"ID":"3385","标识":"NGC3385","M标识":"NGC3385","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h48m11.6s","赤经D(J2000)":"10.803222222222223","赤纬(J2000)":"+4h55m42s","赤纬D(J2000)":"4.928333333333334","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"97","详细描述":"very faint, small, round, southern of 2","简略描述":"vF, S, R, s of 2"},{"ID":"3386","标识":"NGC3386","M标识":"NGC3386","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h48m11.8s","赤经D(J2000)":"10.803277777777778","赤纬(J2000)":"+4h59m57s","赤纬D(J2000)":"4.9991666666666665","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, small, a little extended, brighter middle, northern of 2","简略描述":"vF, S, lE, bM, n of 2"},{"ID":"3387","标识":"NGC3387","M标识":"NGC3387","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h48m16.9s","赤经D(J2000)":"10.804694444444445","赤纬(J2000)":"+4h58m1s","赤纬D(J2000)":"4.966944444444445","可见光星等V":"99","摄影(蓝光)星等B":"14.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"3388","标识":"NGC3388","M标识":"NGC3388","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h51m25.5s","赤经D(J2000)":"10.857083333333334","赤纬(J2000)":"+8h34m3s","赤纬D(J2000)":"8.567499999999999","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"faint, round","简略描述":"F, R"},{"ID":"3389","标识":"NGC3389","M标识":"NGC3389","拓展名":"","组件":"","Class":"II 41","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h48m28s","赤经D(J2000)":"10.807777777777778","赤纬(J2000)":"+12h31m59s","赤纬D(J2000)":"12.533055555555556","可见光星等V":"11.9","摄影(蓝光)星等B":"12.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.9","短轴(分)":"1.3","方位角":"112","详细描述":"faint, round, 3rd of 3","简略描述":"F, L, E pf, vglbM, 3rd of 3"},{"ID":"3390","标识":"NGC3390","M标识":"NGC3390","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h48m4.3s","赤经D(J2000)":"10.801194444444445","赤纬(J2000)":"-31h32m0s","赤纬D(J2000)":"-31.533333333333335","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"3.5","短轴(分)":"0.6","方位角":"177","详细描述":"faint, small, pretty much extended 0°","简略描述":"F, S, pmE 0°"},{"ID":"3391","标识":"NGC3391","M标识":"NGC3391","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h48m56.4s","赤经D(J2000)":"10.815666666666667","赤纬(J2000)":"+14h13m10s","赤纬D(J2000)":"14.219444444444445","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.7","方位角":"35","详细描述":"faint, small, round, between 2 nearby stars","简略描述":"F, S, R, bet 2 st, nr"},{"ID":"3392","标识":"NGC3392","M标识":"NGC3392","拓展名":"","组件":"","Class":"III 881","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h51m2.9s","赤经D(J2000)":"10.850805555555555","赤纬(J2000)":"+65h46m53s","赤纬D(J2000)":"65.78138888888888","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"120","详细描述":"very faint, small, pretty suddenly brighter middle, star near","简略描述":"vF, S, psbM, st nr"},{"ID":"3393","标识":"NGC3393","M标识":"NGC3393","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h48m23.4s","赤经D(J2000)":"10.806500000000002","赤纬(J2000)":"-25h9m42s","赤纬D(J2000)":"-25.161666666666665","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"48","详细描述":"faint, small, round, pretty suddenly brighter middle, two 10th magnitude stars to east","简略描述":"F, S, R, psbM, 2 st 10 f"},{"ID":"3394","标识":"NGC3394","M标识":"NGC3394","拓展名":"","组件":"","Class":"II 872","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h50m39.8s","赤经D(J2000)":"10.84438888888889","赤纬(J2000)":"+65h43m40s","赤纬D(J2000)":"65.72777777777777","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"35","详细描述":"considerably faint, small, a little extended, very gradually brighter middle","简略描述":"cF, S, lE, vgbM"},{"ID":"3395","标识":"NGC3395","M标识":"NGC3395","拓展名":"","组件":"","Class":"I 116","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h49m49.9s","赤经D(J2000)":"10.830527777777778","赤纬(J2000)":"+32h58m53s","赤纬D(J2000)":"32.981388888888894","可见光星等V":"12.1","摄影(蓝光)星等B":"12.4","B-V":"0.3","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.1","短轴(分)":"1.1","方位角":"50","详细描述":"considerably bright, pretty small, irregularly a little extended, 1st of 2","简略描述":"cB, pS, ilE, 1st of 2"},{"ID":"3396","标识":"NGC3396","M标识":"NGC3396","拓展名":"","组件":"","Class":"I 117","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm\/P","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h49m55.6s","赤经D(J2000)":"10.83211111111111","赤纬(J2000)":"+32h59m26s","赤纬D(J2000)":"32.99055555555556","可见光星等V":"12","摄影(蓝光)星等B":"12.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.9","短轴(分)":"1.2","方位角":"100","详细描述":"considerably bright, pretty small, irregularly a little extended, 1st of 2","简略描述":"pB, pS, ilE, 2nd of 2"},{"ID":"3397","标识":"NGC3397","M标识":"NGC3397","拓展名":"","组件":"","Class":"I 284","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h44m39s","赤经D(J2000)":"10.744166666666667","赤纬(J2000)":"+76h48m35s","赤纬D(J2000)":"76.80972222222222","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"140","详细描述":"considerably bright, very small, irregular figure (place very uncertain?)","简略描述":"cB, vS, iF [Place ??]"},{"ID":"3398","标识":"NGC3398","M标识":"NGC3398","拓展名":"","组件":"","Class":"III 792","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h51m31.2s","赤经D(J2000)":"10.858666666666666","赤纬(J2000)":"+55h23m28s","赤纬D(J2000)":"55.39111111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1","短轴(分)":"0.3","方位角":"78","详细描述":"very faint, small, extended, extremely mottled but not resolved","简略描述":"vF, S, E, er"},{"ID":"3399","标识":"NGC3399","M标识":"NGC3399","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h49m27.6s","赤经D(J2000)":"10.824333333333334","赤纬(J2000)":"+16h13m8s","赤纬D(J2000)":"16.218888888888888","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, very small","简略描述":"F, vS"},{"ID":"3400","标识":"NGC3400","M标识":"NGC3400","拓展名":"","组件":"","Class":"II 361","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h50m45.5s","赤经D(J2000)":"10.845972222222223","赤纬(J2000)":"+28h28m8s","赤纬D(J2000)":"28.468888888888888","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"100","详细描述":"pretty faint, small, round, brighter middle","简略描述":"pF, S, R, bM"},{"ID":"3401","标识":"NGC3401","M标识":"NGC3401","拓展名":"","组件":"","Class":"III 88","业余排名":"15","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h49m12s","赤经D(J2000)":"10.82","赤纬(J2000)":"+5h48m8s","赤纬D(J2000)":"5.802222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint (not verified)","简略描述":"eF (not verified)"},{"ID":"3402","标识":"NGC3402","M标识":"NGC3402","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h50m26.1s","赤经D(J2000)":"10.840583333333335","赤纬(J2000)":"-12h50m42s","赤纬D(J2000)":"-12.845","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.1","短轴(分)":"2.1","方位角":"","详细描述":"faint, round","简略描述":"F, R"},{"ID":"3403","标识":"NGC3403","M标识":"NGC3403","拓展名":"","组件":"","Class":"II 335","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h53m54.3s","赤经D(J2000)":"10.898416666666666","赤纬(J2000)":"+73h41m24s","赤纬D(J2000)":"73.69","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3","短轴(分)":"1.3","方位角":"73","详细描述":"pretty faint, large, irregularly extended, very gradually brighter middle","简略描述":"pF, L, iE, vgbM"},{"ID":"3404","标识":"NGC3404","M标识":"NGC3404","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h50m17.8s","赤经D(J2000)":"10.838277777777778","赤纬(J2000)":"-12h6m29s","赤纬D(J2000)":"-12.108055555555556","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.1","短轴(分)":"0.5","方位角":"84","详细描述":"pretty bright, very large, extended east-west","简略描述":"pB, vL, E pf"},{"ID":"3405","标识":"NGC3405","M标识":"NGC3405","拓展名":"","组件":"2","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h49m44.3s","赤经D(J2000)":"10.828972222222221","赤纬(J2000)":"+16h14m33s","赤纬D(J2000)":"16.2425","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, extremely small, almost stellar, close to small (faint) star","简略描述":"F, eS, alm stell, close to S *"},{"ID":"3406","标识":"NGC3406","M标识":"NGC3406","拓展名":"","组件":"1","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h51m43.7s","赤经D(J2000)":"10.862138888888888","赤纬(J2000)":"+51h1m22s","赤纬D(J2000)":"51.022777777777776","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"42","详细描述":"pretty bright, round, pretty gradually brighter middle","简略描述":"pB, R, pgbM"},{"ID":"3407","标识":"NGC3407","M标识":"NGC3407","拓展名":"","组件":"","Class":"III 919","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h52m17.8s","赤经D(J2000)":"10.871611111111111","赤纬(J2000)":"+61h22m46s","赤纬D(J2000)":"61.379444444444445","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"15","详细描述":"very faint, very small, round, very small (faint) star near","简略描述":"vF, vS, R, vS * nr"},{"ID":"3408","标识":"NGC3408","M标识":"NGC3408","拓展名":"","组件":"","Class":"III 913","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h52m11.5s","赤经D(J2000)":"10.869861111111112","赤纬(J2000)":"+58h26m19s","赤纬D(J2000)":"58.43861111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"127","详细描述":"very faint, considerably small, round, 2 pretty bright stars to south","简略描述":"vF, cS, R, 2 pB st s"},{"ID":"3409","标识":"NGC3409","M标识":"NGC3409","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h50m20.2s","赤经D(J2000)":"10.838944444444445","赤纬(J2000)":"-17h2m41s","赤纬D(J2000)":"-17.044722222222223","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.2","短轴(分)":"0.2","方位角":"10","详细描述":"extremely faint, small, extended 200°, 2 very faint stars involved","简略描述":"eF, S, E 200°, 2 vF st inv"},{"ID":"3410","标识":"NGC3410","M标识":"NGC3410","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h51m53.6s","赤经D(J2000)":"10.864888888888888","赤纬(J2000)":"+51h0m23s","赤纬D(J2000)":"51.006388888888885","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"24","详细描述":"faint, pretty small, diffuse, 2 arcmin southeast of h771","简略描述":"F, pS, dif, 2' sf h 771"},{"ID":"3411","标识":"NGC3411","M标识":"NGC3411","拓展名":"","组件":"","Class":"III 522","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h50m26.1s","赤经D(J2000)":"10.840583333333335","赤纬(J2000)":"-12h50m42s","赤纬D(J2000)":"-12.845","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.1","短轴(分)":"2.1","方位角":"","详细描述":"faint, round","简略描述":"F, S, R, lbM"},{"ID":"3412","标识":"NGC3412","M标识":"NGC3412","拓展名":"","组件":"","Class":"I 27","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h50m53.3s","赤经D(J2000)":"10.84813888888889","赤纬(J2000)":"+13h24m46s","赤纬D(J2000)":"13.412777777777778","可见光星等V":"10.5","摄影(蓝光)星等B":"11.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"3.7","短轴(分)":"2.2","方位角":"155","详细描述":"bright, small, a little extended 135°±, suddenly much brighter middle and nucleus","简略描述":"B, S, lE 135° ±, smbMN"},{"ID":"3413","标识":"NGC3413","M标识":"NGC3413","拓展名":"","组件":"","Class":"II 493","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h51m20.7s","赤经D(J2000)":"10.85575","赤纬(J2000)":"+32h45m58s","赤纬D(J2000)":"32.76611111111111","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.8","短轴(分)":"0.8","方位角":"178","详细描述":"faint, small","简略描述":"F, S"},{"ID":"3414","标识":"NGC3414","M标识":"NGC3414","拓展名":"","组件":"","Class":"II 362","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h51m16.1s","赤经D(J2000)":"10.854472222222222","赤纬(J2000)":"+27h58m30s","赤纬D(J2000)":"27.974999999999998","可见光星等V":"11","摄影(蓝光)星等B":"12","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.5","短轴(分)":"2.6","方位角":"25","详细描述":"bright, pretty large, round, much brighter middle","简略描述":"B, pL, R, mbM"},{"ID":"3415","标识":"NGC3415","M标识":"NGC3415","拓展名":"","组件":"","Class":"II 718","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h51m42.4s","赤经D(J2000)":"10.861777777777778","赤纬(J2000)":"+43h42m46s","赤纬D(J2000)":"43.71277777777778","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.1","短轴(分)":"1.3","方位角":"10","详细描述":"pretty bright, small, very little extended, stellar, 3 small (faint) stars near","简略描述":"pB, S, vlE, stellar, 3 S st nr"},{"ID":"3416","标识":"NGC3416","M标识":"NGC3416","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h51m48.3s","赤经D(J2000)":"10.863416666666666","赤纬(J2000)":"+43h45m53s","赤纬D(J2000)":"43.764722222222225","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"27","详细描述":"extremely faint (perhaps faint star?), north of h772","简略描述":"eF (? F *), n of h 772"},{"ID":"3417","标识":"NGC3417","M标识":"NGC3417","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h51m1.7s","赤经D(J2000)":"10.850472222222223","赤纬(J2000)":"+8h28m25s","赤纬D(J2000)":"8.473611111111111","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"81","详细描述":"extremely faint, very small, almost stellar","简略描述":"eF, vS, alm stell"},{"ID":"3418","标识":"NGC3418","M标识":"NGC3418","拓展名":"","组件":"","Class":"II 363","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h51m23.9s","赤经D(J2000)":"10.856638888888888","赤纬(J2000)":"+28h6m44s","赤纬D(J2000)":"28.112222222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"75","详细描述":"considerably faint, small, round, brighter middle","简略描述":"cF, S, R, bM"},{"ID":"3419","标识":"NGC3419","M标识":"NGC3419","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h51m17.8s","赤经D(J2000)":"10.854944444444444","赤纬(J2000)":"+13h56m44s","赤纬D(J2000)":"13.945555555555556","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"1","方位角":"115","详细描述":"faint, very small, round, almost stellar, small (faint) star very near","简略描述":"F, vS, R, alm stell, S * v nr"},{"ID":"3420","标识":"NGC3420","M标识":"NGC3420","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h50m9.6s","赤经D(J2000)":"10.836","赤纬(J2000)":"-17h14m35s","赤纬D(J2000)":"-17.243055555555557","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"30","详细描述":"extremely faint, very small, round, pretty gradually brighter middle and nucleus, magnitude 8.5 star 6 arcmin to south","简略描述":"eF, vS, R, pgbMN, * 8.5 s 6'"},{"ID":"3421","标识":"NGC3421","M标识":"NGC3421","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa\/P","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h50m57.6s","赤经D(J2000)":"10.849333333333334","赤纬(J2000)":"-12h26m52s","赤纬D(J2000)":"-12.447777777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"175","详细描述":"2 nebulae, faint, round","简略描述":"2 neb, F, R"},{"ID":"3422","标识":"NGC3422","M标识":"NGC3422","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"10h51m17.4s","赤经D(J2000)":"10.854833333333334","赤纬(J2000)":"-12h24m7s","赤纬D(J2000)":"-12.401944444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"54","详细描述":"2 nebulae, faint, round","简略描述":"2 neb, F, R"},{"ID":"3423","标识":"NGC3423","M标识":"NGC3423","拓展名":"","组件":"","Class":"II 131, IV 6","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h51m14.4s","赤经D(J2000)":"10.854","赤纬(J2000)":"+5h50m24s","赤纬D(J2000)":"5.84","可见光星等V":"11.1","摄影(蓝光)星等B":"11.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.9","短轴(分)":"3.3","方位角":"10","详细描述":"faint, very large, round, very gradually brighter middle, partially resolved (some stars seen)","简略描述":"F, vL, R, vgbM, rr"},{"ID":"3424","标识":"NGC3424","M标识":"NGC3424","拓展名":"","组件":"","Class":"II 494","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h51m46.2s","赤经D(J2000)":"10.862833333333333","赤纬(J2000)":"+32h54m1s","赤纬D(J2000)":"32.900277777777774","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.7","短轴(分)":"0.8","方位角":"112","详细描述":"pretty faint, pretty large, a little extended, southwestern of 3","简略描述":"pF, pL, lE, sp of 3"},{"ID":"3425","标识":"NGC3425","M标识":"NGC3425","拓展名":"","组件":"","Class":"III 108","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h51m25.5s","赤经D(J2000)":"10.857083333333334","赤纬(J2000)":"+8h34m3s","赤纬D(J2000)":"8.567499999999999","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"3426","标识":"NGC3426","M标识":"NGC3426","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h51m41.7s","赤经D(J2000)":"10.861583333333334","赤纬(J2000)":"+18h28m52s","赤纬D(J2000)":"18.481111111111108","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"114","详细描述":"pretty faint, small, round, double star to north","简略描述":"pF, S, R, D * n"},{"ID":"3427","标识":"NGC3427","M标识":"NGC3427","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h51m26.2s","赤经D(J2000)":"10.857277777777778","赤纬(J2000)":"+8h17m54s","赤纬D(J2000)":"8.298333333333334","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"77","详细描述":"nebula, no description","简略描述":"Neb, no descr."},{"ID":"3428","标识":"NGC3428","M标识":"NGC3428","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h51m29.5s","赤经D(J2000)":"10.858194444444445","赤纬(J2000)":"+9h16m45s","赤纬D(J2000)":"9.279166666666667","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"170","详细描述":"very faint, small, a little extended, gradually a little brighter middle","简略描述":"vF, S, lE, glbM"},{"ID":"3429","标识":"NGC3429","M标识":"NGC3429","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h51m29.5s","赤经D(J2000)":"10.858194444444445","赤纬(J2000)":"+9h16m45s","赤纬D(J2000)":"9.279166666666667","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"170","详细描述":"very faint, small, a little extended, gradually a little brighter middle","简略描述":"pF, R"},{"ID":"3430","标识":"NGC3430","M标识":"NGC3430","拓展名":"","组件":"","Class":"I 118","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h52m11.5s","赤经D(J2000)":"10.869861111111112","赤纬(J2000)":"+32h57m3s","赤纬D(J2000)":"32.950833333333335","可见光星等V":"11.6","摄影(蓝光)星等B":"12.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"4.1","短轴(分)":"2.2","方位角":"30","详细描述":"pretty bright, large, irregularly extended, gradually brighter middle, 2nd of 3","简略描述":"pB, L, iE, gbM, 2nd of 3"},{"ID":"3431","标识":"NGC3431","M标识":"NGC3431","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"10h51m15s","赤经D(J2000)":"10.854166666666666","赤纬(J2000)":"-17h0m30s","赤纬D(J2000)":"-17.008333333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"135","详细描述":"extremely faint, small, extended 130°, gradually brighter middle","简略描述":"eF, S, E 130°, gbM"},{"ID":"3432","标识":"NGC3432","M标识":"NGC3432","拓展名":"","组件":"","Class":"I 172","业余排名":"6","中文名":"编制针星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h52m31s","赤经D(J2000)":"10.875277777777779","赤纬(J2000)":"+36h37m8s","赤纬D(J2000)":"36.61888888888889","可见光星等V":"11.3","摄影(蓝光)星等B":"11.7","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"6.6","短轴(分)":"1.6","方位角":"38","详细描述":"pretty bright, pretty large, very much extended 40°, double star close to southwest","简略描述":"pB, pL, vmE 40°, ** close sp"},{"ID":"3433","标识":"NGC3433","M标识":"NGC3433","拓展名":"","组件":"","Class":"III 20","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h52m4s","赤经D(J2000)":"10.867777777777778","赤纬(J2000)":"+10h8m52s","赤纬D(J2000)":"10.147777777777778","可见光星等V":"11.6","摄影(蓝光)星等B":"12.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3.5","短轴(分)":"3","方位角":"50","详细描述":"very faint, very large, round, very gradually brighter middle","简略描述":"vF, vL, R, vgbM"},{"ID":"3434","标识":"NGC3434","M标识":"NGC3434","拓展名":"","组件":"","Class":"III 497","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h51m58s","赤经D(J2000)":"10.866111111111111","赤纬(J2000)":"+3h47m31s","赤纬D(J2000)":"3.7919444444444443","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.1","短轴(分)":"1.9","方位角":"41","详细描述":"faint, pretty small, round, very gradually a little brighter middle","简略描述":"F, pS, R, vglbM"},{"ID":"3435","标识":"NGC3435","M标识":"NGC3435","拓展名":"","组件":"","Class":"II 887","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h54m48.2s","赤经D(J2000)":"10.913388888888889","赤纬(J2000)":"+61h17m20s","赤纬D(J2000)":"61.288888888888884","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"35","详细描述":"considerably faint, pretty small, a little extended, very gradually brighter middle","简略描述":"cF, pS, lE, vgbM"},{"ID":"3436","标识":"NGC3436","M标识":"NGC3436","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h52m27.4s","赤经D(J2000)":"10.874277777777777","赤纬(J2000)":"+8h5m39s","赤纬D(J2000)":"8.094166666666668","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"90","详细描述":"extremely small","简略描述":"eS"},{"ID":"3437","标识":"NGC3437","M标识":"NGC3437","拓展名":"","组件":"","Class":"II 47","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h52m35.3s","赤经D(J2000)":"10.876472222222223","赤纬(J2000)":"+22h56m6s","赤纬D(J2000)":"22.935","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.6","短轴(分)":"0.8","方位角":"122","详细描述":"pretty bright, pretty large, a little extended 120°, gradually brighter middle","简略描述":"pB, pL, lE 120°, gbM"},{"ID":"3438","标识":"NGC3438","M标识":"NGC3438","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h52m25.9s","赤经D(J2000)":"10.873861111111111","赤纬(J2000)":"+10h32m51s","赤纬D(J2000)":"10.5475","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, extremely small, almost stellar","简略描述":"vF, eS, alm stell"},{"ID":"3439","标识":"NGC3439","M标识":"NGC3439","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h52m25.7s","赤经D(J2000)":"10.873805555555556","赤纬(J2000)":"+8h33m28s","赤纬D(J2000)":"8.557777777777778","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"150","详细描述":"most extremely faint, very small, almost stellar","简略描述":"eeF, vS, alm stell"},{"ID":"3440","标识":"NGC3440","M标识":"NGC3440","拓展名":"","组件":"","Class":"III 914","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h53m49.5s","赤经D(J2000)":"10.897083333333333","赤纬(J2000)":"+57h7m8s","赤纬D(J2000)":"57.11888888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.1","短轴(分)":"0.5","方位角":"48","详细描述":"very faint, small, a little extended","简略描述":"vF, S, lE"},{"ID":"3441","标识":"NGC3441","M标识":"NGC3441","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h52m31s","赤经D(J2000)":"10.875277777777779","赤纬(J2000)":"+7h13m30s","赤纬D(J2000)":"7.2250000000000005","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"5","详细描述":"pretty bright","简略描述":"pB"},{"ID":"3442","标识":"NGC3442","M标识":"NGC3442","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h53m8s","赤经D(J2000)":"10.885555555555555","赤纬(J2000)":"+33h54m36s","赤纬D(J2000)":"33.91","可见光星等V":"13.4","摄影(蓝光)星等B":"13.8","B-V":"0.4","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"30","详细描述":"faint, very small, round, much brighter middle, mottled but not resolved?","简略描述":"F, vS, R, mbM, r?"},{"ID":"3443","标识":"NGC3443","M标识":"NGC3443","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h53m0.1s","赤经D(J2000)":"10.88336111111111","赤纬(J2000)":"+17h34m26s","赤纬D(J2000)":"17.573888888888888","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"2.8","短轴(分)":"1.4","方位角":"145","详细描述":"most extremely faint, very small, round","简略描述":"eeF, vS, R"},{"ID":"3444","标识":"NGC3444","M标识":"NGC3444","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h52m59.4s","赤经D(J2000)":"10.883166666666668","赤纬(J2000)":"+10h12m38s","赤纬D(J2000)":"10.210555555555555","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1","短轴(分)":"0.1","方位角":"19","详细描述":"extremely faint, very small, pretty much extended","简略描述":"eF, vS, pmE"},{"ID":"3445","标识":"NGC3445","M标识":"NGC3445","拓展名":"","组件":"","Class":"I 267","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h54m35.8s","赤经D(J2000)":"10.909944444444445","赤纬(J2000)":"+56h59m24s","赤纬D(J2000)":"56.99","可见光星等V":"12.6","摄影(蓝光)星等B":"12.9","B-V":"0.3","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"105","详细描述":"considerably bright, pretty large, irregularly round, very gradually a little brighter middle, 10th magnitude star 2 arcmin to northeast","简略描述":"cB, pL, iR, vglbM, * 10 nf 2'"},{"ID":"3446","标识":"NGC3446","M标识":"NGC3446","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"10h52m12s","赤经D(J2000)":"10.870000000000001","赤纬(J2000)":"-45h9m36s","赤纬D(J2000)":"-45.16","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6.5","短轴(分)":"","方位角":"","详细描述":"cluster, pretty large, poor, a little compressed, irregular figure, stars from 9th to 13th magnitude","简略描述":"Cl, pL, P, lC, iF, st 9…13"},{"ID":"3447","标识":"NGC3447","M标识":"NGC3447","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm\/P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h53m24s","赤经D(J2000)":"10.889999999999999","赤纬(J2000)":"+16h46m19s","赤纬D(J2000)":"16.771944444444443","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"15.5","长轴(分)":"3.8","短轴(分)":"2.2","方位角":"0","详细描述":"extremely faint, very large, very gradually very little brighter middle, bright double star to southwest","简略描述":"eF, vL, vgvlbM, B ** sp"},{"ID":"3448","标识":"NGC3448","M标识":"NGC3448","拓展名":"","组件":"","Class":"I 233","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h54m38.8s","赤经D(J2000)":"10.910777777777778","赤纬(J2000)":"+54h18m19s","赤纬D(J2000)":"54.305277777777775","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"5.6","短轴(分)":"1.7","方位角":"65","详细描述":"bright, pretty large, much extended 67°.0, gradually brighter middle","简略描述":"B, pL, mE 67°.0, gbM"},{"ID":"3449","标识":"NGC3449","M标识":"NGC3449","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h52m53.8s","赤经D(J2000)":"10.881611111111111","赤纬(J2000)":"-32h55m40s","赤纬D(J2000)":"-32.92777777777778","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.3","短轴(分)":"1","方位角":"148","详细描述":"faint, small, round, 6.7 magnitude star to southeast","简略描述":"F, S, R, * 6·7 sf"},{"ID":"3450","标识":"NGC3450","M标识":"NGC3450","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h48m3.5s","赤经D(J2000)":"10.800972222222223","赤纬(J2000)":"-20h50m56s","赤纬D(J2000)":"-20.848888888888887","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.6","短轴(分)":"2.3","方位角":"128","详细描述":"very faint, large, round, very gradually a little brighter middle, mottled but not resolved","简略描述":"vF, L, R, vglbM, r"},{"ID":"3451","标识":"NGC3451","M标识":"NGC3451","拓展名":"","组件":"","Class":"II 364","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h54m21.1s","赤经D(J2000)":"10.905861111111111","赤纬(J2000)":"+27h14m23s","赤纬D(J2000)":"27.239722222222223","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"50","详细描述":"faint, pretty large, very little extended, very little brighter middle","简略描述":"F, pL, vlE, vlbM"},{"ID":"3452","标识":"NGC3452","M标识":"NGC3452","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"10h54m14.1s","赤经D(J2000)":"10.903916666666667","赤纬(J2000)":"-11h24m18s","赤纬D(J2000)":"-11.405000000000001","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"65","详细描述":"extremely faint, round, north of small (faint) star","简略描述":"eF, R, n of S *"},{"ID":"3453","标识":"NGC3453","M标识":"NGC3453","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h53m40.4s","赤经D(J2000)":"10.894555555555556","赤纬(J2000)":"-21h47m36s","赤纬D(J2000)":"-21.793333333333337","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"4","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"3454","标识":"NGC3454","M标识":"NGC3454","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h54m29.4s","赤经D(J2000)":"10.908166666666666","赤纬(J2000)":"+17h20m37s","赤纬D(J2000)":"17.34361111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.1","短轴(分)":"0.4","方位角":"116","详细描述":"pretty faint, a little extended, northwestern of 2","简略描述":"pF, lE, np of 2"},{"ID":"3455","标识":"NGC3455","M标识":"NGC3455","拓展名":"","组件":"","Class":"II 82","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h54m30.9s","赤经D(J2000)":"10.908583333333334","赤纬(J2000)":"+17h17m4s","赤纬D(J2000)":"17.284444444444446","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.6","短轴(分)":"2","方位角":"62","详细描述":"pretty faint, small, extended, gradually brighter middle, mottled but not resolved, southeastern of 2","简略描述":"pF, S, E, gbM, r, sf of 2"},{"ID":"3456","标识":"NGC3456","M标识":"NGC3456","拓展名":"","组件":"","Class":"IV 29","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"10h54m3.3s","赤经D(J2000)":"10.900916666666667","赤纬(J2000)":"-16h1m39s","赤纬D(J2000)":"-16.0275","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"102","详细描述":"extremely faint, attached to 12th magnitude star on east","简略描述":"eF, att to * 12 f"},{"ID":"3457","标识":"NGC3457","M标识":"NGC3457","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h54m48.6s","赤经D(J2000)":"10.9135","赤纬(J2000)":"+17h37m17s","赤纬D(J2000)":"17.62138888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"2 or 3 small (faint) stars and nebulosity","简略描述":"2 or 3 S st and neb"},{"ID":"3458","标识":"NGC3458","M标识":"NGC3458","拓展名":"","组件":"","Class":"I 268","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h56m1.4s","赤经D(J2000)":"10.933722222222222","赤纬(J2000)":"+57h7m2s","赤纬D(J2000)":"57.117222222222225","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"5","详细描述":"very bright, very small, round, stellar","简略描述":"vB, vS, R, stellar"},{"ID":"3459","标识":"NGC3459","M标识":"NGC3459","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"10h54m44.4s","赤经D(J2000)":"10.912333333333335","赤纬(J2000)":"-17h2m30s","赤纬D(J2000)":"-17.041666666666668","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"155","详细描述":"very faint, small, extended, gradually brighter middle","简略描述":"vF, S, E, gbM"},{"ID":"3460","标识":"NGC3460","M标识":"NGC3460","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h54m48.6s","赤经D(J2000)":"10.9135","赤纬(J2000)":"+17h37m17s","赤纬D(J2000)":"17.62138888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"2 or 3 small (faint) stars and nebulosity","简略描述":"pB, R, no * nr (?? = h 793)"},{"ID":"3461","标识":"NGC3461","M标识":"NGC3461","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h54m55.2s","赤经D(J2000)":"10.915333333333333","赤纬(J2000)":"+17h42m30s","赤纬D(J2000)":"17.708333333333332","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"faint nebula 5 arcmin northeast of the last","简略描述":"F neb 5' nf last"},{"ID":"3462","标识":"NGC3462","M标识":"NGC3462","拓展名":"","组件":"","Class":"II 16","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h55m21s","赤经D(J2000)":"10.9225","赤纬(J2000)":"+7h41m49s","赤纬D(J2000)":"7.696944444444445","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"60","详细描述":"very faint, very small, very little extended, pretty suddenly brighter middle","简略描述":"vF, vS, vlE, psbM"},{"ID":"3463","标识":"NGC3463","M标识":"NGC3463","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h55m13.3s","赤经D(J2000)":"10.920361111111111","赤纬(J2000)":"-26h8m25s","赤纬D(J2000)":"-26.140277777777776","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"77","详细描述":"faint, small, round, gradually a little brighter middle","简略描述":"F, S, R, glbM"},{"ID":"3464","标识":"NGC3464","M标识":"NGC3464","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h54m39.8s","赤经D(J2000)":"10.911055555555556","赤纬(J2000)":"-21h3m59s","赤纬D(J2000)":"-21.06638888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13","B-V":"0.4","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.5","短轴(分)":"1.7","方位角":"112","详细描述":"extremely faint, pretty large, extended 125°","简略描述":"eF, pL, E 125°"},{"ID":"3465","标识":"NGC3465","M标识":"NGC3465","拓展名":"","组件":"","Class":"III 967","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"10h59m31.3s","赤经D(J2000)":"10.992027777777777","赤纬(J2000)":"+75h11m30s","赤纬D(J2000)":"75.19166666666668","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"1","方位角":"171","详细描述":"extremely faint, pretty large, round, very gradually a little brighter middle, double star to northeast","简略描述":"eF, pL, R, vglbM, ** nf"},{"ID":"3466","标识":"NGC3466","M标识":"NGC3466","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h56m15.4s","赤经D(J2000)":"10.937611111111112","赤纬(J2000)":"+9h45m15s","赤纬D(J2000)":"9.754166666666666","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.6","方位角":"55","详细描述":"very faint, 9th magnitude star at position angle 90°, preceding (western) of 2","简略描述":"vF, * 9 90°, p of 2"},{"ID":"3467","标识":"NGC3467","M标识":"NGC3467","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h56m44.1s","赤经D(J2000)":"10.945583333333333","赤纬(J2000)":"+9h45m32s","赤纬D(J2000)":"9.758888888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, round, very suddenly much brighter middle equivalent to 12th magnitude star, following (eastern) of 2","简略描述":"vF, R, vsmbM * 12, f of 2"},{"ID":"3468","标识":"NGC3468","M标识":"NGC3468","拓展名":"","组件":"","Class":"III 632","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h57m31.2s","赤经D(J2000)":"10.958666666666666","赤纬(J2000)":"+40h56m47s","赤纬D(J2000)":"40.94638888888888","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"8","详细描述":"faint, extremely small, round, brighter middle","简略描述":"F, eS, R, bM"},{"ID":"3469","标识":"NGC3469","M标识":"NGC3469","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"10h56m57.6s","赤经D(J2000)":"10.949333333333334","赤纬(J2000)":"-14h18m1s","赤纬D(J2000)":"-14.300277777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"115","详细描述":"most extremely faint, small","简略描述":"eeF, S"},{"ID":"3470","标识":"NGC3470","M标识":"NGC3470","拓展名":"","组件":"","Class":"II 888","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h58m44.8s","赤经D(J2000)":"10.979111111111111","赤纬(J2000)":"+59h30m38s","赤纬D(J2000)":"59.510555555555555","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"170","详细描述":"very faint, small, round, very gradually brighter middle","简略描述":"vF, S, R, vgbM"},{"ID":"3471","标识":"NGC3471","M标识":"NGC3471","拓展名":"","组件":"","Class":"III 972","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h59m8.8s","赤经D(J2000)":"10.985777777777777","赤纬(J2000)":"+61h31m49s","赤纬D(J2000)":"61.530277777777776","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"14","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"3472","标识":"NGC3472","M标识":"NGC3472","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"11h57m28.1s","赤经D(J2000)":"11.957805555555554","赤纬(J2000)":"-19h37m26s","赤纬D(J2000)":"-19.62388888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"5","详细描述":"extremely faint, small, round, gradually brighter middle","简略描述":"eF, S, R, gbM"},{"ID":"3473","标识":"NGC3473","M标识":"NGC3473","拓展名":"","组件":"","Class":"III 67","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h58m5.2s","赤经D(J2000)":"10.968111111111112","赤纬(J2000)":"+17h7m30s","赤纬D(J2000)":"17.125","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"1","方位角":"40","详细描述":"very faint, extended, between 2 stars","简略描述":"vF, E, bet 2 st"},{"ID":"3474","标识":"NGC3474","M标识":"NGC3474","拓展名":"","组件":"","Class":"","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h58m8.7s","赤经D(J2000)":"10.969083333333334","赤纬(J2000)":"+17h5m46s","赤纬D(J2000)":"17.09611111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"138","详细描述":"very faint, pretty small, round, south of III 67","简略描述":"vF, pS, R, s of III 67"},{"ID":"3475","标识":"NGC3475","M标识":"NGC3475","拓展名":"","组件":"","Class":"III 332","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h58m25.2s","赤经D(J2000)":"10.973666666666666","赤纬(J2000)":"+24h13m37s","赤纬D(J2000)":"24.22694444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"65","详细描述":"very faint, round, gradually brighter middle, 13th magnitude star 1 arcmin north per (WH), 2 arcmin south per (JH)","简略描述":"vF, R, gbM, * 13, (H) 1' n, (h) 2' s"},{"ID":"3476","标识":"NGC3476","M标识":"NGC3476","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h58m7.6s","赤经D(J2000)":"10.968777777777778","赤纬(J2000)":"+9h16m34s","赤纬D(J2000)":"9.276111111111112","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"117","详细描述":"extremely faint, very small, almost stellar","简略描述":"eF, vS, alm stell"},{"ID":"3477","标识":"NGC3477","M标识":"NGC3477","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h58m12.5s","赤经D(J2000)":"10.970138888888888","赤纬(J2000)":"+9h13m4s","赤纬D(J2000)":"9.217777777777778","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"72","详细描述":"most extremely faint, extremely small, stellar","简略描述":"eeF, eS, stell"},{"ID":"3478","标识":"NGC3478","M标识":"NGC3478","拓展名":"","组件":"","Class":"III 705","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h59m27.4s","赤经D(J2000)":"10.990944444444443","赤纬(J2000)":"+46h7m23s","赤纬D(J2000)":"46.12305555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.6","短轴(分)":"1.2","方位角":"132","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"3479","标识":"NGC3479","M标识":"NGC3479","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"10h58m55.4s","赤经D(J2000)":"10.982055555555556","赤纬(J2000)":"-14h57m40s","赤纬D(J2000)":"-14.96111111111111","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"174","详细描述":"extremely faint, pretty small, extended 90°, gradually brighter middle and nucleus","简略描述":"eF, pS, E 90°, gbMN"},{"ID":"3480","标识":"NGC3480","M标识":"NGC3480","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E1","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h58m7.6s","赤经D(J2000)":"10.968777777777778","赤纬(J2000)":"+9h16m34s","赤纬D(J2000)":"9.276111111111112","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"117","详细描述":"extremely faint, very small, almost stellar","简略描述":"S, stellar"},{"ID":"3481","标识":"NGC3481","M标识":"NGC3481","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"10h59m26.4s","赤经D(J2000)":"10.990666666666666","赤纬(J2000)":"-7h32m39s","赤纬D(J2000)":"-7.5441666666666665","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"136","详细描述":"extremely faint, very small, partially resolved (some stars seen), probably very faint cluster, 9th magnitude star 5 arcmin to southeast","简略描述":"eF, vS, rr, prob vF Cl, * 9 5' sf"},{"ID":"3482","标识":"NGC3482","M标识":"NGC3482","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"10h58m34.2s","赤经D(J2000)":"10.976166666666666","赤纬(J2000)":"-46h35m3s","赤纬D(J2000)":"-46.58416666666667","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"14","详细描述":"extremely faint, small, round, gradually brighter middle","简略描述":"eF, S, R, gbM"},{"ID":"3483","标识":"NGC3483","M标识":"NGC3483","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h59m0.1s","赤经D(J2000)":"10.98336111111111","赤纬(J2000)":"-28h28m40s","赤纬D(J2000)":"-28.477777777777778","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"105","详细描述":"pretty faint, small, round, brighter middle, among stars","简略描述":"pF, S, R, bM, am st"},{"ID":"3484","标识":"NGC3484","M标识":"NGC3484","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"11h3m6s","赤经D(J2000)":"11.051666666666668","赤纬(J2000)":"+75h49m6s","赤纬D(J2000)":"75.81833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very doubtful object","简略描述":"Very doubtful object"},{"ID":"3485","标识":"NGC3485","M标识":"NGC3485","拓展名":"","组件":"","Class":"II 100","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h0m2.4s","赤经D(J2000)":"11.000666666666667","赤纬(J2000)":"+14h50m28s","赤纬D(J2000)":"14.841111111111111","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.4","短轴(分)":"2.2","方位角":"105","详细描述":"faint, large, round, gradually a little brighter middle, mottled but not resolved","简略描述":"F, L, R, glbM, r"},{"ID":"3486","标识":"NGC3486","M标识":"NGC3486","拓展名":"","组件":"","Class":"I 87","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"11h0m24s","赤经D(J2000)":"11.006666666666666","赤纬(J2000)":"+28h58m32s","赤纬D(J2000)":"28.975555555555555","可见光星等V":"10.5","摄影(蓝光)星等B":"11.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"7.1","短轴(分)":"5.2","方位角":"80","详细描述":"considerably bright, considerably large, round, gradually much brighter middle","简略描述":"cB, cL, R, gmbM"},{"ID":"3487","标识":"NGC3487","M标识":"NGC3487","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h0m46.6s","赤经D(J2000)":"11.012944444444445","赤纬(J2000)":"+17h35m15s","赤纬D(J2000)":"17.5875","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"153","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"3488","标识":"NGC3488","M标识":"NGC3488","拓展名":"","组件":"","Class":"I 269","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h1m23.6s","赤经D(J2000)":"11.023222222222223","赤纬(J2000)":"+57h40m39s","赤纬D(J2000)":"57.677499999999995","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"175","详细描述":"per (JH) extremely faint, per (WH) considerably bright, very little extended, pretty small, 13th magnitude star attached on south","简略描述":"(h) eF, (H) cB, vlE, pS, * 13 s att"},{"ID":"3489","标识":"NGC3489","M标识":"NGC3489","拓展名":"","组件":"","Class":"II 101","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h0m18.4s","赤经D(J2000)":"11.00511111111111","赤纬(J2000)":"+13h54m3s","赤纬D(J2000)":"13.900833333333333","可见光星等V":"10.3","摄影(蓝光)星等B":"11.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"3.6","短轴(分)":"2.2","方位角":"70","详细描述":"very bright, pretty large, a little extended 80°±, suddenly much brighter middle and nucleus","简略描述":"vB, pL, lE 80° ±, smbMN"},{"ID":"3490","标识":"NGC3490","M标识":"NGC3490","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h59m54.3s","赤经D(J2000)":"10.998416666666666","赤纬(J2000)":"+9h21m44s","赤纬D(J2000)":"9.362222222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"3491","标识":"NGC3491","M标识":"NGC3491","拓展名":"","组件":"","Class":"III 21","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h0m35.4s","赤经D(J2000)":"11.009833333333333","赤纬(J2000)":"+12h9m42s","赤纬D(J2000)":"12.161666666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"extremely faint, considerably small, round, brighter middle and nucleus","简略描述":"eF, cS, R, bMN"},{"ID":"3492","标识":"NGC3492","M标识":"NGC3492","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h0m57.3s","赤经D(J2000)":"11.015916666666667","赤纬(J2000)":"+10h30m23s","赤纬D(J2000)":"10.506388888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"14.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"100","详细描述":"pretty faint, small, 9.5 magnitude star 20 seconds of time to west, 1 arcmin to south","简略描述":"pF, S, * 9.5 p 20s, 1' s"},{"ID":"3493","标识":"NGC3493","M标识":"NGC3493","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"11h1m27.8s","赤经D(J2000)":"11.02438888888889","赤纬(J2000)":"+27h43m12s","赤纬D(J2000)":"27.72","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"84","详细描述":"very faint, round, brighter middle, star to southwest","简略描述":"vF, R, bM, * sp"},{"ID":"3494","标识":"NGC3494","M标识":"NGC3494","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h1m10.9s","赤经D(J2000)":"11.019694444444445","赤纬(J2000)":"+3h46m28s","赤纬D(J2000)":"3.7744444444444443","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very small, h809 six arcmin to south","简略描述":"vS, h 809 6' s"},{"ID":"3495","标识":"NGC3495","M标识":"NGC3495","拓展名":"","组件":"","Class":"III 498","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h1m15.8s","赤经D(J2000)":"11.021055555555556","赤纬(J2000)":"+3h37m37s","赤纬D(J2000)":"3.6269444444444443","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"4.9","短轴(分)":"1.1","方位角":"20","详细描述":"very faint, pretty large, much extended","简略描述":"vF, pL, mE"},{"ID":"3496","标识":"NGC3496","M标识":"NGC3496","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1m","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"10h59m36s","赤经D(J2000)":"10.993333333333332","赤纬(J2000)":"-60h20m12s","赤纬D(J2000)":"-60.336666666666666","可见光星等V":"8.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"cluster, pretty large, pretty rich, a little compressed, star 1","简略描述":"Cl, pL, pRi, lC, st 13"},{"ID":"3497","标识":"NGC3497","M标识":"NGC3497","拓展名":"","组件":"","Class":"III 824","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h7m18.1s","赤经D(J2000)":"11.121694444444445","赤纬(J2000)":"-19h28m17s","赤纬D(J2000)":"-19.47138888888889","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.6","短轴(分)":"1.5","方位角":"59","详细描述":"very faint, very small, irregularly round, gradually a little brighter middle","简略描述":"vF, vS, iR, glbM"},{"ID":"3498","标识":"NGC3498","M标识":"NGC3498","拓展名":"","组件":"","Class":"III 75","业余排名":"15","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h1m55s","赤经D(J2000)":"11.031944444444445","赤纬(J2000)":"+14h22m38s","赤纬D(J2000)":"14.377222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large (d'Arrest not found)","简略描述":"eF, pL (d'A not found)"},{"ID":"3499","标识":"NGC3499","M标识":"NGC3499","拓展名":"","组件":"","Class":"III 793","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h3m10.9s","赤经D(J2000)":"11.053027777777778","赤纬(J2000)":"+56h13m20s","赤纬D(J2000)":"56.22222222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"6","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"3500","标识":"NGC3500","M标识":"NGC3500","拓展名":"","组件":"","Class":"III 968","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"11h1m51.3s","赤经D(J2000)":"11.030916666666668","赤纬(J2000)":"+75h12m4s","赤纬D(J2000)":"75.20111111111112","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"54","详细描述":"a {III 967 = very faint, III 968 = extremely faint} double nebula, very near (Place very questionable)","简略描述":"vF, eF, D neb, v near (?? Place)"},{"ID":"3501","标识":"NGC3501","M标识":"NGC3501","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h2m47.3s","赤经D(J2000)":"11.046472222222222","赤纬(J2000)":"+17h59m23s","赤纬D(J2000)":"17.989722222222223","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.9","短轴(分)":"0.5","方位角":"27","详细描述":"very faint, much extended north-south, gradually brighter middle, 3 arcmin long","简略描述":"vF, mE ns, gbM, 3' long"},{"ID":"3502","标识":"NGC3502","M标识":"NGC3502","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"10h58m55.4s","赤经D(J2000)":"10.982055555555556","赤纬(J2000)":"-14h57m40s","赤纬D(J2000)":"-14.96111111111111","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"174","详细描述":"extremely faint, pretty large, irregularly round, gradually a little brighter middle","简略描述":"eF, pL, iR, glbM"},{"ID":"3503","标识":"NGC3503","M标识":"NGC3503","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"11h1m17.2s","赤经D(J2000)":"11.021444444444445","赤纬(J2000)":"-59h50m50s","赤纬D(J2000)":"-59.84722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"3","方位角":"","详细描述":"3 small (faint) stars of 10th magnitude in very faint nebula","简略描述":"3 S st 10 m in vF neb"},{"ID":"3504","标识":"NGC3504","M标识":"NGC3504","拓展名":"","组件":"","Class":"I 88","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"11h3m11.1s","赤经D(J2000)":"11.053083333333333","赤纬(J2000)":"+27h58m23s","赤纬D(J2000)":"27.973055555555554","可见光星等V":"11.1","摄影(蓝光)星等B":"11.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.7","短轴(分)":"2.1","方位角":"159","详细描述":"bright, large, extended, much brighter middle and nucleus, partially resolved (some stars seen), preceding (western) of 2","简略描述":"B, L, E, mbMN, rr, p of 2"},{"ID":"3505","标识":"NGC3505","M标识":"NGC3505","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h2m59.7s","赤经D(J2000)":"11.049916666666666","赤纬(J2000)":"-16h17m19s","赤纬D(J2000)":"-16.288611111111113","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"15","详细描述":"pretty faint, small, round, gradually a little brighter middle, 14th magnitude star near","简略描述":"pF, S, R, glbM, * 14 nr"},{"ID":"3506","标识":"NGC3506","M标识":"NGC3506","拓展名":"","组件":"","Class":"III 22","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h3m12.8s","赤经D(J2000)":"11.053555555555556","赤纬(J2000)":"+11h4m37s","赤纬D(J2000)":"11.076944444444445","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"1","方位角":"45","详细描述":"very faint, considerably small, round, very gradually very little brighter middle","简略描述":"vF, cS, R, vgvlbM"},{"ID":"3507","标识":"NGC3507","M标识":"NGC3507","拓展名":"","组件":"","Class":"IV 7","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h3m25.5s","赤经D(J2000)":"11.057083333333335","赤纬(J2000)":"+18h8m5s","赤纬D(J2000)":"18.134722222222223","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"3.4","短轴(分)":"2.9","方位角":"110","详细描述":"considerably faint, pretty large, round, suddenly brighter middle small star, 9th magnitude star attached 25°","简略描述":"cF, pL, R, sbMS *, * 9 att 25°"},{"ID":"3508","标识":"NGC3508","M标识":"NGC3508","拓展名":"","组件":"","Class":"II 507","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h2m59.7s","赤经D(J2000)":"11.049916666666666","赤纬(J2000)":"-16h17m19s","赤纬D(J2000)":"-16.288611111111113","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"15","详细描述":"pretty faint, small, round, gradually a little brighter middle, 14th magnitude star near","简略描述":"F, (H) S, (h) vL, bM, * nf inv"},{"ID":"3509","标识":"NGC3509","M标识":"NGC3509","拓展名":"","组件":"","Class":"III 598","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h4m24.4s","赤经D(J2000)":"11.073444444444444","赤纬(J2000)":"+4h49m42s","赤纬D(J2000)":"4.828333333333333","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.1","短轴(分)":"1","方位角":"40","详细描述":"extremely faint, small, a little extended?","简略描述":"eF, S, lE?"},{"ID":"3510","标识":"NGC3510","M标识":"NGC3510","拓展名":"","组件":"","Class":"II 365","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"11h3m43.7s","赤经D(J2000)":"11.062138888888889","赤纬(J2000)":"+28h53m5s","赤纬D(J2000)":"28.884722222222223","可见光星等V":"12.1","摄影(蓝光)星等B":"12.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"4.1","短轴(分)":"0.8","方位角":"163","详细描述":"faint, large, considerably extended, 7th magnitude star 8 arcmin distant at position angle 310°","简略描述":"F, L, cE, * 7, 310° 8'"},{"ID":"3511","标识":"NGC3511","M标识":"NGC3511","拓展名":"","组件":"","Class":"V 39","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h3m23.7s","赤经D(J2000)":"11.056583333333334","赤纬(J2000)":"-23h5m11s","赤纬D(J2000)":"-23.086388888888887","可见光星等V":"11","摄影(蓝光)星等B":"11.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"6","短轴(分)":"2.1","方位角":"76","详细描述":"very faint, very large, much extended","简略描述":"vF, vL, mE"},{"ID":"3512","标识":"NGC3512","M标识":"NGC3512","拓展名":"","组件":"","Class":"II 366","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"11h4m2.7s","赤经D(J2000)":"11.067416666666666","赤纬(J2000)":"+28h2m15s","赤纬D(J2000)":"28.0375","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"1.5","方位角":"132","详细描述":"faint, pretty small, round, pretty gradually brighter middle, following (eastern) of 2","简略描述":"F, pS, R, pgbM, f of 2"},{"ID":"3513","标识":"NGC3513","M标识":"NGC3513","拓展名":"","组件":"","Class":"V 40","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h3m45.8s","赤经D(J2000)":"11.062722222222224","赤纬(J2000)":"-23h14m39s","赤纬D(J2000)":"-23.24416666666667","可见光星等V":"11.5","摄影(蓝光)星等B":"11.9","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.9","短轴(分)":"2.4","方位角":"75","详细描述":"very faint, very large, much extended","简略描述":"vF, vL, mE"},{"ID":"3514","标识":"NGC3514","M标识":"NGC3514","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h3m59.9s","赤经D(J2000)":"11.066638888888889","赤纬(J2000)":"-18h46m50s","赤纬D(J2000)":"-18.780555555555555","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"115","详细描述":"very faint, pretty large, round, very gradually very little brighter middle","简略描述":"vF, pL, R, vgvlbM"},{"ID":"3515","标识":"NGC3515","M标识":"NGC3515","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"11h4m37.3s","赤经D(J2000)":"11.077027777777777","赤纬(J2000)":"+28h13m41s","赤纬D(J2000)":"28.228055555555553","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"55","详细描述":"very faint, small, round, several extremely faint stars involved","简略描述":"vF, S, R, sev eF st inv"},{"ID":"3516","标识":"NGC3516","M标识":"NGC3516","拓展名":"","组件":"","Class":"II 336","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h6m47.5s","赤经D(J2000)":"11.113194444444444","赤纬(J2000)":"+72h34m9s","赤纬D(J2000)":"72.56916666666666","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"30","详细描述":"pretty bright, very small, irregularly round, pretty suddenly much brighter starlike middle","简略描述":"pB, vS, iR, psmbM *"},{"ID":"3517","标识":"NGC3517","M标识":"NGC3517","拓展名":"","组件":"1","Class":"II 884","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h5m36.9s","赤经D(J2000)":"11.093583333333333","赤纬(J2000)":"+56h31m31s","赤纬D(J2000)":"56.525277777777774","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.8","方位角":"120","详细描述":"extremely faint, small, round, very gradually brighter middle","简略描述":"eF, S, R, vgbM"},{"ID":"3518","标识":"NGC3518","M标识":"NGC3518","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h4m1.9s","赤经D(J2000)":"10.067194444444445","赤纬(J2000)":"-6h28m29s","赤纬D(J2000)":"-6.474722222222223","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"162","详细描述":"extremely faint, extremely small, a little extended (110°)","简略描述":"eF, eS, lE"},{"ID":"3519","标识":"NGC3519","M标识":"NGC3519","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"11h4m2.7s","赤经D(J2000)":"11.067416666666666","赤纬(J2000)":"-61h22m5s","赤纬D(J2000)":"-61.36805555555556","可见光星等V":"7.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"cluster, pretty rich, pretty compressed","简略描述":"Cl, pRi, pC"},{"ID":"3520","标识":"NGC3520","M标识":"NGC3520","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1\/P","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h7m8.7s","赤经D(J2000)":"11.119083333333334","赤纬(J2000)":"-18h1m29s","赤纬D(J2000)":"-18.02472222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"1","方位角":"165","详细描述":"extremely faint, very small, irregularly round, gradually brighter middle, several very faint stars involved","简略描述":"eF, vS, iR, gbM, sev vF st inv"},{"ID":"3521","标识":"NGC3521","M标识":"NGC3521","拓展名":"","组件":"","Class":"I 13","业余排名":"5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h5m48.8s","赤经D(J2000)":"11.09688888888889","赤纬(J2000)":"-0h2m13s","赤纬D(J2000)":"-0.036944444444444446","可见光星等V":"9","摄影(蓝光)星等B":"9.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"11.2","短轴(分)":"5.4","方位角":"163","详细描述":"considerably bright, considerably large, much extended 140°±, very suddenly much brighter middle and nucleus","简略描述":"cB, cL, mE 140° ±, vsmbMN"},{"ID":"3522","标识":"NGC3522","M标识":"NGC3522","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h6m40.4s","赤经D(J2000)":"11.111222222222223","赤纬(J2000)":"+20h5m10s","赤纬D(J2000)":"20.08611111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"117","详细描述":"pretty faint, very small, a little extended","简略描述":"pF, vS, lE"},{"ID":"3523","标识":"NGC3523","M标识":"NGC3523","拓展名":"","组件":"","Class":"II 904","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"11h3m6.7s","赤经D(J2000)":"11.051861111111112","赤纬(J2000)":"+75h6m57s","赤纬D(J2000)":"75.11583333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"faint, pretty large, a little brighter middle (place doubtful)","简略描述":"F, pL, lbM (place doubtful)"},{"ID":"3524","标识":"NGC3524","M标识":"NGC3524","拓展名":"","组件":"","Class":"III 23","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h6m32.1s","赤经D(J2000)":"11.108916666666666","赤纬(J2000)":"+11h23m6s","赤纬D(J2000)":"11.385","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"14","详细描述":"faint, small, a little extended, pretty suddenly brighter middle, 2 stars to northwest in line","简略描述":"F, S, lE, psbM, 2 st np in line"},{"ID":"3525","标识":"NGC3525","M标识":"NGC3525","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h7m18.1s","赤经D(J2000)":"11.121694444444445","赤纬(J2000)":"-19h28m17s","赤纬D(J2000)":"-19.47138888888889","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.6","短轴(分)":"1.5","方位角":"59","详细描述":"faint, pretty small, gradually brighter middle and nucleus","简略描述":"F, pS, gbMN"},{"ID":"3526","标识":"NGC3526","M标识":"NGC3526","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h6m56.4s","赤经D(J2000)":"11.115666666666666","赤纬(J2000)":"+7h10m24s","赤纬D(J2000)":"7.173333333333334","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"55","详细描述":"extremely faint, very much extended, position angle 50°±","简略描述":"eF, vmE, pos 50° ±"},{"ID":"3527","标识":"NGC3527","M标识":"NGC3527","拓展名":"","组件":"","Class":"III 350","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h7m18.3s","赤经D(J2000)":"11.12175","赤纬(J2000)":"+28h31m40s","赤纬D(J2000)":"28.52777777777778","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.9","方位角":"159","详细描述":"extremely faint, small, 10th magnitude star 60 arcsec to west","简略描述":"eF, S, * 10 p 60\""},{"ID":"3528","标识":"NGC3528","M标识":"NGC3528","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h7m18.1s","赤经D(J2000)":"11.121694444444445","赤纬(J2000)":"-19h28m17s","赤纬D(J2000)":"-19.47138888888889","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.6","短轴(分)":"1.5","方位角":"59","详细描述":"faint, pretty small, gradually brighter middle and nucleus","简略描述":"F, S, R, pslbM, p of 2"},{"ID":"3529","标识":"NGC3529","M标识":"NGC3529","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h7m19.2s","赤经D(J2000)":"11.122","赤纬(J2000)":"-19h33m22s","赤纬D(J2000)":"-19.55611111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.8","方位角":"55","详细描述":"extremely faint, small, round, very little brighter middle, following (eastern) of 2","简略描述":"eF, S, R, vlbM, f of 2"},{"ID":"3530","标识":"NGC3530","M标识":"NGC3530","拓展名":"","组件":"","Class":"III 915","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h8m40.3s","赤经D(J2000)":"11.144527777777776","赤纬(J2000)":"+57h13m49s","赤纬D(J2000)":"57.23027777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"99","详细描述":"very faint, small, round, pretty gradually brighter middle","简略描述":"vF, S, R, pgbM"},{"ID":"3531","标识":"NGC3531","M标识":"NGC3531","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h6m56.4s","赤经D(J2000)":"11.115666666666666","赤纬(J2000)":"+7h10m24s","赤纬D(J2000)":"7.173333333333334","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"55","详细描述":"extremely faint, very much extended, position angle 50°±","简略描述":"E 50°, * 11 at sp end (? = 5546)"},{"ID":"3532","标识":"NGC3532","M标识":"NGC3532","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"许愿井星团","类型":"OCL","含重复类型":"OCL","形态":"II1m","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"11h5m40s","赤经D(J2000)":"11.094444444444445","赤纬(J2000)":"-58h44m0s","赤纬D(J2000)":"-58.733333333333334","可见光星等V":"3","摄影(蓝光)星等B":"3.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"50","短轴(分)":"","方位角":"","详细描述":"A very remarkable object, a cluster, extremely large, round, a little compressed, stars from 8th to 12th magnitude","简略描述":"!!, Cl, eL, R, lC, st 8…12"},{"ID":"3533","标识":"NGC3533","M标识":"NGC3533","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h7m7.5s","赤经D(J2000)":"11.11875","赤纬(J2000)":"-37h10m23s","赤纬D(J2000)":"-37.17305555555555","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.8","短轴(分)":"0.6","方位角":"65","详细描述":"most extremely faint, very small (faint) star attached","简略描述":"eeF, vS * att"},{"ID":"3534","标识":"NGC3534","M标识":"NGC3534","拓展名":"B","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h8m57s","赤经D(J2000)":"11.149166666666666","赤纬(J2000)":"+26h35m48s","赤纬D(J2000)":"26.596666666666664","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"170","详细描述":"very faint, 9th magnitude star 3 arcmin to northwest","简略描述":"vF, * 9 np 3'"},{"ID":"3535","标识":"NGC3535","M标识":"NGC3535","拓展名":"","组件":"","Class":"III 111","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h8m33.9s","赤经D(J2000)":"11.14275","赤纬(J2000)":"+4h49m57s","赤纬D(J2000)":"4.8325","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"178","详细描述":"considerably faint, very small, round, brighter middle, mottled but not resolved","简略描述":"cF, vS, R, bM, r"},{"ID":"3536","标识":"NGC3536","M标识":"NGC3536","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h8m51.2s","赤经D(J2000)":"11.147555555555556","赤纬(J2000)":"+28h28m34s","赤纬D(J2000)":"28.47611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"155","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"3537","标识":"NGC3537","M标识":"NGC3537","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h8m26.5s","赤经D(J2000)":"11.140694444444444","赤纬(J2000)":"-10h15m24s","赤纬D(J2000)":"-10.256666666666666","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"54","详细描述":"very faint, small, very faint star involved","简略描述":"vF, S, vF st inv"},{"ID":"3538","标识":"NGC3538","M标识":"NGC3538","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"11h11m32.9s","赤经D(J2000)":"11.192472222222223","赤纬(J2000)":"+75h34m16s","赤纬D(J2000)":"75.57111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, 17th magnitude star near","简略描述":"vF, pL, * 17 nr"},{"ID":"3539","标识":"NGC3539","M标识":"NGC3539","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h9m8.8s","赤经D(J2000)":"11.152444444444445","赤纬(J2000)":"+28h40m21s","赤纬D(J2000)":"28.6725","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"0","详细描述":"extremely faint","简略描述":"eF"},{"ID":"3540","标识":"NGC3540","M标识":"NGC3540","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h9m16s","赤经D(J2000)":"11.154444444444445","赤纬(J2000)":"+36h1m17s","赤纬D(J2000)":"36.021388888888886","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"63","详细描述":"very faint, round, pretty suddenly brighter middle, 7th magnitude star 7 arcmin to west","简略描述":"vF, R, psbM, * 7 p 7'"},{"ID":"3541","标识":"NGC3541","M标识":"NGC3541","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h8m32.2s","赤经D(J2000)":"11.142277777777778","赤纬(J2000)":"-10h29m31s","赤纬D(J2000)":"-10.491944444444444","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"15","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"138","详细描述":"nebulous star","简略描述":"Nebulous *"},{"ID":"3542","标识":"NGC3542","M标识":"NGC3542","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h9m55.6s","赤经D(J2000)":"11.165444444444445","赤纬(J2000)":"+36h56m47s","赤纬D(J2000)":"36.94638888888888","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"45","详细描述":"very faint, small, irregularly round, a little brighter middle, mottled but not resolved","简略描述":"vF, S, irrR, lbM, r"},{"ID":"3543","标识":"NGC3543","M标识":"NGC3543","拓展名":"","组件":"","Class":"III 920","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h10m56.5s","赤经D(J2000)":"11.18236111111111","赤纬(J2000)":"+61h20m49s","赤纬D(J2000)":"61.346944444444446","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"8","详细描述":"extremely faint, very small, extended 0°±, mottled but not resolved","简略描述":"eF, vS, E 0° ±, r"},{"ID":"3544","标识":"NGC3544","M标识":"NGC3544","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h11m30.4s","赤经D(J2000)":"11.191777777777778","赤纬(J2000)":"-18h17m24s","赤纬D(J2000)":"-18.290000000000003","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3","短轴(分)":"0.9","方位角":"94","详细描述":"very faint, large, much extended 95°, brighter middle, equal to (WH) II 819?","简略描述":"vF, L, mE 95°, bM, ? = II 819"},{"ID":"3545","标识":"NGC3545","M标识":"NGC3545","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h10m13.1s","赤经D(J2000)":"11.170305555555554","赤纬(J2000)":"+36h58m1s","赤纬D(J2000)":"36.966944444444444","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, very small, irregularly round, a little brighter middle, mottled but not resolved","简略描述":"vF, vS, irrR, lbM, r"},{"ID":"3546","标识":"NGC3546","M标识":"NGC3546","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h9m46.7s","赤经D(J2000)":"11.162972222222223","赤纬(J2000)":"-13h22m49s","赤纬D(J2000)":"-13.380277777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"100","详细描述":"nebulous 12th magnitude star, with another 12th magnitude star 2 arcmin to the northeast","简略描述":"Neb * 12, * 12 2' nf"},{"ID":"3547","标识":"NGC3547","M标识":"NGC3547","拓展名":"","组件":"","Class":"II 42","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h9m55.9s","赤经D(J2000)":"11.165527777777777","赤纬(J2000)":"+10h43m15s","赤纬D(J2000)":"10.720833333333333","可见光星等V":"12.8","摄影(蓝光)星等B":"13.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"0.9","方位角":"7","详细描述":"faint, small, a little extended, very little brighter middle","简略描述":"F, S, lE, vlbM"},{"ID":"3548","标识":"NGC3548","M标识":"NGC3548","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h9m16s","赤经D(J2000)":"11.154444444444445","赤纬(J2000)":"+36h1m17s","赤纬D(J2000)":"36.021388888888886","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"63","详细描述":"very faint, round, pretty suddenly brighter middle, 7th magnitude star 7 arcmin to west","简略描述":"eF, S, * 8, p"},{"ID":"3549","标识":"NGC3549","M标识":"NGC3549","拓展名":"","组件":"","Class":"I 220","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h10m56.8s","赤经D(J2000)":"11.182444444444444","赤纬(J2000)":"+53h23m17s","赤纬D(J2000)":"53.38805555555555","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.1","短轴(分)":"1","方位角":"38","详细描述":"considerably bright, considerably large, considerably extended 160°","简略描述":"cB, cL, cE 160°"},{"ID":"3550","标识":"NGC3550","M标识":"NGC3550","拓展名":"","组件":"","Class":"III 351","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h10m38.3s","赤经D(J2000)":"11.177305555555556","赤纬(J2000)":"+28h46m4s","赤纬D(J2000)":"28.767777777777777","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"faint (perhaps variable?), small, round, brighter middle, 9th magnitude star 1 arcmin to east, 1st of 4","简略描述":"F (? Var), S, R, bM, * 9 f 1', 1st of 4"},{"ID":"3551","标识":"NGC3551","M标识":"NGC3551","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h9m44.3s","赤经D(J2000)":"11.162305555555555","赤纬(J2000)":"+21h45m33s","赤纬D(J2000)":"21.759166666666665","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"1.8","短轴(分)":"1.7","方位角":"30","详细描述":"most extremely faint, very small, round, southwestern of 2","简略描述":"eeF, vS, R, sp of 2"},{"ID":"3552","标识":"NGC3552","M标识":"NGC3552","拓展名":"","组件":"","Class":"III 352","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h10m42.8s","赤经D(J2000)":"11.178555555555555","赤纬(J2000)":"+28h41m35s","赤纬D(J2000)":"28.693055555555556","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, very small, 2nd of 4","简略描述":"eF, vS, 2nd of 4"},{"ID":"3553","标识":"NGC3553","M标识":"NGC3553","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h10m40.3s","赤经D(J2000)":"11.17786111111111","赤纬(J2000)":"+28h41m9s","赤纬D(J2000)":"28.685833333333335","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"17","详细描述":"extremely faint, very small, forms double nebula with III 352","简略描述":"eF, vS, forms D neb with III 352"},{"ID":"3554","标识":"NGC3554","M标识":"NGC3554","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h10m47.8s","赤经D(J2000)":"11.179944444444445","赤纬(J2000)":"+28h39m38s","赤纬D(J2000)":"28.660555555555554","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, pretty small, round, brighter middle, 3rd of 4","简略描述":"vF, pS, R, bM, 3rd of 4"},{"ID":"3555","标识":"NGC3555","M标识":"NGC3555","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h9m50.2s","赤经D(J2000)":"11.163944444444445","赤纬(J2000)":"+21h48m38s","赤纬D(J2000)":"21.810555555555556","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"15","详细描述":"very faint, round, northeastern of 2","简略描述":"vF, R, nf of 2"},{"ID":"3556","标识":"NGC3556","M标识":"M108","拓展名":"","组件":"","Class":"V 46","业余排名":"1","中文名":"冲浪板星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h11m29.4s","赤经D(J2000)":"11.1915","赤纬(J2000)":"+55h40m22s","赤纬D(J2000)":"55.672777777777775","可见光星等V":"10","摄影(蓝光)星等B":"10.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"8.6","短轴(分)":"2.4","方位角":"80","详细描述":"considerably bright, very large, very much extended 79°, pretty bright middle, mottled but not resolved","简略描述":"cB, vL, vmE 79°, pbM, r"},{"ID":"3557","标识":"NGC3557","M标识":"NGC3557","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h9m57.4s","赤经D(J2000)":"11.165944444444445","赤纬(J2000)":"-37h32m22s","赤纬D(J2000)":"-37.53944444444444","可见光星等V":"10.4","摄影(蓝光)星等B":"11.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"4","短轴(分)":"3","方位角":"21","详细描述":"bright, small, round, pretty gradually much brighter middle, 1st of 3","简略描述":"B, S, R, pgmbM, 1st of 3"},{"ID":"3558","标识":"NGC3558","M标识":"NGC3558","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h10m55.9s","赤经D(J2000)":"11.182194444444443","赤纬(J2000)":"+28h32m37s","赤纬D(J2000)":"28.54361111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"138","详细描述":"pretty faint, small","简略描述":"pF, S"},{"ID":"3559","标识":"NGC3559","M标识":"NGC3559","拓展名":"","组件":"","Class":"III 79","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h10m45.1s","赤经D(J2000)":"11.179194444444445","赤纬(J2000)":"+12h0m59s","赤纬D(J2000)":"12.016388888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"55","详细描述":"extremely faint, pretty small, a little extended, mottled but not resolved","简略描述":"eF, pS, lE, r"},{"ID":"3560","标识":"NGC3560","M标识":"NGC3560","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S\/P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h10m45.1s","赤经D(J2000)":"11.179194444444445","赤纬(J2000)":"+12h0m59s","赤纬D(J2000)":"12.016388888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"55","详细描述":"extremely faint, pretty small, a little extended, mottled but not resolved","简略描述":"F, S, R, gbM"},{"ID":"3561","标识":"NGC3561","M标识":"NGC3561","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"安巴楚勉之结","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h11m13.2s","赤经D(J2000)":"11.187","赤纬(J2000)":"+28h41m48s","赤纬D(J2000)":"28.696666666666665","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, pretty large, 4th of 4","简略描述":"vF, pL, 4th of 4"},{"ID":"3562","标识":"NGC3562","M标识":"NGC3562","拓展名":"","组件":"","Class":"II 337","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"11h12m58.4s","赤经D(J2000)":"11.216222222222221","赤纬(J2000)":"+72h52m45s","赤纬D(J2000)":"72.87916666666666","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"16","详细描述":"pretty faint, pretty small, a little extended, gradually brighter middle, 15th magnitude star 70 arcsec distant at position angle 22°","简略描述":"pF, pS, lE, gbM, * 15, 22°, 70\""},{"ID":"3563","标识":"NGC3563","M标识":"NGC3563","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h11m25.2s","赤经D(J2000)":"11.190333333333333","赤纬(J2000)":"+26h57m51s","赤纬D(J2000)":"26.964166666666667","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"174","详细描述":"pretty faint, pretty large, 8th magnitude star 2 arcmin to north","简略描述":"pF, pL, * 8 m 2' n"},{"ID":"3564","标识":"NGC3564","M标识":"NGC3564","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h10m36.2s","赤经D(J2000)":"11.176722222222221","赤纬(J2000)":"-37h32m54s","赤纬D(J2000)":"-37.54833333333333","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"15","详细描述":"pretty faint, small, round, brighter middle, 2nd of 3","简略描述":"pF, S, R, bM, 2nd of 3"},{"ID":"3565","标识":"NGC3565","M标识":"NGC3565","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h7m47.8s","赤经D(J2000)":"11.129944444444446","赤纬(J2000)":"-20h1m20s","赤纬D(J2000)":"-20.022222222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"129","详细描述":"very faint, very small, round, gradually brighter middle and nucleus, 1st of 2","简略描述":"vF, vS, R, gbMN, 1st of 2"},{"ID":"3566","标识":"NGC3566","M标识":"NGC3566","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h7m52.1s","赤经D(J2000)":"11.13113888888889","赤纬(J2000)":"-20h1m44s","赤纬D(J2000)":"-20.028888888888886","可见光星等V":"15.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, extremely small, round, gradually brighter middle, 2nd of 2","简略描述":"eeF, eS, R, gbM, 2nd of 2"},{"ID":"3567","标识":"NGC3567","M标识":"NGC3567","拓展名":"","组件":"1","Class":"III 89","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h11m18.7s","赤经D(J2000)":"11.188527777777779","赤纬(J2000)":"+5h50m11s","赤纬D(J2000)":"5.836388888888888","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"132","详细描述":"extremely faint, round, suddenly brighter middle, mottled but not resolved","简略描述":"eF, R, sbM, r"},{"ID":"3568","标识":"NGC3568","M标识":"NGC3568","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h10m48.4s","赤经D(J2000)":"11.18011111111111","赤纬(J2000)":"-37h26m56s","赤纬D(J2000)":"-37.44888888888889","可见光星等V":"12","摄影(蓝光)星等B":"12.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.5","短轴(分)":"0.9","方位角":"7","详细描述":"very faint, pretty large, round, star involved, 3 bright stars near, 3rd of 3","简略描述":"vF, pL, R, * inv, 3 B st nr, 3rd of 3"},{"ID":"3569","标识":"NGC3569","M标识":"NGC3569","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h12m8s","赤经D(J2000)":"11.202222222222222","赤纬(J2000)":"+35h27m7s","赤纬D(J2000)":"35.45194444444445","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"1","方位角":"78","详细描述":"faint, very small, stellar","简略描述":"F, vS, stell"},{"ID":"3570","标识":"NGC3570","M标识":"NGC3570","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h12m3.3s","赤经D(J2000)":"11.200916666666666","赤纬(J2000)":"+27h35m25s","赤纬D(J2000)":"27.590277777777775","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"3571","标识":"NGC3571","M标识":"NGC3571","拓展名":"","组件":"","Class":"II 819","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h11m30.4s","赤经D(J2000)":"11.191777777777778","赤纬(J2000)":"-18h17m24s","赤纬D(J2000)":"-18.290000000000003","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3","短轴(分)":"0.9","方位角":"94","详细描述":"pretty faint, pretty large, irregular figure, brighter middle","简略描述":"pF, pL, iF, bM"},{"ID":"3572","标识":"NGC3572","M标识":"NGC3572","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2m","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"11h10m26.6s","赤经D(J2000)":"11.174055555555555","赤纬(J2000)":"-60h14m38s","赤纬D(J2000)":"-60.24388888888889","可见光星等V":"6.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"cluster, pretty rich, a little compressed","简略描述":"Cl, pRi, lC"},{"ID":"3573","标识":"NGC3573","M标识":"NGC3573","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h11m18.1s","赤经D(J2000)":"11.188361111111112","赤纬(J2000)":"-36h52m32s","赤纬D(J2000)":"-36.87555555555556","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.6","短轴(分)":"1","方位角":"4","详细描述":"extremely faint, small, round, gradually a little brighter middle, 3 stars of 11th magnitude to east","简略描述":"eF, S, R, glbM, 3 st 11 f"},{"ID":"3574","标识":"NGC3574","M标识":"NGC3574","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h12m12.1s","赤经D(J2000)":"11.20336111111111","赤纬(J2000)":"+27h37m31s","赤纬D(J2000)":"27.62527777777778","可见光星等V":"15.2","摄影(蓝光)星等B":"16.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"3575","标识":"NGC3575","M标识":"NGC3575","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h13m31.5s","赤经D(J2000)":"10.225416666666666","赤纬(J2000)":"+22h44m14s","赤纬D(J2000)":"22.737222222222222","可见光星等V":"11.6","摄影(蓝光)星等B":"12.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.1","短轴(分)":"2.7","方位角":"33","详细描述":"pretty bright, pretty large, round, 11th magnitude star to west","简略描述":"pB, pL, R, * 11 p"},{"ID":"3576","标识":"NGC3576","M标识":"NGC3576","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"自由女神星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"11h11m32.7s","赤经D(J2000)":"11.192416666666666","赤纬(J2000)":"-61h21m44s","赤纬D(J2000)":"-61.36222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"3","方位角":"","详细描述":"faint, a little extended, 1st of 6","简略描述":"F, lE, 1st of 6"},{"ID":"3577","标识":"NGC3577","M标识":"NGC3577","拓展名":"","组件":"","Class":"III 723","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h13m44.8s","赤经D(J2000)":"11.229111111111111","赤纬(J2000)":"+48h16m24s","赤纬D(J2000)":"48.27333333333333","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"179","详细描述":"extremely faint, very small, preceding (western) of 2","简略描述":"eF, vS, p of 2"},{"ID":"3578","标识":"NGC3578","M标识":"NGC3578","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h12m49.9s","赤经D(J2000)":"11.213861111111111","赤纬(J2000)":"-15h56m43s","赤纬D(J2000)":"-15.945277777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"doubtful object, probably a nebula","简略描述":"Doubtful object, probably a neb"},{"ID":"3579","标识":"NGC3579","M标识":"NGC3579","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"11h11m59.6s","赤经D(J2000)":"11.19988888888889","赤纬(J2000)":"-61h14m35s","赤纬D(J2000)":"-61.24305555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"15","方位角":"","详细描述":"faint, a little extended, suddenly brighter middle, 2nd of 6","简略描述":"F, lE, sbM, 2nd of 6"},{"ID":"3580","标识":"NGC3580","M标识":"NGC3580","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h13m16s","赤经D(J2000)":"11.221111111111112","赤纬(J2000)":"+3h39m27s","赤纬D(J2000)":"3.6574999999999998","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"177","详细描述":"very faint, 14th magnitude star to east","简略描述":"vF, * 14 f"},{"ID":"3581","标识":"NGC3581","M标识":"NGC3581","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"11h12m1.9s","赤经D(J2000)":"11.200527777777777","赤纬(J2000)":"-61h18m6s","赤纬D(J2000)":"-61.30166666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"12th magnitude star with fan-shaped nebula attached, 3rd of 6","简略描述":"* 12 with fan-shaped neb att, 3rd of 6"},{"ID":"3582","标识":"NGC3582","M标识":"NGC3582","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"11h12m11.9s","赤经D(J2000)":"11.203305555555556","赤纬(J2000)":"-61h16m24s","赤纬D(J2000)":"-61.27333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"bright, brighter stellar middle, 4th of 6","简略描述":"B, bM*, 4th of 6"},{"ID":"3583","标识":"NGC3583","M标识":"NGC3583","拓展名":"","组件":"","Class":"II 728","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h14m11s","赤经D(J2000)":"11.236388888888888","赤纬(J2000)":"+48h19m6s","赤纬D(J2000)":"48.318333333333335","可见光星等V":"11.1","摄影(蓝光)星等B":"11.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.8","短轴(分)":"1.8","方位角":"125","详细描述":"pretty bright, pretty large, round, very gradually much brighter middle","简略描述":"pB, pL, R, vgmbM"},{"ID":"3584","标识":"NGC3584","M标识":"NGC3584","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"11h12m19.8s","赤经D(J2000)":"11.205499999999999","赤纬(J2000)":"-61h13m42s","赤纬D(J2000)":"-61.22833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, large, extended 0°, brighter middle, 5th of 6","简略描述":"F, L, E 0°, bM, 5th of 6"},{"ID":"3585","标识":"NGC3585","M标识":"NGC3585","拓展名":"","组件":"","Class":"II 269","业余排名":"5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"11h13m17.3s","赤经D(J2000)":"11.221472222222223","赤纬(J2000)":"-26h45m18s","赤纬D(J2000)":"-26.755","可见光星等V":"9.9","摄影(蓝光)星等B":"10.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"4.6","短轴(分)":"2.5","方位角":"107","详细描述":"bright, pretty large, extended, very suddenly much brighter middle and nucleus, forming a triangle with 2 bright stars","简略描述":"B, pL, E, vsmbMN, 2 B st Δ"},{"ID":"3586","标识":"NGC3586","M标识":"NGC3586","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"11h12m29.9s","赤经D(J2000)":"11.208305555555555","赤纬(J2000)":"-61h21m8s","赤纬D(J2000)":"-61.352222222222224","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, extended 160°±, 6th of 6","简略描述":"eF, S, E 160° ±, 6th of 6"},{"ID":"3587","标识":"NGC3587","M标识":"M97","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"夜枭星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h14m47.7s","赤经D(J2000)":"11.246583333333332","赤纬(J2000)":"+55h1m10s","赤纬D(J2000)":"55.019444444444446","可见光星等V":"9.9","摄影(蓝光)星等B":"12","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.83","短轴(分)":"","方位角":"","详细描述":"a very remarkable object, a planetary nebula, very bright, very large, round, very very gradually then very suddenly bright middle, 150 arcsec diameter","简略描述":"!!, planetary, vB, vL, R, vvg, vsbM, 150\" d"},{"ID":"3588","标识":"NGC3588","M标识":"NGC3588","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m2.4s","赤经D(J2000)":"11.234","赤纬(J2000)":"+20h23m11s","赤纬D(J2000)":"20.386388888888888","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"150","详细描述":"very faint, considerably small, 4 seconds of time east and 8 arcmin south of δ Leonis","简略描述":"vF, cS, 4s f δ Leonis [& 8' s]"},{"ID":"3589","标识":"NGC3589","M标识":"NGC3589","拓展名":"","组件":"","Class":"III 921","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h15m13.3s","赤经D(J2000)":"11.253694444444445","赤纬(J2000)":"+60h42m2s","赤纬D(J2000)":"60.70055555555556","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"48","详细描述":"very faint, large, extended, very gradually brighter middle, in triangle of little (faint) stars","简略描述":"vF, L, E, vgbM, in Δ of L st"},{"ID":"3590","标识":"NGC3590","M标识":"NGC3590","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"11h12m58.9s","赤经D(J2000)":"11.21636111111111","赤纬(J2000)":"-60h47m20s","赤纬D(J2000)":"-60.788888888888884","可见光星等V":"8.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"cluster, pretty rich, compressed, extended","简略描述":"Cl, pRi, C, E"},{"ID":"3591","标识":"NGC3591","M标识":"NGC3591","拓展名":"","组件":"","Class":"III 529","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h14m3.2s","赤经D(J2000)":"11.234222222222222","赤纬(J2000)":"-14h5m12s","赤纬D(J2000)":"-14.086666666666668","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"150","详细描述":"very faint, small, irregularly round, a little brighter middle","简略描述":"vF, S, iR, lbM"},{"ID":"3592","标识":"NGC3592","M标识":"NGC3592","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m27.5s","赤经D(J2000)":"11.240972222222222","赤纬(J2000)":"+17h15m34s","赤纬D(J2000)":"17.259444444444444","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"120","详细描述":"extremely faint, small, pretty much extended, position angle 60°","简略描述":"eF, S, pmE, pos 60°"},{"ID":"3593","标识":"NGC3593","M标识":"NGC3593","拓展名":"","组件":"","Class":"I 29","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m37s","赤经D(J2000)":"11.243611111111111","赤纬(J2000)":"+12h49m6s","赤纬D(J2000)":"12.818333333333333","可见光星等V":"10.9","摄影(蓝光)星等B":"11.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"5.2","短轴(分)":"1.9","方位角":"92","详细描述":"bright, considerably large, extended 90±, pretty suddenly much brighter middle","简略描述":"B, cL, E 90±, psmbM"},{"ID":"3594","标识":"NGC3594","M标识":"NGC3594","拓展名":"","组件":"","Class":"III 770","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h16m13.9s","赤经D(J2000)":"11.27052777777778","赤纬(J2000)":"+55h42m17s","赤纬D(J2000)":"55.70472222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"10","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"3595","标识":"NGC3595","M标识":"NGC3595","拓展名":"","组件":"","Class":"III 706","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h15m25.4s","赤经D(J2000)":"11.257055555555555","赤纬(J2000)":"+47h26m49s","赤纬D(J2000)":"47.44694444444444","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"176","详细描述":"very faint, very small, very little extended, stellar, considerably bright star to north","简略描述":"vF, vS, vlE, stellar, cB * n"},{"ID":"3596","标识":"NGC3596","M标识":"NGC3596","拓展名":"","组件":"","Class":"II 102","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m6.1s","赤经D(J2000)":"11.251694444444444","赤纬(J2000)":"+14h47m13s","赤纬D(J2000)":"14.786944444444444","可见光星等V":"11.3","摄影(蓝光)星等B":"11.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"4","短轴(分)":"3.8","方位角":"138","详细描述":"pretty faint, large, round, gradually a little brighter middle","简略描述":"pF, L, R, glbM"},{"ID":"3597","标识":"NGC3597","M标识":"NGC3597","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h14m42s","赤经D(J2000)":"11.245","赤纬(J2000)":"-23h43m38s","赤纬D(J2000)":"-23.72722222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.8","短轴(分)":"1.4","方位角":"64","详细描述":"very faint, pretty small, round, brighter middle","简略描述":"vF, pS, R, bM"},{"ID":"3598","标识":"NGC3598","M标识":"NGC3598","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m11.5s","赤经D(J2000)":"11.253194444444444","赤纬(J2000)":"+17h15m45s","赤纬D(J2000)":"17.2625","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"35","详细描述":"faint, very small, stellar, star to north","简略描述":"F, vS, stell, * n"},{"ID":"3599","标识":"NGC3599","M标识":"NGC3599","拓展名":"","组件":"","Class":"II 49","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m26.8s","赤经D(J2000)":"11.257444444444445","赤纬(J2000)":"+18h6m37s","赤纬D(J2000)":"18.110277777777778","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.7","短轴(分)":"2.1","方位角":"99","详细描述":"bright, pretty small, round, pretty gradually much brighter middle","简略描述":"B, pS, R, pgmbM"},{"ID":"3600","标识":"NGC3600","M标识":"NGC3600","拓展名":"","组件":"","Class":"II 709","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h15m52s","赤经D(J2000)":"11.264444444444445","赤纬(J2000)":"+41h35m28s","赤纬D(J2000)":"41.59111111111111","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"4.1","短轴(分)":"0.8","方位角":"3","详细描述":"pretty faint, small, a little extended 0°±, very gradually brighter middle","简略描述":"pF, S, lE 0° ±, vgbM"},{"ID":"3601","标识":"NGC3601","M标识":"NGC3601","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m33.2s","赤经D(J2000)":"11.259222222222222","赤纬(J2000)":"+5h6m56s","赤纬D(J2000)":"5.115555555555555","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, pretty small, almost stellar","简略描述":"vF, pS, alm stell"},{"ID":"3602","标识":"NGC3602","M标识":"NGC3602","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m48.3s","赤经D(J2000)":"11.263416666666666","赤纬(J2000)":"+17h24m58s","赤纬D(J2000)":"17.41611111111111","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"48","详细描述":"most extremely faint, very small, almost stellar","简略描述":"eeF, vS, alm stell"},{"ID":"3603","标识":"NGC3603","M标识":"NGC3603","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I1pn","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"11h15m6.6s","赤经D(J2000)":"11.251833333333334","赤纬(J2000)":"-61h15m40s","赤纬D(J2000)":"-61.26111111111111","可见光星等V":"9.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"globular cluster and nebula, stars 15th to 18th magnitude","简略描述":"globular and neb, st 15…18"},{"ID":"3604","标识":"NGC3604","M标识":"NGC3604","拓展名":"","组件":"","Class":"II 626","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m30.1s","赤经D(J2000)":"11.291694444444444","赤纬(J2000)":"+4h33m19s","赤纬D(J2000)":"4.5552777777777775","可见光星等V":"12.2","摄影(蓝光)星等B":"12.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"1.6","方位角":"24","详细描述":"pretty bright, small, a little extended, much brighter middle","简略描述":"pB, S, lE, mbM"},{"ID":"3605","标识":"NGC3605","M标识":"NGC3605","拓展名":"","组件":"","Class":"III 27","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h16m46.6s","赤经D(J2000)":"11.279611111111112","赤纬(J2000)":"+18h1m3s","赤纬D(J2000)":"18.0175","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"12","详细描述":"faint, small, round, southwestern of 3","简略描述":"F, S, R, sp of 3"},{"ID":"3606","标识":"NGC3606","M标识":"NGC3606","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"11h16m15.6s","赤经D(J2000)":"11.271","赤纬(J2000)":"-33h49m39s","赤纬D(J2000)":"-33.8275","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"168","详细描述":"extremely faint, small, round, gradually brighter middle","简略描述":"eF, S, R, gbM"},{"ID":"3607","标识":"NGC3607","M标识":"NGC3607","拓展名":"","组件":"","Class":"II 50","业余排名":"5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h16m54.5s","赤经D(J2000)":"11.281805555555556","赤纬(J2000)":"+18h3m8s","赤纬D(J2000)":"18.052222222222223","可见光星等V":"9.9","摄影(蓝光)星等B":"10.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"4.6","短轴(分)":"4","方位角":"120","详细描述":"very bright, large, round, very much brighter middle, 2nd of 3","简略描述":"vB, L, R, vmbM, 2nd of 3"},{"ID":"3608","标识":"NGC3608","M标识":"NGC3608","拓展名":"","组件":"","Class":"II 51","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h16m59s","赤经D(J2000)":"11.283055555555556","赤纬(J2000)":"+18h8m53s","赤纬D(J2000)":"18.148055555555555","可见光星等V":"10.8","摄影(蓝光)星等B":"11.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.2","短轴(分)":"2.6","方位角":"75","详细描述":"bright, pretty large, round, pretty suddenly brighter middle, 3rd of 3","简略描述":"B, pL, R, psbM, 3rd of 3"},{"ID":"3609","标识":"NGC3609","M标识":"NGC3609","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m50.6s","赤经D(J2000)":"11.29738888888889","赤纬(J2000)":"+26h37m31s","赤纬D(J2000)":"26.62527777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1","方位角":"50","详细描述":"pretty faint, small, brighter middle","简略描述":"pF, S, bM"},{"ID":"3610","标识":"NGC3610","M标识":"NGC3610","拓展名":"","组件":"","Class":"I 270","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h18m24.9s","赤经D(J2000)":"11.306916666666668","赤纬(J2000)":"+58h47m12s","赤纬D(J2000)":"58.78666666666666","可见光星等V":"10.8","摄影(蓝光)星等B":"11.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.7","短轴(分)":"2.3","方位角":"144","详细描述":"very bright, pretty small, a little extended 90°±, very suddenly very much brighter middle and small nucleus","简略描述":"vB, pS, lE 90° ±, vsvmbMSN"},{"ID":"3611","标识":"NGC3611","M标识":"NGC3611","拓展名":"","组件":"","Class":"II 521","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m30.1s","赤经D(J2000)":"11.291694444444444","赤纬(J2000)":"+4h33m19s","赤纬D(J2000)":"4.5552777777777775","可见光星等V":"12.2","摄影(蓝光)星等B":"12.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"1.6","方位角":"24","详细描述":"pretty bright, small, a little extended, much brighter middle","简略描述":"pF, cS, iR, psmbM, * 10 np 3'"},{"ID":"3612","标识":"NGC3612","M标识":"NGC3612","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m50.6s","赤经D(J2000)":"11.29738888888889","赤纬(J2000)":"+26h37m31s","赤纬D(J2000)":"26.62527777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1","方位角":"50","详细描述":"pretty faint, small, brighter middle","简略描述":"pL, dif, * 10·11 nf 2'"},{"ID":"3613","标识":"NGC3613","M标识":"NGC3613","拓展名":"","组件":"","Class":"I 271","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h18m35.9s","赤经D(J2000)":"11.309972222222223","赤纬(J2000)":"+58h0m2s","赤纬D(J2000)":"58.00055555555556","可见光星等V":"10.9","摄影(蓝光)星等B":"11.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.9","短轴(分)":"1.9","方位角":"102","详细描述":"very bright, considerably large, much extended 305°, suddenly much brighter middle and nucleus","简略描述":"vB, cL, mE 305°, smbMN"},{"ID":"3614","标识":"NGC3614","M标识":"NGC3614","拓展名":"","组件":"","Class":"II 729","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h18m21.6s","赤经D(J2000)":"11.306000000000001","赤纬(J2000)":"+45h44m55s","赤纬D(J2000)":"45.74861111111111","可见光星等V":"11.6","摄影(蓝光)星等B":"12.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"4.6","短轴(分)":"2.6","方位角":"104","详细描述":"faint, pretty large, a little extended 90°±, gradually a little brighter middle, mottled but not resolved","简略描述":"F, pL, lE 90° ±, glbM, r"},{"ID":"3615","标识":"NGC3615","M标识":"NGC3615","拓展名":"","组件":"","Class":"III 333","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h18m6.5s","赤经D(J2000)":"11.301805555555557","赤纬(J2000)":"+23h23m51s","赤纬D(J2000)":"23.3975","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"40","详细描述":"considerably faint, very small, suddenly much brighter middle, stellar, preceding (western) of 2","简略描述":"cF, vS, smbM, stellar, p of 2"},{"ID":"3616","标识":"NGC3616","M标识":"NGC3616","拓展名":"","组件":"","Class":"III 76","业余排名":"15","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h18m8.6s","赤经D(J2000)":"11.30238888888889","赤纬(J2000)":"+14h45m58s","赤纬D(J2000)":"14.766111111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large","简略描述":"eF, pL"},{"ID":"3617","标识":"NGC3617","M标识":"NGC3617","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"11h17m50.8s","赤经D(J2000)":"11.297444444444444","赤纬(J2000)":"-26h8m2s","赤纬D(J2000)":"-26.133888888888887","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"147","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"3618","标识":"NGC3618","M标识":"NGC3618","拓展名":"","组件":"","Class":"III 334","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h18m32.4s","赤经D(J2000)":"11.309000000000001","赤纬(J2000)":"+23h28m8s","赤纬D(J2000)":"23.468888888888888","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"175","详细描述":"very faint, small, following (eastern) of 2","简略描述":"vF, S, f of 2"},{"ID":"3619","标识":"NGC3619","M标识":"NGC3619","拓展名":"","组件":"","Class":"I 244","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h19m21.5s","赤经D(J2000)":"11.32263888888889","赤纬(J2000)":"+57h45m30s","赤纬D(J2000)":"57.75833333333333","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.7","短轴(分)":"2.3","方位角":"57","详细描述":"considerably bright, considerably large, round, very gradually much brighter middle","简略描述":"cB, cL, R, vgmbM"},{"ID":"3620","标识":"NGC3620","M标识":"NGC3620","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"堰蜓座","星座(En)":"CHA","赤经(J2000)":"11h16m5s","赤经D(J2000)":"11.268055555555556","赤纬(J2000)":"-76h13m2s","赤纬D(J2000)":"-76.21722222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"2.7","短轴(分)":"1.1","方位角":"78","详细描述":"faint, pretty small, pretty much extended, gradually brighter middle","简略描述":"F, pS, pmE, gbM"},{"ID":"3621","标识":"NGC3621","M标识":"NGC3621","拓展名":"","组件":"","Class":"I 241","业余排名":"3","中文名":"眼镜框星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"11h18m15.8s","赤经D(J2000)":"11.304388888888889","赤纬(J2000)":"-32h48m40s","赤纬D(J2000)":"-32.81111111111111","可见光星等V":"9.7","摄影(蓝光)星等B":"10.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"12.3","短轴(分)":"6.8","方位角":"159","详细描述":"considerably bright, very large, extended 160°, among 4 stars","简略描述":"cB, vL, E 160°, am 4 st"},{"ID":"3622","标识":"NGC3622","M标识":"NGC3622","拓展名":"","组件":"","Class":"II 879","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h20m12.2s","赤经D(J2000)":"11.336722222222223","赤纬(J2000)":"+67h14m31s","赤纬D(J2000)":"67.24194444444444","可见光星等V":"13.2","摄影(蓝光)星等B":"13.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"7","详细描述":"pretty bright, small, round, gradually brighter middle","简略描述":"pB, S, R, gbM"},{"ID":"3623","标识":"NGC3623","M标识":"M65","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"狮子座三重星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h18m55.6s","赤经D(J2000)":"11.315444444444445","赤纬(J2000)":"+13h5m27s","赤纬D(J2000)":"13.090833333333334","可见光星等V":"9.3","摄影(蓝光)星等B":"10.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"9.8","短轴(分)":"2.9","方位角":"174","详细描述":"bright, very large, much extended 165°±, gradually brighter middle and bright nucleus","简略描述":"B, vL, mE 165° ±, gbMBN"},{"ID":"3624","标识":"NGC3624","M标识":"NGC3624","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h18m50.9s","赤经D(J2000)":"11.31413888888889","赤纬(J2000)":"+7h31m15s","赤纬D(J2000)":"7.520833333333333","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"162","详细描述":"extremely faint","简略描述":"eF"},{"ID":"3625","标识":"NGC3625","M标识":"NGC3625","拓展名":"","组件":"","Class":"II 885","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h20m31.2s","赤经D(J2000)":"11.342","赤纬(J2000)":"+57h46m52s","赤纬D(J2000)":"57.78111111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2","短轴(分)":"0.6","方位角":"148","详细描述":"faint, small, a little extended 135°±","简略描述":"F, S, lE 135° ±"},{"ID":"3626","标识":"NGC3626","M标识":"NGC3626","拓展名":"","组件":"","Class":"II 52","业余排名":"2","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m3.6s","赤经D(J2000)":"11.334333333333333","赤纬(J2000)":"+18h21m24s","赤纬D(J2000)":"18.35666666666667","可见光星等V":"11","摄影(蓝光)星等B":"11.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.7","短轴(分)":"1.9","方位角":"157","详细描述":"bright, small, very little extended, suddenly brighter middle","简略描述":"B, S, vlE, sbM"},{"ID":"3627","标识":"NGC3627","M标识":"M66","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"狮子座三重星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m15.1s","赤经D(J2000)":"11.337527777777778","赤纬(J2000)":"+12h59m24s","赤纬D(J2000)":"12.989999999999998","可见光星等V":"8.9","摄影(蓝光)星等B":"9.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"9.1","短轴(分)":"4.1","方位角":"173","详细描述":"bright, very large, much extended 150°, much brighter middle, 2 stars to northwest","简略描述":"B, vL, mE 150°, mbM, 2 st np"},{"ID":"3628","标识":"NGC3628","M标识":"NGC3628","拓展名":"","组件":"","Class":"V 8","业余排名":"5","中文名":"汉堡星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m16.7s","赤经D(J2000)":"11.337972222222223","赤纬(J2000)":"+13h35m24s","赤纬D(J2000)":"13.59","可见光星等V":"9.5","摄影(蓝光)星等B":"10.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"13.1","短轴(分)":"3.1","方位角":"104","详细描述":"pretty bright, very large, very much extended 102°","简略描述":"pB, vL, vmE 102°"},{"ID":"3629","标识":"NGC3629","M标识":"NGC3629","拓展名":"","组件":"","Class":"II 338","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m31.7s","赤经D(J2000)":"11.34213888888889","赤纬(J2000)":"+26h57m46s","赤纬D(J2000)":"26.962777777777777","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.3","短轴(分)":"1.6","方位角":"30","详细描述":"considerably faint, large, round, very gradually very little brighter middle","简略描述":"cF, L, R, vgvlbM"},{"ID":"3630","标识":"NGC3630","M标识":"NGC3630","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m16.9s","赤经D(J2000)":"11.338027777777778","赤纬(J2000)":"+2h57m52s","赤纬D(J2000)":"2.9644444444444447","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2","短轴(分)":"0.8","方位角":"37","详细描述":"pretty bright, small, round, suddenly much brighter middle and nucleus","简略描述":"pB, S, R, smbMN"},{"ID":"3631","标识":"NGC3631","M标识":"NGC3631","拓展名":"","组件":"","Class":"I 226","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h21m2.7s","赤经D(J2000)":"11.35075","赤纬(J2000)":"+53h10m11s","赤纬D(J2000)":"53.16972222222222","可见光星等V":"10.4","摄影(蓝光)星等B":"11","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"5","短轴(分)":"3.7","方位角":"114","详细描述":"pretty bright, large, round, suddenly very much brighter middle and mottled but not resolved nucleus","简略描述":"pB, L, R, svmbMrN"},{"ID":"3632","标识":"NGC3632","M标识":"NGC3632","拓展名":"","组件":"","Class":"II 30","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m3.6s","赤经D(J2000)":"11.334333333333333","赤纬(J2000)":"+18h21m24s","赤纬D(J2000)":"18.35666666666667","可见光星等V":"11","摄影(蓝光)星等B":"11.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.7","短轴(分)":"1.9","方位角":"157","详细描述":"bright, small, very little extended, suddenly brighter middle","简略描述":"pB, * inv"},{"ID":"3633","标识":"NGC3633","M标识":"NGC3633","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m26.2s","赤经D(J2000)":"11.340611111111112","赤纬(J2000)":"+3h35m8s","赤纬D(J2000)":"3.5855555555555556","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"72","详细描述":"very faint, small, round, 2 stars near","简略描述":"vF, S, R, 2 st nr"},{"ID":"3634","标识":"NGC3634","M标识":"NGC3634","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h20m30.3s","赤经D(J2000)":"11.341750000000001","赤纬(J2000)":"-9h0m49s","赤纬D(J2000)":"-9.01361111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"100","详细描述":"extremely faint, extremely small, round, brighter middle and nucleus, 0.4 arcmin from NGC 3635 at position angle 85°","简略描述":"eF, eS, R, bMN, 85° dist 0'.4"},{"ID":"3635","标识":"NGC3635","M标识":"NGC3635","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h20m31.3s","赤经D(J2000)":"11.342027777777778","赤纬(J2000)":"-9h0m47s","赤纬D(J2000)":"-9.013055555555555","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.7","短轴(分)":"0.6","方位角":"18","详细描述":"extremely faint, extremely small, round, brighter middle and nucleus, 0.4 arcmin from NGC 3634 at position angle 85°","简略描述":"eF, eS, R, bMN, 85° dist 0'.4"},{"ID":"3636","标识":"NGC3636","M标识":"NGC3636","拓展名":"","组件":"","Class":"II 550","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h20m25s","赤经D(J2000)":"11.340277777777779","赤纬(J2000)":"-10h16m55s","赤纬D(J2000)":"-10.281944444444445","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"faint, very small, round, a little brighter middle, 7th magnitude star to east, preceding (western) of 2","简略描述":"F, vS, R, lbM, * 7 f, p of 2"},{"ID":"3637","标识":"NGC3637","M标识":"NGC3637","拓展名":"","组件":"","Class":"II 551","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h20m39.6s","赤经D(J2000)":"11.344333333333333","赤纬(J2000)":"-10h15m25s","赤纬D(J2000)":"-10.256944444444445","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.8","短轴(分)":"1.7","方位角":"126","详细描述":"faint, very small, round, pretty suddenly brighter middle, 7th magnitude star to west, following (eastern) of 2","简略描述":"F, vS, R, psbM, * 7 p, f of 2"},{"ID":"3638","标识":"NGC3638","M标识":"NGC3638","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h20m9.9s","赤经D(J2000)":"11.336083333333335","赤纬(J2000)":"-8h6m20s","赤纬D(J2000)":"-8.105555555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.3","短轴(分)":"0.7","方位角":"141","详细描述":"extremely faint, very small, 2 stars of 10th magnitude to east","简略描述":"eF, vS, 2 st 10 f"},{"ID":"3639","标识":"NGC3639","M标识":"NGC3639","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m35.5s","赤经D(J2000)":"11.35986111111111","赤纬(J2000)":"+18h27m31s","赤纬D(J2000)":"18.45861111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"39","详细描述":"pretty faint, small, round, very little brighter middle, 15 arcmin east of h856","简略描述":"pF, S, R, vlbM, 15' f h 856"},{"ID":"3640","标识":"NGC3640","M标识":"NGC3640","拓展名":"","组件":"","Class":"II 33","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m6.7s","赤经D(J2000)":"11.351861111111111","赤纬(J2000)":"+3h14m5s","赤纬D(J2000)":"3.2347222222222225","可见光星等V":"10.4","摄影(蓝光)星等B":"11.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"4","短轴(分)":"3.2","方位角":"100","详细描述":"bright, pretty large, round, pretty suddenly brighter middle","简略描述":"B, pL, R, psbM"},{"ID":"3641","标识":"NGC3641","M标识":"NGC3641","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m8.8s","赤经D(J2000)":"11.352444444444444","赤纬(J2000)":"+3h11m41s","赤纬D(J2000)":"3.194722222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"faint, very small, almost stellar, (WH) II 33 (= NGC 3640) 2 arcmin to north","简略描述":"F, vS, alm stell, II 33 2' n"},{"ID":"3642","标识":"NGC3642","M标识":"NGC3642","拓展名":"","组件":"","Class":"I 245","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h22m17.5s","赤经D(J2000)":"11.371527777777779","赤纬(J2000)":"+59h4m30s","赤纬D(J2000)":"59.075","可见光星等V":"11.2","摄影(蓝光)星等B":"11.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"5.5","短轴(分)":"4.7","方位角":"105","详细描述":"pretty bright, pretty large, round, very gradually brighter middle","简略描述":"pB, pL, R, vgbM"},{"ID":"3643","标识":"NGC3643","M标识":"NGC3643","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m24.9s","赤经D(J2000)":"11.356916666666667","赤纬(J2000)":"+3h0m51s","赤纬D(J2000)":"3.0141666666666667","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"99","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"3644","标识":"NGC3644","M标识":"NGC3644","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m32.9s","赤经D(J2000)":"11.35913888888889","赤纬(J2000)":"+2h48m37s","赤纬D(J2000)":"2.8102777777777774","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"63","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"3645","标识":"NGC3645","M标识":"NGC3645","拓展名":"","组件":"","Class":"II 32","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m16.9s","赤经D(J2000)":"11.338027777777778","赤纬(J2000)":"+2h57m52s","赤纬D(J2000)":"2.9644444444444447","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2","短轴(分)":"0.8","方位角":"37","详细描述":"pretty bright, small, round, suddenly much brighter middle and nucleus","简略描述":"pB, S, E, bM"},{"ID":"3646","标识":"NGC3646","M标识":"NGC3646","拓展名":"","组件":"","Class":"III 15","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc\/P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m43.2s","赤经D(J2000)":"11.362","赤纬(J2000)":"+20h10m9s","赤纬D(J2000)":"20.16916666666667","可见光星等V":"11.1","摄影(蓝光)星等B":"11.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.9","短轴(分)":"2.2","方位角":"50","详细描述":"considerably faint, considerably large, a little extended, gradually brighter middle, southwestern of 2","简略描述":"cF, cL, lE, gbM, sp of 2"},{"ID":"3647","标识":"NGC3647","M标识":"NGC3647","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m32.5s","赤经D(J2000)":"11.359027777777778","赤纬(J2000)":"+2h53m14s","赤纬D(J2000)":"2.8872222222222224","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint nebulous star","简略描述":"eF neb *"},{"ID":"3648","标识":"NGC3648","M标识":"NGC3648","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h22m31.3s","赤经D(J2000)":"11.375361111111111","赤纬(J2000)":"+39h52m37s","赤纬D(J2000)":"39.87694444444445","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"75","详细描述":"pretty bright, small, pretty much extended, brighter middle and nucleus perhaps a close double star?","简略描述":"pB, S, pmE, bMN = close ** ?"},{"ID":"3649","标识":"NGC3649","M标识":"NGC3649","拓展名":"","组件":"","Class":"III 16","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m14.8s","赤经D(J2000)":"11.370777777777779","赤纬(J2000)":"+20h12m31s","赤纬D(J2000)":"20.20861111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"140","详细描述":"very faint, pretty small, round, gradually brighter middle, northeastern of 2","简略描述":"vF, pS, R, gbM, nf of 2"},{"ID":"3650","标识":"NGC3650","M标识":"NGC3650","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m35.4s","赤经D(J2000)":"11.3765","赤纬(J2000)":"+20h42m17s","赤纬D(J2000)":"20.704722222222223","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"54","详细描述":"extremely faint, small, round, between 2 stars","简略描述":"eF, S, R, bet 2 st"},{"ID":"3651","标识":"NGC3651","M标识":"NGC3651","拓展名":"","组件":"1","Class":"III 335","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m26.3s","赤经D(J2000)":"11.373972222222223","赤纬(J2000)":"+24h17m56s","赤纬D(J2000)":"24.29888888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"considerably faint, very small, round, brighter middle, northwest of 2","简略描述":"cF, vS, R, bM, np of 2"},{"ID":"3652","标识":"NGC3652","M标识":"NGC3652","拓展名":"","组件":"","Class":"II 775","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h22m39s","赤经D(J2000)":"11.377500000000001","赤纬(J2000)":"+37h45m54s","赤纬D(J2000)":"37.765","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.6","短轴(分)":"0.7","方位角":"150","详细描述":"pretty faint, considerably large, a little extended, very gradually brighter middle","简略描述":"pF, cL, lE, vgbM"},{"ID":"3653","标识":"NGC3653","M标识":"NGC3653","拓展名":"","组件":"","Class":"III 336","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m30s","赤经D(J2000)":"11.375","赤纬(J2000)":"+24h16m47s","赤纬D(J2000)":"24.279722222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"79","详细描述":"very faint, very small, southeastern of 2","简略描述":"vF, vS, sf of 2"},{"ID":"3654","标识":"NGC3654","M标识":"NGC3654","拓展名":"","组件":"","Class":"II 880","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h24m10.9s","赤经D(J2000)":"11.403027777777778","赤纬(J2000)":"+69h24m46s","赤纬D(J2000)":"69.41277777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"21","详细描述":"faint, small, a little extended 15°±","简略描述":"F, S, lE 15° ±"},{"ID":"3655","标识":"NGC3655","M标识":"NGC3655","拓展名":"","组件":"","Class":"I 5","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m54.7s","赤经D(J2000)":"11.381861111111112","赤纬(J2000)":"+16h35m23s","赤纬D(J2000)":"16.58972222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1.5","短轴(分)":"1","方位角":"30","详细描述":"pretty bright, pretty small, irregularly round, brighter middle, mottled but not resolved","简略描述":"pB, pS, iR, bM, r"},{"ID":"3656","标识":"NGC3656","M标识":"NGC3656","拓展名":"","组件":"","Class":"II 782","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h23m38.6s","赤经D(J2000)":"11.394055555555555","赤纬(J2000)":"+53h50m32s","赤纬D(J2000)":"53.842222222222226","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.6","方位角":"","详细描述":"pretty bright, small, round, very gradually brighter middle, 12th magnitude star to west","简略描述":"pB, S, R, vgbM, * 12 p"},{"ID":"3657","标识":"NGC3657","M标识":"NGC3657","拓展名":"","组件":"","Class":"III 768","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h23m55.4s","赤经D(J2000)":"11.398722222222222","赤纬(J2000)":"+52h55m16s","赤纬D(J2000)":"52.92111111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"168","详细描述":"considerably faint, very small, round, stellar","简略描述":"cF, vS, R, stellar"},{"ID":"3658","标识":"NGC3658","M标识":"NGC3658","拓展名":"","组件":"","Class":"IV 59","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h23m58.5s","赤经D(J2000)":"11.399583333333332","赤纬(J2000)":"+38h33m49s","赤纬D(J2000)":"38.56361111111111","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"1.7","方位角":"27","详细描述":"faint, small, round, suddenly very much brighter middle and nucleus = 14th magnitude star","简略描述":"F, S, R, svmbMN = * 14 mag"},{"ID":"3659","标识":"NGC3659","M标识":"NGC3659","拓展名":"","组件":"","Class":"II 53","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h23m45.1s","赤经D(J2000)":"11.395861111111111","赤纬(J2000)":"+17h49m1s","赤纬D(J2000)":"17.816944444444445","可见光星等V":"12.2","摄影(蓝光)星等B":"12.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.3","短轴(分)":"1.3","方位角":"60","详细描述":"considerably faint, small, a little extended, mottled but not resolved","简略描述":"cF, S, lE, r"},{"ID":"3660","标识":"NGC3660","M标识":"NGC3660","拓展名":"","组件":"","Class":"II 635","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h23m32.2s","赤经D(J2000)":"11.392277777777778","赤纬(J2000)":"-8h39m31s","赤纬D(J2000)":"-8.658611111111112","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.8","短轴(分)":"2.3","方位角":"110","详细描述":"faint, pretty large, irregularly round, very gradually brighter middle","简略描述":"F, pL, iR, vgbM"},{"ID":"3661","标识":"NGC3661","M标识":"NGC3661","拓展名":"","组件":"","Class":"III 530","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h23m38.3s","赤经D(J2000)":"11.393972222222223","赤纬(J2000)":"-13h49m51s","赤纬D(J2000)":"-13.830833333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"137","详细描述":"faint, small, round, stellar, preceding (western) of 2","简略描述":"F, S, R, stellar, p of 2"},{"ID":"3662","标识":"NGC3662","M标识":"NGC3662","拓展名":"","组件":"","Class":"IV 4","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h23m46.4s","赤经D(J2000)":"11.396222222222221","赤纬(J2000)":"-1h6m19s","赤纬D(J2000)":"-1.1052777777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"25","详细描述":"very faint, small, attached to 13th magnitude star","简略描述":"vF, S, att to * 13 m"},{"ID":"3663","标识":"NGC3663","M标识":"NGC3663","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h23m59.9s","赤经D(J2000)":"11.399972222222221","赤纬(J2000)":"-12h17m48s","赤纬D(J2000)":"-12.296666666666667","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2","短轴(分)":"1.4","方位角":"85","详细描述":"extremely faint, fan shaped, star close","简略描述":"eF, fan shaped, * close"},{"ID":"3664","标识":"NGC3664","M标识":"NGC3664","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm\/P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h24m24.4s","赤经D(J2000)":"11.406777777777778","赤纬(J2000)":"+3h19m35s","赤纬D(J2000)":"3.326388888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2","短轴(分)":"1.9","方位角":"42","详细描述":"pretty faint, binuclear","简略描述":"pF, biN"},{"ID":"3665","标识":"NGC3665","M标识":"NGC3665","拓展名":"","组件":"","Class":"I 219","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h24m43.6s","赤经D(J2000)":"11.41211111111111","赤纬(J2000)":"+38h45m47s","赤纬D(J2000)":"38.76305555555555","可见光星等V":"10.8","摄影(蓝光)星等B":"11.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"4.3","短轴(分)":"3.3","方位角":"18","详细描述":"considerably bright, considerably large, irregularly round, pretty gradually much brighter middle","简略描述":"cB, cL, iR, pgmbM"},{"ID":"3666","标识":"NGC3666","M标识":"NGC3666","拓展名":"","组件":"","Class":"I 20","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h24m26.2s","赤经D(J2000)":"11.407277777777779","赤纬(J2000)":"+11h20m32s","赤纬D(J2000)":"11.342222222222222","可见光星等V":"12.3","摄影(蓝光)星等B":"12.7","B-V":"0.4","表面亮度(mag\/arcmin2)":"14","长轴(分)":"4.4","短轴(分)":"1","方位角":"100","详细描述":"faint, extended 90°±, 6th magnitude star 34 seconds to east and 5 arcmin to north","简略描述":"F, E 90° ±, 6 mag * f 34s, 5' n"},{"ID":"3667","标识":"NGC3667","M标识":"NGC3667","拓展名":"","组件":"","Class":"III 531","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h24m16.9s","赤经D(J2000)":"11.404694444444445","赤纬(J2000)":"-13h51m24s","赤纬D(J2000)":"-13.856666666666666","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"85","详细描述":"pretty faint, pretty large, irregularly round, very little brighter middle","简略描述":"pF, pL, iR, vlbM"},{"ID":"3668","标识":"NGC3668","M标识":"NGC3668","拓展名":"","组件":"","Class":"II 845","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h25m30.3s","赤经D(J2000)":"11.425083333333333","赤纬(J2000)":"+63h26m47s","赤纬D(J2000)":"63.44638888888888","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"135","详细描述":"faint, pretty small, irregularly round, gradually brighter middle, 9th magnitude star to northwest","简略描述":"F, pS, iR, gbM, * 9 np"},{"ID":"3669","标识":"NGC3669","M标识":"NGC3669","拓展名":"","组件":"","Class":"II 829","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h25m26.5s","赤经D(J2000)":"11.424027777777777","赤纬(J2000)":"+57h43m17s","赤纬D(J2000)":"57.72138888888889","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"2","短轴(分)":"0.5","方位角":"153","详细描述":"very faint, pretty large, pretty much extended 135°±, extremely mottled but not resolved","简略描述":"vF, pL, pmE 135° ±, er"},{"ID":"3670","标识":"NGC3670","M标识":"NGC3670","拓展名":"","组件":"","Class":"III 337","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h24m49.6s","赤经D(J2000)":"11.413777777777778","赤纬(J2000)":"+23h56m44s","赤纬D(J2000)":"23.945555555555554","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"35","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"3671","标识":"NGC3671","M标识":"NGC3671","拓展名":"","组件":"","Class":"III 922","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h25m52.5s","赤经D(J2000)":"11.431249999999999","赤纬(J2000)":"+60h28m48s","赤纬D(J2000)":"60.480000000000004","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"10","详细描述":"very faint, very small, 2 very small stars involved","简略描述":"vF, vS, 2 vS st inv"},{"ID":"3672","标识":"NGC3672","M标识":"NGC3672","拓展名":"","组件":"","Class":"I 131","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h25m2.3s","赤经D(J2000)":"11.417305555555554","赤纬(J2000)":"-9h47m41s","赤纬D(J2000)":"-9.794722222222221","可见光星等V":"11.4","摄影(蓝光)星等B":"12.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"4","短轴(分)":"1.8","方位角":"12","详细描述":"pretty bright, large, extended 0°±, gradually brighter middle","简略描述":"pB, L, E 0° ±, gbM"},{"ID":"3673","标识":"NGC3673","M标识":"NGC3673","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"11h25m12.7s","赤经D(J2000)":"11.420194444444444","赤纬(J2000)":"-26h44m12s","赤纬D(J2000)":"-26.736666666666668","可见光星等V":"11.5","摄影(蓝光)星等B":"12.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.7","短轴(分)":"2.4","方位角":"73","详细描述":"faint, very large, gradually very little brighter middle, 7th magnitude star 6 arcmin south","简略描述":"F, vL, gvlbM, * 7 s 6'"},{"ID":"3674","标识":"NGC3674","M标识":"NGC3674","拓展名":"","组件":"","Class":"II 886","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h26m26.3s","赤经D(J2000)":"11.44063888888889","赤纬(J2000)":"+57h2m55s","赤纬D(J2000)":"57.04861111111111","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.7","短轴(分)":"0.6","方位角":"33","详细描述":"pretty faint, irregular figure","简略描述":"pF, iF"},{"ID":"3675","标识":"NGC3675","M标识":"NGC3675","拓展名":"","组件":"","Class":"I 194","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h26m8.1s","赤经D(J2000)":"11.435583333333334","赤纬(J2000)":"+43h35m11s","赤纬D(J2000)":"43.58638888888889","可见光星等V":"10.2","摄影(蓝光)星等B":"11","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"5.9","短轴(分)":"3.1","方位角":"178","详细描述":"very bright, considerably large, very much extended 0°±, very suddenly much brighter middle and nucleus, many stars to west","简略描述":"vB, cL, vmE 0° ±, vsmbMN, many st p"},{"ID":"3676","标识":"NGC3676","M标识":"NGC3676","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h25m37.4s","赤经D(J2000)":"11.427055555555555","赤纬(J2000)":"-11h8m21s","赤纬D(J2000)":"-11.139166666666666","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"140","详细描述":"extremely faint, very small, round, 2 stars of 10th magnitude to northeast and southeast","简略描述":"eF, vS, R, 2 st 10 nf, sf"},{"ID":"3677","标识":"NGC3677","M标识":"NGC3677","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h26m17.6s","赤经D(J2000)":"11.438222222222223","赤纬(J2000)":"+46h58m28s","赤纬D(J2000)":"46.974444444444444","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"130","详细描述":"extremely faint, small, round, very suddenly brighter stellar middle, 2 stars of 11th magnitude to northeast","简略描述":"eF, S, R, vsbM *, 2 st 11 nf"},{"ID":"3678","标识":"NGC3678","M标识":"NGC3678","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h26m15.7s","赤经D(J2000)":"11.437694444444444","赤纬(J2000)":"+27h52m1s","赤纬D(J2000)":"27.866944444444446","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, small, round, pretty suddenly brighter middle, 12th magnitude star to northeast","简略描述":"vF, S, R, psbM, * 12 nf"},{"ID":"3679","标识":"NGC3679","M标识":"NGC3679","拓展名":"","组件":"","Class":"III 112","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m47.9s","赤经D(J2000)":"11.363305555555556","赤纬(J2000)":"-5h45m28s","赤纬D(J2000)":"-5.757777777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.8","方位角":"80","详细描述":"extremely faint, considerably large, round, mottled but not resolved (very near very bright star)","简略描述":"eF, cL, R, r (v near vB *)"},{"ID":"3680","标识":"NGC3680","M标识":"NGC3680","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h25m38s","赤经D(J2000)":"11.427222222222222","赤纬(J2000)":"-43h15m0s","赤纬D(J2000)":"-43.25","可见光星等V":"7.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"cluster, considerably large, pretty rich, a little compressed, stars from 10th to 14th magnitude","简略描述":"Cl, cL, pRi, lC, st 10…14"},{"ID":"3681","标识":"NGC3681","M标识":"NGC3681","拓展名":"","组件":"","Class":"II 159","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h26m29.7s","赤经D(J2000)":"11.441583333333334","赤纬(J2000)":"+16h51m50s","赤纬D(J2000)":"16.86388888888889","可见光星等V":"11.2","摄影(蓝光)星等B":"11.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3","短轴(分)":"2.2","方位角":"170","详细描述":"bright, pretty small, round, brighter middle","简略描述":"B, pS, R, bM"},{"ID":"3682","标识":"NGC3682","M标识":"NGC3682","拓展名":"","组件":"","Class":"I 262","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"11h27m41.3s","赤经D(J2000)":"11.461472222222222","赤纬(J2000)":"+66h35m27s","赤纬D(J2000)":"66.59083333333332","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"95","详细描述":"considerably bright, small, irregularly round, suddenly pretty much brighter middle and nucleus","简略描述":"cB, S, iR, spmbMN"},{"ID":"3683","标识":"NGC3683","M标识":"NGC3683","拓展名":"","组件":"","Class":"I 246","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h27m31.7s","赤经D(J2000)":"11.458805555555555","赤纬(J2000)":"+56h52m40s","赤纬D(J2000)":"56.87777777777778","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"128","详细描述":"considerably bright, pretty large, extended","简略描述":"cB, pL, E"},{"ID":"3684","标识":"NGC3684","M标识":"NGC3684","拓展名":"","组件":"","Class":"II 160","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m11.1s","赤经D(J2000)":"11.453083333333332","赤纬(J2000)":"+17h1m51s","赤纬D(J2000)":"17.030833333333334","可见光星等V":"11.4","摄影(蓝光)星等B":"12","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.1","短轴(分)":"2.1","方位角":"130","详细描述":"pretty bright, pretty large, extended, very gradually brighter middle","简略描述":"pB, pL, E, vgbM"},{"ID":"3685","标识":"NGC3685","M标识":"NGC3685","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m16.2s","赤经D(J2000)":"11.471166666666667","赤纬(J2000)":"+4h19m39s","赤纬D(J2000)":"4.3275","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"140","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"3686","标识":"NGC3686","M标识":"NGC3686","拓展名":"","组件":"","Class":"III 28","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m44.1s","赤经D(J2000)":"11.46225","赤纬(J2000)":"+17h13m24s","赤纬D(J2000)":"17.223333333333333","可见光星等V":"11.3","摄影(蓝光)星等B":"11.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.1","短轴(分)":"2.4","方位角":"15","详细描述":"pretty bright, large, very little extended, very gradually brighter middle, mottled but not resolved","简略描述":"pB, L, vlE, vgbM, r"},{"ID":"3687","标识":"NGC3687","M标识":"NGC3687","拓展名":"","组件":"","Class":"II 770","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h28m0.5s","赤经D(J2000)":"11.466805555555556","赤纬(J2000)":"+29h30m40s","赤纬D(J2000)":"29.511111111111113","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"1.9","方位角":"","详细描述":"pretty bright, pretty small, round, a little brighter middle, mottled but not resolved","简略描述":"pB, pS, R, lbM, r"},{"ID":"3688","标识":"NGC3688","M标识":"NGC3688","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h27m44.4s","赤经D(J2000)":"11.462333333333333","赤纬(J2000)":"-9h9m54s","赤纬D(J2000)":"-9.165000000000001","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"20","详细描述":"extremely faint, extremely small, a little elongated 0°, gradually brighter middle","简略描述":"eF, eS, lE 0°, gbM"},{"ID":"3689","标识":"NGC3689","M标识":"NGC3689","拓展名":"","组件":"","Class":"II 339","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m10.8s","赤经D(J2000)":"11.469666666666667","赤纬(J2000)":"+25h39m41s","赤纬D(J2000)":"25.661388888888887","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"97","详细描述":"pretty bright, pretty large, a little extended, brighter middle","简略描述":"pB, pL, lE, bM"},{"ID":"3690","标识":"NGC3690","M标识":"NGC3690","拓展名":"B","组件":"","Class":"I 247","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h28m32.6s","赤经D(J2000)":"11.475722222222222","赤纬(J2000)":"+58h33m52s","赤纬D(J2000)":"58.56444444444444","可见光星等V":"10.9","摄影(蓝光)星等B":"11.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"2","短轴(分)":"1.4","方位角":"130","详细描述":"pretty bright, pretty small, very little extended 80°±, pretty gradually brighter middle, small star near to southeast","简略描述":"pB, pS, vlE 80° ±, pgbM, S st sf nr"},{"ID":"3691","标识":"NGC3691","M标识":"NGC3691","拓展名":"","组件":"","Class":"II 54","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB\/P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m9.4s","赤经D(J2000)":"11.469277777777778","赤纬(J2000)":"+16h55m12s","赤纬D(J2000)":"16.92","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.4","短轴(分)":"1","方位角":"15","详细描述":"faint, pretty small, a little extended, mottled but not resolved","简略描述":"F, pS, lE, r"},{"ID":"3692","标识":"NGC3692","M标识":"NGC3692","拓展名":"","组件":"","Class":"II 152","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m23.8s","赤经D(J2000)":"11.473277777777778","赤纬(J2000)":"+9h24m28s","赤纬D(J2000)":"9.407777777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.1","短轴(分)":"0.7","方位角":"95","详细描述":"faint, much extended, mottled but not resolved","简略描述":"F, mE, r"},{"ID":"3693","标识":"NGC3693","M标识":"NGC3693","拓展名":"","组件":"","Class":"III 532","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h28m11.5s","赤经D(J2000)":"11.469861111111111","赤纬(J2000)":"-13h11m39s","赤纬D(J2000)":"-13.194166666666668","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.4","短轴(分)":"0.7","方位角":"84","详细描述":"considerably faint, small, extended, gradually brighter middle","简略描述":"cF, S, E, gbM"},{"ID":"3694","标识":"NGC3694","M标识":"NGC3694","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h28m54s","赤经D(J2000)":"11.481666666666667","赤纬(J2000)":"+35h24m50s","赤纬D(J2000)":"35.413888888888884","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.8","方位角":"20","详细描述":"considerably faint, small, round, much brighter middle","简略描述":"cF, S, R, mbM"},{"ID":"3695","标识":"NGC3695","M标识":"NGC3695","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h29m17.3s","赤经D(J2000)":"11.488138888888889","赤纬(J2000)":"+35h34m32s","赤纬D(J2000)":"35.57555555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"145","详细描述":"extremely faint, pretty small, h899 4 arcmin to south","简略描述":"eF, pS, h 899 4' s"},{"ID":"3696","标识":"NGC3696","M标识":"NGC3696","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h28m43.9s","赤经D(J2000)":"11.478861111111112","赤纬(J2000)":"-11h16m59s","赤纬D(J2000)":"-11.283055555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.8","方位角":"90","详细描述":"extremely faint, extremely small, round, brighter middle and nucleus","简略描述":"eF, eS, R, bMN"},{"ID":"3697","标识":"NGC3697","M标识":"NGC3697","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m50.4s","赤经D(J2000)":"11.480666666666666","赤纬(J2000)":"+20h47m42s","赤纬D(J2000)":"20.795","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.4","短轴(分)":"0.7","方位角":"93","详细描述":"extremely faint, very small, extended 90°","简略描述":"eF, vS, E 90°"},{"ID":"3698","标识":"NGC3698","M标识":"NGC3698","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h29m17.3s","赤经D(J2000)":"11.488138888888889","赤纬(J2000)":"+35h34m32s","赤纬D(J2000)":"35.57555555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"145","详细描述":"extremely faint, pretty small, h899 4 arcmin to south","简略描述":"eF, vS"},{"ID":"3699","标识":"NGC3699","M标识":"NGC3699","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h27m57.2s","赤经D(J2000)":"11.465888888888887","赤纬(J2000)":"-59h57m27s","赤纬D(J2000)":"-59.9575","可见光星等V":"11.3","摄影(蓝光)星等B":"11","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.75","短轴(分)":"","方位角":"","详细描述":"bright, pretty large, irregularly round, pretty gradually pretty much brighter middle","简略描述":"B, pL, iR, pgpmbM"},{"ID":"3700","标识":"NGC3700","M标识":"NGC3700","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h29m38.5s","赤经D(J2000)":"11.494027777777777","赤纬(J2000)":"+35h30m54s","赤纬D(J2000)":"35.515","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.7","方位角":"1","详细描述":"extremely faint, h 899 preceding (to the west)","简略描述":"eF, h 899 p"},{"ID":"3701","标识":"NGC3701","M标识":"NGC3701","拓展名":"","组件":"","Class":"II 349","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m28.8s","赤经D(J2000)":"11.491333333333332","赤纬(J2000)":"+24h5m37s","赤纬D(J2000)":"24.09361111111111","可见光星等V":"13","摄影(蓝光)星等B":"13.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"145","详细描述":"pretty faint, pretty large, a little extended","简略描述":"pF, pL, lE"},{"ID":"3702","标识":"NGC3702","M标识":"NGC3702","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h30m13.4s","赤经D(J2000)":"11.503722222222223","赤纬(J2000)":"-8h51m44s","赤纬D(J2000)":"-8.862222222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"156","详细描述":"extremely faint, extremely small, round, gradually a little brighter middle","简略描述":"eF, eS, R, glbM"},{"ID":"3703","标识":"NGC3703","M标识":"NGC3703","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h29m9s","赤经D(J2000)":"11.485833333333332","赤纬(J2000)":"-8h26m47s","赤纬D(J2000)":"-8.446388888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"130","详细描述":"extremely faint, very small, gradually brighter middle and nucleus","简略描述":"eF, vS, gbMN"},{"ID":"3704","标识":"NGC3704","M标识":"NGC3704","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h30m4.6s","赤经D(J2000)":"11.501277777777778","赤纬(J2000)":"-11h32m45s","赤纬D(J2000)":"-11.545833333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"150","详细描述":"very faint, pretty small, 9th or 10th magnitude star 2 arcmin to south southeast","简略描述":"vF, pS, * 9·10 2' ssf"},{"ID":"3705","标识":"NGC3705","M标识":"NGC3705","拓展名":"","组件":"","Class":"II 13","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h30m7.6s","赤经D(J2000)":"11.50211111111111","赤纬(J2000)":"+9h16m34s","赤纬D(J2000)":"9.276111111111112","可见光星等V":"11.1","摄影(蓝光)星等B":"11.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4.9","短轴(分)":"2","方位角":"122","详细描述":"pretty faint, pretty large, round, very suddenly much brighter middle, mottled but not resolved","简略描述":"pF, pL, R, vsmbM, r"},{"ID":"3706","标识":"NGC3706","M标识":"NGC3706","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h29m44.2s","赤经D(J2000)":"11.49561111111111","赤纬(J2000)":"-36h23m29s","赤纬D(J2000)":"-36.39138888888889","可见光星等V":"11.4","摄影(蓝光)星等B":"12.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.1","短轴(分)":"1.8","方位角":"78","详细描述":"pretty bright, considerably small, round, pretty suddenly much brighter middle","简略描述":"pB, cS, R, psmbM"},{"ID":"3707","标识":"NGC3707","M标识":"NGC3707","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h30m11.5s","赤经D(J2000)":"11.503194444444444","赤纬(J2000)":"-11h32m34s","赤纬D(J2000)":"-11.542777777777777","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"85","详细描述":"very faint, small, 15th magnitude star (nebulous?) 2 seconds of time following (to the east)","简略描述":"vF, S, * 15 (neb?) 2s f"},{"ID":"3708","标识":"NGC3708","M标识":"NGC3708","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h30m39.2s","赤经D(J2000)":"11.51088888888889","赤纬(J2000)":"-3h13m21s","赤纬D(J2000)":"-3.2225","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, gradually brighter middle","简略描述":"vF, S, R, gbM"},{"ID":"3709","标识":"NGC3709","M标识":"NGC3709","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h30m39.2s","赤经D(J2000)":"11.51088888888889","赤纬(J2000)":"-3h15m21s","赤纬D(J2000)":"-3.2558333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"3710","标识":"NGC3710","M标识":"NGC3710","拓展名":"","组件":"","Class":"II 350","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m6.9s","赤经D(J2000)":"11.518583333333334","赤纬(J2000)":"+22h46m7s","赤纬D(J2000)":"22.76861111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.8","方位角":"105","详细描述":"faint, small, 7th or 8th magnitude star 5 arcmin to northeast","简略描述":"F, S, * 7·8 nf 5'"},{"ID":"3711","标识":"NGC3711","M标识":"NGC3711","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h29m25.5s","赤经D(J2000)":"11.490416666666667","赤纬(J2000)":"-11h4m47s","赤纬D(J2000)":"-11.079722222222221","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"175","详细描述":"extremely faint, very small, 9th magnitude star 4 arcmin to south","简略描述":"eF, vS, * 9 s 4'"},{"ID":"3712","标识":"NGC3712","M标识":"NGC3712","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h31m53.6s","赤经D(J2000)":"11.531555555555556","赤纬(J2000)":"+28h21m31s","赤纬D(J2000)":"28.358611111111113","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"68","详细描述":"faint, very small, round, suddenly much brighter middle","简略描述":"f, vS, R, smbM"},{"ID":"3713","标识":"NGC3713","M标识":"NGC3713","拓展名":"","组件":"","Class":"II 367","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m41.9s","赤经D(J2000)":"11.528305555555557","赤纬(J2000)":"+28h9m14s","赤纬D(J2000)":"28.153888888888886","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"125","详细描述":"faint, considerably small, round, suddenly brighter middle and nucleus","简略描述":"F, cS, R, sbMN"},{"ID":"3714","标识":"NGC3714","M标识":"NGC3714","拓展名":"","组件":"","Class":"III 353","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h31m53.6s","赤经D(J2000)":"11.531555555555556","赤纬(J2000)":"+28h21m31s","赤纬D(J2000)":"28.358611111111113","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"68","详细描述":"faint, very small, round, suddenly much brighter middle","简略描述":"F, S, R, psbM"},{"ID":"3715","标识":"NGC3715","M标识":"NGC3715","拓展名":"","组件":"","Class":"II 562","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h31m32.2s","赤经D(J2000)":"11.525611111111113","赤纬(J2000)":"-14h13m52s","赤纬D(J2000)":"-14.231111111111112","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"145","详细描述":"pretty faint, small, round, very gradually a very little brighter middle","简略描述":"pF, S, R, vgvlbM"},{"ID":"3716","标识":"NGC3716","M标识":"NGC3716","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m41.2s","赤经D(J2000)":"11.528111111111112","赤纬(J2000)":"+3h29m17s","赤纬D(J2000)":"3.4880555555555555","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"150","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"3717","标识":"NGC3717","M标识":"NGC3717","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"11h31m32s","赤经D(J2000)":"11.525555555555556","赤纬(J2000)":"-30h18m30s","赤纬D(J2000)":"-30.308333333333334","可见光星等V":"11.2","摄影(蓝光)星等B":"12.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"6.2","短轴(分)":"1","方位角":"33","详细描述":"pretty bright, small, much extended, 13th magnitude star attached","简略描述":"pB, S, mE, * 13 att"},{"ID":"3718","标识":"NGC3718","M标识":"NGC3718","拓展名":"","组件":"","Class":"I 221","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h32m34.7s","赤经D(J2000)":"11.542972222222222","赤纬(J2000)":"+53h4m2s","赤纬D(J2000)":"53.06722222222223","可见光星等V":"10.8","摄影(蓝光)星等B":"11.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"8.1","短轴(分)":"4","方位角":"15","详细描述":"pretty bright, very large, round, very gradually a little brighter middle","简略描述":"pB, vL, R, vglbM"},{"ID":"3719","标识":"NGC3719","M标识":"NGC3719","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h32m13.5s","赤经D(J2000)":"11.537083333333333","赤纬(J2000)":"+0h49m9s","赤纬D(J2000)":"0.8191666666666666","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"15","详细描述":"very faint, northwestern of 2","简略描述":"vF, np of 2"},{"ID":"3720","标识":"NGC3720","M标识":"NGC3720","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h32m21.6s","赤经D(J2000)":"11.539333333333333","赤纬(J2000)":"+0h48m14s","赤纬D(J2000)":"0.803888888888889","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.8","方位角":"85","详细描述":"very faint, southeastern of 2","简略描述":"vF, sf of 2"},{"ID":"3721","标识":"NGC3721","M标识":"NGC3721","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h34m7.8s","赤经D(J2000)":"11.568833333333334","赤纬(J2000)":"-9h28m0s","赤纬D(J2000)":"-9.466666666666667","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.5","方位角":"141","详细描述":"extremely faint, extremely small, round, gradually brighter middle","简略描述":"eF, eS, R, gbM"},{"ID":"3722","标识":"NGC3722","M标识":"NGC3722","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h34m23.2s","赤经D(J2000)":"11.57311111111111","赤纬(J2000)":"-9h40m46s","赤纬D(J2000)":"-9.679444444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"0","详细描述":"extremely faint, very small, round, suddenly brighter middle and nucleus, 1st of 2","简略描述":"eF, vS, R, sbMN, 1st of 2"},{"ID":"3723","标识":"NGC3723","M标识":"NGC3723","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h32m30.5s","赤经D(J2000)":"11.541805555555555","赤纬(J2000)":"-9h58m8s","赤纬D(J2000)":"-9.96888888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.9","方位角":"85","详细描述":"faint, small, ronnd","简略描述":"F, S, R"},{"ID":"3724","标识":"NGC3724","M标识":"NGC3724","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h34m28.7s","赤经D(J2000)":"11.574638888888888","赤纬(J2000)":"-9h39m34s","赤纬D(J2000)":"-9.659444444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"63","详细描述":"extremely faint, very small, round, suddenly brighter middle and nucleus, second of 2","简略描述":"eF, vS, R, sbMN, 2nd of 2"},{"ID":"3725","标识":"NGC3725","M标识":"NGC3725","拓展名":"","组件":"","Class":"II 836","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h33m40.7s","赤经D(J2000)":"11.561305555555556","赤纬(J2000)":"+61h53m20s","赤纬D(J2000)":"61.888888888888886","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"145","详细描述":"considerably faint, small, round, gradually a very little brighter middle, mottled but not resolved","简略描述":"cF, S, R, gvlbM, r"},{"ID":"3726","标识":"NGC3726","M标识":"NGC3726","拓展名":"","组件":"","Class":"II 730","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h33m20.8s","赤经D(J2000)":"11.555777777777779","赤纬(J2000)":"+47h1m40s","赤纬D(J2000)":"47.02777777777778","可见光星等V":"10.4","摄影(蓝光)星等B":"10.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"6","短轴(分)":"4.1","方位角":"10","详细描述":"pretty bright, very large, a little extended 0°, very suddenly much brighter middle equal to 15th magnitude star, 11th magnitude star to north","简略描述":"pB, vL, lE 0°, vsmbM * 15, * 11 n"},{"ID":"3727","标识":"NGC3727","M标识":"NGC3727","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h33m40.9s","赤经D(J2000)":"11.561361111111111","赤纬(J2000)":"-13h52m42s","赤纬D(J2000)":"-13.878333333333334","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"78","详细描述":"extremely faint, extremely small, round, gradually brighter middle and nucleus, 11th magnitude star 1 arcmin to southeast","简略描述":"eF, eS, R, gbMN, * 11 sf 1'"},{"ID":"3728","标识":"NGC3728","M标识":"NGC3728","拓展名":"","组件":"","Class":"II 351","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h33m15.7s","赤经D(J2000)":"11.554361111111112","赤纬(J2000)":"+24h26m51s","赤纬D(J2000)":"24.4475","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2","短轴(分)":"1.5","方位角":"25","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"3729","标识":"NGC3729","M标识":"NGC3729","拓展名":"","组件":"","Class":"I 222","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h33m49.2s","赤经D(J2000)":"11.563666666666668","赤纬(J2000)":"+53h7m35s","赤纬D(J2000)":"53.12638888888889","可见光星等V":"11.4","摄影(蓝光)星等B":"12","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.9","短轴(分)":"1.9","方位角":"165","详细描述":"pretty bright, pretty large, a little extended 0°±, gradually brighter middle, 12th magnitude star near","简略描述":"pB, pL, lE 0° ±, gbM, * 12 nr"},{"ID":"3730","标识":"NGC3730","M标识":"NGC3730","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h34m16.9s","赤经D(J2000)":"11.571361111111111","赤纬(J2000)":"-9h34m34s","赤纬D(J2000)":"-9.57611111111111","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.9","方位角":"","详细描述":"extremely faint, small, a little extended 140°, gradually a little brighter northern middle","简略描述":"eF, S, lE 140°, glbnM"},{"ID":"3731","标识":"NGC3731","M标识":"NGC3731","拓展名":"","组件":"","Class":"III 80","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h34m11.6s","赤经D(J2000)":"11.569888888888888","赤纬(J2000)":"+12h30m46s","赤纬D(J2000)":"12.512777777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.9","方位角":"50","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"3732","标识":"NGC3732","M标识":"NGC3732","拓展名":"","组件":"","Class":"II 552","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h34m13.9s","赤经D(J2000)":"11.570527777777778","赤纬(J2000)":"-9h50m43s","赤纬D(J2000)":"-9.845277777777778","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"85","详细描述":"extremely faint, small, a little extended 140°, gradually a little brighter northern middle","简略描述":"F, S, R, psbM, * 14 sp 225°"},{"ID":"3733","标识":"NGC3733","M标识":"NGC3733","拓展名":"","组件":"","Class":"III 771","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h35m1.7s","赤经D(J2000)":"11.583805555555557","赤纬(J2000)":"+54h51m1s","赤纬D(J2000)":"54.85027777777778","可见光星等V":"12.4","摄影(蓝光)星等B":"12.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"4.9","短轴(分)":"2.2","方位角":"170","详细描述":"extremely faint, small, irregularly round, 6th magnitude star to southeast","简略描述":"eF, S, iR, * 6 m sf"},{"ID":"3734","标识":"NGC3734","M标识":"NGC3734","拓展名":"","组件":"","Class":"III 935","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h34m40.6s","赤经D(J2000)":"11.577944444444444","赤纬(J2000)":"-14h4m52s","赤纬D(J2000)":"-14.081111111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"1","方位角":"19","详细描述":"extremely faint, small, round, gradually brighter middle","简略描述":"eF, S, R, gbM"},{"ID":"3735","标识":"NGC3735","M标识":"NGC3735","拓展名":"","组件":"","Class":"I 287","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"11h35m57.1s","赤经D(J2000)":"11.599194444444445","赤纬(J2000)":"+70h32m8s","赤纬D(J2000)":"70.53555555555555","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"4","短轴(分)":"0.8","方位角":"131","详细描述":"pretty bright, large, much extended 130°, much brighter middle","简略描述":"pB, L, mE 130°, mbM"},{"ID":"3736","标识":"NGC3736","M标识":"NGC3736","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"11h35m41.7s","赤经D(J2000)":"11.594916666666668","赤纬(J2000)":"+73h27m9s","赤纬D(J2000)":"73.4525","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"155","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"3737","标识":"NGC3737","M标识":"NGC3737","拓展名":"","组件":"","Class":"III 772","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h35m36.2s","赤经D(J2000)":"11.593388888888889","赤纬(J2000)":"+54h56m56s","赤纬D(J2000)":"54.94888888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"81","详细描述":"very faint, stellar","简略描述":"vF, stellar"},{"ID":"3738","标识":"NGC3738","M标识":"NGC3738","拓展名":"","组件":"","Class":"II 783","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h35m48.2s","赤经D(J2000)":"11.596722222222223","赤纬(J2000)":"+54h31m26s","赤纬D(J2000)":"54.52388888888889","可见光星等V":"11.7","摄影(蓝光)星等B":"12.1","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.5","短轴(分)":"1.9","方位角":"155","详细描述":"pretty bright, pretty large, brighter middle","简略描述":"pB, pL, bM"},{"ID":"3739","标识":"NGC3739","M标识":"NGC3739","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h35m37.5s","赤经D(J2000)":"11.59375","赤纬(J2000)":"+25h5m19s","赤纬D(J2000)":"25.08861111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"17","详细描述":"very faint, between two 12th magnitude stars","简略描述":"vF, btw 2 st 12 m"},{"ID":"3740","标识":"NGC3740","M标识":"NGC3740","拓展名":"","组件":"","Class":"III 847","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h36m12.1s","赤经D(J2000)":"11.603361111111111","赤纬(J2000)":"+59h58m36s","赤纬D(J2000)":"59.97666666666667","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"110","详细描述":"very faint, very small, round, very gradually brighter middle","简略描述":"vF, vS, R, vgbM"},{"ID":"3741","标识":"NGC3741","M标识":"NGC3741","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h36m6s","赤经D(J2000)":"11.601666666666667","赤纬(J2000)":"+45h17m3s","赤纬D(J2000)":"45.284166666666664","可见光星等V":"14","摄影(蓝光)星等B":"14.3","B-V":"0.3","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"5","详细描述":"very faint, small, round, very gradually brighter middle","简略描述":"vF, S, R, vgbM"},{"ID":"3742","标识":"NGC3742","M标识":"NGC3742","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab\/P","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h35m32.1s","赤经D(J2000)":"11.59225","赤纬(J2000)":"-37h57m22s","赤纬D(J2000)":"-37.95611111111111","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2.4","短轴(分)":"1.7","方位角":"116","详细描述":"pretty faint, pretty large, very little extended, gradually a little brighter middle","简略描述":"pF, pL, vlE, glbM"},{"ID":"3743","标识":"NGC3743","M标识":"NGC3743","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h35m57.3s","赤经D(J2000)":"11.599250000000001","赤纬(J2000)":"+21h43m23s","赤纬D(J2000)":"21.723055555555554","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, 9th magnitude star 1 arcmin to southeast","简略描述":"F, S, R, * 9 1' sf"},{"ID":"3744","标识":"NGC3744","M标识":"NGC3744","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h35m57.8s","赤经D(J2000)":"11.599388888888889","赤纬(J2000)":"+23h0m44s","赤纬D(J2000)":"23.01222222222222","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"9","详细描述":"extremely faint, small, round, a little brighter middle","简略描述":"eF, S, R, lbM"},{"ID":"3745","标识":"NGC3745","M标识":"NGC3745","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"科普兰七重星系","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h37m44.5s","赤经D(J2000)":"11.629027777777779","赤纬(J2000)":"+22h1m16s","赤纬D(J2000)":"22.02111111111111","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"102","详细描述":"pretty bright, pretty small, round","简略描述":"pB, pS, R"},{"ID":"3746","标识":"NGC3746","M标识":"NGC3746","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"科普兰七重星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h37m43.6s","赤经D(J2000)":"11.628777777777778","赤纬(J2000)":"+22h0m35s","赤纬D(J2000)":"22.009722222222223","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"126","详细描述":"pretty bright, pretty small, round","简略描述":"pB, pS, R"},{"ID":"3747","标识":"NGC3747","M标识":"NGC3747","拓展名":"","组件":"","Class":"III 969","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"11h32m31.2s","赤经D(J2000)":"11.542","赤纬(J2000)":"+74h22m44s","赤纬D(J2000)":"74.37888888888888","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"100","详细描述":"extremely faint, small, place doubtful","简略描述":"eF, S, place doubtful"},{"ID":"3748","标识":"NGC3748","M标识":"NGC3748","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"科普兰七重星系","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h37m49.1s","赤经D(J2000)":"11.630305555555555","赤纬(J2000)":"+22h1m35s","赤纬D(J2000)":"22.02638888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"132","详细描述":"pretty bright, pretty small, round","简略描述":"pB, pS, R"},{"ID":"3749","标识":"NGC3749","M标识":"NGC3749","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h35m53s","赤经D(J2000)":"11.598055555555556","赤纬(J2000)":"-37h59m51s","赤纬D(J2000)":"-37.9975","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"4.2","短轴(分)":"1.2","方位角":"107","详细描述":"faint, considerably small, a little extended, gradually a very little brighter middle","简略描述":"F, cS, lE, gvlbM"},{"ID":"3750","标识":"NGC3750","M标识":"NGC3750","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"科普兰七重星系","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h37m51.6s","赤经D(J2000)":"11.631","赤纬(J2000)":"+21h58m29s","赤纬D(J2000)":"21.97472222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"132","详细描述":"pretty bright, round, considerably brighter middle, 1st of 3 in line","简略描述":"pB, R, cbM, 1st of 3 in line"},{"ID":"3751","标识":"NGC3751","M标识":"NGC3751","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"科普兰七重星系","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h37m53.9s","赤经D(J2000)":"11.63163888888889","赤纬(J2000)":"+21h56m13s","赤纬D(J2000)":"21.936944444444446","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"9","详细描述":"faint, large, extended 45°","简略描述":"F, L, E 45°"},{"ID":"3752","标识":"NGC3752","M标识":"NGC3752","拓展名":"","组件":"","Class":"II 905","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"11h32m32.3s","赤经D(J2000)":"11.542305555555556","赤纬(J2000)":"+74h37m43s","赤纬D(J2000)":"74.6286111111111","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"0.7","方位角":"155","详细描述":"pretty bright, pretty large","简略描述":"pB, pL"},{"ID":"3753","标识":"NGC3753","M标识":"NGC3753","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"科普兰七重星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h37m53.8s","赤经D(J2000)":"11.631611111111111","赤纬(J2000)":"+21h58m53s","赤纬D(J2000)":"21.981388888888887","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"117","详细描述":"","简略描述":"pB, pL, 2nd of 3 in line"},{"ID":"3754","标识":"NGC3754","M标识":"NGC3754","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"科普兰七重星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h37m55s","赤经D(J2000)":"11.631944444444445","赤纬(J2000)":"+21h59m8s","赤纬D(J2000)":"21.985555555555557","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"18","详细描述":"very faint, round, 3rd of 3 in line","简略描述":"vF, R, 3rd of 3 in line"},{"ID":"3755","标识":"NGC3755","M标识":"NGC3755","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h36m33.2s","赤经D(J2000)":"11.609222222222222","赤纬(J2000)":"+36h24m37s","赤纬D(J2000)":"36.41027777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"3.4","短轴(分)":"1.4","方位角":"133","详细描述":"extremely faint, pretty large, pretty much extended, gradually brighter middle","简略描述":"eF, pL, pmE, gbM"},{"ID":"3756","标识":"NGC3756","M标识":"NGC3756","拓展名":"","组件":"","Class":"II 784","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h36m47.8s","赤经D(J2000)":"11.613277777777778","赤纬(J2000)":"+54h17m39s","赤纬D(J2000)":"54.29416666666666","可见光星等V":"11.5","摄影(蓝光)星等B":"12.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"4.2","短轴(分)":"2.1","方位角":"177","详细描述":"pretty faint, large, a little extended","简略描述":"pF, L, lE"},{"ID":"3757","标识":"NGC3757","M标识":"NGC3757","拓展名":"","组件":"","Class":"III 843","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h37m2.9s","赤经D(J2000)":"11.617472222222222","赤纬(J2000)":"+58h24m58s","赤纬D(J2000)":"58.41611111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"","简略描述":"vF, R, stellar, vS * 1 d sf"},{"ID":"3758","标识":"NGC3758","M标识":"NGC3758","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h36m29.1s","赤经D(J2000)":"11.608083333333333","赤纬(J2000)":"+21h35m49s","赤纬D(J2000)":"21.596944444444443","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"pB, S, R, bM, * 8.5 3' f"},{"ID":"3759","标识":"NGC3759","M标识":"NGC3759","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h36m53.8s","赤经D(J2000)":"11.614944444444443","赤纬(J2000)":"+54h49m23s","赤纬D(J2000)":"54.823055555555555","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"faint, small, irregularly round, 11th magnitude star near","简略描述":"F, S, iR, * 11 nr"},{"ID":"3760","标识":"NGC3760","M标识":"NGC3760","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h36m55.8s","赤经D(J2000)":"10.615499999999999","赤纬(J2000)":"+21h52m54s","赤纬D(J2000)":"21.881666666666668","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"3.3","短轴(分)":"1","方位角":"52","详细描述":"","简略描述":"B, pS, mbMN = * 13, * 11 p 4s, s 175\""},{"ID":"3761","标识":"NGC3761","M标识":"NGC3761","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h36m44.1s","赤经D(J2000)":"11.61225","赤纬(J2000)":"+22h59m33s","赤纬D(J2000)":"22.9925","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"63","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"3762","标识":"NGC3762","M标识":"NGC3762","拓展名":"","组件":"","Class":"II 837","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h37m23.8s","赤经D(J2000)":"11.623277777777778","赤纬(J2000)":"+61h45m33s","赤纬D(J2000)":"61.759166666666665","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.8","短轴(分)":"0.5","方位角":"167","详细描述":"faint, very little extended, gradually brighter middle","简略描述":"F, vlE, gbM"},{"ID":"3763","标识":"NGC3763","M标识":"NGC3763","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h36m30.2s","赤经D(J2000)":"11.60838888888889","赤纬(J2000)":"-9h50m50s","赤纬D(J2000)":"-9.847222222222223","可见光星等V":"11.8","摄影(蓝光)星等B":"12.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"","简略描述":"F, dif, sp 7 st"},{"ID":"3764","标识":"NGC3764","M标识":"NGC3764","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h36m54.5s","赤经D(J2000)":"11.615138888888888","赤纬(J2000)":"+17h53m21s","赤纬D(J2000)":"17.889166666666664","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"124","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"3765","标识":"NGC3765","M标识":"NGC3765","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h37m4.3s","赤经D(J2000)":"11.617861111111111","赤纬(J2000)":"+24h5m47s","赤纬D(J2000)":"24.09638888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"57","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"3766","标识":"NGC3766","M标识":"NGC3766","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"珍珠星团","类型":"OCL","含重复类型":"OCL","形态":"I1p","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h36m14.3s","赤经D(J2000)":"11.603972222222222","赤纬(J2000)":"-61h36m36s","赤纬D(J2000)":"-61.61","可见光星等V":"5.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, pretty compressed, stars from 8th to 13th magnitude","简略描述":"Cl, pL, pRi, pC, st 8…13"},{"ID":"3767","标识":"NGC3767","M标识":"NGC3767","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h37m15.5s","赤经D(J2000)":"11.620972222222223","赤纬(J2000)":"+16h52m39s","赤纬D(J2000)":"16.8775","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.9","方位角":"75","详细描述":"very faint, small, brighter middle","简略描述":"vF, S, bM"},{"ID":"3768","标识":"NGC3768","M标识":"NGC3768","拓展名":"","组件":"","Class":"III 29","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h37m14.4s","赤经D(J2000)":"11.620666666666667","赤纬(J2000)":"+17h50m22s","赤纬D(J2000)":"17.839444444444442","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"155","详细描述":"very faint, extremely small, stellar","简略描述":"vF, eS, stellar"},{"ID":"3769","标识":"NGC3769","M标识":"NGC3769","拓展名":"","组件":"","Class":"II 731","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h37m44.1s","赤经D(J2000)":"11.628916666666667","赤纬(J2000)":"+47h53m36s","赤纬D(J2000)":"47.89333333333333","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.9","短轴(分)":"1","方位角":"152","详细描述":"pretty bright, small, pretty much extended","简略描述":"pB, S, pmE"},{"ID":"3770","标识":"NGC3770","M标识":"NGC3770","拓展名":"","组件":"","Class":"II 838","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h37m58.7s","赤经D(J2000)":"11.632972222222223","赤纬(J2000)":"+59h37m2s","赤纬D(J2000)":"59.617222222222225","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1","短轴(分)":"0.7","方位角":"107","详细描述":"pretty faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"pF, S, R, gbM, r"},{"ID":"3771","标识":"NGC3771","M标识":"NGC3771","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h39m5.9s","赤经D(J2000)":"11.65163888888889","赤纬(J2000)":"-9h20m52s","赤纬D(J2000)":"-9.347777777777779","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"","简略描述":"vF, eS, R, * 10 p 15s"},{"ID":"3772","标识":"NGC3772","M标识":"NGC3772","拓展名":"","组件":"","Class":"II 352","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h37m48.4s","赤经D(J2000)":"11.63011111111111","赤纬(J2000)":"+22h41m26s","赤纬D(J2000)":"22.690555555555555","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"16","详细描述":"very faint, small, extended, mottled but not resolved","简略描述":"vF, S, E, r"},{"ID":"3773","标识":"NGC3773","M标识":"NGC3773","拓展名":"","组件":"","Class":"III 81","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h38m13s","赤经D(J2000)":"11.636944444444444","赤纬(J2000)":"+12h6m45s","赤纬D(J2000)":"12.112499999999999","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.2","短轴(分)":"1","方位角":"165","详细描述":"considerably faint, considerably small, round, pretty suddenly brighter middle","简略描述":"cF, cS, R, psbM"},{"ID":"3774","标识":"NGC3774","M标识":"NGC3774","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h38m30.3s","赤经D(J2000)":"11.64175","赤纬(J2000)":"-8h58m35s","赤纬D(J2000)":"-8.97638888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.5","方位角":"56","详细描述":"extremely faint, very small, extended 75°, 9th magnitude star 3 arcmin to northwest","简略描述":"eF, vS, E 75°, * 9 np 3'"},{"ID":"3775","标识":"NGC3775","M标识":"NGC3775","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h38m26.7s","赤经D(J2000)":"11.640749999999999","赤纬(J2000)":"-10h38m17s","赤纬D(J2000)":"-10.638055555555555","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"27","详细描述":"pretty bright, brighter middle and nucleus","简略描述":"pB, bMN"},{"ID":"3776","标识":"NGC3776","M标识":"NGC3776","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h38m17.9s","赤经D(J2000)":"11.638305555555554","赤纬(J2000)":"-3h21m14s","赤纬D(J2000)":"-3.353888888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"155","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"3777","标识":"NGC3777","M标识":"NGC3777","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h36m6.8s","赤经D(J2000)":"11.601888888888888","赤纬(J2000)":"-12h34m9s","赤纬D(J2000)":"-12.569166666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"35","详细描述":"","简略描述":"eF, pS, iR, gbM, S * or neb f"},{"ID":"3778","标识":"NGC3778","M标识":"NGC3778","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h38m21.4s","赤经D(J2000)":"11.639277777777778","赤纬(J2000)":"-50h42m56s","赤纬D(J2000)":"-50.71555555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"24","详细描述":"","简略描述":"eF, S, R, am 50 S st"},{"ID":"3779","标识":"NGC3779","M标识":"NGC3779","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h38m50.8s","赤经D(J2000)":"11.647444444444444","赤纬(J2000)":"-10h35m3s","赤纬D(J2000)":"-10.584166666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.9","短轴(分)":"1","方位角":"85","详细描述":"most extremely faint","简略描述":"eeF"},{"ID":"3780","标识":"NGC3780","M标识":"NGC3780","拓展名":"","组件":"","Class":"I 227","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h39m21.9s","赤经D(J2000)":"11.656083333333333","赤纬(J2000)":"+56h16m14s","赤纬D(J2000)":"56.27055555555555","可见光星等V":"11.5","摄影(蓝光)星等B":"12.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3","短轴(分)":"2.4","方位角":"90","详细描述":"pretty faint, large, very little extended, very gradually brighter middle, mottled but not resolved","简略描述":"pF, L, vlE, vgbM, r"},{"ID":"3781","标识":"NGC3781","M标识":"NGC3781","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h39m3.9s","赤经D(J2000)":"11.651083333333334","赤纬(J2000)":"+26h21m45s","赤纬D(J2000)":"26.3625","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"30","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"3782","标识":"NGC3782","M标识":"NGC3782","拓展名":"","组件":"","Class":"II 732","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h39m20.5s","赤经D(J2000)":"11.655694444444444","赤纬(J2000)":"+46h30m47s","赤纬D(J2000)":"46.51305555555555","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"0","详细描述":"","简略描述":"F, S, att to * 15, another * inv"},{"ID":"3783","标识":"NGC3783","M标识":"NGC3783","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h39m1.6s","赤经D(J2000)":"11.650444444444444","赤纬(J2000)":"-37h44m18s","赤纬D(J2000)":"-37.73833333333334","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.9","短轴(分)":"1.7","方位角":"160","详细描述":"","简略描述":"cB, R, sbMN *, * 9 sf"},{"ID":"3784","标识":"NGC3784","M标识":"NGC3784","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h39m29.7s","赤经D(J2000)":"11.65825","赤纬(J2000)":"+26h18m35s","赤纬D(J2000)":"26.309722222222224","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"135","详细描述":"very faint, very small, round, gradually much brighter middle","简略描述":"vF, vS, R, gmbM"},{"ID":"3785","标识":"NGC3785","M标识":"NGC3785","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h39m32.9s","赤经D(J2000)":"11.65913888888889","赤纬(J2000)":"+26h18m10s","赤纬D(J2000)":"26.302777777777777","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.4","方位角":"25","详细描述":"very faint, extremely small, round, brighter middle","简略描述":"vF, eS, R, bM"},{"ID":"3786","标识":"NGC3786","M标识":"NGC3786","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h39m42.5s","赤经D(J2000)":"11.661805555555556","赤纬(J2000)":"+31h54m31s","赤纬D(J2000)":"31.90861111111111","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.1","短轴(分)":"1.1","方位角":"77","详细描述":"","简略描述":"pB, pL, E 57°, gbM, p of 2"},{"ID":"3787","标识":"NGC3787","M标识":"NGC3787","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h39m38.1s","赤经D(J2000)":"11.660583333333333","赤纬(J2000)":"+20h27m18s","赤纬D(J2000)":"20.455","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"21","详细描述":"","简略描述":"vF, vS, R, * 15 p"},{"ID":"3788","标识":"NGC3788","M标识":"NGC3788","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h39m44.7s","赤经D(J2000)":"11.662416666666667","赤纬(J2000)":"+31h55m50s","赤纬D(J2000)":"31.930555555555557","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.1","短轴(分)":"0.7","方位角":"178","详细描述":"","简略描述":"cB, pL, pmE 177°, pgbM"},{"ID":"3789","标识":"NGC3789","M标识":"NGC3789","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h38m9s","赤经D(J2000)":"11.635833333333332","赤纬(J2000)":"-9h36m24s","赤纬D(J2000)":"-9.606666666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"179","详细描述":"extremely faint, very small, extended 0°, gradually brighter middle","简略描述":"eF, vS, E 0°, gbM"},{"ID":"3790","标识":"NGC3790","M标识":"NGC3790","拓展名":"","组件":"","Class":"III 109","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h39m47.2s","赤经D(J2000)":"11.663111111111112","赤纬(J2000)":"+17h42m44s","赤纬D(J2000)":"17.71222222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"154","详细描述":"considerably faint, very small, pretty much extended, suddenly brighter middle, 2 small (faint) stars to east, 1st of 3","简略描述":"cF, vS, pmE, sbM, 2 S st f, 1st of 3"},{"ID":"3791","标识":"NGC3791","M标识":"NGC3791","拓展名":"","组件":"","Class":"III 609","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h39m41.6s","赤经D(J2000)":"11.661555555555555","赤纬(J2000)":"-9h22m0s","赤纬D(J2000)":"-9.366666666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"1","方位角":"164","详细描述":"","简略描述":"vF, vS, R, gbM, * 8 s 6'"},{"ID":"3792","标识":"NGC3792","M标识":"NGC3792","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h39m38.5s","赤经D(J2000)":"11.660694444444445","赤纬(J2000)":"+5h6m0s","赤纬D(J2000)":"5.1","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, diffuse","简略描述":"vF, dif"},{"ID":"3793","标识":"NGC3793","M标识":"NGC3793","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h40m2s","赤经D(J2000)":"11.667222222222222","赤纬(J2000)":"+31h52m41s","赤纬D(J2000)":"31.878055555555555","可见光星等V":"99","摄影(蓝光)星等B":"13.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vS, f h 932"},{"ID":"3794","标识":"NGC3794","M标识":"NGC3794","拓展名":"","组件":"","Class":"III 773","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h40m54s","赤经D(J2000)":"11.681666666666667","赤纬(J2000)":"+56h12m6s","赤纬D(J2000)":"56.20166666666667","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.2","短轴(分)":"1.5","方位角":"120","详细描述":"","简略描述":"cF, pS, vS * v nr"},{"ID":"3795","标识":"NGC3795","M标识":"NGC3795","拓展名":"","组件":"","Class":"III 844","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h40m6.7s","赤经D(J2000)":"11.668527777777777","赤纬(J2000)":"+58h36m45s","赤纬D(J2000)":"58.612500000000004","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.1","短轴(分)":"0.5","方位角":"53","详细描述":"very faint, small, much extended","简略描述":"vF, S, mE"},{"ID":"3796","标识":"NGC3796","M标识":"NGC3796","拓展名":"","组件":"","Class":"II 839","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h40m31s","赤经D(J2000)":"11.675277777777778","赤纬(J2000)":"+60h17m56s","赤纬D(J2000)":"60.29888888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"127","详细描述":"faint, considerably small, round, much brighter middle","简略描述":"F, cS, R, mbM"},{"ID":"3797","标识":"NGC3797","M标识":"NGC3797","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h40m13.4s","赤经D(J2000)":"11.670388888888889","赤纬(J2000)":"+31h54m23s","赤纬D(J2000)":"31.906388888888888","可见光星等V":"99","摄影(蓝光)星等B":"14.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vS, f h 932"},{"ID":"3798","标识":"NGC3798","M标识":"NGC3798","拓展名":"","组件":"","Class":"II 340","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h40m13.9s","赤经D(J2000)":"11.670527777777778","赤纬(J2000)":"+24h41m49s","赤纬D(J2000)":"24.696944444444444","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.3","短轴(分)":"1.2","方位角":"60","详细描述":"faint, considerably small, a little extended, stellar, mottled but not resolved","简略描述":"F, cS, lE, stellar, r"},{"ID":"3799","标识":"NGC3799","M标识":"NGC3799","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h40m9.3s","赤经D(J2000)":"11.66925","赤纬(J2000)":"+15h19m39s","赤纬D(J2000)":"15.3275","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"114","详细描述":"considerably faint, round, western of 2","简略描述":"cF, R, p of 2"},{"ID":"3800","标识":"NGC3800","M标识":"NGC3800","拓展名":"","组件":"","Class":"II 103","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h40m13.3s","赤经D(J2000)":"11.670361111111111","赤纬(J2000)":"+15h20m32s","赤纬D(J2000)":"15.342222222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2","短轴(分)":"0.6","方位角":"52","详细描述":"faint, pretty small, extended, pretty gradually a little brighter middle, mottled but not resolved, eastern of 2","简略描述":"F, pS, E, pglbM, r, f of 2"},{"ID":"3801","标识":"NGC3801","M标识":"NGC3801","拓展名":"","组件":"","Class":"II 161, III 30","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h40m16.8s","赤经D(J2000)":"11.671333333333333","赤纬(J2000)":"+17h43m39s","赤纬D(J2000)":"17.7275","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.5","短轴(分)":"1.6","方位角":"120","详细描述":"pretty faint, pretty large, round, brighter middle, mottled but not resolved, 2nd of 3","简略描述":"pF, pL, R, bM, r, 2nd of 3"},{"ID":"3802","标识":"NGC3802","M标识":"NGC3802","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h40m18.7s","赤经D(J2000)":"11.671861111111111","赤纬(J2000)":"+17h45m55s","赤纬D(J2000)":"17.76527777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"85","详细描述":"","简略描述":"vF, pS, r, 2 vB st p, 3rd of 3"},{"ID":"3803","标识":"NGC3803","M标识":"NGC3803","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h40m17.3s","赤经D(J2000)":"11.671472222222222","赤纬(J2000)":"+17h48m6s","赤纬D(J2000)":"17.801666666666666","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"3804","标识":"NGC3804","M标识":"NGC3804","拓展名":"","组件":"","Class":"II 830","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h40m54s","赤经D(J2000)":"11.681666666666667","赤纬(J2000)":"+56h12m6s","赤纬D(J2000)":"56.20166666666667","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.2","短轴(分)":"1.5","方位角":"120","详细描述":"pretty bright, extended","简略描述":"pB, E"},{"ID":"3805","标识":"NGC3805","M标识":"NGC3805","拓展名":"","组件":"","Class":"III 375","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h40m41.6s","赤经D(J2000)":"11.678222222222221","赤纬(J2000)":"+20h20m37s","赤纬D(J2000)":"20.34361111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"60","详细描述":"considerably bright, considerably small, round, brighter middle, mottled but not resolved","简略描述":"cB, cS, R, bM, r"},{"ID":"3806","标识":"NGC3806","M标识":"NGC3806","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h40m46.7s","赤经D(J2000)":"11.679638888888888","赤纬(J2000)":"+17h47m44s","赤纬D(J2000)":"17.795555555555556","可见光星等V":"13.6","摄影(蓝光)星等B":"14.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.2","短轴(分)":"1.8","方位角":"169","详细描述":"","简略描述":"F, pL, * 9·10 s 5'"},{"ID":"3807","标识":"NGC3807","M标识":"NGC3807","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h40m54.7s","赤经D(J2000)":"11.681861111111111","赤纬(J2000)":"+17h49m7s","赤纬D(J2000)":"17.81861111111111","可见光星等V":"16","摄影(蓝光)星等B":"17.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, S, R (? vF *)"},{"ID":"3808","标识":"NGC3808","M标识":"NGC3808","拓展名":"","组件":"","Class":"III 338","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h40m44s","赤经D(J2000)":"11.678888888888888","赤纬(J2000)":"+22h25m47s","赤纬D(J2000)":"22.429722222222225","可见光星等V":"13.5","摄影(蓝光)星等B":"14.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"0","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"3809","标识":"NGC3809","M标识":"NGC3809","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h41m15.9s","赤经D(J2000)":"11.68775","赤纬(J2000)":"+59h53m10s","赤纬D(J2000)":"59.88611111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1","短轴(分)":"0.8","方位角":"123","详细描述":"pretty bright, small, round, gradually a little brighter middle","简略描述":"pB, S, R, glbM"},{"ID":"3810","标识":"NGC3810","M标识":"NGC3810","拓展名":"","组件":"","Class":"I 21","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h40m58.6s","赤经D(J2000)":"11.682944444444443","赤纬(J2000)":"+11h28m13s","赤纬D(J2000)":"11.470277777777778","可见光星等V":"10.8","摄影(蓝光)星等B":"11.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4.3","短轴(分)":"3","方位角":"15","详细描述":"bright, large, very little extended","简略描述":"B, L, vlE"},{"ID":"3811","标识":"NGC3811","M标识":"NGC3811","拓展名":"","组件":"","Class":"II 737","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h41m16.5s","赤经D(J2000)":"11.687916666666666","赤纬(J2000)":"+47h41m28s","赤纬D(J2000)":"47.691111111111105","可见光星等V":"12.3","摄影(蓝光)星等B":"12.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.2","短轴(分)":"1.7","方位角":"160","详细描述":"faint, small, very little extended, gradually a little brighter middle","简略描述":"F, S, vlE, glbM"},{"ID":"3812","标识":"NGC3812","M标识":"NGC3812","拓展名":"","组件":"","Class":"III 320","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h41m7.8s","赤经D(J2000)":"11.685500000000001","赤纬(J2000)":"+24h49m21s","赤纬D(J2000)":"24.822499999999998","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"63","详细描述":"","简略描述":"cF, vS, R, 1st of 3, * 6 sf 3'"},{"ID":"3813","标识":"NGC3813","M标识":"NGC3813","拓展名":"","组件":"","Class":"I 94","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h41m18.5s","赤经D(J2000)":"11.688472222222222","赤纬(J2000)":"+36h32m48s","赤纬D(J2000)":"36.54666666666667","可见光星等V":"11.7","摄影(蓝光)星等B":"12.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2","短轴(分)":"1","方位角":"87","详细描述":"","简略描述":"cB, pL, pmE 90° ±, bM"},{"ID":"3814","标识":"NGC3814","M标识":"NGC3814","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h41m27.7s","赤经D(J2000)":"11.691027777777778","赤纬(J2000)":"+24h48m20s","赤纬D(J2000)":"24.805555555555557","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"174","详细描述":"","简略描述":"vS, nebs *, p III 339"},{"ID":"3815","标识":"NGC3815","M标识":"NGC3815","拓展名":"","组件":"","Class":"III 339","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h41m39.3s","赤经D(J2000)":"11.69425","赤纬(J2000)":"+24h48m1s","赤纬D(J2000)":"24.80027777777778","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"72","详细描述":"considerably faint, small, 3rd of 3","简略描述":"cF, S, 3rd of 3"},{"ID":"3816","标识":"NGC3816","M标识":"NGC3816","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h41m47.8s","赤经D(J2000)":"11.696611111111112","赤纬(J2000)":"+20h6m13s","赤纬D(J2000)":"20.103611111111114","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"70","详细描述":"faint, small, brighter middle","简略描述":"F, S, bM"},{"ID":"3817","标识":"NGC3817","M标识":"NGC3817","拓展名":"","组件":"","Class":"","业余排名":"8.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h41m52.8s","赤经D(J2000)":"11.698","赤纬(J2000)":"+10h18m16s","赤纬D(J2000)":"10.304444444444446","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.9","方位角":"140","详细描述":"faint, 1st of 4","简略描述":"F, 1st of 4"},{"ID":"3818","标识":"NGC3818","M标识":"NGC3818","拓展名":"","组件":"","Class":"III 284","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h41m57.3s","赤经D(J2000)":"11.699250000000001","赤纬(J2000)":"-6h9m20s","赤纬D(J2000)":"-6.155555555555556","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2","短轴(分)":"1.2","方位角":"103","详细描述":"faint, pretty small, round, pretty suddenly brighter middle","简略描述":"F, pS, R, psbM"},{"ID":"3819","标识":"NGC3819","M标识":"NGC3819","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h42m5.8s","赤经D(J2000)":"11.701611111111111","赤纬(J2000)":"+10h21m6s","赤纬D(J2000)":"10.351666666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"136","详细描述":"very faint, 2nd of 4","简略描述":"vF, 2nd of 4"},{"ID":"3820","标识":"NGC3820","M标识":"NGC3820","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h42m4.8s","赤经D(J2000)":"11.701333333333332","赤纬(J2000)":"+10h23m4s","赤纬D(J2000)":"10.384444444444444","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"35","详细描述":"","简略描述":"eF, vS, h 950 s"},{"ID":"3821","标识":"NGC3821","M标识":"NGC3821","拓展名":"","组件":"","Class":"III 376","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h42m9s","赤经D(J2000)":"11.702499999999999","赤纬(J2000)":"+20h18m55s","赤纬D(J2000)":"20.31527777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"165","详细描述":"very faint, considerably small, round, brighter middle, between 2 stars","简略描述":"vF, cS, R, bM, bet 2 st"},{"ID":"3822","标识":"NGC3822","M标识":"NGC3822","拓展名":"","组件":"","Class":"II 153","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h42m11.1s","赤经D(J2000)":"11.703083333333332","赤纬(J2000)":"+10h16m41s","赤纬D(J2000)":"10.278055555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"178","详细描述":"pretty faint, pretty small, 3rd of 4","简略描述":"pF, pS, 3rd of 4"},{"ID":"3823","标识":"NGC3823","M标识":"NGC3823","拓展名":"","组件":"1","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h42m15.1s","赤经D(J2000)":"11.704194444444443","赤纬(J2000)":"-13h52m0s","赤纬D(J2000)":"-13.866666666666667","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"88","详细描述":"faint, considerably small, a little extended, pretty suddenly a little brighter middle","简略描述":"F, cS, lE, pslbM"},{"ID":"3824","标识":"NGC3824","M标识":"NGC3824","拓展名":"","组件":"","Class":"III 774","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h42m44.8s","赤经D(J2000)":"11.712444444444444","赤纬(J2000)":"+52h46m48s","赤纬D(J2000)":"52.78","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"118","详细描述":"very faint, considerably small, pretty much extended","简略描述":"vF, cS, pmE"},{"ID":"3825","标识":"NGC3825","M标识":"NGC3825","拓展名":"","组件":"","Class":"II 154","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h42m23.8s","赤经D(J2000)":"11.70661111111111","赤纬(J2000)":"+10h15m53s","赤纬D(J2000)":"10.264722222222222","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1","方位角":"160","详细描述":"pretty faint, pretty small, 4th of 4","简略描述":"pF, pS, 4th of 4"},{"ID":"3826","标识":"NGC3826","M标识":"NGC3826","拓展名":"","组件":"","Class":"II 341","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h42m32.9s","赤经D(J2000)":"11.709138888888889","赤纬(J2000)":"+26h29m21s","赤纬D(J2000)":"26.489166666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"65","详细描述":"pretty faint, small, round, pretty suddenly brighter middle, stellar","简略描述":"pF, S, R, psbM, stellar"},{"ID":"3827","标识":"NGC3827","M标识":"NGC3827","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h42m36.2s","赤经D(J2000)":"11.710055555555554","赤纬(J2000)":"+18h50m43s","赤纬D(J2000)":"18.845277777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"13.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"65","详细描述":"faint, small, a little brighter middle","简略描述":"F, S, lbM"},{"ID":"3828","标识":"NGC3828","M标识":"NGC3828","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h42m58.3s","赤经D(J2000)":"11.716194444444444","赤纬(J2000)":"+16h29m16s","赤纬D(J2000)":"16.48777777777778","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"30","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"3829","标识":"NGC3829","M标识":"NGC3829","拓展名":"","组件":"","Class":"III 775","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h43m27.3s","赤经D(J2000)":"11.72425","赤纬(J2000)":"+52h42m41s","赤纬D(J2000)":"52.71138888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.6","方位角":"113","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"3830","标识":"NGC3830","M标识":"NGC3830","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h42m32.9s","赤经D(J2000)":"11.709138888888889","赤纬(J2000)":"+26h29m21s","赤纬D(J2000)":"26.489166666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"65","详细描述":"extremely faint","简略描述":"eF"},{"ID":"3831","标识":"NGC3831","M标识":"NGC3831","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a\/P","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h43m18.6s","赤经D(J2000)":"11.721833333333333","赤纬(J2000)":"-12h52m41s","赤纬D(J2000)":"-12.878055555555555","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.7","短轴(分)":"0.6","方位角":"23","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"3832","标识":"NGC3832","M标识":"NGC3832","拓展名":"","组件":"","Class":"III 340","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h43m31.4s","赤经D(J2000)":"11.725388888888888","赤纬(J2000)":"+22h43m31s","赤纬D(J2000)":"22.725277777777777","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.9","短轴(分)":"1.6","方位角":"120","详细描述":"","简略描述":"vF, pL, 2 suspected neb nr"},{"ID":"3833","标识":"NGC3833","M标识":"NGC3833","拓展名":"","组件":"","Class":"III 102","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h43m28.9s","赤经D(J2000)":"11.724694444444445","赤纬(J2000)":"+10h9m41s","赤纬D(J2000)":"10.161388888888888","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"27","详细描述":"extremely faint, pretty small","简略描述":"eF, pS"},{"ID":"3834","标识":"NGC3834","M标识":"NGC3834","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h43m37.7s","赤经D(J2000)":"11.72713888888889","赤纬(J2000)":"+19h5m26s","赤纬D(J2000)":"19.090555555555554","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"1","方位角":"129","详细描述":"","简略描述":"vF, vS, slbMN * 13"},{"ID":"3835","标识":"NGC3835","M标识":"NGC3835","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h44m5s","赤经D(J2000)":"11.73472222222222","赤纬(J2000)":"+60h7m13s","赤纬D(J2000)":"60.12027777777778","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"60","详细描述":"","简略描述":"pB, E, gbM, ** 8 sf 5'"},{"ID":"3836","标识":"NGC3836","M标识":"NGC3836","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h43m29.8s","赤经D(J2000)":"11.724944444444445","赤纬(J2000)":"-16h47m51s","赤纬D(J2000)":"-16.797500000000003","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"33","详细描述":"faint, small, faint star close to north","简略描述":"F, S, F * close n"},{"ID":"3837","标识":"NGC3837","M标识":"NGC3837","拓展名":"","组件":"","Class":"III 377","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h43m56.6s","赤经D(J2000)":"11.73238888888889","赤纬(J2000)":"+19h53m41s","赤纬D(J2000)":"19.89472222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"considerably faint, small, round, 1st of 5","简略描述":"cF, S, R, 1st of 5"},{"ID":"3838","标识":"NGC3838","M标识":"NGC3838","拓展名":"","组件":"","Class":"II 831","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h44m13.4s","赤经D(J2000)":"11.737055555555555","赤纬(J2000)":"+57h56m55s","赤纬D(J2000)":"57.948611111111106","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"141","详细描述":"","简略描述":"pB, cS, E, psbM * 12"},{"ID":"3839","标识":"NGC3839","M标识":"NGC3839","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h43m54.4s","赤经D(J2000)":"11.731777777777777","赤纬(J2000)":"+10h47m4s","赤纬D(J2000)":"10.784444444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.5","方位角":"87","详细描述":"very faint, small, round, a little brighter middle","简略描述":"vF, S, R, lbM"},{"ID":"3840","标识":"NGC3840","M标识":"NGC3840","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h43m59s","赤经D(J2000)":"11.733055555555556","赤纬(J2000)":"+20h4m37s","赤纬D(J2000)":"20.076944444444443","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"67","详细描述":"faint, small, a little extended","简略描述":"F, S, lE"},{"ID":"3841","标识":"NGC3841","M标识":"NGC3841","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h44m2.1s","赤经D(J2000)":"11.733916666666666","赤纬(J2000)":"+19h58m20s","赤纬D(J2000)":"19.97222222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"95","详细描述":"considerably faint, small, round, 2nd of 5","简略描述":"cF, S, R, 2nd of 5"},{"ID":"3842","标识":"NGC3842","M标识":"NGC3842","拓展名":"","组件":"","Class":"III 378","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h44m2s","赤经D(J2000)":"11.733888888888888","赤纬(J2000)":"+19h57m0s","赤纬D(J2000)":"19.95","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.4","短轴(分)":"1","方位角":"5","详细描述":"faint, small, round, very gradually a little brighter middle, 3rd of 5","简略描述":"F, S, R, vglbM, 3rd of 5"},{"ID":"3843","标识":"NGC3843","M标识":"NGC3843","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h43m54.6s","赤经D(J2000)":"11.731833333333334","赤纬(J2000)":"+7h55m34s","赤纬D(J2000)":"7.926111111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"42","详细描述":"faint, extended southwest-northeast, 11th magnitude star to west","简略描述":"F, E sp nf, * 11 p"},{"ID":"3844","标识":"NGC3844","M标识":"NGC3844","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h44m0.9s","赤经D(J2000)":"11.733583333333332","赤纬(J2000)":"+20h1m46s","赤纬D(J2000)":"20.029444444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.2","短轴(分)":"0.2","方位角":"28","详细描述":"very faint, pretty small, a little extended","简略描述":"vF, pS, lE"},{"ID":"3845","标识":"NGC3845","M标识":"NGC3845","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h44m5.5s","赤经D(J2000)":"11.73486111111111","赤纬(J2000)":"+19h59m46s","赤纬D(J2000)":"19.996111111111112","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"135","详细描述":"very faint, pretty small, 4th of 5","简略描述":"vF, pS, 4th of 5"},{"ID":"3846","标识":"NGC3846","M标识":"NGC3846","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h44m28.9s","赤经D(J2000)":"11.741361111111111","赤纬(J2000)":"+55h39m8s","赤纬D(J2000)":"55.65222222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.7","方位角":"135","详细描述":"faint, pretty large, round, very gradually brighter middle","简略描述":"F, pL, R, vgbM"},{"ID":"3847","标识":"NGC3847","M标识":"NGC3847","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h44m14s","赤经D(J2000)":"11.737222222222222","赤纬(J2000)":"+33h30m52s","赤纬D(J2000)":"33.51444444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"faint, small, round, pretty suddenly brighter middle","简略描述":"F, S, R, psbM"},{"ID":"3848","标识":"NGC3848","M标识":"NGC3848","拓展名":"","组件":"","Class":"III 35","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h42m11.1s","赤经D(J2000)":"11.703083333333332","赤纬(J2000)":"+10h16m41s","赤纬D(J2000)":"10.278055555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"178","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"3849","标识":"NGC3849","M标识":"NGC3849","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h45m35.2s","赤经D(J2000)":"11.759777777777778","赤纬(J2000)":"+3h13m56s","赤纬D(J2000)":"3.2322222222222226","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"36","详细描述":"","简略描述":"F, S, F * 2' ssp"},{"ID":"3850","标识":"NGC3850","M标识":"NGC3850","拓展名":"","组件":"","Class":"III 776","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h45m35.5s","赤经D(J2000)":"11.75986111111111","赤纬(J2000)":"+55h53m12s","赤纬D(J2000)":"55.88666666666666","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.1","短轴(分)":"1","方位角":"118","详细描述":"extremely faint, pretty large, a little extended","简略描述":"eF, pL, lE"},{"ID":"3851","标识":"NGC3851","M标识":"NGC3851","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h44m20.4s","赤经D(J2000)":"11.738999999999999","赤纬(J2000)":"+19h58m52s","赤纬D(J2000)":"19.981111111111108","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"71","详细描述":"extremely faint, very small, round, 5th of 5","简略描述":"eF, vS, R, 5th of 5"},{"ID":"3852","标识":"NGC3852","M标识":"NGC3852","拓展名":"","组件":"","Class":"III 36","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h42m23.8s","赤经D(J2000)":"11.70661111111111","赤纬(J2000)":"+10h15m53s","赤纬D(J2000)":"10.264722222222222","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1","方位角":"160","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"3853","标识":"NGC3853","M标识":"NGC3853","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h44m28.3s","赤经D(J2000)":"11.741194444444444","赤纬(J2000)":"+16h33m30s","赤纬D(J2000)":"16.558333333333334","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"1","方位角":"140","详细描述":"small, round, brighter middle","简略描述":"S, R, bM"},{"ID":"3854","标识":"NGC3854","M标识":"NGC3854","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h44m51.9s","赤经D(J2000)":"11.74775","赤纬(J2000)":"-9h13m59s","赤纬D(J2000)":"-9.233055555555556","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"49","详细描述":"","简略描述":"eF, vS, lE 70°, bMN"},{"ID":"3855","标识":"NGC3855","M标识":"NGC3855","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h44m25.8s","赤经D(J2000)":"11.740499999999999","赤纬(J2000)":"+33h21m21s","赤纬D(J2000)":"33.35583333333334","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"72","详细描述":"","简略描述":"eF, vS, PD doubtful"},{"ID":"3856","标识":"NGC3856","M标识":"NGC3856","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h44m14s","赤经D(J2000)":"11.737222222222222","赤纬(J2000)":"+33h30m52s","赤纬D(J2000)":"33.51444444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"","简略描述":"North of the last one, others near"},{"ID":"3857","标识":"NGC3857","M标识":"NGC3857","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h44m50.1s","赤经D(J2000)":"11.74725","赤纬(J2000)":"+19h31m59s","赤纬D(J2000)":"19.533055555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.6","方位角":"42","详细描述":"very faint, very small, much brighter middle","简略描述":"vF, vS, mbM"},{"ID":"3858","标识":"NGC3858","M标识":"NGC3858","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h45m11.6s","赤经D(J2000)":"11.753222222222222","赤纬(J2000)":"-9h18m52s","赤纬D(J2000)":"-9.314444444444446","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"56","详细描述":"","简略描述":"eF, eS, R, gbM, * 9.5 p 3s"},{"ID":"3859","标识":"NGC3859","M标识":"NGC3859","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h44m52.4s","赤经D(J2000)":"11.747888888888887","赤纬(J2000)":"+19h27m17s","赤纬D(J2000)":"19.454722222222223","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"58","详细描述":"extremely faint, very small, round, a little brighter middle, mottled but not resolved?","简略描述":"eF, vS, R, lbM, r?"},{"ID":"3860","标识":"NGC3860","M标识":"NGC3860","拓展名":"A","组件":"","Class":"III 386","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h44m49.2s","赤经D(J2000)":"11.747","赤纬(J2000)":"+19h47m42s","赤纬D(J2000)":"19.795","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.6","方位角":"38","详细描述":"very faint, very small, mottled but not resolved","简略描述":"vF, vS, r"},{"ID":"3861","标识":"NGC3861","M标识":"NGC3861","拓展名":"A","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h45m3.8s","赤经D(J2000)":"11.751055555555556","赤纬(J2000)":"+19h58m25s","赤纬D(J2000)":"19.973611111111108","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.3","短轴(分)":"1.3","方位角":"77","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"3862","标识":"NGC3862","M标识":"NGC3862","拓展名":"","组件":"","Class":"III 385","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h45m5s","赤经D(J2000)":"11.751388888888888","赤纬(J2000)":"+19h36m23s","赤纬D(J2000)":"19.60638888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"","简略描述":"vF, vS, R, * 17 n"},{"ID":"3863","标识":"NGC3863","M标识":"NGC3863","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h45m5.5s","赤经D(J2000)":"11.751527777777778","赤纬(J2000)":"+8h28m12s","赤纬D(J2000)":"8.47","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.8","短轴(分)":"0.6","方位角":"75","详细描述":"very faint, 2 arcmin long, much extended 70°, gradually a little brighter middle","简略描述":"vF, 2' l, mE 70°, glbM"},{"ID":"3864","标识":"NGC3864","M标识":"NGC3864","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"D","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h45m15.6s","赤经D(J2000)":"11.754333333333333","赤纬(J2000)":"+19h23m32s","赤纬D(J2000)":"19.392222222222223","可见光星等V":"14.2","摄影(蓝光)星等B":"14.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"66","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"3865","标识":"NGC3865","M标识":"NGC3865","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h44m51.9s","赤经D(J2000)":"11.74775","赤纬(J2000)":"-9h13m59s","赤纬D(J2000)":"-9.233055555555556","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"49","详细描述":"faint, pretty large, diffuse","简略描述":"F, pL, dif"},{"ID":"3866","标识":"NGC3866","M标识":"NGC3866","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h45m11.6s","赤经D(J2000)":"11.753222222222222","赤纬(J2000)":"-9h18m52s","赤纬D(J2000)":"-9.314444444444446","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"56","详细描述":"","简略描述":"sf last one, not so L"},{"ID":"3867","标识":"NGC3867","M标识":"NGC3867","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h45m29.6s","赤经D(J2000)":"11.758222222222223","赤纬(J2000)":"+19h24m1s","赤纬D(J2000)":"19.400277777777777","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"173","详细描述":"faint, small, irregularly round, much brighter middle, southern of 2","简略描述":"F, S, irrR, mbM, s of 2"},{"ID":"3868","标识":"NGC3868","M标识":"NGC3868","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h45m30s","赤经D(J2000)":"11.758333333333333","赤纬(J2000)":"+19h26m41s","赤纬D(J2000)":"19.44472222222222","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"85","详细描述":"very faint, very small, round, much brighter middle, northern of 2","简略描述":"vF, vS, R, mbM, n of 2"},{"ID":"3869","标识":"NGC3869","M标识":"NGC3869","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h45m45.5s","赤经D(J2000)":"11.762638888888889","赤纬(J2000)":"+10h49m29s","赤纬D(J2000)":"10.824722222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.9","短轴(分)":"0.5","方位角":"135","详细描述":"faint, small, irregularly round, pretty suddenly brighter middle","简略描述":"F, S, iR, psbM"},{"ID":"3870","标识":"NGC3870","M标识":"NGC3870","拓展名":"","组件":"","Class":"III 833","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h45m56.6s","赤经D(J2000)":"11.765722222222223","赤纬(J2000)":"+50h12m2s","赤纬D(J2000)":"50.20055555555556","可见光星等V":"13","摄影(蓝光)星等B":"13.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.8","方位角":"25","详细描述":"considerably faint, considerably small, round, pretty suddenly brighter middle","简略描述":"cF, cS, R, psbM"},{"ID":"3871","标识":"NGC3871","M标识":"NGC3871","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h46m10.1s","赤经D(J2000)":"11.769472222222223","赤纬(J2000)":"+33h6m34s","赤纬D(J2000)":"33.10944444444445","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"102","详细描述":"","简略描述":"eF, R, gbM, 1st of 4 (?)"},{"ID":"3872","标识":"NGC3872","M标识":"NGC3872","拓展名":"","组件":"","Class":"II 104","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h45m48.9s","赤经D(J2000)":"11.763583333333333","赤纬(J2000)":"+13h46m0s","赤纬D(J2000)":"13.766666666666667","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.9","短轴(分)":"1.2","方位角":"25","详细描述":"","简略描述":"B, S, R, smbM *"},{"ID":"3873","标识":"NGC3873","M标识":"NGC3873","拓展名":"","组件":"","Class":"III 387","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h45m46s","赤经D(J2000)":"11.762777777777778","赤纬(J2000)":"+19h46m26s","赤纬D(J2000)":"19.773888888888887","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"95","详细描述":"","简略描述":"vF, pS, lE, III 387 sf"},{"ID":"3874","标识":"NGC3874","M标识":"NGC3874","拓展名":"","组件":"","Class":"III 104","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h45m37.9s","赤经D(J2000)":"11.760527777777778","赤纬(J2000)":"+8h34m27s","赤纬D(J2000)":"8.574166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, suspected","简略描述":"vF, vS, suspected"},{"ID":"3875","标识":"NGC3875","M标识":"NGC3875","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h45m49.4s","赤经D(J2000)":"11.763722222222222","赤纬(J2000)":"+19h46m3s","赤纬D(J2000)":"19.7675","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.3","方位角":"87","详细描述":"very faint, very small, mottled but not resolved","简略描述":"vF, vS, r"},{"ID":"3876","标识":"NGC3876","M标识":"NGC3876","拓展名":"","组件":"","Class":"III 103","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h45m26.5s","赤经D(J2000)":"11.757361111111111","赤纬(J2000)":"+9h9m39s","赤纬D(J2000)":"9.160833333333334","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"105","详细描述":"very faint, mottled but not resolved","简略描述":"vF, r"},{"ID":"3877","标识":"NGC3877","M标识":"NGC3877","拓展名":"","组件":"","Class":"I 201","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h46m7.3s","赤经D(J2000)":"11.768694444444446","赤纬(J2000)":"+47h29m40s","赤纬D(J2000)":"47.49444444444445","可见光星等V":"11","摄影(蓝光)星等B":"11.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"5.3","短轴(分)":"1.2","方位角":"35","详细描述":"bright, large, much extended 37°","简略描述":"B, L, mE 37°"},{"ID":"3878","标识":"NGC3878","M标识":"NGC3878","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h46m17.7s","赤经D(J2000)":"11.771583333333334","赤纬(J2000)":"+33h12m18s","赤纬D(J2000)":"33.205000000000005","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, round, 2nd of 4","简略描述":"vF, R, 2nd of 4"},{"ID":"3879","标识":"NGC3879","M标识":"NGC3879","拓展名":"","组件":"","Class":"II 881","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"11h46m49.6s","赤经D(J2000)":"11.780444444444445","赤纬(J2000)":"+69h23m0s","赤纬D(J2000)":"69.38333333333334","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.7","短轴(分)":"0.5","方位角":"130","详细描述":"","简略描述":"F, pL, mE 105° ± (d'A not found)"},{"ID":"3880","标识":"NGC3880","M标识":"NGC3880","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h46m22.2s","赤经D(J2000)":"11.772833333333335","赤纬(J2000)":"+33h9m44s","赤纬D(J2000)":"33.16222222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, round, gradually brighter middle, 3rd of 4","简略描述":"vF, R, gbM, 3rd of 4"},{"ID":"3881","标识":"NGC3881","M标识":"NGC3881","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h46m34.4s","赤经D(J2000)":"11.776222222222223","赤纬(J2000)":"+33h6m25s","赤纬D(J2000)":"33.106944444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, round, gradually brighter middle, 4th of 4","简略描述":"vF, R, gbM, 4th of 4"},{"ID":"3882","标识":"NGC3882","M标识":"NGC3882","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h46m6.1s","赤经D(J2000)":"11.768361111111112","赤纬(J2000)":"-56h23m20s","赤纬D(J2000)":"-56.388888888888886","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.3","短轴(分)":"1.4","方位角":"126","详细描述":"very faint, a little extended, 2 stars involved","简略描述":"vF, lE, 2 st inv"},{"ID":"3883","标识":"NGC3883","M标识":"NGC3883","拓展名":"","组件":"","Class":"III 372","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h46m47.1s","赤经D(J2000)":"11.77975","赤纬(J2000)":"+20h40m33s","赤纬D(J2000)":"20.675833333333333","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"2.8","短轴(分)":"2.3","方位角":"159","详细描述":"very faint, considerably large","简略描述":"vF, cL"},{"ID":"3884","标识":"NGC3884","M标识":"NGC3884","拓展名":"","组件":"","Class":"III 388","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h46m12.1s","赤经D(J2000)":"11.770027777777779","赤纬(J2000)":"+20h23m29s","赤纬D(J2000)":"20.391388888888887","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.1","短轴(分)":"1.4","方位角":"10","详细描述":"","简略描述":"cF, S, iR, gbM, r, * 7 sp 6'"},{"ID":"3885","标识":"NGC3885","M标识":"NGC3885","拓展名":"","组件":"","Class":"III 828","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"11h46m46.5s","赤经D(J2000)":"11.779583333333335","赤纬(J2000)":"-27h55m20s","赤纬D(J2000)":"-27.922222222222224","可见光星等V":"10.9","摄影(蓝光)星等B":"11.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.4","短轴(分)":"1","方位角":"123","详细描述":"considerably faint, very small, very little extended, brighter middle, very faint star to southeast","简略描述":"cF, vS, vlE, bM, vF * sf"},{"ID":"3886","标识":"NGC3886","M标识":"NGC3886","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h47m5.5s","赤经D(J2000)":"11.78486111111111","赤纬(J2000)":"+19h50m14s","赤纬D(J2000)":"19.83722222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"132","详细描述":"faint","简略描述":"F"},{"ID":"3887","标识":"NGC3887","M标识":"NGC3887","拓展名":"","组件":"","Class":"I 120","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h47m4.6s","赤经D(J2000)":"11.784611111111111","赤纬(J2000)":"-16h51m14s","赤纬D(J2000)":"-16.85388888888889","可见光星等V":"10.6","摄影(蓝光)星等B":"11.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.5","短轴(分)":"2.7","方位角":"20","详细描述":"pretty bright, large, irregularly round, very gradually pretty much brighter middle","简略描述":"pB, L, iR, vgpmbM"},{"ID":"3888","标识":"NGC3888","M标识":"NGC3888","拓展名":"","组件":"","Class":"II 785","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h47m34.9s","赤经D(J2000)":"11.793027777777777","赤纬(J2000)":"+55h57m58s","赤纬D(J2000)":"55.96611111111111","可见光星等V":"12.1","摄影(蓝光)星等B":"12.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.8","短轴(分)":"1.4","方位角":"120","详细描述":"pretty bright, small, a little extended, pretty gradually brighter middle","简略描述":"pB, S, lE, pgbM"},{"ID":"3889","标识":"NGC3889","M标识":"NGC3889","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h47m48.1s","赤经D(J2000)":"11.796694444444444","赤纬(J2000)":"+56h1m7s","赤纬D(J2000)":"56.01861111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"126","详细描述":"","简略描述":"vF, vS, 5' s of II 785"},{"ID":"3890","标识":"NGC3890","M标识":"NGC3890","拓展名":"","组件":"","Class":"III 940","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"11h49m19.5s","赤经D(J2000)":"11.822083333333333","赤纬(J2000)":"+74h18m7s","赤纬D(J2000)":"74.30194444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"3891","标识":"NGC3891","M标识":"NGC3891","拓展名":"","组件":"","Class":"II 723","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h48m3.2s","赤经D(J2000)":"11.80088888888889","赤纬(J2000)":"+30h21m35s","赤纬D(J2000)":"30.359722222222224","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2","短轴(分)":"1.7","方位角":"70","详细描述":"pretty bright, small, brighter middle","简略描述":"pB, S, bM"},{"ID":"3892","标识":"NGC3892","M标识":"NGC3892","拓展名":"","组件":"","Class":"II 553","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h48m1s","赤经D(J2000)":"11.800277777777778","赤纬(J2000)":"-10h57m44s","赤纬D(J2000)":"-10.962222222222222","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.1","短轴(分)":"2.3","方位角":"95","详细描述":"pretty bright, pretty large, round, gradually brighter middle, mottled but not resolved","简略描述":"pB, pL, R, gbM, r"},{"ID":"3893","标识":"NGC3893","M标识":"NGC3893","拓展名":"","组件":"","Class":"II 738","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h48m38.2s","赤经D(J2000)":"11.810611111111111","赤纬(J2000)":"+48h42m41s","赤纬D(J2000)":"48.71138888888889","可见光星等V":"10.5","摄影(蓝光)星等B":"10.9","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"4.5","短轴(分)":"2.8","方位角":"165","详细描述":"bright, pretty large, round, much brighter middle","简略描述":"B, pL, R, mbM"},{"ID":"3894","标识":"NGC3894","M标识":"NGC3894","拓展名":"","组件":"","Class":"I 248","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h48m50.2s","赤经D(J2000)":"11.813944444444445","赤纬(J2000)":"+59h24m59s","赤纬D(J2000)":"59.41638888888889","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.8","短轴(分)":"1.7","方位角":"20","详细描述":"bright, pretty large, irregularly round, pretty gradually much brighter middle, western of 2","简略描述":"B, pL, iR, pgmbM, p of 2"},{"ID":"3895","标识":"NGC3895","M标识":"NGC3895","拓展名":"","组件":"","Class":"II 832","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h49m3.8s","赤经D(J2000)":"11.817722222222223","赤纬(J2000)":"+59h25m59s","赤纬D(J2000)":"59.433055555555555","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"116","详细描述":"pretty faint, pretty large, very little extended, gradually brighter middle, eastern of 2","简略描述":"pF, pL, vlE, gbM, f of 2"},{"ID":"3896","标识":"NGC3896","M标识":"NGC3896","拓展名":"","组件":"","Class":"II 739","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h48m56.3s","赤经D(J2000)":"11.81563888888889","赤纬(J2000)":"+48h40m29s","赤纬D(J2000)":"48.67472222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"1","方位角":"126","详细描述":"faint, very small","简略描述":"F, vS"},{"ID":"3897","标识":"NGC3897","M标识":"NGC3897","拓展名":"","组件":"","Class":"II 408","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h48m59.4s","赤经D(J2000)":"11.816500000000001","赤纬(J2000)":"+35h0m57s","赤纬D(J2000)":"35.01583333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.9","短轴(分)":"1.9","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"3898","标识":"NGC3898","M标识":"NGC3898","拓展名":"","组件":"","Class":"I 228","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h49m15.3s","赤经D(J2000)":"11.820916666666667","赤纬(J2000)":"+56h5m5s","赤纬D(J2000)":"56.084722222222226","可见光星等V":"10.7","摄影(蓝光)星等B":"11.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"4.4","短轴(分)":"2.6","方位角":"107","详细描述":"bright, pretty large, a little extended, suddenly very much brighter middle","简略描述":"B, pL, lE, svmbM"},{"ID":"3899","标识":"NGC3899","M标识":"NGC3899","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h50m4.5s","赤经D(J2000)":"11.834583333333335","赤纬(J2000)":"+26h28m49s","赤纬D(J2000)":"26.480277777777776","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"5","详细描述":"pretty bright, round, suddenly much brighter middle","简略描述":"pB, R, smbM"},{"ID":"3900","标识":"NGC3900","M标识":"NGC3900","拓展名":"","组件":"","Class":"I 82","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h49m9.3s","赤经D(J2000)":"11.81925","赤纬(J2000)":"+27h1m18s","赤纬D(J2000)":"27.021666666666665","可见光星等V":"11.4","摄影(蓝光)星等B":"12.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.2","短轴(分)":"1.7","方位角":"2","详细描述":"bright, pretty large, very little extended 0°±, brighter middle and nucleus","简略描述":"B, pL, vlE 0° ±, bMN"},{"ID":"3901","标识":"NGC3901","M标识":"NGC3901","拓展名":"","组件":"","Class":"III 970","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"11h42m49.2s","赤经D(J2000)":"11.713666666666667","赤纬(J2000)":"+77h22m22s","赤纬D(J2000)":"77.37277777777777","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.8","短轴(分)":"0.8","方位角":"165","详细描述":"pretty faint, pretty large, mottled but not resolved. Place doubtful","简略描述":"pF, pL, r, Place doubtful"},{"ID":"3902","标识":"NGC3902","M标识":"NGC3902","拓展名":"","组件":"","Class":"III 321","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h49m18.7s","赤经D(J2000)":"11.821861111111112","赤纬(J2000)":"+26h7m18s","赤纬D(J2000)":"26.121666666666666","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"85","详细描述":"faint, pretty small, a little extended, very gradually a little brighter middle","简略描述":"F, pS, lE, vglbM"},{"ID":"3903","标识":"NGC3903","M标识":"NGC3903","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h49m3.3s","赤经D(J2000)":"11.817583333333333","赤纬(J2000)":"-37h31m2s","赤纬D(J2000)":"-37.51722222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"1","方位角":"116","详细描述":"pretty bright, considerably small, very little extended, a little brighter middle","简略描述":"pB, cS, vlE, lbM"},{"ID":"3904","标识":"NGC3904","M标识":"NGC3904","拓展名":"","组件":"","Class":"II 864","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"11h49m13.2s","赤经D(J2000)":"11.820333333333332","赤纬(J2000)":"-29h16m37s","赤纬D(J2000)":"-29.276944444444442","可见光星等V":"10.9","摄影(蓝光)星等B":"11.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.7","短轴(分)":"2","方位角":"8","详细描述":"pretty bright, small, round, much brighter middle","简略描述":"pB, S, R, mbM"},{"ID":"3905","标识":"NGC3905","M标识":"NGC3905","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h49m4.9s","赤经D(J2000)":"11.818027777777777","赤纬(J2000)":"-9h43m44s","赤纬D(J2000)":"-9.72888888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"106","详细描述":"very faint, large, diffuse","简略描述":"vF, L, dif"},{"ID":"3906","标识":"NGC3906","M标识":"NGC3906","拓展名":"","组件":"","Class":"III 715","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h49m40.2s","赤经D(J2000)":"11.827833333333333","赤纬(J2000)":"+48h25m32s","赤纬D(J2000)":"48.425555555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.8","短轴(分)":"1.7","方位角":"0","详细描述":"extremely faint, pretty large","简略描述":"eF, pL"},{"ID":"3907","标识":"NGC3907","M标识":"NGC3907","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h49m30.1s","赤经D(J2000)":"11.825027777777777","赤纬(J2000)":"-1h5m10s","赤纬D(J2000)":"-1.086111111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"40","详细描述":"extremely faint, small, pretty suddenly brighter middle","简略描述":"eF, S, psbM"},{"ID":"3908","标识":"NGC3908","M标识":"NGC3908","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h49m52.6s","赤经D(J2000)":"11.831277777777778","赤纬(J2000)":"+12h11m11s","赤纬D(J2000)":"12.186388888888889","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round, much brighter middle","简略描述":"F, vS, R, mbM"},{"ID":"3909","标识":"NGC3909","M标识":"NGC3909","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h49m30s","赤经D(J2000)":"11.825","赤纬(J2000)":"-48h15m54s","赤纬D(J2000)":"-48.265","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, a little compressed, stars from 9th to 14th magnitude","简略描述":"Cl, vL, lC, st 9…14"},{"ID":"3910","标识":"NGC3910","M标识":"NGC3910","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h49m59.3s","赤经D(J2000)":"11.83313888888889","赤纬(J2000)":"+21h20m2s","赤纬D(J2000)":"21.333888888888886","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"150","详细描述":"small, round, much brighter middle, 10th or 11th magnitude star 50 arcsec to north","简略描述":"S, R, mbM, * 10·11 n 50\""},{"ID":"3911","标识":"NGC3911","M标识":"NGC3911","拓展名":"","组件":"","Class":"III 341","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h50m5.9s","赤经D(J2000)":"11.834972222222223","赤纬(J2000)":"+24h55m13s","赤纬D(J2000)":"24.92027777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1","短轴(分)":"0.8","方位角":"110","详细描述":"very faint, small, western of 2","简略描述":"vF, S, p of 2"},{"ID":"3912","标识":"NGC3912","M标识":"NGC3912","拓展名":"","组件":"","Class":"II 342","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h50m4.5s","赤经D(J2000)":"11.834583333333335","赤纬(J2000)":"+26h28m49s","赤纬D(J2000)":"26.480277777777776","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"5","详细描述":"faint, pretty large, round, pretty gradually brighter middle","简略描述":"F, pL, R, pgbM"},{"ID":"3913","标识":"NGC3913","M标识":"NGC3913","拓展名":"","组件":"","Class":"II 786","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h50m38.4s","赤经D(J2000)":"11.844000000000001","赤纬(J2000)":"+55h21m14s","赤纬D(J2000)":"55.35388888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"2.6","短轴(分)":"2.6","方位角":"","详细描述":"faint, extended","简略描述":"F, E"},{"ID":"3914","标识":"NGC3914","M标识":"NGC3914","拓展名":"","组件":"","Class":"III 90","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h50m32.6s","赤经D(J2000)":"11.84238888888889","赤纬(J2000)":"+6h34m3s","赤纬D(J2000)":"6.5675","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"40","详细描述":"faint, very small, round, a little brighter middle, 13th magnitude star 80 arcsec to northwest","简略描述":"F, vS, R, lbM, * 13 np 80\""},{"ID":"3915","标识":"NGC3915","M标识":"NGC3915","拓展名":"","组件":"","Class":"III 113","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h49m24.2s","赤经D(J2000)":"11.82338888888889","赤纬(J2000)":"-5h7m5s","赤纬D(J2000)":"-5.118055555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"99","详细描述":"extremely faint, extremely small, between 2 stars","简略描述":"eF, eS, bet 2 st"},{"ID":"3916","标识":"NGC3916","M标识":"NGC3916","拓展名":"","组件":"","Class":"II 787","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h50m51.2s","赤经D(J2000)":"11.847555555555557","赤纬(J2000)":"+55h8m37s","赤纬D(J2000)":"55.14361111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"45","详细描述":"extremely faint, round, gradually brighter middle","简略描述":"eF, R, gbM"},{"ID":"3917","标识":"NGC3917","M标识":"NGC3917","拓展名":"","组件":"","Class":"II 824","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h50m45.6s","赤经D(J2000)":"11.846","赤纬(J2000)":"+51h49m29s","赤纬D(J2000)":"51.82472222222223","可见光星等V":"11.8","摄影(蓝光)星等B":"12.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"5","短轴(分)":"1.1","方位角":"77","详细描述":"faint, large, very much extended, very gradually brighter middle","简略描述":"F, L, vmE, vgbM"},{"ID":"3918","标识":"NGC3918","M标识":"NGC3918","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"蓝行星状星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h50m17.8s","赤经D(J2000)":"11.838277777777778","赤纬(J2000)":"-57h10m55s","赤纬D(J2000)":"-57.18194444444444","可见光星等V":"8.1","摄影(蓝光)星等B":"8.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.38","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, a remarkable object, small, round, blue, = to a 7th magnitude star, diameter = 1.5 seconds of time","简略描述":"planetary, !, S, R, blue, = * 7m, d=1s.5"},{"ID":"3919","标识":"NGC3919","M标识":"NGC3919","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h50m41.5s","赤经D(J2000)":"11.844861111111111","赤纬(J2000)":"+20h0m56s","赤纬D(J2000)":"20.015555555555554","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"3920","标识":"NGC3920","M标识":"NGC3920","拓展名":"","组件":"","Class":"","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h49m22.1s","赤经D(J2000)":"11.822805555555556","赤纬(J2000)":"+24h56m19s","赤纬D(J2000)":"24.93861111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"nebula, eastern of 2","简略描述":"Neb, f of 2"},{"ID":"3921","标识":"NGC3921","M标识":"NGC3921","拓展名":"","组件":"","Class":"II 788","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h51m6.8s","赤经D(J2000)":"11.851888888888888","赤纬(J2000)":"+55h4m46s","赤纬D(J2000)":"55.07944444444445","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.1","短轴(分)":"1.3","方位角":"20","详细描述":"pretty faint, small, round, pretty suddenly pretty much brighter middle","简略描述":"pF, S, R, pspmbM"},{"ID":"3922","标识":"NGC3922","M标识":"NGC3922","拓展名":"","组件":"","Class":"III 716","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h51m13.4s","赤经D(J2000)":"11.853722222222222","赤纬(J2000)":"+50h9m24s","赤纬D(J2000)":"50.156666666666666","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"38","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"3923","标识":"NGC3923","M标识":"NGC3923","拓展名":"","组件":"","Class":"I 259","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"11h51m1.6s","赤经D(J2000)":"11.850444444444443","赤纬(J2000)":"-28h48m21s","赤纬D(J2000)":"-28.805833333333332","可见光星等V":"9.8","摄影(蓝光)星等B":"10.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"5.9","短轴(分)":"3.9","方位角":"50","详细描述":"bright, pretty large, a little extended, gradually much brighter middle, mottled but not resolved, very small (faint) star involved on southwest","简略描述":"B, pL, lE, gmbM, r, vS * sp inv"},{"ID":"3924","标识":"NGC3924","M标识":"NGC3924","拓展名":"","组件":"","Class":"II 825","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h51m13.4s","赤经D(J2000)":"11.853722222222222","赤纬(J2000)":"+50h9m24s","赤纬D(J2000)":"50.156666666666666","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"38","详细描述":"very faint, very small","简略描述":"pB, S, iF, bM"},{"ID":"3925","标识":"NGC3925","M标识":"NGC3925","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h51m20.9s","赤经D(J2000)":"11.855805555555555","赤纬(J2000)":"+21h53m19s","赤纬D(J2000)":"21.88861111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"3","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"3926","标识":"NGC3926","M标识":"NGC3926","拓展名":"A","组件":"","Class":"III 379","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h51m26.5s","赤经D(J2000)":"11.85736111111111","赤纬(J2000)":"+22h1m42s","赤纬D(J2000)":"22.028333333333332","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"117","详细描述":"extremely faint, extremely small, very little extended, extremely mottled but not resolved, star near","简略描述":"eF, eS, vlE, er, st nr"},{"ID":"3927","标识":"NGC3927","M标识":"NGC3927","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m41.9s","赤经D(J2000)":"11.528305555555557","赤纬(J2000)":"+28h9m14s","赤纬D(J2000)":"28.153888888888886","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"125","详细描述":"pretty faint, pretty small","简略描述":"pF, pS"},{"ID":"3928","标识":"NGC3928","M标识":"NGC3928","拓展名":"","组件":"","Class":"II 740","业余排名":"14","中文名":"微螺旋星系","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h51m47.6s","赤经D(J2000)":"11.863222222222221","赤纬(J2000)":"+48h40m59s","赤纬D(J2000)":"48.683055555555555","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"pretty faint, small, round, pretty suddenly pretty much brighter middle","简略描述":"pF, S, R, pspmbM"},{"ID":"3929","标识":"NGC3929","M标识":"NGC3929","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h51m42.5s","赤经D(J2000)":"11.861805555555556","赤纬(J2000)":"+21h0m12s","赤纬D(J2000)":"21.003333333333334","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"80","详细描述":"a cluster, small, stars faint, very compressed","简略描述":"Cl, S, st F, vC"},{"ID":"3930","标识":"NGC3930","M标识":"NGC3930","拓展名":"","组件":"","Class":"III 616","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h51m45.7s","赤经D(J2000)":"11.862694444444443","赤纬(J2000)":"+38h0m52s","赤纬D(J2000)":"38.01444444444444","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"3","短轴(分)":"2.3","方位角":"30","详细描述":"extremely faint, considerably large, irregular figure, gradually a little brighter middle, 7th magnitude star to east","简略描述":"eF, cL, iF, glbM, * 7 f"},{"ID":"3931","标识":"NGC3931","M标识":"NGC3931","拓展名":"","组件":"","Class":"III 769","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h51m13.4s","赤经D(J2000)":"11.853722222222222","赤纬(J2000)":"+52h0m5s","赤纬D(J2000)":"52.00138888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"160","详细描述":"a planetary nebula, a remarkable object, small, round, blue, = to a 7th magnitude star, diameter = 1.5 seconds of time","简略描述":"eF, S"},{"ID":"3932","标识":"NGC3932","M标识":"NGC3932","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h51m53s","赤经D(J2000)":"11.864722222222222","赤纬(J2000)":"+48h40m3s","赤纬D(J2000)":"48.6675","可见光星等V":"99","摄影(蓝光)星等B":"13.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very difficult, II 740 to northwest","简略描述":"vF, v diffic, II 740 np"},{"ID":"3933","标识":"NGC3933","M标识":"NGC3933","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h52m1.9s","赤经D(J2000)":"11.867194444444445","赤纬(J2000)":"+16h48m36s","赤纬D(J2000)":"16.810000000000002","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"83","详细描述":"pretty faint, a little extended","简略描述":"pF, lE"},{"ID":"3934","标识":"NGC3934","M标识":"NGC3934","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h52m12.5s","赤经D(J2000)":"11.870138888888889","赤纬(J2000)":"+16h51m6s","赤纬D(J2000)":"16.851666666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"1","方位角":"66","详细描述":"extremely faint, round","简略描述":"eF, R"},{"ID":"3935","标识":"NGC3935","M标识":"NGC3935","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h52m23.9s","赤经D(J2000)":"11.873305555555556","赤纬(J2000)":"+32h24m16s","赤纬D(J2000)":"32.404444444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"114","详细描述":"pretty faint, small, a little extended, pretty suddenly brighter middle","简略描述":"pF, S, lE, psbM"},{"ID":"3936","标识":"NGC3936","M标识":"NGC3936","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"11h52m20.4s","赤经D(J2000)":"11.872333333333334","赤纬(J2000)":"-26h54m21s","赤纬D(J2000)":"-26.90583333333333","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.9","短轴(分)":"0.7","方位角":"63","详细描述":"very faint, considerably large, very much extended 59°","简略描述":"vF, cL, vmE 59°"},{"ID":"3937","标识":"NGC3937","M标识":"NGC3937","拓展名":"","组件":"","Class":"III 389","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h52m42.6s","赤经D(J2000)":"11.8785","赤纬(J2000)":"+20h37m54s","赤纬D(J2000)":"20.631666666666668","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"15","详细描述":"very faint, considerably small, round","简略描述":"vF, cS, R"},{"ID":"3938","标识":"NGC3938","M标识":"NGC3938","拓展名":"","组件":"","Class":"I 203","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h52m49.2s","赤经D(J2000)":"11.880333333333335","赤纬(J2000)":"+44h7m17s","赤纬D(J2000)":"44.12138888888889","可见光星等V":"10.4","摄影(蓝光)星等B":"10.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"5.4","短轴(分)":"4.9","方位角":"0","详细描述":"bright, very large, round, brighter middle and pretty bright nucleus, extremely mottled but not resolved","简略描述":"B, vL, R, bMpBN, er"},{"ID":"3939","标识":"NGC3939","M标识":"NGC3939","拓展名":"","组件":"","Class":"III 971","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"11h49m19.5s","赤经D(J2000)":"11.822083333333333","赤纬(J2000)":"+74h18m7s","赤纬D(J2000)":"74.30194444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"extremely faint, very small, round (Place doubtful)","简略描述":"eF, vS, R (Place doubtful)"},{"ID":"3940","标识":"NGC3940","M标识":"NGC3940","拓展名":"","组件":"","Class":"III 380","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h52m46.5s","赤经D(J2000)":"11.879583333333334","赤纬(J2000)":"+20h59m23s","赤纬D(J2000)":"20.989722222222223","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"99","详细描述":"very faint, considerably small, round","简略描述":"vF, cS, R"},{"ID":"3941","标识":"NGC3941","M标识":"NGC3941","拓展名":"","组件":"","Class":"I 173","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h52m55.3s","赤经D(J2000)":"11.882027777777779","赤纬(J2000)":"+36h59m13s","赤纬D(J2000)":"36.98694444444445","可见光星等V":"10.3","摄影(蓝光)星等B":"11.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"3.5","短轴(分)":"2.5","方位角":"10","详细描述":"very bright, pretty large, round, suddenly much brighter middle equal to 9th magnitude star","简略描述":"vB, pL, R, smbM * 9"},{"ID":"3942","标识":"NGC3942","M标识":"NGC3942","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h51m30s","赤经D(J2000)":"11.858333333333333","赤纬(J2000)":"-11h25m29s","赤纬D(J2000)":"-11.424722222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"127","详细描述":"extremely faint, pretty small, extended 160°, gradually a very little brighter middle","简略描述":"eF, pS, E 160°, gvlbM"},{"ID":"3943","标识":"NGC3943","M标识":"NGC3943","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h52m56.6s","赤经D(J2000)":"11.88238888888889","赤纬(J2000)":"+20h28m45s","赤纬D(J2000)":"20.479166666666664","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"pretty faint, pretty small, extended, 8th magnitude star 24 seconds to west","简略描述":"pF, pS, E, * 8 p 24s"},{"ID":"3944","标识":"NGC3944","M标识":"NGC3944","拓展名":"","组件":"","Class":"III 322","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h53m5s","赤经D(J2000)":"11.884722222222221","赤纬(J2000)":"+26h12m27s","赤纬D(J2000)":"26.2075","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"25","详细描述":"pretty faint, pretty small, round, pretty suddenly brighter middle","简略描述":"pF, pS, R, psbM"},{"ID":"3945","标识":"NGC3945","M标识":"NGC3945","拓展名":"","组件":"","Class":"I 251","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h53m13.4s","赤经D(J2000)":"11.887055555555555","赤纬(J2000)":"+60h40m31s","赤纬D(J2000)":"60.67527777777777","可见光星等V":"10.9","摄影(蓝光)星等B":"11.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"5.2","短轴(分)":"3.5","方位角":"160","详细描述":"bright, pretty large, round, gradually much brighter middle, mottled but not resolved, 12th magnitude star to southwest","简略描述":"B, pL, R, gmbM, r, * 12 sp"},{"ID":"3946","标识":"NGC3946","M标识":"NGC3946","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h53m20.6s","赤经D(J2000)":"11.889055555555554","赤纬(J2000)":"+21h1m17s","赤纬D(J2000)":"21.02138888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"90","详细描述":"very faint, very little brighter middle, diffuse","简略描述":"vF, vlbM, dif"},{"ID":"3947","标识":"NGC3947","M标识":"NGC3947","拓展名":"","组件":"","Class":"II 403","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h53m20.3s","赤经D(J2000)":"11.888972222222222","赤纬(J2000)":"+20h45m6s","赤纬D(J2000)":"20.751666666666665","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"90","详细描述":"faint, pretty small, irregularly extended, a little brighter middle, double star to west","简略描述":"F, pS, iE, lbM, ** p"},{"ID":"3948","标识":"NGC3948","M标识":"NGC3948","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h53m36.6s","赤经D(J2000)":"11.8935","赤纬(J2000)":"+20h57m4s","赤纬D(J2000)":"20.95111111111111","可见光星等V":"99","摄影(蓝光)星等B":"13.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, stellar","简略描述":"vF, stellar"},{"ID":"3949","标识":"NGC3949","M标识":"NGC3949","拓展名":"","组件":"","Class":"I 202","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h53m41.4s","赤经D(J2000)":"11.894833333333333","赤纬(J2000)":"+47h51m36s","赤纬D(J2000)":"47.86","可见光星等V":"11.1","摄影(蓝光)星等B":"11.5","B-V":"0.4","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.9","短轴(分)":"1.7","方位角":"120","详细描述":"considerably bright, pretty large, pretty much extended, very gradually brighter middle","简略描述":"cB, pL, pmE, vgbM"},{"ID":"3950","标识":"NGC3950","M标识":"NGC3950","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h53m41.1s","赤经D(J2000)":"11.89475","赤纬(J2000)":"+47h53m6s","赤纬D(J2000)":"47.885","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, 2.6 arcmin north of h 1009","简略描述":"eF, 2'.6 n of h 1009"},{"ID":"3951","标识":"NGC3951","M标识":"NGC3951","拓展名":"","组件":"","Class":"III 342 ","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h53m41.3s","赤经D(J2000)":"11.894805555555555","赤纬(J2000)":"+23h22m56s","赤纬D(J2000)":"23.38222222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"172","详细描述":"very faint, considerably small, very little extended","简略描述":"vF, cS, vlE"},{"ID":"3952","标识":"NGC3952","M标识":"NGC3952","拓展名":"","组件":"","Class":"III 612","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h53m40.1s","赤经D(J2000)":"11.894472222222221","赤纬(J2000)":"-3h59m50s","赤纬D(J2000)":"-3.9972222222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"13.5","B-V":"0.4","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"78","详细描述":"considerably faint, considerably small, a little extended 90°±, brighter middle, mottled but not resolved","简略描述":"cF, cS, lE 90° ±, bM, r"},{"ID":"3953","标识":"NGC3953","M标识":"NGC3953","拓展名":"","组件":"","Class":"V 45","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h53m48.4s","赤经D(J2000)":"11.896777777777777","赤纬(J2000)":"+52h19m30s","赤纬D(J2000)":"52.325","可见光星等V":"10.1","摄影(蓝光)星等B":"10.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"6.9","短轴(分)":"3.6","方位角":"13","详细描述":"considerably bright, large, extended 0°±, very suddenly brighter middle and large mottled but not resolved nucleus","简略描述":"cB, L, E 0° ±, vsbMLrN"},{"ID":"3954","标识":"NGC3954","M标识":"NGC3954","拓展名":"","组件":"","Class":"III 381","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h53m41.7s","赤经D(J2000)":"11.894916666666667","赤纬(J2000)":"+20h52m57s","赤纬D(J2000)":"20.8825","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, round","简略描述":"eF, R"},{"ID":"3955","标识":"NGC3955","M标识":"NGC3955","拓展名":"","组件":"","Class":"II 623","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h53m57.2s","赤经D(J2000)":"11.899222222222221","赤纬(J2000)":"-23h9m52s","赤纬D(J2000)":"-23.16444444444444","可见光星等V":"12","摄影(蓝光)星等B":"12.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.1","短轴(分)":"1","方位角":"165","详细描述":"considerably faint, small, extended 170°±, a little brighter on the south","简略描述":"cF, S, E 170° ±, lbs"},{"ID":"3956","标识":"NGC3956","M标识":"NGC3956","拓展名":"","组件":"","Class":"III 290","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h54m0.9s","赤经D(J2000)":"11.90025","赤纬(J2000)":"-20h34m0s","赤纬D(J2000)":"-20.566666666666666","可见光星等V":"12","摄影(蓝光)星等B":"12.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.3","短轴(分)":"1","方位角":"58","详细描述":"considerably faint, pretty large, pretty much extended 57°","简略描述":"cF, pL, pmE 57°"},{"ID":"3957","标识":"NGC3957","M标识":"NGC3957","拓展名":"","组件":"","Class":"II 294","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h54m1.5s","赤经D(J2000)":"11.900416666666667","赤纬(J2000)":"-19h34m8s","赤纬D(J2000)":"-19.56888888888889","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.9","短轴(分)":"0.7","方位角":"173","详细描述":"faint, small, extended, mottled but not resolved","简略描述":"F, S, E, r"},{"ID":"3958","标识":"NGC3958","M标识":"NGC3958","拓展名":"","组件":"","Class":"II 833","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h54m33.5s","赤经D(J2000)":"11.909305555555555","赤纬(J2000)":"+58h22m0s","赤纬D(J2000)":"58.36666666666667","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"28","详细描述":"pretty faint, pretty small, pretty much extended, very gradually brighter middle","简略描述":"pF, pS, pmE, vgbM"},{"ID":"3959","标识":"NGC3959","M标识":"NGC3959","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h54m37.6s","赤经D(J2000)":"11.910444444444444","赤纬(J2000)":"-7h45m23s","赤纬D(J2000)":"-7.756388888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"35","详细描述":"very faint, small, between 2 very faint stars","简略描述":"vF, S, bet 2 vF st"},{"ID":"3960","标识":"NGC3960","M标识":"NGC3960","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2m","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h50m33.1s","赤经D(J2000)":"11.842527777777779","赤纬(J2000)":"-55h40m35s","赤纬D(J2000)":"-55.67638888888889","可见光星等V":"8.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, gradually pretty much brighter middle, stars 13th magnitude","简略描述":"Cl, pL, pRi, gpmbM, st 13"},{"ID":"3961","标识":"NGC3961","M标识":"NGC3961","拓展名":"","组件":"","Class":"III 905","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"11h54m57.5s","赤经D(J2000)":"11.915972222222223","赤纬(J2000)":"+69h19m47s","赤纬D(J2000)":"69.32972222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"3962","标识":"NGC3962","M标识":"NGC3962","拓展名":"","组件":"","Class":"I 67","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h54m39.8s","赤经D(J2000)":"11.911055555555556","赤纬(J2000)":"-13h58m29s","赤纬D(J2000)":"-13.974722222222223","可见光星等V":"10.7","摄影(蓝光)星等B":"11.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.6","短轴(分)":"2.2","方位角":"10","详细描述":"considerably bright, pretty large, irregularly round, gradually much brighter middle, in a triangle with 2 stars","简略描述":"cB, pL, iR, gmbM, Δ 2 st"},{"ID":"3963","标识":"NGC3963","M标识":"NGC3963","拓展名":"","组件":"","Class":"IV 67","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h54m58.8s","赤经D(J2000)":"11.916333333333334","赤纬(J2000)":"+58h29m36s","赤纬D(J2000)":"58.49333333333333","可见光星等V":"11.9","摄影(蓝光)星等B":"12.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.7","短轴(分)":"2.4","方位角":"36","详细描述":"pretty faint, considerably large, round, very gradually then suddenly brighter middle","简略描述":"pF, cL, R, vg, sbM"},{"ID":"3964","标识":"NGC3964","M标识":"NGC3964","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h54m53.4s","赤经D(J2000)":"11.914833333333334","赤纬(J2000)":"+28h15m46s","赤纬D(J2000)":"28.262777777777778","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"76","详细描述":"very faint, small, extended, 10th magnitude star attached on northeast","简略描述":"vF, S, E, * 10 nf att"},{"ID":"3965","标识":"NGC3965","M标识":"NGC3965","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h54m23.1s","赤经D(J2000)":"11.906416666666667","赤纬(J2000)":"-10h51m59s","赤纬D(J2000)":"-10.866388888888888","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"115","详细描述":"extremely faint, extremely small, round, brighter middle and nucleus, 9.5 magnitude star 4 arcmin to northwest","简略描述":"eF, eS, R, bMN, * 9.5 np 4'"},{"ID":"3966","标识":"NGC3966","M标识":"NGC3966","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h56m44.2s","赤经D(J2000)":"11.945611111111111","赤纬(J2000)":"+32h1m17s","赤纬D(J2000)":"32.021388888888886","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.1","短轴(分)":"0.7","方位角":"110","详细描述":"faint, pretty large, a little extended, brighter middle, 12th magnitude star to west","简略描述":"F, pL, lE, bM, * 12 p"},{"ID":"3967","标识":"NGC3967","M标识":"NGC3967","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h55m10.3s","赤经D(J2000)":"11.919527777777777","赤纬(J2000)":"-7h50m35s","赤纬D(J2000)":"-7.843055555555555","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.7","方位角":"120","详细描述":"very faint, small, faint star close to west","简略描述":"vF, S, F * close p"},{"ID":"3968","标识":"NGC3968","M标识":"NGC3968","拓展名":"","组件":"","Class":"II 162","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h55m28.7s","赤经D(J2000)":"11.924638888888888","赤纬(J2000)":"+11h58m7s","赤纬D(J2000)":"11.96861111111111","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.7","短轴(分)":"1.9","方位角":"10","详细描述":"pretty bright, large, irregularly round, brighter middle, 10th magnitude star 3 arcmin distant at position angle 65°","简略描述":"pB, L, iR, bM, * 10, 65°, 3'"},{"ID":"3969","标识":"NGC3969","M标识":"NGC3969","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h55m9.1s","赤经D(J2000)":"11.919194444444443","赤纬(J2000)":"-18h55m38s","赤纬D(J2000)":"-18.927222222222223","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"64","详细描述":"extremely faint, very small, gradually brighter middle and nucleus, 10th magnitude star 4 arcmin to northwest","简略描述":"eF, vS, gbMN, * 10 np 4'"},{"ID":"3970","标识":"NGC3970","M标识":"NGC3970","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h55m28.1s","赤经D(J2000)":"11.92447222222222","赤纬(J2000)":"-12h3m41s","赤纬D(J2000)":"-12.061388888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"98","详细描述":"faint, small, round, pretty suddenly brighter middle, western of 2","简略描述":"F, S, R, psbM, p of 2"},{"ID":"3971","标识":"NGC3971","M标识":"NGC3971","拓展名":"","组件":"","Class":"II 724","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h55m36.3s","赤经D(J2000)":"11.92675","赤纬(J2000)":"+29h59m45s","赤纬D(J2000)":"29.995833333333334","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"30","详细描述":"pretty faint, very small, round, brighter middle","简略描述":"pF, vS, R, bM"},{"ID":"3972","标识":"NGC3972","M标识":"NGC3972","拓展名":"","组件":"","Class":"II 789","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h55m45.3s","赤经D(J2000)":"11.92925","赤纬(J2000)":"+55h19m12s","赤纬D(J2000)":"55.32","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3.7","短轴(分)":"1","方位角":"120","详细描述":"pretty bright, extended","简略描述":"pB, E"},{"ID":"3973","标识":"NGC3973","M标识":"NGC3973","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h55m37s","赤经D(J2000)":"11.926944444444445","赤纬(J2000)":"+11h59m50s","赤纬D(J2000)":"11.997222222222222","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"12","详细描述":"extremely faint, extremely small, 10th magnitude star 1 arcmin to southeast (requires verification)","简略描述":"eF, eS, * 10 1' sf (requires verification)"},{"ID":"3974","标识":"NGC3974","M标识":"NGC3974","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h55m40.1s","赤经D(J2000)":"11.927805555555555","赤纬(J2000)":"-12h1m38s","赤纬D(J2000)":"-12.027222222222223","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"10","详细描述":"very faint, small, round, brighter middle, eastern of 2","简略描述":"vF, S, R, bM, f of 2"},{"ID":"3975","标识":"NGC3975","M标识":"NGC3975","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h55m53.7s","赤经D(J2000)":"11.931583333333332","赤纬(J2000)":"+60h31m47s","赤纬D(J2000)":"60.52972222222222","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"95","详细描述":"very faint, very small, II 840 seventeen seconds of time to the east","简略描述":"vF, vS, II 840 f 17s"},{"ID":"3976","标识":"NGC3976","M标识":"NGC3976","拓展名":"","组件":"","Class":"II 132","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h55m57.2s","赤经D(J2000)":"11.932555555555554","赤纬(J2000)":"+6h44m54s","赤纬D(J2000)":"6.748333333333333","可见光星等V":"11.5","摄影(蓝光)星等B":"12.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.8","短轴(分)":"1.2","方位角":"53","详细描述":"bright, pretty large, considerably extended 30°, very suddenly much brighter middle and nucleus","简略描述":"B, pL, cE 30°, vsmbMN"},{"ID":"3977","标识":"NGC3977","M标识":"NGC3977","拓展名":"","组件":"","Class":"II 790","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h56m7.3s","赤经D(J2000)":"11.935361111111112","赤纬(J2000)":"+55h23m27s","赤纬D(J2000)":"55.39083333333333","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"9","详细描述":"faint, small","简略描述":"F, S"},{"ID":"3978","标识":"NGC3978","M标识":"NGC3978","拓展名":"","组件":"","Class":"II 840","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h56m10.6s","赤经D(J2000)":"11.936277777777779","赤纬(J2000)":"+60h31m22s","赤纬D(J2000)":"60.522777777777776","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"27","详细描述":"considerably faint, small, a little extended, brighter middle, 8th magnitude star 6 arcmin distant at position angle 90°","简略描述":"cF, S, lE, bM, * 8 90°, 6'"},{"ID":"3979","标识":"NGC3979","M标识":"NGC3979","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h56m1.1s","赤经D(J2000)":"11.93363888888889","赤纬(J2000)":"-2h43m14s","赤纬D(J2000)":"-2.720555555555556","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"112","详细描述":"pretty faint, 11th or 12th magnitude star to northeast","简略描述":"pF, * 11·12 nf"},{"ID":"3980","标识":"NGC3980","M标识":"NGC3980","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h56m7.3s","赤经D(J2000)":"11.935361111111112","赤纬(J2000)":"+55h23m27s","赤纬D(J2000)":"55.39083333333333","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"9","详细描述":"faint, small","简略描述":"eF, pL, E, D * nr"},{"ID":"3981","标识":"NGC3981","M标识":"NGC3981","拓展名":"","组件":"","Class":"III 274","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h56m7s","赤经D(J2000)":"11.935277777777777","赤纬(J2000)":"-19h53m50s","赤纬D(J2000)":"-19.897222222222222","可见光星等V":"11","摄影(蓝光)星等B":"11.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"5.3","短轴(分)":"2.5","方位角":"15","详细描述":"very faint, pretty large, irregular figure","简略描述":"vF, pL, iF"},{"ID":"3982","标识":"NGC3982","M标识":"NGC3982","拓展名":"","组件":"","Class":"IV 62","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h56m28s","赤经D(J2000)":"11.94111111111111","赤纬(J2000)":"+55h7m30s","赤纬D(J2000)":"55.125","可见光星等V":"11","摄影(蓝光)星等B":"11.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.3","短轴(分)":"2","方位角":"48","详细描述":"bright, pretty large, round, gradually then suddenly brighter middle and disc","简略描述":"B, pL, R, g, sbM disc"},{"ID":"3983","标识":"NGC3983","M标识":"NGC3983","拓展名":"","组件":"","Class":"III 343","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h56m23.6s","赤经D(J2000)":"11.93988888888889","赤纬(J2000)":"+23h52m5s","赤纬D(J2000)":"23.868055555555557","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"114","详细描述":"considerably faint, considerably small, round, pretty suddenly brighter middle","简略描述":"cF, cS, R, psbM"},{"ID":"3984","标识":"NGC3984","M标识":"NGC3984","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h55m36.3s","赤经D(J2000)":"11.92675","赤纬(J2000)":"+29h59m45s","赤纬D(J2000)":"29.995833333333334","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"30","详细描述":"pretty faint, very small, round, brighter middle","简略描述":"eF, S, R, bM"},{"ID":"3985","标识":"NGC3985","M标识":"NGC3985","拓展名":"","组件":"","Class":"III 707","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h56m41.5s","赤经D(J2000)":"11.944861111111111","赤纬(J2000)":"+48h20m8s","赤纬D(J2000)":"48.33555555555556","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"73","详细描述":"very faint, considerably small, another suspected","简略描述":"vF, cS, another suspected"},{"ID":"3986","标识":"NGC3986","M标识":"NGC3986","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h56m44.2s","赤经D(J2000)":"11.945611111111111","赤纬(J2000)":"+32h1m17s","赤纬D(J2000)":"32.021388888888886","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.1","短轴(分)":"0.7","方位角":"110","详细描述":"faint, pretty large, a little extended, brighter middle, 12th magnitude star to west","简略描述":"pF, S, pmE 90° ±, * 11 nr"},{"ID":"3987","标识":"NGC3987","M标识":"NGC3987","拓展名":"","组件":"","Class":"III 323","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h57m20.9s","赤经D(J2000)":"11.955805555555555","赤纬(J2000)":"+25h11m43s","赤纬D(J2000)":"25.19527777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.2","短轴(分)":"0.4","方位角":"58","详细描述":"faint, much extended","简略描述":"F, mE"},{"ID":"3988","标识":"NGC3988","M标识":"NGC3988","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h57m24.2s","赤经D(J2000)":"11.956722222222222","赤纬(J2000)":"+27h52m41s","赤纬D(J2000)":"27.878055555555555","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"42","详细描述":"very faint, small, round, brighter middle like a star, western of 2","简略描述":"vF, S, R, bM *, p of 2"},{"ID":"3989","标识":"NGC3989","M标识":"NGC3989","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h57m26.6s","赤经D(J2000)":"11.957388888888888","赤纬(J2000)":"+25h13m58s","赤纬D(J2000)":"25.232777777777777","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"135","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"3990","标识":"NGC3990","M标识":"NGC3990","拓展名":"","组件":"","Class":"II 791","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h57m35.5s","赤经D(J2000)":"11.95986111111111","赤纬(J2000)":"+55h27m31s","赤纬D(J2000)":"55.45861111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"40","详细描述":"pretty faint, small, a little extended, pretty suddenly a little brighter middle","简略描述":"pF, S, lE, pslbM"},{"ID":"3991","标识":"NGC3991","M标识":"NGC3991","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h57m30.7s","赤经D(J2000)":"11.958527777777777","赤纬(J2000)":"+32h20m8s","赤纬D(J2000)":"32.33555555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"13.5","B-V":"0.4","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"33","详细描述":"faint, small, a little extended, 1st of 3","简略描述":"F, S, lE, 1st of 3"},{"ID":"3992","标识":"NGC3992","M标识":"M109","拓展名":"","组件":"","Class":"IV 61","业余排名":"1","中文名":"吸尘器星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h57m35.4s","赤经D(J2000)":"11.959833333333332","赤纬(J2000)":"+53h22m25s","赤纬D(J2000)":"53.37361111111111","可见光星等V":"9.8","摄影(蓝光)星等B":"10.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"7.5","短轴(分)":"4.4","方位角":"68","详细描述":"considerably bright, very large, pretty much extended, suddenly brighter middle and bright mottled but not resolved nucleus","简略描述":"cB, vL, pmE, sbMBrN"},{"ID":"3993","标识":"NGC3993","M标识":"NGC3993","拓展名":"","组件":"","Class":"III 324","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h57m37.6s","赤经D(J2000)":"11.960444444444443","赤纬(J2000)":"+25h14m25s","赤纬D(J2000)":"25.240277777777777","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"141","详细描述":"very faint, pretty small, extended, 3 stars near","简略描述":"vF, pS, E, 3 st nr"},{"ID":"3994","标识":"NGC3994","M标识":"NGC3994","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h57m36.8s","赤经D(J2000)":"11.960222222222221","赤纬(J2000)":"+32h16m39s","赤纬D(J2000)":"32.277499999999996","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"10","详细描述":"pretty bright, very small, 2nd of 3","简略描述":"pB, vS, 2nd of 3"},{"ID":"3995","标识":"NGC3995","M标识":"NGC3995","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h57m44s","赤经D(J2000)":"11.962222222222222","赤纬(J2000)":"+32h17m35s","赤纬D(J2000)":"32.293055555555554","可见光星等V":"12.4","摄影(蓝光)星等B":"12.7","B-V":"0.3","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.6","短轴(分)":"0.9","方位角":"33","详细描述":"faint, pretty large, irregularly round, brighter middle, 3rd of 3","简略描述":"F, pL, iR, bM, 3rd of 3"},{"ID":"3996","标识":"NGC3996","M标识":"NGC3996","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h57m46.1s","赤经D(J2000)":"11.962805555555555","赤纬(J2000)":"+14h17m51s","赤纬D(J2000)":"14.2975","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"50","详细描述":"very faint, pretty large, round, 2 stars to east","简略描述":"vF, pL, R, 2 st f"},{"ID":"3997","标识":"NGC3997","M标识":"NGC3997","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h57m48.5s","赤经D(J2000)":"11.963472222222222","赤纬(J2000)":"+25h16m15s","赤纬D(J2000)":"25.270833333333332","可见光星等V":"13.5","摄影(蓝光)星等B":"14","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"141","详细描述":"pretty faint, very small, extended 25°, between 2 stars","简略描述":"pF, vS, E 25°, bet 2 st"},{"ID":"3998","标识":"NGC3998","M标识":"NGC3998","拓展名":"","组件":"","Class":"I 229","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h57m55.9s","赤经D(J2000)":"11.965527777777776","赤纬(J2000)":"+55h27m14s","赤纬D(J2000)":"55.45388888888889","可见光星等V":"10.7","摄影(蓝光)星等B":"11.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.7","短轴(分)":"2.3","方位角":"140","详细描述":"considerably bright, pretty small, round, very gradually then suddenly much brighter middle","简略描述":"cB, pS, R, vg, smbM"},{"ID":"3999","标识":"NGC3999","M标识":"NGC3999","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h57m56.4s","赤经D(J2000)":"11.965666666666666","赤纬(J2000)":"+25h4m6s","赤纬D(J2000)":"25.06833333333333","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"81","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"4000","标识":"NGC4000","M标识":"NGC4000","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h57m57s","赤经D(J2000)":"11.965833333333332","赤纬(J2000)":"+25h8m38s","赤纬D(J2000)":"25.14388888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.2","方位角":"3","详细描述":"","简略描述":"vF, vS, lE, * 8 m 2' f, 5597 is sf"},{"ID":"4001","标识":"NGC4001","M标识":"NGC4001","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"dE4","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h58m6.7s","赤经D(J2000)":"11.968527777777778","赤纬(J2000)":"+47h20m7s","赤纬D(J2000)":"47.33527777777778","可见光星等V":"15.3","摄影(蓝光)星等B":"15.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"162","详细描述":"","简略描述":"S, R, 7' np h 1040"},{"ID":"4002","标识":"NGC4002","M标识":"NGC4002","拓展名":"","组件":"","Class":"III 344","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h57m59.3s","赤经D(J2000)":"11.966472222222222","赤纬(J2000)":"+23h12m10s","赤纬D(J2000)":"23.202777777777776","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"111","详细描述":"very faint, very small, round, northern of 2","简略描述":"vF, vS, R, n of 2"},{"ID":"4003","标识":"NGC4003","M标识":"NGC4003","拓展名":"","组件":"","Class":"III 345","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h57m59s","赤经D(J2000)":"11.966388888888888","赤纬(J2000)":"+23h7m31s","赤纬D(J2000)":"23.12527777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"151","详细描述":"very faint, very small, round, southern of 2","简略描述":"vF, vS, R, s of 2"},{"ID":"4004","标识":"NGC4004","M标识":"NGC4004","拓展名":"","组件":"","Class":"III 354","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h58m5.1s","赤经D(J2000)":"11.968083333333334","赤纬(J2000)":"+27h52m43s","赤纬D(J2000)":"27.878611111111113","可见光星等V":"13.7","摄影(蓝光)星等B":"14.1","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"8","详细描述":"","简略描述":"F, vS, R, * 12 near"},{"ID":"4005","标识":"NGC4005","M标识":"NGC4005","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"NGC 4005星系群","类型":"Gxy","含重复类型":"Dup","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h58m10s","赤经D(J2000)":"11.969444444444445","赤纬(J2000)":"+25h7m20s","赤纬D(J2000)":"25.122222222222224","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"92","详细描述":"","简略描述":"pF, vS, mbM, * 7 np 2'"},{"ID":"4006","标识":"NGC4006","M标识":"NGC4006","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h58m5.9s","赤经D(J2000)":"11.968305555555556","赤纬(J2000)":"-2h7m13s","赤纬D(J2000)":"-2.120277777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"20","详细描述":"faint, small, round, brighter middle, 11th magnitude star to northeast","简略描述":"F, S, R, bM, * 11 nf"},{"ID":"4007","标识":"NGC4007","M标识":"NGC4007","拓展名":"","组件":"","Class":"III 325","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h58m10s","赤经D(J2000)":"11.969444444444445","赤纬(J2000)":"+25h7m20s","赤纬D(J2000)":"25.122222222222224","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"92","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"4008","标识":"NGC4008","M标识":"NGC4008","拓展名":"","组件":"","Class":"II 368","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h58m17.1s","赤经D(J2000)":"11.971416666666666","赤纬(J2000)":"+28h11m34s","赤纬D(J2000)":"28.192777777777778","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.4","短轴(分)":"1.3","方位角":"167","详细描述":"","简略描述":"pB, pS, E, psbM, * inv n"},{"ID":"4009","标识":"NGC4009","M标识":"NGC4009","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h58m15s","赤经D(J2000)":"11.970833333333333","赤纬(J2000)":"+25h11m27s","赤纬D(J2000)":"25.190833333333334","可见光星等V":"99","摄影(蓝光)星等B":"13.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small","简略描述":"vF, eS"},{"ID":"4010","标识":"NGC4010","M标识":"NGC4010","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h58m37.1s","赤经D(J2000)":"11.976972222222223","赤纬(J2000)":"+47h15m37s","赤纬D(J2000)":"47.26027777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"4.2","短轴(分)":"0.9","方位角":"66","详细描述":"faint, pretty large, much extended, very gradually a little brighter middle","简略描述":"F, pL, mE, vglbM"},{"ID":"4011","标识":"NGC4011","M标识":"NGC4011","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h58m25.4s","赤经D(J2000)":"11.973722222222221","赤纬(J2000)":"+25h5m52s","赤纬D(J2000)":"25.097777777777775","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"39","详细描述":"very faint, very small, 12th magnitude star to northwest","简略描述":"vF, vS, * 12 np"},{"ID":"4012","标识":"NGC4012","M标识":"NGC4012","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h58m27.5s","赤经D(J2000)":"11.974305555555556","赤纬(J2000)":"+10h1m18s","赤纬D(J2000)":"10.021666666666668","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.9","短轴(分)":"0.6","方位角":"153","详细描述":"very faint, small, a little extended","简略描述":"vF, S, lE"},{"ID":"4013","标识":"NGC4013","M标识":"NGC4013","拓展名":"","组件":"","Class":"II 733","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h58m31.3s","赤经D(J2000)":"11.975361111111111","赤纬(J2000)":"+43h56m50s","赤纬D(J2000)":"43.947222222222216","可见光星等V":"11.2","摄影(蓝光)星等B":"12.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"5.2","短轴(分)":"1","方位角":"66","详细描述":"","简略描述":"B, cL, mE 62°, vsvmbM * 10"},{"ID":"4014","标识":"NGC4014","M标识":"NGC4014","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"11h58m35.8s","赤经D(J2000)":"11.976611111111112","赤纬(J2000)":"+16h10m38s","赤纬D(J2000)":"16.177222222222223","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"120","详细描述":"pretty bright, pretty small, round, pretty suddenly brighter middle","简略描述":"pB, pS, R, psbM"},{"ID":"4015","标识":"NGC4015","M标识":"NGC4015","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"11h58m42.5s","赤经D(J2000)":"11.978472222222223","赤纬(J2000)":"+25h2m12s","赤纬D(J2000)":"25.03666666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2","短轴(分)":"1.5","方位角":"131","详细描述":"faint, very small, extended, much brighter middle","简略描述":"F, vS, E, mbM"},{"ID":"4016","标识":"NGC4016","M标识":"NGC4016","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"11h58m29s","赤经D(J2000)":"11.974722222222223","赤纬(J2000)":"+27h31m44s","赤纬D(J2000)":"27.528888888888886","可见光星等V":"13.8","摄影(蓝光)星等B":"14.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"175","详细描述":"very faint","简略描述":"vF"},{"ID":"4017","标识":"NGC4017","M标识":"NGC4017","拓展名":"","组件":"","Class":"II 369","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"11h58m45.7s","赤经D(J2000)":"11.97936111111111","赤纬(J2000)":"+27h27m11s","赤纬D(J2000)":"27.453055555555554","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"1.4","方位角":"72","详细描述":"","简略描述":"F, L, E, gbfM"},{"ID":"4018","标识":"NGC4018","M标识":"NGC4018","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"11h58m40.6s","赤经D(J2000)":"11.977944444444445","赤纬(J2000)":"+25h19m2s","赤纬D(J2000)":"25.31722222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"0.3","方位角":"163","详细描述":"","简略描述":"mE np sf, 2 st s"},{"ID":"4019","标识":"NGC4019","M标识":"NGC4019","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h1m10.5s","赤经D(J2000)":"12.019583333333333","赤纬(J2000)":"+14h6m15s","赤纬D(J2000)":"14.104166666666666","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.4","短轴(分)":"0.3","方位角":"145","详细描述":"","简略描述":"eF, * 9 sf 5'"},{"ID":"4020","标识":"NGC4020","M标识":"NGC4020","拓展名":"","组件":"","Class":"II 725","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h58m56.8s","赤经D(J2000)":"11.982444444444445","赤纬(J2000)":"+30h24m49s","赤纬D(J2000)":"30.41361111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"1","方位角":"15","详细描述":"","简略描述":"pB, pL, E 19°.5, biN"},{"ID":"4021","标识":"NGC4021","M标识":"NGC4021","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"11h59m2.5s","赤经D(J2000)":"11.984027777777778","赤纬(J2000)":"+25h5m1s","赤纬D(J2000)":"25.08361111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"85","详细描述":"faint, small, very little extended","简略描述":"F, S, vlE"},{"ID":"4022","标识":"NGC4022","M标识":"NGC4022","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"11h59m1s","赤经D(J2000)":"11.98361111111111","赤纬(J2000)":"+25h13m21s","赤纬D(J2000)":"25.222499999999997","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"pretty faint, very small, stellar","简略描述":"pF, vS, stellar"},{"ID":"4023","标识":"NGC4023","M标识":"NGC4023","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"11h59m5.3s","赤经D(J2000)":"11.984805555555555","赤纬(J2000)":"+24h59m21s","赤纬D(J2000)":"24.989166666666666","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"25","详细描述":"pretty faint, pretty large, diffuse","简略描述":"pF, pL, dif"},{"ID":"4024","标识":"NGC4024","M标识":"NGC4024","拓展名":"","组件":"","Class":"II 295","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"11h58m31.5s","赤经D(J2000)":"11.975416666666666","赤纬(J2000)":"-18h20m48s","赤纬D(J2000)":"-18.346666666666664","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.9","短轴(分)":"1.6","方位角":"70","详细描述":"faint, very small, irregular figure, brighter middle","简略描述":"F, vS, iF, bM"},{"ID":"4025","标识":"NGC4025","M标识":"NGC4025","拓展名":"","组件":"","Class":"III 617","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h59m10s","赤经D(J2000)":"11.98611111111111","赤纬(J2000)":"+37h47m32s","赤纬D(J2000)":"37.79222222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14","B-V":"0.4","表面亮度(mag\/arcmin2)":"15","长轴(分)":"2.5","短轴(分)":"1.4","方位角":"31","详细描述":"extremely faint, pretty large, round","简略描述":"eF, pL, R"},{"ID":"4026","标识":"NGC4026","M标识":"NGC4026","拓展名":"","组件":"","Class":"I 223","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h59m25s","赤经D(J2000)":"11.990277777777777","赤纬(J2000)":"+50h57m43s","赤纬D(J2000)":"50.96194444444445","可见光星等V":"10.8","摄影(蓝光)星等B":"11.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"5.2","短轴(分)":"1.3","方位角":"178","详细描述":"","简略描述":"vB, cL, mE 176°, vsvmbMBN"},{"ID":"4027","标识":"NGC4027","M标识":"NGC4027","拓展名":"","组件":"","Class":"II 296","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"11h59m30.5s","赤经D(J2000)":"11.991805555555555","赤纬(J2000)":"-19h15m57s","赤纬D(J2000)":"-19.265833333333333","可见光星等V":"11.1","摄影(蓝光)星等B":"11.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.3","短轴(分)":"2.4","方位角":"167","详细描述":"a globular cluster, pretty faint, pretty large, round, partially resolved (some stars seen), stars of 16th magnitude","简略描述":"globular, pF, pL, R, rr, st 16"},{"ID":"4028","标识":"NGC4028","M标识":"NGC4028","拓展名":"","组件":"","Class":"III 3","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"11h58m35.8s","赤经D(J2000)":"11.976611111111112","赤纬(J2000)":"+16h10m38s","赤纬D(J2000)":"16.177222222222223","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"120","详细描述":"very faint, very small, very little extended, mottled but not resolved","简略描述":"vF, vS, vlE, r"},{"ID":"4029","标识":"NGC4029","M标识":"NGC4029","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h0m3.2s","赤经D(J2000)":"12.00088888888889","赤纬(J2000)":"+8h10m56s","赤纬D(J2000)":"8.182222222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"150","详细描述":"very faint, very small, a little extended, stellar nucleus","简略描述":"vF, vS, lE, stellar N"},{"ID":"4030","标识":"NGC4030","M标识":"NGC4030","拓展名":"","组件":"","Class":"I 121","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h0m23.4s","赤经D(J2000)":"12.0065","赤纬(J2000)":"-1h6m2s","赤纬D(J2000)":"-1.1005555555555557","可见光星等V":"10.6","摄影(蓝光)星等B":"11.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"4.2","短轴(分)":"3.2","方位角":"27","详细描述":"","简略描述":"cB, L, vlE, psmbM, B st nr"},{"ID":"4031","标识":"NGC4031","M标识":"NGC4031","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h0m31.3s","赤经D(J2000)":"12.008694444444444","赤纬(J2000)":"+31h56m48s","赤纬D(J2000)":"31.946666666666665","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"60","详细描述":"","简略描述":"eF, vS, * 17 v nr south"},{"ID":"4032","标识":"NGC4032","M标识":"NGC4032","拓展名":"","组件":"","Class":"II 404","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h0m32.9s","赤经D(J2000)":"12.00913888888889","赤纬(J2000)":"+20h4m29s","赤纬D(J2000)":"20.07472222222222","可见光星等V":"12.3","摄影(蓝光)星等B":"12.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"171","详细描述":"pretty faint, pretty large, round, gradually brighter middle, 12th magnitude star to northeast","简略描述":"pF, pL, R, gbM, * 12 nf"},{"ID":"4033","标识":"NGC4033","M标识":"NGC4033","拓展名":"","组件":"","Class":"II 508","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h0m34.7s","赤经D(J2000)":"12.009638888888889","赤纬(J2000)":"-17h50m36s","赤纬D(J2000)":"-17.843333333333334","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.4","短轴(分)":"1.2","方位角":"47","详细描述":"pretty bright, small, a little extended, brighter middle","简略描述":"pB, S, lE, bM"},{"ID":"4034","标识":"NGC4034","M标识":"NGC4034","拓展名":"","组件":"","Class":"III 903","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h1m29.6s","赤经D(J2000)":"12.02488888888889","赤纬(J2000)":"+69h19m26s","赤纬D(J2000)":"69.32388888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"5","详细描述":"extremely faint, small, irregular figure, gradually a very little brighter middle","简略描述":"eF, S, iF, gvlbM"},{"ID":"4035","标识":"NGC4035","M标识":"NGC4035","拓展名":"","组件":"","Class":"III 279","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h0m29.2s","赤经D(J2000)":"12.008111111111111","赤纬(J2000)":"-15h56m57s","赤纬D(J2000)":"-15.949166666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"1","方位角":"0","详细描述":"","简略描述":"eF, pL, * 9 m 45° ±"},{"ID":"4036","标识":"NGC4036","M标识":"NGC4036","拓展名":"","组件":"","Class":"I 253","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h1m27s","赤经D(J2000)":"12.024166666666668","赤纬(J2000)":"+61h53m46s","赤纬D(J2000)":"61.89611111111111","可见光星等V":"10.7","摄影(蓝光)星等B":"11.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"4.3","短轴(分)":"1.7","方位角":"85","详细描述":"very bright, very large, extended","简略描述":"vB, vL, E"},{"ID":"4037","标识":"NGC4037","M标识":"NGC4037","拓展名":"","组件":"","Class":"III 77","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h1m23.8s","赤经D(J2000)":"12.023277777777778","赤纬(J2000)":"+13h24m2s","赤纬D(J2000)":"13.400555555555556","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.4","短轴(分)":"2.2","方位角":"9","详细描述":"extremely faint, pretty large, round, mottled but not resolved","简略描述":"eF, pL, R, r"},{"ID":"4038","标识":"NGC4038","M标识":"NGC4038","拓展名":"","组件":"","Class":"IV 28.1","业余排名":"2","中文名":"触须星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h1m52.8s","赤经D(J2000)":"12.031333333333334","赤纬(J2000)":"-18h51m52s","赤纬D(J2000)":"-18.864444444444445","可见光星等V":"10.3","摄影(蓝光)星等B":"10.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"3.4","短轴(分)":"1.7","方位角":"94","详细描述":"pretty bright, considerably large, round, very gradually brighter middle","简略描述":"pB, cL, R, vgbM"},{"ID":"4039","标识":"NGC4039","M标识":"NGC4039","拓展名":"","组件":"","Class":"IV 28.2","业余排名":"2","中文名":"触须星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h1m53.8s","赤经D(J2000)":"12.031611111111111","赤纬(J2000)":"-18h53m8s","赤纬D(J2000)":"-18.885555555555555","可见光星等V":"10.3","摄影(蓝光)星等B":"10.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"3.3","短轴(分)":"1.7","方位角":"55","详细描述":"pretty faint, pretty large","简略描述":"pF, pL"},{"ID":"4040","标识":"NGC4040","M标识":"NGC4040","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h2m5.4s","赤经D(J2000)":"12.034833333333333","赤纬(J2000)":"+17h49m26s","赤纬D(J2000)":"17.823888888888888","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.9","短轴(分)":"1.3","方位角":"145","详细描述":"extremely faint, pretty small, round, 3 stars near","简略描述":"eF, pS, R, 3 st nr"},{"ID":"4041","标识":"NGC4041","M标识":"NGC4041","拓展名":"","组件":"","Class":"I 252","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h2m11.9s","赤经D(J2000)":"12.03663888888889","赤纬(J2000)":"+62h8m13s","赤纬D(J2000)":"62.136944444444445","可见光星等V":"11.3","摄影(蓝光)星等B":"11.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.7","短轴(分)":"2.6","方位角":"72","详细描述":"","简略描述":"B, cL, R, g, psvmbMrN"},{"ID":"4042","标识":"NGC4042","M标识":"NGC4042","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h2m46.8s","赤经D(J2000)":"12.046333333333333","赤纬(J2000)":"+20h9m51s","赤纬D(J2000)":"20.164166666666667","可见光星等V":"16.4","摄影(蓝光)星等B":"17.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4043","标识":"NGC4043","M标识":"NGC4043","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h2m23s","赤经D(J2000)":"12.039722222222222","赤纬(J2000)":"+4h19m48s","赤纬D(J2000)":"4.33","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"135","详细描述":"","简略描述":"pF, S, R, psbM, ** f 30s"},{"ID":"4044","标识":"NGC4044","M标识":"NGC4044","拓展名":"","组件":"","Class":"III 491","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h2m29.4s","赤经D(J2000)":"12.0415","赤纬(J2000)":"-0h12m45s","赤纬D(J2000)":"-0.21250000000000002","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"51","详细描述":"considerably faint, considerably small, round, brighter middle","简略描述":"cF, cS, R, bM"},{"ID":"4045","标识":"NGC4045","M标识":"NGC4045","拓展名":"","组件":"","Class":"II 276","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h2m42.2s","赤经D(J2000)":"12.045055555555555","赤纬(J2000)":"+1h58m37s","赤纬D(J2000)":"1.9769444444444446","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.7","短轴(分)":"1.7","方位角":"95","详细描述":"pretty faint, large, round, suddenly brighter middle, star to southeast","简略描述":"pF, L, R, sbM, * sf"},{"ID":"4046","标识":"NGC4046","M标识":"NGC4046","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h2m42.2s","赤经D(J2000)":"12.045055555555555","赤纬(J2000)":"+1h58m37s","赤纬D(J2000)":"1.9769444444444446","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.7","短轴(分)":"1.7","方位角":"95","详细描述":"","简略描述":"F, pS, Δ 2F st (Qy = h 1057)"},{"ID":"4047","标识":"NGC4047","M标识":"NGC4047","拓展名":"","组件":"","Class":"II 741","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h2m50.6s","赤经D(J2000)":"12.04738888888889","赤纬(J2000)":"+48h38m12s","赤纬D(J2000)":"48.63666666666666","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"105","详细描述":"pretty bright, pretty small, round","简略描述":"pB, pS, R"},{"ID":"4048","标识":"NGC4048","M标识":"NGC4048","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h2m50.1s","赤经D(J2000)":"12.04725","赤纬(J2000)":"+18h0m56s","赤纬D(J2000)":"18.015555555555554","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"92","详细描述":"very faint, very small, round, pretty suddenly brighter middle","简略描述":"vF, vS, R, psbM"},{"ID":"4049","标识":"NGC4049","M标识":"NGC4049","拓展名":"","组件":"","Class":"III 390","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h2m54.5s","赤经D(J2000)":"12.048472222222221","赤纬(J2000)":"+18h45m9s","赤纬D(J2000)":"18.7525","可见光星等V":"13.9","摄影(蓝光)星等B":"14.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"52","详细描述":"extremely faint, pretty small, round, gradually a little brighter middle","简略描述":"eF, pS, R, glbM"},{"ID":"4050","标识":"NGC4050","M标识":"NGC4050","拓展名":"","组件":"","Class":"II 509","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h2m53.9s","赤经D(J2000)":"12.048305555555556","赤纬(J2000)":"-16h22m27s","赤纬D(J2000)":"-16.374166666666667","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"3","短轴(分)":"2","方位角":"85","详细描述":"faint, considerably large, irregularly round, a little brighter middle","简略描述":"F, cL, iR, lbM"},{"ID":"4051","标识":"NGC4051","M标识":"NGC4051","拓展名":"","组件":"","Class":"IV 56","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h3m9.6s","赤经D(J2000)":"12.052666666666667","赤纬(J2000)":"+44h31m55s","赤纬D(J2000)":"44.53194444444444","可见光星等V":"10.2","摄影(蓝光)星等B":"10.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"5.2","短轴(分)":"3.9","方位角":"135","详细描述":"bright, very large, extended, very gradually then very suddenly much brighter middle equivalent to 11th magnitude star","简略描述":"B, vL, E, vgvsmbM * 11"},{"ID":"4052","标识":"NGC4052","M标识":"NGC4052","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"南十字座","星座(En)":"CRU","赤经(J2000)":"12h2m0s","赤经D(J2000)":"12.033333333333333","赤纬(J2000)":"-63h13m18s","赤纬D(J2000)":"-63.22166666666667","可见光星等V":"8.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, a little compressed","简略描述":"Cl, pRi, lC"},{"ID":"4053","标识":"NGC4053","M标识":"NGC4053","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h3m11.5s","赤经D(J2000)":"12.053194444444445","赤纬(J2000)":"+19h43m45s","赤纬D(J2000)":"19.729166666666664","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"109","详细描述":"faint, very small, very little extended, almost stellar","简略描述":"F, vS, vlE, alm stell"},{"ID":"4054","标识":"NGC4054","M标识":"NGC4054","拓展名":"","组件":"1","Class":"III 794","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h3m12.3s","赤经D(J2000)":"12.053416666666667","赤纬(J2000)":"+57h53m36s","赤纬D(J2000)":"57.89333333333333","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"85","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"4055","标识":"NGC4055","M标识":"NGC4055","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h4m1.5s","赤经D(J2000)":"12.067083333333333","赤纬(J2000)":"+20h13m58s","赤纬D(J2000)":"20.232777777777777","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"171","详细描述":"pretty bright (Polar Distance very doubtful)","简略描述":"pB (PD very doubtful)"},{"ID":"4056","标识":"NGC4056","M标识":"NGC4056","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h3m57.8s","赤经D(J2000)":"12.066055555555556","赤纬(J2000)":"+20h18m47s","赤纬D(J2000)":"20.313055555555557","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"4057","标识":"NGC4057","M标识":"NGC4057","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E1","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h4m6.3s","赤经D(J2000)":"12.068416666666666","赤纬(J2000)":"+20h14m9s","赤纬D(J2000)":"20.235833333333336","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"1","方位角":"129","详细描述":"pretty bright (Polar Distance very doubtful)","简略描述":"pB (PD very doubtful)"},{"ID":"4058","标识":"NGC4058","M标识":"NGC4058","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h3m48.9s","赤经D(J2000)":"12.063583333333334","赤纬(J2000)":"+3h32m53s","赤纬D(J2000)":"3.5480555555555555","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"165","详细描述":"very faint, pretty small, round, brighter middle","简略描述":"vF, pS, R, bM"},{"ID":"4059","标识":"NGC4059","M标识":"NGC4059","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h4m11.3s","赤经D(J2000)":"12.069805555555556","赤纬(J2000)":"+20h24m35s","赤纬D(J2000)":"20.40972222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"pretty bright (Polar Distance very doubtful)","简略描述":"pB (PD very doubtful)"},{"ID":"4060","标识":"NGC4060","M标识":"NGC4060","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h4m1s","赤经D(J2000)":"12.066944444444443","赤纬(J2000)":"+20h20m17s","赤纬D(J2000)":"20.338055555555556","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"93","详细描述":"extremely faint","简略描述":"eF"},{"ID":"4061","标识":"NGC4061","M标识":"NGC4061","拓展名":"","组件":"","Class":"III 394","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h4m1.5s","赤经D(J2000)":"12.067083333333333","赤纬(J2000)":"+20h13m58s","赤纬D(J2000)":"20.232777777777777","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"171","详细描述":"pretty bright (Polar Distance very doubtful)","简略描述":"vF, S, R, p of D neb, Pos 80°"},{"ID":"4062","标识":"NGC4062","M标识":"NGC4062","拓展名":"","组件":"","Class":"I 174","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h4m3.8s","赤经D(J2000)":"12.067722222222223","赤纬(J2000)":"+31h53m43s","赤纬D(J2000)":"31.89527777777778","可见光星等V":"11.1","摄影(蓝光)星等B":"11.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"4","短轴(分)":"1.8","方位角":"100","详细描述":"pretty bright, very large, much extended 97°, very gradually brighter middle","简略描述":"pB, vL, mE 97°, vgbM"},{"ID":"4063","标识":"NGC4063","M标识":"NGC4063","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h4m5.9s","赤经D(J2000)":"12.068305555555556","赤纬(J2000)":"+1h50m49s","赤纬D(J2000)":"1.8469444444444445","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"10","详细描述":"extremely faint, very small, bright pts involved","简略描述":"eF, vS, B pts inv"},{"ID":"4064","标识":"NGC4064","M标识":"NGC4064","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h4m11s","赤经D(J2000)":"12.069722222222222","赤纬(J2000)":"+18h26m36s","赤纬D(J2000)":"18.443333333333335","可见光星等V":"11.5","摄影(蓝光)星等B":"12.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"4.6","短轴(分)":"1.7","方位角":"150","详细描述":"bright, extended, gradually brighter middle","简略描述":"B, E, gbM"},{"ID":"4065","标识":"NGC4065","M标识":"NGC4065","拓展名":"","组件":"","Class":"III 395","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h4m6.3s","赤经D(J2000)":"12.068416666666666","赤纬(J2000)":"+20h14m9s","赤纬D(J2000)":"20.235833333333336","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"1","方位角":"129","详细描述":"pretty bright (Polar Distance very doubtful)","简略描述":"pF, R, f of D neb"},{"ID":"4066","标识":"NGC4066","M标识":"NGC4066","拓展名":"","组件":"","Class":"III 392","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h4m9.4s","赤经D(J2000)":"12.069277777777778","赤纬(J2000)":"+20h20m52s","赤纬D(J2000)":"20.347777777777775","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"pretty bright","简略描述":"pB"},{"ID":"4067","标识":"NGC4067","M标识":"NGC4067","拓展名":"","组件":"","Class":"III 37","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h4m11.5s","赤经D(J2000)":"12.069861111111111","赤纬(J2000)":"+10h51m16s","赤纬D(J2000)":"10.854444444444445","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"35","详细描述":"faint, pretty small, round, gradually brighter middle","简略描述":"F, pS, R, gbM"},{"ID":"4068","标识":"NGC4068","M标识":"NGC4068","拓展名":"","组件":"","Class":"II 781","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h4m2.3s","赤经D(J2000)":"12.067305555555555","赤纬(J2000)":"+52h35m26s","赤纬D(J2000)":"52.59055555555556","可见光星等V":"12.4","摄影(蓝光)星等B":"13","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.5","短轴(分)":"1.6","方位角":"30","详细描述":"pretty faint, small, stellar","简略描述":"pF, S, stellar"},{"ID":"4069","标识":"NGC4069","M标识":"NGC4069","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h4m6.1s","赤经D(J2000)":"12.06836111111111","赤纬(J2000)":"+20h19m28s","赤纬D(J2000)":"20.324444444444445","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"36","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4070","标识":"NGC4070","M标识":"NGC4070","拓展名":"","组件":"","Class":"III 391","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h4m11.3s","赤经D(J2000)":"12.069805555555556","赤纬(J2000)":"+20h24m35s","赤纬D(J2000)":"20.40972222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"pretty bright (Polar Distance very doubtful)","简略描述":"F, vS"},{"ID":"4071","标识":"NGC4071","M标识":"NGC4071","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"苍蝇座","星座(En)":"MUS","赤经(J2000)":"12h4m15.3s","赤经D(J2000)":"12.070916666666667","赤纬(J2000)":"-67h18m33s","赤纬D(J2000)":"-67.30916666666667","可见光星等V":"13","摄影(蓝光)星等B":"12.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.27","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, brighter middle like a star, among stars","简略描述":"vF, vS, R, bM *, am st"},{"ID":"4072","标识":"NGC4072","M标识":"NGC4072","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h4m13.9s","赤经D(J2000)":"12.070527777777778","赤纬(J2000)":"+20h12m37s","赤纬D(J2000)":"20.210277777777776","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"30","详细描述":"extremely faint, southeast of h 1065 - 67","简略描述":"eF, sf h 1065-67"},{"ID":"4073","标识":"NGC4073","M标识":"NGC4073","拓展名":"","组件":"","Class":"II 277","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h4m27.1s","赤经D(J2000)":"12.074194444444444","赤纬(J2000)":"+1h53m47s","赤纬D(J2000)":"1.896388888888889","可见光星等V":"11.4","摄影(蓝光)星等B":"12.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.2","短轴(分)":"2.3","方位角":"105","详细描述":"faint, pretty small, round, pretty gradually brighter middle, northwestern of 2","简略描述":"F, pS, R, pgbM, np of 2"},{"ID":"4074","标识":"NGC4074","M标识":"NGC4074","拓展名":"","组件":"","Class":"III 393","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h4m29.7s","赤经D(J2000)":"12.074916666666667","赤纬(J2000)":"+20h19m1s","赤纬D(J2000)":"20.316944444444445","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"0.6","方位角":"111","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"4075","标识":"NGC4075","M标识":"NGC4075","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h4m37.8s","赤经D(J2000)":"12.077166666666667","赤纬(J2000)":"+2h4m22s","赤纬D(J2000)":"2.072777777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"129","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"4076","标识":"NGC4076","M标识":"NGC4076","拓展名":"","组件":"","Class":"III 396","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h4m32.6s","赤经D(J2000)":"12.075722222222222","赤纬(J2000)":"+20h12m16s","赤纬D(J2000)":"20.204444444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"75","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4077","标识":"NGC4077","M标识":"NGC4077","拓展名":"","组件":"","Class":"III 258","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h4m38s","赤经D(J2000)":"12.077222222222222","赤纬(J2000)":"+1h47m18s","赤纬D(J2000)":"1.788333333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"15","详细描述":"considerably faint, considerably small, very little extended, brighter middle, southeastern of 2","简略描述":"cF, cS, vlE, bM, sf of 2"},{"ID":"4078","标识":"NGC4078","M标识":"NGC4078","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h4m47.7s","赤经D(J2000)":"12.079916666666666","赤纬(J2000)":"+10h35m45s","赤纬D(J2000)":"10.595833333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"18","详细描述":"faint, very small, round, gradually a little brighter middle","简略描述":"F, vS, R, glbM"},{"ID":"4079","标识":"NGC4079","M标识":"NGC4079","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h4m49.9s","赤经D(J2000)":"12.080527777777778","赤纬(J2000)":"-2h22m59s","赤纬D(J2000)":"-2.3830555555555555","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.3","短轴(分)":"1.6","方位角":"125","详细描述":"faint, large, round, 10th magnitude star 1 arcmin to north","简略描述":"F, L, R, * 10 n 1'"},{"ID":"4080","标识":"NGC4080","M标识":"NGC4080","拓展名":"","组件":"","Class":"III 355","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h4m51.9s","赤经D(J2000)":"12.081083333333334","赤纬(J2000)":"+26h59m32s","赤纬D(J2000)":"26.992222222222225","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"122","详细描述":"considerably faint, pretty small, extended, gradually brighter middle","简略描述":"cF, pS, E, gbM"},{"ID":"4081","标识":"NGC4081","M标识":"NGC4081","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h4m33.2s","赤经D(J2000)":"12.075888888888889","赤纬(J2000)":"+64h26m14s","赤纬D(J2000)":"64.43722222222223","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"135","详细描述":"faint, small, much extended, double star near","简略描述":"F, S, mE, D * nr"},{"ID":"4082","标识":"NGC4082","M标识":"NGC4082","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h5m11.4s","赤经D(J2000)":"12.086500000000001","赤纬(J2000)":"+10h40m15s","赤纬D(J2000)":"10.670833333333333","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"69","详细描述":"very faint, very small, a little extended, a little brighter middle","简略描述":"vF, vS, lE, lbM"},{"ID":"4083","标识":"NGC4083","M标识":"NGC4083","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h5m14s","赤经D(J2000)":"12.087222222222223","赤纬(J2000)":"+10h36m49s","赤纬D(J2000)":"10.61361111111111","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"33","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"4084","标识":"NGC4084","M标识":"NGC4084","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h5m15.3s","赤经D(J2000)":"12.087583333333335","赤纬(J2000)":"+21h12m54s","赤纬D(J2000)":"21.215","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, small","简略描述":"F, S"},{"ID":"4085","标识":"NGC4085","M标识":"NGC4085","拓展名":"","组件":"","Class":"I 224","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h5m22.4s","赤经D(J2000)":"12.089555555555556","赤纬(J2000)":"+50h21m12s","赤纬D(J2000)":"50.35333333333333","可见光星等V":"12.4","摄影(蓝光)星等B":"13","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.8","短轴(分)":"0.8","方位角":"78","详细描述":"bright, pretty large, pretty much extended 78°, very suddenly brighter middle","简略描述":"B, pL, pmE 78°, vsbM"},{"ID":"4086","标识":"NGC4086","M标识":"NGC4086","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h5m29.3s","赤经D(J2000)":"12.091472222222222","赤纬(J2000)":"+20h14m50s","赤纬D(J2000)":"20.247222222222224","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.9","方位角":"73","详细描述":"faint, pretty small, round","简略描述":"F, pS, R"},{"ID":"4087","标识":"NGC4087","M标识":"NGC4087","拓展名":"","组件":"","Class":"III 754","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h5m35.3s","赤经D(J2000)":"12.09313888888889","赤纬(J2000)":"-26h31m20s","赤纬D(J2000)":"-26.522222222222222","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.1","短轴(分)":"1.7","方位角":"39","详细描述":"pretty bright, small, round, brighter middle","简略描述":"pB, S, R, bM"},{"ID":"4088","标识":"NGC4088","M标识":"NGC4088","拓展名":"","组件":"","Class":"I 206","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h5m34.6s","赤经D(J2000)":"12.092944444444445","赤纬(J2000)":"+50h32m26s","赤纬D(J2000)":"50.54055555555556","可见光星等V":"10.6","摄影(蓝光)星等B":"11.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"5.6","短轴(分)":"2.1","方位角":"43","详细描述":"bright, considerably large, extended 55°, a little brighter middle","简略描述":"B, cL, E 55°, lbM"},{"ID":"4089","标识":"NGC4089","M标识":"NGC4089","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h5m37.5s","赤经D(J2000)":"12.09375","赤纬(J2000)":"+20h33m23s","赤纬D(J2000)":"20.55638888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, small, round, western of 2","简略描述":"vF, S, R, p of 2"},{"ID":"4090","标识":"NGC4090","M标识":"NGC4090","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h5m28s","赤经D(J2000)":"12.091111111111111","赤纬(J2000)":"+20h18m33s","赤纬D(J2000)":"20.309166666666666","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"38","详细描述":"very faint, very small, 15th magnitude star 1 arcmin to east","简略描述":"vF, vS, * 15 f 1'"},{"ID":"4091","标识":"NGC4091","M标识":"NGC4091","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h5m40.2s","赤经D(J2000)":"12.0945","赤纬(J2000)":"+20h33m23s","赤纬D(J2000)":"20.55638888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"43","详细描述":"very faint, small, round, eastern of 2","简略描述":"vF, S, R, f of 2"},{"ID":"4092","标识":"NGC4092","M标识":"NGC4092","拓展名":"","组件":"","Class":"III 382","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h5m50.2s","赤经D(J2000)":"12.097277777777778","赤纬(J2000)":"+20h28m39s","赤纬D(J2000)":"20.4775","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"faint, pretty small, round, 11th magnitude star to northwest","简略描述":"F, pS, R, * 11 np"},{"ID":"4093","标识":"NGC4093","M标识":"NGC4093","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h5m51.4s","赤经D(J2000)":"12.097611111111112","赤纬(J2000)":"+20h31m20s","赤纬D(J2000)":"20.522222222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"45","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"4094","标识":"NGC4094","M标识":"NGC4094","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h5m53.9s","赤经D(J2000)":"12.098305555555557","赤纬(J2000)":"-14h31m34s","赤纬D(J2000)":"-14.526111111111112","可见光星等V":"12","摄影(蓝光)星等B":"12.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"4.1","短轴(分)":"1.5","方位角":"62","详细描述":"extremely faint, large, pretty much extended, very gradually brighter middle, 2 stars of 11th magnitude near","简略描述":"eF, L, pmE, vgbM, 2 st 11 nr"},{"ID":"4095","标识":"NGC4095","M标识":"NGC4095","拓展名":"","组件":"","Class":"III 383","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h5m54.2s","赤经D(J2000)":"12.09838888888889","赤纬(J2000)":"+20h34m25s","赤纬D(J2000)":"20.57361111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"1","方位角":"153","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4096","标识":"NGC4096","M标识":"NGC4096","拓展名":"","组件":"","Class":"I 207","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h6m0.9s","赤经D(J2000)":"12.100249999999999","赤纬(J2000)":"+47h28m33s","赤纬D(J2000)":"47.475833333333334","可见光星等V":"10.9","摄影(蓝光)星等B":"11.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"6.5","短轴(分)":"1.8","方位角":"20","详细描述":"pretty bright, very large, much extended 32°","简略描述":"pB, vL, mE 32°"},{"ID":"4097","标识":"NGC4097","M标识":"NGC4097","拓展名":"","组件":"","Class":"III 400","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h6m2.4s","赤经D(J2000)":"12.100666666666667","赤纬(J2000)":"+36h51m50s","赤纬D(J2000)":"36.86388888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"98","详细描述":"extremely faint, very small, round, stellar, 10th magnitude star 2 arcmin to southwest","简略描述":"eF, vS, R, stellar, * 10 sp 2'"},{"ID":"4098","标识":"NGC4098","M标识":"NGC4098","拓展名":"","组件":"1","Class":"III 384","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h6m3.6s","赤经D(J2000)":"12.100999999999999","赤纬(J2000)":"+20h36m28s","赤纬D(J2000)":"20.60777777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"156","详细描述":"extremely faint, extremely small, round, brighter middle","简略描述":"eF, eS, R, bM"},{"ID":"4099","标识":"NGC4099","M标识":"NGC4099","拓展名":"","组件":"1","Class":"III 384","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h6m3.6s","赤经D(J2000)":"12.100999999999999","赤纬(J2000)":"+20h36m28s","赤纬D(J2000)":"20.60777777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"156","详细描述":"extremely faint, extremely small, round, brighter middle","简略描述":"eF, eS"},{"ID":"4100","标识":"NGC4100","M标识":"NGC4100","拓展名":"","组件":"","Class":"III 717","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h6m8.3s","赤经D(J2000)":"12.102305555555555","赤纬(J2000)":"+49h34m58s","赤纬D(J2000)":"49.58277777777778","可见光星等V":"11.2","摄影(蓝光)星等B":"11.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"5.4","短轴(分)":"1.7","方位角":"167","详细描述":"pretty bright, very large, very much extended 161°, very gradually a very little brighter middle","简略描述":"pB, vL, vmE 161°, vgvlbM"},{"ID":"4101","标识":"NGC4101","M标识":"NGC4101","拓展名":"","组件":"","Class":"III 326","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h6m10.7s","赤经D(J2000)":"12.102972222222222","赤纬(J2000)":"+25h33m25s","赤纬D(J2000)":"25.556944444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.8","方位角":"60","详细描述":"extremely faint, very small, round, very gradually brighter middle","简略描述":"eF, vS, R, vgbM"},{"ID":"4102","标识":"NGC4102","M标识":"NGC4102","拓展名":"","组件":"","Class":"I 225","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h6m23.3s","赤经D(J2000)":"12.106472222222221","赤纬(J2000)":"+52h42m39s","赤纬D(J2000)":"52.71083333333333","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.1","短轴(分)":"1.7","方位角":"38","详细描述":"bright, pretty small, round, brighter middle and bright nucleus, 12th magnitude star very near to southwest","简略描述":"B, pS, R, bMBN, * 12 sp, v nr"},{"ID":"4103","标识":"NGC4103","M标识":"NGC4103","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"长尾星团","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"南十字座","星座(En)":"CRU","赤经(J2000)":"12h6m39.5s","赤经D(J2000)":"12.110972222222221","赤纬(J2000)":"-61h15m0s","赤纬D(J2000)":"-61.25","可见光星等V":"7.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty compressed, irregularly round, stars from 10th to 14th magnitude","简略描述":"Cl, pL, pC, iR, st 10…14"},{"ID":"4104","标识":"NGC4104","M标识":"NGC4104","拓展名":"","组件":"","Class":"II 370","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h6m38.7s","赤经D(J2000)":"12.11075","赤纬(J2000)":"+28h10m25s","赤纬D(J2000)":"28.17361111111111","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.6","短轴(分)":"1.6","方位角":"35","详细描述":"pretty bright, pretty small, a little extended, brighter middle","简略描述":"pB, pS, lE, bM"},{"ID":"4105","标识":"NGC4105","M标识":"NGC4105","拓展名":"","组件":"","Class":"II 865","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h6m40.6s","赤经D(J2000)":"12.111277777777778","赤纬(J2000)":"-29h45m36s","赤纬D(J2000)":"-29.76","可见光星等V":"10.7","摄影(蓝光)星等B":"11.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.8","短轴(分)":"2.1","方位角":"151","详细描述":"pretty faint, pretty small, round, pretty suddenly brighter middle, mottled but not resolved, western of 2","简略描述":"pF, pS, R, psbM, r, p of 2"},{"ID":"4106","标识":"NGC4106","M标识":"NGC4106","拓展名":"","组件":"","Class":"II 866","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h6m45.5s","赤经D(J2000)":"12.112638888888888","赤纬(J2000)":"-29h46m6s","赤纬D(J2000)":"-29.76833333333333","可见光星等V":"11.4","摄影(蓝光)星等B":"12.4","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"77","详细描述":"pretty faint, pretty small, round, pretty gradually brighter middle, eastern of 2","简略描述":"pF, pS, R, pgbM, f of 2"},{"ID":"4107","标识":"NGC4107","M标识":"NGC4107","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h4m47.7s","赤经D(J2000)":"12.079916666666666","赤纬(J2000)":"+10h35m45s","赤纬D(J2000)":"10.595833333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"18","详细描述":"a planetary nebula, pretty bright, small, a little extended, 10th or 11th magnitude star to southeast","简略描述":"planetary, pB, S, lE, * 10·11 sf"},{"ID":"4108","标识":"NGC4108","M标识":"NGC4108","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h6m44.3s","赤经D(J2000)":"12.112305555555555","赤纬(J2000)":"+67h9m48s","赤纬D(J2000)":"67.16333333333334","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"105","详细描述":"bright, small, round, gradually brighter middle","简略描述":"B, S, R, gbM"},{"ID":"4109","标识":"NGC4109","M标识":"NGC4109","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h6m51.1s","赤经D(J2000)":"12.114194444444443","赤纬(J2000)":"+42h59m46s","赤纬D(J2000)":"42.99611111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"156","详细描述":"very faint, I 195 is 6 arcmin to north-northeast","简略描述":"vF, I 195 nnf 6'"},{"ID":"4110","标识":"NGC4110","M标识":"NGC4110","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h7m3.4s","赤经D(J2000)":"12.117611111111112","赤纬(J2000)":"+18h31m55s","赤纬D(J2000)":"18.531944444444445","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"128","详细描述":"faint, small","简略描述":"F, S"},{"ID":"4111","标识":"NGC4111","M标识":"NGC4111","拓展名":"","组件":"","Class":"I 195","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h7m2.9s","赤经D(J2000)":"12.117472222222222","赤纬(J2000)":"+43h4m0s","赤纬D(J2000)":"43.06666666666667","可见光星等V":"10.7","摄影(蓝光)星等B":"11.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"4.6","短轴(分)":"1","方位角":"150","详细描述":"very bright, pretty small, much extended 151°","简略描述":"vB, pS, mE 151°"},{"ID":"4112","标识":"NGC4112","M标识":"NGC4112","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h7m9.2s","赤经D(J2000)":"12.119222222222223","赤纬(J2000)":"-40h12m28s","赤纬D(J2000)":"-40.20777777777778","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"5","详细描述":"faint, small, very little extended, gradually a little brighter middle, 3 bright stars near","简略描述":"F, S, vlE, glbM, 3 B st nr"},{"ID":"4113","标识":"NGC4113","M标识":"NGC4113","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h7m8.5s","赤经D(J2000)":"12.119027777777779","赤纬(J2000)":"+32h59m46s","赤纬D(J2000)":"32.99611111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"68","详细描述":"extremely faint","简略描述":"eF"},{"ID":"4114","标识":"NGC4114","M标识":"NGC4114","拓展名":"","组件":"","Class":"III 533","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h7m12.2s","赤经D(J2000)":"12.120055555555556","赤纬(J2000)":"-14h11m5s","赤纬D(J2000)":"-14.184722222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.8","短轴(分)":"0.8","方位角":"136","详细描述":"cnsiderably faint, small, irregularly round, gradually brighter middle","简略描述":"cF, S, iR, gbM"},{"ID":"4115","标识":"NGC4115","M标识":"NGC4115","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h7m9.4s","赤经D(J2000)":"12.119277777777778","赤纬(J2000)":"+14h24m25s","赤纬D(J2000)":"14.406944444444445","可见光星等V":"99","摄影(蓝光)星等B":"14.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, suspected","简略描述":"eF, suspected"},{"ID":"4116","标识":"NGC4116","M标识":"NGC4116","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h7m37s","赤经D(J2000)":"12.126944444444446","赤纬(J2000)":"+2h41m28s","赤纬D(J2000)":"2.6911111111111112","可见光星等V":"12","摄影(蓝光)星等B":"12.4","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"3.8","短轴(分)":"2.3","方位角":"155","详细描述":"very faint, extended (hook shape), southwestern of 2","简略描述":"vF, E (hook shape), sp of 2"},{"ID":"4117","标识":"NGC4117","M标识":"NGC4117","拓展名":"","组件":"","Class":"III 708","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h7m46.1s","赤经D(J2000)":"12.129472222222223","赤纬(J2000)":"+43h7m35s","赤纬D(J2000)":"43.12638888888889","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"0.9","方位角":"18","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4118","标识":"NGC4118","M标识":"NGC4118","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h7m52.9s","赤经D(J2000)":"12.131361111111111","赤纬(J2000)":"+43h6m41s","赤纬D(J2000)":"43.11138888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"135","详细描述":"extremely faint, very small, 1 arcmin south of III 708","简略描述":"eF, vS, 1' s of III 708"},{"ID":"4119","标识":"NGC4119","M标识":"NGC4119","拓展名":"","组件":"","Class":"II 14","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h8m9.5s","赤经D(J2000)":"12.135972222222222","赤纬(J2000)":"+10h22m44s","赤纬D(J2000)":"10.37888888888889","可见光星等V":"11.4","摄影(蓝光)星等B":"12.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"4.3","短轴(分)":"1.4","方位角":"114","详细描述":"a little extended","简略描述":"lE"},{"ID":"4120","标识":"NGC4120","M标识":"NGC4120","拓展名":"","组件":"","Class":"III 904","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h8m31.4s","赤经D(J2000)":"12.142055555555554","赤纬(J2000)":"+69h32m40s","赤纬D(J2000)":"69.54444444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"0.4","方位角":"166","详细描述":"extremely faint, very small, extended","简略描述":"eF, vS, E"},{"ID":"4121","标识":"NGC4121","M标识":"NGC4121","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h7m56.5s","赤经D(J2000)":"12.132361111111111","赤纬(J2000)":"+65h6m52s","赤纬D(J2000)":"65.11444444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, a little extended, mottled but not resolved","简略描述":"F, vS, lE, r"},{"ID":"4122","标识":"NGC4122","M标识":"NGC4122","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h7m8.5s","赤经D(J2000)":"12.119027777777779","赤纬(J2000)":"+32h59m46s","赤纬D(J2000)":"32.99611111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"68","详细描述":"extremely faint","简略描述":"eF, vS, R, mbM"},{"ID":"4123","标识":"NGC4123","M标识":"NGC4123","拓展名":"","组件":"","Class":"V 4","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h8m11.2s","赤经D(J2000)":"12.136444444444445","赤纬(J2000)":"+2h52m42s","赤纬D(J2000)":"2.8783333333333334","可见光星等V":"11.4","摄影(蓝光)星等B":"12","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"4.3","短轴(分)":"3.2","方位角":"135","详细描述":"considerably faint, very large, extended 90°±, brighter middle and nucleus","简略描述":"cF, vL, E 90° ±, bMN"},{"ID":"4124","标识":"NGC4124","M标识":"NGC4124","拓展名":"","组件":"","Class":"I 33, II 60","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h8m9.5s","赤经D(J2000)":"12.135972222222222","赤纬(J2000)":"+10h22m44s","赤纬D(J2000)":"10.37888888888889","可见光星等V":"11.4","摄影(蓝光)星等B":"12.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"4.3","短轴(分)":"1.4","方位角":"114","详细描述":"a little extended","简略描述":"pB, pL, mE 118°, bM, r"},{"ID":"4125","标识":"NGC4125","M标识":"NGC4125","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h8m5.5s","赤经D(J2000)":"12.13486111111111","赤纬(J2000)":"+65h10m28s","赤纬D(J2000)":"65.17444444444445","可见光星等V":"9.7","摄影(蓝光)星等B":"10.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"5.8","短轴(分)":"3.2","方位角":"81","详细描述":"pretty bright, pretty large, considerably extended, much brighter middle (Auwers 28)","简略描述":"pB, pL, cE, mbM (Auw 28)"},{"ID":"4126","标识":"NGC4126","M标识":"NGC4126","拓展名":"","组件":"","Class":"III 68","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h8m37.4s","赤经D(J2000)":"12.143722222222221","赤纬(J2000)":"+16h8m35s","赤纬D(J2000)":"16.143055555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"0","详细描述":"very faint, small, round, pretty suddenly a little brighter middle, between 2 very small (faint) stars","简略描述":"vF, S, R, pslbM, bet 2 vS st"},{"ID":"4127","标识":"NGC4127","M标识":"NGC4127","拓展名":"","组件":"","Class":"I 279","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"12h8m25.8s","赤经D(J2000)":"12.1405","赤纬(J2000)":"+76h48m16s","赤纬D(J2000)":"76.80444444444444","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.5","短轴(分)":"1.2","方位角":"140","详细描述":"faint, pretty large, very little extended, gradually a little brighter middle","简略描述":"F, pL, vlE, glbM"},{"ID":"4128","标识":"NGC4128","M标识":"NGC4128","拓展名":"","组件":"","Class":"I 263","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h8m32.2s","赤经D(J2000)":"12.142277777777778","赤纬(J2000)":"+68h46m5s","赤纬D(J2000)":"68.76805555555555","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.4","短轴(分)":"0.9","方位角":"67","详细描述":"considerably bright, a little extended, brighter middle","简略描述":"cB, lE, bM"},{"ID":"4129","标识":"NGC4129","M标识":"NGC4129","拓展名":"","组件":"","Class":"II 548","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h8m53.2s","赤经D(J2000)":"12.14811111111111","赤纬(J2000)":"-9h2m12s","赤纬D(J2000)":"-9.036666666666667","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.3","短轴(分)":"0.6","方位角":"93","详细描述":"faint, pretty large, pretty much extended 95°±, very gradually a little brighter middle","简略描述":"F, pL, pmE 95° ±, vglbM"},{"ID":"4130","标识":"NGC4130","M标识":"NGC4130","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h8m53.2s","赤经D(J2000)":"12.14811111111111","赤纬(J2000)":"-9h2m12s","赤纬D(J2000)":"-9.036666666666667","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.3","短轴(分)":"0.6","方位角":"93","详细描述":"faint, pretty large, pretty much extended 95°±, very gradually a little brighter middle","简略描述":"pE, lbM, * 13 p 5'"},{"ID":"4131","标识":"NGC4131","M标识":"NGC4131","拓展名":"","组件":"","Class":"III 356","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h8m47.1s","赤经D(J2000)":"12.146416666666665","赤纬(J2000)":"+29h18m17s","赤纬D(J2000)":"29.304722222222225","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"73","详细描述":"considerably faint, small, round, 1st of 3","简略描述":"cF, S, R, 1st of 3"},{"ID":"4132","标识":"NGC4132","M标识":"NGC4132","拓展名":"","组件":"","Class":"III 357","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h9m1.5s","赤经D(J2000)":"12.150416666666667","赤纬(J2000)":"+29h15m1s","赤纬D(J2000)":"29.25027777777778","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"21","详细描述":"considerably faint, small, irregularly round, 2nd of 3","简略描述":"cF, S, iR, 2nd of 3"},{"ID":"4133","标识":"NGC4133","M标识":"NGC4133","拓展名":"","组件":"","Class":"I 278","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h8m49.3s","赤经D(J2000)":"12.147027777777778","赤纬(J2000)":"+74h54m16s","赤纬D(J2000)":"74.90444444444445","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"125","详细描述":"pretty bright, considerably large, round, gradually much brighter middle","简略描述":"pB, cL, R, gmbM"},{"ID":"4134","标识":"NGC4134","M标识":"NGC4134","拓展名":"","组件":"","Class":"II 371","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h9m9.9s","赤经D(J2000)":"12.152750000000001","赤纬(J2000)":"+29h10m37s","赤纬D(J2000)":"29.176944444444445","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.2","短轴(分)":"0.9","方位角":"150","详细描述":"pretty faint, pretty large, a little extended, 3rd of 3","简略描述":"pF, pL, lE, 3rd of 3"},{"ID":"4135","标识":"NGC4135","M标识":"NGC4135","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h9m8.8s","赤经D(J2000)":"12.152444444444445","赤纬(J2000)":"+44h0m13s","赤纬D(J2000)":"44.00361111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.6","方位角":"87","详细描述":"very faint, pretty small, round, 2 faint stars involved","简略描述":"vF, pS, R, 2 F st inv"},{"ID":"4136","标识":"NGC4136","M标识":"NGC4136","拓展名":"","组件":"","Class":"II 321","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h9m17.8s","赤经D(J2000)":"12.154944444444444","赤纬(J2000)":"+29h55m40s","赤纬D(J2000)":"29.92777777777778","可见光星等V":"11.1","摄影(蓝光)星等B":"11.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3.9","短轴(分)":"3.6","方位角":"90","详细描述":"faint, very large, very gradually much brighter middle","简略描述":"F, vL, vgmbM"},{"ID":"4137","标识":"NGC4137","M标识":"NGC4137","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h9m17.4s","赤经D(J2000)":"12.154833333333334","赤纬(J2000)":"+44h5m24s","赤纬D(J2000)":"44.09","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"54","详细描述":"very faint, pretty small, round, a little fainter than the southwestern one","简略描述":"vF, pS, R, 1 fainter than sp one"},{"ID":"4138","标识":"NGC4138","M标识":"NGC4138","拓展名":"","组件":"","Class":"I 196","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h9m29.7s","赤经D(J2000)":"12.15825","赤纬(J2000)":"+43h41m8s","赤纬D(J2000)":"43.68555555555555","可见光星等V":"11.3","摄影(蓝光)星等B":"12.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.6","短轴(分)":"1.7","方位角":"150","详细描述":"bright, pretty large, a little extended, very gradually brighter middle, star to northwest","简略描述":"B, pL, lE, vgbM, * np"},{"ID":"4139","标识":"NGC4139","M标识":"NGC4139","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h4m34s","赤经D(J2000)":"12.07611111111111","赤纬(J2000)":"+1h48m5s","赤纬D(J2000)":"1.801388888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.5","方位角":"153","详细描述":"faint, small, difficult, western of double nebula","简略描述":"F, S, diffic, p of D neb"},{"ID":"4140","标识":"NGC4140","M标识":"NGC4140","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h4m38s","赤经D(J2000)":"12.077222222222222","赤纬(J2000)":"+1h47m18s","赤纬D(J2000)":"1.788333333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"15","详细描述":"faint, small, difficult, eastern of double nebula","简略描述":"F, S, diffic, f of D neb"},{"ID":"4141","标识":"NGC4141","M标识":"NGC4141","拓展名":"","组件":"","Class":"III 795","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h9m47.4s","赤经D(J2000)":"12.163166666666667","赤纬(J2000)":"+58h50m58s","赤纬D(J2000)":"58.849444444444444","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"75","详细描述":"very faint, pretty small, a little extended, gradually brighter middle, mottled but not resolved","简略描述":"vF, pS, lE, gbM, r"},{"ID":"4142","标识":"NGC4142","M标识":"NGC4142","拓展名":"","组件":"","Class":"III 814","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h9m30.2s","赤经D(J2000)":"12.15838888888889","赤纬(J2000)":"+53h6m14s","赤纬D(J2000)":"53.10388888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.2","短轴(分)":"1.2","方位角":"175","详细描述":"very faint, small, irregular figure, very gradually a little brighter middle, extremely mottled but not resolved","简略描述":"vF, S, iF, vglbM, er"},{"ID":"4143","标识":"NGC4143","M标识":"NGC4143","拓展名":"","组件":"","Class":"IV 54","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h9m36.2s","赤经D(J2000)":"12.160055555555555","赤纬(J2000)":"+42h32m4s","赤纬D(J2000)":"42.53444444444444","可见光星等V":"10.9","摄影(蓝光)星等B":"11.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"2.3","短轴(分)":"1.4","方位角":"144","详细描述":"considerably bright, round, very gradually then very suddenly brighter middle and nucleus","简略描述":"cB, R, vg, vsbMN"},{"ID":"4144","标识":"NGC4144","M标识":"NGC4144","拓展名":"","组件":"","Class":"II 747","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h9m59.3s","赤经D(J2000)":"12.166472222222222","赤纬(J2000)":"+46h27m26s","赤纬D(J2000)":"46.45722222222223","可见光星等V":"11.6","摄影(蓝光)星等B":"12.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"6.1","短轴(分)":"1.5","方位角":"104","详细描述":"pretty faint, considerably large, very much extended 109°, very gradually brighter middle","简略描述":"pF, cL, vmE 109°, vgbM"},{"ID":"4145","标识":"NGC4145","M标识":"NGC4145","拓展名":"","组件":"","Class":"I 169","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h10m1.7s","赤经D(J2000)":"12.16713888888889","赤纬(J2000)":"+39h52m58s","赤纬D(J2000)":"39.882777777777775","可见光星等V":"11.3","摄影(蓝光)星等B":"11.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"5.9","短轴(分)":"4.1","方位角":"100","详细描述":"bright, very large, very gradually a little brighter middle","简略描述":"B, vL, vglbM"},{"ID":"4146","标识":"NGC4146","M标识":"NGC4146","拓展名":"","组件":"","Class":"III 327","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h10m18.2s","赤经D(J2000)":"12.171722222222222","赤纬(J2000)":"+26h25m52s","赤纬D(J2000)":"26.43111111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"66","详细描述":"very faint, pretty small","简略描述":"vF, pS"},{"ID":"4147","标识":"NGC4147","M标识":"NGC4147","拓展名":"","组件":"","Class":"I 19","业余排名":"6","中文名":"踢罐星团","类型":"GCL","含重复类型":"Dup","形态":"VI","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h10m6.2s","赤经D(J2000)":"12.168388888888888","赤纬(J2000)":"+18h32m33s","赤纬D(J2000)":"18.5425","可见光星等V":"10.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.4","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very bright, pretty large, round, gradually brighter middle, well resolved, clearly consisting of stars","简略描述":"globular, vB, pL, R, gbM, rrr"},{"ID":"4148","标识":"NGC4148","M标识":"NGC4148","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h10m7.9s","赤经D(J2000)":"12.168861111111111","赤纬(J2000)":"+35h52m42s","赤纬D(J2000)":"35.87833333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1","方位角":"165","详细描述":"faint, small, 12th magnitude star to southeast","简略描述":"F, S, * 12 sf"},{"ID":"4149","标识":"NGC4149","M标识":"NGC4149","拓展名":"","组件":"","Class":"II 802","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h10m32.8s","赤经D(J2000)":"12.175777777777776","赤纬(J2000)":"+58h18m14s","赤纬D(J2000)":"58.303888888888885","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"87","详细描述":"faint, small, extended","简略描述":"F, S, E"},{"ID":"4150","标识":"NGC4150","M标识":"NGC4150","拓展名":"","组件":"","Class":"I 73","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h10m33.6s","赤经D(J2000)":"12.176","赤纬(J2000)":"+30h24m7s","赤纬D(J2000)":"30.401944444444442","可见光星等V":"11.6","摄影(蓝光)星等B":"12.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.3","短轴(分)":"1.6","方位角":"147","详细描述":"bright, small, round, pretty gradually much brighter middle","简略描述":"B, S, R, pgmbM"},{"ID":"4151","标识":"NGC4151","M标识":"NGC4151","拓展名":"","组件":"","Class":"I 165","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h10m32.3s","赤经D(J2000)":"12.175638888888889","赤纬(J2000)":"+39h24m24s","赤纬D(J2000)":"39.406666666666666","可见光星等V":"10.8","摄影(蓝光)星等B":"11.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"6.3","短轴(分)":"4.5","方位角":"146","详细描述":"very bright, small, round, very suddenly much brighter middle and bright nucleus, western of 2","简略描述":"vB, S, R, vsmbMBN, p of 2"},{"ID":"4152","标识":"NGC4152","M标识":"NGC4152","拓展名":"","组件":"","Class":"II 83","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h10m37.5s","赤经D(J2000)":"12.177083333333332","赤纬(J2000)":"+16h1m59s","赤纬D(J2000)":"16.033055555555556","可见光星等V":"12.2","摄影(蓝光)星等B":"12.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.3","短轴(分)":"1.9","方位角":"115","详细描述":"pretty bright, pretty large, round, pretty gradually much brighter middle, mottled but not resolved","简略描述":"pB, pL, R, pgmbM, r"},{"ID":"4153","标识":"NGC4153","M标识":"NGC4153","拓展名":"","组件":"","Class":"I 11","业余排名":"15","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VI","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h10m6.2s","赤经D(J2000)":"12.168388888888888","赤纬(J2000)":"+18h32m33s","赤纬D(J2000)":"18.5425","可见光星等V":"10.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.4","短轴(分)":"","方位角":"","详细描述":"bright, pretty large, extended, brighter middle","简略描述":"B, pL, E, bM"},{"ID":"4154","标识":"NGC4154","M标识":"NGC4154","拓展名":"","组件":"","Class":"III 845","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h10m32.8s","赤经D(J2000)":"12.175777777777776","赤纬(J2000)":"+58h18m14s","赤纬D(J2000)":"58.303888888888885","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"87","详细描述":"very faint, small, extended 90°±","简略描述":"vF, S, E 90° ±"},{"ID":"4155","标识":"NGC4155","M标识":"NGC4155","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h10m45.6s","赤经D(J2000)":"12.179333333333332","赤纬(J2000)":"+19h2m28s","赤纬D(J2000)":"19.041111111111114","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"1","方位角":"81","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"4156","标识":"NGC4156","M标识":"NGC4156","拓展名":"","组件":"","Class":"II 642","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h10m49.4s","赤经D(J2000)":"12.180388888888888","赤纬(J2000)":"+39h28m23s","赤纬D(J2000)":"39.473055555555554","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"48","详细描述":"pretty faint, small, extended, very gradually brighter middle, eastern of 2","简略描述":"pF, S, E, vgbM, f of 2"},{"ID":"4157","标识":"NGC4157","M标识":"NGC4157","拓展名":"","组件":"","Class":"I 208","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h11m4.4s","赤经D(J2000)":"12.184555555555555","赤纬(J2000)":"+50h29m5s","赤纬D(J2000)":"50.484722222222224","可见光星等V":"11.4","摄影(蓝光)星等B":"12.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"6.7","短轴(分)":"1.2","方位角":"66","详细描述":"pretty faint, considerably large, very much extended 60°± (double?)","简略描述":"pF, cL, vmE 60° ± (double?)"},{"ID":"4158","标识":"NGC4158","M标识":"NGC4158","拓展名":"","组件":"","Class":"II 405","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h11m10.2s","赤经D(J2000)":"12.186166666666667","赤纬(J2000)":"+20h10m33s","赤纬D(J2000)":"20.175833333333333","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"1.8","方位角":"78","详细描述":"faint, pretty small, a little extended, brighter middle, pretty bright star to southeast","简略描述":"F, pS, lE, bM, pB * sf"},{"ID":"4159","标识":"NGC4159","M标识":"NGC4159","拓展名":"","组件":"","Class":"III 941","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h10m53.3s","赤经D(J2000)":"12.181472222222222","赤纬(J2000)":"+76h7m35s","赤纬D(J2000)":"76.12638888888888","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"35","详细描述":"extremely faint, pretty small, round, in a triangle with 2 stars","简略描述":"eF, pS, R, Δ 2 st"},{"ID":"4160","标识":"NGC4160","M标识":"NGC4160","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h12m11.6s","赤经D(J2000)":"12.203222222222221","赤纬(J2000)":"+43h44m18s","赤纬D(J2000)":"43.73833333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Neb * 13m"},{"ID":"4161","标识":"NGC4161","M标识":"NGC4161","拓展名":"","组件":"","Class":"II 803","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h11m32.9s","赤经D(J2000)":"12.192472222222223","赤纬(J2000)":"+57h44m15s","赤纬D(J2000)":"57.737500000000004","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"50","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"4162","标识":"NGC4162","M标识":"NGC4162","拓展名":"","组件":"","Class":"II 353","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h11m52.5s","赤经D(J2000)":"12.197916666666666","赤纬(J2000)":"+24h7m26s","赤纬D(J2000)":"24.12388888888889","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.3","短轴(分)":"1.4","方位角":"174","详细描述":"bright, large, irregularly extended, brighter middle","简略描述":"B, L, iE, bM"},{"ID":"4163","标识":"NGC4163","M标识":"NGC4163","拓展名":"","组件":"","Class":"III 399","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h12m9s","赤经D(J2000)":"12.202499999999999","赤纬(J2000)":"+36h10m7s","赤纬D(J2000)":"36.16861111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"15.1","长轴(分)":"1.9","短轴(分)":"1.6","方位角":"0","详细描述":"bright, very large, very much extended 152°, very suddenly very much brighter middle","简略描述":"vF, pL, vlE, er"},{"ID":"4164","标识":"NGC4164","M标识":"NGC4164","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m5.4s","赤经D(J2000)":"12.2015","赤纬(J2000)":"+13h12m21s","赤纬D(J2000)":"13.205833333333333","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"111","详细描述":"","简略描述":"vF, 2'-3' s of 5625"},{"ID":"4165","标识":"NGC4165","M标识":"NGC4165","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m11.8s","赤经D(J2000)":"12.203277777777776","赤纬(J2000)":"+13h14m46s","赤纬D(J2000)":"13.24611111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"160","详细描述":"extremely faint, 10th magnitude star to northwest, h1119 (= NGC 4168) to the east","简略描述":"eF, * 10 np, h 1119 f"},{"ID":"4166","标识":"NGC4166","M标识":"NGC4166","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h12m9.7s","赤经D(J2000)":"12.202694444444443","赤纬(J2000)":"+17h45m26s","赤纬D(J2000)":"17.75722222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"1","方位角":"20","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"4167","标识":"NGC4167","M标识":"NGC4167","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Im","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h12m9s","赤经D(J2000)":"12.202499999999999","赤纬(J2000)":"+36h10m7s","赤纬D(J2000)":"36.16861111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"15.1","长轴(分)":"1.9","短轴(分)":"1.6","方位角":"0","详细描述":"","简略描述":"F, pL, R, vgbM, ** sp 10'"},{"ID":"4168","标识":"NGC4168","M标识":"NGC4168","拓展名":"","组件":"","Class":"II 105","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m17.2s","赤经D(J2000)":"12.204777777777776","赤纬(J2000)":"+13h12m16s","赤纬D(J2000)":"13.204444444444444","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.8","短轴(分)":"2.2","方位角":"120","详细描述":"pretty bright, pretty large, irregular figure, pretty suddenly brighter middle, mottled but not resolved, star involved","简略描述":"pB, pL, iF, psbM, r, * inv"},{"ID":"4169","标识":"NGC4169","M标识":"NGC4169","拓展名":"","组件":"","Class":"III 358","业余排名":"6.5","中文名":"方盒星系群","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h12m18.7s","赤经D(J2000)":"12.205194444444444","赤纬(J2000)":"+29h10m46s","赤纬D(J2000)":"29.179444444444446","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.8","短轴(分)":"0.9","方位角":"153","详细描述":"faint, small, 1st of 4","简略描述":"F, S, 1st of 4"},{"ID":"4170","标识":"NGC4170","M标识":"NGC4170","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"方盒星系群","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h12m12.9s","赤经D(J2000)":"12.203583333333333","赤纬(J2000)":"+29h10m2s","赤纬D(J2000)":"29.16722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, very near h 1120, 21, 22, 24"},{"ID":"4171","标识":"NGC4171","M标识":"NGC4171","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h12m38.3s","赤经D(J2000)":"12.210638888888889","赤纬(J2000)":"+29h13m30s","赤纬D(J2000)":"29.224999999999998","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, very near h 1120, 21, 22, 24"},{"ID":"4172","标识":"NGC4172","M标识":"NGC4172","拓展名":"","组件":"","Class":"II 792","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h12m14.7s","赤经D(J2000)":"12.204083333333333","赤纬(J2000)":"+56h10m35s","赤纬D(J2000)":"56.17638888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"6","详细描述":"faint, small, a little extended, gradually brighter middle","简略描述":"F, S, lE, gbM"},{"ID":"4173","标识":"NGC4173","M标识":"NGC4173","拓展名":"","组件":"","Class":"II 372","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h12m21.5s","赤经D(J2000)":"12.205972222222222","赤纬(J2000)":"+29h12m26s","赤纬D(J2000)":"29.20722222222222","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"5","短轴(分)":"0.7","方位角":"134","详细描述":"faint, small, 2nd of 4","简略描述":"F, S, 2nd of 4"},{"ID":"4174","标识":"NGC4174","M标识":"NGC4174","拓展名":"","组件":"","Class":"III 359","业余排名":"14","中文名":"方盒星系群","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h12m26.9s","赤经D(J2000)":"12.207472222222222","赤纬(J2000)":"+29h8m57s","赤纬D(J2000)":"29.149166666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"50","详细描述":"faint, small, 3rd of 4","简略描述":"F, S, 3rd of 4"},{"ID":"4175","标识":"NGC4175","M标识":"NGC4175","拓展名":"","组件":"","Class":"III 360","业余排名":"14","中文名":"方盒星系群","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h12m31s","赤经D(J2000)":"12.20861111111111","赤纬(J2000)":"+29h10m7s","赤纬D(J2000)":"29.16861111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"0.4","方位角":"130","详细描述":"faint, extremely small, 4th of 4","简略描述":"F, eS, 4th of 4"},{"ID":"4176","标识":"NGC4176","M标识":"NGC4176","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m36.8s","赤经D(J2000)":"12.210222222222221","赤纬(J2000)":"-9h9m37s","赤纬D(J2000)":"-9.160277777777779","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"55","详细描述":"","简略描述":"eF, vS, R, slbM, * 10"},{"ID":"4177","标识":"NGC4177","M标识":"NGC4177","拓展名":"","组件":"","Class":"III 534","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h12m41.2s","赤经D(J2000)":"12.211444444444444","赤纬(J2000)":"-14h0m50s","赤纬D(J2000)":"-14.01388888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"69","详细描述":"very faint, pretty large, round, very gradually brighter middle","简略描述":"vF, pL, R, vgbM"},{"ID":"4178","标识":"NGC4178","M标识":"NGC4178","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m46.2s","赤经D(J2000)":"12.212833333333332","赤纬(J2000)":"+10h51m51s","赤纬D(J2000)":"10.864166666666666","可见光星等V":"11.4","摄影(蓝光)星等B":"11.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"5","短轴(分)":"1.7","方位角":"30","详细描述":"very faint, very large, extended 45°±, 7th magnitude star to east","简略描述":"vF, vL, E 45° ±, * 7 f"},{"ID":"4179","标识":"NGC4179","M标识":"NGC4179","拓展名":"","组件":"","Class":"I 9","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m52.1s","赤经D(J2000)":"12.214472222222222","赤纬(J2000)":"+1h17m59s","赤纬D(J2000)":"1.299722222222222","可见光星等V":"11","摄影(蓝光)星等B":"11.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"4.2","短轴(分)":"1.3","方位角":"143","详细描述":"pretty bright, pretty small, pretty much extended 135°±, brighter middle and nucleus","简略描述":"pB, pS, pmE 135° ±, bMN"},{"ID":"4180","标识":"NGC4180","M标识":"NGC4180","拓展名":"","组件":"","Class":"II 133","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h13m3s","赤经D(J2000)":"12.2175","赤纬(J2000)":"+7h2m22s","赤纬D(J2000)":"7.039444444444444","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"22","详细描述":"pretty faint, small, a little extended 0°±, mottled but not resolved","简略描述":"pF, S, lE 0° ±, r"},{"ID":"4181","标识":"NGC4181","M标识":"NGC4181","拓展名":"","组件":"","Class":"III 777","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h12m48.9s","赤经D(J2000)":"12.213583333333332","赤纬(J2000)":"+52h54m14s","赤纬D(J2000)":"52.903888888888886","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"11","详细描述":"extremely faint, small, stellar","简略描述":"eF, S, stellar"},{"ID":"4182","标识":"NGC4182","M标识":"NGC4182","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h13m19.8s","赤经D(J2000)":"12.222166666666666","赤纬(J2000)":"+4h2m10s","赤纬D(J2000)":"4.036111111111111","可见光星等V":"11.5","摄影(蓝光)星等B":"11.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vS (? vS Cl)"},{"ID":"4183","标识":"NGC4183","M标识":"NGC4183","拓展名":"","组件":"","Class":"III 697","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h13m16.8s","赤经D(J2000)":"12.221333333333334","赤纬(J2000)":"+43h41m53s","赤纬D(J2000)":"43.698055555555555","可见光星等V":"12.3","摄影(蓝光)星等B":"12.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"5.3","短轴(分)":"0.7","方位角":"166","详细描述":"","简略描述":"vF, cL, mE 170° ±"},{"ID":"4184","标识":"NGC4184","M标识":"NGC4184","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"南十字座","星座(En)":"CRU","赤经(J2000)":"12h13m32.5s","赤经D(J2000)":"12.225694444444445","赤纬(J2000)":"-62h42m47s","赤纬D(J2000)":"-62.713055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"a cluster, much compressed, stars extremely small (faint)","简略描述":"Cl, mC, st eS"},{"ID":"4185","标识":"NGC4185","M标识":"NGC4185","拓展名":"","组件":"","Class":"II 373","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h13m22.2s","赤经D(J2000)":"12.222833333333334","赤纬(J2000)":"+28h30m37s","赤纬D(J2000)":"28.510277777777777","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.6","短轴(分)":"2","方位角":"165","详细描述":"considerably faint, large, round, gradually brighter middle","简略描述":"cF, L, R, gbM"},{"ID":"4186","标识":"NGC4186","M标识":"NGC4186","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h14m6.4s","赤经D(J2000)":"12.23511111111111","赤纬(J2000)":"+14h43m33s","赤纬D(J2000)":"14.725833333333334","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.8","方位角":"60","详细描述":"","简略描述":"pF, S, R, sp M 98"},{"ID":"4187","标识":"NGC4187","M标识":"NGC4187","拓展名":"","组件":"","Class":"II 813","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h13m29.3s","赤经D(J2000)":"12.224805555555555","赤纬(J2000)":"+50h44m30s","赤纬D(J2000)":"50.74166666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"1","方位角":"145","详细描述":"pretty bright, small, a little extended","简略描述":"pB, S, lE"},{"ID":"4188","标识":"NGC4188","M标识":"NGC4188","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h14m7.4s","赤经D(J2000)":"12.235388888888888","赤纬(J2000)":"-12h35m10s","赤纬D(J2000)":"-12.586111111111112","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"80","详细描述":"extremely faint, pretty small","简略描述":"eF, pS"},{"ID":"4189","标识":"NGC4189","M标识":"NGC4189","拓展名":"","组件":"","Class":"II 106","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h13m47.2s","赤经D(J2000)":"12.229777777777779","赤纬(J2000)":"+13h25m29s","赤纬D(J2000)":"13.424722222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.5","短轴(分)":"1.7","方位角":"85","详细描述":"faint, large, a little extended, very gradually a little brighter middle, mottled but not resolved","简略描述":"F, L, lE, vglbM, r"},{"ID":"4190","标识":"NGC4190","M标识":"NGC4190","拓展名":"","组件":"","Class":"II 409","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im\/P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h13m44.4s","赤经D(J2000)":"12.229000000000001","赤纬(J2000)":"+36h38m1s","赤纬D(J2000)":"36.63361111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"24","详细描述":"considerably faint, pretty small, round, very gradually a little brighter middle, mottled but not resolved","简略描述":"cF, pS, R, vglbM, r"},{"ID":"4191","标识":"NGC4191","M标识":"NGC4191","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h13m50.3s","赤经D(J2000)":"12.230638888888889","赤纬(J2000)":"+7h12m3s","赤纬D(J2000)":"7.200833333333334","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"5","详细描述":"","简略描述":"cF, R, bM, Near S *"},{"ID":"4192","标识":"NGC4192","M标识":"M98","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h13m47.8s","赤经D(J2000)":"12.229944444444445","赤纬(J2000)":"+14h53m58s","赤纬D(J2000)":"14.899444444444445","可见光星等V":"10.1","摄影(蓝光)星等B":"11","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"9.8","短轴(分)":"2.8","方位角":"155","详细描述":"bright, very large, very much extended 152°, very suddenly very much brighter middle","简略描述":"B, vL, vmE 152°, vsvmbM"},{"ID":"4193","标识":"NGC4193","M标识":"NGC4193","拓展名":"","组件":"","Class":"II 163","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h13m53.4s","赤经D(J2000)":"12.2315","赤纬(J2000)":"+13h10m22s","赤纬D(J2000)":"13.172777777777776","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.2","短轴(分)":"1.1","方位角":"93","详细描述":"very faint, pretty large, extended, very gradually brighter middle","简略描述":"vF, pL, E, vgbM"},{"ID":"4194","标识":"NGC4194","M标识":"NGC4194","拓展名":"","组件":"","Class":"II 867","业余排名":"14","中文名":"美杜莎星系","类型":"Gxy","含重复类型":"Gxy","形态":"IBm\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h14m9.7s","赤经D(J2000)":"12.236027777777776","赤纬(J2000)":"+54h31m35s","赤纬D(J2000)":"54.52638888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.7","短轴(分)":"1.6","方位角":"168","详细描述":"pretty bright, very small, very suddenly much brighter middle equal to 12th magnitude star","简略描述":"pB, vS, vsbM * 12"},{"ID":"4195","标识":"NGC4195","M标识":"NGC4195","拓展名":"","组件":"","Class":"III 796","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h14m18.1s","赤经D(J2000)":"12.23836111111111","赤纬(J2000)":"+59h36m56s","赤纬D(J2000)":"59.61555555555556","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.9","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"117","详细描述":"extremely faint","简略描述":"eF"},{"ID":"4196","标识":"NGC4196","M标识":"NGC4196","拓展名":"","组件":"","Class":"II 374","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h14m29.6s","赤经D(J2000)":"12.241555555555555","赤纬(J2000)":"+28h25m25s","赤纬D(J2000)":"28.42361111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"60","详细描述":"","简略描述":"pB, S, R, vsmbM *"},{"ID":"4197","标识":"NGC4197","M标识":"NGC4197","拓展名":"","组件":"","Class":"II 134","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h14m38.6s","赤经D(J2000)":"12.244055555555555","赤纬(J2000)":"+5h48m22s","赤纬D(J2000)":"5.806111111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.4","短轴(分)":"0.6","方位角":"36","详细描述":"pretty faint, pretty much extended, very gradually brighter middle","简略描述":"pF, pmE, vgbM"},{"ID":"4198","标识":"NGC4198","M标识":"NGC4198","拓展名":"","组件":"","Class":"II 793","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h14m21.8s","赤经D(J2000)":"12.239388888888888","赤纬(J2000)":"+56h0m42s","赤纬D(J2000)":"56.01166666666666","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.6","方位角":"130","详细描述":"pretty faint, pretty small, a little extended, gradually brighter middle","简略描述":"pF, pS, lE, gbM"},{"ID":"4199","标识":"NGC4199","M标识":"NGC4199","拓展名":"","组件":"1","Class":"III 797","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h14m48.6s","赤经D(J2000)":"12.246833333333333","赤纬(J2000)":"+59h54m23s","赤纬D(J2000)":"59.906388888888884","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"4200","标识":"NGC4200","M标识":"NGC4200","拓展名":"","组件":"","Class":"II 164","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h14m44.3s","赤经D(J2000)":"12.245638888888887","赤纬(J2000)":"+12h10m51s","赤纬D(J2000)":"12.180833333333332","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"98","详细描述":"considerably faint, a little extended, a little brighter middle","简略描述":"cF, lE, lbM"},{"ID":"4201","标识":"NGC4201","M标识":"NGC4201","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h14m41.9s","赤经D(J2000)":"12.244972222222222","赤纬(J2000)":"-11h35m0s","赤纬D(J2000)":"-11.583333333333334","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"80","详细描述":"extremely faint, extremely small, round, brighter middle and nucleus","简略描述":"eF, eS, R, bMN"},{"ID":"4202","标识":"NGC4202","M标识":"NGC4202","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m8.5s","赤经D(J2000)":"12.302361111111113","赤纬(J2000)":"-1h3m50s","赤纬D(J2000)":"-1.0638888888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"127","详细描述":"faint, irregular, cometary, faint star 1 arcmin to northeast","简略描述":"F, irr, cometary, F * 1' nf"},{"ID":"4203","标识":"NGC4203","M标识":"NGC4203","拓展名":"","组件":"","Class":"I 175","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h15m5s","赤经D(J2000)":"12.251388888888888","赤纬(J2000)":"+33h11m51s","赤纬D(J2000)":"33.1975","可见光星等V":"10.9","摄影(蓝光)星等B":"11.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.5","短轴(分)":"3.2","方位角":"10","详细描述":"very bright, small, round, pretty suddenly much brighter middle","简略描述":"vB, S, R, psmbM"},{"ID":"4204","标识":"NGC4204","M标识":"NGC4204","拓展名":"","组件":"","Class":"III 397","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h15m14.2s","赤经D(J2000)":"12.253944444444445","赤纬(J2000)":"+20h39m32s","赤纬D(J2000)":"20.65888888888889","可见光星等V":"12.3","摄影(蓝光)星等B":"12.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"3.6","短轴(分)":"2.9","方位角":"36","详细描述":"very faint, considerably large, irregularly round, very gradually brighter middle","简略描述":"vF, cL, iR, vgbM"},{"ID":"4205","标识":"NGC4205","M标识":"NGC4205","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h14m55.3s","赤经D(J2000)":"12.248694444444444","赤纬(J2000)":"+63h46m56s","赤纬D(J2000)":"63.782222222222224","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"0.6","方位角":"28","详细描述":"","简略描述":"pB, pS, R, * 12 f, ln"},{"ID":"4206","标识":"NGC4206","M标识":"NGC4206","拓展名":"","组件":"","Class":"II 165","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h15m16.7s","赤经D(J2000)":"12.25463888888889","赤纬(J2000)":"+13h1m22s","赤纬D(J2000)":"13.022777777777778","可见光星等V":"12.2","摄影(蓝光)星等B":"12.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"6.4","短轴(分)":"1.1","方位角":"0","详细描述":"faint, very much extended","简略描述":"F, vmE"},{"ID":"4207","标识":"NGC4207","M标识":"NGC4207","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h15m30.1s","赤经D(J2000)":"12.25836111111111","赤纬(J2000)":"+9h35m8s","赤纬D(J2000)":"9.585555555555556","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"124","详细描述":"pretty faint, pretty small, a little extended, 14th magnitude star to northwest","简略描述":"pF, pS, lE, * 14 np"},{"ID":"4208","标识":"NGC4208","M标识":"NGC4208","拓展名":"","组件":"","Class":"II 107","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h15m39.2s","赤经D(J2000)":"12.26088888888889","赤纬(J2000)":"+13h54m7s","赤纬D(J2000)":"13.901944444444444","可见光星等V":"11.2","摄影(蓝光)星等B":"11.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.2","短轴(分)":"2","方位角":"75","详细描述":"very faint, pretty large, round, gradually brighter middle (perhaps = h1144)","简略描述":"vF, pL, R, gbM (?=h 1144)"},{"ID":"4209","标识":"NGC4209","M标识":"NGC4209","拓展名":"","组件":"","Class":"II 375","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h15m40.9s","赤经D(J2000)":"12.26136111111111","赤纬(J2000)":"+28h28m14s","赤纬D(J2000)":"28.470555555555553","可见光星等V":"99","摄影(蓝光)星等B":"11.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, pretty small","简略描述":"F, pS"},{"ID":"4210","标识":"NGC4210","M标识":"NGC4210","拓展名":"","组件":"","Class":"III 850","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h15m15.8s","赤经D(J2000)":"12.254388888888888","赤纬(J2000)":"+65h59m10s","赤纬D(J2000)":"65.98611111111111","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2","短轴(分)":"1.6","方位角":"105","详细描述":"pretty faint, pretty small, round, very gradually brighter middle","简略描述":"pF, pS, R, vgbM"},{"ID":"4211","标识":"NGC4211","M标识":"NGC4211","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h15m35.8s","赤经D(J2000)":"12.259944444444445","赤纬(J2000)":"+28h10m39s","赤纬D(J2000)":"28.177500000000002","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"105","详细描述":"very faint, extremely small, much brighter middle","简略描述":"vF, eS, mbM"},{"ID":"4212","标识":"NGC4212","M标识":"NGC4212","拓展名":"","组件":"","Class":"II 108","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h15m39.2s","赤经D(J2000)":"12.26088888888889","赤纬(J2000)":"+13h54m7s","赤纬D(J2000)":"13.901944444444444","可见光星等V":"11.2","摄影(蓝光)星等B":"11.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.2","短轴(分)":"2","方位角":"75","详细描述":"bright, large, extended 107°, gradually then suddenly bright middle, mottled but not resolved","简略描述":"B, L, E 107°, g, sbM, r"},{"ID":"4213","标识":"NGC4213","M标识":"NGC4213","拓展名":"","组件":"","Class":"II 354","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h15m37.5s","赤经D(J2000)":"12.260416666666666","赤纬(J2000)":"+23h58m55s","赤纬D(J2000)":"23.981944444444444","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.7","短轴(分)":"1.7","方位角":"","详细描述":"considerably faint, very small, round","简略描述":"cF, vS, R"},{"ID":"4214","标识":"NGC4214","M标识":"NGC4214","拓展名":"","组件":"","Class":"I 95","业余排名":"5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h15m38.8s","赤经D(J2000)":"12.260777777777777","赤纬(J2000)":"+36h19m39s","赤纬D(J2000)":"36.3275","可见光星等V":"9.8","摄影(蓝光)星等B":"10.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"14","长轴(分)":"8","短轴(分)":"6.6","方位角":"144","详细描述":"considerably bright, considerably large, irregularly extended, binuclear","简略描述":"cB, cL, iE, biN"},{"ID":"4215","标识":"NGC4215","M标识":"NGC4215","拓展名":"","组件":"","Class":"II 135","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h15m54.6s","赤经D(J2000)":"12.265166666666667","赤纬(J2000)":"+6h24m3s","赤纬D(J2000)":"6.400833333333334","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"174","详细描述":"","简略描述":"B, pS, E, sbM * 11"},{"ID":"4216","标识":"NGC4216","M标识":"NGC4216","拓展名":"","组件":"","Class":"I 35","业余排名":"6","中文名":"银纹星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h15m54s","赤经D(J2000)":"12.265","赤纬(J2000)":"+13h8m52s","赤纬D(J2000)":"13.147777777777778","可见光星等V":"10","摄影(蓝光)星等B":"11","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"8.1","短轴(分)":"1.8","方位角":"19","详细描述":"very bright, very large, very much extended 17°, suddenly brighter middle and nucleus","简略描述":"vB, vL, vmE 17°, sbMN"},{"ID":"4217","标识":"NGC4217","M标识":"NGC4217","拓展名":"","组件":"","Class":"II 748","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h15m50.6s","赤经D(J2000)":"12.264055555555556","赤纬(J2000)":"+47h5m24s","赤纬D(J2000)":"47.09","可见光星等V":"11.2","摄影(蓝光)星等B":"12","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"5.2","短轴(分)":"1.5","方位角":"50","详细描述":"","简略描述":"pF, L, mE 45°, ** n, p of 2"},{"ID":"4218","标识":"NGC4218","M标识":"NGC4218","拓展名":"","组件":"","Class":"III 718","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h15m46s","赤经D(J2000)":"12.262777777777778","赤纬(J2000)":"+48h7m54s","赤纬D(J2000)":"48.13166666666667","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"142","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4219","标识":"NGC4219","M标识":"NGC4219","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h16m27.4s","赤经D(J2000)":"12.274277777777778","赤纬(J2000)":"-43h19m21s","赤纬D(J2000)":"-43.322500000000005","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.7","短轴(分)":"1.1","方位角":"36","详细描述":"pretty faint, pretty large, pretty much extended, very gradually a little brighter middle","简略描述":"pF, pL, pmE, vglbM"},{"ID":"4220","标识":"NGC4220","M标识":"NGC4220","拓展名":"","组件":"","Class":"I 209","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h16m11.8s","赤经D(J2000)":"12.269944444444445","赤纬(J2000)":"+47h52m59s","赤纬D(J2000)":"47.88305555555556","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.9","短轴(分)":"1.5","方位角":"141","详细描述":"","简略描述":"cB, pL, pmE 134°, psbM"},{"ID":"4221","标识":"NGC4221","M标识":"NGC4221","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h16m0s","赤经D(J2000)":"12.266666666666667","赤纬(J2000)":"+66h13m53s","赤纬D(J2000)":"66.23138888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.2","短轴(分)":"1.7","方位角":"25","详细描述":"pretty bright, small, round, pretty suddenly brighter middle","简略描述":"pB, S, R, psbM"},{"ID":"4222","标识":"NGC4222","M标识":"NGC4222","拓展名":"","组件":"","Class":"II 109","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h16m22.6s","赤经D(J2000)":"12.272944444444445","赤纬(J2000)":"+13h18m25s","赤纬D(J2000)":"13.306944444444445","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.1","短轴(分)":"0.5","方位角":"56","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"4223","标识":"NGC4223","M标识":"NGC4223","拓展名":"","组件":"","Class":"II 137","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m25.8s","赤经D(J2000)":"12.2905","赤纬(J2000)":"+6h41m22s","赤纬D(J2000)":"6.689444444444445","可见光星等V":"11.9","摄影(蓝光)星等B":"13","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.5","短轴(分)":"1.4","方位角":"128","详细描述":"pretty faint, pretty large, round, mottled but not resolved (RA uncertain by 10m)","简略描述":"pF, pL, R, r (? RA 10m)"},{"ID":"4224","标识":"NGC4224","M标识":"NGC4224","拓展名":"","组件":"","Class":"II 136","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h16m33.9s","赤经D(J2000)":"12.276083333333334","赤纬(J2000)":"+7h27m44s","赤纬D(J2000)":"7.4622222222222225","可见光星等V":"11.8","摄影(蓝光)星等B":"12.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.5","短轴(分)":"1","方位角":"57","详细描述":"pretty bright, pretty small, a little extended, gradually brighter middle, mottled but not resolved","简略描述":"pB, pS, lE, gbM, r"},{"ID":"4225","标识":"NGC4225","M标识":"NGC4225","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h16m38.3s","赤经D(J2000)":"12.277305555555557","赤纬(J2000)":"-12h19m37s","赤纬D(J2000)":"-12.326944444444445","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"60","详细描述":"","简略描述":"F, eS, R, * 170°, 60\""},{"ID":"4226","标识":"NGC4226","M标识":"NGC4226","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa\/P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h16m26.3s","赤经D(J2000)":"12.273972222222223","赤纬(J2000)":"+47h1m32s","赤纬D(J2000)":"47.025555555555556","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.5","方位角":"127","详细描述":"faint, small, a little extended, eastern of 2","简略描述":"F, S, lE, f of 2"},{"ID":"4227","标识":"NGC4227","M标识":"NGC4227","拓展名":"","组件":"","Class":"II 518","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h16m33.7s","赤经D(J2000)":"12.276027777777779","赤纬(J2000)":"+33h31m20s","赤纬D(J2000)":"33.52222222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"70","详细描述":"faint, very small, very little extended, pretty suddenly brighter middle, southwestern of 2","简略描述":"F, vS, vlE, psbM, sp of 2"},{"ID":"4228","标识":"NGC4228","M标识":"NGC4228","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"IBm","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h15m38.8s","赤经D(J2000)":"12.260777777777777","赤纬(J2000)":"+36h19m39s","赤纬D(J2000)":"36.3275","可见光星等V":"9.8","摄影(蓝光)星等B":"10.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"14","长轴(分)":"8","短轴(分)":"6.6","方位角":"144","详细描述":"very faint, large, round, gradually brighter middle (possibly = h1146)","简略描述":"vF, L, R, gbM [?=h 1146]"},{"ID":"4229","标识":"NGC4229","M标识":"NGC4229","拓展名":"","组件":"","Class":"II 519","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h16m38.7s","赤经D(J2000)":"12.277416666666667","赤纬(J2000)":"+33h33m40s","赤纬D(J2000)":"33.56111111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"12","详细描述":"considerably faint, very small, a little extended, pretty suddenly brighter middle, northeastern of 2","简略描述":"cF, vS, lE, psbM, nf of 2"},{"ID":"4230","标识":"NGC4230","M标识":"NGC4230","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV2p","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h17m16s","赤经D(J2000)":"12.287777777777778","赤纬(J2000)":"-55h5m12s","赤纬D(J2000)":"-55.086666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"cluster, faint, pretty large, irregular figure, stars from 13th to 15th magnitude","简略描述":"Cl, F, pL, iF, st 13…15"},{"ID":"4231","标识":"NGC4231","M标识":"NGC4231","拓展名":"","组件":"","Class":"III 719","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h16m48.9s","赤经D(J2000)":"12.28025","赤纬(J2000)":"+47h27m29s","赤纬D(J2000)":"47.45805555555556","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"33","详细描述":"","简略描述":"vF, vS, n of D neb"},{"ID":"4232","标识":"NGC4232","M标识":"NGC4232","拓展名":"","组件":"","Class":"III 720","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h16m49s","赤经D(J2000)":"12.280277777777778","赤纬(J2000)":"+47h26m20s","赤纬D(J2000)":"47.43888888888888","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"155","详细描述":"","简略描述":"vF, vS, s of D neb"},{"ID":"4233","标识":"NGC4233","M标识":"NGC4233","拓展名":"","组件":"","Class":"II 496","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m7.6s","赤经D(J2000)":"12.285444444444444","赤纬(J2000)":"+7h37m27s","赤纬D(J2000)":"7.624166666666667","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.4","短轴(分)":"1.1","方位角":"174","详细描述":"pretty faint, round, very suddenly brighter middle and small nucleus","简略描述":"pF, R, vsbMSN"},{"ID":"4234","标识":"NGC4234","M标识":"NGC4234","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m9.1s","赤经D(J2000)":"12.28586111111111","赤纬(J2000)":"+3h41m0s","赤纬D(J2000)":"3.6833333333333336","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"pretty bright, large, round, gradually brighter middle","简略描述":"pB, L, R, gbM"},{"ID":"4235","标识":"NGC4235","M标识":"NGC4235","拓展名":"","组件":"","Class":"II 17","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m9.7s","赤经D(J2000)":"12.286027777777777","赤纬(J2000)":"+7h11m27s","赤纬D(J2000)":"7.190833333333334","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"4.2","短轴(分)":"0.9","方位角":"48","详细描述":"pretty bright, pretty large, pretty much extended, brighter middle, western of 2","简略描述":"pB, pL, pmE, bM, p of 2"},{"ID":"4236","标识":"NGC4236","M标识":"NGC4236","拓展名":"","组件":"1","Class":"V 51","业余排名":"2","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h16m43.3s","赤经D(J2000)":"12.278694444444445","赤纬(J2000)":"+69h27m49s","赤纬D(J2000)":"69.46361111111112","可见光星等V":"9.6","摄影(蓝光)星等B":"10.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"15","长轴(分)":"21.9","短轴(分)":"7.2","方位角":"162","详细描述":"","简略描述":"vF, eL, mE 160° ±, vgbM"},{"ID":"4237","标识":"NGC4237","M标识":"NGC4237","拓展名":"","组件":"","Class":"II 11","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h17m11.4s","赤经D(J2000)":"12.2865","赤纬(J2000)":"+15h19m24s","赤纬D(J2000)":"15.323333333333332","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.1","短轴(分)":"1.4","方位角":"108","详细描述":"pretty bright, pretty large, a little extended, very gradually brighter middle, mottled but not resolved","简略描述":"pB, pL, lE, vgbM, r"},{"ID":"4238","标识":"NGC4238","M标识":"NGC4238","拓展名":"","组件":"","Class":"III 851","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h16m56s","赤经D(J2000)":"12.282222222222224","赤纬(J2000)":"+63h24m38s","赤纬D(J2000)":"63.410555555555554","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"0.5","方位角":"36","详细描述":"very faint, pretty small, irregularly round, very gradually a little brighter middle","简略描述":"vF, pS, iR, vglbM"},{"ID":"4239","标识":"NGC4239","M标识":"NGC4239","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h17m14.9s","赤经D(J2000)":"12.287472222222222","赤纬(J2000)":"+16h31m54s","赤纬D(J2000)":"16.531666666666666","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"120","详细描述":"faint, pretty large, round","简略描述":"F, pL, R"},{"ID":"4240","标识":"NGC4240","M标识":"NGC4240","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m24.3s","赤经D(J2000)":"12.290083333333333","赤纬(J2000)":"-9h57m6s","赤纬D(J2000)":"-9.951666666666666","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"","详细描述":"","简略描述":"pB, S, * 12 sp ?'"},{"ID":"4241","标识":"NGC4241","M标识":"NGC4241","拓展名":"","组件":"","Class":"III 480","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m59.9s","赤经D(J2000)":"12.299972222222221","赤纬(J2000)":"+6h39m15s","赤纬D(J2000)":"6.654166666666667","可见光星等V":"13.1","摄影(蓝光)星等B":"13.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"132","详细描述":"very faint, large, very gradually brighter middle, 7th magnitude star to south","简略描述":"vF, L, vgbM, * 7 s"},{"ID":"4242","标识":"NGC4242","M标识":"NGC4242","拓展名":"","组件":"","Class":"III 725","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h17m30s","赤经D(J2000)":"12.291666666666666","赤纬(J2000)":"+45h37m9s","赤纬D(J2000)":"45.619166666666665","可见光星等V":"10.8","摄影(蓝光)星等B":"11.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"5.2","短轴(分)":"4","方位角":"25","详细描述":"very faint, considerably large, irregularly round, very gradually brighter middle, mottled but not resolved","简略描述":"vF, cL, iR, vgbM, r"},{"ID":"4243","标识":"NGC4243","M标识":"NGC4243","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m24.3s","赤经D(J2000)":"12.290083333333333","赤纬(J2000)":"-9h57m6s","赤纬D(J2000)":"-9.951666666666666","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"","详细描述":"pretty bright, extremely small, pretty bright star close to west","简略描述":"pB, eS, pB * close p"},{"ID":"4244","标识":"NGC4244","M标识":"NGC4244","拓展名":"","组件":"","Class":"V 41","业余排名":"2","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h17m29.9s","赤经D(J2000)":"12.291638888888889","赤纬(J2000)":"+37h48m28s","赤纬D(J2000)":"37.80777777777777","可见光星等V":"10.4","摄影(蓝光)星等B":"10.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"14","长轴(分)":"16.6","短轴(分)":"1.9","方位角":"48","详细描述":"","简略描述":"pB, vL, eE 43°, vgbM"},{"ID":"4245","标识":"NGC4245","M标识":"NGC4245","拓展名":"","组件":"","Class":"I 74","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h17m36.9s","赤经D(J2000)":"12.293583333333332","赤纬(J2000)":"+29h36m27s","赤纬D(J2000)":"29.6075","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.9","短轴(分)":"2.2","方位角":"165","详细描述":"considerably bright, pretty large, very little extended, suddenly much brighter middle, mottled but not resolved","简略描述":"cB, pL, vlE, smbM, r"},{"ID":"4246","标识":"NGC4246","M标识":"NGC4246","拓展名":"","组件":"","Class":"III 91","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m58.1s","赤经D(J2000)":"12.299472222222223","赤纬(J2000)":"+7h11m8s","赤纬D(J2000)":"7.185555555555556","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.3","短轴(分)":"1.2","方位角":"83","详细描述":"extremely faint","简略描述":"eF"},{"ID":"4247","标识":"NGC4247","M标识":"NGC4247","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m57.9s","赤经D(J2000)":"12.299416666666666","赤纬(J2000)":"+7h16m28s","赤纬D(J2000)":"7.274444444444445","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"48","详细描述":"","简略描述":"F, S, R, bM, 6' n of III 91"},{"ID":"4248","标识":"NGC4248","M标识":"NGC4248","拓展名":"","组件":"","Class":"II 742","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h17m50.4s","赤经D(J2000)":"12.297333333333333","赤纬(J2000)":"+47h24m33s","赤纬D(J2000)":"47.409166666666664","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.9","短轴(分)":"1.2","方位角":"108","详细描述":"very faint, small, pretty much extended, pretty suddenly brighter middle","简略描述":"vF, S, pmE, psbM"},{"ID":"4249","标识":"NGC4249","M标识":"NGC4249","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m59.3s","赤经D(J2000)":"12.299805555555555","赤纬(J2000)":"+5h35m57s","赤纬D(J2000)":"5.599166666666666","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint","简略描述":"F"},{"ID":"4250","标识":"NGC4250","M标识":"NGC4250","拓展名":"","组件":"","Class":"I 264","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h17m25.9s","赤经D(J2000)":"12.290527777777777","赤纬(J2000)":"+70h48m10s","赤纬D(J2000)":"70.80277777777778","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.7","短轴(分)":"2.1","方位角":"168","详细描述":"pretty bright, small, round, pretty gradually brighter middle","简略描述":"pB, S, R, pgbM"},{"ID":"4251","标识":"NGC4251","M标识":"NGC4251","拓展名":"","组件":"","Class":"I 89","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h18m8.4s","赤经D(J2000)":"12.302333333333333","赤纬(J2000)":"+28h10m31s","赤纬D(J2000)":"28.17527777777778","可见光星等V":"10.7","摄影(蓝光)星等B":"11.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"3.6","短轴(分)":"1.5","方位角":"100","详细描述":"","简略描述":"vB, S, E, vsvmbMN, * 6·7 f 90s"},{"ID":"4252","标识":"NGC4252","M标识":"NGC4252","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m30.9s","赤经D(J2000)":"12.308583333333335","赤纬(J2000)":"+5h33m36s","赤纬D(J2000)":"5.56","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"48","详细描述":"faint, extended","简略描述":"F, E"},{"ID":"4253","标识":"NGC4253","M标识":"NGC4253","拓展名":"","组件":"","Class":"III 702","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h18m26.4s","赤经D(J2000)":"12.307333333333334","赤纬(J2000)":"+29h48m47s","赤纬D(J2000)":"29.813055555555557","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"54","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"4254","标识":"NGC4254","M标识":"M99","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"室女座星系团风车","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h18m49.3s","赤经D(J2000)":"12.313694444444446","赤纬(J2000)":"+14h25m3s","赤纬D(J2000)":"14.417499999999999","可见光星等V":"9.9","摄影(蓝光)星等B":"10.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"5.3","短轴(分)":"4.6","方位角":"51","详细描述":"a very remarkable object, (per William and John Herschel) bright, large, round, gradually brighter middle, mottled but not resolved, (per the 3rd Lord Rosse and Leavenworth), 3 branched spiral","简略描述":"!! (H, h) B, L, R, gbM, r, (R & L) 3-branched spiral"},{"ID":"4255","标识":"NGC4255","M标识":"NGC4255","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m56.1s","赤经D(J2000)":"12.315583333333334","赤纬(J2000)":"+4h47m11s","赤纬D(J2000)":"4.786388888888888","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"115","详细描述":"small, pretty much brighter middle","简略描述":"S, pmbM"},{"ID":"4256","标识":"NGC4256","M标识":"NGC4256","拓展名":"","组件":"","Class":"II 846","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h18m42.8s","赤经D(J2000)":"12.31188888888889","赤纬(J2000)":"+65h53m54s","赤纬D(J2000)":"65.89833333333334","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"4.5","短轴(分)":"0.8","方位角":"42","详细描述":"","简略描述":"pB, L, cE 38°, bMBN"},{"ID":"4257","标识":"NGC4257","M标识":"NGC4257","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m6.5s","赤经D(J2000)":"12.318472222222223","赤纬(J2000)":"+5h43m34s","赤纬D(J2000)":"5.726111111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"78","详细描述":"","简略描述":"vF, pS, R, * 18 s 2'"},{"ID":"4258","标识":"NGC4258","M标识":"M106","拓展名":"","组件":"","Class":"V 43","业余排名":"1","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h18m57.8s","赤经D(J2000)":"12.316055555555556","赤纬(J2000)":"+47h18m25s","赤纬D(J2000)":"47.30694444444444","可见光星等V":"8.4","摄影(蓝光)星等B":"9.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"18.6","短轴(分)":"7.2","方位角":"150","详细描述":"very bright, very large, very much extended 0°, suddenly brighter middle and bright nucleus","简略描述":"vB, vL, vmE 0°, sbMBN"},{"ID":"4259","标识":"NGC4259","M标识":"NGC4259","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m22.1s","赤经D(J2000)":"12.322805555555556","赤纬(J2000)":"+5h22m37s","赤纬D(J2000)":"5.376944444444444","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"143","详细描述":"faint, pretty small, round","简略描述":"F, pS, R"},{"ID":"4260","标识":"NGC4260","M标识":"NGC4260","拓展名":"","组件":"","Class":"II 138","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m22.2s","赤经D(J2000)":"12.322833333333334","赤纬(J2000)":"+6h5m54s","赤纬D(J2000)":"6.098333333333333","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.7","短轴(分)":"1.3","方位角":"58","详细描述":"pretty bright, extended, pretty suddenly brighter middle","简略描述":"pB, E, psbM"},{"ID":"4261","标识":"NGC4261","M标识":"NGC4261","拓展名":"","组件":"","Class":"II 139","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m23.1s","赤经D(J2000)":"12.323083333333333","赤纬(J2000)":"+5h49m28s","赤纬D(J2000)":"5.8244444444444445","可见光星等V":"10.4","摄影(蓝光)星等B":"11.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"4.1","短轴(分)":"3.6","方位角":"160","详细描述":"pretty bright, pretty small, round, gradually brighter middle","简略描述":"pB, pS, R, gbM"},{"ID":"4262","标识":"NGC4262","M标识":"NGC4262","拓展名":"","组件":"","Class":"II 110","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h19m30.6s","赤经D(J2000)":"12.325166666666666","赤纬(J2000)":"+14h52m40s","赤纬D(J2000)":"14.877777777777778","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"120","详细描述":"bright, small, round, mottled but not resolved","简略描述":"B, S, R, r"},{"ID":"4263","标识":"NGC4263","M标识":"NGC4263","拓展名":"","组件":"","Class":"III 535","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h19m42.2s","赤经D(J2000)":"12.328388888888888","赤纬(J2000)":"-12h13m32s","赤纬D(J2000)":"-12.225555555555555","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"125","详细描述":"faint, large, extended, very gradually brighter middle, western of 2","简略描述":"vF, pL, iF"},{"ID":"4264","标识":"NGC4264","M标识":"NGC4264","拓展名":"","组件":"","Class":"II 140","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m35.6s","赤经D(J2000)":"12.326555555555556","赤纬(J2000)":"+5h50m49s","赤纬D(J2000)":"5.8469444444444445","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"123","详细描述":"faint, pretty small, round, gradually brighter middle","简略描述":"F, pS, R, gbM"},{"ID":"4265","标识":"NGC4265","M标识":"NGC4265","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h19m42.2s","赤经D(J2000)":"12.328388888888888","赤纬(J2000)":"-12h13m32s","赤纬D(J2000)":"-12.225555555555555","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"125","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"4266","标识":"NGC4266","M标识":"NGC4266","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m42.1s","赤经D(J2000)":"12.32836111111111","赤纬(J2000)":"+5h32m17s","赤纬D(J2000)":"5.538055555555555","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"0.4","方位角":"76","详细描述":"pretty faint","简略描述":"pF"},{"ID":"4267","标识":"NGC4267","M标识":"NGC4267","拓展名":"","组件":"","Class":"II 166","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m45.3s","赤经D(J2000)":"12.32925","赤纬(J2000)":"+12h47m54s","赤纬D(J2000)":"12.798333333333334","可见光星等V":"10.9","摄影(蓝光)星等B":"11.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3","短轴(分)":"2.8","方位角":"33","详细描述":"pretty bright, very small, round, very suddenly much brighter middle","简略描述":"pB, vS, R, vsmbM"},{"ID":"4268","标识":"NGC4268","M标识":"NGC4268","拓展名":"","组件":"","Class":"","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m47.1s","赤经D(J2000)":"12.329749999999999","赤纬(J2000)":"+5h17m3s","赤纬D(J2000)":"5.284166666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"48","详细描述":"","简略描述":"pF, S, 2nd of 6 neb"},{"ID":"4269","标识":"NGC4269","M标识":"NGC4269","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m49.2s","赤经D(J2000)":"12.330333333333334","赤纬(J2000)":"+6h0m55s","赤纬D(J2000)":"6.0152777777777775","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"137","详细描述":"","简略描述":"pF, S, R, * 9 f 1s.7, n 85\""},{"ID":"4270","标识":"NGC4270","M标识":"NGC4270","拓展名":"","组件":"","Class":"II 568","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m49.4s","赤经D(J2000)":"12.330388888888889","赤纬(J2000)":"+5h27m48s","赤纬D(J2000)":"5.463333333333334","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2","短轴(分)":"0.9","方位角":"110","详细描述":"pretty bright, small, round","简略描述":"pB, S, R"},{"ID":"4271","标识":"NGC4271","M标识":"NGC4271","拓展名":"","组件":"","Class":"II 804","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h19m32.7s","赤经D(J2000)":"12.32575","赤纬(J2000)":"+56h44m14s","赤纬D(J2000)":"56.73722222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"55","详细描述":"pretty bright, pretty large, irregular figure","简略描述":"pB, pL, iF"},{"ID":"4272","标识":"NGC4272","M标识":"NGC4272","拓展名":"","组件":"","Class":"III 299","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h19m47.6s","赤经D(J2000)":"12.329888888888888","赤纬(J2000)":"+30h20m20s","赤纬D(J2000)":"30.33888888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"120","详细描述":"considerably faint, small, irregularly round, gradually much brighter middle","简略描述":"cF, S, iR, gmbM"},{"ID":"4273","标识":"NGC4273","M标识":"NGC4273","拓展名":"","组件":"","Class":"II 569","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m56s","赤经D(J2000)":"12.332222222222223","赤纬(J2000)":"+5h20m37s","赤纬D(J2000)":"5.343611111111111","可见光星等V":"11.9","摄影(蓝光)星等B":"12.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.3","短轴(分)":"1.5","方位角":"10","详细描述":"pretty bright, large, extended, gradually brighter middle","简略描述":"pB, L, E, gbM"},{"ID":"4274","标识":"NGC4274","M标识":"NGC4274","拓展名":"","组件":"","Class":"I 75","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h19m50.8s","赤经D(J2000)":"12.330777777777778","赤纬(J2000)":"+29h36m49s","赤纬D(J2000)":"29.613611111111112","可见光星等V":"10.4","摄影(蓝光)星等B":"11.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"6.8","短轴(分)":"2.4","方位角":"102","详细描述":"very bright, very large, extended 90°, much brighter middle and nucleus","简略描述":"vB, vL, E 90°, mbMN"},{"ID":"4275","标识":"NGC4275","M标识":"NGC4275","拓展名":"","组件":"","Class":"II 376","业余排名":"10","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h19m52.6s","赤经D(J2000)":"12.331277777777778","赤纬(J2000)":"+27h37m16s","赤纬D(J2000)":"27.621111111111112","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"1","方位角":"80","详细描述":"faint, small, very little extended, gradually brighter middle, 15th magnitude star near","简略描述":"F, S, vlE, gbM, * 15 nr"},{"ID":"4276","标识":"NGC4276","M标识":"NGC4276","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"浮士德V023","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m7.7s","赤经D(J2000)":"12.335472222222222","赤纬(J2000)":"+7h41m29s","赤纬D(J2000)":"7.6913888888888895","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"3","详细描述":"pretty faint, pretty large","简略描述":"pF, pL"},{"ID":"4277","标识":"NGC4277","M标识":"NGC4277","拓展名":"","组件":"","Class":"II 570","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m3.6s","赤经D(J2000)":"12.334333333333333","赤纬(J2000)":"+5h20m31s","赤纬D(J2000)":"5.341944444444444","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"141","详细描述":"very faint, extremely small","简略描述":"vF, eS"},{"ID":"4278","标识":"NGC4278","M标识":"NGC4278","拓展名":"","组件":"","Class":"I 90, II 322","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m6.7s","赤经D(J2000)":"12.335194444444445","赤纬(J2000)":"+29h16m49s","赤纬D(J2000)":"29.280277777777776","可见光星等V":"10.2","摄影(蓝光)星等B":"11.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.8","短轴(分)":"3.8","方位角":"","详细描述":"very bright, pretty large, round, much brighter middle, mottled but not resolved, 1st of 3","简略描述":"vB, pL, R, mbM, r, 1st of 3"},{"ID":"4279","标识":"NGC4279","M标识":"NGC4279","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m24.9s","赤经D(J2000)":"12.340250000000001","赤纬(J2000)":"-11h39m58s","赤纬D(J2000)":"-11.666111111111112","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"35","详细描述":"most extremely faint, very small, round","简略描述":"eeF, vS, R"},{"ID":"4280","标识":"NGC4280","M标识":"NGC4280","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m31.9s","赤经D(J2000)":"12.342194444444445","赤纬(J2000)":"-11h39m9s","赤纬D(J2000)":"-11.6525","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, very small, round","简略描述":"eeF, vS, R"},{"ID":"4281","标识":"NGC4281","M标识":"NGC4281","拓展名":"","组件":"","Class":"II 571, II 573","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m21.6s","赤经D(J2000)":"12.339333333333334","赤纬(J2000)":"+5h23m11s","赤纬D(J2000)":"5.386388888888889","可见光星等V":"11.3","摄影(蓝光)星等B":"12.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3","短轴(分)":"1.6","方位角":"88","详细描述":"bright, very large, round, pretty gradually brighter middle","简略描述":"B, vL, R, pgbM"},{"ID":"4282","标识":"NGC4282","M标识":"NGC4282","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m24.2s","赤经D(J2000)":"12.340055555555557","赤纬(J2000)":"+5h34m24s","赤纬D(J2000)":"5.573333333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"105","详细描述":"pretty faint","简略描述":"pF"},{"ID":"4283","标识":"NGC4283","M标识":"NGC4283","拓展名":"","组件":"","Class":"II 323, II 377","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m20.6s","赤经D(J2000)":"12.339055555555555","赤纬(J2000)":"+29h18m39s","赤纬D(J2000)":"29.310833333333335","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"bright, small, round, brighter middle, 2nd of 3","简略描述":"B, S, R, bM, 2nd of 3"},{"ID":"4284","标识":"NGC4284","M标识":"NGC4284","拓展名":"","组件":"","Class":"III 798","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h20m12.8s","赤经D(J2000)":"12.33688888888889","赤纬(J2000)":"+58h5m36s","赤纬D(J2000)":"58.093333333333334","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"2.5","短轴(分)":"1.2","方位角":"102","详细描述":"considerably faint, a little extended, western of 2","简略描述":"cF, lE, p of 2"},{"ID":"4285","标识":"NGC4285","M标识":"NGC4285","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m39.8s","赤经D(J2000)":"12.34438888888889","赤纬(J2000)":"-11h38m32s","赤纬D(J2000)":"-11.642222222222221","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"50","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"4286","标识":"NGC4286","M标识":"NGC4286","拓展名":"","组件":"","Class":"III 300","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m42.1s","赤经D(J2000)":"12.345027777777778","赤纬(J2000)":"+29h20m44s","赤纬D(J2000)":"29.345555555555553","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"150","详细描述":"very faint, 3rd of 3","简略描述":"vF, 3rd of 3"},{"ID":"4287","标识":"NGC4287","M标识":"NGC4287","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m48.4s","赤经D(J2000)":"12.346777777777778","赤纬(J2000)":"+5h38m26s","赤纬D(J2000)":"5.640555555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.2","短轴(分)":"0.2","方位角":"72","详细描述":"pretty faint","简略描述":"pF"},{"ID":"4288","标识":"NGC4288","M标识":"NGC4288","拓展名":"","组件":"","Class":"III 726","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h20m38s","赤经D(J2000)":"12.34388888888889","赤纬(J2000)":"+46h17m40s","赤纬D(J2000)":"46.294444444444444","可见光星等V":"12.9","摄影(蓝光)星等B":"13.3","B-V":"0.4","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.2","短轴(分)":"1.6","方位角":"130","详细描述":"very faint, pretty small, round, very gradually brighter middle, mottled but not resolved","简略描述":"vF, pS, R, vgbM, r"},{"ID":"4289","标识":"NGC4289","M标识":"NGC4289","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h21m2.4s","赤经D(J2000)":"12.350666666666667","赤纬(J2000)":"+3h43m22s","赤纬D(J2000)":"3.722777777777778","可见光星等V":"14","摄影(蓝光)星等B":"14.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"3.9","短轴(分)":"0.4","方位角":"1","详细描述":"","简略描述":"vF, S, * 8.5 12s f"},{"ID":"4290","标识":"NGC4290","M标识":"NGC4290","拓展名":"","组件":"","Class":"II 805","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h20m47.5s","赤经D(J2000)":"12.346527777777778","赤纬(J2000)":"+58h5m33s","赤纬D(J2000)":"58.0925","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"1.6","方位角":"90","详细描述":"pretty bright, large, round, gradually much brighter middle","简略描述":"pB, L, R, gmbM"},{"ID":"4291","标识":"NGC4291","M标识":"NGC4291","拓展名":"","组件":"","Class":"I 275","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h20m17.3s","赤经D(J2000)":"12.33813888888889","赤纬(J2000)":"+75h22m16s","赤纬D(J2000)":"75.3711111111111","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2","短轴(分)":"1.7","方位角":"124","详细描述":"pretty bright, very small, round, a little brighter middle, 3 stars to east","简略描述":"pB, vS, R, lbM, 3 st f"},{"ID":"4292","标识":"NGC4292","M标识":"NGC4292","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h21m16.4s","赤经D(J2000)":"12.354555555555555","赤纬(J2000)":"+4h35m46s","赤纬D(J2000)":"4.596111111111111","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"7","详细描述":"","简略描述":"F, S, R, vglbM, * 9 np 72\""},{"ID":"4293","标识":"NGC4293","M标识":"NGC4293","拓展名":"","组件":"","Class":"V 5","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m12.9s","赤经D(J2000)":"12.353583333333333","赤纬(J2000)":"+18h22m58s","赤纬D(J2000)":"18.38277777777778","可见光星等V":"10.4","摄影(蓝光)星等B":"11.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"5.6","短轴(分)":"2.6","方位角":"72","详细描述":"faint, very large, extended, little brighter middle, mottled but not resolved","简略描述":"F, vL, E, lbM, r"},{"ID":"4294","标识":"NGC4294","M标识":"NGC4294","拓展名":"","组件":"","Class":"II 61","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h21m17.8s","赤经D(J2000)":"12.354944444444444","赤纬(J2000)":"+11h30m35s","赤纬D(J2000)":"11.509722222222223","可见光星等V":"12.1","摄影(蓝光)星等B":"12.5","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.2","短轴(分)":"1.2","方位角":"155","详细描述":"","简略描述":"F, L, mE 135° ±, biN, p of 2"},{"ID":"4295","标识":"NGC4295","M标识":"NGC4295","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m9.7s","赤经D(J2000)":"12.352694444444444","赤纬(J2000)":"+28h9m56s","赤纬D(J2000)":"28.165555555555553","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"165","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"4296","标识":"NGC4296","M标识":"NGC4296","拓展名":"","组件":"","Class":"III 92","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h21m28.4s","赤经D(J2000)":"12.357888888888889","赤纬(J2000)":"+6h39m13s","赤纬D(J2000)":"6.653611111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"15","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4297","标识":"NGC4297","M标识":"NGC4297","拓展名":"","组件":"","Class":"III 93","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h21m27.4s","赤经D(J2000)":"12.35761111111111","赤纬(J2000)":"+6h40m17s","赤纬D(J2000)":"6.671388888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"168","详细描述":"extremely faint, extremely small, (not found by d'Arrest)","简略描述":"eF, eS, (d'A not found)"},{"ID":"4298","标识":"NGC4298","M标识":"NGC4298","拓展名":"","组件":"","Class":"II 111","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m32.9s","赤经D(J2000)":"12.35913888888889","赤纬(J2000)":"+14h36m24s","赤纬D(J2000)":"14.606666666666666","可见光星等V":"11.3","摄影(蓝光)星等B":"12","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.2","短轴(分)":"1.9","方位角":"140","详细描述":"faint, large, extended, very gradually brighter middle, western of 2","简略描述":"F, L, E, vgbM, p of 2"},{"ID":"4299","标识":"NGC4299","M标识":"NGC4299","拓展名":"","组件":"","Class":"II 62","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h21m40.5s","赤经D(J2000)":"12.36125","赤纬(J2000)":"+11h30m5s","赤纬D(J2000)":"11.501388888888888","可见光星等V":"12.5","摄影(蓝光)星等B":"12.9","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"26","详细描述":"faint, large, a little extended, very gradually brighter middle, eastern of 2","简略描述":"F, L, lE, vgbM, f of 2"},{"ID":"4300","标识":"NGC4300","M标识":"NGC4300","拓展名":"","组件":"","Class":"II 572","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h21m41.3s","赤经D(J2000)":"12.361472222222222","赤纬(J2000)":"+5h23m5s","赤纬D(J2000)":"5.384722222222223","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"42","详细描述":"faint, a little extended, very gradually brighter middle","简略描述":"F, lE, vgbM"},{"ID":"4301","标识":"NGC4301","M标识":"NGC4301","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m27.2s","赤经D(J2000)":"12.374222222222222","赤纬(J2000)":"+4h33m57s","赤纬D(J2000)":"4.565833333333333","可见光星等V":"13","摄影(蓝光)星等B":"13.4","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"69","详细描述":"faint, considerably large, a little extended, northern of 2","简略描述":"F, E, 10' nf h 1196"},{"ID":"4302","标识":"NGC4302","M标识":"NGC4302","拓展名":"","组件":"","Class":"II 112","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m42.2s","赤经D(J2000)":"12.361722222222221","赤纬(J2000)":"+14h35m54s","赤纬D(J2000)":"14.598333333333334","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"5.3","短轴(分)":"1","方位角":"178","详细描述":"large, very much extended 177°, eastern of 2","简略描述":"L, vmE 177°, f of 2"},{"ID":"4303","标识":"NGC4303","M标识":"M61","拓展名":"","组件":"","Class":"I 139","业余排名":"1","中文名":"胖螺旋星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h21m54.9s","赤经D(J2000)":"12.36525","赤纬(J2000)":"+4h28m22s","赤纬D(J2000)":"4.472777777777778","可见光星等V":"9.7","摄影(蓝光)星等B":"10.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"6.5","短轴(分)":"5.9","方位角":"162","详细描述":"large, very much extended 177°, eastern of 2","简略描述":"vB, vL, vsbM *, biN"},{"ID":"4304","标识":"NGC4304","M标识":"NGC4304","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h22m12.7s","赤经D(J2000)":"12.370194444444445","赤纬(J2000)":"-33h29m5s","赤纬D(J2000)":"-33.484722222222224","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3","短轴(分)":"2.4","方位角":"12","详细描述":"very faint, very large, round, very gradually a very little brighter middle, mottled but not resolved","简略描述":"vF, vL, R, vgvlbM, r"},{"ID":"4305","标识":"NGC4305","M标识":"NGC4305","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m3.6s","赤经D(J2000)":"12.367666666666667","赤纬(J2000)":"+12h44m27s","赤纬D(J2000)":"12.740833333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.2","短轴(分)":"1.2","方位角":"32","详细描述":"very faint, round","简略描述":"vF, R"},{"ID":"4306","标识":"NGC4306","M标识":"NGC4306","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m4.2s","赤经D(J2000)":"12.367833333333333","赤纬(J2000)":"+12h47m15s","赤纬D(J2000)":"12.7875","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"140","详细描述":"","简略描述":"vF, pL, R, h 1203 sp"},{"ID":"4307","标识":"NGC4307","M标识":"NGC4307","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m5.2s","赤经D(J2000)":"12.368111111111112","赤纬(J2000)":"+9h2m31s","赤纬D(J2000)":"9.041944444444445","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.5","短轴(分)":"0.8","方位角":"24","详细描述":"","简略描述":"pF, L, mE, 3 knots"},{"ID":"4308","标识":"NGC4308","M标识":"NGC4308","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m56.8s","赤经D(J2000)":"12.365777777777778","赤纬(J2000)":"+30h4m27s","赤纬D(J2000)":"30.074166666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"30","详细描述":"","简略描述":"vF, S, vF st inv, np I 76"},{"ID":"4309","标识":"NGC4309","M标识":"NGC4309","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m12.3s","赤经D(J2000)":"12.370083333333334","赤纬(J2000)":"+7h8m41s","赤纬D(J2000)":"7.144722222222223","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.8","短轴(分)":"1","方位角":"85","详细描述":"","简略描述":"F, S, * 11 f 12s"},{"ID":"4310","标识":"NGC4310","M标识":"NGC4310","拓展名":"","组件":"","Class":"II 378","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m26.4s","赤经D(J2000)":"12.374","赤纬(J2000)":"+29h12m29s","赤纬D(J2000)":"29.208055555555553","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2","短轴(分)":"1","方位角":"161","详细描述":"faint, considerably large, a little extended, northern of 2","简略描述":"F, cL, lE, n of 2"},{"ID":"4311","标识":"NGC4311","M标识":"NGC4311","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m26.3s","赤经D(J2000)":"12.373972222222223","赤纬(J2000)":"+29h12m16s","赤纬D(J2000)":"29.204444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, southern of 2","简略描述":"F, s of 2"},{"ID":"4312","标识":"NGC4312","M标识":"NGC4312","拓展名":"","组件":"","Class":"II 628","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m31.4s","赤经D(J2000)":"12.375388888888889","赤纬(J2000)":"+15h32m17s","赤纬D(J2000)":"15.538055555555555","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"4.6","短轴(分)":"1.1","方位角":"170","详细描述":"pretty bright, considerably large, extended, gradually brighter middle","简略描述":"pB, cL, E, gbM"},{"ID":"4313","标识":"NGC4313","M标识":"NGC4313","拓展名":"","组件":"","Class":"II 63","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m38.3s","赤经D(J2000)":"12.377305555555557","赤纬(J2000)":"+11h48m4s","赤纬D(J2000)":"11.801111111111112","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.8","短轴(分)":"0.9","方位角":"143","详细描述":"very faint, large, extended 135°±, mottled but not resolved","简略描述":"vF, L, E 135° ±, r"},{"ID":"4314","标识":"NGC4314","M标识":"NGC4314","拓展名":"","组件":"","Class":"I 76","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m31.8s","赤经D(J2000)":"12.3755","赤纬(J2000)":"+29h53m45s","赤纬D(J2000)":"29.895833333333332","可见光星等V":"10.6","摄影(蓝光)星等B":"11.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4.2","短轴(分)":"3.7","方位角":"69","详细描述":"considerably bright, large, extended 150°±, suddenly brighter middle, star to northwest","简略描述":"cB, L, E 150° ±, sbM, * np"},{"ID":"4315","标识":"NGC4315","M标识":"NGC4315","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m45.3s","赤经D(J2000)":"12.37925","赤纬(J2000)":"+9h18m20s","赤纬D(J2000)":"9.305555555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4316","标识":"NGC4316","M标识":"NGC4316","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m42.1s","赤经D(J2000)":"12.378361111111111","赤纬(J2000)":"+9h19m57s","赤纬D(J2000)":"9.3325","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.5","短轴(分)":"0.5","方位角":"113","详细描述":"very faint, small, much extended, 2 knots","简略描述":"vF, S, mE, 2 knots"},{"ID":"4317","标识":"NGC4317","M标识":"NGC4317","拓展名":"","组件":"","Class":"II 324","业余排名":"15","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m41s","赤经D(J2000)":"12.378055555555555","赤纬(J2000)":"+31h2m12s","赤纬D(J2000)":"31.03666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small","简略描述":"F, S"},{"ID":"4318","标识":"NGC4318","M标识":"NGC4318","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m43.2s","赤经D(J2000)":"12.378666666666668","赤纬(J2000)":"+8h11m57s","赤纬D(J2000)":"8.199166666666667","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"65","详细描述":"extremely faint, 8th magnitude star 5' north","简略描述":"eF, * 8 n 5'"},{"ID":"4319","标识":"NGC4319","M标识":"NGC4319","拓展名":"","组件":"","Class":"I 276","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h21m43.9s","赤经D(J2000)":"12.362194444444444","赤纬(J2000)":"+75h19m21s","赤纬D(J2000)":"75.32249999999999","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.8","短轴(分)":"2.1","方位角":"160","详细描述":"pretty bright, pretty small, very little extended, suddenly brighter middle","简略描述":"pB, pS, vlE, sbM"},{"ID":"4320","标识":"NGC4320","M标识":"NGC4320","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m57.8s","赤经D(J2000)":"12.382722222222222","赤纬(J2000)":"+10h32m57s","赤纬D(J2000)":"10.549166666666666","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.6","方位角":"170","详细描述":"faint, very small, southwestern of 2","简略描述":"F, vS, sp of 2"},{"ID":"4321","标识":"NGC4321","M标识":"M100","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"吹风机星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m54.9s","赤经D(J2000)":"12.381916666666667","赤纬(J2000)":"+15h49m22s","赤纬D(J2000)":"15.822777777777777","可见光星等V":"9.4","摄影(蓝光)星等B":"10.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"7.5","短轴(分)":"6.1","方位角":"30","详细描述":"a most remarkable object, pretty faint, very large, round, very gradually then pretty suddenly bright middle and mottled but not resolved nucleus; (per Leavenworth) 2-branched spiral","简略描述":"!! pF, vL, R, vg, psbMrN (L) 2-branched spiral"},{"ID":"4322","标识":"NGC4322","M标识":"NGC4322","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m1.7s","赤经D(J2000)":"12.383805555555556","赤纬(J2000)":"+15h54m19s","赤纬D(J2000)":"15.905277777777778","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"100","详细描述":"2 (objects), very faint, north of M100","简略描述":"2, vF, n of M 100"},{"ID":"4323","标识":"NGC4323","M标识":"NGC4323","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m16s","赤经D(J2000)":"12.387777777777778","赤纬(J2000)":"+15h54m7s","赤纬D(J2000)":"15.901944444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"2 (objects), very faint, north of M100","简略描述":"2, vF, n of M 100"},{"ID":"4324","标识":"NGC4324","M标识":"NGC4324","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m6s","赤经D(J2000)":"12.385","赤纬(J2000)":"+5h15m0s","赤纬D(J2000)":"5.25","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.9","短轴(分)":"1.2","方位角":"53","详细描述":"","简略描述":"pB, R or lE, bM"},{"ID":"4325","标识":"NGC4325","M标识":"NGC4325","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"室女座星系团","类型":"Gxy","含重复类型":"Dup","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m6.6s","赤经D(J2000)":"12.385166666666667","赤纬(J2000)":"+10h37m18s","赤纬D(J2000)":"10.621666666666668","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"5","详细描述":"very faint, very small, irregularly round, northeastern of 2","简略描述":"vF, vS, iR, nf of 2"},{"ID":"4326","标识":"NGC4326","M标识":"NGC4326","拓展名":"","组件":"","Class":"II 141","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m11.6s","赤经D(J2000)":"12.386555555555555","赤纬(J2000)":"+6h4m21s","赤纬D(J2000)":"6.0725","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"108","详细描述":"very faint, small, round, brighter middle, 1st of 3","简略描述":"vF, S, R, bM, 1st of 3"},{"ID":"4327","标识":"NGC4327","M标识":"NGC4327","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m11.8s","赤经D(J2000)":"12.38661111111111","赤纬(J2000)":"+15h45m6s","赤纬D(J2000)":"15.751666666666667","可见光星等V":"99","摄影(蓝光)星等B":"14.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, south of (WH) II 84","简略描述":"vF, s of II 84"},{"ID":"4328","标识":"NGC4328","M标识":"NGC4328","拓展名":"","组件":"","Class":"II 84","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m20s","赤经D(J2000)":"12.38888888888889","赤纬(J2000)":"+15h49m13s","赤纬D(J2000)":"15.820277777777777","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"90","详细描述":"faint, small, round, mottled but not resolved","简略描述":"F, S, R, r"},{"ID":"4329","标识":"NGC4329","M标识":"NGC4329","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h23m20.7s","赤经D(J2000)":"12.389083333333334","赤纬(J2000)":"-12h33m29s","赤纬D(J2000)":"-12.558055555555557","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"50","详细描述":"very faint, very small, round, brighter middle and nucleus","简略描述":"vF, vS, R, bMN"},{"ID":"4330","标识":"NGC4330","M标识":"NGC4330","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m17s","赤经D(J2000)":"12.388055555555555","赤纬(J2000)":"+11h22m7s","赤纬D(J2000)":"11.368611111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"4.5","短轴(分)":"0.9","方位角":"59","详细描述":"very faint, large, much extended","简略描述":"vF, L, mE"},{"ID":"4331","标识":"NGC4331","M标识":"NGC4331","拓展名":"","组件":"","Class":"III 942","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h22m35.7s","赤经D(J2000)":"12.376583333333334","赤纬(J2000)":"+76h10m7s","赤纬D(J2000)":"76.16861111111112","可见光星等V":"14","摄影(蓝光)星等B":"14.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.2","短轴(分)":"0.4","方位角":"2","详细描述":"extremely faint, extended 0°±","简略描述":"eF, E 0° ±"},{"ID":"4332","标识":"NGC4332","M标识":"NGC4332","拓展名":"","组件":"","Class":"II 847","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h22m46.7s","赤经D(J2000)":"12.37963888888889","赤纬(J2000)":"+65h50m39s","赤纬D(J2000)":"65.84416666666667","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.1","短轴(分)":"1.5","方位角":"130","详细描述":"pretty faint, small, very little extended, very gradually brighter middle","简略描述":"pF, S, vlE, vgbM"},{"ID":"4333","标识":"NGC4333","M标识":"NGC4333","拓展名":"","组件":"","Class":"II 142","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m22.2s","赤经D(J2000)":"12.3895","赤纬(J2000)":"+6h2m28s","赤纬D(J2000)":"6.041111111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"171","详细描述":"faint, pretty small, round, brighter middle, 2nd of 3","简略描述":"F, pS, R, bM, 2nd of 3"},{"ID":"4334","标识":"NGC4334","M标识":"NGC4334","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m24.1s","赤经D(J2000)":"12.390027777777778","赤纬(J2000)":"+7h28m24s","赤纬D(J2000)":"7.473333333333334","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.2","短轴(分)":"1.1","方位角":"135","详细描述":"pretty faint, small, round, star very near","简略描述":"pF, S, R, * v nr"},{"ID":"4335","标识":"NGC4335","M标识":"NGC4335","拓展名":"","组件":"","Class":"II 806","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h23m1.9s","赤经D(J2000)":"12.383861111111111","赤纬(J2000)":"+58h26m40s","赤纬D(J2000)":"58.44444444444444","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"145","详细描述":"pretty bright, small, extended, gradually brighter middle","简略描述":"pB, S, E, gbM"},{"ID":"4336","标识":"NGC4336","M标识":"NGC4336","拓展名":"","组件":"","Class":"II 406","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m29.7s","赤经D(J2000)":"12.391583333333333","赤纬(J2000)":"+19h25m37s","赤纬D(J2000)":"19.426944444444445","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2","短轴(分)":"0.9","方位角":"162","详细描述":"very faint, pretty large, irregularly round, possibly binuclear","简略描述":"vF, pL, iR, biN ?"},{"ID":"4337","标识":"NGC4337","M标识":"NGC4337","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3p","星座(Zh)":"南十字座","星座(En)":"CRU","赤经(J2000)":"12h24m3.2s","赤经D(J2000)":"12.40088888888889","赤纬(J2000)":"-58h7m25s","赤纬D(J2000)":"-58.12361111111111","可见光星等V":"8.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, a little compressed, stars from 12th to 14th magnitude","简略描述":"Cl, pRi, lC, st 12…14"},{"ID":"4338","标识":"NGC4338","M标识":"NGC4338","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m26.4s","赤经D(J2000)":"12.374","赤纬(J2000)":"+29h12m29s","赤纬D(J2000)":"29.208055555555553","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2","短轴(分)":"1","方位角":"161","详细描述":"faint, considerably large, a little extended, northern of 2","简略描述":"vF, lE, com"},{"ID":"4339","标识":"NGC4339","M标识":"NGC4339","拓展名":"","组件":"","Class":"II 143","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m34.9s","赤经D(J2000)":"12.393027777777776","赤纬(J2000)":"+6h4m55s","赤纬D(J2000)":"6.081944444444444","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"1.7","方位角":"0","详细描述":"bright, pretty large, round, brighter middle, 3rd of 3","简略描述":"B, pL, R, bM, 3rd of 3"},{"ID":"4340","标识":"NGC4340","M标识":"NGC4340","拓展名":"","组件":"","Class":"II 85","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m35.2s","赤经D(J2000)":"12.39311111111111","赤纬(J2000)":"+16h43m22s","赤纬D(J2000)":"16.722777777777775","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3","短轴(分)":"2","方位角":"102","详细描述":"pretty bright, small, round, pretty suddenly brighter middle","简略描述":"pB, S, R, psbM"},{"ID":"4341","标识":"NGC4341","M标识":"NGC4341","拓展名":"","组件":"","Class":"III 95","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m53.1s","赤经D(J2000)":"12.398083333333332","赤纬(J2000)":"+7h6m25s","赤纬D(J2000)":"7.106944444444444","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"0.6","方位角":"96","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"4342","标识":"NGC4342","M标识":"NGC4342","拓展名":"","组件":"","Class":"III 96","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m39.1s","赤经D(J2000)":"12.394194444444445","赤纬(J2000)":"+7h3m16s","赤纬D(J2000)":"7.054444444444444","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"168","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"4343","标识":"NGC4343","M标识":"NGC4343","拓展名":"","组件":"","Class":"III 94","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m38.7s","赤经D(J2000)":"12.394083333333333","赤纬(J2000)":"+6h57m16s","赤纬D(J2000)":"6.954444444444444","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.3","短轴(分)":"0.7","方位角":"133","详细描述":"pretty faint, small, elongated, possibly double","简略描述":"pF, S, E, ? D"},{"ID":"4344","标识":"NGC4344","M标识":"NGC4344","拓展名":"","组件":"","Class":"III 31","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m37.5s","赤经D(J2000)":"12.393749999999999","赤纬(J2000)":"+17h32m30s","赤纬D(J2000)":"17.541666666666668","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"90","详细描述":"very faint, pretty small, round, very gradually a little brighter middle, in a triangle with 2 stars","简略描述":"vF, pS, R, vglbM, Δ 2 st"},{"ID":"4345","标识":"NGC4345","M标识":"NGC4345","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h21m43.9s","赤经D(J2000)":"12.362194444444444","赤纬(J2000)":"+75h19m21s","赤纬D(J2000)":"75.32249999999999","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.8","短轴(分)":"2.1","方位角":"160","详细描述":"a most remarkable object, pretty faint, very large, round, very gradually then pretty suddenly bright middle and mottled but not resolved nucleus; (per Leavenworth) 2-branched spiral","简略描述":"F, pL, gbM"},{"ID":"4346","标识":"NGC4346","M标识":"NGC4346","拓展名":"","组件":"","Class":"I 210","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h23m27.9s","赤经D(J2000)":"12.391083333333333","赤纬(J2000)":"+46h59m38s","赤纬D(J2000)":"46.99388888888889","可见光星等V":"11.2","摄影(蓝光)星等B":"12.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"3.2","短轴(分)":"1.3","方位角":"99","详细描述":"","简略描述":"vF, S, mE 100° ±, vsmbMBN"},{"ID":"4347","标识":"NGC4347","M标识":"NGC4347","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m52.3s","赤经D(J2000)":"12.39786111111111","赤纬(J2000)":"-3h14m25s","赤纬D(J2000)":"-3.240277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"No description","简略描述":"No description"},{"ID":"4348","标识":"NGC4348","M标识":"NGC4348","拓展名":"","组件":"","Class":"II 625","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m53.9s","赤经D(J2000)":"12.398305555555556","赤纬(J2000)":"-3h26m33s","赤纬D(J2000)":"-3.4425000000000003","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.2","短轴(分)":"0.7","方位角":"38","详细描述":"","简略描述":"F, pL, E 70° ±, vlbM"},{"ID":"4349","标识":"NGC4349","M标识":"NGC4349","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2m","星座(Zh)":"南十字座","星座(En)":"CRU","赤经(J2000)":"12h24m6s","赤经D(J2000)":"12.401666666666667","赤纬(J2000)":"-61h52m13s","赤纬D(J2000)":"-61.87027777777778","可见光星等V":"7.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, very bright, very large, a little compressed, stars from 12th to 14th magnitude","简略描述":"Cl, vB, vL, lC, st 12…14"},{"ID":"4350","标识":"NGC4350","M标识":"NGC4350","拓展名":"","组件":"","Class":"II 86","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m57.8s","赤经D(J2000)":"12.399388888888888","赤纬(J2000)":"+16h41m36s","赤纬D(J2000)":"16.693333333333335","可见光星等V":"11","摄影(蓝光)星等B":"11.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.9","短轴(分)":"1.6","方位角":"28","详细描述":"considerably bright, very small, much extended, very suddenly brighter middle","简略描述":"cB, vS, mE, vsbM"},{"ID":"4351","标识":"NGC4351","M标识":"NGC4351","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m1.5s","赤经D(J2000)":"12.400416666666667","赤纬(J2000)":"+12h12m17s","赤纬D(J2000)":"12.204722222222221","可见光星等V":"12.6","摄影(蓝光)星等B":"13","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2","短轴(分)":"1.4","方位角":"80","详细描述":"very bright, pretty large, round, pretty suddenly bright middle, mottled but not resolved","简略描述":"F, pL, iR, bM"},{"ID":"4352","标识":"NGC4352","M标识":"NGC4352","拓展名":"","组件":"","Class":"II 64","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m4.9s","赤经D(J2000)":"12.401361111111111","赤纬(J2000)":"+11h13m4s","赤纬D(J2000)":"11.217777777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2","短轴(分)":"1","方位角":"102","详细描述":"considerably faint, considerably small, a little extended","简略描述":"cF, cS, lE"},{"ID":"4353","标识":"NGC4353","M标识":"NGC4353","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m0.2s","赤经D(J2000)":"12.400055555555555","赤纬(J2000)":"+7h47m3s","赤纬D(J2000)":"7.784166666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"75","详细描述":"no description","简略描述":"No description"},{"ID":"4354","标识":"NGC4354","M标识":"NGC4354","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m1.5s","赤经D(J2000)":"12.400416666666667","赤纬(J2000)":"+12h12m17s","赤纬D(J2000)":"12.204722222222221","可见光星等V":"12.6","摄影(蓝光)星等B":"13","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2","短轴(分)":"1.4","方位角":"80","详细描述":"most extremely faint, pretty large, very difficult","简略描述":"eeF, pL, v diffic"},{"ID":"4355","标识":"NGC4355","M标识":"NGC4355","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m54.6s","赤经D(J2000)":"12.448500000000001","赤纬(J2000)":"-0h52m40s","赤纬D(J2000)":"-0.8777777777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"59","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"4356","标识":"NGC4356","M标识":"NGC4356","拓展名":"","组件":"","Class":"III 481","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m14.6s","赤经D(J2000)":"12.404055555555557","赤纬(J2000)":"+8h32m13s","赤纬D(J2000)":"8.536944444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.8","短轴(分)":"0.5","方位角":"40","详细描述":"very faint","简略描述":"vF"},{"ID":"4357","标识":"NGC4357","M标识":"NGC4357","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h23m59.1s","赤经D(J2000)":"12.39975","赤纬(J2000)":"+48h46m48s","赤纬D(J2000)":"48.78","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3.7","短轴(分)":"1.3","方位角":"77","详细描述":"very bright, pretty large, round, brighter middle, star to northwest","简略描述":"F, pS, gbM (?=II 743)"},{"ID":"4358","标识":"NGC4358","M标识":"NGC4358","拓展名":"","组件":"","Class":"III 799","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h24m2.1s","赤经D(J2000)":"12.400583333333334","赤纬(J2000)":"+58h23m7s","赤纬D(J2000)":"58.38527777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.8","方位角":"170","详细描述":"extremely faint, extremely small, a little elongated","简略描述":"cF, cS, lE"},{"ID":"4359","标识":"NGC4359","M标识":"NGC4359","拓展名":"","组件":"","Class":"III 648","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m11.4s","赤经D(J2000)":"12.403166666666667","赤纬(J2000)":"+31h31m17s","赤纬D(J2000)":"31.52138888888889","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3.5","短轴(分)":"0.8","方位角":"108","详细描述":"considerably faint, pretty much extended 90°, very little brighter middle","简略描述":"cF, pmE 90°, vlbM"},{"ID":"4360","标识":"NGC4360","M标识":"NGC4360","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m21.8s","赤经D(J2000)":"12.406055555555556","赤纬(J2000)":"+9h17m35s","赤纬D(J2000)":"9.293055555555556","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"145","详细描述":"","简略描述":"F, F st inv, * 9.5 np"},{"ID":"4361","标识":"NGC4361","M标识":"NGC4361","拓展名":"","组件":"","Class":"I 65","业余排名":"5","中文名":"洒水器星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h24m30.8s","赤经D(J2000)":"12.408555555555555","赤纬(J2000)":"-18h47m3s","赤纬D(J2000)":"-18.784166666666668","可见光星等V":"10.9","摄影(蓝光)星等B":"10.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.1","短轴(分)":"","方位角":"","详细描述":"very bright, large, round, very suddenly much brighter middle and nucleus, mottled but not resolved","简略描述":"vB, L, R, vsmbMN, r"},{"ID":"4362","标识":"NGC4362","M标识":"NGC4362","拓展名":"","组件":"","Class":"III 801","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h24m11.3s","赤经D(J2000)":"12.40313888888889","赤纬(J2000)":"+58h21m39s","赤纬D(J2000)":"58.36083333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"39","详细描述":"very bright, pretty large, round, pretty suddenly bright middle, mottled but not resolved","简略描述":"vF, cS, R, r"},{"ID":"4363","标识":"NGC4363","M标识":"NGC4363","拓展名":"","组件":"","Class":"III 938","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h23m28.6s","赤经D(J2000)":"12.391277777777777","赤纬(J2000)":"+74h57m7s","赤纬D(J2000)":"74.95194444444445","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"extremely faint, pretty large, irregular figure","简略描述":"eF, pL, iF"},{"ID":"4364","标识":"NGC4364","M标识":"NGC4364","拓展名":"","组件":"","Class":"III 800","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h24m2.1s","赤经D(J2000)":"12.400583333333334","赤纬(J2000)":"+58h23m7s","赤纬D(J2000)":"58.38527777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.8","方位角":"170","详细描述":"considerably faint, considerably small, round","简略描述":"cF, cS, R"},{"ID":"4365","标识":"NGC4365","M标识":"NGC4365","拓展名":"","组件":"","Class":"I 30","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m28.2s","赤经D(J2000)":"12.407833333333334","赤纬(J2000)":"+7h19m3s","赤纬D(J2000)":"7.3175","可见光星等V":"9.6","摄影(蓝光)星等B":"10.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"6.9","短轴(分)":"5","方位角":"40","详细描述":"","简略描述":"cB, pL, vlE, gl, smbM"},{"ID":"4366","标识":"NGC4366","M标识":"NGC4366","拓展名":"","组件":"","Class":"III 97","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m47s","赤经D(J2000)":"12.413055555555555","赤纬(J2000)":"+7h21m10s","赤纬D(J2000)":"7.352777777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"51","详细描述":"extremely faint","简略描述":"eF"},{"ID":"4367","标识":"NGC4367","M标识":"NGC4367","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m35.1s","赤经D(J2000)":"12.40975","赤纬(J2000)":"+12h10m58s","赤纬D(J2000)":"12.182777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"4368","标识":"NGC4368","M标识":"NGC4368","拓展名":"","组件":"","Class":"III 38","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m6.6s","赤经D(J2000)":"12.385166666666667","赤纬(J2000)":"+10h37m18s","赤纬D(J2000)":"10.621666666666668","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"5","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4369","标识":"NGC4369","M标识":"NGC4369","拓展名":"","组件":"","Class":"I 166","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h24m36.4s","赤经D(J2000)":"12.410111111111112","赤纬(J2000)":"+39h22m58s","赤纬D(J2000)":"39.382777777777775","可见光星等V":"11.7","摄影(蓝光)星等B":"12.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.1","短轴(分)":"2","方位角":"127","详细描述":"considerably bright, small, round, much brighter middle and nucleus, mottled but not resolved","简略描述":"cB, S, R, mbMN, r"},{"ID":"4370","标识":"NGC4370","M标识":"NGC4370","拓展名":"","组件":"","Class":"II 144","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m55s","赤经D(J2000)":"12.415277777777778","赤纬(J2000)":"+7h26m40s","赤纬D(J2000)":"7.444444444444445","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"83","详细描述":"pretty faint, pretty small, a little extended, brighter middle","简略描述":"pF, pS, lE, bM"},{"ID":"4371","标识":"NGC4371","M标识":"NGC4371","拓展名":"","组件":"","Class":"I 22","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m55.4s","赤经D(J2000)":"12.41538888888889","赤纬(J2000)":"+11h42m15s","赤纬D(J2000)":"11.704166666666666","可见光星等V":"10.8","摄影(蓝光)星等B":"11.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"4","短轴(分)":"2.3","方位角":"95","详细描述":"bright, pretty small, round, gradually brighter middle","简略描述":"B, pS, R, gbM"},{"ID":"4372","标识":"NGC4372","M标识":"NGC4372","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"XII","星座(Zh)":"苍蝇座","星座(En)":"MUS","赤经(J2000)":"12h25m45.4s","赤经D(J2000)":"12.429277777777777","赤纬(J2000)":"-72h39m31s","赤纬D(J2000)":"-72.65861111111111","可见光星等V":"7.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a globular cluster, pretty faint, large, round, stars from 12th to 16th magnitude","简略描述":"globular, pF, L, R, st 12…16"},{"ID":"4373","标识":"NGC4373","M标识":"NGC4373","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h25m17.7s","赤经D(J2000)":"12.421583333333333","赤纬(J2000)":"-39h45m38s","赤纬D(J2000)":"-39.760555555555555","可见光星等V":"10.9","摄影(蓝光)星等B":"11.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.6","短轴(分)":"2.6","方位角":"43","详细描述":"pretty bright, small, round, pretty gradually very much brighter middle","简略描述":"pB, S, R, pgvmbM"},{"ID":"4374","标识":"NGC4374","M标识":"M84","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"马卡良星系链","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m3.6s","赤经D(J2000)":"12.417666666666666","赤纬(J2000)":"+12h53m13s","赤纬D(J2000)":"12.886944444444444","可见光星等V":"9.1","摄影(蓝光)星等B":"10.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"6.5","短轴(分)":"5.6","方位角":"135","详细描述":"very bright, pretty large, round, pretty suddenly bright middle, mottled but not resolved","简略描述":"vB, pL, R, psbM, r"},{"ID":"4375","标识":"NGC4375","M标识":"NGC4375","拓展名":"","组件":"","Class":"II 379","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab\/P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m0.4s","赤经D(J2000)":"12.416777777777778","赤纬(J2000)":"+28h33m31s","赤纬D(J2000)":"28.558611111111112","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"5","详细描述":"faint, small, round, brighter middle, star 90","简略描述":"F, S, R, bM, * nf 90\""},{"ID":"4376","标识":"NGC4376","M标识":"NGC4376","拓展名":"","组件":"","Class":"II 530","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m18.1s","赤经D(J2000)":"12.421694444444444","赤纬(J2000)":"+5h44m28s","赤纬D(J2000)":"5.7411111111111115","可见光星等V":"13.1","摄影(蓝光)星等B":"13.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"157","详细描述":"faint, small","简略描述":"F, S"},{"ID":"4377","标识":"NGC4377","M标识":"NGC4377","拓展名":"","组件":"1","Class":"I 12","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m12.4s","赤经D(J2000)":"12.42011111111111","赤纬(J2000)":"+14h45m44s","赤纬D(J2000)":"14.762222222222222","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"177","详细描述":"bright, small, round, suddenly much brighter middle","简略描述":"B, S, R, smbM"},{"ID":"4378","标识":"NGC4378","M标识":"NGC4378","拓展名":"","组件":"","Class":"I 123","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m18s","赤经D(J2000)":"12.421666666666667","赤纬(J2000)":"+4h55m31s","赤纬D(J2000)":"4.925277777777778","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.9","短轴(分)":"2.7","方位角":"167","详细描述":"","简略描述":"B, S, * 8·9 sf 3'"},{"ID":"4379","标识":"NGC4379","M标识":"NGC4379","拓展名":"","组件":"","Class":"II 87","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m14.7s","赤经D(J2000)":"12.42075","赤纬(J2000)":"+15h36m28s","赤纬D(J2000)":"15.607777777777777","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2","短轴(分)":"1.6","方位角":"105","详细描述":"pretty small, round, pretty suddenly brighter middle and nucleus","简略描述":"pS, R, psbMN"},{"ID":"4380","标识":"NGC4380","M标识":"NGC4380","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m22.1s","赤经D(J2000)":"12.422805555555556","赤纬(J2000)":"+10h1m0s","赤纬D(J2000)":"10.016666666666667","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.5","短轴(分)":"1.9","方位角":"153","详细描述":"very faint, pretty large, round, a little brighter middle","简略描述":"vF, pL, R, lbM"},{"ID":"4381","标识":"NGC4381","M标识":"NGC4381","拓展名":"","组件":"","Class":"II 743","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h23m59.1s","赤经D(J2000)":"12.39975","赤纬(J2000)":"+48h46m48s","赤纬D(J2000)":"48.78","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3.7","短轴(分)":"1.3","方位角":"77","详细描述":"very bright, pretty large, round, pretty suddenly bright middle, mottled but not resolved","简略描述":"F, S"},{"ID":"4382","标识":"NGC4382","M标识":"M85","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m23.9s","赤经D(J2000)":"12.423305555555554","赤纬(J2000)":"+18h11m27s","赤纬D(J2000)":"18.190833333333334","可见光星等V":"9.1","摄影(蓝光)星等B":"10","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"7.1","短轴(分)":"5.5","方位角":"5","详细描述":"very bright, pretty large, round, brighter middle, star to northwest","简略描述":"vB, pL, R, bM, * np"},{"ID":"4383","标识":"NGC4383","M标识":"NGC4383","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m25.5s","赤经D(J2000)":"12.42375","赤纬(J2000)":"+16h28m12s","赤纬D(J2000)":"16.47","可见光星等V":"12.1","摄影(蓝光)星等B":"12.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2","短轴(分)":"1","方位角":"28","详细描述":"","简略描述":"eS, stellar or neb * 11·12"},{"ID":"4384","标识":"NGC4384","M标识":"NGC4384","拓展名":"","组件":"","Class":"III 879","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h25m11.9s","赤经D(J2000)":"12.419972222222222","赤纬(J2000)":"+54h30m22s","赤纬D(J2000)":"54.50611111111111","可见光星等V":"13","摄影(蓝光)星等B":"13.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1","方位角":"90","详细描述":"considerably faint, small, irregularly round","简略描述":"cF, S, iR"},{"ID":"4385","标识":"NGC4385","M标识":"NGC4385","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m42.6s","赤经D(J2000)":"12.4285","赤纬(J2000)":"+0h34m21s","赤纬D(J2000)":"0.5725","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.1","短轴(分)":"1.3","方位角":"82","详细描述":"very faint, very small, almost stellar","简略描述":"vF, vS, alm stell"},{"ID":"4386","标识":"NGC4386","M标识":"NGC4386","拓展名":"","组件":"","Class":"I 277","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h24m27.7s","赤经D(J2000)":"12.407694444444445","赤纬(J2000)":"+75h31m46s","赤纬D(J2000)":"75.52944444444444","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.5","短轴(分)":"1.3","方位角":"135","详细描述":"pretty bright, considerably large, a little extended, pretty suddenly much brighter middle","简略描述":"pB, cL, lE, psmbM"},{"ID":"4387","标识":"NGC4387","M标识":"NGC4387","拓展名":"","组件":"","Class":"II 167","业余排名":"11","中文名":"星系构成的脸","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m41.7s","赤经D(J2000)":"12.42825","赤纬(J2000)":"+12h48m37s","赤纬D(J2000)":"12.81027777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"140","详细描述":"pretty faint, very small, round, 13th magnitude star 90 arcsec to northwest, northwestern of 2","简略描述":"pF, vS, R, * 13 90\" np, np of 2"},{"ID":"4388","标识":"NGC4388","M标识":"NGC4388","拓展名":"","组件":"","Class":"II 168","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m46.9s","赤经D(J2000)":"12.429694444444443","赤纬(J2000)":"+12h39m43s","赤纬D(J2000)":"12.661944444444444","可见光星等V":"11","摄影(蓝光)星等B":"11.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"5.6","短轴(分)":"1.5","方位角":"92","详细描述":"very faint, extended, southeastern of 2","简略描述":"vF, E, sf of 2"},{"ID":"4389","标识":"NGC4389","M标识":"NGC4389","拓展名":"","组件":"","Class":"II 749","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc\/P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h25m35s","赤经D(J2000)":"12.426388888888889","赤纬(J2000)":"+45h41m6s","赤纬D(J2000)":"45.684999999999995","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.6","短轴(分)":"1.3","方位角":"105","详细描述":"pretty bright, pretty large, irregularly extended, very gradually a little brighter middle","简略描述":"pB, pL, iE, vglbM"},{"ID":"4390","标识":"NGC4390","M标识":"NGC4390","拓展名":"","组件":"","Class":"III 39","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m50.5s","赤经D(J2000)":"12.430694444444445","赤纬(J2000)":"+10h27m32s","赤纬D(J2000)":"10.458888888888888","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"95","详细描述":"very faint, pretty large, round","简略描述":"vF, pL, R"},{"ID":"4391","标识":"NGC4391","M标识":"NGC4391","拓展名":"","组件":"","Class":"III 852","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h25m18.9s","赤经D(J2000)":"12.421916666666666","赤纬(J2000)":"+64h56m1s","赤纬D(J2000)":"64.93361111111112","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"","简略描述":"cF, S, R, sbM, *** sp"},{"ID":"4392","标识":"NGC4392","M标识":"NGC4392","拓展名":"","组件":"","Class":"III 729","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h25m18.7s","赤经D(J2000)":"12.421861111111111","赤纬(J2000)":"+45h50m51s","赤纬D(J2000)":"45.847500000000004","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"72","详细描述":"considerably faint, small, round, very gradually brighter middle","简略描述":"cF, S, R, vgbM"},{"ID":"4393","标识":"NGC4393","M标识":"NGC4393","拓展名":"","组件":"","Class":"III 361","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m51.3s","赤经D(J2000)":"12.430916666666667","赤纬(J2000)":"+27h33m43s","赤纬D(J2000)":"27.561944444444446","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"15","长轴(分)":"3.2","短轴(分)":"3","方位角":"12","详细描述":"very faint, very large, irregular figure, bright star to west","简略描述":"vF, vL, iF, B * p"},{"ID":"4394","标识":"NGC4394","M标识":"NGC4394","拓展名":"","组件":"","Class":"II 55","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m55.6s","赤经D(J2000)":"12.43211111111111","赤纬(J2000)":"+18h12m51s","赤纬D(J2000)":"18.214166666666667","可见光星等V":"10.9","摄影(蓝光)星等B":"11.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.4","短轴(分)":"3.2","方位角":"141","详细描述":"pretty bright, a little extended, brighter middle","简略描述":"pB, lE, bM"},{"ID":"4395","标识":"NGC4395","M标识":"NGC4395","拓展名":"","组件":"","Class":"V 29.1","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h25m48.8s","赤经D(J2000)":"12.430222222222222","赤纬(J2000)":"+33h32m48s","赤纬D(J2000)":"33.54666666666667","可见光星等V":"10.2","摄影(蓝光)星等B":"10.6","B-V":"0.4","表面亮度(mag\/arcmin2)":"15.4","长轴(分)":"13.2","短轴(分)":"11","方位角":"147","详细描述":"","简略描述":"eF, vL, np of D neb"},{"ID":"4396","标识":"NGC4396","M标识":"NGC4396","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m59.2s","赤经D(J2000)":"12.43311111111111","赤纬(J2000)":"+15h40m16s","赤纬D(J2000)":"15.671111111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.3","短轴(分)":"1","方位角":"125","详细描述":"very faint, pretty large, much extended","简略描述":"vF, pL, mE"},{"ID":"4397","标识":"NGC4397","M标识":"NGC4397","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m58.2s","赤经D(J2000)":"12.432833333333333","赤纬(J2000)":"+18h18m6s","赤纬D(J2000)":"18.301666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, II 55 to southwest","简略描述":"vF, S, II 55 sp"},{"ID":"4398","标识":"NGC4398","M标识":"NGC4398","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m7.4s","赤经D(J2000)":"12.43538888888889","赤纬(J2000)":"+10h41m10s","赤纬D(J2000)":"10.686111111111112","可见光星等V":"99","摄影(蓝光)星等B":"13.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, III 39 preceding (to west) by 14 seconds, and 14 arcmin south","简略描述":"F, pS, III 39 p 14s, 14' s"},{"ID":"4399","标识":"NGC4399","M标识":"NGC4399","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h25m42.9s","赤经D(J2000)":"12.428583333333332","赤纬(J2000)":"+33h31m0s","赤纬D(J2000)":"33.516666666666666","可见光星等V":"14","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, form trapezium with 2958 and 62"},{"ID":"4400","标识":"NGC4400","M标识":"NGC4400","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h25m55.9s","赤经D(J2000)":"12.432194444444443","赤纬(J2000)":"+33h30m57s","赤纬D(J2000)":"33.51583333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.3","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, form trapezium with 2958 and 62"},{"ID":"4401","标识":"NGC4401","M标识":"NGC4401","拓展名":"","组件":"","Class":"V 29.2","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h25m57.9s","赤经D(J2000)":"12.432749999999999","赤纬(J2000)":"+33h31m38s","赤纬D(J2000)":"33.52722222222222","可见光星等V":"14","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, vL, pslbM, sf of D neb"},{"ID":"4402","标识":"NGC4402","M标识":"NGC4402","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m7.8s","赤经D(J2000)":"12.435500000000001","赤纬(J2000)":"+13h6m47s","赤纬D(J2000)":"13.113055555555555","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.9","短轴(分)":"1.1","方位角":"90","详细描述":"","简略描述":"F, L, mE 90° (Auw 30)"},{"ID":"4403","标识":"NGC4403","M标识":"NGC4403","拓展名":"","组件":"","Class":"III 755","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m12.8s","赤经D(J2000)":"12.43688888888889","赤纬(J2000)":"-7h41m5s","赤纬D(J2000)":"-7.684722222222223","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"27","详细描述":"very faint, very small, extended","简略描述":"vF, vS, E"},{"ID":"4404","标识":"NGC4404","M标识":"NGC4404","拓展名":"","组件":"","Class":"III 756","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m16.1s","赤经D(J2000)":"12.437805555555556","赤纬(J2000)":"-7h40m49s","赤纬D(J2000)":"-7.680277777777778","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"1","方位角":"153","详细描述":"very faint, very small, extended","简略描述":"vF, vS, E"},{"ID":"4405","标识":"NGC4405","M标识":"NGC4405","拓展名":"","组件":"","Class":"II 88","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m7.1s","赤经D(J2000)":"12.435305555555555","赤纬(J2000)":"+16h10m52s","赤纬D(J2000)":"16.18111111111111","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"20","详细描述":"pretty faint, small, round, very suddenly brighter middle, mottled but not resolved","简略描述":"pF, S, R, vsbM, r"},{"ID":"4406","标识":"NGC4406","M标识":"M86","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"浮士德V051","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m11.5s","赤经D(J2000)":"12.436527777777778","赤纬(J2000)":"+12h56m47s","赤纬D(J2000)":"12.946388888888889","可见光星等V":"8.9","摄影(蓝光)星等B":"9.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"8.9","短轴(分)":"5.8","方位角":"130","详细描述":"very bright, large, round, gradually brighter middle and nucleus, mottled but not resolved","简略描述":"vB, L, R, gbMN, r"},{"ID":"4407","标识":"NGC4407","M标识":"NGC4407","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m32.1s","赤经D(J2000)":"12.44225","赤纬(J2000)":"+12h36m37s","赤纬D(J2000)":"12.610277777777778","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.3","短轴(分)":"1.4","方位角":"60","详细描述":"following (eastern) of 2 nebulae","简略描述":"f of 2 neb"},{"ID":"4408","标识":"NGC4408","M标识":"NGC4408","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m17.1s","赤经D(J2000)":"12.438083333333333","赤纬(J2000)":"+27h52m16s","赤纬D(J2000)":"27.871111111111112","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"30","详细描述":"faint, small, mottled but not resolved","简略描述":"F, S, r"},{"ID":"4409","标识":"NGC4409","M标识":"NGC4409","拓展名":"","组件":"","Class":"III 17","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m58.4s","赤经D(J2000)":"12.449555555555555","赤纬(J2000)":"+2h29m39s","赤纬D(J2000)":"2.4941666666666666","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2","短轴(分)":"1","方位角":"8","详细描述":"very faint, pretty small, mottled but not resolved","简略描述":"vF, pS, r"},{"ID":"4410","标识":"NGC4410","M标识":"NGC4410","拓展名":"B","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m29.6s","赤经D(J2000)":"12.441555555555556","赤纬(J2000)":"+9h1m8s","赤纬D(J2000)":"9.01888888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"pretty faint, very large, round, gradually brighter middle","简略描述":"pF, vL, R, gbM"},{"ID":"4411","标识":"NGC4411","M标识":"NGC4411","拓展名":"B","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m47.2s","赤经D(J2000)":"12.446444444444445","赤纬(J2000)":"+8h53m4s","赤纬D(J2000)":"8.884444444444444","可见光星等V":"12.3","摄影(蓝光)星等B":"12.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.5","短轴(分)":"2.5","方位角":"","详细描述":"faint, pretty large","简略描述":"F, pL"},{"ID":"4412","标识":"NGC4412","M标识":"NGC4412","拓展名":"","组件":"","Class":"II 34","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m36s","赤经D(J2000)":"12.443333333333333","赤纬(J2000)":"+3h57m53s","赤纬D(J2000)":"3.9647222222222225","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"132","详细描述":"faint, pretty large, round, gradually brighter middle, mottled but not resolved","简略描述":"F, pL, R, gbM, r"},{"ID":"4413","标识":"NGC4413","M标识":"NGC4413","拓展名":"","组件":"","Class":"II 169","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m32.1s","赤经D(J2000)":"12.44225","赤纬(J2000)":"+12h36m37s","赤纬D(J2000)":"12.610277777777778","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.3","短轴(分)":"1.4","方位角":"60","详细描述":"extremely faint, small, gradually brighter middle, 2 stars north and northwest","简略描述":"cF, S, gbM, 2 st n, np"},{"ID":"4414","标识":"NGC4414","M标识":"NGC4414","拓展名":"","组件":"","Class":"I 77","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m27.1s","赤经D(J2000)":"12.440861111111111","赤纬(J2000)":"+31h13m25s","赤纬D(J2000)":"31.223611111111108","可见光星等V":"10.1","摄影(蓝光)星等B":"11","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"4.4","短轴(分)":"3","方位角":"155","详细描述":"","简略描述":"vB, L, E, g, vsmbM *"},{"ID":"4415","标识":"NGC4415","M标识":"NGC4415","拓展名":"","组件":"","Class":"III 482","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m40.5s","赤经D(J2000)":"12.444583333333334","赤纬(J2000)":"+8h26m10s","赤纬D(J2000)":"8.436111111111112","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"0","详细描述":"extremely faint, pretty small","简略描述":"eF, pS"},{"ID":"4416","标识":"NGC4416","M标识":"NGC4416","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m46.7s","赤经D(J2000)":"12.446305555555556","赤纬(J2000)":"+7h55m8s","赤纬D(J2000)":"7.9188888888888895","可见光星等V":"12.4","摄影(蓝光)星等B":"13","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"108","详细描述":"","简略描述":"vF, L, R, * 7 sp 5'"},{"ID":"4417","标识":"NGC4417","M标识":"NGC4417","拓展名":"","组件":"","Class":"II 155","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m50.4s","赤经D(J2000)":"12.447333333333333","赤纬(J2000)":"+9h35m4s","赤纬D(J2000)":"9.584444444444445","可见光星等V":"11.1","摄影(蓝光)星等B":"12","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"3.3","短轴(分)":"1.4","方位角":"49","详细描述":"","简略描述":"F, pL, E, lbp"},{"ID":"4418","标识":"NGC4418","M标识":"NGC4418","拓展名":"","组件":"","Class":"III 492","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m54.6s","赤经D(J2000)":"12.448500000000001","赤纬(J2000)":"-0h52m40s","赤纬D(J2000)":"-0.8777777777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"59","详细描述":"(per) William Herschel very faint, considerably large, much extended, (per) John Herschel faint, small, round, star near","简略描述":"(H) vF, cL, mE, (h) F, S, R, * nr"},{"ID":"4419","标识":"NGC4419","M标识":"NGC4419","拓展名":"","组件":"","Class":"II 113","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m56.4s","赤经D(J2000)":"12.449","赤纬(J2000)":"+15h2m52s","赤纬D(J2000)":"15.047777777777778","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"3.3","短轴(分)":"1.2","方位角":"133","详细描述":"bright, pretty much extended 135°±, suddenly brighter middle","简略描述":"B, pmE 135° ±, sbM"},{"ID":"4420","标识":"NGC4420","M标识":"NGC4420","拓展名":"","组件":"","Class":"II 23","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m58.4s","赤经D(J2000)":"12.449555555555555","赤纬(J2000)":"+2h29m39s","赤纬D(J2000)":"2.4941666666666666","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2","短轴(分)":"1","方位角":"8","详细描述":"faint, pretty large, a little extended, mottled but not resolved (equal to III 17?)","简略描述":"F, pL, lE, r (?=III 17)"},{"ID":"4421","标识":"NGC4421","M标识":"NGC4421","拓展名":"","组件":"","Class":"II 89","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h27m2.5s","赤经D(J2000)":"12.450694444444444","赤纬(J2000)":"+15h27m39s","赤纬D(J2000)":"15.460833333333333","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.7","短轴(分)":"2","方位角":"20","详细描述":"pretty bright, pretty large, pretty gradually brighter middle, bright star to northwest","简略描述":"pB, pL, pgbM, B * np"},{"ID":"4422","标识":"NGC4422","M标识":"NGC4422","拓展名":"","组件":"","Class":"III 114","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m12s","赤经D(J2000)":"12.453333333333333","赤纬(J2000)":"-5h49m49s","赤纬D(J2000)":"-5.830277777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"","简略描述":"F, vS, R, psbM, 2 S st nr"},{"ID":"4423","标识":"NGC4423","M标识":"NGC4423","拓展名":"","组件":"","Class":"II 145","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m9.1s","赤经D(J2000)":"12.452527777777776","赤纬(J2000)":"+5h52m49s","赤纬D(J2000)":"5.880277777777779","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.3","短轴(分)":"0.4","方位角":"18","详细描述":"very faint, very small, extended","简略描述":"vF, vS, E"},{"ID":"4424","标识":"NGC4424","M标识":"NGC4424","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m11.4s","赤经D(J2000)":"12.453166666666666","赤纬(J2000)":"+9h25m17s","赤纬D(J2000)":"9.421388888888888","可见光星等V":"11.7","摄影(蓝光)星等B":"12.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.5","短轴(分)":"1.7","方位角":"95","详细描述":"faint, pretty large, irregularly round, brighter middle","简略描述":"F, pL, iR, bM"},{"ID":"4425","标识":"NGC4425","M标识":"NGC4425","拓展名":"","组件":"","Class":"II 170","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m13.3s","赤经D(J2000)":"12.453694444444444","赤纬(J2000)":"+12h44m5s","赤纬D(J2000)":"12.73472222222222","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.8","短轴(分)":"1","方位角":"27","详细描述":"pretty faint, small, round, brighter middle","简略描述":"pF, S, R, bM"},{"ID":"4426","标识":"NGC4426","M标识":"NGC4426","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h27m10.5s","赤经D(J2000)":"12.452916666666665","赤纬(J2000)":"+27h50m22s","赤纬D(J2000)":"27.839444444444442","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"cluster, faint, small","简略描述":"Cl, F, S"},{"ID":"4427","标识":"NGC4427","M标识":"NGC4427","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Dup","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h27m10.5s","赤经D(J2000)":"12.452916666666665","赤纬(J2000)":"+27h50m22s","赤纬D(J2000)":"27.839444444444442","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, perhaps 2 or 3 faint stars in nebulosity","简略描述":"vF, ? 2 or 3 F st in neb"},{"ID":"4428","标识":"NGC4428","M标识":"NGC4428","拓展名":"","组件":"1","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m28.1s","赤经D(J2000)":"12.457805555555554","赤纬(J2000)":"-8h10m5s","赤纬D(J2000)":"-8.168055555555554","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"0.7","方位角":"79","详细描述":"very faint, pretty large","简略描述":"vF, pL"},{"ID":"4429","标识":"NGC4429","M标识":"NGC4429","拓展名":"","组件":"","Class":"II 65","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m26.3s","赤经D(J2000)":"12.457305555555555","赤纬(J2000)":"+11h6m27s","赤纬D(J2000)":"11.1075","可见光星等V":"10","摄影(蓝光)星等B":"11","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"5.8","短轴(分)":"2.8","方位角":"99","详细描述":"bright, large, considerably extended, pretty suddenly brighter middle, 10th magnitude star to northeast","简略描述":"B, L, cE, psbM, * 10 nf"},{"ID":"4430","标识":"NGC4430","M标识":"NGC4430","拓展名":"","组件":"","Class":"II 26, II 146","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m26.2s","赤经D(J2000)":"12.457277777777778","赤纬(J2000)":"+6h15m46s","赤纬D(J2000)":"6.262777777777778","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.3","短轴(分)":"2","方位角":"51","详细描述":"considerably faint, large, round, gradually brighter middle","简略描述":"cF, L, R, gbM"},{"ID":"4431","标识":"NGC4431","M标识":"NGC4431","拓展名":"","组件":"","Class":"II 171","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m27.4s","赤经D(J2000)":"12.45761111111111","赤纬(J2000)":"+12h17m26s","赤纬D(J2000)":"12.290555555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1","方位角":"177","详细描述":"very faint, very small, considerably extended, gradually brighter middle","简略描述":"vF, vS, cE, gbM"},{"ID":"4432","标识":"NGC4432","M标识":"NGC4432","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m33s","赤经D(J2000)":"12.459166666666667","赤纬(J2000)":"+6h14m0s","赤纬D(J2000)":"6.233333333333333","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"6","详细描述":"","简略描述":"2 st in eF neb"},{"ID":"4433","标识":"NGC4433","M标识":"NGC4433","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m38.5s","赤经D(J2000)":"12.460694444444444","赤纬(J2000)":"-8h16m45s","赤纬D(J2000)":"-8.279166666666667","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.2","短轴(分)":"0.9","方位角":"5","详细描述":"pretty faint, pretty large, a little extended","简略描述":"pF, pL, lE"},{"ID":"4434","标识":"NGC4434","M标识":"NGC4434","拓展名":"","组件":"","Class":"II 497","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m36.6s","赤经D(J2000)":"12.460166666666666","赤纬(J2000)":"+8h9m16s","赤纬D(J2000)":"8.154444444444445","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"pretty faint, very small","简略描述":"pF, vS"},{"ID":"4435","标识":"NGC4435","M标识":"NGC4435","拓展名":"","组件":"","Class":"I 28, 1","业余排名":"6","中文名":"双眼星系","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m40.5s","赤经D(J2000)":"12.46125","赤纬(J2000)":"+13h4m47s","赤纬D(J2000)":"13.079722222222221","可见光星等V":"10.8","摄影(蓝光)星等B":"11.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"3","短轴(分)":"2.2","方位角":"13","详细描述":"very bright, considerably large, round, northwestern of 2","简略描述":"vB, cL, R, np of 2"},{"ID":"4436","标识":"NGC4436","M标识":"NGC4436","拓展名":"","组件":"","Class":"II 172","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m41.3s","赤经D(J2000)":"12.461472222222222","赤纬(J2000)":"+12h18m57s","赤纬D(J2000)":"12.315833333333334","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"115","详细描述":"considerably faint, small, gradually brighter middle","简略描述":"cF, S, gbM"},{"ID":"4437","标识":"NGC4437","M标识":"NGC4437","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h32m45.6s","赤经D(J2000)":"12.546","赤纬(J2000)":"+0h6m56s","赤纬D(J2000)":"0.11555555555555556","可见光星等V":"10.4","摄影(蓝光)星等B":"11.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"10.5","短轴(分)":"1.5","方位角":"83","详细描述":"faint, extremely extended 75°, 10th magnitude star to the northeast, place is that of the star","简略描述":"F, eE 75°, * 10 nf, place that of *"},{"ID":"4438","标识":"NGC4438","M标识":"NGC4438","拓展名":"","组件":"","Class":"I 28, 2","业余排名":"6","中文名":"双眼星系","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m45.6s","赤经D(J2000)":"12.462666666666665","赤纬(J2000)":"+13h0m31s","赤纬D(J2000)":"13.008611111111112","可见光星等V":"10.2","摄影(蓝光)星等B":"11","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"8.5","短轴(分)":"3","方位角":"27","详细描述":"bright, considerably large, very little extended, mottled but not resolved, southeastern of 2","简略描述":"B, cL, vlE, r, sf of 2"},{"ID":"4439","标识":"NGC4439","M标识":"NGC4439","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"南十字座","星座(En)":"CRU","赤经(J2000)":"12h28m26.3s","赤经D(J2000)":"12.473972222222223","赤纬(J2000)":"-60h6m11s","赤纬D(J2000)":"-60.10305555555556","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, small, stars from 11th to 12th magnitude","简略描述":"Cl, S, st 11…12"},{"ID":"4440","标识":"NGC4440","M标识":"NGC4440","拓展名":"","组件":"","Class":"II 173","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m53.5s","赤经D(J2000)":"12.46486111111111","赤纬(J2000)":"+12h17m36s","赤纬D(J2000)":"12.293333333333333","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"3","详细描述":"bright, pretty small, round, brighter middle, mottled but not resolved","简略描述":"B, pS, R, bM, r"},{"ID":"4441","标识":"NGC4441","M标识":"NGC4441","拓展名":"","组件":"","Class":"II 848","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h27m20.2s","赤经D(J2000)":"12.45561111111111","赤纬(J2000)":"+64h48m8s","赤纬D(J2000)":"64.80222222222221","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"3.2","短轴(分)":"2.5","方位角":"9","详细描述":"pretty bright, small, irregularly round, brighter middle","简略描述":"pB, S, iR, bM"},{"ID":"4442","标识":"NGC4442","M标识":"NGC4442","拓展名":"","组件":"","Class":"II 156","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h28m3.9s","赤经D(J2000)":"12.46775","赤纬(J2000)":"+9h48m14s","赤纬D(J2000)":"9.80388888888889","可见光星等V":"10.4","摄影(蓝光)星等B":"11.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"4.5","短轴(分)":"1.8","方位角":"87","详细描述":"very bright, pretty large, round, suddenly much brighter middle","简略描述":"vB, pL, R, smbM"},{"ID":"4443","标识":"NGC4443","M标识":"NGC4443","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m2.9s","赤经D(J2000)":"12.484138888888888","赤纬(J2000)":"+13h11m4s","赤纬D(J2000)":"13.184444444444445","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.4","短轴(分)":"1.4","方位角":"9","详细描述":"faint, small, κ in Lord Rosse's diagram","简略描述":"F, S, κ in Ld R's diagram"},{"ID":"4444","标识":"NGC4444","M标识":"NGC4444","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h28m36.1s","赤经D(J2000)":"12.476694444444444","赤纬(J2000)":"-43h15m44s","赤纬D(J2000)":"-43.26222222222222","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.5","短轴(分)":"2.3","方位角":"119","详细描述":"extremely faint, large, round, very gradually brighter middle","简略描述":"eF, L, R, vgbM"},{"ID":"4445","标识":"NGC4445","M标识":"NGC4445","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h28m16.1s","赤经D(J2000)":"12.47113888888889","赤纬(J2000)":"+9h26m12s","赤纬D(J2000)":"9.436666666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.6","短轴(分)":"0.5","方位角":"106","详细描述":"very faint, pretty large, much extended","简略描述":"vF, pL, mE"},{"ID":"4446","标识":"NGC4446","M标识":"NGC4446","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m6.8s","赤经D(J2000)":"12.468555555555556","赤纬(J2000)":"+13h54m44s","赤纬D(J2000)":"13.912222222222223","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"106","详细描述":"most extremely faint, pretty small, round","简略描述":"eeF, pS, R"},{"ID":"4447","标识":"NGC4447","M标识":"NGC4447","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m12.4s","赤经D(J2000)":"12.47011111111111","赤纬(J2000)":"+13h53m59s","赤纬D(J2000)":"13.899722222222222","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"105","详细描述":"most extremely faint, pretty small, round","简略描述":"eeF, pS, R"},{"ID":"4448","标识":"NGC4448","M标识":"NGC4448","拓展名":"","组件":"","Class":"I 91","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m15.5s","赤经D(J2000)":"12.470972222222223","赤纬(J2000)":"+28h37m17s","赤纬D(J2000)":"28.62138888888889","可见光星等V":"11.1","摄影(蓝光)星等B":"12","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.9","短轴(分)":"1.4","方位角":"94","详细描述":"bright, large, extended 90°, suddenly brighter middle","简略描述":"B, L, E 90°, sbM"},{"ID":"4449","标识":"NGC4449","M标识":"NGC4449","拓展名":"","组件":"","Class":"I 213","业余排名":"2","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h28m11.3s","赤经D(J2000)":"12.469805555555556","赤纬(J2000)":"+44h5m42s","赤纬D(J2000)":"44.095","可见光星等V":"9.6","摄影(蓝光)星等B":"10","B-V":"0.4","表面亮度(mag\/arcmin2)":"13","长轴(分)":"6.2","短轴(分)":"4.4","方位角":"45","详细描述":"very bright, considerably large, much extended, double or bifid (either a double nebula, or a single nebula split into two lobes), well-resolved (clearly consisting of stars), 9th-magnitude star 5 arcmin to east","简略描述":"vB, cL, mE, D or bifid, rrr, * 9 f 5'"},{"ID":"4450","标识":"NGC4450","M标识":"NGC4450","拓展名":"","组件":"","Class":"II 56, II 90","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m29.3s","赤经D(J2000)":"12.474805555555555","赤纬(J2000)":"+17h5m3s","赤纬D(J2000)":"17.084166666666665","可见光星等V":"10.1","摄影(蓝光)星等B":"10.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"5.4","短轴(分)":"4.1","方位角":"175","详细描述":"bright, large, round, gradually very much brighter middle like a star, mottled but not resolved, bright star to southwest","简略描述":"B, L, R, gvmbM *, r, B * sp"},{"ID":"4451","标识":"NGC4451","M标识":"NGC4451","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h28m40.5s","赤经D(J2000)":"12.477916666666667","赤纬(J2000)":"+9h15m32s","赤纬D(J2000)":"9.258888888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"162","详细描述":"pretty bright, pretty small, round, brighter middle, 13th magnitude star to south","简略描述":"pB, pS, R, bM, * 13 s"},{"ID":"4452","标识":"NGC4452","M标识":"NGC4452","拓展名":"","组件":"","Class":"I 23","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h28m43.3s","赤经D(J2000)":"12.478694444444445","赤纬(J2000)":"+11h45m18s","赤纬D(J2000)":"11.755","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2.7","短轴(分)":"0.6","方位角":"32","详细描述":"pretty bright, small, very much extended","简略描述":"pB, S, vmE"},{"ID":"4453","标识":"NGC4453","M标识":"NGC4453","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h28m46.8s","赤经D(J2000)":"12.479666666666667","赤纬(J2000)":"+6h30m44s","赤纬D(J2000)":"6.512222222222222","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"153","详细描述":"faint, pretty small, brighter middle, mottled but not resolved","简略描述":"F, pS, bM, r"},{"ID":"4454","标识":"NGC4454","M标识":"NGC4454","拓展名":"","组件":"","Class":"II 180","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h28m50.6s","赤经D(J2000)":"12.480722222222223","赤纬(J2000)":"-1h56m20s","赤纬D(J2000)":"-1.9388888888888889","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.3","短轴(分)":"2.1","方位角":"100","详细描述":"faint, large, round, gradually brighter middle, extremely mottled but not resolved","简略描述":"F, L, R, gbM, er"},{"ID":"4455","标识":"NGC4455","M标识":"NGC4455","拓展名":"","组件":"","Class":"II 355","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m44s","赤经D(J2000)":"12.47888888888889","赤纬(J2000)":"+22h49m16s","赤纬D(J2000)":"22.82111111111111","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.6","短轴(分)":"0.8","方位角":"16","详细描述":"faint, large, extended, gradually brighter middle, 2 bright stars to northeast","简略描述":"F, L, E, gbM, 2 B st nf"},{"ID":"4456","标识":"NGC4456","M标识":"NGC4456","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h27m52.2s","赤经D(J2000)":"12.4645","赤纬(J2000)":"-30h5m52s","赤纬D(J2000)":"-30.097777777777775","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"150","详细描述":"most extremely faint, very small, 13th magnitude star attached","简略描述":"eeF, vS, * 13 att"},{"ID":"4457","标识":"NGC4457","M标识":"NGC4457","拓展名":"","组件":"","Class":"II 35","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h28m58.9s","赤经D(J2000)":"12.483027777777778","赤纬(J2000)":"+3h34m16s","赤纬D(J2000)":"3.5711111111111107","可见光星等V":"10.9","摄影(蓝光)星等B":"11.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.6","短轴(分)":"2.3","方位角":"66","详细描述":"considerably bright, pretty small, round, suddenly much brighter middle and nucleus","简略描述":"cB, pS, R, smbMN"},{"ID":"4458","标识":"NGC4458","M标识":"NGC4458","拓展名":"","组件":"","Class":"II 121","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h28m57.7s","赤经D(J2000)":"12.482694444444444","赤纬(J2000)":"+13h14m32s","赤纬D(J2000)":"13.242222222222221","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.5","方位角":"45","详细描述":"pretty bright, small, round, brighter middle, western of 2","简略描述":"pB, S, R, bM, p of 2"},{"ID":"4459","标识":"NGC4459","M标识":"NGC4459","拓展名":"","组件":"","Class":"I 161","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m0s","赤经D(J2000)":"12.483333333333333","赤纬(J2000)":"+13h58m43s","赤纬D(J2000)":"13.97861111111111","可见光星等V":"10.4","摄影(蓝光)星等B":"11.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"3.5","短轴(分)":"2.7","方位角":"110","详细描述":"pretty bright, pretty large, irregularly round, brighter middle, mottled but not resolved, 8th magnitude star 2 arcmin to southeast","简略描述":"pB, pL, iR, bM, r, * 8 sf 2'"},{"ID":"4460","标识":"NGC4460","M标识":"NGC4460","拓展名":"","组件":"","Class":"I 212, II 750","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h28m45.5s","赤经D(J2000)":"12.479305555555555","赤纬(J2000)":"+44h51m52s","赤纬D(J2000)":"44.864444444444445","可见光星等V":"11.3","摄影(蓝光)星等B":"12.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"4.2","短轴(分)":"1.3","方位角":"40","详细描述":"bright, pretty large, extended 123°, pretty suddenly brighter middle","简略描述":"B, pL, E 123°, psbM"},{"ID":"4461","标识":"NGC4461","M标识":"NGC4461","拓展名":"","组件":"","Class":"II 122, II 174","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m2.9s","赤经D(J2000)":"12.484138888888888","赤纬(J2000)":"+13h11m4s","赤纬D(J2000)":"13.184444444444445","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.4","短轴(分)":"1.4","方位角":"9","详细描述":"pretty faint, small, round, brighter middle, following (eastern) of 2","简略描述":"pF, S, R, bM, f of 2"},{"ID":"4462","标识":"NGC4462","M标识":"NGC4462","拓展名":"","组件":"","Class":"III 764","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h29m21s","赤经D(J2000)":"12.489166666666666","赤纬(J2000)":"-23h9m59s","赤纬D(J2000)":"-23.16638888888889","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.1","短轴(分)":"1.1","方位角":"124","详细描述":"pretty bright, pretty small, extended 130°, suddenly brighter middle","简略描述":"pB, pS, E 130°, sbM"},{"ID":"4463","标识":"NGC4463","M标识":"NGC4463","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3p","星座(Zh)":"苍蝇座","星座(En)":"MUS","赤经(J2000)":"12h29m55.2s","赤经D(J2000)":"12.498666666666665","赤纬(J2000)":"-64h47m22s","赤纬D(J2000)":"-64.78944444444444","可见光星等V":"7.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, very little compressed","简略描述":"Cl, P, vlC"},{"ID":"4464","标识":"NGC4464","M标识":"NGC4464","拓展名":"","组件":"","Class":"III 483","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m21.2s","赤经D(J2000)":"12.489222222222221","赤纬(J2000)":"+8h9m25s","赤纬D(J2000)":"8.156944444444445","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"171","详细描述":"faint, very small, round, pretty gradually brighter middle","简略描述":"F, vS, R, pgbM"},{"ID":"4465","标识":"NGC4465","M标识":"NGC4465","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m23.5s","赤经D(J2000)":"12.48986111111111","赤纬(J2000)":"+8h1m34s","赤纬D(J2000)":"8.026111111111112","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"95","详细描述":"very faint, very diffuse","简略描述":"vF, v dif"},{"ID":"4466","标识":"NGC4466","M标识":"NGC4466","拓展名":"","组件":"","Class":"II 18","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m30.6s","赤经D(J2000)":"12.491833333333332","赤纬(J2000)":"+7h41m49s","赤纬D(J2000)":"7.696944444444445","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"101","详细描述":"very faint, pretty small, irregularly round","简略描述":"vF, pS, iR"},{"ID":"4467","标识":"NGC4467","M标识":"NGC4467","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m30.3s","赤经D(J2000)":"12.49175","赤纬(J2000)":"+7h59m34s","赤纬D(J2000)":"7.9927777777777775","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"45","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"4468","标识":"NGC4468","M标识":"NGC4468","拓展名":"","组件":"","Class":"II 630","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m30.9s","赤经D(J2000)":"12.491916666666667","赤纬(J2000)":"+14h2m57s","赤纬D(J2000)":"14.049166666666666","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"73","详细描述":"faint, considerably large","简略描述":"F, cL"},{"ID":"4469","标识":"NGC4469","M标识":"NGC4469","拓展名":"","组件":"","Class":"II 157","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m28.1s","赤经D(J2000)":"12.491138888888887","赤纬(J2000)":"+8h45m1s","赤纬D(J2000)":"8.750277777777777","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.8","短轴(分)":"1.3","方位角":"89","详细描述":"pretty faint, pretty large, much extended, brighter middle, mottled but not resolved","简略描述":"pF, pL, mE, bM, r"},{"ID":"4470","标识":"NGC4470","M标识":"NGC4470","拓展名":"","组件":"","Class":"II 19, II 498","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m37.9s","赤经D(J2000)":"12.49386111111111","赤纬(J2000)":"+7h49m26s","赤纬D(J2000)":"7.823888888888889","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"0","详细描述":"faint, pretty large, irregularly round, brighter middle","简略描述":"F, pL, iR, bM"},{"ID":"4471","标识":"NGC4471","M标识":"NGC4471","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m42s","赤经D(J2000)":"12.495","赤纬(J2000)":"+7h53m46s","赤纬D(J2000)":"7.896111111111111","可见光星等V":"99","摄影(蓝光)星等B":"14.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small (not found by d'Arrest","简略描述":"vF, vS (not found by d'A)"},{"ID":"4472","标识":"NGC4472","M标识":"M49","拓展名":"","组件":"","Class":"I 7","业余排名":"1","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m46.7s","赤经D(J2000)":"12.496305555555555","赤纬(J2000)":"+8h0m0s","赤纬D(J2000)":"8","可见光星等V":"8.4","摄影(蓝光)星等B":"9.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"10.2","短轴(分)":"8.3","方位角":"155","详细描述":"very bright, large, round, much brighter middle, mottled but not resolved","简略描述":"vB, L, R, mbM, r"},{"ID":"4473","标识":"NGC4473","M标识":"NGC4473","拓展名":"","组件":"","Class":"II 114","业余排名":"6","中文名":"马卡良星系链","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m48.7s","赤经D(J2000)":"12.49686111111111","赤纬(J2000)":"+13h25m47s","赤纬D(J2000)":"13.429722222222221","可见光星等V":"10.2","摄影(蓝光)星等B":"11.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"4.5","短轴(分)":"2.5","方位角":"94","详细描述":"pretty bright","简略描述":"pB"},{"ID":"4474","标识":"NGC4474","M标识":"NGC4474","拓展名":"","组件":"","Class":"II 117, II 629","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m53.3s","赤经D(J2000)":"12.498138888888889","赤纬(J2000)":"+14h4m7s","赤纬D(J2000)":"14.06861111111111","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.4","短轴(分)":"1.6","方位角":"80","详细描述":"pretty faint, round, mottled but not resolved","简略描述":"pF, R, r"},{"ID":"4475","标识":"NGC4475","M标识":"NGC4475","拓展名":"","组件":"","Class":"III 362","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m47.7s","赤经D(J2000)":"12.496583333333332","赤纬(J2000)":"+27h14m36s","赤纬D(J2000)":"27.243333333333336","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"5","详细描述":"extremely faint, pretty large, round","简略描述":"eF, pL, R"},{"ID":"4476","标识":"NGC4476","M标识":"NGC4476","拓展名":"","组件":"","Class":"II 123","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m59s","赤经D(J2000)":"12.499722222222221","赤纬(J2000)":"+12h20m55s","赤纬D(J2000)":"12.348611111111111","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"25","详细描述":"faint, small, round, brighter middle, 1st of 3","简略描述":"F, S, R, bM, 1st of 3"},{"ID":"4477","标识":"NGC4477","M标识":"NGC4477","拓展名":"","组件":"","Class":"II 115","业余排名":"6","中文名":"马卡良星系链","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h30m2s","赤经D(J2000)":"12.500555555555556","赤纬(J2000)":"+13h38m13s","赤纬D(J2000)":"13.636944444444444","可见光星等V":"10.4","摄影(蓝光)星等B":"11.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.7","短轴(分)":"3.3","方位角":"9","详细描述":"pretty bright, considerably large","简略描述":"pB, cL"},{"ID":"4478","标识":"NGC4478","M标识":"NGC4478","拓展名":"","组件":"","Class":"II 124","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h30m17.3s","赤经D(J2000)":"12.504805555555556","赤纬(J2000)":"+12h19m43s","赤纬D(J2000)":"12.32861111111111","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"140","详细描述":"pretty bright, small, round, pretty suddenly brighter middle, 2nd of 3","简略描述":"pB, S, R, psbM, 2nd of 3"},{"ID":"4479","标识":"NGC4479","M标识":"NGC4479","拓展名":"","组件":"","Class":"II 116","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h30m18.3s","赤经D(J2000)":"12.505083333333333","赤纬(J2000)":"+13h34m41s","赤纬D(J2000)":"13.578055555555554","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"24","详细描述":"pretty bright, pretty large","简略描述":"pB, pL"},{"ID":"4480","标识":"NGC4480","M标识":"NGC4480","拓展名":"","组件":"","Class":"II 531","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h30m26.7s","赤经D(J2000)":"12.507416666666666","赤纬(J2000)":"+4h14m45s","赤纬D(J2000)":"4.245833333333334","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.2","短轴(分)":"1.1","方位角":"175","详细描述":"pretty faint, pretty small, extended, brighter on southern side","简略描述":"pF, pS, E, bs"},{"ID":"4481","标识":"NGC4481","M标识":"NGC4481","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h29m48.6s","赤经D(J2000)":"12.496833333333333","赤纬(J2000)":"+64h2m0s","赤纬D(J2000)":"64.03333333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"150","详细描述":"pretty faint, very small, round, 13th magnitude star attached","简略描述":"pF, vS, R, * 13 att"},{"ID":"4482","标识":"NGC4482","M标识":"NGC4482","拓展名":"","组件":"","Class":"III 40","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h30m10.3s","赤经D(J2000)":"12.50286111111111","赤纬(J2000)":"+10h46m45s","赤纬D(J2000)":"10.779166666666667","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"1","方位角":"145","详细描述":"extremely faint, pretty large","简略描述":"eF, pL"},{"ID":"4483","标识":"NGC4483","M标识":"NGC4483","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h30m40.6s","赤经D(J2000)":"12.511277777777778","赤纬(J2000)":"+9h0m56s","赤纬D(J2000)":"9.015555555555556","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"65","详细描述":"pretty bright, pretty small, round, brighter middle","简略描述":"pB, pS, R, bM"},{"ID":"4484","标识":"NGC4484","M标识":"NGC4484","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h28m52.7s","赤经D(J2000)":"12.481305555555556","赤纬(J2000)":"-11h39m6s","赤纬D(J2000)":"-11.651666666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"pretty faint, small, round, gradually brighter middle","简略描述":"pF, S, R, gbM"},{"ID":"4485","标识":"NGC4485","M标识":"NGC4485","拓展名":"","组件":"","Class":"I 197","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm\/P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h30m31.3s","赤经D(J2000)":"12.508694444444444","赤纬(J2000)":"+41h42m3s","赤纬D(J2000)":"41.700833333333335","可见光星等V":"11.9","摄影(蓝光)星等B":"12.3","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.4","短轴(分)":"1.8","方位角":"15","详细描述":"bright, pretty small, irregularly round, northwestern of 2","简略描述":"B, pS, iR, np of 2"},{"ID":"4486","标识":"NGC4486","M标识":"M87","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"室女座星系","类型":"Gxy","含重复类型":"Gxy","形态":"E2\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h30m49.4s","赤经D(J2000)":"12.513722222222222","赤纬(J2000)":"+12h23m26s","赤纬D(J2000)":"12.390555555555554","可见光星等V":"8.6","摄影(蓝光)星等B":"9.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"8.3","短轴(分)":"6.6","方位角":"170","详细描述":"very bright, very large, round, much brighter middle, 3rd of 3","简略描述":"vB, vL, R, mbM, 3rd of 3"},{"ID":"4487","标识":"NGC4487","M标识":"NGC4487","拓展名":"","组件":"","Class":"II 776","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h31m4.3s","赤经D(J2000)":"12.517861111111111","赤纬(J2000)":"-8h3m13s","赤纬D(J2000)":"-8.053611111111111","可见光星等V":"11","摄影(蓝光)星等B":"11.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"4","短轴(分)":"2.8","方位角":"75","详细描述":"faint, very large, extremely mottled but not resolved","简略描述":"F, vL, er"},{"ID":"4488","标识":"NGC4488","M标识":"NGC4488","拓展名":"","组件":"","Class":"III 484","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h30m51.3s","赤经D(J2000)":"12.51425","赤纬(J2000)":"+8h21m35s","赤纬D(J2000)":"8.359722222222222","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"4.1","短轴(分)":"1.7","方位角":"176","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"4489","标识":"NGC4489","M标识":"NGC4489","拓展名":"","组件":"","Class":"II 91","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h30m52.2s","赤经D(J2000)":"12.5145","赤纬(J2000)":"+16h45m33s","赤纬D(J2000)":"16.759166666666665","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"165","详细描述":"pretty faint, considerably small, round, gradually brighter middle","简略描述":"pF, cS, R, gbM"},{"ID":"4490","标识":"NGC4490","M标识":"NGC4490","拓展名":"","组件":"","Class":"I 198","业余排名":"5","中文名":"茧星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h30m36.1s","赤经D(J2000)":"12.510027777777777","赤纬(J2000)":"+41h38m34s","赤纬D(J2000)":"41.64277777777778","可见光星等V":"9.8","摄影(蓝光)星等B":"10.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"6.4","短轴(分)":"3.2","方位角":"125","详细描述":"bright, pretty small, irregularly round, northwestern of 2","简略描述":"vB, vL, mE 130°, r, sf of 2"},{"ID":"4491","标识":"NGC4491","M标识":"NGC4491","拓展名":"","组件":"","Class":"III 41","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h30m57.1s","赤经D(J2000)":"12.51586111111111","赤纬(J2000)":"+11h29m0s","赤纬D(J2000)":"11.483333333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"148","详细描述":"faint, large, round","简略描述":"F, L, R"},{"ID":"4492","标识":"NGC4492","M标识":"NGC4492","拓展名":"","组件":"","Class":"II 499","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h30m59.7s","赤经D(J2000)":"12.516583333333333","赤纬(J2000)":"+8h4m41s","赤纬D(J2000)":"8.078055555555554","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"90","详细描述":"pretty faint, pretty large, very gradually a little brighter middle, 2 stars near","简略描述":"pF, pL, vglbM, 2 st nr"},{"ID":"4493","标识":"NGC4493","M标识":"NGC4493","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h31m8.3s","赤经D(J2000)":"12.518972222222223","赤纬(J2000)":"+0h36m51s","赤纬D(J2000)":"0.6141666666666666","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1","短轴(分)":"0.8","方位角":"164","详细描述":"very faint, very small, irregularly round","简略描述":"vF, vS, iR"},{"ID":"4494","标识":"NGC4494","M标识":"NGC4494","拓展名":"","组件":"","Class":"I 83","业余排名":"5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m24.1s","赤经D(J2000)":"12.523361111111113","赤纬(J2000)":"+25h46m31s","赤纬D(J2000)":"25.775277777777777","可见光星等V":"9.8","摄影(蓝光)星等B":"10.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"4.8","短轴(分)":"3.5","方位角":"171","详细描述":"very bright, pretty large, round, very suddenly much brighter middle and nucleus","简略描述":"vB, pL, R, vsmbMN"},{"ID":"4495","标识":"NGC4495","M标识":"NGC4495","拓展名":"","组件":"","Class":"III 301","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m22.7s","赤经D(J2000)":"12.522972222222222","赤纬(J2000)":"+29h8m12s","赤纬D(J2000)":"29.136666666666667","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"130","详细描述":"pretty faint, considerably small, round, pretty suddenly a little brighter middle","简略描述":"pF, cS, R, pslbM"},{"ID":"4496","标识":"NGC4496","M标识":"NGC4496","拓展名":"","组件":"","Class":"II 36","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h31m39.3s","赤经D(J2000)":"12.527583333333334","赤纬(J2000)":"+3h56m23s","赤纬D(J2000)":"3.9397222222222226","可见光星等V":"11.4","摄影(蓝光)星等B":"11.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3.9","短轴(分)":"3.1","方位角":"70","详细描述":"faint, considerably large, binuclear or a double nebula","简略描述":"F, cL, biN or D neb"},{"ID":"4497","标识":"NGC4497","M标识":"NGC4497","拓展名":"","组件":"","Class":"III 42","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h31m32.6s","赤经D(J2000)":"12.525722222222223","赤纬(J2000)":"+11h37m30s","赤纬D(J2000)":"11.625","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"0.8","方位角":"65","详细描述":"very faint (d'Arrest says pretty faint)","简略描述":"vF (d'A pF)"},{"ID":"4498","标识":"NGC4498","M标识":"NGC4498","拓展名":"","组件":"","Class":"II 92","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m39.5s","赤经D(J2000)":"12.52763888888889","赤纬(J2000)":"+16h51m10s","赤纬D(J2000)":"16.852777777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.9","短轴(分)":"1.1","方位角":"133","详细描述":"very faint, pretty large, extended, prehaps binuclear","简略描述":"vF, pL, E, ? biN"},{"ID":"4499","标识":"NGC4499","M标识":"NGC4499","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h32m4.9s","赤经D(J2000)":"12.534694444444444","赤纬(J2000)":"-39h58m57s","赤纬D(J2000)":"-39.9825","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"93","详细描述":"very faint, large, round, very gradually a little brighter middle","简略描述":"vF, L, R, vglbM"},{"ID":"4500","标识":"NGC4500","M标识":"NGC4500","拓展名":"","组件":"","Class":"I 234","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h31m22s","赤经D(J2000)":"12.522777777777778","赤纬(J2000)":"+57h57m54s","赤纬D(J2000)":"57.965","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"130","详细描述":"","简略描述":"B, cS, E, pgbM, * 9 f 50\""},{"ID":"4501","标识":"NGC4501","M标识":"M88","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m59s","赤经D(J2000)":"12.533055555555556","赤纬(J2000)":"+14h25m11s","赤纬D(J2000)":"14.419722222222221","可见光星等V":"9.6","摄影(蓝光)星等B":"10.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"6.8","短轴(分)":"3.7","方位角":"140","详细描述":"bright, very large, very much extended","简略描述":"B, vL, vmE"},{"ID":"4502","标识":"NGC4502","M标识":"NGC4502","拓展名":"","组件":"","Class":"III 69","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h32m3.2s","赤经D(J2000)":"12.534222222222223","赤纬(J2000)":"+16h41m17s","赤纬D(J2000)":"16.688055555555557","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"40","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"4503","标识":"NGC4503","M标识":"NGC4503","拓展名":"","组件":"","Class":"II 66","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h32m6.1s","赤经D(J2000)":"12.535027777777778","赤纬(J2000)":"+11h10m32s","赤纬D(J2000)":"11.175555555555555","可见光星等V":"11.1","摄影(蓝光)星等B":"12.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.5","短轴(分)":"1.7","方位角":"12","详细描述":"pretty bright, small, round, gradually brighter middle","简略描述":"pB, S, R, gbM"},{"ID":"4504","标识":"NGC4504","M标识":"NGC4504","拓展名":"","组件":"","Class":"II 771","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h32m17.4s","赤经D(J2000)":"12.538166666666667","赤纬(J2000)":"-7h33m48s","赤纬D(J2000)":"-7.5633333333333335","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"15.2","长轴(分)":"3.2","短轴(分)":"2.2","方位角":"153","详细描述":"pretty bright, considerably large, irregularly extended, gradually a very little brighter middle, extremely mottled but not resolved","简略描述":"pB, cL, iE, gvlbM, er"},{"ID":"4505","标识":"NGC4505","M标识":"NGC4505","拓展名":"","组件":"","Class":"III 18","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h31m40.8s","赤经D(J2000)":"12.528","赤纬(J2000)":"+3h55m36s","赤纬D(J2000)":"3.9266666666666663","可见光星等V":"13.9","摄影(蓝光)星等B":"14.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"102","详细描述":"very faint, considerably large, mottled but not resolved, eastern of 2","简略描述":"vF, cL, r, f of 2"},{"ID":"4506","标识":"NGC4506","M标识":"NGC4506","拓展名":"","组件":"","Class":"II 631","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h32m10.5s","赤经D(J2000)":"12.536249999999999","赤纬(J2000)":"+13h25m13s","赤纬D(J2000)":"13.420277777777777","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"110","详细描述":"","简略描述":"cF, pmE 90° ±, gbM, * 9 p 8s"},{"ID":"4507","标识":"NGC4507","M标识":"NGC4507","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"夏普利-艾姆斯2","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h35m36.6s","赤经D(J2000)":"12.5935","赤纬(J2000)":"-39h54m33s","赤纬D(J2000)":"-39.909166666666664","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"56","详细描述":"","简略描述":"pB, S, R, psmbM * 16"},{"ID":"4508","标识":"NGC4508","M标识":"NGC4508","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h32m17.4s","赤经D(J2000)":"12.538166666666667","赤纬(J2000)":"+5h49m10s","赤纬D(J2000)":"5.819444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very small, round, suddenly brighter middle like a 13th-magnitude star","简略描述":"vS, R, sbM * 13"},{"ID":"4509","标识":"NGC4509","M标识":"NGC4509","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab\/P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h33m6.8s","赤经D(J2000)":"12.55188888888889","赤纬(J2000)":"+32h5m32s","赤纬D(J2000)":"32.092222222222226","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"155","详细描述":"very faint, small, round, a little brighter middle","简略描述":"vF, S, R, lbM"},{"ID":"4510","标识":"NGC4510","M标识":"NGC4510","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h31m47.2s","赤经D(J2000)":"12.52977777777778","赤纬(J2000)":"+64h14m2s","赤纬D(J2000)":"64.23388888888888","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"153","详细描述":"a cluster, very small, stars faint, much compressed","简略描述":"Cl, vS, st F, mC"},{"ID":"4511","标识":"NGC4511","M标识":"NGC4511","拓展名":"","组件":"","Class":"III 834","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h32m7.9s","赤经D(J2000)":"12.535527777777778","赤纬(J2000)":"+56h28m16s","赤纬D(J2000)":"56.471111111111114","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"9","详细描述":"pretty faint, very small, irregularly round, very gradually brighter middle","简略描述":"pF, vS, iR, vgbM"},{"ID":"4512","标识":"NGC4512","M标识":"NGC4512","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h32m47.6s","赤经D(J2000)":"12.546555555555555","赤纬(J2000)":"+63h56m22s","赤纬D(J2000)":"63.93944444444444","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.5","短轴(分)":"0.6","方位角":"167","详细描述":"bright, large, a little extended, a little brighter middle","简略描述":"pB, S, R, psbM"},{"ID":"4513","标识":"NGC4513","M标识":"NGC4513","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h32m1.6s","赤经D(J2000)":"12.533777777777777","赤纬(J2000)":"+66h19m59s","赤纬D(J2000)":"66.33305555555555","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"15","详细描述":"","简略描述":"F, R (? vS Cl)"},{"ID":"4514","标识":"NGC4514","M标识":"NGC4514","拓展名":"","组件":"","Class":"III 302","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h32m42.9s","赤经D(J2000)":"12.54525","赤纬(J2000)":"+29h42m44s","赤纬D(J2000)":"29.71222222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"51","详细描述":"extremely faint, very small, round, brighter middle","简略描述":"eF, vS, R, bM"},{"ID":"4515","标识":"NGC4515","M标识":"NGC4515","拓展名":"","组件":"","Class":"II 93","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m4.9s","赤经D(J2000)":"12.551361111111111","赤纬(J2000)":"+16h15m56s","赤纬D(J2000)":"16.265555555555554","可见光星等V":"12.3","摄影(蓝光)星等B":"13.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"9","详细描述":"faint, very small, brighter middle like a star","简略描述":"F, vS, bM *"},{"ID":"4516","标识":"NGC4516","M标识":"NGC4516","拓展名":"","组件":"","Class":"III 78","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m7.5s","赤经D(J2000)":"12.552083333333334","赤纬(J2000)":"+14h34m29s","赤纬D(J2000)":"14.574722222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"0.9","方位角":"0","详细描述":"faint, pretty small, round, mottled but not resolved","简略描述":"F, pS, R, r"},{"ID":"4517","标识":"NGC4517","M标识":"NGC4517","拓展名":"","组件":"","Class":"IV 5","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h32m45.6s","赤经D(J2000)":"12.546","赤纬(J2000)":"+0h6m56s","赤纬D(J2000)":"0.11555555555555556","可见光星等V":"10.4","摄影(蓝光)星等B":"11.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"10.5","短轴(分)":"1.5","方位角":"83","详细描述":"","简略描述":"cB, vL, vmE 89°, pB * in cont"},{"ID":"4518","标识":"NGC4518","M标识":"NGC4518","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h33m11.7s","赤经D(J2000)":"12.55325","赤纬(J2000)":"+7h51m8s","赤纬D(J2000)":"7.852222222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.4","方位角":"177","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"4519","标识":"NGC4519","M标识":"NGC4519","拓展名":"","组件":"","Class":"II 158","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h33m30.2s","赤经D(J2000)":"12.55838888888889","赤纬(J2000)":"+8h39m18s","赤纬D(J2000)":"8.655000000000001","可见光星等V":"11.8","摄影(蓝光)星等B":"12.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.2","短轴(分)":"2.5","方位角":"145","详细描述":"faint, pretty large, round, brighter middle, mottled but not resolved","简略描述":"F, pL, R, bM, r"},{"ID":"4520","标识":"NGC4520","M标识":"NGC4520","拓展名":"","组件":"","Class":"III 757","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h33m49.9s","赤经D(J2000)":"12.563861111111112","赤纬(J2000)":"-7h22m29s","赤纬D(J2000)":"-7.374722222222222","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"104","详细描述":"very faint, small, 2 very small stars involved","简略描述":"vF, S, 2 vS st inv"},{"ID":"4521","标识":"NGC4521","M标识":"NGC4521","拓展名":"","组件":"","Class":"II 849","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h32m47.6s","赤经D(J2000)":"12.546555555555555","赤纬(J2000)":"+63h56m22s","赤纬D(J2000)":"63.93944444444444","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.5","短轴(分)":"0.6","方位角":"167","详细描述":"","简略描述":"pB, S, pmE, pgbM, * 10 p 12s"},{"ID":"4522","标识":"NGC4522","M标识":"NGC4522","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h33m39.7s","赤经D(J2000)":"12.56102777777778","赤纬(J2000)":"+9h10m27s","赤纬D(J2000)":"9.174166666666666","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.6","短轴(分)":"1","方位角":"33","详细描述":"extremely faint, pretty large, a little extended, very little brighter middle","简略描述":"eF, pL, lE, vlbM"},{"ID":"4523","标识":"NGC4523","M标识":"NGC4523","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m48s","赤经D(J2000)":"12.563333333333334","赤纬(J2000)":"+15h10m6s","赤纬D(J2000)":"15.168333333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"14.4","B-V":"0.3","表面亮度(mag\/arcmin2)":"15.4","长轴(分)":"1.9","短轴(分)":"1.8","方位角":"45","详细描述":"","简略描述":"Cl + neb, close to a **"},{"ID":"4524","标识":"NGC4524","M标识":"NGC4524","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h33m54.4s","赤经D(J2000)":"12.565111111111111","赤纬(J2000)":"-12h1m38s","赤纬D(J2000)":"-12.027222222222223","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"80","详细描述":"very faint, irregular figure, brighter middle","简略描述":"vF, iF, bM"},{"ID":"4525","标识":"NGC4525","M标识":"NGC4525","拓展名":"","组件":"","Class":"II 325","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m51.1s","赤经D(J2000)":"12.564194444444444","赤纬(J2000)":"+30h16m39s","赤纬D(J2000)":"30.2775","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.6","短轴(分)":"1.3","方位角":"53","详细描述":"faint, pretty large, irregularly round, brighter middle","简略描述":"F, pL, iR, bM"},{"ID":"4526","标识":"NGC4526","M标识":"NGC4526","拓展名":"","组件":"","Class":"I 31, I 38","业余排名":"5","中文名":"遗失星系","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m2.8s","赤经D(J2000)":"12.567444444444444","赤纬(J2000)":"+7h41m56s","赤纬D(J2000)":"7.698888888888889","可见光星等V":"9.3","摄影(蓝光)星等B":"10.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"7","短轴(分)":"2.5","方位角":"113","详细描述":"","简略描述":"vB, vL, mE 120° ±, psmbM, bet 2 st 7 m"},{"ID":"4527","标识":"NGC4527","M标识":"NGC4527","拓展名":"","组件":"","Class":"II 37","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m8.8s","赤经D(J2000)":"12.569111111111111","赤纬(J2000)":"+2h39m12s","赤纬D(J2000)":"2.6533333333333333","可见光星等V":"10.5","摄影(蓝光)星等B":"11.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"6.2","短轴(分)":"2.1","方位角":"67","详细描述":"","简略描述":"pB, L, pmE 69°, mbM"},{"ID":"4528","标识":"NGC4528","M标识":"NGC4528","拓展名":"","组件":"","Class":"II 67","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m6s","赤经D(J2000)":"12.568333333333333","赤纬(J2000)":"+11h19m16s","赤纬D(J2000)":"11.321111111111112","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.6","短轴(分)":"1","方位角":"5","详细描述":"","简略描述":"pF, cS, R, bM, * 9 f 30s"},{"ID":"4529","标识":"NGC4529","M标识":"NGC4529","拓展名":"","组件":"","Class":"III 26","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h32m51.7s","赤经D(J2000)":"12.547694444444444","赤纬(J2000)":"+20h11m1s","赤纬D(J2000)":"20.183611111111112","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2","短轴(分)":"0.4","方位角":"99","详细描述":"extremely faint, large","简略描述":"eF, L"},{"ID":"4530","标识":"NGC4530","M标识":"NGC4530","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h33m47.6s","赤经D(J2000)":"12.563222222222223","赤纬(J2000)":"+41h21m14s","赤纬D(J2000)":"41.35388888888889","可见光星等V":"99","摄影(蓝光)星等B":"4.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebulous star 4th magnitude, extremely questionable (8 Canum Venaticorum)","简略描述":"Nebulous * 4 mag??? (8 Canum)"},{"ID":"4531","标识":"NGC4531","M标识":"NGC4531","拓展名":"","组件":"","Class":"II 175","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m15.8s","赤经D(J2000)":"12.571055555555555","赤纬(J2000)":"+13h4m33s","赤纬D(J2000)":"13.075833333333334","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.1","短轴(分)":"2","方位角":"155","详细描述":"faint, pretty large, round, very gradually brighter middle","简略描述":"F, pL, R, vgbM"},{"ID":"4532","标识":"NGC4532","M标识":"NGC4532","拓展名":"","组件":"","Class":"II 147","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m19.3s","赤经D(J2000)":"12.572027777777777","赤纬(J2000)":"+6h28m2s","赤纬D(J2000)":"6.467222222222222","可见光星等V":"11.9","摄影(蓝光)星等B":"12.3","B-V":"0.4","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.7","短轴(分)":"1.2","方位角":"163","详细描述":"pretty bright, pretty large, pretty much extended, very gradually brighter middle, mottled but not resolved","简略描述":"pB, pL, pmE, vgbM, r"},{"ID":"4533","标识":"NGC4533","M标识":"NGC4533","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m22.1s","赤经D(J2000)":"12.572805555555556","赤纬(J2000)":"+2h19m31s","赤纬D(J2000)":"2.3252777777777776","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.1","短轴(分)":"0.4","方位角":"161","详细描述":"","简略描述":"F, V 2 sf"},{"ID":"4534","标识":"NGC4534","M标识":"NGC4534","拓展名":"","组件":"","Class":"II 410","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h34m5.4s","赤经D(J2000)":"12.568166666666666","赤纬(J2000)":"+35h31m6s","赤纬D(J2000)":"35.51833333333333","可见光星等V":"12.3","摄影(蓝光)星等B":"12.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.6","短轴(分)":"2.1","方位角":"107","详细描述":"considerably faint, large, a little extended, very gradually a little brighter middle, mottled but not resolved","简略描述":"cF, L, lE, vglbM, r"},{"ID":"4535","标识":"NGC4535","M标识":"NGC4535","拓展名":"","组件":"","Class":"II 500","业余排名":"5","中文名":"科普兰遗失星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m20.2s","赤经D(J2000)":"12.572277777777778","赤纬(J2000)":"+8h11m51s","赤纬D(J2000)":"8.1975","可见光星等V":"10","摄影(蓝光)星等B":"10.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"7.1","短轴(分)":"5","方位角":"0","详细描述":"pretty faint, very large, mottled but not resolved","简略描述":"pF, vL, r"},{"ID":"4536","标识":"NGC4536","M标识":"NGC4536","拓展名":"","组件":"","Class":"V 2","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m26.9s","赤经D(J2000)":"12.57413888888889","赤纬(J2000)":"+2h11m14s","赤纬D(J2000)":"2.187222222222222","可见光星等V":"10.6","摄影(蓝光)星等B":"11.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"7.6","短轴(分)":"3.2","方位角":"130","详细描述":"","简略描述":"B, vL, mE 110°, sbM, er"},{"ID":"4537","标识":"NGC4537","M标识":"NGC4537","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h34m49.1s","赤经D(J2000)":"12.580305555555555","赤纬(J2000)":"+50h48m20s","赤纬D(J2000)":"50.80555555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.5","方位角":"28","详细描述":"bright, large, a little extended, a little brighter middle","简略描述":"eeF, S, R, nearly bet 2 st"},{"ID":"4538","标识":"NGC4538","M标识":"NGC4538","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m40.8s","赤经D(J2000)":"12.578","赤纬(J2000)":"+3h19m25s","赤纬D(J2000)":"3.323611111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"81","详细描述":"","简略描述":"eF, vS, nearly R"},{"ID":"4539","标识":"NGC4539","M标识":"NGC4539","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m34.6s","赤经D(J2000)":"12.576277777777777","赤纬(J2000)":"+18h12m10s","赤纬D(J2000)":"18.202777777777776","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.3","短轴(分)":"1.4","方位角":"95","详细描述":"pretty bright, pretty much extended","简略描述":"pB, pmE"},{"ID":"4540","标识":"NGC4540","M标识":"NGC4540","拓展名":"","组件":"","Class":"II 94, II 119","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m50.9s","赤经D(J2000)":"12.580805555555555","赤纬(J2000)":"+15h33m4s","赤纬D(J2000)":"15.551111111111112","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"40","详细描述":"faint, pretty small, brighter middle, mottled but not resolved","简略描述":"F, pS, bM, r"},{"ID":"4541","标识":"NGC4541","M标识":"NGC4541","拓展名":"","组件":"","Class":"III 493","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h35m10.7s","赤经D(J2000)":"12.586305555555557","赤纬(J2000)":"-0h13m16s","赤纬D(J2000)":"-0.22111111111111112","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"91","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"4542","标识":"NGC4542","M标识":"NGC4542","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h34m49.1s","赤经D(J2000)":"12.580305555555555","赤纬(J2000)":"+50h48m20s","赤纬D(J2000)":"50.80555555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.5","方位角":"28","详细描述":"extremely faint, pretty large, round","简略描述":"eF, pL, R"},{"ID":"4543","标识":"NGC4543","M标识":"NGC4543","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h35m20.2s","赤经D(J2000)":"12.588944444444445","赤纬(J2000)":"+6h6m56s","赤纬D(J2000)":"6.115555555555555","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"9","详细描述":"pretty faint, considerably small, round, brighter middle","简略描述":"pF, cS, R, bM"},{"ID":"4544","标识":"NGC4544","M标识":"NGC4544","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h35m36.5s","赤经D(J2000)":"12.593472222222223","赤纬(J2000)":"+3h2m8s","赤纬D(J2000)":"3.0355555555555553","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2","短轴(分)":"0.6","方位角":"161","详细描述":"very faint, small, round, between 2 stars","简略描述":"vF, S, R, bet 2 st"},{"ID":"4545","标识":"NGC4545","M标识":"NGC4545","拓展名":"","组件":"","Class":"II 850","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h34m34.1s","赤经D(J2000)":"12.576138888888888","赤纬(J2000)":"+63h31m29s","赤纬D(J2000)":"63.52472222222222","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.5","短轴(分)":"1.5","方位角":"8","详细描述":"faint, large, irregularly round, very gradually brighter middle, small (faint) star to northeast","简略描述":"F, L, iR, vgbM, S * nf"},{"ID":"4546","标识":"NGC4546","M标识":"NGC4546","拓展名":"","组件":"","Class":"I 160","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h35m29.5s","赤经D(J2000)":"12.59152777777778","赤纬(J2000)":"-3h47m35s","赤纬D(J2000)":"-3.7930555555555556","可见光星等V":"10.3","摄影(蓝光)星等B":"11.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"3.3","短轴(分)":"1.6","方位角":"78","详细描述":"very bright, considerably large, pretty much extended 78°, very suddenly much brighter middle and nucleus","简略描述":"vB, cL, pmE 78°, vsmbMN"},{"ID":"4547","标识":"NGC4547","M标识":"NGC4547","拓展名":"","组件":"","Class":"III 802","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h34m51.8s","赤经D(J2000)":"12.581055555555555","赤纬(J2000)":"+58h55m2s","赤纬D(J2000)":"58.91722222222222","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"96","详细描述":"","简略描述":"vF, pS, E, vgbM, * 9 f 2', p of 2"},{"ID":"4548","标识":"NGC4548","M标识":"M91","拓展名":"","组件":"","Class":"II 120","业余排名":"1","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m26.4s","赤经D(J2000)":"12.590666666666667","赤纬(J2000)":"+14h29m47s","赤纬D(J2000)":"14.496388888888887","可见光星等V":"10.2","摄影(蓝光)星等B":"11","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"5.2","短轴(分)":"4.2","方位角":"150","详细描述":"bright, large, a little extended, a little brighter middle","简略描述":"B, L, lE, lbM"},{"ID":"4549","标识":"NGC4549","M标识":"NGC4549","拓展名":"","组件":"","Class":"III 807","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h35m21.3s","赤经D(J2000)":"12.58925","赤纬(J2000)":"+58h56m58s","赤纬D(J2000)":"58.94944444444444","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"100","详细描述":"extremely faint, pretty small, extended, eastern of 2","简略描述":"eF, pS, E, f of 2"},{"ID":"4550","标识":"NGC4550","M标识":"NGC4550","拓展名":"","组件":"","Class":"I 36","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h35m30.6s","赤经D(J2000)":"12.591833333333334","赤纬(J2000)":"+12h13m15s","赤纬D(J2000)":"12.220833333333333","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.3","短轴(分)":"0.9","方位角":"178","详细描述":"pretty bright, small, very little extended, southwestern of 2","简略描述":"pB, S, vlE, sp of 2"},{"ID":"4551","标识":"NGC4551","M标识":"NGC4551","拓展名":"","组件":"","Class":"I 37","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h35m38s","赤经D(J2000)":"12.59388888888889","赤纬(J2000)":"+12h15m50s","赤纬D(J2000)":"12.26388888888889","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"1.4","方位角":"70","详细描述":"pretty bright, small, round, brighter middle, northeastern of 2","简略描述":"pB, S, R, bM, nf of 2"},{"ID":"4552","标识":"NGC4552","M标识":"M89","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h35m39.9s","赤经D(J2000)":"12.594416666666667","赤纬(J2000)":"+12h33m22s","赤纬D(J2000)":"12.556111111111111","可见光星等V":"9.8","摄影(蓝光)星等B":"10.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.5","短轴(分)":"3.5","方位角":"","详细描述":"pretty bright, pretty small, round, gradually much brighter middle","简略描述":"pB, pS, R, gmbM"},{"ID":"4553","标识":"NGC4553","M标识":"NGC4553","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h36m7.5s","赤经D(J2000)":"12.602083333333333","赤纬(J2000)":"-39h26m21s","赤纬D(J2000)":"-39.439166666666665","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.1","短轴(分)":"1","方位角":"176","详细描述":"faint, very little extended, gradually a little brighter middle","简略描述":"F, vlE, glbM"},{"ID":"4554","标识":"NGC4554","M标识":"NGC4554","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h35m59.5s","赤经D(J2000)":"12.599861111111112","赤纬(J2000)":"+11h15m55s","赤纬D(J2000)":"11.265277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"4555","标识":"NGC4555","M标识":"NGC4555","拓展名":"","组件":"","Class":"II 343","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m41s","赤经D(J2000)":"12.594722222222222","赤纬(J2000)":"+26h31m26s","赤纬D(J2000)":"26.523888888888887","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"125","详细描述":"bright, pretty small, irregularly round, very suddenly much brighter middle equivalent to 12th magnitude star","简略描述":"B, pS, iR, vsmbM * 12"},{"ID":"4556","标识":"NGC4556","M标识":"NGC4556","拓展名":"","组件":"","Class":"II 380","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m45.6s","赤经D(J2000)":"12.596","赤纬(J2000)":"+26h54m33s","赤纬D(J2000)":"26.909166666666664","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1","方位角":"80","详细描述":"pretty large, brighter middle and nucleus","简略描述":"F, pL"},{"ID":"4557","标识":"NGC4557","M标识":"NGC4557","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m49.7s","赤经D(J2000)":"12.597138888888889","赤纬(J2000)":"+27h3m14s","赤纬D(J2000)":"27.05388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty large, brighter middle and nucleus","简略描述":"Nebulous *"},{"ID":"4558","标识":"NGC4558","M标识":"NGC4558","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m52.6s","赤经D(J2000)":"12.597944444444446","赤纬(J2000)":"+26h59m30s","赤纬D(J2000)":"26.991666666666667","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"19","详细描述":"","简略描述":"vF, nf of 2 or ? 3"},{"ID":"4559","标识":"NGC4559","M标识":"NGC4559","拓展名":"","组件":"","Class":"I 92","业余排名":"2","中文名":"锦鲤星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m57.8s","赤经D(J2000)":"12.599388888888889","赤纬(J2000)":"+27h57m35s","赤纬D(J2000)":"27.959722222222222","可见光星等V":"10","摄影(蓝光)星等B":"10.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"10.7","短轴(分)":"4.4","方位角":"150","详细描述":"very bright, very large, much extended 150°, gradually brighter middle, 3 stars to east","简略描述":"vB, vL, mE 150°, gbM, 3 st f"},{"ID":"4560","标识":"NGC4560","M标识":"NGC4560","拓展名":"","组件":"","Class":"I 119","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m2.8s","赤经D(J2000)":"12.567444444444444","赤纬(J2000)":"+7h41m56s","赤纬D(J2000)":"7.698888888888889","可见光星等V":"9.3","摄影(蓝光)星等B":"10.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"7","短轴(分)":"2.5","方位角":"113","详细描述":"considerably bright, pretty large, round, gradually brighter middle","简略描述":"cB, pL, R, gbM"},{"ID":"4561","标识":"NGC4561","M标识":"NGC4561","拓展名":"","组件":"","Class":"II 407","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m8.1s","赤经D(J2000)":"12.60225","赤纬(J2000)":"+19h19m18s","赤纬D(J2000)":"19.321666666666665","可见光星等V":"12.5","摄影(蓝光)星等B":"12.9","B-V":"0.4","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"30","详细描述":"pretty bright, pretty large, very little extended, a little brighter middle, mottled but not resolved","简略描述":"pB, pL, vlE, lbM, r"},{"ID":"4562","标识":"NGC4562","M标识":"NGC4562","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m34.5s","赤经D(J2000)":"12.592916666666667","赤纬(J2000)":"+25h50m58s","赤纬D(J2000)":"25.849444444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.4","短轴(分)":"0.7","方位角":"48","详细描述":"pretty large, brighter middle and nucleus","简略描述":"S, sp V 24"},{"ID":"4563","标识":"NGC4563","M标识":"NGC4563","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m12.6s","赤经D(J2000)":"12.6035","赤纬(J2000)":"+26h56m30s","赤纬D(J2000)":"26.941666666666666","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"97","详细描述":"faint, very small, round, much brighter middle","简略描述":"F, vS, R, mbM"},{"ID":"4564","标识":"NGC4564","M标识":"NGC4564","拓展名":"","组件":"","Class":"II 68","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m26.9s","赤经D(J2000)":"12.607472222222222","赤纬(J2000)":"+11h26m23s","赤纬D(J2000)":"11.439722222222223","可见光星等V":"11.1","摄影(蓝光)星等B":"12.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.5","短轴(分)":"1.5","方位角":"47","详细描述":"pretty bright, small, a little extended, pretty suddenly brighter middle","简略描述":"pB, S, lE, psbM"},{"ID":"4565","标识":"NGC4565","M标识":"NGC4565","拓展名":"","组件":"","Class":"V 24","业余排名":"2","中文名":"针状星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m20.5s","赤经D(J2000)":"12.605694444444444","赤纬(J2000)":"+25h59m16s","赤纬D(J2000)":"25.98777777777778","可见光星等V":"9.6","摄影(蓝光)星等B":"10.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"15.8","短轴(分)":"2.1","方位角":"136","详细描述":"","简略描述":"B, eL, eE 135°, vsbMN = * 10·11"},{"ID":"4566","标识":"NGC4566","M标识":"NGC4566","拓展名":"","组件":"","Class":"III 880","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h36m0.2s","赤经D(J2000)":"12.600055555555555","赤纬(J2000)":"+54h13m14s","赤纬D(J2000)":"54.220555555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"80","详细描述":"pretty faint, small, irregularly round, gradually brighter middle","简略描述":"pF, S, iR, gbM"},{"ID":"4567","标识":"NGC4567","M标识":"NGC4567","拓展名":"","组件":"","Class":"IV 8","业余排名":"7","中文名":"双胞胎星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m32.7s","赤经D(J2000)":"12.609083333333333","赤纬(J2000)":"+11h15m28s","赤纬D(J2000)":"11.257777777777777","可见光星等V":"11.3","摄影(蓝光)星等B":"12.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.1","短轴(分)":"2.2","方位角":"85","详细描述":"","简略描述":"vF, L, np of D neb, pos 160° ±"},{"ID":"4568","标识":"NGC4568","M标识":"NGC4568","拓展名":"","组件":"","Class":"IV 9","业余排名":"8","中文名":"双胞胎星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m34.2s","赤经D(J2000)":"12.609499999999999","赤纬(J2000)":"+11h14m19s","赤纬D(J2000)":"11.23861111111111","可见光星等V":"10.8","摄影(蓝光)星等B":"11.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"4.6","短轴(分)":"2.2","方位角":"23","详细描述":"","简略描述":"vF, L, sf of D neb, pos 160° ±"},{"ID":"4569","标识":"NGC4569","M标识":"M90","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m50s","赤经D(J2000)":"12.613888888888889","赤纬(J2000)":"+13h9m50s","赤纬D(J2000)":"13.16388888888889","可见光星等V":"9.5","摄影(蓝光)星等B":"10.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"9.5","短轴(分)":"4.4","方位角":"23","详细描述":"pretty large, brighter middle and nucleus","简略描述":"pL, bMN"},{"ID":"4570","标识":"NGC4570","M标识":"NGC4570","拓展名":"","组件":"","Class":"I 32","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m53.2s","赤经D(J2000)":"12.614777777777778","赤纬(J2000)":"+7h14m49s","赤纬D(J2000)":"7.246944444444445","可见光星等V":"10.9","摄影(蓝光)星等B":"11.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"3.7","短轴(分)":"1.2","方位角":"159","详细描述":"","简略描述":"cB, pS, mE 0° ±, sbMrN"},{"ID":"4571","标识":"NGC4571","M标识":"NGC4571","拓展名":"","组件":"","Class":"III 602","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m56.4s","赤经D(J2000)":"12.615666666666666","赤纬(J2000)":"+14h13m3s","赤纬D(J2000)":"14.2175","可见光星等V":"11.3","摄影(蓝光)星等B":"11.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.6","短轴(分)":"3.2","方位角":"55","详细描述":"very faint, large, extended, very gradually brighter middle, 9th magnitude star near to northeast","简略描述":"vF, L, E, vgbM, * 9 nf nr"},{"ID":"4572","标识":"NGC4572","M标识":"NGC4572","拓展名":"","组件":"","Class":"III 939","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h35m45.5s","赤经D(J2000)":"12.595972222222223","赤纬(J2000)":"+74h14m46s","赤纬D(J2000)":"74.2461111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"0.3","方位角":"170","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"4573","标识":"NGC4573","M标识":"NGC4573","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h37m43.7s","赤经D(J2000)":"12.628805555555555","赤纬(J2000)":"-43h37m17s","赤纬D(J2000)":"-43.62138888888889","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"2.5","短轴(分)":"1.9","方位角":"138","详细描述":"","简略描述":"vF, S, * 10 n 30\""},{"ID":"4574","标识":"NGC4574","M标识":"NGC4574","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h37m43.5s","赤经D(J2000)":"12.62875","赤纬(J2000)":"-35h31m5s","赤纬D(J2000)":"-35.518055555555556","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"113","详细描述":"very faint, large, a little extended, very gradually a little brighter middle","简略描述":"vF, L, lE, vglbM"},{"ID":"4575","标识":"NGC4575","M标识":"NGC4575","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h37m51.1s","赤经D(J2000)":"12.63086111111111","赤纬(J2000)":"-40h32m15s","赤纬D(J2000)":"-40.5375","可见光星等V":"12.6","摄影(蓝光)星等B":"13.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"1.2","方位角":"106","详细描述":"faint, small, pretty much extended, 2 stars to west","简略描述":"F, S, pmE, 2 st p"},{"ID":"4576","标识":"NGC4576","M标识":"NGC4576","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h37m33.5s","赤经D(J2000)":"12.625972222222222","赤纬(J2000)":"+4h22m3s","赤纬D(J2000)":"4.3675","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"159","详细描述":"faint, 7th magnitude star to southeast","简略描述":"F, * 7 sf"},{"ID":"4577","标识":"NGC4577","M标识":"NGC4577","拓展名":"","组件":"","Class":"III 13","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h39m12.4s","赤经D(J2000)":"12.653444444444444","赤纬(J2000)":"+6h0m44s","赤纬D(J2000)":"6.012222222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"37","详细描述":"a remarkable object, very bright, very large, extremely extended 92°, very suddenly much bright middle and nucleus","简略描述":"vF, vS"},{"ID":"4578","标识":"NGC4578","M标识":"NGC4578","拓展名":"","组件":"","Class":"II 15","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h37m30.6s","赤经D(J2000)":"12.625166666666667","赤纬(J2000)":"+9h33m20s","赤纬D(J2000)":"9.555555555555557","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.1","短轴(分)":"2.3","方位角":"35","详细描述":"pretty faint, pretty small, round, suddenly brighter middle and nucleus, star to northwest","简略描述":"pF, pS, R, sbMN, * np"},{"ID":"4579","标识":"NGC4579","M标识":"M58","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h37m43.7s","赤经D(J2000)":"12.628805555555555","赤纬(J2000)":"+11h49m6s","赤纬D(J2000)":"11.818333333333333","可见光星等V":"9.7","摄影(蓝光)星等B":"10.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"6","短轴(分)":"4.8","方位角":"95","详细描述":"bright, large, irregularly round, very much brighter middle, mottled but not resolved","简略描述":"B, L, iR, vmbM, r"},{"ID":"4580","标识":"NGC4580","M标识":"NGC4580","拓展名":"","组件":"","Class":"I 124","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h37m48.3s","赤经D(J2000)":"12.630083333333333","赤纬(J2000)":"+5h22m5s","赤纬D(J2000)":"5.368055555555555","可见光星等V":"11.8","摄影(蓝光)星等B":"12.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.1","短轴(分)":"1.5","方位角":"165","详细描述":"pretty bright, large, very gradually brighter middle","简略描述":"pB, L, vgbM"},{"ID":"4581","标识":"NGC4581","M标识":"NGC4581","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h38m5.1s","赤经D(J2000)":"12.63475","赤纬(J2000)":"+1h28m42s","赤纬D(J2000)":"1.4783333333333335","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"173","详细描述":"faint, small, brighter middle, stellar nucleus","简略描述":"F, S, bM, stell N"},{"ID":"4582","标识":"NGC4582","M标识":"NGC4582","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h38m10.1s","赤经D(J2000)":"12.636138888888889","赤纬(J2000)":"+0h11m0s","赤纬D(J2000)":"0.18333333333333332","可见光星等V":"99","摄影(蓝光)星等B":"13.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* 12 in F neb"},{"ID":"4583","标识":"NGC4583","M标识":"NGC4583","拓展名":"","组件":"","Class":"III 495","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h38m4.4s","赤经D(J2000)":"12.634555555555554","赤纬(J2000)":"+33h27m31s","赤纬D(J2000)":"33.45861111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"91","详细描述":"considerably faint, small, a little extended, brighter middle","简略描述":"cF, S, lE, bM"},{"ID":"4584","标识":"NGC4584","M标识":"NGC4584","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h38m17.8s","赤经D(J2000)":"12.638277777777777","赤纬(J2000)":"+13h6m38s","赤纬D(J2000)":"13.110555555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1","方位角":"5","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"4585","标识":"NGC4585","M标识":"NGC4585","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h38m13.2s","赤经D(J2000)":"12.636999999999999","赤纬(J2000)":"+28h56m14s","赤纬D(J2000)":"28.93722222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"114","详细描述":"very faint, extremely small","简略描述":"vF, eS"},{"ID":"4586","标识":"NGC4586","M标识":"NGC4586","拓展名":"","组件":"","Class":"I 125","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h38m28.3s","赤经D(J2000)":"12.641194444444444","赤纬(J2000)":"+4h19m7s","赤纬D(J2000)":"4.318611111111111","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.8","短轴(分)":"1.2","方位角":"115","详细描述":"pretty bright, large, extended, pretty suddenly brighter middle","简略描述":"pB, L, E, psbM"},{"ID":"4587","标识":"NGC4587","M标识":"NGC4587","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h38m35.3s","赤经D(J2000)":"12.643138888888888","赤纬(J2000)":"+2h39m28s","赤纬D(J2000)":"2.6577777777777776","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"48","详细描述":"faint, pretty small, much brighter middle","简略描述":"F, pS, mbM"},{"ID":"4588","标识":"NGC4588","M标识":"NGC4588","拓展名":"","组件":"","Class":"III 98","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h38m45.4s","赤经D(J2000)":"12.645944444444444","赤纬(J2000)":"+6h46m3s","赤纬D(J2000)":"6.7675","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"57","详细描述":"very faint, extremely small","简略描述":"vF, eS"},{"ID":"4589","标识":"NGC4589","M标识":"NGC4589","拓展名":"","组件":"","Class":"I 273","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h37m24.6s","赤经D(J2000)":"12.6235","赤纬(J2000)":"+74h11m31s","赤纬D(J2000)":"74.19194444444445","可见光星等V":"10.7","摄影(蓝光)星等B":"11.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.4","短轴(分)":"2.8","方位角":"75","详细描述":"considerably bright, large, a little extended, pretty gradually much brighter middle","简略描述":"cB, L, lE, pgmbM"},{"ID":"4590","标识":"NGC4590","M标识":"M68","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"X","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h39m28s","赤经D(J2000)":"12.657777777777778","赤纬(J2000)":"-26h44m32s","赤纬D(J2000)":"-26.742222222222225","可见光星等V":"7.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"11","短轴(分)":"","方位角":"","详细描述":"a globular cluster, large, extremely rich, very compressed, irregularly round, clearly consisting of stars, stars of 12th magnitude","简略描述":"globular, L, eRi, vC, iR, rrr, st 12"},{"ID":"4591","标识":"NGC4591","M标识":"NGC4591","拓展名":"","组件":"","Class":"III 504","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h39m12.4s","赤经D(J2000)":"12.653444444444444","赤纬(J2000)":"+6h0m44s","赤纬D(J2000)":"6.012222222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"37","详细描述":"very faint, considerably small","简略描述":"vF, cS"},{"ID":"4592","标识":"NGC4592","M标识":"NGC4592","拓展名":"","组件":"","Class":"II 31","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h39m18.6s","赤经D(J2000)":"12.655166666666666","赤纬(J2000)":"-0h31m53s","赤纬D(J2000)":"-0.5313888888888889","可见光星等V":"11.6","摄影(蓝光)星等B":"12.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"5.8","短轴(分)":"1.5","方位角":"97","详细描述":"faint, large, extended 90°±, very gradually brighter middle","简略描述":"F, L, E 90° ±, vgbM"},{"ID":"4593","标识":"NGC4593","M标识":"NGC4593","拓展名":"","组件":"","Class":"II 183","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h39m39.3s","赤经D(J2000)":"12.660916666666667","赤纬(J2000)":"-5h20m38s","赤纬D(J2000)":"-5.3438888888888885","可见光星等V":"10.9","摄影(蓝光)星等B":"11.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.9","短轴(分)":"2.9","方位角":"114","详细描述":"","简略描述":"pB, cL, E, sbMN = *"},{"ID":"4594","标识":"NGC4594","M标识":"M104","拓展名":"","组件":"","Class":"I 43","业余排名":"1","中文名":"草帽星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h39m59.3s","赤经D(J2000)":"12.666472222222222","赤纬(J2000)":"-11h37m21s","赤纬D(J2000)":"-11.6225","可见光星等V":"8","摄影(蓝光)星等B":"9","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"8.6","短轴(分)":"4.2","方位角":"89","详细描述":"a remarkable object, very bright, very large, extremely extended 92°, very suddenly much bright middle and nucleus","简略描述":"!, vB, vL, eE 92°, vsmbMN"},{"ID":"4595","标识":"NGC4595","M标识":"NGC4595","拓展名":"","组件":"","Class":"II 632","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m51.7s","赤经D(J2000)":"12.664361111111111","赤纬(J2000)":"+15h17m52s","赤纬D(J2000)":"15.297777777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"110","详细描述":"pretty faint, pretty large, round, gradually brighter middle","简略描述":"pF, pL, R, gbM"},{"ID":"4596","标识":"NGC4596","M标识":"NGC4596","拓展名":"","组件":"","Class":"I 24","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h39m56s","赤经D(J2000)":"12.665555555555557","赤纬(J2000)":"+10h10m35s","赤纬D(J2000)":"10.176388888888889","可见光星等V":"10.4","摄影(蓝光)星等B":"11.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"4","短轴(分)":"3","方位角":"135","详细描述":"bright, pretty small, round, gradually much brighter middle, mottled but not resolved, 3 stars to east","简略描述":"B, pS, R, gmbM, r, 3 st f"},{"ID":"4597","标识":"NGC4597","M标识":"NGC4597","拓展名":"","组件":"","Class":"II 636","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h40m12.3s","赤经D(J2000)":"12.670083333333332","赤纬(J2000)":"-5h48m2s","赤纬D(J2000)":"-5.8005555555555555","可见光星等V":"12","摄影(蓝光)星等B":"12.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"4.1","短轴(分)":"1.9","方位角":"34","详细描述":"faint, very large, brighter middle","简略描述":"F, vL, bM"},{"ID":"4598","标识":"NGC4598","M标识":"NGC4598","拓展名":"","组件":"","Class":"III 105","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h40m11.9s","赤经D(J2000)":"12.669972222222222","赤纬(J2000)":"+8h23m0s","赤纬D(J2000)":"8.383333333333333","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"114","详细描述":"extremely faint, large, round, very little brighter middle","简略描述":"eF, L, R, vlbM"},{"ID":"4599","标识":"NGC4599","M标识":"NGC4599","拓展名":"","组件":"","Class":"III 509","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h40m26.9s","赤经D(J2000)":"12.674138888888889","赤纬(J2000)":"+1h11m48s","赤纬D(J2000)":"1.1966666666666668","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"144","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4600","标识":"NGC4600","M标识":"NGC4600","拓展名":"","组件":"","Class":"II 577","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h40m22.9s","赤经D(J2000)":"12.673027777777778","赤纬(J2000)":"+3h7m4s","赤纬D(J2000)":"3.117777777777778","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"60","详细描述":"faint, small, round, two 8th magnitude stars to east","简略描述":"F, S, R, 2 st 8 f"},{"ID":"4601","标识":"NGC4601","M标识":"NGC4601","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h40m46.6s","赤经D(J2000)":"12.679611111111111","赤纬(J2000)":"-40h53m37s","赤纬D(J2000)":"-40.89361111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"16","详细描述":"extremely faint, large, round, pretty suddenly a little brighter middle, western of 2","简略描述":"eF, L, R, pslbM, p of 2"},{"ID":"4602","标识":"NGC4602","M标识":"NGC4602","拓展名":"","组件":"","Class":"II 184","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h40m36.8s","赤经D(J2000)":"12.676888888888888","赤纬(J2000)":"-5h7m57s","赤纬D(J2000)":"-5.132499999999999","可见光星等V":"11.5","摄影(蓝光)星等B":"12.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.4","短轴(分)":"1.2","方位角":"99","详细描述":"faint, large, extended, very gradually a little brighter middle","简略描述":"F, L, E, vglbM"},{"ID":"4603","标识":"NGC4603","M标识":"NGC4603","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h40m55s","赤经D(J2000)":"12.681944444444444","赤纬(J2000)":"-40h58m34s","赤纬D(J2000)":"-40.976111111111116","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.4","短轴(分)":"2.5","方位角":"27","详细描述":"faint, large, round, very gradually brighter middle, mottled but not resolved","简略描述":"F, L, R, vgbM, r"},{"ID":"4604","标识":"NGC4604","M标识":"NGC4604","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h40m44.9s","赤经D(J2000)":"12.679138888888888","赤纬(J2000)":"-5h18m10s","赤纬D(J2000)":"-5.302777777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.4","方位角":"114","详细描述":"no description","简略描述":"No description"},{"ID":"4605","标识":"NGC4605","M标识":"NGC4605","拓展名":"","组件":"","Class":"I 254","业余排名":"6.5","中文名":"俄罗斯彩蛋星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h39m59.3s","赤经D(J2000)":"12.666472222222222","赤纬(J2000)":"+61h36m30s","赤纬D(J2000)":"61.608333333333334","可见光星等V":"10.3","摄影(蓝光)星等B":"10.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"5.9","短轴(分)":"2.4","方位角":"125","详细描述":"","简略描述":"B, L, vmE 118°.6, glbM"},{"ID":"4606","标识":"NGC4606","M标识":"NGC4606","拓展名":"","组件":"","Class":"III 43","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h40m57.5s","赤经D(J2000)":"12.682638888888889","赤纬(J2000)":"+11h54m43s","赤纬D(J2000)":"11.911944444444444","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.3","短轴(分)":"1.7","方位角":"33","详细描述":"","简略描述":"vF, pS, E, 2 or 3 vS st inv"},{"ID":"4607","标识":"NGC4607","M标识":"NGC4607","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h41m12.2s","赤经D(J2000)":"12.686722222222222","赤纬(J2000)":"+11h53m8s","赤纬D(J2000)":"11.885555555555555","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.9","短轴(分)":"0.7","方位角":"2","详细描述":"","简略描述":"F, mE, 3' or 4' f III 43"},{"ID":"4608","标识":"NGC4608","M标识":"NGC4608","拓展名":"","组件":"","Class":"II 69","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h41m13.2s","赤经D(J2000)":"12.687","赤纬(J2000)":"+10h9m20s","赤纬D(J2000)":"10.155555555555557","可见光星等V":"11","摄影(蓝光)星等B":"12","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.3","短轴(分)":"2.9","方位角":"120","详细描述":"","简略描述":"pB, pL, R, psbM, r, * 12 np 1'"},{"ID":"4609","标识":"NGC4609","M标识":"NGC4609","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"煤袋星团","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"南十字座","星座(En)":"CRU","赤经(J2000)":"12h42m19.8s","赤经D(J2000)":"12.705499999999999","赤纬(J2000)":"-62h59m38s","赤纬D(J2000)":"-62.99388888888889","可见光星等V":"6.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty compressed, considerably extended, stars of 10th magnitude","简略描述":"Cl, pL, pC, cE, st 10"},{"ID":"4610","标识":"NGC4610","M标识":"NGC4610","拓展名":"","组件":"","Class":"II 19, II 498","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m37.9s","赤经D(J2000)":"12.49386111111111","赤纬(J2000)":"+7h49m26s","赤纬D(J2000)":"7.823888888888889","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"0","详细描述":"","简略描述":"F, vL (Place uncertain)"},{"ID":"4611","标识":"NGC4611","M标识":"NGC4611","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m25.4s","赤经D(J2000)":"12.690388888888888","赤纬(J2000)":"+13h43m47s","赤纬D(J2000)":"13.729722222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.2","短轴(分)":"0.2","方位角":"126","详细描述":"considerably faint, small, a little extended, between 2 very faint stars","简略描述":"eF, S, lE, bet 2 vF st"},{"ID":"4612","标识":"NGC4612","M标识":"NGC4612","拓展名":"","组件":"","Class":"II 20, II 148","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h41m32.8s","赤经D(J2000)":"12.692444444444444","赤纬(J2000)":"+7h18m53s","赤纬D(J2000)":"7.314722222222222","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.7","短轴(分)":"2","方位角":"145","详细描述":"pretty bright, small, round, pretty suddenly much brighter middle","简略描述":"pB, S, R, psmbM"},{"ID":"4613","标识":"NGC4613","M标识":"NGC4613","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m29s","赤经D(J2000)":"12.69138888888889","赤纬(J2000)":"+26h5m18s","赤纬D(J2000)":"26.08833333333333","可见光星等V":"15.2","摄影(蓝光)星等B":"16.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, small, a little extended, 1st of 3","简略描述":"vF, S, lE, 1st of 3"},{"ID":"4614","标识":"NGC4614","M标识":"NGC4614","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m31.6s","赤经D(J2000)":"12.692111111111112","赤纬(J2000)":"+26h2m35s","赤纬D(J2000)":"26.043055555555558","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"175","详细描述":"faint, small, round, 12th magnitude star to northwest, 2nd of 3","简略描述":"F, S, R, * 12 np, 2nd of 3"},{"ID":"4615","标识":"NGC4615","M标识":"NGC4615","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m37.5s","赤经D(J2000)":"12.69375","赤纬(J2000)":"+26h4m22s","赤纬D(J2000)":"26.072777777777777","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"125","详细描述":"faint, pretty large, extended, 3rd of 3","简略描述":"F, pL, E, 3rd of 3"},{"ID":"4616","标识":"NGC4616","M标识":"NGC4616","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h42m16.5s","赤经D(J2000)":"12.704583333333332","赤纬(J2000)":"-40h38m30s","赤纬D(J2000)":"-40.641666666666666","可见光星等V":"13.3","摄影(蓝光)星等B":"14.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"","简略描述":"eF, vS, R, * att nf, p of 2"},{"ID":"4617","标识":"NGC4617","M标识":"NGC4617","拓展名":"","组件":"","Class":"II 744","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h41m5.7s","赤经D(J2000)":"12.684916666666666","赤纬(J2000)":"+50h23m39s","赤纬D(J2000)":"50.39416666666666","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.9","短轴(分)":"0.5","方位角":"179","详细描述":"pretty faint, small, irregularly round, extremely mottled but not resolved","简略描述":"pF, S, iR, er"},{"ID":"4618","标识":"NGC4618","M标识":"NGC4618","拓展名":"","组件":"","Class":"I 178","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h41m33s","赤经D(J2000)":"12.6925","赤纬(J2000)":"+41h9m4s","赤纬D(J2000)":"41.151111111111106","可见光星等V":"10.8","摄影(蓝光)星等B":"11.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"4.2","短轴(分)":"3.4","方位角":"25","详细描述":"","简略描述":"B, L, E, mbM, curved branch n"},{"ID":"4619","标识":"NGC4619","M标识":"NGC4619","拓展名":"","组件":"","Class":"II 411","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h41m44.4s","赤经D(J2000)":"12.695666666666668","赤纬(J2000)":"+35h3m46s","赤纬D(J2000)":"35.062777777777775","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"","简略描述":"F, pS, R, lbM, * 8·9 f"},{"ID":"4620","标识":"NGC4620","M标识":"NGC4620","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h41m59.3s","赤经D(J2000)":"12.699805555555557","赤纬(J2000)":"+12h56m36s","赤纬D(J2000)":"12.943333333333333","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"40","详细描述":"very faint, small, round, very gradually brighter middle","简略描述":"vF, S, R, vgbM"},{"ID":"4621","标识":"NGC4621","M标识":"M59","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m2.2s","赤经D(J2000)":"12.70061111111111","赤纬(J2000)":"+11h38m50s","赤纬D(J2000)":"11.647222222222222","可见光星等V":"9.6","摄影(蓝光)星等B":"10.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"5.4","短轴(分)":"3.7","方位角":"165","详细描述":"bright, pretty large, a little extended, very suddenly very much brighter middle, 2 stars to west","简略描述":"B, pL, lE, vsvmbM, 2 st p"},{"ID":"4622","标识":"NGC4622","M标识":"NGC4622","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"半人马座星系链","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h42m37.6s","赤经D(J2000)":"12.710444444444443","赤纬(J2000)":"-40h44m38s","赤纬D(J2000)":"-40.74388888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"173","详细描述":"pretty faint, small, round, pretty suddenly a little brighter middle, eastern of 2","简略描述":"pF, S, R, pslbM, f of 2"},{"ID":"4623","标识":"NGC4623","M标识":"NGC4623","拓展名":"","组件":"","Class":"II 149","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m10.6s","赤经D(J2000)":"12.702944444444444","赤纬(J2000)":"+7h40m35s","赤纬D(J2000)":"7.676388888888889","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.2","短轴(分)":"0.7","方位角":"176","详细描述":"considerably faint, pretty large, extended, pretty suddenly a little brighter middle, mottled but not resolved","简略描述":"cF, pL, E, pslbM, r"},{"ID":"4624","标识":"NGC4624","M标识":"NGC4624","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h45m6.1s","赤经D(J2000)":"12.751694444444444","赤纬(J2000)":"+3h3m19s","赤纬D(J2000)":"3.0552777777777775","可见光星等V":"10.5","摄影(蓝光)星等B":"11.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.5","短轴(分)":"3.5","方位角":"","详细描述":"bright, extended","简略描述":"B, E"},{"ID":"4625","标识":"NGC4625","M标识":"NGC4625","拓展名":"","组件":"","Class":"II 660","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm\/P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h41m52.5s","赤经D(J2000)":"12.697916666666666","赤纬(J2000)":"+41h16m25s","赤纬D(J2000)":"41.27361111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"12.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"132","详细描述":"pretty faint, small, round","简略描述":"pF, S, R"},{"ID":"4626","标识":"NGC4626","M标识":"NGC4626","拓展名":"","组件":"","Class":"II 772","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m25.4s","赤经D(J2000)":"12.707055555555554","赤纬(J2000)":"-7h2m41s","赤纬D(J2000)":"-7.044722222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"39","详细描述":"very faint, considerably small, a little extended, gradually a little brighter middle","简略描述":"vF, cS, lE, glbM"},{"ID":"4627","标识":"NGC4627","M标识":"NGC4627","拓展名":"","组件":"","Class":"II 659","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4\/P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h41m59.6s","赤经D(J2000)":"12.69988888888889","赤纬(J2000)":"+32h34m26s","赤纬D(J2000)":"32.573888888888895","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.7","短轴(分)":"1","方位角":"26","详细描述":"faint, small, round, northwest of 2","简略描述":"F, S, R, np of 2"},{"ID":"4628","标识":"NGC4628","M标识":"NGC4628","拓展名":"","组件":"","Class":"II 773","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m25.3s","赤经D(J2000)":"12.707027777777776","赤纬(J2000)":"-6h58m15s","赤纬D(J2000)":"-6.970833333333333","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"45","详细描述":"considerably faint, small, extended, gradually brighter middle","简略描述":"cF, S, E, gbM"},{"ID":"4629","标识":"NGC4629","M标识":"NGC4629","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m32.7s","赤经D(J2000)":"12.709083333333332","赤纬(J2000)":"-1h21m3s","赤纬D(J2000)":"-1.3508333333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"13.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"101","详细描述":"pretty bright, pretty large, extended, a little brighter middle, prehaps binuclear","简略描述":"pB, pL, E, lbM, ? biN"},{"ID":"4630","标识":"NGC4630","M标识":"NGC4630","拓展名":"","组件":"","Class":"II 532","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m31.1s","赤经D(J2000)":"12.708638888888888","赤纬(J2000)":"+3h57m31s","赤纬D(J2000)":"3.9586111111111113","可见光星等V":"12.6","摄影(蓝光)星等B":"13.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"10","详细描述":"considerably faint, small, round, a little brighter middle","简略描述":"cF, S, R, lbM"},{"ID":"4631","标识":"NGC4631","M标识":"NGC4631","拓展名":"","组件":"","Class":"V 42","业余排名":"2","中文名":"鲸鱼星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h42m7.6s","赤经D(J2000)":"12.70211111111111","赤纬(J2000)":"+32h32m30s","赤纬D(J2000)":"32.541666666666664","可见光星等V":"9.2","摄影(蓝光)星等B":"9.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"15.2","短轴(分)":"2.8","方位角":"86","详细描述":"remarkable, very bright, very large, extremely extended 70° or so, bright middle nucleus, 12th magnitude star attached on north","简略描述":"!, vB, vL, eE 70° ±, bMN, * 12 att n"},{"ID":"4632","标识":"NGC4632","M标识":"NGC4632","拓展名":"","组件":"","Class":"I 14","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m32.3s","赤经D(J2000)":"12.708972222222222","赤纬(J2000)":"-0h4m50s","赤纬D(J2000)":"-0.08055555555555555","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3","短轴(分)":"1.2","方位角":"63","详细描述":"pretty bright, large, extended 45°±","简略描述":"pB, L, E 45° ±"},{"ID":"4633","标识":"NGC4633","M标识":"NGC4633","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h42m37.1s","赤经D(J2000)":"12.710305555555555","赤纬(J2000)":"+14h21m25s","赤纬D(J2000)":"14.356944444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2","短轴(分)":"0.9","方位角":"33","详细描述":"","简略描述":"eeF, pS, F * close p, III 603 s"},{"ID":"4634","标识":"NGC4634","M标识":"NGC4634","拓展名":"","组件":"","Class":"III 603","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h42m40.8s","赤经D(J2000)":"12.711333333333332","赤纬(J2000)":"+14h17m46s","赤纬D(J2000)":"14.296111111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.9","短轴(分)":"0.9","方位角":"156","详细描述":"","简略描述":"vF, L, mE 135° ±, vgbM"},{"ID":"4635","标识":"NGC4635","M标识":"NGC4635","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h42m38.7s","赤经D(J2000)":"12.710749999999999","赤纬(J2000)":"+19h56m48s","赤纬D(J2000)":"19.946666666666665","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"170","详细描述":"very faint, large, very gradually a little brighter middle","简略描述":"vF, L, vglbM"},{"ID":"4636","标识":"NGC4636","M标识":"NGC4636","拓展名":"","组件":"","Class":"II 38","业余排名":"5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m49.7s","赤经D(J2000)":"12.713805555555554","赤纬(J2000)":"+2h41m14s","赤纬D(J2000)":"2.6872222222222226","可见光星等V":"9.5","摄影(蓝光)星等B":"10.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"5.9","短轴(分)":"4.6","方位角":"150","详细描述":"bright, large, irregularly round, very gradually very much brighter middle, mottled but not resolved","简略描述":"B, L, iR, vgvmbM, r"},{"ID":"4637","标识":"NGC4637","M标识":"NGC4637","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m54.2s","赤经D(J2000)":"12.715055555555555","赤纬(J2000)":"+11h26m17s","赤纬D(J2000)":"11.438055555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"98","详细描述":"","简略描述":"Makes a D neb with h 1402 (?)"},{"ID":"4638","标识":"NGC4638","M标识":"NGC4638","拓展名":"","组件":"","Class":"II 70, II 176","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m47.3s","赤经D(J2000)":"12.713138888888889","赤纬(J2000)":"+11h26m33s","赤纬D(J2000)":"11.4425","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"2.2","短轴(分)":"1.4","方位角":"125","详细描述":"faint, round, gradually brighter middle","简略描述":"F, R, gbM"},{"ID":"4639","标识":"NGC4639","M标识":"NGC4639","拓展名":"","组件":"","Class":"II 125","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m52.3s","赤经D(J2000)":"12.714527777777777","赤纬(J2000)":"+13h15m26s","赤纬D(J2000)":"13.257222222222222","可见光星等V":"11.5","摄影(蓝光)星等B":"12.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.9","短轴(分)":"2","方位角":"123","详细描述":"","简略描述":"pB, S, E, r, * 12 sf 1'"},{"ID":"4640","标识":"NGC4640","M标识":"NGC4640","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m57.8s","赤经D(J2000)":"12.716055555555554","赤纬(J2000)":"+12h17m12s","赤纬D(J2000)":"12.286666666666667","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"45","详细描述":"","简略描述":"eF, pL, lE, * nr p"},{"ID":"4641","标识":"NGC4641","M标识":"NGC4641","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h43m7.6s","赤经D(J2000)":"12.718777777777778","赤纬(J2000)":"+12h3m5s","赤纬D(J2000)":"12.051388888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"1","方位角":"170","详细描述":"","简略描述":"eF, pL, R, F * nr f"},{"ID":"4642","标识":"NGC4642","M标识":"NGC4642","拓展名":"","组件":"","Class":"III 494","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h43m17.6s","赤经D(J2000)":"12.721555555555556","赤纬(J2000)":"-0h38m42s","赤纬D(J2000)":"-0.645","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.9","短轴(分)":"0.5","方位角":"37","详细描述":"very faint, considerably small, extended","简略描述":"vF, cS, E"},{"ID":"4643","标识":"NGC4643","M标识":"NGC4643","拓展名":"","组件":"","Class":"I 10","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h43m20.1s","赤经D(J2000)":"12.72225","赤纬(J2000)":"+1h58m41s","赤纬D(J2000)":"1.9780555555555557","可见光星等V":"10.8","摄影(蓝光)星等B":"11.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.1","短轴(分)":"2.5","方位角":"48","详细描述":"considerably bright, pretty small, a little extended, much brighter middle","简略描述":"cB, pS, lE, mbM"},{"ID":"4644","标识":"NGC4644","M标识":"NGC4644","拓展名":"","组件":"","Class":"II 794, 1","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h42m42.6s","赤经D(J2000)":"12.711833333333333","赤纬(J2000)":"+55h8m43s","赤纬D(J2000)":"55.14527777777778","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"53","详细描述":"very faint, small, round, gradually brighter middle","简略描述":"vF, S, R, gbM"},{"ID":"4645","标识":"NGC4645","M标识":"NGC4645","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h44m9.9s","赤经D(J2000)":"12.736083333333333","赤纬(J2000)":"-41h44m59s","赤纬D(J2000)":"-41.749722222222225","可见光星等V":"11.8","摄影(蓝光)星等B":"12.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.2","短轴(分)":"1.4","方位角":"52","详细描述":"pretty bright, small, pretty suddenly brighter middle","简略描述":"pB, S, psbM"},{"ID":"4646","标识":"NGC4646","M标识":"NGC4646","拓展名":"","组件":"","Class":"II 910 = II 794, 2","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h42m52.1s","赤经D(J2000)":"12.714472222222222","赤纬(J2000)":"+54h51m24s","赤纬D(J2000)":"54.85666666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"1","短轴(分)":"0.8","方位角":"12","详细描述":"","简略描述":"F, S, 4 vS st sp"},{"ID":"4647","标识":"NGC4647","M标识":"NGC4647","拓展名":"","组件":"","Class":"III 44","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h43m32.5s","赤经D(J2000)":"12.725694444444445","赤纬(J2000)":"+11h34m58s","赤纬D(J2000)":"11.582777777777778","可见光星等V":"11.3","摄影(蓝光)星等B":"11.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.9","短轴(分)":"2.3","方位角":"125","详细描述":"","简略描述":"pF, pL, lE 115° ±, np of D neb"},{"ID":"4648","标识":"NGC4648","M标识":"NGC4648","拓展名":"","组件":"","Class":"I 274","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h41m44.4s","赤经D(J2000)":"12.695666666666668","赤纬(J2000)":"+74h25m20s","赤纬D(J2000)":"74.42222222222223","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"70","详细描述":"pretty bright, considerably small, round, gradually brighter middle, double star to west","简略描述":"pB, cS, R, gbM, ** p"},{"ID":"4649","标识":"NGC4649","M标识":"M60","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h43m39.8s","赤经D(J2000)":"12.727722222222223","赤纬(J2000)":"+11h33m11s","赤纬D(J2000)":"11.553055555555556","可见光星等V":"8.8","摄影(蓝光)星等B":"9.8","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"7.6","短轴(分)":"6.2","方位角":"105","详细描述":"very bright, pretty large, round, eastern of double nebula","简略描述":"vB, pL, R, f of D neb"},{"ID":"4650","标识":"NGC4650","M标识":"NGC4650","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"半人马座星系链","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h44m19.4s","赤经D(J2000)":"12.738722222222222","赤纬(J2000)":"-40h43m55s","赤纬D(J2000)":"-40.731944444444444","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.2","短轴(分)":"2.7","方位角":"164","详细描述":"very faint, round, brighter middle, mottled but not resolved.","简略描述":"vF, R, bM, r"},{"ID":"4651","标识":"NGC4651","M标识":"NGC4651","拓展名":"","组件":"","Class":"II 12","业余排名":"7","中文名":"伞星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sc\/P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h43m42.5s","赤经D(J2000)":"12.728472222222223","赤纬(J2000)":"+16h23m37s","赤纬D(J2000)":"16.39361111111111","可见光星等V":"10.8","摄影(蓝光)星等B":"11.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"4","短轴(分)":"2.7","方位角":"80","详细描述":"considerably bright, large, extended 90°, gradually brighter middle, mottled but not resolved","简略描述":"cB, L, E 90°, gbM, r"},{"ID":"4652","标识":"NGC4652","M标识":"NGC4652","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h43m19.7s","赤经D(J2000)":"12.722138888888889","赤纬(J2000)":"+58h57m55s","赤纬D(J2000)":"58.96527777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.2","方位角":"39","详细描述":"pretty faint, pretty large, gradually brighter middle, 2 bright stars 6 arcmin to northwest","简略描述":"pF, pL, gbM, 2 B st 6' np"},{"ID":"4653","标识":"NGC4653","M标识":"NGC4653","拓展名":"","组件":"","Class":"III 662","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h43m51s","赤经D(J2000)":"12.730833333333333","赤纬(J2000)":"-0h33m40s","赤纬D(J2000)":"-0.5611111111111111","可见光星等V":"12.2","摄影(蓝光)星等B":"12.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"3.1","短轴(分)":"2.7","方位角":"30","详细描述":"very faint, pretty large","简略描述":"vF, pL"},{"ID":"4654","标识":"NGC4654","M标识":"NGC4654","拓展名":"","组件":"","Class":"II 126","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h43m56.5s","赤经D(J2000)":"12.73236111111111","赤纬(J2000)":"+13h7m35s","赤纬D(J2000)":"13.12638888888889","可见光星等V":"10.5","摄影(蓝光)星等B":"11.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"5","短轴(分)":"3.1","方位角":"128","详细描述":"faint, very large, pretty much extended, possible double, 3 stars near","简略描述":"F, vL, pmE, ? D, 3 st nr"},{"ID":"4655","标识":"NGC4655","M标识":"NGC4655","拓展名":"","组件":"","Class":"II 661","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h43m36.4s","赤经D(J2000)":"12.726777777777778","赤纬(J2000)":"+41h1m9s","赤纬D(J2000)":"41.01916666666666","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"very faint, very small, stellar, 15th magnitude star to east","简略描述":"vF, vS, stellar, * 15 f"},{"ID":"4656","标识":"NGC4656","M标识":"NGC4656","拓展名":"","组件":"","Class":"I 176","业余排名":"6","中文名":"撬棒星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h43m58.1s","赤经D(J2000)":"12.732805555555556","赤纬(J2000)":"+32h10m11s","赤纬D(J2000)":"32.16972222222222","可见光星等V":"10.5","摄影(蓝光)星等B":"11","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"15.3","短轴(分)":"2.4","方位角":"33","详细描述":"a remarkable object, pretty bright, large, very much extended 34°, southwestern of 2","简略描述":"!, pB, L, vmE 34°, sp of 2"},{"ID":"4657","标识":"NGC4657","M标识":"NGC4657","拓展名":"","组件":"","Class":"I 177","业余排名":"8","中文名":"鱼钩星系","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h44m6.9s","赤经D(J2000)":"12.735249999999999","赤纬(J2000)":"+32h12m33s","赤纬D(J2000)":"32.20916666666667","可见光星等V":"12.4","摄影(蓝光)星等B":"13","B-V":"0.6","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"160","详细描述":"remarkable, pretty faint, large, extended about 90°, northeastern of 2","简略描述":"!, pF, L, E 90° ±, nf of 2"},{"ID":"4658","标识":"NGC4658","M标识":"NGC4658","拓展名":"","组件":"","Class":"II 558","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h44m37.7s","赤经D(J2000)":"12.743805555555555","赤纬(J2000)":"-10h5m4s","赤纬D(J2000)":"-10.084444444444445","可见光星等V":"12.5","摄影(蓝光)星等B":"13","B-V":"0.5","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.1","短轴(分)":"0.9","方位角":"3","详细描述":"very faint, large, extended, 16th magnitude star attached, 9th magnitude star to west","简略描述":"vF, L, E, * 16 att, * 9 p"},{"ID":"4659","标识":"NGC4659","M标识":"NGC4659","拓展名":"","组件":"","Class":"II 127","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h44m29.5s","赤经D(J2000)":"12.741527777777778","赤纬(J2000)":"+13h29m56s","赤纬D(J2000)":"13.498888888888889","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"173","详细描述":"faint, considerably small, round, brighter middle, mottled but not resolved","简略描述":"F, cS, R, bM, r"},{"ID":"4660","标识":"NGC4660","M标识":"NGC4660","拓展名":"","组件":"","Class":"II 71","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h44m31.8s","赤经D(J2000)":"12.742166666666666","赤纬(J2000)":"+11h11m26s","赤纬D(J2000)":"11.190555555555555","可见光星等V":"11.2","摄影(蓝光)星等B":"12.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.1","短轴(分)":"1.7","方位角":"100","详细描述":"very bright, small, very suddenly very much brighter middle and nucleus","简略描述":"vB, S, vsvmbMN"},{"ID":"4661","标识":"NGC4661","M标识":"NGC4661","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h45m14.9s","赤经D(J2000)":"12.754138888888889","赤纬(J2000)":"-40h49m28s","赤纬D(J2000)":"-40.824444444444445","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"121","详细描述":"considerably bright, large, extended 90°, gradually brighter middle, mottled but not resolved","简略描述":"F, pL, R, gbM"},{"ID":"4662","标识":"NGC4662","M标识":"NGC4662","拓展名":"","组件":"","Class":"II 643","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h44m26.3s","赤经D(J2000)":"12.740638888888888","赤纬(J2000)":"+37h7m16s","赤纬D(J2000)":"37.12111111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.9","短轴(分)":"1.6","方位角":"55","详细描述":"pretty faint, pretty large, round, gradually brighter middle, mottled but not resolved","简略描述":"pF, pL, R, gbM, r"},{"ID":"4663","标识":"NGC4663","M标识":"NGC4663","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h44m47s","赤经D(J2000)":"12.746388888888887","赤纬(J2000)":"-10h11m53s","赤纬D(J2000)":"-10.198055555555555","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"170","详细描述":"very faint, small, 13th or 14th magnitude star to east","简略描述":"vF, S, * 13·14 f"},{"ID":"4664","标识":"NGC4664","M标识":"NGC4664","拓展名":"","组件":"","Class":"II 39","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h45m6.1s","赤经D(J2000)":"12.751694444444444","赤纬(J2000)":"+3h3m19s","赤纬D(J2000)":"3.0552777777777775","可见光星等V":"10.5","摄影(蓝光)星等B":"11.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.5","短轴(分)":"3.5","方位角":"","详细描述":"pretty bright, 2 small stars in middle, small star to west (equal to h 1419?)","简略描述":"pB, 2 S st in M, S * p (? h 1419)"},{"ID":"4665","标识":"NGC4665","M标识":"NGC4665","拓展名":"","组件":"","Class":"I 142","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h45m6.1s","赤经D(J2000)":"12.751694444444444","赤纬(J2000)":"+3h3m19s","赤纬D(J2000)":"3.0552777777777775","可见光星等V":"10.5","摄影(蓝光)星等B":"11.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.5","短轴(分)":"3.5","方位角":"","详细描述":"pretty bright, 2 small stars in middle, small star to west (equal to h 1419?)","简略描述":"B, pL, iR, mbM, * 10 sp"},{"ID":"4666","标识":"NGC4666","M标识":"NGC4666","拓展名":"","组件":"","Class":"I 15","业余排名":"6","中文名":"超级风星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h45m8.2s","赤经D(J2000)":"12.752277777777778","赤纬(J2000)":"-0h27m46s","赤纬D(J2000)":"-0.4627777777777778","可见光星等V":"10.7","摄影(蓝光)星等B":"11.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"4.5","短轴(分)":"1.4","方位角":"42","详细描述":"bright, very large, much extended 45°±, pretty suddenly brighter middle","简略描述":"B, vL, mE 45° ±, psbM"},{"ID":"4667","标识":"NGC4667","M标识":"NGC4667","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m47.3s","赤经D(J2000)":"12.713138888888889","赤纬(J2000)":"+11h26m33s","赤纬D(J2000)":"11.4425","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"2.2","短轴(分)":"1.4","方位角":"125","详细描述":"bright, small, round, pretty suddenly brighter middle?","简略描述":"B, S, R, psbM (?)"},{"ID":"4668","标识":"NGC4668","M标识":"NGC4668","拓展名":"","组件":"","Class":"III 663","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h45m31.8s","赤经D(J2000)":"12.758833333333333","赤纬(J2000)":"-0h32m10s","赤纬D(J2000)":"-0.5361111111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"5","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"4669","标识":"NGC4669","M标识":"NGC4669","拓展名":"","组件":"","Class":"III 778","业余排名":"14","中文名":"黑胶唱片星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h44m46.7s","赤经D(J2000)":"12.746305555555555","赤纬(J2000)":"+54h52m34s","赤纬D(J2000)":"54.876111111111115","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"177","详细描述":"faint, extended, (mottled but not resolved?)","简略描述":"F, E (? r)"},{"ID":"4670","标识":"NGC4670","M标识":"NGC4670","拓展名":"","组件":"","Class":"III 328","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m16.9s","赤经D(J2000)":"12.754694444444445","赤纬(J2000)":"+27h7m33s","赤纬D(J2000)":"27.125833333333333","可见光星等V":"12.7","摄影(蓝光)星等B":"13.1","B-V":"0.4","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"90","详细描述":"pretty faint, considerably small, round, brighter middle, mottled but not resolved, western of 2","简略描述":"pF, cS, R, bM, r, p of 2"},{"ID":"4671","标识":"NGC4671","M标识":"NGC4671","拓展名":"","组件":"","Class":"II 774","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h45m47.5s","赤经D(J2000)":"12.763194444444444","赤纬(J2000)":"-7h4m11s","赤纬D(J2000)":"-7.069722222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"141","详细描述":"pretty faint, small, round, pretty suddenly much brighter middle","简略描述":"pF, S, R, psmbM"},{"ID":"4672","标识":"NGC4672","M标识":"NGC4672","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h46m15.6s","赤经D(J2000)":"12.771","赤纬(J2000)":"-41h42m21s","赤纬D(J2000)":"-41.70583333333334","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.2","短轴(分)":"0.6","方位角":"47","详细描述":"extremely faint, small, round, very gradually brighter middle","简略描述":"eF, S, R, vgbM"},{"ID":"4673","标识":"NGC4673","M标识":"NGC4673","拓展名":"","组件":"","Class":"III 329","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m34.7s","赤经D(J2000)":"12.759638888888889","赤纬(J2000)":"+27h3m40s","赤纬D(J2000)":"27.061111111111114","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.8","方位角":"170","详细描述":"faint, very small, round, suddenly brighter middle equivalent to 10th magnitude star, eastern of 2","简略描述":"F, vS, R, sbM * 10, f of 2"},{"ID":"4674","标识":"NGC4674","M标识":"NGC4674","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h46m3.3s","赤经D(J2000)":"12.767583333333334","赤纬(J2000)":"-8h39m19s","赤纬D(J2000)":"-8.655277777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"119","详细描述":"very faint, considerably small, round, gradually a little brighter middle","简略描述":"vF, cS, R, glbM"},{"ID":"4675","标识":"NGC4675","M标识":"NGC4675","拓展名":"","组件":"","Class":"II 795","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h45m31.7s","赤经D(J2000)":"12.758805555555556","赤纬(J2000)":"+54h44m14s","赤纬D(J2000)":"54.73722222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"97","详细描述":"considerably faint, small, a little extended","简略描述":"cF, S, lE"},{"ID":"4676","标识":"NGC4676","M标识":"NGC4676","拓展名":"A","组件":"","Class":"II 326","业余排名":"14","中文名":"双鼠星系","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h46m10.1s","赤经D(J2000)":"12.769472222222223","赤纬(J2000)":"+30h43m57s","赤纬D(J2000)":"30.732499999999998","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"0","详细描述":"very faint, pretty much extended, perhaps bi-nuclear","简略描述":"vF, pmE, ? biN"},{"ID":"4677","标识":"NGC4677","M标识":"NGC4677","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h46m57s","赤经D(J2000)":"12.7825","赤纬(J2000)":"-41h34m57s","赤纬D(J2000)":"-41.5825","可见光星等V":"12.8","摄影(蓝光)星等B":"13.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"167","详细描述":"extremely faint, a little extended, very gradually brighter middle","简略描述":"eF, lE, vgbM"},{"ID":"4678","标识":"NGC4678","M标识":"NGC4678","拓展名":"","组件":"2","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h49m41s","赤经D(J2000)":"12.828055555555554","赤纬(J2000)":"-4h34m49s","赤纬D(J2000)":"-4.580277777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"100","详细描述":"extremely faint, extremely small, round (nebulous?), star 2 seconds of time to east","简略描述":"eF, eS, R (neb ?), * 2s f"},{"ID":"4679","标识":"NGC4679","M标识":"NGC4679","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h47m30s","赤经D(J2000)":"12.791666666666666","赤纬(J2000)":"-39h34m16s","赤纬D(J2000)":"-39.571111111111115","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.5","短轴(分)":"0.9","方位角":"4","详细描述":"most extremely faint, pretty large, round","简略描述":"eeF, pL, R"},{"ID":"4680","标识":"NGC4680","M标识":"NGC4680","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h46m54.7s","赤经D(J2000)":"12.781861111111112","赤纬(J2000)":"-11h38m11s","赤纬D(J2000)":"-11.636388888888888","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"40","详细描述":"extremely faint, small, 1 or 2 stars involved","简略描述":"eF, S, 1 or 2 st inv"},{"ID":"4681","标识":"NGC4681","M标识":"NGC4681","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h47m28.7s","赤经D(J2000)":"12.791305555555555","赤纬(J2000)":"-43h20m5s","赤纬D(J2000)":"-43.334722222222226","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"166","详细描述":"pretty faint, small, round, gradually brighter middle","简略描述":"pF, S, R, gbM"},{"ID":"4682","标识":"NGC4682","M标识":"NGC4682","拓展名":"","组件":"","Class":"III 523","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h47m15.5s","赤经D(J2000)":"12.787638888888889","赤纬(J2000)":"-10h3m50s","赤纬D(J2000)":"-10.06388888888889","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.5","短轴(分)":"1.2","方位角":"83","详细描述":"considerably faint, large, extended 45°±, gradually a very little brighter middle","简略描述":"cF, L, E 45° ±, gvlbM"},{"ID":"4683","标识":"NGC4683","M标识":"NGC4683","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h47m42.2s","赤经D(J2000)":"12.795055555555555","赤纬(J2000)":"-41h31m44s","赤纬D(J2000)":"-41.528888888888886","可见光星等V":"12.7","摄影(蓝光)星等B":"13.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"130","详细描述":"extremely faint, pretty small, round, very gradually brighter middle, small star to southwest","简略描述":"eF, pS, R, vgbM, S * sp"},{"ID":"4684","标识":"NGC4684","M标识":"NGC4684","拓展名":"","组件":"","Class":"II 181","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h47m17.6s","赤经D(J2000)":"12.788222222222222","赤纬(J2000)":"-2h43m37s","赤纬D(J2000)":"-2.7269444444444444","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2.8","短轴(分)":"1.1","方位角":"23","详细描述":"bright, pretty large, pretty much extended 25°","简略描述":"B, pL, pmE 25°"},{"ID":"4685","标识":"NGC4685","M标识":"NGC4685","拓展名":"","组件":"","Class":"III 398","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h47m11.4s","赤经D(J2000)":"12.7865","赤纬(J2000)":"+19h27m53s","赤纬D(J2000)":"19.46472222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"1.2","方位角":"155","详细描述":"faint, small, round, suddenly brighter middle like a star, partially resolved (some stars seen)","简略描述":"F, S, R, sbM *, rr"},{"ID":"4686","标识":"NGC4686","M标识":"NGC4686","拓展名":"","组件":"","Class":"II 796","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h46m39.7s","赤经D(J2000)":"12.777694444444446","赤纬(J2000)":"+54h32m4s","赤纬D(J2000)":"54.53444444444444","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2","短轴(分)":"0.6","方位角":"3","详细描述":"pretty faint, very small, very much extended, very suddenly much brighter middle","简略描述":"pF, vS, vmE, vsmbM"},{"ID":"4687","标识":"NGC4687","M标识":"NGC4687","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h47m23.8s","赤经D(J2000)":"12.789944444444444","赤纬(J2000)":"+35h21m7s","赤纬D(J2000)":"35.35194444444445","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"118","详细描述":"very faint, very small, round, pretty suddenly brighter middle","简略描述":"vF, vS, R, psbM"},{"ID":"4688","标识":"NGC4688","M标识":"NGC4688","拓展名":"","组件":"","Class":"III 543","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h47m46.5s","赤经D(J2000)":"12.79625","赤纬(J2000)":"+4h20m9s","赤纬D(J2000)":"4.335833333333333","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"3.2","短轴(分)":"2.8","方位角":"123","详细描述":"extremely faint, pretty large, 9th or 10th magnitude star 10 seconds of time to west","简略描述":"eF, pL, * 9·10 p 10s"},{"ID":"4689","标识":"NGC4689","M标识":"NGC4689","拓展名":"","组件":"","Class":"II 128","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h47m45.7s","赤经D(J2000)":"12.796027777777777","赤纬(J2000)":"+13h45m44s","赤纬D(J2000)":"13.762222222222222","可见光星等V":"11","摄影(蓝光)星等B":"11.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"4.3","短轴(分)":"3.5","方位角":"160","详细描述":"pretty bright, very large, extended, very gradually a little brighter middle, mottled but not resolved","简略描述":"pB, vL, E, vglbM, r"},{"ID":"4690","标识":"NGC4690","M标识":"NGC4690","拓展名":"","组件":"","Class":"III 664","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h47m55.5s","赤经D(J2000)":"12.79875","赤纬(J2000)":"-1h39m22s","赤纬D(J2000)":"-1.656111111111111","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"150","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"4691","标识":"NGC4691","M标识":"NGC4691","拓展名":"","组件":"","Class":"II 182","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h48m13.4s","赤经D(J2000)":"12.803722222222223","赤纬(J2000)":"-3h19m57s","赤纬D(J2000)":"-3.3324999999999996","可见光星等V":"11.1","摄影(蓝光)星等B":"11.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.7","短轴(分)":"2.5","方位角":"85","详细描述":"pretty bright, pretty large, extended 90°±, much brighter middle","简略描述":"pB, pL, E 90° ±, mbM"},{"ID":"4692","标识":"NGC4692","M标识":"NGC4692","拓展名":"","组件":"","Class":"II 381","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h47m55.2s","赤经D(J2000)":"12.798666666666666","赤纬(J2000)":"+27h13m20s","赤纬D(J2000)":"27.22222222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"faint, considerably small, round, brighter middle","简略描述":"F, cS, R, bM"},{"ID":"4693","标识":"NGC4693","M标识":"NGC4693","拓展名":"","组件":"","Class":"III 906","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h47m9s","赤经D(J2000)":"12.785833333333333","赤纬(J2000)":"+71h10m34s","赤纬D(J2000)":"71.17611111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.4","短轴(分)":"0.5","方位角":"34","详细描述":"very faint, pretty large, extended","简略描述":"vF, plE"},{"ID":"4694","标识":"NGC4694","M标识":"NGC4694","拓展名":"","组件":"","Class":"II 72","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h48m14.9s","赤经D(J2000)":"12.80413888888889","赤纬(J2000)":"+10h59m2s","赤纬D(J2000)":"10.983888888888888","可见光星等V":"11.4","摄影(蓝光)星等B":"12.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.3","短轴(分)":"1.6","方位角":"140","详细描述":"pretty faint, small, very little extended","简略描述":"pF, S, vlE"},{"ID":"4695","标识":"NGC4695","M标识":"NGC4695","拓展名":"","组件":"","Class":"III 985","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h47m32s","赤经D(J2000)":"12.792222222222222","赤纬(J2000)":"+54h22m28s","赤纬D(J2000)":"54.37444444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"80","详细描述":"extremely faint, pretty small, very little extended, much brighter middle and nucleus","简略描述":"eF, pS, vlE, mbMN"},{"ID":"4696","标识":"NGC4696","M标识":"NGC4696","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1\/P","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h48m49.1s","赤经D(J2000)":"12.813638888888889","赤纬(J2000)":"-41h18m42s","赤纬D(J2000)":"-41.31166666666666","可见光星等V":"10.4","摄影(蓝光)星等B":"11.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"4.7","短轴(分)":"3.3","方位角":"107","详细描述":"pretty bright, large, round, gradually brighter middle, mottled but not resolved","简略描述":"pB, L, R, gbM, r"},{"ID":"4697","标识":"NGC4697","M标识":"NGC4697","拓展名":"","组件":"","Class":"I 39","业余排名":"2","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h48m35.8s","赤经D(J2000)":"12.809944444444445","赤纬(J2000)":"-5h48m0s","赤纬D(J2000)":"-5.8","可见光星等V":"9.2","摄影(蓝光)星等B":"10.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"7.2","短轴(分)":"4.7","方位角":"70","详细描述":"very bright, large, a little extended 45°±, suddenly much brighter middle and nucleus","简略描述":"vB, L, lE 45° ±, smbMN"},{"ID":"4698","标识":"NGC4698","M标识":"NGC4698","拓展名":"","组件":"","Class":"I 8, III 6","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h48m23s","赤经D(J2000)":"12.80638888888889","赤纬(J2000)":"+8h29m18s","赤纬D(J2000)":"8.488333333333333","可见光星等V":"10.6","摄影(蓝光)星等B":"11.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"4","短轴(分)":"2.5","方位角":"170","详细描述":"considerably bright, pretty large, irregularly round, brighter middle, mottled but not resolved","简略描述":"cB, pL, iR, bM, r"},{"ID":"4699","标识":"NGC4699","M标识":"NGC4699","拓展名":"","组件":"","Class":"I 129","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h49m2.2s","赤经D(J2000)":"12.817277777777777","赤纬(J2000)":"-8h39m50s","赤纬D(J2000)":"-8.66388888888889","可见光星等V":"9.5","摄影(蓝光)星等B":"10.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"3.8","短轴(分)":"2.8","方位角":"45","详细描述":"very bright, round, very much brighter middle and mottled but not resolved nucleus, mottled but not resolved","简略描述":"vB, R, vmbMrN, r"},{"ID":"4700","标识":"NGC4700","M标识":"NGC4700","拓展名":"","组件":"","Class":"III 524","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h49m7.8s","赤经D(J2000)":"12.818833333333334","赤纬(J2000)":"-11h24m42s","赤纬D(J2000)":"-11.411666666666667","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.2","短轴(分)":"0.8","方位角":"48","详细描述":"faint, large, much extended 40°, a very little brighter middle, bright star to west","简略描述":"F, L, mE 40°, vlbM, B * p"},{"ID":"4701","标识":"NGC4701","M标识":"NGC4701","拓展名":"","组件":"","Class":"II 578","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h49m11.4s","赤经D(J2000)":"12.819833333333333","赤纬(J2000)":"+3h23m20s","赤纬D(J2000)":"3.388888888888889","可见光星等V":"12.4","摄影(蓝光)星等B":"12.8","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.8","短轴(分)":"2.1","方位角":"45","详细描述":"faint, small","简略描述":"F, S"},{"ID":"4702","标识":"NGC4702","M标识":"NGC4702","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h47m55.2s","赤经D(J2000)":"12.798666666666666","赤纬(J2000)":"+27h13m20s","赤纬D(J2000)":"27.22222222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"a cluster, faint, small, very much compressed","简略描述":"Cl, F, S, vmC"},{"ID":"4703","标识":"NGC4703","M标识":"NGC4703","拓展名":"","组件":"","Class":"III 514","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h49m18.9s","赤经D(J2000)":"12.821916666666667","赤纬(J2000)":"-9h6m30s","赤纬D(J2000)":"-9.108333333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3","短轴(分)":"0.6","方位角":"156","详细描述":"extremely faint, considerably small, pretty much extended","简略描述":"eF, cS, pmE"},{"ID":"4704","标识":"NGC4704","M标识":"NGC4704","拓展名":"","组件":"","Class":"II 662","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc\/P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h48m46.4s","赤经D(J2000)":"12.812888888888889","赤纬(J2000)":"+41h55m16s","赤纬D(J2000)":"41.92111111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.9","方位角":"105","详细描述":"considerably faint, small, round, gradually brighter middle","简略描述":"cF, S, R, gbM"},{"ID":"4705","标识":"NGC4705","M标识":"NGC4705","拓展名":"","组件":"","Class":"III 610","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h49m24.9s","赤经D(J2000)":"12.823583333333334","赤纬(J2000)":"-5h11m43s","赤纬D(J2000)":"-5.195277777777778","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.1","短轴(分)":"1","方位角":"125","详细描述":"considerably faint, pretty large, a little extended","简略描述":"cF, pL, lE"},{"ID":"4706","标识":"NGC4706","M标识":"NGC4706","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h49m54s","赤经D(J2000)":"12.831666666666667","赤纬(J2000)":"-41h16m46s","赤纬D(J2000)":"-41.279444444444444","可见光星等V":"12.8","摄影(蓝光)星等B":"13.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"24","详细描述":"very faint, very small, round, pretty suddenly brighter middle","简略描述":"vF, vS, R, psbM"},{"ID":"4707","标识":"NGC4707","M标识":"NGC4707","拓展名":"","组件":"","Class":"III 815","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h48m23.2s","赤经D(J2000)":"12.806444444444445","赤纬(J2000)":"+51h9m48s","赤纬D(J2000)":"51.163333333333334","可见光星等V":"12.9","摄影(蓝光)星等B":"13.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"2.2","短轴(分)":"2.1","方位角":"25","详细描述":"small, stellar","简略描述":"S, stellar"},{"ID":"4708","标识":"NGC4708","M标识":"NGC4708","拓展名":"","组件":"","Class":"III 722","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h49m41.6s","赤经D(J2000)":"12.828222222222221","赤纬(J2000)":"-11h5m37s","赤纬D(J2000)":"-11.093611111111112","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"55","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"4709","标识":"NGC4709","M标识":"NGC4709","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h50m3.9s","赤经D(J2000)":"12.834416666666668","赤纬(J2000)":"-41h22m57s","赤纬D(J2000)":"-41.3825","可见光星等V":"10.9","摄影(蓝光)星等B":"12","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.3","短轴(分)":"2","方位角":"112","详细描述":"pretty bright, considerably small, round, gradually brighter middle","简略描述":"pB, cS, R, gbM"},{"ID":"4710","标识":"NGC4710","M标识":"NGC4710","拓展名":"","组件":"","Class":"II 95","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h49m38.7s","赤经D(J2000)":"12.827416666666666","赤纬(J2000)":"+15h9m53s","赤纬D(J2000)":"15.164722222222222","可见光星等V":"11","摄影(蓝光)星等B":"11.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"4.9","短轴(分)":"1.2","方位角":"27","详细描述":"","简略描述":"cB, pL, vmE 28°.5, sbMN"},{"ID":"4711","标识":"NGC4711","M标识":"NGC4711","拓展名":"","组件":"","Class":"II 412","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h48m45.7s","赤经D(J2000)":"12.812694444444444","赤纬(J2000)":"+35h19m58s","赤纬D(J2000)":"35.33277777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"40","详细描述":"faint, small, extended, gradually a little brighter middle, extremely mottled but not resolved","简略描述":"F, S, E, glbM, er"},{"ID":"4712","标识":"NGC4712","M标识":"NGC4712","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h49m34.1s","赤经D(J2000)":"12.826138888888888","赤纬(J2000)":"+25h28m11s","赤纬D(J2000)":"25.46972222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.3","短轴(分)":"0.9","方位角":"160","详细描述":"very faint, pretty large","简略描述":"vF, pL"},{"ID":"4713","标识":"NGC4713","M标识":"NGC4713","拓展名":"","组件":"","Class":"I 140","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h49m57.6s","赤经D(J2000)":"12.832666666666666","赤纬(J2000)":"+5h18m40s","赤纬D(J2000)":"5.311111111111111","可见光星等V":"11.7","摄影(蓝光)星等B":"12.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.9","短轴(分)":"1.8","方位角":"100","详细描述":"pretty bright, large, very little extended, gradually a little brighter middle","简略描述":"pB, L, vlE, glbM"},{"ID":"4714","标识":"NGC4714","M标识":"NGC4714","拓展名":"","组件":"","Class":"III 536","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h50m19.2s","赤经D(J2000)":"12.838666666666667","赤纬(J2000)":"-13h19m28s","赤纬D(J2000)":"-13.324444444444444","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"150","详细描述":"faint, pretty small, round, gradually brighter middle","简略描述":"F, pS, R, gbM"},{"ID":"4715","标识":"NGC4715","M标识":"NGC4715","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h49m57.8s","赤经D(J2000)":"12.832722222222221","赤纬(J2000)":"+27h49m22s","赤纬D(J2000)":"27.822777777777777","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"20","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"4716","标识":"NGC4716","M标识":"NGC4716","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h50m33.1s","赤经D(J2000)":"12.842527777777779","赤纬(J2000)":"-9h27m3s","赤纬D(J2000)":"-9.450833333333332","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"60","详细描述":"","简略描述":"Double neb, np brighter & smbM, sf one fainter"},{"ID":"4717","标识":"NGC4717","M标识":"NGC4717","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h50m34.5s","赤经D(J2000)":"12.842916666666667","赤纬(J2000)":"-9h27m46s","赤纬D(J2000)":"-9.462777777777777","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"12","详细描述":"","简略描述":"Double neb, np brighter & smbM, sf one fainter"},{"ID":"4718","标识":"NGC4718","M标识":"NGC4718","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h50m32.5s","赤经D(J2000)":"12.842361111111112","赤纬(J2000)":"-5h16m55s","赤纬D(J2000)":"-5.281944444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"95","详细描述":"extremely faint, very small, between 2 stars","简略描述":"eF, vS, bet 2 st"},{"ID":"4719","标识":"NGC4719","M标识":"NGC4719","拓展名":"","组件":"","Class":"III 424","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h50m8.6s","赤经D(J2000)":"12.835722222222223","赤纬(J2000)":"+33h9m33s","赤纬D(J2000)":"33.159166666666664","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"15","详细描述":"very faint, stellar","简略描述":"vF, stellar"},{"ID":"4720","标识":"NGC4720","M标识":"NGC4720","拓展名":"","组件":"","Class":"III 611","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h50m42.6s","赤经D(J2000)":"12.845166666666668","赤纬(J2000)":"-4h9m21s","赤纬D(J2000)":"-4.155833333333334","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"123","详细描述":"extremely faint, small, brighter middle","简略描述":"eF, S, bM"},{"ID":"4721","标识":"NGC4721","M标识":"NGC4721","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h50m19.8s","赤经D(J2000)":"12.838833333333334","赤纬(J2000)":"+27h19m29s","赤纬D(J2000)":"27.32472222222222","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"114","详细描述":"","简略描述":"vF, vS, ? R"},{"ID":"4722","标识":"NGC4722","M标识":"NGC4722","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h51m32.3s","赤经D(J2000)":"12.858972222222222","赤纬(J2000)":"-13h19m48s","赤纬D(J2000)":"-13.33","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"35","详细描述":"Howe has only one, RA 12 44 14, NPD 102 34.0, with an 11.5 magnitude star 4 seconds east","简略描述":"2 vF, vS, f III 356"},{"ID":"4723","标识":"NGC4723","M标识":"NGC4723","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h51m3s","赤经D(J2000)":"12.850833333333332","赤纬(J2000)":"-13h14m12s","赤纬D(J2000)":"-13.236666666666666","可见光星等V":"14.5","摄影(蓝光)星等B":"15.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"40","详细描述":"Howe has only one, RA 12 44 14, NPD 102 34.0, with an 11.5 magnitude star 4 seconds east","简略描述":"2 vF, vS, f III 356"},{"ID":"4724","标识":"NGC4724","M标识":"NGC4724","拓展名":"","组件":"","Class":"III 280","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h50m53.6s","赤经D(J2000)":"12.848222222222223","赤纬(J2000)":"-14h19m56s","赤纬D(J2000)":"-14.332222222222223","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"95","详细描述":"faint, very small, round, stellar, northwestern of 2","简略描述":"F, vS, R, stellar, np of 2"},{"ID":"4725","标识":"NGC4725","M标识":"NGC4725","拓展名":"","组件":"","Class":"I 84","业余排名":"5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab\/P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h50m26.5s","赤经D(J2000)":"12.840694444444445","赤纬(J2000)":"+25h30m0s","赤纬D(J2000)":"25.5","可见光星等V":"9.4","摄影(蓝光)星等B":"10.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"10.7","短轴(分)":"7.6","方位角":"35","详细描述":"","简略描述":"vB, vL, E, vg, vsvmbMeBN"},{"ID":"4726","标识":"NGC4726","M标识":"NGC4726","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h50m46s","赤经D(J2000)":"12.846111111111112","赤纬(J2000)":"-14h16m4s","赤纬D(J2000)":"-14.267777777777779","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.2","短轴(分)":"0.2","方位角":"75","详细描述":"","简略描述":"vF, 4' n of D neb"},{"ID":"4727","标识":"NGC4727","M标识":"NGC4727","拓展名":"","组件":"","Class":"II 298","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h50m57.2s","赤经D(J2000)":"12.849222222222222","赤纬(J2000)":"-14h19m59s","赤纬D(J2000)":"-14.333055555555555","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"130","详细描述":"faint, pretty large, round, a little brighter middle, southeastern of 2","简略描述":"F, pL, R, lbM, sf of 2"},{"ID":"4728","标识":"NGC4728","M标识":"NGC4728","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h50m28s","赤经D(J2000)":"12.841111111111111","赤纬(J2000)":"+27h26m7s","赤纬D(J2000)":"27.435277777777777","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.7","方位角":"108","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"4729","标识":"NGC4729","M标识":"NGC4729","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h51m46.2s","赤经D(J2000)":"12.862833333333333","赤纬(J2000)":"-41h7m56s","赤纬D(J2000)":"-41.132222222222225","可见光星等V":"12.3","摄影(蓝光)星等B":"13.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"1.6","方位角":"","详细描述":"","简略描述":"neb, 1st of 3 p, a little s of h 3433"},{"ID":"4730","标识":"NGC4730","M标识":"NGC4730","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h52m0.5s","赤经D(J2000)":"12.866805555555556","赤纬(J2000)":"-41h8m49s","赤纬D(J2000)":"-41.14694444444444","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"","简略描述":"2nd of 3 p, a little s of h 3433"},{"ID":"4731","标识":"NGC4731","M标识":"NGC4731","拓展名":"","组件":"","Class":"I 41","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h51m1s","赤经D(J2000)":"12.850277777777777","赤纬(J2000)":"-6h23m33s","赤纬D(J2000)":"-6.3925","可见光星等V":"11.5","摄影(蓝光)星等B":"11.9","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"6.6","短轴(分)":"4.2","方位角":"95","详细描述":"William Herschel in 1784 described it as 'a little brighter middle', not 'suddenly brighter middle', as in the GC. There has apparently not been any change; it is diffused, without condensation. The RA in NGC (per John Herschel) is correct (Armagh, 2 observations)","简略描述":"vF, pL, E"},{"ID":"4732","标识":"NGC4732","M标识":"NGC4732","拓展名":"","组件":"","Class":"II 814","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h50m7s","赤经D(J2000)":"12.835277777777778","赤纬(J2000)":"+52h51m0s","赤纬D(J2000)":"52.85","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"8","详细描述":"faint, small, very suddenly much brighter middle","简略描述":"F, S, vsmbM"},{"ID":"4733","标识":"NGC4733","M标识":"NGC4733","拓展名":"","组件":"","Class":"II 73","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h51m6.7s","赤经D(J2000)":"12.851861111111111","赤纬(J2000)":"+10h54m43s","赤纬D(J2000)":"10.911944444444444","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"2.2","短轴(分)":"2.2","方位角":"","详细描述":"considerably faint, pretty large, a little extended, mottled but not resolved, 12th magnitude star to west","简略描述":"cF, pL, lE, r, * 12 p"},{"ID":"4734","标识":"NGC4734","M标识":"NGC4734","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h51m12.8s","赤经D(J2000)":"12.853555555555555","赤纬(J2000)":"+4h51m31s","赤纬D(J2000)":"4.85861111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.8","方位角":"145","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"4735","标识":"NGC4735","M标识":"NGC4735","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h51m1.9s","赤经D(J2000)":"12.850527777777778","赤纬(J2000)":"+28h55m41s","赤纬D(J2000)":"28.928055555555556","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"105","详细描述":"very faint, very little brighter middle","简略描述":"vF, vlbM"},{"ID":"4736","标识":"NGC4736","M标识":"M94","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"鳄鱼眼星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h50m53.1s","赤经D(J2000)":"12.848083333333333","赤纬(J2000)":"+41h7m17s","赤纬D(J2000)":"41.12138888888889","可见光星等V":"8.2","摄影(蓝光)星等B":"9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"14.4","短轴(分)":"12.1","方位角":"117","详细描述":"very bright, large, irregularly round, very suddenly very much bright middle and bright nucleus, mottled but not resolved","简略描述":"vB, L, iR, vsvmbMBN, r"},{"ID":"4737","标识":"NGC4737","M标识":"NGC4737","拓展名":"","组件":"","Class":"III 496","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h50m52.9s","赤经D(J2000)":"12.848027777777778","赤纬(J2000)":"+34h9m26s","赤纬D(J2000)":"34.157222222222224","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"50","详细描述":"extremely faint, very small, pretty much extended","简略描述":"eF, vS, pmE"},{"ID":"4738","标识":"NGC4738","M标识":"NGC4738","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h51m8.9s","赤经D(J2000)":"12.852472222222222","赤纬(J2000)":"+28h47m18s","赤纬D(J2000)":"28.788333333333334","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.1","短轴(分)":"0.3","方位角":"34","详细描述":"very faint, extended 30°, very little brighter middle","简略描述":"vF, E 30°, vlbM"},{"ID":"4739","标识":"NGC4739","M标识":"NGC4739","拓展名":"","组件":"","Class":"III 515","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h51m37.1s","赤经D(J2000)":"12.860305555555556","赤纬(J2000)":"-8h24m35s","赤纬D(J2000)":"-8.409722222222223","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"165","详细描述":"faint, pretty large, a little extended, pretty gradually a little brighter middle","简略描述":"F, pL, lE, pglbM"},{"ID":"4740","标识":"NGC4740","M标识":"NGC4740","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h50m57.2s","赤经D(J2000)":"12.849222222222222","赤纬(J2000)":"-14h19m59s","赤纬D(J2000)":"-14.333055555555555","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"130","详细描述":". Per Dreyer, NGC 4736 (= GC 3258 = JH 1456, Méchain, M94, 1860 RA 12 44 17, NPD 48 07.0) is ","简略描述":"pF, pS, R, mbM"},{"ID":"4741","标识":"NGC4741","M标识":"NGC4741","拓展名":"","组件":"","Class":"III 721","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h50m59.4s","赤经D(J2000)":"12.849833333333335","赤纬(J2000)":"+47h40m18s","赤纬D(J2000)":"47.67166666666667","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"165","详细描述":"very faint, small, round, pretty suddenly brighter middle","简略描述":"vF, S, R, psbM"},{"ID":"4742","标识":"NGC4742","M标识":"NGC4742","拓展名":"","组件":"","Class":"I 133","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h51m48s","赤经D(J2000)":"12.863333333333333","赤纬(J2000)":"-10h27m17s","赤纬D(J2000)":"-10.454722222222221","可见光星等V":"11.3","摄影(蓝光)星等B":"12.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.6","短轴(分)":"1.5","方位角":"81","详细描述":"","简略描述":"pB, vS, vbMN = * 11, * 10 sf"},{"ID":"4743","标识":"NGC4743","M标识":"NGC4743","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h52m15.6s","赤经D(J2000)":"12.871","赤纬(J2000)":"-41h23m24s","赤纬D(J2000)":"-41.39","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"176","详细描述":"faint, round, gradually brighter middle","简略描述":"F, R, gbM"},{"ID":"4744","标识":"NGC4744","M标识":"NGC4744","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h52m19.5s","赤经D(J2000)":"12.872083333333334","赤纬(J2000)":"-41h3m38s","赤纬D(J2000)":"-41.06055555555555","可见光星等V":"12.7","摄影(蓝光)星等B":"13.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.1","短轴(分)":"1","方位角":"122","详细描述":"faint, large, extended, gradually brighter middle, 3rd of 3","简略描述":"F, L, E, gbM, 3rd of 3"},{"ID":"4745","标识":"NGC4745","M标识":"NGC4745","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h51m26.1s","赤经D(J2000)":"12.85725","赤纬(J2000)":"+27h25m18s","赤纬D(J2000)":"27.421666666666667","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"","简略描述":"eF, * 6 n"},{"ID":"4746","标识":"NGC4746","M标识":"NGC4746","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h51m55.2s","赤经D(J2000)":"12.865333333333332","赤纬(J2000)":"+12h4m59s","赤纬D(J2000)":"12.083055555555555","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.1","短轴(分)":"0.6","方位角":"120","详细描述":"pretty bright, much extended, mottled but not resolved","简略描述":"pB, mE, r"},{"ID":"4747","标识":"NGC4747","M标识":"NGC4747","拓展名":"","组件":"","Class":"II 344","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h51m45.4s","赤经D(J2000)":"12.86261111111111","赤纬(J2000)":"+25h46m26s","赤纬D(J2000)":"25.773888888888887","可见光星等V":"12.4","摄影(蓝光)星等B":"13","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.3","短轴(分)":"1.3","方位角":"30","详细描述":"faint, pretty large, a little extended","简略描述":"F, pL, lE"},{"ID":"4748","标识":"NGC4748","M标识":"NGC4748","拓展名":"","组件":"1","Class":"III 537","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h52m12.6s","赤经D(J2000)":"12.870166666666668","赤纬(J2000)":"-13h24m49s","赤纬D(J2000)":"-13.413611111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"45","详细描述":"faint, very small, irregularly round, gradually brighter middle","简略描述":"F, vS, iR, gbM"},{"ID":"4749","标识":"NGC4749","M标识":"NGC4749","拓展名":"","组件":"","Class":"III 907","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h51m12.2s","赤经D(J2000)":"12.853388888888889","赤纬(J2000)":"+71h38m6s","赤纬D(J2000)":"71.635","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.7","短轴(分)":"0.3","方位角":"158","详细描述":"very faint, considerably large, extended 135°±","简略描述":"vF, cL, E 135° ±"},{"ID":"4750","标识":"NGC4750","M标识":"NGC4750","拓展名":"","组件":"","Class":"IV 78","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h50m6.5s","赤经D(J2000)":"12.83513888888889","赤纬(J2000)":"+72h52m28s","赤纬D(J2000)":"72.87444444444444","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.1","短轴(分)":"1.9","方位角":"147","详细描述":"pretty bright, large, round, very gradually, very suddenly brighter middle","简略描述":"pB, L, R, vg, vsbM"},{"ID":"4751","标识":"NGC4751","M标识":"NGC4751","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h52m50.6s","赤经D(J2000)":"12.880722222222223","赤纬(J2000)":"-42h39m36s","赤纬D(J2000)":"-42.66","可见光星等V":"11.2","摄影(蓝光)星等B":"12.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"3","短轴(分)":"1.1","方位角":"175","详细描述":"bright, pretty small, round, very gradually, very suddenly much brighter middle","简略描述":"B, pS, R, vg, vsmbM"},{"ID":"4752","标识":"NGC4752","M标识":"NGC4752","拓展名":"","组件":"","Class":"III 82","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h51m29.1s","赤经D(J2000)":"12.858083333333333","赤纬(J2000)":"+13h46m57s","赤纬D(J2000)":"13.7825","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"155","详细描述":"very faint, small, extended, mottled but not resolved","简略描述":"vF, S, E, r"},{"ID":"4753","标识":"NGC4753","M标识":"NGC4753","拓展名":"","组件":"","Class":"I 16","业余排名":"3","中文名":"尘卷暴星系","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h52m22.1s","赤经D(J2000)":"12.872805555555557","赤纬(J2000)":"-1h12m0s","赤纬D(J2000)":"-1.2","可见光星等V":"10","摄影(蓝光)星等B":"10.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"6","短轴(分)":"2.8","方位角":"80","详细描述":"considerably bright, large, very little extended, very gradually a little brighter middle","简略描述":"cB, L, vlE, vglbM"},{"ID":"4754","标识":"NGC4754","M标识":"NGC4754","拓展名":"","组件":"","Class":"I 25, II 74","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h52m17.6s","赤经D(J2000)":"12.871555555555556","赤纬(J2000)":"+11h18m50s","赤纬D(J2000)":"11.31388888888889","可见光星等V":"10.6","摄影(蓝光)星等B":"11.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"4.4","短轴(分)":"2.4","方位角":"23","详细描述":"bright, pretty large, round, pretty suddenly brighter middle, western of 2","简略描述":"B, pL, R, psbM, p of 2"},{"ID":"4755","标识":"NGC4755","M标识":"NGC4755","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"宝盒星团","类型":"OCL","含重复类型":"OCL","形态":"I3r","星座(Zh)":"南十字座","星座(En)":"CRU","赤经(J2000)":"12h53m39s","赤经D(J2000)":"12.894166666666667","赤纬(J2000)":"-60h21m42s","赤纬D(J2000)":"-60.361666666666665","可见光星等V":"4.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, vL, st vB (κ Crucis)"},{"ID":"4756","标识":"NGC4756","M标识":"NGC4756","拓展名":"","组件":"","Class":"III 281","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h52m52.2s","赤经D(J2000)":"12.881166666666667","赤纬(J2000)":"-15h24m45s","赤纬D(J2000)":"-15.4125","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"50","详细描述":"very faint, pretty small, mottled but not resolved","简略描述":"vF, pS, r"},{"ID":"4757","标识":"NGC4757","M标识":"NGC4757","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h52m49.9s","赤经D(J2000)":"12.880527777777779","赤纬(J2000)":"-10h18m39s","赤纬D(J2000)":"-10.310833333333335","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"60","详细描述":"very faint","简略描述":"vF"},{"ID":"4758","标识":"NGC4758","M标识":"NGC4758","拓展名":"","组件":"","Class":"III 70","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h52m43.9s","赤经D(J2000)":"12.878861111111112","赤纬(J2000)":"+15h50m55s","赤纬D(J2000)":"15.848611111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3","短轴(分)":"0.7","方位角":"160","详细描述":"very faint, pretty large, extended?","简略描述":"vF, pL, E ?"},{"ID":"4759","标识":"NGC4759","M标识":"NGC4759","拓展名":"A","组件":"","Class":"II 559","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m4.5s","赤经D(J2000)":"12.884583333333333","赤纬(J2000)":"-9h11m59s","赤纬D(J2000)":"-9.199722222222222","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.9","短轴(分)":"1.7","方位角":"5","详细描述":"pretty large, double, with a 10th-magnitude star 2 arcmin to the southwest","简略描述":"pL, double, * 10 2' sp"},{"ID":"4760","标识":"NGC4760","M标识":"NGC4760","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m7.2s","赤经D(J2000)":"12.885333333333334","赤纬(J2000)":"-10h29m41s","赤纬D(J2000)":"-10.49472222222222","可见光星等V":"11.4","摄影(蓝光)星等B":"12.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2","短轴(分)":"1.8","方位角":"10","详细描述":"pretty bright, round","简略描述":"pB, R"},{"ID":"4761","标识":"NGC4761","M标识":"NGC4761","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m9.7s","赤经D(J2000)":"12.886027777777777","赤纬(J2000)":"-9h11m51s","赤纬D(J2000)":"-9.1975","可见光星等V":"13.8","摄影(蓝光)星等B":"14.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"173","详细描述":"","简略描述":"eF, eS, 1' f D neb II 559"},{"ID":"4762","标识":"NGC4762","M标识":"NGC4762","拓展名":"","组件":"","Class":"II 75","业余排名":"6","中文名":"纸风筝星系","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h52m55.9s","赤经D(J2000)":"12.882194444444444","赤纬(J2000)":"+11h13m50s","赤纬D(J2000)":"11.230555555555556","可见光星等V":"10.3","摄影(蓝光)星等B":"11.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"8.7","短轴(分)":"1.7","方位角":"29","详细描述":"","简略描述":"pB, vmE 31°, 3 B st s, f of 2"},{"ID":"4763","标识":"NGC4763","M标识":"NGC4763","拓展名":"","组件":"","Class":"III 489","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h53m27.1s","赤经D(J2000)":"12.89086111111111","赤纬(J2000)":"-17h0m21s","赤纬D(J2000)":"-17.00583333333333","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"125","详细描述":"very faint, small, a little brighter middle","简略描述":"vF, S, lbM"},{"ID":"4764","标识":"NGC4764","M标识":"NGC4764","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m6.7s","赤经D(J2000)":"12.885194444444444","赤纬(J2000)":"-9h15m27s","赤纬D(J2000)":"-9.2575","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"115","详细描述":"","简略描述":"eF, eS, sf D neb II 559"},{"ID":"4765","标识":"NGC4765","M标识":"NGC4765","拓展名":"","组件":"","Class":"III 544","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m14.6s","赤经D(J2000)":"12.88738888888889","赤纬(J2000)":"+4h27m47s","赤纬D(J2000)":"4.463055555555556","可见光星等V":"13","摄影(蓝光)星等B":"13.4","B-V":"0.4","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"80","详细描述":"faint, considerably small, round, gradually brighter middle","简略描述":"F, cS, R, gbM"},{"ID":"4766","标识":"NGC4766","M标识":"NGC4766","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m8.2s","赤经D(J2000)":"12.88561111111111","赤纬(J2000)":"-10h22m43s","赤纬D(J2000)":"-10.37861111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.3","方位角":"130","详细描述":"very faint","简略描述":"vF"},{"ID":"4767","标识":"NGC4767","M标识":"NGC4767","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h53m52.9s","赤经D(J2000)":"12.898027777777777","赤纬(J2000)":"-39h42m52s","赤纬D(J2000)":"-39.714444444444446","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.6","短轴(分)":"1.2","方位角":"123","详细描述":"bright, pretty small, a little extended, much brighter middle","简略描述":"B, pS, lE, mbM"},{"ID":"4768","标识":"NGC4768","M标识":"NGC4768","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m17.2s","赤经D(J2000)":"12.88811111111111","赤纬(J2000)":"-9h31m54s","赤纬D(J2000)":"-9.531666666666668","可见光星等V":"99","摄影(蓝光)星等B":"13.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, vS, p III 525 on parallel"},{"ID":"4769","标识":"NGC4769","M标识":"NGC4769","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m18s","赤经D(J2000)":"12.888333333333334","赤纬(J2000)":"-9h32m11s","赤纬D(J2000)":"-9.536388888888888","可见光星等V":"99","摄影(蓝光)星等B":"13.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, vS, p III 525 on parallel"},{"ID":"4770","标识":"NGC4770","M标识":"NGC4770","拓展名":"","组件":"","Class":"III 525","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m32.2s","赤经D(J2000)":"12.892277777777778","赤纬(J2000)":"-9h32m28s","赤纬D(J2000)":"-9.54111111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"90","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4771","标识":"NGC4771","M标识":"NGC4771","拓展名":"","组件":"","Class":"II 535","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m20.9s","赤经D(J2000)":"12.889138888888889","赤纬(J2000)":"+1h16m12s","赤纬D(J2000)":"1.27","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.8","短轴(分)":"0.9","方位角":"133","详细描述":"","简略描述":"F, pL, mE, * 9 p 90°"},{"ID":"4772","标识":"NGC4772","M标识":"NGC4772","拓展名":"","组件":"","Class":"II 24","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m29s","赤经D(J2000)":"12.891388888888889","赤纬(J2000)":"+2h10m7s","赤纬D(J2000)":"2.168611111111111","可见光星等V":"11","摄影(蓝光)星等B":"12","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.4","短轴(分)":"1.7","方位角":"147","详细描述":"pretty faint, pretty small, round, much brighter middle","简略描述":"pF, pS, R, mbM"},{"ID":"4773","标识":"NGC4773","M标识":"NGC4773","拓展名":"","组件":"1","Class":"III 516","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m35.9s","赤经D(J2000)":"12.893305555555555","赤纬(J2000)":"-8h38m18s","赤纬D(J2000)":"-8.638333333333334","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"1","方位角":"88","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"4774","标识":"NGC4774","M标识":"NGC4774","拓展名":"","组件":"","Class":"III 618","业余排名":"14","中文名":"腰豆星系","类型":"Gxy","含重复类型":"Gxy","形态":"Ring","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h53m6.6s","赤经D(J2000)":"12.885166666666667","赤纬(J2000)":"+36h49m8s","赤纬D(J2000)":"36.81888888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"14.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"90","详细描述":"extremely faint, considerably small, round, brighter middle","简略描述":"eF, cS, R, bM"},{"ID":"4775","标识":"NGC4775","M标识":"NGC4775","拓展名":"","组件":"","Class":"II 186","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m45.9s","赤经D(J2000)":"12.896083333333333","赤纬(J2000)":"-6h37m22s","赤纬D(J2000)":"-6.622777777777778","可见光星等V":"11.1","摄影(蓝光)星等B":"11.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.2","短轴(分)":"2.1","方位角":"75","详细描述":"faint, considerably large, round, very gradually a little brighter middle, mottled but not resolved","简略描述":"F, cL, R, vglbM, r"},{"ID":"4776","标识":"NGC4776","M标识":"NGC4776","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m4.5s","赤经D(J2000)":"12.884583333333333","赤纬(J2000)":"-9h11m59s","赤纬D(J2000)":"-9.199722222222222","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.9","短轴(分)":"1.7","方位角":"5","详细描述":"faint, small, round, very little brighter middle, western of double nebula","简略描述":"F, S, R, vlbM, p of D neb"},{"ID":"4777","标识":"NGC4777","M标识":"NGC4777","拓展名":"","组件":"","Class":"III 517","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m58.5s","赤经D(J2000)":"12.899583333333332","赤纬(J2000)":"-8h46m31s","赤纬D(J2000)":"-8.775277777777779","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.9","短轴(分)":"0.8","方位角":"15","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"4778","标识":"NGC4778","M标识":"NGC4778","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m5.7s","赤经D(J2000)":"12.884916666666665","赤纬(J2000)":"-9h12m14s","赤纬D(J2000)":"-9.203888888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"100","详细描述":"very faint, small, round, very little brighter middle, eastern of double nebula","简略描述":"vF, S, R, vlbM, f of D neb"},{"ID":"4779","标识":"NGC4779","M标识":"NGC4779","拓展名":"","组件":"","Class":"III 106","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h53m50.7s","赤经D(J2000)":"12.897416666666667","赤纬(J2000)":"+9h42m33s","赤纬D(J2000)":"9.709166666666667","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.1","短轴(分)":"1.8","方位角":"70","详细描述":"very faint, pretty large, round, mottled but not resolved","简略描述":"vF, pL, R, r"},{"ID":"4780","标识":"NGC4780","M标识":"NGC4780","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h54m5.2s","赤经D(J2000)":"12.901444444444445","赤纬(J2000)":"-8h37m15s","赤纬D(J2000)":"-8.620833333333334","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"18","详细描述":"","简略描述":"vF, f III 516 and 517"},{"ID":"4781","标识":"NGC4781","M标识":"NGC4781","拓展名":"","组件":"","Class":"I 134","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h54m23.6s","赤经D(J2000)":"12.906555555555556","赤纬(J2000)":"-10h32m10s","赤纬D(J2000)":"-10.536111111111111","可见光星等V":"11.1","摄影(蓝光)星等B":"11.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"3.4","短轴(分)":"1.4","方位角":"120","详细描述":"considerably bright, very large, much extended","简略描述":"cB, vL, mE"},{"ID":"4782","标识":"NGC4782","M标识":"NGC4782","拓展名":"","组件":"","Class":"I 135","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h54m35.8s","赤经D(J2000)":"12.909944444444445","赤纬(J2000)":"-12h34m9s","赤纬D(J2000)":"-12.569166666666666","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"1.7","方位角":"155","详细描述":"pretty faint, pretty small, round, much brighter middle, western of double nebula","简略描述":"pF, pS, R, mbM, p of D neb"},{"ID":"4783","标识":"NGC4783","M标识":"NGC4783","拓展名":"","组件":"","Class":"I 136","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0\/P","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h54m36.4s","赤经D(J2000)":"12.910111111111112","赤纬(J2000)":"-12h33m29s","赤纬D(J2000)":"-12.558055555555557","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"2.3","短轴(分)":"1.3","方位角":"105","详细描述":"pretty faint, pretty small, round, much brighter middle, eastern of double nebula","简略描述":"pF, pS, R, mbM, f of D neb"},{"ID":"4784","标识":"NGC4784","M标识":"NGC4784","拓展名":"","组件":"","Class":"III 526","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h54m37s","赤经D(J2000)":"12.910277777777779","赤纬(J2000)":"-10h36m46s","赤纬D(J2000)":"-10.612777777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"104","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"4785","标识":"NGC4785","M标识":"NGC4785","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h53m27.1s","赤经D(J2000)":"12.89086111111111","赤纬(J2000)":"-48h44m59s","赤纬D(J2000)":"-48.749722222222225","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2","短轴(分)":"1","方位角":"81","详细描述":"very faint, small, round, gradually a little brighter middle","简略描述":"vF, S, R, glbM"},{"ID":"4786","标识":"NGC4786","M标识":"NGC4786","拓展名":"","组件":"","Class":"II 187","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h54m32.3s","赤经D(J2000)":"12.908972222222223","赤纬(J2000)":"-6h51m33s","赤纬D(J2000)":"-6.859166666666666","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"170","详细描述":"pretty bright, pretty small, much brighter middle, mottled but not resolved","简略描述":"pB, pS, mbM, r"},{"ID":"4787","标识":"NGC4787","M标识":"NGC4787","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m5.8s","赤经D(J2000)":"12.901611111111112","赤纬(J2000)":"+27h4m6s","赤纬D(J2000)":"27.06833333333333","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"2","详细描述":"","简略描述":"vF, vS, II 345 f"},{"ID":"4788","标识":"NGC4788","M标识":"NGC4788","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m16.2s","赤经D(J2000)":"12.9045","赤纬(J2000)":"+27h18m11s","赤纬D(J2000)":"27.303055555555556","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"141","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"4789","标识":"NGC4789","M标识":"NGC4789","拓展名":"","组件":"","Class":"II 345","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m19.2s","赤经D(J2000)":"12.905333333333333","赤纬(J2000)":"+27h4m4s","赤纬D(J2000)":"27.067777777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"171","详细描述":"","简略描述":"F, R, * 9 att 1' n"},{"ID":"4790","标识":"NGC4790","M标识":"NGC4790","拓展名":"","组件":"","Class":"II 560","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h54m51.9s","赤经D(J2000)":"12.914416666666668","赤纬(J2000)":"-10h14m52s","赤纬D(J2000)":"-10.247777777777777","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"90","详细描述":"pretty faint, pretty small, irregularly round","简略描述":"pF, pS, iR"},{"ID":"4791","标识":"NGC4791","M标识":"NGC4791","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h54m43.9s","赤经D(J2000)":"12.912194444444445","赤纬(J2000)":"+8h3m13s","赤纬D(J2000)":"8.053611111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"70","详细描述":"extremely faint, very small, a little extended, very little brighter middle","简略描述":"eF, vS, lE, vlbM"},{"ID":"4792","标识":"NGC4792","M标识":"NGC4792","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h55m3.6s","赤经D(J2000)":"12.917666666666666","赤纬(J2000)":"-12h29m48s","赤纬D(J2000)":"-12.496666666666666","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"140","详细描述":"","简略描述":"vS, R, 7' n np of II 538"},{"ID":"4793","标识":"NGC4793","M标识":"NGC4793","拓展名":"","组件":"","Class":"I 93","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m40.7s","赤经D(J2000)":"12.911305555555556","赤纬(J2000)":"+28h56m17s","赤纬D(J2000)":"28.938055555555557","可见光星等V":"11.6","摄影(蓝光)星等B":"12.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.9","短轴(分)":"1.5","方位角":"50","详细描述":"","简略描述":"pB, pS, lE, * 8 nf 1'"},{"ID":"4794","标识":"NGC4794","M标识":"NGC4794","拓展名":"","组件":"","Class":"III 538","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h55m10.4s","赤经D(J2000)":"12.919555555555554","赤纬(J2000)":"-12h36m33s","赤纬D(J2000)":"-12.609166666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"0.7","方位角":"153","详细描述":"","简略描述":"vF, S, 2 or 3 st near"},{"ID":"4795","标识":"NGC4795","M标识":"NGC4795","拓展名":"","组件":"","Class":"II 21","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h55m2.8s","赤经D(J2000)":"12.917444444444444","赤纬(J2000)":"+8h3m58s","赤纬D(J2000)":"8.066111111111113","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.3","短轴(分)":"1.6","方位角":"118","详细描述":"pretty faint, pretty large, round, brighter middle, mottled but not resolved","简略描述":"pF, pL, R, bM, r"},{"ID":"4796","标识":"NGC4796","M标识":"NGC4796","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h55m4.6s","赤经D(J2000)":"12.917944444444444","赤纬(J2000)":"+8h4m1s","赤纬D(J2000)":"8.066944444444443","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"90","详细描述":"","简略描述":"eF, eS, alm stell, close f h 1474"},{"ID":"4797","标识":"NGC4797","M标识":"NGC4797","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m55.3s","赤经D(J2000)":"12.915361111111112","赤纬(J2000)":"+27h24m46s","赤纬D(J2000)":"27.412777777777777","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.7","方位角":"30","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"4798","标识":"NGC4798","M标识":"NGC4798","拓展名":"","组件":"","Class":"II 382","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m55.3s","赤经D(J2000)":"12.915361111111112","赤纬(J2000)":"+27h24m46s","赤纬D(J2000)":"27.412777777777777","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.7","方位角":"30","详细描述":"pretty faint, pretty small, gradually brighter middle","简略描述":"pF, pS, gbM"},{"ID":"4799","标识":"NGC4799","M标识":"NGC4799","拓展名":"","组件":"","Class":"III 548","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h55m15.4s","赤经D(J2000)":"12.920944444444444","赤纬(J2000)":"+2h53m48s","赤纬D(J2000)":"2.8966666666666665","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"91","详细描述":"considerably faint, small, very small (faint) star attached","简略描述":"cF, S, vS * att"},{"ID":"4800","标识":"NGC4800","M标识":"NGC4800","拓展名":"","组件":"","Class":"I 211","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h54m37.8s","赤经D(J2000)":"12.9105","赤纬(J2000)":"+46h31m53s","赤纬D(J2000)":"46.53138888888889","可见光星等V":"11.6","摄影(蓝光)星等B":"12.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"25","详细描述":"","简略描述":"pB, cS, R, psbM, * 14 p"},{"ID":"4801","标识":"NGC4801","M标识":"NGC4801","拓展名":"","组件":"","Class":"III 816","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h54m37.6s","赤经D(J2000)":"12.910444444444444","赤纬(J2000)":"+53h5m26s","赤纬D(J2000)":"53.09055555555556","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"138","详细描述":"extremely faint, small, a little extended","简略描述":"eF, S, lE"},{"ID":"4802","标识":"NGC4802","M标识":"NGC4802","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h55m49.6s","赤经D(J2000)":"12.930444444444444","赤纬(J2000)":"-12h3m17s","赤纬D(J2000)":"-12.054722222222223","可见光星等V":"11.4","摄影(蓝光)星等B":"12.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.4","短轴(分)":"1.6","方位角":"20","详细描述":"remarkable object, very bright, very large, very much extended 120°±, brighter middle suddenly bright nucleus","简略描述":"vF, S, * 10 att"},{"ID":"4803","标识":"NGC4803","M标识":"NGC4803","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h55m33.7s","赤经D(J2000)":"12.926027777777778","赤纬(J2000)":"+8h14m24s","赤纬D(J2000)":"8.239999999999998","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"6","详细描述":"extremely faint, extremely small, round, a little brighter middle","简略描述":"eF, eS, R, lbM"},{"ID":"4804","标识":"NGC4804","M标识":"NGC4804","拓展名":"","组件":"","Class":"IV 40","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h55m52.3s","赤经D(J2000)":"12.931194444444444","赤纬(J2000)":"-12h57m24s","赤纬D(J2000)":"-12.956666666666665","可见光星等V":"99","摄影(蓝光)星等B":"9.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"S, att to pB *"},{"ID":"4805","标识":"NGC4805","M标识":"NGC4805","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h55m24.3s","赤经D(J2000)":"12.923416666666666","赤纬(J2000)":"+27h58m49s","赤纬D(J2000)":"27.980277777777776","可见光星等V":"99","摄影(蓝光)星等B":"14.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"4806","标识":"NGC4806","M标识":"NGC4806","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h56m12.4s","赤经D(J2000)":"12.936777777777777","赤纬(J2000)":"-29h30m10s","赤纬D(J2000)":"-29.502777777777776","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"1","方位角":"50","详细描述":"faint, considerably small, round, gradually a very little brighter middle","简略描述":"F, cS, R, gvlbM"},{"ID":"4807","标识":"NGC4807","M标识":"NGC4807","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h55m29.3s","赤经D(J2000)":"12.924805555555555","赤纬(J2000)":"+27h31m16s","赤纬D(J2000)":"27.52111111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.8","方位角":"21","详细描述":"faint, pretty small, round, brighter middle","简略描述":"F, pS, R, bM"},{"ID":"4808","标识":"NGC4808","M标识":"NGC4808","拓展名":"","组件":"","Class":"I 141","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h55m48.9s","赤经D(J2000)":"12.93025","赤纬(J2000)":"+4h18m13s","赤纬D(J2000)":"4.303611111111111","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.8","短轴(分)":"1.1","方位角":"127","详细描述":"pretty bright, considerably large, extended 135°±","简略描述":"pB, cL, E 135° ±"},{"ID":"4809","标识":"NGC4809","M标识":"NGC4809","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h54m50.9s","赤经D(J2000)":"12.914138888888889","赤纬(J2000)":"+2h39m10s","赤纬D(J2000)":"2.6527777777777777","可见光星等V":"13.8","摄影(蓝光)星等B":"14.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.7","短轴(分)":"0.7","方位角":"68","详细描述":"remarkable object, very bright, very large, very much extended 120°±, brighter middle suddenly bright nucleus","简略描述":"F, D neb, E at right angles to each other"},{"ID":"4810","标识":"NGC4810","M标识":"NGC4810","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h54m51.2s","赤经D(J2000)":"12.914222222222223","赤纬(J2000)":"+2h38m27s","赤纬D(J2000)":"2.640833333333333","可见光星等V":"14.3","摄影(蓝光)星等B":"14.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"162","详细描述":"","简略描述":"F, D neb, E at right angles to each other"},{"ID":"4811","标识":"NGC4811","M标识":"NGC4811","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h56m52.3s","赤经D(J2000)":"12.947861111111111","赤纬(J2000)":"-41h47m51s","赤纬D(J2000)":"-41.7975","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"35","详细描述":"extremely faint, considerably small, round, gradually brighter middle, western of 2","简略描述":"eF, cS, R, gbM, p of 2"},{"ID":"4812","标识":"NGC4812","M标识":"NGC4812","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h56m52.6s","赤经D(J2000)":"12.947944444444445","赤纬(J2000)":"-41h48m49s","赤纬D(J2000)":"-41.81361111111111","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"36","详细描述":"extremely faint, small, round, gradually brighter middle, eastern of 2","简略描述":"eF, S, R, gbM, f of 2"},{"ID":"4813","标识":"NGC4813","M标识":"NGC4813","拓展名":"","组件":"","Class":"II 777","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h56m36s","赤经D(J2000)":"12.943333333333333","赤纬(J2000)":"-6h49m5s","赤纬D(J2000)":"-6.8180555555555555","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"35","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"4814","标识":"NGC4814","M标识":"NGC4814","拓展名":"","组件":"","Class":"I 243","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h55m21.8s","赤经D(J2000)":"12.922722222222221","赤纬(J2000)":"+58h20m40s","赤纬D(J2000)":"58.34444444444445","可见光星等V":"12.2","摄影(蓝光)星等B":"12.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"3.3","短轴(分)":"2.4","方位角":"129","详细描述":"bright, pretty small, very little extended, very gradually brighter middle","简略描述":"B, pS, vlE, vgbM"},{"ID":"4815","标识":"NGC4815","M标识":"NGC4815","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"苍蝇座","星座(En)":"MUS","赤经(J2000)":"12h57m58.3s","赤经D(J2000)":"12.966194444444444","赤纬(J2000)":"-64h57m42s","赤纬D(J2000)":"-64.96166666666667","可见光星等V":"8.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, irregular figure, stars from 10th to 18th magnitude","简略描述":"Cl, pL, pRi, iF, st 10…18"},{"ID":"4816","标识":"NGC4816","M标识":"NGC4816","拓展名":"","组件":"","Class":"II 383","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h56m12.3s","赤经D(J2000)":"12.93675","赤纬(J2000)":"+27h44m43s","赤纬D(J2000)":"27.74527777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"84","详细描述":"very faint, pretty large","简略描述":"vF, pL"},{"ID":"4817","标识":"NGC4817","M标识":"NGC4817","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h56m29.6s","赤经D(J2000)":"12.941555555555556","赤纬(J2000)":"+27h56m25s","赤纬D(J2000)":"27.940277777777776","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, no nucleus","简略描述":"vF, no N"},{"ID":"4818","标识":"NGC4818","M标识":"NGC4818","拓展名":"","组件":"","Class":"II 549","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h56m48.9s","赤经D(J2000)":"12.946916666666667","赤纬(J2000)":"-8h31m30s","赤纬D(J2000)":"-8.525","可见光星等V":"11.1","摄影(蓝光)星等B":"12","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"4.3","短轴(分)":"1.5","方位角":"0","详细描述":"pretty bright, large, pretty much extended 0°, gradually brighter middle","简略描述":"pB, L, pmE 0°, gbM"},{"ID":"4819","标识":"NGC4819","M标识":"NGC4819","拓展名":"","组件":"","Class":"II 346","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h56m28s","赤经D(J2000)":"12.94111111111111","赤纬(J2000)":"+26h59m13s","赤纬D(J2000)":"26.986944444444447","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"160","详细描述":"very faint, pretty large, irregular figure","简略描述":"vF, pL, iF"},{"ID":"4820","标识":"NGC4820","M标识":"NGC4820","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h57m0.5s","赤经D(J2000)":"12.950138888888889","赤纬(J2000)":"-13h43m8s","赤纬D(J2000)":"-13.71888888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1","短轴(分)":"0.2","方位角":"105","详细描述":"","简略描述":"vS, sp of II 563"},{"ID":"4821","标识":"NGC4821","M标识":"NGC4821","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h56m29.3s","赤经D(J2000)":"12.941472222222222","赤纬(J2000)":"+26h57m25s","赤纬D(J2000)":"26.956944444444442","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"5","详细描述":"","简略描述":"vF, vS, II 346 np"},{"ID":"4822","标识":"NGC4822","M标识":"NGC4822","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h57m3.6s","赤经D(J2000)":"12.950999999999999","赤纬(J2000)":"-10h45m44s","赤纬D(J2000)":"-10.762222222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"90","详细描述":"faint, star involved","简略描述":"F, st inv"},{"ID":"4823","标识":"NGC4823","M标识":"NGC4823","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h57m25.6s","赤经D(J2000)":"12.95711111111111","赤纬(J2000)":"-13h41m54s","赤纬D(J2000)":"-13.698333333333334","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"175","详细描述":"","简略描述":"vS, sp of II 563"},{"ID":"4824","标识":"NGC4824","M标识":"NGC4824","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h56m36.2s","赤经D(J2000)":"12.943388888888888","赤纬(J2000)":"+27h26m1s","赤纬D(J2000)":"27.433611111111112","可见光星等V":"99","摄影(蓝光)星等B":"14.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4825","标识":"NGC4825","M标识":"NGC4825","拓展名":"","组件":"","Class":"II 563","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h57m12.2s","赤经D(J2000)":"12.953388888888888","赤纬(J2000)":"-13h39m52s","赤纬D(J2000)":"-13.664444444444445","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2","短轴(分)":"1.1","方位角":"138","详细描述":"pretty bright, irregular figure, brighter middle","简略描述":"pB, iF, bM"},{"ID":"4826","标识":"NGC4826","M标识":"M64","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"黑眼星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h56m43.8s","赤经D(J2000)":"12.945500000000001","赤纬(J2000)":"+21h40m59s","赤纬D(J2000)":"21.68305555555556","可见光星等V":"8.5","摄影(蓝光)星等B":"9.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"10","短轴(分)":"5.4","方位角":"115","详细描述":"remarkable object, very bright, very large, very much extended 120°±, brighter middle suddenly bright nucleus","简略描述":"! vB, vL, vmE 120° ±, bMSBN"},{"ID":"4827","标识":"NGC4827","M标识":"NGC4827","拓展名":"","组件":"","Class":"II 384","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h56m43.7s","赤经D(J2000)":"12.945472222222222","赤纬(J2000)":"+27h10m43s","赤纬D(J2000)":"27.178611111111113","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"48","详细描述":"faint, considerably large","简略描述":"F, cL"},{"ID":"4828","标识":"NGC4828","M标识":"NGC4828","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h56m42.8s","赤经D(J2000)":"12.945222222222222","赤纬(J2000)":"+28h1m15s","赤纬D(J2000)":"28.020833333333332","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"4829","标识":"NGC4829","M标识":"NGC4829","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h57m24.5s","赤经D(J2000)":"12.956805555555555","赤纬(J2000)":"-13h44m14s","赤纬D(J2000)":"-13.737222222222222","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"105","详细描述":"","简略描述":"vS, sf II 563"},{"ID":"4830","标识":"NGC4830","M标识":"NGC4830","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h57m27.9s","赤经D(J2000)":"12.957749999999999","赤纬(J2000)":"-19h41m28s","赤纬D(J2000)":"-19.691111111111113","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.2","短轴(分)":"1.4","方位角":"157","详细描述":"","简略描述":"F, L, st inv, * 8 m 5' sf"},{"ID":"4831","标识":"NGC4831","M标识":"NGC4831","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h57m36.6s","赤经D(J2000)":"12.960166666666666","赤纬(J2000)":"-27h17m31s","赤纬D(J2000)":"-27.291944444444447","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"178","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"4832","标识":"NGC4832","M标识":"NGC4832","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h57m47.4s","赤经D(J2000)":"12.963166666666666","赤纬(J2000)":"-39h45m43s","赤纬D(J2000)":"-39.761944444444445","可见光星等V":"11.1","摄影(蓝光)星等B":"12.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"25","详细描述":"","简略描述":"pF, vS, R, sbM * 17, * 10, 70°.3"},{"ID":"4833","标识":"NGC4833","M标识":"NGC4833","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"南天蝴蝶星团","类型":"GCL","含重复类型":"GCL","形态":"VIII","星座(Zh)":"苍蝇座","星座(En)":"MUS","赤经(J2000)":"12h59m35s","赤经D(J2000)":"12.993055555555555","赤纬(J2000)":"-70h52m27s","赤纬D(J2000)":"-70.87416666666665","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"14","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, large, round, gradually, then very suddenly brighter middle, stars of 12th magnitude","简略描述":"globular, B, L, R, g, vsbM, st 12"},{"ID":"4834","标识":"NGC4834","M标识":"NGC4834","拓展名":"","组件":"","Class":"III 817","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h56m25.1s","赤经D(J2000)":"12.940305555555556","赤纬(J2000)":"+52h17m45s","赤纬D(J2000)":"52.295833333333334","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"108","详细描述":"very faint, small, irregularly round, brighter middle","简略描述":"vF, S, iR, bM"},{"ID":"4835","标识":"NGC4835","M标识":"NGC4835","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h58m7.7s","赤经D(J2000)":"12.968805555555555","赤纬(J2000)":"-46h15m54s","赤纬D(J2000)":"-46.265","可见光星等V":"11.6","摄影(蓝光)星等B":"12.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"4","短轴(分)":"0.9","方位角":"150","详细描述":"faint, pretty large, much extended, very gradually brighter middle","简略描述":"F, pL, mE, vgbM"},{"ID":"4836","标识":"NGC4836","M标识":"NGC4836","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h57m34.2s","赤经D(J2000)":"12.959499999999998","赤纬(J2000)":"-12h44m37s","赤纬D(J2000)":"-12.743611111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"5","详细描述":"very faint, large, diffuse","简略描述":"vF, L, dif"},{"ID":"4837","标识":"NGC4837","M标识":"NGC4837","拓展名":"","组件":"1","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h56m47.8s","赤经D(J2000)":"12.946611111111112","赤纬(J2000)":"+48h17m46s","赤纬D(J2000)":"48.29611111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"70","详细描述":"","简略描述":"Neb ?"},{"ID":"4838","标识":"NGC4838","M标识":"NGC4838","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h57m56.1s","赤经D(J2000)":"12.965583333333333","赤纬(J2000)":"-13h3m37s","赤纬D(J2000)":"-13.06027777777778","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"150","详细描述":"","简略描述":"vF, pS, R, 3 S st sp"},{"ID":"4839","标识":"NGC4839","M标识":"NGC4839","拓展名":"","组件":"","Class":"II 386","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h57m24.4s","赤经D(J2000)":"12.956777777777777","赤纬(J2000)":"+27h29m51s","赤纬D(J2000)":"27.497500000000002","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"4","短轴(分)":"1.9","方位角":"65","详细描述":"faint, pretty large, round","简略描述":"F, pL, R"},{"ID":"4840","标识":"NGC4840","M标识":"NGC4840","拓展名":"","组件":"","Class":"II 385","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h57m32.8s","赤经D(J2000)":"12.95911111111111","赤纬(J2000)":"+27h36m38s","赤纬D(J2000)":"27.610555555555557","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4841","标识":"NGC4841","M标识":"NGC4841","拓展名":"B","组件":"","Class":"II 387","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h57m34s","赤经D(J2000)":"12.959444444444443","赤纬(J2000)":"+28h28m56s","赤纬D(J2000)":"28.48222222222222","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.7","方位角":"134","详细描述":"pretty faint, pretty large, round, very small (faint) star attached","简略描述":"pF, pL, R, vS * att"},{"ID":"4842","标识":"NGC4842","M标识":"NGC4842","拓展名":"A","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h57m36s","赤经D(J2000)":"12.959999999999999","赤纬(J2000)":"+27h29m35s","赤纬D(J2000)":"27.493055555555557","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"","简略描述":"vF, vS, h 1494 sp"},{"ID":"4843","标识":"NGC4843","M标识":"NGC4843","拓展名":"","组件":"","Class":"III 613","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h58m0.9s","赤经D(J2000)":"12.966916666666666","赤纬(J2000)":"-3h37m17s","赤纬D(J2000)":"-3.6213888888888888","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.1","短轴(分)":"0.5","方位角":"87","详细描述":"","简略描述":"cF, E, er, * sf 30\""},{"ID":"4844","标识":"NGC4844","M标识":"NGC4844","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h58m8.4s","赤经D(J2000)":"12.969","赤纬(J2000)":"-13h4m46s","赤纬D(J2000)":"-13.079444444444444","可见光星等V":"99","摄影(蓝光)星等B":"15.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small","简略描述":"F, S"},{"ID":"4845","标识":"NGC4845","M标识":"NGC4845","拓展名":"","组件":"","Class":"II 536","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h58m0.9s","赤经D(J2000)":"12.966916666666666","赤纬(J2000)":"+1h34m32s","赤纬D(J2000)":"1.5755555555555556","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"4.9","短轴(分)":"1.3","方位角":"80","详细描述":"","简略描述":"pF, pL, pmE, vgbM, * nf 30°"},{"ID":"4846","标识":"NGC4846","M标识":"NGC4846","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h57m47.7s","赤经D(J2000)":"12.963249999999999","赤纬(J2000)":"+36h22m12s","赤纬D(J2000)":"36.37","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"62","详细描述":"extremely faint","简略描述":"eF"},{"ID":"4847","标识":"NGC4847","M标识":"NGC4847","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h58m28.9s","赤经D(J2000)":"12.974694444444445","赤纬(J2000)":"-13h8m28s","赤纬D(J2000)":"-13.14111111111111","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"21","详细描述":"","简略描述":"F, S neb *, * 9 p 40s on parallel"},{"ID":"4848","标识":"NGC4848","M标识":"NGC4848","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m5.7s","赤经D(J2000)":"12.96825","赤纬(J2000)":"+28h14m33s","赤纬D(J2000)":"28.2425","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"158","详细描述":"pretty faint, small, a little extended","简略描述":"pF, S, lE"},{"ID":"4849","标识":"NGC4849","M标识":"NGC4849","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m12.7s","赤经D(J2000)":"12.970194444444445","赤纬(J2000)":"+26h23m47s","赤纬D(J2000)":"26.39638888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"175","详细描述":"pretty bright, round, brighter middle","简略描述":"pB, R, bM"},{"ID":"4850","标识":"NGC4850","M标识":"NGC4850","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m21.7s","赤经D(J2000)":"12.972694444444445","赤纬(J2000)":"+27h58m6s","赤纬D(J2000)":"27.96833333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"63","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"4851","标识":"NGC4851","M标识":"NGC4851","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m21.8s","赤经D(J2000)":"12.972722222222222","赤纬(J2000)":"+28h8m52s","赤纬D(J2000)":"28.147777777777776","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"112","详细描述":"faint, very small, mottled but not resolved","简略描述":"F, vS, r"},{"ID":"4852","标识":"NGC4852","M标识":"NGC4852","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h0m9s","赤经D(J2000)":"13.0025","赤纬(J2000)":"-59h36m48s","赤纬D(J2000)":"-59.61333333333334","可见光星等V":"8.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"cluster, large, pretty rich, irregularly round, 10th magnitude stars","简略描述":"Cl, L, pRi, iR, st 10"},{"ID":"4853","标识":"NGC4853","M标识":"NGC4853","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m35.4s","赤经D(J2000)":"12.9765","赤纬(J2000)":"+27h35m45s","赤纬D(J2000)":"27.59583333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"81","详细描述":"faint, small, round, pretty suddenly a little brighter middle","简略描述":"F, S, R, pslbM"},{"ID":"4854","标识":"NGC4854","M标识":"NGC4854","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m47.6s","赤经D(J2000)":"12.979888888888889","赤纬(J2000)":"+27h40m27s","赤纬D(J2000)":"27.674166666666668","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"57","详细描述":"very faint, pretty large, cometic","简略描述":"vF, pL, com"},{"ID":"4855","标识":"NGC4855","M标识":"NGC4855","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h59m18.4s","赤经D(J2000)":"12.988444444444443","赤纬(J2000)":"-13h13m50s","赤纬D(J2000)":"-13.230555555555556","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"155","详细描述":"faint, small, star involved","简略描述":"F, S, st inv"},{"ID":"4856","标识":"NGC4856","M标识":"NGC4856","拓展名":"","组件":"","Class":"I 68","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h59m21.1s","赤经D(J2000)":"12.989194444444443","赤纬(J2000)":"-15h2m32s","赤纬D(J2000)":"-15.042222222222222","可见光星等V":"10.5","摄影(蓝光)星等B":"11.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"4.3","短轴(分)":"1.2","方位角":"37","详细描述":"bright, round, pretty suddenly much brighter middle, 13th magnitude star to northwest","简略描述":"B, R, psmbM, * 13 np"},{"ID":"4857","标识":"NGC4857","M标识":"NGC4857","拓展名":"","组件":"","Class":"III 908","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h57m18.1s","赤经D(J2000)":"12.955027777777778","赤纬(J2000)":"+70h12m11s","赤纬D(J2000)":"70.20305555555557","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"110","详细描述":"extremely faint, very small, irregularly round, very little brighter middle","简略描述":"eF, vS, iR, vlbM"},{"ID":"4858","标识":"NGC4858","M标识":"NGC4858","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m2.3s","赤经D(J2000)":"12.98397222222222","赤纬(J2000)":"+28h6m55s","赤纬D(J2000)":"28.11527777777778","可见光星等V":"15.2","摄影(蓝光)星等B":"15.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"36","详细描述":"faint, very small, preceding (western) of double nebula","简略描述":"F, vS, p of D neb"},{"ID":"4859","标识":"NGC4859","M标识":"NGC4859","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m1.9s","赤经D(J2000)":"12.98386111111111","赤纬(J2000)":"+26h48m56s","赤纬D(J2000)":"26.815555555555555","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"95","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"4860","标识":"NGC4860","M标识":"NGC4860","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m4s","赤经D(J2000)":"12.984444444444444","赤纬(J2000)":"+28h7m24s","赤纬D(J2000)":"28.123333333333335","可见光星等V":"13.5","摄影(蓝光)星等B":"14.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"126","详细描述":"pretty faint, small, round, following (eastern) of double nebula","简略描述":"pF, S, R, f of D neb"},{"ID":"4861","标识":"NGC4861","M标识":"NGC4861","拓展名":"","组件":"","Class":"IV 30","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m1.8s","赤经D(J2000)":"12.983833333333333","赤纬(J2000)":"+34h51m43s","赤纬D(J2000)":"34.86194444444445","可见光星等V":"13.5","摄影(蓝光)星等B":"14.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"15.4","长轴(分)":"4.2","短轴(分)":"1.6","方位角":"15","详细描述":"very faint, pretty large, very much extended 30°±, between 2 stars","简略描述":"vF, pL, vmE 30° ±, bet 2 st"},{"ID":"4862","标识":"NGC4862","M标识":"NGC4862","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h59m30.8s","赤经D(J2000)":"12.991888888888887","赤纬(J2000)":"-14h7m55s","赤纬D(J2000)":"-14.131944444444445","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"153","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"4863","标识":"NGC4863","M标识":"NGC4863","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h59m42.5s","赤经D(J2000)":"12.995138888888889","赤纬(J2000)":"-14h1m46s","赤纬D(J2000)":"-14.029444444444445","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"0.4","方位角":"24","详细描述":"extremely faint, small, much extended 45°, suddenly brighter middle and nucleus","简略描述":"eF, S, mE 45°, sbMN"},{"ID":"4864","标识":"NGC4864","M标识":"NGC4864","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m13.2s","赤经D(J2000)":"12.986999999999998","赤纬(J2000)":"+27h58m35s","赤纬D(J2000)":"27.976388888888888","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"129","详细描述":"faint, small, preceding (western) of 2","简略描述":"F, S, p of 2"},{"ID":"4865","标识":"NGC4865","M标识":"NGC4865","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m20s","赤经D(J2000)":"12.988888888888889","赤纬(J2000)":"+28h5m3s","赤纬D(J2000)":"28.084166666666665","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"115","详细描述":"very faint, very small, 7.8 magnitude star 13 seconds of time to east","简略描述":"vF, vS, * 7·8 f 13s"},{"ID":"4866","标识":"NGC4866","M标识":"NGC4866","拓展名":"","组件":"","Class":"I 162","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h59m27s","赤经D(J2000)":"12.990833333333333","赤纬(J2000)":"+14h10m17s","赤纬D(J2000)":"14.171388888888888","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"6.4","短轴(分)":"1.5","方位角":"87","详细描述":"bright, pretty large, much extended 90°, suddenly brighter middle and nucleus, small star involved","简略描述":"B, pL, mE 90°, sbMN, S * inv"},{"ID":"4867","标识":"NGC4867","M标识":"NGC4867","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m15.5s","赤经D(J2000)":"12.987638888888888","赤纬(J2000)":"+27h58m14s","赤纬D(J2000)":"27.970555555555553","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"3","详细描述":"very faint, very small, stellar, following (to east of) h 1500","简略描述":"vF, vS, stellar, f h 1500"},{"ID":"4868","标识":"NGC4868","M标识":"NGC4868","拓展名":"","组件":"","Class":"II 644","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m9s","赤经D(J2000)":"12.985833333333332","赤纬(J2000)":"+37h18m34s","赤纬D(J2000)":"37.309444444444445","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"90","详细描述":"pretty bright, small, round, much brighter middle","简略描述":"pB, S, R, mbM"},{"ID":"4869","标识":"NGC4869","M标识":"NGC4869","拓展名":"","组件":"","Class":"II 388","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m23.5s","赤经D(J2000)":"12.98986111111111","赤纬(J2000)":"+27h54m41s","赤纬D(J2000)":"27.911388888888887","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"69","详细描述":"considerably faint, small, round, 7th magnitude star to north","简略描述":"cF, S, R, * 7 n"},{"ID":"4870","标识":"NGC4870","M标识":"NGC4870","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m17.8s","赤经D(J2000)":"12.988277777777776","赤纬(J2000)":"+37h2m54s","赤纬D(J2000)":"37.04833333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"0","详细描述":"pretty faint, a little extended, between 2 stars","简略描述":"pF, lE, bet 2 st"},{"ID":"4871","标识":"NGC4871","M标识":"NGC4871","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m30.1s","赤经D(J2000)":"12.991694444444443","赤纬(J2000)":"+27h57m23s","赤纬D(J2000)":"27.95638888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"177","详细描述":"very faint, very small, stellar nucleus","简略描述":"vF, vS, stell N"},{"ID":"4872","标识":"NGC4872","M标识":"NGC4872","拓展名":"","组件":"","Class":"II 389","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m35.8s","赤经D(J2000)":"12.993277777777777","赤纬(J2000)":"+27h57m34s","赤纬D(J2000)":"27.959444444444443","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"1.9","方位角":"","详细描述":"pretty faint, pretty small, round","简略描述":"pF, pS, R"},{"ID":"4873","标识":"NGC4873","M标识":"NGC4873","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m32.9s","赤经D(J2000)":"12.992472222222222","赤纬(J2000)":"+27h59m0s","赤纬D(J2000)":"27.983333333333334","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"105","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4874","标识":"NGC4874","M标识":"NGC4874","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m34.3s","赤经D(J2000)":"12.992861111111111","赤纬(J2000)":"+27h56m48s","赤纬D(J2000)":"27.946666666666665","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"15.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"123","详细描述":"faint, h 1501 and 1502 preceding (to the west)","简略描述":"F, h 1501 and 1502 p"},{"ID":"4875","标识":"NGC4875","M标识":"NGC4875","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m38.1s","赤经D(J2000)":"12.993916666666665","赤纬(J2000)":"+27h54m27s","赤纬D(J2000)":"27.9075","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"123","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"4876","标识":"NGC4876","M标识":"NGC4876","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m44.6s","赤经D(J2000)":"12.995722222222222","赤纬(J2000)":"+27h54m44s","赤纬D(J2000)":"27.91222222222222","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"18","详细描述":"very faint, very small, no nucleus","简略描述":"vF, vS, no Nucl"},{"ID":"4877","标识":"NGC4877","M标识":"NGC4877","拓展名":"","组件":"","Class":"II 299","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h0m26.4s","赤经D(J2000)":"13.007333333333333","赤纬(J2000)":"-15h16m58s","赤纬D(J2000)":"-15.28277777777778","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.2","短轴(分)":"1","方位角":"6","详细描述":"pretty bright, pretty large, much brighter middle","简略描述":"pB, pL, mbM"},{"ID":"4878","标识":"NGC4878","M标识":"NGC4878","拓展名":"","组件":"","Class":"III 758","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h0m20.1s","赤经D(J2000)":"13.005583333333334","赤纬(J2000)":"-6h6m14s","赤纬D(J2000)":"-6.103888888888888","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"69","详细描述":"very faint, very small, preceding (western) of 2","简略描述":"vF, vS, p of 2"},{"ID":"4879","标识":"NGC4879","M标识":"NGC4879","拓展名":"","组件":"","Class":"III 759","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h0m25.6s","赤经D(J2000)":"13.007111111111112","赤纬(J2000)":"-6h6m40s","赤纬D(J2000)":"-6.111111111111111","可见光星等V":"15.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, considerably small, extended, pretty suddenly brighter middle, double star to northwest","简略描述":"vF, vS, f of 2"},{"ID":"4880","标识":"NGC4880","M标识":"NGC4880","拓展名":"","组件":"","Class":"III 83","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h0m10.5s","赤经D(J2000)":"13.002916666666666","赤纬(J2000)":"+12h29m0s","赤纬D(J2000)":"12.483333333333333","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.1","短轴(分)":"2.5","方位角":"165","详细描述":"considerably faint, pretty large, round, very gradually a little brighter middle, mottled but not resolved","简略描述":"cF, pL, R, vglbM, r"},{"ID":"4881","标识":"NGC4881","M标识":"NGC4881","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m57.9s","赤经D(J2000)":"12.999416666666665","赤纬(J2000)":"+28h14m47s","赤纬D(J2000)":"28.24638888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"faint, small, a little extended, 9th magnitude star to southwest","简略描述":"F, S, lE, * 9 sp"},{"ID":"4882","标识":"NGC4882","M标识":"NGC4882","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m4.6s","赤经D(J2000)":"13.001277777777778","赤纬(J2000)":"+27h59m11s","赤纬D(J2000)":"27.98638888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, small, others near","简略描述":"vF, S, others near"},{"ID":"4883","标识":"NGC4883","M标识":"NGC4883","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m56.2s","赤经D(J2000)":"12.998944444444444","赤纬(J2000)":"+28h2m3s","赤纬D(J2000)":"28.034166666666668","可见光星等V":"14.3","摄影(蓝光)星等B":"15.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"97","详细描述":"very faint, small, stellar","简略描述":"vF, S, stellar"},{"ID":"4884","标识":"NGC4884","M标识":"NGC4884","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m8.3s","赤经D(J2000)":"13.002305555555555","赤纬(J2000)":"+27h58m35s","赤纬D(J2000)":"27.976388888888888","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.8","短轴(分)":"2","方位角":"80","详细描述":"chief one of multiple nebulae","简略描述":"Chief one of Multiple Neb"},{"ID":"4885","标识":"NGC4885","M标识":"NGC4885","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h0m33.8s","赤经D(J2000)":"13.00938888888889","赤纬(J2000)":"-6h51m11s","赤纬D(J2000)":"-6.853055555555555","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"138","详细描述":"very faint, small, extended","简略描述":"vF, S, E"},{"ID":"4886","标识":"NGC4886","M标识":"NGC4886","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m4.6s","赤经D(J2000)":"13.001277777777778","赤纬(J2000)":"+27h59m11s","赤纬D(J2000)":"27.98638888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, small, others near","简略描述":"F, S, R, II 391 f 4s"},{"ID":"4887","标识":"NGC4887","M标识":"NGC4887","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h0m39.3s","赤经D(J2000)":"13.010916666666667","赤纬(J2000)":"-14h40m0s","赤纬D(J2000)":"-14.666666666666666","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"155","详细描述":"very faint, I 69 to northeast","简略描述":"vF, I 69 nf"},{"ID":"4888","标识":"NGC4888","M标识":"NGC4888","拓展名":"","组件":"","Class":"II 778","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h0m36.2s","赤经D(J2000)":"13.010055555555555","赤纬(J2000)":"-6h4m32s","赤纬D(J2000)":"-6.075555555555555","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.4","方位角":"119","详细描述":"considerably faint, pretty large, round, very gradually a little brighter middle, mottled but not resolved","简略描述":"pF, cS, E, psbM, ** np"},{"ID":"4889","标识":"NGC4889","M标识":"NGC4889","拓展名":"","组件":"","Class":"II 391","业余排名":"2","中文名":"后发座B","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m8.3s","赤经D(J2000)":"13.002305555555555","赤纬(J2000)":"+27h58m35s","赤纬D(J2000)":"27.976388888888888","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.8","短轴(分)":"2","方位角":"80","详细描述":"chief one of multiple nebulae","简略描述":"pB, pmE, bM, * 7 n"},{"ID":"4890","标识":"NGC4890","M标识":"NGC4890","拓展名":"","组件":"","Class":"III 614","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h0m38.9s","赤经D(J2000)":"13.010805555555555","赤纬(J2000)":"-4h36m14s","赤纬D(J2000)":"-4.603888888888888","可见光星等V":"13.2","摄影(蓝光)星等B":"13.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"95","详细描述":"considerably faint, small, irregularly round, brighter middle","简略描述":"cF, S, iR, bM"},{"ID":"4891","标识":"NGC4891","M标识":"NGC4891","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h0m47s","赤经D(J2000)":"13.013055555555555","赤纬(J2000)":"-13h25m35s","赤纬D(J2000)":"-13.426388888888889","可见光星等V":"99","摄影(蓝光)星等B":"14.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint nebulous star","简略描述":"F, neb *"},{"ID":"4892","标识":"NGC4892","M标识":"NGC4892","拓展名":"","组件":"","Class":"II 390","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m3.6s","赤经D(J2000)":"13.001","赤纬(J2000)":"+26h53m53s","赤纬D(J2000)":"26.898055555555555","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"13","详细描述":"very faint","简略描述":"vF"},{"ID":"4893","标识":"NGC4893","M标识":"NGC4893","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m59.6s","赤经D(J2000)":"12.999888888888888","赤纬(J2000)":"+37h11m38s","赤纬D(J2000)":"37.193888888888885","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"0","详细描述":"very faint, 20th magnitude star to southwest, 17th magnitude star to northeast","简略描述":"vF, * 20 sp, * 17 nf"},{"ID":"4894","标识":"NGC4894","M标识":"NGC4894","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m16.7s","赤经D(J2000)":"13.00463888888889","赤纬(J2000)":"+27h58m1s","赤纬D(J2000)":"27.966944444444444","可见光星等V":"15.2","摄影(蓝光)星等B":"16.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.1","方位角":"27","详细描述":"pretty faint, small, round","简略描述":"pF, S, R"},{"ID":"4895","标识":"NGC4895","M标识":"NGC4895","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m18s","赤经D(J2000)":"13.005","赤纬(J2000)":"+28h12m6s","赤纬D(J2000)":"28.201666666666664","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"153","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"4896","标识":"NGC4896","M标识":"NGC4896","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m30.9s","赤经D(J2000)":"13.008583333333334","赤纬(J2000)":"+28h20m47s","赤纬D(J2000)":"28.34638888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.6","方位角":"5","详细描述":"very faint, small, round","简略描述":"vF, vS, R, mbM"},{"ID":"4897","标识":"NGC4897","M标识":"NGC4897","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h0m52.9s","赤经D(J2000)":"13.014694444444444","赤纬(J2000)":"-13h26m56s","赤纬D(J2000)":"-13.44888888888889","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.7","短轴(分)":"2.3","方位角":"150","详细描述":"faint","简略描述":"F"},{"ID":"4898","标识":"NGC4898","M标识":"NGC4898","拓展名":"","组件":"1","Class":"","业余排名":"14","中文名":"后发座Z彗发星系","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m17.7s","赤经D(J2000)":"13.004916666666666","赤纬(J2000)":"+27h57m18s","赤纬D(J2000)":"27.955","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"90","详细描述":"pretty faint, small, round","简略描述":"vF, S, close to h 1510"},{"ID":"4899","标识":"NGC4899","M标识":"NGC4899","拓展名":"","组件":"","Class":"II 300","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h0m56.5s","赤经D(J2000)":"13.015694444444444","赤纬(J2000)":"-13h56m43s","赤纬D(J2000)":"-13.945277777777777","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.6","短轴(分)":"1.4","方位角":"20","详细描述":"pretty faint, extremely large","简略描述":"pF, eL"},{"ID":"4900","标识":"NGC4900","M标识":"NGC4900","拓展名":"","组件":"","Class":"I 143","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h0m39s","赤经D(J2000)":"13.010833333333334","赤纬(J2000)":"+2h30m4s","赤纬D(J2000)":"2.5011111111111113","可见光星等V":"11.4","摄影(蓝光)星等B":"11.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.2","短轴(分)":"2.1","方位角":"","详细描述":"","简略描述":"cB, cE, * 10 att 135° ±"},{"ID":"4901","标识":"NGC4901","M标识":"NGC4901","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m56.3s","赤经D(J2000)":"12.998972222222221","赤纬(J2000)":"+47h12m22s","赤纬D(J2000)":"47.20611111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"pretty faint, small, round, gradually brighter middle","简略描述":"pF, S, R, gbM"},{"ID":"4902","标识":"NGC4902","M标识":"NGC4902","拓展名":"","组件":"","Class":"I 69","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h0m59.6s","赤经D(J2000)":"13.016555555555556","赤纬(J2000)":"-14h30m50s","赤纬D(J2000)":"-14.51388888888889","可见光星等V":"10.9","摄影(蓝光)星等B":"11.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.9","短轴(分)":"2.6","方位角":"70","详细描述":"pretty bright, pretty large, irregularly round, star near","简略描述":"pB, pL, iR, st nr"},{"ID":"4903","标识":"NGC4903","M标识":"NGC4903","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h1m22.7s","赤经D(J2000)":"13.022972222222222","赤纬(J2000)":"-30h56m6s","赤纬D(J2000)":"-30.935","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"73","详细描述":"very faint, considerably small, round, star attached, western of 2","简略描述":"vF, cS, R, * att, p of 2"},{"ID":"4904","标识":"NGC4904","M标识":"NGC4904","拓展名":"","组件":"","Class":"II 517","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h0m58.5s","赤经D(J2000)":"13.01625","赤纬(J2000)":"-0h1m37s","赤纬D(J2000)":"-0.026944444444444444","可见光星等V":"12","摄影(蓝光)星等B":"12.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.2","短轴(分)":"1.5","方位角":"25","详细描述":"pretty bright, pretty small, round, brighter middle","简略描述":"pB, pS, R, bM"},{"ID":"4905","标识":"NGC4905","M标识":"NGC4905","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h1m30.6s","赤经D(J2000)":"13.025166666666667","赤纬(J2000)":"-30h52m3s","赤纬D(J2000)":"-30.8675","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"26","详细描述":"very faint, very small, round, suddenly a little brighter middle, eastern of 2","简略描述":"vF, vS, R, slbM, f of 2"},{"ID":"4906","标识":"NGC4906","M标识":"NGC4906","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m39.8s","赤经D(J2000)":"13.011055555555556","赤纬(J2000)":"+27h55m26s","赤纬D(J2000)":"27.92388888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"vF, vS, * 15 p"},{"ID":"4907","标识":"NGC4907","M标识":"NGC4907","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m48.8s","赤经D(J2000)":"13.013555555555556","赤纬(J2000)":"+28h9m25s","赤纬D(J2000)":"28.15694444444444","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"1","方位角":"42","详细描述":"extremely faint, very small, 13th magnitude star attached","简略描述":"eF, vS, * 13 att"},{"ID":"4908","标识":"NGC4908","M标识":"NGC4908","拓展名":"","组件":"","Class":"III 363","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m54.4s","赤经D(J2000)":"13.01511111111111","赤纬(J2000)":"+28h0m25s","赤纬D(J2000)":"28.006944444444443","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.8","方位角":"105","详细描述":"GC","简略描述":"vF, vS"},{"ID":"4909","标识":"NGC4909","M标识":"NGC4909","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h2m1.7s","赤经D(J2000)":"13.033805555555556","赤纬(J2000)":"-42h46m18s","赤纬D(J2000)":"-42.77166666666667","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.9","短轴(分)":"1.7","方位角":"28","详细描述":"","简略描述":"eF, 3 or 4 st 11, 12 f"},{"ID":"4910","标识":"NGC4910","M标识":"NGC4910","拓展名":"","组件":"","Class":"V 3","业余排名":"15","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h1m10s","赤经D(J2000)":"13.019444444444446","赤纬(J2000)":"+1h40m0s","赤纬D(J2000)":"1.6666666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very large, partially resolved, some stars seen","简略描述":"eF, vL, rr"},{"ID":"4911","标识":"NGC4911","M标识":"NGC4911","拓展名":"","组件":"","Class":"II 392","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m56.3s","赤经D(J2000)":"13.015638888888889","赤纬(J2000)":"+27h47m25s","赤纬D(J2000)":"27.790277777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"127","详细描述":"","简略描述":"1st of 4, F, pL, * 11 2' np"},{"ID":"4912","标识":"NGC4912","M标识":"NGC4912","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m46s","赤经D(J2000)":"13.012777777777778","赤纬(J2000)":"+37h22m42s","赤纬D(J2000)":"37.37833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"GC","简略描述":"Two neb, n of and in line with h 1514 (?)"},{"ID":"4913","标识":"NGC4913","M标识":"NGC4913","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m46.5s","赤经D(J2000)":"13.012916666666667","赤纬(J2000)":"+37h20m40s","赤纬D(J2000)":"37.34444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"GC","简略描述":"Two neb, n of and in line with h 1514 (?)"},{"ID":"4914","标识":"NGC4914","M标识":"NGC4914","拓展名":"","组件":"","Class":"II 645","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m42.9s","赤经D(J2000)":"13.011916666666666","赤纬(J2000)":"+37h18m53s","赤纬D(J2000)":"37.31472222222222","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.5","短轴(分)":"2.1","方位角":"155","详细描述":"pretty bright, considerably small, round, suddenly much brighter middle, 17th magnitude star to northwest","简略描述":"pB, cS, R, smbM, * 17 np"},{"ID":"4915","标识":"NGC4915","M标识":"NGC4915","拓展名":"","组件":"","Class":"IV 47","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h1m28.1s","赤经D(J2000)":"13.024472222222222","赤纬(J2000)":"-4h32m46s","赤纬D(J2000)":"-4.546111111111111","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"55","详细描述":"pretty bright, small, round, brighter middle","简略描述":"pB, S, R, bM"},{"ID":"4916","标识":"NGC4916","M标识":"NGC4916","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m54.5s","赤经D(J2000)":"13.015138888888888","赤纬(J2000)":"+37h21m40s","赤纬D(J2000)":"37.361111111111114","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"GC","简略描述":"Neb, nf h 1514 (?)"},{"ID":"4917","标识":"NGC4917","M标识":"NGC4917","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m55.5s","赤经D(J2000)":"13.015416666666667","赤纬(J2000)":"+47h13m21s","赤纬D(J2000)":"47.222500000000004","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.5","短轴(分)":"1","方位角":"160","详细描述":"extremely faint, small, extended, brighter middle","简略描述":"eF, S, E, bM"},{"ID":"4918","标识":"NGC4918","M标识":"NGC4918","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h1m50.7s","赤经D(J2000)":"13.030750000000001","赤纬(J2000)":"-4h30m2s","赤纬D(J2000)":"-4.500555555555556","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"71","详细描述":"","简略描述":"eF, eS, R, bMN, h 1513 sp 4'"},{"ID":"4919","标识":"NGC4919","M标识":"NGC4919","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m17.6s","赤经D(J2000)":"13.021555555555556","赤纬(J2000)":"+27h48m31s","赤纬D(J2000)":"27.808611111111112","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"140","详细描述":"very faint, very small, 2nd of 4","简略描述":"vF, vS, 2nd of 4"},{"ID":"4920","标识":"NGC4920","M标识":"NGC4920","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h2m4.2s","赤经D(J2000)":"13.0345","赤纬(J2000)":"-11h22m42s","赤纬D(J2000)":"-11.378333333333334","可见光星等V":"13.5","摄影(蓝光)星等B":"14.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.7","方位角":"170","详细描述":"very faint","简略描述":"vF"},{"ID":"4921","标识":"NGC4921","M标识":"NGC4921","拓展名":"","组件":"","Class":"II 393","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m26.3s","赤经D(J2000)":"13.023972222222223","赤纬(J2000)":"+27h53m8s","赤纬D(J2000)":"27.885555555555555","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.4","短轴(分)":"2.1","方位角":"165","详细描述":"faint, pretty large, 3rd of 4","简略描述":"F, pL, 3rd of 4"},{"ID":"4922","标识":"NGC4922","M标识":"NGC4922","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m24.7s","赤经D(J2000)":"13.023527777777778","赤纬(J2000)":"+29h18m28s","赤纬D(J2000)":"29.30777777777778","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1","方位角":"129","详细描述":"","简略描述":"pB, S, R, lbM, * 11·12 f"},{"ID":"4923","标识":"NGC4923","M标识":"NGC4923","拓展名":"","组件":"","Class":"II 394","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m31.8s","赤经D(J2000)":"13.025500000000001","赤纬(J2000)":"+27h50m49s","赤纬D(J2000)":"27.846944444444443","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, 4th of 4","简略描述":"vF, 4th of 4"},{"ID":"4924","标识":"NGC4924","M标识":"NGC4924","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h2m12.9s","赤经D(J2000)":"13.036916666666666","赤纬(J2000)":"-14h58m9s","赤纬D(J2000)":"-14.969166666666666","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.3","方位角":"60","详细描述":"","简略描述":"cF, L, vlE 45° ±"},{"ID":"4925","标识":"NGC4925","M标识":"NGC4925","拓展名":"","组件":"","Class":"II 779","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h2m7.3s","赤经D(J2000)":"13.035361111111111","赤纬(J2000)":"-7h42m38s","赤纬D(J2000)":"-7.710555555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.7","方位角":"135","详细描述":"considerably faint, small","简略描述":"cF, S"},{"ID":"4926","标识":"NGC4926","M标识":"NGC4926","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m53.9s","赤经D(J2000)":"13.03163888888889","赤纬(J2000)":"+27h37m28s","赤纬D(J2000)":"27.624444444444446","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"1","方位角":"57","详细描述":"pretty bright, small, round, gradually a little brighter middle","简略描述":"pB, S, R, glbM"},{"ID":"4927","标识":"NGC4927","M标识":"NGC4927","拓展名":"","组件":"","Class":"III 364","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m57.6s","赤经D(J2000)":"13.032666666666668","赤纬(J2000)":"+28h0m22s","赤纬D(J2000)":"28.00611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"15","详细描述":"very faint","简略描述":"vF"},{"ID":"4928","标识":"NGC4928","M标识":"NGC4928","拓展名":"","组件":"","Class":"II 190","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h3m0.5s","赤经D(J2000)":"13.05013888888889","赤纬(J2000)":"-8h5m5s","赤纬D(J2000)":"-8.084722222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"50","详细描述":"faint, pretty small, very little extended, gradually a little brighter middle","简略描述":"F, pS, vlE, glbM"},{"ID":"4929","标识":"NGC4929","M标识":"NGC4929","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h2m44.5s","赤经D(J2000)":"13.045694444444445","赤纬(J2000)":"+28h2m43s","赤纬D(J2000)":"28.04527777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, small, 16th magnitude star close to west","简略描述":"F, S, * 16 close p"},{"ID":"4930","标识":"NGC4930","M标识":"NGC4930","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h4m5.1s","赤经D(J2000)":"13.068083333333334","赤纬(J2000)":"-41h24m41s","赤纬D(J2000)":"-41.41138888888889","可见光星等V":"11.1","摄影(蓝光)星等B":"12","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"4.4","短轴(分)":"3.6","方位角":"40","详细描述":"","简略描述":"vF, R, Δ 2 st 8, 9, f"},{"ID":"4931","标识":"NGC4931","M标识":"NGC4931","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m1.1s","赤经D(J2000)":"13.050305555555557","赤纬(J2000)":"+28h1m55s","赤纬D(J2000)":"28.031944444444445","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"78","详细描述":"faint, small","简略描述":"F, S"},{"ID":"4932","标识":"NGC4932","M标识":"NGC4932","拓展名":"","组件":"","Class":"III 818","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h2m37.5s","赤经D(J2000)":"13.04375","赤纬(J2000)":"+50h26m21s","赤纬D(J2000)":"50.439166666666665","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"0","详细描述":"considerably faint, small, round, very gradually a little brighter middle","简略描述":"cF, S, R, vglbM"},{"ID":"4933","标识":"NGC4933","M标识":"NGC4933","拓展名":"","组件":"","Class":"II 191","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h3m56.7s","赤经D(J2000)":"13.065750000000001","赤纬(J2000)":"-11h29m51s","赤纬D(J2000)":"-11.497499999999999","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"2","短轴(分)":"1.1","方位角":"54","详细描述":"pretty bright, pretty large, irregularly round","简略描述":"pB, pL, iR"},{"ID":"4934","标识":"NGC4934","M标识":"NGC4934","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m16.3s","赤经D(J2000)":"13.054527777777778","赤纬(J2000)":"+28h1m48s","赤纬D(J2000)":"28.029999999999998","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.2","方位角":"104","详细描述":"faint, small, a little extended","简略描述":"F, S, lE"},{"ID":"4935","标识":"NGC4935","M标识":"NGC4935","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m21.2s","赤经D(J2000)":"13.055888888888889","赤纬(J2000)":"+14h22m41s","赤纬D(J2000)":"14.378055555555555","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"1","方位角":"75","详细描述":"very faint, very small, round, 3 stars to east","简略描述":"vF, vS, R, 3 st f"},{"ID":"4936","标识":"NGC4936","M标识":"NGC4936","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h4m17s","赤经D(J2000)":"13.071388888888889","赤纬(J2000)":"-30h31m36s","赤纬D(J2000)":"-30.526666666666667","可见光星等V":"10.7","摄影(蓝光)星等B":"11.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.7","短轴(分)":"2.3","方位角":"168","详细描述":"pretty bright, small, round, brighter middle, star 6 seconds of time to east","简略描述":"pB, S, R, bM, * f 6s"},{"ID":"4937","标识":"NGC4937","M标识":"NGC4937","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h4m51.9s","赤经D(J2000)":"13.081083333333334","赤纬(J2000)":"-47h13m8s","赤纬D(J2000)":"-47.21888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, round, preceding of 2","简略描述":"eeF, S, R, p of 2"},{"ID":"4938","标识":"NGC4938","M标识":"NGC4938","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h2m57.4s","赤经D(J2000)":"13.049277777777778","赤纬(J2000)":"+51h19m9s","赤纬D(J2000)":"51.31916666666667","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"39","详细描述":"extremely faint, round, pretty suddenly brighter middle","简略描述":"eF, R, psbM"},{"ID":"4939","标识":"NGC4939","M标识":"NGC4939","拓展名":"","组件":"","Class":"II 561","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h4m14.3s","赤经D(J2000)":"13.070638888888888","赤纬(J2000)":"-10h20m24s","赤纬D(J2000)":"-10.34","可见光星等V":"11.3","摄影(蓝光)星等B":"11.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"5.5","短轴(分)":"2.8","方位角":"5","详细描述":"pretty bright, large, round, gradually much brighter middle","简略描述":"pB, L, R, gmbM"},{"ID":"4940","标识":"NGC4940","M标识":"NGC4940","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h5m0.2s","赤经D(J2000)":"13.083388888888889","赤纬(J2000)":"-47h14m13s","赤纬D(J2000)":"-47.23694444444445","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"faint, small, round, eastern of 2","简略描述":"F, S, R, f of 2"},{"ID":"4941","标识":"NGC4941","M标识":"NGC4941","拓展名":"","组件":"","Class":"I 40","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h4m13s","赤经D(J2000)":"13.070277777777777","赤纬(J2000)":"-5h33m5s","赤纬D(J2000)":"-5.551388888888889","可见光星等V":"11.1","摄影(蓝光)星等B":"11.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.9","短轴(分)":"2.7","方位角":"15","详细描述":"pretty faint, large, extended, gradually brighter middle and bright nucleus, mottled but not resolved","简略描述":"pF, L, E, gbMBN, r"},{"ID":"4942","标识":"NGC4942","M标识":"NGC4942","拓展名":"","组件":"","Class":"III 761","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h4m19s","赤经D(J2000)":"13.071944444444444","赤纬(J2000)":"-7h38m56s","赤纬D(J2000)":"-7.648888888888888","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"145","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"4943","标识":"NGC4943","M标识":"NGC4943","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m45s","赤经D(J2000)":"13.0625","赤纬(J2000)":"+28h5m1s","赤纬D(J2000)":"28.08361111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"111","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4944","标识":"NGC4944","M标识":"NGC4944","拓展名":"","组件":"","Class":"II 395","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m50s","赤经D(J2000)":"13.06388888888889","赤纬(J2000)":"+28h11m7s","赤纬D(J2000)":"28.185277777777777","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"89","详细描述":"faint, small, round, brighter middle, 9th magnitude star 1 arcmin northeast","简略描述":"F, S, R, bM, * 9 nf 1'"},{"ID":"4945","标识":"NGC4945","M标识":"NGC4945","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"镊子星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h5m26.1s","赤经D(J2000)":"13.090583333333335","赤纬(J2000)":"-49h27m46s","赤纬D(J2000)":"-49.46277777777778","可见光星等V":"8.4","摄影(蓝光)星等B":"9.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"19.8","短轴(分)":"4","方位角":"43","详细描述":"","简略描述":"B, vL, vmE 38°.7"},{"ID":"4946","标识":"NGC4946","M标识":"NGC4946","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h5m29.2s","赤经D(J2000)":"13.091444444444445","赤纬(J2000)":"-43h35m30s","赤纬D(J2000)":"-43.59166666666667","可见光星等V":"12.4","摄影(蓝光)星等B":"13.5","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"131","详细描述":"bright, pretty small, round, gradually pretty much brighter middle, western of 2","简略描述":"B, pS, R, gpmbM, p of 2"},{"ID":"4947","标识":"NGC4947","M标识":"NGC4947","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h5m20.2s","赤经D(J2000)":"13.088944444444445","赤纬(J2000)":"-35h20m13s","赤纬D(J2000)":"-35.33694444444445","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.4","短轴(分)":"1.2","方位角":"10","详细描述":"faint, pretty large, round, very gradually a little brighter middle","简略描述":"F, pL, R, vglbM"},{"ID":"4948","标识":"NGC4948","M标识":"NGC4948","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h4m55.8s","赤经D(J2000)":"13.082166666666666","赤纬(J2000)":"-7h56m47s","赤纬D(J2000)":"-7.946388888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"0.7","方位角":"145","详细描述":"","简略描述":"eeF, pS, lE, I 130 f"},{"ID":"4949","标识":"NGC4949","M标识":"NGC4949","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h4m18.1s","赤经D(J2000)":"13.071694444444445","赤纬(J2000)":"+29h1m45s","赤纬D(J2000)":"29.029166666666665","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"108","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"4950","标识":"NGC4950","M标识":"NGC4950","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h5m36.4s","赤经D(J2000)":"13.093444444444446","赤纬(J2000)":"-43h30m1s","赤纬D(J2000)":"-43.500277777777775","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, small, round, pretty suddenly a little brighter middle, eastern of 2","简略描述":"eF, S, R, pslbM, f of 2"},{"ID":"4951","标识":"NGC4951","M标识":"NGC4951","拓展名":"","组件":"","Class":"II 188","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h5m7.5s","赤经D(J2000)":"13.085416666666667","赤纬(J2000)":"-6h29m39s","赤纬D(J2000)":"-6.494166666666667","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.8","短轴(分)":"1.6","方位角":"90","详细描述":"faint, pretty large, a little extended, mottled but not resolved","简略描述":"F, pL, lE, r"},{"ID":"4952","标识":"NGC4952","M标识":"NGC4952","拓展名":"","组件":"","Class":"II 396","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E4","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h4m58.5s","赤经D(J2000)":"13.082916666666666","赤纬(J2000)":"+29h7m21s","赤纬D(J2000)":"29.1225","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"23","详细描述":"very faint, very small","简略描述":"F, S, R, psbM * 11"},{"ID":"4953","标识":"NGC4953","M标识":"NGC4953","拓展名":"","组件":"1","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h6m10.3s","赤经D(J2000)":"13.10286111111111","赤纬(J2000)":"-37h35m10s","赤纬D(J2000)":"-37.586111111111116","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"46","详细描述":"","简略描述":"vF, pS, am 3 S st"},{"ID":"4954","标识":"NGC4954","M标识":"NGC4954","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"13h2m19.3s","赤经D(J2000)":"13.038694444444443","赤纬(J2000)":"+75h24m17s","赤纬D(J2000)":"75.40472222222223","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"62","详细描述":"very faint, very small","简略描述":"vF, S, R, vgbM"},{"ID":"4955","标识":"NGC4955","M标识":"NGC4955","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h6m4.8s","赤经D(J2000)":"13.101333333333333","赤纬(J2000)":"-29h45m16s","赤纬D(J2000)":"-29.754444444444445","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"1.3","方位角":"23","详细描述":"faint, considerably small, round, gradually brighter middle","简略描述":"F, cS, R, gbM"},{"ID":"4956","标识":"NGC4956","M标识":"NGC4956","拓展名":"","组件":"","Class":"II 413","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h5m1s","赤经D(J2000)":"13.08361111111111","赤纬(J2000)":"+35h10m40s","赤纬D(J2000)":"35.17777777777778","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"pretty bright, considerably small, round, suddenly much brighter middle","简略描述":"pB, cS, R, smbM"},{"ID":"4957","标识":"NGC4957","M标识":"NGC4957","拓展名":"","组件":"","Class":"II 397","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h5m12.5s","赤经D(J2000)":"13.086805555555555","赤纬(J2000)":"+27h34m10s","赤纬D(J2000)":"27.569444444444443","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"1","方位角":"100","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"4958","标识":"NGC4958","M标识":"NGC4958","拓展名":"","组件":"","Class":"I 130","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h5m48.9s","赤经D(J2000)":"13.096916666666667","赤纬(J2000)":"-8h1m12s","赤纬D(J2000)":"-8.020000000000001","可见光星等V":"10.7","摄影(蓝光)星等B":"11.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"3.9","短轴(分)":"1.4","方位角":"9","详细描述":"","简略描述":"vB, pS, E, bMBN"},{"ID":"4959","标识":"NGC4959","M标识":"NGC4959","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h5m41s","赤经D(J2000)":"13.094722222222222","赤纬(J2000)":"+33h10m46s","赤纬D(J2000)":"33.17944444444444","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"4960","标识":"NGC4960","M标识":"NGC4960","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h5m47.8s","赤经D(J2000)":"13.096611111111113","赤纬(J2000)":"+27h44m3s","赤纬D(J2000)":"27.734166666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14","B-V":"0.4","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"100","详细描述":"very faint, very small","简略描述":"F, S, R, N = * 16"},{"ID":"4961","标识":"NGC4961","M标识":"NGC4961","拓展名":"","组件":"","Class":"II 398","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h5m47.8s","赤经D(J2000)":"13.096611111111113","赤纬(J2000)":"+27h44m3s","赤纬D(J2000)":"27.734166666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14","B-V":"0.4","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"100","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"4962","标识":"NGC4962","M标识":"NGC4962","拓展名":"","组件":"","Class":"III 303","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h4m58.5s","赤经D(J2000)":"13.082916666666666","赤纬(J2000)":"+29h7m21s","赤纬D(J2000)":"29.1225","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"23","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"4963","标识":"NGC4963","M标识":"NGC4963","拓展名":"","组件":"","Class":"II 663","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h5m51.9s","赤经D(J2000)":"13.097750000000001","赤纬(J2000)":"+41h43m17s","赤纬D(J2000)":"41.72138888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"","简略描述":"F, vS, R, stellar, vS * s"},{"ID":"4964","标识":"NGC4964","M标识":"NGC4964","拓展名":"","组件":"","Class":"III 779","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h5m24.8s","赤经D(J2000)":"13.090222222222224","赤纬(J2000)":"+56h19m23s","赤纬D(J2000)":"56.323055555555555","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"134","详细描述":"extremely faint, small, a little extended","简略描述":"eF, S, lE"},{"ID":"4965","标识":"NGC4965","M标识":"NGC4965","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h7m9.2s","赤经D(J2000)":"13.119222222222223","赤纬(J2000)":"-28h13m42s","赤纬D(J2000)":"-28.22833333333333","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.4","短轴(分)":"2","方位角":"136","详细描述":"very faint, very large, considerably extended, very gradually brighter middle","简略描述":"vF, vL, cE, vgbM"},{"ID":"4966","标识":"NGC4966","M标识":"NGC4966","拓展名":"","组件":"","Class":"III 304","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h6m17.3s","赤经D(J2000)":"13.104805555555556","赤纬(J2000)":"+29h3m46s","赤纬D(J2000)":"29.06277777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1","短轴(分)":"0.5","方位角":"143","详细描述":"","简略描述":"vF, vS, vlE, vglbM, ** sp"},{"ID":"4967","标识":"NGC4967","M标识":"NGC4967","拓展名":"","组件":"","Class":"III 783","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h5m36.4s","赤经D(J2000)":"13.093444444444446","赤纬(J2000)":"+53h33m52s","赤纬D(J2000)":"53.56444444444444","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"139","详细描述":"very faint, small, extended, star attached","简略描述":"vF, S, E, * att"},{"ID":"4968","标识":"NGC4968","M标识":"NGC4968","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h7m6s","赤经D(J2000)":"13.118333333333334","赤纬(J2000)":"-23h40m37s","赤纬D(J2000)":"-23.676944444444445","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"56","详细描述":"faint, pretty large, round, gradually a little brighter middle","简略描述":"F, pL, R, glbM"},{"ID":"4969","标识":"NGC4969","M标识":"NGC4969","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h7m2.4s","赤经D(J2000)":"13.117333333333335","赤纬(J2000)":"+13h38m12s","赤纬D(J2000)":"13.636666666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"96","详细描述":"most extremely faint, small, round, very difficult","简略描述":"eeF, S, R, v diffic"},{"ID":"4970","标识":"NGC4970","M标识":"NGC4970","拓展名":"","组件":"","Class":"III 765","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h7m33.6s","赤经D(J2000)":"13.126000000000001","赤纬(J2000)":"-24h0m32s","赤纬D(J2000)":"-24.00888888888889","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.8","短轴(分)":"1","方位角":"140","详细描述":"very faint, pretty large, irregular figure","简略描述":"vF, pL, iF"},{"ID":"4971","标识":"NGC4971","M标识":"NGC4971","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h6m54.9s","赤经D(J2000)":"13.11525","赤纬(J2000)":"+28h32m55s","赤纬D(J2000)":"28.548611111111114","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"","简略描述":"F, vS, lE, ** nr n"},{"ID":"4972","标识":"NGC4972","M标识":"NGC4972","拓展名":"","组件":"","Class":"III 937","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"13h2m19.3s","赤经D(J2000)":"13.038694444444443","赤纬(J2000)":"+75h24m17s","赤纬D(J2000)":"75.40472222222223","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"62","详细描述":"very faint, small, irregularly round, brighter middle","简略描述":"vF, S, iR, bM"},{"ID":"4973","标识":"NGC4973","M标识":"NGC4973","拓展名":"","组件":"","Class":"III 781","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h5m32.1s","赤经D(J2000)":"13.09225","赤纬(J2000)":"+53h41m8s","赤纬D(J2000)":"53.68555555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"4974","标识":"NGC4974","M标识":"NGC4974","拓展名":"","组件":"","Class":"III 782","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h5m55.9s","赤经D(J2000)":"13.09886111111111","赤纬(J2000)":"+53h39m33s","赤纬D(J2000)":"53.659166666666664","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"129","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"4975","标识":"NGC4975","M标识":"NGC4975","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h7m50.3s","赤经D(J2000)":"13.130638888888889","赤纬(J2000)":"-5h1m3s","赤纬D(J2000)":"-5.0175","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"46","详细描述":"very faint, very small, round, pretty suddenly brighter middle","简略描述":"vF, vS, R, psbM"},{"ID":"4976","标识":"NGC4976","M标识":"NGC4976","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h8m37.4s","赤经D(J2000)":"13.143722222222221","赤纬(J2000)":"-49h30m21s","赤纬D(J2000)":"-49.505833333333335","可见光星等V":"10","摄影(蓝光)星等B":"11","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"5.6","短轴(分)":"3","方位角":"161","详细描述":"bright, pretty large, round, gradually much brighter middle","简略描述":"B, pL, R, gmbM"},{"ID":"4977","标识":"NGC4977","M标识":"NGC4977","拓展名":"","组件":"","Class":"III 780","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h6m4.4s","赤经D(J2000)":"13.101222222222221","赤纬(J2000)":"+55h39m24s","赤纬D(J2000)":"55.656666666666666","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"15.2","长轴(分)":"2","短轴(分)":"2","方位角":"","详细描述":"considerably faint, small","简略描述":"cF, S"},{"ID":"4978","标识":"NGC4978","M标识":"NGC4978","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h7m50.4s","赤经D(J2000)":"13.130666666666666","赤纬(J2000)":"+18h24m58s","赤纬D(J2000)":"18.41611111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"142","详细描述":"faint, very small, round, suddenly brighter middle, stellar","简略描述":"F, vS, R, sbM, stellar"},{"ID":"4979","标识":"NGC4979","M标识":"NGC4979","拓展名":"","组件":"","Class":"III 346","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h7m42.8s","赤经D(J2000)":"13.128555555555556","赤纬(J2000)":"+24h48m40s","赤纬D(J2000)":"24.811111111111114","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.7","方位角":"100","详细描述":"extremely faint, pretty large, a little extended","简略描述":"eF, pL, lE"},{"ID":"4980","标识":"NGC4980","M标识":"NGC4980","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h9m10.1s","赤经D(J2000)":"13.152805555555556","赤纬(J2000)":"-28h38m30s","赤纬D(J2000)":"-28.641666666666666","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"168","详细描述":"extremely faint, considerably small, round","简略描述":"eF, cS, R"},{"ID":"4981","标识":"NGC4981","M标识":"NGC4981","拓展名":"","组件":"","Class":"II 189","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h8m48.7s","赤经D(J2000)":"13.14686111111111","赤纬(J2000)":"-6h46m39s","赤纬D(J2000)":"-6.7775","可见光星等V":"11.3","摄影(蓝光)星等B":"12.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.8","短轴(分)":"1.9","方位角":"159","详细描述":"","简略描述":"B, pL, R, * 10 1' sf"},{"ID":"4982","标识":"NGC4982","M标识":"NGC4982","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h8m46.1s","赤经D(J2000)":"13.146138888888888","赤纬(J2000)":"-10h35m17s","赤纬D(J2000)":"-10.588055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"4983","标识":"NGC4983","M标识":"NGC4983","拓展名":"","组件":"","Class":"III 365","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h8m27.4s","赤经D(J2000)":"13.140944444444443","赤纬(J2000)":"+28h19m15s","赤纬D(J2000)":"28.320833333333333","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"123","详细描述":"very faint","简略描述":"vF"},{"ID":"4984","标识":"NGC4984","M标识":"NGC4984","拓展名":"","组件":"","Class":"II 301","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h8m57.1s","赤经D(J2000)":"13.149194444444444","赤纬(J2000)":"-15h30m57s","赤纬D(J2000)":"-15.515833333333333","可见光星等V":"11.3","摄影(蓝光)星等B":"12.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.6","短轴(分)":"2.5","方位角":"18","详细描述":"bright, pretty large, round, pretty suddenly much brighter middle","简略描述":"B, pL, R, psmbM"},{"ID":"4985","标识":"NGC4985","M标识":"NGC4985","拓展名":"","组件":"","Class":"III 654","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h8m12s","赤经D(J2000)":"13.136666666666667","赤纬(J2000)":"+41h40m37s","赤纬D(J2000)":"41.676944444444445","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"135","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"4986","标识":"NGC4986","M标识":"NGC4986","拓展名":"","组件":"","Class":"III 401","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h8m24.5s","赤经D(J2000)":"13.140138888888888","赤纬(J2000)":"+35h12m19s","赤纬D(J2000)":"35.20527777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"70","详细描述":"very faint, small, round, stellar","简略描述":"vF, S, R, stellar"},{"ID":"4987","标识":"NGC4987","M标识":"NGC4987","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h7m59s","赤经D(J2000)":"13.133055555555556","赤纬(J2000)":"+51h55m46s","赤纬D(J2000)":"51.92944444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"35","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"4988","标识":"NGC4988","M标识":"NGC4988","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h9m54.2s","赤经D(J2000)":"13.165055555555556","赤纬(J2000)":"-43h6m20s","赤纬D(J2000)":"-43.105555555555554","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"26","详细描述":"very faint, small, extended, mottled but not resolved","简略描述":"vF, S, E, r"},{"ID":"4989","标识":"NGC4989","M标识":"NGC4989","拓展名":"","组件":"","Class":"II 185","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h9m16s","赤经D(J2000)":"13.154444444444445","赤纬(J2000)":"-5h23m47s","赤纬D(J2000)":"-5.39638888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"171","详细描述":"","简略描述":"pB, S, R, * 4 m sf (Auw 31)"},{"ID":"4990","标识":"NGC4990","M标识":"NGC4990","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"茧星系","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h9m17.3s","赤经D(J2000)":"13.154805555555557","赤纬(J2000)":"-5h16m21s","赤纬D(J2000)":"-5.2725","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.8","方位角":"55","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4991","标识":"NGC4991","M标识":"NGC4991","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h9m15.2s","赤经D(J2000)":"13.154222222222222","赤纬(J2000)":"+2h20m54s","赤纬D(J2000)":"2.3483333333333336","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"90","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4992","标识":"NGC4992","M标识":"NGC4992","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h9m5.7s","赤经D(J2000)":"13.151583333333333","赤纬(J2000)":"+11h38m3s","赤纬D(J2000)":"11.634166666666665","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"10","详细描述":"very faint, small, a little extended, 2 small (faint) stars to south","简略描述":"vF, S, lE, 2 S st s"},{"ID":"4993","标识":"NGC4993","M标识":"NGC4993","拓展名":"","组件":"","Class":"III 766","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h9m47.6s","赤经D(J2000)":"13.163222222222222","赤纬(J2000)":"-23h23m2s","赤纬D(J2000)":"-23.383888888888887","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"168","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"4994","标识":"NGC4994","M标识":"NGC4994","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E\/SB0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h9m47.6s","赤经D(J2000)":"13.163222222222222","赤纬(J2000)":"-23h23m2s","赤纬D(J2000)":"-23.383888888888887","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"168","详细描述":"very faint, very small","简略描述":"pF, cS, R, slbM, am st"},{"ID":"4995","标识":"NGC4995","M标识":"NGC4995","拓展名":"","组件":"","Class":"I 42","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h9m40.6s","赤经D(J2000)":"13.161277777777778","赤纬(J2000)":"-7h49m59s","赤纬D(J2000)":"-7.833055555555555","可见光星等V":"11.1","摄影(蓝光)星等B":"12","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2.4","短轴(分)":"1.7","方位角":"95","详细描述":"pretty bright, pretty large, round, very gradually pretty much brighter middle, 8th magnitude star to northwest","简略描述":"pB, pL, R, vgpmbM, * 8 np"},{"ID":"4996","标识":"NGC4996","M标识":"NGC4996","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h9m31.8s","赤经D(J2000)":"13.158833333333334","赤纬(J2000)":"+0h51m27s","赤纬D(J2000)":"0.8574999999999999","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"1.4","方位角":"40","详细描述":"pretty bright, small, round, brighter middle","简略描述":"pB, S, R, bM"},{"ID":"4997","标识":"NGC4997","M标识":"NGC4997","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h9m51.6s","赤经D(J2000)":"13.164333333333333","赤纬(J2000)":"-16h30m55s","赤纬D(J2000)":"-16.51527777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"94","详细描述":"","简略描述":"No description, * 6.5 2' p"},{"ID":"4998","标识":"NGC4998","M标识":"NGC4998","拓展名":"","组件":"","Class":"III 819","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h8m10.3s","赤经D(J2000)":"13.136194444444444","赤纬(J2000)":"+50h39m52s","赤纬D(J2000)":"50.66444444444444","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"48","详细描述":"very faint","简略描述":"vF"},{"ID":"4999","标识":"NGC4999","M标识":"NGC4999","拓展名":"","组件":"","Class":"II 537","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h9m33.2s","赤经D(J2000)":"13.159222222222223","赤纬(J2000)":"+1h40m21s","赤纬D(J2000)":"1.6724999999999999","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.3","短轴(分)":"1.9","方位角":"128","详细描述":"considerably faint, pretty large, round, a little brighter middle, extremely mottled but not resolved","简略描述":"cF, pL, R, lbM, er"},{"ID":"5000","标识":"NGC5000","M标识":"NGC5000","拓展名":"","组件":"","Class":"III 366","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h9m47.5s","赤经D(J2000)":"13.163194444444445","赤纬(J2000)":"+28h54m24s","赤纬D(J2000)":"28.906666666666666","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"0","详细描述":"considerably faint, pretty small, a little extended","简略描述":"cF, pS, lE"},{"ID":"5001","标识":"NGC5001","M标识":"NGC5001","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h9m33s","赤经D(J2000)":"13.159166666666668","赤纬(J2000)":"+53h29m39s","赤纬D(J2000)":"53.494166666666665","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"160","详细描述":"pretty faint, small, irregularly round, gradually brighter middle","简略描述":"pF, S, iR, gbM"},{"ID":"5002","标识":"NGC5002","M标识":"NGC5002","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h10m38.2s","赤经D(J2000)":"13.177277777777777","赤纬(J2000)":"+36h38m3s","赤纬D(J2000)":"36.634166666666665","可见光星等V":"13.8","摄影(蓝光)星等B":"14.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.7","短轴(分)":"1","方位角":"173","详细描述":"very faint, pretty large, extended, 13th magnitude star attached on north","简略描述":"vF, pL, E, * 13 att, n"},{"ID":"5003","标识":"NGC5003","M标识":"NGC5003","拓展名":"","组件":"","Class":"III 655","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h8m37.8s","赤经D(J2000)":"13.143833333333333","赤纬(J2000)":"+43h44m14s","赤纬D(J2000)":"43.73722222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1","短轴(分)":"0.8","方位角":"72","详细描述":"very faint, pretty small, a little brighter middle, Minute of RA?","简略描述":"vF, pS, lbM, Minute of RA?"},{"ID":"5004","标识":"NGC5004","M标识":"NGC5004","拓展名":"A","组件":"","Class":"III 305","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h11m1.5s","赤经D(J2000)":"13.18375","赤纬(J2000)":"+29h38m12s","赤纬D(J2000)":"29.636666666666667","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"170","详细描述":"very faint, very small, very little extended","简略描述":"vF, vS, vlE"},{"ID":"5005","标识":"NGC5005","M标识":"NGC5005","拓展名":"","组件":"","Class":"I 96","业余排名":"2","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h10m56.1s","赤经D(J2000)":"13.18225","赤纬(J2000)":"+37h3m31s","赤纬D(J2000)":"37.058611111111105","可见光星等V":"9.8","摄影(蓝光)星等B":"10.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"5.8","短轴(分)":"2.9","方位角":"65","详细描述":"very bright, very large, very much extended 66°, very suddenly brighter middle and nucleus","简略描述":"vB, vL, vmE 66°, vsbMN"},{"ID":"5006","标识":"NGC5006","M标识":"NGC5006","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h11m45.7s","赤经D(J2000)":"13.196027777777777","赤纬(J2000)":"-19h15m41s","赤纬D(J2000)":"-19.261388888888888","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2","短轴(分)":"1.7","方位角":"170","详细描述":"faint star close to west","简略描述":"F * close p"},{"ID":"5007","标识":"NGC5007","M标识":"NGC5007","拓展名":"","组件":"","Class":"III 848","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h9m14.2s","赤经D(J2000)":"13.153944444444445","赤纬(J2000)":"+62h10m31s","赤纬D(J2000)":"62.17527777777777","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"135","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"5008","标识":"NGC5008","M标识":"NGC5008","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h10m57s","赤经D(J2000)":"14.1825","赤纬(J2000)":"+25h29m47s","赤纬D(J2000)":"25.49638888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"1","方位角":"150","详细描述":"pretty faint, pretty large, round","简略描述":"pF, pL, R"},{"ID":"5009","标识":"NGC5009","M标识":"NGC5009","拓展名":"","组件":"","Class":"III 820","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h10m47.2s","赤经D(J2000)":"13.179777777777778","赤纬(J2000)":"+50h5m35s","赤纬D(J2000)":"50.09305555555556","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"75","详细描述":"very faint, round, between 2 very small stars","简略描述":"vF, R, bet 2 vS st"},{"ID":"5010","标识":"NGC5010","M标识":"NGC5010","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h12m26.3s","赤经D(J2000)":"13.207305555555555","赤纬(J2000)":"-15h47m51s","赤纬D(J2000)":"-15.7975","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"120","详细描述":"very faint, round, brighter middle, 10th magnitude star 5 arcmin to northwest","简略描述":"vF, R, bM, * 10 np 5'"},{"ID":"5011","标识":"NGC5011","M标识":"NGC5011","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h12m51.6s","赤经D(J2000)":"13.214333333333332","赤纬(J2000)":"-43h5m48s","赤纬D(J2000)":"-43.09666666666667","可见光星等V":"11.4","摄影(蓝光)星等B":"12.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.5","短轴(分)":"2.1","方位角":"154","详细描述":"pretty bright, considerably small, round, among 4 stars","简略描述":"pB, cS, R, am 4 st"},{"ID":"5012","标识":"NGC5012","M标识":"NGC5012","拓展名":"","组件":"","Class":"I 85","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h11m36.7s","赤经D(J2000)":"13.193527777777778","赤纬(J2000)":"+22h54m53s","赤纬D(J2000)":"22.91472222222222","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.9","短轴(分)":"1.7","方位角":"10","详细描述":"pretty faint, considerably large, extended 17°, binuclear, 9th magnitude star to east","简略描述":"pF, cL, E 17°, biN, * 9 f"},{"ID":"5013","标识":"NGC5013","M标识":"NGC5013","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h12m7.3s","赤经D(J2000)":"13.202027777777777","赤纬(J2000)":"+3h11m58s","赤纬D(J2000)":"3.199444444444444","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"135","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"5014","标识":"NGC5014","M标识":"NGC5014","拓展名":"","组件":"","Class":"II 414","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h11m31.4s","赤经D(J2000)":"13.192055555555555","赤纬(J2000)":"+36h16m54s","赤纬D(J2000)":"36.281666666666666","可见光星等V":"12.9","摄影(蓝光)星等B":"13.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"102","详细描述":"pretty faint, small, extended, pretty suddenly brighter middle","简略描述":"pF, S, E, psbM"},{"ID":"5015","标识":"NGC5015","M标识":"NGC5015","拓展名":"","组件":"","Class":"II 637","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h12m22.8s","赤经D(J2000)":"13.206333333333333","赤纬(J2000)":"-4h20m13s","赤纬D(J2000)":"-4.336944444444444","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"60","详细描述":"faint, considerably large, irregularly round, a little brighter middle","简略描述":"F, cL, iR, lbM"},{"ID":"5016","标识":"NGC5016","M标识":"NGC5016","拓展名":"","组件":"","Class":"II 356","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h12m6.5s","赤经D(J2000)":"13.201805555555556","赤纬(J2000)":"+24h5m42s","赤纬D(J2000)":"24.095","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"50","详细描述":"pretty bright, small","简略描述":"pB, S"},{"ID":"5017","标识":"NGC5017","M标识":"NGC5017","拓展名":"","组件":"","Class":"III 669","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h12m54.4s","赤经D(J2000)":"13.21511111111111","赤纬(J2000)":"-16h45m56s","赤纬D(J2000)":"-16.765555555555554","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"39","详细描述":"very faint, round, brighter middle","简略描述":"vF, R, bM"},{"ID":"5018","标识":"NGC5018","M标识":"NGC5018","拓展名":"","组件":"","Class":"II 746","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h13m0.9s","赤经D(J2000)":"13.216916666666666","赤纬(J2000)":"-19h31m10s","赤纬D(J2000)":"-19.519444444444442","可见光星等V":"10.8","摄影(蓝光)星等B":"11.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.4","短轴(分)":"2.6","方位角":"112","详细描述":"considerably bright, small, round, much brghter middle pretty bright nucleus","简略描述":"cB, S, R, mbMpBN"},{"ID":"5019","标识":"NGC5019","M标识":"NGC5019","拓展名":"","组件":"","Class":"III 545","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h12m42.5s","赤经D(J2000)":"13.211805555555555","赤纬(J2000)":"+4h43m45s","赤纬D(J2000)":"4.729166666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"105","详细描述":"extremely faint, very small, round, extremely mottled but not resolved","简略描述":"eF, vS, R, er"},{"ID":"5020","标识":"NGC5020","M标识":"NGC5020","拓展名":"","组件":"","Class":"II 129","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h12m39.8s","赤经D(J2000)":"13.211055555555555","赤纬(J2000)":"+12h35m59s","赤纬D(J2000)":"12.599722222222223","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.1","短轴(分)":"2.7","方位角":"85","详细描述":"considerably faint, considerably large, very little extended, a little brighter middle","简略描述":"cF, cL, vlE, lbM"},{"ID":"5021","标识":"NGC5021","M标识":"NGC5021","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h12m6.1s","赤经D(J2000)":"13.201694444444444","赤纬(J2000)":"+46h11m47s","赤纬D(J2000)":"46.19638888888888","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"78","详细描述":"pretty faint, considerably small, round, 12th magnitude star 90 arcsec to northeast","简略描述":"pF, cS, R, * 12 nf 90\""},{"ID":"5022","标识":"NGC5022","M标识":"NGC5022","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h13m30.7s","赤经D(J2000)":"13.225194444444444","赤纬(J2000)":"-19h32m51s","赤纬D(J2000)":"-19.547500000000003","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.5","短轴(分)":"0.4","方位角":"21","详细描述":"very faint, pretty large, extended 30°, gradually brighter middle. east of II 746, faint star close preceding (to west)","简略描述":"vF, pL, E 30°, gbM, f II 746, F * close p"},{"ID":"5023","标识":"NGC5023","M标识":"NGC5023","拓展名":"","组件":"","Class":"II 664","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h12m11.7s","赤经D(J2000)":"13.203249999999999","赤纬(J2000)":"+44h2m14s","赤纬D(J2000)":"44.03722222222222","可见光星等V":"12.3","摄影(蓝光)星等B":"12.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"5.8","短轴(分)":"0.8","方位角":"28","详细描述":"pretty faint, large, much extended 20°, very little brighter middle","简略描述":"pF, L, mE 20°, vlbM"},{"ID":"5024","标识":"NGC5024","M标识":"M53","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"V","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h12m55.3s","赤经D(J2000)":"13.215361111111111","赤纬(J2000)":"+18h10m11s","赤纬D(J2000)":"18.169722222222223","可见光星等V":"7.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"13","短轴(分)":"","方位角":"","详细描述":"remarkable object, a globular cluster, bright. very compressed, irregularly round, very very much brighter middle, stars of 12th magnitude","简略描述":"!, globular, B, vC, iR, vvmbM, st 12"},{"ID":"5025","标识":"NGC5025","M标识":"NGC5025","拓展名":"","组件":"","Class":"III 649","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h12m44.8s","赤经D(J2000)":"13.212444444444444","赤纬(J2000)":"+31h48m31s","赤纬D(J2000)":"31.808611111111112","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2","短轴(分)":"0.6","方位角":"57","详细描述":"very faint, small, a little extended, 13th magnitude star to north","简略描述":"vF, S, lE, * 13 n"},{"ID":"5026","标识":"NGC5026","M标识":"NGC5026","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h14m13.4s","赤经D(J2000)":"13.237055555555555","赤纬(J2000)":"-42h57m41s","赤纬D(J2000)":"-42.96138888888889","可见光星等V":"11.3","摄影(蓝光)星等B":"12.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.3","短轴(分)":"2.1","方位角":"52","详细描述":"pretty bright, pretty large, round, gradually brighter middle, 7th magnitude star to northeast","简略描述":"pB, pL, R, gbM, * 7 nf"},{"ID":"5027","标识":"NGC5027","M标识":"NGC5027","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h13m20.9s","赤经D(J2000)":"13.222472222222223","赤纬(J2000)":"+6h3m43s","赤纬D(J2000)":"6.061944444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"63","详细描述":"very faint, small, round, pretty gradually brighter middle","简略描述":"vF, S, R, pgbM"},{"ID":"5028","标识":"NGC5028","M标识":"NGC5028","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h13m45.8s","赤经D(J2000)":"13.22938888888889","赤纬(J2000)":"-13h2m31s","赤纬D(J2000)":"-13.041944444444445","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"130","详细描述":"very faint, small, 11th or 12th magnitude star to west","简略描述":"vF, S, * 11·12 p"},{"ID":"5029","标识":"NGC5029","M标识":"NGC5029","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h12m37.4s","赤经D(J2000)":"13.210388888888888","赤纬(J2000)":"+47h3m48s","赤纬D(J2000)":"47.06333333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"150","详细描述":"faint, very small, round, gradually brighter middle","简略描述":"F, vS, R, gbM"},{"ID":"5030","标识":"NGC5030","M标识":"NGC5030","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h13m54.1s","赤经D(J2000)":"13.231694444444445","赤纬(J2000)":"-16h29m28s","赤纬D(J2000)":"-16.491111111111113","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"0","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"5031","标识":"NGC5031","M标识":"NGC5031","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h14m3.1s","赤经D(J2000)":"13.234194444444444","赤纬(J2000)":"-16h7m21s","赤纬D(J2000)":"-16.1225","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.7","短轴(分)":"0.4","方位角":"114","详细描述":"very faint, stellar","简略描述":"vF, stellar"},{"ID":"5032","标识":"NGC5032","M标识":"NGC5032","拓展名":"","组件":"","Class":"III 367","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h13m27s","赤经D(J2000)":"13.224166666666667","赤纬(J2000)":"+27h48m4s","赤纬D(J2000)":"27.801111111111112","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.1","短轴(分)":"1.1","方位角":"22","详细描述":"very faint, pretty large, irregularly round","简略描述":"vF, pL, iR"},{"ID":"5033","标识":"NGC5033","M标识":"NGC5033","拓展名":"","组件":"","Class":"I 97","业余排名":"6","中文名":"田鳖星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h13m28s","赤经D(J2000)":"13.224444444444444","赤纬(J2000)":"+36h35m36s","赤纬D(J2000)":"36.593333333333334","可见光星等V":"10.2","摄影(蓝光)星等B":"10.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"10.7","短轴(分)":"5","方位角":"170","详细描述":"very bright, pretty large, extended 167°, suddenly much brighter middle very bright nucleus, star to northwest","简略描述":"vB, pL, E 167°, smbMvBN, * np"},{"ID":"5034","标识":"NGC5034","M标识":"NGC5034","拓展名":"","组件":"","Class":"III 909","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"13h12m19.2s","赤经D(J2000)":"13.205333333333332","赤纬(J2000)":"+70h38m59s","赤纬D(J2000)":"70.64972222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"15","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"5035","标识":"NGC5035","M标识":"NGC5035","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h14m49.1s","赤经D(J2000)":"13.24697222222222","赤纬(J2000)":"-16h29m32s","赤纬D(J2000)":"-16.492222222222225","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"151","详细描述":"faint, small, round, brighter middle and nucleus","简略描述":"F, S, R, bMN"},{"ID":"5036","标识":"NGC5036","M标识":"NGC5036","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h14m42.8s","赤经D(J2000)":"13.245222222222221","赤纬(J2000)":"-4h10m41s","赤纬D(J2000)":"-4.178055555555556","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"75","详细描述":"extremely faint, very small, round, gradually brighter middle, 1st of 2","简略描述":"eF, vS, R, gbM, 1st of 2"},{"ID":"5037","标识":"NGC5037","M标识":"NGC5037","拓展名":"","组件":"","Class":"II 510","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h14m59.4s","赤经D(J2000)":"13.249833333333333","赤纬(J2000)":"-16h35m24s","赤纬D(J2000)":"-16.59","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2","短轴(分)":"0.6","方位角":"43","详细描述":"considerably faint, pretty small, very little extended, brighter middle","简略描述":"cF, pS, vlE, bm"},{"ID":"5038","标识":"NGC5038","M标识":"NGC5038","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h15m2s","赤经D(J2000)":"13.250555555555556","赤纬(J2000)":"-15h57m7s","赤纬D(J2000)":"-15.951944444444443","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.5","短轴(分)":"0.3","方位角":"95","详细描述":"pretty bright, extended 90°, stellar","简略描述":"pB, E 90°, stellar"},{"ID":"5039","标识":"NGC5039","M标识":"NGC5039","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h14m52s","赤经D(J2000)":"13.247777777777777","赤纬(J2000)":"-4h9m29s","赤纬D(J2000)":"-4.158055555555556","可见光星等V":"15.4","摄影(蓝光)星等B":"16.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"40","详细描述":"extremely faint, extremely small, extended 45°, 2nd of 2","简略描述":"eF, eS, E 45°, 2nd of 2"},{"ID":"5040","标识":"NGC5040","M标识":"NGC5040","拓展名":"","组件":"1","Class":"II 816","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h13m32.6s","赤经D(J2000)":"13.225722222222222","赤纬(J2000)":"+51h15m31s","赤纬D(J2000)":"51.25861111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.5","方位角":"66","详细描述":"faint, small, irregularly round, very gradually much brighter middle","简略描述":"F, S, iR, vgmbM"},{"ID":"5041","标识":"NGC5041","M标识":"NGC5041","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h14m32.5s","赤经D(J2000)":"13.24236111111111","赤纬(J2000)":"+30h42m19s","赤纬D(J2000)":"30.705277777777777","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"150","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"5042","标识":"NGC5042","M标识":"NGC5042","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h15m30.8s","赤经D(J2000)":"13.258555555555555","赤纬(J2000)":"-23h59m2s","赤纬D(J2000)":"-23.983888888888888","可见光星等V":"11.8","摄影(蓝光)星等B":"12.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"4.2","短轴(分)":"2.2","方位角":"22","详细描述":"faint, large, round, very gradually very little brighter middle, 9th magnitude star to west","简略描述":"F, L, R, vgvlbM, * 9 p"},{"ID":"5043","标识":"NGC5043","M标识":"NGC5043","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h16m40s","赤经D(J2000)":"13.277777777777779","赤纬(J2000)":"-60h2m30s","赤纬D(J2000)":"-60.041666666666664","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"cluster, poor, extended, scattered stars of 11th magnitude","简略描述":"Cl, P, E, sc st 11"},{"ID":"5044","标识":"NGC5044","M标识":"NGC5044","拓展名":"","组件":"","Class":"II 511","业余排名":"6.5","中文名":"NGC 5044星系群","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h15m23.9s","赤经D(J2000)":"13.256638888888888","赤纬(J2000)":"-16h23m4s","赤纬D(J2000)":"-16.384444444444444","可见光星等V":"10.8","摄影(蓝光)星等B":"11.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3","短轴(分)":"3","方位角":"","详细描述":"pretty bright, pretty large, round, brighter middle","简略描述":"pB, pL, R, bM"},{"ID":"5045","标识":"NGC5045","M标识":"NGC5045","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h17m4.6s","赤经D(J2000)":"13.284611111111111","赤纬(J2000)":"-63h24m48s","赤纬D(J2000)":"-63.413333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"60","短轴(分)":"","方位角":"","详细描述":"cluster, very large, very rich, stars of 11th magnitude","简略描述":"Cl, vL, vRi, st 11"},{"ID":"5046","标识":"NGC5046","M标识":"NGC5046","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h15m45s","赤经D(J2000)":"13.2625","赤纬(J2000)":"-16h19m36s","赤纬D(J2000)":"-16.326666666666668","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"54","详细描述":"faint, very small, round, stellar nucleus","简略描述":"F, vS, R, stellar Nuc!"},{"ID":"5047","标识":"NGC5047","M标识":"NGC5047","拓展名":"","组件":"","Class":"III 670","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h15m48.4s","赤经D(J2000)":"13.263444444444444","赤纬(J2000)":"-16h31m6s","赤纬D(J2000)":"-16.51833333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.7","短轴(分)":"0.5","方位角":"75","详细描述":"very faint","简略描述":"vF"},{"ID":"5048","标识":"NGC5048","M标识":"NGC5048","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h16m8.3s","赤经D(J2000)":"13.268972222222223","赤纬(J2000)":"-28h24m40s","赤纬D(J2000)":"-28.41111111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"48","详细描述":"pretty faint, round, southwestern of 2","简略描述":"pF, R, sp of 2"},{"ID":"5049","标识":"NGC5049","M标识":"NGC5049","拓展名":"","组件":"","Class":"II 512","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h15m59.3s","赤经D(J2000)":"13.266472222222223","赤纬(J2000)":"-16h23m50s","赤纬D(J2000)":"-16.397222222222222","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"120","详细描述":"considerably faint, small","简略描述":"cF, S"},{"ID":"5050","标识":"NGC5050","M标识":"NGC5050","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h15m41.6s","赤经D(J2000)":"13.261555555555555","赤纬(J2000)":"+2h52m45s","赤纬D(J2000)":"2.879166666666667","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"32","详细描述":"faint, very small, stellar","简略描述":"F, vS, stell"},{"ID":"5051","标识":"NGC5051","M标识":"NGC5051","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h16m20s","赤经D(J2000)":"13.272222222222224","赤纬(J2000)":"-28h17m10s","赤纬D(J2000)":"-28.28611111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"50","详细描述":"nebula, northeastern of 2","简略描述":"Neb, nf of 2"},{"ID":"5052","标识":"NGC5052","M标识":"NGC5052","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h15m35s","赤经D(J2000)":"13.259722222222223","赤纬(J2000)":"+29h40m33s","赤纬D(J2000)":"29.675833333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"160","详细描述":"very faint","简略描述":"vF"},{"ID":"5053","标识":"NGC5053","M标识":"NGC5053","拓展名":"","组件":"","Class":"VI 7","业余排名":"5","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"XI","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h16m27s","赤经D(J2000)":"13.274166666666668","赤纬(J2000)":"+17h41m55s","赤纬D(J2000)":"17.698611111111113","可见光星等V":"9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"cluster, very faint, pretty large, irregularly round, very gradually brighter middle, stars of 15th magnitude","简略描述":"Cl, vF, pL, iR, vgbM, st 15"},{"ID":"5054","标识":"NGC5054","M标识":"NGC5054","拓展名":"","组件":"","Class":"II 513","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h16m58.3s","赤经D(J2000)":"13.282861111111112","赤纬(J2000)":"-16h38m5s","赤纬D(J2000)":"-16.634722222222223","可见光星等V":"10.9","摄影(蓝光)星等B":"11.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"5.1","短轴(分)":"2.8","方位角":"160","详细描述":"faint, pretty small, irregularly round","简略描述":"F, pS, iR"},{"ID":"5055","标识":"NGC5055","M标识":"M63","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"向日葵星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h15m49s","赤经D(J2000)":"13.26361111111111","赤纬(J2000)":"+42h1m59s","赤纬D(J2000)":"42.033055555555556","可见光星等V":"8.6","摄影(蓝光)星等B":"9.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"12.6","短轴(分)":"7.2","方位角":"105","详细描述":"very bright, large, pretty much extended 120°±, very suddenly much brighter middle and bright nucleus","简略描述":"vB, L, pmE 120° ±, vsmbMBN"},{"ID":"5056","标识":"NGC5056","M标识":"NGC5056","拓展名":"","组件":"","Class":"III 306","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h16m12.4s","赤经D(J2000)":"13.270111111111111","赤纬(J2000)":"+30h56m58s","赤纬D(J2000)":"30.949444444444445","可见光星等V":"13.1","摄影(蓝光)星等B":"13.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.8","短轴(分)":"1","方位角":"0","详细描述":"considerably faint, considerably small, round, southwestern of 2","简略描述":"cF, cS, R, sp of 2"},{"ID":"5057","标识":"NGC5057","M标识":"NGC5057","拓展名":"","组件":"","Class":"III 307","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h16m27.7s","赤经D(J2000)":"13.274361111111112","赤纬(J2000)":"+31h1m55s","赤纬D(J2000)":"31.031944444444445","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"177","详细描述":"considerably faint, considerably small, round, northeastern of 2","简略描述":"cF, cS, R, nf of 2"},{"ID":"5058","标识":"NGC5058","M标识":"NGC5058","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h16m52.2s","赤经D(J2000)":"13.281166666666667","赤纬(J2000)":"+12h32m55s","赤纬D(J2000)":"12.54861111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very very faint","简略描述":"vvF"},{"ID":"5059","标识":"NGC5059","M标识":"NGC5059","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h16m58.4s","赤经D(J2000)":"13.28288888888889","赤纬(J2000)":"+7h50m41s","赤纬D(J2000)":"7.844722222222222","可见光星等V":"15.1","摄影(蓝光)星等B":"15.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"8","详细描述":"extremely faint, small, a little extended","简略描述":"eF, S, lE"},{"ID":"5060","标识":"NGC5060","M标识":"NGC5060","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h17m16.3s","赤经D(J2000)":"13.287861111111111","赤纬(J2000)":"+6h2m14s","赤纬D(J2000)":"6.037222222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"55","详细描述":"faint, small, a little extended","简略描述":"F, S, lE"},{"ID":"5061","标识":"NGC5061","M标识":"NGC5061","拓展名":"","组件":"","Class":"I 138","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h18m5.2s","赤经D(J2000)":"13.301444444444446","赤纬(J2000)":"-26h50m14s","赤纬D(J2000)":"-26.83722222222222","可见光星等V":"10.4","摄影(蓝光)星等B":"11.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.5","短轴(分)":"3","方位角":"","详细描述":"very bright, small, round, very suddenly much brighter middle, 10th magnitude star to east","简略描述":"vB, S, R, vsmbM * 10 f"},{"ID":"5062","标识":"NGC5062","M标识":"NGC5062","拓展名":"","组件":"1","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h18m23.6s","赤经D(J2000)":"13.306555555555557","赤纬(J2000)":"-35h27m32s","赤纬D(J2000)":"-35.45888888888889","可见光星等V":"11.2","摄影(蓝光)星等B":"12.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.3","短轴(分)":"0.7","方位角":"130","详细描述":"extremely faint, very small, extended, mottled but not resolved","简略描述":"eF, vS, E, r"},{"ID":"5063","标识":"NGC5063","M标识":"NGC5063","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h18m25.7s","赤经D(J2000)":"13.30713888888889","赤纬(J2000)":"-35h21m11s","赤纬D(J2000)":"-35.35305555555556","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.3","短轴(分)":"1.8","方位角":"143","详细描述":"extremely faint, very small, round, star near","简略描述":"eF, vS, R, * nr"},{"ID":"5064","标识":"NGC5064","M标识":"NGC5064","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h19m0s","赤经D(J2000)":"13.316666666666666","赤纬(J2000)":"-47h54m35s","赤纬D(J2000)":"-47.90972222222222","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"38","详细描述":"bright, small, round, pretty suddenly a little brighter middle","简略描述":"B, S, R, pslbM"},{"ID":"5065","标识":"NGC5065","M标识":"NGC5065","拓展名":"","组件":"","Class":"III 308","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h17m30.6s","赤经D(J2000)":"13.291833333333333","赤纬(J2000)":"+31h5m32s","赤纬D(J2000)":"31.092222222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"85","详细描述":"very faint, considerably small","简略描述":"vF, cS"},{"ID":"5066","标识":"NGC5066","M标识":"NGC5066","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h18m28.4s","赤经D(J2000)":"13.30788888888889","赤纬(J2000)":"-10h14m2s","赤纬D(J2000)":"-10.233888888888888","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"0","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"5067","标识":"NGC5067","M标识":"NGC5067","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h18m27.7s","赤经D(J2000)":"13.307694444444445","赤纬(J2000)":"-10h8m40s","赤纬D(J2000)":"-10.144444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"5068","标识":"NGC5068","M标识":"NGC5068","拓展名":"","组件":"","Class":"II 312","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h18m54.5s","赤经D(J2000)":"13.315138888888889","赤纬(J2000)":"-21h2m17s","赤纬D(J2000)":"-21.03805555555556","可见光星等V":"10","摄影(蓝光)星等B":"10.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"7.3","短轴(分)":"6.4","方位角":"110","详细描述":"faint, large, irregularly round, brighter middle","简略描述":"F, L, iR, bM"},{"ID":"5069","标识":"NGC5069","M标识":"NGC5069","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h18m28.4s","赤经D(J2000)":"13.30788888888889","赤纬(J2000)":"-10h14m2s","赤纬D(J2000)":"-10.233888888888888","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"0","详细描述":"very faint, very small","简略描述":"eF, vS (? = m 251)"},{"ID":"5070","标识":"NGC5070","M标识":"NGC5070","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h19m12.6s","赤经D(J2000)":"13.320166666666667","赤纬(J2000)":"-12h32m23s","赤纬D(J2000)":"-12.539722222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.7","方位角":"90","详细描述":"most extremely faint, extremely small, very faint star close, 5730 near","简略描述":"eeF, eS, vF, * close, 5730 near"},{"ID":"5071","标识":"NGC5071","M标识":"NGC5071","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h18m37.1s","赤经D(J2000)":"13.310305555555557","赤纬(J2000)":"+7h56m10s","赤纬D(J2000)":"7.936111111111112","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"144","详细描述":"extremely faint, extremely small, stellar","简略描述":"eF, eS, stell"},{"ID":"5072","标识":"NGC5072","M标识":"NGC5072","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h19m12.6s","赤经D(J2000)":"13.320166666666667","赤纬(J2000)":"-12h32m23s","赤纬D(J2000)":"-12.539722222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.7","方位角":"90","详细描述":"most extremely faint, extremely small, very faint star close, 5730 near","简略描述":"F, S, * 14 nf"},{"ID":"5073","标识":"NGC5073","M标识":"NGC5073","拓展名":"","组件":"","Class":"III 282","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h19m20.8s","赤经D(J2000)":"13.322444444444445","赤纬(J2000)":"-14h50m47s","赤纬D(J2000)":"-14.846388888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.4","短轴(分)":"0.7","方位角":"151","详细描述":"very faint, pretty large, pretty much extended 135°±","简略描述":"vF, pL, pmE 135° ±"},{"ID":"5074","标识":"NGC5074","M标识":"NGC5074","拓展名":"","组件":"","Class":"III 309","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h18m25.8s","赤经D(J2000)":"13.307166666666667","赤纬(J2000)":"+31h28m6s","赤纬D(J2000)":"31.46833333333333","可见光星等V":"14","摄影(蓝光)星等B":"14.4","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"60","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"5075","标识":"NGC5075","M标识":"NGC5075","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h19m6.2s","赤经D(J2000)":"13.318388888888888","赤纬(J2000)":"+7h49m54s","赤纬D(J2000)":"7.831666666666666","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, extremely small, stellar","简略描述":"vF, eS, stell"},{"ID":"5076","标识":"NGC5076","M标识":"NGC5076","拓展名":"","组件":"","Class":"III 117","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h19m30.4s","赤经D(J2000)":"13.325111111111111","赤纬(J2000)":"-12h44m26s","赤纬D(J2000)":"-12.740555555555554","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"40","详细描述":"very faint, considerably small, round, 1st of 3","简略描述":"vF, cS, R, 1st of 3"},{"ID":"5077","标识":"NGC5077","M标识":"NGC5077","拓展名":"","组件":"","Class":"II 193","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h19m31.6s","赤经D(J2000)":"13.325444444444445","赤纬(J2000)":"-12h39m24s","赤纬D(J2000)":"-12.656666666666666","可见光星等V":"11.4","摄影(蓝光)星等B":"12.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.2","短轴(分)":"1.6","方位角":"7","详细描述":"pretty bright, small, very little extended, suddenly brighter middle, 2nd of 3","简略描述":"pB, S, vlE, sbM, 2nd of 3"},{"ID":"5078","标识":"NGC5078","M标识":"NGC5078","拓展名":"","组件":"","Class":"II 566","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h19m49.8s","赤经D(J2000)":"13.330499999999999","赤纬(J2000)":"-27h24m35s","赤纬D(J2000)":"-27.40972222222222","可见光星等V":"11","摄影(蓝光)星等B":"12","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"4","短轴(分)":"1.9","方位角":"148","详细描述":"pretty bright, pretty small, considerably extended, pretty suddenly brighter middle, 7th or 8th magnitude star to east","简略描述":"pB, pS, cE, psbM, * 7·8 f"},{"ID":"5079","标识":"NGC5079","M标识":"NGC5079","拓展名":"","组件":"","Class":"III 118","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h19m37.9s","赤经D(J2000)":"13.327194444444444","赤纬(J2000)":"-12h41m59s","赤纬D(J2000)":"-12.699722222222222","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"31","详细描述":"considerably faint, pretty small, very little extended, 3rd of 3","简略描述":"cF, pS, vlE, 3rd of 3"},{"ID":"5080","标识":"NGC5080","M标识":"NGC5080","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h19m19.2s","赤经D(J2000)":"13.322","赤纬(J2000)":"+8h25m47s","赤纬D(J2000)":"8.429722222222221","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"99","详细描述":"faint, small, 7th magnitude star to northeast","简略描述":"F, S, * 7 nf"},{"ID":"5081","标识":"NGC5081","M标识":"NGC5081","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h19m8.3s","赤经D(J2000)":"13.318972222222222","赤纬(J2000)":"+28h30m23s","赤纬D(J2000)":"28.50638888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.2","短轴(分)":"0.8","方位角":"103","详细描述":"pretty faint, small, irregularly round, 7th or 8th magnitude star to northwest","简略描述":"pF, S, iR, * 7·8 np"},{"ID":"5082","标识":"NGC5082","M标识":"NGC5082","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h20m39.8s","赤经D(J2000)":"13.34438888888889","赤纬(J2000)":"-43h42m1s","赤纬D(J2000)":"-43.70027777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1","方位角":"31","详细描述":"very faint, small, round, 1st of 4","简略描述":"vF, S, R, 1st of 4"},{"ID":"5083","标识":"NGC5083","M标识":"NGC5083","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h19m3.1s","赤经D(J2000)":"13.317527777777778","赤纬(J2000)":"+39h35m22s","赤纬D(J2000)":"39.589444444444446","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"130","详细描述":"pretty faint, pretty large, round","简略描述":"pF, pL, R"},{"ID":"5084","标识":"NGC5084","M标识":"NGC5084","拓展名":"","组件":"","Class":"II 313","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h20m16.7s","赤经D(J2000)":"13.337972222222223","赤纬(J2000)":"-21h49m39s","赤纬D(J2000)":"-21.8275","可见光星等V":"10.5","摄影(蓝光)星等B":"11.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"9.3","短轴(分)":"1.7","方位角":"80","详细描述":"considerably bright, considerably small, very little extended 90±, brightest toward the eastern side","简略描述":"cB, cS, vlE 90° ±, bf"},{"ID":"5085","标识":"NGC5085","M标识":"NGC5085","拓展名":"","组件":"","Class":"II 780","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h20m17.5s","赤经D(J2000)":"13.338194444444445","赤纬(J2000)":"-24h26m25s","赤纬D(J2000)":"-24.440277777777776","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"3.5","短轴(分)":"3","方位角":"38","详细描述":"faint, large, round, very gradually a little brighter middle","简略描述":"F, L, R, vglbM"},{"ID":"5086","标识":"NGC5086","M标识":"NGC5086","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h20m59.3s","赤经D(J2000)":"13.349805555555555","赤纬(J2000)":"-43h43m43s","赤纬D(J2000)":"-43.728611111111114","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, round, 2nd of 4","简略描述":"eF, vS, R, 2nd of 4"},{"ID":"5087","标识":"NGC5087","M标识":"NGC5087","拓展名":"","组件":"","Class":"III 724","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h20m24.9s","赤经D(J2000)":"13.340250000000001","赤纬(J2000)":"-20h36m39s","赤纬D(J2000)":"-20.610833333333336","可见光星等V":"11.4","摄影(蓝光)星等B":"12.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.7","短轴(分)":"2.2","方位角":"10","详细描述":"considerably faint, very small, irregular figure","简略描述":"cF, vS, iF"},{"ID":"5088","标识":"NGC5088","M标识":"NGC5088","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h20m20.2s","赤经D(J2000)":"13.338944444444445","赤纬(J2000)":"-12h34m20s","赤纬D(J2000)":"-12.572222222222223","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.7","短轴(分)":"0.7","方位角":"0","详细描述":"pretty bright, pretty small, round, brighter middle","简略描述":"pB, pS, R, bM"},{"ID":"5089","标识":"NGC5089","M标识":"NGC5089","拓展名":"","组件":"","Class":"II 327","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h19m39.4s","赤经D(J2000)":"13.32761111111111","赤纬(J2000)":"+30h15m20s","赤纬D(J2000)":"30.255555555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"120","详细描述":"pretty faint, pretty large, gradually brighter middle","简略描述":"pF, pL, gbM"},{"ID":"5090","标识":"NGC5090","M标识":"NGC5090","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h21m12.7s","赤经D(J2000)":"13.353527777777778","赤纬(J2000)":"-43h42m18s","赤纬D(J2000)":"-43.705000000000005","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.7","短轴(分)":"2.2","方位角":"109","详细描述":"pretty bright, pretty large, round, 3rd of 4","简略描述":"pB, pL, R, 3rd of 4"},{"ID":"5091","标识":"NGC5091","M标识":"NGC5091","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h21m17.9s","赤经D(J2000)":"13.354972222222221","赤纬(J2000)":"-43h43m13s","赤纬D(J2000)":"-43.72027777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"0.5","方位角":"130","详细描述":"considerably faint, small, very little extended, 4th of 4","简略描述":"cF, S, vlE, 4th of 4"},{"ID":"5092","标识":"NGC5092","M标识":"NGC5092","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h19m51.6s","赤经D(J2000)":"13.331","赤纬(J2000)":"+23h0m0s","赤纬D(J2000)":"23","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"pretty bright, pretty large, irregularly round, 17th magnitude star to south","简略描述":"pB, pL, iR, * 17 s"},{"ID":"5093","标识":"NGC5093","M标识":"NGC5093","拓展名":"","组件":"","Class":"III 633","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h19m37.8s","赤经D(J2000)":"13.327166666666667","赤纬(J2000)":"+40h23m11s","赤纬D(J2000)":"40.38638888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"143","详细描述":"very faint, small, round, a little brighter middle","简略描述":"vF, S, R, lbM"},{"ID":"5094","标识":"NGC5094","M标识":"NGC5094","拓展名":"","组件":"","Class":"III 539","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h20m46.8s","赤经D(J2000)":"13.346333333333334","赤纬(J2000)":"-14h4m51s","赤纬D(J2000)":"-14.080833333333333","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"105","详细描述":"considerably faint, very small, round, gradually brighter middle","简略描述":"cF, vS, R, gbM"},{"ID":"5095","标识":"NGC5095","M标识":"NGC5095","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h20m36.8s","赤经D(J2000)":"13.343555555555556","赤纬(J2000)":"-2h17m21s","赤纬D(J2000)":"-2.2891666666666666","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"126","详细描述":"very faint, irregularly round, 11th magnitude star to southwest","简略描述":"vF, iR, * 11 sp"},{"ID":"5096","标识":"NGC5096","M标识":"NGC5096","拓展名":"","组件":"","Class":"III 650","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h20m8.6s","赤经D(J2000)":"13.335722222222223","赤纬(J2000)":"+33h5m17s","赤纬D(J2000)":"33.088055555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, considerably small, round, brighter middle, southwestern of 2","简略描述":"vF, cS, R, bM, sp of 2"},{"ID":"5097","标识":"NGC5097","M标识":"NGC5097","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h20m59.6s","赤经D(J2000)":"13.34988888888889","赤纬(J2000)":"-12h28m18s","赤纬D(J2000)":"-12.471666666666668","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"45","详细描述":"extremely faint, extremely small, round, stellar, nearly between 2 stars","简略描述":"eF, eS, R, stell, nearly bet 2 st"},{"ID":"5098","标识":"NGC5098","M标识":"NGC5098","拓展名":"A","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h20m14.7s","赤经D(J2000)":"13.337416666666668","赤纬(J2000)":"+33h8m36s","赤纬D(J2000)":"33.14333333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, small, between 2 stars, northeastern of 2","简略描述":"vF, S, bet 2 st, nf of 2"},{"ID":"5099","标识":"NGC5099","M标识":"NGC5099","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h21m19.5s","赤经D(J2000)":"13.355416666666667","赤纬(J2000)":"-13h2m30s","赤纬D(J2000)":"-13.041666666666666","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"5100","标识":"NGC5100","M标识":"NGC5100","拓展名":"","组件":"2","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h20m59.5s","赤经D(J2000)":"13.349861111111112","赤纬(J2000)":"+8h58m44s","赤纬D(J2000)":"8.97888888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"21","详细描述":"a magnificent object (!!!), a globular cluster, ω Centauri","简略描述":"vF, vS, lbM"},{"ID":"5101","标识":"NGC5101","M标识":"NGC5101","拓展名":"","组件":"","Class":"II 567","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h21m46s","赤经D(J2000)":"13.362777777777778","赤纬(J2000)":"-27h25m51s","赤纬D(J2000)":"-27.430833333333336","可见光星等V":"10.7","摄影(蓝光)星等B":"11.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"5.4","短轴(分)":"4.6","方位角":"123","详细描述":"","简略描述":"cB, pS, lE, psbM *"},{"ID":"5102","标识":"NGC5102","M标识":"NGC5102","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"柱十一之魂","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h21m57s","赤经D(J2000)":"13.365833333333333","赤纬(J2000)":"-36h37m54s","赤纬D(J2000)":"-36.63166666666667","可见光星等V":"9.6","摄影(蓝光)星等B":"10.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"8.6","短轴(分)":"2.7","方位角":"48","详细描述":"very bright, pretty small, round, suddenly very much brighter middle","简略描述":"vB, pS, R, svmbM"},{"ID":"5103","标识":"NGC5103","M标识":"NGC5103","拓展名":"","组件":"","Class":"II 665","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h20m30s","赤经D(J2000)":"13.341666666666667","赤纬(J2000)":"+43h5m4s","赤纬D(J2000)":"43.08444444444444","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1","方位角":"143","详细描述":"pretty bright, considerably small, extended","简略描述":"pB, cS, E"},{"ID":"5104","标识":"NGC5104","M标识":"NGC5104","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h21m22.9s","赤经D(J2000)":"13.356361111111111","赤纬(J2000)":"+0h20m34s","赤纬D(J2000)":"0.34277777777777774","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"170","详细描述":"faint, small, a little extended","简略描述":"F, S, lE"},{"ID":"5105","标识":"NGC5105","M标识":"NGC5105","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h21m49s","赤经D(J2000)":"13.36361111111111","赤纬(J2000)":"-13h12m26s","赤纬D(J2000)":"-13.20722222222222","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2","短轴(分)":"1.5","方位角":"140","详细描述":"extremely faint, pretty small, a little extended","简略描述":"eF, pS, lE"},{"ID":"5106","标识":"NGC5106","M标识":"NGC5106","拓展名":"","组件":"2","Class":"II 22","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h20m59.5s","赤经D(J2000)":"13.349861111111112","赤纬(J2000)":"+8h58m44s","赤纬D(J2000)":"8.97888888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"21","详细描述":"","简略描述":"vF, vS, PD very doubtful"},{"ID":"5107","标识":"NGC5107","M标识":"NGC5107","拓展名":"","组件":"","Class":"III 619","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h21m24.4s","赤经D(J2000)":"13.356777777777777","赤纬(J2000)":"+38h32m18s","赤纬D(J2000)":"38.538333333333334","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"128","详细描述":"","简略描述":"vF, S, cE 0° ±"},{"ID":"5108","标识":"NGC5108","M标识":"NGC5108","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h23m18.7s","赤经D(J2000)":"13.388527777777778","赤纬(J2000)":"-32h20m31s","赤纬D(J2000)":"-32.341944444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"2","详细描述":"most extremely faint, western of 2","简略描述":"eeF, p of 2"},{"ID":"5109","标识":"NGC5109","M标识":"NGC5109","拓展名":"","组件":"","Class":"II 826","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h20m52.6s","赤经D(J2000)":"13.347944444444446","赤纬(J2000)":"+57h38m32s","赤纬D(J2000)":"57.64222222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"153","详细描述":"a magnificent object (!!!), a globular cluster, ω Centauri","简略描述":"cF, S, cE"},{"ID":"5110","标识":"NGC5110","M标识":"NGC5110","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h22m56.4s","赤经D(J2000)":"13.382333333333333","赤纬(J2000)":"-12h57m51s","赤纬D(J2000)":"-12.964166666666666","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"2","短轴(分)":"1.7","方位角":"120","详细描述":"a magnificent object (!!!), a globular cluster, ω Centauri","简略描述":"eF, pS, R, in line with 2 pB st"},{"ID":"5111","标识":"NGC5111","M标识":"NGC5111","拓展名":"","组件":"","Class":"III 119","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h22m56.4s","赤经D(J2000)":"13.382333333333333","赤纬(J2000)":"-12h57m51s","赤纬D(J2000)":"-12.964166666666666","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"2","短轴(分)":"1.7","方位角":"120","详细描述":"considerably faint, considerably small, irregularly round, gradually a little brighter middle","简略描述":"cF, cS, iR, glbM"},{"ID":"5112","标识":"NGC5112","M标识":"NGC5112","拓展名":"","组件":"","Class":"II 646","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h21m56.6s","赤经D(J2000)":"13.365722222222223","赤纬(J2000)":"+38h44m7s","赤纬D(J2000)":"38.73527777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"12.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"4","短轴(分)":"2.9","方位角":"130","详细描述":"faint, large, irregularly round, very gradually a little brighter middle","简略描述":"F, L, iR, vglbM"},{"ID":"5113","标识":"NGC5113","M标识":"NGC5113","拓展名":"","组件":"","Class":"III 808","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h20m52.6s","赤经D(J2000)":"13.347944444444446","赤纬(J2000)":"+57h38m32s","赤纬D(J2000)":"57.64222222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"153","详细描述":"","简略描述":"cF, S, E (perhaps = h 1588)"},{"ID":"5114","标识":"NGC5114","M标识":"NGC5114","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h24m1.6s","赤经D(J2000)":"13.400444444444444","赤纬(J2000)":"-32h20m38s","赤纬D(J2000)":"-32.34388888888889","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.8","短轴(分)":"1","方位角":"80","详细描述":"faint, a little extended, pretty suddenly brighter middle, eastern of 2","简略描述":"F, lE, psbM, f of 2"},{"ID":"5115","标识":"NGC5115","M标识":"NGC5115","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h23m0.4s","赤经D(J2000)":"13.383444444444445","赤纬(J2000)":"+13h57m4s","赤纬D(J2000)":"13.95111111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"97","详细描述":"","简略描述":"eeF, S, R, * nf, D * f 24s"},{"ID":"5116","标识":"NGC5116","M标识":"NGC5116","拓展名":"","组件":"","Class":"III 368","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h22m55.7s","赤经D(J2000)":"13.382138888888889","赤纬(J2000)":"+26h58m53s","赤纬D(J2000)":"26.981388888888887","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2","短轴(分)":"0.7","方位角":"40","详细描述":"pretty faint, pretty small, pretty much extended, gradually a little brighter middle, mottled but not resolved","简略描述":"pF, pS, pmE, glbM, r"},{"ID":"5117","标识":"NGC5117","M标识":"NGC5117","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h22m56.4s","赤经D(J2000)":"13.382333333333333","赤纬(J2000)":"+28h18m56s","赤纬D(J2000)":"28.315555555555555","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.2","短轴(分)":"1","方位角":"154","详细描述":"","简略描述":"vF, L, Δ 2 st 11 np"},{"ID":"5118","标识":"NGC5118","M标识":"NGC5118","拓展名":"","组件":"","Class":"III 925","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h23m27.4s","赤经D(J2000)":"13.390944444444443","赤纬(J2000)":"+6h23m34s","赤纬D(J2000)":"6.392777777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"100","详细描述":"very faint, small, round, gradually brighter middle","简略描述":"vF, S, R, gbM"},{"ID":"5119","标识":"NGC5119","M标识":"NGC5119","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h24m0.3s","赤经D(J2000)":"13.400083333333333","赤纬(J2000)":"-12h16m34s","赤纬D(J2000)":"-12.276111111111112","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"19","详细描述":"pretty bright, small, a little extended","简略描述":"pB, S, lE"},{"ID":"5120","标识":"NGC5120","M标识":"NGC5120","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h25m40.3s","赤经D(J2000)":"13.42786111111111","赤纬(J2000)":"-63h27m29s","赤纬D(J2000)":"-63.45805555555556","可见光星等V":"99","摄影(蓝光)星等B":"13","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, extremely rich, much compressed, stars from 12th to 16th magnitude","简略描述":"Cl, eRi, mC, st 12…16"},{"ID":"5121","标识":"NGC5121","M标识":"NGC5121","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h24m45.4s","赤经D(J2000)":"13.412611111111111","赤纬(J2000)":"-37h40m57s","赤纬D(J2000)":"-37.6825","可见光星等V":"10.6","摄影(蓝光)星等B":"11.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"36","详细描述":"considerably bright, small, round, pretty suddenly much brighter middle, mottled but not resolved","简略描述":"cB, S, R, psmbM, r"},{"ID":"5122","标识":"NGC5122","M标识":"NGC5122","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h24m14.9s","赤经D(J2000)":"13.40413888888889","赤纬(J2000)":"-10h39m16s","赤纬D(J2000)":"-10.654444444444445","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"115","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"5123","标识":"NGC5123","M标识":"NGC5123","拓展名":"","组件":"","Class":"II 666","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h23m10.4s","赤经D(J2000)":"13.386222222222221","赤纬(J2000)":"+43h5m10s","赤纬D(J2000)":"43.086111111111116","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"174","详细描述":"pretty faint, small, round, gradually much brighter middle","简略描述":"pF, S, R, gmbM"},{"ID":"5124","标识":"NGC5124","M标识":"NGC5124","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h24m50.2s","赤经D(J2000)":"13.413944444444445","赤纬(J2000)":"-30h18m29s","赤纬D(J2000)":"-30.308055555555555","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.2","短轴(分)":"0.7","方位角":"9","详细描述":"very faint, small, very little extended","简略描述":"vF, S, vlE"},{"ID":"5125","标识":"NGC5125","M标识":"NGC5125","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h24m0.7s","赤经D(J2000)":"13.400194444444445","赤纬(J2000)":"+9h42m37s","赤纬D(J2000)":"9.710277777777778","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"170","详细描述":"pretty faint, small, round, gradually brighter middle","简略描述":"pF, S, R, gbM"},{"ID":"5126","标识":"NGC5126","M标识":"NGC5126","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h24m53.4s","赤经D(J2000)":"13.414833333333334","赤纬(J2000)":"-30h20m1s","赤纬D(J2000)":"-30.33361111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"57","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"5127","标识":"NGC5127","M标识":"NGC5127","拓展名":"","组件":"","Class":"II 328","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h23m45.2s","赤经D(J2000)":"13.395888888888889","赤纬(J2000)":"+31h33m55s","赤纬D(J2000)":"31.56527777777778","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.8","短轴(分)":"2.2","方位角":"75","详细描述":"pretty bright, pretty large, round, gradually much brighter middle, double star to west","简略描述":"pB, pL, R, gmbM, ** p"},{"ID":"5128","标识":"NGC5128","M标识":"NGC5128","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"半人马座A","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h25m29s","赤经D(J2000)":"13.424722222222222","赤纬(J2000)":"-43h0m58s","赤纬D(J2000)":"-43.01611111111111","可见光星等V":"6.8","摄影(蓝光)星等B":"7.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"25.7","短轴(分)":"20","方位角":"35","详细描述":"","简略描述":"!!, vB, vL, vmE 122°.5, bifid"},{"ID":"5129","标识":"NGC5129","M标识":"NGC5129","拓展名":"","组件":"","Class":"II 653","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h24m10s","赤经D(J2000)":"13.402777777777779","赤纬(J2000)":"+13h58m36s","赤纬D(J2000)":"13.976666666666667","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"10","详细描述":"pretty bright, very small, round, gradually much brighter middle, double star to east","简略描述":"pB, vS, R, gmbM, ** f"},{"ID":"5130","标识":"NGC5130","M标识":"NGC5130","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h24m27.2s","赤经D(J2000)":"13.407555555555556","赤纬(J2000)":"-10h12m37s","赤纬D(J2000)":"-10.210277777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"40","详细描述":"very faint, very small, gradually brighter middle","简略描述":"vF, vS, gbM"},{"ID":"5131","标识":"NGC5131","M标识":"NGC5131","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h23m57s","赤经D(J2000)":"13.399166666666666","赤纬(J2000)":"+30h59m15s","赤纬D(J2000)":"30.9875","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.1","短轴(分)":"0.3","方位角":"81","详细描述":"faint, pretty small, a little extended, nucleus = 15th magnitude star","简略描述":"F, pS, lE, N = * 15"},{"ID":"5132","标识":"NGC5132","M标识":"NGC5132","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h24m28.9s","赤经D(J2000)":"13.408027777777779","赤纬(J2000)":"+14h5m33s","赤纬D(J2000)":"14.092500000000001","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"54","详细描述":"very faint, mottled but not resolved","简略描述":"vF, r"},{"ID":"5133","标识":"NGC5133","M标识":"NGC5133","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h24m52.9s","赤经D(J2000)":"13.414694444444445","赤纬(J2000)":"-4h4m55s","赤纬D(J2000)":"-4.081944444444444","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.7","方位角":"42","详细描述":"very faint, very small, irregularly round, brighter middle","简略描述":"vF, vS, irrR, bM"},{"ID":"5134","标识":"NGC5134","M标识":"NGC5134","拓展名":"","组件":"","Class":"II 314","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h25m18.5s","赤经D(J2000)":"13.421805555555554","赤纬(J2000)":"-21h8m5s","赤纬D(J2000)":"-21.134722222222223","可见光星等V":"11.3","摄影(蓝光)星等B":"12.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.8","短轴(分)":"1.7","方位角":"155","详细描述":"faint, pretty small, a little extended, very gradually brighter middle","简略描述":"F, pS, lE, vgbM"},{"ID":"5135","标识":"NGC5135","M标识":"NGC5135","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h25m44s","赤经D(J2000)":"13.428888888888888","赤纬(J2000)":"-29h50m1s","赤纬D(J2000)":"-29.83361111111111","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.6","短轴(分)":"1.8","方位角":"29","详细描述":"pretty bright, small, extended","简略描述":"pB, S, E"},{"ID":"5136","标识":"NGC5136","M标识":"NGC5136","拓展名":"","组件":"","Class":"III 84","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h24m51.4s","赤经D(J2000)":"13.414277777777778","赤纬(J2000)":"+13h44m17s","赤纬D(J2000)":"13.738055555555555","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"78","详细描述":"extremely faint, very small, round, pretty suddenly brighter middle","简略描述":"eF, vS, R, psbM"},{"ID":"5137","标识":"NGC5137","M标识":"NGC5137","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h24m52.5s","赤经D(J2000)":"13.414583333333333","赤纬(J2000)":"+14h4m37s","赤纬D(J2000)":"14.076944444444445","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"117","详细描述":"most extremely faint, pretty large, very difficult","简略描述":"eeF, pL, v diffic"},{"ID":"5138","标识":"NGC5138","M标识":"NGC5138","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h27m16s","赤经D(J2000)":"13.454444444444444","赤纬(J2000)":"-59h2m30s","赤纬D(J2000)":"-59.041666666666664","可见光星等V":"7.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a cluster, rich, a little compressed, stars of 11th magnitude","简略描述":"Cl, Ri, lC, st 11"},{"ID":"5139","标识":"NGC5139","M标识":"NGC5139","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"半人马座奥米茄星团","类型":"GCL","含重复类型":"GCL","形态":"VIII","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h26m47s","赤经D(J2000)":"13.446388888888889","赤纬(J2000)":"-47h28m51s","赤纬D(J2000)":"-47.48083333333334","可见光星等V":"5.3","摄影(蓝光)星等B":"6.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"55","短轴(分)":"","方位角":"","详细描述":"a magnificent object (!!!), a globular cluster, ω Centauri","简略描述":"!!!, globular cluster of stars, ω Centauri"},{"ID":"5140","标识":"NGC5140","M标识":"NGC5140","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h26m21.7s","赤经D(J2000)":"13.439361111111111","赤纬(J2000)":"-33h52m7s","赤纬D(J2000)":"-33.868611111111115","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.1","短轴(分)":"1.7","方位角":"33","详细描述":"very faint, small, round, gradually a little brighter middle","简略描述":"vF, S, R, glbM"},{"ID":"5141","标识":"NGC5141","M标识":"NGC5141","拓展名":"","组件":"","Class":"III 402","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h24m51.4s","赤经D(J2000)":"13.414277777777778","赤纬(J2000)":"+36h22m44s","赤纬D(J2000)":"36.37888888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"1","方位角":"80","详细描述":"","简略描述":"cF, cS, R, vsmbM *, * 12 sp, sp of 2"},{"ID":"5142","标识":"NGC5142","M标识":"NGC5142","拓展名":"","组件":"","Class":"III 403","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h25m1.2s","赤经D(J2000)":"13.417","赤纬(J2000)":"+36h23m59s","赤纬D(J2000)":"36.39972222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.7","方位角":"5","详细描述":"","简略描述":"F, cS, R, vsmbM *, nf of 2"},{"ID":"5143","标识":"NGC5143","M标识":"NGC5143","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h25m1.4s","赤经D(J2000)":"13.417055555555555","赤纬(J2000)":"+36h26m15s","赤纬D(J2000)":"36.4375","可见光星等V":"15.8","摄影(蓝光)星等B":"16.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"97","详细描述":"very faint","简略描述":"vF"},{"ID":"5144","标识":"NGC5144","M标识":"NGC5144","拓展名":"A","组件":"","Class":"IV 70","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc\/P","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"13h22m53.9s","赤经D(J2000)":"13.38163888888889","赤纬(J2000)":"+70h30m53s","赤纬D(J2000)":"70.51472222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"13.4","B-V":"0.3","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"150","详细描述":"perhaps a planetary nebula, considerably bright, small, round, gradually, suddenly a little brighter middle","简略描述":"planetary ?, cB, S, R, g, slbM"},{"ID":"5145","标识":"NGC5145","M标识":"NGC5145","拓展名":"","组件":"","Class":"II 667","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h25m13.9s","赤经D(J2000)":"13.420527777777778","赤纬(J2000)":"+43h16m2s","赤纬D(J2000)":"43.26722222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2","短轴(分)":"1.8","方位角":"90","详细描述":"pretty bright, very small, very little extended, gradually a little brighter middle","简略描述":"pB, vS, vlE, glbM"},{"ID":"5146","标识":"NGC5146","M标识":"NGC5146","拓展名":"","组件":"","Class":"III 115","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h26m37.4s","赤经D(J2000)":"13.443722222222222","赤纬(J2000)":"-12h19m24s","赤纬D(J2000)":"-12.323333333333332","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.9","短轴(分)":"1.3","方位角":"35","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"5147","标识":"NGC5147","M标识":"NGC5147","拓展名":"","组件":"","Class":"II 25","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h26m19.6s","赤经D(J2000)":"13.438777777777778","赤纬(J2000)":"+2h6m1s","赤纬D(J2000)":"2.100277777777778","可见光星等V":"11.8","摄影(蓝光)星等B":"12.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.9","短轴(分)":"1.6","方位角":"120","详细描述":"pretty bright, pretty large, very little extended, very suddenly much brighter middle equivalent to 12th magnitude star","简略描述":"pB, pL, vlE, vsmbM * 12"},{"ID":"5148","标识":"NGC5148","M标识":"NGC5148","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h26m38.8s","赤经D(J2000)":"13.444111111111111","赤纬(J2000)":"+2h18m49s","赤纬D(J2000)":"2.313611111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"5149","标识":"NGC5149","M标识":"NGC5149","拓展名":"","组件":"","Class":"III 404","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h26m9.1s","赤经D(J2000)":"13.43586111111111","赤纬(J2000)":"+35h56m4s","赤纬D(J2000)":"35.93444444444444","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"155","详细描述":"considerably faint, pretty small, extended, brighter middle, southwestern of 2","简略描述":"cF, pS, E, bM, sp of 2"},{"ID":"5150","标识":"NGC5150","M标识":"NGC5150","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h27m36.4s","赤经D(J2000)":"13.460111111111111","赤纬(J2000)":"-29h33m45s","赤纬D(J2000)":"-29.5625","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"1","方位角":"115","详细描述":"","简略描述":"cF, S, R, pslbM, * f 2'"},{"ID":"5151","标识":"NGC5151","M标识":"NGC5151","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h26m40.8s","赤经D(J2000)":"13.444666666666667","赤纬(J2000)":"+16h52m26s","赤纬D(J2000)":"16.87388888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"","简略描述":"vF, S, R, * 8 nf 4'"},{"ID":"5152","标识":"NGC5152","M标识":"NGC5152","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h27m51.5s","赤经D(J2000)":"13.464305555555555","赤纬(J2000)":"-29h37m9s","赤纬D(J2000)":"-29.61916666666667","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2.1","短轴(分)":"0.7","方位角":"117","详细描述":"very faint, small, round, western of double nebula","简略描述":"vF, S, R, p of D neb"},{"ID":"5153","标识":"NGC5153","M标识":"NGC5153","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1\/P","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h27m54.3s","赤经D(J2000)":"13.465083333333332","赤纬(J2000)":"-29h37m4s","赤纬D(J2000)":"-29.61777777777778","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2","短轴(分)":"1.4","方位角":"175","详细描述":"pretty faint, small, eastern of double nebula","简略描述":"pF, S, f of D neb"},{"ID":"5154","标识":"NGC5154","M标识":"NGC5154","拓展名":"","组件":"","Class":"III 405","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h26m28.6s","赤经D(J2000)":"13.441277777777778","赤纬(J2000)":"+36h0m38s","赤纬D(J2000)":"36.010555555555555","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"56","详细描述":"very faint, pretty large, round, northeastern of 2","简略描述":"vF, pL, R, nf of 2"},{"ID":"5155","标识":"NGC5155","M标识":"NGC5155","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Cloud","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h28m18s","赤经D(J2000)":"13.471666666666668","赤纬(J2000)":"-63h28m0s","赤纬D(J2000)":"-63.46666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"60","短轴(分)":"","方位角":"","详细描述":"a cluster, very rich","简略描述":"Cl, vRi"},{"ID":"5156","标识":"NGC5156","M标识":"NGC5156","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h28m44.2s","赤经D(J2000)":"13.478944444444444","赤纬(J2000)":"-48h55m0s","赤纬D(J2000)":"-48.916666666666664","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.5","短轴(分)":"2","方位角":"110","详细描述":"pretty bright, considerably small, irregularly extended, gradually a little brighter middle, mottled but not resolved","简略描述":"pB, cS, iE, glbM, r"},{"ID":"5157","标识":"NGC5157","M标识":"NGC5157","拓展名":"","组件":"","Class":"III 651","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h27m16.8s","赤经D(J2000)":"13.454666666666666","赤纬(J2000)":"+32h1m51s","赤纬D(J2000)":"32.030833333333334","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"111","详细描述":"faint, pretty small, very little extended, brighter middle, western of 2","简略描述":"F, pS, vlE, bM, p of 2"},{"ID":"5158","标识":"NGC5158","M标识":"NGC5158","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h27m46.9s","赤经D(J2000)":"13.463027777777777","赤纬(J2000)":"+17h46m44s","赤纬D(J2000)":"17.778888888888886","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"126","详细描述":"very faint, round","简略描述":"vF, R"},{"ID":"5159","标识":"NGC5159","M标识":"NGC5159","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h28m16.1s","赤经D(J2000)":"13.47113888888889","赤纬(J2000)":"+2h59m1s","赤纬D(J2000)":"2.983611111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"162","详细描述":"extremely faint, small, a little extended","简略描述":"eF, S, lE"},{"ID":"5160","标识":"NGC5160","M标识":"NGC5160","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h28m21.6s","赤经D(J2000)":"13.472666666666667","赤纬(J2000)":"+5h59m45s","赤纬D(J2000)":"5.995833333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pF (? vF D * with F * close)"},{"ID":"5161","标识":"NGC5161","M标识":"NGC5161","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h29m13.7s","赤经D(J2000)":"13.487138888888888","赤纬(J2000)":"-33h10m28s","赤纬D(J2000)":"-33.17444444444444","可见光星等V":"11.2","摄影(蓝光)星等B":"12","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"5.6","短轴(分)":"2.3","方位角":"77","详细描述":"pretty faint, large, very much extended, pretty gradually brighter middle, partially resolved (some stars seen)","简略描述":"pF, L, vmE, pgbM, rr"},{"ID":"5162","标识":"NGC5162","M标识":"NGC5162","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h29m25.9s","赤经D(J2000)":"13.490527777777777","赤纬(J2000)":"+11h0m28s","赤纬D(J2000)":"11.007777777777777","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2.7","短轴(分)":"1.4","方位角":"160","详细描述":"a magnificent or otherwise interesting object, Great Spiral nebula","简略描述":"vF, pL, lE, F * nr nf"},{"ID":"5163","标识":"NGC5163","M标识":"NGC5163","拓展名":"","组件":"","Class":"III 821","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h26m54.1s","赤经D(J2000)":"13.448361111111112","赤纬(J2000)":"+52h45m15s","赤纬D(J2000)":"52.75416666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"10","详细描述":"considerably faint, stellar","简略描述":"cF, stellar"},{"ID":"5164","标识":"NGC5164","M标识":"NGC5164","拓展名":"","组件":"","Class":"III 784","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h27m11.9s","赤经D(J2000)":"13.453305555555556","赤纬(J2000)":"+55h29m13s","赤纬D(J2000)":"55.48694444444445","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.9","方位角":"27","详细描述":"considerably faint, small, irregularly round","简略描述":"cF, S, iR"},{"ID":"5165","标识":"NGC5165","M标识":"NGC5165","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h28m39.1s","赤经D(J2000)":"13.477527777777778","赤纬(J2000)":"+11h23m15s","赤纬D(J2000)":"11.3875","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"174","详细描述":"","简略描述":"F, vS, R, * 13 sf"},{"ID":"5166","标识":"NGC5166","M标识":"NGC5166","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h28m15s","赤经D(J2000)":"13.470833333333333","赤纬(J2000)":"+32h1m56s","赤纬D(J2000)":"32.032222222222224","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.3","短轴(分)":"0.4","方位角":"67","详细描述":"pretty faint, pretty large, a little extended, a little brighter middle, eastern of 2","简略描述":"pF, pL, lE, lbM, f of 2"},{"ID":"5167","标识":"NGC5167","M标识":"NGC5167","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h28m40.2s","赤经D(J2000)":"13.477833333333333","赤纬(J2000)":"+12h42m41s","赤纬D(J2000)":"12.711388888888887","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"","简略描述":"vF, sev vF st close"},{"ID":"5168","标识":"NGC5168","M标识":"NGC5168","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3p","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h31m7.2s","赤经D(J2000)":"13.518666666666668","赤纬(J2000)":"-60h56m21s","赤纬D(J2000)":"-60.939166666666665","可见光星等V":"9.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, very faint, small, very rich, stars of 15th magnitude","简略描述":"Cl, vF, S, vRi, st 15"},{"ID":"5169","标识":"NGC5169","M标识":"NGC5169","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h28m10s","赤经D(J2000)":"13.469444444444445","赤纬(J2000)":"+46h40m20s","赤纬D(J2000)":"46.67222222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.1","短轴(分)":"0.8","方位角":"103","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"5170","标识":"NGC5170","M标识":"NGC5170","拓展名":"","组件":"","Class":"V 22","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h29m48.8s","赤经D(J2000)":"13.496888888888888","赤纬(J2000)":"-17h57m55s","赤纬D(J2000)":"-17.96527777777778","可见光星等V":"11.1","摄影(蓝光)星等B":"12.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"8.2","短轴(分)":"1","方位角":"127","详细描述":"","简略描述":"cF, L, mE 129°, pgbM"},{"ID":"5171","标识":"NGC5171","M标识":"NGC5171","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h29m21.6s","赤经D(J2000)":"13.489333333333333","赤纬(J2000)":"+11h44m7s","赤纬D(J2000)":"11.735277777777776","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"10","详细描述":"pretty bright, large","简略描述":"pB, L"},{"ID":"5172","标识":"NGC5172","M标识":"NGC5172","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h29m19s","赤经D(J2000)":"13.48861111111111","赤纬(J2000)":"+17h3m6s","赤纬D(J2000)":"17.051666666666666","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.4","短轴(分)":"1.8","方位角":"103","详细描述":"faint, pretty large, round, gradually brighter middle","简略描述":"F, pL, R, gbM"},{"ID":"5173","标识":"NGC5173","M标识":"NGC5173","拓展名":"","组件":"","Class":"III 672","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h28m25.2s","赤经D(J2000)":"13.473666666666666","赤纬(J2000)":"+46h35m32s","赤纬D(J2000)":"46.592222222222226","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1","短轴(分)":"0.9","方位角":"117","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stellar"},{"ID":"5174","标识":"NGC5174","M标识":"NGC5174","拓展名":"","组件":"","Class":"III 45","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h29m25.9s","赤经D(J2000)":"13.490527777777777","赤纬(J2000)":"+11h0m28s","赤纬D(J2000)":"11.007777777777777","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2.7","短轴(分)":"1.4","方位角":"160","详细描述":"","简略描述":"vF, pL, D neb, close"},{"ID":"5175","标识":"NGC5175","M标识":"NGC5175","拓展名":"","组件":"","Class":"III 46","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h29m31s","赤经D(J2000)":"13.491944444444444","赤纬(J2000)":"+11h2m30s","赤纬D(J2000)":"11.041666666666666","可见光星等V":"99","摄影(蓝光)星等B":"12.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, pL, D neb, close"},{"ID":"5176","标识":"NGC5176","M标识":"NGC5176","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h29m24.9s","赤经D(J2000)":"13.49025","赤纬(J2000)":"+11h46m55s","赤纬D(J2000)":"11.781944444444445","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"No description, not seen by T"},{"ID":"5177","标识":"NGC5177","M标识":"NGC5177","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h29m24.2s","赤经D(J2000)":"13.490055555555555","赤纬(J2000)":"+11h47m48s","赤纬D(J2000)":"11.796666666666667","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"135","详细描述":"","简略描述":"No description, not seen by T"},{"ID":"5178","标识":"NGC5178","M标识":"NGC5178","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h29m29.3s","赤经D(J2000)":"13.491472222222221","赤纬(J2000)":"+11h37m30s","赤纬D(J2000)":"11.625","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"95","详细描述":"very faint","简略描述":"vF"},{"ID":"5179","标识":"NGC5179","M标识":"NGC5179","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h29m30.8s","赤经D(J2000)":"13.491888888888887","赤纬(J2000)":"+11h44m47s","赤纬D(J2000)":"11.746388888888887","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"45","详细描述":"","简略描述":"vF, * in centre"},{"ID":"5180","标识":"NGC5180","M标识":"NGC5180","拓展名":"","组件":"","Class":"III 71","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h29m26.9s","赤经D(J2000)":"13.490805555555555","赤纬(J2000)":"+16h49m33s","赤纬D(J2000)":"16.825833333333332","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1","方位角":"25","详细描述":"very faint, small, round, among 3 stars, 7th magnitude star to northeast","简略描述":"vF, S, R, am 3 st, * 7 nf"},{"ID":"5181","标识":"NGC5181","M标识":"NGC5181","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h29m41.9s","赤经D(J2000)":"13.494972222222222","赤纬(J2000)":"+13h18m16s","赤纬D(J2000)":"13.304444444444446","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"54","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"5182","标识":"NGC5182","M标识":"NGC5182","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h30m41.6s","赤经D(J2000)":"13.511555555555555","赤纬(J2000)":"-28h9m1s","赤纬D(J2000)":"-28.150277777777777","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"1.3","方位角":"11","详细描述":"","简略描述":"vF, pL, vlE, * 7 nf 10'"},{"ID":"5183","标识":"NGC5183","M标识":"NGC5183","拓展名":"","组件":"","Class":"II 679","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h30m6.1s","赤经D(J2000)":"13.501694444444444","赤纬(J2000)":"-1h43m14s","赤纬D(J2000)":"-1.7205555555555556","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.9","短轴(分)":"0.8","方位角":"122","详细描述":"faint, considerably small, a little extended, gradually brighter middle, western of 2","简略描述":"F, cS, lE, gbM, p of 2"},{"ID":"5184","标识":"NGC5184","M标识":"NGC5184","拓展名":"","组件":"","Class":"II 680","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h30m11.4s","赤经D(J2000)":"13.503166666666667","赤纬(J2000)":"-1h39m49s","赤纬D(J2000)":"-1.663611111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2","短轴(分)":"1.2","方位角":"135","详细描述":"pretty faint, pretty large, irregularly round, brighter middle, eastern of 2","简略描述":"pF, pL, iR, bM, f of 2"},{"ID":"5185","标识":"NGC5185","M标识":"NGC5185","拓展名":"","组件":"","Class":"III 642","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h30m2.2s","赤经D(J2000)":"13.50061111111111","赤纬(J2000)":"+13h24m58s","赤纬D(J2000)":"13.416111111111112","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"58","详细描述":"very faint, small, irregularly round","简略描述":"vF, S, iR"},{"ID":"5186","标识":"NGC5186","M标识":"NGC5186","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h30m3.9s","赤经D(J2000)":"13.501083333333334","赤纬(J2000)":"+12h10m31s","赤纬D(J2000)":"12.175277777777778","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"30","详细描述":"no description","简略描述":"No description"},{"ID":"5187","标识":"NGC5187","M标识":"NGC5187","拓展名":"","组件":"","Class":"III 652","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h29m48.2s","赤经D(J2000)":"13.496722222222221","赤纬(J2000)":"+31h7m48s","赤纬D(J2000)":"31.13","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"48","详细描述":"very faint, very small, round, gradually a little brighter middle","简略描述":"vF, vS, R, glbM"},{"ID":"5188","标识":"NGC5188","M标识":"NGC5188","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc\/P","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h31m27.9s","赤经D(J2000)":"13.524416666666667","赤纬(J2000)":"-34h47m42s","赤纬D(J2000)":"-34.794999999999995","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3","短轴(分)":"1.1","方位角":"104","详细描述":"faint, pretty large, very little extended, very gradually a little brighter middle","简略描述":"F, pL, vlE, vglbM"},{"ID":"5189","标识":"NGC5189","M标识":"NGC5189","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"螺旋行星状星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"苍蝇座","星座(En)":"MUS","赤经(J2000)":"13h33m32.9s","赤经D(J2000)":"13.55913888888889","赤纬(J2000)":"-65h58m25s","赤纬D(J2000)":"-65.97361111111111","可见光星等V":"99","摄影(蓝光)星等B":"10.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.33","短轴(分)":"","方位角":"","详细描述":"","简略描述":"!, B, pL, cE, bM, curved axis, 4 st inv"},{"ID":"5190","标识":"NGC5190","M标识":"NGC5190","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h30m38.4s","赤经D(J2000)":"13.510666666666667","赤纬(J2000)":"+18h8m4s","赤纬D(J2000)":"18.134444444444444","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.8","方位角":"159","详细描述":"","简略描述":"cF, S, R, bM, *** f"},{"ID":"5191","标识":"NGC5191","M标识":"NGC5191","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h30m47.3s","赤经D(J2000)":"13.51313888888889","赤纬(J2000)":"+11h12m5s","赤纬D(J2000)":"11.201388888888888","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"84","详细描述":"","简略描述":"eF, * 9 f 57s"},{"ID":"5192","标识":"NGC5192","M标识":"NGC5192","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h30m51.7s","赤经D(J2000)":"13.51436111111111","赤纬(J2000)":"-1h46m44s","赤纬D(J2000)":"-1.7788888888888887","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"26","详细描述":"very faint","简略描述":"vF"},{"ID":"5193","标识":"NGC5193","M标识":"NGC5193","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h31m53.5s","赤经D(J2000)":"13.531527777777779","赤纬(J2000)":"-33h14m5s","赤纬D(J2000)":"-33.234722222222224","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"pretty bright, small, round, gradually, pretty suddenly brighter middle","简略描述":"pB, S, R, g, psbM"},{"ID":"5194","标识":"NGC5194","M标识":"M51","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"涡状星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h29m52.6s","赤经D(J2000)":"13.497944444444444","赤纬(J2000)":"+47h11m44s","赤纬D(J2000)":"47.19555555555555","可见光星等V":"8.4","摄影(蓝光)星等B":"9","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"11.2","短轴(分)":"6.9","方位角":"7","详细描述":"a magnificent or otherwise interesting object, Great Spiral nebula","简略描述":"!!!, Great Spiral neb"},{"ID":"5195","标识":"NGC5195","M标识":"NGC5195","拓展名":"","组件":"","Class":"I 186","业余排名":"5","中文名":"M51替代者","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h29m59.2s","赤经D(J2000)":"13.499777777777776","赤纬(J2000)":"+47h16m3s","赤纬D(J2000)":"47.2675","可见光星等V":"9.6","摄影(蓝光)星等B":"10.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"5.9","短轴(分)":"4.6","方位角":"79","详细描述":"","简略描述":"B, pS, lE, vgbM, inv in M 51"},{"ID":"5196","标识":"NGC5196","M标识":"NGC5196","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h31m19.6s","赤经D(J2000)":"13.522111111111112","赤纬(J2000)":"-1h36m52s","赤纬D(J2000)":"-1.6144444444444446","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"97","详细描述":"very faint","简略描述":"vF"},{"ID":"5197","标识":"NGC5197","M标识":"NGC5197","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h31m25s","赤经D(J2000)":"13.523611111111112","赤纬(J2000)":"-1h41m33s","赤纬D(J2000)":"-1.6925000000000001","可见光星等V":"15.1","摄影(蓝光)星等B":"16","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"150","详细描述":"very faint","简略描述":"vF"},{"ID":"5198","标识":"NGC5198","M标识":"NGC5198","拓展名":"","组件":"","Class":"II 689","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h30m11.4s","赤经D(J2000)":"13.503166666666667","赤纬(J2000)":"+46h40m15s","赤纬D(J2000)":"46.670833333333334","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2","短轴(分)":"1.7","方位角":"0","详细描述":"pretty faint, pretty small, round, much brighter middle","简略描述":"pF, pS, R, mbM"},{"ID":"5199","标识":"NGC5199","M标识":"NGC5199","拓展名":"","组件":"","Class":"III 406","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h30m42.7s","赤经D(J2000)":"13.511861111111111","赤纬(J2000)":"+34h49m52s","赤纬D(J2000)":"34.83111111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"5200","标识":"NGC5200","M标识":"NGC5200","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h31m42.4s","赤经D(J2000)":"13.528444444444446","赤纬(J2000)":"-0h1m47s","赤纬D(J2000)":"-0.029722222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* 12 in F neb"},{"ID":"5201","标识":"NGC5201","M标识":"NGC5201","拓展名":"","组件":"","Class":"II 797","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h29m16.2s","赤经D(J2000)":"13.487833333333333","赤纬(J2000)":"+53h4m54s","赤纬D(J2000)":"53.08166666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"145","详细描述":"pretty faint, considerably small, round, very gradually a little brighter middle","简略描述":"pF, cS, R, vglbM"},{"ID":"5202","标识":"NGC5202","M标识":"NGC5202","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h32m0.5s","赤经D(J2000)":"13.533472222222223","赤纬(J2000)":"-1h41m55s","赤纬D(J2000)":"-1.698611111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"0","详细描述":"very faint","简略描述":"vF"},{"ID":"5203","标识":"NGC5203","M标识":"NGC5203","拓展名":"","组件":"","Class":"III 507","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h32m13.4s","赤经D(J2000)":"13.537055555555556","赤纬(J2000)":"-8h47m11s","赤纬D(J2000)":"-8.786388888888888","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"85","详细描述":"very faint, considerably small, round, gradually brighter middle, mottled but not resolved","简略描述":"vF, cS, R, gbM, r"},{"ID":"5204","标识":"NGC5204","M标识":"NGC5204","拓展名":"","组件":"","Class":"IV 63","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h29m36.1s","赤经D(J2000)":"13.49336111111111","赤纬(J2000)":"+58h25m6s","赤纬D(J2000)":"58.41833333333333","可见光星等V":"11.3","摄影(蓝光)星等B":"11.7","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"5","短轴(分)":"3","方位角":"5","详细描述":"pretty bright, considerably large, irregularly round, gradually much brighter middle, mottled but not resolved","简略描述":"pB, cL, iR, gmbM, r"},{"ID":"5205","标识":"NGC5205","M标识":"NGC5205","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h30m3.1s","赤经D(J2000)":"13.500861111111112","赤纬(J2000)":"+62h30m45s","赤纬D(J2000)":"62.5125","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"3.2","短轴(分)":"1.8","方位角":"166","详细描述":"very faint, pretty small, round, between 2 very faint stars","简略描述":"vF, pS, R, bet 2 vF st"},{"ID":"5206","标识":"NGC5206","M标识":"NGC5206","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h33m43.8s","赤经D(J2000)":"13.562166666666668","赤纬(J2000)":"-48h9m7s","赤纬D(J2000)":"-48.151944444444446","可见光星等V":"10.9","摄影(蓝光)星等B":"11.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.8","短轴(分)":"3.3","方位角":"37","详细描述":"faint, pretty large, round, very gradually brighter middle","简略描述":"F, pL, R, vgbM"},{"ID":"5207","标识":"NGC5207","M标识":"NGC5207","拓展名":"","组件":"","Class":"III 643","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h32m13.9s","赤经D(J2000)":"13.537194444444445","赤纬(J2000)":"+13h53m29s","赤纬D(J2000)":"13.891388888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"1","方位角":"140","详细描述":"","简略描述":"F, S, cE, * 11 att np"},{"ID":"5208","标识":"NGC5208","M标识":"NGC5208","拓展名":"","组件":"","Class":"III 9","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h32m27.9s","赤经D(J2000)":"13.541083333333333","赤纬(J2000)":"+7h19m1s","赤纬D(J2000)":"7.316944444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"0.6","方位角":"162","详细描述":"faint, very small, round, pretty suddenly brighter middle, western of 2","简略描述":"F, vS, R, psbM, p of 2"},{"ID":"5209","标识":"NGC5209","M标识":"NGC5209","拓展名":"","组件":"","Class":"III 10","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h32m42.5s","赤经D(J2000)":"13.54513888888889","赤纬(J2000)":"+7h19m40s","赤纬D(J2000)":"7.3277777777777775","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"1","方位角":"","详细描述":"faint, very small, round, stellar, eastern of 2","简略描述":"F, vS, R, stellar, f of 2"},{"ID":"5210","标识":"NGC5210","M标识":"NGC5210","拓展名":"","组件":"","Class":"III 99","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h32m49.4s","赤经D(J2000)":"13.547055555555556","赤纬(J2000)":"+7h10m12s","赤纬D(J2000)":"7.17","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"15","详细描述":"faint, small, round, pretty suddenly brighter middle and nucleus","简略描述":"F, S, R, psbMN"},{"ID":"5211","标识":"NGC5211","M标识":"NGC5211","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h33m5.3s","赤经D(J2000)":"13.551472222222223","赤纬(J2000)":"-1h2m9s","赤纬D(J2000)":"-1.0358333333333334","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.1","短轴(分)":"1.6","方位角":"30","详细描述":"pretty bright, small, round, pretty suddenly much brighter middle","简略描述":"pB, S, R, psmbM"},{"ID":"5212","标识":"NGC5212","M标识":"NGC5212","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h32m56.1s","赤经D(J2000)":"13.548916666666667","赤纬(J2000)":"+7h17m17s","赤纬D(J2000)":"7.288055555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"110","详细描述":"extremely faint","简略描述":"eF"},{"ID":"5213","标识":"NGC5213","M标识":"NGC5213","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h34m39.2s","赤经D(J2000)":"13.577555555555556","赤纬(J2000)":"+4h7m51s","赤纬D(J2000)":"4.130833333333333","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"132","详细描述":"very faint, small, a little extended","简略描述":"vF, S, lE"},{"ID":"5214","标识":"NGC5214","M标识":"NGC5214","拓展名":"","组件":"","Class":"III 656","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h32m48.5s","赤经D(J2000)":"13.546805555555556","赤纬(J2000)":"+41h52m20s","赤纬D(J2000)":"41.87222222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"140","详细描述":"very faint, small, round, a little brighter middle","简略描述":"vF, S, R, lbM"},{"ID":"5215","标识":"NGC5215","M标识":"NGC5215","拓展名":"B","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h35m9.7s","赤经D(J2000)":"13.586027777777778","赤纬(J2000)":"-33h29m2s","赤纬D(J2000)":"-33.48388888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"80","详细描述":"","简略描述":"eF, eS, * s and * p"},{"ID":"5216","标识":"NGC5216","M标识":"NGC5216","拓展名":"","组件":"","Class":"II 841","业余排名":"14","中文名":"基南系统","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h32m7.1s","赤经D(J2000)":"13.535305555555555","赤纬(J2000)":"+62h42m3s","赤纬D(J2000)":"62.700833333333335","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"28","详细描述":"very remarkable object, (per William and John Herschel) very bright, very large, extended 55°, extremely suddenly bright middle and nucleus; (per Lacaille) 3 branched spiral","简略描述":"pB, S, vlE"},{"ID":"5217","标识":"NGC5217","M标识":"NGC5217","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h34m5.9s","赤经D(J2000)":"13.568305555555556","赤纬(J2000)":"+17h51m26s","赤纬D(J2000)":"17.857222222222223","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"36","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"5218","标识":"NGC5218","M标识":"NGC5218","拓展名":"","组件":"","Class":"II 842","业余排名":"14","中文名":"基南系统","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h32m10.2s","赤经D(J2000)":"13.536166666666666","赤纬(J2000)":"+62h46m5s","赤纬D(J2000)":"62.768055555555556","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"100","详细描述":"pretty bright, pretty large, round, gradually brighter middle","简略描述":"pB, pL, R, gbM"},{"ID":"5219","标识":"NGC5219","M标识":"NGC5219","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h38m41.8s","赤经D(J2000)":"13.644944444444445","赤纬(J2000)":"-45h51m17s","赤纬D(J2000)":"-45.85472222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"17","详细描述":"very faint, small, round, star to north, near","简略描述":"vF, S, R, * n, nr"},{"ID":"5220","标识":"NGC5220","M标识":"NGC5220","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h35m56.7s","赤经D(J2000)":"13.599083333333335","赤纬(J2000)":"-33h27m16s","赤纬D(J2000)":"-33.45444444444445","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2.4","短轴(分)":"0.7","方位角":"97","详细描述":"very faint, small, round, 10th magnitude star to east","简略描述":"vF, S, R, * 10 f"},{"ID":"5221","标识":"NGC5221","M标识":"NGC5221","拓展名":"","组件":"","Class":"III 86","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h34m56.2s","赤经D(J2000)":"13.582277777777778","赤纬(J2000)":"+13h49m57s","赤纬D(J2000)":"13.8325","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"104","详细描述":"very faint, small, very little extended, 1st of 3","简略描述":"vF, S, vlE, 1st of 3"},{"ID":"5222","标识":"NGC5222","M标识":"NGC5222","拓展名":"","组件":"1","Class":"III 85","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h34m55.9s","赤经D(J2000)":"13.582194444444443","赤纬(J2000)":"+13h44m28s","赤纬D(J2000)":"13.74111111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"33","详细描述":"considerably faint, small, round, brighter middle, 2nd of 3","简略描述":"cF, S, R, bM, 2nd of 3"},{"ID":"5223","标识":"NGC5223","M标识":"NGC5223","拓展名":"","组件":"","Class":"III 407","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h34m25.1s","赤经D(J2000)":"13.573638888888889","赤纬(J2000)":"+34h41m26s","赤纬D(J2000)":"34.690555555555555","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"168","详细描述":"faint, considerably small, round, 10th magnitude star to west, western of 2","简略描述":"F, cS, R, * 10 p, p of 2"},{"ID":"5224","标识":"NGC5224","M标识":"NGC5224","拓展名":"","组件":"","Class":"III 926","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h35m8.8s","赤经D(J2000)":"13.585777777777778","赤纬(J2000)":"+6h28m54s","赤纬D(J2000)":"6.4816666666666665","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"","简略描述":"vF, S, * 9 nf inv ?"},{"ID":"5225","标识":"NGC5225","M标识":"NGC5225","拓展名":"","组件":"","Class":"III 822","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h33m20s","赤经D(J2000)":"13.555555555555557","赤纬(J2000)":"+51h29m27s","赤纬D(J2000)":"51.490833333333335","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"considerably faint, pretty small, irregularly round, a little brighter middle","简略描述":"cF, pS, iR, lbM"},{"ID":"5226","标识":"NGC5226","M标识":"NGC5226","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h35m3.6s","赤经D(J2000)":"13.584333333333333","赤纬(J2000)":"+13h55m17s","赤纬D(J2000)":"13.921388888888888","可见光星等V":"15.8","摄影(蓝光)星等B":"16.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"24","详细描述":"","简略描述":"eF, pS, h 1637 sp"},{"ID":"5227","标识":"NGC5227","M标识":"NGC5227","拓展名":"","组件":"","Class":"III 928","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h35m24.7s","赤经D(J2000)":"13.590194444444444","赤纬(J2000)":"+1h24m38s","赤纬D(J2000)":"1.4105555555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"13.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"40","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"5228","标识":"NGC5228","M标识":"NGC5228","拓展名":"","组件":"","Class":"III 408","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h34m35.1s","赤经D(J2000)":"13.576416666666667","赤纬(J2000)":"+34h46m40s","赤纬D(J2000)":"34.77777777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.9","方位角":"9","详细描述":"very faint, very small, round, eastern of 2","简略描述":"vF, vS, R, f of 2"},{"ID":"5229","标识":"NGC5229","M标识":"NGC5229","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h34m2.9s","赤经D(J2000)":"13.567472222222221","赤纬(J2000)":"+47h54m52s","赤纬D(J2000)":"47.91444444444444","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"3.3","短轴(分)":"0.5","方位角":"167","详细描述":"extremely faint, large, much extended, very difficult","简略描述":"eF, L, mE, v diffic"},{"ID":"5230","标识":"NGC5230","M标识":"NGC5230","拓展名":"","组件":"","Class":"III 87","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h35m32.1s","赤经D(J2000)":"13.59225","赤纬(J2000)":"+13h40m31s","赤纬D(J2000)":"13.675277777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"1.9","方位角":"","详细描述":"faint, large, extended, very gradually brighter middle, 3rd of 3","简略描述":"F, L, E, vgbM, 3rd of 3"},{"ID":"5231","标识":"NGC5231","M标识":"NGC5231","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h35m48.3s","赤经D(J2000)":"13.59675","赤纬(J2000)":"+2h59m56s","赤纬D(J2000)":"2.998888888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"112","详细描述":"faint, small, brighter middle","简略描述":"F, S, bM"},{"ID":"5232","标识":"NGC5232","M标识":"NGC5232","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h36m8.2s","赤经D(J2000)":"13.602277777777777","赤纬(J2000)":"-8h29m52s","赤纬D(J2000)":"-8.497777777777777","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"110","详细描述":"faint, very small","简略描述":"F, vS"},{"ID":"5233","标识":"NGC5233","M标识":"NGC5233","拓展名":"","组件":"","Class":"III 425","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h35m13.4s","赤经D(J2000)":"13.587055555555557","赤纬(J2000)":"+34h40m38s","赤纬D(J2000)":"34.67722222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"80","详细描述":"faint, small, round, very small (faint) star near","简略描述":"F, S, R, vS * nr"},{"ID":"5234","标识":"NGC5234","M标识":"NGC5234","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h37m29.8s","赤经D(J2000)":"13.624944444444445","赤纬(J2000)":"-49h50m14s","赤纬D(J2000)":"-49.83722222222222","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"48","详细描述":"most extremely faint, small, a little extended","简略描述":"eeF, S, lE"},{"ID":"5235","标识":"NGC5235","M标识":"NGC5235","拓展名":"","组件":"","Class":"III 100","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h36m1.4s","赤经D(J2000)":"13.600388888888888","赤纬(J2000)":"+6h35m6s","赤纬D(J2000)":"6.585","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"120","详细描述":"very faint, pretty small, very little extended, 9th magnitude star to southwest","简略描述":"vF, pS, vlE, * 9 sp"},{"ID":"5236","标识":"NGC5236","M标识":"M83","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"南风车星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h37m0.2s","赤经D(J2000)":"13.616722222222222","赤纬(J2000)":"-29h52m2s","赤纬D(J2000)":"-29.86722222222222","可见光星等V":"7.5","摄影(蓝光)星等B":"8.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"12.9","短轴(分)":"11.5","方位角":"44","详细描述":"very remarkable object, (per William and John Herschel) very bright, very large, extended 55°, extremely suddenly bright middle and nucleus; (per Lacaille) 3 branched spiral","简略描述":"!!, (H, h) vB, vL, E 55°, esbMN, (L) 3 branched spiral"},{"ID":"5237","标识":"NGC5237","M标识":"NGC5237","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h37m38.9s","赤经D(J2000)":"13.627472222222222","赤纬(J2000)":"-42h50m52s","赤纬D(J2000)":"-42.84777777777778","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2","短轴(分)":"1.6","方位角":"115","详细描述":"faint, pretty large, considerably extended, very gradually a little brighter middle","简略描述":"F, pL, cE, vglbM"},{"ID":"5238","标识":"NGC5238","M标识":"NGC5238","拓展名":"","组件":"1","Class":"III 823","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h34m42.6s","赤经D(J2000)":"13.5785","赤纬(J2000)":"+51h36m50s","赤纬D(J2000)":"51.61388888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"160","详细描述":"considerably faint, pretty large, round, very little brighter middle","简略描述":"cF, pL, R, vlbM"},{"ID":"5239","标识":"NGC5239","M标识":"NGC5239","拓展名":"","组件":"","Class":"III 101","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h36m26.3s","赤经D(J2000)":"13.607305555555556","赤纬(J2000)":"+7h22m11s","赤纬D(J2000)":"7.369722222222221","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"13","详细描述":"very faint, pretty large, round, extremely mottled but not resolved","简略描述":"vF, pL, R, er"},{"ID":"5240","标识":"NGC5240","M标识":"NGC5240","拓展名":"","组件":"","Class":"III 409","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h35m55.1s","赤经D(J2000)":"13.598638888888889","赤纬(J2000)":"+35h35m18s","赤纬D(J2000)":"35.58833333333334","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"60","详细描述":"very faint, pretty large, round, a little brighter middle","简略描述":"vF, pL, R, lbM"},{"ID":"5241","标识":"NGC5241","M标识":"NGC5241","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h36m39.9s","赤经D(J2000)":"13.611083333333333","赤纬(J2000)":"-8h24m6s","赤纬D(J2000)":"-8.401666666666667","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"55","详细描述":"pretty faint, extremely small, very faint star close","简略描述":"pF, eS, vF * close"},{"ID":"5242","标识":"NGC5242","M标识":"NGC5242","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h37m7.3s","赤经D(J2000)":"13.618694444444445","赤纬(J2000)":"+2h46m14s","赤纬D(J2000)":"2.7705555555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely large","简略描述":"eF, eL"},{"ID":"5243","标识":"NGC5243","M标识":"NGC5243","拓展名":"","组件":"","Class":"III 620","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h36m15.1s","赤经D(J2000)":"13.604194444444444","赤纬(J2000)":"+38h20m36s","赤纬D(J2000)":"38.343333333333334","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"126","详细描述":"","简略描述":"cF, pL, E 65°, biN ?"},{"ID":"5244","标识":"NGC5244","M标识":"NGC5244","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h38m41.8s","赤经D(J2000)":"13.644944444444445","赤纬(J2000)":"-45h51m17s","赤纬D(J2000)":"-45.85472222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"17","详细描述":"very remarkable object, (per William and John Herschel) very bright, very large, extended 55°, extremely suddenly bright middle and nucleus; (per Lacaille) 3 branched spiral","简略描述":"vF, S, R, vglbM, * 13 att"},{"ID":"5245","标识":"NGC5245","M标识":"NGC5245","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h37m23.2s","赤经D(J2000)":"13.623111111111111","赤纬(J2000)":"+3h53m53s","赤纬D(J2000)":"3.8980555555555556","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"90","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"5246","标识":"NGC5246","M标识":"NGC5246","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h37m29.3s","赤经D(J2000)":"13.624805555555556","赤纬(J2000)":"+4h6m16s","赤纬D(J2000)":"4.104444444444444","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.8","方位角":"63","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"5247","标识":"NGC5247","M标识":"NGC5247","拓展名":"","组件":"","Class":"II 297","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h38m2.9s","赤经D(J2000)":"13.634138888888888","赤纬(J2000)":"-17h53m5s","赤纬D(J2000)":"-17.884722222222223","可见光星等V":"10","摄影(蓝光)星等B":"10.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"5.4","短轴(分)":"4.9","方位角":"20","详细描述":"","简略描述":"!!, (H, h) cF, vL, vg, psmbMLN, (L) 2 branched spiral"},{"ID":"5248","标识":"NGC5248","M标识":"NGC5248","拓展名":"","组件":"","Class":"I 34","业余排名":"2","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h37m32s","赤经D(J2000)":"13.625555555555556","赤纬(J2000)":"+8h53m10s","赤纬D(J2000)":"8.886111111111111","可见光星等V":"10.3","摄影(蓝光)星等B":"11","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"6.2","短轴(分)":"4.5","方位角":"122","详细描述":"","简略描述":"B, L, E 150°, psbMrN"},{"ID":"5249","标识":"NGC5249","M标识":"NGC5249","拓展名":"","组件":"","Class":"III 72","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h37m37.5s","赤经D(J2000)":"13.627083333333333","赤纬(J2000)":"+15h58m20s","赤纬D(J2000)":"15.972222222222223","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"170","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"5250","标识":"NGC5250","M标识":"NGC5250","拓展名":"","组件":"","Class":"II 817","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h36m7.1s","赤经D(J2000)":"13.601972222222221","赤纬(J2000)":"+51h14m11s","赤纬D(J2000)":"51.23638888888889","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.9","方位角":"120","详细描述":"pretty bright, small, round, very gradually brighter middle","简略描述":"pB, S, R, vgbM"},{"ID":"5251","标识":"NGC5251","M标识":"NGC5251","拓展名":"","组件":"","Class":"III 369","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h37m24.8s","赤经D(J2000)":"13.623555555555557","赤纬(J2000)":"+27h25m9s","赤纬D(J2000)":"27.41916666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, small, very little extended","简略描述":"vF, S, vlE"},{"ID":"5252","标识":"NGC5252","M标识":"NGC5252","拓展名":"","组件":"","Class":"III 505","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h38m15.9s","赤经D(J2000)":"13.637749999999999","赤纬(J2000)":"+4h32m33s","赤纬D(J2000)":"4.5424999999999995","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"10","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"5253","标识":"NGC5253","M标识":"NGC5253","拓展名":"","组件":"","Class":"II 638","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h39m55.8s","赤经D(J2000)":"13.6655","赤纬(J2000)":"-31h38m30s","赤纬D(J2000)":"-31.641666666666666","可见光星等V":"10.4","摄影(蓝光)星等B":"10.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"5","短轴(分)":"1.9","方位角":"45","详细描述":"bright, pretty large, extended 45°±, pretty suddenly much brighter middle","简略描述":"B, pL, E 45° ±, psmbM"},{"ID":"5254","标识":"NGC5254","M标识":"NGC5254","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h39m38s","赤经D(J2000)":"13.660555555555556","赤纬(J2000)":"-11h29m39s","赤纬D(J2000)":"-11.494166666666667","可见光星等V":"12","摄影(蓝光)星等B":"12.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.2","短轴(分)":"1.5","方位角":"125","详细描述":"pretty bright, large, pretty much extended, gradually a little brighter middle","简略描述":"pB, L, pmE, glbM"},{"ID":"5255","标识":"NGC5255","M标识":"NGC5255","拓展名":"","组件":"","Class":"III 803","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h37m17.9s","赤经D(J2000)":"13.621638888888889","赤纬(J2000)":"+57h6m35s","赤纬D(J2000)":"57.109722222222224","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"24","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"5256","标识":"NGC5256","M标识":"NGC5256","拓展名":"","组件":"","Class":"III 673","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h38m17.4s","赤经D(J2000)":"13.638166666666667","赤纬(J2000)":"+48h16m39s","赤纬D(J2000)":"48.277499999999996","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"30","详细描述":"extremely faint, very small, round, gradually brighter middle","简略描述":"eF, vS, R, gbM"},{"ID":"5257","标识":"NGC5257","M标识":"NGC5257","拓展名":"","组件":"","Class":"II 895","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h39m52.8s","赤经D(J2000)":"13.664666666666667","赤纬(J2000)":"+0h50m25s","赤纬D(J2000)":"0.8402777777777778","可见光星等V":"12.4","摄影(蓝光)星等B":"12.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"121","详细描述":"very faint, small, round, brighter middle, western of double nebula","简略描述":"vF, S, R, bM, p of D neb"},{"ID":"5258","标识":"NGC5258","M标识":"NGC5258","拓展名":"","组件":"","Class":"II 896","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h39m57.8s","赤经D(J2000)":"13.666055555555555","赤纬(J2000)":"+0h49m54s","赤纬D(J2000)":"0.8316666666666667","可见光星等V":"12.3","摄影(蓝光)星等B":"12.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"22","详细描述":"very faint, small, round, brighter middle, western of double nebula","简略描述":"F, S, iR, f of D neb"},{"ID":"5259","标识":"NGC5259","M标识":"NGC5259","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h39m24.6s","赤经D(J2000)":"13.656833333333333","赤纬(J2000)":"+30h59m28s","赤纬D(J2000)":"30.991111111111113","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"108","详细描述":"very faint, small, irregularly round","简略描述":"vF, S, iR"},{"ID":"5260","标识":"NGC5260","M标识":"NGC5260","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h40m19.8s","赤经D(J2000)":"13.672166666666666","赤纬(J2000)":"-23h51m30s","赤纬D(J2000)":"-23.858333333333334","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"","详细描述":"extremely faint, pretty large, 3 stars to east in a line","简略描述":"eF, pL, 3 st f in a line"},{"ID":"5261","标识":"NGC5261","M标识":"NGC5261","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h40m16s","赤经D(J2000)":"13.671111111111111","赤纬(J2000)":"+5h4m37s","赤纬D(J2000)":"5.076944444444444","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"141","详细描述":"very faint, round, among pretty bright stars","简略描述":"vF, R, am pB st"},{"ID":"5262","标识":"NGC5262","M标识":"NGC5262","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"13h35m38.5s","赤经D(J2000)":"13.594027777777779","赤纬(J2000)":"+75h2m24s","赤纬D(J2000)":"75.03999999999999","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"14","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"5263","标识":"NGC5263","M标识":"NGC5263","拓展名":"","组件":"","Class":"III 370","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h39m55.6s","赤经D(J2000)":"13.665444444444445","赤纬(J2000)":"+28h23m59s","赤纬D(J2000)":"28.399722222222223","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"26","详细描述":"considerably faint, small, much extended 0°±, 9th magnitude star to southwest","简略描述":"cF, S, mE 0° ±, * 9 sp"},{"ID":"5264","标识":"NGC5264","M标识":"NGC5264","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h41m36.6s","赤经D(J2000)":"13.6935","赤纬(J2000)":"-29h54m43s","赤纬D(J2000)":"-29.911944444444444","可见光星等V":"12","摄影(蓝光)星等B":"12.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.6","短轴(分)":"1.5","方位角":"54","详细描述":"very faint, pretty large, round, very little brighter middle","简略描述":"vF, pL, R, vlbM"},{"ID":"5265","标识":"NGC5265","M标识":"NGC5265","拓展名":"","组件":"","Class":"III 410","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h40m9s","赤经D(J2000)":"13.669166666666666","赤纬(J2000)":"+36h51m41s","赤纬D(J2000)":"36.86138888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"66","详细描述":"faint, considerably small, very little extended, extremely mottled but not resolved","简略描述":"F, cS, vlE, er"},{"ID":"5266","标识":"NGC5266","M标识":"NGC5266","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h43m1.8s","赤经D(J2000)":"13.717166666666667","赤纬(J2000)":"-48h10m9s","赤纬D(J2000)":"-48.16916666666666","可见光星等V":"11.1","摄影(蓝光)星等B":"12.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.3","短轴(分)":"2.3","方位角":"103","详细描述":"bright, pretty large, very little extended, very gradually a little brighter middle, 3 stars near","简略描述":"B, pL, vlE, vglbM, 3 st nr"},{"ID":"5267","标识":"NGC5267","M标识":"NGC5267","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h40m40s","赤经D(J2000)":"13.677777777777777","赤纬(J2000)":"+38h47m40s","赤纬D(J2000)":"38.794444444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"56","详细描述":"faint, small, round, gradually brighter middle, small star to northwest","简略描述":"F, S, R, gbM, S * np"},{"ID":"5268","标识":"NGC5268","M标识":"NGC5268","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h42m12.3s","赤经D(J2000)":"13.703416666666666","赤纬(J2000)":"-13h51m37s","赤纬D(J2000)":"-13.860277777777778","可见光星等V":"11.4","摄影(蓝光)星等B":"11.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a nebula (Auwers 32)","简略描述":"A nebula (Auw 32)"},{"ID":"5269","标识":"NGC5269","M标识":"NGC5269","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h44m44.1s","赤经D(J2000)":"13.745583333333332","赤纬(J2000)":"-62h54m54s","赤纬D(J2000)":"-62.915","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, large, irregular figure, stars of 12th magnitude","简略描述":"Cl, P, L, iF, st 12"},{"ID":"5270","标识":"NGC5270","M标识":"NGC5270","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h42m10.9s","赤经D(J2000)":"13.703027777777777","赤纬(J2000)":"+4h15m45s","赤纬D(J2000)":"4.2625","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"20","详细描述":"extremely faint, small, between 2 stars","简略描述":"eF, S, bet 2 st"},{"ID":"5271","标识":"NGC5271","M标识":"NGC5271","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h41m42.4s","赤经D(J2000)":"13.695111111111112","赤纬(J2000)":"+30h7m31s","赤纬D(J2000)":"30.12527777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"168","详细描述":"very faint, very small, round, gradually a very little brighter middle","简略描述":"vF, vS, R, gvlbM"},{"ID":"5272","标识":"NGC5272","M标识":"M3","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VI","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h42m11.2s","赤经D(J2000)":"13.703111111111111","赤纬(J2000)":"+28h22m34s","赤纬D(J2000)":"28.37611111111111","可见光星等V":"6.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"18","短轴(分)":"","方位角":"","详细描述":"a very remarkable object, a globular cluster, extremely bright, very large, very suddenly much brighter middle, stars from 11th magnitude","简略描述":"!!, globular cluster of stars, eB, vL, vsmbM, st 11…"},{"ID":"5273","标识":"NGC5273","M标识":"NGC5273","拓展名":"","组件":"","Class":"I 98","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h42m8.3s","赤经D(J2000)":"13.702305555555554","赤纬(J2000)":"+35h39m14s","赤纬D(J2000)":"35.653888888888886","可见光星等V":"11.6","摄影(蓝光)星等B":"12.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.8","短轴(分)":"2.5","方位角":"10","详细描述":"considerably bright, pretty large, round, gradually then pretty suddenly much brighter middle","简略描述":"cB, pL, R, g, psmbM"},{"ID":"5274","标识":"NGC5274","M标识":"NGC5274","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h42m23.3s","赤经D(J2000)":"13.70647222222222","赤纬(J2000)":"+29h50m52s","赤纬D(J2000)":"29.847777777777775","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"5275","标识":"NGC5275","M标识":"NGC5275","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h42m23.6s","赤经D(J2000)":"13.706555555555555","赤纬(J2000)":"+29h49m31s","赤纬D(J2000)":"29.825277777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, round, gradually much brighter middle","简略描述":"F, S, R, gmbM"},{"ID":"5276","标识":"NGC5276","M标识":"NGC5276","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h42m21.9s","赤经D(J2000)":"13.706083333333332","赤纬(J2000)":"+35h37m27s","赤纬D(J2000)":"35.62416666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"153","详细描述":"faint, small","简略描述":"F, S"},{"ID":"5277","标识":"NGC5277","M标识":"NGC5277","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h42m38.4s","赤经D(J2000)":"13.710666666666667","赤纬(J2000)":"+29h57m15s","赤纬D(J2000)":"29.954166666666666","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"138","详细描述":"extremely faint, small, round, brighter middle","简略描述":"eF, S, R, bM"},{"ID":"5278","标识":"NGC5278","M标识":"NGC5278","拓展名":"","组件":"","Class":"II 798","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h41m39.9s","赤经D(J2000)":"13.694416666666667","赤纬(J2000)":"+55h40m14s","赤纬D(J2000)":"55.67055555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"1","方位角":"57","详细描述":"pretty faint, round, very small nebula 40 arcsec to east, star to north","简略描述":"pF, R, vS neb 40\" f, * n"},{"ID":"5279","标识":"NGC5279","M标识":"NGC5279","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa\/P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h41m43.7s","赤经D(J2000)":"13.695472222222222","赤纬(J2000)":"+55h40m24s","赤纬D(J2000)":"55.67333333333333","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"29","详细描述":"pretty faint, round, very small nebula 40 arcsec to east, star to north","简略描述":"F, vS, f of 2"},{"ID":"5280","标识":"NGC5280","M标识":"NGC5280","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h42m55.5s","赤经D(J2000)":"13.715416666666666","赤纬(J2000)":"+29h52m9s","赤纬D(J2000)":"29.86916666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"5281","标识":"NGC5281","M标识":"NGC5281","拓展名":"","组件":"","Class":"","业余排名":"4","中文名":"小蝎星团","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h46m36.7s","赤经D(J2000)":"13.776861111111112","赤纬(J2000)":"-62h54m34s","赤纬D(J2000)":"-62.909444444444446","可见光星等V":"5.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, small, pretty compressed, irregularly round, stars from 10th to 12th magnitude","简略描述":"Cl, B, S, pC, iR, st 10…12"},{"ID":"5282","标识":"NGC5282","M标识":"NGC5282","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h43m24.8s","赤经D(J2000)":"13.723555555555556","赤纬(J2000)":"+30h4m12s","赤纬D(J2000)":"30.07","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"96","详细描述":"faint, small, round, gradually brighter middle equivalent to 14th magnitude star","简略描述":"F, S, R, gbM * 14"},{"ID":"5283","标识":"NGC5283","M标识":"NGC5283","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"13h41m5.7s","赤经D(J2000)":"13.684916666666666","赤纬(J2000)":"+67h40m23s","赤纬D(J2000)":"67.67305555555556","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"1","方位角":"0","详细描述":"faint, small, stellar","简略描述":"F, S, stell"},{"ID":"5284","标识":"NGC5284","M标识":"NGC5284","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h47m6s","赤经D(J2000)":"13.785","赤纬(J2000)":"-59h13m39s","赤纬D(J2000)":"-59.2275","可见光星等V":"99","摄影(蓝光)星等B":"10","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"30","短轴(分)":"20","方位角":"","详细描述":"a cluster, large, very rich, stars from 7th to 16th magnitude","简略描述":"Cl, L, vRi, st 7…16"},{"ID":"5285","标识":"NGC5285","M标识":"NGC5285","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h44m25.7s","赤经D(J2000)":"13.740472222222222","赤纬(J2000)":"+2h6m38s","赤纬D(J2000)":"2.1105555555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, very small, round, gradually a very little brighter middle","简略描述":"eF, vS, R, gvlbM"},{"ID":"5286","标识":"NGC5286","M标识":"NGC5286","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"V","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h46m26.5s","赤经D(J2000)":"13.774027777777778","赤纬(J2000)":"-51h22m22s","赤纬D(J2000)":"-51.37277777777778","可见光星等V":"7.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"11","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very bright, pretty large, round, well resolved, clearly consisting of stars of 15th magnitude","简略描述":"globular, vB, pL, R, rrr, st 15"},{"ID":"5287","标识":"NGC5287","M标识":"NGC5287","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h44m52.5s","赤经D(J2000)":"13.747916666666665","赤纬(J2000)":"+29h46m15s","赤纬D(J2000)":"29.770833333333332","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"100","详细描述":"faint, small, irregular, mottled but not resolved?","简略描述":"F, S, irr, r?"},{"ID":"5288","标识":"NGC5288","M标识":"NGC5288","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"圆规座","星座(En)":"CIR","赤经(J2000)":"13h48m45.6s","赤经D(J2000)":"13.812666666666667","赤纬(J2000)":"-64h41m11s","赤纬D(J2000)":"-64.6863888888889","可见光星等V":"11.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, small, compressed, irregularly round, stars of 14th magnitude","简略描述":"Cl, S, C, iR, st 14"},{"ID":"5289","标识":"NGC5289","M标识":"NGC5289","拓展名":"","组件":"","Class":"II 668","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h45m8.7s","赤经D(J2000)":"13.752416666666667","赤纬(J2000)":"+41h30m13s","赤纬D(J2000)":"41.50361111111111","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.9","短轴(分)":"0.6","方位角":"100","详细描述":"very faint, very small, a little extended 90°±, suddenly brighter middle","简略描述":"vF, vS, lE 90° ±, sbM"},{"ID":"5290","标识":"NGC5290","M标识":"NGC5290","拓展名":"","组件":"","Class":"I 170","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h45m19.1s","赤经D(J2000)":"13.755305555555555","赤纬(J2000)":"+41h42m47s","赤纬D(J2000)":"41.713055555555556","可见光星等V":"12.5","摄影(蓝光)星等B":"13","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.7","短轴(分)":"1","方位角":"95","详细描述":"considerably bright, pretty large, extended 90°±, brighter middle and nucleus","简略描述":"cB, pL, E 90° ±, bMN"},{"ID":"5291","标识":"NGC5291","M标识":"NGC5291","拓展名":"","组件":"1","Class":"","业余排名":"14","中文名":"贝壳星系","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h47m24.3s","赤经D(J2000)":"13.790083333333333","赤纬(J2000)":"-30h24m19s","赤纬D(J2000)":"-30.405277777777776","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"168","详细描述":"very faint, round, a very little brighter middle, double star to west","简略描述":"vF, R, vlbM, ** p"},{"ID":"5292","标识":"NGC5292","M标识":"NGC5292","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h47m40s","赤经D(J2000)":"13.794444444444444","赤纬(J2000)":"-30h56m22s","赤纬D(J2000)":"-30.939444444444444","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"55","详细描述":"pretty faint, small, round, 2 stars near","简略描述":"pF, S, R, 2 st nr"},{"ID":"5293","标识":"NGC5293","M标识":"NGC5293","拓展名":"","组件":"","Class":"V 6","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h46m52.6s","赤经D(J2000)":"13.78127777777778","赤纬(J2000)":"+16h16m22s","赤纬D(J2000)":"16.272777777777776","可见光星等V":"13.1","摄影(蓝光)星等B":"13.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"120","详细描述":"extremely faint, very large, mottled but not resolved","简略描述":"eF, vL, r"},{"ID":"5294","标识":"NGC5294","M标识":"NGC5294","拓展名":"","组件":"","Class":"III 785","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h45m18.2s","赤经D(J2000)":"13.755055555555556","赤纬(J2000)":"+55h17m25s","赤纬D(J2000)":"55.290277777777774","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"120","详细描述":"extremely faint, 2 stars attached or involved","简略描述":"eF, 2 st att or inv"},{"ID":"5295","标识":"NGC5295","M标识":"NGC5295","拓展名":"","组件":"","Class":"III 946","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"13h38m39.3s","赤经D(J2000)":"13.64425","赤纬(J2000)":"+79h27m34s","赤纬D(J2000)":"79.45944444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"5296","标识":"NGC5296","M标识":"NGC5296","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h46m18.6s","赤经D(J2000)":"13.771833333333333","赤纬(J2000)":"+43h51m6s","赤纬D(J2000)":"43.85166666666667","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"177","详细描述":"round, brighter middle, is southwest of h 1668","简略描述":"R, bM, is sp h 1668"},{"ID":"5297","标识":"NGC5297","M标识":"NGC5297","拓展名":"","组件":"","Class":"I 180","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h46m23.4s","赤经D(J2000)":"13.773166666666668","赤纬(J2000)":"+43h52m21s","赤纬D(J2000)":"43.8725","可见光星等V":"11.8","摄影(蓝光)星等B":"12.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"5.6","短轴(分)":"1.3","方位角":"148","详细描述":"considerably bright, large, pretty much extended 142°, gradually brighter middle","简略描述":"cB, L, pmE 142°, gbM"},{"ID":"5298","标识":"NGC5298","M标识":"NGC5298","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h48m36.3s","赤经D(J2000)":"13.810083333333335","赤纬(J2000)":"-30h25m45s","赤纬D(J2000)":"-30.429166666666667","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"69","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"5299","标识":"NGC5299","M标识":"NGC5299","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Cloud","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h50m48s","赤经D(J2000)":"13.846666666666668","赤纬(J2000)":"-60h24m0s","赤纬D(J2000)":"-60.4","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"30","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, very rich","简略描述":"Cl, vL, vRi"},{"ID":"5300","标识":"NGC5300","M标识":"NGC5300","拓展名":"","组件":"","Class":"II 533","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h48m15.9s","赤经D(J2000)":"13.804416666666667","赤纬(J2000)":"+3h57m2s","赤纬D(J2000)":"3.950555555555556","可见光星等V":"11.4","摄影(蓝光)星等B":"12.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3.8","短轴(分)":"2.4","方位角":"150","详细描述":"very faint, very large, a little extended, very gradually brighter middle","简略描述":"vF, vL, lE, vgbM"},{"ID":"5301","标识":"NGC5301","M标识":"NGC5301","拓展名":"","组件":"","Class":"II 688","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h46m24.2s","赤经D(J2000)":"13.77338888888889","赤纬(J2000)":"+46h6m27s","赤纬D(J2000)":"46.1075","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"4","短轴(分)":"0.8","方位角":"151","详细描述":"considerably faint, large, very much extended","简略描述":"cF, L, vmE"},{"ID":"5302","标识":"NGC5302","M标识":"NGC5302","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h48m49.8s","赤经D(J2000)":"13.813833333333333","赤纬(J2000)":"-30h30m43s","赤纬D(J2000)":"-30.511944444444445","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.7","短轴(分)":"1","方位角":"153","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"5303","标识":"NGC5303","M标识":"NGC5303","拓展名":"","组件":"","Class":"III 681","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc\/P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h47m45.2s","赤经D(J2000)":"13.79588888888889","赤纬(J2000)":"+38h18m16s","赤纬D(J2000)":"38.30444444444444","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"11.1","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"92","详细描述":"","简略描述":"pF, cS, lE, F ** inv"},{"ID":"5304","标识":"NGC5304","M标识":"NGC5304","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h50m1.4s","赤经D(J2000)":"13.833722222222223","赤纬(J2000)":"-30h34m43s","赤纬D(J2000)":"-30.578611111111112","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1","方位角":"146","详细描述":"RA is 13 42 03, the star following is of 12th magnitude, position angle 160 degrees, distance 0.7 arcmin","简略描述":"eF, pS, lE, vF * f"},{"ID":"5305","标识":"NGC5305","M标识":"NGC5305","拓展名":"","组件":"","Class":"III 621","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h47m55.7s","赤经D(J2000)":"13.798805555555555","赤纬(J2000)":"+37h49m34s","赤纬D(J2000)":"37.82611111111112","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"30","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"5306","标识":"NGC5306","M标识":"NGC5306","拓展名":"","组件":"","Class":"II 306","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h49m11.2s","赤经D(J2000)":"13.819777777777778","赤纬(J2000)":"-7h13m24s","赤纬D(J2000)":"-7.223333333333334","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.3","短轴(分)":"1","方位角":"30","详细描述":"very faint, very small, round, mottled but not resolved","简略描述":"vF, vS, R, r"},{"ID":"5307","标识":"NGC5307","M标识":"NGC5307","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h51m3.3s","赤经D(J2000)":"13.850916666666667","赤纬(J2000)":"-51h12m19s","赤纬D(J2000)":"-51.20527777777778","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.3","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, or a very faint, extremely small, double nebula","简略描述":"planetary, or vF, eS, D neb"},{"ID":"5308","标识":"NGC5308","M标识":"NGC5308","拓展名":"","组件":"","Class":"I 255","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h47m0s","赤经D(J2000)":"13.783333333333333","赤纬(J2000)":"+60h58m22s","赤纬D(J2000)":"60.97277777777778","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"3.7","短轴(分)":"0.7","方位角":"60","详细描述":"","简略描述":"B, pL, mE 57°, psbMBEN"},{"ID":"5309","标识":"NGC5309","M标识":"NGC5309","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h49m55s","赤经D(J2000)":"13.831944444444444","赤纬(J2000)":"-15h46m18s","赤纬D(J2000)":"-15.771666666666668","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, round, between a star and a double star","简略描述":"vF, pS, R, bet * and D *"},{"ID":"5310","标识":"NGC5310","M标识":"NGC5310","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h49m47.8s","赤经D(J2000)":"13.829944444444445","赤纬(J2000)":"+0h4m10s","赤纬D(J2000)":"0.06944444444444445","可见光星等V":"99","摄影(蓝光)星等B":"12.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* 12 in F neb"},{"ID":"5311","标识":"NGC5311","M标识":"NGC5311","拓展名":"","组件":"","Class":"II 710","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h48m55.8s","赤经D(J2000)":"13.8155","赤纬(J2000)":"+39h59m11s","赤纬D(J2000)":"39.98638888888889","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.6","短轴(分)":"2.3","方位角":"110","详细描述":"considerably faint, considerably small, round, suddenly brighter middle, western of 2","简略描述":"cF, cS, R, sbM, p of 2"},{"ID":"5312","标识":"NGC5312","M标识":"NGC5312","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h49m50.5s","赤经D(J2000)":"13.830694444444445","赤纬(J2000)":"+33h37m20s","赤纬D(J2000)":"33.62222222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"36","详细描述":"very faint, round, stellar, 1st of 4","简略描述":"vF, R, stellar, 1st of 4"},{"ID":"5313","标识":"NGC5313","M标识":"NGC5313","拓展名":"","组件":"","Class":"II 711","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h49m44.3s","赤经D(J2000)":"13.828972222222221","赤纬(J2000)":"+39h59m7s","赤纬D(J2000)":"39.98527777777778","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.7","短轴(分)":"1","方位角":"43","详细描述":"pretty bright, pretty small, very little extended, gradually a little brighter middle, eastern of 2","简略描述":"pB, pS, vlE, glbM, f of 2"},{"ID":"5314","标识":"NGC5314","M标识":"NGC5314","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"13h46m11.1s","赤经D(J2000)":"13.76975","赤纬(J2000)":"+70h20m23s","赤纬D(J2000)":"70.33972222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.5","方位角":"90","详细描述":"","简略描述":"vF, eS, stellar, eF * v close"},{"ID":"5315","标识":"NGC5315","M标识":"NGC5315","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"圆规座","星座(En)":"CIR","赤经(J2000)":"13h53m57.1s","赤经D(J2000)":"13.899194444444444","赤纬(J2000)":"-66h30m48s","赤纬D(J2000)":"-66.51333333333334","可见光星等V":"9.8","摄影(蓝光)星等B":"13","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.23","短轴(分)":"","方位角":"","详细描述":"","简略描述":"planetary, stellar = 10.5 mag"},{"ID":"5316","标识":"NGC5316","M标识":"NGC5316","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1p","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h54m0s","赤经D(J2000)":"13.9","赤纬(J2000)":"-61h51m0s","赤纬D(J2000)":"-61.85","可见光星等V":"6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty compressed, stars of 11th magnitude","简略描述":"Cl, pL, pC, st 11"},{"ID":"5317","标识":"NGC5317","M标识":"NGC5317","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h56m11.9s","赤经D(J2000)":"13.93663888888889","赤纬(J2000)":"+5h0m56s","赤纬D(J2000)":"5.015555555555555","可见光星等V":"10.5","摄影(蓝光)星等B":"11.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"6.8","短轴(分)":"4.4","方位角":"30","详细描述":"very faint, very large, round, very gradually brighter middle","简略描述":"vF, vL, R, vgbM"},{"ID":"5318","标识":"NGC5318","M标识":"NGC5318","拓展名":"","组件":"","Class":"III 422","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h50m35.9s","赤经D(J2000)":"13.843305555555556","赤纬(J2000)":"+33h42m19s","赤纬D(J2000)":"33.70527777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"165","详细描述":"faint, small, round, pretty suddenly brighter middle, 2nd of 4","简略描述":"F, S, R, psbM, 2nd of 4"},{"ID":"5319","标识":"NGC5319","M标识":"NGC5319","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h50m40.5s","赤经D(J2000)":"13.844583333333334","赤纬(J2000)":"+33h45m42s","赤纬D(J2000)":"33.76166666666666","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"56","详细描述":"","简略描述":"vF, R, n of III 423, 3rd of 4"},{"ID":"5320","标识":"NGC5320","M标识":"NGC5320","拓展名":"","组件":"","Class":"II 669","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h50m20.2s","赤经D(J2000)":"13.838944444444445","赤纬(J2000)":"+41h21m58s","赤纬D(J2000)":"41.36611111111111","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.6","短轴(分)":"1.7","方位角":"18","详细描述":"considerably faint, pretty large, round, gradually brighter middle","简略描述":"cF, pL, R, gbM"},{"ID":"5321","标识":"NGC5321","M标识":"NGC5321","拓展名":"","组件":"","Class":"III 423","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h50m43.6s","赤经D(J2000)":"13.845444444444444","赤纬(J2000)":"+33h37m59s","赤纬D(J2000)":"33.63305555555556","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"86","详细描述":"","简略描述":"eF, pL, R, svmbM *, 4th of 4"},{"ID":"5322","标识":"NGC5322","M标识":"NGC5322","拓展名":"","组件":"","Class":"I 256","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h49m14.9s","赤经D(J2000)":"13.820805555555555","赤纬(J2000)":"+60h11m25s","赤纬D(J2000)":"60.19027777777777","可见光星等V":"10.2","摄影(蓝光)星等B":"11.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"6","短轴(分)":"4.1","方位角":"83","详细描述":"very bright, pretty large, irregularly round, pretty suddenly much brighter middle","简略描述":"vB, pL, iR, psmbM"},{"ID":"5323","标识":"NGC5323","M标识":"NGC5323","拓展名":"","组件":"","Class":"II 899","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"13h45m36s","赤经D(J2000)":"13.76","赤纬(J2000)":"+76h49m42s","赤纬D(J2000)":"76.82833333333333","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"163","详细描述":"very faint, pretty small, a little extended 0°±","简略描述":"vF, pS, lE 0° ±"},{"ID":"5324","标识":"NGC5324","M标识":"NGC5324","拓展名":"","组件":"","Class":"II 307","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h52m5.8s","赤经D(J2000)":"13.868277777777779","赤纬(J2000)":"-6h3m29s","赤纬D(J2000)":"-6.058055555555556","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.3","短轴(分)":"2.1","方位角":"0","详细描述":"considerably faint, large, irregularly round, brighter middle","简略描述":"cF, L, iR, bM"},{"ID":"5325","标识":"NGC5325","M标识":"NGC5325","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h50m54s","赤经D(J2000)":"13.848333333333334","赤纬(J2000)":"+38h16m29s","赤纬D(J2000)":"38.27472222222222","可见光星等V":"15.3","摄影(蓝光)星等B":"16","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"91","详细描述":"most extremely faint, pretty small, round, very difficult, 2 bright stars near","简略描述":"eeF, pS, R, v diffic, 2 B st nr"},{"ID":"5326","标识":"NGC5326","M标识":"NGC5326","拓展名":"","组件":"","Class":"II 712","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h50m50.5s","赤经D(J2000)":"13.847361111111113","赤纬(J2000)":"+39h34m31s","赤纬D(J2000)":"39.57527777777778","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.2","短轴(分)":"1.2","方位角":"137","详细描述":"considerably faint, small, very little extended, suddenly brighter middle","简略描述":"cF, S, vlE, sbM"},{"ID":"5327","标识":"NGC5327","M标识":"NGC5327","拓展名":"","组件":"","Class":"II 685","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h52m4.1s","赤经D(J2000)":"13.867805555555556","赤纬(J2000)":"-2h12m23s","赤纬D(J2000)":"-2.206388888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.9","短轴(分)":"1.6","方位角":"90","详细描述":"faint, pretty small, round, 2 stars to west","简略描述":"F, pS, R, 2 st p"},{"ID":"5328","标识":"NGC5328","M标识":"NGC5328","拓展名":"","组件":"","Class":"III 923","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h52m53.4s","赤经D(J2000)":"13.8815","赤纬(J2000)":"-28h29m21s","赤纬D(J2000)":"-28.489166666666666","可见光星等V":"11.6","摄影(蓝光)星等B":"12.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"87","详细描述":"pretty bright, small, round, suddenly a little brighter middle","简略描述":"pB, S, R, slbM"},{"ID":"5329","标识":"NGC5329","M标识":"NGC5329","拓展名":"","组件":"","Class":"III 549","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h52m10s","赤经D(J2000)":"13.869444444444445","赤纬(J2000)":"+2h19m32s","赤纬D(J2000)":"2.3255555555555554","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"faint, very small, round, pretty suddenly brighter middle","简略描述":"F, vS, R, psbM"},{"ID":"5330","标识":"NGC5330","M标识":"NGC5330","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h52m59.2s","赤经D(J2000)":"13.883111111111111","赤纬(J2000)":"-28h28m14s","赤纬D(J2000)":"-28.470555555555553","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"6","详细描述":"","简略描述":"eeF, S, R, v diffic, nf 3676"},{"ID":"5331","标识":"NGC5331","M标识":"NGC5331","拓展名":"","组件":"2","Class":"III 929","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h52m16s","赤经D(J2000)":"13.871111111111112","赤纬(J2000)":"+2h6m4s","赤纬D(J2000)":"2.1011111111111114","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"0","详细描述":"very faint, small, extended 0°, partially resolved (some stars seen)","简略描述":"vF, S, E 0°, rr"},{"ID":"5332","标识":"NGC5332","M标识":"NGC5332","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h52m7.9s","赤经D(J2000)":"13.868861111111112","赤纬(J2000)":"+16h58m11s","赤纬D(J2000)":"16.96972222222222","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"5333","标识":"NGC5333","M标识":"NGC5333","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h54m24.1s","赤经D(J2000)":"13.906694444444446","赤纬(J2000)":"-48h30m46s","赤纬D(J2000)":"-48.51277777777778","可见光星等V":"10.7","摄影(蓝光)星等B":"11.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.9","短轴(分)":"1","方位角":"52","详细描述":"very faint, very small, round, 8th magnitude star to east","简略描述":"vF, vS, R, * 8 f"},{"ID":"5334","标识":"NGC5334","M标识":"NGC5334","拓展名":"","组件":"","Class":"III 665","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h52m54.5s","赤经D(J2000)":"13.881805555555555","赤纬(J2000)":"-1h6m49s","赤纬D(J2000)":"-1.113611111111111","可见光星等V":"11.3","摄影(蓝光)星等B":"12","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"4.2","短轴(分)":"3","方位角":"21","详细描述":"considerably faint, very large, round, a little brighter middle, mottled but not resolved","简略描述":"cF, vL, R, lbM, r"},{"ID":"5335","标识":"NGC5335","M标识":"NGC5335","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h52m56.5s","赤经D(J2000)":"13.882361111111111","赤纬(J2000)":"+2h48m53s","赤纬D(J2000)":"2.814722222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.1","短轴(分)":"1.4","方位角":"90","详细描述":"faint, irregularly round","简略描述":"F, iR"},{"ID":"5336","标识":"NGC5336","M标识":"NGC5336","拓展名":"","组件":"","Class":"II 670","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h52m9.8s","赤经D(J2000)":"13.869388888888889","赤纬(J2000)":"+43h14m35s","赤纬D(J2000)":"43.24305555555556","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1","方位角":"109","详细描述":"considerably faint, pretty large, round, pretty suddenly brighter middle","简略描述":"cF, pL, R, psbM"},{"ID":"5337","标识":"NGC5337","M标识":"NGC5337","拓展名":"","组件":"","Class":"III 698","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h52m23s","赤经D(J2000)":"13.873055555555556","赤纬(J2000)":"+39h41m17s","赤纬D(J2000)":"39.68805555555555","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"20","详细描述":"very faint, small, irregularly round, 7th magnitude star to west","简略描述":"vF, S, iR, * 7 p"},{"ID":"5338","标识":"NGC5338","M标识":"NGC5338","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h53m26.5s","赤经D(J2000)":"13.890694444444444","赤纬(J2000)":"+5h12m28s","赤纬D(J2000)":"5.207777777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"0.9","方位角":"97","详细描述":"","简略描述":"vF, E pf, 4' f D *"},{"ID":"5339","标识":"NGC5339","M标识":"NGC5339","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h54m0s","赤经D(J2000)":"13.9","赤纬(J2000)":"-7h55m50s","赤纬D(J2000)":"-7.930555555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"15","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"59","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"5340","标识":"NGC5340","M标识":"NGC5340","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"13h48m59.8s","赤经D(J2000)":"13.816611111111111","赤纬(J2000)":"+72h39m16s","赤纬D(J2000)":"72.65444444444445","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"85","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"5341","标识":"NGC5341","M标识":"NGC5341","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h52m32.1s","赤经D(J2000)":"13.875583333333333","赤纬(J2000)":"+37h49m1s","赤纬D(J2000)":"37.816944444444445","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"164","详细描述":"","简略描述":"lE, bM, sp h 1697"},{"ID":"5342","标识":"NGC5342","M标识":"NGC5342","拓展名":"","组件":"","Class":"III 849","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h51m25.9s","赤经D(J2000)":"13.857194444444444","赤纬(J2000)":"+59h51m50s","赤纬D(J2000)":"59.86388888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"152","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"5343","标识":"NGC5343","M标识":"NGC5343","拓展名":"","组件":"","Class":"II 308","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h54m11.7s","赤经D(J2000)":"13.90325","赤纬(J2000)":"-7h35m18s","赤纬D(J2000)":"-7.588333333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"50","详细描述":"very faint, small, round, a little brighter middle","简略描述":"vF, S, R, lbM"},{"ID":"5344","标识":"NGC5344","M标识":"NGC5344","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"13h50m12s","赤经D(J2000)":"13.836666666666668","赤纬(J2000)":"+73h57m12s","赤纬D(J2000)":"73.95333333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"84","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"5345","标识":"NGC5345","M标识":"NGC5345","拓展名":"","组件":"","Class":"II 686","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h54m14.1s","赤经D(J2000)":"13.903916666666667","赤纬(J2000)":"-1h26m9s","赤纬D(J2000)":"-1.4358333333333333","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.5","方位角":"176","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"5346","标识":"NGC5346","M标识":"NGC5346","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h53m2s","赤经D(J2000)":"13.883888888888889","赤纬(J2000)":"+39h34m51s","赤纬D(J2000)":"39.58083333333334","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2","短轴(分)":"0.8","方位角":"158","详细描述":"extremely faint, pretty large, irregularly round, gradually a little brighter middle, mottled but not resolved?","简略描述":"eF, pL, irrR, glbM, r?"},{"ID":"5347","标识":"NGC5347","M标识":"NGC5347","拓展名":"","组件":"","Class":"II 424","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h53m18s","赤经D(J2000)":"13.888333333333334","赤纬(J2000)":"+33h29m27s","赤纬D(J2000)":"33.490833333333335","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"130","详细描述":"pretty faint, considerably large, round, a little brighter middle","简略描述":"pF, cL, R, lbM"},{"ID":"5348","标识":"NGC5348","M标识":"NGC5348","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h54m11.1s","赤经D(J2000)":"13.903083333333333","赤纬(J2000)":"+5h13m38s","赤纬D(J2000)":"5.227222222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.5","短轴(分)":"0.5","方位角":"177","详细描述":"very faint, much extended north-south","简略描述":"vF, mE ns"},{"ID":"5349","标识":"NGC5349","M标识":"NGC5349","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h53m13.1s","赤经D(J2000)":"13.886972222222221","赤纬(J2000)":"+37h52m59s","赤纬D(J2000)":"37.88305555555556","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"76","详细描述":"","简略描述":"bM, sp 1697"},{"ID":"5350","标识":"NGC5350","M标识":"NGC5350","拓展名":"","组件":"","Class":"II 713","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h53m21.5s","赤经D(J2000)":"13.889305555555556","赤纬(J2000)":"+40h21m50s","赤纬D(J2000)":"40.36388888888889","可见光星等V":"11.3","摄影(蓝光)星等B":"12.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.2","短轴(分)":"2.3","方位角":"40","详细描述":"considerably faint, prettylarge, brighter middle, 7th magnitude star to west, 1st of 4","简略描述":"cF, pL, bM, * 7 p, 1st of 4"},{"ID":"5351","标识":"NGC5351","M标识":"NGC5351","拓展名":"","组件":"","Class":"II 697","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h53m28s","赤经D(J2000)":"13.89111111111111","赤纬(J2000)":"+37h54m54s","赤纬D(J2000)":"37.915","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.9","短轴(分)":"1.6","方位角":"100","详细描述":"considerably faint, large, a little extended 90°, very gradually brighter middle","简略描述":"cF, L, lE 90°, vgbM"},{"ID":"5352","标识":"NGC5352","M标识":"NGC5352","拓展名":"","组件":"","Class":"II 415","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h53m38.3s","赤经D(J2000)":"13.893972222222223","赤纬(J2000)":"+36h8m3s","赤纬D(J2000)":"36.134166666666665","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1","方位角":"58","详细描述":"considerably faint, small, round, a little brighter middle, star 90","简略描述":"cF, S, R, lbM, * nf 90\""},{"ID":"5353","标识":"NGC5353","M标识":"NGC5353","拓展名":"","组件":"","Class":"II 714","业余排名":"11","中文名":"NGC 5353星系群","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h53m26.7s","赤经D(J2000)":"13.890749999999999","赤纬(J2000)":"+40h16m59s","赤纬D(J2000)":"40.283055555555556","可见光星等V":"11","摄影(蓝光)星等B":"12","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"2.2","短轴(分)":"1.1","方位角":"145","详细描述":"pretty bright, small, round, 2nd of 4","简略描述":"pB, S, R, 2nd of 4"},{"ID":"5354","标识":"NGC5354","M标识":"NGC5354","拓展名":"","组件":"","Class":"II 715","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h53m26.7s","赤经D(J2000)":"13.890749999999999","赤纬(J2000)":"+40h18m11s","赤纬D(J2000)":"40.30305555555555","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"72","详细描述":"pretty faint, small, round, 3rd of 4","简略描述":"pF, S, R, 3rd of 4"},{"ID":"5355","标识":"NGC5355","M标识":"NGC5355","拓展名":"","组件":"","Class":"III 699","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h53m45.5s","赤经D(J2000)":"13.895972222222222","赤纬(J2000)":"+40h20m20s","赤纬D(J2000)":"40.33888888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"35","详细描述":"very faint, pretty small, 4th of 4","简略描述":"vF, pS, 4th of 4"},{"ID":"5356","标识":"NGC5356","M标识":"NGC5356","拓展名":"","组件":"","Class":"III 506","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h54m58.3s","赤经D(J2000)":"13.916194444444445","赤纬(J2000)":"+5h20m0s","赤纬D(J2000)":"5.333333333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.9","短轴(分)":"0.8","方位角":"15","详细描述":"faint, pretty large, very much extended 17°, mottled but not resolved","简略描述":"F, pL, vmE 17°, r"},{"ID":"5357","标识":"NGC5357","M标识":"NGC5357","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h55m59.4s","赤经D(J2000)":"13.933166666666667","赤纬(J2000)":"-30h20m30s","赤纬D(J2000)":"-30.341666666666665","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"23","详细描述":"pretty faint, small, round, gradually a little brighter middle, between two 10th magnitude stars","简略描述":"pF, S, R, glbM, bet 2 st 10"},{"ID":"5358","标识":"NGC5358","M标识":"NGC5358","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h54m0.4s","赤经D(J2000)":"13.900111111111112","赤纬(J2000)":"+40h16m40s","赤纬D(J2000)":"40.27777777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"138","详细描述":"very faint, very small, round, 2 very faint stars involved","简略描述":"vF, vS, R, 2 vF st inv"},{"ID":"5359","标识":"NGC5359","M标识":"NGC5359","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"圆规座","星座(En)":"CIR","赤经(J2000)":"13h59m48s","赤经D(J2000)":"13.996666666666666","赤纬(J2000)":"-70h24m0s","赤纬D(J2000)":"-70.4","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, a little rich, a little compressed, stars of 11th magnitude","简略描述":"Cl, vL, lRi, lC, st 11"},{"ID":"5360","标识":"NGC5360","M标识":"NGC5360","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h55m38.4s","赤经D(J2000)":"13.927333333333333","赤纬(J2000)":"+4h59m0s","赤纬D(J2000)":"4.983333333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"70","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"5361","标识":"NGC5361","M标识":"NGC5361","拓展名":"","组件":"","Class":"III 682","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h54m35.3s","赤经D(J2000)":"13.909805555555556","赤纬(J2000)":"+38h26m58s","赤纬D(J2000)":"38.44944444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"63","详细描述":"extremely faint, considerably small, extended","简略描述":"eF, cS, E"},{"ID":"5362","标识":"NGC5362","M标识":"NGC5362","拓展名":"","组件":"","Class":"II 671","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h54m53.1s","赤经D(J2000)":"13.91475","赤纬(J2000)":"+41h18m49s","赤纬D(J2000)":"41.31361111111111","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.2","短轴(分)":"1","方位角":"88","详细描述":"pretty bright, pretty large, extended","简略描述":"pB, pL, E"},{"ID":"5363","标识":"NGC5363","M标识":"NGC5363","拓展名":"","组件":"","Class":"I 6","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h56m7.1s","赤经D(J2000)":"13.935305555555555","赤纬(J2000)":"+5h15m14s","赤纬D(J2000)":"5.253888888888889","可见光星等V":"10.1","摄影(蓝光)星等B":"11.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"4.1","短轴(分)":"2.6","方位角":"135","详细描述":"bright, pretty large, round, pretty suddenly brighter middle, 8th magnitude star to northeast","简略描述":"B, pL, R, psbM, * 8 nf"},{"ID":"5364","标识":"NGC5364","M标识":"NGC5364","拓展名":"","组件":"","Class":"II 534","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h56m11.9s","赤经D(J2000)":"13.93663888888889","赤纬(J2000)":"+5h0m56s","赤纬D(J2000)":"5.015555555555555","可见光星等V":"10.5","摄影(蓝光)星等B":"11.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"6.8","短轴(分)":"4.4","方位角":"30","详细描述":"considerably faint, large, round, gradually brighter middle","简略描述":"cF, L, R, gbM"},{"ID":"5365","标识":"NGC5365","M标识":"NGC5365","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h57m50.5s","赤经D(J2000)":"13.964027777777778","赤纬(J2000)":"-43h55m55s","赤纬D(J2000)":"-43.93194444444444","可见光星等V":"11.4","摄影(蓝光)星等B":"12.5","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.8","短轴(分)":"2.1","方位角":"7","详细描述":"pretty bright, considerably small, round, pretty gradually brighter middle, among stars","简略描述":"pB, cS, R, pgbM, am st"},{"ID":"5366","标识":"NGC5366","M标识":"NGC5366","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h56m24.9s","赤经D(J2000)":"13.94025","赤纬(J2000)":"-0h14m51s","赤纬D(J2000)":"-0.2475","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"57","详细描述":"small, round, 9th magnitude star 2 arcmin distant","简略描述":"S, R, * 9 dist 2'"},{"ID":"5367","标识":"NGC5367","M标识":"NGC5367","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h57m43.8s","赤经D(J2000)":"13.962166666666667","赤纬(J2000)":"-39h58m42s","赤纬D(J2000)":"-39.97833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"2","方位角":"","详细描述":"a remarkable object, very bright, very large, very little then very suddenly much brighter middle like a double star","简略描述":"!, vB, vL, vl, vsmbM **"},{"ID":"5368","标识":"NGC5368","M标识":"NGC5368","拓展名":"","组件":"","Class":"III 786","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h54m29.1s","赤经D(J2000)":"13.908083333333334","赤纬(J2000)":"+54h19m51s","赤纬D(J2000)":"54.33083333333334","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"10","详细描述":"faint, considerably small, round, stellar, 16th magnitude star to northeast","简略描述":"F, cS, R, stellar, * 16 nf"},{"ID":"5369","标识":"NGC5369","M标识":"NGC5369","拓展名":"","组件":"","Class":"III 285","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h56m37.7s","赤经D(J2000)":"13.943805555555556","赤纬(J2000)":"-5h28m11s","赤纬D(J2000)":"-5.469722222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"114","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"5370","标识":"NGC5370","M标识":"NGC5370","拓展名":"","组件":"","Class":"II 843","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h54m9.1s","赤经D(J2000)":"13.902527777777777","赤纬(J2000)":"+60h40m43s","赤纬D(J2000)":"60.67861111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"faint, small","简略描述":"F, S"},{"ID":"5371","标识":"NGC5371","M标识":"NGC5371","拓展名":"","组件":"","Class":"II 716","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h55m40s","赤经D(J2000)":"13.927777777777777","赤纬(J2000)":"+40h27m44s","赤纬D(J2000)":"40.46222222222222","可见光星等V":"10.6","摄影(蓝光)星等B":"11.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4.2","短轴(分)":"3.4","方位角":"8","详细描述":"pretty bright, large, round, brighter middle and faint nucleus","简略描述":"pB, L, R, bMFN"},{"ID":"5372","标识":"NGC5372","M标识":"NGC5372","拓展名":"","组件":"","Class":"III 809","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h54m45.9s","赤经D(J2000)":"13.91275","赤纬(J2000)":"+58h40m1s","赤纬D(J2000)":"58.66694444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"140","详细描述":"considerably faint, small, extended, double star involved?","简略描述":"cF, S, E, ? ** inv"},{"ID":"5373","标识":"NGC5373","M标识":"NGC5373","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h57m7.4s","赤经D(J2000)":"13.952055555555555","赤纬(J2000)":"+5h15m9s","赤纬D(J2000)":"5.2525","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"174","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stell"},{"ID":"5374","标识":"NGC5374","M标识":"NGC5374","拓展名":"","组件":"","Class":"II 889","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h57m29.5s","赤经D(J2000)":"13.958194444444445","赤纬(J2000)":"+6h5m49s","赤纬D(J2000)":"6.0969444444444445","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1.5","方位角":"54","详细描述":"considerably faint, pretty large, round, very gradually brighter middle, 11th magnitude star to northwest","简略描述":"cF, pL, R, vgbM, * 11 np"},{"ID":"5375","标识":"NGC5375","M标识":"NGC5375","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h56m55.9s","赤经D(J2000)":"13.94886111111111","赤纬(J2000)":"+29h9m51s","赤纬D(J2000)":"29.164166666666667","可见光星等V":"11.5","摄影(蓝光)星等B":"12.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.3","短轴(分)":"2.8","方位角":"0","详细描述":"pretty bright, pretty large, round, a little brighter middle","简略描述":"pB, pL, R, lbM"},{"ID":"5376","标识":"NGC5376","M标识":"NGC5376","拓展名":"","组件":"","Class":"I 238, II 844","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h55m15.8s","赤经D(J2000)":"13.921055555555554","赤纬(J2000)":"+59h30m25s","赤纬D(J2000)":"59.50694444444444","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.1","短轴(分)":"1.3","方位角":"70","详细描述":"considerably bright, pretty large, very little extended, very gradually much brighter middle","简略描述":"cB, pL, vlE, vgmbM"},{"ID":"5377","标识":"NGC5377","M标识":"NGC5377","拓展名":"","组件":"","Class":"I 187","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h56m16.7s","赤经D(J2000)":"13.937972222222223","赤纬(J2000)":"+47h14m8s","赤纬D(J2000)":"47.23555555555556","可见光星等V":"11.3","摄影(蓝光)星等B":"12.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4.7","短轴(分)":"2.4","方位角":"23","详细描述":"","简略描述":"B, L, mE 42°, smbMN"},{"ID":"5378","标识":"NGC5378","M标识":"NGC5378","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h56m50.9s","赤经D(J2000)":"13.947472222222222","赤纬(J2000)":"+37h47m50s","赤纬D(J2000)":"37.79722222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2.7","短轴(分)":"2.2","方位角":"90","详细描述":"pretty bright, a little extended, very gradually a little brighter middle","简略描述":"pB, lE, vglbM"},{"ID":"5379","标识":"NGC5379","M标识":"NGC5379","拓展名":"","组件":"","Class":"I 239","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h55m34.4s","赤经D(J2000)":"13.926222222222222","赤纬(J2000)":"+59h44m36s","赤纬D(J2000)":"59.74333333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"0.7","方位角":"60","详细描述":"pretty bright, pretty small, extended, much brighter middle","简略描述":"pB, pS, E, mbM"},{"ID":"5380","标识":"NGC5380","M标识":"NGC5380","拓展名":"","组件":"","Class":"II 698","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h56m56.7s","赤经D(J2000)":"13.949083333333334","赤纬(J2000)":"+37h36m37s","赤纬D(J2000)":"37.61027777777778","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"1.7","方位角":"","详细描述":"faint, considerably small, round, suddenly much brighter middle","简略描述":"F, cS, R, smbM"},{"ID":"5381","标识":"NGC5381","M标识":"NGC5381","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h0m42s","赤经D(J2000)":"14.011666666666667","赤纬(J2000)":"-59h33m0s","赤纬D(J2000)":"-59.55","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"11","短轴(分)":"","方位角":"","详细描述":"a cluster, rich, very compressed, pretty large, stars from 11th to 12th magnitude","简略描述":"Cl, Ri, vC, pL, st 11…12"},{"ID":"5382","标识":"NGC5382","M标识":"NGC5382","拓展名":"","组件":"","Class":"III 546","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h58m14.8s","赤经D(J2000)":"13.970777777777778","赤纬(J2000)":"+6h15m29s","赤纬D(J2000)":"6.258055555555556","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"25","详细描述":"very faint, very small, mottled but not resolved, stellar","简略描述":"vF, vS, r, stellar"},{"ID":"5383","标识":"NGC5383","M标识":"NGC5383","拓展名":"","组件":"","Class":"I 181","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h57m4.9s","赤经D(J2000)":"13.95136111111111","赤纬(J2000)":"+41h50m46s","赤纬D(J2000)":"41.846111111111114","可见光星等V":"11.4","摄影(蓝光)星等B":"12.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.2","短轴(分)":"2.7","方位角":"85","详细描述":"considerably bright, considerably large, round, gradually brighter middle","简略描述":"cB, cL, R, gbM"},{"ID":"5384","标识":"NGC5384","M标识":"NGC5384","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h58m12.8s","赤经D(J2000)":"13.970222222222223","赤纬(J2000)":"+6h31m5s","赤纬D(J2000)":"6.518055555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"56","详细描述":"faint, very small, stellar","简略描述":"F, vS, stell"},{"ID":"5385","标识":"NGC5385","M标识":"NGC5385","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"13h52m31.8s","赤经D(J2000)":"13.8755","赤纬(J2000)":"+76h9m48s","赤纬D(J2000)":"76.16333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, small","简略描述":"Cl, P, S"},{"ID":"5386","标识":"NGC5386","M标识":"NGC5386","拓展名":"","组件":"","Class":"III 547","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h58m22.2s","赤经D(J2000)":"13.972833333333334","赤纬(J2000)":"+6h20m19s","赤纬D(J2000)":"6.338611111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1","短轴(分)":"0.4","方位角":"51","详细描述":"very faint, very small, binuclear, mottled but not resolved, stellar","简略描述":"vF, vS, biN, r, stellar"},{"ID":"5387","标识":"NGC5387","M标识":"NGC5387","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h58m24.7s","赤经D(J2000)":"13.973527777777777","赤纬(J2000)":"+6h4m14s","赤纬D(J2000)":"6.070555555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"22","详细描述":"very faint ray, 2 arcmin long","简略描述":"vF ray, 2' l"},{"ID":"5388","标识":"NGC5388","M标识":"NGC5388","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h58m57.9s","赤经D(J2000)":"13.98275","赤纬(J2000)":"-14h9m3s","赤纬D(J2000)":"-14.150833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, very gradually brighter middle","简略描述":"F, S, R, vgbM"},{"ID":"5389","标识":"NGC5389","M标识":"NGC5389","拓展名":"","组件":"","Class":"I 240","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h56m6.4s","赤经D(J2000)":"13.93511111111111","赤纬(J2000)":"+59h44m30s","赤纬D(J2000)":"59.74166666666667","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"4.1","短轴(分)":"1.1","方位角":"3","详细描述":"pretty bright, pretty large, extended, much brighter middle and nucleus","简略描述":"pB, pL, E, mbMN"},{"ID":"5390","标识":"NGC5390","M标识":"NGC5390","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h55m40s","赤经D(J2000)":"13.927777777777777","赤纬(J2000)":"+40h27m44s","赤纬D(J2000)":"40.46222222222222","可见光星等V":"10.6","摄影(蓝光)星等B":"11.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4.2","短轴(分)":"3.4","方位角":"8","详细描述":"pretty bright, large, round, brighter middle and faint nucleus","简略描述":"F, L, vgbM, * 9 nf"},{"ID":"5391","标识":"NGC5391","M标识":"NGC5391","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h57m36.5s","赤经D(J2000)":"13.960138888888888","赤纬(J2000)":"+46h19m26s","赤纬D(J2000)":"46.323888888888895","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, star close","简略描述":"F, vS, * close"},{"ID":"5392","标识":"NGC5392","M标识":"NGC5392","拓展名":"","组件":"","Class":"III 666","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h59m24.9s","赤经D(J2000)":"13.99025","赤纬(J2000)":"-3h12m32s","赤纬D(J2000)":"-3.208888888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"135","详细描述":"very faint, considerably small, round, gradually brighter middle","简略描述":"vF, cS, R, gbM"},{"ID":"5393","标识":"NGC5393","M标识":"NGC5393","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"14h0m32s","赤经D(J2000)":"14.008888888888889","赤纬(J2000)":"-28h52m30s","赤纬D(J2000)":"-28.875","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"153","详细描述":"very faint, small, round, gradually a little brighter middle","简略描述":"vF, S, R, glbM"},{"ID":"5394","标识":"NGC5394","M标识":"NGC5394","拓展名":"","组件":"","Class":"I 191","业余排名":"11","中文名":"苍鹭星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h58m33.7s","赤经D(J2000)":"13.976027777777778","赤纬(J2000)":"+37h27m13s","赤纬D(J2000)":"37.453611111111115","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.9","短轴(分)":"1.3","方位角":"0","详细描述":"considerably faint, small, northwestern of 2","简略描述":"cF, S, np of 2"},{"ID":"5395","标识":"NGC5395","M标识":"NGC5395","拓展名":"","组件":"","Class":"I 190","业余排名":"11","中文名":"苍鹭星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h58m37.9s","赤经D(J2000)":"13.977194444444445","赤纬(J2000)":"+37h25m31s","赤纬D(J2000)":"37.42527777777777","可见光星等V":"11.4","摄影(蓝光)星等B":"12.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.7","短轴(分)":"1.3","方位角":"2","详细描述":"considerably faint, small, northwestern of 2","简略描述":"cF, cL, E 15°, lbM, sf of 2"},{"ID":"5396","标识":"NGC5396","M标识":"NGC5396","拓展名":"","组件":"","Class":"III 125","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h56m55.9s","赤经D(J2000)":"13.94886111111111","赤纬(J2000)":"+29h9m51s","赤纬D(J2000)":"29.164166666666667","可见光星等V":"11.5","摄影(蓝光)星等B":"12.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.3","短轴(分)":"2.8","方位角":"0","详细描述":"pretty bright, pretty large, round, a little brighter middle","简略描述":"vF, S, iR, sbM *"},{"ID":"5397","标识":"NGC5397","M标识":"NGC5397","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h1m10.5s","赤经D(J2000)":"14.019583333333333","赤纬(J2000)":"-33h56m44s","赤纬D(J2000)":"-33.94555555555555","可见光星等V":"11.6","摄影(蓝光)星等B":"12.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"1.4","短轴(分)":"1","方位角":"60","详细描述":"very faint, small, round, gradually brighter middle","简略描述":"vF, S, R, gbM"},{"ID":"5398","标识":"NGC5398","M标识":"NGC5398","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm\/P","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h1m21.7s","赤经D(J2000)":"14.022694444444445","赤纬(J2000)":"-33h3m47s","赤纬D(J2000)":"-33.06305555555555","可见光星等V":"12.2","摄影(蓝光)星等B":"12.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.8","短轴(分)":"1.7","方位角":"172","详细描述":"pretty bright, pretty large, round, very gradually brighter middle","简略描述":"pB, pL, R, vgbM"},{"ID":"5399","标识":"NGC5399","M标识":"NGC5399","拓展名":"","组件":"","Class":"III 411","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h59m31.2s","赤经D(J2000)":"13.991999999999999","赤纬(J2000)":"+34h46m24s","赤纬D(J2000)":"34.77333333333333","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"88","详细描述":"extremely faint, very small, pretty much extended 90°","简略描述":"eF, vS, pmE 90°"},{"ID":"5400","标识":"NGC5400","M标识":"NGC5400","拓展名":"","组件":"","Class":"III 667","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h0m37.2s","赤经D(J2000)":"14.010333333333334","赤纬(J2000)":"-2h51m27s","赤纬D(J2000)":"-2.8575","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"80","详细描述":"very faint, considerably small","简略描述":"vF, cS"},{"ID":"5401","标识":"NGC5401","M标识":"NGC5401","拓展名":"","组件":"","Class":"III 412","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h59m43.5s","赤经D(J2000)":"13.995416666666666","赤纬(J2000)":"+36h14m17s","赤纬D(J2000)":"36.238055555555555","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.3","方位角":"81","详细描述":"considerably faint, considerably small, extended","简略描述":"cF, cS, E"},{"ID":"5402","标识":"NGC5402","M标识":"NGC5402","拓展名":"","组件":"","Class":"III 810","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h58m16.5s","赤经D(J2000)":"13.97125","赤纬(J2000)":"+59h48m52s","赤纬D(J2000)":"59.81444444444444","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"167","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"5403","标识":"NGC5403","M标识":"NGC5403","拓展名":"","组件":"","Class":"III 683","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h59m50.9s","赤经D(J2000)":"13.997472222222221","赤纬(J2000)":"+38h10m55s","赤纬D(J2000)":"38.18194444444444","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"3.1","短轴(分)":"0.7","方位角":"145","详细描述":"very faint, pretty large, irregular figure","简略描述":"vF, pL, iF"},{"ID":"5404","标识":"NGC5404","M标识":"NGC5404","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h1m7.6s","赤经D(J2000)":"14.018777777777778","赤纬(J2000)":"+0h5m10s","赤纬D(J2000)":"0.08611111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* 12 in neb"},{"ID":"5405","标识":"NGC5405","M标识":"NGC5405","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h1m9.5s","赤经D(J2000)":"14.019305555555556","赤纬(J2000)":"+7h42m7s","赤纬D(J2000)":"7.701944444444445","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, irregular figure, brighter middle","简略描述":"vF, iF, bM"},{"ID":"5406","标识":"NGC5406","M标识":"NGC5406","拓展名":"","组件":"","Class":"II 699","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"14h0m20.1s","赤经D(J2000)":"14.005583333333334","赤纬(J2000)":"+38h54m55s","赤纬D(J2000)":"38.915277777777774","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"120","详细描述":"faint, pretty small, round, a little brighter middle","简略描述":"F, pS, R, lbM"},{"ID":"5407","标识":"NGC5407","M标识":"NGC5407","拓展名":"","组件":"","Class":"III 684","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"14h0m50s","赤经D(J2000)":"14.01388888888889","赤纬(J2000)":"+39h9m24s","赤纬D(J2000)":"39.156666666666666","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"100","详细描述":"very faint, very small, round, brighter middle, in a cluster","简略描述":"vF, vS, R, bM, in Cl"},{"ID":"5408","标识":"NGC5408","M标识":"NGC5408","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h3m21s","赤经D(J2000)":"14.055833333333334","赤纬(J2000)":"-41h22m43s","赤纬D(J2000)":"-41.37861111111111","可见光星等V":"11.6","摄影(蓝光)星等B":"12.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"1.9","短轴(分)":"1","方位角":"62","详细描述":"extremely faint, extended, between 2 very small (faint) stars","简略描述":"eF, E, bet 2 vS st"},{"ID":"5409","标识":"NGC5409","M标识":"NGC5409","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h1m46s","赤经D(J2000)":"14.029444444444445","赤纬(J2000)":"+9h29m26s","赤纬D(J2000)":"9.490555555555554","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"50","详细描述":"","简略描述":"eF, R, III 56 f 26s"},{"ID":"5410","标识":"NGC5410","M标识":"NGC5410","拓展名":"","组件":"","Class":"II 672","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"14h0m54.5s","赤经D(J2000)":"14.015138888888888","赤纬(J2000)":"+40h59m17s","赤纬D(J2000)":"40.988055555555555","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"75","详细描述":"pretty faint, pretty small, brighter middle","简略描述":"pF, pS, bM"},{"ID":"5411","标识":"NGC5411","M标识":"NGC5411","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h1m59.1s","赤经D(J2000)":"14.033083333333334","赤纬(J2000)":"+8h56m16s","赤纬D(J2000)":"8.937777777777779","可见光星等V":"13.3","摄影(蓝光)星等B":"14.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"140","详细描述":"very very faint","简略描述":"vvF"},{"ID":"5412","标识":"NGC5412","M标识":"NGC5412","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"13h57m13.4s","赤经D(J2000)":"13.953722222222222","赤纬(J2000)":"+73h37m2s","赤纬D(J2000)":"73.61722222222221","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"1","方位角":"20","详细描述":"pretty faint, small, round, double star to west","简略描述":"pF, S, R, D * p"},{"ID":"5413","标识":"NGC5413","M标识":"NGC5413","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"13h57m53.5s","赤经D(J2000)":"13.96486111111111","赤纬(J2000)":"+64h54m41s","赤纬D(J2000)":"64.9113888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"45","详细描述":"","简略描述":"pF, pS, R, pslbM, * 7 p 37s"},{"ID":"5414","标识":"NGC5414","M标识":"NGC5414","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h2m3.5s","赤经D(J2000)":"14.034305555555555","赤纬(J2000)":"+9h55m46s","赤纬D(J2000)":"9.929444444444444","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1","短轴(分)":"0.8","方位角":"172","详细描述":"","简略描述":"S, F * in centre, * 10·11 nf"},{"ID":"5415","标识":"NGC5415","M标识":"NGC5415","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"13h56m56.8s","赤经D(J2000)":"13.949111111111112","赤纬(J2000)":"+70h45m18s","赤纬D(J2000)":"70.755","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.6","方位角":"126","详细描述":"extremely faint, very small, round, 2 faint stars near","简略描述":"eF, vS, R, 2 F st nr"},{"ID":"5416","标识":"NGC5416","M标识":"NGC5416","拓展名":"","组件":"","Class":"III 56","业余排名":"14","中文名":"NGC 5416星系群","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h2m11.4s","赤经D(J2000)":"14.0365","赤纬(J2000)":"+9h26m24s","赤纬D(J2000)":"9.44","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"110","详细描述":"extremely faint, very small, extended, mottled but not resolved","简略描述":"eF, vS, E, r"},{"ID":"5417","标识":"NGC5417","M标识":"NGC5417","拓展名":"","组件":"","Class":"III 11","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h2m13s","赤经D(J2000)":"14.036944444444444","赤纬(J2000)":"+8h2m12s","赤纬D(J2000)":"8.036666666666667","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"120","详细描述":"considerably faint, small, round, pretty suddenly brighter middle, star to west","简略描述":"cF, S, R, psbM, * p"},{"ID":"5418","标识":"NGC5418","M标识":"NGC5418","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h2m17.5s","赤经D(J2000)":"14.038194444444445","赤纬(J2000)":"+7h41m2s","赤纬D(J2000)":"7.683888888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"44","详细描述":"very faint, round, brighter middle","简略描述":"vF, R, bM"},{"ID":"5419","标识":"NGC5419","M标识":"NGC5419","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h3m38.7s","赤经D(J2000)":"14.06075","赤纬(J2000)":"-33h58m42s","赤纬D(J2000)":"-33.97833333333333","可见光星等V":"10.8","摄影(蓝光)星等B":"11.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"4.1","短轴(分)":"3.3","方位角":"77","详细描述":"pretty bright, pretty large, round, gradually pretty much brighter middle","简略描述":"pB, pL, R, gpmbM"},{"ID":"5420","标识":"NGC5420","M标识":"NGC5420","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h3m59.8s","赤经D(J2000)":"14.066611111111111","赤纬(J2000)":"-14h37m2s","赤纬D(J2000)":"-14.617222222222223","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"0.7","方位角":"138","详细描述":"faint, pretty small, much extended, cometic","简略描述":"F, pS, mE, com"},{"ID":"5421","标识":"NGC5421","M标识":"NGC5421","拓展名":"A","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"14h1m41.4s","赤经D(J2000)":"14.028166666666667","赤纬(J2000)":"+33h49m36s","赤纬D(J2000)":"33.82666666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"1","方位角":"164","详细描述":"faint, irregularly round, 2 very faint stars involved","简略描述":"F, irrR, 2 vF st inv"},{"ID":"5422","标识":"NGC5422","M标识":"NGC5422","拓展名":"","组件":"","Class":"I 230","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h0m41.8s","赤经D(J2000)":"14.011611111111112","赤纬(J2000)":"+55h9m53s","赤纬D(J2000)":"55.164722222222224","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.9","短轴(分)":"0.7","方位角":"152","详细描述":"pretty bright, small, pretty much extended 45°±, very suddenly very much brighter middle and nucleus","简略描述":"pB, S, pmE 45° ±, vsvmbMN"},{"ID":"5423","标识":"NGC5423","M标识":"NGC5423","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h2m48.5s","赤经D(J2000)":"14.046805555555556","赤纬(J2000)":"+9h20m31s","赤纬D(J2000)":"9.341944444444445","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"75","详细描述":"","简略描述":"vF, R, * in centre"},{"ID":"5424","标识":"NGC5424","M标识":"NGC5424","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h2m55.7s","赤经D(J2000)":"14.048805555555555","赤纬(J2000)":"+9h25m16s","赤纬D(J2000)":"9.421111111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"110","详细描述":"","简略描述":"vF, R, * in centre"},{"ID":"5425","标识":"NGC5425","M标识":"NGC5425","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h0m47.9s","赤经D(J2000)":"14.013305555555556","赤纬(J2000)":"+48h26m35s","赤纬D(J2000)":"48.44305555555555","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.9","短轴(分)":"0.5","方位角":"127","详细描述":"much extended 290 degrees","简略描述":"eF, S, lE, B * 4' n"},{"ID":"5426","标识":"NGC5426","M标识":"NGC5426","拓展名":"","组件":"","Class":"II 310","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h3m24.9s","赤经D(J2000)":"14.056916666666668","赤纬(J2000)":"-6h4m8s","赤纬D(J2000)":"-6.068888888888889","可见光星等V":"12.1","摄影(蓝光)星等B":"12.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3","短轴(分)":"1.7","方位角":"172","详细描述":"pretty faint, considerably large, round, gradually much brighter middle, southwestern of 2","简略描述":"pF, cL, R, gmbM, sp of 2"},{"ID":"5427","标识":"NGC5427","M标识":"NGC5427","拓展名":"","组件":"","Class":"II 309","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h3m26s","赤经D(J2000)":"14.057222222222222","赤纬(J2000)":"-6h1m51s","赤纬D(J2000)":"-6.030833333333334","可见光星等V":"11.4","摄影(蓝光)星等B":"11.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.9","短轴(分)":"2.2","方位角":"66","详细描述":"pretty faint, considerably large, round, northeastern of 2","简略描述":"pF, cL, R, nf of 2"},{"ID":"5428","标识":"NGC5428","M标识":"NGC5428","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h3m28s","赤经D(J2000)":"14.057777777777778","赤纬(J2000)":"-5h59m2s","赤纬D(J2000)":"-5.983888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"2 near II 310, one in line with II 309 and II 310"},{"ID":"5429","标识":"NGC5429","M标识":"NGC5429","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h3m33.3s","赤经D(J2000)":"14.05925","赤纬(J2000)":"-6h2m16s","赤纬D(J2000)":"-6.0377777777777775","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"2 near II 310, one in line with II 309 and II 310"},{"ID":"5430","标识":"NGC5430","M标识":"NGC5430","拓展名":"","组件":"","Class":"II 827","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h0m45.6s","赤经D(J2000)":"14.012666666666666","赤纬(J2000)":"+59h19m44s","赤纬D(J2000)":"59.32888888888889","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.3","短轴(分)":"1.3","方位角":"0","详细描述":"pretty bright, small, irregularly extended, much brighter middle","简略描述":"pB, S, iE, mbM"},{"ID":"5431","标识":"NGC5431","M标识":"NGC5431","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h3m7.2s","赤经D(J2000)":"14.052000000000001","赤纬(J2000)":"+9h21m47s","赤纬D(J2000)":"9.363055555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"51","详细描述":"very faint","简略描述":"vF"},{"ID":"5432","标识":"NGC5432","M标识":"NGC5432","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h3m40.5s","赤经D(J2000)":"14.061250000000001","赤纬(J2000)":"-5h58m28s","赤纬D(J2000)":"-5.974444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"5433","标识":"NGC5433","M标识":"NGC5433","拓展名":"","组件":"","Class":"III 653","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"14h2m36.1s","赤经D(J2000)":"14.04336111111111","赤纬(J2000)":"+32h30m37s","赤纬D(J2000)":"32.51027777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"3","详细描述":"very faint, considerably small, a little extended 0°, brighter middle","简略描述":"vF, cS, lE 0°, bM"},{"ID":"5434","标识":"NGC5434","M标识":"NGC5434","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h3m23.1s","赤经D(J2000)":"14.056416666666667","赤纬(J2000)":"+9h26m52s","赤纬D(J2000)":"9.447777777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"33","详细描述":"very faint, large","简略描述":"vF, L"},{"ID":"5435","标识":"NGC5435","M标识":"NGC5435","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h4m0.2s","赤经D(J2000)":"14.066722222222221","赤纬(J2000)":"-5h55m50s","赤纬D(J2000)":"-5.930555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, * 10·11 close f"},{"ID":"5436","标识":"NGC5436","M标识":"NGC5436","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h3m41.1s","赤经D(J2000)":"14.061416666666668","赤纬(J2000)":"+9h34m26s","赤纬D(J2000)":"9.573888888888888","可见光星等V":"13.8","摄影(蓝光)星等B":"14.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"126","详细描述":"","简略描述":"3 vF in a line, 2'-3' dist, n one brightest, nf * 8.6"},{"ID":"5437","标识":"NGC5437","M标识":"NGC5437","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h3m47.3s","赤经D(J2000)":"14.06313888888889","赤纬(J2000)":"+9h31m25s","赤纬D(J2000)":"9.523611111111112","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"0","详细描述":"","简略描述":"3 vF in a line, 2'-3' dist, n one brightest, nf * 8.6"},{"ID":"5438","标识":"NGC5438","M标识":"NGC5438","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h3m47.9s","赤经D(J2000)":"14.063305555555557","赤纬(J2000)":"+9h36m40s","赤纬D(J2000)":"9.61111111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"","简略描述":"3 vF in a line, 2'-3' dist, n one brightest, nf * 8.6"},{"ID":"5439","标识":"NGC5439","M标识":"NGC5439","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"14h1m57.5s","赤经D(J2000)":"14.03263888888889","赤纬(J2000)":"+46h18m41s","赤纬D(J2000)":"46.311388888888885","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"9","详细描述":"very faint, pretty large, considerably extended, between 2 stars","简略描述":"vF, pL, cE, bet 2 st"},{"ID":"5440","标识":"NGC5440","M标识":"NGC5440","拓展名":"","组件":"","Class":"II 416","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"14h3m0.6s","赤经D(J2000)":"14.050166666666668","赤纬(J2000)":"+34h45m24s","赤纬D(J2000)":"34.75666666666667","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.2","短轴(分)":"1","方位角":"50","详细描述":"pretty faint, considerably small, a little extended, brighter middle, 11th magnitude star to southwest","简略描述":"pF, cS, lE, bM, * 11 sp"},{"ID":"5441","标识":"NGC5441","M标识":"NGC5441","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"14h3m11.9s","赤经D(J2000)":"14.053305555555557","赤纬(J2000)":"+34h41m4s","赤纬D(J2000)":"34.68444444444444","可见光星等V":"15.6","摄影(蓝光)星等B":"16.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"5442","标识":"NGC5442","M标识":"NGC5442","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h4m43.2s","赤经D(J2000)":"14.078666666666667","赤纬(J2000)":"-9h42m46s","赤纬D(J2000)":"-9.712777777777777","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"145","详细描述":"very faint, very small, irregularly round","简略描述":"vF, vS, iR"},{"ID":"5443","标识":"NGC5443","M标识":"NGC5443","拓展名":"","组件":"","Class":"II 799","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h2m11.6s","赤经D(J2000)":"14.036555555555555","赤纬(J2000)":"+55h48m52s","赤纬D(J2000)":"55.81444444444444","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.7","短轴(分)":"1","方位角":"34","详细描述":"pretty faint, large, extended","简略描述":"pF, L, E"},{"ID":"5444","标识":"NGC5444","M标识":"NGC5444","拓展名":"","组件":"","Class":"II 417","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"14h3m24.1s","赤经D(J2000)":"14.056694444444446","赤纬(J2000)":"+35h7m57s","赤纬D(J2000)":"35.1325","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.5","短轴(分)":"2","方位角":"90","详细描述":"","简略描述":"pB, pL, ivlE, vsmbM"},{"ID":"5445","标识":"NGC5445","M标识":"NGC5445","拓展名":"","组件":"","Class":"III 413","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"14h3m31.3s","赤经D(J2000)":"14.058694444444445","赤纬(J2000)":"+35h1m29s","赤纬D(J2000)":"35.02472222222222","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"27","详细描述":"faint, 13th magnitude star to west","简略描述":"F, * 13 p"},{"ID":"5446","标识":"NGC5446","M标识":"NGC5446","拓展名":"","组件":"","Class":"III 57","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h3m47.9s","赤经D(J2000)":"14.063305555555557","赤纬(J2000)":"+9h36m40s","赤纬D(J2000)":"9.61111111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"5447","标识":"NGC5447","M标识":"NGC5447","拓展名":"","组件":"","Class":"III 787","业余排名":"6.5","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h2m29s","赤经D(J2000)":"14.04138888888889","赤纬(J2000)":"+54h16m21s","赤纬D(J2000)":"54.2725","可见光星等V":"13.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pB, S, R, gmbM, conn with M 101"},{"ID":"5448","标识":"NGC5448","M标识":"NGC5448","拓展名":"","组件":"","Class":"II 691","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h2m50.4s","赤经D(J2000)":"14.047333333333333","赤纬(J2000)":"+49h10m21s","赤纬D(J2000)":"49.1725","可见光星等V":"11","摄影(蓝光)星等B":"11.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.8","短轴(分)":"2","方位角":"115","详细描述":"","简略描述":"pB, cL, vmE 90° ±, smbMN"},{"ID":"5449","标识":"NGC5449","M标识":"NGC5449","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h2m28.2s","赤经D(J2000)":"14.041166666666667","赤纬(J2000)":"+54h19m53s","赤纬D(J2000)":"54.331388888888895","可见光星等V":"14","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, pL, gvlbM, all conn with M 101"},{"ID":"5450","标识":"NGC5450","M标识":"NGC5450","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"Dup","形态":"GxyP","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h2m29s","赤经D(J2000)":"14.04138888888889","赤纬(J2000)":"+54h16m21s","赤纬D(J2000)":"54.2725","可见光星等V":"13","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, pS, iR, glbM, all conn with M 101"},{"ID":"5451","标识":"NGC5451","M标识":"NGC5451","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h2m36.5s","赤经D(J2000)":"14.043472222222222","赤纬(J2000)":"+54h21m49s","赤纬D(J2000)":"54.36361111111111","可见光星等V":"14","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.3","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, pL, iR, vlbM, all conn with M 101"},{"ID":"5452","标识":"NGC5452","M标识":"NGC5452","拓展名":"","组件":"","Class":"III 947","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"13h54m24.3s","赤经D(J2000)":"13.90675","赤纬(J2000)":"+78h13m14s","赤纬D(J2000)":"78.22055555555556","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2","短轴(分)":"1.5","方位角":"120","详细描述":"very faint, pretty large, irregularly round, very gradually a very little brighter middle","简略描述":"vF, pL, iR, vgvlbM"},{"ID":"5453","标识":"NGC5453","M标识":"NGC5453","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h2m56.7s","赤经D(J2000)":"14.049083333333334","赤纬(J2000)":"+54h18m31s","赤纬D(J2000)":"54.308611111111105","可见光星等V":"13.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, pL, lE, vlbM, conn w M 101"},{"ID":"5454","标识":"NGC5454","M标识":"NGC5454","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h4m45.7s","赤经D(J2000)":"14.07936111111111","赤纬(J2000)":"+14h22m55s","赤纬D(J2000)":"14.381944444444445","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"110","详细描述":"pretty faint, small","简略描述":"pF, S"},{"ID":"5455","标识":"NGC5455","M标识":"NGC5455","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h3m1s","赤经D(J2000)":"14.050277777777778","赤纬(J2000)":"+54h14m27s","赤纬D(J2000)":"54.240833333333335","可见光星等V":"13","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.4","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pB, pS, R, psbM, conn w M 101"},{"ID":"5456","标识":"NGC5456","M标识":"NGC5456","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h4m58.8s","赤经D(J2000)":"14.083","赤纬(J2000)":"+11h52m18s","赤纬D(J2000)":"11.871666666666668","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"1","方位角":"175","详细描述":"faint, pretty small","简略描述":"F, pS"},{"ID":"5457","标识":"NGC5457","M标识":"M101","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"风车星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h3m12.4s","赤经D(J2000)":"14.053444444444445","赤纬(J2000)":"+54h20m58s","赤纬D(J2000)":"54.349444444444444","可见光星等V":"7.9","摄影(蓝光)星等B":"8.3","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.9","长轴(分)":"28.8","短轴(分)":"26.9","方位角":"26","详细描述":"pretty bright, very large, irregularly round, very suddenly much brighter middle with bright small nucleus","简略描述":"pB, vL, iR, g, vsmbMBSN"},{"ID":"5458","标识":"NGC5458","M标识":"NGC5458","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h3m12.4s","赤经D(J2000)":"14.053444444444445","赤纬(J2000)":"+54h17m56s","赤纬D(J2000)":"54.29888888888889","可见光星等V":"14","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, pL, R, vlbM, conn w M 101"},{"ID":"5459","标识":"NGC5459","M标识":"NGC5459","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h5m0.1s","赤经D(J2000)":"14.083361111111111","赤纬(J2000)":"+13h7m57s","赤纬D(J2000)":"13.1325","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"1","方位角":"10","详细描述":"","简略描述":"F, S, lE, pB * sp"},{"ID":"5460","标识":"NGC5460","M标识":"NGC5460","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h7m36s","赤经D(J2000)":"14.126666666666667","赤纬(J2000)":"-48h18m0s","赤纬D(J2000)":"-48.3","可见光星等V":"5.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"35","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, very little compressed, stars from 8th magnitude downwards.","简略描述":"Cl, vL, vlC, st 8…"},{"ID":"5461","标识":"NGC5461","M标识":"NGC5461","拓展名":"","组件":"","Class":"III 788","业余排名":"15","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h3m41.5s","赤经D(J2000)":"14.061527777777778","赤纬(J2000)":"+54h19m5s","赤纬D(J2000)":"54.31805555555556","可见光星等V":"14","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"","简略描述":"B, pS, R, psbM, conn with M 101"},{"ID":"5462","标识":"NGC5462","M标识":"NGC5462","拓展名":"","组件":"","Class":"III 789","业余排名":"6.5","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h3m53s","赤经D(J2000)":"14.064722222222223","赤纬(J2000)":"+54h22m2s","赤纬D(J2000)":"54.367222222222225","可见光星等V":"13.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pB, pL, iR, gbM, conn with M 101"},{"ID":"5463","标识":"NGC5463","M标识":"NGC5463","拓展名":"","组件":"","Class":"III 58","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h6m10.6s","赤经D(J2000)":"14.102944444444445","赤纬(J2000)":"+9h21m11s","赤纬D(J2000)":"9.353055555555555","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"49","详细描述":"extremely faint, small, a little extended","简略描述":"eF, S, lE"},{"ID":"5464","标识":"NGC5464","M标识":"NGC5464","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"14h7m4.1s","赤经D(J2000)":"14.117805555555556","赤纬(J2000)":"-30h1m2s","赤纬D(J2000)":"-30.01722222222222","可见光星等V":"13","摄影(蓝光)星等B":"13.3","B-V":"0.3","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"85","详细描述":"pretty faint, small, round, pretty suddenly a little brighter middle","简略描述":"pF, S, R, pslbM"},{"ID":"5465","标识":"NGC5465","M标识":"NGC5465","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h6m27.3s","赤经D(J2000)":"14.107583333333332","赤纬(J2000)":"-5h30m24s","赤纬D(J2000)":"-5.506666666666667","可见光星等V":"99","摄影(蓝光)星等B":"15","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"cF, vS, sp III 286"},{"ID":"5466","标识":"NGC5466","M标识":"NGC5466","拓展名":"","组件":"","Class":"VI 9","业余排名":"5","中文名":"雪球星团","类型":"GCL","含重复类型":"GCL","形态":"XII","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h5m27.3s","赤经D(J2000)":"14.090916666666667","赤纬(J2000)":"+28h32m6s","赤纬D(J2000)":"28.535","可见光星等V":"9.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"","方位角":"","详细描述":"a cluster, large, very rich, very much compressed, stars from 11th magnitude","简略描述":"Cl, L, vRi, vmC, st 11…"},{"ID":"5467","标识":"NGC5467","M标识":"NGC5467","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h6m29.4s","赤经D(J2000)":"14.108166666666666","赤纬(J2000)":"-5h28m54s","赤纬D(J2000)":"-5.4816666666666665","可见光星等V":"99","摄影(蓝光)星等B":"15.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, vS, sp III 286"},{"ID":"5468","标识":"NGC5468","M标识":"NGC5468","拓展名":"","组件":"","Class":"III 286","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h6m35s","赤经D(J2000)":"14.109722222222222","赤纬(J2000)":"-5h27m11s","赤纬D(J2000)":"-5.453055555555555","可见光星等V":"12.5","摄影(蓝光)星等B":"13","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"2.4","短轴(分)":"2.3","方位角":"105","详细描述":"faint, large, round, very gradually brighter middle, 9th magnitude star 4 arcmin to southeast","简略描述":"F, L, R, vgbM, * 9 sf 4'"},{"ID":"5469","标识":"NGC5469","M标识":"NGC5469","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h12m29.9s","赤经D(J2000)":"14.208305555555555","赤纬(J2000)":"+8h38m52s","赤纬D(J2000)":"8.647777777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"140","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"5470","标识":"NGC5470","M标识":"NGC5470","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h6m31.9s","赤经D(J2000)":"14.10886111111111","赤纬(J2000)":"+6h1m45s","赤纬D(J2000)":"6.029166666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.5","短轴(分)":"0.4","方位角":"63","详细描述":"faint, much extended, very gradually a little brighter middle","简略描述":"F, mE, vglbM"},{"ID":"5471","标识":"NGC5471","M标识":"NGC5471","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h4m28.9s","赤经D(J2000)":"14.074694444444445","赤纬(J2000)":"+54h23m51s","赤纬D(J2000)":"54.3975","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"99","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"60","详细描述":"","简略描述":"F, S, R, * 12·13 p"},{"ID":"5472","标识":"NGC5472","M标识":"NGC5472","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h6m54.9s","赤经D(J2000)":"14.11525","赤纬(J2000)":"-5h27m36s","赤纬D(J2000)":"-5.46","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"38","详细描述":"pretty faint, very small, between 2 very faint stars","简略描述":"pF, vS, bet 2 vF st"},{"ID":"5473","标识":"NGC5473","M标识":"NGC5473","拓展名":"","组件":"","Class":"I 231","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h4m43.5s","赤经D(J2000)":"14.07875","赤纬(J2000)":"+54h53m36s","赤纬D(J2000)":"54.89333333333333","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.2","短轴(分)":"1.7","方位角":"160","详细描述":"pretty bright, small, round, gradually brighter middle","简略描述":"pB, S, R, gbM"},{"ID":"5474","标识":"NGC5474","M标识":"NGC5474","拓展名":"","组件":"","Class":"I 214","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h5m1.4s","赤经D(J2000)":"14.083722222222223","赤纬(J2000)":"+53h39m46s","赤纬D(J2000)":"53.66277777777778","可见光星等V":"10.8","摄影(蓝光)星等B":"11.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"4.7","短轴(分)":"4.7","方位角":"","详细描述":"pretty bright, large, brighter middle","简略描述":"pB, L, bM"},{"ID":"5475","标识":"NGC5475","M标识":"NGC5475","拓展名":"","组件":"","Class":"II 800","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h5m12.2s","赤经D(J2000)":"14.086722222222223","赤纬(J2000)":"+55h44m32s","赤纬D(J2000)":"55.742222222222225","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.9","短轴(分)":"0.5","方位角":"166","详细描述":"pretty bright, small, pretty much extended, brighter middle","简略描述":"pB, S, pmE, bM"},{"ID":"5476","标识":"NGC5476","M标识":"NGC5476","拓展名":"","组件":"","Class":"III 287","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h8m8.4s","赤经D(J2000)":"14.135666666666665","赤纬(J2000)":"-6h5m32s","赤纬D(J2000)":"-6.0922222222222215","可见光星等V":"12.8","摄影(蓝光)星等B":"13.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"135","详细描述":"faint, pretty small, irregularly round","简略描述":"F, pS, iR"},{"ID":"5477","标识":"NGC5477","M标识":"NGC5477","拓展名":"","组件":"","Class":"III 790","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h5m33s","赤经D(J2000)":"14.092500000000001","赤纬(J2000)":"+54h27m39s","赤纬D(J2000)":"54.46083333333333","可见光星等V":"14","摄影(蓝光)星等B":"14.4","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"95","详细描述":"very faint, pretty large","简略描述":"vF, pL"},{"ID":"5478","标识":"NGC5478","M标识":"NGC5478","拓展名":"","组件":"","Class":"III 762","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h8m8.5s","赤经D(J2000)":"14.135694444444445","赤纬(J2000)":"-1h42m8s","赤纬D(J2000)":"-1.702222222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"37","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"5479","标识":"NGC5479","M标识":"NGC5479","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"14h5m57.3s","赤经D(J2000)":"14.099250000000001","赤纬(J2000)":"+65h41m28s","赤纬D(J2000)":"65.69111111111111","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"15","详细描述":"considerably faint, very small, round, nearly between 2 stars","简略描述":"cF, vS, R, nearly bet 2 st"},{"ID":"5480","标识":"NGC5480","M标识":"NGC5480","拓展名":"","组件":"","Class":"II 692","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h6m21.5s","赤经D(J2000)":"14.105972222222222","赤纬(J2000)":"+50h43m30s","赤纬D(J2000)":"50.725","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.6","短轴(分)":"1","方位角":"0","详细描述":"faint, pretty small, very gradually brighter middle, northwestern of 2","简略描述":"F, pS, vgbM, np of 2"},{"ID":"5481","标识":"NGC5481","M标识":"NGC5481","拓展名":"","组件":"","Class":"II 693","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h6m41.1s","赤经D(J2000)":"14.111416666666667","赤纬(J2000)":"+50h43m25s","赤纬D(J2000)":"50.72361111111111","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"115","详细描述":"faint, very small, suddenly much brighter middle, stellar, southeastern of 2","简略描述":"F, vS, smbM, stellar, sf of 2"},{"ID":"5482","标识":"NGC5482","M标识":"NGC5482","拓展名":"","组件":"","Class":"III 59","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h8m30.8s","赤经D(J2000)":"14.141888888888888","赤纬(J2000)":"+8h55m53s","赤纬D(J2000)":"8.931388888888888","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"88","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"5483","标识":"NGC5483","M标识":"NGC5483","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h10m25s","赤经D(J2000)":"14.17361111111111","赤纬(J2000)":"-43h19m30s","赤纬D(J2000)":"-43.325","可见光星等V":"11.2","摄影(蓝光)星等B":"11.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.9","短轴(分)":"3.6","方位角":"25","详细描述":"pretty faint, very large, round, very gradually brighter middle","简略描述":"pF, vL, R, vgbM"},{"ID":"5484","标识":"NGC5484","M标识":"NGC5484","拓展名":"","组件":"","Class":"III 791","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h6m48.1s","赤经D(J2000)":"14.11336111111111","赤纬(J2000)":"+55h1m49s","赤纬D(J2000)":"55.030277777777776","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"0","详细描述":"","简略描述":"vF, S, R, 4' from I 232 (d'A not found)"},{"ID":"5485","标识":"NGC5485","M标识":"NGC5485","拓展名":"","组件":"","Class":"I 232","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h7m11.4s","赤经D(J2000)":"14.119833333333334","赤纬(J2000)":"+55h0m5s","赤纬D(J2000)":"55.00138888888889","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.3","短轴(分)":"1.9","方位角":"170","详细描述":"considerably bright, round, very gradually brighter middle, eastern of 2","简略描述":"cB, R, vgbM, f of 2"},{"ID":"5486","标识":"NGC5486","M标识":"NGC5486","拓展名":"","组件":"","Class":"II 801","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h7m24.9s","赤经D(J2000)":"14.123583333333334","赤纬(J2000)":"+55h6m11s","赤纬D(J2000)":"55.10305555555556","可见光星等V":"13.2","摄影(蓝光)星等B":"13.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"80","详细描述":"faint, pretty large","简略描述":"F, pL"},{"ID":"5487","标识":"NGC5487","M标识":"NGC5487","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h9m43.9s","赤经D(J2000)":"14.162194444444445","赤纬(J2000)":"+8h4m10s","赤纬D(J2000)":"8.069444444444445","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"65","详细描述":"","简略描述":"eF (Place uncertain)"},{"ID":"5488","标识":"NGC5488","M标识":"NGC5488","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h8m2.9s","赤经D(J2000)":"14.134138888888888","赤纬(J2000)":"-33h18m53s","赤纬D(J2000)":"-33.31472222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.4","短轴(分)":"1","方位角":"22","详细描述":"","简略描述":"F, R, * 8 s nr"},{"ID":"5489","标识":"NGC5489","M标识":"NGC5489","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h12m0.7s","赤经D(J2000)":"14.200194444444444","赤纬(J2000)":"-46h5m20s","赤纬D(J2000)":"-46.08888888888889","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.5","短轴(分)":"1","方位角":"129","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"5490","标识":"NGC5490","M标识":"NGC5490","拓展名":"","组件":"","Class":"III 32","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h9m57.3s","赤经D(J2000)":"14.165916666666668","赤纬(J2000)":"+17h32m44s","赤纬D(J2000)":"17.545555555555556","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.4","短轴(分)":"1.9","方位角":"5","详细描述":"","简略描述":"cF, cS, R, sbMF **"},{"ID":"5491","标识":"NGC5491","M标识":"NGC5491","拓展名":"A","组件":"","Class":"II 890","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h10m57.4s","赤经D(J2000)":"14.182611111111111","赤纬(J2000)":"+6h21m54s","赤纬D(J2000)":"6.364999999999999","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"78","详细描述":"pretty bright, pretty small, round, gradually brighter middle, mottled but not resolved","简略描述":"pB, pS, R, gbM, r"},{"ID":"5492","标识":"NGC5492","M标识":"NGC5492","拓展名":"","组件":"","Class":"II 876","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h10m35.2s","赤经D(J2000)":"14.176444444444444","赤纬(J2000)":"+19h36m43s","赤纬D(J2000)":"19.611944444444447","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"150","详细描述":"pretty bright, very small, extended","简略描述":"pB, vS, E"},{"ID":"5493","标识":"NGC5493","M标识":"NGC5493","拓展名":"","组件":"","Class":"IV 46","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h11m29.4s","赤经D(J2000)":"14.1915","赤纬(J2000)":"-5h2m38s","赤纬D(J2000)":"-5.043888888888889","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"120","详细描述":"","简略描述":"pB, vS, R, psmbM*, * 18 inv"},{"ID":"5494","标识":"NGC5494","M标识":"NGC5494","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h12m23.7s","赤经D(J2000)":"14.206583333333333","赤纬(J2000)":"-30h38m41s","赤纬D(J2000)":"-30.64472222222222","可见光星等V":"11.8","摄影(蓝光)星等B":"12.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.3","短轴(分)":"2.1","方位角":"32","详细描述":"I assume Swift XI#167, RA 14 04 31, NPD 119 52.1, faint, pretty small, round, not found by Howe, to be = 5494","简略描述":"pB, L, R, gbM, rr"},{"ID":"5495","标识":"NGC5495","M标识":"NGC5495","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"14h12m23.5s","赤经D(J2000)":"14.206527777777778","赤纬(J2000)":"-27h6m28s","赤纬D(J2000)":"-27.10777777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"38","详细描述":"the star is northeast, not southeast; 10th magnitude","简略描述":"vF, S, R, bM, * sf"},{"ID":"5496","标识":"NGC5496","M标识":"NGC5496","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h11m37.8s","赤经D(J2000)":"14.193833333333334","赤纬(J2000)":"-1h9m30s","赤纬D(J2000)":"-1.1583333333333332","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"4.7","短轴(分)":"0.9","方位角":"172","详细描述":"pretty bright, very large, extended north-south","简略描述":"pB, vL, E ns"},{"ID":"5497","标识":"NGC5497","M标识":"NGC5497","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h10m31.5s","赤经D(J2000)":"14.175416666666665","赤纬(J2000)":"+38h53m38s","赤纬D(J2000)":"38.89388888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"75","详细描述":"extremely faint, small, round, a little brighter middle","简略描述":"eF, S, R, lbM"},{"ID":"5498","标识":"NGC5498","M标识":"NGC5498","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h11m4.4s","赤经D(J2000)":"14.184555555555555","赤纬(J2000)":"+25h41m52s","赤纬D(J2000)":"25.697777777777777","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.8","方位角":"120","详细描述":"faint, small, round, a little brighter middle, mottled but not resolved?","简略描述":"F, S, R, lbM, r?"},{"ID":"5499","标识":"NGC5499","M标识":"NGC5499","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h10m47.7s","赤经D(J2000)":"14.179916666666665","赤纬(J2000)":"+35h54m49s","赤纬D(J2000)":"35.91361111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"150","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved?","简略描述":"F, S, R, gbM, r?"},{"ID":"5500","标识":"NGC5500","M标识":"NGC5500","拓展名":"","组件":"","Class":"III 674","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h10m15.2s","赤经D(J2000)":"14.170888888888888","赤纬(J2000)":"+48h32m48s","赤纬D(J2000)":"48.54666666666667","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.9","方位角":"129","详细描述":"considerably faint, considerably small, irregularly round","简略描述":"cF, cS, iR"},{"ID":"5501","标识":"NGC5501","M标识":"NGC5501","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h12m20.1s","赤经D(J2000)":"14.205583333333333","赤纬(J2000)":"+1h16m22s","赤纬D(J2000)":"1.2727777777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"67","详细描述":"very faint, small, partially resolved, some stars seen","简略描述":"vF, S, rr"},{"ID":"5502","标识":"NGC5502","M标识":"NGC5502","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h9m33.9s","赤经D(J2000)":"14.159416666666667","赤纬(J2000)":"+60h24m36s","赤纬D(J2000)":"60.41","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"87","详细描述":"most extremely faint, pretty small, round, very difficult, between 2 stars","简略描述":"eeF, pS, R, v diffic, bet 2 st"},{"ID":"5503","标识":"NGC5503","M标识":"NGC5503","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h9m33.9s","赤经D(J2000)":"14.159416666666667","赤纬(J2000)":"+60h24m36s","赤纬D(J2000)":"60.41","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"87","详细描述":"most extremely faint, pretty small, round, very difficult, between 2 stars","简略描述":"eeF, vS, R, v diffic, 2 st nr"},{"ID":"5504","标识":"NGC5504","M标识":"NGC5504","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h12m15.7s","赤经D(J2000)":"14.20436111111111","赤纬(J2000)":"+15h50m29s","赤纬D(J2000)":"15.84138888888889","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"130","详细描述":"very faint, very little extended, very little brighter middle","简略描述":"vF, vlE, vlbM"},{"ID":"5505","标识":"NGC5505","M标识":"NGC5505","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h12m31.6s","赤经D(J2000)":"14.208777777777778","赤纬(J2000)":"+13h18m17s","赤纬D(J2000)":"13.304722222222223","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"130","详细描述":"very faint, pretty small, between a star and a double star","简略描述":"vF, pS, bet * and D *"},{"ID":"5506","标识":"NGC5506","M标识":"NGC5506","拓展名":"","组件":"","Class":"II 687","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h13m14.8s","赤经D(J2000)":"14.220777777777778","赤纬(J2000)":"-3h12m25s","赤纬D(J2000)":"-3.206944444444445","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.7","短轴(分)":"0.8","方位角":"95","详细描述":"pretty bright, large, extended 20°±, little brighter middle","简略描述":"pB, L, E 20° ±, lbM"},{"ID":"5507","标识":"NGC5507","M标识":"NGC5507","拓展名":"","组件":"","Class":"IV 49","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h13m19.8s","赤经D(J2000)":"14.222166666666666","赤纬(J2000)":"-3h8m54s","赤纬D(J2000)":"-3.1483333333333334","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"55","详细描述":"considerably faint, small, round, stellar","简略描述":"cF, S, R, stellar"},{"ID":"5508","标识":"NGC5508","M标识":"NGC5508","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h12m29s","赤经D(J2000)":"14.208055555555555","赤纬(J2000)":"+24h38m8s","赤纬D(J2000)":"24.635555555555555","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"141","详细描述":"extremely faint, extremely small, round, little brighter middle","简略描述":"eF, eS, R, lbM"},{"ID":"5509","标识":"NGC5509","M标识":"NGC5509","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h12m39.9s","赤经D(J2000)":"14.211083333333333","赤纬(J2000)":"+20h23m18s","赤纬D(J2000)":"20.388333333333332","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"100","详细描述":"very faint, small, round, stellar nucleus","简略描述":"vF, S, R, stellar Nucl"},{"ID":"5510","标识":"NGC5510","M标识":"NGC5510","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h13m37.1s","赤经D(J2000)":"14.226972222222223","赤纬(J2000)":"-17h59m3s","赤纬D(J2000)":"-17.984166666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"40","详细描述":"very faint, small, round, gradually brighter middle","简略描述":"vF, S, R, gbM"},{"ID":"5511","标识":"NGC5511","M标识":"NGC5511","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h13m5.4s","赤经D(J2000)":"14.218166666666667","赤纬(J2000)":"+8h37m56s","赤纬D(J2000)":"8.632222222222223","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"165","详细描述":"very faint, small, 10th magnitude star to west","简略描述":"vF, S, * 10 p"},{"ID":"5512","标识":"NGC5512","M标识":"NGC5512","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h12m41.1s","赤经D(J2000)":"14.211416666666667","赤纬(J2000)":"+30h51m20s","赤纬D(J2000)":"30.855555555555558","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"78","详细描述":"very faint, very small, round, suddenly brighter middle and nucleus, mottled but not resolved?","简略描述":"vF, vS, R, sbMN, r?"},{"ID":"5513","标识":"NGC5513","M标识":"NGC5513","拓展名":"","组件":"","Class":"II 877","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h13m8.8s","赤经D(J2000)":"14.219111111111111","赤纬(J2000)":"+20h24m56s","赤纬D(J2000)":"20.415555555555553","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"115","详细描述":"pretty bright, pretty large, irregularly round","简略描述":"pB, pL, iR"},{"ID":"5514","标识":"NGC5514","M标识":"NGC5514","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h13m38.7s","赤经D(J2000)":"14.227416666666667","赤纬(J2000)":"+7h39m36s","赤纬D(J2000)":"7.66","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"105","详细描述":"faint, pretty small, round, little brighter middle, 16th magnitude star to northeast","简略描述":"F, pS, R, lbM, * 16 nf"},{"ID":"5515","标识":"NGC5515","M标识":"NGC5515","拓展名":"","组件":"","Class":"III 685","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h12m38.1s","赤经D(J2000)":"14.210583333333332","赤纬(J2000)":"+39h18m36s","赤纬D(J2000)":"39.309999999999995","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"108","详细描述":"very faint, small, very little extended","简略描述":"vF, S, vlE"},{"ID":"5516","标识":"NGC5516","M标识":"NGC5516","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h15m54.6s","赤经D(J2000)":"14.265166666666667","赤纬(J2000)":"-48h6m53s","赤纬D(J2000)":"-48.11472222222223","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"169","详细描述":"pretty faint, small, round, pretty suddenly brighter middle, small (faint) double star to northeast","简略描述":"pF, S, R, psbM, S ** nf"},{"ID":"5517","标识":"NGC5517","M标识":"NGC5517","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h12m51.3s","赤经D(J2000)":"14.21425","赤纬(J2000)":"+35h42m40s","赤纬D(J2000)":"35.711111111111116","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.8","方位角":"125","详细描述":"faint, extremely small, round, brighter middle and nucleus","简略描述":"F, eS, R, bMN"},{"ID":"5518","标识":"NGC5518","M标识":"NGC5518","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h13m47.6s","赤经D(J2000)":"14.229888888888889","赤纬(J2000)":"+20h50m56s","赤纬D(J2000)":"20.848888888888887","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, very small, round, gradually brighter middle","简略描述":"F, vS, R, gbM"},{"ID":"5519","标识":"NGC5519","M标识":"NGC5519","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h14m20.9s","赤经D(J2000)":"14.239138888888888","赤纬(J2000)":"+7h30m56s","赤纬D(J2000)":"7.515555555555555","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"1","方位角":"75","详细描述":"very faint, pretty large, 10th magnitude star to west","简略描述":"vF, pL, * 10 p"},{"ID":"5520","标识":"NGC5520","M标识":"NGC5520","拓展名":"","组件":"","Class":"III 676","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h12m22.7s","赤经D(J2000)":"14.206305555555554","赤纬(J2000)":"+50h20m55s","赤纬D(J2000)":"50.34861111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2","短轴(分)":"1.1","方位角":"66","详细描述":"faint, small, a little extended, stellar","简略描述":"F, S, lE, stellar"},{"ID":"5521","标识":"NGC5521","M标识":"NGC5521","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h15m23.7s","赤经D(J2000)":"14.256583333333333","赤纬(J2000)":"+4h24m31s","赤纬D(J2000)":"4.408611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"96","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"5522","标识":"NGC5522","M标识":"NGC5522","拓展名":"","组件":"","Class":"III 644","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h14m50.2s","赤经D(J2000)":"14.247277777777777","赤纬(J2000)":"+15h8m48s","赤纬D(J2000)":"15.146666666666667","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"0.4","方位角":"50","详细描述":"very faint, very small, extended","简略描述":"vF, vS, E"},{"ID":"5523","标识":"NGC5523","M标识":"NGC5523","拓展名":"","组件":"","Class":"III 134","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h14m51.4s","赤经D(J2000)":"14.24761111111111","赤纬(J2000)":"+25h19m6s","赤纬D(J2000)":"25.31833333333333","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"4.7","短轴(分)":"1.1","方位角":"93","详细描述":"faint, pretty large, pretty much extended 90°, 10th magnitude star to northwest","简略描述":"F, pL, pmE 90°, * 10 np"},{"ID":"5524","标识":"NGC5524","M标识":"NGC5524","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h13m48.7s","赤经D(J2000)":"14.230194444444445","赤纬(J2000)":"+36h22m53s","赤纬D(J2000)":"36.38138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"5525","标识":"NGC5525","M标识":"NGC5525","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h15m39.2s","赤经D(J2000)":"14.26088888888889","赤纬(J2000)":"+14h16m56s","赤纬D(J2000)":"14.282222222222224","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"23","详细描述":"pretty faint, pretty small, irregularly round, brighter middle","简略描述":"pF, pS, iR, bM"},{"ID":"5526","标识":"NGC5526","M标识":"NGC5526","拓展名":"","组件":"1","Class":"III 804, III 835","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h13m53.3s","赤经D(J2000)":"14.231472222222223","赤纬(J2000)":"+57h46m20s","赤纬D(J2000)":"57.77222222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.3","短轴(分)":"0.3","方位角":"136","详细描述":"very faint, small, extended, mottled but not resolved","简略描述":"vF, S, E, r"},{"ID":"5527","标识":"NGC5527","M标识":"NGC5527","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h14m27.2s","赤经D(J2000)":"14.240888888888888","赤纬(J2000)":"+36h24m16s","赤纬D(J2000)":"36.404444444444444","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"160","详细描述":"very faint","简略描述":"eeF"},{"ID":"5528","标识":"NGC5528","M标识":"NGC5528","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h16m19.8s","赤经D(J2000)":"14.272166666666667","赤纬(J2000)":"+8h17m35s","赤纬D(J2000)":"8.293055555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"21","详细描述":"most extremely faint, pretty small, round, 2 very faint stars near","简略描述":"eeF, pS, R, 2 vF st nr"},{"ID":"5529","标识":"NGC5529","M标识":"NGC5529","拓展名":"","组件":"","Class":"III 414","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h15m34s","赤经D(J2000)":"14.259444444444444","赤纬(J2000)":"+36h13m37s","赤纬D(J2000)":"36.22694444444445","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"6","短轴(分)":"0.7","方位角":"115","详细描述":"considerably faint, pretty large, very much extended 110°, very gradually very much brighter middle","简略描述":"cF, pL, vmE 110°, vgvmbM"},{"ID":"5530","标识":"NGC5530","M标识":"NGC5530","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"14h18m27.1s","赤经D(J2000)":"14.307527777777779","赤纬(J2000)":"-43h23m13s","赤纬D(J2000)":"-43.386944444444445","可见光星等V":"11.3","摄影(蓝光)星等B":"12.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4.2","短轴(分)":"1.8","方位角":"127","详细描述":"a remarkable object, very faint, pretty much extended, extremely suddenly very much brighter middle equivalent to 12th magnitude star","简略描述":"!, vF, pmE, esvmbM * 12"},{"ID":"5531","标识":"NGC5531","M标识":"NGC5531","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h16m43.2s","赤经D(J2000)":"14.278666666666668","赤纬(J2000)":"+10h53m8s","赤纬D(J2000)":"10.885555555555555","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"faint, small, round, III 47 ten seconds of time to the east","简略描述":"F, S, R, III 47 f 10s"},{"ID":"5532","标识":"NGC5532","M标识":"NGC5532","拓展名":"","组件":"","Class":"III 47","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h16m52.9s","赤经D(J2000)":"14.281361111111112","赤纬(J2000)":"+10h48m27s","赤纬D(J2000)":"10.807500000000001","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"1.6","方位角":"","详细描述":"very faint, very small, round, gradually brighter middle, mottled but not resolved","简略描述":"vF, vS, R, gbM, r"},{"ID":"5533","标识":"NGC5533","M标识":"NGC5533","拓展名":"","组件":"","Class":"II 418","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h16m7.4s","赤经D(J2000)":"14.268722222222223","赤纬(J2000)":"+35h20m38s","赤纬D(J2000)":"35.34388888888889","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.1","短轴(分)":"1.9","方位角":"30","详细描述":"pretty bright, round, very suddenly much brighter middle, 2 or 3 stars involved","简略描述":"pB, R, vsmbM, 2 or 3 st inv"},{"ID":"5534","标识":"NGC5534","M标识":"NGC5534","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h17m40.3s","赤经D(J2000)":"14.294527777777777","赤纬(J2000)":"-7h25m1s","赤纬D(J2000)":"-7.416944444444445","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"139","详细描述":"pretty faint, star involved, 12th magnitude star to northwest","简略描述":"pF, st inv, * 12 np"},{"ID":"5535","标识":"NGC5535","M标识":"NGC5535","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h17m31.1s","赤经D(J2000)":"14.291972222222222","赤纬(J2000)":"+8h12m27s","赤纬D(J2000)":"8.2075","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, small, irregularly round","简略描述":"eF, S, iR"},{"ID":"5536","标识":"NGC5536","M标识":"NGC5536","拓展名":"","组件":"","Class":"III 731","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h16m23.7s","赤经D(J2000)":"14.27325","赤纬(J2000)":"+39h30m8s","赤纬D(J2000)":"39.50222222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"1","方位角":"144","详细描述":"considerably faint, very small, round, southwestern of 2","简略描述":"cF, vS, R, sp of 2"},{"ID":"5537","标识":"NGC5537","M标识":"NGC5537","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h17m37s","赤经D(J2000)":"14.293611111111112","赤纬(J2000)":"+7h3m17s","赤纬D(J2000)":"7.054722222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.5","方位角":"35","详细描述":"most extremely faint, small, a little extended","简略描述":"eeF, S, lE"},{"ID":"5538","标识":"NGC5538","M标识":"NGC5538","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h17m42.4s","赤经D(J2000)":"14.295111111111112","赤纬(J2000)":"+7h28m34s","赤纬D(J2000)":"7.476111111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"63","详细描述":"extremely faint, small, extended","简略描述":"eF, S, E"},{"ID":"5539","标识":"NGC5539","M标识":"NGC5539","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S M","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h17m37.7s","赤经D(J2000)":"14.293805555555556","赤纬(J2000)":"+8h10m43s","赤纬D(J2000)":"8.17861111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"","详细描述":"faint, pretty large, irregular figure, gradually brighter middle","简略描述":"F, pL, iF, gbM"},{"ID":"5540","标识":"NGC5540","M标识":"NGC5540","拓展名":"","组件":"","Class":"III 805","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h14m54.2s","赤经D(J2000)":"14.248388888888888","赤纬(J2000)":"+60h0m39s","赤纬D(J2000)":"60.01083333333333","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"36","详细描述":"extremely faint, very small, round, stellar","简略描述":"eF, vS, R, stellar"},{"ID":"5541","标识":"NGC5541","M标识":"NGC5541","拓展名":"","组件":"1","Class":"III 732","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h16m31.7s","赤经D(J2000)":"14.275472222222223","赤纬(J2000)":"+39h35m18s","赤纬D(J2000)":"39.58833333333334","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"12","详细描述":"considerably faint, small, round, gradually brighter middle, northeastern of 2","简略描述":"cF, S, R, gbM, nf of 2"},{"ID":"5542","标识":"NGC5542","M标识":"NGC5542","拓展名":"","组件":"","Class":"","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h17m53.2s","赤经D(J2000)":"14.298111111111112","赤纬(J2000)":"+7h33m31s","赤纬D(J2000)":"7.5586111111111105","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"174","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"5543","标识":"NGC5543","M标识":"NGC5543","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h18m4s","赤经D(J2000)":"14.301111111111112","赤纬(J2000)":"+7h39m15s","赤纬D(J2000)":"7.654166666666667","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"132","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"5544","标识":"NGC5544","M标识":"NGC5544","拓展名":"","组件":"","Class":"II 419","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h17m2.4s","赤经D(J2000)":"14.284","赤纬(J2000)":"+36h34m16s","赤纬D(J2000)":"36.571111111111115","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"1","方位角":"62","详细描述":"faint, pretty small, elongated 80°, and a double nebula (with NGC 5545) or binuclear","简略描述":"F, pS, E 80°, D neb or biN"},{"ID":"5545","标识":"NGC5545","M标识":"NGC5545","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h17m4.8s","赤经D(J2000)":"14.284666666666666","赤纬(J2000)":"+36h34m29s","赤纬D(J2000)":"36.57472222222223","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.3","方位角":"58","详细描述":"faint, pretty small, elongated 80°, and a double nebula (with NGC 5545) or binuclear","简略描述":"E, lbM, D neb or biN"},{"ID":"5546","标识":"NGC5546","M标识":"NGC5546","拓展名":"","组件":"","Class":"III 551","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h18m9.1s","赤经D(J2000)":"14.302527777777778","赤纬(J2000)":"+7h33m50s","赤纬D(J2000)":"7.563888888888889","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"3","详细描述":"pretty bright, considerably small, gradually brighter middle","简略描述":"pB, cS, gbM"},{"ID":"5547","标识":"NGC5547","M标识":"NGC5547","拓展名":"","组件":"","Class":"III 948","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"14h9m45.1s","赤经D(J2000)":"14.162527777777779","赤纬(J2000)":"+78h36m6s","赤纬D(J2000)":"78.60166666666666","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"66","详细描述":"extremely faint, very small, extended 0°±","简略描述":"eF, vS, E 0° ±"},{"ID":"5548","标识":"NGC5548","M标识":"NGC5548","拓展名":"","组件":"","Class":"II 194","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h17m59.4s","赤经D(J2000)":"14.299833333333334","赤纬(J2000)":"+25h8m12s","赤纬D(J2000)":"25.136666666666667","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"110","详细描述":"considerably faint, pretty small, round, very suddenly very much brighter middle resembling a star","简略描述":"cF, pS, R, vsvmbM *"},{"ID":"5549","标识":"NGC5549","M标识":"NGC5549","拓展名":"","组件":"","Class":"III 552","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h18m38.7s","赤经D(J2000)":"14.31075","赤纬(J2000)":"+7h22m37s","赤纬D(J2000)":"7.376944444444444","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"120","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"5550","标识":"NGC5550","M标识":"NGC5550","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h18m28s","赤经D(J2000)":"14.307777777777778","赤纬(J2000)":"+12h53m0s","赤纬D(J2000)":"12.883333333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"100","详细描述":"very faint, considerably small, pretty much extended","简略描述":"vF, cS, pmE"},{"ID":"5551","标识":"NGC5551","M标识":"NGC5551","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h18m54.8s","赤经D(J2000)":"14.315222222222223","赤纬(J2000)":"+5h27m4s","赤纬D(J2000)":"5.4511111111111115","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"111","详细描述":"3 stars in nebulosity","简略描述":"3 st in neby"},{"ID":"5552","标识":"NGC5552","M标识":"NGC5552","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h19m3.9s","赤经D(J2000)":"14.31775","赤纬(J2000)":"+7h1m56s","赤纬D(J2000)":"7.032222222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"177","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"5553","标识":"NGC5553","M标识":"NGC5553","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h18m29.6s","赤经D(J2000)":"14.308222222222224","赤纬(J2000)":"+26h17m14s","赤纬D(J2000)":"26.287222222222223","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"88","详细描述":"very faint, small, a little extended","简略描述":"vF, S, lE"},{"ID":"5554","标识":"NGC5554","M标识":"NGC5554","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h19m15s","赤经D(J2000)":"14.320833333333333","赤纬(J2000)":"+7h1m16s","赤纬D(J2000)":"7.021111111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"10","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"5555","标识":"NGC5555","M标识":"NGC5555","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h18m48.1s","赤经D(J2000)":"14.313361111111112","赤纬(J2000)":"-19h8m21s","赤纬D(J2000)":"-19.139166666666664","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.4","方位角":"115","详细描述":"very faint, small, irregularly round, gradually brighter middle and nucleus","简略描述":"vF, S, iR, gbMN"},{"ID":"5556","标识":"NGC5556","M标识":"NGC5556","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"14h20m34s","赤经D(J2000)":"14.342777777777778","赤纬(J2000)":"-29h14m29s","赤纬D(J2000)":"-29.24138888888889","可见光星等V":"11.8","摄影(蓝光)星等B":"12.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"4.1","短轴(分)":"3.3","方位角":"148","详细描述":"extremely faint, large, small star involved","简略描述":"eF, L, S * inv"},{"ID":"5557","标识":"NGC5557","M标识":"NGC5557","拓展名":"","组件":"","Class":"I 99","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h18m25.6s","赤经D(J2000)":"14.307111111111112","赤纬(J2000)":"+36h29m37s","赤纬D(J2000)":"36.493611111111115","可见光星等V":"11","摄影(蓝光)星等B":"11.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.4","短轴(分)":"1.9","方位角":"105","详细描述":"considerably bright, small, round, very suddenly brighter middle like a star","简略描述":"cB, S, R, vsbM *"},{"ID":"5558","标识":"NGC5558","M标识":"NGC5558","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h19m3.9s","赤经D(J2000)":"14.31775","赤纬(J2000)":"+7h1m56s","赤纬D(J2000)":"7.032222222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"177","详细描述":"very faint, small","简略描述":"eF, S, lE, np of 2"},{"ID":"5559","标识":"NGC5559","M标识":"NGC5559","拓展名":"","组件":"","Class":"III 347","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h19m12.5s","赤经D(J2000)":"14.320138888888888","赤纬(J2000)":"+24h47m56s","赤纬D(J2000)":"24.79888888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"67","详细描述":"very faint, small, very little extended, brighter middle","简略描述":"vF, S, vlE, bM"},{"ID":"5560","标识":"NGC5560","M标识":"NGC5560","拓展名":"","组件":"","Class":"II 579","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h20m4.4s","赤经D(J2000)":"14.334555555555555","赤纬(J2000)":"+3h59m34s","赤纬D(J2000)":"3.992777777777778","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.6","短轴(分)":"0.9","方位角":"117","详细描述":"pretty faint, considerably large, extended, gradually brighter middle","简略描述":"pF, cL, E, gbM"},{"ID":"5561","标识":"NGC5561","M标识":"NGC5561","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h17m22.8s","赤经D(J2000)":"14.289666666666667","赤纬(J2000)":"+58h45m1s","赤纬D(J2000)":"58.750277777777775","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, pretty small, round, faint star close to west","简略描述":"eF, pS, R, F * close p"},{"ID":"5562","标识":"NGC5562","M标识":"NGC5562","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h20m11s","赤经D(J2000)":"14.336388888888889","赤纬(J2000)":"+10h15m48s","赤纬D(J2000)":"10.263333333333334","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, small, very faint star 3 seconds of time to east","简略描述":"vF, S, vF * 3s f"},{"ID":"5563","标识":"NGC5563","M标识":"NGC5563","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h20m13.2s","赤经D(J2000)":"14.337","赤纬(J2000)":"+7h3m20s","赤纬D(J2000)":"7.055555555555555","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"81","详细描述":"extremely faint, small, a little extended","简略描述":"eF, S, lE"},{"ID":"5564","标识":"NGC5564","M标识":"NGC5564","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h19m15s","赤经D(J2000)":"14.320833333333333","赤纬(J2000)":"+7h1m16s","赤纬D(J2000)":"7.021111111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"10","详细描述":"extremely faint, small","简略描述":"eF, S, probably = m 279"},{"ID":"5565","标识":"NGC5565","M标识":"NGC5565","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h19m18.5s","赤经D(J2000)":"14.321805555555555","赤纬(J2000)":"+6h59m42s","赤纬D(J2000)":"6.995","可见光星等V":"99","摄影(蓝光)星等B":"15.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, very difficult, probably = Marth 279","简略描述":"eF, S, v diffic, probably = m 279"},{"ID":"5566","标识":"NGC5566","M标识":"NGC5566","拓展名":"","组件":"","Class":"I 144","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h20m20s","赤经D(J2000)":"14.33888888888889","赤纬(J2000)":"+3h55m59s","赤纬D(J2000)":"3.9330555555555553","可见光星等V":"10.6","摄影(蓝光)星等B":"11.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"6.6","短轴(分)":"2.3","方位角":"33","详细描述":"pretty faint, considerably large, extended, gradually brighter middle","简略描述":"B, pL, R, psbM, r, * 12 f 1'.5"},{"ID":"5567","标识":"NGC5567","M标识":"NGC5567","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h19m17.6s","赤经D(J2000)":"14.321555555555555","赤纬(J2000)":"+35h8m18s","赤纬D(J2000)":"35.138333333333335","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"61","详细描述":"pretty faint, round","简略描述":"pF, R"},{"ID":"5568","标识":"NGC5568","M标识":"NGC5568","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h19m21.4s","赤经D(J2000)":"14.322611111111112","赤纬(J2000)":"+35h5m32s","赤纬D(J2000)":"35.092222222222226","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"96","详细描述":"very faint, small, very diffuse","简略描述":"vF, S, v dif"},{"ID":"5569","标识":"NGC5569","M标识":"NGC5569","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h20m32.2s","赤经D(J2000)":"14.34227777777778","赤纬(J2000)":"+3h58m59s","赤纬D(J2000)":"3.9830555555555556","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"72","详细描述":"extremely faint, pretty large, round","简略描述":"eF, pL, R"},{"ID":"5570","标识":"NGC5570","M标识":"NGC5570","拓展名":"","组件":"","Class":"III 12","业余排名":"16","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h20m30s","赤经D(J2000)":"14.341666666666667","赤纬(J2000)":"+7h34m0s","赤纬D(J2000)":"7.566666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, irregularly round","简略描述":"F, S, iR"},{"ID":"5571","标识":"NGC5571","M标识":"NGC5571","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h19m31.8s","赤经D(J2000)":"14.3255","赤纬(J2000)":"+35h9m4s","赤纬D(J2000)":"35.151111111111106","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"small cluster of faint stars in nebulosity","简略描述":"S Cl of F st in neb"},{"ID":"5572","标识":"NGC5572","M标识":"NGC5572","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h19m35.3s","赤经D(J2000)":"14.326472222222222","赤纬(J2000)":"+36h8m27s","赤纬D(J2000)":"36.14083333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"170","详细描述":"extremely faint, very small, brighter middle","简略描述":"eF, vS, bM"},{"ID":"5573","标识":"NGC5573","M标识":"NGC5573","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h20m41.4s","赤经D(J2000)":"14.344833333333334","赤纬(J2000)":"+6h54m28s","赤纬D(J2000)":"6.9077777777777785","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.2","方位角":"105","详细描述":"very faint, small, a little extended","简略描述":"vF, S, lE"},{"ID":"5574","标识":"NGC5574","M标识":"NGC5574","拓展名":"","组件":"","Class":"I 145","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h20m55.9s","赤经D(J2000)":"14.34886111111111","赤纬(J2000)":"+3h14m17s","赤纬D(J2000)":"3.2380555555555555","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"63","详细描述":"pretty faint, pretty small, a little extended, western of 2","简略描述":"pF, pS, lE, p of 2"},{"ID":"5575","标识":"NGC5575","M标识":"NGC5575","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h20m59.5s","赤经D(J2000)":"14.349861111111112","赤纬(J2000)":"+6h12m10s","赤纬D(J2000)":"6.202777777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.9","方位角":"96","详细描述":"faint, very small, or nebulous star","简略描述":"F, vS, or neb *"},{"ID":"5576","标识":"NGC5576","M标识":"NGC5576","拓展名":"","组件":"","Class":"I 146","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h21m3.7s","赤经D(J2000)":"14.351027777777777","赤纬(J2000)":"+3h16m17s","赤纬D(J2000)":"3.2713888888888887","可见光星等V":"11","摄影(蓝光)星等B":"11.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.8","短轴(分)":"2.7","方位角":"95","详细描述":"bright, small, round, very suddenly much brighter middle, eastern of 2","简略描述":"B, S, R, vsmbM, f of 2"},{"ID":"5577","标识":"NGC5577","M标识":"NGC5577","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h21m13.2s","赤经D(J2000)":"14.353666666666665","赤纬(J2000)":"+3h26m11s","赤纬D(J2000)":"3.436388888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.2","短轴(分)":"0.9","方位角":"56","详细描述":"pretty faint, pretty large, very much extended 53°","简略描述":"pF, pL, vmE 53°"},{"ID":"5578","标识":"NGC5578","M标识":"NGC5578","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h20m59.5s","赤经D(J2000)":"14.349861111111112","赤纬(J2000)":"+6h12m10s","赤纬D(J2000)":"6.202777777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.9","方位角":"96","详细描述":"faint, very small, or nebulous star","简略描述":"vF, vS, lE, mbMN"},{"ID":"5579","标识":"NGC5579","M标识":"NGC5579","拓展名":"","组件":"","Class":"III 415","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h20m26.4s","赤经D(J2000)":"14.340666666666667","赤纬(J2000)":"+35h11m21s","赤纬D(J2000)":"35.189166666666665","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"165","详细描述":"very faint, considerably large, western of 2","简略描述":"vF, cL, p of 2"},{"ID":"5580","标识":"NGC5580","M标识":"NGC5580","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h21m38.3s","赤经D(J2000)":"14.36063888888889","赤纬(J2000)":"+35h12m18s","赤纬D(J2000)":"35.205000000000005","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"1.8","方位角":"","详细描述":"pretty bright, small, eastern of 2","简略描述":"Pb, s, f of 2"},{"ID":"5581","标识":"NGC5581","M标识":"NGC5581","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h21m16.2s","赤经D(J2000)":"14.3545","赤纬(J2000)":"+23h28m48s","赤纬D(J2000)":"23.479999999999997","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"162","详细描述":"very faint star in very faint, very small, round nebulosity","简略描述":"vF * in vF, vS, R neby"},{"ID":"5582","标识":"NGC5582","M标识":"NGC5582","拓展名":"","组件":"","Class":"II 754","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h20m43.2s","赤经D(J2000)":"14.345333333333334","赤纬(J2000)":"+39h41m38s","赤纬D(J2000)":"39.693888888888885","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.8","短轴(分)":"1.7","方位角":"25","详细描述":"pretty bright, pretty small, round, brighter middle and faint nucleus, star to southwest","简略描述":"pB, pS, R, bMFN, * sp"},{"ID":"5583","标识":"NGC5583","M标识":"NGC5583","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h21m40.5s","赤经D(J2000)":"14.36125","赤纬(J2000)":"+13h13m56s","赤纬D(J2000)":"13.232222222222223","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"80","详细描述":"very faint, pretty small, round, pretty bright star near","简略描述":"vF, pS, R, pB * nr"},{"ID":"5584","标识":"NGC5584","M标识":"NGC5584","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h22m23.8s","赤经D(J2000)":"14.373277777777778","赤纬(J2000)":"-0h23m17s","赤纬D(J2000)":"-0.3880555555555556","可见光星等V":"11.4","摄影(蓝光)星等B":"12.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.4","短轴(分)":"2.7","方位角":"140","详细描述":"faint, large, much extended, diffuse, gradually a little brighter middle","简略描述":"F, L, mE, dif, glbM"},{"ID":"5585","标识":"NGC5585","M标识":"NGC5585","拓展名":"","组件":"","Class":"I 235","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h19m47.7s","赤经D(J2000)":"14.329916666666666","赤纬(J2000)":"+56h43m44s","赤纬D(J2000)":"56.72888888888889","可见光星等V":"10.7","摄影(蓝光)星等B":"11.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"5.8","短轴(分)":"3.6","方位角":"30","详细描述":"pretty faint, large, irregularly round, very gradually much brighter middle, mottled but not resolved","简略描述":"pF, L, iR, vgmbM, r"},{"ID":"5586","标识":"NGC5586","M标识":"NGC5586","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h22m7.6s","赤经D(J2000)":"14.368777777777778","赤纬(J2000)":"+13h11m4s","赤纬D(J2000)":"13.184444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"5587","标识":"NGC5587","M标识":"NGC5587","拓展名":"","组件":"","Class":"III 110","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h22m10.8s","赤经D(J2000)":"14.369666666666667","赤纬(J2000)":"+13h55m3s","赤纬D(J2000)":"13.917499999999999","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.6","短轴(分)":"0.8","方位角":"162","详细描述":"faint, considerably small, very little extended, 8th magnitude star to southeast","简略描述":"F, cS, vlE, * 8 sf"},{"ID":"5588","标识":"NGC5588","M标识":"NGC5588","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h21m24.9s","赤经D(J2000)":"14.356916666666667","赤纬(J2000)":"+35h16m14s","赤纬D(J2000)":"35.27055555555555","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"very faint, round, gradually brighter middle","简略描述":"vF, R, gbM"},{"ID":"5589","标识":"NGC5589","M标识":"NGC5589","拓展名":"","组件":"","Class":"III 416","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h21m24.9s","赤经D(J2000)":"14.356916666666667","赤纬(J2000)":"+35h16m14s","赤纬D(J2000)":"35.27055555555555","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"very faint, round, gradually brighter middle","简略描述":"vF, S, R, np of 2"},{"ID":"5590","标识":"NGC5590","M标识":"NGC5590","拓展名":"","组件":"","Class":"III 417","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h21m38.3s","赤经D(J2000)":"14.36063888888889","赤纬(J2000)":"+35h12m18s","赤纬D(J2000)":"35.205000000000005","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"1.8","方位角":"","详细描述":"pretty bright, small, eastern of 2","简略描述":"cF, S, R, bM *, sf of 2"},{"ID":"5591","标识":"NGC5591","M标识":"NGC5591","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h22m33.3s","赤经D(J2000)":"14.375916666666667","赤纬(J2000)":"+13h43m1s","赤纬D(J2000)":"13.716944444444444","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"75","详细描述":"extremely faint, small, round, pretty bright star near to southeast","简略描述":"eF, S, R, pB * nr sf"},{"ID":"5592","标识":"NGC5592","M标识":"NGC5592","拓展名":"","组件":"","Class":"III 924","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"14h23m54.9s","赤经D(J2000)":"14.398583333333333","赤纬(J2000)":"-28h41m18s","赤纬D(J2000)":"-28.688333333333333","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"88","详细描述":"faint, small, extended, gradually a very little brighter middle, mottled but not resolved","简略描述":"F, S, E, gvlbM, r"},{"ID":"5593","标识":"NGC5593","M标识":"NGC5593","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1p","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"14h25m40s","赤经D(J2000)":"14.427777777777777","赤纬(J2000)":"-54h47m54s","赤纬D(J2000)":"-54.79833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"cluster, very little rich, very little compressed, stars of 10th magnitude","简略描述":"Cl, vlRi, vlC, st 10"},{"ID":"5594","标识":"NGC5594","M标识":"NGC5594","拓展名":"","组件":"","Class":"III 135","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h23m10.2s","赤经D(J2000)":"14.386166666666666","赤纬(J2000)":"+26h15m59s","赤纬D(J2000)":"26.26638888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"144","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"5595","标识":"NGC5595","M标识":"NGC5595","拓展名":"","组件":"","Class":"III 121","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h24m13.3s","赤经D(J2000)":"14.403694444444445","赤纬(J2000)":"-16h43m21s","赤纬D(J2000)":"-16.722499999999997","可见光星等V":"12","摄影(蓝光)星等B":"12.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.4","短轴(分)":"1.3","方位角":"50","详细描述":"faint, pretty large, round, very gradually brighter middle, western of 2","简略描述":"F, pL, R, vgbM, p of 2"},{"ID":"5596","标识":"NGC5596","M标识":"NGC5596","拓展名":"","组件":"","Class":"III 418","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h22m28.6s","赤经D(J2000)":"14.374611111111111","赤纬(J2000)":"+37h7m22s","赤纬D(J2000)":"37.12277777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"100","详细描述":"extremely faint, small, round, stellar","简略描述":"eF, S, R, stellar"},{"ID":"5597","标识":"NGC5597","M标识":"NGC5597","拓展名":"","组件":"","Class":"III 122","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h24m27.4s","赤经D(J2000)":"14.40761111111111","赤纬(J2000)":"-16h45m48s","赤纬D(J2000)":"-16.763333333333332","可见光星等V":"12","摄影(蓝光)星等B":"12.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.1","短轴(分)":"1.9","方位角":"95","详细描述":"very faint, large, very little extended, very gradually a little brighter middle, eastern of 2","简略描述":"vF, L, vlE, vglbM, f of 2"},{"ID":"5598","标识":"NGC5598","M标识":"NGC5598","拓展名":"","组件":"","Class":"III 733","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h22m28.4s","赤经D(J2000)":"14.374555555555556","赤纬(J2000)":"+40h19m13s","赤纬D(J2000)":"40.32027777777778","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"50","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"5599","标识":"NGC5599","M标识":"NGC5599","拓展名":"","组件":"","Class":"III 927","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h23m50.6s","赤经D(J2000)":"14.397388888888889","赤纬(J2000)":"+6h34m32s","赤纬D(J2000)":"6.575555555555555","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"166","详细描述":"faint, small, a little extended","简略描述":"F, S, lE"},{"ID":"5600","标识":"NGC5600","M标识":"NGC5600","拓展名":"","组件":"","Class":"II 177","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h23m49.3s","赤经D(J2000)":"14.397027777777778","赤纬(J2000)":"+14h38m19s","赤纬D(J2000)":"14.63861111111111","可见光星等V":"12.1","摄影(蓝光)星等B":"12.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"pretty bright, pretty small, gradually brighter middle","简略描述":"pB, pS, gbM"},{"ID":"5601","标识":"NGC5601","M标识":"NGC5601","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h22m53.2s","赤经D(J2000)":"14.381444444444444","赤纬(J2000)":"+40h18m36s","赤纬D(J2000)":"40.309999999999995","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"0","详细描述":"very faint, between (WH) III 733 and 734","简略描述":"vF, bet III 733 and 734"},{"ID":"5602","标识":"NGC5602","M标识":"NGC5602","拓展名":"","组件":"","Class":"II 694","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h22m18.4s","赤经D(J2000)":"14.371777777777778","赤纬(J2000)":"+50h30m10s","赤纬D(J2000)":"50.50277777777778","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"166","详细描述":"pretty faint, pretty small, a little extended, much brighter middle","简略描述":"pF, pS, lE, mbM"},{"ID":"5603","标识":"NGC5603","M标识":"NGC5603","拓展名":"","组件":"","Class":"III 734","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h23m1.6s","赤经D(J2000)":"14.383777777777777","赤纬(J2000)":"+40h22m40s","赤纬D(J2000)":"40.37777777777778","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"considerably faint, pretty small, round, gradually brighter middle","简略描述":"cF, pS, R, gbM"},{"ID":"5604","标识":"NGC5604","M标识":"NGC5604","拓展名":"","组件":"","Class":"III 668","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h24m42.8s","赤经D(J2000)":"14.411888888888889","赤纬(J2000)":"-3h12m43s","赤纬D(J2000)":"-3.2119444444444447","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"1","方位角":"15","详细描述":"faint, pretty small, round, very gradually brighter starlike middle, mottled but not resolved","简略描述":"F, pS, R, vgbM *, r"},{"ID":"5605","标识":"NGC5605","M标识":"NGC5605","拓展名":"","组件":"","Class":"III 120","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h25m7.5s","赤经D(J2000)":"14.41875","赤纬(J2000)":"-13h9m49s","赤纬D(J2000)":"-13.163611111111111","可见光星等V":"12.3","摄影(蓝光)星等B":"12.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"85","详细描述":"very faint, pretty large, round, very gradually brighter middle","简略描述":"vF, pL, R, vgbM"},{"ID":"5606","标识":"NGC5606","M标识":"NGC5606","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I1p","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h27m47.2s","赤经D(J2000)":"14.463111111111111","赤纬(J2000)":"-59h37m56s","赤纬D(J2000)":"-59.632222222222225","可见光星等V":"7.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"cluster, small, pretty compressed, stars large and small","简略描述":"Cl, S, pC, st L & S"},{"ID":"5607","标识":"NGC5607","M标识":"NGC5607","拓展名":"","组件":"","Class":"II 331","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"14h19m26.7s","赤经D(J2000)":"14.324083333333332","赤纬(J2000)":"+71h35m17s","赤纬D(J2000)":"71.58805555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"13.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"66","详细描述":"pretty faint, considerably small, irregularly round, brighter middle, extremely mottled but not resolved","简略描述":"pF, cS, iR, bM, er"},{"ID":"5608","标识":"NGC5608","M标识":"NGC5608","拓展名":"","组件":"","Class":"II 673","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h23m17.6s","赤经D(J2000)":"14.388222222222222","赤纬(J2000)":"+41h46m32s","赤纬D(J2000)":"41.775555555555556","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.2","短轴(分)":"1.2","方位角":"95","详细描述":"faint, pretty large, a little extended, very gradually a little brighter middle","简略描述":"F, pL, lE, vglbM"},{"ID":"5609","标识":"NGC5609","M标识":"NGC5609","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h23m48.3s","赤经D(J2000)":"14.396749999999999","赤纬(J2000)":"+34h50m34s","赤纬D(J2000)":"34.84277777777778","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"99","详细描述":"most extremely faint","简略描述":"eeF"},{"ID":"5610","标识":"NGC5610","M标识":"NGC5610","拓展名":"","组件":"","Class":"III 136","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h24m23s","赤经D(J2000)":"14.40638888888889","赤纬(J2000)":"+24h36m52s","赤纬D(J2000)":"24.614444444444445","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"0.7","方位角":"108","详细描述":"very faint, small, pretty much extended 0°±, 9th magnitude star to east","简略描述":"vF, S, pmE 0° ±, * 9 f"},{"ID":"5611","标识":"NGC5611","M标识":"NGC5611","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h24m4.8s","赤经D(J2000)":"14.401333333333334","赤纬(J2000)":"+33h2m52s","赤纬D(J2000)":"33.047777777777775","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"63","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"5612","标识":"NGC5612","M标识":"NGC5612","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"14h34m1.5s","赤经D(J2000)":"14.567083333333333","赤纬(J2000)":"-78h23m16s","赤纬D(J2000)":"-78.38777777777779","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"63","详细描述":"very faint, extended, gradually brighter middle, mottled but not resolved","简略描述":"vF, E, gbM, r"},{"ID":"5613","标识":"NGC5613","M标识":"NGC5613","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h24m5.9s","赤经D(J2000)":"14.40163888888889","赤纬(J2000)":"+34h53m33s","赤纬D(J2000)":"34.8925","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"18","详细描述":"pretty bright, small, round, suddenly much brighter middle","简略描述":"eF, pS, dif, 2' n of h 1804"},{"ID":"5614","标识":"NGC5614","M标识":"NGC5614","拓展名":"","组件":"","Class":"II 420","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h24m7.3s","赤经D(J2000)":"14.402027777777779","赤纬(J2000)":"+34h51m33s","赤纬D(J2000)":"34.85916666666667","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.4","短轴(分)":"2","方位角":"130","详细描述":"pretty bright, small, round, suddenly much brighter middle","简略描述":"pB, S, R, smbM"},{"ID":"5615","标识":"NGC5615","M标识":"NGC5615","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h24m6.4s","赤经D(J2000)":"14.401777777777777","赤纬(J2000)":"+34h51m55s","赤纬D(J2000)":"34.86527777777778","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"close north of h1804 (perhaps a very faint star)","简略描述":"close n of h 1804 (? vF *)"},{"ID":"5616","标识":"NGC5616","M标识":"NGC5616","拓展名":"","组件":"","Class":"III 419","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h24m20.6s","赤经D(J2000)":"14.405722222222222","赤纬(J2000)":"+36h27m41s","赤纬D(J2000)":"36.46138888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.1","短轴(分)":"0.4","方位角":"157","详细描述":"very faint, small, considerably extended, very gradually brighter middle, extremely mottled but not resolved","简略描述":"vF, S, cE, vgbM, er"},{"ID":"5617","标识":"NGC5617","M标识":"NGC5617","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"德古拉星团","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h29m44s","赤经D(J2000)":"14.495555555555555","赤纬(J2000)":"-60h42m39s","赤纬D(J2000)":"-60.71083333333333","可见光星等V":"6.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"cluster, large, pretty rich, pretty compressed middle, stars of 8th magnitude and fainter","简略描述":"Cl, L, pRi, pCM, st 8…"},{"ID":"5618","标识":"NGC5618","M标识":"NGC5618","拓展名":"","组件":"","Class":"III 763","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h27m11.8s","赤经D(J2000)":"14.453277777777776","赤纬(J2000)":"-2h15m46s","赤纬D(J2000)":"-2.262777777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"10","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"5619","标识":"NGC5619","M标识":"NGC5619","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h27m18.2s","赤经D(J2000)":"14.455055555555555","赤纬(J2000)":"+4h48m11s","赤纬D(J2000)":"4.803055555555555","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.2","短轴(分)":"1.2","方位角":"8","详细描述":"very faint, small, round, very gradually brighter middle","简略描述":"vF, S, R, vgbM"},{"ID":"5620","标识":"NGC5620","M标识":"NGC5620","拓展名":"","组件":"","Class":"III 319","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S\/P","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"14h19m26.7s","赤经D(J2000)":"14.324083333333332","赤纬(J2000)":"+71h35m17s","赤纬D(J2000)":"71.58805555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"13.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"66","详细描述":"pretty faint, considerably small, irregularly round, brighter middle, extremely mottled but not resolved","简略描述":"eF, vS"},{"ID":"5621","标识":"NGC5621","M标识":"NGC5621","拓展名":"","组件":"","Class":"III 14","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h27m50s","赤经D(J2000)":"14.463888888888889","赤纬(J2000)":"+8h14m32s","赤纬D(J2000)":"8.242222222222221","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, large, mottled but not resolved","简略描述":"eeF, L, r"},{"ID":"5622","标识":"NGC5622","M标识":"NGC5622","拓展名":"","组件":"","Class":"III 677","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h26m12s","赤经D(J2000)":"14.436666666666667","赤纬(J2000)":"+48h33m52s","赤纬D(J2000)":"48.56444444444444","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"1","方位角":"90","详细描述":"very faint, pretty small, very little extended, very gradually a little brighter middle","简略描述":"vF, pS, vlE, vglbM"},{"ID":"5623","标识":"NGC5623","M标识":"NGC5623","拓展名":"","组件":"","Class":"II 329","业余排名":"14","中文名":"龙星云","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h27m8.7s","赤经D(J2000)":"14.452416666666666","赤纬(J2000)":"+33h15m11s","赤纬D(J2000)":"33.253055555555555","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"17","详细描述":"considerably faint, small, round, very suddenly much brighter middle, mottled but not resolved","简略描述":"cF, S, R, vsmbM, r"},{"ID":"5624","标识":"NGC5624","M标识":"NGC5624","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h26m35.4s","赤经D(J2000)":"14.443166666666666","赤纬(J2000)":"+51h35m5s","赤纬D(J2000)":"51.584722222222226","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"3","详细描述":"extremely faint, small, a little extended","简略描述":"eF, S, lE"},{"ID":"5625","标识":"NGC5625","M标识":"NGC5625","拓展名":"","组件":"1","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h27m2.4s","赤经D(J2000)":"14.450666666666667","赤纬(J2000)":"+39h57m27s","赤纬D(J2000)":"39.9575","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"78","详细描述":"very faint, small, round, gradually brighter middle","简略描述":"vF, S, R, gbM"},{"ID":"5626","标识":"NGC5626","M标识":"NGC5626","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"14h29m49s","赤经D(J2000)":"14.496944444444443","赤纬(J2000)":"-29h44m58s","赤纬D(J2000)":"-29.749444444444446","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"1","方位角":"127","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"5627","标识":"NGC5627","M标识":"NGC5627","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h28m34.2s","赤经D(J2000)":"14.476166666666666","赤纬(J2000)":"+11h22m42s","赤纬D(J2000)":"11.378333333333334","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.7","短轴(分)":"1","方位角":"120","详细描述":"very faint, very small, round, 9th magnitude star to southwest","简略描述":"vF, vS, R, * 9 sp"},{"ID":"5628","标识":"NGC5628","M标识":"NGC5628","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h28m25.7s","赤经D(J2000)":"14.473805555555556","赤纬(J2000)":"+17h55m30s","赤纬D(J2000)":"17.925","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"175","详细描述":"pretty faint, small, round, gradually brighter middle and nucleus equivalent to 14th magnitude star","简略描述":"pF, S, R, gbMN = 14 m"},{"ID":"5629","标识":"NGC5629","M标识":"NGC5629","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"NGC 5629星系群","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h28m16.1s","赤经D(J2000)":"14.47113888888889","赤纬(J2000)":"+25h50m57s","赤纬D(J2000)":"25.849166666666665","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"1.8","方位角":"","详细描述":"pretty faint, small, round, gradually brighter middle","简略描述":"pF, S, R, gbM"},{"ID":"5630","标识":"NGC5630","M标识":"NGC5630","拓展名":"","组件":"","Class":"II 674","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h27m36.5s","赤经D(J2000)":"14.460138888888888","赤纬(J2000)":"+41h15m29s","赤纬D(J2000)":"41.25805555555556","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.2","短轴(分)":"0.7","方位角":"98","详细描述":"faint, small, extended 90°±, gradually brighter middle","简略描述":"F, S, E 90° ±, gbM"},{"ID":"5631","标识":"NGC5631","M标识":"NGC5631","拓展名":"","组件":"","Class":"I 236","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h26m33.3s","赤经D(J2000)":"14.442583333333333","赤纬(J2000)":"+56h34m59s","赤纬D(J2000)":"56.58305555555556","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.7","短轴(分)":"1.7","方位角":"","详细描述":"bright, small, round, pretty suddenly brighter middle and nucleus","简略描述":"B, S, R, psbMN"},{"ID":"5632","标识":"NGC5632","M标识":"NGC5632","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h37m53.4s","赤经D(J2000)":"14.6315","赤纬(J2000)":"-0h23m53s","赤纬D(J2000)":"-0.3980555555555556","可见光星等V":"11.8","摄影(蓝光)星等B":"12.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"110","详细描述":"nebula, 11th magnitude star 150 seconds to east (Auwers 33)","简略描述":"Neb, * 11 f 150s (Auw 33)"},{"ID":"5633","标识":"NGC5633","M标识":"NGC5633","拓展名":"","组件":"","Class":"I 185","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h27m28.5s","赤经D(J2000)":"14.457916666666666","赤纬(J2000)":"+46h8m51s","赤纬D(J2000)":"46.1475","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.1","短轴(分)":"1.1","方位角":"10","详细描述":"considerably bright, pretty small, round, pretty gradually a little brighter middle","简略描述":"cB, pS, R, pglbM"},{"ID":"5634","标识":"NGC5634","M标识":"NGC5634","拓展名":"","组件":"","Class":"I 70","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"IV","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h29m37.3s","赤经D(J2000)":"14.493694444444444","赤纬(J2000)":"-5h58m33s","赤纬D(J2000)":"-5.975833333333333","可见光星等V":"9.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5.5","短轴(分)":"","方位角":"","详细描述":"globular cluster, very bright, considerably large, round, gradually brighter middle, well resolved, clearly consisting of stars, stars of 19th magnitude, 8th magnitude star to southeast","简略描述":"globular, vB, cL, R, gbM, rrr, st 19, * 8 sf"},{"ID":"5635","标识":"NGC5635","M标识":"NGC5635","拓展名":"","组件":"","Class":"III 132","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h28m31.5s","赤经D(J2000)":"14.475416666666666","赤纬(J2000)":"+27h24m33s","赤纬D(J2000)":"27.409166666666664","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.3","短轴(分)":"1.1","方位角":"65","详细描述":"faint, small, extended, suddenly brighter middle","简略描述":"F, S, E, sbM"},{"ID":"5636","标识":"NGC5636","M标识":"NGC5636","拓展名":"","组件":"","Class":"II 580","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h29m39.1s","赤经D(J2000)":"14.494194444444444","赤纬(J2000)":"+3h16m0s","赤纬D(J2000)":"3.2666666666666666","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"40","详细描述":"extremely faint, considerably large, round, northwestern of 2","简略描述":"eF, cL, R, np of 2"},{"ID":"5637","标识":"NGC5637","M标识":"NGC5637","拓展名":"","组件":"","Class":"II 357","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h28m59.5s","赤经D(J2000)":"14.483194444444445","赤纬(J2000)":"+23h11m27s","赤纬D(J2000)":"23.190833333333334","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"7","详细描述":"very faint, small, round, very gradually brighter middle","简略描述":"vF, S, R, vgbM"},{"ID":"5638","标识":"NGC5638","M标识":"NGC5638","拓展名":"","组件":"","Class":"II 581","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h29m40.4s","赤经D(J2000)":"14.494555555555555","赤纬(J2000)":"+3h14m0s","赤纬D(J2000)":"3.2333333333333334","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.7","短轴(分)":"2.4","方位角":"150","详细描述":"considerably bright, pretty large, round, southeastern of 2","简略描述":"cB, pL, R, sf of 2"},{"ID":"5639","标识":"NGC5639","M标识":"NGC5639","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h28m46.5s","赤经D(J2000)":"14.479583333333334","赤纬(J2000)":"+30h24m45s","赤纬D(J2000)":"30.412499999999998","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"98","详细描述":"very faint, round, 7th magnitude star to west, 11th magnitude star to south","简略描述":"vF, R, * 7 p, * 11 s"},{"ID":"5640","标识":"NGC5640","M标识":"NGC5640","拓展名":"","组件":"","Class":"III 949","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"14h20m40.7s","赤经D(J2000)":"14.34463888888889","赤纬(J2000)":"+80h7m25s","赤纬D(J2000)":"80.1236111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"24","详细描述":"extremely faint, small, a little extended","简略描述":"eF, S, lE"},{"ID":"5641","标识":"NGC5641","M标识":"NGC5641","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h29m16.6s","赤经D(J2000)":"14.487944444444443","赤纬(J2000)":"+28h49m18s","赤纬D(J2000)":"28.821666666666665","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.4","短轴(分)":"1.3","方位角":"158","详细描述":"pretty bright, pretty small, a little extended, much brighter middle, mottled but not resolved?","简略描述":"pB, pS, lE, mbM, r ?"},{"ID":"5642","标识":"NGC5642","M标识":"NGC5642","拓展名":"","组件":"","Class":"III 126","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h29m13.4s","赤经D(J2000)":"14.487055555555555","赤纬(J2000)":"+30h1m38s","赤纬D(J2000)":"30.02722222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"130","详细描述":"considerably faint, small, star involved, 12th magnitude star to northeast","简略描述":"cF, S, * inv, * 12 nf"},{"ID":"5643","标识":"NGC5643","M标识":"NGC5643","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"14h32m40.7s","赤经D(J2000)":"14.544638888888889","赤纬(J2000)":"-44h10m28s","赤纬D(J2000)":"-44.17444444444444","可见光星等V":"10","摄影(蓝光)星等B":"10.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"4.7","短轴(分)":"4.2","方位角":"153","详细描述":"pretty bright, large, round, very gradually a little brighter middle, star involved","简略描述":"pB, L, R, vglbM, st inv"},{"ID":"5644","标识":"NGC5644","M标识":"NGC5644","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h30m25.5s","赤经D(J2000)":"14.507083333333334","赤纬(J2000)":"+11h55m41s","赤纬D(J2000)":"11.928055555555554","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"pretty bright, pretty small, round, gradually much brighter middle","简略描述":"pB, pS, R, gmbM"},{"ID":"5645","标识":"NGC5645","M标识":"NGC5645","拓展名":"","组件":"","Class":"II 150","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h30m39.2s","赤经D(J2000)":"14.51088888888889","赤纬(J2000)":"+7h16m29s","赤纬D(J2000)":"7.2747222222222225","可见光星等V":"12.5","摄影(蓝光)星等B":"13","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.6","短轴(分)":"1.6","方位角":"80","详细描述":"considerably faint, pretty large, irregularly round, gradually brighter middle","简略描述":"cF, pL, iR, gbM"},{"ID":"5646","标识":"NGC5646","M标识":"NGC5646","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h29m33.8s","赤经D(J2000)":"14.492722222222222","赤纬(J2000)":"+35h27m43s","赤纬D(J2000)":"35.46194444444445","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"81","详细描述":"extremely faint, extended southwest-northeast, 45 arcsec long","简略描述":"eF, E sp nf, 45\" l"},{"ID":"5647","标识":"NGC5647","M标识":"NGC5647","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h30m36s","赤经D(J2000)":"14.51","赤纬(J2000)":"+11h52m38s","赤纬D(J2000)":"11.877222222222223","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"0","详细描述":"faint, small, round, very little brighter middle","简略描述":"F, S, R, vlbM"},{"ID":"5648","标识":"NGC5648","M标识":"NGC5648","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h30m32.5s","赤经D(J2000)":"14.509027777777778","赤纬(J2000)":"+14h1m24s","赤纬D(J2000)":"14.023333333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"172","详细描述":"very faint, small, no nucleus, h1824 near","简略描述":"vF, S, no Nucl, h 1824 nr"},{"ID":"5649","标识":"NGC5649","M标识":"NGC5649","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h30m32.5s","赤经D(J2000)":"14.509027777777778","赤纬(J2000)":"+14h1m24s","赤纬D(J2000)":"14.023333333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"172","详细描述":"very faint, small, no nucleus, h1824 near","简略描述":"eF, vS, np of 2"},{"ID":"5650","标识":"NGC5650","M标识":"NGC5650","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h31m0.9s","赤经D(J2000)":"14.516916666666667","赤纬(J2000)":"+5h58m42s","赤纬D(J2000)":"5.9783333333333335","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"1.4","方位角":"117","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"5651","标识":"NGC5651","M标识":"NGC5651","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h40m11.3s","赤经D(J2000)":"14.669805555555556","赤纬(J2000)":"-0h17m24s","赤纬D(J2000)":"-0.29","可见光星等V":"11.2","摄影(蓝光)星等B":"11.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.9","短轴(分)":"2.5","方位角":"10","详细描述":"nebula, round (Auwers 34)","简略描述":"Neb, R (Auw 34)"},{"ID":"5652","标识":"NGC5652","M标识":"NGC5652","拓展名":"","组件":"","Class":"II 891","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h31m0.9s","赤经D(J2000)":"14.516916666666667","赤纬(J2000)":"+5h58m42s","赤纬D(J2000)":"5.9783333333333335","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"1.4","方位角":"117","详细描述":"very faint, pretty small, round","简略描述":"pB, pL, vlE, bM"},{"ID":"5653","标识":"NGC5653","M标识":"NGC5653","拓展名":"","组件":"","Class":"II 330","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h30m10.3s","赤经D(J2000)":"14.50286111111111","赤纬(J2000)":"+31h12m55s","赤纬D(J2000)":"31.21527777777778","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"125","详细描述":"pretty faint, pretty small, round, brighter middle","简略描述":"pF, pS, R, bM"},{"ID":"5654","标识":"NGC5654","M标识":"NGC5654","拓展名":"","组件":"","Class":"III 420","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h30m1.4s","赤经D(J2000)":"14.500388888888889","赤纬(J2000)":"+36h21m37s","赤纬D(J2000)":"36.36027777777778","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1","方位角":"145","详细描述":"faint, small, extended?, double star involved?","简略描述":"F, S, E ?, ** inv ?"},{"ID":"5655","标识":"NGC5655","M标识":"NGC5655","拓展名":"","组件":"","Class":"III 645","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h30m51s","赤经D(J2000)":"14.514166666666666","赤纬(J2000)":"+13h58m9s","赤纬D(J2000)":"13.969166666666666","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"165","详细描述":"most extremely faint, southeastern of 2","简略描述":"eeF, sf of 2"},{"ID":"5656","标识":"NGC5656","M标识":"NGC5656","拓展名":"","组件":"","Class":"II 421","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h30m25.4s","赤经D(J2000)":"14.507055555555555","赤纬(J2000)":"+35h19m17s","赤纬D(J2000)":"35.32138888888889","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"50","详细描述":"pretty faint, pretty large, round, much brighter middle, mottled but not resolved","简略描述":"pF, pL, R, mbM, r"},{"ID":"5657","标识":"NGC5657","M标识":"NGC5657","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h30m43.6s","赤经D(J2000)":"14.51211111111111","赤纬(J2000)":"+29h10m50s","赤纬D(J2000)":"29.180555555555557","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.8","短轴(分)":"0.8","方位角":"163","详细描述":"faint, small, irregular, several very faint stars involved, mottled but not resolved?","简略描述":"F, S, irr, sev vF st inv, r?"},{"ID":"5658","标识":"NGC5658","M标识":"NGC5658","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h40m56.5s","赤经D(J2000)":"14.68236111111111","赤纬(J2000)":"-0h19m4s","赤纬D(J2000)":"-0.31777777777777777","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.2","短轴(分)":"1.2","方位角":"107","详细描述":"nebula, faint, extended (Auwers 35)","简略描述":"Neb, F, E (Auw 35)"},{"ID":"5659","标识":"NGC5659","M标识":"NGC5659","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h31m6s","赤经D(J2000)":"14.518333333333334","赤纬(J2000)":"+25h21m18s","赤纬D(J2000)":"25.355","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"43","详细描述":"extremely faint","简略描述":"eF"},{"ID":"5660","标识":"NGC5660","M标识":"NGC5660","拓展名":"","组件":"","Class":"II 695","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h29m48.7s","赤经D(J2000)":"14.49686111111111","赤纬(J2000)":"+49h37m21s","赤纬D(J2000)":"49.6225","可见光星等V":"11.9","摄影(蓝光)星等B":"12.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.7","短轴(分)":"2.6","方位角":"90","详细描述":"pretty bright, large, irregularly round, very gradually brighter middle","简略描述":"pB, L, iR, vgbM"},{"ID":"5661","标识":"NGC5661","M标识":"NGC5661","拓展名":"","组件":"","Class":"II 892","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h31m57.3s","赤经D(J2000)":"14.532583333333335","赤纬(J2000)":"+6h15m2s","赤纬D(J2000)":"6.250555555555556","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"23","详细描述":"very faint, pretty small, irregularly extended","简略描述":"vF, pS, iE"},{"ID":"5662","标识":"NGC5662","M标识":"NGC5662","拓展名":"","组件":"","Class":"","业余排名":"4","中文名":"舞毒蛾星团","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h35m30.8s","赤经D(J2000)":"14.591888888888889","赤纬(J2000)":"-56h39m46s","赤纬D(J2000)":"-56.66277777777778","可见光星等V":"5.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"30","短轴(分)":"","方位角":"","详细描述":"cluster, large, pretty rich, a little compressed, stars from 9th magnitude","简略描述":"Cl, L, pRi, lC, st 9…"},{"ID":"5663","标识":"NGC5663","M标识":"NGC5663","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h33m56.2s","赤经D(J2000)":"14.565611111111112","赤纬(J2000)":"-16h34m50s","赤纬D(J2000)":"-16.580555555555556","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"0","详细描述":"extremely faint, very small, round, gradually a little brighter middle","简略描述":"eF, vS, R, glbM"},{"ID":"5664","标识":"NGC5664","M标识":"NGC5664","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h33m43.7s","赤经D(J2000)":"14.562138888888889","赤纬(J2000)":"-14h37m10s","赤纬D(J2000)":"-14.619444444444445","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"30","详细描述":"pretty faint, small, extended, gradually brighter middle","简略描述":"pF, S, E, gbM"},{"ID":"5665","标识":"NGC5665","M标识":"NGC5665","拓展名":"","组件":"","Class":"II 27","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h32m25.6s","赤经D(J2000)":"14.540444444444445","赤纬(J2000)":"+8h4m45s","赤纬D(J2000)":"8.079166666666666","可见光星等V":"12","摄影(蓝光)星等B":"12.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.1","短轴(分)":"1.3","方位角":"145","详细描述":"pretty bright, pretty large, round, gradually brighter middle, mottled but not resolved","简略描述":"pB, pL, R, gbM, r"},{"ID":"5666","标识":"NGC5666","M标识":"NGC5666","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h33m9.3s","赤经D(J2000)":"14.552583333333335","赤纬(J2000)":"+10h30m39s","赤纬D(J2000)":"10.510833333333334","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"155","详细描述":"very faint, very small, round, stellar","简略描述":"vF, vS, R, stellar"},{"ID":"5667","标识":"NGC5667","M标识":"NGC5667","拓展名":"","组件":"","Class":"II 807","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"14h30m22.7s","赤经D(J2000)":"14.506305555555555","赤纬(J2000)":"+59h28m13s","赤纬D(J2000)":"59.47027777777778","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"168","详细描述":"pretty bright, pretty small, extended 0°","简略描述":"pB, pS, E 0°"},{"ID":"5668","标识":"NGC5668","M标识":"NGC5668","拓展名":"","组件":"","Class":"II 574","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h33m24.2s","赤经D(J2000)":"14.556722222222223","赤纬(J2000)":"+4h27m2s","赤纬D(J2000)":"4.450555555555556","可见光星等V":"11.5","摄影(蓝光)星等B":"12.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3","短轴(分)":"3","方位角":"","详细描述":"faint, pretty small, very little extended, 14th magnitude star involved","简略描述":"F, pS, vlE, * 14 inv"},{"ID":"5669","标识":"NGC5669","M标识":"NGC5669","拓展名":"","组件":"","Class":"II 79","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h32m44s","赤经D(J2000)":"14.545555555555556","赤纬(J2000)":"+9h53m32s","赤纬D(J2000)":"9.892222222222221","可见光星等V":"11.3","摄影(蓝光)星等B":"12","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"4","短轴(分)":"2.8","方位角":"50","详细描述":"faint, large, round, a little brighter middle, mottled but not resolved","简略描述":"F, L, R, lbM, r"},{"ID":"5670","标识":"NGC5670","M标识":"NGC5670","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"14h35m36.1s","赤经D(J2000)":"14.593361111111111","赤纬(J2000)":"-45h58m0s","赤纬D(J2000)":"-45.96666666666667","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"74","详细描述":"very faint, small, considerably extended, between 2 stars","简略描述":"vF, S, cE, bet 2 st"},{"ID":"5671","标识":"NGC5671","M标识":"NGC5671","拓展名":"","组件":"","Class":"III 882","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"14h27m42.3s","赤经D(J2000)":"14.461749999999999","赤纬(J2000)":"+69h41m41s","赤纬D(J2000)":"69.69472222222223","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"45","详细描述":"very faint, pretty large, round, brighter middle","简略描述":"vF, pL, R, bM"},{"ID":"5672","标识":"NGC5672","M标识":"NGC5672","拓展名":"","组件":"","Class":"III 310","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h32m38.5s","赤经D(J2000)":"14.544027777777778","赤纬(J2000)":"+31h40m13s","赤纬D(J2000)":"31.67027777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"50","详细描述":"very faint, very large, irregularly round, a little brighter middle, double star to west","简略描述":"vF, vL, iR, lbM, ** p"},{"ID":"5673","标识":"NGC5673","M标识":"NGC5673","拓展名":"","组件":"","Class":"II 696","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h31m30.6s","赤经D(J2000)":"14.525166666666667","赤纬(J2000)":"+49h57m31s","赤纬D(J2000)":"49.95861111111111","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.4","短轴(分)":"0.6","方位角":"136","详细描述":"faint, small, considerably extended, 15th magnitude star to northwest","简略描述":"F, S, cE, * 15 np"},{"ID":"5674","标识":"NGC5674","M标识":"NGC5674","拓展名":"","组件":"","Class":"II 893","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h33m52.2s","赤经D(J2000)":"14.5645","赤纬(J2000)":"+5h27m31s","赤纬D(J2000)":"5.458611111111111","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"1","方位角":"30","详细描述":"considerably faint, pretty small, round, gradually brighter middle","简略描述":"cF, pS, R, gbM"},{"ID":"5675","标识":"NGC5675","M标识":"NGC5675","拓展名":"","组件":"","Class":"II 422","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h32m39.7s","赤经D(J2000)":"14.544361111111112","赤纬(J2000)":"+36h18m9s","赤纬D(J2000)":"36.302499999999995","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.8","短轴(分)":"1","方位角":"137","详细描述":"faint, pretty small, extended, brighter middle","简略描述":"F, pS, E, bM"},{"ID":"5676","标识":"NGC5676","M标识":"NGC5676","拓展名":"","组件":"","Class":"I 189","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h32m46.4s","赤经D(J2000)":"14.546222222222221","赤纬(J2000)":"+49h27m25s","赤纬D(J2000)":"49.456944444444446","可见光星等V":"11.2","摄影(蓝光)星等B":"11.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.9","短轴(分)":"1.8","方位角":"47","详细描述":"bright, large, extended 45°±, pretty gradually brighter middle, mottled but not resolved","简略描述":"B, L, E 45° ±, pgbM, r"},{"ID":"5677","标识":"NGC5677","M标识":"NGC5677","拓展名":"","组件":"","Class":"III 283","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h34m12.6s","赤经D(J2000)":"14.570166666666667","赤纬(J2000)":"+25h28m6s","赤纬D(J2000)":"25.46833333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"135","详细描述":"very faint, very small, round, mottled but not resolved, 3 stars of 9th and 10th magnitude to northwest","简略描述":"vF, vS, R, r, 3 st 9, 10 np"},{"ID":"5678","标识":"NGC5678","M标识":"NGC5678","拓展名":"","组件":"","Class":"I 237","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"14h32m5.5s","赤经D(J2000)":"14.53486111111111","赤纬(J2000)":"+57h55m23s","赤纬D(J2000)":"57.92305555555555","可见光星等V":"11.3","摄影(蓝光)星等B":"12.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.3","短轴(分)":"1.4","方位角":"5","详细描述":"bright, large, a little extended 0°, very gradually much brighter middle","简略描述":"B, L, lE 0°, vgmbM"},{"ID":"5679","标识":"NGC5679","M标识":"NGC5679","拓展名":"","组件":"","Class":"II 894","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h35m8.7s","赤经D(J2000)":"14.58575","赤纬(J2000)":"+5h21m33s","赤纬D(J2000)":"5.359166666666666","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"127","详细描述":"very faint, small, round, 12th magnitude star attached","简略描述":"vF, S, R, * 12 att"},{"ID":"5680","标识":"NGC5680","M标识":"NGC5680","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h35m44.6s","赤经D(J2000)":"14.595722222222223","赤纬(J2000)":"-0h0m48s","赤纬D(J2000)":"-0.013333333333333334","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"15","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"5681","标识":"NGC5681","M标识":"NGC5681","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h35m43s","赤经D(J2000)":"14.595277777777778","赤纬(J2000)":"+8h18m0s","赤纬D(J2000)":"8.3","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"5","详细描述":"faint, small","简略描述":"F, S"},{"ID":"5682","标识":"NGC5682","M标识":"NGC5682","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h34m45.1s","赤经D(J2000)":"14.579194444444445","赤纬(J2000)":"+48h40m13s","赤纬D(J2000)":"48.67027777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"14.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"127","详细描述":"faint, pretty small, extended","简略描述":"F, pS, E"},{"ID":"5683","标识":"NGC5683","M标识":"NGC5683","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h34m52.4s","赤经D(J2000)":"14.581222222222221","赤纬(J2000)":"+48h39m45s","赤纬D(J2000)":"48.6625","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"170","详细描述":"faint, very small, a little extended","简略描述":"F, vS, lE"},{"ID":"5684","标识":"NGC5684","M标识":"NGC5684","拓展名":"","组件":"","Class":"III 421","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h35m50s","赤经D(J2000)":"14.597222222222223","赤纬(J2000)":"+36h32m37s","赤纬D(J2000)":"36.54361111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"105","详细描述":"faint, considerably small, round, brighter middle, western of 2","简略描述":"F, cS, R, bM, p of 2"},{"ID":"5685","标识":"NGC5685","M标识":"NGC5685","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h36m15.3s","赤经D(J2000)":"14.60425","赤纬(J2000)":"+29h54m30s","赤纬D(J2000)":"29.90833333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"very faint, very small, round, gradually brighter middle and nucleus equal to 15th magnitude (star)","简略描述":"vF, vS, R, gbM = 15 m"},{"ID":"5686","标识":"NGC5686","M标识":"NGC5686","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h36m2.5s","赤经D(J2000)":"14.600694444444445","赤纬(J2000)":"+36h30m13s","赤纬D(J2000)":"36.50361111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, small, round, eastern of 2","简略描述":"vF, S, R, f of 2"},{"ID":"5687","标识":"NGC5687","M标识":"NGC5687","拓展名":"","组件":"","Class":"II 808","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h34m52.2s","赤经D(J2000)":"14.581166666666666","赤纬(J2000)":"+54h28m36s","赤纬D(J2000)":"54.47666666666667","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.5","短轴(分)":"1.9","方位角":"105","详细描述":"pretty faint, small, irregular figure, mottled but not resolved, 10th magnitude star to east","简略描述":"pF, S, iF, r, * 10 f"},{"ID":"5688","标识":"NGC5688","M标识":"NGC5688","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"14h39m35.1s","赤经D(J2000)":"14.65975","赤纬(J2000)":"-45h1m7s","赤纬D(J2000)":"-45.01861111111111","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"3.1","短轴(分)":"1.9","方位角":"85","详细描述":"faint, small, very gradually brighter middle, among stars","简略描述":"F, S, vgbM, am st"},{"ID":"5689","标识":"NGC5689","M标识":"NGC5689","拓展名":"","组件":"","Class":"I 188","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h35m29.6s","赤经D(J2000)":"14.591555555555557","赤纬(J2000)":"+48h44m30s","赤纬D(J2000)":"48.74166666666667","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.3","短轴(分)":"1","方位角":"85","详细描述":"considerably bright, pretty large, extended 87°, pretty suddenly much brighter middle","简略描述":"cB, pL, E 87°, psmbM"},{"ID":"5690","标识":"NGC5690","M标识":"NGC5690","拓展名":"","组件":"","Class":"II 582","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h37m41.1s","赤经D(J2000)":"14.628083333333334","赤纬(J2000)":"+2h17m26s","赤纬D(J2000)":"2.2905555555555552","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.4","短轴(分)":"1","方位角":"143","详细描述":"very faint, much extended 138°, faint star attached on southeast, 7th magnitude star 4 arcmin to west","简略描述":"vF, mE 138°, F * att sf, * 7 p 4'"},{"ID":"5691","标识":"NGC5691","M标识":"NGC5691","拓展名":"","组件":"","Class":"II 681","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h37m53.4s","赤经D(J2000)":"14.6315","赤纬(J2000)":"-0h23m53s","赤纬D(J2000)":"-0.3980555555555556","可见光星等V":"11.8","摄影(蓝光)星等B":"12.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"110","详细描述":"pretty bright, pretty small, a little extended, gradually brighter middle","简略描述":"pB, pS, lE, gbM"},{"ID":"5692","标识":"NGC5692","M标识":"NGC5692","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h38m18s","赤经D(J2000)":"14.638333333333334","赤纬(J2000)":"+3h24m36s","赤纬D(J2000)":"3.4099999999999997","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"35","详细描述":"pretty bright, very small, round, gradually brighter middle","简略描述":"pB, vS, R, gbM"},{"ID":"5693","标识":"NGC5693","M标识":"NGC5693","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h36m11.3s","赤经D(J2000)":"14.60313888888889","赤纬(J2000)":"+48h35m7s","赤纬D(J2000)":"48.58527777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"0","详细描述":"faint, pretty large, 13th magnitude star attached on south","简略描述":"F, pL, * 13 att s"},{"ID":"5694","标识":"NGC5694","M标识":"NGC5694","拓展名":"","组件":"","Class":"II 196","业余排名":"2","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VII","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"14h39m36.5s","赤经D(J2000)":"14.66013888888889","赤纬(J2000)":"-26h32m16s","赤纬D(J2000)":"-26.53777777777778","可见光星等V":"10.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.3","短轴(分)":"","方位角":"","详细描述":"considerably bright, considerably small, round, pretty suddenly brighter middle, mottled but not resolved, 9.5 magnitude star to southwest","简略描述":"cB, cS, R, psbM, r, * 9.5 sp"},{"ID":"5695","标识":"NGC5695","M标识":"NGC5695","拓展名":"","组件":"","Class":"II 423","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h37m22s","赤经D(J2000)":"14.622777777777777","赤纬(J2000)":"+36h34m4s","赤纬D(J2000)":"36.56777777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"150","详细描述":"pretty bright, considerably small, round, brighter middle, mottled but not resolved","简略描述":"pB, cS, R, bM, r"},{"ID":"5696","标识":"NGC5696","M标识":"NGC5696","拓展名":"","组件":"","Class":"II 648","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h36m57s","赤经D(J2000)":"14.615833333333333","赤纬(J2000)":"+41h49m42s","赤纬D(J2000)":"41.82833333333333","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2","短轴(分)":"1.5","方位角":"45","详细描述":"considerably faint, considerably small, round, a little brighter middle, mottled but not resolved","简略描述":"cF, cS, R, lbM, r"},{"ID":"5697","标识":"NGC5697","M标识":"NGC5697","拓展名":"","组件":"","Class":"II 675","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h36m32s","赤经D(J2000)":"14.608888888888888","赤纬(J2000)":"+41h41m7s","赤纬D(J2000)":"41.68527777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"21","详细描述":"faint, very small, round, brighter middle, 4 bright stars to west","简略描述":"F, vS, R, bM, 4 B st p"},{"ID":"5698","标识":"NGC5698","M标识":"NGC5698","拓展名":"","组件":"","Class":"II 700","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h37m14.6s","赤经D(J2000)":"14.620722222222224","赤纬(J2000)":"+38h27m16s","赤纬D(J2000)":"38.45444444444445","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"0.9","方位角":"70","详细描述":"considerably faint, considerably small, a little extended, in triangle of stars","简略描述":"cF, cS, lE, in Δ of st"},{"ID":"5699","标识":"NGC5699","M标识":"NGC5699","拓展名":"","组件":"","Class":"III 127","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m42.4s","赤经D(J2000)":"14.645111111111111","赤纬(J2000)":"+30h27m57s","赤纬D(J2000)":"30.465833333333332","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"75","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"5700","标识":"NGC5700","M标识":"NGC5700","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h37m1.6s","赤经D(J2000)":"14.617111111111111","赤纬(J2000)":"+48h32m43s","赤纬D(J2000)":"48.54527777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.4","方位角":"38","详细描述":"extremely faint, small, mottled but not resolved, 11th magnitude star 4' to southwest","简略描述":"eF, S, r, * 11 sp 4'"},{"ID":"5701","标识":"NGC5701","M标识":"NGC5701","拓展名":"","组件":"","Class":"II 575","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h39m11.1s","赤经D(J2000)":"14.653083333333333","赤纬(J2000)":"+5h21m49s","赤纬D(J2000)":"5.363611111111111","可见光星等V":"10.9","摄影(蓝光)星等B":"11.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"4.3","短轴(分)":"4.1","方位角":"90","详细描述":"considerably bright, pretty small, round, much brighter middle, 11th magnitude star 15 seconds of time to west","简略描述":"cB, pS, R, mbM, * 11 p 15s"},{"ID":"5702","标识":"NGC5702","M标识":"NGC5702","拓展名":"","组件":"","Class":"III 894","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m55s","赤经D(J2000)":"14.64861111111111","赤纬(J2000)":"+20h30m24s","赤纬D(J2000)":"20.506666666666668","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"150","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"5703","标识":"NGC5703","M标识":"NGC5703","拓展名":"","组件":"","Class":"III 128","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m50.2s","赤经D(J2000)":"14.647277777777777","赤纬(J2000)":"+30h26m33s","赤纬D(J2000)":"30.4425","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"105","详细描述":"very faint, very small, irregularly round","简略描述":"vF, vS, iR"},{"ID":"5704","标识":"NGC5704","M标识":"NGC5704","拓展名":"","组件":"","Class":"II 649","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m16.2s","赤经D(J2000)":"14.637833333333333","赤纬(J2000)":"+40h27m28s","赤纬D(J2000)":"40.45777777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"177","详细描述":"faint, considerably small, a little extended 0°±","简略描述":"F, cS, lE 0° ±"},{"ID":"5705","标识":"NGC5705","M标识":"NGC5705","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h39m49.8s","赤经D(J2000)":"14.663833333333333","赤纬(J2000)":"-0h43m6s","赤纬D(J2000)":"-0.7183333333333334","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"3","短轴(分)":"1.9","方位角":"75","详细描述":"extremely faint, large, a little extended, extremely faint diffuse nebulosity around","简略描述":"eF, L, lE, eF dif neby around"},{"ID":"5706","标识":"NGC5706","M标识":"NGC5706","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E3","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m42.4s","赤经D(J2000)":"14.645111111111111","赤纬(J2000)":"+30h27m57s","赤纬D(J2000)":"30.465833333333332","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"75","详细描述":"very faint, very small, round, very little brighter middle","简略描述":"vF, vS, R, vlbM"},{"ID":"5707","标识":"NGC5707","M标识":"NGC5707","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h37m30.8s","赤经D(J2000)":"14.625222222222222","赤纬(J2000)":"+51h33m44s","赤纬D(J2000)":"51.56222222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.5","短轴(分)":"0.5","方位角":"35","详细描述":"bright, pretty small, round","简略描述":"B, pS, R"},{"ID":"5708","标识":"NGC5708","M标识":"NGC5708","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h37m55.7s","赤经D(J2000)":"14.632138888888889","赤纬(J2000)":"+40h30m49s","赤纬D(J2000)":"40.51361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, considerably small, a little extended 0°±","简略描述":"F, pL, E 0° ±, gbM"},{"ID":"5709","标识":"NGC5709","M标识":"NGC5709","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m50.2s","赤经D(J2000)":"14.647277777777777","赤纬(J2000)":"+30h26m33s","赤纬D(J2000)":"30.4425","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"105","详细描述":"very faint, very small, irregularly round","简略描述":"vF, S, iF, E pf"},{"ID":"5710","标识":"NGC5710","M标识":"NGC5710","拓展名":"","组件":"","Class":"III 895","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h39m16.2s","赤经D(J2000)":"14.6545","赤纬(J2000)":"+20h2m37s","赤纬D(J2000)":"20.04361111111111","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"153","详细描述":"very faint, small, very gradually brighter middle, double star to east, western of 2","简略描述":"vF, S, vgbM, ** f, p of 2"},{"ID":"5711","标识":"NGC5711","M标识":"NGC5711","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h39m22.5s","赤经D(J2000)":"14.65625","赤纬(J2000)":"+19h59m26s","赤纬D(J2000)":"19.990555555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.6","方位角":"73","详细描述":"extremely extended, very small, double star attached, eastern of 2","简略描述":"eF, vS, ** att, f of 2"},{"ID":"5712","标识":"NGC5712","M标识":"NGC5712","拓展名":"","组件":"","Class":"III 950","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"14h29m41.6s","赤经D(J2000)":"14.494888888888887","赤纬(J2000)":"+78h51m53s","赤纬D(J2000)":"78.86472222222221","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, small, round, small cluster to west","简略描述":"vF, S, R, S Cl p"},{"ID":"5713","标识":"NGC5713","M标识":"NGC5713","拓展名":"","组件":"","Class":"I 182","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h40m11.3s","赤经D(J2000)":"14.669805555555556","赤纬(J2000)":"-0h17m24s","赤纬D(J2000)":"-0.29","可见光星等V":"11.2","摄影(蓝光)星等B":"11.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.9","短轴(分)":"2.5","方位角":"10","详细描述":"considerably bright, pretty large, round, pretty suddenly much brighter middle, mottled but not resolved","简略描述":"cB, pL, R, psmbM, r"},{"ID":"5714","标识":"NGC5714","M标识":"NGC5714","拓展名":"","组件":"","Class":"III 675","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m12.1s","赤经D(J2000)":"14.636694444444444","赤纬(J2000)":"+46h38m17s","赤纬D(J2000)":"46.63805555555555","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.2","短轴(分)":"0.4","方位角":"82","详细描述":"very faint, pretty small, extended east-west, double star to north, 1st of 6","简略描述":"vF, pS, E pf, D * n, 1st of 6"},{"ID":"5715","标识":"NGC5715","M标识":"NGC5715","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"圆规座","星座(En)":"CIR","赤经(J2000)":"14h43m39s","赤经D(J2000)":"14.727500000000001","赤纬(J2000)":"-57h34m13s","赤纬D(J2000)":"-57.57027777777778","可见光星等V":"9.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"cluster, large, pretty rich, compressed middle, stars from 11th to 13th magnitude","简略描述":"Cl, L, p Ri, CM, st 11…13"},{"ID":"5716","标识":"NGC5716","M标识":"NGC5716","拓展名":"","组件":"","Class":"III 671","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h41m5.5s","赤经D(J2000)":"14.684861111111111","赤纬(J2000)":"-17h28m36s","赤纬D(J2000)":"-17.476666666666667","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.9","短轴(分)":"1.3","方位角":"85","详细描述":"very faint, pretty large, round","简略描述":"vF, pL, R"},{"ID":"5717","标识":"NGC5717","M标识":"NGC5717","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m37.6s","赤经D(J2000)":"14.643777777777776","赤纬(J2000)":"+46h39m49s","赤纬D(J2000)":"46.66361111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"36","详细描述":"very faint, small, round, double star near, 2nd of 6","简略描述":"vF, S, R, D * nr, 2nd of 6"},{"ID":"5718","标识":"NGC5718","M标识":"NGC5718","拓展名":"","组件":"","Class":"III 550","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h40m42.8s","赤经D(J2000)":"14.678555555555555","赤纬(J2000)":"+3h27m56s","赤纬D(J2000)":"3.465555555555556","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"117","详细描述":"very faint, small, round, very gradually a little brighter middle, 8th or 9th magnitude star to northeast","简略描述":"vF, S, R, vglbM, * 8·9 nf"},{"ID":"5719","标识":"NGC5719","M标识":"NGC5719","拓展名":"","组件":"","Class":"II 682","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h40m56.5s","赤经D(J2000)":"14.68236111111111","赤纬(J2000)":"-0h19m4s","赤纬D(J2000)":"-0.31777777777777777","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.2","短轴(分)":"1.2","方位角":"107","详细描述":"pretty faint, small, a little extended, brighter middle","简略描述":"pF, S, lE, bM"},{"ID":"5720","标识":"NGC5720","M标识":"NGC5720","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m33.2s","赤经D(J2000)":"14.642555555555555","赤纬(J2000)":"+50h48m55s","赤纬D(J2000)":"50.81527777777777","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"2.1","短轴(分)":"1.4","方位角":"140","详细描述":"most extremely faint, pretty small, round, between 2 stars","简略描述":"eeF, pS, R, bet 2 st"},{"ID":"5721","标识":"NGC5721","M标识":"NGC5721","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m53s","赤经D(J2000)":"14.648055555555555","赤纬(J2000)":"+46h40m28s","赤纬D(J2000)":"46.67444444444444","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"140","详细描述":"very faint, small, round, 'forms a trapezium with faint nebulosity connecting?' NGC 5722, 5723 and 5724","简略描述":"vF, S, R, Form trapezium F neb connecting?"},{"ID":"5722","标识":"NGC5722","M标识":"NGC5722","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m54.3s","赤经D(J2000)":"14.648416666666666","赤纬(J2000)":"+46h39m58s","赤纬D(J2000)":"46.66611111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, small, round, pretty suddenly brighter middle, 'forms a trapezium with faint nebulosity connecting?' NGC 5721, 5723 and 5724","简略描述":"vF, S, R, psbM, Form trapezium F neb connecting?"},{"ID":"5723","标识":"NGC5723","M标识":"NGC5723","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m57.8s","赤经D(J2000)":"14.649388888888888","赤纬(J2000)":"+46h41m24s","赤纬D(J2000)":"46.69","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"3","详细描述":"very faint, small, round, 'forms a trapezium with faint nebulosity connecting?' NGC 5721, 5722 and 5724","简略描述":"vF, S, R, Form trapezium F neb connecting?"},{"ID":"5724","标识":"NGC5724","M标识":"NGC5724","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h39m2s","赤经D(J2000)":"14.650555555555556","赤纬(J2000)":"+46h41m32s","赤纬D(J2000)":"46.69222222222222","可见光星等V":"99","摄影(蓝光)星等B":"16.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, 'forms a trapezium with faint nebulosity connecting?' NGC 5721, 5722 and 5723","简略描述":"vF, S, R, Form trapezium F neb connecting?"},{"ID":"5725","标识":"NGC5725","M标识":"NGC5725","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h40m58.2s","赤经D(J2000)":"14.682833333333333","赤纬(J2000)":"+2h11m8s","赤纬D(J2000)":"2.1855555555555553","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"40","详细描述":"very faint, small, disc, 15th magnitude star 95","简略描述":"vF, S, disc, * 15 s 95\""},{"ID":"5726","标识":"NGC5726","M标识":"NGC5726","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h42m55.8s","赤经D(J2000)":"14.715499999999999","赤纬(J2000)":"-18h26m39s","赤纬D(J2000)":"-18.444166666666668","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"1","方位角":"133","详细描述":"faint, small, round, gradually brighter middle, magnitude 10.5 star 3' to northwest","简略描述":"F, S, R, gbM, * 10.5 np 3'"},{"ID":"5727","标识":"NGC5727","M标识":"NGC5727","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h40m26.1s","赤经D(J2000)":"14.673916666666667","赤纬(J2000)":"+33h59m20s","赤纬D(J2000)":"33.98888888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"2.3","短轴(分)":"1.2","方位角":"135","详细描述":"extremely faint, pretty large, round, diffuse","简略描述":"eF, pL, R, dif"},{"ID":"5728","标识":"NGC5728","M标识":"NGC5728","拓展名":"","组件":"","Class":"I 184","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h42m24s","赤经D(J2000)":"14.706666666666665","赤纬(J2000)":"-17h15m8s","赤纬D(J2000)":"-17.252222222222223","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.2","短轴(分)":"1.9","方位角":"30","详细描述":"pretty faint, pretty large, pretty much extended 45°±, much brighter middle, 10th magnitude star to south","简略描述":"pF, pL, pmE 45° ±, mbM, * 10 s"},{"ID":"5729","标识":"NGC5729","M标识":"NGC5729","拓展名":"","组件":"","Class":"VI 8, III 508","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h42m6.9s","赤经D(J2000)":"14.701916666666666","赤纬(J2000)":"-9h0m35s","赤纬D(J2000)":"-9.009722222222223","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.6","短轴(分)":"0.7","方位角":"166","详细描述":"faint, pretty large, extended, mottled but not resolved","简略描述":"F, pL, E, r"},{"ID":"5730","标识":"NGC5730","M标识":"NGC5730","拓展名":"","组件":"","Class":"III 657","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h39m52.1s","赤经D(J2000)":"14.664472222222223","赤纬(J2000)":"+42h44m33s","赤纬D(J2000)":"42.7425","可见光星等V":"14","摄影(蓝光)星等B":"14.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"0.4","方位角":"88","详细描述":"very faint, considerably small, extended 90°±","简略描述":"vF, cS, E 90° ±"},{"ID":"5731","标识":"NGC5731","M标识":"NGC5731","拓展名":"","组件":"","Class":"III 658","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h40m9.3s","赤经D(J2000)":"14.66925","赤纬(J2000)":"+42h46m45s","赤纬D(J2000)":"42.77916666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"116","详细描述":"very faint, extremely small, a little extended","简略描述":"vF, eS, lE"},{"ID":"5732","标识":"NGC5732","M标识":"NGC5732","拓展名":"","组件":"","Class":"III 686","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h40m38.9s","赤经D(J2000)":"14.677472222222221","赤纬(J2000)":"+38h38m17s","赤纬D(J2000)":"38.63805555555555","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"40","详细描述":"very faint, small, round, a little brighter middle","简略描述":"vF, S, R, lbM"},{"ID":"5733","标识":"NGC5733","M标识":"NGC5733","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h42m45.8s","赤经D(J2000)":"14.712722222222222","赤纬(J2000)":"-0h21m5s","赤纬D(J2000)":"-0.35138888888888886","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.4","方位角":"25","详细描述":"very faint, small, much extended","简略描述":"vF, S, mE"},{"ID":"5734","标识":"NGC5734","M标识":"NGC5734","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h45m9.1s","赤经D(J2000)":"14.752527777777777","赤纬(J2000)":"-20h52m13s","赤纬D(J2000)":"-20.87027777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"1","方位角":"38","详细描述":"very faint, small, a little extended, gradually a little brighter middle","简略描述":"vF, S, lE, glbM"},{"ID":"5735","标识":"NGC5735","M标识":"NGC5735","拓展名":"","组件":"","Class":"III 133","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h42m33.4s","赤经D(J2000)":"14.709277777777777","赤纬(J2000)":"+28h43m36s","赤纬D(J2000)":"28.726666666666667","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.4","短轴(分)":"1.9","方位角":"40","详细描述":"very faint, large, irregularly round, a little brighter middle","简略描述":"vF, L, iR, lbM"},{"ID":"5736","标识":"NGC5736","M标识":"NGC5736","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h43m30.8s","赤经D(J2000)":"14.725222222222222","赤纬(J2000)":"+11h12m11s","赤纬D(J2000)":"11.203055555555554","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"108","详细描述":"most extremely faint, small, a little extended, very difficult","简略描述":"eeF, S, lE, v diffic"},{"ID":"5737","标识":"NGC5737","M标识":"NGC5737","拓展名":"","组件":"","Class":"III 896","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h43m12s","赤经D(J2000)":"14.72","赤纬(J2000)":"+18h52m50s","赤纬D(J2000)":"18.880555555555556","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"170","详细描述":"very faint, considerably small, round, very gradually a little brighter middle","简略描述":"vF, cS, R, vglbM"},{"ID":"5738","标识":"NGC5738","M标识":"NGC5738","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h43m56.5s","赤经D(J2000)":"14.73236111111111","赤纬(J2000)":"+1h36m13s","赤纬D(J2000)":"1.603611111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.3","方位角":"57","详细描述":"faint, small, brighter middle","简略描述":"F, S, bM"},{"ID":"5739","标识":"NGC5739","M标识":"NGC5739","拓展名":"","组件":"","Class":"I 171","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h42m28.9s","赤经D(J2000)":"14.708027777777778","赤纬(J2000)":"+41h50m35s","赤纬D(J2000)":"41.84305555555556","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.3","短轴(分)":"2.1","方位角":"0","详细描述":"pretty bright, small, round, suddenly much brighter middle, mottled but not resolved, star near","简略描述":"pB, S, R, smbM, r, * nr"},{"ID":"5740","标识":"NGC5740","M标识":"NGC5740","拓展名":"","组件":"","Class":"II 538","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h44m24.5s","赤经D(J2000)":"14.740138888888888","赤纬(J2000)":"+1h40m48s","赤纬D(J2000)":"1.68","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.8","短轴(分)":"1.5","方位角":"160","详细描述":"pretty bright, large, irregularly round, gradually brighter middle, mottled but not resolved","简略描述":"pB, L, iR, gbM, r"},{"ID":"5741","标识":"NGC5741","M标识":"NGC5741","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h45m51.6s","赤经D(J2000)":"14.764333333333333","赤纬(J2000)":"-11h54m49s","赤纬D(J2000)":"-11.913611111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"very faint, very small, round, suddenly brighter middle and nucleus","简略描述":"vF, vS, R, sbMN"},{"ID":"5742","标识":"NGC5742","M标识":"NGC5742","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h45m36.8s","赤经D(J2000)":"14.760222222222222","赤纬(J2000)":"-11h48m35s","赤纬D(J2000)":"-11.809722222222224","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"73","详细描述":"faint, pretty small, pretty much extended, gradually brighter middle and nucleus","简略描述":"F, pS, pmE, gbMN"},{"ID":"5743","标识":"NGC5743","M标识":"NGC5743","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h45m10.9s","赤经D(J2000)":"14.753027777777778","赤纬(J2000)":"-20h54m47s","赤纬D(J2000)":"-20.913055555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"95","详细描述":"faint, small, much extended, suddenly much brighter middle and nucleus","简略描述":"F, S, mE, smbMN"},{"ID":"5744","标识":"NGC5744","M标识":"NGC5744","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h46m38.4s","赤经D(J2000)":"14.777333333333335","赤纬(J2000)":"-18h30m48s","赤纬D(J2000)":"-18.513333333333332","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.7","方位角":"108","详细描述":"extremely faint, very small, nebulous?","简略描述":"eF, vS, neb?"},{"ID":"5745","标识":"NGC5745","M标识":"NGC5745","拓展名":"","组件":"1","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h45m1.8s","赤经D(J2000)":"14.7505","赤纬(J2000)":"-13h56m48s","赤纬D(J2000)":"-13.946666666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"77","详细描述":"very faint, small, extended, pretty suddenly a little brighter middle","简略描述":"vF, S, E, pslbM"},{"ID":"5746","标识":"NGC5746","M标识":"NGC5746","拓展名":"","组件":"","Class":"I 126","业余排名":"6","中文名":"刃珠星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h44m55.7s","赤经D(J2000)":"14.748805555555554","赤纬(J2000)":"+1h57m22s","赤纬D(J2000)":"1.9561111111111111","可见光星等V":"10.3","摄影(蓝光)星等B":"11.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"7.4","短轴(分)":"1.3","方位角":"170","详细描述":"bright, large, very much extended 170°, brighter middle and bright nucleus","简略描述":"B, L, vmE 170°, bmBN"},{"ID":"5747","标识":"NGC5747","M标识":"NGC5747","拓展名":"","组件":"","Class":"III 48","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h44m20.7s","赤经D(J2000)":"14.739083333333333","赤纬(J2000)":"+12h7m55s","赤纬D(J2000)":"12.131944444444445","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"5748","标识":"NGC5748","M标识":"NGC5748","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h45m5s","赤经D(J2000)":"14.751388888888888","赤纬(J2000)":"+21h55m0s","赤纬D(J2000)":"21.916666666666668","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"150","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"5749","标识":"NGC5749","M标识":"NGC5749","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV1p","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"14h48m48.8s","赤经D(J2000)":"14.813555555555556","赤纬(J2000)":"-54h29m37s","赤纬D(J2000)":"-54.493611111111115","可见光星等V":"8.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"cluster, pretty large, pretty rich, a little compressed, stars from 10th to 11th magnitude","简略描述":"Cl, pL, pRi, lC, st 10…11"},{"ID":"5750","标识":"NGC5750","M标识":"NGC5750","拓展名":"","组件":"","Class":"I 183","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h46m10.9s","赤经D(J2000)":"14.769694444444445","赤纬(J2000)":"-0h13m24s","赤纬D(J2000)":"-0.22333333333333333","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.2","短轴(分)":"1.5","方位角":"65","详细描述":"pretty faint, pretty small, very little extended, mottled but not resolved","简略描述":"pF, pS, vlE, r"},{"ID":"5751","标识":"NGC5751","M标识":"NGC5751","拓展名":"","组件":"","Class":"II 809","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h43m49.1s","赤经D(J2000)":"14.730305555555555","赤纬(J2000)":"+53h24m2s","赤纬D(J2000)":"53.400555555555556","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"55","详细描述":"faint, small, very little extended, making a triangle with 2 stars of 10th or 11th magnitude","简略描述":"F, S, vlE, Δ 2 st 10·11"},{"ID":"5752","标识":"NGC5752","M标识":"NGC5752","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h45m14.2s","赤经D(J2000)":"14.753944444444445","赤纬(J2000)":"+38h43m45s","赤纬D(J2000)":"38.72916666666667","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"120","详细描述":"faint, 1 arcmin west of h 1878","简略描述":"F, 1' p h 1878"},{"ID":"5753","标识":"NGC5753","M标识":"NGC5753","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h45m18.8s","赤经D(J2000)":"14.755222222222223","赤纬(J2000)":"+38h48m23s","赤纬D(J2000)":"38.80638888888888","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"153","详细描述":"faint, brighter middle, northwest of h 1878","简略描述":"F, bM, np h 1878"},{"ID":"5754","标识":"NGC5754","M标识":"NGC5754","拓展名":"","组件":"","Class":"III 687","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h45m19.6s","赤经D(J2000)":"14.755444444444445","赤纬(J2000)":"+38h43m58s","赤纬D(J2000)":"38.73277777777778","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2","短轴(分)":"1.8","方位角":"33","详细描述":"faint, 1 arcmin west of h 1878","简略描述":"cF, cS, R, bM"},{"ID":"5755","标识":"NGC5755","M标识":"NGC5755","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h45m24.5s","赤经D(J2000)":"14.756805555555555","赤纬(J2000)":"+38h46m49s","赤纬D(J2000)":"38.780277777777776","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"1","方位角":"15","详细描述":"faint, 2' northeast of h 1878","简略描述":"F, 2' nf h 1878"},{"ID":"5756","标识":"NGC5756","M标识":"NGC5756","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h47m33.7s","赤经D(J2000)":"14.792694444444445","赤纬(J2000)":"-14h51m12s","赤纬D(J2000)":"-14.853333333333333","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.8","短轴(分)":"1.3","方位角":"62","详细描述":"pretty bright, pretty large, pretty much extended, gradually pretty much brighter middle","简略描述":"pB, pL, pmE, gpmbM"},{"ID":"5757","标识":"NGC5757","M标识":"NGC5757","拓展名":"","组件":"","Class":"III 690","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h47m46.3s","赤经D(J2000)":"14.796194444444444","赤纬(J2000)":"-19h4m40s","赤纬D(J2000)":"-19.07777777777778","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.1","短轴(分)":"1.7","方位角":"160","详细描述":"very faint, small, irregularly round, a little brighter middle","简略描述":"vF, S, iR, lbM"},{"ID":"5758","标识":"NGC5758","M标识":"NGC5758","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h47m2.1s","赤经D(J2000)":"14.783916666666666","赤纬(J2000)":"+13h40m4s","赤纬D(J2000)":"13.667777777777777","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"150","详细描述":"extremely faint, pretty small, round, 9th magnitude star 22 seconds of time to east","简略描述":"eF, pS, R, * 9 f 22s"},{"ID":"5759","标识":"NGC5759","M标识":"NGC5759","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h47m14.9s","赤经D(J2000)":"14.787472222222222","赤纬(J2000)":"+13h27m22s","赤纬D(J2000)":"13.45611111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"130","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"5760","标识":"NGC5760","M标识":"NGC5760","拓展名":"","组件":"","Class":"III 885","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h47m42.2s","赤经D(J2000)":"14.795055555555555","赤纬(J2000)":"+18h30m6s","赤纬D(J2000)":"18.501666666666665","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"96","详细描述":"very faint, very small, considerably extended 90°, very gradually a little brighter middle","简略描述":"vF, vS, cE 90°, vglbM"},{"ID":"5761","标识":"NGC5761","M标识":"NGC5761","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h49m8.2s","赤经D(J2000)":"14.818944444444444","赤纬(J2000)":"-20h22m32s","赤纬D(J2000)":"-20.375555555555557","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"102","详细描述":"very faint, small, round, gradually a little brighter middle and nucleus","简略描述":"vF, S, R, glbMN"},{"ID":"5762","标识":"NGC5762","M标识":"NGC5762","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h48m42.6s","赤经D(J2000)":"14.811833333333334","赤纬(J2000)":"+12h27m26s","赤纬D(J2000)":"12.45722222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"140","详细描述":"very faint, small, round, western of 2","简略描述":"vF, S, R, p of 2"},{"ID":"5763","标识":"NGC5763","M标识":"NGC5763","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h48m58.7s","赤经D(J2000)":"14.816305555555557","赤纬(J2000)":"+12h29m26s","赤纬D(J2000)":"12.490555555555554","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"most extremely faint, pretty small, very difficult, eastern of 2","简略描述":"eeF, pS, v diffic, f of 2"},{"ID":"5764","标识":"NGC5764","M标识":"NGC5764","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"14h53m31.8s","赤经D(J2000)":"14.892166666666666","赤纬(J2000)":"-52h40m16s","赤纬D(J2000)":"-52.67111111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"cluster, very faint, very small, very compressed","简略描述":"Cl, vF, vS, vC"},{"ID":"5765","标识":"NGC5765","M标识":"NGC5765","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h50m51.6s","赤经D(J2000)":"14.847666666666667","赤纬(J2000)":"+5h6m53s","赤纬D(J2000)":"5.1147222222222215","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"109","详细描述":"a double nebula, both extremely faint","简略描述":"D neb, both eF"},{"ID":"5766","标识":"NGC5766","M标识":"NGC5766","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h53m9.5s","赤经D(J2000)":"14.885972222222222","赤纬(J2000)":"-21h23m36s","赤纬D(J2000)":"-21.393333333333334","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"149","详细描述":"extremely faint, pretty small, round, gradually brighter middle","简略描述":"eF, pS, R, gbM"},{"ID":"5767","标识":"NGC5767","M标识":"NGC5767","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h49m34.3s","赤经D(J2000)":"14.826194444444445","赤纬(J2000)":"+47h22m34s","赤纬D(J2000)":"47.376111111111115","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"150","详细描述":"extremely faint, pretty small, round, star near","简略描述":"eF, pS, R, * nr"},{"ID":"5768","标识":"NGC5768","M标识":"NGC5768","拓展名":"","组件":"","Class":"III 373","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h52m7.9s","赤经D(J2000)":"14.868861111111112","赤纬(J2000)":"-2h31m49s","赤纬D(J2000)":"-2.5302777777777776","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"1.4","方位角":"120","详细描述":"faint, round, brighter middle and faint nucleus, small star to south","简略描述":"F, R, bMFN, S * s"},{"ID":"5769","标识":"NGC5769","M标识":"NGC5769","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h52m41.5s","赤经D(J2000)":"14.878194444444444","赤纬(J2000)":"+7h55m57s","赤纬D(J2000)":"7.9325","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"5770","标识":"NGC5770","M标识":"NGC5770","拓展名":"","组件":"","Class":"II 576","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h53m14.9s","赤经D(J2000)":"14.887472222222222","赤纬(J2000)":"+3h57m39s","赤纬D(J2000)":"3.9608333333333334","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"108","详细描述":"considerably faint, small, very little extended, brighter middle, binuclear","简略描述":"cF, S, vlE, bM, biN"},{"ID":"5771","标识":"NGC5771","M标识":"NGC5771","拓展名":"","组件":"","Class":"III 129","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h52m14.2s","赤经D(J2000)":"14.870611111111112","赤纬(J2000)":"+29h50m45s","赤纬D(J2000)":"29.84583333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"153","详细描述":"very faint, small, round, pretty gradually brighter middle","简略描述":"vF, S, R, pgbM"},{"ID":"5772","标识":"NGC5772","M标识":"NGC5772","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h51m38.9s","赤经D(J2000)":"14.860805555555554","赤纬(J2000)":"+40h35m58s","赤纬D(J2000)":"40.599444444444444","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.1","短轴(分)":"1.3","方位角":"35","详细描述":"pretty bright, pretty large, a little extended, pretty suddenly a little brighter middle, 8th magnitude star to northwest","简略描述":"pB, pL, lE, pslbM, * 8 np"},{"ID":"5773","标识":"NGC5773","M标识":"NGC5773","拓展名":"","组件":"","Class":"III 130","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h52m30.3s","赤经D(J2000)":"14.875083333333334","赤纬(J2000)":"+29h48m29s","赤纬D(J2000)":"29.808055555555555","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, small, round, pretty gradually brighter middle","简略描述":"vF, S, R, pgbM"},{"ID":"5774","标识":"NGC5774","M标识":"NGC5774","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h53m42.4s","赤经D(J2000)":"14.895111111111111","赤纬(J2000)":"+3h34m58s","赤纬D(J2000)":"3.5827777777777774","可见光星等V":"12.1","摄影(蓝光)星等B":"12.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"3","短轴(分)":"2.3","方位角":"145","详细描述":"pretty faint, pretty large, round, northwestern of 2","简略描述":"pF, pL, R, np of 2"},{"ID":"5775","标识":"NGC5775","M标识":"NGC5775","拓展名":"","组件":"","Class":"III 554","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h53m57.4s","赤经D(J2000)":"14.899277777777778","赤纬(J2000)":"+3h32m42s","赤纬D(J2000)":"3.545","可见光星等V":"11.4","摄影(蓝光)星等B":"12.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"4","短轴(分)":"1.1","方位角":"146","详细描述":"faint, pretty small, very much extended 148°, gradually a very little brighter middle","简略描述":"F, pS, vmE 148°, gvlbM"},{"ID":"5776","标识":"NGC5776","M标识":"NGC5776","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h54m32.7s","赤经D(J2000)":"14.909083333333333","赤纬(J2000)":"+2h58m1s","赤纬D(J2000)":"2.9669444444444446","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"102","详细描述":"very faint, pretty large, very little brighter middle, 8th or 9th magnitude star to southwest","简略描述":"vF, pL, vlbM, * 8·9 sp"},{"ID":"5777","标识":"NGC5777","M标识":"NGC5777","拓展名":"","组件":"","Class":"III 806","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"14h51m17.8s","赤经D(J2000)":"14.854944444444444","赤纬(J2000)":"+58h58m40s","赤纬D(J2000)":"58.97777777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.1","短轴(分)":"0.4","方位角":"144","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"5778","标识":"NGC5778","M标识":"NGC5778","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h54m31.4s","赤经D(J2000)":"14.908722222222222","赤纬(J2000)":"+18h38m34s","赤纬D(J2000)":"18.642777777777777","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"10","详细描述":"most extremely faint, pretty small, round, pretty bright star close to east, difficult","简略描述":"eeF, pS, R, pB * close f, diffic"},{"ID":"5779","标识":"NGC5779","M标识":"NGC5779","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"14h52m9.4s","赤经D(J2000)":"14.869277777777778","赤纬(J2000)":"+55h54m0s","赤纬D(J2000)":"55.9","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, pretty small, a little extended, a little brighter middle","简略描述":"vF, pS, lE, lbM"},{"ID":"5780","标识":"NGC5780","M标识":"NGC5780","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h54m22.6s","赤经D(J2000)":"14.906277777777778","赤纬(J2000)":"+28h56m24s","赤纬D(J2000)":"28.94","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"135","详细描述":"very faint, small, round, star near to southwest","简略描述":"vF, S, R, * nr sp"},{"ID":"5781","标识":"NGC5781","M标识":"NGC5781","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h56m41.1s","赤经D(J2000)":"14.94475","赤纬(J2000)":"-17h14m39s","赤纬D(J2000)":"-17.24416666666667","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"25","详细描述":"faint, small, round, brighter middle, 16th magnitude star to southwest","简略描述":"F, S, R, bM, * 16 sp"},{"ID":"5782","标识":"NGC5782","M标识":"NGC5782","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h55m55.3s","赤经D(J2000)":"14.932027777777778","赤纬(J2000)":"+11h51m42s","赤纬D(J2000)":"11.861666666666666","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, very small, extended, star near to southeast","简略描述":"eF, vS, E, * nr sf"},{"ID":"5783","标识":"NGC5783","M标识":"NGC5783","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h53m28.3s","赤经D(J2000)":"14.891194444444444","赤纬(J2000)":"+52h4m36s","赤纬D(J2000)":"52.07666666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"2.9","短轴(分)":"1.8","方位角":"0","详细描述":"pretty bright, pretty small, irregularly round, faint star involved","简略描述":"pB, pS, iR, F * inv"},{"ID":"5784","标识":"NGC5784","M标识":"NGC5784","拓展名":"","组件":"","Class":"II 676","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h54m16.4s","赤经D(J2000)":"14.904555555555556","赤纬(J2000)":"+42h33m31s","赤纬D(J2000)":"42.558611111111105","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.8","方位角":"0","详细描述":"pretty bright, small, round, suddenly much brighter middle, stellar","简略描述":"pB, S, R, smbM, stellar"},{"ID":"5785","标识":"NGC5785","M标识":"NGC5785","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h53m28.3s","赤经D(J2000)":"14.891194444444444","赤纬(J2000)":"+52h4m36s","赤纬D(J2000)":"52.07666666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"2.9","短轴(分)":"1.8","方位角":"0","详细描述":"pretty bright, pretty small, irregularly round, faint star involved","简略描述":"vF, pS, F * close f, np of 2"},{"ID":"5786","标识":"NGC5786","M标识":"NGC5786","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h58m56.4s","赤经D(J2000)":"14.982333333333333","赤纬(J2000)":"-42h0m52s","赤纬D(J2000)":"-42.01444444444444","可见光星等V":"11.5","摄影(蓝光)星等B":"12.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"2.3","短轴(分)":"1.2","方位角":"63","详细描述":"faint, much extended, bright star to southeast","简略描述":"F, mE, B * sf"},{"ID":"5787","标识":"NGC5787","M标识":"NGC5787","拓展名":"","组件":"","Class":"II 677","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h55m15.4s","赤经D(J2000)":"14.920944444444444","赤纬(J2000)":"+42h30m26s","赤纬D(J2000)":"42.507222222222225","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.9","方位角":"0","详细描述":"faint, considerably small, round, pretty suddenly a little brighter middle","简略描述":"F, cS, R, pslbM"},{"ID":"5788","标识":"NGC5788","M标识":"NGC5788","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h53m16.8s","赤经D(J2000)":"14.888","赤纬(J2000)":"+52h2m41s","赤纬D(J2000)":"52.04472222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"39","详细描述":"most extremely faint, small, round, very difficult, southeastern of 2","简略描述":"eeF, S, R, v diffic, sf of 2"},{"ID":"5789","标识":"NGC5789","M标识":"NGC5789","拓展名":"","组件":"","Class":"III 976","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h56m35.7s","赤经D(J2000)":"14.94325","赤纬(J2000)":"+30h14m0s","赤纬D(J2000)":"30.233333333333334","可见光星等V":"13.6","摄影(蓝光)星等B":"14.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"135","详细描述":"extremely faint, pretty small, irregular figure","简略描述":"eF, pS, iF"},{"ID":"5790","标识":"NGC5790","M标识":"NGC5790","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h57m35.9s","赤经D(J2000)":"14.959972222222222","赤纬(J2000)":"+8h17m7s","赤纬D(J2000)":"8.285277777777777","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"77","详细描述":"extremely faint, very small, irregular figure, a little brighter middle","简略描述":"eF, vS, iF, lbM"},{"ID":"5791","标识":"NGC5791","M标识":"NGC5791","拓展名":"","组件":"","Class":"III 691","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h58m46s","赤经D(J2000)":"14.979444444444445","赤纬(J2000)":"-19h16m1s","赤纬D(J2000)":"-19.266944444444444","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.5","短轴(分)":"1.3","方位角":"163","详细描述":"pretty faint, small, round, stellar","简略描述":"pF, S, R, stellar"},{"ID":"5792","标识":"NGC5792","M标识":"NGC5792","拓展名":"","组件":"","Class":"II 683","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h58m22.6s","赤经D(J2000)":"14.972944444444444","赤纬(J2000)":"-1h5m25s","赤纬D(J2000)":"-1.0902777777777777","可见光星等V":"11.3","摄影(蓝光)星等B":"12.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"6.8","短轴(分)":"1.7","方位角":"84","详细描述":"pretty bright, pretty large, round, much brighter middle, 8th or 9th magnitude star 1' to northwest","简略描述":"pB, pL, R, mbM, * 8·9 np 1'"},{"ID":"5793","标识":"NGC5793","M标识":"NGC5793","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h59m24.7s","赤经D(J2000)":"14.990194444444443","赤纬(J2000)":"-16h41m36s","赤纬D(J2000)":"-16.693333333333335","可见光星等V":"13.2","摄影(蓝光)星等B":"14.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"0.6","方位角":"150","详细描述":"extremely faint, pretty small, extended, brighter middle and nucleus","简略描述":"eF, pS, E, bMN"},{"ID":"5794","标识":"NGC5794","M标识":"NGC5794","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h55m53.6s","赤经D(J2000)":"14.931555555555555","赤纬(J2000)":"+49h43m33s","赤纬D(J2000)":"49.725833333333334","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"pretty faint, small, very suddenly brighter middle like 13th magnitude star, 1st of 4","简略描述":"pF, S, vsbM * 13, 1st of 4"},{"ID":"5795","标识":"NGC5795","M标识":"NGC5795","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h56m19s","赤经D(J2000)":"14.938611111111111","赤纬(J2000)":"+49h23m55s","赤纬D(J2000)":"49.39861111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"64","详细描述":"very faint, pretty small, a little extended, pretty bright star close to western end","简略描述":"vF, pS, lE, pB * close to p end"},{"ID":"5796","标识":"NGC5796","M标识":"NGC5796","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h59m24s","赤经D(J2000)":"14.989999999999998","赤纬(J2000)":"-16h37m25s","赤纬D(J2000)":"-16.62361111111111","可见光星等V":"11.6","摄影(蓝光)星等B":"12.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.5","短轴(分)":"1.8","方位角":"90","详细描述":"faint, pretty small star in center","简略描述":"F, pS * in centre"},{"ID":"5797","标识":"NGC5797","M标识":"NGC5797","拓展名":"","组件":"","Class":"III 678","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h56m23.9s","赤经D(J2000)":"14.939972222222222","赤纬(J2000)":"+49h41m44s","赤纬D(J2000)":"49.69555555555555","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1","方位角":"110","详细描述":"faint, small, very suddenly brighter middle like 13th magnitude star, 2nd of 4","简略描述":"F, S, vsbM * 13, 2nd of 4"},{"ID":"5798","标识":"NGC5798","M标识":"NGC5798","拓展名":"","组件":"","Class":"III 131","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h57m37.9s","赤经D(J2000)":"14.960527777777777","赤纬(J2000)":"+29h58m5s","赤纬D(J2000)":"29.968055555555555","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"42","详细描述":"faint, small, round, very gradually brighter middle, star to northeast","简略描述":"F, S, R, vgbM, * nf"},{"ID":"5799","标识":"NGC5799","M标识":"NGC5799","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"15h5m35.5s","赤经D(J2000)":"15.093194444444444","赤纬(J2000)":"-72h25m58s","赤纬D(J2000)":"-72.43277777777779","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"130","详细描述":"extremely faint, small, round, brighter middle","简略描述":"eF, S, R, bM"},{"ID":"5800","标识":"NGC5800","M标识":"NGC5800","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"15h1m47.8s","赤经D(J2000)":"15.029944444444446","赤纬(J2000)":"-51h55m6s","赤纬D(J2000)":"-51.91833333333333","可见光星等V":"99","摄影(蓝光)星等B":"8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, a little compressed","简略描述":"Cl, pL, pRi, lC"},{"ID":"5801","标识":"NGC5801","M标识":"NGC5801","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h0m25.9s","赤经D(J2000)":"15.007194444444444","赤纬(J2000)":"-13h54m13s","赤纬D(J2000)":"-13.903611111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"51","详细描述":"very faint, very small, suddenly brighter middle, 1st of 3","简略描述":"vF, vS, sbM, 1st of 3"},{"ID":"5802","标识":"NGC5802","M标识":"NGC5802","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h0m29.9s","赤经D(J2000)":"15.008305555555555","赤纬(J2000)":"-13h55m6s","赤纬D(J2000)":"-13.918333333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"90","详细描述":"very faint, very small, suddenly brighter middle, 2nd and brightest (of 3, the others being NGC 5801 and 5803)","简略描述":"vF, vS, sbM, 2nd and brightest"},{"ID":"5803","标识":"NGC5803","M标识":"NGC5803","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h0m34.4s","赤经D(J2000)":"15.009555555555556","赤纬(J2000)":"-13h53m38s","赤纬D(J2000)":"-13.893888888888888","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"60","详细描述":"very faint, very small, suddenly brighter middle, 3rd of 3","简略描述":"vF, vS, sbM, 3rd of 3"},{"ID":"5804","标识":"NGC5804","M标识":"NGC5804","拓展名":"","组件":"","Class":"III 679","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h57m6.6s","赤经D(J2000)":"14.951833333333333","赤纬(J2000)":"+49h40m7s","赤纬D(J2000)":"49.66861111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"0","详细描述":"very faint, very small, very suddenly much brighter middle, 6th magnitude star near","简略描述":"vF, vS, vsmbM, * 6 nr"},{"ID":"5805","标识":"NGC5805","M标识":"NGC5805","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h57m11.7s","赤经D(J2000)":"14.953249999999999","赤纬(J2000)":"+49h37m43s","赤纬D(J2000)":"49.62861111111111","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"140","详细描述":"small","简略描述":"S"},{"ID":"5806","标识":"NGC5806","M标识":"NGC5806","拓展名":"","组件":"","Class":"II 539","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h0m0.2s","赤经D(J2000)":"15.000055555555555","赤纬(J2000)":"+1h53m27s","赤纬D(J2000)":"1.8908333333333334","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.2","短轴(分)":"1.6","方位角":"170","详细描述":"considerably bright, considerably large, extended 165°±, suddenly brighter middle and nucleus","简略描述":"cB, cL, E 165° ±, sbMN"},{"ID":"5807","标识":"NGC5807","M标识":"NGC5807","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"14h55m48.4s","赤经D(J2000)":"14.93011111111111","赤纬(J2000)":"+63h54m14s","赤纬D(J2000)":"63.903888888888886","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, very small, mottled but not resolved","简略描述":"vF, vS, r"},{"ID":"5808","标识":"NGC5808","M标识":"NGC5808","拓展名":"","组件":"","Class":"III 311","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"14h54m2.7s","赤经D(J2000)":"14.90075","赤纬(J2000)":"+73h7m55s","赤纬D(J2000)":"73.13194444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, small, irregularly round, between 2 stars","简略描述":"vF, S, iR, bet 2 st"},{"ID":"5809","标识":"NGC5809","M标识":"NGC5809","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h0m52.2s","赤经D(J2000)":"15.0145","赤纬(J2000)":"-14h9m55s","赤纬D(J2000)":"-14.165277777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"145","详细描述":"very faint, small, extended, gradually a little brighter middle","简略描述":"vF, S, E, glbM"},{"ID":"5810","标识":"NGC5810","M标识":"NGC5810","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h2m42.5s","赤经D(J2000)":"15.04513888888889","赤纬(J2000)":"-17h52m6s","赤纬D(J2000)":"-17.868333333333332","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"31","详细描述":"extremely faint, very small, a little extended 230°, between 2 very faint stars","简略描述":"eF, vS, lE 230°, bet 2 vF st"},{"ID":"5811","标识":"NGC5811","M标识":"NGC5811","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h0m27.2s","赤经D(J2000)":"15.007555555555555","赤纬(J2000)":"+1h37m24s","赤纬D(J2000)":"1.6233333333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"14.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.7","方位角":"98","详细描述":"very faint, small, irregularly round","简略描述":"vF, S, iR"},{"ID":"5812","标识":"NGC5812","M标识":"NGC5812","拓展名":"","组件":"","Class":"I 71","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h0m55.7s","赤经D(J2000)":"15.015472222222222","赤纬(J2000)":"-7h27m27s","赤纬D(J2000)":"-7.4575000000000005","可见光星等V":"11.2","摄影(蓝光)星等B":"12.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.3","短轴(分)":"2","方位角":"130","详细描述":"considerably bright, small, round, suddenly very much brighter middle","简略描述":"cB, S, R, svmbM"},{"ID":"5813","标识":"NGC5813","M标识":"NGC5813","拓展名":"","组件":"","Class":"I 127","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h1m11.1s","赤经D(J2000)":"15.01975","赤纬(J2000)":"+1h42m7s","赤纬D(J2000)":"1.7019444444444445","可见光星等V":"10.5","摄影(蓝光)星等B":"11.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"4","短轴(分)":"2.8","方位角":"145","详细描述":"bright, pretty small, round, pretty suddenly much brighter middle","简略描述":"B, pS, R, psmbM"},{"ID":"5814","标识":"NGC5814","M标识":"NGC5814","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h1m21.1s","赤经D(J2000)":"15.022527777777778","赤纬(J2000)":"+1h38m14s","赤纬D(J2000)":"1.6372222222222221","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"32","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"5815","标识":"NGC5815","M标识":"NGC5815","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h0m29.1s","赤经D(J2000)":"15.008083333333333","赤纬(J2000)":"-16h50m2s","赤纬D(J2000)":"-16.833888888888886","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"25","详细描述":"extremely faint, pretty small, extended 10°, double star involved","简略描述":"eF, pS, E 10°, D * inv"},{"ID":"5816","标识":"NGC5816","M标识":"NGC5816","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h0m4.8s","赤经D(J2000)":"15.001333333333333","赤纬(J2000)":"-16h5m37s","赤纬D(J2000)":"-16.09361111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"95","详细描述":"faint, pretty small, gradually brighter middle and nucleus, stellar","简略描述":"F, pS, gbMN, stellar"},{"ID":"5817","标识":"NGC5817","M标识":"NGC5817","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h59m40.8s","赤经D(J2000)":"14.994666666666665","赤纬(J2000)":"-16h10m50s","赤纬D(J2000)":"-16.180555555555557","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"15","详细描述":"very faint, pretty small","简略描述":"vF, pS"},{"ID":"5818","标识":"NGC5818","M标识":"NGC5818","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h58m58.3s","赤经D(J2000)":"14.982861111111111","赤纬(J2000)":"+49h49m19s","赤纬D(J2000)":"49.82194444444445","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"170","详细描述":"very faint, pretty small, round, extremely faint star involved, between 2 stars","简略描述":"vF, pS, R, eF * inv, bet 2 st"},{"ID":"5819","标识":"NGC5819","M标识":"NGC5819","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"14h54m2.7s","赤经D(J2000)":"14.90075","赤纬(J2000)":"+73h7m55s","赤纬D(J2000)":"73.13194444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, small, irregularly round, between 2 stars","简略描述":"F, pL, Δ 2 st"},{"ID":"5820","标识":"NGC5820","M标识":"NGC5820","拓展名":"","组件":"","Class":"II 756","业余排名":"8.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h58m39.9s","赤经D(J2000)":"14.97775","赤纬(J2000)":"+53h53m9s","赤纬D(J2000)":"53.88583333333333","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"87","详细描述":"bright, extended 90°±, suddenly brighter middle, bright double star 8 arcmin to east","简略描述":"B, E 90° ±, sbM, B D * f 8'"},{"ID":"5821","标识":"NGC5821","M标识":"NGC5821","拓展名":"","组件":"","Class":"III 811","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h58m59.8s","赤经D(J2000)":"14.983277777777777","赤纬(J2000)":"+53h55m24s","赤纬D(J2000)":"53.92333333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"148","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"5822","标识":"NGC5822","M标识":"NGC5822","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1r","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"15h4m2.3s","赤经D(J2000)":"15.067305555555555","赤纬(J2000)":"-54h20m21s","赤纬D(J2000)":"-54.33916666666667","可见光星等V":"6.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"35","短轴(分)":"","方位角":"","详细描述":"cluster, very large, rich, a little compressed, stars from 9th to 12th magnitude","简略描述":"Cl, vL, Ri lC, st 9…12"},{"ID":"5823","标识":"NGC5823","M标识":"NGC5823","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"圆规座","星座(En)":"CIR","赤经(J2000)":"15h5m30.5s","赤经D(J2000)":"15.091805555555556","赤纬(J2000)":"-55h36m13s","赤纬D(J2000)":"-55.603611111111114","可见光星等V":"7.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"cluster, considerably large, rich, a little compressed middle, stars from 13th to 14th magnitude","简略描述":"Cl, cL, Ri, lCM, st 13…14"},{"ID":"5824","标识":"NGC5824","M标识":"NGC5824","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"Dup","形态":"I","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"15h3m58.5s","赤经D(J2000)":"15.06625","赤纬(J2000)":"-33h4m2s","赤纬D(J2000)":"-33.06722222222223","可见光星等V":"9.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7.4","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, stellar, nuclear","简略描述":"pB, S, stell, N"},{"ID":"5825","标识":"NGC5825","M标识":"NGC5825","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h2m0s","赤经D(J2000)":"15.033333333333333","赤纬(J2000)":"+18h42m30s","赤纬D(J2000)":"18.708333333333332","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, pretty small, a little extended, pretty bright star close to east","简略描述":"eeF, pS, lE, pB * close f"},{"ID":"5826","标识":"NGC5826","M标识":"NGC5826","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h6m33.7s","赤经D(J2000)":"15.109361111111111","赤纬(J2000)":"+55h28m45s","赤纬D(J2000)":"55.47916666666667","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"25","详细描述":"very faint, pretty large, extended","简略描述":"vF, pL, E"},{"ID":"5827","标识":"NGC5827","M标识":"NGC5827","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab\/P","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h1m53.5s","赤经D(J2000)":"15.031527777777779","赤纬(J2000)":"+25h57m51s","赤纬D(J2000)":"25.964166666666667","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"135","详细描述":"pretty bright, pretty large, round, brighter middle","简略描述":"pB, pL, R, bM"},{"ID":"5828","标识":"NGC5828","M标识":"NGC5828","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h0m45.9s","赤经D(J2000)":"15.01275","赤纬(J2000)":"+49h59m36s","赤纬D(J2000)":"49.99333333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"50","详细描述":"extremely faint, pretty small, round, between 2 distant stars","简略描述":"eF, pS, R, bet 2 dist st"},{"ID":"5829","标识":"NGC5829","M标识":"NGC5829","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h2m42s","赤经D(J2000)":"15.045","赤纬(J2000)":"+23h20m0s","赤纬D(J2000)":"23.333333333333332","可见光星等V":"13.4","摄影(蓝光)星等B":"13.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"45","详细描述":"very faint, very large, irregularly round, brighter middle","简略描述":"vF, vL, irrR, bM"},{"ID":"5830","标识":"NGC5830","M标识":"NGC5830","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h1m51s","赤经D(J2000)":"15.030833333333334","赤纬(J2000)":"+47h52m33s","赤纬D(J2000)":"47.87583333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.7","方位角":"170","详细描述":"very faint, small, round, bright star near to east","简略描述":"vF, S, R, B * nr f"},{"ID":"5831","标识":"NGC5831","M标识":"NGC5831","拓展名":"","组件":"","Class":"II 540","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h4m6.8s","赤经D(J2000)":"15.068555555555555","赤纬(J2000)":"+1h13m12s","赤纬D(J2000)":"1.2200000000000002","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.1","短轴(分)":"1.9","方位角":"55","详细描述":"pretty bright, small, much brighter middle","简略描述":"pB, S, mbM"},{"ID":"5832","标识":"NGC5832","M标识":"NGC5832","拓展名":"","组件":"","Class":"II 332","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"14h57m45.7s","赤经D(J2000)":"14.962694444444443","赤纬(J2000)":"+71h40m53s","赤纬D(J2000)":"71.68138888888889","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"3.6","短轴(分)":"2.2","方位角":"45","详细描述":"pretty bright, considerably large, irregularly round, brighter on west side, mottled but not resolved","简略描述":"pB, cL, iR, bp, r"},{"ID":"5833","标识":"NGC5833","M标识":"NGC5833","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"15h11m54.1s","赤经D(J2000)":"15.198361111111112","赤纬(J2000)":"-72h51m32s","赤纬D(J2000)":"-72.85888888888888","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.1","短轴(分)":"1","方位角":"128","详细描述":"faint, considerably small, a little extended, gradually a little brighter middle, among stars","简略描述":"F, cS, lE, glbM, am st"},{"ID":"5834","标识":"NGC5834","M标识":"NGC5834","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"I","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"15h3m58.5s","赤经D(J2000)":"15.06625","赤纬(J2000)":"-33h4m2s","赤纬D(J2000)":"-33.06722222222223","可见光星等V":"9.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7.4","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, stellar, nuclear","简略描述":"eeF? (Marth: B, stellar)"},{"ID":"5835","标识":"NGC5835","M标识":"NGC5835","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h2m25.3s","赤经D(J2000)":"15.04036111111111","赤纬(J2000)":"+48h52m41s","赤纬D(J2000)":"48.878055555555555","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"160","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"5836","标识":"NGC5836","M标识":"NGC5836","拓展名":"","组件":"","Class":"III 312","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"14h59m31.1s","赤经D(J2000)":"14.991972222222222","赤纬(J2000)":"+73h53m35s","赤纬D(J2000)":"73.89305555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"1","方位角":"45","详细描述":"extremely faint, very small, a little extended, 2 stars involved","简略描述":"eF, vS, lE, 2 st inv"},{"ID":"5837","标识":"NGC5837","M标识":"NGC5837","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h4m40.6s","赤经D(J2000)":"15.077944444444444","赤纬(J2000)":"+12h38m2s","赤纬D(J2000)":"12.633888888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.6","方位角":"25","详细描述":"very faint, small, round, double star to northwest","简略描述":"vF, S, R, D * np"},{"ID":"5838","标识":"NGC5838","M标识":"NGC5838","拓展名":"","组件":"","Class":"II 542","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h5m26s","赤经D(J2000)":"15.090555555555556","赤纬(J2000)":"+2h5m56s","赤纬D(J2000)":"2.0988888888888892","可见光星等V":"10.9","摄影(蓝光)星等B":"11.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"4.2","短轴(分)":"1.5","方位角":"43","详细描述":"pretty bright, pretty small","简略描述":"pB, pS"},{"ID":"5839","标识":"NGC5839","M标识":"NGC5839","拓展名":"","组件":"","Class":"II 541","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h5m27.4s","赤经D(J2000)":"15.090944444444444","赤纬(J2000)":"+1h38m4s","赤纬D(J2000)":"1.6344444444444444","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"35","详细描述":"pretty faint, pretty small","简略描述":"pF, pS"},{"ID":"5840","标识":"NGC5840","M标识":"NGC5840","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h4m20.5s","赤经D(J2000)":"15.07236111111111","赤纬(J2000)":"+29h30m22s","赤纬D(J2000)":"29.50611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, pretty small, a little extended, very difficult","简略描述":"eeF, pS, lE, v diffic"},{"ID":"5841","标识":"NGC5841","M标识":"NGC5841","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h6m34.8s","赤经D(J2000)":"15.109666666666666","赤纬(J2000)":"+2h0m18s","赤纬D(J2000)":"2.005","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"145","详细描述":"faint, small, extended","简略描述":"F, S, E"},{"ID":"5842","标识":"NGC5842","M标识":"NGC5842","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h4m52.1s","赤经D(J2000)":"15.081138888888889","赤纬(J2000)":"+21h4m13s","赤纬D(J2000)":"21.07027777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, very small, round, a little brighter middle","简略描述":"eF, vS, R, lbM"},{"ID":"5843","标识":"NGC5843","M标识":"NGC5843","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"15h7m27.8s","赤经D(J2000)":"15.12438888888889","赤纬(J2000)":"-36h19m42s","赤纬D(J2000)":"-36.32833333333333","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"70","详细描述":"very faint, small, a little extended, a very little brighter middle, mottled but not resolved","简略描述":"vF, S, lE, vlbM, r"},{"ID":"5844","标识":"NGC5844","M标识":"NGC5844","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"南三角座","星座(En)":"TRA","赤经(J2000)":"15h10m40.7s","赤经D(J2000)":"15.177972222222222","赤纬(J2000)":"-64h40m22s","赤纬D(J2000)":"-64.67277777777778","可见光星等V":"99","摄影(蓝光)星等B":"13.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.22","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, round, very gradually a very little brighter middle","简略描述":"pB, pL, R, vgvlbM"},{"ID":"5845","标识":"NGC5845","M标识":"NGC5845","拓展名":"","组件":"","Class":"III 511","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h6m0.6s","赤经D(J2000)":"15.100166666666667","赤纬(J2000)":"+1h38m1s","赤纬D(J2000)":"1.6336111111111111","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"150","详细描述":"very faint, round","简略描述":"vF, R"},{"ID":"5846","标识":"NGC5846","M标识":"NGC5846","拓展名":"","组件":"","Class":"I 128","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h6m29s","赤经D(J2000)":"15.108055555555556","赤纬(J2000)":"+1h36m19s","赤纬D(J2000)":"1.6052777777777778","可见光星等V":"10","摄影(蓝光)星等B":"11.1","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"4","短轴(分)":"3.7","方位角":"42","详细描述":"very bright, pretty large, round, pretty suddenly brighter middle and nucleus, faint star involved to south, partially resolved (some stars seen)","简略描述":"vB, pL, R, psbMN, F * inv s, rr"},{"ID":"5847","标识":"NGC5847","M标识":"NGC5847","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h6m22.2s","赤经D(J2000)":"15.106166666666667","赤纬(J2000)":"+6h22m47s","赤纬D(J2000)":"6.379722222222222","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"165","详细描述":"extremely faint, small, irregularly round","简略描述":"eF, S, iR"},{"ID":"5848","标识":"NGC5848","M标识":"NGC5848","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h6m34.8s","赤经D(J2000)":"15.109666666666666","赤纬(J2000)":"+2h0m18s","赤纬D(J2000)":"2.005","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"145","详细描述":"faint, small, extended","简略描述":"eF, S, close D * sf 7'"},{"ID":"5849","标识":"NGC5849","M标识":"NGC5849","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h6m50.6s","赤经D(J2000)":"15.114055555555556","赤纬(J2000)":"-14h34m16s","赤纬D(J2000)":"-14.571111111111112","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"30","详细描述":"13th magnitude star in a very faint nebula, 3 stars 1 second of time to west, 8th magnitude star 10 seconds of time to east and 15 arcmin to south","简略描述":"* 13 in vF neb, 3 st p 1s, * 8 f 10s, 15' s"},{"ID":"5850","标识":"NGC5850","M标识":"NGC5850","拓展名":"","组件":"","Class":"II 543","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h7m7.5s","赤经D(J2000)":"15.11875","赤纬(J2000)":"+1h32m39s","赤纬D(J2000)":"1.5441666666666665","可见光星等V":"10.8","摄影(蓝光)星等B":"11.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"4.5","短轴(分)":"3.9","方位角":"140","详细描述":"considerably faint, small, a little extended, pretty suddenly brighter middle","简略描述":"cF, S, lE, psbM"},{"ID":"5851","标识":"NGC5851","M标识":"NGC5851","拓展名":"","组件":"","Class":"III 886","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h6m53.3s","赤经D(J2000)":"15.114805555555556","赤纬(J2000)":"+12h51m29s","赤纬D(J2000)":"12.858055555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.3","方位角":"43","详细描述":"extremely faint, very small, northwestern of 2","简略描述":"eF, vS, np of 2"},{"ID":"5852","标识":"NGC5852","M标识":"NGC5852","拓展名":"","组件":"","Class":"III 887","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h6m56.3s","赤经D(J2000)":"15.115638888888888","赤纬(J2000)":"+12h50m51s","赤纬D(J2000)":"12.8475","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"125","详细描述":"extremely faint, very small, southeastern of 2","简略描述":"eF, vS, sf of 2"},{"ID":"5853","标识":"NGC5853","M标识":"NGC5853","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h5m53.2s","赤经D(J2000)":"15.098111111111113","赤纬(J2000)":"+39h31m22s","赤纬D(J2000)":"39.522777777777776","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"150","详细描述":"pretty faint, pretty small, round, much brighter middle, mottled but not resolved?","简略描述":"pF, pS, R, mbM, r?"},{"ID":"5854","标识":"NGC5854","M标识":"NGC5854","拓展名":"","组件":"","Class":"II 544","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h7m47.6s","赤经D(J2000)":"15.129888888888889","赤纬(J2000)":"+2h34m7s","赤纬D(J2000)":"2.5686111111111107","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.7","短轴(分)":"0.8","方位角":"55","详细描述":"pretty bright, small, very little extended, a little brighter middle, among stars","简略描述":"pB, S, vlE, lbM, am st"},{"ID":"5855","标识":"NGC5855","M标识":"NGC5855","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h7m48.9s","赤经D(J2000)":"15.13025","赤纬(J2000)":"+3h59m5s","赤纬D(J2000)":"3.9847222222222225","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, small, round, 2 stars to northeast","简略描述":"eF, S, R, 2 st nf"},{"ID":"5856","标识":"NGC5856","M标识":"NGC5856","拓展名":"","组件":"","Class":"IV 71","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h7m20.3s","赤经D(J2000)":"15.122305555555556","赤纬(J2000)":"+18h26m32s","赤纬D(J2000)":"18.442222222222224","可见光星等V":"99","摄影(蓝光)星等B":"6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebulous 6th magnitude star (??)","简略描述":"Neb * 6 m (??)"},{"ID":"5857","标识":"NGC5857","M标识":"NGC5857","拓展名":"","组件":"","Class":"II 751","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h7m27.3s","赤经D(J2000)":"15.12425","赤纬(J2000)":"+19h35m54s","赤纬D(J2000)":"19.598333333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"137","详细描述":"considerably faint, considerably small, extended, western of double nebula","简略描述":"cF, cS, E, p of D neb"},{"ID":"5858","标识":"NGC5858","M标识":"NGC5858","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h8m49.1s","赤经D(J2000)":"15.146972222222221","赤纬(J2000)":"-11h12m29s","赤纬D(J2000)":"-11.208055555555555","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"135","详细描述":"faint, small, stellar nucleus, II 192 to southeast","简略描述":"F, S, stell N, II 192 sf"},{"ID":"5859","标识":"NGC5859","M标识":"NGC5859","拓展名":"","组件":"","Class":"II 752","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h7m34.9s","赤经D(J2000)":"15.12636111111111","赤纬(J2000)":"+19h34m55s","赤纬D(J2000)":"19.581944444444446","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3","短轴(分)":"0.8","方位角":"136","详细描述":"pretty faint, pretty small, extended, eastern of double nebula","简略描述":"pF, pS, E, f of D neb"},{"ID":"5860","标识":"NGC5860","M标识":"NGC5860","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0+S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h6m33.7s","赤经D(J2000)":"15.109361111111111","赤纬(J2000)":"+42h38m31s","赤纬D(J2000)":"42.64194444444444","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"30","详细描述":"faint, small, round, pretty suddenly brighter middle","简略描述":"F, S, R, psbM"},{"ID":"5861","标识":"NGC5861","M标识":"NGC5861","拓展名":"","组件":"","Class":"II 192","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h9m16.2s","赤经D(J2000)":"15.1545","赤纬(J2000)":"-11h19m20s","赤纬D(J2000)":"-11.322222222222223","可见光星等V":"11.6","摄影(蓝光)星等B":"12.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3","短轴(分)":"1.7","方位角":"155","详细描述":"faint, large, extended, mottled but not resolved","简略描述":"F, L, E, r"},{"ID":"5862","标识":"NGC5862","M标识":"NGC5862","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h6m3.2s","赤经D(J2000)":"15.100888888888889","赤纬(J2000)":"+55h34m28s","赤纬D(J2000)":"55.574444444444445","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, pretty small, round, very difficult","简略描述":"eF, pS, R, v diffic"},{"ID":"5863","标识":"NGC5863","M标识":"NGC5863","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h10m48.3s","赤经D(J2000)":"15.180083333333332","赤纬(J2000)":"-18h25m52s","赤纬D(J2000)":"-18.43111111111111","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"30","详细描述":"12th magnitude star in an extremely faint nebula, small, round","简略描述":"* 12 in eF neb, S, R"},{"ID":"5864","标识":"NGC5864","M标识":"NGC5864","拓展名":"","组件":"","Class":"II 585","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h9m33.5s","赤经D(J2000)":"15.159305555555555","赤纬(J2000)":"+3h3m12s","赤纬D(J2000)":"3.0533333333333332","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.8","短轴(分)":"0.9","方位角":"68","详细描述":"pretty faint, considerably small, irregularly a little extended, gradually brighter middle, 14th magnitude star to east","简略描述":"pF, cS, ilE, gbM, * 14 f"},{"ID":"5865","标识":"NGC5865","M标识":"NGC5865","拓展名":"","组件":"","Class":"II 684","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h9m49.1s","赤经D(J2000)":"15.163638888888888","赤纬(J2000)":"+0h31m49s","赤纬D(J2000)":"0.5302777777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"1","方位角":"173","详细描述":"pretty bright, small, irregularly extended","简略描述":"pB, S, iE"},{"ID":"5866","标识":"NGC5866","M标识":"M102","拓展名":"","组件":"","Class":"I 215","业余排名":"1","中文名":"纺锤星系","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h6m29.4s","赤经D(J2000)":"15.108166666666666","赤纬(J2000)":"+55h45m49s","赤纬D(J2000)":"55.76361111111111","可见光星等V":"9.9","摄影(蓝光)星等B":"10.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"6.5","短轴(分)":"3.1","方位角":"128","详细描述":"very bright, considerably large, pretty much extended 146°, gradually brighter middle","简略描述":"vB, cL, pmE 146°, gbM"},{"ID":"5867","标识":"NGC5867","M标识":"NGC5867","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h6m24.3s","赤经D(J2000)":"15.10675","赤纬(J2000)":"+55h43m54s","赤纬D(J2000)":"55.73166666666667","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"5868","标识":"NGC5868","M标识":"NGC5868","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h9m49.1s","赤经D(J2000)":"15.163638888888888","赤纬(J2000)":"+0h31m49s","赤纬D(J2000)":"0.5302777777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"1","方位角":"173","详细描述":"pretty bright, small, irregularly extended","简略描述":"eF, II 545 s 3'"},{"ID":"5869","标识":"NGC5869","M标识":"NGC5869","拓展名":"","组件":"","Class":"II 545","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h9m49.4s","赤经D(J2000)":"15.163722222222223","赤纬(J2000)":"+0h28m13s","赤纬D(J2000)":"0.4702777777777778","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.3","短轴(分)":"1.6","方位角":"125","详细描述":"pretty faint, small, extended, pretty suddenly brighter middle","简略描述":"pF, S, E, psbM"},{"ID":"5870","标识":"NGC5870","M标识":"NGC5870","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h6m33.7s","赤经D(J2000)":"15.109361111111111","赤纬(J2000)":"+55h28m45s","赤纬D(J2000)":"55.47916666666667","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"25","详细描述":"extremely faint, pretty small, a little extended, very difficult, star to east","简略描述":"eF, pS, lE, v diffic, * f"},{"ID":"5871","标识":"NGC5871","M标识":"NGC5871","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h10m4.8s","赤经D(J2000)":"15.168","赤纬(J2000)":"+0h29m51s","赤纬D(J2000)":"0.4975","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, forms trapezium with 3 nebulae to the west","简略描述":"eF, forms trapezium with 3 neb p"},{"ID":"5872","标识":"NGC5872","M标识":"NGC5872","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h10m55.6s","赤经D(J2000)":"15.18211111111111","赤纬(J2000)":"-11h28m46s","赤纬D(J2000)":"-11.479444444444445","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"5","详细描述":"No description","简略描述":"No description"},{"ID":"5873","标识":"NGC5873","M标识":"NGC5873","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"15h12m50.7s","赤经D(J2000)":"15.214083333333333","赤纬(J2000)":"-38h7m31s","赤纬D(J2000)":"-38.125277777777775","可见光星等V":"11","摄影(蓝光)星等B":"13.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.22","短轴(分)":"","方位角":"","详细描述":"planetary nebula, stellar = 9.5 magnitude","简略描述":"planetary, stellar = 9.5 mag"},{"ID":"5874","标识":"NGC5874","M标识":"NGC5874","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h7m51.9s","赤经D(J2000)":"15.131083333333335","赤纬(J2000)":"+54h45m10s","赤纬D(J2000)":"54.75277777777778","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.3","短轴(分)":"1.6","方位角":"53","详细描述":"very faint, pretty large, round, in triangle of 3 bright stars","简略描述":"vF, pL, R, in Δ of 3 B st"},{"ID":"5875","标识":"NGC5875","M标识":"NGC5875","拓展名":"","组件":"","Class":"II 755","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h9m13.1s","赤经D(J2000)":"15.153638888888889","赤纬(J2000)":"+52h31m41s","赤纬D(J2000)":"52.528055555555554","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.3","短轴(分)":"1.2","方位角":"145","详细描述":"pretty bright, pretty large, a little extended","简略描述":"pB, pL, lE"},{"ID":"5876","标识":"NGC5876","M标识":"NGC5876","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h9m31.4s","赤经D(J2000)":"15.158722222222222","赤纬(J2000)":"+54h30m23s","赤纬D(J2000)":"54.506388888888885","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.4","短轴(分)":"1.2","方位角":"50","详细描述":"faint, small, round, much brighter middle","简略描述":"F, S, R, mbM"},{"ID":"5877","标识":"NGC5877","M标识":"NGC5877","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h12m53.1s","赤经D(J2000)":"15.214749999999999","赤纬(J2000)":"-4h55m27s","赤纬D(J2000)":"-4.924166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, 12th magnitude star attached on north","简略描述":"vF, S, * 12 att n"},{"ID":"5878","标识":"NGC5878","M标识":"NGC5878","拓展名":"","组件":"","Class":"III 736","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h13m45.7s","赤经D(J2000)":"15.22936111111111","赤纬(J2000)":"-14h16m13s","赤纬D(J2000)":"-14.270277777777778","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.5","短轴(分)":"1.4","方位角":"0","详细描述":"pretty bright, pretty large, pretty much extended 0°, pretty suddenly much brighter middle, star involved","简略描述":"pB, pL, pmE 0°, psmbM, * inv"},{"ID":"5879","标识":"NGC5879","M标识":"NGC5879","拓展名":"","组件":"","Class":"II 757","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h9m46.8s","赤经D(J2000)":"15.163","赤纬(J2000)":"+57h0m2s","赤纬D(J2000)":"57.00055555555556","可见光星等V":"11.6","摄影(蓝光)星等B":"12.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"4.2","短轴(分)":"1.3","方位角":"6","详细描述":"considerably bright, small, extended, much brighter middle and round nucleus, mottled but not resolved","简略描述":"cB, S, E, mbMRN, r"},{"ID":"5880","标识":"NGC5880","M标识":"NGC5880","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h15m1s","赤经D(J2000)":"15.250277777777777","赤纬(J2000)":"-14h34m42s","赤纬D(J2000)":"-14.578333333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"135","详细描述":"extremely faint, very small, round, brighter middle, in field with (NGC) 5883","简略描述":"eF, vS, R, bM, in field with 5883"},{"ID":"5881","标识":"NGC5881","M标识":"NGC5881","拓展名":"","组件":"","Class":"II 818","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h6m20.6s","赤经D(J2000)":"15.105722222222221","赤纬(J2000)":"+62h58m50s","赤纬D(J2000)":"62.980555555555554","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"60","详细描述":"pretty faint, considerably small, round, very gradually brighter middle","简略描述":"pF, cS, R, vgbM"},{"ID":"5882","标识":"NGC5882","M标识":"NGC5882","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"天王星之魂星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"15h16m50s","赤经D(J2000)":"15.280555555555557","赤纬(J2000)":"-45h38m56s","赤纬D(J2000)":"-45.64888888888889","可见光星等V":"9.4","摄影(蓝光)星等B":"10.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.33","短轴(分)":"","方位角":"","详细描述":"planetary nebula, very small, round, quite sharp","简略描述":"planetary, vS, R, quite sharp"},{"ID":"5883","标识":"NGC5883","M标识":"NGC5883","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h15m10.1s","赤经D(J2000)":"15.252805555555556","赤纬(J2000)":"-14h36m59s","赤纬D(J2000)":"-14.616388888888888","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"120","详细描述":"No description","简略描述":"No description"},{"ID":"5884","标识":"NGC5884","M标识":"NGC5884","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h13m9.2s","赤经D(J2000)":"15.219222222222223","赤纬(J2000)":"+31h51m44s","赤纬D(J2000)":"31.862222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, binuclear, (at) position angle 170°, distance 7","简略描述":"F, biN, Pos 170°, Dist 7\" ±"},{"ID":"5885","标识":"NGC5885","M标识":"NGC5885","拓展名":"","组件":"","Class":"III 116","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h15m4.2s","赤经D(J2000)":"15.251166666666666","赤纬(J2000)":"-10h5m9s","赤纬D(J2000)":"-10.085833333333333","可见光星等V":"11.8","摄影(蓝光)星等B":"12.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"3.5","短轴(分)":"3.1","方位角":"65","详细描述":"faint, considerably large, round, very gradually brighter middle","简略描述":"F, cL, R, vgbM"},{"ID":"5886","标识":"NGC5886","M标识":"NGC5886","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h12m45.4s","赤经D(J2000)":"15.21261111111111","赤纬(J2000)":"+41h14m2s","赤纬D(J2000)":"41.23388888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"87","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"5887","标识":"NGC5887","M标识":"NGC5887","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h14m43.9s","赤经D(J2000)":"15.245527777777777","赤纬(J2000)":"+1h9m17s","赤纬D(J2000)":"1.1547222222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"1","方位角":"160","详细描述":"pretty faint, pretty small, gradually brighter middle","简略描述":"pF, pS, gbM"},{"ID":"5888","标识":"NGC5888","M标识":"NGC5888","拓展名":"","组件":"","Class":"III 659","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h13m7.4s","赤经D(J2000)":"15.218722222222222","赤纬(J2000)":"+41h15m52s","赤纬D(J2000)":"41.26444444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"158","详细描述":"considerably faint, very small, round, brighter middle, mottled but not resolved","简略描述":"cF, vS, R, bM, r"},{"ID":"5889","标识":"NGC5889","M标识":"NGC5889","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h13m15.7s","赤经D(J2000)":"15.221027777777778","赤纬(J2000)":"+41h19m40s","赤纬D(J2000)":"41.32777777777778","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"39","详细描述":"most extremely faint, gradually a little brighter middle","简略描述":"eeF, glbM"},{"ID":"5890","标识":"NGC5890","M标识":"NGC5890","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h17m51.1s","赤经D(J2000)":"15.297527777777777","赤纬(J2000)":"-17h35m19s","赤纬D(J2000)":"-17.58861111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"1","方位角":"85","详细描述":"very faint, very small, extended 235°","简略描述":"vF, vS, E 235°"},{"ID":"5891","标识":"NGC5891","M标识":"NGC5891","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h16m13.2s","赤经D(J2000)":"15.270333333333333","赤纬(J2000)":"-11h29m38s","赤纬D(J2000)":"-11.493888888888888","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"152","详细描述":"very faint, pretty small, a little extended, gradually brighter middle, 11th magnitude star to east","简略描述":"vF, pS, lE, gbM, * 11 f"},{"ID":"5892","标识":"NGC5892","M标识":"NGC5892","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"法思703","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h13m48.1s","赤经D(J2000)":"15.230027777777778","赤纬(J2000)":"-15h27m51s","赤纬D(J2000)":"-15.464166666666666","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3.6","短轴(分)":"2.9","方位角":"105","详细描述":"extremely faint, large, gradually brighter middle","简略描述":"eF, L, gbM"},{"ID":"5893","标识":"NGC5893","M标识":"NGC5893","拓展名":"","组件":"","Class":"II 678","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h13m34.3s","赤经D(J2000)":"15.226194444444445","赤纬(J2000)":"+41h57m33s","赤纬D(J2000)":"41.95916666666667","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"30","详细描述":"faint, small, round, mottled but not resolved, 3 stars near","简略描述":"F, S, R, r, 3 st nr"},{"ID":"5894","标识":"NGC5894","M标识":"NGC5894","拓展名":"","组件":"","Class":"II 763","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h11m40.9s","赤经D(J2000)":"15.194694444444444","赤纬(J2000)":"+59h48m31s","赤纬D(J2000)":"59.808611111111105","可见光星等V":"12.8","摄影(蓝光)星等B":"13.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3","短轴(分)":"0.4","方位角":"13","详细描述":"pretty faint, pretty small, extended 0°±","简略描述":"pF, pS, E 0° ±"},{"ID":"5895","标识":"NGC5895","M标识":"NGC5895","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h13m50.1s","赤经D(J2000)":"15.230583333333334","赤纬(J2000)":"+42h0m28s","赤纬D(J2000)":"42.007777777777775","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"21","详细描述":"very faint, small, extended north-south, apparently connected (to (NGC) 5896)","简略描述":"vF, S, E ns, apparently connected"},{"ID":"5896","标识":"NGC5896","M标识":"NGC5896","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h13m50.6s","赤经D(J2000)":"15.230722222222223","赤纬(J2000)":"+42h1m30s","赤纬D(J2000)":"42.025","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"76","详细描述":"very faint, very small, round, apparently connected (to (NGC) 5895)","简略描述":"vF, vS, R, apparently connected"},{"ID":"5897","标识":"NGC5897","M标识":"NGC5897","拓展名":"","组件":"","Class":"VI 19","业余排名":"3","中文名":"鬼魂球状星团","类型":"GCL","含重复类型":"GCL","形态":"XI","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h17m24.5s","赤经D(J2000)":"15.290138888888889","赤纬(J2000)":"-21h0m35s","赤纬D(J2000)":"-21.009722222222223","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"11","短轴(分)":"","方位角":"","详细描述":"globular cluster, pretty faint, large, very irregularly round, very gradually bighter middle, well resolved, clearly consisting of stars","简略描述":"globular, pF, L, viR, vgbM, rrr"},{"ID":"5898","标识":"NGC5898","M标识":"NGC5898","拓展名":"","组件":"","Class":"III 138","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h18m13.6s","赤经D(J2000)":"15.303777777777778","赤纬(J2000)":"-24h5m51s","赤纬D(J2000)":"-24.0975","可见光星等V":"11.4","摄影(蓝光)星等B":"12.5","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.7","短轴(分)":"2.6","方位角":"42","详细描述":"faintg, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"5899","标识":"NGC5899","M标识":"NGC5899","拓展名":"","组件":"","Class":"II 650","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h15m3.3s","赤经D(J2000)":"15.250916666666667","赤纬(J2000)":"+42h2m59s","赤纬D(J2000)":"42.04972222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.3","短轴(分)":"1.4","方位角":"18","详细描述":"considerably bright, pretty large, pretty much extended, suddenly much brighter middle and nucleus","简略描述":"cB, pL, pmE, smbMN"},{"ID":"5900","标识":"NGC5900","M标识":"NGC5900","拓展名":"","组件":"","Class":"III 660","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h15m5.2s","赤经D(J2000)":"15.251444444444445","赤纬(J2000)":"+42h12m34s","赤纬D(J2000)":"42.20944444444445","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"131","详细描述":"very faint, small, very little extended, gradually brighter middle","简略描述":"vF, S, vlE, gbm"},{"ID":"5901","标识":"NGC5901","M标识":"NGC5901","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h15m2.3s","赤经D(J2000)":"15.250638888888888","赤纬(J2000)":"+42h13m44s","赤纬D(J2000)":"42.22888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"close north of h 1915, extremely faint, small","简略描述":"Close n of h 1915, eF, S"},{"ID":"5902","标识":"NGC5902","M标识":"NGC5902","拓展名":"","组件":"","Class":"III 737","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h14m22.3s","赤经D(J2000)":"15.239527777777777","赤纬(J2000)":"+50h19m49s","赤纬D(J2000)":"50.33027777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"1","方位角":"105","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"5903","标识":"NGC5903","M标识":"NGC5903","拓展名":"","组件":"","Class":"III 139","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h18m36.5s","赤经D(J2000)":"15.31013888888889","赤纬(J2000)":"-24h4m6s","赤纬D(J2000)":"-24.06833333333333","可见光星等V":"11.2","摄影(蓝光)星等B":"12.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.7","短轴(分)":"2.1","方位角":"168","详细描述":"considerably faint, small, round, gradually pretty much brighter middle","简略描述":"cF, S, R, gpmbM"},{"ID":"5904","标识":"NGC5904","M标识":"M5","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"玫瑰星团","类型":"GCL","含重复类型":"GCL","形态":"V","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h18m33.8s","赤经D(J2000)":"15.30938888888889","赤纬(J2000)":"+2h5m0s","赤纬D(J2000)":"2.0833333333333335","可见光星等V":"5.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"23","短轴(分)":"","方位角":"","详细描述":"a very remarkable object, a globular cluster, very bright, large, extremely compressed middle, stars from 11th to 15th magnitude","简略描述":"!!, globular, vB, L, eCM, st 11…15"},{"ID":"5905","标识":"NGC5905","M标识":"NGC5905","拓展名":"","组件":"","Class":"II 758","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h15m23.3s","赤经D(J2000)":"15.256472222222222","赤纬(J2000)":"+55h31m4s","赤纬D(J2000)":"55.51777777777777","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"4","短轴(分)":"2.6","方位角":"135","详细描述":"pretty faint, pretty small, irregularly round","简略描述":"pF, pS, iR"},{"ID":"5906","标识":"NGC5906","M标识":"NGC5906","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"分裂星系","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h15m52.1s","赤经D(J2000)":"15.264472222222222","赤纬(J2000)":"+56h19m50s","赤纬D(J2000)":"56.330555555555556","可见光星等V":"14.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.1","短轴(分)":"","方位角":"","详细描述":"A ray, very much extended, parallel to h 1917 and close to the west of it","简略描述":"A ray, vmE, par to h 1917 and close p it"},{"ID":"5907","标识":"NGC5907","M标识":"NGC5907","拓展名":"","组件":"","Class":"II 759","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h15m53.8s","赤经D(J2000)":"15.264944444444444","赤纬(J2000)":"+56h19m49s","赤纬D(J2000)":"56.33027777777778","可见光星等V":"10.3","摄影(蓝光)星等B":"11.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"12.6","短轴(分)":"1.4","方位角":"155","详细描述":"A ray, very much extended, parallel to h 1917 and close to the west of it","简略描述":"cB, vL, vmE 155°, vg, psbMN"},{"ID":"5908","标识":"NGC5908","M标识":"NGC5908","拓展名":"","组件":"","Class":"II 760","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h16m43.1s","赤经D(J2000)":"15.27863888888889","赤纬(J2000)":"+55h24m34s","赤纬D(J2000)":"55.409444444444446","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.3","短轴(分)":"1.4","方位角":"154","详细描述":"pretty faint, pretty small, round","简略描述":"pF, pS, R"},{"ID":"5909","标识":"NGC5909","M标识":"NGC5909","拓展名":"","组件":"","Class":"III 943","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"15h11m27.9s","赤经D(J2000)":"15.191083333333333","赤纬(J2000)":"+75h23m4s","赤纬D(J2000)":"75.38444444444445","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"52","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"5910","标识":"NGC5910","M标识":"NGC5910","拓展名":"","组件":"1","Class":"II 400","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h19m24.7s","赤经D(J2000)":"15.323527777777777","赤纬(J2000)":"+20h53m46s","赤纬D(J2000)":"20.89611111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, small, extremely mottled but not resolved","简略描述":"vF, S, er"},{"ID":"5911","标识":"NGC5911","M标识":"NGC5911","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h20m18.1s","赤经D(J2000)":"15.338361111111112","赤纬(J2000)":"+3h31m8s","赤纬D(J2000)":"3.5188888888888887","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, very small, 2 small stars involved","简略描述":"vF, vS, 2 S st inv"},{"ID":"5912","标识":"NGC5912","M标识":"NGC5912","拓展名":"","组件":"","Class":"III 944","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"15h11m40.5s","赤经D(J2000)":"15.194583333333334","赤纬(J2000)":"+75h23m5s","赤纬D(J2000)":"75.38472222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"129","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"5913","标识":"NGC5913","M标识":"NGC5913","拓展名":"","组件":"","Class":"III 374","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h20m55.5s","赤经D(J2000)":"15.34875","赤纬(J2000)":"-2h34m42s","赤纬D(J2000)":"-2.578333333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"168","详细描述":"very faint, pretty large, very little extended, mottled but not resolved","简略描述":"vF, pL, vlE, r"},{"ID":"5914","标识":"NGC5914","M标识":"NGC5914","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h18m43.7s","赤经D(J2000)":"15.312138888888889","赤纬(J2000)":"+41h51m55s","赤纬D(J2000)":"41.86527777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"153","详细描述":"faint, very small, round, faint star involved","简略描述":"F, vS, R, F st inv"},{"ID":"5915","标识":"NGC5915","M标识":"NGC5915","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h21m33s","赤经D(J2000)":"15.359166666666667","赤纬(J2000)":"-13h5m30s","赤纬D(J2000)":"-13.091666666666667","可见光星等V":"12.3","摄影(蓝光)星等B":"12.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"164","详细描述":"bright, small, round, gradually a little brighter middle, western of 2","简略描述":"B, S, R, glbM, p of 2"},{"ID":"5916","标识":"NGC5916","M标识":"NGC5916","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa\/P","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h21m37.8s","赤经D(J2000)":"15.3605","赤纬(J2000)":"-13h10m9s","赤纬D(J2000)":"-13.169166666666666","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.8","短轴(分)":"0.9","方位角":"15","详细描述":"faint, small, a little extended, gradually a little brighter middle, eastern of 2","简略描述":"F, S, lE, glbM, f of 2"},{"ID":"5917","标识":"NGC5917","M标识":"NGC5917","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h21m32.5s","赤经D(J2000)":"15.359027777777778","赤纬(J2000)":"-7h22m39s","赤纬D(J2000)":"-7.3774999999999995","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"75","详细描述":"extremely faint, very small, pretty suddenly brighter middle","简略描述":"eF, vS, psbM"},{"ID":"5918","标识":"NGC5918","M标识":"NGC5918","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h19m25.1s","赤经D(J2000)":"15.323638888888889","赤纬(J2000)":"+45h52m49s","赤纬D(J2000)":"45.88027777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.9","短轴(分)":"0.8","方位角":"85","详细描述":"considerably faint, large, pretty much extended, gradually a little brighter middle, double star to south","简略描述":"cF, L, pmE, glbM, ** s"},{"ID":"5919","标识":"NGC5919","M标识":"NGC5919","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h21m36.8s","赤经D(J2000)":"15.360222222222221","赤纬(J2000)":"+7h43m11s","赤纬D(J2000)":"7.719722222222222","可见光星等V":"15.9","摄影(蓝光)星等B":"16.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"most extremely faint, pretty small, a little extended, northwestern of 2","简略描述":"eeF, pS, lE, np of 2"},{"ID":"5920","标识":"NGC5920","M标识":"NGC5920","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h21m51.8s","赤经D(J2000)":"15.364388888888888","赤纬(J2000)":"+7h42m32s","赤纬D(J2000)":"7.708888888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"105","详细描述":"most extremely faint, pretty small, a little extended, southeastern of 2","简略描述":"eeF, pS, lE, sf of 2"},{"ID":"5921","标识":"NGC5921","M标识":"NGC5921","拓展名":"","组件":"","Class":"I 148","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h21m56.3s","赤经D(J2000)":"15.365638888888888","赤纬(J2000)":"+5h4m13s","赤纬D(J2000)":"5.070277777777777","可见光星等V":"10.8","摄影(蓝光)星等B":"11.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"4.8","短轴(分)":"4","方位角":"130","详细描述":"considerably bright, considerably large, irregularly round, very suddenly brighter middle like 12th magnitude star, among stars","简略描述":"cB, cL, iR, vsbM * 12, am st"},{"ID":"5922","标识":"NGC5922","M标识":"NGC5922","拓展名":"","组件":"","Class":"","业余排名":"15","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h23m33s","赤经D(J2000)":"15.3925","赤纬(J2000)":"+41h39m24s","赤纬D(J2000)":"41.656666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"5923","标识":"NGC5923","M标识":"NGC5923","拓展名":"","组件":"","Class":"III 661","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h21m14.1s","赤经D(J2000)":"15.353916666666667","赤纬(J2000)":"+41h43m35s","赤纬D(J2000)":"41.72638888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"13.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.8","短轴(分)":"1.8","方位角":"","详细描述":"extremely faint, small","简略描述":"vF, pL, vlE, vgbM"},{"ID":"5924","标识":"NGC5924","M标识":"NGC5924","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h22m2s","赤经D(J2000)":"15.367222222222223","赤纬(J2000)":"+31h13m57s","赤纬D(J2000)":"31.232499999999998","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"12","详细描述":"nebulous star, very faint, small, faint star close to south","简略描述":"Neb *, vF, S, F * close s"},{"ID":"5925","标识":"NGC5925","M标识":"NGC5925","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1m","星座(Zh)":"矩尺座","星座(En)":"NOR","赤经(J2000)":"15h27m26s","赤经D(J2000)":"15.45722222222222","赤纬(J2000)":"-54h31m42s","赤纬D(J2000)":"-54.52833333333333","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"cluster, very large, very rich, a little compressed, stars from 11th to 14th magnitude","简略描述":"Cl, vL, vRi, lC, st 11…14"},{"ID":"5926","标识":"NGC5926","M标识":"NGC5926","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h23m25s","赤经D(J2000)":"15.390277777777778","赤纬(J2000)":"+12h42m57s","赤纬D(J2000)":"12.715833333333332","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"90","详细描述":"faint, very small, 2 stars near","简略描述":"F, vS, 2 st nr"},{"ID":"5927","标识":"NGC5927","M标识":"NGC5927","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VIII","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"15h28m0.5s","赤经D(J2000)":"15.466805555555556","赤纬(J2000)":"-50h40m20s","赤纬D(J2000)":"-50.67222222222222","可见光星等V":"8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"globular cluster, considerably bright, large, round, very gradually brighter middle, well resolved, clearly consisting of stars, stars of 15th magnitude","简略描述":"globular, cB, L, R, vgbM, rrr, st 15"},{"ID":"5928","标识":"NGC5928","M标识":"NGC5928","拓展名":"","组件":"","Class":"II 874","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h26m2.8s","赤经D(J2000)":"15.434111111111111","赤纬(J2000)":"+18h4m25s","赤纬D(J2000)":"18.07361111111111","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.2","短轴(分)":"1.6","方位角":"105","详细描述":"pretty bright, considerably small, round, pretty suddenly brighter middle, 7th magnitude star to north","简略描述":"pB, cS, R, psbM, * 7 n"},{"ID":"5929","标识":"NGC5929","M标识":"NGC5929","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab\/P","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h26m6.1s","赤经D(J2000)":"15.435027777777778","赤纬(J2000)":"+41h40m16s","赤纬D(J2000)":"41.67111111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"","详细描述":"very faint, very small, southwestern member of double nebula","简略描述":"vF, vS, sp of D neb"},{"ID":"5930","标识":"NGC5930","M标识":"NGC5930","拓展名":"","组件":"","Class":"II 651","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h26m8s","赤经D(J2000)":"15.435555555555556","赤纬(J2000)":"+41h40m33s","赤纬D(J2000)":"41.67583333333333","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"37","详细描述":"very faint, very small, southwestern member of double nebula","简略描述":"pF, pS, R, nf of D neb"},{"ID":"5931","标识":"NGC5931","M标识":"NGC5931","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h29m29.6s","赤经D(J2000)":"15.491555555555555","赤纬(J2000)":"+7h34m23s","赤纬D(J2000)":"7.573055555555555","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.5","方位角":"48","详细描述":"extremely faint, pretty large, round","简略描述":"eF, pL, R"},{"ID":"5932","标识":"NGC5932","M标识":"NGC5932","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h26m48.2s","赤经D(J2000)":"15.446722222222222","赤纬(J2000)":"+48h36m54s","赤纬D(J2000)":"48.615","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, pretty small, round, northwestern of 2","简略描述":"vF, pS, R, np of 2"},{"ID":"5933","标识":"NGC5933","M标识":"NGC5933","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h27m1.5s","赤经D(J2000)":"15.450416666666666","赤纬(J2000)":"+48h36m50s","赤纬D(J2000)":"48.61388888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"33","详细描述":"most extremely faint, very small, round, southeastern of 2","简略描述":"eeF, vS, R, sf of 2"},{"ID":"5934","标识":"NGC5934","M标识":"NGC5934","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h28m12.6s","赤经D(J2000)":"15.470166666666668","赤纬(J2000)":"+42h55m47s","赤纬D(J2000)":"42.92972222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"2","详细描述":"faint, small, irregular, a little extended north-south, 2 small stars involved","简略描述":"F, S, irr, lE ns, 2 S st inv"},{"ID":"5935","标识":"NGC5935","M标识":"NGC5935","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h28m16.6s","赤经D(J2000)":"15.471277777777777","赤纬(J2000)":"+42h56m41s","赤纬D(J2000)":"42.94472222222222","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"27","详细描述":"13th or 14th magnitude star which seems slightly nebulous","简略描述":"* 13·14 seems slightly nebs"},{"ID":"5936","标识":"NGC5936","M标识":"NGC5936","拓展名":"","组件":"","Class":"II 130","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h30m0.8s","赤经D(J2000)":"15.500222222222222","赤纬(J2000)":"+12h59m20s","赤纬D(J2000)":"12.988888888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"36","详细描述":"faint, pretty large, irregularly round, very gradually brighter middle, mottled but not resolved","简略描述":"F, pL, iR, vgbM, r"},{"ID":"5937","标识":"NGC5937","M标识":"NGC5937","拓展名":"","组件":"","Class":"II 401","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h30m46.2s","赤经D(J2000)":"15.512833333333333","赤纬(J2000)":"-2h49m45s","赤纬D(J2000)":"-2.8291666666666666","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"20","详细描述":"pretty bright, pretty small, round, very gradually brighter middle, 3 stars to east","简略描述":"pB, pS, R, vgbM, 3 st f"},{"ID":"5938","标识":"NGC5938","M标识":"NGC5938","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"南三角座","星座(En)":"TRA","赤经(J2000)":"15h36m26.1s","赤经D(J2000)":"15.60725","赤纬(J2000)":"-66h51m33s","赤纬D(J2000)":"-66.85916666666667","可见光星等V":"11.8","摄影(蓝光)星等B":"12.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.8","短轴(分)":"2.5","方位角":"177","详细描述":"faint, small, among stars","简略描述":"F, S, am st"},{"ID":"5939","标识":"NGC5939","M标识":"NGC5939","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"15h24m45.8s","赤经D(J2000)":"15.412722222222223","赤纬(J2000)":"+68h43m47s","赤纬D(J2000)":"68.72972222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"35","详细描述":"pretty bright, pretty small, a little extended","简略描述":"pB, pS, lE"},{"ID":"5940","标识":"NGC5940","M标识":"NGC5940","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h31m18.2s","赤经D(J2000)":"15.521722222222223","赤纬(J2000)":"+7h27m27s","赤纬D(J2000)":"7.4575000000000005","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, pretty small, round, faint star to west, 1st of 4","简略描述":"eF, pS, R, F * p, 1st of 4"},{"ID":"5941","标识":"NGC5941","M标识":"NGC5941","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h31m40.3s","赤经D(J2000)":"15.527861111111111","赤纬(J2000)":"+7h20m20s","赤纬D(J2000)":"7.338888888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"70","详细描述":"most extremely faint, small, round, 2nd of 4","简略描述":"eeF, S, R, 2nd of 4"},{"ID":"5942","标识":"NGC5942","M标识":"NGC5942","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h31m36.8s","赤经D(J2000)":"15.52688888888889","赤纬(J2000)":"+7h18m44s","赤纬D(J2000)":"7.312222222222222","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"most extremely faint, small, round, 3rd of 4","简略描述":"eeF, S, R, 3rd of 4"},{"ID":"5943","标识":"NGC5943","M标识":"NGC5943","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h29m44s","赤经D(J2000)":"15.495555555555555","赤纬(J2000)":"+42h46m43s","赤纬D(J2000)":"42.77861111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"very faint, pretty small, diffuse","简略描述":"vF, pS, dif"},{"ID":"5944","标识":"NGC5944","M标识":"NGC5944","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h31m47.6s","赤经D(J2000)":"15.52988888888889","赤纬(J2000)":"+7h18m29s","赤纬D(J2000)":"7.308055555555556","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"111","详细描述":"most extremely faint, small, round, 4th of 4","简略描述":"eeF, S, R, 4th of 4"},{"ID":"5945","标识":"NGC5945","M标识":"NGC5945","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h29m44.9s","赤经D(J2000)":"15.495805555555554","赤纬(J2000)":"+42h55m9s","赤纬D(J2000)":"42.91916666666666","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"2.9","短轴(分)":"1.8","方位角":"99","详细描述":"pretty faint, pretty large, gradually much brighter middle, small star attached on northwest","简略描述":"pF, pL, gmbM, S * att np"},{"ID":"5946","标识":"NGC5946","M标识":"NGC5946","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"IX","星座(Zh)":"矩尺座","星座(En)":"NOR","赤经(J2000)":"15h35m28.5s","赤经D(J2000)":"15.59125","赤纬(J2000)":"-50h39m32s","赤纬D(J2000)":"-50.65888888888889","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"globular cluster, considerably bright, pretty large, round, very gradually a little brighter middle, well resolved, clearly consisting of stars, stars of 16th magnitude","简略描述":"globular, cB, pL, R, vglbM, rrr, st 16"},{"ID":"5947","标识":"NGC5947","M标识":"NGC5947","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h30m36.6s","赤经D(J2000)":"15.510166666666667","赤纬(J2000)":"+42h43m3s","赤纬D(J2000)":"42.7175","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"5948","标识":"NGC5948","M标识":"NGC5948","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h32m58.6s","赤经D(J2000)":"15.54961111111111","赤纬(J2000)":"+3h59m0s","赤纬D(J2000)":"3.9833333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint star in very faint nebulosity, very faint star close","简略描述":"F * in vF neby, vF * close"},{"ID":"5949","标识":"NGC5949","M标识":"NGC5949","拓展名":"","组件":"","Class":"II 906","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h28m0.7s","赤经D(J2000)":"15.466861111111111","赤纬(J2000)":"+64h45m47s","赤纬D(J2000)":"64.76305555555555","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.2","短轴(分)":"1","方位角":"147","详细描述":"faint, small, a little extended 45°±, very gradually a little brighter middle","简略描述":"F, S, lE 45° ±, vglbM"},{"ID":"5950","标识":"NGC5950","M标识":"NGC5950","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h31m30.6s","赤经D(J2000)":"15.525166666666667","赤纬(J2000)":"+40h25m50s","赤纬D(J2000)":"40.43055555555555","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"37","详细描述":"very faint, small, round, small star to northwest","简略描述":"vF, S, R, S * np"},{"ID":"5951","标识":"NGC5951","M标识":"NGC5951","拓展名":"","组件":"","Class":"II 654","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h33m43.1s","赤经D(J2000)":"15.561972222222224","赤纬(J2000)":"+15h0m27s","赤纬D(J2000)":"15.0075","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.6","短轴(分)":"0.8","方位角":"5","详细描述":"faint, pretty small, extended 150°±","简略描述":"F, pS, E 150° ±"},{"ID":"5952","标识":"NGC5952","M标识":"NGC5952","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h34m56.3s","赤经D(J2000)":"15.582305555555555","赤纬(J2000)":"+4h57m34s","赤纬D(J2000)":"4.959444444444444","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"126","详细描述":"extremely faint, very small, almost stellar","简略描述":"eF, vS, alm stell"},{"ID":"5953","标识":"NGC5953","M标识":"NGC5953","拓展名":"","组件":"","Class":"II 178","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h34m32.3s","赤经D(J2000)":"15.57563888888889","赤纬(J2000)":"+15h11m39s","赤纬D(J2000)":"15.194166666666668","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"169","详细描述":"pretty bright, considerably small, western of double nebula","简略描述":"pB, cS, p of D neb"},{"ID":"5954","标识":"NGC5954","M标识":"NGC5954","拓展名":"","组件":"","Class":"II 179","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h34m34.9s","赤经D(J2000)":"15.57636111111111","赤纬(J2000)":"+15h12m4s","赤纬D(J2000)":"15.20111111111111","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"5","详细描述":"pretty bright, considerably small, western of double nebula","简略描述":"pB, cS, f of D neb"},{"ID":"5955","标识":"NGC5955","M标识":"NGC5955","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h35m12.4s","赤经D(J2000)":"15.586777777777778","赤纬(J2000)":"+5h3m48s","赤纬D(J2000)":"5.0633333333333335","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"6","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"5956","标识":"NGC5956","M标识":"NGC5956","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h34m58.5s","赤经D(J2000)":"15.582916666666666","赤纬(J2000)":"+11h45m1s","赤纬D(J2000)":"11.750277777777777","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.6","方位角":"","详细描述":"faint, small, round, 16th magnitude star close to east","简略描述":"F, S, R, * 16 close f"},{"ID":"5957","标识":"NGC5957","M标识":"NGC5957","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h35m23.1s","赤经D(J2000)":"15.58975","赤纬(J2000)":"+12h2m52s","赤纬D(J2000)":"12.047777777777778","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.8","短轴(分)":"2.6","方位角":"90","详细描述":"pretty bright, pretty large, cometic, a little brighter middle","简略描述":"pB, pL, com, lbM"},{"ID":"5958","标识":"NGC5958","M标识":"NGC5958","拓展名":"","组件":"","Class":"II 399","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h34m49.1s","赤经D(J2000)":"15.580305555555555","赤纬(J2000)":"+28h39m19s","赤纬D(J2000)":"28.655277777777776","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"pretty faint, pretty large, irregularly round, brighter middle, mottled but not resolved","简略描述":"pF, pL, iR, bM, r"},{"ID":"5959","标识":"NGC5959","M标识":"NGC5959","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h37m22.3s","赤经D(J2000)":"15.622861111111112","赤纬(J2000)":"-16h35m46s","赤纬D(J2000)":"-16.59611111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"2","短轴(分)":"1.7","方位角":"177","详细描述":"very faint, pretty small, very little extended, brighter middle and nucleus","简略描述":"vF, pS, vlE, bMN"},{"ID":"5960","标识":"NGC5960","M标识":"NGC5960","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h36m18.4s","赤经D(J2000)":"15.60511111111111","赤纬(J2000)":"+5h39m57s","赤纬D(J2000)":"5.6658333333333335","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"114","详细描述":"very faint, small, nebulous star","简略描述":"vF, S, neb *"},{"ID":"5961","标识":"NGC5961","M标识":"NGC5961","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h35m16.2s","赤经D(J2000)":"15.587833333333334","赤纬(J2000)":"+30h51m51s","赤纬D(J2000)":"30.86416666666667","可见光星等V":"14.1","摄影(蓝光)星等B":"14.5","B-V":"0.4","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"97","详细描述":"pretty faint, small, extended east-west","简略描述":"pF, S, E pf"},{"ID":"5962","标识":"NGC5962","M标识":"NGC5962","拓展名":"","组件":"","Class":"II 96","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h36m31.6s","赤经D(J2000)":"15.608777777777778","赤纬(J2000)":"+16h36m28s","赤纬D(J2000)":"16.60777777777778","可见光星等V":"11.3","摄影(蓝光)星等B":"12","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3","短轴(分)":"2.2","方位角":"110","详细描述":"pretty faint, pretty large, irregularly a little extended, gradually brighter middle","简略描述":"pF, pL, ilE, gbM"},{"ID":"5963","标识":"NGC5963","M标识":"NGC5963","拓展名":"","组件":"","Class":"II 761","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h33m27.8s","赤经D(J2000)":"15.557722222222223","赤纬(J2000)":"+56h33m36s","赤纬D(J2000)":"56.559999999999995","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"3.3","短轴(分)":"2.6","方位角":"55","详细描述":"pretty faint, pretty small, irregular figure","简略描述":"pF, pS, iF"},{"ID":"5964","标识":"NGC5964","M标识":"NGC5964","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h37m36.2s","赤经D(J2000)":"15.626722222222222","赤纬(J2000)":"+5h58m25s","赤纬D(J2000)":"5.973611111111111","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"4.1","短轴(分)":"3.3","方位角":"145","详细描述":"extremely faint, very large, round, very gradually brighter middle, mottled but not resolved","简略描述":"eF, vL, R, vgbM, r"},{"ID":"5965","标识":"NGC5965","M标识":"NGC5965","拓展名":"","组件":"1","Class":"II 762","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h34m2s","赤经D(J2000)":"15.567222222222222","赤纬(J2000)":"+56h41m8s","赤纬D(J2000)":"56.68555555555555","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"5.2","短轴(分)":"0.7","方位角":"53","详细描述":"considerably faint, considerably large, a little extended","简略描述":"cF, cL, lE"},{"ID":"5966","标识":"NGC5966","M标识":"NGC5966","拓展名":"","组件":"","Class":"III 634","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h35m52.2s","赤经D(J2000)":"15.597833333333334","赤纬(J2000)":"+39h46m9s","赤纬D(J2000)":"39.76916666666666","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"90","详细描述":"very faint, small, round, gradually brighter middle, two 8th magnitude stars to east","简略描述":"vF, S, R, gbM, 2 st 8 f"},{"ID":"5967","标识":"NGC5967","M标识":"NGC5967","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"15h48m16s","赤经D(J2000)":"15.804444444444446","赤纬(J2000)":"-75h40m23s","赤纬D(J2000)":"-75.67305555555556","可见光星等V":"12","摄影(蓝光)星等B":"12.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.7","短轴(分)":"1.7","方位角":"90","详细描述":"faint, pretty large, round, very gradually brighter middle","简略描述":"F, pL, R, vgbM"},{"ID":"5968","标识":"NGC5968","M标识":"NGC5968","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"15h39m57s","赤经D(J2000)":"15.665833333333333","赤纬(J2000)":"-30h33m11s","赤纬D(J2000)":"-30.553055555555556","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.1","短轴(分)":"1.9","方位角":"","详细描述":"very faint, large, round, gradually brighter middle, mottled but not resolved","简略描述":"vF, L, R, gbM, r"},{"ID":"5969","标识":"NGC5969","M标识":"NGC5969","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h34m50.9s","赤经D(J2000)":"15.580805555555555","赤纬(J2000)":"+56h27m5s","赤纬D(J2000)":"56.45138888888889","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"0","详细描述":"extremely small, round, stellar","简略描述":"eS, R, stellar"},{"ID":"5970","标识":"NGC5970","M标识":"NGC5970","拓展名":"","组件":"","Class":"II 76","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h38m30s","赤经D(J2000)":"15.641666666666666","赤纬(J2000)":"+12h11m11s","赤纬D(J2000)":"12.186388888888889","可见光星等V":"11.5","摄影(蓝光)星等B":"12.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3","短轴(分)":"2","方位角":"88","详细描述":"pretty faint, pretty large, round, partially resolved (some stars seen)","简略描述":"pF, pL, R, rr"},{"ID":"5971","标识":"NGC5971","M标识":"NGC5971","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h35m36.9s","赤经D(J2000)":"15.593583333333333","赤纬(J2000)":"+56h27m43s","赤纬D(J2000)":"56.46194444444445","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"136","详细描述":"most extremely faint, very small, round, a little brighter middle","简略描述":"eeF, vS, R, lbM"},{"ID":"5972","标识":"NGC5972","M标识":"NGC5972","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h38m54.1s","赤经D(J2000)":"15.648361111111111","赤纬(J2000)":"+17h1m34s","赤纬D(J2000)":"17.02611111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.7","方位角":"5","详细描述":"faint, pretty small, irregularly round","简略描述":"F, pS, irrR"},{"ID":"5973","标识":"NGC5973","M标识":"NGC5973","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h40m15.6s","赤经D(J2000)":"15.671","赤纬(J2000)":"-8h36m3s","赤纬D(J2000)":"-8.600833333333332","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"140","详细描述":"faint, small, irregularly round","简略描述":"F, S, iR"},{"ID":"5974","标识":"NGC5974","M标识":"NGC5974","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h39m2.3s","赤经D(J2000)":"15.650638888888889","赤纬(J2000)":"+31h45m35s","赤纬D(J2000)":"31.759722222222223","可见光星等V":"14.2","摄影(蓝光)星等B":"14.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"110","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"5975","标识":"NGC5975","M标识":"NGC5975","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h39m58s","赤经D(J2000)":"15.666111111111112","赤纬(J2000)":"+21h28m14s","赤纬D(J2000)":"21.470555555555553","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.3","方位角":"171","详细描述":"very faint, very small, irregularly round, several very faint stars involved","简略描述":"vF, vS, irrR, sev vF st inv"},{"ID":"5976","标识":"NGC5976","M标识":"NGC5976","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h36m47.8s","赤经D(J2000)":"15.613277777777778","赤纬(J2000)":"+59h23m54s","赤纬D(J2000)":"59.39833333333333","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"119","详细描述":"most extremely faint, small, round","简略描述":"eeF, S, R"},{"ID":"5977","标识":"NGC5977","M标识":"NGC5977","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h40m33.4s","赤经D(J2000)":"15.675944444444443","赤纬(J2000)":"+17h7m43s","赤纬D(J2000)":"17.128611111111113","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"1","方位角":"155","详细描述":"extremely faint, small, round, a little brighter middle","简略描述":"eF, S, R, lbM"},{"ID":"5978","标识":"NGC5978","M标识":"NGC5978","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h42m27.1s","赤经D(J2000)":"15.707527777777777","赤纬(J2000)":"-13h14m2s","赤纬D(J2000)":"-13.233888888888888","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, very small, suddenly brighter middle and nucleus, among stars","简略描述":"eF, vS, sbMN, am st"},{"ID":"5979","标识":"NGC5979","M标识":"NGC5979","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"南三角座","星座(En)":"TRA","赤经(J2000)":"15h47m41.1s","赤经D(J2000)":"15.79475","赤纬(J2000)":"-61h13m2s","赤纬D(J2000)":"-61.217222222222226","可见光星等V":"11.5","摄影(蓝光)星等B":"11.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.3","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a planetary nebula, pretty faint, very small, round, mottled but not resolved?, among 150 stars","简略描述":"!, planetary, pF, vS, R, r? am 150 st"},{"ID":"5980","标识":"NGC5980","M标识":"NGC5980","拓展名":"","组件":"","Class":"II 655","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h41m30.5s","赤经D(J2000)":"15.691805555555556","赤纬(J2000)":"+15h47m15s","赤纬D(J2000)":"15.7875","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.9","短轴(分)":"0.7","方位角":"13","详细描述":"faint, pretty small, extended 0°","简略描述":"F, pS, E 0°"},{"ID":"5981","标识":"NGC5981","M标识":"NGC5981","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h37m53.4s","赤经D(J2000)":"15.6315","赤纬(J2000)":"+59h23m29s","赤纬D(J2000)":"59.39138888888889","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.7","短轴(分)":"0.3","方位角":"140","详细描述":"faint, much extended","简略描述":"F, mE"},{"ID":"5982","标识":"NGC5982","M标识":"NGC5982","拓展名":"","组件":"","Class":"II 764","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h38m40s","赤经D(J2000)":"15.644444444444444","赤纬(J2000)":"+59h21m22s","赤纬D(J2000)":"59.35611111111111","可见光星等V":"11.1","摄影(蓝光)星等B":"12","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.6","短轴(分)":"1.9","方位角":"110","详细描述":"considerably bright, small, round, pretty suddenly brighter middle, mottled but not resolved","简略描述":"cB, S, R, psbM, r"},{"ID":"5983","标识":"NGC5983","M标识":"NGC5983","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h42m45.5s","赤经D(J2000)":"15.712638888888888","赤纬(J2000)":"+8h14m30s","赤纬D(J2000)":"8.241666666666665","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"extremely faint, extremely small, round, very little brighter middle","简略描述":"eF, eS, R, vlbM"},{"ID":"5984","标识":"NGC5984","M标识":"NGC5984","拓展名":"","组件":"","Class":"II 656","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h42m53.1s","赤经D(J2000)":"15.714749999999999","赤纬(J2000)":"+14h13m56s","赤纬D(J2000)":"14.232222222222223","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.9","短轴(分)":"0.7","方位角":"144","详细描述":"pretty bright, small, extended 135°±, brighter middle","简略描述":"pB, S, E 135° ±, bM"},{"ID":"5985","标识":"NGC5985","M标识":"NGC5985","拓展名":"","组件":"","Class":"II 766","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h39m37.1s","赤经D(J2000)":"15.660305555555556","赤纬(J2000)":"+59h19m55s","赤纬D(J2000)":"59.331944444444446","可见光星等V":"11.1","摄影(蓝光)星等B":"11.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"5.5","短轴(分)":"3","方位角":"13","详细描述":"pretty bright, considerably large, irregularly extended, mottled but not resolved","简略描述":"pB, cL, iE, r"},{"ID":"5986","标识":"NGC5986","M标识":"NGC5986","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VII","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"15h46m3.5s","赤经D(J2000)":"15.76763888888889","赤纬(J2000)":"-37h47m8s","赤纬D(J2000)":"-37.785555555555554","可见光星等V":"7.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9.6","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a globular cluster, very bright, large, round, very gradually brighter middle, stars of 13th to 15th magnitude","简略描述":"!, globular, vB, L, R, vgbM, st 13…15"},{"ID":"5987","标识":"NGC5987","M标识":"NGC5987","拓展名":"","组件":"","Class":"II 765","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h39m56.9s","赤经D(J2000)":"15.665805555555556","赤纬(J2000)":"+58h4m47s","赤纬D(J2000)":"58.07972222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4.2","短轴(分)":"1.3","方位角":"65","详细描述":"pretty faint, considerably small","简略描述":"pF, cS"},{"ID":"5988","标识":"NGC5988","M标识":"NGC5988","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h44m33.8s","赤经D(J2000)":"15.742722222222222","赤纬(J2000)":"+10h17m35s","赤纬D(J2000)":"10.293055555555556","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"1","方位角":"115","详细描述":"most extremely faint, pretty small, round, faint star near to north","简略描述":"eeF, pS, R, F * nr n"},{"ID":"5989","标识":"NGC5989","M标识":"NGC5989","拓展名":"","组件":"","Class":"III 738","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h41m32.4s","赤经D(J2000)":"15.692333333333334","赤纬(J2000)":"+59h45m18s","赤纬D(J2000)":"59.755","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"5990","标识":"NGC5990","M标识":"NGC5990","拓展名":"","组件":"","Class":"II 425","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h46m16.4s","赤经D(J2000)":"15.771222222222223","赤纬(J2000)":"+2h24m56s","赤纬D(J2000)":"2.4155555555555557","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"115","详细描述":"very faint, very small, round, gradually brighter middle","简略描述":"vF, vS, R, gbM"},{"ID":"5991","标识":"NGC5991","M标识":"NGC5991","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h45m16.7s","赤经D(J2000)":"15.75463888888889","赤纬(J2000)":"+24h37m52s","赤纬D(J2000)":"24.63111111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.9","方位角":"126","详细描述":"pretty faint, small, round, much brighter middle","简略描述":"pF, S, R, mbM"},{"ID":"5992","标识":"NGC5992","M标识":"NGC5992","拓展名":"","组件":"","Class":"III 635","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h44m21.5s","赤经D(J2000)":"15.739305555555555","赤纬(J2000)":"+41h5m9s","赤纬D(J2000)":"41.08583333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"175","详细描述":"very faint, very small, round, brighter middle, southwestern of 2","简略描述":"vF, vS, R, bM, sp of 2"},{"ID":"5993","标识":"NGC5993","M标识":"NGC5993","拓展名":"","组件":"","Class":"III 636","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h44m27.6s","赤经D(J2000)":"15.741","赤纬(J2000)":"+41h7m15s","赤纬D(J2000)":"41.12083333333334","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"140","详细描述":"considerably faint, very small, round, brighter middle, northeastern of 2","简略描述":"cF, vS, R, bM, nf of 2"},{"ID":"5994","标识":"NGC5994","M标识":"NGC5994","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h46m53.2s","赤经D(J2000)":"15.781444444444446","赤纬(J2000)":"+17h52m23s","赤纬D(J2000)":"17.873055555555556","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"87","详细描述":"small, southwest of II 97","简略描述":"S, sp II 97"},{"ID":"5995","标识":"NGC5995","M标识":"NGC5995","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h48m24.9s","赤经D(J2000)":"15.806916666666668","赤纬(J2000)":"-13h45m26s","赤纬D(J2000)":"-13.757222222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"171","详细描述":"extremely faint, small, round, very small star to west","简略描述":"eF, S, R, vS * p"},{"ID":"5996","标识":"NGC5996","M标识":"NGC5996","拓展名":"","组件":"","Class":"II 97","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h46m58.9s","赤经D(J2000)":"15.783027777777779","赤纬(J2000)":"+17h53m2s","赤纬D(J2000)":"17.883888888888887","可见光星等V":"12.8","摄影(蓝光)星等B":"13.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"33","详细描述":"small, southwest of II 97","简略描述":"pF, cS, R, r, bet 2 D st"},{"ID":"5997","标识":"NGC5997","M标识":"NGC5997","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h47m27.6s","赤经D(J2000)":"15.791","赤纬(J2000)":"+8h19m18s","赤纬D(J2000)":"8.321666666666667","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"90","详细描述":"extremely faint, most extremely small, stellar","简略描述":"eF, eeS, stell"},{"ID":"5998","标识":"NGC5998","M标识":"NGC5998","拓展名":"","组件":"","Class":"VII 29","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"15h49m30s","赤经D(J2000)":"15.825","赤纬(J2000)":"-28h36m0s","赤纬D(J2000)":"-28.6","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"1","方位角":"","详细描述":"cluster, pretty large, pretty rich, stars very small","简略描述":"Cl, pL, pRi, st vS"},{"ID":"5999","标识":"NGC5999","M标识":"NGC5999","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"矩尺座","星座(En)":"NOR","赤经(J2000)":"15h52m8.5s","赤经D(J2000)":"15.869027777777779","赤纬(J2000)":"-56h28m22s","赤纬D(J2000)":"-56.47277777777778","可见光星等V":"9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"cluster, large, pretty rich, stars of 12th to 14th magnitude","简略描述":"Cl, L, pRi, st 12…14"},{"ID":"6000","标识":"NGC6000","M标识":"NGC6000","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"15h49m49.4s","赤经D(J2000)":"15.830388888888889","赤纬(J2000)":"-29h23m13s","赤纬D(J2000)":"-29.386944444444445","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.9","短轴(分)":"1.6","方位角":"154","详细描述":"very faint, small, round, suddenly brighter middle","简略描述":"vF, S, R, sbM"},{"ID":"6001","标识":"NGC6001","M标识":"NGC6001","拓展名":"","组件":"","Class":"III 371","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h47m45.9s","赤经D(J2000)":"15.796083333333334","赤纬(J2000)":"+28h38m30s","赤纬D(J2000)":"28.641666666666666","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"6002","标识":"NGC6002","M标识":"NGC6002","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h47m44.3s","赤经D(J2000)":"15.795638888888888","赤纬(J2000)":"+28h36m38s","赤纬D(J2000)":"28.610555555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebula 100 arcsec south of III 371","简略描述":"Neb 100\" s of III 371"},{"ID":"6003","标识":"NGC6003","M标识":"NGC6003","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h49m25.6s","赤经D(J2000)":"15.823777777777778","赤纬(J2000)":"+19h1m57s","赤纬D(J2000)":"19.0325","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"126","详细描述":"faint, very small, small star involved","简略描述":"F, vS, S * inv"},{"ID":"6004","标识":"NGC6004","M标识":"NGC6004","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h50m22.8s","赤经D(J2000)":"15.839666666666668","赤纬(J2000)":"+18h56m22s","赤纬D(J2000)":"18.939444444444444","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"1.7","方位角":"105","详细描述":"very faint, pretty large, a little extended, a little brighter middle","简略描述":"vF, pL, lE, lbM"},{"ID":"6005","标识":"NGC6005","M标识":"NGC6005","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"矩尺座","星座(En)":"NOR","赤经(J2000)":"15h55m47.4s","赤经D(J2000)":"15.929833333333333","赤纬(J2000)":"-57h26m37s","赤纬D(J2000)":"-57.44361111111111","可见光星等V":"10.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"cluster, pretty small, pretty rich, much compressed, stars of 16th magnitude","简略描述":"Cl, pS, pRi, mC, st 16"},{"ID":"6006","标识":"NGC6006","M标识":"NGC6006","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h53m2.5s","赤经D(J2000)":"15.884027777777778","赤纬(J2000)":"+12h0m21s","赤纬D(J2000)":"12.005833333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"162","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"6007","标识":"NGC6007","M标识":"NGC6007","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h53m23.2s","赤经D(J2000)":"15.889777777777777","赤纬(J2000)":"+11h57m35s","赤纬D(J2000)":"11.959722222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"13.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"65","详细描述":"faint, pretty large","简略描述":"F, pL"},{"ID":"6008","标识":"NGC6008","M标识":"NGC6008","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h52m55.9s","赤经D(J2000)":"15.882194444444444","赤纬(J2000)":"+21h6m4s","赤纬D(J2000)":"21.101111111111113","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"63","详细描述":"very faint, round, pretty large, brighter middle","简略描述":"vF, R, pL, bM"},{"ID":"6009","标识":"NGC6009","M标识":"NGC6009","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h53m24.1s","赤经D(J2000)":"15.890027777777778","赤纬(J2000)":"+12h3m30s","赤纬D(J2000)":"12.058333333333334","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"175","详细描述":"faint, very small, stellar","简略描述":"F, vS, stell"},{"ID":"6010","标识":"NGC6010","M标识":"NGC6010","拓展名":"","组件":"","Class":"II 583","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h54m18.9s","赤经D(J2000)":"15.90525","赤纬(J2000)":"+0h32m35s","赤纬D(J2000)":"0.5430555555555555","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2","短轴(分)":"0.5","方位角":"102","详细描述":"pretty faint, small, extended 90°±, gradually brighter middle, mottled but not resolved","简略描述":"pF, S, E 90° ±, gbM, r"},{"ID":"6011","标识":"NGC6011","M标识":"NGC6011","拓展名":"","组件":"","Class":"III 313","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"15h46m32.4s","赤经D(J2000)":"15.775666666666668","赤纬(J2000)":"+72h10m9s","赤纬D(J2000)":"72.16916666666667","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2","短轴(分)":"0.7","方位角":"110","详细描述":"very faint, small, extended 90°±, very small star to east","简略描述":"vF, S, E 90° ±, vS * f"},{"ID":"6012","标识":"NGC6012","M标识":"NGC6012","拓展名":"","组件":"","Class":"II 657","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h54m13.6s","赤经D(J2000)":"15.903777777777778","赤纬(J2000)":"+14h36m8s","赤纬D(J2000)":"14.602222222222222","可见光星等V":"12","摄影(蓝光)星等B":"12.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.1","短轴(分)":"1.5","方位角":"168","详细描述":"faint, between 2 bright stars","简略描述":"F, bet 2 B st"},{"ID":"6013","标识":"NGC6013","M标识":"NGC6013","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"15h52m52.9s","赤经D(J2000)":"15.881361111111111","赤纬(J2000)":"+40h38m48s","赤纬D(J2000)":"40.64666666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"174","详细描述":"extremely faint, very small, irregularly round, a little brighter middle","简略描述":"eF, vS, iR, lbM"},{"ID":"6014","标识":"NGC6014","M标识":"NGC6014","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h55m57.5s","赤经D(J2000)":"15.932638888888889","赤纬(J2000)":"+5h55m54s","赤纬D(J2000)":"5.931666666666667","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"171","详细描述":"pretty bright, pretty large, extended","简略描述":"pB, pL, E"},{"ID":"6015","标识":"NGC6015","M标识":"NGC6015","拓展名":"","组件":"","Class":"III 739","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h51m25.4s","赤经D(J2000)":"15.857055555555554","赤纬(J2000)":"+62h18m31s","赤纬D(J2000)":"62.308611111111105","可见光星等V":"11.1","摄影(蓝光)星等B":"11.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"5.4","短轴(分)":"2.1","方位角":"28","详细描述":"very faint, pretty large, round, very gradually brighter middle (d'Arrest: bright, much extended)","简略描述":"vF, pL, R, vgbM (d'A: B, mE)"},{"ID":"6016","标识":"NGC6016","M标识":"NGC6016","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h55m54.9s","赤经D(J2000)":"15.931916666666666","赤纬(J2000)":"+26h58m2s","赤纬D(J2000)":"26.96722222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.5","方位角":"26","详细描述":"very faint, small, extended","简略描述":"vF, S, E"},{"ID":"6017","标识":"NGC6017","M标识":"NGC6017","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h57m15.4s","赤经D(J2000)":"15.954277777777778","赤纬(J2000)":"+5h59m56s","赤纬D(J2000)":"5.998888888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"140","详细描述":"a remarkable object, very faint, very small, round, disc gradually then suddenly much brighter middle","简略描述":"!, vF, vS, R, disc g, smbM"},{"ID":"6018","标识":"NGC6018","M标识":"NGC6018","拓展名":"","组件":"","Class":"III 646","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h57m29.8s","赤经D(J2000)":"15.958277777777777","赤纬(J2000)":"+15h52m22s","赤纬D(J2000)":"15.872777777777777","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"75","详细描述":"very faint, small, a little extended, western of 2","简略描述":"vF, S, lE, p of 2"},{"ID":"6019","标识":"NGC6019","M标识":"NGC6019","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h52m9.1s","赤经D(J2000)":"15.869194444444444","赤纬(J2000)":"+64h50m27s","赤纬D(J2000)":"64.84083333333332","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"most extremely faint, small, round, very difficult","简略描述":"eeF, S, R, v diffic"},{"ID":"6020","标识":"NGC6020","M标识":"NGC6020","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h57m8.1s","赤经D(J2000)":"15.95225","赤纬(J2000)":"+22h24m18s","赤纬D(J2000)":"22.404999999999998","可见光星等V":"12.7","摄影(蓝光)星等B":"13.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1","方位角":"140","详细描述":"extremely faint, extremely small, irregularly round, a little brighter middle","简略描述":"eF, eS, iR, lbM"},{"ID":"6021","标识":"NGC6021","M标识":"NGC6021","拓展名":"","组件":"","Class":"III 73","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h57m30.7s","赤经D(J2000)":"15.958527777777777","赤纬(J2000)":"+15h57m23s","赤纬D(J2000)":"15.956388888888888","可见光星等V":"13.1","摄影(蓝光)星等B":"14.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"160","详细描述":"extremely faint, very small, a little extended, eastern of 2","简略描述":"eF, vS, lE, f of 2"},{"ID":"6022","标识":"NGC6022","M标识":"NGC6022","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h57m47.9s","赤经D(J2000)":"15.963305555555555","赤纬(J2000)":"+16h16m58s","赤纬D(J2000)":"16.282777777777778","可见光星等V":"14.7","摄影(蓝光)星等B":"15.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"75","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"6023","标识":"NGC6023","M标识":"NGC6023","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h57m49.5s","赤经D(J2000)":"15.96375","赤纬(J2000)":"+16h18m38s","赤纬D(J2000)":"16.310555555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"14.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1","方位角":"70","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"6024","标识":"NGC6024","M标识":"NGC6024","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h53m7.8s","赤经D(J2000)":"15.8855","赤纬(J2000)":"+64h55m6s","赤纬D(J2000)":"64.91833333333334","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"117","详细描述":"pretty faint, pretty small, round, brighter middle, star close","简略描述":"pF, pS, R, bM, * close"},{"ID":"6025","标识":"NGC6025","M标识":"NGC6025","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"南三角座","星座(En)":"TRA","赤经(J2000)":"16h3m17.7s","赤经D(J2000)":"16.054916666666667","赤纬(J2000)":"-60h25m53s","赤纬D(J2000)":"-60.43138888888889","可见光星等V":"5.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"cluster, bright, very large, pretty rich, a little compressed, stars from 7th magnitude","简略描述":"Cl, B, vL, pRi, lC, st 7…"},{"ID":"6026","标识":"NGC6026","M标识":"NGC6026","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"16h1m21s","赤经D(J2000)":"16.022499999999997","赤纬(J2000)":"-34h32m37s","赤纬D(J2000)":"-34.54361111111111","可见光星等V":"12.9","摄影(蓝光)星等B":"13.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.67","短轴(分)":"","方位角":"","详细描述":"faint, small, round, gradually pretty much brighter middle, triangle of stars to northwest","简略描述":"F, S, R, gpmbM, Δ of st np"},{"ID":"6027","标识":"NGC6027","M标识":"NGC6027","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"赛弗特六重星系","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h59m12.5s","赤经D(J2000)":"15.986805555555554","赤纬(J2000)":"+20h45m50s","赤纬D(J2000)":"20.76388888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.7","方位角":"84","详细描述":"extremely faint, very faint star involved, 2 very faint stars near","简略描述":"eF, vF * inv, 2 vF st nr"},{"ID":"6028","标识":"NGC6028","M标识":"NGC6028","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h1m29.1s","赤经D(J2000)":"16.024749999999997","赤纬(J2000)":"+19h21m34s","赤纬D(J2000)":"19.359444444444446","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"30","详细描述":"very faint, pretty small, no nucleus","简略描述":"vF, pS, no Nucl"},{"ID":"6029","标识":"NGC6029","M标识":"NGC6029","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h1m58.8s","赤经D(J2000)":"16.032999999999998","赤纬(J2000)":"+12h34m29s","赤纬D(J2000)":"12.574722222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"5","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"6030","标识":"NGC6030","M标识":"NGC6030","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h1m51.3s","赤经D(J2000)":"16.030916666666666","赤纬(J2000)":"+17h57m27s","赤纬D(J2000)":"17.9575","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"37","详细描述":"pretty faint, very small, round, brighter middle","简略描述":"pF, vS, R, bM"},{"ID":"6031","标识":"NGC6031","M标识":"NGC6031","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"矩尺座","星座(En)":"NOR","赤经(J2000)":"16h7m34.4s","赤经D(J2000)":"16.12622222222222","赤纬(J2000)":"-54h1m0s","赤纬D(J2000)":"-54.016666666666666","可见光星等V":"8.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"cluster, small, much compressed, stars from 11th to 14th magnitude","简略描述":"Cl, S, mC, st 11…14"},{"ID":"6032","标识":"NGC6032","M标识":"NGC6032","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h3m1.1s","赤经D(J2000)":"16.050305555555557","赤纬(J2000)":"+20h57m21s","赤纬D(J2000)":"20.95583333333333","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"0","详细描述":"very faint, pretty large, a little extended, very little brighter middle, northwestern of 2","简略描述":"vF, pL, lE, vlbM, np of 2"},{"ID":"6033","标识":"NGC6033","M标识":"NGC6033","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h4m27.9s","赤经D(J2000)":"16.074416666666668","赤纬(J2000)":"-2h7m13s","赤纬D(J2000)":"-2.120277777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"1","方位角":"90","详细描述":"very faint nebulous star","简略描述":"vF neb *"},{"ID":"6034","标识":"NGC6034","M标识":"NGC6034","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h3m32s","赤经D(J2000)":"16.05888888888889","赤纬(J2000)":"+17h11m55s","赤纬D(J2000)":"17.198611111111113","可见光星等V":"13.5","摄影(蓝光)星等B":"14.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.8","方位角":"54","详细描述":"most extremely faint, very small, round, very difficult","简略描述":"eeF, vS, R, v diffic"},{"ID":"6035","标识":"NGC6035","M标识":"NGC6035","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h3m24.1s","赤经D(J2000)":"16.056694444444446","赤纬(J2000)":"+20h53m27s","赤纬D(J2000)":"20.890833333333333","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, pretty large, a little extended, southeastern of 2","简略描述":"vF, pL, lE, sf of 2"},{"ID":"6036","标识":"NGC6036","M标识":"NGC6036","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h4m30.7s","赤经D(J2000)":"16.075194444444445","赤纬(J2000)":"+3h52m5s","赤纬D(J2000)":"3.868055555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"146","详细描述":"very faint, very small, round, stellar","简略描述":"vF, vS, R, stell"},{"ID":"6037","标识":"NGC6037","M标识":"NGC6037","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h4m29.8s","赤经D(J2000)":"16.074944444444444","赤纬(J2000)":"+3h48m56s","赤纬D(J2000)":"3.8155555555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"54","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"6038","标识":"NGC6038","M标识":"NGC6038","拓展名":"","组件":"","Class":"III 622","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h2m40.4s","赤经D(J2000)":"16.044555555555558","赤纬(J2000)":"+37h21m34s","赤纬D(J2000)":"37.35944444444445","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"very faint, small, round, 10th magnitude star to southeast","简略描述":"vF, S, R, * 10 sf"},{"ID":"6039","标识":"NGC6039","M标识":"NGC6039","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h4m39.5s","赤经D(J2000)":"16.077638888888888","赤纬(J2000)":"+17h42m1s","赤纬D(J2000)":"17.700277777777778","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"65","详细描述":"most extremely faint, very small, round, southwestern of 3 in line","简略描述":"eeF, vS, R, sp of 3 in line"},{"ID":"6040","标识":"NGC6040","M标识":"NGC6040","拓展名":"A","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h4m26.7s","赤经D(J2000)":"16.074083333333334","赤纬(J2000)":"+17h45m0s","赤纬D(J2000)":"17.75","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"42","详细描述":"very faint, extremely small, faint star close","简略描述":"vF, eS, F * close"},{"ID":"6041","标识":"NGC6041","M标识":"NGC6041","拓展名":"A","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h4m35.8s","赤经D(J2000)":"16.07661111111111","赤纬(J2000)":"+17h43m17s","赤纬D(J2000)":"17.72138888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"36","详细描述":"very faint, very small","简略描述":"F, S"},{"ID":"6042","标识":"NGC6042","M标识":"NGC6042","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h4m39.5s","赤经D(J2000)":"16.077638888888888","赤纬(J2000)":"+17h42m1s","赤纬D(J2000)":"17.700277777777778","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"65","详细描述":"most extremely faint, very small, round, southwestern of 3 in line","简略描述":"vF, vS"},{"ID":"6043","标识":"NGC6043","M标识":"NGC6043","拓展名":"A","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m1.5s","赤经D(J2000)":"16.08375","赤纬(J2000)":"+17h46m33s","赤纬D(J2000)":"17.77583333333333","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"55","详细描述":"most extremely faint, pretty small, a little extended, '4th of 10'","简略描述":"eeF, pS, lE, \"4th of 10\""},{"ID":"6044","标识":"NGC6044","M标识":"NGC6044","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h4m59.6s","赤经D(J2000)":"16.083222222222222","赤纬(J2000)":"+17h52m13s","赤纬D(J2000)":"17.87027777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"most extremely faint, very small, round, very faint star close to west","简略描述":"eeF, vS, R, vF * close p"},{"ID":"6045","标识":"NGC6045","M标识":"NGC6045","拓展名":"A","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m8s","赤经D(J2000)":"16.085555555555555","赤纬(J2000)":"+17h45m29s","赤纬D(J2000)":"17.758055555555554","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"82","详细描述":"most extremely faint, very small, round, very difficult","简略描述":"eeF, vS, R, v diffic"},{"ID":"6046","标识":"NGC6046","M标识":"NGC6046","拓展名":"","组件":"","Class":"III 33","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h1m29.1s","赤经D(J2000)":"16.024749999999997","赤纬(J2000)":"+19h21m34s","赤纬D(J2000)":"19.359444444444446","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"30","详细描述":"very faint, pretty small, no nucleus","简略描述":"eF, pL, partly verified"},{"ID":"6047","标识":"NGC6047","M标识":"NGC6047","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m9s","赤经D(J2000)":"16.085833333333333","赤纬(J2000)":"+17h43m47s","赤纬D(J2000)":"17.72972222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"90","详细描述":"extremely faint, round, pretty small, faint star close to north","简略描述":"eF, R, pS, F * close n"},{"ID":"6048","标识":"NGC6048","M标识":"NGC6048","拓展名":"","组件":"","Class":"II 873","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"15h57m30.2s","赤经D(J2000)":"15.958388888888889","赤纬(J2000)":"+70h41m20s","赤纬D(J2000)":"70.6888888888889","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.2","短轴(分)":"1.7","方位角":"140","详细描述":"faint, round, brighter middle","简略描述":"F, R, bM"},{"ID":"6049","标识":"NGC6049","M标识":"NGC6049","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h5m37.8s","赤经D(J2000)":"16.093833333333333","赤纬(J2000)":"+8h5m48s","赤纬D(J2000)":"8.096666666666668","可见光星等V":"99","摄影(蓝光)星等B":"6.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"7th magnitude star in photosphere","简略描述":"* 7 in photosphere"},{"ID":"6050","标识":"NGC6050","M标识":"NGC6050","拓展名":"A","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m23.5s","赤经D(J2000)":"16.08986111111111","赤纬(J2000)":"+17h45m26s","赤纬D(J2000)":"17.75722222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"132","详细描述":"most extremely faint, small, round, very difficult","简略描述":"eeF, S, R, v diffic"},{"ID":"6051","标识":"NGC6051","M标识":"NGC6051","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h4m56.6s","赤经D(J2000)":"16.08238888888889","赤纬(J2000)":"+23h55m56s","赤纬D(J2000)":"23.932222222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"14.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"165","详细描述":"faint, small, round, gradually brighter middle and nucleus, 10th magnitude star to southeast","简略描述":"F, S, R, gbMN, * 10 sf"},{"ID":"6052","标识":"NGC6052","M标识":"NGC6052","拓展名":"","组件":"2","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S\/P","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m13.2s","赤经D(J2000)":"16.087","赤纬(J2000)":"+20h32m32s","赤纬D(J2000)":"20.542222222222225","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"175","详细描述":"faint, pretty large, irregularly round, (? = (WH) III 140)","简略描述":"F, pL, iR (? = III 140)"},{"ID":"6053","标识":"NGC6053","M标识":"NGC6053","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m39.5s","赤经D(J2000)":"16.094305555555554","赤纬(J2000)":"+18h9m53s","赤纬D(J2000)":"18.16472222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"159","详细描述":"most extremely faint, small, round, very difficult","简略描述":"eeF, S, R, v diffic"},{"ID":"6054","标识":"NGC6054","M标识":"NGC6054","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m38.1s","赤经D(J2000)":"16.093916666666665","赤纬(J2000)":"+17h46m3s","赤纬D(J2000)":"17.7675","可见光星等V":"14.2","摄影(蓝光)星等B":"15.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"65","详细描述":"most extremely faint, pretty small, a little extended, faint star to the southwest","简略描述":"eeF, pS, lE, F * sp"},{"ID":"6055","标识":"NGC6055","M标识":"NGC6055","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m32.7s","赤经D(J2000)":"16.092416666666665","赤纬(J2000)":"+18h9m34s","赤纬D(J2000)":"18.159444444444443","可见光星等V":"13.7","摄影(蓝光)星等B":"14.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.6","方位角":"40","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"6056","标识":"NGC6056","M标识":"NGC6056","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m31.1s","赤经D(J2000)":"16.09197222222222","赤纬(J2000)":"+17h57m46s","赤纬D(J2000)":"17.962777777777777","可见光星等V":"13.9","摄影(蓝光)星等B":"15","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"56","详细描述":"most extremely faint, very difficult","简略描述":"eeF, v diffic"},{"ID":"6057","标识":"NGC6057","M标识":"NGC6057","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m39.5s","赤经D(J2000)":"16.094305555555554","赤纬(J2000)":"+18h9m53s","赤纬D(J2000)":"18.16472222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"159","详细描述":"most extremely faint, small, round, very difficult","简略描述":"eeF, eS, R"},{"ID":"6058","标识":"NGC6058","M标识":"NGC6058","拓展名":"","组件":"","Class":"III 637","业余排名":"6.5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h4m26.6s","赤经D(J2000)":"16.074055555555557","赤纬(J2000)":"+40h41m1s","赤纬D(J2000)":"40.683611111111105","可见光星等V":"12.9","摄影(蓝光)星等B":"13.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.67","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, round, stellar","简略描述":"pF, vS, R, stellar"},{"ID":"6059","标识":"NGC6059","M标识":"NGC6059","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"16h7m13.2s","赤经D(J2000)":"16.120333333333335","赤纬(J2000)":"-6h24m47s","赤纬D(J2000)":"-6.413055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"6060","标识":"NGC6060","M标识":"NGC6060","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m52.2s","赤经D(J2000)":"16.097833333333334","赤纬(J2000)":"+21h29m4s","赤纬D(J2000)":"21.484444444444446","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2","短轴(分)":"1.1","方位角":"105","详细描述":"extremely faint, extended, suddenly brighter middle","简略描述":"eF, E, sbM"},{"ID":"6061","标识":"NGC6061","M标识":"NGC6061","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h6m16.1s","赤经D(J2000)":"16.104472222222224","赤纬(J2000)":"+18h15m0s","赤纬D(J2000)":"18.25","可见光星等V":"13.6","摄影(蓝光)星等B":"14.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.8","方位角":"66","详细描述":"most extremely faint, small, round, 4 bright stars to south","简略描述":"eeF, S, R, 4 B st s"},{"ID":"6062","标识":"NGC6062","M标识":"NGC6062","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h6m22.9s","赤经D(J2000)":"16.106361111111113","赤纬(J2000)":"+19h46m37s","赤纬D(J2000)":"19.776944444444442","可见光星等V":"13.6","摄影(蓝光)星等B":"14.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"10","详细描述":"extremely faint, round, a very little brighter middle, mottled but not resolved","简略描述":"eF, R, vlbM, r"},{"ID":"6063","标识":"NGC6063","M标识":"NGC6063","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h7m13.1s","赤经D(J2000)":"16.120305555555557","赤纬(J2000)":"+7h58m46s","赤纬D(J2000)":"7.979444444444445","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"159","详细描述":"faint, pretty large, round, a very little brighter middle","简略描述":"F, pL, R, vlbM"},{"ID":"6064","标识":"NGC6064","M标识":"NGC6064","拓展名":"","组件":"2","Class":"III 140","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m13.2s","赤经D(J2000)":"16.087","赤纬(J2000)":"+20h32m32s","赤纬D(J2000)":"20.542222222222225","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"175","详细描述":"faint, pretty large, irregularly round, (? = (WH) III 140)","简略描述":"vF, vS, r, pB * sf (? = m 302)"},{"ID":"6065","标识":"NGC6065","M标识":"NGC6065","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h7m22.9s","赤经D(J2000)":"16.12302777777778","赤纬(J2000)":"+13h53m18s","赤纬D(J2000)":"13.888333333333334","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"6","详细描述":"most extremely faint, very small, round, southwestern of 2","简略描述":"eeF, vS, R, sp of 2"},{"ID":"6066","标识":"NGC6066","M标识":"NGC6066","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h7m35.2s","赤经D(J2000)":"16.126444444444445","赤纬(J2000)":"+13h56m39s","赤纬D(J2000)":"13.944166666666668","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"135","详细描述":"most extremely faint, very small, round, 2 pretty bright stars near to south, northeastern of 2","简略描述":"eeF, vS, R, 2 pB st nr, nf of 2"},{"ID":"6067","标识":"NGC6067","M标识":"NGC6067","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2r","星座(Zh)":"矩尺座","星座(En)":"NOR","赤经(J2000)":"16h13m10.9s","赤经D(J2000)":"16.219694444444443","赤纬(J2000)":"-54h13m8s","赤纬D(J2000)":"-54.21888888888889","可见光星等V":"5.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, very bright, very large, very rich, a little compressed, stars from 10th magnitude","简略描述":"Cl, vB, vL, vRi, lC, st 10…"},{"ID":"6068","标识":"NGC6068","M标识":"NGC6068","拓展名":"","组件":"","Class":"III 973","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"15h55m25.5s","赤经D(J2000)":"15.92375","赤纬(J2000)":"+78h59m48s","赤纬D(J2000)":"78.99666666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.7","方位角":"155","详细描述":"very faint, very small, a little extended 0°, mottled but not resolved","简略描述":"Vf, vS, lE 0°, r"},{"ID":"6069","标识":"NGC6069","M标识":"NGC6069","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h7m41.6s","赤经D(J2000)":"16.128222222222224","赤纬(J2000)":"+38h55m53s","赤纬D(J2000)":"38.93138888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint star in a very faint, very small, round nebula","简略描述":"vF * in vF, vS, R neb"},{"ID":"6070","标识":"NGC6070","M标识":"NGC6070","拓展名":"","组件":"","Class":"III 553","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h9m58.6s","赤经D(J2000)":"16.166277777777776","赤纬(J2000)":"+0h42m36s","赤纬D(J2000)":"0.71","可见光星等V":"11.8","摄影(蓝光)星等B":"12.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.6","短轴(分)":"1.8","方位角":"62","详细描述":"faint, large, pretty much extended, very gradually brighter middle, mottled but not resolved","简略描述":"F, L, pmE, vgbM, r"},{"ID":"6071","标识":"NGC6071","M标识":"NGC6071","拓展名":"","组件":"","Class":"III 883","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"16h2m6.9s","赤经D(J2000)":"16.03525","赤纬(J2000)":"+70h25m2s","赤纬D(J2000)":"70.41722222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"6072","标识":"NGC6072","M标识":"NGC6072","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h12m58.2s","赤经D(J2000)":"16.216166666666666","赤纬(J2000)":"-36h13m46s","赤纬D(J2000)":"-36.22944444444445","可见光星等V":"11.7","摄影(蓝光)星等B":"14.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.63","短轴(分)":"","方位角":"","详细描述":"pretty faint, round, very gradually a very little brighter middle, mottled but not resolved","简略描述":"pF, R, vgvlbM, r"},{"ID":"6073","标识":"NGC6073","M标识":"NGC6073","拓展名":"","组件":"","Class":"III 74","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h10m10.9s","赤经D(J2000)":"16.169694444444445","赤纬(J2000)":"+16h42m0s","赤纬D(J2000)":"16.7","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"130","详细描述":"very faint, small, mottled but not resolved","简略描述":"vF, S, r"},{"ID":"6074","标识":"NGC6074","M标识":"NGC6074","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h11m17.3s","赤经D(J2000)":"16.18813888888889","赤纬(J2000)":"+14h15m31s","赤纬D(J2000)":"14.258611111111112","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, very small, round, brighter middle","简略描述":"eF, vS, R, bM"},{"ID":"6075","标识":"NGC6075","M标识":"NGC6075","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h11m22.6s","赤经D(J2000)":"16.189611111111113","赤纬(J2000)":"+23h57m54s","赤纬D(J2000)":"23.965","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"90","详细描述":"faint, very small, round, star or stars involved?, partially resolved (some stars seen)","简略描述":"F, vS, R, * or st inv ?, rr"},{"ID":"6076","标识":"NGC6076","M标识":"NGC6076","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h11m12.9s","赤经D(J2000)":"16.18691666666667","赤纬(J2000)":"+26h52m19s","赤纬D(J2000)":"26.871944444444445","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, extended","简略描述":"vF, S, E"},{"ID":"6077","标识":"NGC6077","M标识":"NGC6077","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h11m14s","赤经D(J2000)":"16.18722222222222","赤纬(J2000)":"+26h55m26s","赤纬D(J2000)":"26.92388888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"60","详细描述":"faint, suddenly brighter middle","简略描述":"F, sbM"},{"ID":"6078","标识":"NGC6078","M标识":"NGC6078","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h12m5.4s","赤经D(J2000)":"16.2015","赤纬(J2000)":"+14h12m34s","赤纬D(J2000)":"14.209444444444443","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, very small, round, brighter middle","简略描述":"eF, vS, R, bM"},{"ID":"6079","标识":"NGC6079","M标识":"NGC6079","拓展名":"","组件":"","Class":"III 884","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h4m28.7s","赤经D(J2000)":"16.074638888888888","赤纬(J2000)":"+69h39m58s","赤纬D(J2000)":"69.66611111111112","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1","方位角":"150","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"6080","标识":"NGC6080","M标识":"NGC6080","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h12m58.5s","赤经D(J2000)":"16.21625","赤纬(J2000)":"+2h10m40s","赤纬D(J2000)":"2.1777777777777776","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"1","方位角":"48","详细描述":"pretty bright, pretty small, round, much brighter middle","简略描述":"pB, pS, R, mbM"},{"ID":"6081","标识":"NGC6081","M标识":"NGC6081","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h12m56.8s","赤经D(J2000)":"16.215777777777777","赤纬(J2000)":"+9h52m4s","赤纬D(J2000)":"9.867777777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"131","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"6082","标识":"NGC6082","M标识":"NGC6082","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h15m36s","赤经D(J2000)":"16.26","赤纬(J2000)":"-34h14m36s","赤纬D(J2000)":"-34.24333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, extended, a little brighter middle","简略描述":"eF, S, E, lbM"},{"ID":"6083","标识":"NGC6083","M标识":"NGC6083","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h13m12.6s","赤经D(J2000)":"16.220166666666664","赤纬(J2000)":"+14h11m10s","赤纬D(J2000)":"14.186111111111112","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"42","详细描述":"extremely faint, very small, difficult","简略描述":"eF, vS, diffic"},{"ID":"6084","标识":"NGC6084","M标识":"NGC6084","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h14m16.6s","赤经D(J2000)":"16.237944444444445","赤纬(J2000)":"+17h45m29s","赤纬D(J2000)":"17.758055555555554","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.5","方位角":"30","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"6085","标识":"NGC6085","M标识":"NGC6085","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h12m35.1s","赤经D(J2000)":"16.20975","赤纬(J2000)":"+29h21m56s","赤纬D(J2000)":"29.365555555555556","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"165","详细描述":"faint, small","简略描述":"F, S"},{"ID":"6086","标识":"NGC6086","M标识":"NGC6086","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h12m35.6s","赤经D(J2000)":"16.209888888888887","赤纬(J2000)":"+29h29m6s","赤纬D(J2000)":"29.485","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"12","详细描述":"faint, very small, stellar nucleus","简略描述":"F, vS, stellar N"},{"ID":"6087","标识":"NGC6087","M标识":"NGC6087","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"矩尺座S星团","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"矩尺座","星座(En)":"NOR","赤经(J2000)":"16h18m51.8s","赤经D(J2000)":"16.31438888888889","赤纬(J2000)":"-57h53m59s","赤纬D(J2000)":"-57.89972222222222","可见光星等V":"5.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, large, a little compressed, stars from 7th to 10th magnitude","简略描述":"Cl, B, L, lC, st 7…10"},{"ID":"6088","标识":"NGC6088","M标识":"NGC6088","拓展名":"B","组件":"","Class":"III 812","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h10m44.1s","赤经D(J2000)":"16.17891666666667","赤纬(J2000)":"+57h27m43s","赤纬D(J2000)":"57.46194444444445","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"96","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"6089","标识":"NGC6089","M标识":"NGC6089","拓展名":"","组件":"1","Class":"III 889","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h12m40.3s","赤经D(J2000)":"16.211194444444445","赤纬(J2000)":"+33h2m7s","赤纬D(J2000)":"33.03527777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"42","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"6090","标识":"NGC6090","M标识":"NGC6090","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h11m40.7s","赤经D(J2000)":"16.19463888888889","赤纬(J2000)":"+52h27m28s","赤纬D(J2000)":"52.45777777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"2.4","短轴(分)":"1","方位角":"39","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"6091","标识":"NGC6091","M标识":"NGC6091","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"16h7m52.9s","赤经D(J2000)":"16.13136111111111","赤纬(J2000)":"+69h54m19s","赤纬D(J2000)":"69.90527777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"114","详细描述":"very faint, very small, round, star to north","简略描述":"vF, vS, R, * n"},{"ID":"6092","标识":"NGC6092","M标识":"NGC6092","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h14m4.5s","赤经D(J2000)":"16.234583333333333","赤纬(J2000)":"+28h7m34s","赤纬D(J2000)":"28.12611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, stellar nucleus","简略描述":"vF, stellar N"},{"ID":"6093","标识":"NGC6093","M标识":"M80","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"II","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h17m2.5s","赤经D(J2000)":"16.28402777777778","赤纬(J2000)":"-22h58m28s","赤纬D(J2000)":"-22.974444444444444","可见光星等V":"7.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"very remarkable, a globular cluster, very bright, large, very much brighter middle (variable star), well resolved, clearly consisting of stars, stars of 14th magnitude","简略描述":"!! globular, vB, L, vmbM (var *), rrr, st 14"},{"ID":"6094","标识":"NGC6094","M标识":"NGC6094","拓展名":"","组件":"","Class":"III 314","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"16h6m33.8s","赤经D(J2000)":"16.10938888888889","赤纬(J2000)":"+72h29m42s","赤纬D(J2000)":"72.495","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.8","短轴(分)":"1.4","方位角":"120","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"6095","标识":"NGC6095","M标识":"NGC6095","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h11m11s","赤经D(J2000)":"16.18638888888889","赤纬(J2000)":"+61h16m5s","赤纬D(J2000)":"61.268055555555556","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"132","详细描述":"extremely faint, pretty small, round, in line with 2 stars","简略描述":"eF, pS, R, in line with 2 st"},{"ID":"6096","标识":"NGC6096","M标识":"NGC6096","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h14m46.6s","赤经D(J2000)":"16.246277777777777","赤纬(J2000)":"+26h33m34s","赤纬D(J2000)":"26.559444444444445","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"135","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"6097","标识":"NGC6097","M标识":"NGC6097","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h14m26.2s","赤经D(J2000)":"16.24061111111111","赤纬(J2000)":"+35h6m33s","赤纬D(J2000)":"35.10916666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"156","详细描述":"a nebulous star of 13th magnitude","简略描述":"Neb * 13 m"},{"ID":"6098","标识":"NGC6098","M标识":"NGC6098","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h15m34s","赤经D(J2000)":"16.259444444444444","赤纬(J2000)":"+19h27m42s","赤纬D(J2000)":"19.461666666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.7","方位角":"141","详细描述":"extremely faint, very small, round, 8th magnitude star 41 seconds of time to the east, northwestern of 2","简略描述":"eF, vS, R, * 8 f 41s, np of 2"},{"ID":"6099","标识":"NGC6099","M标识":"NGC6099","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h15m35.5s","赤经D(J2000)":"16.25986111111111","赤纬(J2000)":"+19h27m14s","赤纬D(J2000)":"19.453888888888887","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"extremely faint, very small, round, southeastern of 2","简略描述":"eF, vS, R, sf of 2"},{"ID":"6100","标识":"NGC6100","M标识":"NGC6100","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h16m52.3s","赤经D(J2000)":"16.281194444444445","赤纬(J2000)":"+0h50m28s","赤纬D(J2000)":"0.8411111111111111","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"120","详细描述":"most extremely faint, very small, most extremely faint star close to west","简略描述":"eeF, vS, eeF * close p"},{"ID":"6101","标识":"NGC6101","M标识":"NGC6101","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"X","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"16h25m48.6s","赤经D(J2000)":"16.43016666666667","赤纬(J2000)":"-72h12m4s","赤纬D(J2000)":"-72.20111111111112","可见光星等V":"9.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"globular cluster, pretty faint, large, irregularly round, very gradually brighter middle, partially resolved (some stars seen), stars of 14th magnitude","简略描述":"globular, pF, L, iR, vgbM, rr, st 14"},{"ID":"6102","标识":"NGC6102","M标识":"NGC6102","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h15m36.9s","赤经D(J2000)":"16.26025","赤纬(J2000)":"+28h9m32s","赤纬D(J2000)":"28.15888888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"70","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"6103","标识":"NGC6103","M标识":"NGC6103","拓展名":"","组件":"","Class":"III 888","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h15m44.5s","赤经D(J2000)":"16.26236111111111","赤纬(J2000)":"+31h57m50s","赤纬D(J2000)":"31.96388888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"80","详细描述":"very faint, small, round, very gradually a little brighter middle","简略描述":"vF, S, R, vglbM"},{"ID":"6104","标识":"NGC6104","M标识":"NGC6104","拓展名":"","组件":"","Class":"III 688","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h16m30.6s","赤经D(J2000)":"16.275166666666667","赤纬(J2000)":"+35h42m27s","赤纬D(J2000)":"35.7075","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"45","详细描述":"very faint, small, irregularly round","简略描述":"vF, S, iR"},{"ID":"6105","标识":"NGC6105","M标识":"NGC6105","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h17m9.2s","赤经D(J2000)":"16.28588888888889","赤纬(J2000)":"+34h52m46s","赤纬D(J2000)":"34.879444444444445","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"138","详细描述":"faint, small, round, gradually a very little brighter middle","简略描述":"F, S, R, gvlbM"},{"ID":"6106","标识":"NGC6106","M标识":"NGC6106","拓展名":"","组件":"","Class":"II 151","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h18m47s","赤经D(J2000)":"16.313055555555557","赤纬(J2000)":"+7h24m40s","赤纬D(J2000)":"7.411111111111111","可见光星等V":"12.2","摄影(蓝光)星等B":"12.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.4","短轴(分)":"1.3","方位角":"140","详细描述":"faint, pretty large, a little extended, very gradually brighter middle, mottled but not resolved","简略描述":"F, pL, lE, vgbM, r"},{"ID":"6107","标识":"NGC6107","M标识":"NGC6107","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h17m20.1s","赤经D(J2000)":"16.28891666666667","赤纬(J2000)":"+34h54m8s","赤纬D(J2000)":"34.90222222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"40","详细描述":"faint, very small","简略描述":"F, vS"},{"ID":"6108","标识":"NGC6108","M标识":"NGC6108","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h17m25.5s","赤经D(J2000)":"16.29041666666667","赤纬(J2000)":"+35h8m9s","赤纬D(J2000)":"35.13583333333333","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.1","短轴(分)":"1","方位角":"124","详细描述":"extremely faint, very small, round, a little brighter middle","简略描述":"eF, vS, R, lbM"},{"ID":"6109","标识":"NGC6109","M标识":"NGC6109","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h17m40.5s","赤经D(J2000)":"16.294583333333335","赤纬(J2000)":"+35h0m15s","赤纬D(J2000)":"35.00416666666667","可见光星等V":"12.7","摄影(蓝光)星等B":"13.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"6110","标识":"NGC6110","M标识":"NGC6110","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h17m43.9s","赤经D(J2000)":"16.295527777777778","赤纬(J2000)":"+35h5m15s","赤纬D(J2000)":"35.087500000000006","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"105","详细描述":"extremely faint, very small, round, gradually brighter middle","简略描述":"eF, vS, R, gbM"},{"ID":"6111","标识":"NGC6111","M标识":"NGC6111","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h14m22.7s","赤经D(J2000)":"16.23963888888889","赤纬(J2000)":"+63h15m41s","赤纬D(J2000)":"63.26138888888889","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"21","详细描述":"very faint, pretty small, a little extended, double star near to south","简略描述":"vF, pS, lE, D * nr s"},{"ID":"6112","标识":"NGC6112","M标识":"NGC6112","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h18m0.5s","赤经D(J2000)":"16.30013888888889","赤纬(J2000)":"+35h6m39s","赤纬D(J2000)":"35.11083333333333","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.8","方位角":"69","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"6113","标识":"NGC6113","M标识":"NGC6113","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h19m10.6s","赤经D(J2000)":"16.31961111111111","赤纬(J2000)":"+14h8m1s","赤纬D(J2000)":"14.13361111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"147","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"6114","标识":"NGC6114","M标识":"NGC6114","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h18m23.5s","赤经D(J2000)":"16.306527777777777","赤纬(J2000)":"+35h10m28s","赤纬D(J2000)":"35.17444444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"100","详细描述":"extremely faint, small, round, gradually a little brighter middle","简略描述":"eF, S, R, glbM"},{"ID":"6115","标识":"NGC6115","M标识":"NGC6115","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"矩尺座","星座(En)":"NOR","赤经(J2000)":"16h24m26.8s","赤经D(J2000)":"16.407444444444444","赤纬(J2000)":"-51h57m12s","赤纬D(J2000)":"-51.95333333333333","可见光星等V":"9.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.4","短轴(分)":"","方位角":"","详细描述":"cluster, extremely large, extremely rich","简略描述":"Cl, eL, eRi"},{"ID":"6116","标识":"NGC6116","M标识":"NGC6116","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h18m54.5s","赤经D(J2000)":"16.31513888888889","赤纬(J2000)":"+35h9m14s","赤纬D(J2000)":"35.153888888888886","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.9","长轴(分)":"2.2","短轴(分)":"0.9","方位角":"17","详细描述":"very faint, very small, round, gradually brighter middle","简略描述":"vF, vS, R, gbM"},{"ID":"6117","标识":"NGC6117","M标识":"NGC6117","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h19m18.2s","赤经D(J2000)":"16.32172222222222","赤纬(J2000)":"+37h5m43s","赤纬D(J2000)":"37.09527777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"6118","标识":"NGC6118","M标识":"NGC6118","拓展名":"","组件":"","Class":"II 402","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h21m48.7s","赤经D(J2000)":"16.36352777777778","赤纬(J2000)":"-2h17m1s","赤纬D(J2000)":"-2.283611111111111","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"4.7","短轴(分)":"1.9","方位角":"58","详细描述":"very faint, considerably large, considerably extended 45°±, mottled but not resolved","简略描述":"vF, cL, cE 45° ±, r"},{"ID":"6119","标识":"NGC6119","M标识":"NGC6119","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h19m42s","赤经D(J2000)":"16.328333333333333","赤纬(J2000)":"+37h48m24s","赤纬D(J2000)":"37.806666666666665","可见光星等V":"15.3","摄影(蓝光)星等B":"16","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"87","详细描述":"very faint, extremely small, round","简略描述":"vF, eS, R"},{"ID":"6120","标识":"NGC6120","M标识":"NGC6120","拓展名":"","组件":"","Class":"III 623","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd\/P","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h19m48.1s","赤经D(J2000)":"16.330027777777776","赤纬(J2000)":"+37h46m27s","赤纬D(J2000)":"37.774166666666666","可见光星等V":"13.9","摄影(蓝光)星等B":"14.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.7","方位角":"18","详细描述":"very faint, very small, round, double star to northeast","简略描述":"vF, vS, R, D * nf"},{"ID":"6121","标识":"NGC6121","M标识":"M4","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"蟹状星团","类型":"GCL","含重复类型":"GCL","形态":"IX","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h23m35.5s","赤经D(J2000)":"16.393194444444443","赤纬(J2000)":"-26h31m29s","赤纬D(J2000)":"-26.52472222222222","可见光星等V":"5.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"36","短轴(分)":"","方位角":"","详细描述":"cluster, 8 or 10 bright stars in line, with 5 stars, well resolved, clearly consisting of stars","简略描述":"Cl, 8 or 10 B st in line, with 5 st, rrr"},{"ID":"6122","标识":"NGC6122","M标识":"NGC6122","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h20m9.4s","赤经D(J2000)":"16.335944444444443","赤纬(J2000)":"+37h47m55s","赤纬D(J2000)":"37.79861111111111","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"156","详细描述":"very faint, round, no nucleus","简略描述":"vF, R, no N"},{"ID":"6123","标识":"NGC6123","M标识":"NGC6123","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h17m19.6s","赤经D(J2000)":"16.288777777777778","赤纬(J2000)":"+61h56m21s","赤纬D(J2000)":"61.939166666666665","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"4","详细描述":"pretty faint, very small, extended, star near","简略描述":"pF, vS, E, * nr"},{"ID":"6124","标识":"NGC6124","M标识":"NGC6124","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h25m17.2s","赤经D(J2000)":"16.421444444444447","赤纬(J2000)":"-40h40m1s","赤纬D(J2000)":"-40.66694444444444","可见光星等V":"5.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"40","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, large, pretty rich, a little compressed middle, stars from 9th to 11th magnitude","简略描述":"Cl, B, L, pRi, lCM, st 9…11"},{"ID":"6125","标识":"NGC6125","M标识":"NGC6125","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h19m11.2s","赤经D(J2000)":"16.319777777777777","赤纬(J2000)":"+57h59m5s","赤纬D(J2000)":"57.984722222222224","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"pretty faint, pretty small, a little extended","简略描述":"pF, pS, lE"},{"ID":"6126","标识":"NGC6126","M标识":"NGC6126","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h21m27.8s","赤经D(J2000)":"16.357722222222225","赤纬(J2000)":"+36h22m38s","赤纬D(J2000)":"36.37722222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"faint, very small, round, brighter middle and small nucleus","简略描述":"F, vS, R, bMSN"},{"ID":"6127","标识":"NGC6127","M标识":"NGC6127","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h19m11.2s","赤经D(J2000)":"16.319777777777777","赤纬(J2000)":"+57h59m5s","赤纬D(J2000)":"57.984722222222224","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"pretty faint, pretty small, a little extended","简略描述":"pF, vS, R"},{"ID":"6128","标识":"NGC6128","M标识":"NGC6128","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h19m11.2s","赤经D(J2000)":"16.319777777777777","赤纬(J2000)":"+57h59m5s","赤纬D(J2000)":"57.984722222222224","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"pretty faint, pretty small, a little extended","简略描述":"pF, pS, R, bM"},{"ID":"6129","标识":"NGC6129","M标识":"NGC6129","拓展名":"","组件":"","Class":"III 891","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h21m43.2s","赤经D(J2000)":"16.362000000000002","赤纬(J2000)":"+37h59m47s","赤纬D(J2000)":"37.99638888888889","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, very small, round, a little brighter middle","简略描述":"eF, vS, R, lbM"},{"ID":"6130","标识":"NGC6130","M标识":"NGC6130","拓展名":"","组件":"","Class":"II 810","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h19m33.5s","赤经D(J2000)":"16.325972222222223","赤纬(J2000)":"+57h36m54s","赤纬D(J2000)":"57.615","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.7","方位角":"25","详细描述":"pretty faint, pretty large, round, bright star near to west","简略描述":"pF, pL, R, B * nr p"},{"ID":"6131","标识":"NGC6131","M标识":"NGC6131","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h21m52.3s","赤经D(J2000)":"16.36452777777778","赤纬(J2000)":"+38h56m12s","赤纬D(J2000)":"38.93666666666666","可见光星等V":"13.3","摄影(蓝光)星等B":"13.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"very faint, pretty large, irregularly round, diffuse","简略描述":"vF, pL, iR, dif"},{"ID":"6132","标识":"NGC6132","M标识":"NGC6132","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h23m38.7s","赤经D(J2000)":"16.394083333333334","赤纬(J2000)":"+11h47m12s","赤纬D(J2000)":"11.786666666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"127","详细描述":"extremely faint, very small, very little brighter middle","简略描述":"eF, vS, vlbM"},{"ID":"6133","标识":"NGC6133","M标识":"NGC6133","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h20m17s","赤经D(J2000)":"16.338055555555556","赤纬(J2000)":"+56h39m12s","赤纬D(J2000)":"56.65333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, considerably extended, very difficult","简略描述":"eeF, S, cE, v diffic"},{"ID":"6134","标识":"NGC6134","M标识":"NGC6134","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"小枕星团","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"矩尺座","星座(En)":"NOR","赤经(J2000)":"16h27m43.6s","赤经D(J2000)":"16.46211111111111","赤纬(J2000)":"-49h9m51s","赤纬D(J2000)":"-49.16416666666667","可见光星等V":"7.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, considerably large, pretty rich, a little compressed middle, stars from 13th to 15th magnitude","简略描述":"Cl, cL, pRi, lCM, st 13…15"},{"ID":"6135","标识":"NGC6135","M标识":"NGC6135","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h14m24.9s","赤经D(J2000)":"16.24025","赤纬(J2000)":"+64h59m0s","赤纬D(J2000)":"64.98333333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"45","详细描述":"very faint, very small, much extended, 2 stars near","简略描述":"vF, vS, mE, 2 st nr"},{"ID":"6136","标识":"NGC6136","M标识":"NGC6136","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h20m59.4s","赤经D(J2000)":"16.349833333333333","赤纬(J2000)":"+55h58m13s","赤纬D(J2000)":"55.97027777777778","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"95","详细描述":"most extremely faint, small, round, very difficult","简略描述":"eeF, S, R, v diffic"},{"ID":"6137","标识":"NGC6137","M标识":"NGC6137","拓展名":"","组件":"","Class":"III 624","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h23m3.1s","赤经D(J2000)":"16.384194444444443","赤纬(J2000)":"+37h55m21s","赤纬D(J2000)":"37.9225","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"1.2","方位角":"175","详细描述":"faint, small, irregularly round, brighter middle","简略描述":"F, S, iR, bM"},{"ID":"6138","标识":"NGC6138","M标识":"NGC6138","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h22m39.9s","赤经D(J2000)":"17.37775","赤纬(J2000)":"+41h6m8s","赤纬D(J2000)":"41.102222222222224","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"14","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"6139","标识":"NGC6139","M标识":"NGC6139","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"II","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h27m40.4s","赤经D(J2000)":"16.461222222222222","赤纬(J2000)":"-38h50m54s","赤纬D(J2000)":"-38.848333333333336","可见光星等V":"9.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8.2","短轴(分)":"","方位角":"","详细描述":"bright, pretty large, round, pretty suddenly brighter middle, partially resolved (some stars seen)","简略描述":"B, pL, R, psbM, rr"},{"ID":"6140","标识":"NGC6140","M标识":"NGC6140","拓展名":"","组件":"","Class":"III 740","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h20m57s","赤经D(J2000)":"16.349166666666665","赤纬(J2000)":"+65h23m24s","赤纬D(J2000)":"65.39","可见光星等V":"11.3","摄影(蓝光)星等B":"11.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"6.3","短轴(分)":"4.6","方位角":"95","详细描述":"considerably faint, pretty large, irregularly round","简略描述":"cF, pL, iR"},{"ID":"6141","标识":"NGC6141","M标识":"NGC6141","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h23m6.3s","赤经D(J2000)":"16.385083333333334","赤纬(J2000)":"+40h51m30s","赤纬D(J2000)":"40.858333333333334","可见光星等V":"14.9","摄影(蓝光)星等B":"15.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, pretty small, no nucleus","简略描述":"vF, pS, no Nucl"},{"ID":"6142","标识":"NGC6142","M标识":"NGC6142","拓展名":"","组件":"","Class":"III 892","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h23m21s","赤经D(J2000)":"16.389166666666664","赤纬(J2000)":"+37h15m30s","赤纬D(J2000)":"37.25833333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2","短轴(分)":"0.5","方位角":"165","详细描述":"extremely faint, small, brighter middle","简略描述":"eF, S, bM"},{"ID":"6143","标识":"NGC6143","M标识":"NGC6143","拓展名":"","组件":"","Class":"II 811","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h21m42.3s","赤经D(J2000)":"16.36175","赤纬(J2000)":"+55h5m11s","赤纬D(J2000)":"55.08638888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.9","方位角":"177","详细描述":"pretty bright, irregularly round, very gradually very little brighter middle","简略描述":"pB, iR, vgvlbM"},{"ID":"6144","标识":"NGC6144","M标识":"NGC6144","拓展名":"","组件":"","Class":"VI 10","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"XI","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h27m14.1s","赤经D(J2000)":"16.453916666666665","赤纬(J2000)":"-26h1m27s","赤纬D(J2000)":"-26.024166666666666","可见光星等V":"9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7.4","短轴(分)":"","方位角":"","详细描述":"cluster, considerably large, much compressed gradually brighter middle, well resolved, clearly consisting of stars","简略描述":"Cl, cL, mC, gbM, rrr"},{"ID":"6145","标识":"NGC6145","M标识":"NGC6145","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h25m2.4s","赤经D(J2000)":"16.417333333333335","赤纬(J2000)":"+40h56m47s","赤纬D(J2000)":"40.94638888888888","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"5","详细描述":"faint, round, brighter middle","简略描述":"F, R, bM"},{"ID":"6146","标识":"NGC6146","M标识":"NGC6146","拓展名":"","组件":"","Class":"III 638","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h25m10.2s","赤经D(J2000)":"16.419500000000003","赤纬(J2000)":"+40h53m33s","赤纬D(J2000)":"40.8925","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"1","方位角":"75","详细描述":"considerably faint, very small, round, brighter middle","简略描述":"cF, vS, R, bM"},{"ID":"6147","标识":"NGC6147","M标识":"NGC6147","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h25m5.8s","赤经D(J2000)":"16.418277777777778","赤纬(J2000)":"+40h55m44s","赤纬D(J2000)":"40.928888888888885","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"30","详细描述":"extremely faint, one of 3","简略描述":"eF, one of 3"},{"ID":"6148","标识":"NGC6148","M标识":"NGC6148","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h27m4s","赤经D(J2000)":"16.45111111111111","赤纬(J2000)":"+24h5m34s","赤纬D(J2000)":"24.092777777777776","可见光星等V":"16.1","摄影(蓝光)星等B":"16.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"60","详细描述":"very faint, small, with stars","简略描述":"vF, S, with st"},{"ID":"6149","标识":"NGC6149","M标识":"NGC6149","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h27m24.3s","赤经D(J2000)":"16.45675","赤纬(J2000)":"+19h35m51s","赤纬D(J2000)":"19.5975","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"22","详细描述":"very faint, pretty small, round, pretty bright star near to south","简略描述":"vF, pS, R, pB * nr s"},{"ID":"6150","标识":"NGC6150","M标识":"NGC6150","拓展名":"","组件":"","Class":"III 639","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h25m49.9s","赤经D(J2000)":"16.43052777777778","赤纬(J2000)":"+40h29m20s","赤纬D(J2000)":"40.48888888888889","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"61","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"6151","标识":"NGC6151","M标识":"NGC6151","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"16h38m24.1s","赤经D(J2000)":"16.640027777777778","赤纬(J2000)":"-73h15m7s","赤纬D(J2000)":"-73.25194444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"very faint, very small, 9th magnitude star near","简略描述":"vF, vS * 9 nr"},{"ID":"6152","标识":"NGC6152","M标识":"NGC6152","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"矩尺座","星座(En)":"NOR","赤经(J2000)":"16h32m45s","赤经D(J2000)":"16.545833333333334","赤纬(J2000)":"-52h38m36s","赤纬D(J2000)":"-52.64333333333333","可见光星等V":"8.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"","方位角":"","详细描述":"a cluster, large, a little compressed, stars large","简略描述":"Cl, L, lC, st L"},{"ID":"6153","标识":"NGC6153","M标识":"NGC6153","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h31m30.6s","赤经D(J2000)":"16.525166666666667","赤纬(J2000)":"-40h15m11s","赤纬D(J2000)":"-40.253055555555555","可见光星等V":"10.9","摄影(蓝光)星等B":"11.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.4","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, stellar","简略描述":"planetary, stellar"},{"ID":"6154","标识":"NGC6154","M标识":"NGC6154","拓展名":"","组件":"","Class":"III 680","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h25m30.6s","赤经D(J2000)":"16.42516666666667","赤纬(J2000)":"+49h50m25s","赤纬D(J2000)":"49.84027777777778","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.1","短轴(分)":"2","方位角":"0","详细描述":"very faint, small, round, a little brighter middle, extremely mottled but not resolved","简略描述":"vF, S, R, lbM, er"},{"ID":"6155","标识":"NGC6155","M标识":"NGC6155","拓展名":"","组件":"","Class":"II 690","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h26m8.3s","赤经D(J2000)":"16.43563888888889","赤纬(J2000)":"+48h22m3s","赤纬D(J2000)":"48.3675","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"145","详细描述":"faint, pretty small, irregular figure, gradually brighter middle","简略描述":"F, pS, iF, gbM"},{"ID":"6156","标识":"NGC6156","M标识":"NGC6156","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"南三角座","星座(En)":"TRA","赤经(J2000)":"16h34m52.6s","赤经D(J2000)":"16.58127777777778","赤纬(J2000)":"-60h37m9s","赤纬D(J2000)":"-60.619166666666665","可见光星等V":"11.5","摄影(蓝光)星等B":"12.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"0","详细描述":"pretty faint, pretty large, very little extended, gradually brighter middle","简略描述":"pF, pL, vlE, gbM"},{"ID":"6157","标识":"NGC6157","M标识":"NGC6157","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h25m48.3s","赤经D(J2000)":"16.430083333333336","赤纬(J2000)":"+55h21m40s","赤纬D(J2000)":"55.361111111111114","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"9","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"6158","标识":"NGC6158","M标识":"NGC6158","拓展名":"","组件":"","Class":"II 647","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h27m40.9s","赤经D(J2000)":"16.46136111111111","赤纬(J2000)":"+39h23m0s","赤纬D(J2000)":"39.38333333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"81","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"6159","标识":"NGC6159","M标识":"NGC6159","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h27m25.1s","赤经D(J2000)":"16.456972222222223","赤纬(J2000)":"+42h40m49s","赤纬D(J2000)":"42.680277777777775","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.4","短轴(分)":"1","方位角":"142","详细描述":"very faint, small, irregularly round, a little brighter middle","简略描述":"vF, S, iR, lbM"},{"ID":"6160","标识":"NGC6160","M标识":"NGC6160","拓展名":"","组件":"","Class":"II 652","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h27m41.1s","赤经D(J2000)":"16.461416666666665","赤纬(J2000)":"+40h55m39s","赤纬D(J2000)":"40.927499999999995","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"65","详细描述":"considerably faint, pretty large, round, gradually brighter middle, mottled but not resolved","简略描述":"cF, pL, R, gbM, r"},{"ID":"6161","标识":"NGC6161","M标识":"NGC6161","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h28m20.6s","赤经D(J2000)":"16.472388888888887","赤纬(J2000)":"+32h48m37s","赤纬D(J2000)":"32.81027777777778","可见光星等V":"14.9","摄影(蓝光)星等B":"15.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"159","详细描述":"very faint, small, a little brighter middle","简略描述":"vF, S, lbM"},{"ID":"6162","标识":"NGC6162","M标识":"NGC6162","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h28m22.3s","赤经D(J2000)":"16.472861111111108","赤纬(J2000)":"+32h50m59s","赤纬D(J2000)":"32.849722222222226","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"30","详细描述":"faint, small, a little brighter middle","简略描述":"F, S, lbM"},{"ID":"6163","标识":"NGC6163","M标识":"NGC6163","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h28m27.8s","赤经D(J2000)":"16.47438888888889","赤纬(J2000)":"+32h50m49s","赤纬D(J2000)":"32.846944444444446","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"54","详细描述":"very faint, small, a little brighter middle","简略描述":"vF, S, lbM"},{"ID":"6164","标识":"NGC6164","M标识":"NGC6164","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"矩尺座","星座(En)":"NOR","赤经(J2000)":"16h33m41s","赤经D(J2000)":"16.56138888888889","赤纬(J2000)":"-48h4m46s","赤纬D(J2000)":"-48.07944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint (strongly suspected), double star near to east","简略描述":"eF (strongly susp), D * f nr"},{"ID":"6165","标识":"NGC6165","M标识":"NGC6165","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"矩尺座","星座(En)":"NOR","赤经(J2000)":"16h34m2s","赤经D(J2000)":"16.56722222222222","赤纬(J2000)":"-48h9m4s","赤纬D(J2000)":"-48.151111111111106","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, considerably small, a little extended, very gradually a little brighter middle, double star to west","简略描述":"F, cS, lE, vglbM, D * p"},{"ID":"6166","标识":"NGC6166","M标识":"NGC6166","拓展名":"","组件":"","Class":"II 875","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h28m38.5s","赤经D(J2000)":"16.477361111111108","赤纬(J2000)":"+39h33m5s","赤纬D(J2000)":"39.55138888888889","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"35","详细描述":"pretty faint, small, very little extended, very gradually much brighter middle","简略描述":"pF, S, vlE, vgmbM"},{"ID":"6167","标识":"NGC6167","M标识":"NGC6167","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"矩尺座","星座(En)":"NOR","赤经(J2000)":"16h34m34.9s","赤经D(J2000)":"16.57636111111111","赤纬(J2000)":"-49h46m19s","赤纬D(J2000)":"-49.77194444444444","可见光星等V":"6.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, large, a little compressed, irregular figure","简略描述":"Cl, L, lC, iF"},{"ID":"6168","标识":"NGC6168","M标识":"NGC6168","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h31m21.3s","赤经D(J2000)":"16.522583333333333","赤纬(J2000)":"+20h11m6s","赤纬D(J2000)":"20.185","可见光星等V":"14.2","摄影(蓝光)星等B":"14.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.3","方位角":"111","详细描述":"most extremely faint, much extended, faint star at western end, very difficult","简略描述":"eeF, mE, F * at p end, v diffic"},{"ID":"6169","标识":"NGC6169","M标识":"NGC6169","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"矩尺座μ星团","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"矩尺座","星座(En)":"NOR","赤经(J2000)":"16h34m5s","赤经D(J2000)":"16.568055555555556","赤纬(J2000)":"-44h2m43s","赤纬D(J2000)":"-44.04527777777778","可见光星等V":"6.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, μ Normae involved","简略描述":"Cl, ? Normae inv"},{"ID":"6170","标识":"NGC6170","M标识":"NGC6170","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h27m36.4s","赤经D(J2000)":"16.46011111111111","赤纬(J2000)":"+59h33m47s","赤纬D(J2000)":"59.56305555555555","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"85","详细描述":"most extremely faint, very small, round, very difficult","简略描述":"eeF, vS, R, v diffic"},{"ID":"6171","标识":"NGC6171","M标识":"M107","拓展名":"","组件":"","Class":"VI 40","业余排名":"1","中文名":"十字架星团","类型":"GCL","含重复类型":"GCL","形态":"X","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"16h32m31.9s","赤经D(J2000)":"16.542194444444448","赤纬(J2000)":"-13h3m11s","赤纬D(J2000)":"-13.053055555555556","可见光星等V":"7.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"13","短轴(分)":"","方位角":"","详细描述":"a globular cluster, large, very rich, very much compressed, round, well resolved, clearly consisting of stars","简略描述":"globular, L, vRi, vmC, R, rrr"},{"ID":"6172","标识":"NGC6172","M标识":"NGC6172","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h22m10.2s","赤经D(J2000)":"16.369500000000002","赤纬(J2000)":"-1h30m51s","赤纬D(J2000)":"-1.5141666666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, extremely small, round, brighter middle","简略描述":"vF, eS, R, bM"},{"ID":"6173","标识":"NGC6173","M标识":"NGC6173","拓展名":"","组件":"","Class":"III 640","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h29m45s","赤经D(J2000)":"16.495833333333334","赤纬(J2000)":"+40h48m40s","赤纬D(J2000)":"40.81111111111111","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"140","详细描述":"considerably faint, very small, round, brighter middle","简略描述":"cF, vS, R, bM"},{"ID":"6174","标识":"NGC6174","M标识":"NGC6174","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h29m23.8s","赤经D(J2000)":"16.489944444444447","赤纬(J2000)":"+40h52m30s","赤纬D(J2000)":"40.875","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"6175","标识":"NGC6175","M标识":"NGC6175","拓展名":"","组件":"1","Class":"III 641","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h29m57.4s","赤经D(J2000)":"16.499277777777777","赤纬(J2000)":"+40h37m49s","赤纬D(J2000)":"40.63027777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"92","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"6176","标识":"NGC6176","M标识":"NGC6176","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h27m36.4s","赤经D(J2000)":"16.46011111111111","赤纬(J2000)":"+59h33m47s","赤纬D(J2000)":"59.56305555555555","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"85","详细描述":"most extremely faint, very small, round, very difficult","简略描述":"eF, eS, v diffic"},{"ID":"6177","标识":"NGC6177","M标识":"NGC6177","拓展名":"","组件":"","Class":"III 890","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h30m38.8s","赤经D(J2000)":"16.51077777777778","赤纬(J2000)":"+35h3m20s","赤纬D(J2000)":"35.05555555555555","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"10","详细描述":"very faint, pretty large, irregularly extended, partially resolved (some stars seen), star near","简略描述":"vF, pL, iE, rr, * nr"},{"ID":"6178","标识":"NGC6178","M标识":"NGC6178","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3p","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h35m50.8s","赤经D(J2000)":"16.59744444444444","赤纬(J2000)":"-45h38m48s","赤纬D(J2000)":"-45.64666666666667","可见光星等V":"7.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, small, stars pretty large","简略描述":"Cl, B, S, st pL"},{"ID":"6179","标识":"NGC6179","M标识":"NGC6179","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h30m46.9s","赤经D(J2000)":"16.51302777777778","赤纬(J2000)":"+35h6m10s","赤纬D(J2000)":"35.10277777777778","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, brighter middle and nucleus, 4 arcmin northeast of h 1964","简略描述":"vF, S, bMN, 4' nf h 1964"},{"ID":"6180","标识":"NGC6180","M标识":"NGC6180","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h30m33.9s","赤经D(J2000)":"16.509416666666667","赤纬(J2000)":"+40h32m23s","赤纬D(J2000)":"40.53972222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"9","详细描述":"extremely faint, very small, round, much brighter middle","简略描述":"eF, vS, R, mbM"},{"ID":"6181","标识":"NGC6181","M标识":"NGC6181","拓展名":"","组件":"","Class":"II 753","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h32m20.7s","赤经D(J2000)":"16.539083333333334","赤纬(J2000)":"+19h49m32s","赤纬D(J2000)":"19.825555555555557","可见光星等V":"11.9","摄影(蓝光)星等B":"12.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.5","短轴(分)":"1.1","方位角":"175","详细描述":"pretty bright, pretty large, very little extended, pretty gradually much brighter middle","简略描述":"pB, pL, vlE, pgmbM"},{"ID":"6182","标识":"NGC6182","M标识":"NGC6182","拓展名":"","组件":"","Class":"III 813","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h29m33.9s","赤经D(J2000)":"16.49275","赤纬(J2000)":"+55h31m4s","赤纬D(J2000)":"55.51777777777777","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"146","详细描述":"very faint, very small, irregularly round","简略描述":"vF, vS, iR"},{"ID":"6183","标识":"NGC6183","M标识":"NGC6183","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"南三角座","星座(En)":"TRA","赤经(J2000)":"16h41m41.8s","赤经D(J2000)":"16.694944444444445","赤纬(J2000)":"-69h22m21s","赤纬D(J2000)":"-69.37249999999999","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"36","详细描述":"very faint, extremely small, round, gradually brighter middle","简略描述":"vF, eS, R, gbM"},{"ID":"6184","标识":"NGC6184","M标识":"NGC6184","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h31m34.4s","赤经D(J2000)":"16.52622222222222","赤纬(J2000)":"+40h33m56s","赤纬D(J2000)":"40.565555555555555","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"128","详细描述":"extremely faint, very small, round, very little brighter middle","简略描述":"eF, vS, R, vlbM"},{"ID":"6185","标识":"NGC6185","M标识":"NGC6185","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h33m17.8s","赤经D(J2000)":"16.554944444444445","赤纬(J2000)":"+35h20m32s","赤纬D(J2000)":"35.342222222222226","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"0","详细描述":"faint, small, round, gradually brighter middle, 11th magnitude star to northwest","简略描述":"F, S, R, gbM, * 11 np"},{"ID":"6186","标识":"NGC6186","M标识":"NGC6186","拓展名":"","组件":"","Class":"III 730","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h34m25.4s","赤经D(J2000)":"16.573722222222223","赤纬(J2000)":"+21h32m29s","赤纬D(J2000)":"21.54138888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"60","详细描述":"extremely faint, very small, extended","简略描述":"eF, vS, E"},{"ID":"6187","标识":"NGC6187","M标识":"NGC6187","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h31m36.6s","赤经D(J2000)":"16.526833333333332","赤纬(J2000)":"+57h42m26s","赤纬D(J2000)":"57.70722222222223","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"130","详细描述":"very faint, very small, a little brighter middle","简略描述":"vF, vS, lbM"},{"ID":"6188","标识":"NGC6188","M标识":"NGC6188","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"环星云","类型":"Nb","含重复类型":"Nb","形态":"EN+RN","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"16h40m5s","赤经D(J2000)":"16.668055555555558","赤纬(J2000)":"-48h39m42s","赤纬D(J2000)":"-48.66166666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"12","方位角":"","详细描述":"a remarkable object, faint, very large, very irregularly extended, bright star involved","简略描述":"! F, vL, viE, B * inv"},{"ID":"6189","标识":"NGC6189","M标识":"NGC6189","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h31m40.7s","赤经D(J2000)":"16.52797222222222","赤纬(J2000)":"+59h37m36s","赤纬D(J2000)":"59.626666666666665","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"20","详细描述":"very faint, pretty small, a little extended","简略描述":"vF, pS, lE"},{"ID":"6190","标识":"NGC6190","M标识":"NGC6190","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h32m6.4s","赤经D(J2000)":"16.535111111111114","赤纬(J2000)":"+58h26m21s","赤纬D(J2000)":"58.439166666666665","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"60","详细描述":"very faint, pretty small, round, faint star near","简略描述":"vF, pS, R, F * nr"},{"ID":"6191","标识":"NGC6191","M标识":"NGC6191","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h31m40.7s","赤经D(J2000)":"16.52797222222222","赤纬(J2000)":"+59h37m36s","赤纬D(J2000)":"59.626666666666665","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"20","详细描述":"very faint, pretty small, a little extended","简略描述":"pF, pL, E, 2 st p"},{"ID":"6192","标识":"NGC6192","M标识":"NGC6192","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h40m20.8s","赤经D(J2000)":"16.672444444444444","赤纬(J2000)":"-43h21m55s","赤纬D(J2000)":"-43.36527777777778","可见光星等V":"8.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, irregularly round, stars from 11th to 14th magnitude","简略描述":"Cl, pL, pRi, iR, st 11…14"},{"ID":"6193","标识":"NGC6193","M标识":"NGC6193","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3p","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"16h41m20.3s","赤经D(J2000)":"16.688972222222223","赤纬(J2000)":"-48h45m48s","赤纬D(J2000)":"-48.763333333333335","可见光星等V":"5.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"14","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, a little rich, a little compressed, well resolved, clearly consisting of stars, faint nebula involved","简略描述":"Cl, vL, lRi, lC, rrr, F neb inv"},{"ID":"6194","标识":"NGC6194","M标识":"NGC6194","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h36m37s","赤经D(J2000)":"16.610277777777778","赤纬(J2000)":"+36h12m2s","赤纬D(J2000)":"36.20055555555556","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.8","方位角":"105","详细描述":"very faint, very small, suddenly brighter middle equivalent to 12th magnitude star","简略描述":"vF, vS, sbM * 12"},{"ID":"6195","标识":"NGC6195","M标识":"NGC6195","拓展名":"","组件":"","Class":"III 893","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h36m32.6s","赤经D(J2000)":"16.609055555555557","赤纬(J2000)":"+39h1m42s","赤纬D(J2000)":"39.02833333333333","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"45","详细描述":"very faint, small, round, gradually brighter middle, between 2 stars","简略描述":"vF, S, R, gbM, bet 2 st"},{"ID":"6196","标识":"NGC6196","M标识":"NGC6196","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h37m53.8s","赤经D(J2000)":"16.631611111111113","赤纬(J2000)":"+36h4m23s","赤纬D(J2000)":"36.073055555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2","短轴(分)":"1.2","方位角":"140","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"6197","标识":"NGC6197","M标识":"NGC6197","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h37m59.8s","赤经D(J2000)":"16.633277777777778","赤纬(J2000)":"+35h59m45s","赤纬D(J2000)":"35.99583333333334","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"37","详细描述":"extremely faint, extended, stellar","简略描述":"eF, E, stellar"},{"ID":"6198","标识":"NGC6198","M标识":"NGC6198","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h35m30.6s","赤经D(J2000)":"16.591833333333334","赤纬(J2000)":"+57h29m14s","赤纬D(J2000)":"57.48722222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.7","方位角":"90","详细描述":"very faint, very small, round, 2 stars to east","简略描述":"vF, vS, R, 2 st f"},{"ID":"6199","标识":"NGC6199","M标识":"NGC6199","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h39m28.9s","赤经D(J2000)":"16.658027777777775","赤纬(J2000)":"+36h3m34s","赤纬D(J2000)":"36.059444444444445","可见光星等V":"99","摄影(蓝光)星等B":"14.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"6200","标识":"NGC6200","M标识":"NGC6200","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"16h44m8.6s","赤经D(J2000)":"16.735722222222222","赤纬(J2000)":"-47h28m11s","赤纬D(J2000)":"-47.469722222222224","可见光星等V":"7.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster (in Milky Way)","简略描述":"Cl (in Milky Way)"},{"ID":"6201","标识":"NGC6201","M标识":"NGC6201","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h40m14.4s","赤经D(J2000)":"16.67066666666667","赤纬(J2000)":"+23h45m55s","赤纬D(J2000)":"23.76527777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"21","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"6202","标识":"NGC6202","M标识":"NGC6202","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h43m23.2s","赤经D(J2000)":"16.72311111111111","赤纬(J2000)":"+61h59m1s","赤纬D(J2000)":"61.98361111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"68","详细描述":"most extremely faint, pretty small, star to east","简略描述":"eeF, pS, * f"},{"ID":"6203","标识":"NGC6203","M标识":"NGC6203","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h40m27.3s","赤经D(J2000)":"16.67425","赤纬(J2000)":"+23h46m31s","赤纬D(J2000)":"23.775277777777777","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"6204","标识":"NGC6204","M标识":"NGC6204","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"16h46m7.9s","赤经D(J2000)":"16.76886111111111","赤纬(J2000)":"-47h0m44s","赤纬D(J2000)":"-47.01222222222222","可见光星等V":"8.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, extremely irregularly compressed middle, stars from 11th to 12th magnitude","简略描述":"Cl, pRi, eiCM, st 11…12"},{"ID":"6205","标识":"NGC6205","M标识":"M13","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"武仙座球状星团","类型":"GCL","含重复类型":"GCL","形态":"V","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h41m41.5s","赤经D(J2000)":"16.694861111111113","赤纬(J2000)":"+36h27m39s","赤纬D(J2000)":"36.46083333333333","可见光星等V":"5.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a very remarkable object, a globular cluster, extremely bright, very rich, very gradually extremely compressed middle, stars from 11th magnitude","简略描述":"!! globular, eB, vRi, vgeCM, st 11…"},{"ID":"6206","标识":"NGC6206","M标识":"NGC6206","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h40m7.9s","赤经D(J2000)":"16.668861111111113","赤纬(J2000)":"+58h37m2s","赤纬D(J2000)":"58.617222222222225","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"pretty faint, extremely small, round, stellar, 3 very faint stars near","简略描述":"pF, eS, R, stell, 3 vF st nr"},{"ID":"6207","标识":"NGC6207","M标识":"NGC6207","拓展名":"","组件":"","Class":"II 701","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h43m3.7s","赤经D(J2000)":"16.717694444444444","赤纬(J2000)":"+36h49m55s","赤纬D(J2000)":"36.831944444444446","可见光星等V":"11.6","摄影(蓝光)星等B":"12.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3","短轴(分)":"1.2","方位角":"15","详细描述":"pretty bright, pretty large, extended 45°±, very gradually much brighter middle","简略描述":"pB, pL, E 45° ±, vgmbM"},{"ID":"6208","标识":"NGC6208","M标识":"NGC6208","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1m","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"16h49m25.8s","赤经D(J2000)":"16.823833333333333","赤纬(J2000)":"-53h42m18s","赤纬D(J2000)":"-53.705000000000005","可见光星等V":"7.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"18","短轴(分)":"","方位角":"","详细描述":"a cluster, large, rich, a little compressed middle, stars from 9th to 12th magnitude","简略描述":"Cl, L, Ri, lCM, st 9…12"},{"ID":"6209","标识":"NGC6209","M标识":"NGC6209","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"16h54m57.7s","赤经D(J2000)":"16.916027777777778","赤纬(J2000)":"-72h35m12s","赤纬D(J2000)":"-72.58666666666666","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2","短轴(分)":"1.6","方位角":"10","详细描述":"very faint, pretty large, very gradually a very little brighter middle","简略描述":"vF, pL, vgvlbM"},{"ID":"6210","标识":"NGC6210","M标识":"NGC6210","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"乌龟星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h44m29.5s","赤经D(J2000)":"16.74152777777778","赤纬(J2000)":"+23h48m2s","赤纬D(J2000)":"23.800555555555555","可见光星等V":"8.8","摄影(蓝光)星等B":"9.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.35","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, very bright, very small, round, disc and border","简略描述":"planetary, vB, vS, R, disc & border"},{"ID":"6211","标识":"NGC6211","M标识":"NGC6211","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h41m27.6s","赤经D(J2000)":"16.691","赤纬(J2000)":"+57h47m2s","赤纬D(J2000)":"57.78388888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"99","详细描述":"very faint, pretty small, round, southwestern of 2","简略描述":"vF, pS, R, sp of 2"},{"ID":"6212","标识":"NGC6212","M标识":"NGC6212","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h43m23.2s","赤经D(J2000)":"16.72311111111111","赤纬(J2000)":"+39h48m26s","赤纬D(J2000)":"39.80722222222222","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"105","详细描述":"extremely faint","简略描述":"eF"},{"ID":"6213","标识":"NGC6213","M标识":"NGC6213","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h41m37.3s","赤经D(J2000)":"16.693694444444446","赤纬(J2000)":"+57h48m54s","赤纬D(J2000)":"57.815","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"57","详细描述":"extremely faint, very small, round, northeastern of 2","简略描述":"eF, vS, R, nf of 2"},{"ID":"6214","标识":"NGC6214","M标识":"NGC6214","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h39m31.8s","赤经D(J2000)":"16.65883333333333","赤纬(J2000)":"+66h2m23s","赤纬D(J2000)":"66.03972222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.8","方位角":"145","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"6215","标识":"NGC6215","M标识":"NGC6215","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"16h51m7s","赤经D(J2000)":"16.851944444444445","赤纬(J2000)":"-58h59m35s","赤纬D(J2000)":"-58.99305555555556","可见光星等V":"11.5","摄影(蓝光)星等B":"12","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.2","短轴(分)":"2","方位角":"78","详细描述":"pretty faint, round, very gradually a little brighter middle, 4th magnitude star 79 seconds of time to west","简略描述":"pF, R, vglbM, * 4 p 79s"},{"ID":"6216","标识":"NGC6216","M标识":"NGC6216","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h49m23.5s","赤经D(J2000)":"16.823194444444443","赤纬(J2000)":"-44h43m53s","赤纬D(J2000)":"-44.731388888888894","可见光星等V":"10.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty small, pretty rich, pretty compressed, stars from 12th to 15th magnitude","简略描述":"Cl, pS, pRi, pC, st 12…15"},{"ID":"6217","标识":"NGC6217","M标识":"NGC6217","拓展名":"","组件":"","Class":"I 280","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"16h32m38.7s","赤经D(J2000)":"16.544083333333337","赤纬(J2000)":"+78h11m57s","赤纬D(J2000)":"78.19916666666667","可见光星等V":"11.2","摄影(蓝光)星等B":"11.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3","短轴(分)":"2.5","方位角":"153","详细描述":"bright, considerably large, a little extended, suddenly a little brighter middle","简略描述":"B, cL, lE, slbM"},{"ID":"6218","标识":"NGC6218","M标识":"M12","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"口香糖球状星团","类型":"GCL","含重复类型":"GCL","形态":"IX","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"16h47m14.5s","赤经D(J2000)":"16.787361111111114","赤纬(J2000)":"-1h56m50s","赤纬D(J2000)":"-1.9472222222222222","可见光星等V":"6.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"16","短轴(分)":"","方位角":"","详细描述":"a very remarkable object, a globular cluster, very bright, very large, irregularly round, gradually much brighter middle, well resolved, clearly consisting of stars, stars from 10th magnitude","简略描述":"!! globular, vB, vL, iR, gmbM, rrr, st 10…"},{"ID":"6219","标识":"NGC6219","M标识":"NGC6219","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h46m22.6s","赤经D(J2000)":"16.772944444444445","赤纬(J2000)":"+9h2m18s","赤纬D(J2000)":"9.038333333333334","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, small","简略描述":"F, S"},{"ID":"6220","标识":"NGC6220","M标识":"NGC6220","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"16h47m13.2s","赤经D(J2000)":"16.787000000000003","赤纬(J2000)":"-0h16m30s","赤纬D(J2000)":"-0.275","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"135","详细描述":"most extremely faint, pretty small, irregularly round, 3 faint stars to south","简略描述":"eeF, pS, iR, 3 F st s"},{"ID":"6221","标识":"NGC6221","M标识":"NGC6221","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"16h52m46.1s","赤经D(J2000)":"16.879472222222223","赤纬(J2000)":"-59h13m6s","赤纬D(J2000)":"-59.218333333333334","可见光星等V":"9.9","摄影(蓝光)星等B":"10.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"3.5","短轴(分)":"2.5","方位角":"5","详细描述":"a globular cluster, pretty bright, considerably large, round, gradually a little brighter middle, partially resolved (some stars seen)","简略描述":"globular, pB, cL, R, glbM, rr"},{"ID":"6222","标识":"NGC6222","M标识":"NGC6222","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"III2m","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h0m45.3s","赤经D(J2000)":"17.012583333333332","赤纬(J2000)":"-44h39m18s","赤纬D(J2000)":"-44.655","可见光星等V":"8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty small, pretty rich, pretty compressed, stars from 12th to 15th magnitude","简略描述":"Cl, vL, vRi, lbM, st 12…13"},{"ID":"6223","标识":"NGC6223","M标识":"NGC6223","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h43m4.2s","赤经D(J2000)":"16.71783333333333","赤纬(J2000)":"+61h34m43s","赤纬D(J2000)":"61.578611111111115","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"3.5","短轴(分)":"2.6","方位角":"88","详细描述":"faint, small, round, much brighter middle","简略描述":"F, S, R, mbM"},{"ID":"6224","标识":"NGC6224","M标识":"NGC6224","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h48m18.5s","赤经D(J2000)":"16.80513888888889","赤纬(J2000)":"+6h18m44s","赤纬D(J2000)":"6.312222222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"most extremely faint, very small, a little extended, pretty bright star near to north, northern of 2","简略描述":"eeF, vS, lE, pB * nr n, n of 2"},{"ID":"6225","标识":"NGC6225","M标识":"NGC6225","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h48m21.6s","赤经D(J2000)":"16.806","赤纬(J2000)":"+6h13m23s","赤纬D(J2000)":"6.223055555555556","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"156","详细描述":"extremely faint, very small, a little extended, faint star involved, southern of 2","简略描述":"eF, vS, lE, F st inv, s of 2"},{"ID":"6226","标识":"NGC6226","M标识":"NGC6226","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h43m23.2s","赤经D(J2000)":"16.72311111111111","赤纬(J2000)":"+61h59m1s","赤纬D(J2000)":"61.98361111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"68","详细描述":"most extremely faint, pretty small, star to east","简略描述":"F, S, Δ with 2 st 12 & 14"},{"ID":"6227","标识":"NGC6227","M标识":"NGC6227","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Cloud","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h51m30s","赤经D(J2000)":"16.858333333333334","赤纬(J2000)":"-40h54m0s","赤纬D(J2000)":"-40.9","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, extremely large, extremely rich (in Milky Way)","简略描述":"Cl, eL, eRi (Milky Way)"},{"ID":"6228","标识":"NGC6228","M标识":"NGC6228","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h48m2.8s","赤经D(J2000)":"16.80077777777778","赤纬(J2000)":"+26h12m46s","赤纬D(J2000)":"26.212777777777777","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"130","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"6229","标识":"NGC6229","M标识":"NGC6229","拓展名":"","组件":"","Class":"IV 50","业余排名":"5","中文名":"彗星奖球状星团","类型":"GCL","含重复类型":"GCL","形态":"IV","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h46m58.9s","赤经D(J2000)":"16.783027777777775","赤纬(J2000)":"+47h31m42s","赤纬D(J2000)":"47.52833333333333","可见光星等V":"9.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.5","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very bright, large, round, disc and faint border, mottled but not resolved","简略描述":"globular, vB, L, R, disc & F border, r"},{"ID":"6230","标识":"NGC6230","M标识":"NGC6230","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h50m46.8s","赤经D(J2000)":"16.846333333333334","赤纬(J2000)":"+4h36m16s","赤纬D(J2000)":"4.604444444444444","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"36","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"6231","标识":"NGC6231","M标识":"NGC6231","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"伪彗星星云","类型":"OCL","含重复类型":"OCL","形态":"I3p","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h54m9.8s","赤经D(J2000)":"16.90272222222222","赤纬(J2000)":"-41h49m30s","赤纬D(J2000)":"-41.825","可见光星等V":"2.6","摄影(蓝光)星等B":"2.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"14","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, considerably large, pretty rich, stars from 10th to 13th magnitude","简略描述":"Cl, B, cL, pRi, st 10…13"},{"ID":"6232","标识":"NGC6232","M标识":"NGC6232","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h43m19.9s","赤经D(J2000)":"16.722194444444444","赤纬(J2000)":"+70h37m57s","赤纬D(J2000)":"70.6325","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"pretty faint, pretty large, a little extended","简略描述":"pF, pL, lE"},{"ID":"6233","标识":"NGC6233","M标识":"NGC6233","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h50m15.6s","赤经D(J2000)":"16.837666666666667","赤纬(J2000)":"+23h34m49s","赤纬D(J2000)":"23.580277777777777","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"1","方位角":"33","详细描述":"pretty faint, small, round, gradually brighter middle","简略描述":"pF, S, R, gbM"},{"ID":"6234","标识":"NGC6234","M标识":"NGC6234","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"16h51m57.2s","赤经D(J2000)":"16.86588888888889","赤纬(J2000)":"+4h23m3s","赤纬D(J2000)":"4.384166666666667","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"6235","标识":"NGC6235","M标识":"NGC6235","拓展名":"","组件":"","Class":"II 584","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"X","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"16h53m25.4s","赤经D(J2000)":"16.89038888888889","赤纬(J2000)":"-22h10m36s","赤纬D(J2000)":"-22.17666666666667","可见光星等V":"8.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"pretty bright, considerably large, irregularly round, well resolved, clearly consisting of stars, stars from 14th to 16th magnitude","简略描述":"pB, cL, iR, rrr, st 14…16"},{"ID":"6236","标识":"NGC6236","M标识":"NGC6236","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h44m34.3s","赤经D(J2000)":"16.74286111111111","赤纬(J2000)":"+70h46m48s","赤纬D(J2000)":"70.78","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.9","短轴(分)":"1.6","方位角":"15","详细描述":"faint, pretty large","简略描述":"F, pL"},{"ID":"6237","标识":"NGC6237","M标识":"NGC6237","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h44m7.4s","赤经D(J2000)":"16.735388888888888","赤纬(J2000)":"+70h38m5s","赤纬D(J2000)":"70.63472222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, extended","简略描述":"eF, S, E"},{"ID":"6238","标识":"NGC6238","M标识":"NGC6238","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h47m15.9s","赤经D(J2000)":"16.787750000000003","赤纬(J2000)":"+62h8m51s","赤纬D(J2000)":"62.1475","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"17","详细描述":"most extremely faint, extremely small, extremely faint star close, very difficult","简略描述":"eeF, eS, eF * close, v diffic"},{"ID":"6239","标识":"NGC6239","M标识":"NGC6239","拓展名":"","组件":"","Class":"III 727","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h50m5.2s","赤经D(J2000)":"16.834777777777777","赤纬(J2000)":"+42h44m23s","赤纬D(J2000)":"42.73972222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"12.9","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.4","短轴(分)":"1.1","方位角":"118","详细描述":"very faint, extended, binuclear northwest-southeast","简略描述":"vF, E, biN np sf"},{"ID":"6240","标识":"NGC6240","M标识":"NGC6240","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"16h52m58.8s","赤经D(J2000)":"16.883","赤纬(J2000)":"+2h24m11s","赤纬D(J2000)":"2.4030555555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.1","短轴(分)":"1","方位角":"20","详细描述":"very faint, pretty large, a little extended, diffuse","简略描述":"vF, pL, lE, dif"},{"ID":"6241","标识":"NGC6241","M标识":"NGC6241","拓展名":"","组件":"","Class":"III 735","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h50m11s","赤经D(J2000)":"16.836388888888887","赤纬(J2000)":"+45h25m16s","赤纬D(J2000)":"45.42111111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"14.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"1","短轴(分)":"0.8","方位角":"98","详细描述":"extremely faint, pretty small","简略描述":"eF, pS"},{"ID":"6242","标识":"NGC6242","M标识":"NGC6242","拓展名":"","组件":"","Class":"","业余排名":"4","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h55m30.6s","赤经D(J2000)":"16.92516666666667","赤纬(J2000)":"-39h28m1s","赤纬D(J2000)":"-39.466944444444444","可见光星等V":"6.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, large, rich, stars from 8th to 11th magnitude","简略描述":"Cl, B, L, Ri, st 8…11"},{"ID":"6243","标识":"NGC6243","M标识":"NGC6243","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h52m26.3s","赤经D(J2000)":"16.87397222222222","赤纬(J2000)":"+23h19m58s","赤纬D(J2000)":"23.33277777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.4","方位角":"154","详细描述":"very faint, very small, irregular figure, diffuse","简略描述":"vF, vS, iF, dif"},{"ID":"6244","标识":"NGC6244","M标识":"NGC6244","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h48m3.9s","赤经D(J2000)":"16.801083333333334","赤纬(J2000)":"+62h12m2s","赤纬D(J2000)":"62.20055555555556","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"140","详细描述":"very faint, very small, round, between 2 stars, northeastern of 2","简略描述":"vF, vS, R, bet 2 st, nf of 2"},{"ID":"6245","标识":"NGC6245","M标识":"NGC6245","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h45m22.4s","赤经D(J2000)":"16.756222222222224","赤纬(J2000)":"+70h48m16s","赤纬D(J2000)":"70.80444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, round","简略描述":"vF, pL, R"},{"ID":"6246","标识":"NGC6246","M标识":"NGC6246","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h49m53s","赤经D(J2000)":"16.83138888888889","赤纬(J2000)":"+55h32m34s","赤纬D(J2000)":"55.54277777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"43","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"6247","标识":"NGC6247","M标识":"NGC6247","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h48m19.4s","赤经D(J2000)":"16.80538888888889","赤纬(J2000)":"+62h58m38s","赤纬D(J2000)":"62.977222222222224","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"1","短轴(分)":"0.3","方位角":"58","详细描述":"faint, pretty small, irregular figure","简略描述":"F, pS, iF"},{"ID":"6248","标识":"NGC6248","M标识":"NGC6248","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h46m22.3s","赤经D(J2000)":"16.77286111111111","赤纬(J2000)":"+70h21m22s","赤纬D(J2000)":"70.3561111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"3.1","短轴(分)":"1.2","方位角":"150","详细描述":"most extremely faint, pretty large, round, very difficult","简略描述":"eeF, pL, R, v diffic"},{"ID":"6249","标识":"NGC6249","M标识":"NGC6249","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h57m41.7s","赤经D(J2000)":"16.961583333333333","赤纬(J2000)":"-44h48m17s","赤纬D(J2000)":"-44.80472222222222","可见光星等V":"8.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, very little compressed, irregular figure, stars large and small","简略描述":"Cl, pRi, vlC, iF, st L & S"},{"ID":"6250","标识":"NGC6250","M标识":"NGC6250","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV3p","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"16h57m56s","赤经D(J2000)":"16.965555555555554","赤纬(J2000)":"-45h56m12s","赤纬D(J2000)":"-45.93666666666666","可见光星等V":"5.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"16","短轴(分)":"","方位角":"","详细描述":"a cluster, large, a little rich, a little compressed, stars from 8th to 12th magnitude","简略描述":"Cl, L, lRi, lC, st 8…12"},{"ID":"6251","标识":"NGC6251","M标识":"NGC6251","拓展名":"","组件":"","Class":"III 974","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"16h32m31.8s","赤经D(J2000)":"16.542166666666667","赤纬(J2000)":"+82h32m18s","赤纬D(J2000)":"82.53833333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"36","详细描述":"considerably faint, small, brighter middle, western of 2","简略描述":"cF, S, bM, p of 2"},{"ID":"6252","标识":"NGC6252","M标识":"NGC6252","拓展名":"","组件":"","Class":"III 975","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"16h32m40.3s","赤经D(J2000)":"16.54452777777778","赤纬(J2000)":"+82h34m38s","赤纬D(J2000)":"82.57722222222222","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"60","详细描述":"very faint, very small, eastern of 2","简略描述":"vF, vS, f of 2"},{"ID":"6253","标识":"NGC6253","M标识":"NGC6253","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"16h59m6.1s","赤经D(J2000)":"16.98502777777778","赤纬(J2000)":"-52h42m57s","赤纬D(J2000)":"-52.715833333333336","可见光星等V":"10.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, small, triangular, stars of 13th magnitude","简略描述":"Cl, S, triangular, st 13"},{"ID":"6254","标识":"NGC6254","M标识":"M10","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VII","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"16h57m8.9s","赤经D(J2000)":"16.952472222222223","赤纬(J2000)":"-4h5m56s","赤纬D(J2000)":"-4.098888888888888","可见光星等V":"6.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a globular cluster, bright, very large, round, gradually very much brighter middle, well resolved, clearly consisting of stars, stars from 10th to 15th magnitude","简略描述":"! globular, B, vL, R, gvmbM, rrr, st 10…15"},{"ID":"6255","标识":"NGC6255","M标识":"NGC6255","拓展名":"","组件":"","Class":"III 689","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h54m47.4s","赤经D(J2000)":"16.913166666666665","赤纬(J2000)":"+36h30m6s","赤纬D(J2000)":"36.501666666666665","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"3.6","短轴(分)":"1.5","方位角":"85","详细描述":"extremely faint, considerably large, extended 90°","简略描述":"eF, cL, E 90°"},{"ID":"6256","标识":"NGC6256","M标识":"NGC6256","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h59m32.6s","赤经D(J2000)":"16.99238888888889","赤纬(J2000)":"-37h7m15s","赤纬D(J2000)":"-37.12083333333334","可见光星等V":"11.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.1","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very faint, very large, irregularly round, very gradually brighter middle, well resolved, clearly consisting of stars","简略描述":"globular, vF, vL, iR, vgbM, rrr"},{"ID":"6257","标识":"NGC6257","M标识":"NGC6257","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h54m52.2s","赤经D(J2000)":"16.9145","赤纬(J2000)":"+39h36m50s","赤纬D(J2000)":"39.61388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint (very small double star?), faint double star to northeast","简略描述":"vF (vS D * ?), F D * nf"},{"ID":"6258","标识":"NGC6258","M标识":"NGC6258","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h52m29.7s","赤经D(J2000)":"16.874916666666667","赤纬(J2000)":"+60h30m52s","赤纬D(J2000)":"60.51444444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"70","详细描述":"extremely faint, very small, round, bright star and double star to west","简略描述":"eF, vS, R, B * and D * p"},{"ID":"6259","标识":"NGC6259","M标识":"NGC6259","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h0m45.3s","赤经D(J2000)":"17.012583333333332","赤纬(J2000)":"-44h39m18s","赤纬D(J2000)":"-44.655","可见光星等V":"8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a cluster, bright, very large, very rich, stars from 11th magnitude","简略描述":"! Cl, B, vL, vRi, st 11…"},{"ID":"6260","标识":"NGC6260","M标识":"NGC6260","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h51m50.3s","赤经D(J2000)":"16.863972222222223","赤纬(J2000)":"+63h42m53s","赤纬D(J2000)":"63.71472222222223","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, pretty small, round, several stars near to southeast","简略描述":"eF, pS, R, sev st nr sf"},{"ID":"6261","标识":"NGC6261","M标识":"NGC6261","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h56m30.4s","赤经D(J2000)":"16.941777777777776","赤纬(J2000)":"+27h58m41s","赤纬D(J2000)":"27.978055555555553","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"88","详细描述":"extremely faint, extremely small, irregular figure","简略描述":"eF, eS, iF"},{"ID":"6262","标识":"NGC6262","M标识":"NGC6262","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h58m42.9s","赤经D(J2000)":"16.978583333333333","赤纬(J2000)":"+57h5m57s","赤纬D(J2000)":"57.09916666666667","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"60","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"6263","标识":"NGC6263","M标识":"NGC6263","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h56m43.1s","赤经D(J2000)":"16.945305555555557","赤纬(J2000)":"+27h49m21s","赤纬D(J2000)":"27.822499999999998","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"6264","标识":"NGC6264","M标识":"NGC6264","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h57m16.1s","赤经D(J2000)":"16.954472222222222","赤纬(J2000)":"+27h50m58s","赤纬D(J2000)":"27.849444444444444","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"15","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"6265","标识":"NGC6265","M标识":"NGC6265","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h57m29s","赤经D(J2000)":"16.958055555555553","赤纬(J2000)":"+27h50m41s","赤纬D(J2000)":"27.84472222222222","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"23","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"6266","标识":"NGC6266","M标识":"M62","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"闪球星团","类型":"GCL","含重复类型":"GCL","形态":"IV","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h1m12.6s","赤经D(J2000)":"17.020166666666665","赤纬(J2000)":"-30h6m42s","赤纬D(J2000)":"-30.111666666666668","可见光星等V":"6.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a globular cluster, very bright, large, gradually much brighter middle, well resolved, clearly consisting of stars, stars of 14th to 16th magnitude","简略描述":"! globular, vB, L, gmbM, rrr, st 14…16"},{"ID":"6267","标识":"NGC6267","M标识":"NGC6267","拓展名":"","组件":"","Class":"III 123","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h58m8.7s","赤经D(J2000)":"16.96908333333333","赤纬(J2000)":"+22h59m7s","赤纬D(J2000)":"22.985277777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"1","方位角":"35","详细描述":"very faint, pretty large, round, a little brighter middle","简略描述":"vF, pL, R, lbM"},{"ID":"6268","标识":"NGC6268","M标识":"NGC6268","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h2m4.1s","赤经D(J2000)":"17.034472222222224","赤纬(J2000)":"-39h43m16s","赤纬D(J2000)":"-39.721111111111114","可见光星等V":"9.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, pretty large, considerably rich, stars from 10th magnitude","简略描述":"Cl, B, pL, cRi, st 10…"},{"ID":"6269","标识":"NGC6269","M标识":"NGC6269","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h57m58s","赤经D(J2000)":"16.96611111111111","赤纬(J2000)":"+27h51m18s","赤纬D(J2000)":"27.855","可见光星等V":"12.2","摄影(蓝光)星等B":"13.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"1.6","方位角":"80","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"6270","标识":"NGC6270","M标识":"NGC6270","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h58m44.1s","赤经D(J2000)":"16.978916666666667","赤纬(J2000)":"+27h51m32s","赤纬D(J2000)":"27.85888888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"102","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"6271","标识":"NGC6271","M标识":"NGC6271","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0?","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h58m50.7s","赤经D(J2000)":"16.980749999999997","赤纬(J2000)":"+27h57m53s","赤纬D(J2000)":"27.96472222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"170","详细描述":"very faint, round","简略描述":"vF, R"},{"ID":"6272","标识":"NGC6272","M标识":"NGC6272","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h58m58.2s","赤经D(J2000)":"16.982833333333332","赤纬(J2000)":"+27h55m51s","赤纬D(J2000)":"27.930833333333336","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"167","详细描述":"very faint","简略描述":"vF"},{"ID":"6273","标识":"NGC6273","M标识":"M19","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VIII","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h2m37.7s","赤经D(J2000)":"17.043805555555558","赤纬(J2000)":"-26h16m3s","赤纬D(J2000)":"-26.2675","可见光星等V":"6.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"17","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very bright, large, round, very compressed middle, well resolved, clearly consisting of stars, stars of 16th magnitude","简略描述":"globular, vB, L, R, vCM, rrr, st 16"},{"ID":"6274","标识":"NGC6274","M标识":"NGC6274","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h59m20.4s","赤经D(J2000)":"16.989","赤纬(J2000)":"+29h56m47s","赤纬D(J2000)":"29.94638888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"23","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"6275","标识":"NGC6275","M标识":"NGC6275","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h55m33.6s","赤经D(J2000)":"16.926000000000002","赤纬(J2000)":"+63h14m34s","赤纬D(J2000)":"63.24277777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"120","详细描述":"most extremely faint, small, a little extended, very difficult","简略描述":"eeF, S, lE, v diffic"},{"ID":"6276","标识":"NGC6276","M标识":"NGC6276","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h0m45s","赤经D(J2000)":"17.0125","赤纬(J2000)":"+23h2m40s","赤纬D(J2000)":"23.044444444444448","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"123","详细描述":"extremely faint","简略描述":"eF"},{"ID":"6277","标识":"NGC6277","M标识":"NGC6277","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h0m48.8s","赤经D(J2000)":"17.013555555555556","赤纬(J2000)":"+23h2m24s","赤纬D(J2000)":"23.040000000000003","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"6278","标识":"NGC6278","M标识":"NGC6278","拓展名":"","组件":"","Class":"III 124","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h0m50.2s","赤经D(J2000)":"17.013944444444444","赤纬(J2000)":"+23h0m40s","赤纬D(J2000)":"23.011111111111113","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.1","短轴(分)":"1.2","方位角":"130","详细描述":"very faint, stellar","简略描述":"vF, stellar"},{"ID":"6279","标识":"NGC6279","M标识":"NGC6279","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h59m1.3s","赤经D(J2000)":"16.983694444444446","赤纬(J2000)":"+47h14m16s","赤纬D(J2000)":"47.23777777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"19","详细描述":"very faint, pretty small, a little extended, coarse double star to northwest","简略描述":"vF, pS, lE, coarse D * np"},{"ID":"6280","标识":"NGC6280","M标识":"NGC6280","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h1m57.5s","赤经D(J2000)":"17.032638888888886","赤纬(J2000)":"+6h39m59s","赤纬D(J2000)":"6.666388888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"144","详细描述":"pretty bright, small, a little extended","简略描述":"pB, S, lE"},{"ID":"6281","标识":"NGC6281","M标识":"NGC6281","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"蛾翼星团","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h4m47.2s","赤经D(J2000)":"17.079777777777778","赤纬(J2000)":"-37h53m16s","赤纬D(J2000)":"-37.88777777777778","可见光星等V":"5.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a cluster, large, pretty rich, a little compressed, stars from 9th to 11th magnitude","简略描述":"Cl, L, pRi, lC, st 9…11"},{"ID":"6282","标识":"NGC6282","M标识":"NGC6282","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h0m47s","赤经D(J2000)":"17.013055555555557","赤纬(J2000)":"+29h49m13s","赤纬D(J2000)":"29.82027777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"36","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"6283","标识":"NGC6283","M标识":"NGC6283","拓展名":"","组件":"","Class":"III 728","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h59m26.5s","赤经D(J2000)":"16.990694444444447","赤纬(J2000)":"+49h55m19s","赤纬D(J2000)":"49.92194444444444","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"very faint, considerably small, irregularly round","简略描述":"vF, cS, iR"},{"ID":"6284","标识":"NGC6284","M标识":"NGC6284","拓展名":"","组件":"","Class":"VI 11","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"IX","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h4m28.8s","赤经D(J2000)":"17.074666666666666","赤纬(J2000)":"-24h45m51s","赤纬D(J2000)":"-24.764166666666668","可见光星等V":"8.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6.2","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, large, round, compressed middle, well resolved, clearly consisting of stars, stars from 16th magnitude","简略描述":"globular, B, L, R, CM, rrr, st 16…"},{"ID":"6285","标识":"NGC6285","M标识":"NGC6285","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h58m23.9s","赤经D(J2000)":"16.973305555555555","赤纬(J2000)":"+58h57m21s","赤纬D(J2000)":"58.95583333333334","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"129","详细描述":"most extremely faint, small, round, very difficult, northwestern of 2","简略描述":"eeF, S, R, v diffic, np of 2"},{"ID":"6286","标识":"NGC6286","M标识":"NGC6286","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h58m31.6s","赤经D(J2000)":"16.97544444444444","赤纬(J2000)":"+58h56m15s","赤纬D(J2000)":"58.9375","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"33","详细描述":"most extremely faint, small, round, very difficult, northwestern of 2","简略描述":"eF, pS, R"},{"ID":"6287","标识":"NGC6287","M标识":"NGC6287","拓展名":"","组件":"","Class":"II 195","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VII","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h5m9.4s","赤经D(J2000)":"17.085944444444443","赤纬(J2000)":"-22h42m27s","赤纬D(J2000)":"-22.7075","可见光星等V":"9.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.8","短轴(分)":"","方位角":"","详细描述":"a globular cluster, considerably bright, large, round, gradually pretty much compressed middle, well resolved, clearly consisting of stars, stars from 16th magnitude","简略描述":"globular, cB, L, R, gpmCM, rrr, st 16"},{"ID":"6288","标识":"NGC6288","M标识":"NGC6288","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h57m24.3s","赤经D(J2000)":"16.95675","赤纬(J2000)":"+68h27m27s","赤纬D(J2000)":"68.4575","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"102","详细描述":"extremely faint, very small, round, southwestern of 2","简略描述":"eF, vS, R, sp of 2"},{"ID":"6289","标识":"NGC6289","M标识":"NGC6289","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h57m44.9s","赤经D(J2000)":"16.96247222222222","赤纬(J2000)":"+68h30m51s","赤纬D(J2000)":"68.51416666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"21","详细描述":"extremely faint, pretty large, much extended, northeastern of 2","简略描述":"eF, pL, mE, nf of 2"},{"ID":"6290","标识":"NGC6290","M标识":"NGC6290","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h0m56.4s","赤经D(J2000)":"17.015666666666668","赤纬(J2000)":"+58h58m15s","赤纬D(J2000)":"58.97083333333334","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"1","方位角":"30","详细描述":"extremely faint, pretty small, round, star close to east","简略描述":"eF, pS, R, * close f"},{"ID":"6291","标识":"NGC6291","M标识":"NGC6291","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h0m56s","赤经D(J2000)":"17.015555555555554","赤纬(J2000)":"+58h56m16s","赤纬D(J2000)":"58.937777777777775","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"45","详细描述":"most extremely faint, extremely small, round","简略描述":"eeF, eS, R"},{"ID":"6292","标识":"NGC6292","M标识":"NGC6292","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h3m3.5s","赤经D(J2000)":"17.050972222222224","赤纬(J2000)":"+61h2m38s","赤纬D(J2000)":"61.04388888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"105","详细描述":"extremely faint, extended, very difficult, faint star near","简略描述":"eF, E, v diffic, F st nr"},{"ID":"6293","标识":"NGC6293","M标识":"NGC6293","拓展名":"","组件":"","Class":"VI 12","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"IV","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h10m10.4s","赤经D(J2000)":"17.169555555555558","赤纬(J2000)":"-26h34m52s","赤纬D(J2000)":"-26.58111111111111","可见光星等V":"8.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8.2","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very bright, large, round, pretty suddenly brighter middle, well resolved, clearly consisting of stars, stars from 16th magnitude","简略描述":"globular, vB, L, R, psbM, rrr, st 16"},{"ID":"6294","标识":"NGC6294","M标识":"NGC6294","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h10m16.1s","赤经D(J2000)":"17.17113888888889","赤纬(J2000)":"-26h34m25s","赤纬D(J2000)":"-26.57361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, very gradually brighter middle, globular cluster to west","简略描述":"F, S, vgbM, globular p"},{"ID":"6295","标识":"NGC6295","M标识":"NGC6295","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h3m15.3s","赤经D(J2000)":"17.05425","赤纬(J2000)":"+60h20m16s","赤纬D(J2000)":"60.33777777777778","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"77","详细描述":"extremely faint, small, much extended, faint star near","简略描述":"eF, S, mE, F * nr"},{"ID":"6296","标识":"NGC6296","M标识":"NGC6296","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h8m44.6s","赤经D(J2000)":"17.145722222222222","赤纬(J2000)":"+3h53m40s","赤纬D(J2000)":"3.8944444444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"130","详细描述":"pretty bright","简略描述":"pB"},{"ID":"6297","标识":"NGC6297","M标识":"NGC6297","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h3m36.4s","赤经D(J2000)":"17.060111111111112","赤纬(J2000)":"+62h1m34s","赤纬D(J2000)":"62.02611111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"90","详细描述":"pretty bright, pretty small, round, between 2 stars, western of 2","简略描述":"pB, pS, R, bet 2 st, p of 2"},{"ID":"6298","标识":"NGC6298","M标识":"NGC6298","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h3m36.4s","赤经D(J2000)":"17.060111111111112","赤纬(J2000)":"+62h1m34s","赤纬D(J2000)":"62.02611111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"90","详细描述":"pretty bright, pretty small, round, between 2 stars, western of 2","简略描述":"vF, eS, R, bet 2 st, f of 2"},{"ID":"6299","标识":"NGC6299","M标识":"NGC6299","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h5m4.3s","赤经D(J2000)":"17.084527777777776","赤纬(J2000)":"+62h27m30s","赤纬D(J2000)":"62.458333333333336","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"6300","标识":"NGC6300","M标识":"NGC6300","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"17h16m59.7s","赤经D(J2000)":"17.28325","赤纬(J2000)":"-62h49m13s","赤纬D(J2000)":"-62.82027777777778","可见光星等V":"10.2","摄影(蓝光)星等B":"11","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"4.3","短轴(分)":"2.8","方位角":"118","详细描述":"faint, very large, very little extended, among stars, 2 stars involved","简略描述":"F, vL, vlE, am st, 2 st inv"},{"ID":"6301","标识":"NGC6301","M标识":"NGC6301","拓展名":"","组件":"","Class":"IV 57","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h8m32.7s","赤经D(J2000)":"17.142416666666666","赤纬(J2000)":"+42h20m21s","赤纬D(J2000)":"42.33916666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"115","详细描述":"faint, stellar","简略描述":"F, stellar"},{"ID":"6302","标识":"NGC6302","M标识":"NGC6302","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"小虫星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h13m44.1s","赤经D(J2000)":"17.228916666666667","赤纬(J2000)":"-37h6m12s","赤纬D(J2000)":"-37.10333333333333","可见光星等V":"9.6","摄影(蓝光)星等B":"12.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.48","短轴(分)":"","方位角":"","详细描述":"pretty bright, extended east-west (Swift: triple)","简略描述":"pB, E pf (Swift: triple)"},{"ID":"6303","标识":"NGC6303","M标识":"NGC6303","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h5m2.8s","赤经D(J2000)":"17.08411111111111","赤纬(J2000)":"+68h49m40s","赤纬D(J2000)":"68.82777777777777","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"60","详细描述":"extremely faint, pretty large, much extended, nearly between 2 stars","简略描述":"eF, pL, mE, nearly bet 2 st"},{"ID":"6304","标识":"NGC6304","M标识":"NGC6304","拓展名":"","组件":"","Class":"I 147","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VI","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h14m32.5s","赤经D(J2000)":"17.242361111111112","赤纬(J2000)":"-29h27m42s","赤纬D(J2000)":"-29.461666666666666","可见光星等V":"8.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, considerably large, round, a little brighter middle, well resolved, clearly consisting of stars, stars from 16th magnitude","简略描述":"globular, B, cL, R, lbM, rrr, st 16"},{"ID":"6305","标识":"NGC6305","M标识":"NGC6305","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"17h18m0.9s","赤经D(J2000)":"17.300250000000002","赤纬(J2000)":"-59h10m16s","赤纬D(J2000)":"-59.17111111111111","可见光星等V":"12.1","摄影(蓝光)星等B":"13.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"133","详细描述":"very faint, very small, round, gradually a little brighter middle","简略描述":"vF, vS, R, glbM"},{"ID":"6306","标识":"NGC6306","M标识":"NGC6306","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h7m36.9s","赤经D(J2000)":"17.126916666666666","赤纬(J2000)":"+60h43m45s","赤纬D(J2000)":"60.72916666666667","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1","短轴(分)":"0.3","方位角":"166","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"6307","标识":"NGC6307","M标识":"NGC6307","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h7m40.4s","赤经D(J2000)":"17.12788888888889","赤纬(J2000)":"+60h45m2s","赤纬D(J2000)":"60.75055555555556","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"1","方位角":"145","详细描述":"very faint, very small, a little extended, 13th magnitude star near to north","简略描述":"vF, vS, lE, * 13 nr n"},{"ID":"6308","标识":"NGC6308","M标识":"NGC6308","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h11m59.7s","赤经D(J2000)":"17.199916666666667","赤纬(J2000)":"+23h22m46s","赤纬D(J2000)":"23.379444444444445","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"1","方位角":"150","详细描述":"very faint, small, round, suddenly brighter middle","简略描述":"vF, S, R, sbM"},{"ID":"6309","标识":"NGC6309","M标识":"NGC6309","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"方盒星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h14m4.3s","赤经D(J2000)":"17.234527777777778","赤纬(J2000)":"-12h54m37s","赤纬D(J2000)":"-12.910277777777779","可见光星等V":"11.5","摄影(蓝光)星等B":"10.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.32","短轴(分)":"","方位角":"","详细描述":"bright, small, between 2 stars very near","简略描述":"B, S, bet 2 st v nr"},{"ID":"6310","标识":"NGC6310","M标识":"NGC6310","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h7m57.3s","赤经D(J2000)":"17.132583333333333","赤纬(J2000)":"+60h59m25s","赤纬D(J2000)":"60.99027777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"69","详细描述":"faint, pretty large, a little extended","简略描述":"F, pL, lE"},{"ID":"6311","标识":"NGC6311","M标识":"NGC6311","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h10m43.5s","赤经D(J2000)":"17.17875","赤纬(J2000)":"+41h39m4s","赤纬D(J2000)":"41.651111111111106","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"pretty bright, very small, round","简略描述":"pB, vS, R"},{"ID":"6312","标识":"NGC6312","M标识":"NGC6312","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h10m48.1s","赤经D(J2000)":"17.180027777777777","赤纬(J2000)":"+42h17m17s","赤纬D(J2000)":"42.28805555555555","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, irregularly round, diffuse, very small star involved","简略描述":"eF, irr R, dif, vS * inv"},{"ID":"6313","标识":"NGC6313","M标识":"NGC6313","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h10m20.7s","赤经D(J2000)":"17.172416666666667","赤纬(J2000)":"+48h19m54s","赤纬D(J2000)":"48.33166666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"156","详细描述":"most extremely faint, very small, a little extended, between 2 faint stars","简略描述":"eeF, vS, lE, bet 2 F st"},{"ID":"6314","标识":"NGC6314","M标识":"NGC6314","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h12m38.7s","赤经D(J2000)":"17.21075","赤纬(J2000)":"+23h16m14s","赤纬D(J2000)":"23.270555555555553","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"175","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"6315","标识":"NGC6315","M标识":"NGC6315","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h12m46s","赤经D(J2000)":"17.212777777777777","赤纬(J2000)":"+23h13m25s","赤纬D(J2000)":"23.223611111111108","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"36","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"6316","标识":"NGC6316","M标识":"NGC6316","拓展名":"","组件":"","Class":"I 45","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"III","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h16m37.4s","赤经D(J2000)":"17.277055555555556","赤纬(J2000)":"-28h8m22s","赤纬D(J2000)":"-28.139444444444443","可见光星等V":"8.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5.4","短轴(分)":"","方位角":"","详细描述":"a globular cluster, considerably bright, pretty small, round, gradually very much brighter middle, well resolved, clearly consisting of stars, stars from 16th magnitude","简略描述":"globular, cB, pS, R, gvmbM, rrr, st 16"},{"ID":"6317","标识":"NGC6317","M标识":"NGC6317","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h8m59.3s","赤经D(J2000)":"17.149805555555556","赤纬(J2000)":"+62h53m53s","赤纬D(J2000)":"62.89805555555556","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"51","详细描述":"most extremely faint, small, round, faint star near, southwestern of 2","简略描述":"eeF, S, R, F * nr, sp of 2"},{"ID":"6318","标识":"NGC6318","M标识":"NGC6318","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h16m13.4s","赤经D(J2000)":"17.27038888888889","赤纬(J2000)":"-39h25m26s","赤纬D(J2000)":"-39.42388888888889","可见光星等V":"11.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, rich, round, gradually brighter middle, stars from 12th to 14th magnitude","简略描述":"Cl, pL, Ri, R, gbM, st 12…14"},{"ID":"6319","标识":"NGC6319","M标识":"NGC6319","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h9m44.1s","赤经D(J2000)":"17.16225","赤纬(J2000)":"+62h58m23s","赤纬D(J2000)":"62.973055555555554","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, very small, round, a little brighter middle, northeastern of 2","简略描述":"vF, vS, R, lbM, nf of 2"},{"ID":"6320","标识":"NGC6320","M标识":"NGC6320","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h12m55.6s","赤经D(J2000)":"17.215444444444444","赤纬(J2000)":"+40h16m2s","赤纬D(J2000)":"40.26722222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"103","详细描述":"extremely faint, 13th magnitude star 0.5 seconds of time to west","简略描述":"eF, * 13 p 0s.5"},{"ID":"6321","标识":"NGC6321","M标识":"NGC6321","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h14m24.1s","赤经D(J2000)":"17.24002777777778","赤纬(J2000)":"+20h18m49s","赤纬D(J2000)":"20.31361111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"1","方位角":"63","详细描述":"extremely faint, irregularly round, pretty small, very little brighter middle","简略描述":"eF, iR, pS, vlbM"},{"ID":"6322","标识":"NGC6322","M标识":"NGC6322","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h18m25.7s","赤经D(J2000)":"17.30713888888889","赤纬(J2000)":"-42h56m2s","赤纬D(J2000)":"-42.93388888888889","可见光星等V":"6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, pretty rich, a little compressed (place is that of northeastern star)","简略描述":"Cl, vL, pRi, lC (place of * nf)"},{"ID":"6323","标识":"NGC6323","M标识":"NGC6323","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h13m17.9s","赤经D(J2000)":"17.221638888888886","赤纬(J2000)":"+43h46m56s","赤纬D(J2000)":"43.782222222222224","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"172","详细描述":"extremely faint, very small, difficult","简略描述":"eF, vS, diffic"},{"ID":"6324","标识":"NGC6324","M标识":"NGC6324","拓展名":"","组件":"","Class":"III 945","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"17h5m25.3s","赤经D(J2000)":"17.09036111111111","赤纬(J2000)":"+75h24m28s","赤纬D(J2000)":"75.40777777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1","短轴(分)":"0.6","方位角":"72","详细描述":"very faint, small, extended, small star to south","简略描述":"vF, S, E, S * s"},{"ID":"6325","标识":"NGC6325","M标识":"NGC6325","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"IV","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h17m59.2s","赤经D(J2000)":"17.29977777777778","赤纬(J2000)":"-23h45m55s","赤纬D(J2000)":"-23.76527777777778","可见光星等V":"10.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.1","短轴(分)":"","方位角":"","详细描述":"pretty faint, large, round, partially resolved (some stars seen)","简略描述":"pF, L, R, rr"},{"ID":"6326","标识":"NGC6326","M标识":"NGC6326","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"17h20m46.4s","赤经D(J2000)":"17.34622222222222","赤纬(J2000)":"-51h45m14s","赤纬D(J2000)":"-51.75388888888889","可见光星等V":"99","摄影(蓝光)星等B":"12.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.32","短轴(分)":"","方位角":"","详细描述":"a magnificent or otherwise interesting object, a planetary nebula, pretty bright, very small, round","简略描述":"!!! planetary, pB, vS, R"},{"ID":"6327","标识":"NGC6327","M标识":"NGC6327","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h14m2.2s","赤经D(J2000)":"17.233944444444447","赤纬(J2000)":"+43h38m56s","赤纬D(J2000)":"43.64888888888889","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, very small, difficult","简略描述":"eF, vS, diffic"},{"ID":"6328","标识":"NGC6328","M标识":"NGC6328","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"17h23m40.9s","赤经D(J2000)":"17.394694444444443","赤纬(J2000)":"-65h0m35s","赤纬D(J2000)":"-65.00972222222222","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.4","短轴(分)":"1.4","方位角":"157","详细描述":"very faint, very small, very little extended, gradually a little brighter middle","简略描述":"vF, vS, vlE, glbM"},{"ID":"6329","标识":"NGC6329","M标识":"NGC6329","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h14m15.1s","赤经D(J2000)":"17.23752777777778","赤纬(J2000)":"+43h41m6s","赤纬D(J2000)":"43.684999999999995","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.8","短轴(分)":"1.8","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"6330","标识":"NGC6330","M标识":"NGC6330","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h15m44.4s","赤经D(J2000)":"17.262333333333334","赤纬(J2000)":"+29h24m15s","赤纬D(J2000)":"29.404166666666665","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"160","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"6331","标识":"NGC6331","M标识":"NGC6331","拓展名":"","组件":"","Class":"III 951","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"17h3m34.3s","赤经D(J2000)":"17.059527777777777","赤纬(J2000)":"+78h37m47s","赤纬D(J2000)":"78.62972222222221","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"126","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"6332","标识":"NGC6332","M标识":"NGC6332","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h15m2.7s","赤经D(J2000)":"17.25075","赤纬(J2000)":"+43h39m37s","赤纬D(J2000)":"43.66027777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"45","详细描述":"very faint, oval, irregularly brighter middle","简略描述":"vF, oval, ibM"},{"ID":"6333","标识":"NGC6333","M标识":"M9","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VIII","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h19m11.8s","赤经D(J2000)":"17.319944444444445","赤纬(J2000)":"-18h30m57s","赤纬D(J2000)":"-18.515833333333333","可见光星等V":"7.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, large, round, extremely compressed middle, well resolved, clearly consisting of stars, stars from 14th magnitude","简略描述":"globular, B, L, R, eCM, rrr, st 14"},{"ID":"6334","标识":"NGC6334","M标识":"NGC6334","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"猫掌星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h20m48s","赤经D(J2000)":"17.346666666666664","赤纬(J2000)":"-36h6m12s","赤纬D(J2000)":"-36.10333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"35","短轴(分)":"20","方位角":"","详细描述":"considerably faint, very large, irregularly considerably extended, very gradually a little brighter on east, 8th magnitude star involved","简略描述":"cF, vL, icE, vglbf, * 8 inv"},{"ID":"6335","标识":"NGC6335","M标识":"NGC6335","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h19m31.8s","赤经D(J2000)":"17.325499999999998","赤纬(J2000)":"-30h9m49s","赤纬D(J2000)":"-30.16361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a diffuse nebula in patches","简略描述":"Dif neb in patches"},{"ID":"6336","标识":"NGC6336","M标识":"NGC6336","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h16m16.5s","赤经D(J2000)":"17.27125","赤纬(J2000)":"+43h49m15s","赤纬D(J2000)":"43.82083333333334","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"170","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"6337","标识":"NGC6337","M标识":"NGC6337","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"麦圈星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h22m15.7s","赤经D(J2000)":"17.37102777777778","赤纬(J2000)":"-38h28m59s","赤纬D(J2000)":"-38.48305555555556","可见光星等V":"12.3","摄影(蓝光)星等B":"11.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.85","短轴(分)":"","方位角":"","详细描述":"a magnificent or otherwise interesting object, an annular nebula, extremely faint, small, among stars","简略描述":"!!! annular, eF, S, am st"},{"ID":"6338","标识":"NGC6338","M标识":"NGC6338","拓展名":"","组件":"","Class":"II 812","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h15m22.6s","赤经D(J2000)":"17.25627777777778","赤纬(J2000)":"+57h24m41s","赤纬D(J2000)":"57.41138888888889","可见光星等V":"12.3","摄影(蓝光)星等B":"13.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.5","短轴(分)":"1","方位角":"15","详细描述":"faint, small, round, very gradually a little brighter middle","简略描述":"F, S, R, vglbM"},{"ID":"6339","标识":"NGC6339","M标识":"NGC6339","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h17m6.6s","赤经D(J2000)":"17.28516666666667","赤纬(J2000)":"+40h50m42s","赤纬D(J2000)":"40.845","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2.9","短轴(分)":"1.7","方位角":"10","详细描述":"very faint, large, irregularly round, southwestern of 2","简略描述":"vF, L, iR, sp of 2"},{"ID":"6340","标识":"NGC6340","M标识":"NGC6340","拓展名":"","组件":"","Class":"II 767","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h10m23.9s","赤经D(J2000)":"17.173305555555558","赤纬(J2000)":"+72h18m17s","赤纬D(J2000)":"72.30472222222222","可见光星等V":"11","摄影(蓝光)星等B":"11.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3","短轴(分)":"2.8","方位角":"120","详细描述":"considerably faint, pretty large, round, very gradually much brighter middle","简略描述":"cF, pL, R, vgmbM"},{"ID":"6341","标识":"NGC6341","M标识":"M92","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"IV","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h17m7.3s","赤经D(J2000)":"17.28536111111111","赤纬(J2000)":"+43h8m13s","赤纬D(J2000)":"43.136944444444445","可见光星等V":"6.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"14","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very bright, very large, extremely compressed middle, well resolved, clearly consisting of stars, stars small","简略描述":"globular, vB, vL, eCM, rrr, st S"},{"ID":"6342","标识":"NGC6342","M标识":"NGC6342","拓展名":"","组件":"","Class":"I 149","业余排名":"6","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"IV","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h21m10.2s","赤经D(J2000)":"17.352833333333336","赤纬(J2000)":"-19h35m12s","赤纬D(J2000)":"-19.586666666666666","可见光星等V":"9.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.4","短轴(分)":"","方位角":"","详细描述":"considerably bright, pretty small, a little extended, extremely mottled but not resolved","简略描述":"cB, pS, lE, er"},{"ID":"6343","标识":"NGC6343","M标识":"NGC6343","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h17m16.2s","赤经D(J2000)":"17.287833333333335","赤纬(J2000)":"+41h3m10s","赤纬D(J2000)":"41.05277777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"very faint, small, a little extended, northeastern of 2","简略描述":"vF, S, lE, nf of 2"},{"ID":"6344","标识":"NGC6344","M标识":"NGC6344","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h17m18.1s","赤经D(J2000)":"17.28836111111111","赤纬(J2000)":"+42h26m4s","赤纬D(J2000)":"42.43444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, 12th magnitude star to northeast, near","简略描述":"F, S, R, * 12 nf, nr"},{"ID":"6345","标识":"NGC6345","M标识":"NGC6345","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h15m23.9s","赤经D(J2000)":"17.25663888888889","赤纬(J2000)":"+57h21m2s","赤纬D(J2000)":"57.35055555555556","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"33","详细描述":"most extremely faint, very small, round, 2nd of 3","简略描述":"eeF, vS, R, 2nd of 3"},{"ID":"6346","标识":"NGC6346","M标识":"NGC6346","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h15m24.3s","赤经D(J2000)":"17.25675","赤纬(J2000)":"+57h19m23s","赤纬D(J2000)":"57.323055555555555","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"95","详细描述":"most extremely faint, small, round, 3rd of 3","简略描述":"eeF, S, R, 3rd of 3"},{"ID":"6347","标识":"NGC6347","M标识":"NGC6347","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h19m54.6s","赤经D(J2000)":"17.331833333333332","赤纬(J2000)":"+16h39m38s","赤纬D(J2000)":"16.660555555555554","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"100","详细描述":"extremely faint, irregularly round, diffuse","简略描述":"eF, iR, dif"},{"ID":"6348","标识":"NGC6348","M标识":"NGC6348","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h18m21.1s","赤经D(J2000)":"17.305861111111113","赤纬(J2000)":"+41h38m53s","赤纬D(J2000)":"41.64805555555556","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"125","详细描述":"extremely faint, very small, irregularly round, a little brighter middle","简略描述":"eF, vS, iR, lbM"},{"ID":"6349","标识":"NGC6349","M标识":"NGC6349","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h19m6.4s","赤经D(J2000)":"17.318444444444445","赤纬(J2000)":"+36h3m41s","赤纬D(J2000)":"36.061388888888885","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"81","详细描述":"very faint, extremely small, round, a little brighter middle, western of 2","简略描述":"vF, eS, R, lbM, p of 2"},{"ID":"6350","标识":"NGC6350","M标识":"NGC6350","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h18m42.2s","赤经D(J2000)":"17.311722222222222","赤纬(J2000)":"+41h41m40s","赤纬D(J2000)":"41.69444444444444","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"pretty faint, pretty small, gradually brighter middle","简略描述":"pF, pS, gbM"},{"ID":"6351","标识":"NGC6351","M标识":"NGC6351","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P?","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h19m10.9s","赤经D(J2000)":"17.319694444444444","赤纬(J2000)":"+36h3m36s","赤纬D(J2000)":"36.059999999999995","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"80","详细描述":"very faint, very small, fainter than preceding (western) one","简略描述":"vF, vS, fainter than p one"},{"ID":"6352","标识":"NGC6352","M标识":"NGC6352","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"XI","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"17h25m29.2s","赤经D(J2000)":"17.42477777777778","赤纬(J2000)":"-48h25m20s","赤纬D(J2000)":"-48.42222222222222","可见光星等V":"7.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"","方位角":"","详细描述":"pretty faint, large","简略描述":"pF, L"},{"ID":"6353","标识":"NGC6353","M标识":"NGC6353","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h21m12.4s","赤经D(J2000)":"17.353444444444445","赤纬(J2000)":"+15h41m18s","赤纬D(J2000)":"15.688333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty small, 3 small stars involved, 10th magnitude star 1 arcmin to northeast","简略描述":"pB, pS, 3 S st inv, * 10 nf 1'"},{"ID":"6354","标识":"NGC6354","M标识":"NGC6354","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h24m34s","赤经D(J2000)":"17.409444444444443","赤纬(J2000)":"-38h32m30s","赤纬D(J2000)":"-38.541666666666664","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"6355","标识":"NGC6355","M标识":"NGC6355","拓展名":"","组件":"","Class":"I 46","业余排名":"6","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h23m58.6s","赤经D(J2000)":"17.39961111111111","赤纬(J2000)":"-26h21m11s","赤纬D(J2000)":"-26.353055555555557","可见光星等V":"8.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.2","短轴(分)":"","方位角":"","详细描述":"considerably faint, large, round, gradually brighter middle, well resolved, clearly consisting of stars","简略描述":"cF, L, R, gbM, rrr"},{"ID":"6356","标识":"NGC6356","M标识":"NGC6356","拓展名":"","组件":"","Class":"I 48","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"II","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h23m35s","赤经D(J2000)":"17.393055555555556","赤纬(J2000)":"-17h48m45s","赤纬D(J2000)":"-17.8125","可见光星等V":"8.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"globular cluster, very bright, considerably large, very gradually very much brighter middle, well resolved, clearly consisting of stars, stars from 20th magnitude downwards","简略描述":"globular, vB, cL, vgvmbM, rrr, st 20"},{"ID":"6357","标识":"NGC6357","M标识":"NGC6357","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"龙虾星云","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h24m43.5s","赤经D(J2000)":"17.41208333333333","赤纬(J2000)":"-34h12m5s","赤纬D(J2000)":"-34.20138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"25","方位角":"","详细描述":"faint, large, extended, very gradually a little brighter middle, double star involved","简略描述":"F, L, E, vglbM, D * inv"},{"ID":"6358","标识":"NGC6358","M标识":"NGC6358","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h18m52.8s","赤经D(J2000)":"17.314666666666668","赤纬(J2000)":"+52h36m57s","赤纬D(J2000)":"52.615833333333335","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"110","详细描述":"extremely faint, small, round, double star near to northwest","简略描述":"eF, S, R, D * nr np"},{"ID":"6359","标识":"NGC6359","M标识":"NGC6359","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h17m53s","赤经D(J2000)":"17.298055555555557","赤纬(J2000)":"+61h46m51s","赤纬D(J2000)":"61.780833333333334","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"145","详细描述":"pretty bright, small, round, bright middle and nucleus equal to 12th magnitude star","简略描述":"pB, S, R, bMN = * 12"},{"ID":"6360","标识":"NGC6360","M标识":"NGC6360","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h24m26.5s","赤经D(J2000)":"17.40736111111111","赤纬(J2000)":"-29h51m46s","赤纬D(J2000)":"-29.86277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebula in patches (in the Milky Way)","简略描述":"Neb in patches (Milky Way)"},{"ID":"6361","标识":"NGC6361","M标识":"NGC6361","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h18m40.9s","赤经D(J2000)":"17.31136111111111","赤纬(J2000)":"+60h36m29s","赤纬D(J2000)":"60.60805555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"0.6","方位角":"54","详细描述":"very faint, pretty small, much extended, nearly between 2 stars","简略描述":"vF, pS, mE, nearly bet 2 st"},{"ID":"6362","标识":"NGC6362","M标识":"NGC6362","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"X","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"17h31m54.8s","赤经D(J2000)":"17.531888888888886","赤纬(J2000)":"-67h2m51s","赤纬D(J2000)":"-67.0475","可见光星等V":"8.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"globular cluster, considerably bright, large, very gradually much brighter middle, well resolved, clearly consisting of stars, stars from 14th to 17th magnitude","简略描述":"globular, cB, L, vgmbM, rrr, st 14…17"},{"ID":"6363","标识":"NGC6363","M标识":"NGC6363","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h22m39.9s","赤经D(J2000)":"17.37775","赤纬(J2000)":"+41h6m8s","赤纬D(J2000)":"41.102222222222224","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"14","详细描述":"very faint, small, round, gradually brighter middle","简略描述":"vF, S, R, gbM"},{"ID":"6364","标识":"NGC6364","M标识":"NGC6364","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h24m27.3s","赤经D(J2000)":"17.40758333333333","赤纬(J2000)":"+29h23m28s","赤纬D(J2000)":"29.391111111111112","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"5","详细描述":"pretty faint, very small, round, brighter middle equivalent to 13th magnitude star","简略描述":"pF, vS, R, bM * 13"},{"ID":"6365","标识":"NGC6365","M标识":"NGC6365","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h22m43.5s","赤经D(J2000)":"17.37875","赤纬(J2000)":"+62h10m24s","赤纬D(J2000)":"62.17333333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"14.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"31","详细描述":"most extremely faint, pretty large, irregularly round, extremely faint star involved, star to southeast","简略描述":"eeF, pL, iR, eF st inv, * sf"},{"ID":"6366","标识":"NGC6366","M标识":"NGC6366","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"XI","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h27m44.3s","赤经D(J2000)":"17.462305555555556","赤纬(J2000)":"-5h4m34s","赤纬D(J2000)":"-5.076111111111111","可见光星等V":"9.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"13","短轴(分)":"","方位角":"","详细描述":"faint, large, very little brighter middle (= Auwers 36)","简略描述":"F, L, vlbM (Auw 36)"},{"ID":"6367","标识":"NGC6367","M标识":"NGC6367","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h25m8.9s","赤经D(J2000)":"17.41913888888889","赤纬(J2000)":"+37h45m37s","赤纬D(J2000)":"37.76027777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"156","详细描述":"very faint star in very faint, very small, round nebula","简略描述":"vF * in vF, vS, R neb"},{"ID":"6368","标识":"NGC6368","M标识":"NGC6368","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h27m11.4s","赤经D(J2000)":"17.453166666666664","赤纬(J2000)":"+11h32m35s","赤纬D(J2000)":"11.543055555555556","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.5","短轴(分)":"0.6","方位角":"42","详细描述":"faint, small, extended","简略描述":"F, S, E"},{"ID":"6369","标识":"NGC6369","M标识":"NGC6369","拓展名":"","组件":"","Class":"IV 11","业余排名":"5","中文名":"小鬼魂星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h29m20.4s","赤经D(J2000)":"17.489","赤纬(J2000)":"-23h45m33s","赤纬D(J2000)":"-23.759166666666665","可见光星等V":"11.4","摄影(蓝光)星等B":"12.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.63","短轴(分)":"","方位角":"","详细描述":"very remarkable, an annular nebula, pretty bright, small, round","简略描述":"!! annular, pB, S, R"},{"ID":"6370","标识":"NGC6370","M标识":"NGC6370","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h23m25.1s","赤经D(J2000)":"17.390305555555557","赤纬(J2000)":"+56h58m30s","赤纬D(J2000)":"56.975","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"very faint, very small, round, bright star near to north","简略描述":"vF, vS, R, B * nr n"},{"ID":"6371","标识":"NGC6371","M标识":"NGC6371","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h27m20.6s","赤经D(J2000)":"17.45572222222222","赤纬(J2000)":"+26h30m18s","赤纬D(J2000)":"26.505","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"165","详细描述":"very faint, small, round, northwestern of 2","简略描述":"vF, S, R, np of 2"},{"ID":"6372","标识":"NGC6372","M标识":"NGC6372","拓展名":"","组件":"","Class":"III 137","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h27m31.9s","赤经D(J2000)":"17.458861111111112","赤纬(J2000)":"+26h28m29s","赤纬D(J2000)":"26.47472222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"90","详细描述":"very faint, pretty small, irregular figure, southeastern of 2","简略描述":"vF, pS, iF, sf of 2"},{"ID":"6373","标识":"NGC6373","M标识":"NGC6373","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h24m8s","赤经D(J2000)":"17.40222222222222","赤纬(J2000)":"+58h59m43s","赤纬D(J2000)":"58.99527777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"1","方位角":"90","详细描述":"most extremely faint, pretty large, very difficult","简略描述":"eeF, pL, v diffic"},{"ID":"6374","标识":"NGC6374","M标识":"NGC6374","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"IV3p","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h34m42.2s","赤经D(J2000)":"17.578388888888888","赤纬(J2000)":"-32h34m54s","赤纬D(J2000)":"-32.58166666666667","可见光星等V":"5.5","摄影(蓝光)星等B":"5.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"cluster, small, poor, bright star involved","简略描述":"Cl, S, P, B * inv"},{"ID":"6375","标识":"NGC6375","M标识":"NGC6375","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h29m21.8s","赤经D(J2000)":"17.48938888888889","赤纬(J2000)":"+16h12m26s","赤纬D(J2000)":"16.20722222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"14.9","长轴(分)":"1.6","短轴(分)":"1.6","方位角":"","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"6376","标识":"NGC6376","M标识":"NGC6376","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h25m19.2s","赤经D(J2000)":"17.422","赤纬(J2000)":"+58h49m2s","赤纬D(J2000)":"58.81722222222223","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"142","详细描述":"most extremely faint, extremely small, round, very difficult","简略描述":"eeF, eS, R, v diffic"},{"ID":"6377","标识":"NGC6377","M标识":"NGC6377","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h25m23s","赤经D(J2000)":"17.423055555555557","赤纬(J2000)":"+58h49m22s","赤纬D(J2000)":"58.82277777777778","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"58","详细描述":"extremely faint, extremely small, round, a little brighter middle","简略描述":"eF, eS, R, lbM"},{"ID":"6378","标识":"NGC6378","M标识":"NGC6378","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h30m41.8s","赤经D(J2000)":"17.51161111111111","赤纬(J2000)":"+6h16m53s","赤纬D(J2000)":"6.2813888888888885","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"5","详细描述":"very difficult","简略描述":"v difficult"},{"ID":"6379","标识":"NGC6379","M标识":"NGC6379","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h30m35s","赤经D(J2000)":"17.509722222222223","赤纬(J2000)":"+16h17m19s","赤纬D(J2000)":"16.288611111111113","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"1","方位角":"33","详细描述":"very faint, pretty large","简略描述":"vF, pL"},{"ID":"6380","标识":"NGC6380","M标识":"NGC6380","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"托南钦特拉1球状星团","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h34m28s","赤经D(J2000)":"17.574444444444445","赤纬(J2000)":"-39h4m7s","赤纬D(J2000)":"-39.06861111111112","可见光星等V":"11.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.6","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty small, a little extended, 9th magnitude star attached","简略描述":"eF, pS, lE, * 9 att"},{"ID":"6381","标识":"NGC6381","M标识":"NGC6381","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h27m16.9s","赤经D(J2000)":"17.454694444444442","赤纬(J2000)":"+60h0m50s","赤纬D(J2000)":"60.013888888888886","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"1","方位角":"25","详细描述":"very faint, pretty large, extended","简略描述":"vF, pL, E"},{"ID":"6382","标识":"NGC6382","M标识":"NGC6382","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h27m55.2s","赤经D(J2000)":"17.465333333333334","赤纬(J2000)":"+56h52m8s","赤纬D(J2000)":"56.86888888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"105","详细描述":"pretty faint, pretty small, round","简略描述":"pF, pS, R"},{"ID":"6383","标识":"NGC6383","M标识":"NGC6383","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV3p","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h34m42.2s","赤经D(J2000)":"17.578388888888888","赤纬(J2000)":"-32h34m54s","赤纬D(J2000)":"-32.58166666666667","可见光星等V":"5.5","摄影(蓝光)星等B":"5.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"cluster, small, poor, bright star involved","简略描述":"Cl, st 13, * 6·7 in M"},{"ID":"6384","标识":"NGC6384","M标识":"NGC6384","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h32m24.2s","赤经D(J2000)":"17.540055555555558","赤纬(J2000)":"+7h3m39s","赤纬D(J2000)":"7.060833333333333","可见光星等V":"10.4","摄影(蓝光)星等B":"11.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"6.2","短轴(分)":"4.1","方位角":"30","详细描述":"pretty bright, small, very little extended","简略描述":"pB, S, vlE"},{"ID":"6385","标识":"NGC6385","M标识":"NGC6385","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h28m1.5s","赤经D(J2000)":"17.46708333333333","赤纬(J2000)":"+57h31m19s","赤纬D(J2000)":"57.52194444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"extremely faint, small, round, bright star to south","简略描述":"eF, S, R, B * s"},{"ID":"6386","标识":"NGC6386","M标识":"NGC6386","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h28m51.7s","赤经D(J2000)":"17.481027777777776","赤纬(J2000)":"+52h43m26s","赤纬D(J2000)":"52.723888888888894","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"very faint, pretty small, round, between 2 stars","简略描述":"vF, pS, R, bet 2 st"},{"ID":"6387","标识":"NGC6387","M标识":"NGC6387","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h28m23.9s","赤经D(J2000)":"17.473305555555555","赤纬(J2000)":"+57h32m45s","赤纬D(J2000)":"57.545833333333334","可见光星等V":"15.7","摄影(蓝光)星等B":"16.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"95","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"6388","标识":"NGC6388","M标识":"NGC6388","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"III","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h36m17s","赤经D(J2000)":"17.604722222222225","赤纬(J2000)":"-44h44m4s","赤纬D(J2000)":"-44.73444444444444","可见光星等V":"6.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10.4","短轴(分)":"","方位角":"","详细描述":"globular cluster, very bright, large, round, pretty gradually, then pretty suddenly very much brighter middle, well resolved, clearly consisting of stars, stars from 17th magnitude","简略描述":"globular, vB, L, R, pg, psvmbM, rrr, st 17…"},{"ID":"6389","标识":"NGC6389","M标识":"NGC6389","拓展名":"","组件":"","Class":"II 901","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h32m39.7s","赤经D(J2000)":"17.54436111111111","赤纬(J2000)":"+16h24m7s","赤纬D(J2000)":"16.401944444444442","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.8","短轴(分)":"1.9","方位角":"130","详细描述":"faint, small, irregular figure, extremely mottled but not resolved","简略描述":"F, S, iF, er"},{"ID":"6390","标识":"NGC6390","M标识":"NGC6390","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h28m28.1s","赤经D(J2000)":"17.47447222222222","赤纬(J2000)":"+60h5m40s","赤纬D(J2000)":"60.09444444444445","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"8","详细描述":"most extremely faint, much extended, very difficult","简略描述":"eeF, mE, v diffic"},{"ID":"6391","标识":"NGC6391","M标识":"NGC6391","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h28m49s","赤经D(J2000)":"17.480277777777776","赤纬(J2000)":"+58h51m3s","赤纬D(J2000)":"58.850833333333334","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"90","详细描述":"extremely faint, very small, round, nearly between 2 stars","简略描述":"eF, vS, R, nearly bet 2 st"},{"ID":"6392","标识":"NGC6392","M标识":"NGC6392","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"17h43m30.6s","赤经D(J2000)":"17.725166666666667","赤纬(J2000)":"-69h47m4s","赤纬D(J2000)":"-69.78444444444445","可见光星等V":"11.6","摄影(蓝光)星等B":"12.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"considerably faint, small, round, gradually a little brighter middle, 13th magnitude star to southwest","简略描述":"cF, S, R, glbM, * 13 sp"},{"ID":"6393","标识":"NGC6393","M标识":"NGC6393","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h30m8.5s","赤经D(J2000)":"17.50236111111111","赤纬(J2000)":"+59h31m55s","赤纬D(J2000)":"59.53194444444444","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, pretty small, round, southern of 2","简略描述":"eF, pS, R, s of 2"},{"ID":"6394","标识":"NGC6394","M标识":"NGC6394","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h30m21.3s","赤经D(J2000)":"17.505916666666668","赤纬(J2000)":"+59h38m24s","赤纬D(J2000)":"59.64","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"42","详细描述":"extremely faint, pretty small, round, northern of 2","简略描述":"eF, pS, R, n of 2"},{"ID":"6395","标识":"NGC6395","M标识":"NGC6395","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h26m31s","赤经D(J2000)":"17.441944444444445","赤纬(J2000)":"+71h5m50s","赤纬D(J2000)":"71.09722222222221","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.4","短轴(分)":"0.7","方位角":"15","详细描述":"very faint, pretty large, a little extended, double star to north","简略描述":"vF, pL, lE, D * n"},{"ID":"6396","标识":"NGC6396","M标识":"NGC6396","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3p","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h37m36.2s","赤经D(J2000)":"17.626722222222224","赤纬(J2000)":"-35h1m33s","赤纬D(J2000)":"-35.02583333333333","可见光星等V":"8.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"cluster, pretty large, a little rich, a little compressed","简略描述":"Cl, pL, lRi, lC"},{"ID":"6397","标识":"NGC6397","M标识":"NGC6397","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"IX","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"17h40m41.3s","赤经D(J2000)":"17.67813888888889","赤纬(J2000)":"-53h40m23s","赤纬D(J2000)":"-53.67305555555555","可见光星等V":"5.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"31","短轴(分)":"","方位角":"","详细描述":"globular cluster, bright, very large, rich, stars from 13th magnitude","简略描述":"globular, B, vL, Ri, st 13"},{"ID":"6398","标识":"NGC6398","M标识":"NGC6398","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"17h42m43.9s","赤经D(J2000)":"17.712194444444442","赤纬(J2000)":"-61h41m38s","赤纬D(J2000)":"-61.693888888888885","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2","短轴(分)":"1.7","方位角":"6","详细描述":"extremely faint, small, round, preceding of 2","简略描述":"eF, S, R, p of 2"},{"ID":"6399","标识":"NGC6399","M标识":"NGC6399","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h31m50.4s","赤经D(J2000)":"17.530666666666665","赤纬(J2000)":"+59h36m56s","赤纬D(J2000)":"59.61555555555556","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"5","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"6400","标识":"NGC6400","M标识":"NGC6400","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"幻影星团","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h40m12s","赤经D(J2000)":"17.67","赤纬(J2000)":"-36h57m42s","赤纬D(J2000)":"-36.961666666666666","可见光星等V":"8.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, irregularly round, stars from 9th to 10th magnitude","简略描述":"Cl, pL, pRi, iR, st 9…10"},{"ID":"6401","标识":"NGC6401","M标识":"NGC6401","拓展名":"","组件":"","Class":"I 44","业余排名":"6","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VIII","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h38m36.9s","赤经D(J2000)":"17.643583333333332","赤纬(J2000)":"-23h54m30s","赤纬D(J2000)":"-23.90833333333333","可见光星等V":"7.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.8","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, round, 12th magnitude star involved on east","简略描述":"pB, pL, R, * 12 f inv"},{"ID":"6402","标识":"NGC6402","M标识":"M14","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VIII","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h37m36.1s","赤经D(J2000)":"17.626694444444446","赤纬(J2000)":"-3h14m43s","赤纬D(J2000)":"-3.245277777777778","可见光星等V":"7.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"11","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a globular cluster, bright, very large, round, extremely rich, very gradually much brighter middle, well resolved, clearly consisting of stars, stars from 15th magnitude","简略描述":"! globular, B, vL, R, eRi, vgmbM, rrr, st 15"},{"ID":"6403","标识":"NGC6403","M标识":"NGC6403","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"17h43m23.6s","赤经D(J2000)":"17.72322222222222","赤纬(J2000)":"-61h40m55s","赤纬D(J2000)":"-61.68194444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"most extremely faint, eastern of 2","简略描述":"eeF, f of 2"},{"ID":"6404","标识":"NGC6404","M标识":"NGC6404","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III3m","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h39m37.3s","赤经D(J2000)":"17.66036111111111","赤纬(J2000)":"-33h14m48s","赤纬D(J2000)":"-33.24666666666667","可见光星等V":"10.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, faint, large, pretty rich, a little compressed, stars from 13th to 15th magnitude","简略描述":"Cl, F, L, pRi, lC, st 13…15"},{"ID":"6405","标识":"NGC6405","M标识":"M6","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"蝴蝶星团","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h40m20s","赤经D(J2000)":"17.672222222222224","赤纬(J2000)":"-32h15m30s","赤纬D(J2000)":"-32.25833333333333","可见光星等V":"4.2","摄影(蓝光)星等B":"4.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"33","短轴(分)":"","方位角":"","详细描述":"a cluster, large, irregularly round, a little compressed, stars of 7th magnitude and from 10th magnitude","简略描述":"Cl, L, iR, lC, st 7, 10…"},{"ID":"6406","标识":"NGC6406","M标识":"NGC6406","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h38m19.2s","赤经D(J2000)":"17.638666666666666","赤纬(J2000)":"+18h49m58s","赤纬D(J2000)":"18.83277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, stellar","简略描述":"vF, eS, stellar"},{"ID":"6407","标识":"NGC6407","M标识":"NGC6407","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"17h44m57.8s","赤经D(J2000)":"17.74938888888889","赤纬(J2000)":"-60h44m23s","赤纬D(J2000)":"-60.73972222222222","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.1","短轴(分)":"1.6","方位角":"60","详细描述":"extremely faint, small, round, 3 stars near","简略描述":"eF, S, R, 3 st nr"},{"ID":"6408","标识":"NGC6408","M标识":"NGC6408","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h38m47.3s","赤经D(J2000)":"17.646472222222222","赤纬(J2000)":"+18h52m42s","赤纬D(J2000)":"18.878333333333334","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"132","详细描述":"faint, small, irregularly round, gradually brighter middle","简略描述":"F, S, iR, gbM"},{"ID":"6409","标识":"NGC6409","M标识":"NGC6409","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h36m35.3s","赤经D(J2000)":"17.609805555555557","赤纬(J2000)":"+50h45m59s","赤纬D(J2000)":"50.76638888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"60","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"6410","标识":"NGC6410","M标识":"NGC6410","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h35m20.5s","赤经D(J2000)":"17.589027777777776","赤纬(J2000)":"+60h47m32s","赤纬D(J2000)":"60.79222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, round, nearly between 2 stars, southwestern of 2","简略描述":"eeF, S, R, nearly bet 2 st, sp of 2"},{"ID":"6411","标识":"NGC6411","M标识":"NGC6411","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h35m32.6s","赤经D(J2000)":"17.592388888888888","赤纬(J2000)":"+60h48m47s","赤纬D(J2000)":"60.81305555555555","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"1.3","方位角":"70","详细描述":"very small, gradually brighter middle","简略描述":"vS, gbM"},{"ID":"6412","标识":"NGC6412","M标识":"NGC6412","拓展名":"","组件":"","Class":"VI 41","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h29m36.9s","赤经D(J2000)":"17.493583333333333","赤纬(J2000)":"+75h42m17s","赤纬D(J2000)":"75.70472222222223","可见光星等V":"11.8","摄影(蓝光)星等B":"12.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.5","短轴(分)":"2.4","方位角":"120","详细描述":"a globular cluster, considerably large, round, very gradually brighter middle, partially resolved (some stars seen)","简略描述":"globular, cL, R, vgbM, rr"},{"ID":"6413","标识":"NGC6413","M标识":"NGC6413","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h40m40.7s","赤经D(J2000)":"17.677972222222223","赤纬(J2000)":"+12h37m26s","赤纬D(J2000)":"12.623888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, suddenly much brighter middle","简略描述":"vF, vS, smbM"},{"ID":"6414","标识":"NGC6414","M标识":"NGC6414","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h30m36.7s","赤经D(J2000)":"17.510194444444444","赤纬(J2000)":"+74h22m36s","赤纬D(J2000)":"74.37666666666667","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"0.5","方位角":"145","详细描述":"most extremely faint, pretty small, round, very difficult, between 2 stars","简略描述":"eeF, pS, R, v diffic, bet 2 st"},{"ID":"6415","标识":"NGC6415","M标识":"NGC6415","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h44m18s","赤经D(J2000)":"17.738333333333333","赤纬(J2000)":"-35h4m0s","赤纬D(J2000)":"-35.06666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"23","短轴(分)":"","方位角":"","详细描述":"nebulous portion of the Milky Way","简略描述":"Nebs portion of Milky Way"},{"ID":"6416","标识":"NGC6416","M标识":"NGC6416","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV1p","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h44m19.9s","赤经D(J2000)":"17.738861111111113","赤纬(J2000)":"-32h21m40s","赤纬D(J2000)":"-32.361111111111114","可见光星等V":"5.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, rich, a little compressed","简略描述":"Cl, vL, Ri, lC"},{"ID":"6417","标识":"NGC6417","M标识":"NGC6417","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h41m47.8s","赤经D(J2000)":"17.69661111111111","赤纬(J2000)":"+23h40m18s","赤纬D(J2000)":"23.671666666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"45","详细描述":"pretty faint, small, very little brighter middle","简略描述":"pF, S, vlbM"},{"ID":"6418","标识":"NGC6418","M标识":"NGC6418","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h38m9.4s","赤经D(J2000)":"17.635944444444444","赤纬(J2000)":"+58h42m55s","赤纬D(J2000)":"58.71527777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"168","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"6419","标识":"NGC6419","M标识":"NGC6419","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h36m5.6s","赤经D(J2000)":"17.601555555555557","赤纬(J2000)":"+68h9m21s","赤纬D(J2000)":"68.15583333333333","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"131","详细描述":"most extremely faint, extremely small, round, very difficult","简略描述":"eeF, eS, R, v diffic"},{"ID":"6420","标识":"NGC6420","M标识":"NGC6420","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h36m16.2s","赤经D(J2000)":"17.6045","赤纬(J2000)":"+68h3m9s","赤纬D(J2000)":"68.0525","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"54","详细描述":"most extremely faint, extremely small, round, very difficult","简略描述":"eeF, eS, R, v diffic"},{"ID":"6421","标识":"NGC6421","M标识":"NGC6421","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h45m44s","赤经D(J2000)":"17.76222222222222","赤纬(J2000)":"-33h41m14s","赤纬D(J2000)":"-33.68722222222222","可见光星等V":"99","摄影(蓝光)星等B":"14","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"45","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, pretty rich, stars from 8th to 12th magnitude","简略描述":"Cl, vL, pRi, st 8…12"},{"ID":"6422","标识":"NGC6422","M标识":"NGC6422","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h36m29.8s","赤经D(J2000)":"17.60827777777778","赤纬(J2000)":"+68h3m30s","赤纬D(J2000)":"68.05833333333334","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, pretty small, round, nearly between 2 stars","简略描述":"eF, pS, R, nearly bet 2 st"},{"ID":"6423","标识":"NGC6423","M标识":"NGC6423","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h36m53.2s","赤经D(J2000)":"17.61477777777778","赤纬(J2000)":"+68h10m16s","赤纬D(J2000)":"68.17111111111112","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"165","详细描述":"most extremely faint, very small, round, star close to east","简略描述":"eeF, vS, R, * close f"},{"ID":"6424","标识":"NGC6424","M标识":"NGC6424","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h36m12s","赤经D(J2000)":"17.603333333333335","赤纬(J2000)":"+69h59m22s","赤纬D(J2000)":"69.98944444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"81","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"6425","标识":"NGC6425","M标识":"NGC6425","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I1p","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h47m0s","赤经D(J2000)":"17.783333333333335","赤纬(J2000)":"-31h31m48s","赤纬D(J2000)":"-31.529999999999998","可见光星等V":"7.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty small, a little rich, a little compressed, stars from 10th to 12th magnitude","简略描述":"Cl, pS, lRi, lC, st 10…12"},{"ID":"6426","标识":"NGC6426","M标识":"NGC6426","拓展名":"","组件":"","Class":"II 587","业余排名":"6","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"IX","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h44m54.7s","赤经D(J2000)":"17.748527777777777","赤纬(J2000)":"+3h10m15s","赤纬D(J2000)":"3.1708333333333334","可见光星等V":"10.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.2","短轴(分)":"","方位角":"","详细描述":"very faint, considerably large, extended, very little brighter middle","简略描述":"vF, cL, E, vlbM"},{"ID":"6427","标识":"NGC6427","M标识":"NGC6427","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h43m38.5s","赤经D(J2000)":"17.727361111111108","赤纬(J2000)":"+25h29m38s","赤纬D(J2000)":"25.49388888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"36","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"6428","标识":"NGC6428","M标识":"NGC6428","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h43m52.4s","赤经D(J2000)":"17.73122222222222","赤纬(J2000)":"+25h33m18s","赤纬D(J2000)":"25.555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, stellar","简略描述":"vF, S, stellar"},{"ID":"6429","标识":"NGC6429","M标识":"NGC6429","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h44m5.3s","赤经D(J2000)":"17.734805555555557","赤纬(J2000)":"+25h21m3s","赤纬D(J2000)":"25.350833333333334","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"23","详细描述":"faint, small, stellar","简略描述":"F, S, stellar"},{"ID":"6430","标识":"NGC6430","M标识":"NGC6430","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h45m14.2s","赤经D(J2000)":"17.753944444444443","赤纬(J2000)":"+18h8m20s","赤纬D(J2000)":"18.13888888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"0.6","方位角":"97","详细描述":"very faint, small, much extended","简略描述":"vF, S, mE"},{"ID":"6431","标识":"NGC6431","M标识":"NGC6431","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h43m38.5s","赤经D(J2000)":"17.727361111111108","赤纬(J2000)":"+25h29m38s","赤纬D(J2000)":"25.49388888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"36","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, R"},{"ID":"6432","标识":"NGC6432","M标识":"NGC6432","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"17h47m22.4s","赤经D(J2000)":"17.78955555555556","赤纬(J2000)":"-24h53m16s","赤纬D(J2000)":"-24.887777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, stars very small","简略描述":"Cl, st vS"},{"ID":"6433","标识":"NGC6433","M标识":"NGC6433","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h43m56.2s","赤经D(J2000)":"17.732277777777774","赤纬(J2000)":"+36h48m2s","赤纬D(J2000)":"36.800555555555555","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2","短轴(分)":"0.5","方位角":"163","详细描述":"very faint, small, pretty much extended, brighter middle","简略描述":"vF, S, pmE, bM"},{"ID":"6434","标识":"NGC6434","M标识":"NGC6434","拓展名":"","组件":"","Class":"III 741","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h36m48.8s","赤经D(J2000)":"17.613555555555557","赤纬(J2000)":"+72h5m18s","赤纬D(J2000)":"72.08833333333332","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.3","短轴(分)":"1","方位角":"100","详细描述":"very faint, very small, round, stellar, 8th magnitude star to south","简略描述":"vF, vS, R, stellar, * 8 s"},{"ID":"6435","标识":"NGC6435","M标识":"NGC6435","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h40m11.1s","赤经D(J2000)":"17.66975","赤纬(J2000)":"+62h38m31s","赤纬D(J2000)":"62.64194444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"5","详细描述":"most extremely faint, very small, round, very faint double star near to east","简略描述":"eeF, vS, R, vF D * nr f"},{"ID":"6436","标识":"NGC6436","M标识":"NGC6436","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h41m13.2s","赤经D(J2000)":"17.687","赤纬(J2000)":"+60h26m59s","赤纬D(J2000)":"60.44972222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"177","详细描述":"most extremely faint, pretty small, a little extended, triple star near","简略描述":"eeF, pS, lE, *** nr"},{"ID":"6437","标识":"NGC6437","M标识":"NGC6437","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h48m24s","赤经D(J2000)":"17.80666666666667","赤纬(J2000)":"-35h21m0s","赤纬D(J2000)":"-35.35","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"40","短轴(分)":"","方位角":"","详细描述":"a cluster, faint, extremely large, very small stars and nebula","简略描述":"Cl, F, eL, vS st + neb"},{"ID":"6438","标识":"NGC6438","M标识":"NGC6438","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"南极座","星座(En)":"OCT","赤经(J2000)":"18h22m15.9s","赤经D(J2000)":"18.371083333333335","赤纬(J2000)":"-85h24m6s","赤纬D(J2000)":"-85.40166666666667","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"156","详细描述":"pretty bright, round, very gradually brighter middle","简略描述":"pB, R, vgbM"},{"ID":"6439","标识":"NGC6439","M标识":"NGC6439","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"17h48m19.8s","赤经D(J2000)":"17.805500000000002","赤纬(J2000)":"-16h28m44s","赤纬D(J2000)":"-16.478888888888886","可见光星等V":"12.6","摄影(蓝光)星等B":"13.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.23","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, stellar object equivalent to 13th magnitude star","简略描述":"planetary, stellar = 13 m"},{"ID":"6440","标识":"NGC6440","M标识":"NGC6440","拓展名":"","组件":"","Class":"I 150","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"V","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"17h48m52.6s","赤经D(J2000)":"17.814611111111113","赤纬(J2000)":"-20h21m32s","赤纬D(J2000)":"-20.35888888888889","可见光星等V":"9.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.4","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, round, brighter middle","简略描述":"pB, pL, R, bM"},{"ID":"6441","标识":"NGC6441","M标识":"NGC6441","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"银块星团","类型":"GCL","含重复类型":"GCL","形态":"III","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h50m12.9s","赤经D(J2000)":"17.836916666666667","赤纬(J2000)":"-37h3m2s","赤纬D(J2000)":"-37.050555555555555","可见光星等V":"7.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9.6","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very bright, pretty large, round, very gradually much brighter middle, well resolved, clearly consisting of stars, stars from 18th magnitude","简略描述":"globular, vB, pL, R, vgmbM, rrr, st 18"},{"ID":"6442","标识":"NGC6442","M标识":"NGC6442","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h46m51.3s","赤经D(J2000)":"17.780916666666666","赤纬(J2000)":"+20h45m42s","赤纬D(J2000)":"20.761666666666667","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"120","详细描述":"pretty faint, small, irregularly round, gradually brighter middle","简略描述":"pF, S, iR, gbM"},{"ID":"6443","标识":"NGC6443","M标识":"NGC6443","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h44m33.7s","赤经D(J2000)":"17.742694444444446","赤纬(J2000)":"+48h6m52s","赤纬D(J2000)":"48.114444444444445","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"128","详细描述":"extremely faint, pretty small, a little extended","简略描述":"eF, pS, lE"},{"ID":"6444","标识":"NGC6444","M标识":"NGC6444","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h49m35.1s","赤经D(J2000)":"17.826416666666667","赤纬(J2000)":"-34h49m11s","赤纬D(J2000)":"-34.819722222222225","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, very rich, stars from 12th to 13th magnitude","简略描述":"Cl, vL, vRi, st 12…13"},{"ID":"6445","标识":"NGC6445","M标识":"NGC6445","拓展名":"","组件":"","Class":"II 586","业余排名":"3","中文名":"小宝石星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"17h49m15.1s","赤经D(J2000)":"17.82086111111111","赤纬(J2000)":"-20h0m32s","赤纬D(J2000)":"-20.00888888888889","可见光星等V":"11.2","摄影(蓝光)星等B":"13.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.73","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty small, round, gradually brighter middle, mottled but not resolved, 15th magnitude star to northwest","简略描述":"pB, pS, R, gbM, r, * 15 np"},{"ID":"6446","标识":"NGC6446","M标识":"NGC6446","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h46m7.5s","赤经D(J2000)":"17.76875","赤纬(J2000)":"+35h34m10s","赤纬D(J2000)":"35.56944444444445","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"9","详细描述":"extremely faint, very small, irregularly round","简略描述":"eF, vS, iR"},{"ID":"6447","标识":"NGC6447","M标识":"NGC6447","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h46m17.1s","赤经D(J2000)":"17.771416666666667","赤纬(J2000)":"+35h34m20s","赤纬D(J2000)":"35.57222222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"145","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"6448","标识":"NGC6448","M标识":"NGC6448","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h44m20.5s","赤经D(J2000)":"17.73902777777778","赤纬(J2000)":"+53h32m25s","赤纬D(J2000)":"53.540277777777774","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, round, a little brighter middle","简略描述":"vF, pS, R, lbM"},{"ID":"6449","标识":"NGC6449","M标识":"NGC6449","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h43m46.6s","赤经D(J2000)":"17.729611111111108","赤纬(J2000)":"+56h48m15s","赤纬D(J2000)":"56.80416666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.8","方位角":"135","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"6450","标识":"NGC6450","M标识":"NGC6450","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h47m32.3s","赤经D(J2000)":"17.792305555555558","赤纬(J2000)":"+18h34m31s","赤纬D(J2000)":"18.575277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, bright star 2 arcmin to east","简略描述":"vF, vS, B * f 2'"},{"ID":"6451","标识":"NGC6451","M标识":"NGC6451","拓展名":"","组件":"","Class":"VI 13","业余排名":"6","中文名":"汤姆拇指星团","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h50m40.5s","赤经D(J2000)":"17.844583333333333","赤纬(J2000)":"-30h12m42s","赤纬D(J2000)":"-30.211666666666666","可见光星等V":"8.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, bifid, stars from 12th magnitude","简略描述":"Cl, pL, pRi, bifid, st 12…"},{"ID":"6452","标识":"NGC6452","M标识":"NGC6452","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h47m58.5s","赤经D(J2000)":"17.799583333333334","赤纬(J2000)":"+20h50m15s","赤纬D(J2000)":"20.8375","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"most extremely faint, small","简略描述":"eeF, S"},{"ID":"6453","标识":"NGC6453","M标识":"NGC6453","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"IV","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h50m51.8s","赤经D(J2000)":"17.84772222222222","赤纬(J2000)":"-34h35m53s","赤纬D(J2000)":"-34.59805555555556","可见光星等V":"10.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7.6","短轴(分)":"","方位角":"","详细描述":"considerably large, irregularly round, pretty much brighter middle, mottled but not resolved","简略描述":"cL, iR, pmbM, r"},{"ID":"6454","标识":"NGC6454","M标识":"NGC6454","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h44m56.5s","赤经D(J2000)":"17.74902777777778","赤纬(J2000)":"+55h42m16s","赤纬D(J2000)":"55.70444444444445","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1","短轴(分)":"0.8","方位角":"171","详细描述":"very faint, pretty small, round, a little brighter middle","简略描述":"vF, pS, R, lbM"},{"ID":"6455","标识":"NGC6455","M标识":"NGC6455","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Cloud","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h51m8s","赤经D(J2000)":"17.852222222222224","赤纬(J2000)":"-35h20m14s","赤纬D(J2000)":"-35.33722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"a cluster, partially resolved (some stars seen), stars extremely small plus nebula","简略描述":"Cl, rr, st eS + neb"},{"ID":"6456","标识":"NGC6456","M标识":"NGC6456","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h42m31.7s","赤经D(J2000)":"17.708805555555553","赤纬(J2000)":"+67h35m32s","赤纬D(J2000)":"67.59222222222222","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"45","详细描述":"most extremely faint, extremely small, round, very difficult, between 2 stars","简略描述":"eeF, eS, R, v diffic, bet 2 st"},{"ID":"6457","标识":"NGC6457","M标识":"NGC6457","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h42m52.7s","赤经D(J2000)":"17.71463888888889","赤纬(J2000)":"+66h28m34s","赤纬D(J2000)":"66.47611111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"140","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"6458","标识":"NGC6458","M标识":"NGC6458","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h49m10.9s","赤经D(J2000)":"17.819694444444444","赤纬(J2000)":"+20h48m17s","赤纬D(J2000)":"20.804722222222225","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"155","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"6459","标识":"NGC6459","M标识":"NGC6459","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h45m47.1s","赤经D(J2000)":"17.763083333333334","赤纬(J2000)":"+55h46m37s","赤纬D(J2000)":"55.776944444444446","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"78","详细描述":"extremely faint, extremely small, round, mottled but not resolved","简略描述":"eF, eS, R, r"},{"ID":"6460","标识":"NGC6460","M标识":"NGC6460","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h49m30.3s","赤经D(J2000)":"17.825083333333332","赤纬(J2000)":"+20h45m51s","赤纬D(J2000)":"20.764166666666668","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"157","详细描述":"very faint, pretty large, irregularly round","简略描述":"vF, pL, iR"},{"ID":"6461","标识":"NGC6461","M标识":"NGC6461","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h39m56.6s","赤经D(J2000)":"17.66572222222222","赤纬(J2000)":"+74h2m2s","赤纬D(J2000)":"74.03388888888888","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"20","详细描述":"extremely faint, pretty small, round, 5 stars near","简略描述":"eF, pS, R, 5 st nr"},{"ID":"6462","标识":"NGC6462","M标识":"NGC6462","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h44m48.7s","赤经D(J2000)":"17.746861111111112","赤纬(J2000)":"+61h54m38s","赤纬D(J2000)":"61.910555555555554","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, extremely small, round, a planetary nebula?","简略描述":"F, eS, R, planetary ?"},{"ID":"6463","标识":"NGC6463","M标识":"NGC6463","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h43m34.2s","赤经D(J2000)":"17.726166666666664","赤纬(J2000)":"+67h36m15s","赤纬D(J2000)":"67.60416666666666","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"most extremely faint, small, round, very difficult, 2nd of 6","简略描述":"eeF, S, R, v diffic, 2nd of 6"},{"ID":"6464","标识":"NGC6464","M标识":"NGC6464","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h45m47.6s","赤经D(J2000)":"17.763222222222222","赤纬(J2000)":"+60h53m51s","赤纬D(J2000)":"60.8975","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"most extremely faint, pretty small, round, south of 4 stars","简略描述":"eeF, pS, R, s of 4 st"},{"ID":"6465","标识":"NGC6465","M标识":"NGC6465","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"17h52m55.4s","赤经D(J2000)":"17.882055555555556","赤纬(J2000)":"-25h23m50s","赤纬D(J2000)":"-25.397222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small (suspected)","简略描述":"eF, S (suspected)"},{"ID":"6466","标识":"NGC6466","M标识":"NGC6466","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h48m8s","赤经D(J2000)":"17.802222222222223","赤纬(J2000)":"+51h23m58s","赤纬D(J2000)":"51.39944444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"111","详细描述":"extremely faint, very small, round, between 2 stars","简略描述":"eF, vS, R, bet 2 st"},{"ID":"6467","标识":"NGC6467","M标识":"NGC6467","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h50m40.1s","赤经D(J2000)":"17.844472222222223","赤纬(J2000)":"+17h32m18s","赤纬D(J2000)":"17.538333333333334","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.6","短轴(分)":"1.7","方位角":"77","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"6468","标识":"NGC6468","M标识":"NGC6468","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h50m39.2s","赤经D(J2000)":"17.84422222222222","赤纬(J2000)":"+17h12m36s","赤纬D(J2000)":"17.21","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"117","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"6469","标识":"NGC6469","M标识":"NGC6469","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"17h52m56.5s","赤经D(J2000)":"17.882361111111113","赤纬(J2000)":"-22h18m43s","赤纬D(J2000)":"-22.311944444444446","可见光星等V":"8.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich (in Milky Way)","简略描述":"Cl, pRi (in M Way)"},{"ID":"6470","标识":"NGC6470","M标识":"NGC6470","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h44m14.7s","赤经D(J2000)":"17.737416666666668","赤纬(J2000)":"+67h37m9s","赤纬D(J2000)":"67.61916666666666","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"0.2","方位角":"173","详细描述":"most extremely faint, extremely small, round, very difficult, between 2 stars","简略描述":"eeF, vS, R, v diffic, 3rd of 6"},{"ID":"6471","标识":"NGC6471","M标识":"NGC6471","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h44m12.6s","赤经D(J2000)":"17.736833333333333","赤纬(J2000)":"+67h35m34s","赤纬D(J2000)":"67.59277777777777","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.3","方位角":"173","详细描述":"most extremely faint, extremely small, round, star near, 4th of 6","简略描述":"eeF, eS, R, * nr, 4th of 6"},{"ID":"6472","标识":"NGC6472","M标识":"NGC6472","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h44m3s","赤经D(J2000)":"17.734166666666667","赤纬(J2000)":"+67h37m49s","赤纬D(J2000)":"67.63027777777778","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"10","详细描述":"most extremely faint, extremely small, round, very difficult, 5th of 6","简略描述":"eeF, eS, R, v diffic, 5th of 6"},{"ID":"6473","标识":"NGC6473","M标识":"NGC6473","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h46m54s","赤经D(J2000)":"17.781666666666666","赤纬(J2000)":"+57h18m30s","赤纬D(J2000)":"57.30833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, round, southern of 2","简略描述":"eeF, S, R, s of 2"},{"ID":"6474","标识":"NGC6474","M标识":"NGC6474","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h47m5.5s","赤经D(J2000)":"17.784861111111113","赤纬(J2000)":"+57h18m5s","赤纬D(J2000)":"57.30138888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"75","详细描述":"extremely faint, pretty small, round, northern of 3, 3 stars near","简略描述":"eF, pS, R, n of 3, 3 st nr"},{"ID":"6475","标识":"NGC6475","M标识":"M7","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"托勒密星团","类型":"OCL","含重复类型":"OCL","形态":"II2r","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h53m50s","赤经D(J2000)":"17.897222222222222","赤纬(J2000)":"-34h47m36s","赤纬D(J2000)":"-34.79333333333333","可见光星等V":"3.3","摄影(蓝光)星等B":"3.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"75","短轴(分)":"","方位角":"","详细描述":"a cluster, very bright, pretty rich, a little compressed, stars from 7th to 12th magnitude","简略描述":"Cl, vB, pRi, lC, st 7…12"},{"ID":"6476","标识":"NGC6476","M标识":"NGC6476","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Cloud","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"17h54m12s","赤经D(J2000)":"17.903333333333332","赤纬(J2000)":"-29h7m12s","赤纬D(J2000)":"-29.12","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a nebula or nebulous part of Milky Way","简略描述":"Neb or nebs part of M Way"},{"ID":"6477","标识":"NGC6477","M标识":"NGC6477","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h44m29.7s","赤经D(J2000)":"17.741583333333335","赤纬(J2000)":"+67h36m39s","赤纬D(J2000)":"67.61083333333333","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"110","详细描述":"most extremely faint, extremely small, round, very difficult, star near","简略描述":"eeF, eS, R, v diffic, * nr"},{"ID":"6478","标识":"NGC6478","M标识":"NGC6478","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h48m38.3s","赤经D(J2000)":"17.81063888888889","赤纬(J2000)":"+51h9m24s","赤纬D(J2000)":"51.156666666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"37","详细描述":"pretty bright, small, very much extended, spindle","简略描述":"pB, S, vmE, spindle"},{"ID":"6479","标识":"NGC6479","M标识":"NGC6479","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h48m21.7s","赤经D(J2000)":"17.80602777777778","赤纬(J2000)":"+54h8m59s","赤纬D(J2000)":"54.14972222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.9","方位角":"129","详细描述":"extremely faint, pretty small, round, 3 stars to north","简略描述":"eF, pS, R, 3 st n"},{"ID":"6480","标识":"NGC6480","M标识":"NGC6480","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h54m26s","赤经D(J2000)":"17.90722222222222","赤纬(J2000)":"-30h27m6s","赤纬D(J2000)":"-30.451666666666664","可见光星等V":"99","摄影(蓝光)星等B":"12","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"17","短轴(分)":"","方位角":"","详细描述":"a nebula or nebulous part of Milky Way","简略描述":"Neb or nebs part of M Way"},{"ID":"6481","标识":"NGC6481","M标识":"NGC6481","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h52m49s","赤经D(J2000)":"17.880277777777778","赤纬(J2000)":"+4h10m2s","赤纬D(J2000)":"4.167222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very small, brighter middle","简略描述":"vS, bM"},{"ID":"6482","标识":"NGC6482","M标识":"NGC6482","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h51m48.7s","赤经D(J2000)":"17.86352777777778","赤纬(J2000)":"+23h4m22s","赤纬D(J2000)":"23.072777777777777","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.1","短轴(分)":"1.8","方位角":"70","详细描述":"a remarkable object, very faint, small, round, very suddenly very much brighter middle and very small round nucleus","简略描述":"! vF, S, R, vsvmbMvSRN"},{"ID":"6483","标识":"NGC6483","M标识":"NGC6483","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"17h59m30.5s","赤经D(J2000)":"17.99180555555556","赤纬(J2000)":"-63h40m7s","赤纬D(J2000)":"-63.66861111111111","可见光星等V":"11.9","摄影(蓝光)星等B":"13","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"122","详细描述":"faint, small, extended, brighter middle, between two 10th magnitude stars","简略描述":"F, S, E, bM, bet 2 st 10"},{"ID":"6484","标识":"NGC6484","M标识":"NGC6484","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h51m46.8s","赤经D(J2000)":"17.863000000000003","赤纬(J2000)":"+24h28m59s","赤纬D(J2000)":"24.483055555555556","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.9","方位角":"","详细描述":"extremely faint, very small, round, much brighter middle","简略描述":"eF, vS, R, mbM"},{"ID":"6485","标识":"NGC6485","M标识":"NGC6485","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h51m52.8s","赤经D(J2000)":"17.86466666666667","赤纬(J2000)":"+31h27m43s","赤纬D(J2000)":"31.461944444444445","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"24","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"6486","标识":"NGC6486","M标识":"NGC6486","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h52m35.2s","赤经D(J2000)":"17.876444444444445","赤纬(J2000)":"+29h49m7s","赤纬D(J2000)":"29.81861111111111","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"a very small star slightly nebulous","简略描述":"vS * slightly nebs"},{"ID":"6487","标识":"NGC6487","M标识":"NGC6487","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h52m41.7s","赤经D(J2000)":"17.87825","赤纬(J2000)":"+29h50m19s","赤纬D(J2000)":"29.83861111111111","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"1.8","方位角":"","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"6488","标识":"NGC6488","M标识":"NGC6488","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h49m20.8s","赤经D(J2000)":"17.822444444444443","赤纬(J2000)":"+62h13m24s","赤纬D(J2000)":"62.223333333333336","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"63","详细描述":"pretty faint, pretty small, extended","简略描述":"pF, pS, E"},{"ID":"6489","标识":"NGC6489","M标识":"NGC6489","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h50m1.3s","赤经D(J2000)":"17.833694444444443","赤纬(J2000)":"+60h5m33s","赤纬D(J2000)":"60.0925","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"24","详细描述":"most extremely faint, pretty large, a little extended, between 2 stars","简略描述":"eeF, pL, lE, bet 2 st"},{"ID":"6490","标识":"NGC6490","M标识":"NGC6490","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h54m30.4s","赤经D(J2000)":"17.90844444444444","赤纬(J2000)":"+18h22m35s","赤纬D(J2000)":"18.37638888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.8","方位角":"115","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"6491","标识":"NGC6491","M标识":"NGC6491","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h50m0.6s","赤经D(J2000)":"17.833499999999997","赤纬(J2000)":"+61h31m55s","赤纬D(J2000)":"61.53194444444444","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"39","详细描述":"pretty faint, extremely small, very faint star attached, northwestern of 2","简略描述":"pF, eS, vF * att, np of 2"},{"ID":"6492","标识":"NGC6492","M标识":"NGC6492","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h2m48.3s","赤经D(J2000)":"18.046750000000003","赤纬(J2000)":"-66h25m50s","赤纬D(J2000)":"-66.43055555555556","可见光星等V":"11.5","摄影(蓝光)星等B":"12.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.5","短轴(分)":"1.2","方位角":"75","详细描述":"pretty faint, small, pretty much extended 90°, 12th magnitude star attached on east","简略描述":"pF, S, pmE 90°, * 12 att f"},{"ID":"6493","标识":"NGC6493","M标识":"NGC6493","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h50m22.5s","赤经D(J2000)":"17.839583333333334","赤纬(J2000)":"+61h33m34s","赤纬D(J2000)":"61.559444444444445","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"pretty faint, extremely small, very faint star attached, northwestern of 2","简略描述":"F, eS, R, planetary ?, F * v nr, sf of 2"},{"ID":"6494","标识":"NGC6494","M标识":"M23","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1m","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"17h56m56s","赤经D(J2000)":"17.948888888888888","赤纬(J2000)":"-19h0m42s","赤纬D(J2000)":"-19.011666666666667","可见光星等V":"5.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, very large, pretty rich, a little compressed, stars from 10th magnitude","简略描述":"Cl, B, vL, pRi, lC, st 10…"},{"ID":"6495","标识":"NGC6495","M标识":"NGC6495","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h54m50.7s","赤经D(J2000)":"17.91408333333333","赤纬(J2000)":"+18h19m39s","赤纬D(J2000)":"18.3275","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2","短轴(分)":"1.8","方位角":"69","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"6496","标识":"NGC6496","M标识":"NGC6496","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"XII","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h59m2s","赤经D(J2000)":"17.983888888888888","赤纬(J2000)":"-44h15m52s","赤纬D(J2000)":"-44.26444444444444","可见光星等V":"8.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5.6","短轴(分)":"","方位角":"","详细描述":"a nebula and cluster, pretty large, much extended, gradually a very little brighter middle","简略描述":"Neb + Cl, pL, mE, gvlbM"},{"ID":"6497","标识":"NGC6497","M标识":"NGC6497","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h51m17.8s","赤经D(J2000)":"17.854944444444445","赤纬(J2000)":"+59h28m16s","赤纬D(J2000)":"59.471111111111114","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"113","详细描述":"extremely faint, pretty small, a little extended, star close to north, northwestern of 2","简略描述":"eF, pS, lE, * close n, np of 2"},{"ID":"6498","标识":"NGC6498","M标识":"NGC6498","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h51m17.8s","赤经D(J2000)":"17.854944444444445","赤纬(J2000)":"+59h28m16s","赤纬D(J2000)":"59.471111111111114","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"113","详细描述":"extremely faint, pretty small, a little extended, star close to north, northwestern of 2","简略描述":"pF, pS, R, F * v nr, sf of 2"},{"ID":"6499","标识":"NGC6499","M标识":"NGC6499","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h55m20s","赤经D(J2000)":"17.922222222222224","赤纬(J2000)":"+18h21m34s","赤纬D(J2000)":"18.359444444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a small double star in a nebula","简略描述":"S D * in neb"},{"ID":"6500","标识":"NGC6500","M标识":"NGC6500","拓展名":"","组件":"","Class":"III 957","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h55m59.7s","赤经D(J2000)":"17.93325","赤纬(J2000)":"+18h20m20s","赤纬D(J2000)":"18.33888888888889","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.2","短轴(分)":"1.6","方位角":"50","详细描述":"very faint, very small, southwestern of 2","简略描述":"vF, vS, sp of 2"},{"ID":"6501","标识":"NGC6501","M标识":"NGC6501","拓展名":"","组件":"","Class":"III 958","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h56m3.7s","赤经D(J2000)":"17.934361111111112","赤纬(J2000)":"+18h22m25s","赤纬D(J2000)":"18.37361111111111","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"54","详细描述":"very faint, very small, northeastern of 2","简略描述":"vF, vS, nf of 2"},{"ID":"6502","标识":"NGC6502","M标识":"NGC6502","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h4m14s","赤经D(J2000)":"18.070555555555554","赤纬(J2000)":"-65h24m35s","赤纬D(J2000)":"-65.40972222222223","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"42","详细描述":"very faint, very small, eastern star of double star involved","简略描述":"vF, vS, f * of D * inv"},{"ID":"6503","标识":"NGC6503","M标识":"NGC6503","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"太空迷航星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h49m27.5s","赤经D(J2000)":"17.824305555555554","赤纬(J2000)":"+70h8m37s","赤纬D(J2000)":"70.14361111111111","可见光星等V":"10.2","摄影(蓝光)星等B":"10.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"7","短轴(分)":"2.5","方位角":"123","详细描述":"pretty faint, large, much extended, 9th magnitude star 4 arcmin to east (Auwers 37)","简略描述":"pF, L, mE, * 9 f 4' (Auw 37)"},{"ID":"6504","标识":"NGC6504","M标识":"NGC6504","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h56m5.6s","赤经D(J2000)":"17.93488888888889","赤纬(J2000)":"+33h12m31s","赤纬D(J2000)":"33.20861111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.2","短轴(分)":"0.5","方位角":"94","详细描述":"faint, very much extended, suddenly brighter middle","简略描述":"F, vmE, sbM"},{"ID":"6505","标识":"NGC6505","M标识":"NGC6505","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h51m7.3s","赤经D(J2000)":"17.852027777777778","赤纬(J2000)":"+65h31m53s","赤纬D(J2000)":"65.53138888888888","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"1.1","短轴(分)":"1","方位角":"126","详细描述":"most extremely faint, very small, round","简略描述":"eeF, vS, R"},{"ID":"6506","标识":"NGC6506","M标识":"NGC6506","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"17h59m53.4s","赤经D(J2000)":"17.998166666666666","赤纬(J2000)":"-24h41m7s","赤纬D(J2000)":"-24.685277777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, rich, extremely large, very little compressed","简略描述":"Cl, Ri, eL, vlC"},{"ID":"6507","标识":"NGC6507","M标识":"NGC6507","拓展名":"","组件":"","Class":"VIII 53","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV2p","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"17h59m50s","赤经D(J2000)":"17.997222222222224","赤纬(J2000)":"-17h27m0s","赤纬D(J2000)":"-17.45","可见光星等V":"99","摄影(蓝光)星等B":"9.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty small, a little rich, a little compressed","简略描述":"Cl, pS, lRi, lC"},{"ID":"6508","标识":"NGC6508","M标识":"NGC6508","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h49m46.3s","赤经D(J2000)":"17.829527777777777","赤纬(J2000)":"+72h1m18s","赤纬D(J2000)":"72.02166666666666","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"very faint, small, 3 stars near","简略描述":"vF, S, 3 st nr"},{"ID":"6509","标识":"NGC6509","M标识":"NGC6509","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h59m25.3s","赤经D(J2000)":"17.990361111111113","赤纬(J2000)":"+6h17m14s","赤纬D(J2000)":"6.287222222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"105","详细描述":"very faint, pretty large, irregularly round, a little brighter middle","简略描述":"vF, pL, irrR, lbM"},{"ID":"6510","标识":"NGC6510","M标识":"NGC6510","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h54m39.2s","赤经D(J2000)":"17.910888888888888","赤纬(J2000)":"+60h49m2s","赤纬D(J2000)":"60.81722222222223","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.6","方位角":"30","详细描述":"most extremely faint, pretty small, a little extended, very difficult.","简略描述":"eeF, pS, lE, v diffic"},{"ID":"6511","标识":"NGC6511","M标识":"NGC6511","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h54m39.2s","赤经D(J2000)":"17.910888888888888","赤纬(J2000)":"+60h49m2s","赤纬D(J2000)":"60.81722222222223","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.6","方位角":"30","详细描述":"most extremely faint, pretty small, a little extended, very difficult.","简略描述":"F, pL, bM (? = last one)"},{"ID":"6512","标识":"NGC6512","M标识":"NGC6512","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h54m50.2s","赤经D(J2000)":"17.913944444444443","赤纬(J2000)":"+62h38m44s","赤纬D(J2000)":"62.64555555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"57","详细描述":"very faint, round, 1st of 3","简略描述":"vF, R, 1st of 3"},{"ID":"6513","标识":"NGC6513","M标识":"NGC6513","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h59m34.3s","赤经D(J2000)":"17.99286111111111","赤纬(J2000)":"+24h53m15s","赤纬D(J2000)":"24.8875","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"40","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"6514","标识":"NGC6514","M标识":"M20","拓展名":"","组件":"","Class":"V 10, V 11, V 12, IV 41","业余排名":"1","中文名":"三裂星云","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h3m26s","赤经D(J2000)":"18.057222222222222","赤纬(J2000)":"-22h59m27s","赤纬D(J2000)":"-22.990833333333335","可见光星等V":"99","摄影(蓝光)星等B":"8.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"20","方位角":"","详细描述":"a magnificent or otherwise interesting object, very bright, very large, trifid, double star involved","简略描述":"!!! vB, vL, trifid, D * inv"},{"ID":"6515","标识":"NGC6515","M标识":"NGC6515","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h57m25.3s","赤经D(J2000)":"17.95702777777778","赤纬(J2000)":"+50h43m39s","赤纬D(J2000)":"50.7275","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"1","方位角":"10","详细描述":"very faint, very small, round, 2 bright stars near","简略描述":"vF, vS, R, 2 B st nr"},{"ID":"6516","标识":"NGC6516","M标识":"NGC6516","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h55m16.6s","赤经D(J2000)":"17.921277777777778","赤纬(J2000)":"+62h40m10s","赤纬D(J2000)":"62.669444444444444","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"135","详细描述":"very faint, very small, 2nd of 3","简略描述":"vF, vS, 2nd of 3"},{"ID":"6517","标识":"NGC6517","M标识":"NGC6517","拓展名":"","组件":"","Class":"II 199","业余排名":"6","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"IV","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"18h1m50.6s","赤经D(J2000)":"18.03072222222222","赤纬(J2000)":"-8h57m30s","赤纬D(J2000)":"-8.958333333333332","可见光星等V":"10.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, round, partially resolved (some stars seen)","简略描述":"pB, pL, R, rr"},{"ID":"6518","标识":"NGC6518","M标识":"NGC6518","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h59m43.6s","赤经D(J2000)":"17.995444444444445","赤纬(J2000)":"+28h52m2s","赤纬D(J2000)":"28.86722222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"Two very faint close stars in very faint, very small nebula","简略描述":"2 vF, close st in vF, vS neb"},{"ID":"6519","标识":"NGC6519","M标识":"NGC6519","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h3m20.1s","赤经D(J2000)":"18.055583333333335","赤纬(J2000)":"-29h48m14s","赤纬D(J2000)":"-29.80388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, northwest of I 49","简略描述":"vF, np I 49"},{"ID":"6520","标识":"NGC6520","M标识":"NGC6520","拓展名":"","组件":"","Class":"VII 7","业余排名":"6","中文名":"亡灵宝藏星团","类型":"OCL","含重复类型":"OCL","形态":"I2m","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h3m25s","赤经D(J2000)":"18.056944444444444","赤纬(J2000)":"-27h53m28s","赤纬D(J2000)":"-27.891111111111112","可见光星等V":"7.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty small, rich, a little compressed, stars from 9th to 13th magnitude","简略描述":"Cl, pS, Ri, lC, st 9…13"},{"ID":"6521","标识":"NGC6521","M标识":"NGC6521","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h55m48.3s","赤经D(J2000)":"17.930083333333336","赤纬(J2000)":"+62h36m42s","赤纬D(J2000)":"62.611666666666665","可见光星等V":"12.9","摄影(蓝光)星等B":"14","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"160","详细描述":"faint, pretty large, 3rd of 3","简略描述":"F, pL, 3rd of 3"},{"ID":"6522","标识":"NGC6522","M标识":"NGC6522","拓展名":"","组件":"","Class":"I 49","业余排名":"3","中文名":"巴德窗","类型":"GCL","含重复类型":"GCL","形态":"VI","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h3m34.1s","赤经D(J2000)":"18.059472222222222","赤纬(J2000)":"-30h2m0s","赤纬D(J2000)":"-30.033333333333335","可见光星等V":"9.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9.4","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, pretty large, round, gradually very much brighter middle, well resolved, clearly consisting of stars, stars from 16th magnitude","简略描述":"globular, B, pL, R, gvmbM, rrr, st 16"},{"ID":"6523","标识":"NGC6523","M标识":"M8","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"礁湖星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h3m42s","赤经D(J2000)":"18.061666666666667","赤纬(J2000)":"-24h22m48s","赤纬D(J2000)":"-24.38","可见光星等V":"99","摄影(蓝光)星等B":"5.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"45","短轴(分)":"30","方位角":"","详细描述":"a magnificent or otherwise interesting object, very bright, extremely large, extremely irregular figure, with large cluster","简略描述":"!!! vB, eL, eiF, with L Cl"},{"ID":"6524","标识":"NGC6524","M标识":"NGC6524","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h59m14.8s","赤经D(J2000)":"17.987444444444446","赤纬(J2000)":"+45h53m17s","赤纬D(J2000)":"45.88805555555555","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1","方位角":"155","详细描述":"pretty faint, pretty small, a little extended","简略描述":"pF, pS, lE"},{"ID":"6525","标识":"NGC6525","M标识":"NGC6525","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"18h2m6s","赤经D(J2000)":"18.035","赤纬(J2000)":"+11h1m31s","赤纬D(J2000)":"11.025277777777779","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, stars large","简略描述":"Cl, P, st L"},{"ID":"6526","标识":"NGC6526","M标识":"NGC6526","拓展名":"","组件":"","Class":"V 9","业余排名":"6.5","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"EN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h4m6s","赤经D(J2000)":"18.06833333333333","赤纬(J2000)":"-24h26m30s","赤纬D(J2000)":"-24.441666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"3","方位角":"","详细描述":"faint, large, extremely extended","简略描述":"F, L, cE"},{"ID":"6527","标识":"NGC6527","M标识":"NGC6527","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h1m46.2s","赤经D(J2000)":"18.0295","赤纬(J2000)":"+19h43m45s","赤纬D(J2000)":"19.729166666666664","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"1","方位角":"150","详细描述":"most extremely faint, very small, round","简略描述":"eeF, vS, R"},{"ID":"6528","标识":"NGC6528","M标识":"NGC6528","拓展名":"","组件":"","Class":"II 200","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"V","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h4m49.6s","赤经D(J2000)":"18.080444444444446","赤纬(J2000)":"-30h3m19s","赤纬D(J2000)":"-30.05527777777778","可见光星等V":"9.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a globular cluster, pretty faint, considerably small, round, gradually brighter middle, well resolved, clearly consisting of stars, stars from 16th magnitude","简略描述":"globular, pF, cS, R, gbM, rrr, st 16"},{"ID":"6529","标识":"NGC6529","M标识":"NGC6529","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h5m29s","赤经D(J2000)":"18.091388888888886","赤纬(J2000)":"-36h17m48s","赤纬D(J2000)":"-36.29666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster in the Milky Way","简略描述":"Cl in Milky Way"},{"ID":"6530","标识":"NGC6530","M标识":"NGC6530","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"赫歇尔36","类型":"OCL","含重复类型":"OCL","形态":"II2mn","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h4m30s","赤经D(J2000)":"18.075","赤纬(J2000)":"-24h21m30s","赤纬D(J2000)":"-24.358333333333334","可见光星等V":"4.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, large, pretty rich, to the east of M8","简略描述":"Cl, B, L, pRi, f M 8"},{"ID":"6531","标识":"NGC6531","M标识":"M21","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"韦伯的十字架","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h4m13.3s","赤经D(J2000)":"18.07036111111111","赤纬(J2000)":"-22h30m0s","赤纬D(J2000)":"-22.5","可见光星等V":"5.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"16","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, a little compressed, stars from 9th to 12th magnitude","简略描述":"Cl, pRi, lC, st 9…12"},{"ID":"6532","标识":"NGC6532","M标识":"NGC6532","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h59m13.8s","赤经D(J2000)":"17.987166666666667","赤纬(J2000)":"+56h13m55s","赤纬D(J2000)":"56.231944444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.8","短轴(分)":"0.9","方位角":"123","详细描述":"most extremely faint, pretty small, round","简略描述":"eeF, pS, R"},{"ID":"6533","标识":"NGC6533","M标识":"NGC6533","拓展名":"","组件":"","Class":"V 13","业余排名":"15","中文名":"","类型":"Nb","含重复类型":"Dup","形态":"EN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h3m42s","赤经D(J2000)":"18.061666666666667","赤纬(J2000)":"-24h22m48s","赤纬D(J2000)":"-24.38","可见光星等V":"99","摄影(蓝光)星等B":"5.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"45","短轴(分)":"30","方位角":"","详细描述":"extremely large, extremely irregular figure, stars to east","简略描述":"eL, eiF, st f"},{"ID":"6534","标识":"NGC6534","M标识":"NGC6534","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h54m52.5s","赤经D(J2000)":"17.914583333333333","赤纬(J2000)":"+64h24m7s","赤纬D(J2000)":"64.40194444444445","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"most extremely faint, pretty small, round","简略描述":"eeF, pS, R"},{"ID":"6535","标识":"NGC6535","M标识":"NGC6535","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"XI","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"18h3m50.7s","赤经D(J2000)":"18.064083333333333","赤纬(J2000)":"-0h17m47s","赤纬D(J2000)":"-0.29638888888888887","可见光星等V":"9.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.4","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, very small nebulous star to west (Auwers 38)","简略描述":"pF, vS, vS neb * p (Auw 38)"},{"ID":"6536","标识":"NGC6536","M标识":"NGC6536","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h57m16.3s","赤经D(J2000)":"17.954527777777777","赤纬(J2000)":"+64h56m16s","赤纬D(J2000)":"64.93777777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"117","详细描述":"very faint, pretty large, round","简略描述":"vF, pL, R"},{"ID":"6537","标识":"NGC6537","M标识":"NGC6537","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"红蜘蛛星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h5m13s","赤经D(J2000)":"18.086944444444445","赤纬(J2000)":"-19h50m32s","赤纬D(J2000)":"-19.842222222222222","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.17","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, bright, small, stellar","简略描述":"planetary, B, S, stellar"},{"ID":"6538","标识":"NGC6538","M标识":"NGC6538","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h54m17.1s","赤经D(J2000)":"17.90475","赤纬(J2000)":"+73h25m27s","赤纬D(J2000)":"73.42416666666666","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.5","方位角":"48","详细描述":"extremely faint, very small, a little extended, between two extremely faint stars","简略描述":"eF, vS, lE, bet 2 eF st"},{"ID":"6539","标识":"NGC6539","M标识":"NGC6539","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"X","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"18h4m49.8s","赤经D(J2000)":"18.0805","赤纬(J2000)":"-7h35m7s","赤纬D(J2000)":"-7.585277777777778","可见光星等V":"8.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7.9","短轴(分)":"","方位角":"","详细描述":"no description (Auwers 39)","简略描述":"No descript (Auw 39)"},{"ID":"6540","标识":"NGC6540","M标识":"NGC6540","拓展名":"","组件":"","Class":"II 198","业余排名":"6","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h6m8.6s","赤经D(J2000)":"18.10238888888889","赤纬(J2000)":"-27h45m53s","赤纬D(J2000)":"-27.764722222222222","可见光星等V":"9.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.5","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, irregularly extended, extremely mottled but not resolved or a cluster","简略描述":"pF, S, iE, er or Cl"},{"ID":"6541","标识":"NGC6541","M标识":"NGC6541","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"砂锅星团","类型":"GCL","含重复类型":"GCL","形态":"III","星座(Zh)":"南冕座","星座(En)":"CRA","赤经(J2000)":"18h8m2.2s","赤经D(J2000)":"18.133944444444445","赤纬(J2000)":"-43h42m40s","赤纬D(J2000)":"-43.711111111111116","可见光星等V":"6.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, round, extremely compressed, gradually brighter middle, well resolved, clearly consisting of stars, stars from 15th to 16th magnitude","简略描述":"globular, B, R, eC, gbM, rrr, st 15…16"},{"ID":"6542","标识":"NGC6542","M标识":"NGC6542","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h59m39s","赤经D(J2000)":"17.99416666666667","赤纬(J2000)":"+61h21m32s","赤纬D(J2000)":"61.35888888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"98","详细描述":"extremely faint, small, much extended, 2 stars to southwest","简略描述":"eF, S, mE, 2 st sp"},{"ID":"6543","标识":"NGC6543","M标识":"NGC6543","拓展名":"","组件":"","Class":"IV 37","业余排名":"2","中文名":"猫眼星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h58m33.4s","赤经D(J2000)":"17.975944444444444","赤纬(J2000)":"+66h38m1s","赤纬D(J2000)":"66.63361111111112","可见光星等V":"8.1","摄影(蓝光)星等B":"8.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.33","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, very bright, pretty small, suddenly brighter middle and very small nucleus","简略描述":"planetary, vB, pS, sbMvSN"},{"ID":"6544","标识":"NGC6544","M标识":"NGC6544","拓展名":"","组件":"","Class":"II 197","业余排名":"3","中文名":"海星星团","类型":"GCL","含重复类型":"GCL","形态":"V","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h7m20.6s","赤经D(J2000)":"18.12238888888889","赤纬(J2000)":"-24h59m49s","赤纬D(J2000)":"-24.996944444444445","可见光星等V":"7.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9.2","短轴(分)":"","方位角":"","详细描述":"considerably faint, pretty large, irregularly round, mottled but not resolved","简略描述":"cF, pL, iR, r"},{"ID":"6545","标识":"NGC6545","M标识":"NGC6545","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h12m14.9s","赤经D(J2000)":"18.204138888888888","赤纬(J2000)":"-63h46m33s","赤纬D(J2000)":"-63.77583333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"168","详细描述":"most extremely faint, most extremely small, round","简略描述":"eeF, eeS, R"},{"ID":"6546","标识":"NGC6546","M标识":"NGC6546","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h7m22s","赤经D(J2000)":"18.122777777777777","赤纬(J2000)":"-23h17m48s","赤纬D(J2000)":"-23.296666666666667","可见光星等V":"8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, very rich","简略描述":"Cl, vL, vRi"},{"ID":"6547","标识":"NGC6547","M标识":"NGC6547","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h5m10s","赤经D(J2000)":"18.08611111111111","赤纬(J2000)":"+25h13m58s","赤纬D(J2000)":"25.232777777777777","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"133","详细描述":"faint, very small, extended, much brighter middle","简略描述":"F, vS, E, mbM"},{"ID":"6548","标识":"NGC6548","M标识":"NGC6548","拓展名":"","组件":"","Class":"III 555","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h5m59.2s","赤经D(J2000)":"18.099777777777778","赤纬(J2000)":"+18h35m14s","赤纬D(J2000)":"18.58722222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.9","短轴(分)":"2.8","方位角":"60","详细描述":"considerably faint, small, a little extended, mottled but not resolved","简略描述":"cF, S, lE, r"},{"ID":"6549","标识":"NGC6549","M标识":"NGC6549","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h5m49.4s","赤经D(J2000)":"18.097055555555553","赤纬(J2000)":"+18h32m16s","赤纬D(J2000)":"18.53777777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"53","详细描述":"very faint, pretty large, irregularly round, near III 555","简略描述":"vF, pL, iR, near III 555"},{"ID":"6550","标识":"NGC6550","M标识":"NGC6550","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h5m49.4s","赤经D(J2000)":"18.097055555555553","赤纬(J2000)":"+18h32m16s","赤纬D(J2000)":"18.53777777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"53","详细描述":"very faint, pretty small, round, several faint stars involved, near m 361","简略描述":"vF, pS, R, sev F st inv, near m 361"},{"ID":"6551","标识":"NGC6551","M标识":"NGC6551","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h9m0s","赤经D(J2000)":"18.15","赤纬(J2000)":"-29h33m0s","赤纬D(J2000)":"-29.55","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, partially resolved (some stars seen)","简略描述":"vF, vS, R, rr"},{"ID":"6552","标识":"NGC6552","M标识":"NGC6552","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h0m7s","赤经D(J2000)":"18.001944444444444","赤纬(J2000)":"+66h36m55s","赤纬D(J2000)":"66.61527777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.7","方位角":"105","详细描述":"faint, pretty small, irregularly round","简略描述":"F, pS, iR"},{"ID":"6553","标识":"NGC6553","M标识":"NGC6553","拓展名":"","组件":"","Class":"IV 12","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"XI","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h9m15.6s","赤经D(J2000)":"18.154333333333334","赤纬(J2000)":"-25h54m26s","赤纬D(J2000)":"-25.90722222222222","可见光星等V":"8.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9.2","短轴(分)":"","方位角":"","详细描述":"a globular cluster, faint, large, a little extended, very gradually a little brighter middle, partially resolved (some stars seen), stars from 20th magnitude","简略描述":"globular, F, L, lE, vglbM, rr, st 20"},{"ID":"6554","标识":"NGC6554","M标识":"NGC6554","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h9m23s","赤经D(J2000)":"18.156388888888888","赤纬(J2000)":"-18h22m42s","赤纬D(J2000)":"-18.378333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, very little compressed, stars large and small","简略描述":"Cl, pRi, vlC, st L & S"},{"ID":"6555","标识":"NGC6555","M标识":"NGC6555","拓展名":"","组件":"","Class":"II 902","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h7m49s","赤经D(J2000)":"18.130277777777778","赤纬(J2000)":"+17h36m17s","赤纬D(J2000)":"17.604722222222225","可见光星等V":"12.4","摄影(蓝光)星等B":"13","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.1","短轴(分)":"1.7","方位角":"110","详细描述":"faint, large, round, very gradually a little brighter middle","简略描述":"F, L, R, vglbM"},{"ID":"6556","标识":"NGC6556","M标识":"NGC6556","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h9m56s","赤经D(J2000)":"18.165555555555553","赤纬(J2000)":"-27h31m27s","赤纬D(J2000)":"-27.524166666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very large, considerably extended, a little brighter middle, partially resolved (some stars seen)","简略描述":"F, vL, cE, lbM, rr"},{"ID":"6557","标识":"NGC6557","M标识":"NGC6557","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"南极座","星座(En)":"OCT","赤经(J2000)":"18h21m24.7s","赤经D(J2000)":"18.35686111111111","赤纬(J2000)":"-76h34m58s","赤纬D(J2000)":"-76.58277777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"80","详细描述":"very faint, very small, round, gradually a little brighter middle","简略描述":"vF, vS, R, glbM"},{"ID":"6558","标识":"NGC6558","M标识":"NGC6558","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h10m18.4s","赤经D(J2000)":"18.17177777777778","赤纬(J2000)":"-31h45m47s","赤纬D(J2000)":"-31.763055555555557","可见光星等V":"8.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.2","短轴(分)":"","方位角":"","详细描述":"a globular cluster, pretty bright, pretty large, round, gradually a little brighter middle, well resolved, clearly consisting of stars, stars from 16th magnitude","简略描述":"globular, pB, pL, R, glbM, rrr, st 16"},{"ID":"6559","标识":"NGC6559","M标识":"NGC6559","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h9m57.6s","赤经D(J2000)":"18.165999999999997","赤纬(J2000)":"-24h6m35s","赤纬D(J2000)":"-24.109722222222224","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"5","方位角":"","详细描述":"very faint, very large, a little extended, double star involved","简略描述":"vF, vL, lE, ** inv"},{"ID":"6560","标识":"NGC6560","M标识":"NGC6560","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h5m13.8s","赤经D(J2000)":"18.087166666666665","赤纬(J2000)":"+46h52m54s","赤纬D(J2000)":"46.88166666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"55","详细描述":"most extremely faint, pretty small, irregularly round","简略描述":"eeF, pS, iR"},{"ID":"6561","标识":"NGC6561","M标识":"NGC6561","拓展名":"","组件":"","Class":"VIII 54","业余排名":"12","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h10m33s","赤经D(J2000)":"18.175833333333333","赤纬(J2000)":"-16h44m48s","赤纬D(J2000)":"-16.746666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, large, a little compressed, stars considerably large","简略描述":"Cl, L, lC, st cL"},{"ID":"6562","标识":"NGC6562","M标识":"NGC6562","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h5m0.8s","赤经D(J2000)":"18.083555555555556","赤纬(J2000)":"+56h15m49s","赤纬D(J2000)":"56.26361111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, pretty small, round, brighter middle, between 2 stars","简略描述":"F, pS, R, bM, bet 2 st"},{"ID":"6563","标识":"NGC6563","M标识":"NGC6563","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"南指环星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h12m2.6s","赤经D(J2000)":"18.200722222222222","赤纬(J2000)":"-33h52m4s","赤纬D(J2000)":"-33.867777777777775","可见光星等V":"11","摄影(蓝光)星等B":"13.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, faint, large, considerably extended, hazy border","简略描述":"planetary, F, L, cE, hazy border"},{"ID":"6564","标识":"NGC6564","M标识":"NGC6564","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h9m2.3s","赤经D(J2000)":"18.15063888888889","赤纬(J2000)":"+17h23m40s","赤纬D(J2000)":"17.394444444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"6565","标识":"NGC6565","M标识":"NGC6565","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h11m52.5s","赤经D(J2000)":"18.197916666666668","赤纬(J2000)":"-28h10m41s","赤纬D(J2000)":"-28.178055555555556","可见光星等V":"11.6","摄影(蓝光)星等B":"13.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.23","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, stellar","简略描述":"planetary, stellar"},{"ID":"6566","标识":"NGC6566","M标识":"NGC6566","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h7m0.7s","赤经D(J2000)":"18.116861111111113","赤纬(J2000)":"+52h15m38s","赤纬D(J2000)":"52.260555555555555","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, very small, round, 16th magnitude star near","简略描述":"eF, vS, R, * 16 nr"},{"ID":"6567","标识":"NGC6567","M标识":"NGC6567","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h13m45.1s","赤经D(J2000)":"18.229194444444442","赤纬(J2000)":"-19h4m32s","赤纬D(J2000)":"-19.075555555555557","可见光星等V":"11","摄影(蓝光)星等B":"11.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.2","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, stellar, 11th magnitude, in a cluster","简略描述":"planetary, stell, 11 mag, in a Cl"},{"ID":"6568","标识":"NGC6568","M标识":"NGC6568","拓展名":"","组件":"","Class":"VII 30","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1m","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h12m44s","赤经D(J2000)":"18.21222222222222","赤纬(J2000)":"-21h35m0s","赤纬D(J2000)":"-21.583333333333332","可见光星等V":"8.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, a little compressed","简略描述":"Cl, vL, lC"},{"ID":"6569","标识":"NGC6569","M标识":"NGC6569","拓展名":"","组件":"","Class":"II 201","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VIII","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h13m38.9s","赤经D(J2000)":"18.22747222222222","赤纬(J2000)":"-31h49m33s","赤纬D(J2000)":"-31.825833333333332","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6.4","短轴(分)":"","方位角":"","详细描述":"a globular cluster, considerably bright, large, round, well resolved, clearly consisting of stars, stars from 15th magnitude","简略描述":"globular, cB, L, R, rrr, st 15…"},{"ID":"6570","标识":"NGC6570","M标识":"NGC6570","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"18h11m7.3s","赤经D(J2000)":"18.18536111111111","赤纬(J2000)":"+14h5m34s","赤纬D(J2000)":"14.092777777777778","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"30","详细描述":"pretty faint, pretty large, round","简略描述":"pF, pL, R"},{"ID":"6571","标识":"NGC6571","M标识":"NGC6571","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h10m49.3s","赤经D(J2000)":"18.18036111111111","赤纬(J2000)":"+21h14m21s","赤纬D(J2000)":"21.239166666666666","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stell"},{"ID":"6572","标识":"NGC6572","M标识":"NGC6572","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"蓝壁球星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"18h12m6.4s","赤经D(J2000)":"18.201777777777778","赤纬(J2000)":"+6h51m15s","赤纬D(J2000)":"6.854166666666666","可见光星等V":"8.1","摄影(蓝光)星等B":"9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.25","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, very bright, very small, round, a little hazy","简略描述":"planetary, vB, vS, R, l hazy"},{"ID":"6573","标识":"NGC6573","M标识":"NGC6573","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h13m41.5s","赤经D(J2000)":"18.228194444444444","赤纬(J2000)":"-22h7m8s","赤纬D(J2000)":"-22.11888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, stars very small","简略描述":"Cl, st vS"},{"ID":"6574","标识":"NGC6574","M标识":"NGC6574","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h11m51.2s","赤经D(J2000)":"18.197555555555557","赤纬(J2000)":"+14h58m54s","赤纬D(J2000)":"14.981666666666667","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"160","详细描述":"pretty bright, small, round","简略描述":"pB, S, R"},{"ID":"6575","标识":"NGC6575","M标识":"NGC6575","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h10m57.5s","赤经D(J2000)":"18.18263888888889","赤纬(J2000)":"+31h6m58s","赤纬D(J2000)":"31.116111111111113","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"65","详细描述":"pretty bright, small, round","简略描述":"pB, S, R"},{"ID":"6576","标识":"NGC6576","M标识":"NGC6576","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h11m47.9s","赤经D(J2000)":"18.196638888888888","赤纬(J2000)":"+21h25m44s","赤纬D(J2000)":"21.42888888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"6577","标识":"NGC6577","M标识":"NGC6577","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h12m1.1s","赤经D(J2000)":"18.200305555555556","赤纬(J2000)":"+21h27m50s","赤纬D(J2000)":"21.46388888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"6","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"6578","标识":"NGC6578","M标识":"NGC6578","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h16m16.5s","赤经D(J2000)":"18.27125","赤纬(J2000)":"-20h27m0s","赤纬D(J2000)":"-20.45","可见光星等V":"12.9","摄影(蓝光)星等B":"13.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.18","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, stellar, equal to 13th magnitude star","简略描述":"planetary, stellar = 13 mag"},{"ID":"6579","标识":"NGC6579","M标识":"NGC6579","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h12m31.8s","赤经D(J2000)":"18.20883333333333","赤纬(J2000)":"+21h25m14s","赤纬D(J2000)":"21.420555555555556","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, western of double nebula","简略描述":"F, p of D neb"},{"ID":"6580","标识":"NGC6580","M标识":"NGC6580","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h12m33.7s","赤经D(J2000)":"18.20936111111111","赤纬(J2000)":"+21h25m33s","赤纬D(J2000)":"21.425833333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"135","详细描述":"faint, eastern of double nebula","简略描述":"F, f of D neb"},{"ID":"6581","标识":"NGC6581","M标识":"NGC6581","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h12m18.3s","赤经D(J2000)":"18.205083333333334","赤纬(J2000)":"+25h39m46s","赤纬D(J2000)":"25.662777777777777","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, diffuse, between 2 faint stars","简略描述":"eF, dif, bet 2 F st"},{"ID":"6582","标识":"NGC6582","M标识":"NGC6582","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h11m1.8s","赤经D(J2000)":"18.183833333333332","赤纬(J2000)":"+49h54m41s","赤纬D(J2000)":"49.91138888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"most extremely faint, pretty small, round","简略描述":"eeF, pS, R"},{"ID":"6583","标识":"NGC6583","M标识":"NGC6583","拓展名":"","组件":"","Class":"VII 31","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1m","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h15m48.8s","赤经D(J2000)":"18.263555555555556","赤纬(J2000)":"-22h8m15s","赤纬D(J2000)":"-22.1375","可见光星等V":"10","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, pretty compressed, considerably extended, stars from 13th magnitude","简略描述":"Cl, pRi, pC, cE, st 13…"},{"ID":"6584","标识":"NGC6584","M标识":"NGC6584","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VIII","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"18h18m37.7s","赤经D(J2000)":"18.310472222222224","赤纬(J2000)":"-52h12m52s","赤纬D(J2000)":"-52.214444444444446","可见光星等V":"7.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6.6","短轴(分)":"","方位角":"","详细描述":"a globular cluster, considerably bright, considerably large, round, gradually much brighter middle, well resolved, clearly consisting of stars, stars from 15th magnitude","简略描述":"globular, cB, cL, R, gmbM, rrr, st 15"},{"ID":"6585","标识":"NGC6585","M标识":"NGC6585","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h12m21.9s","赤经D(J2000)":"18.206083333333332","赤纬(J2000)":"+39h38m0s","赤纬D(J2000)":"39.63333333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"50","详细描述":"most extremely faint, small, extremely extended, between several bright stars","简略描述":"eeF, S, eE, bet sev B st"},{"ID":"6586","标识":"NGC6586","M标识":"NGC6586","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h13m38.4s","赤经D(J2000)":"18.22733333333333","赤纬(J2000)":"+21h5m27s","赤纬D(J2000)":"21.090833333333332","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"105","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"6587","标识":"NGC6587","M标识":"NGC6587","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h13m50.8s","赤经D(J2000)":"18.230777777777774","赤纬(J2000)":"+18h49m33s","赤纬D(J2000)":"18.825833333333332","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"21","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"6588","标识":"NGC6588","M标识":"NGC6588","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h21m27s","赤经D(J2000)":"18.3575","赤纬(J2000)":"-63h48m24s","赤纬D(J2000)":"-63.806666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, 6th magnitude star to southwest","简略描述":"eF, S, * 6 sp"},{"ID":"6589","标识":"NGC6589","M标识":"NGC6589","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h16m51.7s","赤经D(J2000)":"18.281027777777776","赤纬(J2000)":"-19h46m41s","赤纬D(J2000)":"-19.778055555555554","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"3","方位角":"","详细描述":"a double star in center of extremely faint, pretty large nebulosity","简略描述":"D * in centre of eF, pL neby"},{"ID":"6590","标识":"NGC6590","M标识":"NGC6590","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"Nb","含重复类型":"Dup","形态":"EN+OCL","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h17m4.8s","赤经D(J2000)":"18.28466666666667","赤纬(J2000)":"-19h51m58s","赤纬D(J2000)":"-19.866111111111113","可见光星等V":"99","摄影(蓝光)星等B":"7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"11","短轴(分)":"","方位角":"","详细描述":"a double star in center of pretty faint, pretty large, round nebulosity","简略描述":"D * in centre of pF, pL, R neby"},{"ID":"6591","标识":"NGC6591","M标识":"NGC6591","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h14m3.7s","赤经D(J2000)":"18.234361111111113","赤纬(J2000)":"+21h3m49s","赤纬D(J2000)":"21.06361111111111","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"95","详细描述":"most extremely faint, very small, stellar","简略描述":"eeF, vS, stell"},{"ID":"6592","标识":"NGC6592","M标识":"NGC6592","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h9m50.6s","赤经D(J2000)":"18.164055555555553","赤纬(J2000)":"+61h25m21s","赤纬D(J2000)":"61.4225","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"126","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"6593","标识":"NGC6593","M标识":"NGC6593","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h14m3.6s","赤经D(J2000)":"18.234333333333336","赤纬(J2000)":"+22h17m5s","赤纬D(J2000)":"22.284722222222225","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"162","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"6594","标识":"NGC6594","M标识":"NGC6594","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h10m5.6s","赤经D(J2000)":"18.168222222222223","赤纬(J2000)":"+61h8m1s","赤纬D(J2000)":"61.13361111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1","短轴(分)":"0.7","方位角":"90","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"6595","标识":"NGC6595","M标识":"NGC6595","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h17m4.8s","赤经D(J2000)":"18.28466666666667","赤纬(J2000)":"-19h51m58s","赤纬D(J2000)":"-19.866111111111113","可见光星等V":"99","摄影(蓝光)星等B":"7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"11","短轴(分)":"","方位角":"","详细描述":"a double star in center of pretty faint, pretty large, round nebulosity","简略描述":"F, pL, cE, ** inv"},{"ID":"6596","标识":"NGC6596","M标识":"NGC6596","拓展名":"","组件":"","Class":"VIII 55","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h17m33s","赤经D(J2000)":"18.2925","赤纬(J2000)":"-16h39m0s","赤纬D(J2000)":"-16.65","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, a little compressed","简略描述":"Cl, lC"},{"ID":"6597","标识":"NGC6597","M标识":"NGC6597","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h11m13.4s","赤经D(J2000)":"18.187055555555556","赤纬(J2000)":"+61h10m52s","赤纬D(J2000)":"61.18111111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"99","详细描述":"very faint, very small, round, bright star near","简略描述":"vF, vS, R, B * nr"},{"ID":"6598","标识":"NGC6598","M标识":"NGC6598","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h8m55.7s","赤经D(J2000)":"18.148805555555555","赤纬(J2000)":"+69h4m7s","赤纬D(J2000)":"69.06861111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"40","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"6599","标识":"NGC6599","M标识":"NGC6599","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h15m42.9s","赤经D(J2000)":"18.261916666666668","赤纬(J2000)":"+24h54m47s","赤纬D(J2000)":"24.913055555555555","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"69","详细描述":"pretty faint, very small, round, gradually brighter middle, small star attached on east","简略描述":"pF, vS, R, gbM, S * att f"},{"ID":"6600","标识":"NGC6600","M标识":"NGC6600","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h15m42.9s","赤经D(J2000)":"18.261916666666668","赤纬(J2000)":"+24h54m47s","赤纬D(J2000)":"24.913055555555555","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"69","详细描述":"faint, very small, stellar","简略描述":"F, vS, stell"},{"ID":"6601","标识":"NGC6601","M标识":"NGC6601","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h11m44.2s","赤经D(J2000)":"18.195611111111113","赤纬(J2000)":"+61h27m11s","赤纬D(J2000)":"61.45305555555556","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"42","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"6602","标识":"NGC6602","M标识":"NGC6602","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h16m34.2s","赤经D(J2000)":"18.276166666666665","赤纬(J2000)":"+25h2m37s","赤纬D(J2000)":"25.04361111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.7","方位角":"0","详细描述":"a cluster, very small, stars faint, 30 arcsec (wide), nebulous?","简略描述":"Cl, vS, st F, 30\", nebulous?"},{"ID":"6603","标识":"NGC6603","M标识":"NGC6603","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I1r","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h18m24s","赤经D(J2000)":"18.30666666666667","赤纬(J2000)":"-18h24m24s","赤纬D(J2000)":"-18.406666666666666","可见光星等V":"11.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a cluster, very rich, very much compressed, round, stars from 15th magnitude (in the Milky Way)","简略描述":"!, Cl, vRi, vmC, R, st 15 (M Way)"},{"ID":"6604","标识":"NGC6604","M标识":"NGC6604","拓展名":"","组件":"","Class":"VIII 15","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3p","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"18h18m6s","赤经D(J2000)":"18.301666666666666","赤纬(J2000)":"-12h13m0s","赤纬D(J2000)":"-12.216666666666667","可见光星等V":"6.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, a little rich, a little compressed","简略描述":"Cl, lRi, lC"},{"ID":"6605","标识":"NGC6605","M标识":"NGC6605","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"18h16m24s","赤经D(J2000)":"18.273333333333333","赤纬(J2000)":"-15h0m0s","赤纬D(J2000)":"-15","可见光星等V":"6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"29","短轴(分)":"","方位角":"","详细描述":"a cluster, a little rich, a little compressed, stars from 10th to 12th magnitude","简略描述":"Cl, lRi, lC, st 10…12"},{"ID":"6606","标识":"NGC6606","M标识":"NGC6606","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h14m41.3s","赤经D(J2000)":"18.244805555555555","赤纬(J2000)":"+43h16m7s","赤纬D(J2000)":"43.26861111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"69","详细描述":"very faint, small, round, gradually brighter middle, very faint star involved","简略描述":"vF, S, R, gbM, vf * inv"},{"ID":"6607","标识":"NGC6607","M标识":"NGC6607","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h12m14.9s","赤经D(J2000)":"18.204138888888888","赤纬(J2000)":"+61h20m0s","赤纬D(J2000)":"61.333333333333336","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, pretty small, round, very difficult","简略描述":"eF, pS, R, v diffic"},{"ID":"6608","标识":"NGC6608","M标识":"NGC6608","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h12m29.2s","赤经D(J2000)":"18.208111111111112","赤纬(J2000)":"+61h17m55s","赤纬D(J2000)":"61.29861111111111","可见光星等V":"15.1","摄影(蓝光)星等B":"15.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.1","方位角":"42","详细描述":"very faint, extremely small, round, very faint star near","简略描述":"vF, eS, R, vF * nr"},{"ID":"6609","标识":"NGC6609","M标识":"NGC6609","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h12m33.6s","赤经D(J2000)":"18.209333333333333","赤纬(J2000)":"+61h19m56s","赤纬D(J2000)":"61.33222222222223","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, extremely small, round, very faint star near","简略描述":"vF, pS, lE, F * nr"},{"ID":"6610","标识":"NGC6610","M标识":"NGC6610","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h11m51.2s","赤经D(J2000)":"18.197555555555557","赤纬(J2000)":"+14h58m54s","赤纬D(J2000)":"14.981666666666667","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"160","详细描述":"faint, small, extended, much brighter middle, mottled but not resolved","简略描述":"F, S, E, mbM, r"},{"ID":"6611","标识":"NGC6611","M标识":"M16","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"鹰星云","类型":"OCL","含重复类型":"OCL","形态":"II3mn","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"18h18m45s","赤经D(J2000)":"18.3125","赤纬(J2000)":"-13h47m54s","赤纬D(J2000)":"-13.798333333333334","可见光星等V":"6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a cluster, at least 100 stars large and small","简略描述":"Cl, at least 100 st L & S"},{"ID":"6612","标识":"NGC6612","M标识":"NGC6612","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h16m10.9s","赤经D(J2000)":"18.269694444444443","赤纬(J2000)":"+36h4m45s","赤纬D(J2000)":"36.07916666666667","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"most extremely faint, extremely small, round, very difficult","简略描述":"eeF, eS, R, v diffic"},{"ID":"6613","标识":"NGC6613","M标识":"M18","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"黑天鹅星团","类型":"OCL","含重复类型":"OCL","形态":"II3pn","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h19m58s","赤经D(J2000)":"18.33277777777778","赤纬(J2000)":"-17h6m6s","赤纬D(J2000)":"-17.101666666666667","可见光星等V":"6.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, very little compressed","简略描述":"Cl, P, vlC"},{"ID":"6614","标识":"NGC6614","M标识":"NGC6614","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h25m7.3s","赤经D(J2000)":"18.418694444444444","赤纬(J2000)":"-63h14m54s","赤纬D(J2000)":"-63.248333333333335","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"65","详细描述":"very faint, small, round, gradually a very little brighter middle, 9th magnitude star to west","简略描述":"vF, S, R, gvlbM, * 9 p"},{"ID":"6615","标识":"NGC6615","M标识":"NGC6615","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"18h18m33.4s","赤经D(J2000)":"18.30927777777778","赤纬(J2000)":"+13h15m55s","赤纬D(J2000)":"13.265277777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"165","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"6616","标识":"NGC6616","M标识":"NGC6616","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h17m41s","赤经D(J2000)":"18.294722222222223","赤纬(J2000)":"+22h14m16s","赤纬D(J2000)":"22.23777777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"59","详细描述":"very faint, extremely small, much extended, 2 faint stars near","简略描述":"vF, eS, mE, 2 F st nr"},{"ID":"6617","标识":"NGC6617","M标识":"NGC6617","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h14m2.9s","赤经D(J2000)":"18.23413888888889","赤纬(J2000)":"+61h19m10s","赤纬D(J2000)":"61.31944444444445","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"80","详细描述":"most extremely faint, pretty large, round, very difficult","简略描述":"eeF, pL, R, v diffic"},{"ID":"6618","标识":"NGC6618","M标识":"M17","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"奥米茄星云","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h20m47s","赤经D(J2000)":"18.34638888888889","赤纬(J2000)":"-16h10m18s","赤纬D(J2000)":"-16.171666666666667","可见光星等V":"99","摄影(蓝光)星等B":"6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"15","方位角":"","详细描述":"a magnificent or otherwise interesting object, bright, extremely large, extremely irregular figure, 2 hooked","简略描述":"!!!, B, eL, eiF, 2 hooked"},{"ID":"6619","标识":"NGC6619","M标识":"NGC6619","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h18m55.5s","赤经D(J2000)":"18.315416666666668","赤纬(J2000)":"+23h39m19s","赤纬D(J2000)":"23.655277777777776","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"102","详细描述":"faint, small, extended","简略描述":"F, S, E"},{"ID":"6620","标识":"NGC6620","M标识":"NGC6620","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h22m54.2s","赤经D(J2000)":"18.381722222222223","赤纬(J2000)":"-26h49m16s","赤纬D(J2000)":"-26.82111111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"15","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.13","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, stellar","简略描述":"planetary, stellar"},{"ID":"6621","标识":"NGC6621","M标识":"NGC6621","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"爱德华星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h12m55.6s","赤经D(J2000)":"18.215444444444444","赤纬(J2000)":"+68h21m47s","赤纬D(J2000)":"68.36305555555555","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.1","短轴(分)":"0.8","方位角":"145","详细描述":"pretty faint, pretty small, round, a little brighter middle, southern of 2","简略描述":"pF, pS, R, lbM, s of 2"},{"ID":"6622","标识":"NGC6622","M标识":"NGC6622","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"爱德华星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h12m59.9s","赤经D(J2000)":"18.216638888888887","赤纬(J2000)":"+68h21m15s","赤纬D(J2000)":"68.35416666666666","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"145","详细描述":"pretty faint, pretty small, round, a little brighter middle, southern of 2","简略描述":"pF, pS, R, lbM, n of 2"},{"ID":"6623","标识":"NGC6623","M标识":"NGC6623","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h19m42.9s","赤经D(J2000)":"18.328583333333334","赤纬(J2000)":"+23h42m34s","赤纬D(J2000)":"23.709444444444443","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"155","详细描述":"pretty faint, small, round, brighter middle","简略描述":"pF, S, R, bM"},{"ID":"6624","标识":"NGC6624","M标识":"NGC6624","拓展名":"","组件":"","Class":"I 50","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VI","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h23m40.5s","赤经D(J2000)":"18.394583333333333","赤纬(J2000)":"-30h21m38s","赤纬D(J2000)":"-30.360555555555557","可见光星等V":"7.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8.8","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very bright, pretty large, round, well resolved, clearly consisting of stars, stars from 16th magnitude","简略描述":"globular, vB, pL, R, rrr, st 16"},{"ID":"6625","标识":"NGC6625","M标识":"NGC6625","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"盾牌座","星座(En)":"SCT","赤经(J2000)":"18h23m12.8s","赤经D(J2000)":"18.386888888888887","赤纬(J2000)":"-12h0m47s","赤纬D(J2000)":"-12.013055555555555","可见光星等V":"9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"39","短轴(分)":"","方位角":"","详细描述":"a cluster, a little compressed, a little rich, stars from 11th to 12th magnitude","简略描述":"Cl, lC, lRi, st 11…12"},{"ID":"6626","标识":"NGC6626","M标识":"M28","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"IV","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h24m32.9s","赤经D(J2000)":"18.409138888888886","赤纬(J2000)":"-24h52m10s","赤纬D(J2000)":"-24.869444444444444","可见光星等V":"6.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"13.8","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a globular cluster, very bright, large, round, gradually an extremely compressed middle, well resolved, clearly consisting of stars, stars from 14th to 16th magnitude","简略描述":"!, globular, vB, L, R, geCM, rrr, st 14…16"},{"ID":"6627","标识":"NGC6627","M标识":"NGC6627","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h22m38.9s","赤经D(J2000)":"18.377472222222224","赤纬(J2000)":"+15h41m54s","赤纬D(J2000)":"15.698333333333334","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"70","详细描述":"very faint, pretty large","简略描述":"vF, pL"},{"ID":"6628","标识":"NGC6628","M标识":"NGC6628","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h22m21.7s","赤经D(J2000)":"18.372694444444445","赤纬(J2000)":"+23h28m39s","赤纬D(J2000)":"23.4775","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.9","短轴(分)":"1.3","方位角":"87","详细描述":"very faint, small, a little extended, brighter middle","简略描述":"vF, S, lE, bM"},{"ID":"6629","标识":"NGC6629","M标识":"NGC6629","拓展名":"","组件":"","Class":"II 204","业余排名":"5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h25m42.4s","赤经D(J2000)":"18.428444444444445","赤纬(J2000)":"-23h12m8s","赤纬D(J2000)":"-23.202222222222222","可见光星等V":"11.3","摄影(蓝光)星等B":"11.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.27","短轴(分)":"","方位角":"","详细描述":"a planetary nebula or a globular cluster, pretty bright, most extremely small, round","简略描述":"planetary or globular, pB, eeS, R"},{"ID":"6630","标识":"NGC6630","M标识":"NGC6630","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h32m34.5s","赤经D(J2000)":"18.542916666666667","赤纬(J2000)":"-63h17m31s","赤纬D(J2000)":"-63.29194444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"","详细描述":"pretty faint, small, round, gradually brighter middle","简略描述":"pF, S, R, gbM"},{"ID":"6631","标识":"NGC6631","M标识":"NGC6631","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"盾牌座","星座(En)":"SCT","赤经(J2000)":"18h27m9.5s","赤经D(J2000)":"18.452638888888888","赤纬(J2000)":"-12h1m35s","赤纬D(J2000)":"-12.02638888888889","可见光星等V":"11.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, stars from 12th to 15th magnitude","简略描述":"Cl, pL, pRi, st 12…15"},{"ID":"6632","标识":"NGC6632","M标识":"NGC6632","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h25m3.1s","赤经D(J2000)":"18.417527777777778","赤纬(J2000)":"+27h32m9s","赤纬D(J2000)":"27.535833333333336","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3","短轴(分)":"1.4","方位角":"155","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"6633","标识":"NGC6633","M标识":"NGC6633","拓展名":"","组件":"","Class":"VIII 72","业余排名":"5","中文名":"双胞胎星团","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"18h27m15.1s","赤经D(J2000)":"18.454194444444443","赤纬(J2000)":"+6h30m30s","赤纬D(J2000)":"6.508333333333334","可见光星等V":"4.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a cluster, a little compressed, large stars","简略描述":"Cl, lC, st L"},{"ID":"6634","标识":"NGC6634","M标识":"NGC6634","拓展名":"","组件":"","Class":"","业余排名":"4","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h29m55.3s","赤经D(J2000)":"18.498694444444446","赤纬(J2000)":"-33h30m40s","赤纬D(J2000)":"-33.51111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a nebula, without stars","简略描述":"Neb, without stars"},{"ID":"6635","标识":"NGC6635","M标识":"NGC6635","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h27m37s","赤经D(J2000)":"18.460277777777776","赤纬(J2000)":"+14h49m7s","赤纬D(J2000)":"14.81861111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.9","方位角":"42","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"6636","标识":"NGC6636","M标识":"NGC6636","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h22m2.6s","赤经D(J2000)":"18.36738888888889","赤纬(J2000)":"+66h37m3s","赤纬D(J2000)":"66.61749999999999","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.1","短轴(分)":"0.3","方位角":"179","详细描述":"most extremely faint, pretty small, round, 3 stars near","简略描述":"eeF, pS, R, 3 st nr"},{"ID":"6637","标识":"NGC6637","M标识":"M69","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"V","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h31m23.2s","赤经D(J2000)":"18.52311111111111","赤纬(J2000)":"-32h20m51s","赤纬D(J2000)":"-32.347500000000004","可见光星等V":"8.3","摄影(蓝光)星等B":"9.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7.1","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, large, round, well resolved, clearly consisting of stars, stars from 14th to 16th magnitude","简略描述":"globular, B, L, R, rrr, st 14…16"},{"ID":"6638","标识":"NGC6638","M标识":"NGC6638","拓展名":"","组件":"","Class":"I 51","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VI","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h30m56.2s","赤经D(J2000)":"18.51561111111111","赤纬(J2000)":"-25h29m45s","赤纬D(J2000)":"-25.495833333333334","可见光星等V":"9.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7.3","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, small, round, partially resolved (some stars seen)","简略描述":"globular, B, S, R, rr"},{"ID":"6639","标识":"NGC6639","M标识":"NGC6639","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"盾牌座","星座(En)":"SCT","赤经(J2000)":"18h30m57.8s","赤经D(J2000)":"18.516055555555557","赤纬(J2000)":"-13h10m14s","赤纬D(J2000)":"-13.170555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster (in the Milky Way)","简略描述":"Cl (in M Way)"},{"ID":"6640","标识":"NGC6640","M标识":"NGC6640","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h28m8.1s","赤经D(J2000)":"18.468916666666665","赤纬(J2000)":"+34h18m9s","赤纬D(J2000)":"34.302499999999995","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"153","详细描述":"very faint, small, round, very little brighter middle","简略描述":"vF, S, R, vlbM"},{"ID":"6641","标识":"NGC6641","M标识":"NGC6641","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h28m57.3s","赤经D(J2000)":"18.48258333333333","赤纬(J2000)":"+22h54m12s","赤纬D(J2000)":"22.903333333333332","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"102","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"6642","标识":"NGC6642","M标识":"NGC6642","拓展名":"","组件":"","Class":"II 205","业余排名":"3","中文名":"蝌蚪星团","类型":"GCL","含重复类型":"GCL","形态":"IV","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h31m54.3s","赤经D(J2000)":"18.53175","赤纬(J2000)":"-23h28m33s","赤纬D(J2000)":"-23.47583333333333","可见光星等V":"8.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5.8","短轴(分)":"","方位角":"","详细描述":"a globular cluster, pretty bright, pretty large, irregularly round, gradually pretty much brighter middle, well resolved, clearly consisting of stars, stars of 16th magnitude","简略描述":"globular, pB, pL, iR, gpmbM, rrr, st 16"},{"ID":"6643","标识":"NGC6643","M标识":"NGC6643","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h19m45.6s","赤经D(J2000)":"18.329333333333334","赤纬(J2000)":"+74h34m6s","赤纬D(J2000)":"74.56833333333333","可见光星等V":"11.1","摄影(蓝光)星等B":"11.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.7","短轴(分)":"1.8","方位角":"38","详细描述":"pretty bright, pretty large, extended 50°, 2 stars to west (Auwers 40)","简略描述":"pB, pL, E 50°, 2 st p (Auw 40)"},{"ID":"6644","标识":"NGC6644","M标识":"NGC6644","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h32m34.7s","赤经D(J2000)":"18.542972222222225","赤纬(J2000)":"-25h7m42s","赤纬D(J2000)":"-25.128333333333334","可见光星等V":"10.7","摄影(蓝光)星等B":"12.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.2","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, stellar","简略描述":"planetary, stellar"},{"ID":"6645","标识":"NGC6645","M标识":"NGC6645","拓展名":"","组件":"","Class":"VI 23","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1m","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h32m37.8s","赤经D(J2000)":"18.543833333333335","赤纬(J2000)":"-16h53m2s","赤纬D(J2000)":"-16.883888888888887","可见光星等V":"8.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, very rich, pretty compressed, stars from 11th to 15th magnitude","简略描述":"Cl, pL, vRi, pC, st 11…15"},{"ID":"6646","标识":"NGC6646","M标识":"NGC6646","拓展名":"","组件":"","Class":"II 907","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h29m38.7s","赤经D(J2000)":"18.494083333333336","赤纬(J2000)":"+39h51m54s","赤纬D(J2000)":"39.865","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"63","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"6647","标识":"NGC6647","M标识":"NGC6647","拓展名":"","组件":"","Class":"VIII 14","业余排名":"15","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h32m49s","赤经D(J2000)":"18.546944444444446","赤纬(J2000)":"-17h13m42s","赤纬D(J2000)":"-17.22833333333333","可见光星等V":"99","摄影(蓝光)星等B":"8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, large, rich, a little compressed, stars very small","简略描述":"Cl, L, Ri, lC, st vS"},{"ID":"6648","标识":"NGC6648","M标识":"NGC6648","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h25m37.4s","赤经D(J2000)":"18.427055555555558","赤纬(J2000)":"+64h58m33s","赤纬D(J2000)":"64.97583333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"small, pretty much extended, double star involved (Auwers 41)","简略描述":"S, pmE, ** inv (Auw 41)"},{"ID":"6649","标识":"NGC6649","M标识":"NGC6649","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"盾牌座","星座(En)":"SCT","赤经(J2000)":"18h33m28.3s","赤经D(J2000)":"18.557861111111112","赤纬(J2000)":"-10h24m8s","赤纬D(J2000)":"-10.402222222222223","可见光星等V":"8.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed, pretty small, stars of 9th or 10th and from 12th to 13th magnitude","简略描述":"Cl, P, lC, pS, st 9·10, 12…13"},{"ID":"6650","标识":"NGC6650","M标识":"NGC6650","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h25m27.9s","赤经D(J2000)":"18.42441666666667","赤纬(J2000)":"+68h0m23s","赤纬D(J2000)":"68.00638888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"6651","标识":"NGC6651","M标识":"NGC6651","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h24m19.7s","赤经D(J2000)":"18.405472222222222","赤纬(J2000)":"+71h36m8s","赤纬D(J2000)":"71.60222222222221","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"30","详细描述":"most extremely faint, pretty small, a little extended, very difficult","简略描述":"eeF, pS, lE, v diffic"},{"ID":"6652","标识":"NGC6652","M标识":"NGC6652","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VI","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h35m45.7s","赤经D(J2000)":"18.596027777777778","赤纬(J2000)":"-32h59m23s","赤纬D(J2000)":"-32.98972222222222","可见光星等V":"8.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"bright, small, a little extended, well resolved, clearly consisting of stars, stars from the 15th magnitude","简略描述":"B, S, lE, rrr, st 15"},{"ID":"6653","标识":"NGC6653","M标识":"NGC6653","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h44m38.6s","赤经D(J2000)":"18.744055555555555","赤纬(J2000)":"-73h15m47s","赤纬D(J2000)":"-73.26305555555555","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"","详细描述":"very faint, small, a little extended, gradually a little brighter middle","简略描述":"vF, S, lE, glbM"},{"ID":"6654","标识":"NGC6654","M标识":"NGC6654","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h24m7.6s","赤经D(J2000)":"18.40211111111111","赤纬(J2000)":"+73h10m58s","赤纬D(J2000)":"73.18277777777779","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.6","短轴(分)":"2.1","方位角":"0","详细描述":"a 12th or 13th magnitude star in pretty bright, pretty large nebulosity","简略描述":"* 12·13 in pB, pL neby"},{"ID":"6655","标识":"NGC6655","M标识":"NGC6655","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"盾牌座","星座(En)":"SCT","赤经(J2000)":"18h34m30.8s","赤经D(J2000)":"18.575222222222223","赤纬(J2000)":"-5h55m16s","赤纬D(J2000)":"-5.921111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, extended (Auwers 42)","简略描述":"pF, vS, E (Auw 42)"},{"ID":"6656","标识":"NGC6656","M标识":"M22","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"人马座大星团","类型":"GCL","含重复类型":"GCL","形态":"VII","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h36m24.2s","赤经D(J2000)":"18.606722222222224","赤纬(J2000)":"-23h54m10s","赤纬D(J2000)":"-23.902777777777775","可见光星等V":"5.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"32","短轴(分)":"","方位角":"","详细描述":"a most remarkable object, a globular cluster, very bright, very large, round, very rich, very much compressed, stars from 11th to 15th magnitude","简略描述":"!!, globular, vB, vL, R, vRi, vmC, st 11…15"},{"ID":"6657","标识":"NGC6657","M标识":"NGC6657","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h33m1.5s","赤经D(J2000)":"18.550416666666667","赤纬(J2000)":"+34h3m39s","赤纬D(J2000)":"34.06083333333333","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.6","方位角":"138","详细描述":"very faint, very small, suddenly brighter middle","简略描述":"vF, vS, sbM"},{"ID":"6658","标识":"NGC6658","M标识":"NGC6658","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h33m55.7s","赤经D(J2000)":"18.565472222222223","赤纬(J2000)":"+22h53m17s","赤纬D(J2000)":"22.888055555555557","可见光星等V":"12.9","摄影(蓝光)星等B":"14","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"5","详细描述":"faint, very small, a little extended","简略描述":"F, vS, lE"},{"ID":"6659","标识":"NGC6659","M标识":"NGC6659","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h34m0s","赤经D(J2000)":"18.566666666666666","赤纬(J2000)":"+23h35m42s","赤纬D(J2000)":"23.595","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"5","方位角":"","详细描述":"a cluster, poor, a little compressed","简略描述":"Cl, P, lC"},{"ID":"6660","标识":"NGC6660","M标识":"NGC6660","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h34m36.7s","赤经D(J2000)":"18.57686111111111","赤纬(J2000)":"+22h54m33s","赤纬D(J2000)":"22.909166666666664","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"145","详细描述":"pretty bright, pretty small, round, much brighter middle, between 2 stars","简略描述":"pB, pS, R, mbM, bet 2 st"},{"ID":"6661","标识":"NGC6661","M标识":"NGC6661","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h34m36.7s","赤经D(J2000)":"18.57686111111111","赤纬(J2000)":"+22h54m33s","赤纬D(J2000)":"22.909166666666664","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"145","详细描述":"pretty bright, pretty small, round, much brighter middle, between 2 stars","简略描述":"F, vS, R, gbM"},{"ID":"6662","标识":"NGC6662","M标识":"NGC6662","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h34m11.2s","赤经D(J2000)":"18.569777777777777","赤纬(J2000)":"+32h3m53s","赤纬D(J2000)":"32.06472222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"20","详细描述":"a faint star in very faint, very small, a little extended nebulosity","简略描述":"F * in vF, vS, lE neby"},{"ID":"6663","标识":"NGC6663","M标识":"NGC6663","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h33m33.7s","赤经D(J2000)":"18.559361111111112","赤纬(J2000)":"+40h2m57s","赤纬D(J2000)":"40.049166666666665","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.9","方位角":"140","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"6664","标识":"NGC6664","M标识":"NGC6664","拓展名":"","组件":"","Class":"VIII 12","业余排名":"6","中文名":"圣诞雪橇星团","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"盾牌座","星座(En)":"SCT","赤经(J2000)":"18h36m30.6s","赤经D(J2000)":"18.608500000000003","赤纬(J2000)":"-8h11m15s","赤纬D(J2000)":"-8.1875","可见光星等V":"7.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, large, pretty rich, very little compressed","简略描述":"Cl, L, pRi, vlC"},{"ID":"6665","标识":"NGC6665","M标识":"NGC6665","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h34m30s","赤经D(J2000)":"18.575","赤纬(J2000)":"+30h43m15s","赤纬D(J2000)":"30.72083333333333","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"0","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"6666","标识":"NGC6666","M标识":"NGC6666","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h34m44s","赤经D(J2000)":"18.578888888888887","赤纬(J2000)":"+33h35m18s","赤纬D(J2000)":"33.58833333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, round, very difficult","简略描述":"eF, S, R, v diffic"},{"ID":"6667","标识":"NGC6667","M标识":"NGC6667","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h30m39.7s","赤经D(J2000)":"18.511027777777777","赤纬(J2000)":"+67h59m12s","赤纬D(J2000)":"67.98666666666666","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.4","短轴(分)":"1.1","方位角":"105","详细描述":"very faint, pretty large, a little extended, very faint double star near","简略描述":"vF, pL, lE, vF D * nr"},{"ID":"6668","标识":"NGC6668","M标识":"NGC6668","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h30m39.7s","赤经D(J2000)":"18.511027777777777","赤纬(J2000)":"+67h59m12s","赤纬D(J2000)":"67.98666666666666","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.4","短轴(分)":"1.1","方位角":"105","详细描述":"very faint, pretty large, a little extended, very faint double star near","简略描述":"pB, pS, mE"},{"ID":"6669","标识":"NGC6669","M标识":"NGC6669","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h37m15s","赤经D(J2000)":"18.620833333333334","赤纬(J2000)":"+22h11m47s","赤纬D(J2000)":"22.19638888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large","简略描述":"eF, pL"},{"ID":"6670","标识":"NGC6670","M标识":"NGC6670","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h33m33.4s","赤经D(J2000)":"18.55927777777778","赤纬(J2000)":"+59h53m16s","赤纬D(J2000)":"59.88777777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"90","详细描述":"most extremely faint, small, much extended, very difficult","简略描述":"eeF, S, mE, v diffic"},{"ID":"6671","标识":"NGC6671","M标识":"NGC6671","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h37m26.2s","赤经D(J2000)":"18.623944444444444","赤纬(J2000)":"+26h25m3s","赤纬D(J2000)":"26.4175","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"27","详细描述":"very faint, very small, round, much brighter middle","简略描述":"vF, vS, R, mbM"},{"ID":"6672","标识":"NGC6672","M标识":"NGC6672","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h36m14.5s","赤经D(J2000)":"18.60402777777778","赤纬(J2000)":"+42h56m49s","赤纬D(J2000)":"42.94694444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"2 close stars, north one nebulous","简略描述":"2 close st, n one nebs"},{"ID":"6673","标识":"NGC6673","M标识":"NGC6673","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h45m6.3s","赤经D(J2000)":"18.75175","赤纬(J2000)":"-62h17m49s","赤纬D(J2000)":"-62.29694444444444","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2.2","短轴(分)":"1","方位角":"26","详细描述":"pretty faint, small, round, pretty suddenly brighter middle, mottled but not resolved","简略描述":"pF, S, R, psbM, r"},{"ID":"6674","标识":"NGC6674","M标识":"NGC6674","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h38m33.9s","赤经D(J2000)":"18.64275","赤纬(J2000)":"+25h22m28s","赤纬D(J2000)":"25.374444444444446","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"4.2","短轴(分)":"2.1","方位角":"143","详细描述":"faint, pretty small, irregularly round, brighter middle","简略描述":"F, pS, iR, bM"},{"ID":"6675","标识":"NGC6675","M标识":"NGC6675","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h37m26.2s","赤经D(J2000)":"18.623944444444444","赤纬(J2000)":"+40h3m28s","赤纬D(J2000)":"40.05777777777777","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"130","详细描述":"very faint, extended, 45 arcsec (width)","简略描述":"vF, E, 45\""},{"ID":"6676","标识":"NGC6676","M标识":"NGC6676","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h33m9.6s","赤经D(J2000)":"18.552666666666667","赤纬(J2000)":"+66h57m36s","赤纬D(J2000)":"66.96000000000001","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"142","详细描述":"most extremely faint, pretty small, a little extended, a little brighter middle, very difficult","简略描述":"eeF, pS, lE, lbM, v diffic"},{"ID":"6677","标识":"NGC6677","M标识":"NGC6677","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h33m30.4s","赤经D(J2000)":"18.558444444444444","赤纬(J2000)":"+67h8m13s","赤纬D(J2000)":"67.13694444444445","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"10.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"90","详细描述":"very faint, very small, between star very close and very faint double star","简略描述":"vF, vS, bet * v close & vF D *"},{"ID":"6678","标识":"NGC6678","M标识":"NGC6678","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h30m39.7s","赤经D(J2000)":"18.511027777777777","赤纬(J2000)":"+67h59m12s","赤纬D(J2000)":"67.98666666666666","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.4","短轴(分)":"1.1","方位角":"105","详细描述":"very faint, pretty large, a little extended, very faint double star near","简略描述":"pF, pS, R"},{"ID":"6679","标识":"NGC6679","M标识":"NGC6679","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h33m35.7s","赤经D(J2000)":"18.559916666666666","赤纬(J2000)":"+67h6m36s","赤纬D(J2000)":"67.11","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"95","详细描述":"very faint, very small, between star very close and very faint double star","简略描述":"eF, close double"},{"ID":"6680","标识":"NGC6680","M标识":"NGC6680","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h39m44s","赤经D(J2000)":"18.66222222222222","赤纬(J2000)":"+22h18m59s","赤纬D(J2000)":"22.31638888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"45","详细描述":"extremely faint, small, close to a small star","简略描述":"eF, S, close to a S *"},{"ID":"6681","标识":"NGC6681","M标识":"M70","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"V","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h43m12.7s","赤经D(J2000)":"18.72019444444444","赤纬(J2000)":"-32h17m29s","赤纬D(J2000)":"-32.29138888888889","可见光星等V":"7.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, pretty large, round, gradually brighter middle, stars from 14th to 17th magnitude","简略描述":"globular, B, pL, R, gbM, st 14…17"},{"ID":"6682","标识":"NGC6682","M标识":"NGC6682","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Cloud","星座(Zh)":"盾牌座","星座(En)":"SCT","赤经(J2000)":"18h39m37s","赤经D(J2000)":"18.660277777777775","赤纬(J2000)":"-4h48m48s","赤纬D(J2000)":"-4.8133333333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"47","短轴(分)":"","方位角":"","详细描述":"a cluster, large, rich, stars from 10th to 18th magnitude","简略描述":"Cl, L, Ri, st 10…18"},{"ID":"6683","标识":"NGC6683","M标识":"NGC6683","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"盾牌座","星座(En)":"SCT","赤经(J2000)":"18h42m12.7s","赤经D(J2000)":"18.703527777777776","赤纬(J2000)":"-6h12m45s","赤纬D(J2000)":"-6.2125","可见光星等V":"9.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, very rich, very little compressed (in the Milky Way)","简略描述":"Cl, vRi, vlC (in M. Way)"},{"ID":"6684","标识":"NGC6684","M标识":"NGC6684","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h48m57.4s","赤经D(J2000)":"18.815944444444444","赤纬(J2000)":"-65h10m22s","赤纬D(J2000)":"-65.17277777777778","可见光星等V":"10.4","摄影(蓝光)星等B":"11.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"4.6","短轴(分)":"2.9","方位角":"35","详细描述":"very bright, pretty large, round, very gradually then pretty suddenly very much brighter middle, 7th magnitude star to west","简略描述":"vB, pL, R, vg, psvmbM, * 7 p"},{"ID":"6685","标识":"NGC6685","M标识":"NGC6685","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h39m58.6s","赤经D(J2000)":"18.666277777777776","赤纬(J2000)":"+39h58m56s","赤纬D(J2000)":"39.98222222222223","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"30","详细描述":"most extremely faint, very small, round, very difficult, southwestern of 2","简略描述":"eeF, vS, R, v diffic, sp of 2"},{"ID":"6686","标识":"NGC6686","M标识":"NGC6686","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h40m6.9s","赤经D(J2000)":"18.668583333333334","赤纬(J2000)":"+40h8m17s","赤纬D(J2000)":"40.13805555555555","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"84","详细描述":"most extremely faint, extremely small, round, very difficult, northeastern of 2","简略描述":"eeF, eS, R, v diffic, nf of 2"},{"ID":"6687","标识":"NGC6687","M标识":"NGC6687","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h37m22s","赤经D(J2000)":"18.622777777777777","赤纬(J2000)":"+59h38m35s","赤纬D(J2000)":"59.643055555555556","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"60","详细描述":"extremely faint, pretty large, round, between 2 stars","简略描述":"eF, pL, R, bet 2 st"},{"ID":"6688","标识":"NGC6688","M标识":"NGC6688","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h40m39.9s","赤经D(J2000)":"18.67775","赤纬(J2000)":"+36h17m22s","赤纬D(J2000)":"36.28944444444444","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"75","详细描述":"faint, pretty small, round, brighter middle","简略描述":"F, pS, R, bM"},{"ID":"6689","标识":"NGC6689","M标识":"NGC6689","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h34m49.9s","赤经D(J2000)":"18.580527777777778","赤纬(J2000)":"+70h31m27s","赤纬D(J2000)":"70.52416666666666","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"4","短轴(分)":"1.3","方位角":"171","详细描述":"very faint, pretty small, 8th magnitude star 7 arcmin to east","简略描述":"vF, pS, * 8 f, 7' dist"},{"ID":"6690","标识":"NGC6690","M标识":"NGC6690","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBcd","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h34m49.9s","赤经D(J2000)":"18.580527777777778","赤纬(J2000)":"+70h31m27s","赤纬D(J2000)":"70.52416666666666","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"4","短轴(分)":"1.3","方位角":"171","详细描述":"very faint, pretty small, 8th magnitude star 7 arcmin to east","简略描述":"pF, L, R, bet 2 st"},{"ID":"6691","标识":"NGC6691","M标识":"NGC6691","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h39m12s","赤经D(J2000)":"18.653333333333332","赤纬(J2000)":"+55h38m30s","赤纬D(J2000)":"55.641666666666666","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"1.5","方位角":"48","详细描述":"very faint, pretty large, round, pretty bright star near to south","简略描述":"vF, pL, R, pB * S nr"},{"ID":"6692","标识":"NGC6692","M标识":"NGC6692","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h41m41.5s","赤经D(J2000)":"18.694861111111113","赤纬(J2000)":"+34h50m39s","赤纬D(J2000)":"34.844166666666666","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.7","方位角":"110","详细描述":"very faint, very small, irregularly extended, several very faint stars involved","简略描述":"vF, vS, irr E, sev vF st inv"},{"ID":"6693","标识":"NGC6693","M标识":"NGC6693","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h41m32s","赤经D(J2000)":"18.692222222222224","赤纬(J2000)":"+36h54m54s","赤纬D(J2000)":"36.915","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"6694","标识":"NGC6694","M标识":"M26","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I1m","星座(Zh)":"盾牌座","星座(En)":"SCT","赤经(J2000)":"18h45m15s","赤经D(J2000)":"18.754166666666666","赤纬(J2000)":"-9h23m6s","赤纬D(J2000)":"-9.385","可见光星等V":"8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a cluster, considerably large, pretty rich, pretty compressed, stars from 12th to 15th magnitude","简略描述":"Cl, cL, pRi, pC, st 12…15"},{"ID":"6695","标识":"NGC6695","M标识":"NGC6695","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h42m42.8s","赤经D(J2000)":"18.71188888888889","赤纬(J2000)":"+40h22m2s","赤纬D(J2000)":"40.367222222222225","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"12","详细描述":"very faint, small, irregularly extended north-south, very little brighter middle","简略描述":"vF, S, irrE ns, vlbM"},{"ID":"6696","标识":"NGC6696","M标识":"NGC6696","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h40m5s","赤经D(J2000)":"18.668055555555558","赤纬(J2000)":"+59h20m0s","赤纬D(J2000)":"59.333333333333336","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"0","详细描述":"most extremely faint, pretty large, very difficult","简略描述":"eeF, pL, v diffic"},{"ID":"6697","标识":"NGC6697","M标识":"NGC6697","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h45m14.9s","赤经D(J2000)":"18.75413888888889","赤纬(J2000)":"+25h30m46s","赤纬D(J2000)":"25.512777777777778","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"1","方位角":"48","详细描述":"faint, very small, stellar","简略描述":"F, vS, stell"},{"ID":"6698","标识":"NGC6698","M标识":"NGC6698","拓展名":"","组件":"","Class":"VI 15","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h48m10s","赤经D(J2000)":"18.802777777777777","赤纬(J2000)":"-25h53m45s","赤纬D(J2000)":"-25.895833333333332","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a suspected cluster, considerably large, stars very faint","简略描述":"Suspected Cl, cL, st vF"},{"ID":"6699","标识":"NGC6699","M标识":"NGC6699","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h52m1.9s","赤经D(J2000)":"18.867194444444443","赤纬(J2000)":"-57h19m14s","赤纬D(J2000)":"-57.32055555555556","可见光星等V":"12","摄影(蓝光)星等B":"12.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"pretty faint, pretty small, a little extended 90°, pretty suddenly a little brighter middle","简略描述":"pF, pS, lE 90°, pslbM"},{"ID":"6700","标识":"NGC6700","M标识":"NGC6700","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h46m4.3s","赤经D(J2000)":"18.76786111111111","赤纬(J2000)":"+32h16m46s","赤纬D(J2000)":"32.279444444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1","方位角":"115","详细描述":"extremely faint, a little extended, diffuse, irregularly round","简略描述":"eF, lE, dif, iR"},{"ID":"6701","标识":"NGC6701","M标识":"NGC6701","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h43m12.6s","赤经D(J2000)":"18.720166666666664","赤纬(J2000)":"+60h39m11s","赤纬D(J2000)":"60.653055555555554","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"25","详细描述":"pretty bright, pretty small, much extended, faint star close to east","简略描述":"pB, pS, mE, F * close f"},{"ID":"6702","标识":"NGC6702","M标识":"NGC6702","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h46m57.6s","赤经D(J2000)":"18.782666666666664","赤纬(J2000)":"+45h42m22s","赤纬D(J2000)":"45.70611111111111","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"65","详细描述":"pretty faint, small, a little extended","简略描述":"pF, S, lE"},{"ID":"6703","标识":"NGC6703","M标识":"NGC6703","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h47m18.9s","赤经D(J2000)":"18.788583333333335","赤纬(J2000)":"+45h33m3s","赤纬D(J2000)":"45.55083333333333","可见光星等V":"11.3","摄影(蓝光)星等B":"12.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.7","短轴(分)":"2.5","方位角":"0","详细描述":"bright, small, round, much brighter middle","简略描述":"B, S, R, mbM"},{"ID":"6704","标识":"NGC6704","M标识":"NGC6704","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"盾牌座","星座(En)":"SCT","赤经(J2000)":"18h50m45.8s","赤经D(J2000)":"18.846055555555555","赤纬(J2000)":"-5h12m18s","赤纬D(J2000)":"-5.205","可见光星等V":"9.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, bright, 60 stars of 13th magnitude (Auwers 43)","简略描述":"Cl, B, 60 st 13 (Auw 43)"},{"ID":"6705","标识":"NGC6705","M标识":"M11","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"野鸭星团","类型":"OCL","含重复类型":"OCL","形态":"I2r","星座(Zh)":"盾牌座","星座(En)":"SCT","赤经(J2000)":"18h51m5s","赤经D(J2000)":"18.85138888888889","赤纬(J2000)":"-6h16m12s","赤纬D(J2000)":"-6.27","可见光星等V":"5.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"11","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a cluster, very bright, large, irregularly round, rich, a 9th magnitude star and stars from 11th magnitude","简略描述":"!, Cl, vB, L, iR, Ri, *9, st 11…"},{"ID":"6706","标识":"NGC6706","M标识":"NGC6706","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h56m51s","赤经D(J2000)":"18.9475","赤纬(J2000)":"-63h9m59s","赤纬D(J2000)":"-63.16638888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"123","详细描述":"a nebula. No description","简略描述":"Neb. No description"},{"ID":"6707","标识":"NGC6707","M标识":"NGC6707","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"18h55m21.9s","赤经D(J2000)":"18.92275","赤纬(J2000)":"-53h49m9s","赤纬D(J2000)":"-53.81916666666667","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.1","短轴(分)":"1","方位角":"143","详细描述":"faint, small, very little extended, gradually brighter middle","简略描述":"F, S, vlE, gbM"},{"ID":"6708","标识":"NGC6708","M标识":"NGC6708","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"18h55m35.6s","赤经D(J2000)":"18.926555555555556","赤纬(J2000)":"-53h43m24s","赤纬D(J2000)":"-53.723333333333336","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"167","详细描述":"pretty faint, small, round, gradually pretty much brighter middle, last of group","简略描述":"pF, S, R, gpmbM, last of gr"},{"ID":"6709","标识":"NGC6709","M标识":"NGC6709","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"飞独角兽星团","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"18h51m30s","赤经D(J2000)":"18.858333333333334","赤纬(J2000)":"+10h20m0s","赤纬D(J2000)":"10.333333333333334","可见光星等V":"6.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, a little compressed, irregular figure","简略描述":"Cl, pRi, lC, iF"},{"ID":"6710","标识":"NGC6710","M标识":"NGC6710","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h50m34s","赤经D(J2000)":"18.842777777777776","赤纬(J2000)":"+26h50m19s","赤纬D(J2000)":"26.83861111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"1","方位角":"40","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"6711","标识":"NGC6711","M标识":"NGC6711","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h49m0.9s","赤经D(J2000)":"18.816916666666668","赤纬(J2000)":"+47h39m27s","赤纬D(J2000)":"47.6575","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"90","详细描述":"very faint, pretty small, round, a little brighter middle","简略描述":"vF, pS, R, lbM"},{"ID":"6712","标识":"NGC6712","M标识":"NGC6712","拓展名":"","组件":"","Class":"I 47","业余排名":"3","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"IX","星座(Zh)":"盾牌座","星座(En)":"SCT","赤经(J2000)":"18h53m4.3s","赤经D(J2000)":"18.884527777777777","赤纬(J2000)":"-8h42m20s","赤纬D(J2000)":"-8.705555555555556","可见光星等V":"8.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9.8","短轴(分)":"","方位角":"","详细描述":"a globular cluster, pretty bright, very large, irregular, very gradually a little brighter middle, well resolved, clearly consisting of stars","简略描述":"globular, pB, vL, irr, vglbM, rrr"},{"ID":"6713","标识":"NGC6713","M标识":"NGC6713","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h50m44.2s","赤经D(J2000)":"18.84561111111111","赤纬(J2000)":"+33h57m37s","赤纬D(J2000)":"33.96027777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"100","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"6714","标识":"NGC6714","M标识":"NGC6714","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h45m49s","赤经D(J2000)":"18.76361111111111","赤纬(J2000)":"+66h43m30s","赤纬D(J2000)":"66.72500000000001","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, pretty small, very difficult, several bright stars to north","简略描述":"eeF, pS, v diffic, sev B st n"},{"ID":"6715","标识":"NGC6715","M标识":"M54","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"III","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h55m3.3s","赤经D(J2000)":"18.917583333333333","赤纬(J2000)":"-30h28m40s","赤纬D(J2000)":"-30.477777777777778","可见光星等V":"7.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very bright, large, round, gradually then suddenly much brighter middle, well resolved, clearly consisting of stars, stars of 15th magnitude","简略描述":"globular, vB, L, R, g, smbM, rrr, st 15"},{"ID":"6716","标识":"NGC6716","M标识":"NGC6716","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV1p","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h54m34s","赤经D(J2000)":"18.909444444444443","赤纬(J2000)":"-19h54m30s","赤纬D(J2000)":"-19.90833333333333","可见光星等V":"7.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, stars from 9th to 13th magnitude","简略描述":"Cl, pRi, st 9…13"},{"ID":"6717","标识":"NGC6717","M标识":"NGC6717","拓展名":"","组件":"","Class":"III 143","业余排名":"6.5","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VIII","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h55m6.2s","赤经D(J2000)":"18.91838888888889","赤纬(J2000)":"-22h42m1s","赤纬D(J2000)":"-22.700277777777778","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5.4","短轴(分)":"","方位角":"","详细描述":"faint, small, partially resolved (some stars seen), a cluster plus nebulosity","简略描述":"F, S, rr, Cl + neb"},{"ID":"6718","标识":"NGC6718","M标识":"NGC6718","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h1m28.9s","赤经D(J2000)":"19.024694444444442","赤纬(J2000)":"-66h6m37s","赤纬D(J2000)":"-66.11027777777777","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"172","详细描述":"very faint, small, round, gradually a little brighter middle, 9th magnitude star to southwest","简略描述":"vF, S, R, glbM, * 9 sp"},{"ID":"6719","标识":"NGC6719","M标识":"NGC6719","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h3m7.3s","赤经D(J2000)":"19.052027777777777","赤纬(J2000)":"-68h35m16s","赤纬D(J2000)":"-68.58777777777777","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"107","详细描述":"very faint, pretty large, round, very gradually a very little brighter middle","简略描述":"vF, pL, R, vgvlbM"},{"ID":"6720","标识":"NGC6720","M标识":"M57","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"指环星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h53m35.1s","赤经D(J2000)":"18.893083333333333","赤纬(J2000)":"+33h1m47s","赤纬D(J2000)":"33.02972222222222","可见光星等V":"8.8","摄影(蓝光)星等B":"9.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"2.4","方位角":"55","详细描述":"a magnificent or otherwise interesting object, an annular nebula, bright, pretty large, considerably extended (in Lyra)","简略描述":"!!!, annular, B, pL, cE (in Lyra)"},{"ID":"6721","标识":"NGC6721","M标识":"NGC6721","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h0m50.9s","赤经D(J2000)":"19.01413888888889","赤纬(J2000)":"-57h45m34s","赤纬D(J2000)":"-57.75944444444445","可见光星等V":"12","摄影(蓝光)星等B":"13.1","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"155","详细描述":"pretty faint, considerably small, round, very much brighter middle","简略描述":"pF, cS, R, vmbM"},{"ID":"6722","标识":"NGC6722","M标识":"NGC6722","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h3m40.1s","赤经D(J2000)":"19.06113888888889","赤纬(J2000)":"-64h53m42s","赤纬D(J2000)":"-64.89500000000001","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.9","短轴(分)":"0.4","方位角":"166","详细描述":"pretty faint, small, extended, gradually a little brighter middle, 2 stars of 8th magnitude to west","简略描述":"pF, S, E, glbM, 2 st 8 p"},{"ID":"6723","标识":"NGC6723","M标识":"NGC6723","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"吊灯星团","类型":"GCL","含重复类型":"GCL","形态":"VII","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h59m33.2s","赤经D(J2000)":"18.992555555555555","赤纬(J2000)":"-36h37m52s","赤纬D(J2000)":"-36.63111111111111","可见光星等V":"6.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"13","短轴(分)":"","方位角":"","详细描述":"a globular cluster, very large, very little extended, very gradually brighter middle, well resolved, clearly consisting of stars, stars from 14th to 16th magnitude","简略描述":"globular, vL, vlE, vgbM, rrr, st 14…16"},{"ID":"6724","标识":"NGC6724","M标识":"NGC6724","拓展名":"","组件":"","Class":"","业余排名":"8.5","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"18h56m46s","赤经D(J2000)":"18.94611111111111","赤纬(J2000)":"+10h25m42s","赤纬D(J2000)":"10.428333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster","简略描述":"Cl"},{"ID":"6725","标识":"NGC6725","M标识":"NGC6725","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h1m56.4s","赤经D(J2000)":"19.032333333333334","赤纬(J2000)":"-53h51m51s","赤纬D(J2000)":"-53.86416666666667","可见光星等V":"11.3","摄影(蓝光)星等B":"12.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"2.2","短轴(分)":"0.5","方位角":"40","详细描述":"extremely faint, pretty large, round","简略描述":"eF, pL, R"},{"ID":"6726","标识":"NGC6726","M标识":"NGC6726","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"南冕座","星座(En)":"CRA","赤经(J2000)":"19h1m39.2s","赤经D(J2000)":"19.027555555555555","赤纬(J2000)":"-36h53m29s","赤纬D(J2000)":"-36.89138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"7","方位角":"","详细描述":"a 6th or 7th magnitude star in a faint, pretty large nebulosity","简略描述":"* 6·7 in F, pL, neb"},{"ID":"6727","标识":"NGC6727","M标识":"NGC6727","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"南冕座","星座(En)":"CRA","赤经(J2000)":"19h1m42.2s","赤经D(J2000)":"19.028388888888887","赤纬(J2000)":"-36h52m35s","赤纬D(J2000)":"-36.87638888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"80","短轴(分)":"","方位角":"","详细描述":"an 8th magnitude star in a faint, pretty large nebulosity","简略描述":"* 8 in F, pL neb"},{"ID":"6728","标识":"NGC6728","M标识":"NGC6728","拓展名":"","组件":"","Class":"VIII 13","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"盾牌座","星座(En)":"SCT","赤经(J2000)":"19h0m14s","赤经D(J2000)":"19.003888888888888","赤纬(J2000)":"-8h57m26s","赤纬D(J2000)":"-8.95722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, poor","简略描述":"Cl, vL, P"},{"ID":"6729","标识":"NGC6729","M标识":"NGC6729","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"南冕座R星云","类型":"Nb","含重复类型":"Nb","形态":"EN+RN","星座(Zh)":"南冕座","星座(En)":"CRA","赤经(J2000)":"19h1m55.3s","赤经D(J2000)":"19.032027777777778","赤纬(J2000)":"-36h57m28s","赤纬D(J2000)":"-36.95777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"20","方位角":"","详细描述":"a variable star (11th magnitude and fainter) with nebulosity, a very remarkable object","简略描述":"Var * (11…) with neb!!"},{"ID":"6730","标识":"NGC6730","M标识":"NGC6730","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h7m33.6s","赤经D(J2000)":"19.126","赤纬(J2000)":"-68h54m44s","赤纬D(J2000)":"-68.91222222222223","可见光星等V":"11.2","摄影(蓝光)星等B":"12.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"25","详细描述":"very faint, small, round, pretty much brighter middle, 7th or 8th magnitude star to northeast","简略描述":"vF, S, R, pmbM, * 7·8 nf"},{"ID":"6731","标识":"NGC6731","M标识":"NGC6731","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h57m13.5s","赤经D(J2000)":"18.95375","赤纬(J2000)":"+43h4m38s","赤纬D(J2000)":"43.077222222222225","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"6732","标识":"NGC6732","M标识":"NGC6732","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h56m24.1s","赤经D(J2000)":"18.94002777777778","赤纬(J2000)":"+52h22m39s","赤纬D(J2000)":"52.3775","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"100","详细描述":"pretty bright, very small, round, faint star to north","简略描述":"pB, vS, R, F * n"},{"ID":"6733","标识":"NGC6733","M标识":"NGC6733","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h6m10.7s","赤经D(J2000)":"19.102972222222224","赤纬(J2000)":"-62h11m48s","赤纬D(J2000)":"-62.196666666666665","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"110","详细描述":"most extremely faint, very gradually a little brighter middle, very difficult","简略描述":"eeF, vglbM, v difficult"},{"ID":"6734","标识":"NGC6734","M标识":"NGC6734","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h7m14.4s","赤经D(J2000)":"19.12066666666667","赤纬(J2000)":"-65h27m39s","赤纬D(J2000)":"-65.46083333333334","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"8","详细描述":"very faint, small, round, gradually a little brighter middle, western of 2","简略描述":"vF, S, R, glbM, p of 2"},{"ID":"6735","标识":"NGC6735","M标识":"NGC6735","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h0m45.3s","赤经D(J2000)":"19.012583333333332","赤纬(J2000)":"-0h27m21s","赤纬D(J2000)":"-0.45583333333333337","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, poor, stars from 12th magnitude","简略描述":"Cl, vL, P, st 12…"},{"ID":"6736","标识":"NGC6736","M标识":"NGC6736","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h7m29.3s","赤经D(J2000)":"19.124805555555557","赤纬(J2000)":"-65h25m43s","赤纬D(J2000)":"-65.42861111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"73","详细描述":"extremely faint, small, round, gradually a little brighter middle, eastern of 2","简略描述":"eF, S, R, glbM, f of 2"},{"ID":"6737","标识":"NGC6737","M标识":"NGC6737","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h2m10s","赤经D(J2000)":"19.03611111111111","赤纬(J2000)":"-18h32m48s","赤纬D(J2000)":"-18.546666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, round, stars from 12th to 15th magnitude","简略描述":"Cl, pL, pRi, R, st 12…15"},{"ID":"6738","标识":"NGC6738","M标识":"NGC6738","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h1m20s","赤经D(J2000)":"19.022222222222222","赤纬(J2000)":"+11h36m54s","赤纬D(J2000)":"11.615","可见光星等V":"8.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed","简略描述":"Cl, P, lC"},{"ID":"6739","标识":"NGC6739","M标识":"NGC6739","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h7m48.7s","赤经D(J2000)":"19.130194444444445","赤纬(J2000)":"-61h22m3s","赤纬D(J2000)":"-61.3675","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.4","短轴(分)":"0.9","方位角":"171","详细描述":"considerably faint, very small, considerably extended, pretty suddenly brighter middle, 3 stars to west","简略描述":"cF, vS, cE, psbM, 3 st p"},{"ID":"6740","标识":"NGC6740","M标识":"NGC6740","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"19h0m50.5s","赤经D(J2000)":"19.014027777777777","赤纬(J2000)":"+28h46m16s","赤纬D(J2000)":"28.77111111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"30","详细描述":"most extremely faint, small","简略描述":"eeF, S"},{"ID":"6741","标识":"NGC6741","M标识":"NGC6741","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"幻影条纹星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h2m37s","赤经D(J2000)":"19.04361111111111","赤纬(J2000)":"-0h26m56s","赤纬D(J2000)":"-0.4488888888888889","可见光星等V":"11.5","摄影(蓝光)星等B":"10.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.13","短轴(分)":"","方位角":"","详细描述":"a planetary nebular, stellar","简略描述":"planetary, stellar"},{"ID":"6742","标识":"NGC6742","M标识":"NGC6742","拓展名":"","组件":"","Class":"III 742","业余排名":"15","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h59m19.8s","赤经D(J2000)":"18.988833333333336","赤纬(J2000)":"+48h27m59s","赤纬D(J2000)":"48.46638888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"15","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.55","短轴(分)":"","方位角":"","详细描述":"very faint, stellar","简略描述":"vF, stellar"},{"ID":"6743","标识":"NGC6743","M标识":"NGC6743","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"19h1m26.7s","赤经D(J2000)":"19.024083333333333","赤纬(J2000)":"+29h17m14s","赤纬D(J2000)":"29.287222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, poor, stars from 11th to 12th magnitude","简略描述":"Cl, pL, P, st 11…12"},{"ID":"6744","标识":"NGC6744","M标识":"NGC6744","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h9m46.1s","赤经D(J2000)":"19.162805555555554","赤纬(J2000)":"-63h51m24s","赤纬D(J2000)":"-63.85666666666667","可见光星等V":"8.5","摄影(蓝光)星等B":"9.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"20.1","短轴(分)":"12.9","方位角":"15","详细描述":"considerably bright, considerably large, round, very gradually then suddenly very much brighter middle, mottled but not resolved","简略描述":"cB, cL, R, vg, svmbM, r"},{"ID":"6745","标识":"NGC6745","M标识":"NGC6745","拓展名":"","组件":"2","Class":"","业余排名":"14","中文名":"鸟头星系","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"19h1m41.9s","赤经D(J2000)":"19.028305555555555","赤纬(J2000)":"+40h45m33s","赤纬D(J2000)":"40.759166666666665","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"9.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"0","详细描述":"very faint, a little extended north-south","简略描述":"vF, lE ns"},{"ID":"6746","标识":"NGC6746","M标识":"NGC6746","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h10m22.3s","赤经D(J2000)":"19.17286111111111","赤纬(J2000)":"-61h58m6s","赤纬D(J2000)":"-61.968333333333334","可见光星等V":"12.6","摄影(蓝光)星等B":"13.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"173","详细描述":"extremely faint, considerably small, round, gradually a little brighter middle","简略描述":"eF, cS, R, glbM"},{"ID":"6747","标识":"NGC6747","M标识":"NGC6747","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h55m21.5s","赤经D(J2000)":"18.92263888888889","赤纬(J2000)":"+72h46m20s","赤纬D(J2000)":"72.77222222222223","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"126","详细描述":"most extremely faint, very difficult, pretty bright star to southeast","简略描述":"eeF, v diffic, pB st sf"},{"ID":"6748","标识":"NGC6748","M标识":"NGC6748","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"PN","含重复类型":"Dup","形态":"PN","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h5m55.5s","赤经D(J2000)":"19.09875","赤纬(J2000)":"-5h59m30s","赤纬D(J2000)":"-5.991666666666667","可见光星等V":"11.9","摄影(蓝光)星等B":"12.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.43","短轴(分)":"","方位角":"","详细描述":"pretty bright, very small, brighter middle","简略描述":"pB, vS, bM"},{"ID":"6749","标识":"NGC6749","M标识":"NGC6749","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h5m15.3s","赤经D(J2000)":"19.08758333333333","赤纬(J2000)":"+1h54m5s","赤纬D(J2000)":"1.9013888888888888","可见光星等V":"12.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, large, a little compressed, stars large and small","简略描述":"Cl, L, lC, st L & S"},{"ID":"6750","标识":"NGC6750","M标识":"NGC6750","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"19h0m36s","赤经D(J2000)":"19.01","赤纬(J2000)":"+59h10m2s","赤纬D(J2000)":"59.16722222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.6","方位角":"5","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"6751","标识":"NGC6751","M标识":"NGC6751","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"蒲公英星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h5m55.5s","赤经D(J2000)":"19.09875","赤纬(J2000)":"-5h59m30s","赤纬D(J2000)":"-5.991666666666667","可见光星等V":"11.9","摄影(蓝光)星等B":"12.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.43","短轴(分)":"","方位角":"","详细描述":"pretty bright, small","简略描述":"pB, S"},{"ID":"6752","标识":"NGC6752","M标识":"NGC6752","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"孔雀座球状星团","类型":"GCL","含重复类型":"GCL","形态":"VI","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h10m51.8s","赤经D(J2000)":"19.181055555555556","赤纬(J2000)":"-59h58m53s","赤纬D(J2000)":"-59.981388888888894","可见光星等V":"5.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"29","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, very large, irregularly round, well resolved, clearly consisting of stars, stars from 11th to 16th magnitude","简略描述":"globular, B, vL, iR, rrr, st 11…16"},{"ID":"6753","标识":"NGC6753","M标识":"NGC6753","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h11m23.7s","赤经D(J2000)":"19.189916666666665","赤纬(J2000)":"-57h2m56s","赤纬D(J2000)":"-57.04888888888889","可见光星等V":"11.1","摄影(蓝光)星等B":"12","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.4","短轴(分)":"2.1","方位角":"30","详细描述":"pretty bright, pretty large, round, gradually brighter middle","简略描述":"pB, pL, R, gbM"},{"ID":"6754","标识":"NGC6754","M标识":"NGC6754","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h11m25s","赤经D(J2000)":"19.190277777777776","赤纬(J2000)":"-50h38m31s","赤纬D(J2000)":"-50.64194444444444","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.8","短轴(分)":"0.9","方位角":"80","详细描述":"pretty faint, pretty large, much extended 63°, very gradually a little brighter middle","简略描述":"pF, pL, mE 63°, vglbM"},{"ID":"6755","标识":"NGC6755","M标识":"NGC6755","拓展名":"","组件":"","Class":"VII 19","业余排名":"6","中文名":"可能的双星团","类型":"OCL","含重复类型":"OCL","形态":"IV2m","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h7m49s","赤经D(J2000)":"19.130277777777778","赤纬(J2000)":"+4h16m0s","赤纬D(J2000)":"4.266666666666667","可见光星等V":"7.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, very rich, pretty compressed, stars from 12th to 14th magnitude","简略描述":"Cl, vL, vRi, pC, st 12…14"},{"ID":"6756","标识":"NGC6756","M标识":"NGC6756","拓展名":"","组件":"","Class":"VII 62","业余排名":"6","中文名":"可能的双星团","类型":"OCL","含重复类型":"OCL","形态":"I2m","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h8m42.5s","赤经D(J2000)":"19.145138888888887","赤纬(J2000)":"+4h42m21s","赤纬D(J2000)":"4.7058333333333335","可见光星等V":"10.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, small, rich, a little compressed, stars from 11th to 12th magnitude","简略描述":"Cl, S, Ri, lC, st 11…12"},{"ID":"6757","标识":"NGC6757","M标识":"NGC6757","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"19h5m6.1s","赤经D(J2000)":"19.08502777777778","赤纬(J2000)":"+55h43m3s","赤纬D(J2000)":"55.7175","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1","方位角":"84","详细描述":"pretty faint, much extended, 3 faint stars involved","简略描述":"pF, mE, 3 F st inv"},{"ID":"6758","标识":"NGC6758","M标识":"NGC6758","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h13m52.5s","赤经D(J2000)":"19.23125","赤纬(J2000)":"-56h18m34s","赤纬D(J2000)":"-56.309444444444445","可见光星等V":"11.6","摄影(蓝光)星等B":"12.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.3","短轴(分)":"1.7","方位角":"121","详细描述":"pretty bright, small, round","简略描述":"pB, S, R"},{"ID":"6759","标识":"NGC6759","M标识":"NGC6759","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"19h6m57s","赤经D(J2000)":"19.115833333333335","赤纬(J2000)":"+50h20m54s","赤纬D(J2000)":"50.348333333333336","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"25","详细描述":"very faint, small, round, very faint double star close to southwest","简略描述":"vF, S, R, vF D * close sp"},{"ID":"6760","标识":"NGC6760","M标识":"NGC6760","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"IX","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h11m12.1s","赤经D(J2000)":"19.186694444444445","赤纬(J2000)":"+1h1m52s","赤纬D(J2000)":"1.031111111111111","可见光星等V":"9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9.6","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, very gradually a little brighter middle (Auwers 44)","简略描述":"pB, pL, vglbM (Auw. 44)"},{"ID":"6761","标识":"NGC6761","M标识":"NGC6761","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h15m4.7s","赤经D(J2000)":"19.251305555555554","赤纬(J2000)":"-50h39m25s","赤纬D(J2000)":"-50.65694444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"19","详细描述":"very faint, pretty small, irregularly round","简略描述":"vF, pS, iR"},{"ID":"6762","标识":"NGC6762","M标识":"NGC6762","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"19h5m37s","赤经D(J2000)":"19.09361111111111","赤纬(J2000)":"+63h56m3s","赤纬D(J2000)":"63.93416666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"119","详细描述":"extremely faint, much extended","简略描述":"eF, mE"},{"ID":"6763","标识":"NGC6763","M标识":"NGC6763","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"19h5m37s","赤经D(J2000)":"19.09361111111111","赤纬(J2000)":"+63h56m3s","赤纬D(J2000)":"63.93416666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"119","详细描述":"extremely faint, much extended","简略描述":"eF, vS, cE, F * nr"},{"ID":"6764","标识":"NGC6764","M标识":"NGC6764","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h8m16.6s","赤经D(J2000)":"19.137944444444443","赤纬(J2000)":"+50h55m59s","赤纬D(J2000)":"50.933055555555555","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.2","短轴(分)":"1.2","方位角":"62","详细描述":"pretty faint, pretty large, much extended, several very faint stars involved","简略描述":"pF, pL, mE, sev vF st inv"},{"ID":"6765","标识":"NGC6765","M标识":"NGC6765","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"19h11m6.5s","赤经D(J2000)":"19.18513888888889","赤纬(J2000)":"+30h32m47s","赤纬D(J2000)":"30.54638888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.67","短轴(分)":"","方位角":"","详细描述":"faint, small, extended","简略描述":"F, S, E"},{"ID":"6766","标识":"NGC6766","M标识":"NGC6766","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h10m23.7s","赤经D(J2000)":"20.17325","赤纬(J2000)":"+46h27m42s","赤纬D(J2000)":"46.461666666666666","可见光星等V":"10.9","摄影(蓝光)星等B":"12.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.25","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, stellar","简略描述":"planetary, stellar"},{"ID":"6767","标识":"NGC6767","M标识":"NGC6767","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"19h11m34s","赤经D(J2000)":"19.192777777777778","赤纬(J2000)":"+37h43m34s","赤纬D(J2000)":"37.726111111111116","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, stellar, small star near to north","简略描述":"vF, S, R, stellar, S * nr n"},{"ID":"6768","标识":"NGC6768","M标识":"NGC6768","拓展名":"","组件":"1","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"南冕座","星座(En)":"CRA","赤经(J2000)":"19h16m32.7s","赤经D(J2000)":"19.27575","赤纬(J2000)":"-40h12m31s","赤纬D(J2000)":"-40.20861111111111","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"36","详细描述":"very faint, small, round, pretty suddenly a little brighter middle","简略描述":"vF, S, R, pslbM"},{"ID":"6769","标识":"NGC6769","M标识":"NGC6769","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h18m22.8s","赤经D(J2000)":"19.306333333333335","赤纬(J2000)":"-60h30m3s","赤纬D(J2000)":"-60.50083333333333","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.2","短轴(分)":"1.5","方位角":"123","详细描述":"very faint, small, round, a little brighter middle, 1st of 3","简略描述":"vF, S, R, lbM, 1st of 3"},{"ID":"6770","标识":"NGC6770","M标识":"NGC6770","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h18m37s","赤经D(J2000)":"19.310277777777777","赤纬(J2000)":"-60h29m46s","赤纬D(J2000)":"-60.49611111111111","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"1.6","方位角":"20","详细描述":"very faint, small, round, a little brighter middle, 1st of 3","简略描述":"eF, vS, 2nd of 3"},{"ID":"6771","标识":"NGC6771","M标识":"NGC6771","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h18m39.4s","赤经D(J2000)":"19.310944444444445","赤纬(J2000)":"-60h32m47s","赤纬D(J2000)":"-60.546388888888885","可见光星等V":"12.5","摄影(蓝光)星等B":"13.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.3","短轴(分)":"0.5","方位角":"118","详细描述":"extremely faint, small, 3rd of 3","简略描述":"eF, S, 3rd of 3"},{"ID":"6772","标识":"NGC6772","M标识":"NGC6772","拓展名":"","组件":"","Class":"IV 14","业余排名":"6.5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h14m36.4s","赤经D(J2000)":"19.243444444444446","赤纬(J2000)":"-2h42m22s","赤纬D(J2000)":"-2.7061111111111114","可见光星等V":"12.7","摄影(蓝光)星等B":"14.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.43","短轴(分)":"","方位角":"","详细描述":"very faint, large, round, very very little brighter middle, mottled but not resolved","简略描述":"vF, L, R, vvlbM, r"},{"ID":"6773","标识":"NGC6773","M标识":"NGC6773","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h15m8s","赤经D(J2000)":"19.252222222222223","赤纬(J2000)":"+4h51m24s","赤纬D(J2000)":"4.8566666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed","简略描述":"Cl, P, lC"},{"ID":"6774","标识":"NGC6774","M标识":"NGC6774","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h16m18s","赤经D(J2000)":"19.271666666666665","赤纬(J2000)":"-16h19m30s","赤纬D(J2000)":"-16.325","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, a little compressed","简略描述":"Cl, vL, lC"},{"ID":"6775","标识":"NGC6775","M标识":"NGC6775","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h16m42s","赤经D(J2000)":"19.278333333333332","赤纬(J2000)":"-0h55m58s","赤纬D(J2000)":"-0.9327777777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"13","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed, stars from 10th to 11th magnitude","简略描述":"Cl, P, lC, st 10…11"},{"ID":"6776","标识":"NGC6776","M标识":"NGC6776","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"五角星系","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h25m19.1s","赤经D(J2000)":"19.421972222222223","赤纬(J2000)":"-63h51m36s","赤纬D(J2000)":"-63.86","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"15","详细描述":"pretty bright, small, round, pretty gradually brighter middle","简略描述":"pB, S, R, pgbM"},{"ID":"6777","标识":"NGC6777","M标识":"NGC6777","拓展名":"","组件":"","Class":"","业余排名":"4","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h26m32s","赤经D(J2000)":"19.442222222222224","赤纬(J2000)":"-71h27m52s","赤纬D(J2000)":"-71.46444444444445","可见光星等V":"99","摄影(蓝光)星等B":"7.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, very large, irregularly round, well resolved, clearly consisting of stars, stars from 11th to 16th magnitude","简略描述":"Neb without st"},{"ID":"6778","标识":"NGC6778","M标识":"NGC6778","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"M76之子","类型":"PN","含重复类型":"Dup","形态":"PN","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h18m24.9s","赤经D(J2000)":"19.306916666666666","赤纬(J2000)":"-1h35m45s","赤纬D(J2000)":"-1.5958333333333334","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.62","短轴(分)":"","方位角":"","详细描述":"small, extended, ill-defined disc","简略描述":"S, E, ill-defined disc"},{"ID":"6779","标识":"NGC6779","M标识":"M56","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"X","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"19h16m35.5s","赤经D(J2000)":"19.276527777777776","赤纬(J2000)":"+30h11m7s","赤纬D(J2000)":"30.185277777777777","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8.8","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, large, irregularly round, gradually much compressed middle, well resolved, clearly consisting of stars, stars from 11th to 14th magnitude","简略描述":"globular, B, L, iR, gvmCM, rrr, st 11…14"},{"ID":"6780","标识":"NGC6780","M标识":"NGC6780","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h22m50.8s","赤经D(J2000)":"19.380777777777777","赤纬(J2000)":"-55h46m33s","赤纬D(J2000)":"-55.77583333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.9","短轴(分)":"1.6","方位角":"168","详细描述":"very faint, large, round, very gradually a little brighter middle","简略描述":"vF, L, R, vglbM"},{"ID":"6781","标识":"NGC6781","M标识":"NGC6781","拓展名":"","组件":"","Class":"III 743","业余排名":"5","中文名":"雪球星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h18m28.3s","赤经D(J2000)":"19.307861111111112","赤纬(J2000)":"+6h32m25s","赤纬D(J2000)":"6.540277777777778","可见光星等V":"11.4","摄影(蓝光)星等B":"11.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.9","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, faint, large, round, very suddenly brighter middle and disc, small star to northeast","简略描述":"planetary, F, L, R, vsbM disc, S * nf"},{"ID":"6782","标识":"NGC6782","M标识":"NGC6782","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h23m57.9s","赤经D(J2000)":"19.399416666666667","赤纬(J2000)":"-59h55m20s","赤纬D(J2000)":"-59.92222222222222","可见光星等V":"11","摄影(蓝光)星等B":"11.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.4","短轴(分)":"2","方位角":"45","详细描述":"considerably faint, considerably small, round, a little brighter middle, 9th magnitude star to south","简略描述":"cF, cS, R, lbM, * 9 s"},{"ID":"6783","标识":"NGC6783","M标识":"NGC6783","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h16m47.5s","赤经D(J2000)":"19.27986111111111","赤纬(J2000)":"+46h1m5s","赤纬D(J2000)":"46.018055555555556","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, difficult","简略描述":"eF, diffic"},{"ID":"6784","标识":"NGC6784","M标识":"NGC6784","拓展名":"A","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h26m31.2s","赤经D(J2000)":"19.442","赤纬(J2000)":"-65h37m36s","赤纬D(J2000)":"-65.62666666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"170","详细描述":"most extremely excessively faint, pretty small, among small stars","简略描述":"eeeF, pS, am S st"},{"ID":"6785","标识":"NGC6785","M标识":"NGC6785","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h18m24.9s","赤经D(J2000)":"19.306916666666666","赤纬(J2000)":"-1h35m45s","赤纬D(J2000)":"-1.5958333333333334","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.62","短轴(分)":"","方位角":"","详细描述":"small, extended, ill-defined disc","简略描述":"eS, stellar"},{"ID":"6786","标识":"NGC6786","M标识":"NGC6786","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"19h10m53.8s","赤经D(J2000)":"19.181611111111113","赤纬(J2000)":"+73h24m39s","赤纬D(J2000)":"73.41083333333334","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"45","详细描述":"most extremely faint, small, round, 2 stars to northeast","简略描述":"eeF, S, R, 2 st nf"},{"ID":"6787","标识":"NGC6787","M标识":"NGC6787","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"19h16m10.5s","赤经D(J2000)":"19.269583333333333","赤纬(J2000)":"+60h25m3s","赤纬D(J2000)":"60.4175","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"1","方位角":"102","详细描述":"most extremely faint, pretty small, 4 stars to southeast, extremely difficult","简略描述":"eeF, pS, 4 st sf, e diffic"},{"ID":"6788","标识":"NGC6788","M标识":"NGC6788","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h26m49.7s","赤经D(J2000)":"19.44713888888889","赤纬(J2000)":"-54h57m2s","赤纬D(J2000)":"-54.95055555555556","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.9","短轴(分)":"0.9","方位角":"71","详细描述":"pretty bright, small, much extended, pretty suddenly a little brighter middle","简略描述":"pB, S, mE, pslbM"},{"ID":"6789","标识":"NGC6789","M标识":"NGC6789","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"19h16m41.7s","赤经D(J2000)":"19.27825","赤纬(J2000)":"+63h58m19s","赤纬D(J2000)":"63.971944444444446","可见光星等V":"13.2","摄影(蓝光)星等B":"13.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"1","方位角":"60","详细描述":"most extremely faint, pretty large, round, very difficult","简略描述":"eeF, pL, R, v diffic"},{"ID":"6790","标识":"NGC6790","M标识":"NGC6790","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h22m57s","赤经D(J2000)":"19.3825","赤纬(J2000)":"+1h30m49s","赤纬D(J2000)":"1.513611111111111","可见光星等V":"10.5","摄影(蓝光)星等B":"10.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.17","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, bright, extremely small, stellar image equivalent to 9.5 magnitude","简略描述":"planetary, B, eS, stell = 9.5 mag"},{"ID":"6791","标识":"NGC6791","M标识":"NGC6791","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3r","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"19h20m52.7s","赤经D(J2000)":"19.34797222222222","赤纬(J2000)":"+37h46m27s","赤纬D(J2000)":"37.774166666666666","可见光星等V":"9.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"very faint (Auwers 45)","简略描述":"vF (Auw 45)"},{"ID":"6792","标识":"NGC6792","M标识":"NGC6792","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"19h20m57.3s","赤经D(J2000)":"19.349249999999998","赤纬(J2000)":"+43h7m56s","赤纬D(J2000)":"43.132222222222225","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.2","短轴(分)":"1.3","方位角":"25","详细描述":"faint, extended 26°, gradually a little brighter middle, 9.5 magnitude star to southeast","简略描述":"F, E 26°, glbM, * 9.5 sf"},{"ID":"6793","标识":"NGC6793","M标识":"NGC6793","拓展名":"","组件":"","Class":"VIII 81","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV2p","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"19h23m12.6s","赤经D(J2000)":"19.386833333333332","赤纬(J2000)":"+22h9m27s","赤纬D(J2000)":"22.1575","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed","简略描述":"Cl, P, lC"},{"ID":"6794","标识":"NGC6794","M标识":"NGC6794","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h28m3.8s","赤经D(J2000)":"19.46772222222222","赤纬(J2000)":"-38h55m7s","赤纬D(J2000)":"-38.91861111111111","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"80","详细描述":"extremely faint, pretty small, round, very gradually a very little brighter middle","简略描述":"eF, pS, R, vgvlbM"},{"ID":"6795","标识":"NGC6795","M标识":"NGC6795","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h26m19.2s","赤经D(J2000)":"19.438666666666666","赤纬(J2000)":"+3h30m46s","赤纬D(J2000)":"3.512777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, rich, between two 9th magnitude stars","简略描述":"Cl, Ri, bet 2 st 9"},{"ID":"6796","标识":"NGC6796","M标识":"NGC6796","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"19h21m31s","赤经D(J2000)":"19.358611111111113","赤纬(J2000)":"+61h8m42s","赤纬D(J2000)":"61.144999999999996","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"179","详细描述":"very faint, pretty small, much extended north-south","简略描述":"vF, pS, mE ns"},{"ID":"6797","标识":"NGC6797","M标识":"NGC6797","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h29m0.6s","赤经D(J2000)":"19.4835","赤纬(J2000)":"-25h39m59s","赤纬D(J2000)":"-25.66638888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a nebula with a 9th magnitude star attached on the east","简略描述":"Neb with * 9 m att f"},{"ID":"6798","标识":"NGC6798","M标识":"NGC6798","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h24m3.1s","赤经D(J2000)":"19.40086111111111","赤纬(J2000)":"+53h37m27s","赤纬D(J2000)":"53.62416666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"141","详细描述":"faint, very small, round, star very near","简略描述":"F, vS, R, * v nr"},{"ID":"6799","标识":"NGC6799","M标识":"NGC6799","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h32m16.7s","赤经D(J2000)":"19.537972222222223","赤纬(J2000)":"-55h54m28s","赤纬D(J2000)":"-55.907777777777774","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"98","详细描述":"extremely faint, very small, round, a little brighter middle, 3 very small stars near","简略描述":"eF, vS, R, lbM, 3 vS st nr"},{"ID":"6800","标识":"NGC6800","M标识":"NGC6800","拓展名":"","组件":"","Class":"VIII 21","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"19h27m0s","赤经D(J2000)":"19.45","赤纬(J2000)":"+25h5m30s","赤纬D(J2000)":"25.091666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, pretty rich, very little compressed, stars from 10th magnitude","简略描述":"Cl, vL, pRi, vlC, st 10…"},{"ID":"6801","标识":"NGC6801","M标识":"NGC6801","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h27m35.9s","赤经D(J2000)":"19.45997222222222","赤纬(J2000)":"+54h22m21s","赤纬D(J2000)":"54.3725","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"44","详细描述":"extremely faint, pretty small, round, faint star near to south","简略描述":"eF, pS, R, F * s nr"},{"ID":"6802","标识":"NGC6802","M标识":"NGC6802","拓展名":"","组件":"","Class":"VI 14","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1m","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"19h30m36s","赤经D(J2000)":"19.51","赤纬(J2000)":"+20h15m42s","赤纬D(J2000)":"20.261666666666667","可见光星等V":"8.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, large, very compressed, extended 0°, stars from 14th to 18th magnitude","简略描述":"Cl, L, vC, E 0°, st 14…18"},{"ID":"6803","标识":"NGC6803","M标识":"NGC6803","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h31m16.3s","赤经D(J2000)":"19.521194444444443","赤纬(J2000)":"+10h3m26s","赤纬D(J2000)":"10.057222222222222","可见光星等V":"11.4","摄影(蓝光)星等B":"11.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.17","短轴(分)":"","方位角":"","详细描述":"planetary nebula, stellar","简略描述":"planetary, stellar"},{"ID":"6804","标识":"NGC6804","M标识":"NGC6804","拓展名":"","组件":"","Class":"VI 38","业余排名":"5","中文名":"收缩星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h31m35.4s","赤经D(J2000)":"19.5265","赤纬(J2000)":"+9h13m33s","赤纬D(J2000)":"9.225833333333334","可见光星等V":"12","摄影(蓝光)星等B":"12.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.1","短轴(分)":"","方位角":"","详细描述":"considerably bright, small, irregularly round, well resolved, clearly consisting of stars","简略描述":"cB, S, iR, rrr"},{"ID":"6805","标识":"NGC6805","M标识":"NGC6805","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h36m45.8s","赤经D(J2000)":"19.612722222222224","赤纬(J2000)":"-37h33m14s","赤纬D(J2000)":"-37.553888888888885","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"163","详细描述":"extremely faint, round, very gradually brighter middle","简略描述":"eF, R, vgbM"},{"ID":"6806","标识":"NGC6806","M标识":"NGC6806","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h37m4.8s","赤经D(J2000)":"19.618000000000002","赤纬(J2000)":"-42h17m45s","赤纬D(J2000)":"-42.295833333333334","可见光星等V":"13.2","摄影(蓝光)星等B":"13.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"24","详细描述":"extremely faint, very small, 14th magnitude star attached","简略描述":"eF, vS, * 14 att"},{"ID":"6807","标识":"NGC6807","M标识":"NGC6807","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h34m33.5s","赤经D(J2000)":"19.575972222222223","赤纬(J2000)":"+5h41m4s","赤纬D(J2000)":"5.684444444444445","可见光星等V":"12","摄影(蓝光)星等B":"13.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.13","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, stellar","简略描述":"planetary, stellar"},{"ID":"6808","标识":"NGC6808","M标识":"NGC6808","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h43m54.4s","赤经D(J2000)":"19.731777777777776","赤纬(J2000)":"-70h37m56s","赤纬D(J2000)":"-70.63222222222221","可见光星等V":"11.8","摄影(蓝光)星等B":"12.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"40","详细描述":"pretty bright, extended, binuclear, 8th magnitude star to east","简略描述":"pB, E, biN, * 8 f"},{"ID":"6809","标识":"NGC6809","M标识":"M55","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"幽灵星团","类型":"GCL","含重复类型":"GCL","形态":"XI","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h39m59.4s","赤经D(J2000)":"19.6665","赤纬(J2000)":"-30h57m42s","赤纬D(J2000)":"-30.961666666666666","可见光星等V":"6.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"19","短轴(分)":"","方位角":"","详细描述":"a globular cluster, pretty bright, large, round, very rich, very gradually brighter middle, stars from 12th to 15th magnitude","简略描述":"globular, pB, L, R, vRi, vgbM, st 12…15"},{"ID":"6810","标识":"NGC6810","M标识":"NGC6810","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h43m34.3s","赤经D(J2000)":"19.72619444444444","赤纬(J2000)":"-58h39m22s","赤纬D(J2000)":"-58.65611111111111","可见光星等V":"11.4","摄影(蓝光)星等B":"12.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"176","详细描述":"pretty small, round, very gradually brighter middle","简略描述":"pS, R, vgbM"},{"ID":"6811","标识":"NGC6811","M标识":"NGC6811","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"洞穴星团","类型":"OCL","含重复类型":"OCL","形态":"IV3p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h37m9.6s","赤经D(J2000)":"19.619333333333334","赤纬(J2000)":"+46h22m32s","赤纬D(J2000)":"46.37555555555556","可见光星等V":"6.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, large, pretty rich, a little compressed, stars from 11th to 14th magnitude","简略描述":"Cl, L, pRi, lC, st 11…14"},{"ID":"6812","标识":"NGC6812","M标识":"NGC6812","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h45m23.9s","赤经D(J2000)":"19.75663888888889","赤纬(J2000)":"-55h20m49s","赤纬D(J2000)":"-55.346944444444446","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"94","详细描述":"pretty bright, pretty small, pretty much extended, gradually a little brighter middle","简略描述":"pB, pS, pmE, glbM"},{"ID":"6813","标识":"NGC6813","M标识":"NGC6813","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"19h40m24s","赤经D(J2000)":"19.673333333333336","赤纬(J2000)":"+27h18m34s","赤纬D(J2000)":"27.309444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"3","方位角":"","详细描述":"a double star in a very faint, small nebula","简略描述":"** in vF, S neb"},{"ID":"6814","标识":"NGC6814","M标识":"NGC6814","拓展名":"","组件":"","Class":"III 744","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h42m40.5s","赤经D(J2000)":"19.71125","赤纬(J2000)":"-10h19m28s","赤纬D(J2000)":"-10.324444444444444","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3","短轴(分)":"2.8","方位角":"","详细描述":"pretty faint, pretty large, round, brighter middle, mottled but not resolved","简略描述":"pF, pL, R, bM, r"},{"ID":"6815","标识":"NGC6815","M标识":"NGC6815","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"19h40m44s","赤经D(J2000)":"19.67888888888889","赤纬(J2000)":"+26h45m32s","赤纬D(J2000)":"26.75888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, pretty rich, a little compressed, stars from 10th to 15th magnitude","简略描述":"Cl, vL, pRi, lC, st 10…15"},{"ID":"6816","标识":"NGC6816","M标识":"NGC6816","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h44m2.4s","赤经D(J2000)":"19.734","赤纬(J2000)":"-28h24m3s","赤纬D(J2000)":"-28.40083333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"14.1","B-V":"1.2","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"77","详细描述":"extremely faint, pretty small, round, a very little brighter middle, star to northwest","简略描述":"eF, pS, R, vlbM, * np"},{"ID":"6817","标识":"NGC6817","M标识":"NGC6817","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"19h37m23.5s","赤经D(J2000)":"19.623194444444444","赤纬(J2000)":"+62h23m2s","赤纬D(J2000)":"62.38388888888889","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"87","详细描述":"most extremely faint, pretty small, a little extended","简略描述":"eeF, pS, lE"},{"ID":"6818","标识":"NGC6818","M标识":"NGC6818","拓展名":"","组件":"","Class":"IV 51","业余排名":"3","中文名":"小宝石星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h43m57.8s","赤经D(J2000)":"19.732722222222222","赤纬(J2000)":"-14h9m9s","赤纬D(J2000)":"-14.1525","可见光星等V":"9.3","摄影(蓝光)星等B":"9.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.77","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, bright, very small, round","简略描述":"planetary, B, vS, R"},{"ID":"6819","标识":"NGC6819","M标识":"NGC6819","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"狐头星团","类型":"OCL","含重复类型":"OCL","形态":"I1r","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h41m18s","赤经D(J2000)":"19.688333333333333","赤纬(J2000)":"+40h11m0s","赤纬D(J2000)":"40.18333333333333","可见光星等V":"7.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, very rich, stars from 11th to 15th magnitude","简略描述":"Cl, vL, vRi, st 11…15"},{"ID":"6820","标识":"NGC6820","M标识":"NGC6820","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"19h42m28s","赤经D(J2000)":"19.70777777777778","赤纬(J2000)":"+23h5m15s","赤纬D(J2000)":"23.0875","可见光星等V":"99","摄影(蓝光)星等B":"15","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"6821","标识":"NGC6821","M标识":"NGC6821","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h44m24.2s","赤经D(J2000)":"19.740055555555557","赤纬(J2000)":"-6h50m4s","赤纬D(J2000)":"-6.834444444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"13.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"135","详细描述":"faint, pretty large, round","简略描述":"F, pL, R"},{"ID":"6822","标识":"NGC6822","M标识":"NGC6822","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"巴纳德星系","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h44m56.6s","赤经D(J2000)":"19.749055555555557","赤纬(J2000)":"-14h48m23s","赤纬D(J2000)":"-14.80638888888889","可见光星等V":"8.7","摄影(蓝光)星等B":"9.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"15.4","短轴(分)":"14.2","方位角":"5","详细描述":"very faint, large, extended, diffuse","简略描述":"vF, L, E, dif"},{"ID":"6823","标识":"NGC6823","M标识":"NGC6823","拓展名":"","组件":"","Class":"VII 18","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3pn","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"19h43m10s","赤经D(J2000)":"19.71944444444444","赤纬(J2000)":"+23h18m0s","赤纬D(J2000)":"23.3","可见光星等V":"7.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, considerably rich, extended, stars from 11th to 12th magnitude","简略描述":"Cl, eRi, E, st 11…12"},{"ID":"6824","标识":"NGC6824","M标识":"NGC6824","拓展名":"","组件":"","Class":"II 878","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h43m40.5s","赤经D(J2000)":"19.727916666666665","赤纬(J2000)":"+56h6m32s","赤纬D(J2000)":"56.10888888888889","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"60","详细描述":"pretty bright, irregularly faint, brighter middle","简略描述":"pB, iF, bM"},{"ID":"6825","标识":"NGC6825","M标识":"NGC6825","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"19h41m54.5s","赤经D(J2000)":"19.69847222222222","赤纬(J2000)":"+64h4m24s","赤纬D(J2000)":"64.07333333333332","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"174","详细描述":"extremely faint, very small, very difficult, faint star near","简略描述":"eF, vS, v diffic, F * nr"},{"ID":"6826","标识":"NGC6826","M标识":"NGC6826","拓展名":"","组件":"","Class":"IV 73","业余排名":"2","中文名":"眨眼行星状星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h44m48.2s","赤经D(J2000)":"19.746722222222225","赤纬(J2000)":"+50h31m32s","赤纬D(J2000)":"50.525555555555556","可见光星等V":"8.8","摄影(蓝光)星等B":"9.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, bright, pretty large, round, 11th magnitude star in middle","简略描述":"planetary, B, pL, R, * 11 M"},{"ID":"6827","标识":"NGC6827","M标识":"NGC6827","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I1m","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"19h48m53.2s","赤经D(J2000)":"19.814777777777778","赤纬(J2000)":"+21h12m58s","赤纬D(J2000)":"21.21611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"very faint, extended, diffuse, several stars involved","简略描述":"vF, E, dif, sev st inv"},{"ID":"6828","标识":"NGC6828","M标识":"NGC6828","拓展名":"","组件":"","Class":"VIII 73","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h50m17s","赤经D(J2000)":"19.838055555555556","赤纬(J2000)":"+7h54m14s","赤纬D(J2000)":"7.903888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed","简略描述":"Cl, P, lC"},{"ID":"6829","标识":"NGC6829","M标识":"NGC6829","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"19h47m7.5s","赤经D(J2000)":"19.78541666666667","赤纬(J2000)":"+59h54m26s","赤纬D(J2000)":"59.907222222222224","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"31","详细描述":"extremely faint, pretty small, round, pretty bright star close to south, western of 2","简略描述":"eF, pS, R, pB * close s, p of 2"},{"ID":"6830","标识":"NGC6830","M标识":"NGC6830","拓展名":"","组件":"","Class":"VII 9","业余排名":"6","中文名":"贵宾犬星团","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"19h51m0s","赤经D(J2000)":"19.85","赤纬(J2000)":"+23h6m0s","赤纬D(J2000)":"23.1","可见光星等V":"7.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, large, pretty rich, pretty compressed, stars from 11th to 12th magnitude","简略描述":"Cl, L, pRi, pC, st 11…12"},{"ID":"6831","标识":"NGC6831","M标识":"NGC6831","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"19h47m57.2s","赤经D(J2000)":"19.799222222222223","赤纬(J2000)":"+59h53m35s","赤纬D(J2000)":"59.893055555555556","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"extremely faint, small, round, eastern of 2","简略描述":"eF, S, R, f of 2"},{"ID":"6832","标识":"NGC6832","M标识":"NGC6832","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h48m15.5s","赤经D(J2000)":"19.804305555555555","赤纬(J2000)":"+59h25m22s","赤纬D(J2000)":"59.422777777777775","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, a little compressed, stars from the 7th magnitude","简略描述":"Cl, vL, lC, st 7…"},{"ID":"6833","标识":"NGC6833","M标识":"NGC6833","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h49m46.6s","赤经D(J2000)":"19.82961111111111","赤纬(J2000)":"+48h57m42s","赤纬D(J2000)":"48.961666666666666","可见光星等V":"12.1","摄影(蓝光)星等B":"13.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.18","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, stellar","简略描述":"planetary, stellar"},{"ID":"6834","标识":"NGC6834","M标识":"NGC6834","拓展名":"","组件":"","Class":"VIII 16","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h52m12.5s","赤经D(J2000)":"19.87013888888889","赤纬(J2000)":"+29h24m29s","赤纬D(J2000)":"29.408055555555553","可见光星等V":"7.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed, stars from 11th to 12th magnitude","简略描述":"Cl, P, lC, st 11…12"},{"ID":"6835","标识":"NGC6835","M标识":"NGC6835","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h54m32.8s","赤经D(J2000)":"19.90911111111111","赤纬(J2000)":"-12h34m3s","赤纬D(J2000)":"-12.567499999999999","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.4","短轴(分)":"0.7","方位角":"72","详细描述":"faint, pretty large, much extended","简略描述":"F, pL, mE"},{"ID":"6836","标识":"NGC6836","M标识":"NGC6836","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h54m40.3s","赤经D(J2000)":"19.911194444444444","赤纬(J2000)":"-12h41m18s","赤纬D(J2000)":"-12.688333333333334","可见光星等V":"12.9","摄影(蓝光)星等B":"13.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"140","详细描述":"very faint, pretty large, round, diffuse","简略描述":"vF, pL, R, dif"},{"ID":"6837","标识":"NGC6837","M标识":"NGC6837","拓展名":"","组件":"","Class":"VIII 18","业余排名":"15","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h53m8s","赤经D(J2000)":"19.885555555555555","赤纬(J2000)":"+11h41m54s","赤纬D(J2000)":"11.698333333333334","可见光星等V":"12","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, small, poor","简略描述":"Cl, S, P"},{"ID":"6838","标识":"NGC6838","M标识":"M71","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"神仙鱼星团","类型":"GCL","含重复类型":"GCL","形态":"XI","星座(Zh)":"天箭座","星座(En)":"SGE","赤经(J2000)":"19h53m46.1s","赤经D(J2000)":"19.89613888888889","赤纬(J2000)":"+18h46m44s","赤纬D(J2000)":"18.778888888888886","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7.2","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, very rich, pretty much compressed, stars from 11th to 16th magnitude","简略描述":"Cl, vL, vRi, pmC, st 11…16"},{"ID":"6839","标识":"NGC6839","M标识":"NGC6839","拓展名":"","组件":"","Class":"VI 16","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天箭座","星座(En)":"SGE","赤经(J2000)":"19h54m33s","赤经D(J2000)":"19.909166666666664","赤纬(J2000)":"+17h56m20s","赤纬D(J2000)":"17.93888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, very small, very compressed","简略描述":"Cl, vS, vC"},{"ID":"6840","标识":"NGC6840","M标识":"NGC6840","拓展名":"","组件":"","Class":"VIII 19","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h55m17s","赤经D(J2000)":"19.92138888888889","赤纬(J2000)":"+12h7m18s","赤纬D(J2000)":"12.121666666666668","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed","简略描述":"Cl, P, lC"},{"ID":"6841","标识":"NGC6841","M标识":"NGC6841","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h57m49.1s","赤经D(J2000)":"19.963638888888887","赤纬(J2000)":"-31h48m39s","赤纬D(J2000)":"-31.810833333333335","可见光星等V":"12.7","摄影(蓝光)星等B":"13.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"149","详细描述":"very faint, small, round, pretty suddenly brighter middle","简略描述":"vF, S, R, psbM"},{"ID":"6842","标识":"NGC6842","M标识":"NGC6842","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"PN","含重复类型":"Dup","形态":"PN","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"19h55m2.3s","赤经D(J2000)":"19.917305555555558","赤纬(J2000)":"+29h17m23s","赤纬D(J2000)":"29.289722222222224","可见光星等V":"13.1","摄影(蓝光)星等B":"13.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.95","短轴(分)":"","方位角":"","详细描述":"faint pretty large, very little extended","简略描述":"F, pL, vlE"},{"ID":"6843","标识":"NGC6843","M标识":"NGC6843","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h56m6s","赤经D(J2000)":"19.935","赤纬(J2000)":"+12h9m52s","赤纬D(J2000)":"12.164444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, small, poor","简略描述":"Cl, S, P"},{"ID":"6844","标识":"NGC6844","M标识":"NGC6844","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h2m50s","赤经D(J2000)":"20.047222222222224","赤纬(J2000)":"-65h13m44s","赤纬D(J2000)":"-65.22888888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"0","详细描述":"extremely faint, very small, round, pretty suddenly brighter middle, 11th magnitude star to northwest","简略描述":"eF, vS, R, psbM, * 11 np"},{"ID":"6845","标识":"NGC6845","M标识":"NGC6845","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"克莱莫拉30","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h0m58s","赤经D(J2000)":"20.016111111111112","赤纬(J2000)":"-47h4m12s","赤纬D(J2000)":"-47.07","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.3","短轴(分)":"1","方位角":"72","详细描述":"very faint, small, very little extended, gradually a little brighter middle","简略描述":"vF, S, vlE, glbM"},{"ID":"6846","标识":"NGC6846","M标识":"NGC6846","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV1p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h56m28.1s","赤经D(J2000)":"19.94113888888889","赤纬(J2000)":"+32h20m55s","赤纬D(J2000)":"32.34861111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, 3 stars involved","简略描述":"eF, vS, 3 st inv"},{"ID":"6847","标识":"NGC6847","M标识":"NGC6847","拓展名":"","组件":"","Class":"II 202","业余排名":"15","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"19h55m2.3s","赤经D(J2000)":"19.917305555555558","赤纬(J2000)":"+29h17m23s","赤纬D(J2000)":"29.289722222222224","可见光星等V":"13.1","摄影(蓝光)星等B":"13.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.95","短轴(分)":"","方位角":"","详细描述":"a nebula, mottled but not resolved","简略描述":"Neb, r"},{"ID":"6848","标识":"NGC6848","M标识":"NGC6848","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h2m46.9s","赤经D(J2000)":"20.046361111111114","赤纬(J2000)":"-56h5m25s","赤纬D(J2000)":"-56.09027777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"12.5","B-V":"0.4","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.4","短轴(分)":"1","方位角":"157","详细描述":"considerably faint, considerably large, round, very gradually a little brighter middle, 2 stars to east","简略描述":"cF, cL, R, vglbM, 2 st f"},{"ID":"6849","标识":"NGC6849","M标识":"NGC6849","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"20h6m15.6s","赤经D(J2000)":"20.104333333333336","赤纬(J2000)":"-40h11m54s","赤纬D(J2000)":"-40.19833333333333","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"18","详细描述":"pretty bright, small, round, very small star to northwest","简略描述":"pB, S, R, vS * np"},{"ID":"6850","标识":"NGC6850","M标识":"NGC6850","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h3m29.8s","赤经D(J2000)":"20.05827777777778","赤纬(J2000)":"-54h50m43s","赤纬D(J2000)":"-54.84527777777778","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.1","短轴(分)":"1.1","方位角":"153","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"6851","标识":"NGC6851","M标识":"NGC6851","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h3m34.3s","赤经D(J2000)":"20.059527777777777","赤纬(J2000)":"-48h17m4s","赤纬D(J2000)":"-48.28444444444444","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2","短轴(分)":"1.5","方位角":"160","详细描述":"pretty faint, small, very little extended, pretty suddenly brighter middle","简略描述":"pF, S, vlE, psbM"},{"ID":"6852","标识":"NGC6852","M标识":"NGC6852","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h0m39.2s","赤经D(J2000)":"20.01088888888889","赤纬(J2000)":"+1h43m43s","赤纬D(J2000)":"1.7286111111111113","可见光星等V":"12.6","摄影(蓝光)星等B":"12.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.47","短轴(分)":"","方位角":"","详细描述":"a faint nebula, among stars","简略描述":"F neb, am st"},{"ID":"6853","标识":"NGC6853","M标识":"M27","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"哑铃星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"19h59m36.3s","赤经D(J2000)":"19.99341666666667","赤纬(J2000)":"+22h43m18s","赤纬D(J2000)":"22.721666666666664","可见光星等V":"7.4","摄影(蓝光)星等B":"7.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6.7","短轴(分)":"","方位角":"","详细描述":"a magnificent or otherwise interesting object, very bright, very large, binuclear, irregularly extended (Dumbbell)","简略描述":"!!!, vB, vL, biN, iE (Dumbbell)"},{"ID":"6854","标识":"NGC6854","M标识":"NGC6854","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h5m38.6s","赤经D(J2000)":"20.094055555555553","赤纬(J2000)":"-54h22m30s","赤纬D(J2000)":"-54.375","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2","短轴(分)":"1.3","方位角":"166","详细描述":"faint, small, very little extended, gradually a little brighter middle","简略描述":"F, S, vlE, glbM"},{"ID":"6855","标识":"NGC6855","M标识":"NGC6855","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h6m49.7s","赤经D(J2000)":"20.113805555555558","赤纬(J2000)":"-56h23m23s","赤纬D(J2000)":"-56.38972222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"113","详细描述":"pretty faint, small, round","简略描述":"pF, S, R"},{"ID":"6856","标识":"NGC6856","M标识":"NGC6856","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h59m17.1s","赤经D(J2000)":"19.988083333333336","赤纬(J2000)":"+56h7m53s","赤纬D(J2000)":"56.13138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty small, pretty much compressed, irregularly round, stars from 12th to 16th magnitude","简略描述":"Cl, pS, pmC, iR, st 12…16"},{"ID":"6857","标识":"NGC6857","M标识":"NGC6857","拓展名":"","组件":"","Class":"III 144","业余排名":"6.5","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h1m48s","赤经D(J2000)":"20.029999999999998","赤纬(J2000)":"+33h31m30s","赤纬D(J2000)":"33.525","可见光星等V":"99","摄影(蓝光)星等B":"11.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.63","短轴(分)":"","方位角":"","详细描述":"faint, among Milky Way stars","简略描述":"F, am Milky Way st"},{"ID":"6858","标识":"NGC6858","M标识":"NGC6858","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h3m0s","赤经D(J2000)":"20.05","赤纬(J2000)":"+11h15m36s","赤纬D(J2000)":"11.26","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, considerably large, extended, pretty rich, stars from 13th magnitude","简略描述":"Cl, cL, E, pRi, st 13…"},{"ID":"6859","标识":"NGC6859","M标识":"NGC6859","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h3m49.5s","赤经D(J2000)":"20.063750000000002","赤纬(J2000)":"+0h26m40s","赤纬D(J2000)":"0.4444444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a very small cluster, 10th magnitude star 1 second of time to west, 1' 29","简略描述":"vS Cl, * 10 p 1s, s 1' 29\" (Auw 46)"},{"ID":"6860","标识":"NGC6860","M标识":"NGC6860","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h8m47.1s","赤经D(J2000)":"20.146416666666667","赤纬(J2000)":"-61h5m59s","赤纬D(J2000)":"-61.099722222222226","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"34","详细描述":"faint, pretty small, gradually brighter middle","简略描述":"F, pS, gbM"},{"ID":"6861","标识":"NGC6861","M标识":"NGC6861","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h7m19.4s","赤经D(J2000)":"20.122055555555555","赤纬(J2000)":"-48h22m10s","赤纬D(J2000)":"-48.36944444444445","可见光星等V":"11.1","摄影(蓝光)星等B":"12.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3","短轴(分)":"2","方位角":"140","详细描述":"bright, small, considerably extended, gradually pretty much brighter middle","简略描述":"B, S, cE, gpmbM"},{"ID":"6862","标识":"NGC6862","M标识":"NGC6862","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h8m54.5s","赤经D(J2000)":"20.14847222222222","赤纬(J2000)":"-56h23m30s","赤纬D(J2000)":"-56.391666666666666","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"149","详细描述":"faint, small, a little extended, gradually a little brighter middle","简略描述":"F, S, lE, glbM"},{"ID":"6863","标识":"NGC6863","M标识":"NGC6863","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h5m7.3s","赤经D(J2000)":"20.08536111111111","赤纬(J2000)":"-3h33m13s","赤纬D(J2000)":"-3.553611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, small, very much compressed, stars of 19th magnitude","简略描述":"Cl, S, vmC, st 19"},{"ID":"6864","标识":"NGC6864","M标识":"M75","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"I","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"20h6m4.8s","赤经D(J2000)":"20.101333333333336","赤纬(J2000)":"-21h55m15s","赤纬D(J2000)":"-21.920833333333334","可见光星等V":"8.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6.8","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, pretty large, round, very much brighter middle and bright nucleus, partially resolved (some stars seen)","简略描述":"globular, B, pL, R, vmbMBN, rr"},{"ID":"6865","标识":"NGC6865","M标识":"NGC6865","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h5m56.4s","赤经D(J2000)":"20.099","赤纬(J2000)":"-9h2m26s","赤纬D(J2000)":"-9.040555555555555","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"130","详细描述":"faint, small, extended","简略描述":"F, S, E"},{"ID":"6866","标识":"NGC6866","M标识":"NGC6866","拓展名":"","组件":"","Class":"VII 59","业余排名":"6","中文名":"风筝星团","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h3m55.1s","赤经D(J2000)":"20.065305555555558","赤纬(J2000)":"+44h9m33s","赤纬D(J2000)":"44.159166666666664","可见光星等V":"7.6","摄影(蓝光)星等B":"8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, large, very rich, considerably compressed","简略描述":"Cl, L, vRi, cC"},{"ID":"6867","标识":"NGC6867","M标识":"NGC6867","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h10m30s","赤经D(J2000)":"20.175","赤纬(J2000)":"-54h47m3s","赤纬D(J2000)":"-54.784166666666664","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"0.7","方位角":"156","详细描述":"most extremely faint, large, pretty much extended","简略描述":"eeF, L, pmE"},{"ID":"6868","标识":"NGC6868","M标识":"NGC6868","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h9m54s","赤经D(J2000)":"20.165","赤纬(J2000)":"-48h22m48s","赤纬D(J2000)":"-48.38","可见光星等V":"10.7","摄影(蓝光)星等B":"11.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.6","短轴(分)":"2.8","方位角":"86","详细描述":"very bright, small, round, pretty gradually very much brighter middle","简略描述":"vB, S, R, pgvmbM"},{"ID":"6869","标识":"NGC6869","M标识":"NGC6869","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"20h0m42.3s","赤经D(J2000)":"20.01175","赤纬(J2000)":"+66h13m41s","赤纬D(J2000)":"66.22805555555556","可见光星等V":"12","摄影(蓝光)星等B":"13.1","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"90","详细描述":"pretty bright, pretty small, round","简略描述":"pB, pS, R"},{"ID":"6870","标识":"NGC6870","M标识":"NGC6870","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h10m10.4s","赤经D(J2000)":"20.169555555555558","赤纬(J2000)":"-48h17m12s","赤纬D(J2000)":"-48.28666666666666","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.6","短轴(分)":"1.3","方位角":"85","详细描述":"considerably faint, considerably small, extended 90°, gradually brighter middle","简略描述":"cF, cS, E 90°, gbM"},{"ID":"6871","标识":"NGC6871","M标识":"NGC6871","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV3p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h6m27s","赤经D(J2000)":"20.1075","赤纬(J2000)":"+35h47m24s","赤纬D(J2000)":"35.79","可见光星等V":"5.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"30","短轴(分)":"","方位角":"","详细描述":"a cluster, stars large and small, double star involved","简略描述":"Cl, st L and S, ** inv"},{"ID":"6872","标识":"NGC6872","M标识":"NGC6872","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"秃鹰星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h16m57s","赤经D(J2000)":"20.2825","赤纬(J2000)":"-70h46m4s","赤纬D(J2000)":"-70.76777777777778","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"6","短轴(分)":"1.5","方位角":"66","详细描述":"faint, pretty small, a little extended, gradually a little brighter middle, 9th magnitude star 10.5 seconds of time to west, 1st of 4","简略描述":"F, pS, lE, glbM, * 9 p 10s.5, 1st of 4"},{"ID":"6873","标识":"NGC6873","M标识":"NGC6873","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天箭座","星座(En)":"SGE","赤经(J2000)":"20h7m13s","赤经D(J2000)":"20.12027777777778","赤纬(J2000)":"+21h6m8s","赤纬D(J2000)":"21.102222222222224","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"14","短轴(分)":"","方位角":"","详细描述":"a cluster, a little compressed, stars from 10th to 13th magnitude, double star involved","简略描述":"Cl, lC, st 10…13, ** inv"},{"ID":"6874","标识":"NGC6874","M标识":"NGC6874","拓展名":"","组件":"","Class":"VIII 86","业余排名":"15","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV1m","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h7m48s","赤经D(J2000)":"20.13","赤纬(J2000)":"+38h14m0s","赤纬D(J2000)":"38.233333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed","简略描述":"Cl, P, lC"},{"ID":"6875","标识":"NGC6875","M标识":"NGC6875","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h13m12.3s","赤经D(J2000)":"20.22008333333333","赤纬(J2000)":"-46h9m41s","赤纬D(J2000)":"-46.16138888888889","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.4","短轴(分)":"1.4","方位角":"22","详细描述":"faint, very small, round, very gradually much brighter middle, 7th magnitude star to northeast","简略描述":"F, vS, R, vgmbM, * 7 nf"},{"ID":"6876","标识":"NGC6876","M标识":"NGC6876","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h18m19.1s","赤经D(J2000)":"20.305305555555556","赤纬(J2000)":"-70h51m30s","赤纬D(J2000)":"-70.85833333333333","可见光星等V":"11.3","摄影(蓝光)星等B":"12.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.7","短轴(分)":"2.4","方位角":"80","详细描述":"pretty bright, small, round, extremely small (faint) star to southeast, 2nd of 4","简略描述":"pB, S, R, eS * sf, 2nd of 4"},{"ID":"6877","标识":"NGC6877","M标识":"NGC6877","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h18m35.9s","赤经D(J2000)":"20.30997222222222","赤纬(J2000)":"-70h51m10s","赤纬D(J2000)":"-70.85277777777777","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"169","详细描述":"very faint, very small, round, 3rd of 4","简略描述":"vF, vS, R, 3rd of 4"},{"ID":"6878","标识":"NGC6878","M标识":"NGC6878","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"20h13m53.2s","赤经D(J2000)":"20.231444444444442","赤纬(J2000)":"-44h31m36s","赤纬D(J2000)":"-44.526666666666664","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"111","详细描述":"very faint, pretty large, round, gradually a little brighter middle","简略描述":"vF, pL, R, glbM"},{"ID":"6879","标识":"NGC6879","M标识":"NGC6879","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天箭座","星座(En)":"SGE","赤经(J2000)":"20h10m26.6s","赤经D(J2000)":"20.174055555555558","赤纬(J2000)":"+16h55m25s","赤纬D(J2000)":"16.92361111111111","可见光星等V":"12.5","摄影(蓝光)星等B":"13","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.15","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, stellar, equivalent to 10th-magnitude star","简略描述":"planetary, stellar = 10m"},{"ID":"6880","标识":"NGC6880","M标识":"NGC6880","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h19m29.6s","赤经D(J2000)":"20.32488888888889","赤纬(J2000)":"-70h51m34s","赤纬D(J2000)":"-70.85944444444443","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2","短轴(分)":"0.9","方位角":"35","详细描述":"faint, small, round, mottled but not resolved, very small (faint) star attached, 4th of 4","简略描述":"F, S, R, r, vS * att, 4th of 4"},{"ID":"6881","标识":"NGC6881","M标识":"NGC6881","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h10m52.5s","赤经D(J2000)":"20.181250000000002","赤纬(J2000)":"+37h24m44s","赤纬D(J2000)":"37.41222222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.27","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, stellar","简略描述":"planetary, stellar"},{"ID":"6882","标识":"NGC6882","M标识":"NGC6882","拓展名":"","组件":"","Class":"VIII 22","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"III2p","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"20h11m58s","赤经D(J2000)":"20.199444444444445","赤纬(J2000)":"+26h29m0s","赤纬D(J2000)":"26.483333333333334","可见光星等V":"8.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed","简略描述":"Cl, P, lC"},{"ID":"6883","标识":"NGC6883","M标识":"NGC6883","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h11m18s","赤经D(J2000)":"20.188333333333333","赤纬(J2000)":"+35h51m0s","赤纬D(J2000)":"35.85","可见光星等V":"8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"35","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, double star involved","简略描述":"Cl, pRi, ** inv"},{"ID":"6884","标识":"NGC6884","M标识":"NGC6884","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"PN","含重复类型":"Dup","形态":"PN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h10m23.7s","赤经D(J2000)":"20.17325","赤纬(J2000)":"+46h27m42s","赤纬D(J2000)":"46.461666666666666","可见光星等V":"10.9","摄影(蓝光)星等B":"12.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.25","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, stellar","简略描述":"planetary, stellar"},{"ID":"6885","标识":"NGC6885","M标识":"NGC6885","拓展名":"","组件":"","Class":"VIII 20","业余排名":"2","中文名":"狐狸座20星团","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"20h11m58s","赤经D(J2000)":"20.199444444444445","赤纬(J2000)":"+26h29m0s","赤纬D(J2000)":"26.483333333333334","可见光星等V":"8.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed","简略描述":"Cl, vB, vL, Ri, lC, st 6…11"},{"ID":"6886","标识":"NGC6886","M标识":"NGC6886","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天箭座","星座(En)":"SGE","赤经(J2000)":"20h12m42.8s","赤经D(J2000)":"20.21188888888889","赤纬(J2000)":"+19h59m24s","赤纬D(J2000)":"19.990000000000002","可见光星等V":"11.4","摄影(蓝光)星等B":"12.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.17","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, stellar, equivalent to 10th magnitude","简略描述":"planetary, stellar = 10 m"},{"ID":"6887","标识":"NGC6887","M标识":"NGC6887","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h17m17s","赤经D(J2000)":"20.28805555555556","赤纬(J2000)":"-52h47m50s","赤纬D(J2000)":"-52.79722222222222","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.2","短轴(分)":"1.3","方位角":"102","详细描述":"pretty faint, considerably large, pretty much extended, gradually a little brighter middle","简略描述":"pF, cL, pmE, glbM"},{"ID":"6888","标识":"NGC6888","M标识":"NGC6888","拓展名":"","组件":"","Class":"IV 72","业余排名":"2","中文名":"眉月星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h12m6.5s","赤经D(J2000)":"20.201805555555556","赤纬(J2000)":"+38h21m18s","赤纬D(J2000)":"38.355000000000004","可见光星等V":"99","摄影(蓝光)星等B":"10","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"18","短轴(分)":"13","方位角":"","详细描述":"faint, very large, very much extended, double star attached","简略描述":"F, vL, vmE, ** att"},{"ID":"6889","标识":"NGC6889","M标识":"NGC6889","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h18m53.3s","赤经D(J2000)":"20.314805555555555","赤纬(J2000)":"-53h57m24s","赤纬D(J2000)":"-53.95666666666667","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"63","详细描述":"very faint, large, a little extended","简略描述":"vF, L, lE"},{"ID":"6890","标识":"NGC6890","M标识":"NGC6890","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"20h18m18s","赤经D(J2000)":"20.305","赤纬(J2000)":"-44h48m23s","赤纬D(J2000)":"-44.80638888888888","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"152","详细描述":"pretty faint, small, round, very gradually a little brighter middle","简略描述":"pF, S, R, vglbM"},{"ID":"6891","标识":"NGC6891","M标识":"NGC6891","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h15m8.9s","赤经D(J2000)":"20.252472222222224","赤纬(J2000)":"+12h42m17s","赤纬D(J2000)":"12.704722222222221","可见光星等V":"10.5","摄影(蓝光)星等B":"11.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.35","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, stellar, equivalent to 9.5 magnitude","简略描述":"planetary, stellar = 9.5 m"},{"ID":"6892","标识":"NGC6892","M标识":"NGC6892","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"天箭座","星座(En)":"SGE","赤经(J2000)":"20h16m57.1s","赤经D(J2000)":"20.282527777777776","赤纬(J2000)":"+18h1m12s","赤纬D(J2000)":"18.02","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"an extremely faint nebulous star (perhaps an extremely small cluster?)","简略描述":"eF neb * (? eS Cl)"},{"ID":"6893","标识":"NGC6893","M标识":"NGC6893","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h20m49.6s","赤经D(J2000)":"20.34711111111111","赤纬(J2000)":"-48h14m22s","赤纬D(J2000)":"-48.239444444444445","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.6","短轴(分)":"1.7","方位角":"10","详细描述":"pretty faint, small, round, suddenly very bright middle equivalent to 12th magnitude star","简略描述":"pF, S, R, svbM * 12"},{"ID":"6894","标识":"NGC6894","M标识":"NGC6894","拓展名":"","组件":"","Class":"IV 13","业余排名":"6.5","中文名":"小指环星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h16m24s","赤经D(J2000)":"20.273333333333333","赤纬(J2000)":"+30h33m57s","赤纬D(J2000)":"30.565833333333334","可见光星等V":"12.3","摄影(蓝光)星等B":"14.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.92","短轴(分)":"","方位角":"","详细描述":"a very remarkable object, an annular nebula, faint, small, very very little extended","简略描述":"!!, Ring, F, S, vvlE"},{"ID":"6895","标识":"NGC6895","M标识":"NGC6895","拓展名":"","组件":"","Class":"VIII 83","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h16m32s","赤经D(J2000)":"20.275555555555556","赤纬(J2000)":"+50h14m24s","赤纬D(J2000)":"50.24","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, a little compressed","简略描述":"Cl, pRi, lC"},{"ID":"6896","标识":"NGC6896","M标识":"NGC6896","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h18m3.6s","赤经D(J2000)":"20.301000000000002","赤纬(J2000)":"+30h38m26s","赤纬D(J2000)":"30.640555555555554","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster (plus a nebula), small, stars very small (faint)","简略描述":"Cl (+ neb ?), S, st vS"},{"ID":"6897","标识":"NGC6897","M标识":"NGC6897","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h21m1.3s","赤经D(J2000)":"20.350361111111113","赤纬(J2000)":"-12h15m18s","赤纬D(J2000)":"-12.255","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"35","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"6898","标识":"NGC6898","M标识":"NGC6898","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h21m8s","赤经D(J2000)":"20.352222222222224","赤纬(J2000)":"-12h21m32s","赤纬D(J2000)":"-12.358888888888888","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"140","详细描述":"faint, small, irregularly round","简略描述":"F, S, iR"},{"ID":"6899","标识":"NGC6899","M标识":"NGC6899","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h24m22.3s","赤经D(J2000)":"20.40619444444444","赤纬(J2000)":"-50h26m1s","赤纬D(J2000)":"-50.433611111111105","可见光星等V":"12.8","摄影(蓝光)星等B":"13.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"1","方位角":"112","详细描述":"faint, small, round, gradually a little brighter middle, among stars","简略描述":"F, S, R, glbM, am st"},{"ID":"6900","标识":"NGC6900","M标识":"NGC6900","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h21m35.1s","赤经D(J2000)":"20.359750000000002","赤纬(J2000)":"-2h34m11s","赤纬D(J2000)":"-2.569722222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.8","方位角":"178","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"6901","标识":"NGC6901","M标识":"NGC6901","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h22m21.6s","赤经D(J2000)":"20.372666666666667","赤纬(J2000)":"+6h25m47s","赤纬D(J2000)":"6.429722222222223","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"63","详细描述":"extremely faint","简略描述":"eF"},{"ID":"6902","标识":"NGC6902","M标识":"NGC6902","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"20h24m27.9s","赤经D(J2000)":"20.40775","赤纬(J2000)":"-43h39m11s","赤纬D(J2000)":"-43.653055555555554","可见光星等V":"10.9","摄影(蓝光)星等B":"11.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"5.6","短轴(分)":"3.9","方位角":"153","详细描述":"faint, considerably small, round, brighter middle","简略描述":"F, cS, R, bM"},{"ID":"6903","标识":"NGC6903","M标识":"NGC6903","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h23m44.9s","赤经D(J2000)":"20.395805555555555","赤纬(J2000)":"-19h19m33s","赤纬D(J2000)":"-19.325833333333332","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"considerably large, extended, brighter middle equivalent to 17th magnitude star, 10th magnitude star attached on north","简略描述":"cL, E, bM * 17, * 10 att n"},{"ID":"6904","标识":"NGC6904","M标识":"NGC6904","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"20h21m48.3s","赤经D(J2000)":"20.36341666666667","赤纬(J2000)":"+25h44m22s","赤纬D(J2000)":"25.739444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, small, very little compressed, stars from 10th to 11th magnitude","简略描述":"Cl, S, vlC, st 10…11"},{"ID":"6905","标识":"NGC6905","M标识":"NGC6905","拓展名":"","组件":"","Class":"IV 16","业余排名":"6","中文名":"蓝闪星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h22m23s","赤经D(J2000)":"20.373055555555556","赤纬(J2000)":"+20h6m18s","赤纬D(J2000)":"20.105","可见光星等V":"11.1","摄影(蓝光)星等B":"11.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.2","短轴(分)":"","方位角":"","详细描述":"a very remarkable object, a planetary nebula, bright, pretty small, round, 4 small (faint) stars near","简略描述":"!!, planetary, B, pS, R, 4 S st nr"},{"ID":"6906","标识":"NGC6906","M标识":"NGC6906","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h23m34s","赤经D(J2000)":"20.392777777777777","赤纬(J2000)":"+6h26m40s","赤纬D(J2000)":"6.444444444444445","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"36","详细描述":"pretty faint, pretty large, round","简略描述":"pF, pL, R"},{"ID":"6907","标识":"NGC6907","M标识":"NGC6907","拓展名":"","组件":"","Class":"III 141","业余排名":"6.5","中文名":"巨兽星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h25m6.6s","赤经D(J2000)":"20.4185","赤纬(J2000)":"-24h48m33s","赤纬D(J2000)":"-24.809166666666666","可见光星等V":"11.2","摄影(蓝光)星等B":"11.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.4","短轴(分)":"2.6","方位角":"46","详细描述":"considerably faint, considerably large, very little extended, very gradually a little brighter middle, mottled but not resolved, 3 stars preceding (to the west)","简略描述":"cF, cL, vlE, vglbM, r, 3 st p"},{"ID":"6908","标识":"NGC6908","M标识":"NGC6908","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h25m9s","赤经D(J2000)":"20.41916666666667","赤纬(J2000)":"-24h48m10s","赤纬D(J2000)":"-24.802777777777777","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"10.6","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"0","详细描述":"extremely faint, very small, a little extended, h 2076 preceding (to the west)","简略描述":"eF, vS, lE, h 2076 p"},{"ID":"6909","标识":"NGC6909","M标识":"NGC6909","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h27m38.8s","赤经D(J2000)":"20.46077777777778","赤纬(J2000)":"-47h1m38s","赤纬D(J2000)":"-47.02722222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.2","短轴(分)":"1.1","方位角":"68","详细描述":"pretty bright, pretty large, gradually brighter middle, 2 stars of 10th magnitude near","简略描述":"pB, pL, gbM, 2 st 10 nr"},{"ID":"6910","标识":"NGC6910","M标识":"NGC6910","拓展名":"","组件":"","Class":"VIII 56","业余排名":"6","中文名":"尺蠖星团","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h23m12s","赤经D(J2000)":"20.386666666666667","赤纬(J2000)":"+40h46m43s","赤纬D(J2000)":"40.77861111111111","可见光星等V":"7.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty bright, pretty small, poor, pretty compressed, stars of 10th to 12th magnitude","简略描述":"Cl, pB, pS, P, pC, st 10…12"},{"ID":"6911","标识":"NGC6911","M标识":"NGC6911","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"20h19m38.3s","赤经D(J2000)":"20.327305555555554","赤纬(J2000)":"+66h43m44s","赤纬D(J2000)":"66.72888888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"15","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"115","详细描述":"extremely faint, large, a little brighter middle, pretty bright star near","简略描述":"eF, L, lbM, pB * nr"},{"ID":"6912","标识":"NGC6912","M标识":"NGC6912","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h26m52.1s","赤经D(J2000)":"20.447805555555554","赤纬(J2000)":"-18h37m3s","赤纬D(J2000)":"-18.6175","可见光星等V":"13.2","摄影(蓝光)星等B":"13.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"55","详细描述":"very faint, 2 stars of 14th or 15th magnitude to northwest, 8th magnitude star to east","简略描述":"vF, 2 st 14·15 np, * 8 f"},{"ID":"6913","标识":"NGC6913","M标识":"M29","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"冷却塔星团","类型":"OCL","含重复类型":"OCL","形态":"III3p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h24m6s","赤经D(J2000)":"20.401666666666664","赤纬(J2000)":"+38h29m36s","赤纬D(J2000)":"38.49333333333333","可见光星等V":"6.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed, stars large and small (meaning bright and faint)","简略描述":"Cl, P, lC, st L and S"},{"ID":"6914","标识":"NGC6914","M标识":"NGC6914","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h24m43s","赤经D(J2000)":"20.411944444444444","赤纬(J2000)":"+42h29m0s","赤纬D(J2000)":"42.483333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"3","方位角":"","详细描述":"very faint, very large, irregularly round, diffuse, 2 stars attached on west","简略描述":"vF, vL, iR, dif, 2 st att p"},{"ID":"6915","标识":"NGC6915","M标识":"NGC6915","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h27m46s","赤经D(J2000)":"20.462777777777777","赤纬(J2000)":"-3h4m36s","赤纬D(J2000)":"-3.0766666666666667","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"80","详细描述":"pretty bright, small, round","简略描述":"pB, S, R"},{"ID":"6916","标识":"NGC6916","M标识":"NGC6916","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h23m33.1s","赤经D(J2000)":"20.392527777777776","赤纬(J2000)":"+58h20m39s","赤纬D(J2000)":"58.344166666666666","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"90","详细描述":"most extremely faint, pretty small, faint star close on west, very difficult","简略描述":"eeF, pS, F * close p, v diffic"},{"ID":"6917","标识":"NGC6917","M标识":"NGC6917","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h27m28.4s","赤经D(J2000)":"20.45788888888889","赤纬(J2000)":"+8h5m50s","赤纬D(J2000)":"8.097222222222223","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"1","方位角":"40","详细描述":"very faint, small, attached to a small (faint) star","简略描述":"vF, S, att to a S *"},{"ID":"6918","标识":"NGC6918","M标识":"NGC6918","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h30m46.9s","赤经D(J2000)":"20.51302777777778","赤纬(J2000)":"-47h28m27s","赤纬D(J2000)":"-47.47416666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"178","详细描述":"very faint, 12th magnitude star attached on southwest","简略描述":"vF, * 12 att sp"},{"ID":"6919","标识":"NGC6919","M标识":"NGC6919","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h31m38s","赤经D(J2000)":"20.52722222222222","赤纬(J2000)":"-44h13m0s","赤纬D(J2000)":"-44.21666666666667","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"145","详细描述":"extremely faint, pretty small, round, very gradually a very little brighter middle","简略描述":"eF, pS, R, vgvlbM"},{"ID":"6920","标识":"NGC6920","M标识":"NGC6920","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"南极座","星座(En)":"OCT","赤经(J2000)":"20h43m57.1s","赤经D(J2000)":"20.732527777777776","赤纬(J2000)":"-80h0m1s","赤纬D(J2000)":"-80.00027777777778","可见光星等V":"11.2","摄影(蓝光)星等B":"12.4","B-V":"1.2","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"142","详细描述":"pretty bright, considerably small, round, pretty suddenly much brighter middle","简略描述":"pB, cS, R, psmbM"},{"ID":"6921","标识":"NGC6921","M标识":"NGC6921","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"20h28m28.9s","赤经D(J2000)":"20.47469444444444","赤纬(J2000)":"+25h43m26s","赤纬D(J2000)":"25.723888888888887","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"141","详细描述":"faint, small, extended","简略描述":"F, S, E"},{"ID":"6922","标识":"NGC6922","M标识":"NGC6922","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h29m52.8s","赤经D(J2000)":"20.498","赤纬(J2000)":"-2h11m30s","赤纬D(J2000)":"-2.1916666666666664","可见光星等V":"13.5","摄影(蓝光)星等B":"14","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"1","方位角":"150","详细描述":"very faint, pretty large, round","简略描述":"vF, pL, R"},{"ID":"6923","标识":"NGC6923","M标识":"NGC6923","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h31m39s","赤经D(J2000)":"20.5275","赤纬(J2000)":"-30h49m55s","赤纬D(J2000)":"-30.831944444444446","可见光星等V":"12","摄影(蓝光)星等B":"12.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.6","短轴(分)":"1.3","方位角":"78","详细描述":"pretty faint, considerably small, round, gradually brighter middle, between 2 stars","简略描述":"pF, cS, R, gbM, bet 2 st"},{"ID":"6924","标识":"NGC6924","M标识":"NGC6924","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h33m19.1s","赤经D(J2000)":"20.555305555555556","赤纬(J2000)":"-25h28m28s","赤纬D(J2000)":"-25.474444444444444","可见光星等V":"12.8","摄影(蓝光)星等B":"13.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2","短轴(分)":"1.7","方位角":"154","详细描述":"very faint, pretty small, round, suddenly brighter middle and nucleus","简略描述":"vF, pS, R, sbMN"},{"ID":"6925","标识":"NGC6925","M标识":"NGC6925","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h34m20.5s","赤经D(J2000)":"20.57236111111111","赤纬(J2000)":"-31h58m48s","赤纬D(J2000)":"-31.979999999999997","可见光星等V":"11.3","摄影(蓝光)星等B":"12.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"4.4","短轴(分)":"1.1","方位角":"5","详细描述":"considerably bright, large, much extended 6°, pretty suddenly a little brighter middle","简略描述":"cB, L, mE 6°, pslbM"},{"ID":"6926","标识":"NGC6926","M标识":"NGC6926","拓展名":"","组件":"","Class":"III 142","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h33m5.9s","赤经D(J2000)":"20.55163888888889","赤纬(J2000)":"-2h1m44s","赤纬D(J2000)":"-2.028888888888889","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"1.4","方位角":"0","详细描述":"very faint, pretty large, extended 176°, preceding (western) of 2","简略描述":"vF, pL, E 176°, p of 2"},{"ID":"6927","标识":"NGC6927","M标识":"NGC6927","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h32m38.1s","赤经D(J2000)":"20.543916666666668","赤纬(J2000)":"+9h55m1s","赤纬D(J2000)":"9.916944444444443","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"5","详细描述":"extremely faint, a little extended","简略描述":"eF, lE"},{"ID":"6928","标识":"NGC6928","M标识":"NGC6928","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h32m50.1s","赤经D(J2000)":"20.547250000000002","赤纬(J2000)":"+9h55m39s","赤纬D(J2000)":"9.9275","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2.1","短轴(分)":"0.6","方位角":"106","详细描述":"pretty bright, pretty large, much extended","简略描述":"pB, pL, mE"},{"ID":"6929","标识":"NGC6929","M标识":"NGC6929","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h33m21.6s","赤经D(J2000)":"20.556","赤纬(J2000)":"-2h2m12s","赤纬D(J2000)":"-2.0366666666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"77","详细描述":"very faint, very small, south following (southeastern) of 2","简略描述":"vF, vS, sf of 2"},{"ID":"6930","标识":"NGC6930","M标识":"NGC6930","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h32m58.8s","赤经D(J2000)":"20.549666666666667","赤纬(J2000)":"+9h52m26s","赤纬D(J2000)":"9.873888888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"8","详细描述":"faint, much extended","简略描述":"F, mE"},{"ID":"6931","标识":"NGC6931","M标识":"NGC6931","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h33m41.4s","赤经D(J2000)":"20.561500000000002","赤纬(J2000)":"-11h22m8s","赤纬D(J2000)":"-11.36888888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.4","方位角":"125","详细描述":"extremely faint, pretty small, extended 120°, gradually brighter middle","简略描述":"eF, pS, E 120°, gbM"},{"ID":"6932","标识":"NGC6932","M标识":"NGC6932","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h42m8.6s","赤经D(J2000)":"20.702388888888887","赤纬(J2000)":"-73h37m8s","赤纬D(J2000)":"-73.61888888888888","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.2","短轴(分)":"1.6","方位角":"115","详细描述":"faint, small, round, gradually brighter middle, 5 stars preceding (to the west)","简略描述":"F, S, R, gbM, 5 st p"},{"ID":"6933","标识":"NGC6933","M标识":"NGC6933","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h33m38.2s","赤经D(J2000)":"20.56061111111111","赤纬(J2000)":"+7h23m16s","赤纬D(J2000)":"7.387777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, very small, h 2081 following (to the east)","简略描述":"pB, vS, h 2081 f"},{"ID":"6934","标识":"NGC6934","M标识":"NGC6934","拓展名":"","组件":"","Class":"I 103","业余排名":"2","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"VIII","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h34m11.6s","赤经D(J2000)":"20.56988888888889","赤纬(J2000)":"+7h24m17s","赤纬D(J2000)":"7.404722222222222","可见光星等V":"8.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7.1","短轴(分)":"","方位角":"","详细描述":"a globular cluster, bright, large, round, well resolved and clearly consisting of stars, stars from 16th magnitude, 9th magnitude star preceding (to the west)","简略描述":"globular, B, L, R, rrr, st 16…, * 9 p"},{"ID":"6935","标识":"NGC6935","M标识":"NGC6935","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h38m20s","赤经D(J2000)":"20.63888888888889","赤纬(J2000)":"-52h6m37s","赤纬D(J2000)":"-52.11027777777778","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.1","短轴(分)":"1.8","方位角":"8","详细描述":"pretty bright, considerably large, round, gradually a little brighter middle, mottled but not resolved, preceding (western) of 2","简略描述":"pB, cL, R, glbM, r, p of 2"},{"ID":"6936","标识":"NGC6936","M标识":"NGC6936","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h35m56.3s","赤经D(J2000)":"20.598972222222223","赤纬(J2000)":"-25h16m48s","赤纬D(J2000)":"-25.279999999999998","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"1","方位角":"4","详细描述":"very faint, very small, round, suddenly a little brighter middle","简略描述":"vF, vS, R, slbM"},{"ID":"6937","标识":"NGC6937","M标识":"NGC6937","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h38m45.8s","赤经D(J2000)":"20.646055555555556","赤纬(J2000)":"-52h8m38s","赤纬D(J2000)":"-52.14388888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"2.5","短轴(分)":"2.1","方位角":"51","详细描述":"very faint, considerably small, round, suddenly a little brighter middle, following (eastern) of 2","简略描述":"vF, cS, R, slbM, f of 2"},{"ID":"6938","标识":"NGC6938","M标识":"NGC6938","拓展名":"","组件":"","Class":"VIII 17","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"20h34m42s","赤经D(J2000)":"20.578333333333333","赤纬(J2000)":"+22h13m2s","赤纬D(J2000)":"22.21722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"cluster, very large, poor, very little compressed","简略描述":"Cl, vL, P, vlC"},{"ID":"6939","标识":"NGC6939","M标识":"NGC6939","拓展名":"","组件":"","Class":"VI 42","业余排名":"6","中文名":"鬼套星团","类型":"OCL","含重复类型":"OCL","形态":"I1m","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"20h31m30s","赤经D(J2000)":"20.525","赤纬(J2000)":"+60h39m42s","赤纬D(J2000)":"60.66166666666666","可见光星等V":"7.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, extremely rich, pretty compressed middle, stars from 11th to 16th magnitude","简略描述":"Cl, pL, eRi, pCM, st 11…16"},{"ID":"6940","标识":"NGC6940","M标识":"NGC6940","拓展名":"","组件":"","Class":"VII 8","业余排名":"5","中文名":"魔斯拉星团","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"20h34m32.3s","赤经D(J2000)":"20.57563888888889","赤纬(J2000)":"+28h16m49s","赤纬D(J2000)":"28.280277777777776","可见光星等V":"6.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"","方位角":"","详细描述":"a cluster, very bright, very large, very rich, considerably compressed, stars pretty large (bright)","简略描述":"Cl, vB, vL, vRi, cC, st pL"},{"ID":"6941","标识":"NGC6941","M标识":"NGC6941","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h36m23.5s","赤经D(J2000)":"20.606527777777778","赤纬(J2000)":"-4h37m8s","赤纬D(J2000)":"-4.61888888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2","短轴(分)":"1.4","方位角":"115","详细描述":"extremely faint, a little extended, a little brighter middle","简略描述":"eF, lE, lbM"},{"ID":"6942","标识":"NGC6942","M标识":"NGC6942","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h40m37.9s","赤经D(J2000)":"20.677194444444446","赤纬(J2000)":"-54h18m8s","赤纬D(J2000)":"-54.30222222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.1","短轴(分)":"1.6","方位角":"150","详细描述":"pretty bright, pretty large, round, pretty suddenly a little brighter middle","简略描述":"pB, pL, R, pslbM"},{"ID":"6943","标识":"NGC6943","M标识":"NGC6943","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h44m33.7s","赤经D(J2000)":"20.742694444444446","赤纬(J2000)":"-68h44m53s","赤纬D(J2000)":"-68.74805555555555","可见光星等V":"11.4","摄影(蓝光)星等B":"12.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"4","短轴(分)":"2.2","方位角":"130","详细描述":"pretty faint, large, much extended, very gradually a little brighter middle, very small star","简略描述":"pF, L, mE, vglbM vs *"},{"ID":"6944","标识":"NGC6944","M标识":"NGC6944","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h38m23.8s","赤经D(J2000)":"20.639944444444446","赤纬(J2000)":"+6h59m49s","赤纬D(J2000)":"6.996944444444445","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"57","详细描述":"pretty faint, small, round","简略描述":"pF, S, R"},{"ID":"6945","标识":"NGC6945","M标识":"NGC6945","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h39m0.5s","赤经D(J2000)":"20.650138888888886","赤纬(J2000)":"-4h58m20s","赤纬D(J2000)":"-4.972222222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"126","详细描述":"pretty faint, very small, round, much brighter middle","简略描述":"pF, vS, R, mbM"},{"ID":"6946","标识":"NGC6946","M标识":"NGC6946","拓展名":"","组件":"","Class":"IV 76","业余排名":"2","中文名":"烟花星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h34m52.1s","赤经D(J2000)":"20.581138888888887","赤纬(J2000)":"+60h9m12s","赤纬D(J2000)":"60.15333333333333","可见光星等V":"8.8","摄影(蓝光)星等B":"9.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"11.5","短轴(分)":"9.8","方位角":"57","详细描述":"very faint, very large, very gradually then very suddenly brighter middle, partially resolved (some stars seen)","简略描述":"vF, vL, vg, vsbM, rr"},{"ID":"6947","标识":"NGC6947","M标识":"NGC6947","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h41m15s","赤经D(J2000)":"20.6875","赤纬(J2000)":"-32h29m11s","赤纬D(J2000)":"-32.48638888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.6","短轴(分)":"1","方位角":"51","详细描述":"very faint, large, round, gradually brighter middle","简略描述":"vF, L, R, gbM"},{"ID":"6948","标识":"NGC6948","M标识":"NGC6948","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h43m28.9s","赤经D(J2000)":"20.72469444444444","赤纬(J2000)":"-53h21m26s","赤纬D(J2000)":"-53.35722222222223","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.2","短轴(分)":"1","方位角":"115","详细描述":"very faint, pretty small, considerably extended, a little brighter middle","简略描述":"vF, pS, cE, lbM"},{"ID":"6949","标识":"NGC6949","M标识":"NGC6949","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"20h35m7s","赤经D(J2000)":"20.585277777777776","赤纬(J2000)":"+64h48m12s","赤纬D(J2000)":"64.80333333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"6","详细描述":"extremely faint, pretty small, irregularly round","简略描述":"eF, pS, iR"},{"ID":"6950","标识":"NGC6950","M标识":"NGC6950","拓展名":"","组件":"","Class":"VIII 23","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h41m5s","赤经D(J2000)":"20.684722222222224","赤纬(J2000)":"+16h37m14s","赤纬D(J2000)":"16.620555555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, very little compressed","简略描述":"Cl, P, vlC"},{"ID":"6951","标识":"NGC6951","M标识":"NGC6951","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"20h37m14s","赤经D(J2000)":"20.620555555555555","赤纬(J2000)":"+66h6m21s","赤纬D(J2000)":"66.10583333333332","可见光星等V":"10.7","摄影(蓝光)星等B":"11.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.9","短轴(分)":"3.2","方位角":"170","详细描述":"pretty bright, pretty large, a little extended","简略描述":"pB, pL, lE"},{"ID":"6952","标识":"NGC6952","M标识":"NGC6952","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"20h37m14s","赤经D(J2000)":"20.620555555555555","赤纬(J2000)":"+66h6m21s","赤纬D(J2000)":"66.10583333333332","可见光星等V":"10.7","摄影(蓝光)星等B":"11.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.9","短轴(分)":"3.2","方位角":"170","详细描述":"pretty bright, pretty large, a little extended","简略描述":"pB, oval, dif, * 15 close f"},{"ID":"6953","标识":"NGC6953","M标识":"NGC6953","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"20h38m41s","赤经D(J2000)":"20.64472222222222","赤纬(J2000)":"+65h48m12s","赤纬D(J2000)":"65.80333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.5","短轴(分)":"","方位角":"","详细描述":"most extremely faint, pretty large, round, very difficult","简略描述":"eeF, pL, R, v diffic"},{"ID":"6954","标识":"NGC6954","M标识":"NGC6954","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h44m3.3s","赤经D(J2000)":"20.73425","赤纬(J2000)":"+3h12m34s","赤纬D(J2000)":"3.2094444444444448","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.6","方位角":"68","详细描述":"faint, small, very little extended","简略描述":"F, S, vlE"},{"ID":"6955","标识":"NGC6955","M标识":"NGC6955","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h44m17.9s","赤经D(J2000)":"20.738305555555556","赤纬(J2000)":"+2h35m43s","赤纬D(J2000)":"2.595277777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"30","详细描述":"extremely faint, pretty large, round","简略描述":"eF, pL, R"},{"ID":"6956","标识":"NGC6956","M标识":"NGC6956","拓展名":"","组件":"","Class":"III 219","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h43m53.7s","赤经D(J2000)":"20.731583333333333","赤纬(J2000)":"+12h30m44s","赤纬D(J2000)":"12.512222222222222","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.9","方位角":"","详细描述":"very faint, small, stellar, double star attached","简略描述":"vF, S, stellar, ** att"},{"ID":"6957","标识":"NGC6957","M标识":"NGC6957","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h44m47.7s","赤经D(J2000)":"20.746583333333334","赤纬(J2000)":"+2h34m50s","赤纬D(J2000)":"2.5805555555555553","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"171","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"6958","标识":"NGC6958","M标识":"NGC6958","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h48m42.6s","赤经D(J2000)":"20.811833333333333","赤纬(J2000)":"-37h59m52s","赤纬D(J2000)":"-37.99777777777778","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.5","短轴(分)":"1.9","方位角":"107","详细描述":"bright, considerably small, pretty gradually much brighter middle, 4 stars to west","简略描述":"B, cS, R, pgmbM, 4 st p"},{"ID":"6959","标识":"NGC6959","M标识":"NGC6959","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h47m7.2s","赤经D(J2000)":"20.785333333333334","赤纬(J2000)":"+0h25m49s","赤纬D(J2000)":"0.4302777777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"57","详细描述":"very faint","简略描述":"vF"},{"ID":"6960","标识":"NGC6960","M标识":"NGC6960","拓展名":"","组件":"","Class":"V 15","业余排名":"2","中文名":"纤维星云","类型":"Nb","含重复类型":"Nb","形态":"SNR","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h45m42s","赤经D(J2000)":"20.761666666666667","赤纬(J2000)":"+30h43m0s","赤纬D(J2000)":"30.716666666666665","可见光星等V":"99","摄影(蓝光)星等B":"7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"70","短轴(分)":"6","方位角":"","详细描述":"a very remarkable object, pretty bright, considerably large, extremely irregular figure, κ Cygni involved","简略描述":"!! pB, cL, eiF, κ Cygni inv"},{"ID":"6961","标识":"NGC6961","M标识":"NGC6961","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h47m10.4s","赤经D(J2000)":"20.786222222222225","赤纬(J2000)":"+0h21m50s","赤纬D(J2000)":"0.3638888888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"134","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"6962","标识":"NGC6962","M标识":"NGC6962","拓展名":"","组件":"","Class":"II 426","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h47m18.9s","赤经D(J2000)":"20.788583333333335","赤纬(J2000)":"+0h19m19s","赤纬D(J2000)":"0.3219444444444444","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.9","短轴(分)":"2.2","方位角":"75","详细描述":"considerably faint, small, round, brighter middle","简略描述":"cF, S, R, bM"},{"ID":"6963","标识":"NGC6963","M标识":"NGC6963","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h47m19s","赤经D(J2000)":"20.788611111111113","赤纬(J2000)":"+0h30m33s","赤纬D(J2000)":"0.5091666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a nebulous 13th magnitude star","简略描述":"neb * 13 m"},{"ID":"6964","标识":"NGC6964","M标识":"NGC6964","拓展名":"","组件":"","Class":"II 427","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h47m24.2s","赤经D(J2000)":"20.790055555555558","赤纬(J2000)":"+0h18m5s","赤纬D(J2000)":"0.3013888888888889","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"168","详细描述":"faint, very small, round, brighter middle, 14th magnitude star 1\/2 an arcmin to southeast","简略描述":"F, vS, R, bM, * 14 sf ?'"},{"ID":"6965","标识":"NGC6965","M标识":"NGC6965","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h47m20.5s","赤经D(J2000)":"20.78902777777778","赤纬(J2000)":"+0h29m3s","赤纬D(J2000)":"0.4841666666666667","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"66","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"6966","标识":"NGC6966","M标识":"NGC6966","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h47m26.7s","赤经D(J2000)":"20.790750000000003","赤纬(J2000)":"+0h22m5s","赤纬D(J2000)":"0.3680555555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"6967","标识":"NGC6967","M标识":"NGC6967","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h47m34s","赤经D(J2000)":"20.79277777777778","赤纬(J2000)":"+0h24m44s","赤纬D(J2000)":"0.41222222222222227","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"105","详细描述":"extremely faint, very small, 10th magnitude star 50 arcsec to east","简略描述":"eF, vS, * 10 50\" f"},{"ID":"6968","标识":"NGC6968","M标识":"NGC6968","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h48m32.4s","赤经D(J2000)":"20.809","赤纬(J2000)":"-8h21m35s","赤纬D(J2000)":"-8.359722222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"144","详细描述":"faint, small, round, gradually brighter middle, faint star involved","简略描述":"F, S, R, gbM, F * inv"},{"ID":"6969","标识":"NGC6969","M标识":"NGC6969","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h48m27.6s","赤经D(J2000)":"20.807666666666666","赤纬(J2000)":"+7h44m25s","赤纬D(J2000)":"7.740277777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"15","详细描述":"faint, pretty large, extended","简略描述":"F, pL, E"},{"ID":"6970","标识":"NGC6970","M标识":"NGC6970","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h52m9.4s","赤经D(J2000)":"20.86927777777778","赤纬(J2000)":"-48h46m41s","赤纬D(J2000)":"-48.778055555555554","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.6","方位角":"123","详细描述":"pretty bright, small, a little extended, gradually brighter middle","简略描述":"pB, S, lE, gbM"},{"ID":"6971","标识":"NGC6971","M标识":"NGC6971","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h49m23.7s","赤经D(J2000)":"20.823249999999998","赤纬(J2000)":"+5h59m43s","赤纬D(J2000)":"5.995277777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"60","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"6972","标识":"NGC6972","M标识":"NGC6972","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h49m58.9s","赤经D(J2000)":"20.833027777777776","赤纬(J2000)":"+9h53m59s","赤纬D(J2000)":"9.899722222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"143","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"6973","标识":"NGC6973","M标识":"NGC6973","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h52m6s","赤经D(J2000)":"20.868333333333332","赤纬(J2000)":"-5h53m39s","赤纬D(J2000)":"-5.894166666666666","可见光星等V":"99","摄影(蓝光)星等B":"15.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, mottled but not resolved","简略描述":"vF, S, r"},{"ID":"6974","标识":"NGC6974","M标识":"NGC6974","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"SNR","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h51m4s","赤经D(J2000)":"20.851111111111113","赤纬(J2000)":"+31h49m54s","赤纬D(J2000)":"31.831666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a nebulous star, nebulosity considerably extended east-west","简略描述":"Neb *, neby cE pf"},{"ID":"6975","标识":"NGC6975","M标识":"NGC6975","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h52m25.9s","赤经D(J2000)":"20.87386111111111","赤纬(J2000)":"-5h46m17s","赤纬D(J2000)":"-5.771388888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"5","详细描述":"very faint, small, perhaps = m427?","简略描述":"vF, S, ? = m 427"},{"ID":"6976","标识":"NGC6976","M标识":"NGC6976","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h52m25.9s","赤经D(J2000)":"20.87386111111111","赤纬(J2000)":"-5h46m17s","赤纬D(J2000)":"-5.771388888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"5","详细描述":"very faint, small, perhaps = m427?","简略描述":"eF, iR"},{"ID":"6977","标识":"NGC6977","M标识":"NGC6977","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h52m29.6s","赤经D(J2000)":"20.87488888888889","赤纬(J2000)":"-5h44m45s","赤纬D(J2000)":"-5.745833333333334","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"162","详细描述":"very faint, small, irregularly round","简略描述":"vF, S, iR"},{"ID":"6978","标识":"NGC6978","M标识":"NGC6978","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h52m35.4s","赤经D(J2000)":"20.8765","赤纬(J2000)":"-5h42m40s","赤纬D(J2000)":"-5.711111111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"125","详细描述":"very faint","简略描述":"vF"},{"ID":"6979","标识":"NGC6979","M标识":"NGC6979","拓展名":"","组件":"","Class":"II 206","业余排名":"9","中文名":"弗莱明三角星云","类型":"Nb","含重复类型":"Nb","形态":"SNR","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h50m30s","赤经D(J2000)":"20.841666666666665","赤纬(J2000)":"+32h1m36s","赤纬D(J2000)":"32.026666666666664","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"3","方位角":"","详细描述":"very faint, small, irregularly extended, several faint stars near to east","简略描述":"vF, S, iE, sev F st f nr"},{"ID":"6980","标识":"NGC6980","M标识":"NGC6980","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h52m48.9s","赤经D(J2000)":"20.88025","赤纬(J2000)":"-5h50m13s","赤纬D(J2000)":"-5.836944444444444","可见光星等V":"99","摄影(蓝光)星等B":"15.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, mottled but not resolved","简略描述":"vF, S, r"},{"ID":"6981","标识":"NGC6981","M标识":"M72","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"IX","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h53m27.9s","赤经D(J2000)":"20.891083333333334","赤纬(J2000)":"-12h32m11s","赤纬D(J2000)":"-12.536388888888888","可见光星等V":"9.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6.6","短轴(分)":"","方位角":"","详细描述":"a globular cluster, pretty bright, pretty large, round, gradually much compressed middle, well resolved, clearly consisting of stars","简略描述":"globular, pB, pL, R, gmCM, rrr"},{"ID":"6982","标识":"NGC6982","M标识":"NGC6982","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h57m18.3s","赤经D(J2000)":"20.955083333333334","赤纬(J2000)":"-51h51m46s","赤纬D(J2000)":"-51.86277777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.7","方位角":"68","详细描述":"very faint, small, extended, western of 2","简略描述":"vF, S, E, p of 2"},{"ID":"6983","标识":"NGC6983","M标识":"NGC6983","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h56m43.5s","赤经D(J2000)":"20.945416666666667","赤纬(J2000)":"-43h59m10s","赤纬D(J2000)":"-43.986111111111114","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"147","详细描述":"extremely faint, considerably small, round","简略描述":"eF, cS, R"},{"ID":"6984","标识":"NGC6984","M标识":"NGC6984","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h57m54.2s","赤经D(J2000)":"20.965055555555555","赤纬(J2000)":"-51h52m15s","赤纬D(J2000)":"-51.87083333333334","可见光星等V":"12.7","摄影(蓝光)星等B":"13.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"101","详细描述":"faint, pretty large, very little extended, very gradually brighter middle, eastern of 2","简略描述":"F, pL, vlE, vgbM, f of 2"},{"ID":"6985","标识":"NGC6985","M标识":"NGC6985","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h45m3s","赤经D(J2000)":"20.750833333333333","赤纬(J2000)":"-11h6m15s","赤纬D(J2000)":"-11.104166666666666","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"90","详细描述":"extremely faint, very small, irregularly round","简略描述":"eF, vS, iR"},{"ID":"6986","标识":"NGC6986","M标识":"NGC6986","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h56m30.6s","赤经D(J2000)":"20.941833333333335","赤纬(J2000)":"-18h33m58s","赤纬D(J2000)":"-18.566111111111113","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.6","方位角":"8","详细描述":"very faint, very small, round, gradually a little brighter middle and nucleus","简略描述":"vF, vS, R, glbMN"},{"ID":"6987","标识":"NGC6987","M标识":"NGC6987","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h58m10.4s","赤经D(J2000)":"20.969555555555555","赤纬(J2000)":"-48h37m48s","赤纬D(J2000)":"-48.63","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"92","详细描述":"pretty faint, small, very little extended, gradually pretty much brighter middle, bright star 1 arcmin to west","简略描述":"pF, S, vlE, gpmbM, B * p 1'"},{"ID":"6988","标识":"NGC6988","M标识":"NGC6988","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h55m48.9s","赤经D(J2000)":"20.93025","赤纬(J2000)":"+10h30m30s","赤纬D(J2000)":"10.508333333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, pretty large, round","简略描述":"eF, pL, R"},{"ID":"6989","标识":"NGC6989","M标识":"NGC6989","拓展名":"","组件":"","Class":"VIII 82","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h54m6s","赤经D(J2000)":"20.901666666666664","赤纬(J2000)":"+45h14m26s","赤纬D(J2000)":"45.24055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, considerably large, stars pretty small (faint)","简略描述":"Cl, cL, st pS"},{"ID":"6990","标识":"NGC6990","M标识":"NGC6990","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"女巫扫帚星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h59m57s","赤经D(J2000)":"20.999166666666667","赤纬(J2000)":"-55h33m43s","赤纬D(J2000)":"-55.56194444444444","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"0","详细描述":"most extremely faint, very small, very much extended 0°, 13th magnitude star attached on north","简略描述":"eeF, vS, vmE 0°, * 13 att, n"},{"ID":"6991","标识":"NGC6991","M标识":"NGC6991","拓展名":"","组件":"1","Class":"VIII 76","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h55m39s","赤经D(J2000)":"20.927500000000002","赤纬(J2000)":"+47h26m54s","赤纬D(J2000)":"47.44833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, large, poor, very little compressed","简略描述":"Cl, L, P, vlC"},{"ID":"6992","标识":"NGC6992","M标识":"NGC6992","拓展名":"","组件":"","Class":"V 14","业余排名":"2","中文名":"东面纱星云","类型":"Nb","含重复类型":"Nb","形态":"SNR","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h56m18s","赤经D(J2000)":"20.938333333333333","赤纬(J2000)":"+31h44m30s","赤纬D(J2000)":"31.741666666666667","可见光星等V":"99","摄影(蓝光)星等B":"7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"60","短轴(分)":"8","方位角":"","详细描述":"a very remarkable object, extremely faint, extremely large, extremely extended, extremely irregular figure, bifurcated","简略描述":"!!, eF, eL, eE, eiF, bifurcated"},{"ID":"6993","标识":"NGC6993","M标识":"NGC6993","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h53m54s","赤经D(J2000)":"20.898333333333333","赤纬(J2000)":"-25h28m20s","赤纬D(J2000)":"-25.47222222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"1","方位角":"108","详细描述":"very faint, very small, round, suddenly brighter middle and nucleus","简略描述":"vF, vS, R, sbMN"},{"ID":"6994","标识":"NGC6994","M标识":"M73","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h58m56s","赤经D(J2000)":"20.98222222222222","赤纬(J2000)":"-12h38m0s","赤纬D(J2000)":"-12.633333333333333","可见光星等V":"8.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.4","短轴(分)":"","方位角":"","详细描述":"a cluster, extremely poor, very little compressed, no nebulosity","简略描述":"Cl, eP, vlC, no neb"},{"ID":"6995","标识":"NGC6995","M标识":"NGC6995","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"网星云","类型":"Nb","含重复类型":"Nb","形态":"SNR","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h57m10s","赤经D(J2000)":"20.952777777777776","赤纬(J2000)":"+31h14m0s","赤纬D(J2000)":"31.233333333333334","可见光星等V":"99","摄影(蓝光)星等B":"7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"12","方位角":"","详细描述":"faint, extremely large, nebulae and stars in groups","简略描述":"F, eL, neb & st in groups"},{"ID":"6996","标识":"NGC6996","M标识":"NGC6996","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"鸟巢","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h56m30s","赤经D(J2000)":"20.941666666666666","赤纬(J2000)":"+45h28m24s","赤纬D(J2000)":"45.473333333333336","可见光星等V":"10","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed","简略描述":"Cl, P, lC"},{"ID":"6997","标识":"NGC6997","M标识":"NGC6997","拓展名":"","组件":"","Class":"VIII 58","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h56m30s","赤经D(J2000)":"20.941666666666666","赤纬(J2000)":"+44h39m0s","赤纬D(J2000)":"44.65","可见光星等V":"10","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed, stars large (bright)","简略描述":"Cl, P, lC, st L"},{"ID":"6998","标识":"NGC6998","M标识":"NGC6998","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"21h1m37.7s","赤经D(J2000)":"21.02713888888889","赤纬(J2000)":"-28h1m54s","赤纬D(J2000)":"-28.031666666666666","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"most extremely faint, very small","简略描述":"eeF, vS"},{"ID":"6999","标识":"NGC6999","M标识":"NGC6999","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"21h1m59.6s","赤经D(J2000)":"21.03322222222222","赤纬(J2000)":"-28h3m32s","赤纬D(J2000)":"-28.05888888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"179","详细描述":"most extremely faint, very small","简略描述":"eeF, vS"},{"ID":"7000","标识":"NGC7000","M标识":"NGC7000","拓展名":"","组件":"","Class":"V 37","业余排名":"2","中文名":"北美洲星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h59m18s","赤经D(J2000)":"20.988333333333333","赤纬(J2000)":"+44h31m0s","赤纬D(J2000)":"44.516666666666666","可见光星等V":"5","摄影(蓝光)星等B":"4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"120","短轴(分)":"100","方位角":"","详细描述":"faint, most extremely large, diffuse nebulosity","简略描述":"F, eeL, dif nebulosity"},{"ID":"7001","标识":"NGC7001","M标识":"NGC7001","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h1m7.7s","赤经D(J2000)":"21.018805555555556","赤纬(J2000)":"-0h11m41s","赤纬D(J2000)":"-0.1947222222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"162","详细描述":"extremely faint, small, extended 0°","简略描述":"eF, S, E 0°"},{"ID":"7002","标识":"NGC7002","M标识":"NGC7002","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h3m45s","赤经D(J2000)":"21.0625","赤纬(J2000)":"-49h1m45s","赤纬D(J2000)":"-49.02916666666667","可见光星等V":"12.4","摄影(蓝光)星等B":"13.5","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"3","详细描述":"considerably faint, considerably small, round, brighter middle","简略描述":"cF, cS, R, bM"},{"ID":"7003","标识":"NGC7003","M标识":"NGC7003","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"21h0m42.3s","赤经D(J2000)":"21.01175","赤纬(J2000)":"+17h48m17s","赤纬D(J2000)":"17.804722222222225","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"120","详细描述":"very faint, very small, a little extended, 15th magnitude star close to east","简略描述":"vF, vS, lE, * 15 close f"},{"ID":"7004","标识":"NGC7004","M标识":"NGC7004","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h4m2s","赤经D(J2000)":"21.06722222222222","赤纬(J2000)":"-49h6m51s","赤纬D(J2000)":"-49.11416666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"73","详细描述":"extremely faint, round, a little brighter middle, 11th magnitude star to east","简略描述":"eF, R, lbM, * 11 f"},{"ID":"7005","标识":"NGC7005","M标识":"NGC7005","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h1m56s","赤经D(J2000)":"21.03222222222222","赤纬(J2000)":"-12h52m39s","赤纬D(J2000)":"-12.877500000000001","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.8","短轴(分)":"","方位角":"","详细描述":"a cluster, small, poor (nebulous?)","简略描述":"Cl, S, P (? Neb)"},{"ID":"7006","标识":"NGC7006","M标识":"NGC7006","拓展名":"","组件":"","Class":"I 52","业余排名":"2","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"I","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"21h1m29.5s","赤经D(J2000)":"21.02486111111111","赤纬(J2000)":"+16h11m17s","赤纬D(J2000)":"16.188055555555557","可见光星等V":"10.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.6","短轴(分)":"","方位角":"","详细描述":"bright, pretty large, round, gradually brighter middle","简略描述":"B, pL, R, gbM"},{"ID":"7007","标识":"NGC7007","M标识":"NGC7007","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h5m27.8s","赤经D(J2000)":"21.091055555555556","赤纬(J2000)":"-52h33m7s","赤纬D(J2000)":"-52.551944444444445","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2","短轴(分)":"1.2","方位角":"2","详细描述":"pretty bright, small, round, pretty suddenly brighter middle, among stars","简略描述":"pB, S, R, psbM, am st"},{"ID":"7008","标识":"NGC7008","M标识":"NGC7008","拓展名":"","组件":"","Class":"I 192","业余排名":"6","中文名":"胎儿星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h0m32.8s","赤经D(J2000)":"21.00911111111111","赤纬(J2000)":"+54h32m38s","赤纬D(J2000)":"54.54388888888889","可见光星等V":"10.7","摄影(蓝光)星等B":"13.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.43","短轴(分)":"","方位角":"","详细描述":"considerably bright, large, extended 45°±, mottled but not resolved, double star attached","简略描述":"cB, L, E 45° ±, r, ** att"},{"ID":"7009","标识":"NGC7009","M标识":"NGC7009","拓展名":"","组件":"","Class":"IV 1","业余排名":"2","中文名":"土星状星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h4m10.8s","赤经D(J2000)":"21.069666666666667","赤纬(J2000)":"-11h21m47s","赤纬D(J2000)":"-11.363055555555555","可见光星等V":"8","摄影(蓝光)星等B":"8.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.58","短轴(分)":"","方位角":"","详细描述":"a magnificent or otherwise interesting object, a planetary nebula, very bright, small, elliptic","简略描述":"!!!, planetary, vB, S, elliptic"},{"ID":"7010","标识":"NGC7010","M标识":"NGC7010","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h4m39.4s","赤经D(J2000)":"21.07761111111111","赤纬(J2000)":"-12h20m16s","赤纬D(J2000)":"-12.337777777777779","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.9","短轴(分)":"1","方位角":"36","详细描述":"extremely faint, pretty large, round, mottled but not resolved","简略描述":"eF, pL, R, r"},{"ID":"7011","标识":"NGC7011","M标识":"NGC7011","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h1m50s","赤经D(J2000)":"21.030555555555555","赤纬(J2000)":"+47h21m17s","赤纬D(J2000)":"47.35472222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.8","短轴(分)":"","方位角":"","详细描述":"a cluster, no description","简略描述":"Cl, no description"},{"ID":"7012","标识":"NGC7012","M标识":"NGC7012","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"21h6m45.5s","赤经D(J2000)":"21.112638888888892","赤纬(J2000)":"-44h48m52s","赤纬D(J2000)":"-44.81444444444444","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.4","短轴(分)":"1.3","方位角":"115","详细描述":"faint, pretty large, extended, very gradually a very little brighter middle, star to west","简略描述":"F, pL, E, vgvlbM, * p"},{"ID":"7013","标识":"NGC7013","M标识":"NGC7013","拓展名":"","组件":"","Class":"II 203","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h3m33.6s","赤经D(J2000)":"21.059333333333335","赤纬(J2000)":"+29h53m49s","赤纬D(J2000)":"29.896944444444443","可见光星等V":"11.3","摄影(蓝光)星等B":"12.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"4","短轴(分)":"1.4","方位角":"157","详细描述":"pretty bright, considerably small, round, pretty suddenly brighter middle, pretty bright star to northwest","简略描述":"pB, cS, R, psbM, pB * np"},{"ID":"7014","标识":"NGC7014","M标识":"NGC7014","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h7m52s","赤经D(J2000)":"21.13111111111111","赤纬(J2000)":"-47h10m43s","赤纬D(J2000)":"-47.17861111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"130","详细描述":"pretty faint, small, round, brighter middle, 2 stars of 12th magnitude to north","简略描述":"pF, S, R, bM, 2 st 12 n"},{"ID":"7015","标识":"NGC7015","M标识":"NGC7015","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"小马座","星座(En)":"EQU","赤经(J2000)":"21h5m37.3s","赤经D(J2000)":"21.093694444444445","赤纬(J2000)":"+11h24m49s","赤纬D(J2000)":"11.413611111111111","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"165","详细描述":"very faint, pretty small, gradually a little brighter middle","简略描述":"vF, pS, glbM"},{"ID":"7016","标识":"NGC7016","M标识":"NGC7016","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h7m16.2s","赤经D(J2000)":"21.121166666666667","赤纬(J2000)":"-25h28m7s","赤纬D(J2000)":"-25.46861111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, extremely small, round, brighter middle and nucleus, 1st of 3","简略描述":"vF, eS, R, bMN, 1st of 3"},{"ID":"7017","标识":"NGC7017","M标识":"NGC7017","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h7m20.5s","赤经D(J2000)":"21.12236111111111","赤纬(J2000)":"-25h29m15s","赤纬D(J2000)":"-25.4875","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"90","详细描述":"extremely faint, very small, round, brighter middle and nucleus, 2nd of 3","简略描述":"eF, vS, R, bMN, 2nd of 3"},{"ID":"7018","标识":"NGC7018","M标识":"NGC7018","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h7m25.4s","赤经D(J2000)":"21.123722222222224","赤纬(J2000)":"-25h25m45s","赤纬D(J2000)":"-25.429166666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"86","详细描述":"very faint, very small, very little extended, gradually a little brighter middle, 3rd of 3","简略描述":"vF, vS, vlE, glbM, 3rd of 3"},{"ID":"7019","标识":"NGC7019","M标识":"NGC7019","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h6m25.8s","赤经D(J2000)":"21.107166666666668","赤纬(J2000)":"-24h24m46s","赤纬D(J2000)":"-24.412777777777777","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"137","详细描述":"very faint, very small, round, suddenly brighter middle and nucleus","简略描述":"vF, vS, R, sbMN"},{"ID":"7020","标识":"NGC7020","M标识":"NGC7020","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h11m19.9s","赤经D(J2000)":"21.188861111111112","赤纬(J2000)":"-64h1m31s","赤纬D(J2000)":"-64.02527777777777","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3.5","短轴(分)":"1.6","方位角":"165","详细描述":"pretty bright, considerably small, a little extended, pretty gradually brighter middle","简略描述":"pB, cS, lE, pgbM"},{"ID":"7021","标识":"NGC7021","M标识":"NGC7021","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h11m19.9s","赤经D(J2000)":"21.188861111111112","赤纬(J2000)":"-64h1m31s","赤纬D(J2000)":"-64.02527777777777","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3.5","短轴(分)":"1.6","方位角":"165","详细描述":"pretty bright, considerably small, a little extended, pretty gradually brighter middle","简略描述":"pF, cS, R, psbM, * 7·8 p"},{"ID":"7022","标识":"NGC7022","M标识":"NGC7022","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h9m35.1s","赤经D(J2000)":"21.15975","赤纬(J2000)":"-49h18m13s","赤纬D(J2000)":"-49.30361111111111","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"16","详细描述":"most extremely faint, small, round, bright triple star to southeast","简略描述":"eeF, S, R, B *** sf"},{"ID":"7023","标识":"NGC7023","M标识":"NGC7023","拓展名":"","组件":"","Class":"IV 74","业余排名":"2","中文名":"鸢尾花星云","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"21h1m35.5s","赤经D(J2000)":"21.026527777777776","赤纬(J2000)":"+68h10m10s","赤纬D(J2000)":"68.16944444444445","可见光星等V":"99","摄影(蓝光)星等B":"7.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"8","方位角":"","详细描述":"a 7th magnitude star in an extremely faint, extremely large nebulosity","简略描述":"* 7 in eF, eL neby"},{"ID":"7024","标识":"NGC7024","M标识":"NGC7024","拓展名":"","组件":"","Class":"VIII 57","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h6m4.8s","赤经D(J2000)":"21.101333333333336","赤纬(J2000)":"+41h29m47s","赤纬D(J2000)":"41.49638888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed, stars from 10th magnitude","简略描述":"Cl, P, lC, st 10…"},{"ID":"7025","标识":"NGC7025","M标识":"NGC7025","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"21h7m47.4s","赤经D(J2000)":"21.129833333333334","赤纬(J2000)":"+16h20m9s","赤纬D(J2000)":"16.335833333333333","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.2","方位角":"33","详细描述":"very faint, very small, round, stellar","简略描述":"vF, vS, R, stell"},{"ID":"7026","标识":"NGC7026","M标识":"NGC7026","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"乳酪汉堡星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h6m18.6s","赤经D(J2000)":"21.10516666666667","赤纬(J2000)":"+47h51m10s","赤纬D(J2000)":"47.85277777777778","可见光星等V":"10.9","摄影(蓝光)星等B":"12.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.75","短轴(分)":"","方位角":"","详细描述":"pretty bright, binuclear, planetary nebula","简略描述":"pB, biN, planetary"},{"ID":"7027","标识":"NGC7027","M标识":"NGC7027","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"粉枕星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h7m1.7s","赤经D(J2000)":"21.11713888888889","赤纬(J2000)":"+42h14m12s","赤纬D(J2000)":"42.236666666666665","可见光星等V":"8.5","摄影(蓝光)星等B":"10.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"","详细描述":"a planetary nebula, stellar = 8.5 magnitude","简略描述":"planetary, stellar = 8.5 m"},{"ID":"7028","标识":"NGC7028","M标识":"NGC7028","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"21h8m15s","赤经D(J2000)":"21.1375","赤纬(J2000)":"+18h28m48s","赤纬D(J2000)":"18.479999999999997","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, very little extended","简略描述":"vF, S, vlE"},{"ID":"7029","标识":"NGC7029","M标识":"NGC7029","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h11m51.7s","赤经D(J2000)":"21.197694444444444","赤纬(J2000)":"-49h17m1s","赤纬D(J2000)":"-49.28361111111111","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.5","短轴(分)":"1.4","方位角":"71","详细描述":"bright, considerably small, round, pretty gradually much brighter middle","简略描述":"B, cS, R, pgmbM"},{"ID":"7030","标识":"NGC7030","M标识":"NGC7030","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h11m13.3s","赤经D(J2000)":"21.18702777777778","赤纬(J2000)":"-20h29m12s","赤纬D(J2000)":"-20.486666666666668","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"70","详细描述":"very faint, very small, irregularly round, brighter middle and nucleus","简略描述":"vF, vS, iR, bMN"},{"ID":"7031","标识":"NGC7031","M标识":"NGC7031","拓展名":"","组件":"","Class":"VIII 74","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV1p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h6m52s","赤经D(J2000)":"21.114444444444445","赤纬(J2000)":"+50h50m36s","赤纬D(J2000)":"50.843333333333334","可见光星等V":"9.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster of triple stars, a little compressed","简略描述":"Cl of triple st, lC"},{"ID":"7032","标识":"NGC7032","M标识":"NGC7032","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h15m22.9s","赤经D(J2000)":"21.25636111111111","赤纬(J2000)":"-68h17m15s","赤纬D(J2000)":"-68.2875","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"1","方位角":"85","详细描述":"very faint, considerably small, round, gradually a little brighter middle","简略描述":"vF, cS, R, glbM"},{"ID":"7033","标识":"NGC7033","M标识":"NGC7033","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h9m36.2s","赤经D(J2000)":"21.160055555555555","赤纬(J2000)":"+15h7m31s","赤纬D(J2000)":"15.125277777777779","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"23","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"7034","标识":"NGC7034","M标识":"NGC7034","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h9m38.1s","赤经D(J2000)":"21.16058333333333","赤纬(J2000)":"+15h9m4s","赤纬D(J2000)":"15.151111111111112","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.7","方位角":"125","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"7035","标识":"NGC7035","M标识":"NGC7035","拓展名":"A","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h10m45.5s","赤经D(J2000)":"21.17930555555556","赤纬(J2000)":"-23h8m7s","赤纬D(J2000)":"-23.135277777777777","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.7","方位角":"105","详细描述":"extremely faint, small, irregularly round","简略描述":"eF, S, iR"},{"ID":"7036","标识":"NGC7036","M标识":"NGC7036","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h10m12s","赤经D(J2000)":"21.17","赤纬(J2000)":"+15h22m36s","赤纬D(J2000)":"15.376666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, a little compressed","简略描述":"Cl, lC"},{"ID":"7037","标识":"NGC7037","M标识":"NGC7037","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h10m48s","赤经D(J2000)":"21.18","赤纬(J2000)":"+33h44m48s","赤纬D(J2000)":"33.74666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, irregular figure, stars from 11th to 15th magnitude","简略描述":"Cl, pRi, iF, st 11…15"},{"ID":"7038","标识":"NGC7038","M标识":"NGC7038","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h15m7.5s","赤经D(J2000)":"21.252083333333335","赤纬(J2000)":"-47h13m13s","赤纬D(J2000)":"-47.22027777777778","可见光星等V":"11.6","摄影(蓝光)星等B":"12.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.1","短轴(分)":"1.4","方位角":"127","详细描述":"pretty bright, pretty large, a little extended, gradually brighter middle","简略描述":"pB, pL, lE, gbM"},{"ID":"7039","标识":"NGC7039","M标识":"NGC7039","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h11m12s","赤经D(J2000)":"21.186666666666667","赤纬(J2000)":"+45h39m0s","赤纬D(J2000)":"45.65","可见光星等V":"7.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, pretty rich, extended, stars from 10th magnitude","简略描述":"Cl, vL, pRi, E, st 10…"},{"ID":"7040","标识":"NGC7040","M标识":"NGC7040","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"小马座","星座(En)":"EQU","赤经(J2000)":"21h13m16.5s","赤经D(J2000)":"21.221249999999998","赤纬(J2000)":"+8h51m54s","赤纬D(J2000)":"8.865","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"150","详细描述":"extremely faint, very large, much extended north-south (A. N. 2479)","简略描述":"eF, vL, mE ns (A.N. 2479)"},{"ID":"7041","标识":"NGC7041","M标识":"NGC7041","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h16m32.1s","赤经D(J2000)":"21.275583333333334","赤纬(J2000)":"-48h21m47s","赤纬D(J2000)":"-48.363055555555555","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.6","短轴(分)":"1.5","方位角":"85","详细描述":"bright, considerably small, considerably extended, pretty suddenly much brighter middle, 10th magnitude star to east","简略描述":"B, cS, cE, psmbM, * 10 f"},{"ID":"7042","标识":"NGC7042","M标识":"NGC7042","拓展名":"","组件":"","Class":"III 209","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h13m45.7s","赤经D(J2000)":"21.22936111111111","赤纬(J2000)":"+13h34m30s","赤纬D(J2000)":"13.575","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2","短轴(分)":"1.8","方位角":"140","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"7043","标识":"NGC7043","M标识":"NGC7043","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h14m4.2s","赤经D(J2000)":"21.2345","赤纬(J2000)":"+13h37m35s","赤纬D(J2000)":"13.62638888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"1","方位角":"135","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"7044","标识":"NGC7044","M标识":"NGC7044","拓展名":"","组件":"","Class":"VI 24","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2r","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h13m9.4s","赤经D(J2000)":"21.219277777777776","赤纬(J2000)":"+42h29m46s","赤纬D(J2000)":"42.49611111111111","可见光星等V":"12","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, very faint, pretty large, very rich, very compressed, stars from 15th to 18th magnitude","简略描述":"Cl, vF, pL, vRi, vC, st 15…18"},{"ID":"7045","标识":"NGC7045","M标识":"NGC7045","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"小马座","星座(En)":"EQU","赤经(J2000)":"21h14m50.3s","赤经D(J2000)":"21.247305555555556","赤纬(J2000)":"+4h30m28s","赤纬D(J2000)":"4.507777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"7046","标识":"NGC7046","M标识":"NGC7046","拓展名":"","组件":"","Class":"III 858","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"小马座","星座(En)":"EQU","赤经(J2000)":"21h14m56s","赤经D(J2000)":"21.24888888888889","赤纬(J2000)":"+2h50m4s","赤纬D(J2000)":"2.8344444444444448","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"115","详细描述":"extremely faint, pretty large, round, a little brighter middle","简略描述":"eF, pL, R, lbM"},{"ID":"7047","标识":"NGC7047","M标识":"NGC7047","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h16m27.4s","赤经D(J2000)":"21.274277777777776","赤纬(J2000)":"-0h49m35s","赤纬D(J2000)":"-0.8263888888888888","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"107","详细描述":"extremely faint, very small, binuclear east-west","简略描述":"eF, vS, biN pf"},{"ID":"7048","标识":"NGC7048","M标识":"NGC7048","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"躲猫猫星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h14m15.2s","赤经D(J2000)":"21.237555555555556","赤纬(J2000)":"+46h17m21s","赤纬D(J2000)":"46.28916666666667","可见光星等V":"12.1","摄影(蓝光)星等B":"11.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.02","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty large, diffuse, irregularly round, a very little brighter middle","简略描述":"pF, pL, dif, iR, vlbM"},{"ID":"7049","标识":"NGC7049","M标识":"NGC7049","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h19m0.2s","赤经D(J2000)":"21.31672222222222","赤纬(J2000)":"-48h33m41s","赤纬D(J2000)":"-48.561388888888885","可见光星等V":"10.6","摄影(蓝光)星等B":"11.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"4.5","短轴(分)":"3","方位角":"57","详细描述":"very bright, pretty small, extended, much brighter middle","简略描述":"vB, pS, E, mbM"},{"ID":"7050","标识":"NGC7050","M标识":"NGC7050","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h15m16.8s","赤经D(J2000)":"21.254666666666665","赤纬(J2000)":"+36h10m18s","赤纬D(J2000)":"36.17166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, no description","简略描述":"Cl, no description"},{"ID":"7051","标识":"NGC7051","M标识":"NGC7051","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h19m51.3s","赤经D(J2000)":"21.330916666666667","赤纬(J2000)":"-8h46m57s","赤纬D(J2000)":"-8.7825","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"162","详细描述":"very faint, round, gradually brighter middle, double star near","简略描述":"vF, R, gbM, ** nr"},{"ID":"7052","标识":"NGC7052","M标识":"NGC7052","拓展名":"","组件":"","Class":"III 145","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"21h18m33s","赤经D(J2000)":"21.309166666666666","赤纬(J2000)":"+26h26m50s","赤纬D(J2000)":"26.447222222222223","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.1","短轴(分)":"1.1","方位角":"64","详细描述":"faint, small, very little extended, mottled but not resolved","简略描述":"F, S, vlE, r"},{"ID":"7053","标识":"NGC7053","M标识":"NGC7053","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h21m7.5s","赤经D(J2000)":"21.352083333333336","赤纬(J2000)":"+23h5m7s","赤纬D(J2000)":"23.085277777777776","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"27","详细描述":"pretty bright, small, very little extended","简略描述":"pB, S, vlE"},{"ID":"7054","标识":"NGC7054","M标识":"NGC7054","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h20m43.5s","赤经D(J2000)":"21.345416666666665","赤纬(J2000)":"+39h10m18s","赤纬D(J2000)":"39.17166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, faint star involved","简略描述":"vF, vS, R, F * inv"},{"ID":"7055","标识":"NGC7055","M标识":"NGC7055","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"21h19m25.8s","赤经D(J2000)":"21.323833333333333","赤纬(J2000)":"+57h35m25s","赤纬D(J2000)":"57.59027777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, faint, pretty small, poor","简略描述":"Cl, F, pS, P"},{"ID":"7056","标识":"NGC7056","M标识":"NGC7056","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h22m7.5s","赤经D(J2000)":"21.368750000000002","赤纬(J2000)":"+18h39m56s","赤纬D(J2000)":"18.665555555555553","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"57","详细描述":"pretty faint, small, round","简略描述":"pF, S, R"},{"ID":"7057","标识":"NGC7057","M标识":"NGC7057","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"21h24m58.5s","赤经D(J2000)":"21.416249999999998","赤纬(J2000)":"-42h27m37s","赤纬D(J2000)":"-42.46027777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"1","方位角":"151","详细描述":"extremely faint, very small, round, western of 2","简略描述":"eF, vS, R, p of 2"},{"ID":"7058","标识":"NGC7058","M标识":"NGC7058","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h21m48.3s","赤经D(J2000)":"21.36341666666667","赤纬(J2000)":"+50h48m28s","赤纬D(J2000)":"50.80777777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed","简略描述":"Cl, P, lC"},{"ID":"7059","标识":"NGC7059","M标识":"NGC7059","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h27m21.7s","赤经D(J2000)":"21.456027777777777","赤纬(J2000)":"-60h0m53s","赤纬D(J2000)":"-60.014722222222225","可见光星等V":"11.9","摄影(蓝光)星等B":"12.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.3","短轴(分)":"1.7","方位角":"98","详细描述":"bright, pretty large, a little compressed, gradually pretty much brighter middle","简略描述":"B, pL, lC, gpmbM"},{"ID":"7060","标识":"NGC7060","M标识":"NGC7060","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"21h25m53.5s","赤经D(J2000)":"21.431527777777777","赤纬(J2000)":"-42h24m39s","赤纬D(J2000)":"-42.41083333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2","短轴(分)":"1.2","方位角":"120","详细描述":"very faint, pretty small, round, eastern of 2","简略描述":"vF, pS, R, f of 2"},{"ID":"7061","标识":"NGC7061","M标识":"NGC7061","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h27m26.7s","赤经D(J2000)":"21.457416666666667","赤纬(J2000)":"-49h3m48s","赤纬D(J2000)":"-49.06333333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"137","详细描述":"most extremely faint, very small, round","简略描述":"eeF, vS, R"},{"ID":"7062","标识":"NGC7062","M标识":"NGC7062","拓展名":"","组件":"","Class":"VII 51","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h23m27.4s","赤经D(J2000)":"21.390944444444443","赤纬(J2000)":"+46h22m43s","赤纬D(J2000)":"46.37861111111111","可见光星等V":"8.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty small, pretty rich, pretty compressed, stars from 13th magnitude","简略描述":"Cl, pS, pRi, pC, st 13…"},{"ID":"7063","标识":"NGC7063","M标识":"NGC7063","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h24m22s","赤经D(J2000)":"21.40611111111111","赤纬(J2000)":"+36h29m12s","赤纬D(J2000)":"36.486666666666665","可见光星等V":"7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, stars from 10th magnitude","简略描述":"Cl, P, st 10…"},{"ID":"7064","标识":"NGC7064","M标识":"NGC7064","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h29m3.2s","赤经D(J2000)":"21.484222222222222","赤纬(J2000)":"-52h46m2s","赤纬D(J2000)":"-52.76722222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.8","短轴(分)":"0.7","方位角":"91","详细描述":"extremely faint, pretty large, very much extended 91°, star to south","简略描述":"eF, pL, vmE 91°, * s"},{"ID":"7065","标识":"NGC7065","M标识":"NGC7065","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h26m42.2s","赤经D(J2000)":"21.445055555555555","赤纬(J2000)":"-6h59m41s","赤纬D(J2000)":"-6.994722222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"25","详细描述":"very faint, suddenly brighter middle (Marth has 19m 33s)","简略描述":"vF, sbM, (m has 19m 33s)"},{"ID":"7066","标识":"NGC7066","M标识":"NGC7066","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h26m13.7s","赤经D(J2000)":"21.43713888888889","赤纬(J2000)":"+14h10m59s","赤纬D(J2000)":"14.183055555555555","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"most extremely faint, close southeast of middle of 3 faint stars","简略描述":"eeF, close sf of M of 3 F st"},{"ID":"7067","标识":"NGC7067","M标识":"NGC7067","拓展名":"","组件":"","Class":"VII 50","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h24m12.3s","赤经D(J2000)":"21.403416666666665","赤纬(J2000)":"+48h0m41s","赤纬D(J2000)":"48.01138888888889","可见光星等V":"9.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, nebulous?","简略描述":"Cl, P, ? Neb"},{"ID":"7068","标识":"NGC7068","M标识":"NGC7068","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h26m32.3s","赤经D(J2000)":"21.442305555555556","赤纬(J2000)":"+12h11m4s","赤纬D(J2000)":"12.184444444444445","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"165","详细描述":"very faint, close to a small (faint) star","简略描述":"vF, close to a S *"},{"ID":"7069","标识":"NGC7069","M标识":"NGC7069","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h28m5.8s","赤经D(J2000)":"21.468277777777775","赤纬(J2000)":"-1h38m47s","赤纬D(J2000)":"-1.646388888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"20","详细描述":"very faint, small, round, stellar","简略描述":"vF, S, R, stell"},{"ID":"7070","标识":"NGC7070","M标识":"NGC7070","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h30m25.2s","赤经D(J2000)":"21.507","赤纬(J2000)":"-43h5m12s","赤纬D(J2000)":"-43.086666666666666","可见光星等V":"12.3","摄影(蓝光)星等B":"12.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.4","短轴(分)":"1.9","方位角":"22","详细描述":"faint, considerably large, a little extended, gradually a very little brighter middle, western of 2","简略描述":"F, cL, lE, gvlbM"},{"ID":"7071","标识":"NGC7071","M标识":"NGC7071","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h26m40s","赤经D(J2000)":"21.444444444444446","赤纬(J2000)":"+47h55m22s","赤纬D(J2000)":"47.922777777777775","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, small, compressed, considerably extended","简略描述":"Cl, S, C, cE"},{"ID":"7072","标识":"NGC7072","M标识":"NGC7072","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h30m37s","赤经D(J2000)":"21.510277777777777","赤纬(J2000)":"-43h9m9s","赤纬D(J2000)":"-43.152499999999996","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"90","详细描述":"faint, small, round, very gradually a little brighter middle, eastern of 2","简略描述":"F, S, R, vglbM, f of 2"},{"ID":"7073","标识":"NGC7073","M标识":"NGC7073","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h29m26s","赤经D(J2000)":"21.490555555555556","赤纬(J2000)":"-11h29m19s","赤纬D(J2000)":"-11.48861111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"","详细描述":"very faint, very small, irregularly round","简略描述":"vF, vS, iR"},{"ID":"7074","标识":"NGC7074","M标识":"NGC7074","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h29m38.8s","赤经D(J2000)":"21.494111111111113","赤纬(J2000)":"+6h40m56s","赤纬D(J2000)":"6.682222222222222","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"111","详细描述":"very faint, small, extended","简略描述":"vF, S, E"},{"ID":"7075","标识":"NGC7075","M标识":"NGC7075","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h31m32.9s","赤经D(J2000)":"21.525805555555554","赤纬(J2000)":"-38h37m5s","赤纬D(J2000)":"-38.61805555555556","可见光星等V":"12.7","摄影(蓝光)星等B":"13.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"116","详细描述":"considerably faint, considerably small, round, pretty gradually brighter middle","简略描述":"cF, cS, R, pgbM"},{"ID":"7076","标识":"NGC7076","M标识":"NGC7076","拓展名":"","组件":"","Class":"III 936","业余排名":"15","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"21h26m24.1s","赤经D(J2000)":"21.44002777777778","赤纬(J2000)":"+62h53m30s","赤纬D(J2000)":"62.891666666666666","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.93","短轴(分)":"","方位角":"","详细描述":"very faint, extremely mottled but not resolved","简略描述":"vF, er"},{"ID":"7077","标识":"NGC7077","M标识":"NGC7077","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h29m59.5s","赤经D(J2000)":"21.499861111111112","赤纬(J2000)":"+2h24m53s","赤纬D(J2000)":"2.414722222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"37","详细描述":"faint","简略描述":"F"},{"ID":"7078","标识":"NGC7078","M标识":"M15","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"飞马座星团","类型":"GCL","含重复类型":"GCL","形态":"IV","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h29m58.3s","赤经D(J2000)":"21.49952777777778","赤纬(J2000)":"+12h10m3s","赤纬D(J2000)":"12.167499999999999","可见光星等V":"6.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"18","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a globular cluster, very bright, very large, irregularly round, very suddenly much brighter middle, well resolved, clearly consisting of stars, stars very small (faint)","简略描述":"!, globular, vB, vL, iR, vsmbM, rrr, st vS"},{"ID":"7079","标识":"NGC7079","M标识":"NGC7079","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h32m35s","赤经D(J2000)":"21.543055555555558","赤纬(J2000)":"-44h4m3s","赤纬D(J2000)":"-44.0675","可见光星等V":"11.6","摄影(蓝光)星等B":"12.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2","短轴(分)":"1.2","方位角":"82","详细描述":"bright, round, considerably small, pretty suddenly brighter middle","简略描述":"B, R, cS, psbM"},{"ID":"7080","标识":"NGC7080","M标识":"NGC7080","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"21h30m1.9s","赤经D(J2000)":"21.500527777777776","赤纬(J2000)":"+26h43m6s","赤纬D(J2000)":"26.71833333333333","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"1.7","方位角":"50","详细描述":"very faint, very small, round, faint star involved","简略描述":"vF, S, vlE"},{"ID":"7081","标识":"NGC7081","M标识":"NGC7081","拓展名":"","组件":"","Class":"III 859","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h31m24.3s","赤经D(J2000)":"21.523416666666666","赤纬(J2000)":"+2h29m28s","赤纬D(J2000)":"2.491111111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"faint, small, round, much brighter middle, 14th magnitude star to south","简略描述":"F, S, R, mbM, * 14 s"},{"ID":"7082","标识":"NGC7082","M标识":"NGC7082","拓展名":"","组件":"","Class":"VII 52","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV2p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h29m17s","赤经D(J2000)":"21.488055555555558","赤纬(J2000)":"+47h7m36s","赤纬D(J2000)":"47.126666666666665","可见光星等V":"7.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"24","短轴(分)":"","方位角":"","详细描述":"a cluster, large, considerably rich, a little compressed, stars from 10th to 13th magnitude","简略描述":"Cl, L, cRi, lC, st 10…13"},{"ID":"7083","标识":"NGC7083","M标识":"NGC7083","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h35m44.6s","赤经D(J2000)":"21.59572222222222","赤纬(J2000)":"-63h54m12s","赤纬D(J2000)":"-63.90333333333333","可见光星等V":"11.2","摄影(蓝光)星等B":"11.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.9","短轴(分)":"2.3","方位角":"5","详细描述":"pretty faint, considerably large, very little extended, very gradually pretty much brighter middle, mottled but not resolved","简略描述":"pF, cL, vlE, vgpmbM, r"},{"ID":"7084","标识":"NGC7084","M标识":"NGC7084","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h32m33s","赤经D(J2000)":"21.5425","赤纬(J2000)":"+17h30m30s","赤纬D(J2000)":"17.508333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"18","短轴(分)":"","方位角":"","详细描述":"a cluster, a little compressed","简略描述":"Cl, lC"},{"ID":"7085","标识":"NGC7085","M标识":"NGC7085","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h32m25.1s","赤经D(J2000)":"21.54030555555556","赤纬(J2000)":"+6h34m54s","赤纬D(J2000)":"6.581666666666666","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"147","详细描述":"extremely faint, small, extended","简略描述":"eF, S, E"},{"ID":"7086","标识":"NGC7086","M标识":"NGC7086","拓展名":"","组件":"","Class":"VI 32","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h30m27.5s","赤经D(J2000)":"21.507638888888888","赤纬(J2000)":"+51h36m2s","赤纬D(J2000)":"51.60055555555556","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, considerably large, very rich, pretty compressed, stars from 11th to 16th magnitude","简略描述":"Cl, cL, vRi, pC, st 11…16"},{"ID":"7087","标识":"NGC7087","M标识":"NGC7087","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h34m33.4s","赤经D(J2000)":"21.575944444444445","赤纬(J2000)":"-40h49m6s","赤纬D(J2000)":"-40.818333333333335","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"39","详细描述":"considerably faint, small, round, gradually brighter middle","简略描述":"cF, S, R, gbM"},{"ID":"7088","标识":"NGC7088","M标识":"NGC7088","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"Baxendell's Unphotographable Nebula","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h33m22s","赤经D(J2000)":"21.55611111111111","赤纬(J2000)":"-0h23m0s","赤纬D(J2000)":"-0.38333333333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely large, diffuse, extended east-west, north of M 2","简略描述":"eF, eL, dif, E pf, n of M 2"},{"ID":"7089","标识":"NGC7089","M标识":"M2","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"II","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h33m27.2s","赤经D(J2000)":"21.557555555555556","赤纬(J2000)":"-0h49m22s","赤纬D(J2000)":"-0.8227777777777777","可见光星等V":"6.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"16","短轴(分)":"","方位角":"","详细描述":"a very remarkable object, a globular cluster, bright, very large, gradually pretty much brighter middle, well resolved, clearly consisting of stars, stars extremely small (faint)","简略描述":"!!, globular, B, vL, gpmbM, rrr, st eS"},{"ID":"7090","标识":"NGC7090","M标识":"NGC7090","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h36m27.7s","赤经D(J2000)":"21.607694444444444","赤纬(J2000)":"-54h33m18s","赤纬D(J2000)":"-54.555","可见光星等V":"10.7","摄影(蓝光)星等B":"11.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"7.3","短轴(分)":"1.2","方位角":"127","详细描述":"pretty bright, pretty large, very much extended 127°, gradually then pretty suddenly a little brighter middle","简略描述":"pB, pL, vmE 127°, g, pslbM"},{"ID":"7091","标识":"NGC7091","M标识":"NGC7091","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h34m7.7s","赤经D(J2000)":"21.568805555555556","赤纬(J2000)":"-36h39m14s","赤纬D(J2000)":"-36.653888888888886","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.1","短轴(分)":"1.7","方位角":"78","详细描述":"extremely faint, pretty large, very gradually brighter middle, 6th magnitude star 40 seconds of time to east","简略描述":"eF, pL, vgbM, * 6 f 40s"},{"ID":"7092","标识":"NGC7092","M标识":"M39","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h31m52s","赤经D(J2000)":"21.53111111111111","赤纬(J2000)":"+48h25m30s","赤纬D(J2000)":"48.425","可见光星等V":"4.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"31","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, very poor, very little compressed, stars from 7th to 10th magnitude","简略描述":"Cl, vL, vP, vlC, st 7…10"},{"ID":"7093","标识":"NGC7093","M标识":"NGC7093","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h34m35.8s","赤经D(J2000)":"21.57661111111111","赤纬(J2000)":"+45h59m31s","赤纬D(J2000)":"45.99194444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed","简略描述":"Cl, P, lC"},{"ID":"7094","标识":"NGC7094","M标识":"NGC7094","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h36m53s","赤经D(J2000)":"21.614722222222223","赤纬(J2000)":"+12h47m22s","赤纬D(J2000)":"12.789444444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"13.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.57","短轴(分)":"","方位角":"","详细描述":"a star in most extremely faint nebulosity, very difficult","简略描述":"* in eeF neby, v diffic"},{"ID":"7095","标识":"NGC7095","M标识":"NGC7095","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"南极座","星座(En)":"OCT","赤经(J2000)":"21h52m24.8s","赤经D(J2000)":"21.873555555555555","赤纬(J2000)":"-81h31m53s","赤纬D(J2000)":"-81.53138888888888","可见光星等V":"11.5","摄影(蓝光)星等B":"12.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"4","短轴(分)":"3.3","方位角":"","详细描述":"faint, pretty large, round, very gradually a little brighter middle, 13th magnitude star involved","简略描述":"F, pL, R, vglbM, * 13 inv"},{"ID":"7096","标识":"NGC7096","M标识":"NGC7096","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h41m19.1s","赤经D(J2000)":"21.68863888888889","赤纬(J2000)":"-63h54m30s","赤纬D(J2000)":"-63.90833333333333","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"130","详细描述":"very faint, small, round, very small (faint) double star to northeast","简略描述":"vF, S, R, vS ** nf"},{"ID":"7097","标识":"NGC7097","M标识":"NGC7097","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h40m12.8s","赤经D(J2000)":"21.670222222222222","赤纬(J2000)":"-42h32m21s","赤纬D(J2000)":"-42.53916666666667","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"20","详细描述":"bright, small, very little extended, much brighter middle","简略描述":"B, S, vlE, mbM"},{"ID":"7098","标识":"NGC7098","M标识":"NGC7098","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"南极座","星座(En)":"OCT","赤经(J2000)":"21h44m16s","赤经D(J2000)":"21.73777777777778","赤纬(J2000)":"-75h6m39s","赤纬D(J2000)":"-75.11083333333333","可见光星等V":"11.3","摄影(蓝光)星等B":"12.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"4","短轴(分)":"2.6","方位角":"74","详细描述":"pretty faint, round, gradually then pretty suddenly much brighter middle, among stars","简略描述":"pF, R, g, psmbM, am st"},{"ID":"7099","标识":"NGC7099","M标识":"M30","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"海蜇星团","类型":"GCL","含重复类型":"GCL","形态":"V","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h40m22s","赤经D(J2000)":"21.672777777777778","赤纬(J2000)":"-23h10m43s","赤纬D(J2000)":"-23.178611111111113","可见光星等V":"6.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a remarkable object, a globular cluster, bright, large, a little extended, gradually pretty much brighter middle, stars from 12th to 16th magnitude","简略描述":"!, globular, B, L, lE, gpmbM, st 12…16"},{"ID":"7100","标识":"NGC7100","M标识":"NGC7100","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h39m6.9s","赤经D(J2000)":"21.651916666666665","赤纬(J2000)":"+8h57m2s","赤纬D(J2000)":"8.950555555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, mottled but not resolved","简略描述":"vF, r"},{"ID":"7101","标识":"NGC7101","M标识":"NGC7101","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h39m34.5s","赤经D(J2000)":"21.65958333333333","赤纬(J2000)":"+8h52m38s","赤纬D(J2000)":"8.877222222222223","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"7102","标识":"NGC7102","M标识":"NGC7102","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h39m44.5s","赤经D(J2000)":"21.66236111111111","赤纬(J2000)":"+6h17m9s","赤纬D(J2000)":"6.285833333333334","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"153","详细描述":"faint, pretty large, round","简略描述":"F, pL, R"},{"ID":"7103","标识":"NGC7103","M标识":"NGC7103","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h39m51.3s","赤经D(J2000)":"21.66425","赤纬(J2000)":"-22h28m24s","赤纬D(J2000)":"-22.473333333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"63","详细描述":"very faint, very small, round, gradually brighter middle, 1st of 2","简略描述":"vF, vS, R, gbM, 1st of 2"},{"ID":"7104","标识":"NGC7104","M标识":"NGC7104","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h40m3.2s","赤经D(J2000)":"21.667555555555555","赤纬(J2000)":"-22h25m28s","赤纬D(J2000)":"-22.424444444444447","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"51","详细描述":"very faint, very small, irregularly round, gradually brighter middle and nucleus, 2nd of 2","简略描述":"vF, vS, iR, gbMN, 2nd of 2"},{"ID":"7105","标识":"NGC7105","M标识":"NGC7105","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h41m41.3s","赤经D(J2000)":"21.694805555555554","赤纬(J2000)":"-10h38m6s","赤纬D(J2000)":"-10.635","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.5","方位角":"130","详细描述":"faint, very small, extended 130°, suddenly much brighter middle and nucleus, star to northwest","简略描述":"F, vS, E 130°, smbMN, * sp"},{"ID":"7106","标识":"NGC7106","M标识":"NGC7106","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h42m36.5s","赤经D(J2000)":"21.71013888888889","赤纬(J2000)":"-52h41m57s","赤纬D(J2000)":"-52.69916666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"13.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.7","短轴(分)":"1","方位角":"81","详细描述":"extremely faint, considerably small, a little extended, very gradually a little brighter middle","简略描述":"eF, cS, lE, vglbM"},{"ID":"7107","标识":"NGC7107","M标识":"NGC7107","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h42m26.5s","赤经D(J2000)":"21.707361111111112","赤纬(J2000)":"-44h47m31s","赤纬D(J2000)":"-44.79194444444444","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.1","短轴(分)":"1.5","方位角":"128","详细描述":"very faint, considerably large, round, very gradually a little brighter middle","简略描述":"vF, cL, R, vglbM"},{"ID":"7108","标识":"NGC7108","M标识":"NGC7108","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h41m53.7s","赤经D(J2000)":"21.69825","赤纬(J2000)":"-6h42m31s","赤纬D(J2000)":"-6.708611111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"35","详细描述":"very faint, small, round, stellar","简略描述":"vF, S, R, stell"},{"ID":"7109","标识":"NGC7109","M标识":"NGC7109","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"21h41m58.5s","赤经D(J2000)":"21.699583333333333","赤纬(J2000)":"-34h26m46s","赤纬D(J2000)":"-34.44611111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, very small, among stars","简略描述":"eF, vS, am st"},{"ID":"7110","标识":"NGC7110","M标识":"NGC7110","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"21h42m12s","赤经D(J2000)":"21.703333333333333","赤纬(J2000)":"-34h9m46s","赤纬D(J2000)":"-34.16277777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"76","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"7111","标识":"NGC7111","M标识":"NGC7111","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E?","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h41m53.7s","赤经D(J2000)":"21.69825","赤纬(J2000)":"-6h42m31s","赤纬D(J2000)":"-6.708611111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"35","详细描述":"very faint, small, round, stellar","简略描述":"eF, eS, R, bM"},{"ID":"7112","标识":"NGC7112","M标识":"NGC7112","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h42m26.5s","赤经D(J2000)":"21.707361111111112","赤纬(J2000)":"+12h34m9s","赤纬D(J2000)":"12.569166666666666","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"15","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"most extremely faint, small, round, pretty bright star close to west","简略描述":"eeF, S, R, pB * close p"},{"ID":"7113","标识":"NGC7113","M标识":"NGC7113","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h42m26.5s","赤经D(J2000)":"21.707361111111112","赤纬(J2000)":"+12h34m9s","赤纬D(J2000)":"12.569166666666666","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"15","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"most extremely faint, small, round, pretty bright star close to west","简略描述":"vF, S, stell"},{"ID":"7114","标识":"NGC7114","M标识":"NGC7114","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"Nova","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h41m44s","赤经D(J2000)":"21.695555555555554","赤纬(J2000)":"+42h50m31s","赤纬D(J2000)":"42.841944444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a nebulous variable star, a planetary nebula?","简略描述":"Nebulous var *, ? planetary"},{"ID":"7115","标识":"NGC7115","M标识":"NGC7115","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"21h43m39.2s","赤经D(J2000)":"21.727555555555554","赤纬(J2000)":"-25h21m4s","赤纬D(J2000)":"-25.351111111111113","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"0.4","方位角":"66","详细描述":"very faint, pretty small, much extended 90°, cometic, 2 stars involved","简略描述":"vF, pS, mE 90°, com, 2 st inv"},{"ID":"7116","标识":"NGC7116","M标识":"NGC7116","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h42m40.4s","赤经D(J2000)":"21.711222222222222","赤纬(J2000)":"+28h56m48s","赤纬D(J2000)":"28.946666666666665","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"105","详细描述":"very faint, pretty large, much extended","简略描述":"vF, pL, mE"},{"ID":"7117","标识":"NGC7117","M标识":"NGC7117","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h45m47s","赤经D(J2000)":"21.763055555555557","赤纬(J2000)":"-48h25m16s","赤纬D(J2000)":"-48.42111111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"27","详细描述":"faint, small, round, gradually a little brighter middle, western of 2","简略描述":"F, S, R, glbM, p of 2"},{"ID":"7118","标识":"NGC7118","M标识":"NGC7118","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h46m9.8s","赤经D(J2000)":"21.769388888888887","赤纬(J2000)":"-48h21m12s","赤纬D(J2000)":"-48.35333333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"50","详细描述":"faint, small, round, gradually a little brighter middle, eastern of 2","简略描述":"F, S, R, glbM, f of 2"},{"ID":"7119","标识":"NGC7119","M标识":"NGC7119","拓展名":"A","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h46m15.7s","赤经D(J2000)":"21.77102777777778","赤纬(J2000)":"-46h30m56s","赤纬D(J2000)":"-46.51555555555556","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"130","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"7120","标识":"NGC7120","M标识":"NGC7120","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h44m33.2s","赤经D(J2000)":"21.742555555555555","赤纬(J2000)":"-6h31m23s","赤纬D(J2000)":"-6.523055555555556","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"137","详细描述":"very faint, small, very little extended","简略描述":"vF, S, vlE"},{"ID":"7121","标识":"NGC7121","M标识":"NGC7121","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h44m52.6s","赤经D(J2000)":"21.747944444444446","赤纬(J2000)":"-3h37m11s","赤纬D(J2000)":"-3.6197222222222223","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"12","详细描述":"very faint, very small, round, very little brighter middle","简略描述":"vF, vS, R, vlbM"},{"ID":"7122","标识":"NGC7122","M标识":"NGC7122","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h45m47.8s","赤经D(J2000)":"21.763277777777777","赤纬(J2000)":"-8h49m47s","赤纬D(J2000)":"-8.829722222222221","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a nebulous star of 10th or 11th magnitude or a very small cluster (Auwers 47)","简略描述":"Nebulous * 10·11 or vS Cl (Auwers 47)"},{"ID":"7123","标识":"NGC7123","M标识":"NGC7123","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h50m46.4s","赤经D(J2000)":"21.84622222222222","赤纬(J2000)":"-70h20m2s","赤纬D(J2000)":"-70.33388888888888","可见光星等V":"12.2","摄影(蓝光)星等B":"12.6","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3","短轴(分)":"1.1","方位角":"146","详细描述":"pretty bright, small, round, very gradually brighter middle, 9th magnitude star to east","简略描述":"pB, S, R, vgbM, * 9 f"},{"ID":"7124","标识":"NGC7124","M标识":"NGC7124","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h48m5.3s","赤经D(J2000)":"21.801472222222223","赤纬(J2000)":"-50h33m56s","赤纬D(J2000)":"-50.565555555555555","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.8","短轴(分)":"1.1","方位角":"143","详细描述":"pretty bright, large, pretty much extended, very gradually brighter middle","简略描述":"pB, L, pmE, vgbM"},{"ID":"7125","标识":"NGC7125","M标识":"NGC7125","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h49m16.2s","赤经D(J2000)":"21.821166666666667","赤纬(J2000)":"-60h42m45s","赤纬D(J2000)":"-60.712500000000006","可见光星等V":"12.4","摄影(蓝光)星等B":"12.8","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"3","短轴(分)":"2.1","方位角":"110","详细描述":"extremely faint, pretty large, round, southwestern of 2","简略描述":"eF, pL, R, sp of 2"},{"ID":"7126","标识":"NGC7126","M标识":"NGC7126","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h49m18.3s","赤经D(J2000)":"21.82175","赤纬(J2000)":"-60h36m34s","赤纬D(J2000)":"-60.60944444444445","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.8","短轴(分)":"1.3","方位角":"71","详细描述":"pretty bright, pretty small, a little extended, gradually brighter middle, northeastern of 2","简略描述":"pB, pS, lE, gbM, nf of 2"},{"ID":"7127","标识":"NGC7127","M标识":"NGC7127","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV1p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h43m52.9s","赤经D(J2000)":"21.73136111111111","赤纬(J2000)":"+54h35m46s","赤纬D(J2000)":"54.596111111111114","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, small, poor, a little compressed","简略描述":"Cl, S, P, lC"},{"ID":"7128","标识":"NGC7128","M标识":"NGC7128","拓展名":"","组件":"","Class":"VII 40","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h43m57.7s","赤经D(J2000)":"21.732694444444444","赤纬(J2000)":"+53h42m55s","赤纬D(J2000)":"53.71527777777778","可见光星等V":"9.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, small, pretty rich, has a ruby star of magnitude 9.5","简略描述":"Cl, S, pRi, has a ruby * 9.5"},{"ID":"7129","标识":"NGC7129","M标识":"NGC7129","拓展名":"","组件":"","Class":"IV 75","业余排名":"6.5","中文名":"小星团星云","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"21h42m58.9s","赤经D(J2000)":"21.71636111111111","赤纬(J2000)":"+66h6m47s","赤纬D(J2000)":"66.11305555555555","可见光星等V":"99","摄影(蓝光)星等B":"11.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"7","方位角":"","详细描述":"a remarkable object, considerably faint, pretty large, gradually brighter middle, triple star","简略描述":"!, cF, pL, gbM ***"},{"ID":"7130","标识":"NGC7130","M标识":"NGC7130","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"21h48m19.3s","赤经D(J2000)":"21.80536111111111","赤纬(J2000)":"-34h57m10s","赤纬D(J2000)":"-34.95277777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"1.5","方位角":"105","详细描述":"pretty bright, small, round, gradually a little brighter middle","简略描述":"pB, S, R, glbM"},{"ID":"7131","标识":"NGC7131","M标识":"NGC7131","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h47m36s","赤经D(J2000)":"21.793333333333337","赤纬(J2000)":"-13h10m56s","赤纬D(J2000)":"-13.182222222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.7","短轴(分)":"1","方位角":"115","详细描述":"very faint, small, very little extended, very gradually brighter middle","简略描述":"vF, S, vlE, vgbM"},{"ID":"7132","标识":"NGC7132","M标识":"NGC7132","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h47m16.4s","赤经D(J2000)":"21.78788888888889","赤纬(J2000)":"+10h14m29s","赤纬D(J2000)":"10.241388888888888","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"114","详细描述":"very faint, pretty large, a little extended, between 2 stars","简略描述":"vF, pL, lE, bet 2 st"},{"ID":"7133","标识":"NGC7133","M标识":"NGC7133","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"21h44m26.6s","赤经D(J2000)":"21.740722222222225","赤纬(J2000)":"+66h10m6s","赤纬D(J2000)":"66.16833333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large","简略描述":"vF, pL"},{"ID":"7134","标识":"NGC7134","M标识":"NGC7134","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h48m56s","赤经D(J2000)":"21.815555555555555","赤纬(J2000)":"-12h58m13s","赤纬D(J2000)":"-12.970277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, 11th magnitude star to north","简略描述":"pF, vS, * 11 n"},{"ID":"7135","标识":"NGC7135","M标识":"NGC7135","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"21h49m46s","赤经D(J2000)":"21.829444444444444","赤纬(J2000)":"-34h52m34s","赤纬D(J2000)":"-34.876111111111115","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.1","短轴(分)":"1.8","方位角":"47","详细描述":"pretty bright, pretty large, round, very gradually brighter middle, 14th magnitude star attached on west","简略描述":"pB, pL, R, vgbM, * 14 att p"},{"ID":"7136","标识":"NGC7136","M标识":"NGC7136","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h49m43.3s","赤经D(J2000)":"21.828694444444444","赤纬(J2000)":"-11h47m34s","赤纬D(J2000)":"-11.792777777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, round (nebula?), 9.5 magnitude star 2 arcmin to east","简略描述":"eF, vS, R (neb?), * 9.5 f 2'"},{"ID":"7137","标识":"NGC7137","M标识":"NGC7137","拓展名":"","组件":"","Class":"II 261","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h48m13s","赤经D(J2000)":"21.803611111111113","赤纬(J2000)":"+22h9m35s","赤纬D(J2000)":"22.15972222222222","可见光星等V":"12.4","摄影(蓝光)星等B":"13.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"36","详细描述":"faint, pretty small, round, very gradually a little brighter middle, mottled but not resolved","简略描述":"F, pS, R, vglbM, r"},{"ID":"7138","标识":"NGC7138","M标识":"NGC7138","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h49m1s","赤经D(J2000)":"21.816944444444445","赤纬(J2000)":"+12h30m50s","赤纬D(J2000)":"12.51388888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"177","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stell"},{"ID":"7139","标识":"NGC7139","M标识":"NGC7139","拓展名":"","组件":"","Class":"III 696","业余排名":"6.5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"21h46m8.4s","赤经D(J2000)":"21.769","赤纬(J2000)":"+63h47m32s","赤纬D(J2000)":"63.79222222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"13","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.28","短轴(分)":"","方位角":"","详细描述":"very faint, considerably small, round, mottled but not resolved","简略描述":"vF, cS, R, r"},{"ID":"7140","标识":"NGC7140","M标识":"NGC7140","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h52m15.1s","赤经D(J2000)":"21.87086111111111","赤纬(J2000)":"-55h34m11s","赤纬D(J2000)":"-55.569722222222225","可见光星等V":"11.5","摄影(蓝光)星等B":"12.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"4.1","短轴(分)":"3","方位角":"18","详细描述":"pretty faint, considerably small, round, brighter middle","简略描述":"pF, cS, R, bM"},{"ID":"7141","标识":"NGC7141","M标识":"NGC7141","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h52m15.1s","赤经D(J2000)":"21.87086111111111","赤纬(J2000)":"-55h34m11s","赤纬D(J2000)":"-55.569722222222225","可见光星等V":"11.5","摄影(蓝光)星等B":"12.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"4.1","短轴(分)":"3","方位角":"18","详细描述":"pretty faint, considerably small, round, brighter middle","简略描述":"F, L, R, gpsmbM (?=h 3892)"},{"ID":"7142","标识":"NGC7142","M标识":"NGC7142","拓展名":"","组件":"","Class":"VII 66","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2r","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"21h45m9.4s","赤经D(J2000)":"21.75261111111111","赤纬(J2000)":"+65h46m28s","赤纬D(J2000)":"65.77444444444444","可见光星等V":"9.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, considerably large, considerably rich, pretty compressed, stars 11th to 14th magnitude","简略描述":"Cl, cL, cRi, pC, st 11...14"},{"ID":"7143","标识":"NGC7143","M标识":"NGC7143","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h48m53.9s","赤经D(J2000)":"21.814972222222224","赤纬(J2000)":"+29h57m26s","赤纬D(J2000)":"29.95722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, perhaps a double star (involved in a nebula?)","简略描述":"vF, ? D * (inv in neb?)"},{"ID":"7144","标识":"NGC7144","M标识":"NGC7144","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h52m42.6s","赤经D(J2000)":"21.8785","赤纬(J2000)":"-48h15m17s","赤纬D(J2000)":"-48.25472222222222","可见光星等V":"10.8","摄影(蓝光)星等B":"11.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.7","短轴(分)":"3.6","方位角":"","详细描述":"very bright, pretty small, round, much brighter middle and nucleus","简略描述":"vB, pS, R, mbMN"},{"ID":"7145","标识":"NGC7145","M标识":"NGC7145","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h53m20.5s","赤经D(J2000)":"21.889027777777777","赤纬(J2000)":"-47h52m57s","赤纬D(J2000)":"-47.8825","可见光星等V":"11.2","摄影(蓝光)星等B":"12","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.5","短轴(分)":"2.3","方位角":"173","详细描述":"bright, small, round, in triangle of 13th magnitude stars","简略描述":"B, S, R, in Δ of st 13"},{"ID":"7146","标识":"NGC7146","M标识":"NGC7146","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h51m47.4s","赤经D(J2000)":"21.863166666666668","赤纬(J2000)":"+3h1m2s","赤纬D(J2000)":"3.0172222222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.6","方位角":"80","详细描述":"faint, round","简略描述":"F, R"},{"ID":"7147","标识":"NGC7147","M标识":"NGC7147","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h51m58.3s","赤经D(J2000)":"21.866194444444446","赤纬(J2000)":"+3h4m20s","赤纬D(J2000)":"3.0722222222222224","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.9","方位角":"5","详细描述":"faint, small, a little extended","简略描述":"F, S, lE"},{"ID":"7148","标识":"NGC7148","M标识":"NGC7148","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h52m8.4s","赤经D(J2000)":"21.869","赤纬(J2000)":"+3h20m31s","赤纬D(J2000)":"3.3419444444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"7149","标识":"NGC7149","M标识":"NGC7149","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h52m11.6s","赤经D(J2000)":"21.86988888888889","赤纬(J2000)":"+3h18m6s","赤纬D(J2000)":"3.3016666666666663","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"25","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"7150","标识":"NGC7150","M标识":"NGC7150","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h50m23s","赤经D(J2000)":"21.83972222222222","赤纬(J2000)":"+49h45m22s","赤纬D(J2000)":"49.75611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a nebula, no description","简略描述":"Neb, no description"},{"ID":"7151","标识":"NGC7151","M标识":"NGC7151","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h55m4s","赤经D(J2000)":"21.91777777777778","赤纬(J2000)":"-50h39m29s","赤纬D(J2000)":"-50.658055555555556","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.9","短轴(分)":"1.1","方位角":"75","详细描述":"very faint, pretty large, a little extended, very gradually brighter middle, mottled but not resolved","简略描述":"vF, pL, lE, vgbM, r"},{"ID":"7152","标识":"NGC7152","M标识":"NGC7152","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"21h53m59s","赤经D(J2000)":"21.899722222222223","赤纬(J2000)":"-29h17m21s","赤纬D(J2000)":"-29.289166666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"17","详细描述":"most extremely faint, very small (Lassell not found)","简略描述":"eeF, vS (Lassell not found)"},{"ID":"7153","标识":"NGC7153","M标识":"NGC7153","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"21h54m35.3s","赤经D(J2000)":"21.909805555555554","赤纬(J2000)":"-29h3m50s","赤纬D(J2000)":"-29.06388888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.9","短轴(分)":"0.3","方位角":"68","详细描述":"extremely faint, small, extended or has extremely faint star near","简略描述":"eF, S, E or has eF * nr"},{"ID":"7154","标识":"NGC7154","M标识":"NGC7154","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"21h55m21.1s","赤经D(J2000)":"21.92252777777778","赤纬(J2000)":"-34h48m50s","赤纬D(J2000)":"-34.81388888888888","可见光星等V":"12.4","摄影(蓝光)星等B":"12.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.2","短轴(分)":"1.8","方位角":"102","详细描述":"bright, pretty large, irregularly round, gradually a little brighter middle, mottled but not resolved","简略描述":"B, pL, iR, glbM, r"},{"ID":"7155","标识":"NGC7155","M标识":"NGC7155","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h56m9.8s","赤经D(J2000)":"21.936055555555555","赤纬(J2000)":"-49h31m19s","赤纬D(J2000)":"-49.52194444444444","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.3","短轴(分)":"2","方位角":"4","详细描述":"pretty bright, small, a little extended, much brighter middle","简略描述":"pB, S, lE, mbM"},{"ID":"7156","标识":"NGC7156","M标识":"NGC7156","拓展名":"","组件":"","Class":"III 452","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h54m33.5s","赤经D(J2000)":"21.909305555555555","赤纬(J2000)":"+2h56m32s","赤纬D(J2000)":"2.9422222222222225","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"96","详细描述":"faint, pretty large, round, brighter middle, mottled but not resolved","简略描述":"F, pL, R, bM, r"},{"ID":"7157","标识":"NGC7157","M标识":"NGC7157","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"21h56m56.7s","赤经D(J2000)":"21.949083333333334","赤纬(J2000)":"-25h21m3s","赤纬D(J2000)":"-25.350833333333334","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"5","详细描述":"very faint, very small, round, suddenly brighter middle and nucleus, bright double star 8 seconds of time to west","简略描述":"vF, vS, R, sbMN, B D * p 8s"},{"ID":"7158","标识":"NGC7158","M标识":"NGC7158","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h57m28s","赤经D(J2000)":"21.95777777777778","赤纬(J2000)":"-11h35m31s","赤纬D(J2000)":"-11.591944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a very faint nebulous star, 9.5 magnitude star 3' to northeast","简略描述":"vF neb *, * 9.5 nf 3'"},{"ID":"7159","标识":"NGC7159","M标识":"NGC7159","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h56m25.6s","赤经D(J2000)":"21.940444444444445","赤纬(J2000)":"+13h33m47s","赤纬D(J2000)":"13.563055555555556","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"168","详细描述":"most extremely faint, extremely small, round, very faint star to southeast","简略描述":"eeF, eS, R, vF * sf"},{"ID":"7160","标识":"NGC7160","M标识":"NGC7160","拓展名":"","组件":"","Class":"VIII 67","业余排名":"5","中文名":"短吻鳄星团","类型":"OCL","含重复类型":"OCL","形态":"II3p","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"21h53m40.2s","赤经D(J2000)":"21.8945","赤纬(J2000)":"+62h36m12s","赤纬D(J2000)":"62.60333333333333","可见光星等V":"6.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, very little compressed","简略描述":"Cl, P, vlC"},{"ID":"7161","标识":"NGC7161","M标识":"NGC7161","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h56m57.9s","赤经D(J2000)":"21.949416666666668","赤纬(J2000)":"+2h55m0s","赤纬D(J2000)":"2.9166666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, very small, stars of 19th magnitude, between two 16th magnitude stars","简略描述":"Cl, vS, st 19, bet 2 st 16"},{"ID":"7162","标识":"NGC7162","M标识":"NGC7162","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h59m38.8s","赤经D(J2000)":"21.994111111111113","赤纬(J2000)":"-43h18m16s","赤纬D(J2000)":"-43.30444444444444","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.8","短轴(分)":"1","方位角":"10","详细描述":"considerably faint, considerably large, considerably extended, gradually a little brighter middle","简略描述":"cF, cL, cE, glbM"},{"ID":"7163","标识":"NGC7163","M标识":"NGC7163","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"21h59m20.3s","赤经D(J2000)":"21.988972222222223","赤纬(J2000)":"-31h53m1s","赤纬D(J2000)":"-31.88361111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.5","B-V":"1.2","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"101","详细描述":"faint, pretty large, very little extended, very gradually a little brighter middle","简略描述":"F, pL, vlE, vglbM"},{"ID":"7164","标识":"NGC7164","M标识":"NGC7164","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h56m23.5s","赤经D(J2000)":"21.93986111111111","赤纬(J2000)":"+1h21m52s","赤纬D(J2000)":"1.3644444444444446","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"118","详细描述":"extremely faint, round, 4 very faint stars to north","简略描述":"eF, R, 4 vF st n"},{"ID":"7165","标识":"NGC7165","M标识":"NGC7165","拓展名":"","组件":"","Class":"III 930","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h59m26.1s","赤经D(J2000)":"21.990583333333333","赤纬(J2000)":"-16h30m46s","赤纬D(J2000)":"-16.512777777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"67","详细描述":"extremely faint","简略描述":"eF"},{"ID":"7166","标识":"NGC7166","M标识":"NGC7166","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h0m32.7s","赤经D(J2000)":"22.009083333333333","赤纬(J2000)":"-43h23m24s","赤纬D(J2000)":"-43.39","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.4","短轴(分)":"0.9","方位角":"14","详细描述":"considerably bright, small, very little extended, suddenly much brighter middle and nucleus","简略描述":"cB, S, vlE, smbMN"},{"ID":"7167","标识":"NGC7167","M标识":"NGC7167","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h0m30.8s","赤经D(J2000)":"22.008555555555557","赤纬(J2000)":"-24h37m59s","赤纬D(J2000)":"-24.633055555555558","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"145","详细描述":"faint, pretty small, round, very gradually a little brighter middle, 10th magnitude star to east","简略描述":"F, pS, R, vglbM, * 10 f"},{"ID":"7168","标识":"NGC7168","M标识":"NGC7168","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h2m7.3s","赤经D(J2000)":"22.03536111111111","赤纬(J2000)":"-51h44m36s","赤纬D(J2000)":"-51.74333333333333","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"68","详细描述":"pretty bright, small, round, pretty suddenly brighter middle","简略描述":"pB, S, R, psbM"},{"ID":"7169","标识":"NGC7169","M标识":"NGC7169","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h2m48.7s","赤经D(J2000)":"22.046861111111113","赤纬(J2000)":"-47h41m51s","赤纬D(J2000)":"-47.6975","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.5","方位角":"78","详细描述":"extremely faint, small, round, 8th magnitude star to northwest","简略描述":"eF, S, R, * 8 np"},{"ID":"7170","标识":"NGC7170","M标识":"NGC7170","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h1m26.3s","赤经D(J2000)":"22.02397222222222","赤纬(J2000)":"-5h25m56s","赤纬D(J2000)":"-5.432222222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"165","详细描述":"very faint, pretty small, irregularly round, brighter middle and nucleus, double star 36 seconds of time to west","简略描述":"vF, pS, iR, bMN, D * p 36 s"},{"ID":"7171","标识":"NGC7171","M标识":"NGC7171","拓展名":"","组件":"","Class":"III 692","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h1m1.9s","赤经D(J2000)":"22.017194444444442","赤纬(J2000)":"-13h16m11s","赤纬D(J2000)":"-13.269722222222223","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.6","短轴(分)":"1.5","方位角":"125","详细描述":"very faint, considerably large, extended 124°, very gradually brighter middle","简略描述":"vF, cL, E 124°, vgbM"},{"ID":"7172","标识":"NGC7172","M标识":"NGC7172","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h2m1.7s","赤经D(J2000)":"22.033805555555556","赤纬(J2000)":"-31h52m12s","赤纬D(J2000)":"-31.87","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.4","短轴(分)":"1.3","方位角":"100","详细描述":"pretty bright, pretty large, a little extended, gradually brighter middle, 1st of 4","简略描述":"pB, pL, lE, gbM, 1st of 4"},{"ID":"7173","标识":"NGC7173","M标识":"NGC7173","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h2m3.1s","赤经D(J2000)":"22.034194444444445","赤纬(J2000)":"-31h58m23s","赤纬D(J2000)":"-31.973055555555554","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"143","详细描述":"considerably bright, considerably small, round, suddenly brighter middle like star, 2nd of 4","简略描述":"cB, cS, R, sbM *, 2nd of 4"},{"ID":"7174","标识":"NGC7174","M标识":"NGC7174","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h2m5.9s","赤经D(J2000)":"22.034972222222223","赤纬(J2000)":"-31h59m33s","赤纬D(J2000)":"-31.9925","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2.3","短轴(分)":"1.2","方位角":"88","详细描述":"considerably faint, small, round, preceding (western) of double nebula (the other being NGC 7176), 3rd of 4","简略描述":"cF, S, R, p of D neb, 3rd of 4"},{"ID":"7175","标识":"NGC7175","M标识":"NGC7175","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h58m50s","赤经D(J2000)":"21.980555555555554","赤纬(J2000)":"+54h31m30s","赤纬D(J2000)":"54.525","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, pretty rich, a little compressed","简略描述":"Cl, vL, pRi, lC"},{"ID":"7176","标识":"NGC7176","M标识":"NGC7176","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h2m8.2s","赤经D(J2000)":"22.035611111111113","赤纬(J2000)":"-31h59m26s","赤纬D(J2000)":"-31.990555555555556","可见光星等V":"11.4","摄影(蓝光)星等B":"12.5","B-V":"1.1","表面亮度(mag\/arcmin2)":"11","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"bright, pretty large, round, following (eastern) of double nebula (the other being NGC 7174), 4th of 4","简略描述":"B, pL, R, f of D neb, 4th of 4"},{"ID":"7177","标识":"NGC7177","M标识":"NGC7177","拓展名":"","组件":"","Class":"II 247","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h0m41.2s","赤经D(J2000)":"22.011444444444443","赤纬(J2000)":"+17h44m14s","赤纬D(J2000)":"17.737222222222222","可见光星等V":"11.2","摄影(蓝光)星等B":"12","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.2","短轴(分)":"2.1","方位角":"93","详细描述":"pretty bright, pretty small, round, brighter middle and nucleus, mottled but not resolved, star to southwest","简略描述":"pB, pS, R, bMN, r, * sp"},{"ID":"7178","标识":"NGC7178","M标识":"NGC7178","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h2m25.1s","赤经D(J2000)":"22.04030555555556","赤纬(J2000)":"-35h47m27s","赤纬D(J2000)":"-35.79083333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"172","详细描述":"extremely faint, small, round, 8th magnitude star 2' to south","简略描述":"eF, S, R, * 8 s 2'"},{"ID":"7179","标识":"NGC7179","M标识":"NGC7179","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h4m49s","赤经D(J2000)":"22.080277777777777","赤纬(J2000)":"-64h2m49s","赤纬D(J2000)":"-64.04694444444445","可见光星等V":"12.8","摄影(蓝光)星等B":"13.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2","短轴(分)":"0.8","方位角":"48","详细描述":"considerably faint, pretty small, very gradually brighter middle","简略描述":"cF, pS, vgbM"},{"ID":"7180","标识":"NGC7180","M标识":"NGC7180","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h2m18.5s","赤经D(J2000)":"22.038472222222225","赤纬(J2000)":"-20h32m52s","赤纬D(J2000)":"-20.547777777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"68","详细描述":"very faint, small, round, a little brighter middle, western of 2","简略描述":"vF, S, R, lbM, p of 2"},{"ID":"7181","标识":"NGC7181","M标识":"NGC7181","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h1m43.4s","赤经D(J2000)":"22.02872222222222","赤纬(J2000)":"-1h57m36s","赤纬D(J2000)":"-1.96","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.8","方位角":"95","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"7182","标识":"NGC7182","M标识":"NGC7182","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h1m51.6s","赤经D(J2000)":"22.031","赤纬(J2000)":"-2h11m46s","赤纬D(J2000)":"-2.196111111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"71","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"7183","标识":"NGC7183","M标识":"NGC7183","拓展名":"","组件":"","Class":"II 595","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h2m21.2s","赤经D(J2000)":"22.039222222222225","赤纬(J2000)":"-18h54m56s","赤纬D(J2000)":"-18.915555555555553","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.8","短轴(分)":"1.1","方位角":"77","详细描述":"very faint, pretty large, extended 90°, a little brighter middle","简略描述":"vF, pL, E 90°, lbM"},{"ID":"7184","标识":"NGC7184","M标识":"NGC7184","拓展名":"","组件":"","Class":"II 1","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h2m39.9s","赤经D(J2000)":"22.044416666666667","赤纬(J2000)":"-20h48m45s","赤纬D(J2000)":"-20.8125","可见光星等V":"10.9","摄影(蓝光)星等B":"11.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"5.9","短轴(分)":"1.3","方位角":"62","详细描述":"pretty bright, pretty large, much extended 64°, between 3 stars, extremely mottled but not resolved","简略描述":"pB, pL, mE 64°, bet 3 st, er"},{"ID":"7185","标识":"NGC7185","M标识":"NGC7185","拓展名":"","组件":"","Class":"III 693","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h2m56.6s","赤经D(J2000)":"22.049055555555558","赤纬(J2000)":"-20h28m17s","赤纬D(J2000)":"-20.47138888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.3","短轴(分)":"1.5","方位角":"15","详细描述":"very faint, pretty large, irregularly round, very gradually a little brighter middle, eastern of 2","简略描述":"vF, pL, iR, vglbM, f of 2"},{"ID":"7186","标识":"NGC7186","M标识":"NGC7186","拓展名":"","组件":"","Class":"III 165","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h1m5s","赤经D(J2000)":"22.018055555555556","赤纬(J2000)":"+35h4m42s","赤纬D(J2000)":"35.07833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, among 5 or 6 stars","简略描述":"vF, am 5 or 6 st"},{"ID":"7187","标识":"NGC7187","M标识":"NGC7187","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h2m44.4s","赤经D(J2000)":"22.04566666666667","赤纬(J2000)":"-32h48m12s","赤纬D(J2000)":"-32.80333333333333","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"171","详细描述":"pretty faint, pretty small, round, a little brighter middle","简略描述":"pF, pS, R, lbM"},{"ID":"7188","标识":"NGC7188","M标识":"NGC7188","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h3m29s","赤经D(J2000)":"22.058055555555555","赤纬(J2000)":"-20h19m3s","赤纬D(J2000)":"-20.3175","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"44","详细描述":"extremely faint, pretty small, extended, a little brighter middle","简略描述":"eF, pS, E, lbM"},{"ID":"7189","标识":"NGC7189","M标识":"NGC7189","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h3m15.9s","赤经D(J2000)":"22.05441666666667","赤纬(J2000)":"+0h34m17s","赤纬D(J2000)":"0.5713888888888888","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.7","方位角":"115","详细描述":"faint, small, a little extended","简略描述":"F, S, lE"},{"ID":"7190","标识":"NGC7190","M标识":"NGC7190","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h3m6.6s","赤经D(J2000)":"22.051833333333335","赤纬(J2000)":"+11h11m59s","赤纬D(J2000)":"11.199722222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"66","详细描述":"extremely faint, very small, irregularly round, a little brighter middle","简略描述":"eF, vS, iR, lbM"},{"ID":"7191","标识":"NGC7191","M标识":"NGC7191","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h6m51.2s","赤经D(J2000)":"22.114222222222224","赤纬(J2000)":"-64h38m1s","赤纬D(J2000)":"-64.63361111111112","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"136","详细描述":"very faint, small, a little extended, very gradually brighter middle","简略描述":"vF, S, lE, vgbM"},{"ID":"7192","标识":"NGC7192","M标识":"NGC7192","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h6m49.9s","赤经D(J2000)":"22.113861111111113","赤纬(J2000)":"-64h18m58s","赤纬D(J2000)":"-64.31611111111111","可见光星等V":"11.2","摄影(蓝光)星等B":"12.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.9","短轴(分)":"1.8","方位角":"27","详细描述":"pretty bright, small, round, pretty much brighter middle","简略描述":"pB, S, R, pmbM"},{"ID":"7193","标识":"NGC7193","M标识":"NGC7193","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h3m3.8s","赤经D(J2000)":"22.051055555555557","赤纬(J2000)":"+10h48m8s","赤纬D(J2000)":"10.802222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"5","方位角":"","详细描述":"a cluster, a little rich, a little compressed, stars from 9th to 10th magnitude","简略描述":"Cl, lRi, lC, st 9…10"},{"ID":"7194","标识":"NGC7194","M标识":"NGC7194","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h3m30.9s","赤经D(J2000)":"22.058583333333335","赤纬(J2000)":"+12h38m13s","赤纬D(J2000)":"12.636944444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"20","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"7195","标识":"NGC7195","M标识":"NGC7195","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h3m30.2s","赤经D(J2000)":"22.05838888888889","赤纬(J2000)":"+12h39m41s","赤纬D(J2000)":"12.661388888888888","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"81","详细描述":"most extremely faint, round, very difficult","简略描述":"eeF, R, v diffic"},{"ID":"7196","标识":"NGC7196","M标识":"NGC7196","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h5m54.8s","赤经D(J2000)":"22.098555555555553","赤纬(J2000)":"-50h7m9s","赤纬D(J2000)":"-50.119166666666665","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.5","短轴(分)":"1.9","方位角":"53","详细描述":"considerably bright, small, round, among stars","简略描述":"cB, S, R, am st"},{"ID":"7197","标识":"NGC7197","M标识":"NGC7197","拓展名":"","组件":"","Class":"II 599","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h2m57.9s","赤经D(J2000)":"22.04941666666667","赤纬(J2000)":"+41h3m34s","赤纬D(J2000)":"41.059444444444445","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"112","详细描述":"faint, considerably small, considerably extended, very gradually a little brighter middle, extremely mottled but not resolved","简略描述":"F, cS, cE, vglbM, er"},{"ID":"7198","标识":"NGC7198","M标识":"NGC7198","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h5m14.1s","赤经D(J2000)":"22.087249999999997","赤纬(J2000)":"-0h38m52s","赤纬D(J2000)":"-0.6477777777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1","方位角":"5","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"7199","标识":"NGC7199","M标识":"NGC7199","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h8m30.1s","赤经D(J2000)":"22.141694444444443","赤纬(J2000)":"-64h42m22s","赤纬D(J2000)":"-64.70611111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"30","详细描述":"very faint, small, round, pretty suddenly a little brighter middle, 11th magnitude star 3' to west","简略描述":"vF, S, R, pslbM, * 11 p 3'"},{"ID":"7200","标识":"NGC7200","M标识":"NGC7200","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h7m9.6s","赤经D(J2000)":"22.119333333333334","赤纬(J2000)":"-49h59m44s","赤纬D(J2000)":"-49.995555555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"33","详细描述":"pretty faint, small, round, suddenly much brighter middle","简略描述":"pF, S, R, smbM"},{"ID":"7201","标识":"NGC7201","M标识":"NGC7201","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h6m32s","赤经D(J2000)":"22.10888888888889","赤纬(J2000)":"-31h15m50s","赤纬D(J2000)":"-31.26388888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"128","详细描述":"faint, round, gradually brighter middle, 1st of 4","简略描述":"F, R, gbM, 1st of 4"},{"ID":"7202","标识":"NGC7202","M标识":"NGC7202","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h6m43.3s","赤经D(J2000)":"22.11202777777778","赤纬(J2000)":"-31h13m7s","赤纬D(J2000)":"-31.21861111111111","可见光星等V":"99","摄影(蓝光)星等B":"14.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, stellar, 2nd of 4","简略描述":"eF, S, stellar, 2nd of 4"},{"ID":"7203","标识":"NGC7203","M标识":"NGC7203","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h6m43.8s","赤经D(J2000)":"22.112166666666667","赤纬(J2000)":"-31h9m48s","赤纬D(J2000)":"-31.16333333333333","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"72","详细描述":"considerably faint, round, stellar, 3rd of 4","简略描述":"cF, R, stellar, 3rd of 4"},{"ID":"7204","标识":"NGC7204","M标识":"NGC7204","拓展名":"A","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h6m53.1s","赤经D(J2000)":"22.11475","赤纬(J2000)":"-31h3m0s","赤纬D(J2000)":"-31.05","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"91","详细描述":"pretty bright, large, a little extended, gradually brighter middle, 4th of 4","简略描述":"pB, L, lE, gbM, 4th of 4"},{"ID":"7205","标识":"NGC7205","M标识":"NGC7205","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h8m33.2s","赤经D(J2000)":"22.142555555555553","赤纬(J2000)":"-57h26m33s","赤纬D(J2000)":"-57.442499999999995","可见光星等V":"11","摄影(蓝光)星等B":"11.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"4","短轴(分)":"2","方位角":"73","详细描述":"pretty bright, large, considerably extended, gradually then pretty suddenly a little brighter middle","简略描述":"pB, L, cE, gpslbM"},{"ID":"7206","标识":"NGC7206","M标识":"NGC7206","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h5m40.9s","赤经D(J2000)":"22.094694444444443","赤纬(J2000)":"+16h47m7s","赤纬D(J2000)":"16.78527777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"147","详细描述":"faint, small, a little extended, brighter middle","简略描述":"F, S, lE, bM"},{"ID":"7207","标识":"NGC7207","M标识":"NGC7207","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h5m45.6s","赤经D(J2000)":"22.096","赤纬(J2000)":"+16h46m4s","赤纬D(J2000)":"16.767777777777777","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"93","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"7208","标识":"NGC7208","M标识":"NGC7208","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h8m24.7s","赤经D(J2000)":"22.140194444444443","赤纬(J2000)":"-29h3m5s","赤纬D(J2000)":"-29.05138888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"142","详细描述":"very faint, very small, round, almost a planetary nebula","简略描述":"vF, vS, R, almost planetary"},{"ID":"7209","标识":"NGC7209","M标识":"NGC7209","拓展名":"","组件":"","Class":"VII 53","业余排名":"5","中文名":"飞蜥星团","类型":"OCL","含重复类型":"OCL","形态":"III1p","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h5m8s","赤经D(J2000)":"22.085555555555555","赤纬(J2000)":"+46h29m0s","赤纬D(J2000)":"46.483333333333334","可见光星等V":"7.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, large, considerably rich, pretty compressed, stars from 9th to 12th magnitude","简略描述":"Cl, L, cRi, pC, st 9…12"},{"ID":"7210","标识":"NGC7210","M标识":"NGC7210","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h6m50.5s","赤经D(J2000)":"23.11402777777778","赤纬(J2000)":"+28h10m46s","赤纬D(J2000)":"28.179444444444446","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"2","短轴(分)":"1.8","方位角":"141","详细描述":"extremely faint, round, brighter middle, very faint double star to northwest","简略描述":"eF, R, bM, vF D * np"},{"ID":"7211","标识":"NGC7211","M标识":"NGC7211","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h6m21.8s","赤经D(J2000)":"22.106055555555557","赤纬(J2000)":"-8h5m22s","赤纬D(J2000)":"-8.089444444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"39","详细描述":"extremely faint, small, stellar","简略描述":"eF, S, stellar"},{"ID":"7212","标识":"NGC7212","M标识":"NGC7212","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h7m2.2s","赤经D(J2000)":"22.11727777777778","赤纬(J2000)":"+10h14m5s","赤纬D(J2000)":"10.23472222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"33","详细描述":"extremely faint, very small, a little extended","简略描述":"eF, vS, lE"},{"ID":"7213","标识":"NGC7213","M标识":"NGC7213","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h9m16.2s","赤经D(J2000)":"22.1545","赤纬(J2000)":"-47h10m1s","赤纬D(J2000)":"-47.16694444444444","可见光星等V":"10.1","摄影(蓝光)星等B":"11","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"3.1","短轴(分)":"2.8","方位角":"124","详细描述":"very bright, pretty small, round, gradually brighter middle","简略描述":"vB, pS, R, gbM"},{"ID":"7214","标识":"NGC7214","M标识":"NGC7214","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h9m7.6s","赤经D(J2000)":"22.15211111111111","赤纬(J2000)":"-27h48m35s","赤纬D(J2000)":"-27.809722222222224","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.2","短轴(分)":"1.4","方位角":"105","详细描述":"a globular cluster, pretty large, irregularly round, partially resolved (some stars seen)","简略描述":"globular, pL, iR, rr"},{"ID":"7215","标识":"NGC7215","M标识":"NGC7215","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h8m34.5s","赤经D(J2000)":"22.142916666666665","赤纬(J2000)":"+0h30m44s","赤纬D(J2000)":"0.5122222222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"88","详细描述":"very faint, small, extended","简略描述":"vF, S, E"},{"ID":"7216","标识":"NGC7216","M标识":"NGC7216","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h12m36s","赤经D(J2000)":"22.21","赤纬(J2000)":"-68h39m43s","赤纬D(J2000)":"-68.66194444444444","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1","方位角":"133","详细描述":"pretty faint, small, round, gradually brighter middle","简略描述":"pF, S, R, gbM"},{"ID":"7217","标识":"NGC7217","M标识":"NGC7217","拓展名":"","组件":"","Class":"II 207","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h7m52.1s","赤经D(J2000)":"22.131138888888888","赤纬(J2000)":"+31h21m34s","赤纬D(J2000)":"31.359444444444446","可见光星等V":"10.1","摄影(蓝光)星等B":"11","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"4","短轴(分)":"3.4","方位角":"83","详细描述":"bright, pretty large, gradually brighter middle, extremely mottled but not resolved","简略描述":"B, pL, gbM, er"},{"ID":"7218","标识":"NGC7218","M标识":"NGC7218","拓展名":"","组件":"","Class":"II 897","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h10m11.5s","赤经D(J2000)":"22.16986111111111","赤纬(J2000)":"-16h39m38s","赤纬D(J2000)":"-16.660555555555554","可见光星等V":"12","摄影(蓝光)星等B":"12.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.6","短轴(分)":"1.1","方位角":"24","详细描述":"pretty bright, a little extended, mottled but not resolved","简略描述":"pB, lE, r"},{"ID":"7219","标识":"NGC7219","M标识":"NGC7219","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h13m8.9s","赤经D(J2000)":"22.21913888888889","赤纬(J2000)":"-64h50m56s","赤纬D(J2000)":"-64.84888888888888","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"1","方位角":"27","详细描述":"pretty bright, small, round, 2 stars near","简略描述":"pB, S, R, 2 st nr"},{"ID":"7220","标识":"NGC7220","M标识":"NGC7220","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h11m30.9s","赤经D(J2000)":"22.191916666666668","赤纬(J2000)":"-22h57m11s","赤纬D(J2000)":"-22.953055555555554","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"3","详细描述":"extremely faint, very small, very little extended, gradually brighter middle, 10th magnitude star 3' to north","简略描述":"eF, vS, vlE, gbM, * 10 n 3'"},{"ID":"7221","标识":"NGC7221","M标识":"NGC7221","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h11m15.1s","赤经D(J2000)":"22.187527777777778","赤纬(J2000)":"-30h33m48s","赤纬D(J2000)":"-30.563333333333333","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"1.6","方位角":"10","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved, 2 very small (faint) stars near","简略描述":"F, S, R, gbM, r, 2 vS st nr"},{"ID":"7222","标识":"NGC7222","M标识":"NGC7222","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h10m51.7s","赤经D(J2000)":"22.18102777777778","赤纬(J2000)":"+2h6m23s","赤纬D(J2000)":"2.106388888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"7223","标识":"NGC7223","M标识":"NGC7223","拓展名":"","组件":"","Class":"III 862","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h10m9.2s","赤经D(J2000)":"22.169222222222224","赤纬(J2000)":"+41h1m2s","赤纬D(J2000)":"41.01722222222222","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"144","详细描述":"extremely faint, pretty small, a little extended, mottled but not resolved, among 3 stars","简略描述":"eF, pS, lE, r, am 3 st"},{"ID":"7224","标识":"NGC7224","M标识":"NGC7224","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h11m35.3s","赤经D(J2000)":"22.19313888888889","赤纬(J2000)":"+25h51m54s","赤纬D(J2000)":"25.865000000000002","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1","方位角":"110","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"7225","标识":"NGC7225","M标识":"NGC7225","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a\/P","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h13m7.8s","赤经D(J2000)":"22.218833333333333","赤纬(J2000)":"-26h8m54s","赤纬D(J2000)":"-26.148333333333333","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2","短轴(分)":"1","方位角":"147","详细描述":"pretty faint, small, a little extended, brighter middle","简略描述":"pF, S, lE, bM"},{"ID":"7226","标识":"NGC7226","M标识":"NGC7226","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I1p","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"22h10m27s","赤经D(J2000)":"22.174166666666668","赤纬(J2000)":"+55h23m55s","赤纬D(J2000)":"55.39861111111111","可见光星等V":"9.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"pretty bright, large, in cluster","简略描述":"pB, L, in cluster"},{"ID":"7227","标识":"NGC7227","M标识":"NGC7227","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h11m31.3s","赤经D(J2000)":"22.192027777777778","赤纬(J2000)":"+38h43m15s","赤纬D(J2000)":"38.72083333333334","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"8","详细描述":"very faint, very small, round, a little brighter middle, northwestern of 2","简略描述":"vF, vS, R, lbM, np of 2"},{"ID":"7228","标识":"NGC7228","M标识":"NGC7228","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h11m48.6s","赤经D(J2000)":"22.196833333333334","赤纬(J2000)":"+38h41m56s","赤纬D(J2000)":"38.69888888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"2.1","短轴(分)":"1.2","方位角":"156","详细描述":"faint, very small, round, a little brighter middle, southeastern of 2","简略描述":"F, vS, R, lbM, sf of 2"},{"ID":"7229","标识":"NGC7229","M标识":"NGC7229","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h14m3.3s","赤经D(J2000)":"22.23425","赤纬(J2000)":"-29h23m0s","赤纬D(J2000)":"-29.383333333333333","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"157","详细描述":"faint, pretty large, round, very gradually a little brighter middle","简略描述":"F, pL, R, vglbM"},{"ID":"7230","标识":"NGC7230","M标识":"NGC7230","拓展名":"","组件":"","Class":"III 931","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h14m13.1s","赤经D(J2000)":"22.236972222222224","赤纬(J2000)":"-17h4m28s","赤纬D(J2000)":"-17.074444444444445","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"7231","标识":"NGC7231","M标识":"NGC7231","拓展名":"","组件":"","Class":"II 606","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h12m30.3s","赤经D(J2000)":"22.208416666666665","赤纬(J2000)":"+45h19m43s","赤纬D(J2000)":"45.328611111111115","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"0.7","方位角":"88","详细描述":"extremely faint, small, extremely mottled but not resolved","简略描述":"eF, S, er"},{"ID":"7232","标识":"NGC7232","M标识":"NGC7232","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h15m37.6s","赤经D(J2000)":"22.260444444444445","赤纬(J2000)":"-45h51m1s","赤纬D(J2000)":"-45.85027777777778","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.6","短轴(分)":"1","方位角":"99","详细描述":"pretty bright, small, pretty much extended, pretty suddenly brighter middle, western of 2","简略描述":"pB, S, pmE, psbM, p of 2"},{"ID":"7233","标识":"NGC7233","M标识":"NGC7233","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h15m49s","赤经D(J2000)":"22.26361111111111","赤纬(J2000)":"-45h50m47s","赤纬D(J2000)":"-45.84638888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"133","详细描述":"faint, very small, round, 8th magnitude star to east, eastern of 2","简略描述":"F, vS, R, * 8 f, f of 2"},{"ID":"7234","标识":"NGC7234","M标识":"NGC7234","拓展名":"","组件":"","Class":"VIII 63","业余排名":"15","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"22h12m24s","赤经D(J2000)":"22.206666666666667","赤纬(J2000)":"+57h16m24s","赤纬D(J2000)":"57.27333333333333","可见光星等V":"7.7","摄影(蓝光)星等B":"8.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, small, poor, a little compressed","简略描述":"Cl, S, P, lC"},{"ID":"7235","标识":"NGC7235","M标识":"NGC7235","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"II3m","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"22h12m24s","赤经D(J2000)":"22.206666666666667","赤纬(J2000)":"+57h16m24s","赤纬D(J2000)":"57.27333333333333","可见光星等V":"7.7","摄影(蓝光)星等B":"8.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, small, poor, a little compressed","简略描述":"Cl, pC, has a ruby * 10"},{"ID":"7236","标识":"NGC7236","M标识":"NGC7236","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h14m45s","赤经D(J2000)":"22.245833333333334","赤纬(J2000)":"+13h50m47s","赤纬D(J2000)":"13.846388888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, small, stellar","简略描述":"vF, S, stellar"},{"ID":"7237","标识":"NGC7237","M标识":"NGC7237","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h14m46.9s","赤经D(J2000)":"22.246361111111113","赤纬(J2000)":"+13h50m27s","赤纬D(J2000)":"13.840833333333334","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, small, stellar","简略描述":"vF, S, stellar"},{"ID":"7238","标识":"NGC7238","M标识":"NGC7238","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h15m20.5s","赤经D(J2000)":"22.255694444444444","赤纬(J2000)":"+22h31m10s","赤纬D(J2000)":"22.519444444444442","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, round, much brighter middle, 4 stars to west","简略描述":"pF, S, R, mbM, 4 st p"},{"ID":"7239","标识":"NGC7239","M标识":"NGC7239","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h15m1.3s","赤经D(J2000)":"22.25036111111111","赤纬(J2000)":"-5h3m10s","赤纬D(J2000)":"-5.052777777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"75","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7240","标识":"NGC7240","M标识":"NGC7240","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h15m22.7s","赤经D(J2000)":"22.256305555555556","赤纬(J2000)":"+37h16m50s","赤纬D(J2000)":"37.28055555555555","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, extremely small, star attached on north, western of 2","简略描述":"eF, eS, * att n, p of 2"},{"ID":"7241","标识":"NGC7241","M标识":"NGC7241","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc\/P","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h15m49.7s","赤经D(J2000)":"22.263805555555557","赤纬(J2000)":"+19h13m53s","赤纬D(J2000)":"19.231388888888887","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.4","短轴(分)":"1.1","方位角":"20","详细描述":"pretty faint, a little extended, 10th magnitude star attached on south","简略描述":"pF, lE, * 10 att s"},{"ID":"7242","标识":"NGC7242","M标识":"NGC7242","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h15m39.3s","赤经D(J2000)":"22.260916666666667","赤纬(J2000)":"+37h17m52s","赤纬D(J2000)":"37.297777777777775","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"2.3","短轴(分)":"1.7","方位角":"30","详细描述":"very faint, small, a little brighter middle, eastern of 2","简略描述":"vF, S, lbM, f of 2"},{"ID":"7243","标识":"NGC7243","M标识":"NGC7243","拓展名":"","组件":"","Class":"VIII 75","业余排名":"2","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV2p","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h15m8.5s","赤经D(J2000)":"22.25236111111111","赤纬(J2000)":"+49h53m51s","赤纬D(J2000)":"49.8975","可见光星等V":"6.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"30","短轴(分)":"","方位角":"","详细描述":"a cluster, large, poor, a little compressed, stars very large (bright)","简略描述":"Cl, L, P, lC, st vL"},{"ID":"7244","标识":"NGC7244","M标识":"NGC7244","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h16m26.7s","赤经D(J2000)":"22.274083333333333","赤纬(J2000)":"+16h28m18s","赤纬D(J2000)":"16.471666666666664","可见光星等V":"13.8","摄影(蓝光)星等B":"14.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"174","详细描述":"extremely faint, extremely small, round, brighter middle","简略描述":"eF, eS, R, bM"},{"ID":"7245","标识":"NGC7245","M标识":"NGC7245","拓展名":"","组件":"","Class":"VI 29","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h15m12s","赤经D(J2000)":"22.253333333333334","赤纬(J2000)":"+54h20m36s","赤纬D(J2000)":"54.343333333333334","可见光星等V":"9.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, compressed, stars extremely small (faint)","简略描述":"Cl, C, st eS"},{"ID":"7246","标识":"NGC7246","M标识":"NGC7246","拓展名":"","组件":"","Class":"III 932","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h17m42.6s","赤经D(J2000)":"22.295166666666667","赤纬(J2000)":"-15h34m12s","赤纬D(J2000)":"-15.57","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"162","详细描述":"very faint, small, very little extended, very gradually brighter middle, 13th magnitude star to north","简略描述":"vF, S, vlE, vgbM, * 13 n"},{"ID":"7247","标识":"NGC7247","M标识":"NGC7247","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h17m41.1s","赤经D(J2000)":"22.29475","赤纬(J2000)":"-23h43m50s","赤纬D(J2000)":"-23.730555555555554","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"2","详细描述":"pretty faint, very small, round, a little brighter middle, bright double star 13 seconds of time to west","简略描述":"pF, vS, R, lbM, B D * p 13s"},{"ID":"7248","标识":"NGC7248","M标识":"NGC7248","拓展名":"","组件":"","Class":"III 863","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h16m52.5s","赤经D(J2000)":"22.28125","赤纬(J2000)":"+40h30m19s","赤纬D(J2000)":"40.50527777777778","可见光星等V":"12.4","摄影(蓝光)星等B":"13.5","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.8","短轴(分)":"0.9","方位角":"133","详细描述":"very faint, very small, much brighter middle","简略描述":"vF, vS, mbM"},{"ID":"7249","标识":"NGC7249","M标识":"NGC7249","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h20m30.9s","赤经D(J2000)":"22.341916666666666","赤纬(J2000)":"-55h7m29s","赤纬D(J2000)":"-55.124722222222225","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"136","详细描述":"most extremely faint, round, doubtful object","简略描述":"eeF, R, doubtful object"},{"ID":"7250","标识":"NGC7250","M标识":"NGC7250","拓展名":"","组件":"","Class":"III 864","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h18m17.7s","赤经D(J2000)":"22.304916666666667","赤纬(J2000)":"+40h33m47s","赤纬D(J2000)":"40.56305555555555","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"157","详细描述":"very faint, small, much extended 165°±","简略描述":"vF, S, mE 165° ±"},{"ID":"7251","标识":"NGC7251","M标识":"NGC7251","拓展名":"","组件":"","Class":"III 933","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h20m27.2s","赤经D(J2000)":"22.340888888888887","赤纬(J2000)":"-15h46m23s","赤纬D(J2000)":"-15.773055555555556","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.9","短轴(分)":"1.7","方位角":"0","详细描述":"faint, pretty small, round, gradually pretty much brighter middle","简略描述":"F, pS, R, gpmbM"},{"ID":"7252","标识":"NGC7252","M标识":"NGC7252","拓展名":"","组件":"","Class":"III 458","业余排名":"13","中文名":"核和平星系","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h20m44.8s","赤经D(J2000)":"22.345777777777776","赤纬(J2000)":"-24h40m42s","赤纬D(J2000)":"-24.678333333333335","可见光星等V":"11.4","摄影(蓝光)星等B":"12.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.1","短轴(分)":"1.7","方位角":"119","详细描述":"faint, small, round, extremely mottled but not resolved","简略描述":"F, S, R, er"},{"ID":"7253","标识":"NGC7253","M标识":"NGC7253","拓展名":"A","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h19m27.3s","赤经D(J2000)":"22.32425","赤纬(J2000)":"+29h23m49s","赤纬D(J2000)":"29.396944444444443","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"116","详细描述":"very faint, pretty extended","简略描述":"vF, pE"},{"ID":"7254","标识":"NGC7254","M标识":"NGC7254","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h22m36s","赤经D(J2000)":"22.37666666666667","赤纬(J2000)":"-21h44m5s","赤纬D(J2000)":"-21.734722222222224","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"122","详细描述":"very faint, very small, round, 11th magnitude star 4.5 arcmin to west","简略描述":"vF, vS, R, * 11 p 4'.5"},{"ID":"7255","标识":"NGC7255","M标识":"NGC7255","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h23m8s","赤经D(J2000)":"22.385555555555555","赤纬(J2000)":"-15h32m28s","赤纬D(J2000)":"-15.54111111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"123","详细描述":"extremely faint, large, much extended 30°, suddenly brighter middle and nucleus","简略描述":"eF, L, mE 30°, sbMN"},{"ID":"7256","标识":"NGC7256","M标识":"NGC7256","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h22m36s","赤经D(J2000)":"22.37666666666667","赤纬(J2000)":"-21h44m5s","赤纬D(J2000)":"-21.734722222222224","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"122","详细描述":"very faint, very small, round, 11th magnitude star 4.5 arcmin to west","简略描述":"3 F st in F neb"},{"ID":"7257","标识":"NGC7257","M标识":"NGC7257","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h22m36.5s","赤经D(J2000)":"22.376805555555556","赤纬(J2000)":"-4h7m15s","赤纬D(J2000)":"-4.120833333333333","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"33","详细描述":"faint, very small, a little extended","简略描述":"F, vS, lE"},{"ID":"7258","标识":"NGC7258","M标识":"NGC7258","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h22m58.1s","赤经D(J2000)":"22.382805555555557","赤纬(J2000)":"-28h20m43s","赤纬D(J2000)":"-28.345277777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"141","详细描述":"very faint, small, extended, gradually a little brighter middle, binuclear?","简略描述":"vF, S, E, glbM, ? biN"},{"ID":"7259","标识":"NGC7259","M标识":"NGC7259","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h23m5.6s","赤经D(J2000)":"22.384888888888888","赤纬(J2000)":"-28h57m16s","赤纬D(J2000)":"-28.954444444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"49","详细描述":"extremely faint, pretty large, round, very little brighter middle","简略描述":"eF, pL, R, vlbM"},{"ID":"7260","标识":"NGC7260","M标识":"NGC7260","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h22m36.5s","赤经D(J2000)":"22.376805555555556","赤纬(J2000)":"-4h7m15s","赤纬D(J2000)":"-4.120833333333333","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"33","详细描述":"faint, very small, a little extended","简略描述":"eF, pS, iR"},{"ID":"7261","标识":"NGC7261","M标识":"NGC7261","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1p","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"22h20m10s","赤经D(J2000)":"22.33611111111111","赤纬(J2000)":"+58h6m36s","赤纬D(J2000)":"58.11","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, large, pretty rich, a little compressed","简略描述":"Cl, L, pRi, lC"},{"ID":"7262","标识":"NGC7262","M标识":"NGC7262","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h23m28.4s","赤经D(J2000)":"22.391222222222222","赤纬(J2000)":"-32h21m53s","赤纬D(J2000)":"-32.36472222222223","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"96","详细描述":"extremely faint, small, round, a little brighter middle","简略描述":"eF, S, R, lbM"},{"ID":"7263","标识":"NGC7263","M标识":"NGC7263","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h21m45.2s","赤经D(J2000)":"22.362555555555556","赤纬(J2000)":"+36h20m59s","赤纬D(J2000)":"36.349722222222226","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"60","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"7264","标识":"NGC7264","M标识":"NGC7264","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h22m13.5s","赤经D(J2000)":"22.370416666666667","赤纬(J2000)":"+36h23m13s","赤纬D(J2000)":"36.386944444444445","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"0.3","方位角":"57","详细描述":"very faint, pretty small, much extended","简略描述":"vF, pS, mE"},{"ID":"7265","标识":"NGC7265","M标识":"NGC7265","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h22m27.5s","赤经D(J2000)":"22.374305555555555","赤纬(J2000)":"+36h12m37s","赤纬D(J2000)":"36.21027777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"13.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.4","短轴(分)":"1.9","方位角":"170","详细描述":"faint, very small, round, much brighter middle","简略描述":"F, vS, R, mbM"},{"ID":"7266","标识":"NGC7266","M标识":"NGC7266","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h23m59s","赤经D(J2000)":"22.399722222222223","赤纬(J2000)":"-4h4m23s","赤纬D(J2000)":"-4.073055555555555","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"95","详细描述":"faint, very small, round, almost stellar","简略描述":"F, vS, R, alm stellar"},{"ID":"7267","标识":"NGC7267","M标识":"NGC7267","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h24m21.5s","赤经D(J2000)":"22.40597222222222","赤纬(J2000)":"-33h41m36s","赤纬D(J2000)":"-33.69333333333333","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"6","详细描述":"considerably bright, pretty small, very little extended, gradually a little brighter middle, bright triple star to southwest","简略描述":"cB, pS, vlE, glbM, B *** sp"},{"ID":"7268","标识":"NGC7268","M标识":"NGC7268","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h25m40.6s","赤经D(J2000)":"22.427944444444446","赤纬(J2000)":"-31h12m4s","赤纬D(J2000)":"-31.20111111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"83","详细描述":"faint, considerably small, very little extended, western of 2","简略描述":"F, cS, vlE, p of 2"},{"ID":"7269","标识":"NGC7269","M标识":"NGC7269","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h25m46.8s","赤经D(J2000)":"22.42966666666667","赤纬(J2000)":"-13h10m1s","赤纬D(J2000)":"-13.166944444444443","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.7","方位角":"140","详细描述":"extremely faint, pretty small, round, gradually a little brighter middle","简略描述":"eF, pS, R, glbM"},{"ID":"7270","标识":"NGC7270","M标识":"NGC7270","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h23m47.5s","赤经D(J2000)":"22.396527777777777","赤纬(J2000)":"+32h24m11s","赤纬D(J2000)":"32.403055555555554","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"93","详细描述":"very faint, small, extended","简略描述":"vF, S, E"},{"ID":"7271","标识":"NGC7271","M标识":"NGC7271","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h23m57.5s","赤经D(J2000)":"22.399305555555554","赤纬(J2000)":"+32h22m3s","赤纬D(J2000)":"32.3675","可见光星等V":"15.6","摄影(蓝光)星等B":"16.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"117","详细描述":"very faint, small, very little extended","简略描述":"vF, S, vlE"},{"ID":"7272","标识":"NGC7272","M标识":"NGC7272","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h24m31.6s","赤经D(J2000)":"22.408777777777775","赤纬(J2000)":"+16h35m19s","赤纬D(J2000)":"16.58861111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"39","详细描述":"very faint, small, irregularly round","简略描述":"vF, S, iR"},{"ID":"7273","标识":"NGC7273","M标识":"NGC7273","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h24m9.1s","赤经D(J2000)":"22.402527777777777","赤纬(J2000)":"+36h12m1s","赤纬D(J2000)":"36.20027777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"3","详细描述":"faint, very small, round, much brighter middle","简略描述":"F, vS, R, mbM"},{"ID":"7274","标识":"NGC7274","M标识":"NGC7274","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h24m11s","赤经D(J2000)":"22.403055555555554","赤纬(J2000)":"+36h7m35s","赤纬D(J2000)":"36.12638888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"pretty faint, very small, much brighter middle","简略描述":"pF, vS, mbM"},{"ID":"7275","标识":"NGC7275","M标识":"NGC7275","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h24m17.3s","赤经D(J2000)":"22.404805555555555","赤纬(J2000)":"+32h26m49s","赤纬D(J2000)":"32.44694444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"37","详细描述":"extremely faint, small, much extended","简略描述":"eF, S, mE"},{"ID":"7276","标识":"NGC7276","M标识":"NGC7276","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h24m14.3s","赤经D(J2000)":"22.403972222222222","赤纬(J2000)":"+36h5m17s","赤纬D(J2000)":"36.088055555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, very small, much brighter middle","简略描述":"vF, vS, mbM"},{"ID":"7277","标识":"NGC7277","M标识":"NGC7277","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h26m10.9s","赤经D(J2000)":"22.43636111111111","赤纬(J2000)":"-31h8m45s","赤纬D(J2000)":"-31.145833333333332","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"125","详细描述":"faint, considerably small, very little extended, eastern of 2","简略描述":"F, cS, vlE, f of 2"},{"ID":"7278","标识":"NGC7278","M标识":"NGC7278","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h28m22.6s","赤经D(J2000)":"22.472944444444444","赤纬(J2000)":"-60h10m10s","赤纬D(J2000)":"-60.169444444444444","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"4","详细描述":"most extremely faint, a little extended, very gradually a very little brighter middle, 3 stars to southeast","简略描述":"eeF, lE, vgvlbM, 3 st sf"},{"ID":"7279","标识":"NGC7279","M标识":"NGC7279","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h27m12.6s","赤经D(J2000)":"22.4535","赤纬(J2000)":"-35h8m24s","赤纬D(J2000)":"-35.14","可见光星等V":"13.8","摄影(蓝光)星等B":"14.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"68","详细描述":"very faint, pretty small, round, very gradually a very little brighter middle","简略描述":"vF, pS, R, vgvlbM"},{"ID":"7280","标识":"NGC7280","M标识":"NGC7280","拓展名":"","组件":"","Class":"II 248","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h26m27.6s","赤经D(J2000)":"22.441","赤纬(J2000)":"+16h8m54s","赤纬D(J2000)":"16.148333333333333","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.1","短轴(分)":"1.5","方位角":"78","详细描述":"faint, considerably small, round, gradually brighter middle equivalent to a small (faint) star, 3 stars to north and northeast","简略描述":"F, cS, R, gbMS *, 3 st n, nf"},{"ID":"7281","标识":"NGC7281","M标识":"NGC7281","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV2p","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"22h24m55.7s","赤经D(J2000)":"22.41547222222222","赤纬(J2000)":"+57h50m25s","赤纬D(J2000)":"57.84027777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, large, pretty rich, a little compressed, stars from 10th to 16th magnitude","简略描述":"Cl, L, pRi, lC, st 10…16"},{"ID":"7282","标识":"NGC7282","M标识":"NGC7282","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h25m53.9s","赤经D(J2000)":"22.43163888888889","赤纬(J2000)":"+40h18m56s","赤纬D(J2000)":"40.315555555555555","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"2.5","短轴(分)":"1","方位角":"15","详细描述":"extremely faint, pretty large, diffuse, between 3 stars","简略描述":"eF, pL, dif, bet 3 st"},{"ID":"7283","标识":"NGC7283","M标识":"NGC7283","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h28m32.7s","赤经D(J2000)":"22.475749999999998","赤纬(J2000)":"+17h28m15s","赤纬D(J2000)":"17.47083333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"9","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"7284","标识":"NGC7284","M标识":"NGC7284","拓展名":"","组件":"","Class":"II 469","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h28m35.8s","赤经D(J2000)":"22.476611111111108","赤纬(J2000)":"-24h50m40s","赤纬D(J2000)":"-24.844444444444445","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.3","短轴(分)":"1.6","方位角":"133","详细描述":"considerably faint, considerably small, a little extended, mottled but not resolved, double star involved","简略描述":"cF, cS, lE, r, D * inv"},{"ID":"7285","标识":"NGC7285","M标识":"NGC7285","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h28m37.8s","赤经D(J2000)":"22.477166666666665","赤纬(J2000)":"-24h50m26s","赤纬D(J2000)":"-24.840555555555554","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.1","短轴(分)":"1.5","方位角":"100","详细描述":"considerably faint, considerably small, a little extended, mottled but not resolved, double star involved","简略描述":"Neb * 1' dist from h 3943"},{"ID":"7286","标识":"NGC7286","M标识":"NGC7286","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h27m50.5s","赤经D(J2000)":"22.464027777777776","赤纬(J2000)":"+29h5m48s","赤纬D(J2000)":"29.096666666666664","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"98","详细描述":"very faint, small, round, among stars","简略描述":"vF, S, R, am st"},{"ID":"7287","标识":"NGC7287","M标识":"NGC7287","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h28m32s","赤经D(J2000)":"22.475555555555555","赤纬(J2000)":"-22h8m0s","赤纬D(J2000)":"-22.133333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, slightly nebulous double star","简略描述":"eF, slightly nebs D *"},{"ID":"7288","标识":"NGC7288","M标识":"NGC7288","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h28m14.9s","赤经D(J2000)":"22.470805555555554","赤纬(J2000)":"-2h53m5s","赤纬D(J2000)":"-2.8847222222222224","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.3","短轴(分)":"1.5","方位角":"95","详细描述":"very faint, extremely small, stellar","简略描述":"vF, eS, stellar"},{"ID":"7289","标识":"NGC7289","M标识":"NGC7289","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h29m20.1s","赤经D(J2000)":"22.488916666666668","赤纬(J2000)":"-35h28m19s","赤纬D(J2000)":"-35.471944444444446","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"1","方位角":"165","详细描述":"very faint, small, round, gradually brighter middle","简略描述":"vF, S, R, gbM"},{"ID":"7290","标识":"NGC7290","M标识":"NGC7290","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h28m26.5s","赤经D(J2000)":"22.474027777777778","赤纬(J2000)":"+17h8m52s","赤纬D(J2000)":"17.147777777777776","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"1","方位角":"161","详细描述":"pretty bright, small, pretty much extended","简略描述":"pB, S, pmE"},{"ID":"7291","标识":"NGC7291","M标识":"NGC7291","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h28m29.4s","赤经D(J2000)":"22.474833333333333","赤纬(J2000)":"+16h47m1s","赤纬D(J2000)":"16.783611111111114","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.8","短轴(分)":"1.7","方位角":"54","详细描述":"extremely faint, extremely small, round, suddenly much brighter middle","简略描述":"eF, eS, R, smbM"},{"ID":"7292","标识":"NGC7292","M标识":"NGC7292","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h28m25.7s","赤经D(J2000)":"22.473805555555554","赤纬(J2000)":"+30h17m35s","赤纬D(J2000)":"30.293055555555558","可见光星等V":"12.5","摄影(蓝光)星等B":"13","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.1","短轴(分)":"1.6","方位角":"117","详细描述":"extremely faint, small, oval, faint star involved","简略描述":"eF, S, oval, F * inv"},{"ID":"7293","标识":"NGC7293","M标识":"NGC7293","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"螺旋星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h29m38.4s","赤经D(J2000)":"22.494","赤纬(J2000)":"-20h50m11s","赤纬D(J2000)":"-20.836388888888887","可见光星等V":"7.3","摄影(蓝光)星等B":"7.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"17.57","短轴(分)":"","方位角":"","详细描述":"a remarkable object, pretty faint, very large, extended or binuclear (Auwers 48)","简略描述":"! pF, vL, E or biN (Auw 48)"},{"ID":"7294","标识":"NGC7294","M标识":"NGC7294","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h32m7.8s","赤经D(J2000)":"22.535500000000003","赤纬(J2000)":"-25h23m53s","赤纬D(J2000)":"-25.398055555555555","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"1.2","方位角":"47","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"7295","标识":"NGC7295","M标识":"NGC7295","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"OCL","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h28m2s","赤经D(J2000)":"22.46722222222222","赤纬(J2000)":"+52h17m18s","赤纬D(J2000)":"52.288333333333334","可见光星等V":"99","摄影(蓝光)星等B":"9.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed, stars from 12th to 13th magnitude","简略描述":"Cl, P, lC, st 12…13"},{"ID":"7296","标识":"NGC7296","M标识":"NGC7296","拓展名":"","组件":"","Class":"VII 41","业余排名":"6","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h28m2s","赤经D(J2000)":"22.46722222222222","赤纬(J2000)":"+52h17m18s","赤纬D(J2000)":"52.288333333333334","可见光星等V":"99","摄影(蓝光)星等B":"9.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed, stars from 12th to 13th magnitude","简略描述":"Cl, iR, lC, st vS"},{"ID":"7297","标识":"NGC7297","M标识":"NGC7297","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h31m10.2s","赤经D(J2000)":"22.5195","赤纬(J2000)":"-37h49m37s","赤纬D(J2000)":"-37.82694444444445","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"130","详细描述":"extremely faint, small, round, western of 2","简略描述":"eF, S, R, p of 2"},{"ID":"7298","标识":"NGC7298","M标识":"NGC7298","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h30m50.6s","赤经D(J2000)":"22.514055555555554","赤纬(J2000)":"-14h11m19s","赤纬D(J2000)":"-14.188611111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"5","详细描述":"very faint, pretty large, irregularly round","简略描述":"vF, pL, iR"},{"ID":"7299","标识":"NGC7299","M标识":"NGC7299","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h31m33s","赤经D(J2000)":"22.52583333333333","赤纬(J2000)":"-37h48m35s","赤纬D(J2000)":"-37.80972222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, small, round, eastern of 2","简略描述":"eF, S, R, f of 2"},{"ID":"7300","标识":"NGC7300","M标识":"NGC7300","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h30m59.9s","赤经D(J2000)":"22.516638888888888","赤纬(J2000)":"-14h0m11s","赤纬D(J2000)":"-14.003055555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.1","短轴(分)":"1","方位角":"160","详细描述":"very faint, considerably small, extended, very gradually a little brighter middle","简略描述":"vF, cS, E, vglbM"},{"ID":"7301","标识":"NGC7301","M标识":"NGC7301","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h30m34.8s","赤经D(J2000)":"22.509666666666668","赤纬(J2000)":"-17h34m25s","赤纬D(J2000)":"-17.57361111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.5","方位角":"1","详细描述":"very faint, pretty small, a little extended, a little brighter middle","简略描述":"vF, pS, lE, lbM"},{"ID":"7302","标识":"NGC7302","M标识":"NGC7302","拓展名":"","组件":"","Class":"IV 31","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h32m23.9s","赤经D(J2000)":"22.539972222222225","赤纬(J2000)":"-14h7m15s","赤纬D(J2000)":"-14.120833333333334","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"97","详细描述":"faint, pretty small, round, very suddenly brighter middle and small nucleus","简略描述":"F, pS, R, vsbMSN"},{"ID":"7303","标识":"NGC7303","M标识":"NGC7303","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h31m33s","赤经D(J2000)":"22.52583333333333","赤纬(J2000)":"+30h57m24s","赤纬D(J2000)":"30.956666666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"125","详细描述":"very faint, small, round, gradually a very little brighter middle","简略描述":"vF, S, R, gvlbM"},{"ID":"7304","标识":"NGC7304","M标识":"NGC7304","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h31m44.4s","赤经D(J2000)":"22.529","赤纬(J2000)":"+30h58m49s","赤纬D(J2000)":"30.980277777777776","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, a very little brighter middle, northeast of h 2166(?)","简略描述":"vF, pS, vlbM, nf h 2216 (?)"},{"ID":"7305","标识":"NGC7305","M标识":"NGC7305","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h32m13.9s","赤经D(J2000)":"22.537194444444445","赤纬(J2000)":"+11h42m46s","赤纬D(J2000)":"11.712777777777777","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"15","详细描述":"extremely faint, small, round, 4 faint stars around","简略描述":"eF, S, R, 4 F st around"},{"ID":"7306","标识":"NGC7306","M标识":"NGC7306","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h33m16.4s","赤经D(J2000)":"22.554555555555556","赤纬(J2000)":"-27h14m45s","赤纬D(J2000)":"-27.245833333333334","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"0.7","方位角":"60","详细描述":"very faint, small, a little extended, 11th magnitude star to west","简略描述":"vF, S, lE, * 11 p"},{"ID":"7307","标识":"NGC7307","M标识":"NGC7307","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h33m52.4s","赤经D(J2000)":"22.564555555555557","赤纬(J2000)":"-40h56m5s","赤纬D(J2000)":"-40.93472222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"12.9","B-V":"0.3","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.4","短轴(分)":"1","方位角":"9","详细描述":"faint, pretty large, pretty much extended","简略描述":"F, pL, pmE"},{"ID":"7308","标识":"NGC7308","M标识":"NGC7308","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h34m32s","赤经D(J2000)":"22.575555555555557","赤纬(J2000)":"-12h56m1s","赤纬D(J2000)":"-12.93361111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"145","详细描述":"pretty bright, very small, round","简略描述":"pB, vS, R"},{"ID":"7309","标识":"NGC7309","M标识":"NGC7309","拓展名":"","组件":"","Class":"II 476","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h34m20.6s","赤经D(J2000)":"22.572388888888888","赤纬(J2000)":"-10h21m22s","赤纬D(J2000)":"-10.35611111111111","可见光星等V":"12.5","摄影(蓝光)星等B":"13","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2","短轴(分)":"1.7","方位角":"32","详细描述":"very faint, pretty large, round, gradually a little brighter middle, mottled but not resolved","简略描述":"vF, pL, R, glbM, r"},{"ID":"7310","标识":"NGC7310","M标识":"NGC7310","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h34m36.8s","赤经D(J2000)":"22.576888888888888","赤纬(J2000)":"-22h29m6s","赤纬D(J2000)":"-22.485","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"36","详细描述":"very faint, pretty small, round, brighter middle and nucleus","简略描述":"vF, pS, R, bMN"},{"ID":"7311","标识":"NGC7311","M标识":"NGC7311","拓展名":"","组件":"","Class":"II 428","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h34m6.7s","赤经D(J2000)":"22.568527777777778","赤纬(J2000)":"+5h34m12s","赤纬D(J2000)":"5.569999999999999","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"10","详细描述":"pretty faint, small, pretty suddenly brighter middle, mottled but not resolved","简略描述":"pF, S, R, psbM, r"},{"ID":"7312","标识":"NGC7312","M标识":"NGC7312","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h34m34.9s","赤经D(J2000)":"22.57636111111111","赤纬(J2000)":"+5h49m3s","赤纬D(J2000)":"5.8175","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"83","详细描述":"faint, small","简略描述":"F, S"},{"ID":"7313","标识":"NGC7313","M标识":"NGC7313","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h35m32.4s","赤经D(J2000)":"22.592333333333332","赤纬(J2000)":"-26h6m7s","赤纬D(J2000)":"-26.101944444444445","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"170","详细描述":"extremely faint, extended","简略描述":"eF, E"},{"ID":"7314","标识":"NGC7314","M标识":"NGC7314","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h35m45.9s","赤经D(J2000)":"22.596083333333333","赤纬(J2000)":"-26h3m1s","赤纬D(J2000)":"-26.05027777777778","可见光星等V":"11","摄影(蓝光)星等B":"11.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"4.6","短轴(分)":"2","方位角":"3","详细描述":"considerably faint, large, much extended 0°, a very little brighter middle","简略描述":"cF, L, mE 0°, vlbM"},{"ID":"7315","标识":"NGC7315","M标识":"NGC7315","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h35m31.6s","赤经D(J2000)":"22.59211111111111","赤纬(J2000)":"+34h48m14s","赤纬D(J2000)":"34.803888888888885","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.6","方位角":"","详细描述":"very faint, extremely small, round, brighter middle","简略描述":"vF, eS, R, bM"},{"ID":"7316","标识":"NGC7316","M标识":"NGC7316","拓展名":"","组件":"","Class":"III 180","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h35m56.2s","赤经D(J2000)":"22.59894444444444","赤纬(J2000)":"+20h19m20s","赤纬D(J2000)":"20.322222222222223","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"60","详细描述":"faint, small, round, 8th magnitude star to southwest","简略描述":"F, S, R, * 8 sp"},{"ID":"7317","标识":"NGC7317","M标识":"NGC7317","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"史蒂芬五重星系","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h35m51.9s","赤经D(J2000)":"22.597749999999998","赤纬(J2000)":"+33h56m43s","赤纬D(J2000)":"33.945277777777775","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"7318","标识":"NGC7318","M标识":"NGC7318","拓展名":"A","组件":"","Class":"","业余排名":"14","中文名":"史蒂芬五重星系","类型":"Gxy","含重复类型":"Gxy","形态":"E2\/P","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h35m56.7s","赤经D(J2000)":"22.599083333333333","赤纬(J2000)":"+33h57m58s","赤纬D(J2000)":"33.96611111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"1","方位角":"5","详细描述":"very faint, very small","简略描述":"eF, eS"},{"ID":"7319","标识":"NGC7319","M标识":"NGC7319","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"史蒂芬五重星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h36m3.5s","赤经D(J2000)":"22.600972222222225","赤纬(J2000)":"+33h58m35s","赤纬D(J2000)":"33.97638888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"52","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"7320","标识":"NGC7320","M标识":"NGC7320","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"史蒂芬五重星系","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h36m3.5s","赤经D(J2000)":"22.600972222222225","赤纬(J2000)":"+33h56m54s","赤纬D(J2000)":"33.94833333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.2","短轴(分)":"1.1","方位角":"132","详细描述":"faint, very small","简略描述":"F, vS"},{"ID":"7321","标识":"NGC7321","M标识":"NGC7321","拓展名":"","组件":"","Class":"III 237","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h36m27.9s","赤经D(J2000)":"22.607750000000003","赤纬(J2000)":"+21h37m19s","赤纬D(J2000)":"21.621944444444445","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"12","详细描述":"faint, small, irregularly round, very gradually a very little brighter middle","简略描述":"F, S, iR, vgvlbM"},{"ID":"7322","标识":"NGC7322","M标识":"NGC7322","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h37m51.4s","赤经D(J2000)":"22.630944444444445","赤纬(J2000)":"-37h13m53s","赤纬D(J2000)":"-37.231388888888894","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"114","详细描述":"very faint, small, very little extended, gradually brighter middle","简略描述":"vF, S, vlE, gbM"},{"ID":"7323","标识":"NGC7323","M标识":"NGC7323","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h36m53.5s","赤经D(J2000)":"22.61486111111111","赤纬(J2000)":"+19h8m40s","赤纬D(J2000)":"19.144444444444446","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"170","详细描述":"pretty faint, pretty large, irregularly round","简略描述":"pF, pL, iR"},{"ID":"7324","标识":"NGC7324","M标识":"NGC7324","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h37m1s","赤经D(J2000)":"22.616944444444446","赤纬(J2000)":"+19h8m48s","赤纬D(J2000)":"19.146666666666665","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.8","方位角":"168","详细描述":"very faint, very small, nebulous star","简略描述":"vF, vS, neb *"},{"ID":"7325","标识":"NGC7325","M标识":"NGC7325","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h36m48.6s","赤经D(J2000)":"22.613500000000002","赤纬(J2000)":"+34h22m2s","赤纬D(J2000)":"34.367222222222225","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, h 2172 to east","简略描述":"F, vS, h 2172 f"},{"ID":"7326","标识":"NGC7326","M标识":"NGC7326","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h36m52.1s","赤经D(J2000)":"22.614472222222222","赤纬(J2000)":"+34h25m25s","赤纬D(J2000)":"34.42361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, extremely small, h 2172 to east","简略描述":"cF, eS, h 2172 f"},{"ID":"7327","标识":"NGC7327","M标识":"NGC7327","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h37m24.6s","赤经D(J2000)":"22.6235","赤纬(J2000)":"+34h25m42s","赤纬D(J2000)":"34.42833333333333","可见光星等V":"99","摄影(蓝光)星等B":"12.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, northwest of h 2172","简略描述":"eF, eS, np h 2172"},{"ID":"7328","标识":"NGC7328","M标识":"NGC7328","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h37m29.2s","赤经D(J2000)":"22.62477777777778","赤纬(J2000)":"+10h31m54s","赤纬D(J2000)":"10.531666666666668","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"0.7","方位角":"88","详细描述":"extremely faint, pretty small, a little extended 90°, very gradually a little brighter middle","简略描述":"eF, pS, lE 90°, vglbM"},{"ID":"7329","标识":"NGC7329","M标识":"NGC7329","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h40m24.2s","赤经D(J2000)":"22.67338888888889","赤纬(J2000)":"-66h28m45s","赤纬D(J2000)":"-66.47916666666667","可见光星等V":"11.3","摄影(蓝光)星等B":"12.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.7","短轴(分)":"2.7","方位角":"107","详细描述":"pretty bright, pretty small, much extended 90°","简略描述":"pB, pS, mE 90°"},{"ID":"7330","标识":"NGC7330","M标识":"NGC7330","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h36m56.1s","赤经D(J2000)":"22.615583333333333","赤纬(J2000)":"+38h32m53s","赤纬D(J2000)":"38.54805555555556","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"pretty bright, small, a little extended, brighter middle","简略描述":"pB, S, lE, bM"},{"ID":"7331","标识":"NGC7331","M标识":"NGC7331","拓展名":"","组件":"","Class":"I 53","业余排名":"2","中文名":"鹿舔星系群","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h37m5.1s","赤经D(J2000)":"22.618083333333335","赤纬(J2000)":"+34h25m13s","赤纬D(J2000)":"34.42027777777778","可见光星等V":"9.5","摄影(蓝光)星等B":"10.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"10.2","短轴(分)":"4.2","方位角":"171","详细描述":"bright, pretty large, pretty much extended 163°, suddenly much brighter middle","简略描述":"B, pL, pmE 163°, smbM"},{"ID":"7332","标识":"NGC7332","M标识":"NGC7332","拓展名":"","组件":"","Class":"II 233","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h37m24.6s","赤经D(J2000)":"22.6235","赤纬(J2000)":"+23h47m53s","赤纬D(J2000)":"23.798055555555557","可见光星等V":"11.1","摄影(蓝光)星等B":"12","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"4.1","短轴(分)":"1.1","方位角":"155","详细描述":"considerably bright, small, much extended 156°, suddenly much brighter middle and nucleus, western of 2","简略描述":"cB, S, mE 156°, smbMN, p of 2"},{"ID":"7333","标识":"NGC7333","M标识":"NGC7333","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h37m11.7s","赤经D(J2000)":"22.61991666666667","赤纬(J2000)":"+34h26m15s","赤纬D(J2000)":"34.4375","可见光星等V":"99","摄影(蓝光)星等B":"14.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, west of h 2174","简略描述":"vF, vS, p h 2174"},{"ID":"7334","标识":"NGC7334","M标识":"NGC7334","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h37m51.4s","赤经D(J2000)":"22.630944444444445","赤纬(J2000)":"-37h13m53s","赤纬D(J2000)":"-37.231388888888894","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"114","详细描述":"very faint, small, very little extended, gradually brighter middle","简略描述":"eeF (? = G.C. 4812)"},{"ID":"7335","标识":"NGC7335","M标识":"NGC7335","拓展名":"","组件":"","Class":"III 166","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h37m19.5s","赤经D(J2000)":"22.622083333333332","赤纬(J2000)":"+34h26m54s","赤纬D(J2000)":"34.44833333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"151","详细描述":"very faint, very small, B of 3rd Lord Rosse","简略描述":"vF, vS (B of Ld R)"},{"ID":"7336","标识":"NGC7336","M标识":"NGC7336","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h37m21.9s","赤经D(J2000)":"22.62275","赤纬(J2000)":"+34h28m56s","赤纬D(J2000)":"34.48222222222223","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"139","详细描述":"extremely faint, very small, C","简略描述":"eF, vS (C)"},{"ID":"7337","标识":"NGC7337","M标识":"NGC7337","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h37m26.6s","赤经D(J2000)":"22.624055555555557","赤纬(J2000)":"+34h22m26s","赤纬D(J2000)":"34.37388888888889","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1","短轴(分)":"0.8","方位角":"177","详细描述":"extremely faint, small, stellar, E","简略描述":"eF, S, stellar (E)"},{"ID":"7338","标识":"NGC7338","M标识":"NGC7338","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h36m46.8s","赤经D(J2000)":"22.613000000000003","赤纬(J2000)":"+34h27m47s","赤纬D(J2000)":"34.463055555555556","可见光星等V":"99","摄影(蓝光)星等B":"12.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, southeast of h 2174","简略描述":"eF, eS, sf h 2174"},{"ID":"7339","标识":"NGC7339","M标识":"NGC7339","拓展名":"","组件":"","Class":"II 234","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h37m47s","赤经D(J2000)":"22.629722222222224","赤纬(J2000)":"+23h47m11s","赤纬D(J2000)":"23.78638888888889","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.8","短轴(分)":"0.7","方位角":"93","详细描述":"faint, pretty small, much extended 89°, very gradually a little brighter middle, eastern of 2","简略描述":"F, pS, mE 89°, vglbM, f of 2"},{"ID":"7340","标识":"NGC7340","M标识":"NGC7340","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h37m44.1s","赤经D(J2000)":"22.62891666666667","赤纬(J2000)":"+34h24m38s","赤纬D(J2000)":"34.410555555555554","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"162","详细描述":"very faint, very small, D of 3rd Lord Rosse","简略描述":"vF, vS, (D of Ld R)"},{"ID":"7341","标识":"NGC7341","M标识":"NGC7341","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h39m5.6s","赤经D(J2000)":"22.651555555555554","赤纬(J2000)":"-22h39m59s","赤纬D(J2000)":"-22.66638888888889","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.4","短轴(分)":"1","方位角":"94","详细描述":"pretty faint, pretty small, extended, a little brighter middle","简略描述":"pF, pS, E, lbM"},{"ID":"7342","标识":"NGC7342","M标识":"NGC7342","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h38m13.2s","赤经D(J2000)":"22.637","赤纬(J2000)":"+35h29m55s","赤纬D(J2000)":"35.49861111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7343","标识":"NGC7343","M标识":"NGC7343","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h38m37.8s","赤经D(J2000)":"22.643833333333333","赤纬(J2000)":"+34h4m18s","赤纬D(J2000)":"34.07166666666667","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.8","方位角":"160","详细描述":"extremely faint, very small, round, a little brighter middle, small (faint) star involved","简略描述":"eF, vS, R, lbM, S * inv"},{"ID":"7344","标识":"NGC7344","M标识":"NGC7344","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h39m36.1s","赤经D(J2000)":"22.660027777777778","赤纬(J2000)":"-4h9m32s","赤纬D(J2000)":"-4.158888888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"15","详细描述":"pretty faint, very small, round","简略描述":"pF, vS, R"},{"ID":"7345","标识":"NGC7345","M标识":"NGC7345","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h38m44.9s","赤经D(J2000)":"22.645805555555555","赤纬(J2000)":"+35h32m26s","赤纬D(J2000)":"35.54055555555556","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.2","短轴(分)":"0.2","方位角":"39","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7346","标识":"NGC7346","M标识":"NGC7346","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h39m35.4s","赤经D(J2000)":"22.65983333333333","赤纬(J2000)":"+11h5m2s","赤纬D(J2000)":"11.08388888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"48","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"7347","标识":"NGC7347","M标识":"NGC7347","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h39m56s","赤经D(J2000)":"22.665555555555553","赤纬(J2000)":"+11h1m40s","赤纬D(J2000)":"11.027777777777779","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.3","方位角":"133","详细描述":"extremely faint, pretty large, extended","简略描述":"eF, pL, E"},{"ID":"7348","标识":"NGC7348","M标识":"NGC7348","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h40m36.2s","赤经D(J2000)":"22.676722222222224","赤纬(J2000)":"+11h54m22s","赤纬D(J2000)":"11.90611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"12","详细描述":"very faint, pretty large, irregularly round","简略描述":"vF, pL, iR"},{"ID":"7349","标识":"NGC7349","M标识":"NGC7349","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h41m14.7s","赤经D(J2000)":"22.687416666666667","赤纬(J2000)":"-21h47m48s","赤纬D(J2000)":"-21.796666666666667","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.5","方位角":"166","详细描述":"extremely faint, very small, extended 175°, binuclear, brighter on north side","简略描述":"eF, vS, E 175°, biN, bn"},{"ID":"7350","标识":"NGC7350","M标识":"NGC7350","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h40m48.2s","赤经D(J2000)":"22.68005555555556","赤纬(J2000)":"+12h0m25s","赤纬D(J2000)":"12.006944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"7351","标识":"NGC7351","M标识":"NGC7351","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h41m26.9s","赤经D(J2000)":"22.690805555555556","赤纬(J2000)":"-4h26m39s","赤纬D(J2000)":"-4.444166666666667","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"1","方位角":"177","详细描述":"pretty faint, pretty small, round, brighter middle, mottled but not resolved","简略描述":"pF, pS, R, bM, r"},{"ID":"7352","标识":"NGC7352","M标识":"NGC7352","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"22h39m44.2s","赤经D(J2000)":"22.662277777777778","赤纬(J2000)":"+57h23m6s","赤纬D(J2000)":"57.385","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, pretty rich, very little compressed","简略描述":"Cl, vL, pRi, vlC"},{"ID":"7353","标识":"NGC7353","M标识":"NGC7353","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h42m12.5s","赤经D(J2000)":"22.70347222222222","赤纬(J2000)":"+11h52m38s","赤纬D(J2000)":"11.877222222222223","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"7354","标识":"NGC7354","M标识":"NGC7354","拓展名":"","组件":"","Class":"II 705","业余排名":"6.5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"22h40m20s","赤经D(J2000)":"22.672222222222224","赤纬(J2000)":"+61h17m10s","赤纬D(J2000)":"61.28611111111111","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"a planetary nebula, bright, small, round, pretty gradually a very little brighter middle","简略描述":"planetary, B, S, R, pgvlbM"},{"ID":"7355","标识":"NGC7355","M标识":"NGC7355","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h43m30.4s","赤经D(J2000)":"22.725111111111108","赤纬(J2000)":"-36h51m55s","赤纬D(J2000)":"-36.86527777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.4","方位角":"43","详细描述":"most extremely faint, small, round, double star 40 seconds of time to east","简略描述":"eeF, S, R, D * f 40s"},{"ID":"7356","标识":"NGC7356","M标识":"NGC7356","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h42m2.3s","赤经D(J2000)":"22.70063888888889","赤纬(J2000)":"+30h42m34s","赤纬D(J2000)":"30.709444444444443","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"76","详细描述":"extremely faint, pretty small, round, gradually a little brighter middle, star attached","简略描述":"eF, pS, R, glbM, * att"},{"ID":"7357","标识":"NGC7357","M标识":"NGC7357","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h42m23.9s","赤经D(J2000)":"22.70663888888889","赤纬(J2000)":"+30h10m19s","赤纬D(J2000)":"30.171944444444446","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"120","详细描述":"very faint, very small, very faint star involved","简略描述":"vF, vS, vF * inv"},{"ID":"7358","标识":"NGC7358","M标识":"NGC7358","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h45m36.3s","赤经D(J2000)":"22.760083333333334","赤纬(J2000)":"-65h7m18s","赤纬D(J2000)":"-65.12166666666666","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.9","短轴(分)":"0.5","方位角":"176","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"7359","标识":"NGC7359","M标识":"NGC7359","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h44m47.9s","赤经D(J2000)":"22.74663888888889","赤纬(J2000)":"-23h41m17s","赤纬D(J2000)":"-23.688055555555557","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.4","短轴(分)":"0.6","方位角":"55","详细描述":"pretty faint, very small, pretty much extended, brighter middle and nucleus","简略描述":"pF, vS, pmE, bMN"},{"ID":"7360","标识":"NGC7360","M标识":"NGC7360","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h43m34.1s","赤经D(J2000)":"22.726138888888887","赤纬(J2000)":"+4h9m7s","赤纬D(J2000)":"4.151944444444445","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"153","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7361","标识":"NGC7361","M标识":"NGC7361","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h42m17.9s","赤经D(J2000)":"22.70497222222222","赤纬(J2000)":"-30h3m27s","赤纬D(J2000)":"-30.0575","可见光星等V":"12.3","摄影(蓝光)星等B":"12.7","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.9","短轴(分)":"1","方位角":"4","详细描述":"faint, pretty large, very much extended 0°, very gradually a very little brighter middle","简略描述":"F, pL, vmE 0°, vgvlbM"},{"ID":"7362","标识":"NGC7362","M标识":"NGC7362","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h43m49.2s","赤经D(J2000)":"22.73033333333333","赤纬(J2000)":"+8h42m21s","赤纬D(J2000)":"8.705833333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"13.8","B-V":"1.2","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"175","详细描述":"very faint, small, round, a little brighter middle","简略描述":"vF, S, R, lbM"},{"ID":"7363","标识":"NGC7363","M标识":"NGC7363","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h43m18.5s","赤经D(J2000)":"22.721805555555555","赤纬(J2000)":"+33h59m55s","赤纬D(J2000)":"33.99861111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"91","详细描述":"pretty faint, pretty large, extended, double star to east","简略描述":"pF, pL, E, D * f"},{"ID":"7364","标识":"NGC7364","M标识":"NGC7364","拓展名":"","组件":"","Class":"II 442","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h44m24.2s","赤经D(J2000)":"22.740055555555557","赤纬(J2000)":"-0h9m45s","赤纬D(J2000)":"-0.1625","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"65","详细描述":"faint, small, round, pretty suddenly brighter middle","简略描述":"F, S, R, psbM"},{"ID":"7365","标识":"NGC7365","M标识":"NGC7365","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h45m10s","赤经D(J2000)":"22.752777777777776","赤纬(J2000)":"-19h57m6s","赤纬D(J2000)":"-19.951666666666664","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"1","方位角":"34","详细描述":"very faint, extremely small, round, gradually brighter middle and nucleus, 11th magnitude star 4' to northeast","简略描述":"vF, eS, R, gbMN, * 11 nf 4'"},{"ID":"7366","标识":"NGC7366","M标识":"NGC7366","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h44m26.6s","赤经D(J2000)":"22.740722222222225","赤纬(J2000)":"+10h46m55s","赤纬D(J2000)":"10.781944444444445","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, small, stellar","简略描述":"eF, S, stellar"},{"ID":"7367","标识":"NGC7367","M标识":"NGC7367","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h44m34.2s","赤经D(J2000)":"22.742833333333333","赤纬(J2000)":"+3h38m47s","赤纬D(J2000)":"3.6463888888888887","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"128","详细描述":"very faint, pretty small, a little extended","简略描述":"vF, pS, lE"},{"ID":"7368","标识":"NGC7368","M标识":"NGC7368","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h45m31.4s","赤经D(J2000)":"22.75872222222222","赤纬(J2000)":"-39h20m31s","赤纬D(J2000)":"-39.341944444444444","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.9","短轴(分)":"0.6","方位角":"130","详细描述":"faint, considerably small, a little extended, gradually a little brighter middle","简略描述":"F, cS, lE, glbM"},{"ID":"7369","标识":"NGC7369","M标识":"NGC7369","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h44m12.2s","赤经D(J2000)":"22.736722222222223","赤纬(J2000)":"+34h21m6s","赤纬D(J2000)":"34.35166666666667","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"26","详细描述":"pretty faint, between 2 faint stars","简略描述":"pF, bet 2 F st"},{"ID":"7370","标识":"NGC7370","M标识":"NGC7370","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h45m37.1s","赤经D(J2000)":"22.760305555555554","赤纬(J2000)":"+11h3m30s","赤纬D(J2000)":"11.058333333333334","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"132","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7371","标识":"NGC7371","M标识":"NGC7371","拓展名":"","组件":"","Class":"II 477","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h46m3.6s","赤经D(J2000)":"22.767666666666667","赤纬(J2000)":"-11h0m2s","赤纬D(J2000)":"-11.000555555555556","可见光星等V":"11.5","摄影(蓝光)星等B":"12.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2","短轴(分)":"2","方位角":"","详细描述":"very faint, pretty large, round, a little brighter middle","简略描述":"vF, pL, R, lbM"},{"ID":"7372","标识":"NGC7372","M标识":"NGC7372","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h45m46s","赤经D(J2000)":"22.762777777777778","赤纬(J2000)":"+11h7m53s","赤纬D(J2000)":"11.131388888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.9","方位角":"78","详细描述":"faint, small, irregularly round","简略描述":"F, S, iR"},{"ID":"7373","标识":"NGC7373","M标识":"NGC7373","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h46m19.4s","赤经D(J2000)":"22.772055555555553","赤纬(J2000)":"+3h12m36s","赤纬D(J2000)":"3.21","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"16","详细描述":"faint, very small, brighter middle, stellar","简略描述":"F, vS, bM, stellar"},{"ID":"7374","标识":"NGC7374","M标识":"NGC7374","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h46m1.1s","赤经D(J2000)":"22.766972222222222","赤纬(J2000)":"+10h51m13s","赤纬D(J2000)":"10.85361111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"93","详细描述":"very faint, pretty large, round","简略描述":"vF, pL, R"},{"ID":"7375","标识":"NGC7375","M标识":"NGC7375","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h46m32s","赤经D(J2000)":"22.775555555555556","赤纬(J2000)":"+21h5m3s","赤纬D(J2000)":"21.084166666666665","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"60","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"7376","标识":"NGC7376","M标识":"NGC7376","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h47m17.5s","赤经D(J2000)":"22.788194444444446","赤纬(J2000)":"+3h38m43s","赤纬D(J2000)":"3.645277777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"142","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"7377","标识":"NGC7377","M标识":"NGC7377","拓展名":"","组件":"","Class":"II 598","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h47m47.4s","赤经D(J2000)":"22.7965","赤纬(J2000)":"-22h18m41s","赤纬D(J2000)":"-22.31138888888889","可见光星等V":"11.1","摄影(蓝光)星等B":"12.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3","短轴(分)":"2.5","方位角":"101","详细描述":"pretty bright, small, very little extended, very gradually much brighter middle, 12th magnitude star to west","简略描述":"pB, S, vlE, vgmbM, * 12 p"},{"ID":"7378","标识":"NGC7378","M标识":"NGC7378","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h47m47.5s","赤经D(J2000)":"22.79652777777778","赤纬(J2000)":"-11h49m0s","赤纬D(J2000)":"-11.816666666666666","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"175","详细描述":"very faint, pretty large","简略描述":"vF, pL"},{"ID":"7379","标识":"NGC7379","M标识":"NGC7379","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h47m32.9s","赤经D(J2000)":"22.792472222222223","赤纬(J2000)":"+40h14m21s","赤纬D(J2000)":"40.23916666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"81","详细描述":"extremely faint, small, round, a little brighter middle","简略描述":"eF, S, R, lbM"},{"ID":"7380","标识":"NGC7380","M标识":"NGC7380","拓展名":"","组件":"","Class":"VIII 77","业余排名":"6","中文名":"巫师星云","类型":"OCL","含重复类型":"OCL","形态":"III3pn","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"22h47m21s","赤经D(J2000)":"22.789166666666667","赤纬(J2000)":"+58h7m54s","赤纬D(J2000)":"58.13166666666667","可见光星等V":"7.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty large, pretty rich, a little compressed, stars from 9th to 13th magnitude","简略描述":"Cl, pL, pRi, lC, st 9…13"},{"ID":"7381","标识":"NGC7381","M标识":"NGC7381","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h50m8.1s","赤经D(J2000)":"22.835583333333332","赤纬(J2000)":"-19h43m29s","赤纬D(J2000)":"-19.72472222222222","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"123","详细描述":"extremely faint, very small, round, gradually brighter middle","简略描述":"eF, vS, R, gbM"},{"ID":"7382","标识":"NGC7382","M标识":"NGC7382","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h50m23.8s","赤经D(J2000)":"22.839944444444445","赤纬(J2000)":"-36h51m25s","赤纬D(J2000)":"-36.856944444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"109","详细描述":"extremely faint, very small, round, 12th magnitude star attached on northwest","简略描述":"eF, vS, R, * 12 att np"},{"ID":"7383","标识":"NGC7383","M标识":"NGC7383","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h49m35.5s","赤经D(J2000)":"22.826527777777777","赤纬(J2000)":"+11h33m25s","赤纬D(J2000)":"11.556944444444445","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"174","详细描述":"very faint, very small, round, (WH) III 216 to northeast","简略描述":"vF, vS, R, III 216 nf"},{"ID":"7384","标识":"NGC7384","M标识":"NGC7384","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h49m42.5s","赤经D(J2000)":"22.82847222222222","赤纬(J2000)":"+11h29m17s","赤纬D(J2000)":"11.488055555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, 5' northeast of GC 4844","简略描述":"eF, 5' nf G.C. 4844"},{"ID":"7385","标识":"NGC7385","M标识":"NGC7385","拓展名":"","组件":"","Class":"III 216","业余排名":"14","中文名":"NGC 7385 星系群","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h49m54.6s","赤经D(J2000)":"22.831833333333332","赤纬(J2000)":"+11h36m29s","赤纬D(J2000)":"11.608055555555556","可见光星等V":"12","摄影(蓝光)星等B":"13.1","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"36","详细描述":"considerably faint, small, round, gradually a little brighter middle, 11th magnitude star to northwest","简略描述":"cF, S, R, glbM * 11 np"},{"ID":"7386","标识":"NGC7386","M标识":"NGC7386","拓展名":"","组件":"","Class":"III 217","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h50m2s","赤经D(J2000)":"22.833888888888886","赤纬(J2000)":"+11h41m53s","赤纬D(J2000)":"11.698055555555555","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"150","详细描述":"considerably faint, small, round, pretty gradually brighter middle, eastern of 2","简略描述":"cF, S, R, pgbM, f of 2"},{"ID":"7387","标识":"NGC7387","M标识":"NGC7387","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h50m17.6s","赤经D(J2000)":"22.83822222222222","赤纬(J2000)":"+11h38m14s","赤纬D(J2000)":"11.637222222222222","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"48","详细描述":"extremely faint, very small, round, two 11th magnitude stars to south","简略描述":"eF, vS, R, 2 st 11 s"},{"ID":"7388","标识":"NGC7388","M标识":"NGC7388","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h50m21s","赤经D(J2000)":"22.839166666666664","赤纬(J2000)":"+11h42m41s","赤纬D(J2000)":"11.711388888888887","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, 11th magnitude star 2.5 arcmin to east","简略描述":"vF, * 11 f 2'.5"},{"ID":"7389","标识":"NGC7389","M标识":"NGC7389","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h50m16s","赤经D(J2000)":"22.837777777777777","赤纬(J2000)":"+11h34m0s","赤纬D(J2000)":"11.566666666666666","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"144","详细描述":"very faint, round","简略描述":"vF, R"},{"ID":"7390","标识":"NGC7390","M标识":"NGC7390","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h50m19.5s","赤经D(J2000)":"22.838749999999997","赤纬(J2000)":"+11h31m52s","赤纬D(J2000)":"11.531111111111112","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.7","方位角":"177","详细描述":"extremely faint, south of GC 4848","简略描述":"eF, s of G.C. 4848"},{"ID":"7391","标识":"NGC7391","M标识":"NGC7391","拓展名":"","组件":"","Class":"II 443","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h50m36s","赤经D(J2000)":"22.843333333333334","赤纬(J2000)":"-1h32m41s","赤纬D(J2000)":"-1.544722222222222","可见光星等V":"11.9","摄影(蓝光)星等B":"13.1","B-V":"1.2","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"70","详细描述":"considerably faint, considerably small, round, suddenly brighter middle equal to a 13th magnitude star, star to the northwest","简略描述":"cF, cS, R, sbM * 13, * np"},{"ID":"7392","标识":"NGC7392","M标识":"NGC7392","拓展名":"","组件":"","Class":"II 702","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h51m48.6s","赤经D(J2000)":"22.863500000000002","赤纬(J2000)":"-20h36m31s","赤纬D(J2000)":"-20.608611111111113","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.2","短轴(分)":"1.4","方位角":"123","详细描述":"pretty bright, pretty small, a little extended 120°, much brighter middle","简略描述":"pB, pS, lE 120°, mbM"},{"ID":"7393","标识":"NGC7393","M标识":"NGC7393","拓展名":"","组件":"","Class":"II 453","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h51m38.2s","赤经D(J2000)":"22.860611111111112","赤纬(J2000)":"-5h33m26s","赤纬D(J2000)":"-5.557222222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"0.9","方位角":"88","详细描述":"very faint, pretty large, a little extended, very gradually brighter middle, mottled but not resolved","简略描述":"vF, pL, lE, vgbM, r"},{"ID":"7394","标识":"NGC7394","M标识":"NGC7394","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h50m12s","赤经D(J2000)":"22.836666666666666","赤纬(J2000)":"+52h10m8s","赤纬D(J2000)":"52.16888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"5","方位角":"","详细描述":"a cluster, very poor","简略描述":"Cl, vP"},{"ID":"7395","标识":"NGC7395","M标识":"NGC7395","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h51m2.8s","赤经D(J2000)":"22.85077777777778","赤纬(J2000)":"+37h5m18s","赤纬D(J2000)":"37.08833333333334","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"123","详细描述":"extremely faint, very small, round, brighter middle","简略描述":"eF, vS, R, bM"},{"ID":"7396","标识":"NGC7396","M标识":"NGC7396","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"22h52m22.6s","赤经D(J2000)":"22.872944444444446","赤纬(J2000)":"+1h5m32s","赤纬D(J2000)":"1.0922222222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.4","短轴(分)":"1.6","方位角":"103","详细描述":"pretty faint, pretty small, round, gradually brighter middle","简略描述":"pF, pS, R, gbM"},{"ID":"7397","标识":"NGC7397","M标识":"NGC7397","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"22h52m46.6s","赤经D(J2000)":"22.87961111111111","赤纬(J2000)":"+1h7m57s","赤纬D(J2000)":"1.1325","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"159","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7398","标识":"NGC7398","M标识":"NGC7398","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"22h52m49.2s","赤经D(J2000)":"22.880333333333333","赤纬(J2000)":"+1h12m6s","赤纬D(J2000)":"1.2016666666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"75","详细描述":"very faint, pretty large","简略描述":"vF, pL"},{"ID":"7399","标识":"NGC7399","M标识":"NGC7399","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h52m39.3s","赤经D(J2000)":"22.877583333333334","赤纬(J2000)":"-9h16m3s","赤纬D(J2000)":"-9.2675","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"150","详细描述":"extremely faint, pretty large","简略描述":"eF, pL"},{"ID":"7400","标识":"NGC7400","M标识":"NGC7400","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h54m20.8s","赤经D(J2000)":"22.905777777777775","赤纬(J2000)":"-45h20m50s","赤纬D(J2000)":"-45.34722222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.7","短轴(分)":"0.5","方位角":"2","详细描述":"pretty faint, a little extended, gradually a little brighter middle, very small (faint) star involved","简略描述":"pF, lE, glbM, vS * inv"},{"ID":"7401","标识":"NGC7401","M标识":"NGC7401","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"22h52m58.5s","赤经D(J2000)":"22.882916666666667","赤纬(J2000)":"+1h8m33s","赤纬D(J2000)":"1.1425","可见光星等V":"14.9","摄影(蓝光)星等B":"15.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1","短轴(分)":"0.6","方位角":"84","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7402","标识":"NGC7402","M标识":"NGC7402","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"22h53m4.4s","赤经D(J2000)":"22.884555555555554","赤纬(J2000)":"+1h8m42s","赤纬D(J2000)":"1.145","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"50","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7403","标识":"NGC7403","M标识":"NGC7403","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"22h53m6.3s","赤经D(J2000)":"22.885083333333334","赤纬(J2000)":"+1h28m56s","赤纬D(J2000)":"1.4822222222222223","可见光星等V":"99","摄影(蓝光)星等B":"13.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a slightly nebulous star","简略描述":"* slightly nebulous"},{"ID":"7404","标识":"NGC7404","M标识":"NGC7404","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h54m18.6s","赤经D(J2000)":"22.905166666666666","赤纬(J2000)":"-39h18m53s","赤纬D(J2000)":"-39.31472222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"2","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"7405","标识":"NGC7405","M标识":"NGC7405","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h53m36s","赤经D(J2000)":"22.893333333333334","赤纬(J2000)":"+12h28m36s","赤纬D(J2000)":"12.476666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"7406","标识":"NGC7406","M标识":"NGC7406","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h53m56.4s","赤经D(J2000)":"22.899","赤纬(J2000)":"-6h34m44s","赤纬D(J2000)":"-6.578888888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"75","详细描述":"faint, small, a little extended","简略描述":"F, S, lE"},{"ID":"7407","标识":"NGC7407","M标识":"NGC7407","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h53m21s","赤经D(J2000)":"22.889166666666664","赤纬(J2000)":"+32h7m47s","赤纬D(J2000)":"32.12972222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2","短轴(分)":"0.9","方位角":"152","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7408","标识":"NGC7408","M标识":"NGC7408","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h55m56.7s","赤经D(J2000)":"22.93241666666667","赤纬(J2000)":"-63h41m43s","赤纬D(J2000)":"-63.695277777777775","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"167","详细描述":"pretty bright, pretty small, round, very gradually a little brighter middle","简略描述":"pB, pS, R, vglbM"},{"ID":"7409","标识":"NGC7409","M标识":"NGC7409","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h53m48s","赤经D(J2000)":"22.896666666666665","赤纬(J2000)":"+20h12m39s","赤纬D(J2000)":"20.210833333333333","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"162","详细描述":"extremely faint","简略描述":"eF"},{"ID":"7410","标识":"NGC7410","M标识":"NGC7410","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h55m0.6s","赤经D(J2000)":"22.916833333333333","赤纬(J2000)":"-39h39m44s","赤纬D(J2000)":"-39.66222222222222","可见光星等V":"10.3","摄影(蓝光)星等B":"11.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"5.2","短轴(分)":"1.6","方位角":"45","详细描述":"considerably bright, large, very much extended 43°, much brighter middle","简略描述":"cB, L, vmE 43°, mbM"},{"ID":"7411","标识":"NGC7411","M标识":"NGC7411","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h54m34.8s","赤经D(J2000)":"22.909666666666666","赤纬(J2000)":"+20h14m12s","赤纬D(J2000)":"20.236666666666668","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"7412","标识":"NGC7412","M标识":"NGC7412","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h55m46.1s","赤经D(J2000)":"22.929472222222223","赤纬(J2000)":"-42h38m29s","赤纬D(J2000)":"-42.64138888888889","可见光星等V":"11.4","摄影(蓝光)星等B":"11.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3.8","短轴(分)":"2.8","方位角":"75","详细描述":"extremely faint, very large, 7th magnitude star to northeast","简略描述":"eF, vL, * 7 nf"},{"ID":"7413","标识":"NGC7413","M标识":"NGC7413","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h55m3s","赤经D(J2000)":"22.9175","赤纬(J2000)":"+13h13m16s","赤纬D(J2000)":"13.221111111111112","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"81","详细描述":"most extremely faint, pretty small, round, very difficult, southern of 2","简略描述":"eeF, pS, R, v diffic, s of 2"},{"ID":"7414","标识":"NGC7414","M标识":"NGC7414","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h55m24.3s","赤经D(J2000)":"22.923416666666668","赤纬(J2000)":"+13h14m56s","赤纬D(J2000)":"13.248888888888889","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"174","详细描述":"most extremely faint, small, round, very difficult, northern of 2","简略描述":"eeF, S, R, v diffic, n of 2"},{"ID":"7415","标识":"NGC7415","M标识":"NGC7415","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h54m51.7s","赤经D(J2000)":"22.91436111111111","赤纬(J2000)":"+20h15m44s","赤纬D(J2000)":"20.26222222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"128","详细描述":"extremely faint","简略描述":"eF"},{"ID":"7416","标识":"NGC7416","M标识":"NGC7416","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h55m41.6s","赤经D(J2000)":"22.928222222222225","赤纬(J2000)":"-5h29m42s","赤纬D(J2000)":"-5.495","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.2","短轴(分)":"0.7","方位角":"115","详细描述":"faint, pretty large, pretty much extended, very gradually brighter middle","简略描述":"F, pL, pmE, vgbM"},{"ID":"7417","标识":"NGC7417","M标识":"NGC7417","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h57m49.1s","赤经D(J2000)":"22.963638888888887","赤纬(J2000)":"-65h2m18s","赤纬D(J2000)":"-65.03833333333333","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.4","短轴(分)":"1.6","方位角":"2","详细描述":"pretty bright, considerably small, round, gradually pretty much brighter middle","简略描述":"pB, cS, R, gpmbM"},{"ID":"7418","标识":"NGC7418","M标识":"NGC7418","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h56m35.9s","赤经D(J2000)":"22.943305555555554","赤纬(J2000)":"-37h1m44s","赤纬D(J2000)":"-37.028888888888886","可见光星等V":"11.1","摄影(蓝光)星等B":"11.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.5","短轴(分)":"2.6","方位角":"139","详细描述":"considerably bright, very large, very little extended, very gradually a little brighter middle","简略描述":"cB, vL, vlE, vglbM"},{"ID":"7419","标识":"NGC7419","M标识":"NGC7419","拓展名":"","组件":"","Class":"VII 43","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3r","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"22h54m20s","赤经D(J2000)":"22.905555555555555","赤纬(J2000)":"+60h48m56s","赤纬D(J2000)":"60.815555555555555","可见光星等V":"13","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, considerably compressed","简略描述":"Cl, pRi, cC"},{"ID":"7420","标识":"NGC7420","M标识":"NGC7420","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h55m32s","赤经D(J2000)":"22.925555555555558","赤纬(J2000)":"+29h48m20s","赤纬D(J2000)":"29.805555555555557","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"45","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"7421","标识":"NGC7421","M标识":"NGC7421","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h56m54.6s","赤经D(J2000)":"22.9485","赤纬(J2000)":"-37h20m42s","赤纬D(J2000)":"-37.345","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2","短轴(分)":"1.9","方位角":"78","详细描述":"considerably bright, large, very little extended, gradually pretty much brighter middle, partially resolved (some stars seen)","简略描述":"cB, L, vlE, gpmbM, rr"},{"ID":"7422","标识":"NGC7422","M标识":"NGC7422","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"22h56m12.3s","赤经D(J2000)":"22.93675","赤纬(J2000)":"+3h55m37s","赤纬D(J2000)":"3.926944444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.8","方位角":"140","详细描述":"very faint, pretty small, very little extended","简略描述":"vF, pS, vlE"},{"ID":"7423","标识":"NGC7423","M标识":"NGC7423","拓展名":"","组件":"","Class":"III 745","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"22h55m6.5s","赤经D(J2000)":"22.918472222222224","赤纬(J2000)":"+57h5m41s","赤纬D(J2000)":"57.094722222222224","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, irregular figure, extremely mottled but not resolved","简略描述":"vF, pL, iF, er"},{"ID":"7424","标识":"NGC7424","M标识":"NGC7424","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"大设计星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h57m18.4s","赤经D(J2000)":"22.955111111111112","赤纬(J2000)":"-41h4m15s","赤纬D(J2000)":"-41.07083333333334","可见光星等V":"10.5","摄影(蓝光)星等B":"11","B-V":"0.5","表面亮度(mag\/arcmin2)":"15","长轴(分)":"9.5","短轴(分)":"8.1","方位角":"101","详细描述":"faint, considerably large, very little extended, very gradually much brighter middle","简略描述":"F, cL, vlE, vgmbM"},{"ID":"7425","标识":"NGC7425","M标识":"NGC7425","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h57m15.6s","赤经D(J2000)":"22.954333333333334","赤纬(J2000)":"-10h57m0s","赤纬D(J2000)":"-10.95","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"60","详细描述":"extremely faint, very little extended, 10th magnitude star 4' to west","简略描述":"eF, vlE, * 10 p 4'"},{"ID":"7426","标识":"NGC7426","M标识":"NGC7426","拓展名":"","组件":"","Class":"III 576","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h56m3s","赤经D(J2000)":"22.934166666666666","赤纬(J2000)":"+36h21m44s","赤纬D(J2000)":"36.36222222222222","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"72","详细描述":"very faint, considerably small, round, stellar, double star to west","简略描述":"vF, cS, R, stellar, D * p"},{"ID":"7427","标识":"NGC7427","M标识":"NGC7427","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h57m9.8s","赤经D(J2000)":"22.95272222222222","赤纬(J2000)":"+8h30m22s","赤纬D(J2000)":"8.50611111111111","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, 9th magnitude star 4' to southeast","简略描述":"F, S, * 9 sf 4'"},{"ID":"7428","标识":"NGC7428","M标识":"NGC7428","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"22h57m19.5s","赤经D(J2000)":"22.955416666666665","赤纬(J2000)":"-1h2m57s","赤纬D(J2000)":"-1.0491666666666668","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.4","短轴(分)":"1.4","方位角":"160","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"7429","标识":"NGC7429","M标识":"NGC7429","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"22h56m0s","赤经D(J2000)":"22.933333333333334","赤纬(J2000)":"+59h58m24s","赤纬D(J2000)":"59.973333333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, pretty compressed, stars from 9th to 11th magnitude","简略描述":"Cl, P, pC, st 9…11"},{"ID":"7430","标识":"NGC7430","M标识":"NGC7430","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h57m29.7s","赤经D(J2000)":"22.95825","赤纬(J2000)":"+8h47m40s","赤纬D(J2000)":"8.794444444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"60","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7431","标识":"NGC7431","M标识":"NGC7431","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C+*?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h57m38.8s","赤经D(J2000)":"22.96077777777778","赤纬(J2000)":"+26h9m52s","赤纬D(J2000)":"26.16444444444444","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"95","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7432","标识":"NGC7432","M标识":"NGC7432","拓展名":"","组件":"","Class":"III 465","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h58m2.2s","赤经D(J2000)":"22.967277777777777","赤纬(J2000)":"+13h8m4s","赤纬D(J2000)":"13.134444444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"40","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"7433","标识":"NGC7433","M标识":"NGC7433","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h57m51.7s","赤经D(J2000)":"22.96436111111111","赤纬(J2000)":"+26h9m44s","赤纬D(J2000)":"26.16222222222222","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"45","详细描述":"extremely faint, very small, west of h 2195","简略描述":"eF, vS, p h 2195"},{"ID":"7434","标识":"NGC7434","M标识":"NGC7434","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"22h58m21.4s","赤经D(J2000)":"22.97261111111111","赤纬(J2000)":"-1h11m0s","赤纬D(J2000)":"-1.1833333333333333","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"62","详细描述":"very faint, very small, round, stellar","简略描述":"vF, vS, R, stellar"},{"ID":"7435","标识":"NGC7435","M标识":"NGC7435","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h57m54.4s","赤经D(J2000)":"22.96511111111111","赤纬(J2000)":"+26h8m20s","赤纬D(J2000)":"26.13888888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"120","详细描述":"extremely faint, south of h 2195","简略描述":"eF, s of h 2195"},{"ID":"7436","标识":"NGC7436","M标识":"NGC7436","拓展名":"","组件":"","Class":"III 243","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h57m56.2s","赤经D(J2000)":"22.96561111111111","赤纬(J2000)":"+26h8m59s","赤纬D(J2000)":"26.149722222222223","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2","短轴(分)":"2","方位角":"","详细描述":"faint, pretty small, faint star attached on west, gradually brighter middle","简略描述":"F, pS, F * att p, gbM"},{"ID":"7437","标识":"NGC7437","M标识":"NGC7437","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h58m10.1s","赤经D(J2000)":"22.96947222222222","赤纬(J2000)":"+14h18m31s","赤纬D(J2000)":"14.308611111111112","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.8","短轴(分)":"1.8","方位角":"","详细描述":"most extremely faint, large, round, faint star near on northeast, very difficult","简略描述":"eeF, L, R, F * nr nf, v diffic"},{"ID":"7438","标识":"NGC7438","M标识":"NGC7438","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"22h57m20s","赤经D(J2000)":"22.955555555555556","赤纬(J2000)":"+54h18m38s","赤纬D(J2000)":"54.31055555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, extended","简略描述":"Cl, vL, E"},{"ID":"7439","标识":"NGC7439","M标识":"NGC7439","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h58m9.9s","赤经D(J2000)":"22.969416666666664","赤纬(J2000)":"+29h13m44s","赤纬D(J2000)":"29.228888888888886","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.6","方位角":"150","详细描述":"a long patch of faint nebulosity","简略描述":"Long patch of F neby"},{"ID":"7440","标识":"NGC7440","M标识":"NGC7440","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"22h58m32.5s","赤经D(J2000)":"22.975694444444443","赤纬(J2000)":"+35h48m11s","赤纬D(J2000)":"35.80305555555555","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"84","详细描述":"extremely faint, small, irregularly round","简略描述":"eF, s, iR"},{"ID":"7441","标识":"NGC7441","M标识":"NGC7441","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h56m41.4s","赤经D(J2000)":"22.944833333333335","赤纬(J2000)":"-7h22m47s","赤纬D(J2000)":"-7.379722222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"144","详细描述":"very faint, pretty small, irregularly round, 10th magnitude star to west, PD ?","简略描述":"vF, pS, iR, * 10 p (? PD)"},{"ID":"7442","标识":"NGC7442","M标识":"NGC7442","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h59m26.6s","赤经D(J2000)":"22.990722222222225","赤纬(J2000)":"+15h32m54s","赤纬D(J2000)":"15.548333333333334","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"pretty faint, round, between two 16th magnitude stars, 13th magnitude star to northeast","简略描述":"pF, R, bet 2 st 16, * 13 nf"},{"ID":"7443","标识":"NGC7443","M标识":"NGC7443","拓展名":"","组件":"","Class":"II 450","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h0m8.7s","赤经D(J2000)":"23.002416666666665","赤纬(J2000)":"-12h48m28s","赤纬D(J2000)":"-12.807777777777778","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"36","详细描述":"faint, very small, very little extended, suddenly much brighter middle, extremely mottled but not resolved, northern of 2","简略描述":"F, vS, vlE, smbM, er, n of 2"},{"ID":"7444","标识":"NGC7444","M标识":"NGC7444","拓展名":"","组件":"","Class":"II 451","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h0m8.8s","赤经D(J2000)":"23.002444444444443","赤纬(J2000)":"-12h50m3s","赤纬D(J2000)":"-12.834166666666667","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"0.6","方位角":"1","详细描述":"faint, very small, very little extended, suddenly much brighter middle, extremely mottled but not resolved, southern of 2","简略描述":"F, vS, vlE, smbM, er, s of 2"},{"ID":"7445","标识":"NGC7445","M标识":"NGC7445","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"22h59m22.4s","赤经D(J2000)":"22.989555555555558","赤纬(J2000)":"+39h6m29s","赤纬D(J2000)":"39.10805555555556","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"88","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7446","标识":"NGC7446","M标识":"NGC7446","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"22h59m28.9s","赤经D(J2000)":"22.99136111111111","赤纬(J2000)":"+39h5m0s","赤纬D(J2000)":"39.083333333333336","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, very small, round, mottled but not resolved","简略描述":"eF, vS, R, r"},{"ID":"7447","标识":"NGC7447","M标识":"NGC7447","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h0m26s","赤经D(J2000)":"23.00722222222222","赤纬(J2000)":"-10h31m39s","赤纬D(J2000)":"-10.527500000000002","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"an 11th or 12th magnitude star in a nebula (Auwers 49)","简略描述":"* 11·12 in neb (Auw 49)"},{"ID":"7448","标识":"NGC7448","M标识":"NGC7448","拓展名":"","组件":"","Class":"II 251","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h0m3.6s","赤经D(J2000)":"23.001","赤纬(J2000)":"+15h58m48s","赤纬D(J2000)":"15.98","可见光星等V":"11.7","摄影(蓝光)星等B":"12.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.6","短轴(分)":"1.2","方位角":"170","详细描述":"pretty bright, large, extended 173, very gradually brighter middle, 11th magnitude star 2.5 arcmin to east","简略描述":"pB, L, E 173°, vgbM, * 11 f 2'.5"},{"ID":"7449","标识":"NGC7449","M标识":"NGC7449","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"22h59m37.6s","赤经D(J2000)":"22.99377777777778","赤纬(J2000)":"+39h8m45s","赤纬D(J2000)":"39.145833333333336","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.7","方位角":"130","详细描述":"very faint, small, round, very small (faint) star in center","简略描述":"vF, S, R, vS * in centre"},{"ID":"7450","标识":"NGC7450","M标识":"NGC7450","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h0m47.7s","赤经D(J2000)":"23.01325","赤纬(J2000)":"-12h55m4s","赤纬D(J2000)":"-12.917777777777777","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.8","短轴(分)":"1.8","方位角":"","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"7451","标识":"NGC7451","M标识":"NGC7451","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h0m40.6s","赤经D(J2000)":"23.011277777777778","赤纬(J2000)":"+8h28m3s","赤纬D(J2000)":"8.4675","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.5","方位角":"67","详细描述":"pretty faint, pretty large, 10th or 11th magnitude star 2 arcmin to southwest","简略描述":"pF, pL, * 10·11 sp 2'"},{"ID":"7452","标识":"NGC7452","M标识":"NGC7452","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h0m47.5s","赤经D(J2000)":"23.013194444444444","赤纬(J2000)":"+6h44m45s","赤纬D(J2000)":"6.745833333333334","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"30","详细描述":"most extremely faint, pretty large, round, very difficult","简略描述":"eeF, pL, R, v diffic"},{"ID":"7453","标识":"NGC7453","M标识":"NGC7453","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h1m25.6s","赤经D(J2000)":"23.023777777777777","赤纬(J2000)":"-6h21m14s","赤纬D(J2000)":"-6.353888888888888","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.3","短轴(分)":"","方位角":"","详细描述":"bright, very small, 11th magnitude star close on northwest","简略描述":"B, vS, * 11 close np"},{"ID":"7454","标识":"NGC7454","M标识":"NGC7454","拓展名":"","组件":"","Class":"II 249","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h1m6.6s","赤经D(J2000)":"23.0185","赤纬(J2000)":"+16h23m21s","赤纬D(J2000)":"16.389166666666664","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"1.6","方位角":"150","详细描述":"faint, considerably small, a little extended, a little brighter middle, 11th magnitude star 1 arcmin to west","简略描述":"F, cS, lE, lbM, * 11 p 1'"},{"ID":"7455","标识":"NGC7455","M标识":"NGC7455","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h0m40.9s","赤经D(J2000)":"23.01136111111111","赤纬(J2000)":"+7h18m12s","赤纬D(J2000)":"7.303333333333333","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"174","详细描述":"extremely faint, pretty small, considerably extended, faint star close to west","简略描述":"eF, pS, cE, F * close p"},{"ID":"7456","标识":"NGC7456","M标识":"NGC7456","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"23h2m10.1s","赤经D(J2000)":"23.03613888888889","赤纬(J2000)":"-39h34m9s","赤纬D(J2000)":"-39.56916666666667","可见光星等V":"11.8","摄影(蓝光)星等B":"12.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"5.5","短轴(分)":"1.6","方位角":"23","详细描述":"very faint, large, much extended 34°, very gradually a little brighter middle","简略描述":"vF, L, mE 34°, vglbM"},{"ID":"7457","标识":"NGC7457","M标识":"NGC7457","拓展名":"","组件":"","Class":"II 212","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h0m59.8s","赤经D(J2000)":"23.01661111111111","赤纬(J2000)":"+30h8m41s","赤纬D(J2000)":"30.14472222222222","可见光星等V":"11.2","摄影(蓝光)星等B":"12.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"4.3","短轴(分)":"2.3","方位角":"130","详细描述":"considerably bright, considerably large, a little extended, gradually much brighter middle, mottled but not resolved, 2 small (faint) stars to north","简略描述":"cB, cL, lE, gmbM, r, 2 S st n"},{"ID":"7458","标识":"NGC7458","M标识":"NGC7458","拓展名":"","组件":"","Class":"II 590","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h1m28.5s","赤经D(J2000)":"23.024583333333332","赤纬(J2000)":"+1h45m12s","赤纬D(J2000)":"1.7533333333333334","可见光星等V":"12.5","摄影(蓝光)星等B":"13.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"15","详细描述":"considerably faint, considerably small, pretty suddenly brighter middle","简略描述":"cF, cS, psbM"},{"ID":"7459","标识":"NGC7459","M标识":"NGC7459","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h0m59.6s","赤经D(J2000)":"23.016555555555556","赤纬(J2000)":"+6h44m58s","赤纬D(J2000)":"6.749444444444444","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"most extremely faint, pretty large, round, star near","简略描述":"eeF, pL, R, * nr"},{"ID":"7460","标识":"NGC7460","M标识":"NGC7460","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h1m42.7s","赤经D(J2000)":"23.02852777777778","赤纬(J2000)":"+2h15m49s","赤纬D(J2000)":"2.263611111111111","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"37","详细描述":"extremely faint, pretty large, round","简略描述":"eF, pL, R"},{"ID":"7461","标识":"NGC7461","M标识":"NGC7461","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h1m48.1s","赤经D(J2000)":"23.030027777777775","赤纬(J2000)":"+15h34m57s","赤纬D(J2000)":"15.5825","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"150","详细描述":"very faint, very small, almost stellar","简略描述":"vF, vS, alm stellar"},{"ID":"7462","标识":"NGC7462","M标识":"NGC7462","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"23h2m46.2s","赤经D(J2000)":"23.046166666666668","赤纬(J2000)":"-40h50m8s","赤纬D(J2000)":"-40.83555555555556","可见光星等V":"11.4","摄影(蓝光)星等B":"12.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"4.3","短轴(分)":"0.8","方位角":"75","详细描述":"considerably faint, pretty small, very much extended 5°±, 11th magnitude star to northwest","简略描述":"cF, pS, vmE 5° ±, * 11 np"},{"ID":"7463","标识":"NGC7463","M标识":"NGC7463","拓展名":"","组件":"","Class":"III 210","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h1m51.8s","赤经D(J2000)":"23.031055555555554","赤纬(J2000)":"+15h58m55s","赤纬D(J2000)":"15.981944444444444","可见光星等V":"13.2","摄影(蓝光)星等B":"13.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.6","短轴(分)":"0.6","方位角":"90","详细描述":"very faint, small, a little extended, western of 2","简略描述":"vF, S, lE, p of 2"},{"ID":"7464","标识":"NGC7464","M标识":"NGC7464","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h1m53.8s","赤经D(J2000)":"23.03161111111111","赤纬(J2000)":"+15h58m28s","赤纬D(J2000)":"15.974444444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, very small, extended, southeast of h 2202","简略描述":"vF, vS, E, sf h 2202"},{"ID":"7465","标识":"NGC7465","M标识":"NGC7465","拓展名":"","组件":"","Class":"III 211","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h2m0.9s","赤经D(J2000)":"23.033583333333336","赤纬(J2000)":"+15h57m55s","赤纬D(J2000)":"15.965277777777777","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2.2","短轴(分)":"1.8","方位角":"42","详细描述":"very faint, very small, eastern of 2","简略描述":"vF, vS, f of 2"},{"ID":"7466","标识":"NGC7466","M标识":"NGC7466","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h2m3.4s","赤经D(J2000)":"23.03427777777778","赤纬(J2000)":"+27h3m11s","赤纬D(J2000)":"27.053055555555556","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"26","详细描述":"extremely faint, extremely small, brighter middle","简略描述":"eF, eS, bM"},{"ID":"7467","标识":"NGC7467","M标识":"NGC7467","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h2m27.4s","赤经D(J2000)":"23.040944444444445","赤纬(J2000)":"+15h33m17s","赤纬D(J2000)":"15.554722222222223","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"33","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7468","标识":"NGC7468","M标识":"NGC7468","拓展名":"","组件":"","Class":"III 202","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1\/P","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h2m59.2s","赤经D(J2000)":"23.04977777777778","赤纬(J2000)":"+16h36m16s","赤纬D(J2000)":"16.604444444444447","可见光星等V":"13.7","摄影(蓝光)星等B":"14.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"25","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7469","标识":"NGC7469","M标识":"NGC7469","拓展名":"","组件":"","Class":"III 230","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h3m15.5s","赤经D(J2000)":"23.054305555555555","赤纬(J2000)":"+8h52m26s","赤纬D(J2000)":"8.873888888888889","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"1","方位角":"125","详细描述":"very faint, very small, very suddenly much brighter middle equal to a 12th magnitude star","简略描述":"vF, vS, vsmbM * 12"},{"ID":"7470","标识":"NGC7470","M标识":"NGC7470","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"23h5m13.9s","赤经D(J2000)":"23.087194444444442","赤纬(J2000)":"-50h6m42s","赤纬D(J2000)":"-50.111666666666665","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"84","详细描述":"extremely faint, pretty large, round, gradually a little brighter middle, 11th magnitude star to northwest","简略描述":"eF, pL, R, glbM, * 11 np"},{"ID":"7471","标识":"NGC7471","M标识":"NGC7471","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h3m53s","赤经D(J2000)":"23.064722222222223","赤纬(J2000)":"-22h54m24s","赤纬D(J2000)":"-22.906666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, a little extended 85°, suddenly brighter middle, three 10th magnitude stars 20 seconds of time to west","简略描述":"eF, vS, lE 85°, sbM, 3 st 10 p 20s"},{"ID":"7472","标识":"NGC7472","M标识":"NGC7472","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h5m38.6s","赤经D(J2000)":"23.094055555555553","赤纬(J2000)":"+3h3m32s","赤纬D(J2000)":"3.0588888888888888","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"41","详细描述":"a faint nebulous star, = 7477?","简略描述":"F neb * (? 7477)"},{"ID":"7473","标识":"NGC7473","M标识":"NGC7473","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h3m57.1s","赤经D(J2000)":"23.06586111111111","赤纬(J2000)":"+30h9m36s","赤纬D(J2000)":"30.16","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"45","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"7474","标识":"NGC7474","M标识":"NGC7474","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h4m4.3s","赤经D(J2000)":"23.06786111111111","赤纬(J2000)":"+20h4m4s","赤纬D(J2000)":"20.067777777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7475","标识":"NGC7475","M标识":"NGC7475","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h4m10.1s","赤经D(J2000)":"23.06947222222222","赤纬(J2000)":"+20h4m45s","赤纬D(J2000)":"20.079166666666666","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"54","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"7476","标识":"NGC7476","M标识":"NGC7476","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"23h5m12s","赤经D(J2000)":"23.086666666666666","赤纬(J2000)":"-43h5m53s","赤纬D(J2000)":"-43.09805555555556","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1","方位角":"175","详细描述":"faint, small, round, in a triangle with two 7th magnitude stars","简略描述":"F, S, R, Δ with 2 st 7"},{"ID":"7477","标识":"NGC7477","M标识":"NGC7477","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h4m40.7s","赤经D(J2000)":"23.077972222222222","赤纬(J2000)":"+3h7m6s","赤纬D(J2000)":"3.118333333333333","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"15","详细描述":"faint, small, brighter middle equal to a 15th magnitude star, 17th magnitude star attached on north","简略描述":"F, S, bM * 15, * 17 att n"},{"ID":"7478","标识":"NGC7478","M标识":"NGC7478","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h4m56.5s","赤经D(J2000)":"23.082361111111112","赤纬(J2000)":"+2h34m39s","赤纬D(J2000)":"2.5774999999999997","可见光星等V":"15.4","摄影(蓝光)星等B":"16.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"0","详细描述":"extremely faint, extended","简略描述":"eF, E"},{"ID":"7479","标识":"NGC7479","M标识":"NGC7479","拓展名":"","组件":"","Class":"I 55","业余排名":"2","中文名":"超人星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h4m56.7s","赤经D(J2000)":"23.082416666666667","赤纬(J2000)":"+12h19m20s","赤纬D(J2000)":"12.322222222222223","可见光星等V":"10.9","摄影(蓝光)星等B":"11.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"4","短轴(分)":"3.1","方位角":"25","详细描述":"pretty bright, considerably large, much extended 12°, between 2 stars","简略描述":"pB, cL, mE 12°, bet 2 st"},{"ID":"7480","标识":"NGC7480","M标识":"NGC7480","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h5m13.5s","赤经D(J2000)":"23.087083333333332","赤纬(J2000)":"+2h32m58s","赤纬D(J2000)":"2.549444444444444","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"105","详细描述":"very faint, very small, very little extended, very gradually brighter middle","简略描述":"vF, vS, vlE, vgbM"},{"ID":"7481","标识":"NGC7481","M标识":"NGC7481","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h5m51s","赤经D(J2000)":"23.0975","赤纬(J2000)":"-19h56m24s","赤纬D(J2000)":"-19.94","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, gradually brighter middle","简略描述":"vF, vS, R, gbM"},{"ID":"7482","标识":"NGC7482","M标识":"NGC7482","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h5m38.6s","赤经D(J2000)":"23.094055555555553","赤纬(J2000)":"+3h3m32s","赤纬D(J2000)":"3.0588888888888888","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"41","详细描述":"a faint nebulous star, = 7477?","简略描述":"F, vS, stellar"},{"ID":"7483","标识":"NGC7483","M标识":"NGC7483","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h5m48.2s","赤经D(J2000)":"23.096722222222223","赤纬(J2000)":"+3h32m43s","赤纬D(J2000)":"3.5452777777777778","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"110","详细描述":"very faint, small, extended, pretty suddenly brighter middle","简略描述":"vF, S, E, psbM"},{"ID":"7484","标识":"NGC7484","M标识":"NGC7484","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h7m4.9s","赤经D(J2000)":"23.11802777777778","赤纬(J2000)":"-36h16m22s","赤纬D(J2000)":"-36.272777777777776","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"1.7","方位角":"56","详细描述":"pretty bright, small, round, a little brighter middle, 8th or 9th magnitude star attached on south","简略描述":"pB, S, R, lbM, * 8·9 att s"},{"ID":"7485","标识":"NGC7485","M标识":"NGC7485","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h6m4.8s","赤经D(J2000)":"23.101333333333336","赤纬(J2000)":"+34h6m29s","赤纬D(J2000)":"34.10805555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"146","详细描述":"very faint, small, round, brighter middle, 10th magnitude star to west","简略描述":"vF, S, R, bM, * 10 p"},{"ID":"7486","标识":"NGC7486","M标识":"NGC7486","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h6m13.4s","赤经D(J2000)":"23.103722222222224","赤纬(J2000)":"+34h6m8s","赤纬D(J2000)":"34.102222222222224","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, 2' east of h 2207","简略描述":"vF, vS, 2' f h 2207"},{"ID":"7487","标识":"NGC7487","M标识":"NGC7487","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h6m50.5s","赤经D(J2000)":"23.11402777777778","赤纬(J2000)":"+28h10m46s","赤纬D(J2000)":"28.179444444444446","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"2","短轴(分)":"1.8","方位角":"141","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"7488","标识":"NGC7488","M标识":"NGC7488","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h7m48.9s","赤经D(J2000)":"23.13025","赤纬(J2000)":"+0h56m28s","赤纬D(J2000)":"0.9411111111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"24","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"7489","标识":"NGC7489","M标识":"NGC7489","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h7m32.5s","赤经D(J2000)":"23.125694444444445","赤纬(J2000)":"+22h59m52s","赤纬D(J2000)":"22.997777777777777","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.1","短轴(分)":"1.1","方位角":"170","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"7490","标识":"NGC7490","M标识":"NGC7490","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h7m25.1s","赤经D(J2000)":"23.12363888888889","赤纬(J2000)":"+32h22m32s","赤纬D(J2000)":"32.37555555555556","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2.7","短轴(分)":"2.6","方位角":"60","详细描述":"very faint, very small, irreguarly round, a little brighter middle","简略描述":"vF, vS, iR, lbM"},{"ID":"7491","标识":"NGC7491","M标识":"NGC7491","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h8m6s","赤经D(J2000)":"23.134999999999998","赤纬(J2000)":"-5h57m59s","赤纬D(J2000)":"-5.966388888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.7","方位角":"172","详细描述":"very faint, small, round, a very little brighter middle","简略描述":"vF, S, R, vlbM"},{"ID":"7492","标识":"NGC7492","M标识":"NGC7492","拓展名":"","组件":"","Class":"III 558","业余排名":"13","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"XII","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h8m26.7s","赤经D(J2000)":"23.14075","赤纬(J2000)":"-15h36m39s","赤纬D(J2000)":"-15.610833333333334","可见光星等V":"11.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4.2","短轴(分)":"","方位角":"","详细描述":"extremely faint, large, between two double stars","简略描述":"eF, L, bet 2 D st"},{"ID":"7493","标识":"NGC7493","M标识":"NGC7493","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h8m31.6s","赤经D(J2000)":"23.14211111111111","赤纬(J2000)":"+0h54m36s","赤纬D(J2000)":"0.91","可见光星等V":"99","摄影(蓝光)星等B":"14.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, stellar","简略描述":"vF, stellar"},{"ID":"7494","标识":"NGC7494","M标识":"NGC7494","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h8m58.4s","赤经D(J2000)":"23.149555555555555","赤纬(J2000)":"-24h22m9s","赤纬D(J2000)":"-24.36916666666667","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"81","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"7495","标识":"NGC7495","M标识":"NGC7495","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h8m57.4s","赤经D(J2000)":"23.149277777777776","赤纬(J2000)":"+12h2m53s","赤纬D(J2000)":"12.048055555555555","可见光星等V":"13.1","摄影(蓝光)星等B":"13.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"5","详细描述":"extremely faint, small, a little extended, 9th magnitude star near to northeast","简略描述":"eF, S, lE, * 9 nf nr"},{"ID":"7496","标识":"NGC7496","M标识":"NGC7496","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"23h9m46.9s","赤经D(J2000)":"23.163027777777778","赤纬(J2000)":"-43h25m39s","赤纬D(J2000)":"-43.427499999999995","可见光星等V":"11.4","摄影(蓝光)星等B":"12.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.3","短轴(分)":"3.1","方位角":"2","详细描述":"pretty bright, considerably large, a little extended, very gradually brighter middle equal to 13th magnitude star","简略描述":"pB, cL, lE, vgbM * 13"},{"ID":"7497","标识":"NGC7497","M标识":"NGC7497","拓展名":"","组件":"","Class":"III 203","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h9m3.5s","赤经D(J2000)":"23.150972222222222","赤纬(J2000)":"+18h10m39s","赤纬D(J2000)":"18.177500000000002","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"4.4","短轴(分)":"1.7","方位角":"48","详细描述":"very faint, large, pretty much extended 45°, a little brighter middle","简略描述":"vF, L, pmE 45°, lbM"},{"ID":"7498","标识":"NGC7498","M标识":"NGC7498","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h9m56s","赤经D(J2000)":"23.165555555555553","赤纬(J2000)":"-24h25m28s","赤纬D(J2000)":"-24.424444444444447","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"177","详细描述":"very faint, small, irregularly round","简略描述":"vF, S, iR"},{"ID":"7499","标识":"NGC7499","M标识":"NGC7499","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h10m22.3s","赤经D(J2000)":"23.17286111111111","赤纬(J2000)":"+7h34m52s","赤纬D(J2000)":"7.5811111111111105","可见光星等V":"12.8","摄影(蓝光)星等B":"13.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"10","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"7500","标识":"NGC7500","M标识":"NGC7500","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h10m29.7s","赤经D(J2000)":"23.174916666666668","赤纬(J2000)":"+11h0m46s","赤纬D(J2000)":"11.012777777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.1","短轴(分)":"1.1","方位角":"125","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"7501","标识":"NGC7501","M标识":"NGC7501","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h10m30.3s","赤经D(J2000)":"23.175083333333333","赤纬(J2000)":"+7h35m22s","赤纬D(J2000)":"7.589444444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.6","B-V":"1.2","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"7502","标识":"NGC7502","M标识":"NGC7502","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h10m19.7s","赤经D(J2000)":"23.17213888888889","赤纬(J2000)":"-21h44m11s","赤纬D(J2000)":"-21.73638888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, extended 290°, a faint double star?","简略描述":"eF, vS, E 290°, (? F D *)"},{"ID":"7503","标识":"NGC7503","M标识":"NGC7503","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h10m42.2s","赤经D(J2000)":"23.17838888888889","赤纬(J2000)":"+7h34m5s","赤纬D(J2000)":"7.5680555555555555","可见光星等V":"13.2","摄影(蓝光)星等B":"14.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, small, stellar","简略描述":"vF, S, stellar"},{"ID":"7504","标识":"NGC7504","M标识":"NGC7504","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h10m41.1s","赤经D(J2000)":"23.178083333333333","赤纬(J2000)":"+14h23m10s","赤纬D(J2000)":"14.386111111111111","可见光星等V":"99","摄影(蓝光)星等B":"13.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, stellar","简略描述":"vF, S, stellar"},{"ID":"7505","标识":"NGC7505","M标识":"NGC7505","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h11m0.7s","赤经D(J2000)":"23.18352777777778","赤纬(J2000)":"+13h37m53s","赤纬D(J2000)":"13.631388888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"111","详细描述":"most extremely faint, extremely small, a little extended, between a bright and 2 faint stars","简略描述":"eeF, eS, lE, bet a B & 2 F st"},{"ID":"7506","标识":"NGC7506","M标识":"NGC7506","拓展名":"","组件":"","Class":"III 184","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h11m41s","赤经D(J2000)":"23.19472222222222","赤纬(J2000)":"-2h9m35s","赤纬D(J2000)":"-2.1597222222222223","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"103","详细描述":"considerably faint, very small, round, suddenly brighter middle equal to 15th magnitude star","简略描述":"cF, vS, R, sbM * 15"},{"ID":"7507","标识":"NGC7507","M标识":"NGC7507","拓展名":"","组件":"","Class":"II 2","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h12m7.5s","赤经D(J2000)":"23.202083333333334","赤纬(J2000)":"-28h32m19s","赤纬D(J2000)":"-28.538611111111113","可见光星等V":"10.4","摄影(蓝光)星等B":"11.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.8","短轴(分)":"2.7","方位角":"","详细描述":"pretty bright, considerably small, round, pretty suddenly very much brighter middle, 10th magnitude star to northwest","简略描述":"pB, cS, R, psvmbM, * 10 np"},{"ID":"7508","标识":"NGC7508","M标识":"NGC7508","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h11m49.2s","赤经D(J2000)":"23.197","赤纬(J2000)":"+12h56m28s","赤纬D(J2000)":"12.94111111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.3","方位角":"160","详细描述":"extremely faint, brighter middle like a star, 11th magnitude star 2' to northwest","简略描述":"eF, bM *, * 11 np 2'"},{"ID":"7509","标识":"NGC7509","M标识":"NGC7509","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h12m21.3s","赤经D(J2000)":"23.205916666666667","赤纬(J2000)":"+14h36m35s","赤纬D(J2000)":"14.609722222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"very faint, small, round, between 2 stars","简略描述":"vF, S, R, bet 2 st"},{"ID":"7510","标识":"NGC7510","M标识":"NGC7510","拓展名":"","组件":"","Class":"VII 44","业余排名":"6","中文名":"睡鼠星团","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"23h11m4.2s","赤经D(J2000)":"23.1845","赤纬(J2000)":"+60h34m8s","赤纬D(J2000)":"60.56888888888889","可见光星等V":"7.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, pretty compressed, fan-shaped, stars pretty bright","简略描述":"Cl, pRi, pC, fan-sh, st pB"},{"ID":"7511","标识":"NGC7511","M标识":"NGC7511","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h12m26.3s","赤经D(J2000)":"23.207305555555553","赤纬(J2000)":"+13h43m37s","赤纬D(J2000)":"13.726944444444445","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"133","详细描述":"most extremely faint, small, round, very difficult, several stars to northeast","简略描述":"eeF, S, R, v diffic, sev st nf"},{"ID":"7512","标识":"NGC7512","M标识":"NGC7512","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h12m20.9s","赤经D(J2000)":"23.205805555555553","赤纬(J2000)":"+31h7m32s","赤纬D(J2000)":"31.125555555555557","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"1","方位角":"30","详细描述":"faint, small, round, very small (faint) star in center","简略描述":"F, S, R, vS * in centre"},{"ID":"7513","标识":"NGC7513","M标识":"NGC7513","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h13m13.7s","赤经D(J2000)":"23.22047222222222","赤纬(J2000)":"-28h21m29s","赤纬D(J2000)":"-28.358055555555556","可见光星等V":"10.6","摄影(蓝光)星等B":"11.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.2","短轴(分)":"2.1","方位角":"108","详细描述":"very faint, pretty large, extended, gradually brighter middle","简略描述":"vF, pL, E, gbM"},{"ID":"7514","标识":"NGC7514","M标识":"NGC7514","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h12m25.5s","赤经D(J2000)":"23.207083333333333","赤纬(J2000)":"+34h52m52s","赤纬D(J2000)":"34.88111111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"132","详细描述":"extremely faint, pretty large, irregularly round","简略描述":"eF, pL, iR"},{"ID":"7515","标识":"NGC7515","M标识":"NGC7515","拓展名":"","组件":"","Class":"III 220","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h12m48.6s","赤经D(J2000)":"23.2135","赤纬(J2000)":"+12h40m47s","赤纬D(J2000)":"12.679722222222221","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"15","详细描述":"faint, considerably small, round, very gradually a little brighter middle, mottled but not resolved","简略描述":"F, cS, R, vglbM, r"},{"ID":"7516","标识":"NGC7516","M标识":"NGC7516","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h12m51.8s","赤经D(J2000)":"23.214388888888887","赤纬(J2000)":"+20h14m56s","赤纬D(J2000)":"20.24888888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"1","方位角":"110","详细描述":"faint, very small, stellar","简略描述":"F, vS, stellar"},{"ID":"7517","标识":"NGC7517","M标识":"NGC7517","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h13m13.8s","赤经D(J2000)":"23.220499999999998","赤纬(J2000)":"-2h6m0s","赤纬D(J2000)":"-2.1","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"155","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"7518","标识":"NGC7518","M标识":"NGC7518","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h13m12.8s","赤经D(J2000)":"23.22022222222222","赤纬(J2000)":"+6h19m18s","赤纬D(J2000)":"6.321666666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"1","方位角":"126","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"7519","标识":"NGC7519","M标识":"NGC7519","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h13m11.2s","赤经D(J2000)":"23.219777777777775","赤纬(J2000)":"+10h46m18s","赤纬D(J2000)":"10.771666666666668","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"165","详细描述":"very faint, pretty large","简略描述":"vF, pL"},{"ID":"7520","标识":"NGC7520","M标识":"NGC7520","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h12m53.1s","赤经D(J2000)":"23.21475","赤纬(J2000)":"-23h28m8s","赤纬D(J2000)":"-23.468888888888888","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"66","详细描述":"faint, pretty small, between 2 stars","简略描述":"F, pS, bet 2 st"},{"ID":"7521","标识":"NGC7521","M标识":"NGC7521","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h13m35.3s","赤经D(J2000)":"23.22647222222222","赤纬(J2000)":"-1h43m50s","赤纬D(J2000)":"-1.7305555555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"168","详细描述":"very faint, pretty small, pretty suddenly brighter middle","简略描述":"vF, pS, psbM"},{"ID":"7522","标识":"NGC7522","M标识":"NGC7522","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h15m36.3s","赤经D(J2000)":"23.260083333333334","赤纬(J2000)":"-22h53m40s","赤纬D(J2000)":"-22.894444444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, irregularly round, 10th magnitude star 3' to the east northeast","简略描述":"eF, vS, iR, * 10 nff 3'"},{"ID":"7523","标识":"NGC7523","M标识":"NGC7523","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h13m34.7s","赤经D(J2000)":"23.226305555555555","赤纬(J2000)":"+13h59m12s","赤纬D(J2000)":"13.986666666666666","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.2","方位角":"3","详细描述":"most extremely faint, extended","简略描述":"eeF, E"},{"ID":"7524","标识":"NGC7524","M标识":"NGC7524","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h13m46.5s","赤经D(J2000)":"23.22958333333333","赤纬(J2000)":"-1h43m50s","赤纬D(J2000)":"-1.7305555555555556","可见光星等V":"15.1","摄影(蓝光)星等B":"16","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"172","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7525","标识":"NGC7525","M标识":"NGC7525","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h13m40.4s","赤经D(J2000)":"23.227888888888888","赤纬(J2000)":"+14h1m17s","赤纬D(J2000)":"14.02138888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, very small, very little extended, gradually brighter middle","简略描述":"eF, vS, vlE, gbM"},{"ID":"7526","标识":"NGC7526","M标识":"NGC7526","拓展名":"","组件":"","Class":"III 470","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h14m2.3s","赤经D(J2000)":"23.233972222222224","赤纬(J2000)":"-9h13m15s","赤纬D(J2000)":"-9.220833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7527","标识":"NGC7527","M标识":"NGC7527","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h13m41.7s","赤经D(J2000)":"23.22825","赤纬(J2000)":"+24h54m10s","赤纬D(J2000)":"24.902777777777775","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"165","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"7528","标识":"NGC7528","M标识":"NGC7528","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h14m20s","赤经D(J2000)":"23.23888888888889","赤纬(J2000)":"+10h13m52s","赤纬D(J2000)":"10.231111111111112","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"10","详细描述":"faint, small","简略描述":"F, S"},{"ID":"7529","标识":"NGC7529","M标识":"NGC7529","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h14m3.1s","赤经D(J2000)":"23.234194444444444","赤纬(J2000)":"+8h59m32s","赤纬D(J2000)":"8.992222222222221","可见光星等V":"14.1","摄影(蓝光)星等B":"14.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"75","详细描述":"very faint","简略描述":"vF"},{"ID":"7530","标识":"NGC7530","M标识":"NGC7530","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h14m11.7s","赤经D(J2000)":"23.236583333333336","赤纬(J2000)":"-2h46m44s","赤纬D(J2000)":"-2.778888888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"120","详细描述":"extremely faint, very small, almost stellar","简略描述":"eF, vS, alm stellar"},{"ID":"7531","标识":"NGC7531","M标识":"NGC7531","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"23h14m48.4s","赤经D(J2000)":"23.24677777777778","赤纬(J2000)":"-43h35m56s","赤纬D(J2000)":"-43.598888888888894","可见光星等V":"11.3","摄影(蓝光)星等B":"12","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4.5","短轴(分)":"1.7","方位角":"15","详细描述":"pretty bright, small, a little extended, pretty gradually brighter middle","简略描述":"pB, S, lE, pgbM"},{"ID":"7532","标识":"NGC7532","M标识":"NGC7532","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h14m22.2s","赤经D(J2000)":"23.2395","赤纬(J2000)":"-2h43m40s","赤纬D(J2000)":"-2.727777777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"150","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"7533","标识":"NGC7533","M标识":"NGC7533","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h14m22s","赤经D(J2000)":"23.239444444444445","赤纬(J2000)":"-2h2m0s","赤纬D(J2000)":"-2.033333333333333","可见光星等V":"15.1","摄影(蓝光)星等B":"16","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"134","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"7534","标识":"NGC7534","M标识":"NGC7534","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h14m26.5s","赤经D(J2000)":"23.240694444444447","赤纬(J2000)":"-2h41m58s","赤纬D(J2000)":"-2.6994444444444445","可见光星等V":"13.8","摄影(蓝光)星等B":"14.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.7","方位角":"12","详细描述":"extremely faint, very small, a little extended","简略描述":"eF, vS, lE"},{"ID":"7535","标识":"NGC7535","M标识":"NGC7535","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h14m12.8s","赤经D(J2000)":"23.23688888888889","赤纬(J2000)":"+13h34m56s","赤纬D(J2000)":"13.582222222222223","可见光星等V":"13.7","摄影(蓝光)星等B":"14.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.5","短轴(分)":"1.5","方位角":"","详细描述":"most extremely faint, pretty small, round, very difficult, northern of 2","简略描述":"eeF, pS, R, v diffic, n of 2"},{"ID":"7536","标识":"NGC7536","M标识":"NGC7536","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h14m13.1s","赤经D(J2000)":"23.236972222222224","赤纬(J2000)":"+13h25m36s","赤纬D(J2000)":"13.426666666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"0.7","方位角":"56","详细描述":"most extremely faint, pretty small, round, among 6 stars, southern of 2","简略描述":"eeF, pS, R, am 6 st, s of 2"},{"ID":"7537","标识":"NGC7537","M标识":"NGC7537","拓展名":"","组件":"","Class":"II 429","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h14m34.6s","赤经D(J2000)":"23.242944444444447","赤纬(J2000)":"+4h29m56s","赤纬D(J2000)":"4.498888888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.1","短轴(分)":"0.5","方位角":"79","详细描述":"very faint, considerably small, round, brighter middle, southwestern of 2","简略描述":"vF, cS, R, bM, sp of 2"},{"ID":"7538","标识":"NGC7538","M标识":"NGC7538","拓展名":"","组件":"","Class":"II 706","业余排名":"13","中文名":"北礁湖星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"23h13m38s","赤经D(J2000)":"23.22722222222222","赤纬(J2000)":"+61h30m42s","赤纬D(J2000)":"61.51166666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"6","方位角":"","详细描述":"very faint, large, 2 pretty bright stars involved","简略描述":"vF, L, 2 pB st inv"},{"ID":"7539","标识":"NGC7539","M标识":"NGC7539","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h14m29.4s","赤经D(J2000)":"23.241500000000002","赤纬(J2000)":"+23h41m5s","赤纬D(J2000)":"23.684722222222224","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"165","详细描述":"faint, small, round, pretty suddenly brighter middle","简略描述":"F, S, R, psbM"},{"ID":"7540","标识":"NGC7540","M标识":"NGC7540","拓展名":"","组件":"1","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h14m36.1s","赤经D(J2000)":"23.243361111111113","赤纬(J2000)":"+15h57m1s","赤纬D(J2000)":"15.950277777777776","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"160","详细描述":"faint, very small, stellar","简略描述":"F, vS, stellar"},{"ID":"7541","标识":"NGC7541","M标识":"NGC7541","拓展名":"","组件":"","Class":"II 430","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h14m43.2s","赤经D(J2000)":"23.245333333333335","赤纬(J2000)":"+4h32m4s","赤纬D(J2000)":"4.5344444444444445","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.5","短轴(分)":"1.2","方位角":"102","详细描述":"bright, large, much extended 97°, much brighter middle, northeastern of 2","简略描述":"B, L, mE 97°, mbM, nf of 2"},{"ID":"7542","标识":"NGC7542","M标识":"NGC7542","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h14m41.7s","赤经D(J2000)":"23.24491666666667","赤纬(J2000)":"+10h38m36s","赤纬D(J2000)":"10.643333333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"117","详细描述":"extremely faint, extremely small, stellar","简略描述":"eF, eS, stellar"},{"ID":"7543","标识":"NGC7543","M标识":"NGC7543","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h14m34.5s","赤经D(J2000)":"23.242916666666666","赤纬(J2000)":"+28h19m40s","赤纬D(J2000)":"28.32777777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"140","详细描述":"very faint, small, round, a little brighter middle","简略描述":"vF, S, R, lbM"},{"ID":"7544","标识":"NGC7544","M标识":"NGC7544","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h14m56.9s","赤经D(J2000)":"23.24913888888889","赤纬(J2000)":"-2h11m56s","赤纬D(J2000)":"-2.198888888888889","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"58","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7545","标识":"NGC7545","M标识":"NGC7545","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"23h15m32.3s","赤经D(J2000)":"23.258972222222223","赤纬(J2000)":"-38h32m6s","赤纬D(J2000)":"-38.535","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"80","详细描述":"faint, small, very little extended, very gradually a very little brighter middle, 10th magnitude star attached","简略描述":"F, S, vlE, vgvlbM, * 10 att"},{"ID":"7546","标识":"NGC7546","M标识":"NGC7546","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h15m5.5s","赤经D(J2000)":"23.251527777777778","赤纬(J2000)":"-2h19m32s","赤纬D(J2000)":"-2.3255555555555554","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.9","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"5","详细描述":"extremely faint, small, a little extended","简略描述":"eF, S, lE"},{"ID":"7547","标识":"NGC7547","M标识":"NGC7547","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa\/P","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h15m3.4s","赤经D(J2000)":"23.250944444444446","赤纬(J2000)":"+18h58m25s","赤纬D(J2000)":"18.973611111111108","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"98","详细描述":"very faint, small, irregularly round","简略描述":"vF, S, iR"},{"ID":"7548","标识":"NGC7548","M标识":"NGC7548","拓展名":"","组件":"","Class":"","业余排名":"17","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h15m11.1s","赤经D(J2000)":"23.253083333333333","赤纬(J2000)":"+25h16m55s","赤纬D(J2000)":"25.281944444444445","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"15","详细描述":"very faint, very small, 16th magnitude star 11 seconds of time to west","简略描述":"vF, vS, * 16 p 11s"},{"ID":"7549","标识":"NGC7549","M标识":"NGC7549","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h15m17.1s","赤经D(J2000)":"23.25475","赤纬(J2000)":"+19h2m29s","赤纬D(J2000)":"19.04138888888889","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.8","短轴(分)":"0.7","方位角":"8","详细描述":"pretty faint, pretty small, round, 10th or 11th magnitude star to west","简略描述":"pF, pS, R, * 10·11 p"},{"ID":"7550","标识":"NGC7550","M标识":"NGC7550","拓展名":"","组件":"","Class":"III 181","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h15m16s","赤经D(J2000)":"23.254444444444445","赤纬(J2000)":"+18h57m39s","赤纬D(J2000)":"18.960833333333333","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"171","详细描述":"considerably faint, small, round","简略描述":"cF, S, R"},{"ID":"7551","标识":"NGC7551","M标识":"NGC7551","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h15m22s","赤经D(J2000)":"23.25611111111111","赤纬(J2000)":"+15h56m27s","赤纬D(J2000)":"15.940833333333334","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"150","详细描述":"a nebulous star of 13th magnitude","简略描述":"Neb * 13 m"},{"ID":"7552","标识":"NGC7552","M标识":"NGC7552","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"天鹤座四重星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"23h16m10.6s","赤经D(J2000)":"23.26961111111111","赤纬(J2000)":"-42h35m5s","赤纬D(J2000)":"-42.584722222222226","可见光星等V":"10.6","摄影(蓝光)星等B":"11.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.4","短轴(分)":"2.7","方位角":"1","详细描述":"bright, small, much extended 90°±, very suddenly brighter middle equal to 13th magnitude star","简略描述":"B, S, mE 90° ±, vsbM * 13"},{"ID":"7553","标识":"NGC7553","M标识":"NGC7553","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h15m33s","赤经D(J2000)":"23.259166666666665","赤纬(J2000)":"+19h2m55s","赤纬D(J2000)":"19.048611111111114","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"7554","标识":"NGC7554","M标识":"NGC7554","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h15m41.3s","赤经D(J2000)":"23.26147222222222","赤纬(J2000)":"-2h22m41s","赤纬D(J2000)":"-2.3780555555555556","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, extremely small, almost stellar, h 2220 to east","简略描述":"eF, eS, alm stell, h 2220 f"},{"ID":"7555","标识":"NGC7555","M标识":"NGC7555","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h15m30s","赤经D(J2000)":"23.258333333333333","赤纬(J2000)":"+12h34m0s","赤纬D(J2000)":"12.566666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, round, brighter middle, place very rough","简略描述":"F, R, bM, place very rough"},{"ID":"7556","标识":"NGC7556","M标识":"NGC7556","拓展名":"","组件":"","Class":"II 235","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h15m44.4s","赤经D(J2000)":"23.262333333333334","赤纬(J2000)":"-2h22m53s","赤纬D(J2000)":"-2.381388888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2.5","短轴(分)":"1.6","方位角":"123","详细描述":"considerably faint, pretty large, round, bright double star to east","简略描述":"cF, pL, R, B ** f"},{"ID":"7557","标识":"NGC7557","M标识":"NGC7557","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h15m39.7s","赤经D(J2000)":"23.261027777777777","赤纬(J2000)":"+6h42m32s","赤纬D(J2000)":"6.708888888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, very small, western of 2","简略描述":"vF, vS, p of 2"},{"ID":"7558","标识":"NGC7558","M标识":"NGC7558","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h15m38.2s","赤经D(J2000)":"23.26061111111111","赤纬(J2000)":"+18h55m13s","赤纬D(J2000)":"18.92027777777778","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"most extremely faint, nebulous star of 13th magnitude","简略描述":"eeF, neb * 13 m"},{"ID":"7559","标识":"NGC7559","M标识":"NGC7559","拓展名":"A","组件":"","Class":"III 221","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h15m46.5s","赤经D(J2000)":"23.262916666666666","赤纬(J2000)":"+13h17m25s","赤纬D(J2000)":"13.290277777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.8","方位角":"67","详细描述":"faint, considerably small, round, brighter middle equal to 16th magnitude star, northwestern of 2","简略描述":"F, cS, R, bM * 16, np of 2"},{"ID":"7560","标识":"NGC7560","M标识":"NGC7560","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h15m53.8s","赤经D(J2000)":"23.264944444444446","赤纬(J2000)":"+4h29m45s","赤纬D(J2000)":"4.495833333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregularly round, southwestern of 2","简略描述":"F, vS, iR, sp of 2"},{"ID":"7561","标识":"NGC7561","M标识":"NGC7561","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h15m57.5s","赤经D(J2000)":"23.26597222222222","赤纬(J2000)":"+4h31m21s","赤纬D(J2000)":"4.5225","可见光星等V":"99","摄影(蓝光)星等B":"13.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregularly round, northeastern of 2","简略描述":"F, vS, iR, nf of 2"},{"ID":"7562","标识":"NGC7562","M标识":"NGC7562","拓展名":"","组件":"","Class":"II 467","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h15m57.6s","赤经D(J2000)":"23.266","赤纬(J2000)":"+6h41m14s","赤纬D(J2000)":"6.687222222222222","可见光星等V":"11.5","摄影(蓝光)星等B":"12.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.2","短轴(分)":"1.7","方位角":"83","详细描述":"considerably bright, pretty small, irregularly round, pretty suddenly brighter middle","简略描述":"cB, pS, iR, psbM"},{"ID":"7563","标识":"NGC7563","M标识":"NGC7563","拓展名":"","组件":"","Class":"III 222","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h15m55.9s","赤经D(J2000)":"23.265527777777777","赤纬(J2000)":"+13h11m48s","赤纬D(J2000)":"13.196666666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"155","详细描述":"pretty faint, considerably small, round, suddenly brighter middle equal to 16th magnitude star, southeastern of 2","简略描述":"pF, cS, R, sbM * 16, sf of 2"},{"ID":"7564","标识":"NGC7564","M标识":"NGC7564","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h16m1.1s","赤经D(J2000)":"23.266972222222222","赤纬(J2000)":"+7h20m54s","赤纬D(J2000)":"7.348333333333333","可见光星等V":"99","摄影(蓝光)星等B":"14.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, stellar nucleus","简略描述":"vF, eS, stellar N"},{"ID":"7565","标识":"NGC7565","M标识":"NGC7565","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h16m19s","赤经D(J2000)":"23.271944444444443","赤纬(J2000)":"-0h3m30s","赤纬D(J2000)":"-0.058333333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"7566","标识":"NGC7566","M标识":"NGC7566","拓展名":"","组件":"","Class":"III 185","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h16m37.4s","赤经D(J2000)":"23.277055555555556","赤纬(J2000)":"-2h19m49s","赤纬D(J2000)":"-2.3302777777777774","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"115","详细描述":"very faint, pretty small, extended, extremely mottled but not resolved, 3 faint stars involved","简略描述":"vF, pS, E, er, 3 F st inv"},{"ID":"7567","标识":"NGC7567","M标识":"NGC7567","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h16m10.8s","赤经D(J2000)":"23.269666666666666","赤纬(J2000)":"+15h51m4s","赤纬D(J2000)":"15.851111111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"76","详细描述":"most extremely faint, very small, extended","简略描述":"eeF, vS, E"},{"ID":"7568","标识":"NGC7568","M标识":"NGC7568","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h16m24.9s","赤经D(J2000)":"23.27358333333333","赤纬(J2000)":"+24h29m50s","赤纬D(J2000)":"24.497222222222224","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"120","详细描述":"extremely faint, pretty large, irregularly round, several stars involved","简略描述":"eF, pL, iR, sev st inv"},{"ID":"7569","标识":"NGC7569","M标识":"NGC7569","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h16m44.5s","赤经D(J2000)":"23.279027777777777","赤纬(J2000)":"+8h54m24s","赤纬D(J2000)":"8.906666666666666","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"88","详细描述":"very faint, small, round, 3 faint stars to southeast","简略描述":"vF, S, R, 3 F st sf"},{"ID":"7570","标识":"NGC7570","M标识":"NGC7570","拓展名":"","组件":"","Class":"III 238","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h16m44.7s","赤经D(J2000)":"23.279083333333332","赤纬(J2000)":"+13h29m0s","赤纬D(J2000)":"13.483333333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"30","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"7571","标识":"NGC7571","M标识":"NGC7571","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h18m30.3s","赤经D(J2000)":"23.308416666666666","赤纬(J2000)":"+18h41m18s","赤纬D(J2000)":"18.688333333333333","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"very faint, considerably extended, several knots or groups of nebulae","简略描述":"vF, cE, sev knots or gr of neb"},{"ID":"7572","标识":"NGC7572","M标识":"NGC7572","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h16m50.3s","赤经D(J2000)":"23.280638888888888","赤纬(J2000)":"+18h29m0s","赤纬D(J2000)":"18.483333333333334","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"162","详细描述":"most extremely faint, almost stellar","简略描述":"eeF, alm stellar"},{"ID":"7573","标识":"NGC7573","M标识":"NGC7573","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h16m26.3s","赤经D(J2000)":"23.27397222222222","赤纬(J2000)":"-22h9m14s","赤纬D(J2000)":"-22.153888888888886","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"42","详细描述":"extremely faint, small, irregularly round, brighter on northwest, 10th magnitude star 4' to west","简略描述":"eF, S, iR, b np, * 10 p 4'"},{"ID":"7574","标识":"NGC7574","M标识":"NGC7574","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h16m24.9s","赤经D(J2000)":"23.27358333333333","赤纬(J2000)":"+24h29m50s","赤纬D(J2000)":"24.497222222222224","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"120","详细描述":"extremely faint, pretty large, irregularly round, several stars involved","简略描述":"pF, S, E, rr"},{"ID":"7575","标识":"NGC7575","M标识":"NGC7575","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h17m20.9s","赤经D(J2000)":"23.28913888888889","赤纬(J2000)":"+5h39m41s","赤纬D(J2000)":"5.661388888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"105","详细描述":"faint, small, very little extended","简略描述":"F, S, vlE"},{"ID":"7576","标识":"NGC7576","M标识":"NGC7576","拓展名":"","组件":"","Class":"II 454","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h17m22.7s","赤经D(J2000)":"23.28963888888889","赤纬(J2000)":"-4h43m40s","赤纬D(J2000)":"-4.727777777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"165","详细描述":"faint, small, suddenly much brighter middle","简略描述":"F, S, smbM"},{"ID":"7577","标识":"NGC7577","M标识":"NGC7577","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h17m17.1s","赤经D(J2000)":"23.288083333333336","赤纬(J2000)":"+7h21m57s","赤纬D(J2000)":"7.365833333333333","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"48","详细描述":"a magnitude 13.5 star in a very faint nebula","简略描述":"* 13.5 in vF neb"},{"ID":"7578","标识":"NGC7578","M标识":"NGC7578","拓展名":"A","组件":"","Class":"III 182","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h17m11.9s","赤经D(J2000)":"23.28663888888889","赤纬(J2000)":"+18h42m5s","赤纬D(J2000)":"18.70138888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, among very small (faint) stars","简略描述":"vF, am vS st"},{"ID":"7579","标识":"NGC7579","M标识":"NGC7579","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h17m38.8s","赤经D(J2000)":"23.294111111111114","赤纬(J2000)":"+9h26m2s","赤纬D(J2000)":"9.43388888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"10","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"7580","标识":"NGC7580","M标识":"NGC7580","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h17m36.6s","赤经D(J2000)":"23.2935","赤纬(J2000)":"+14h0m5s","赤纬D(J2000)":"14.001388888888888","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"45","详细描述":"very faint, pretty small, round, faint star to southwest","简略描述":"vF, pS, R, F * sp"},{"ID":"7581","标识":"NGC7581","M标识":"NGC7581","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h14m43.2s","赤经D(J2000)":"23.245333333333335","赤纬(J2000)":"+4h32m4s","赤纬D(J2000)":"4.5344444444444445","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.5","短轴(分)":"1.2","方位角":"102","详细描述":"very faint, much extended, 12th or 13th magnitude star close to east","简略描述":"vF, mE, * 12·13 close f"},{"ID":"7582","标识":"NGC7582","M标识":"NGC7582","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"天鹤座四重星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"23h18m23.5s","赤经D(J2000)":"23.306527777777777","赤纬(J2000)":"-42h22m11s","赤纬D(J2000)":"-42.36972222222222","可见光星等V":"10.6","摄影(蓝光)星等B":"11.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"5","短轴(分)":"2.3","方位角":"157","详细描述":"pretty bright, large, pretty much extended, gradually brighter middle","简略描述":"pB, L, pmE, gbM"},{"ID":"7583","标识":"NGC7583","M标识":"NGC7583","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h17m52.8s","赤经D(J2000)":"23.298000000000002","赤纬(J2000)":"+7h22m46s","赤纬D(J2000)":"7.379444444444444","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"7584","标识":"NGC7584","M标识":"NGC7584","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h17m53.1s","赤经D(J2000)":"23.298083333333334","赤纬(J2000)":"+9h26m1s","赤纬D(J2000)":"9.43361111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"7585","标识":"NGC7585","M标识":"NGC7585","拓展名":"","组件":"","Class":"II 236","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h18m1.3s","赤经D(J2000)":"23.300361111111112","赤纬(J2000)":"-4h39m1s","赤纬D(J2000)":"-4.650277777777778","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.3","短轴(分)":"2","方位角":"105","详细描述":"pretty bright, pretty small, irregularly round, gradually brighter middle","简略描述":"pB, pS, iR, gbM"},{"ID":"7586","标识":"NGC7586","M标识":"NGC7586","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h17m55.5s","赤经D(J2000)":"23.298750000000002","赤纬(J2000)":"+8h35m4s","赤纬D(J2000)":"8.584444444444445","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"160","详细描述":"extremely faint, very small, almost stellar","简略描述":"eF, vS, alm stellar"},{"ID":"7587","标识":"NGC7587","M标识":"NGC7587","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h17m59.1s","赤经D(J2000)":"23.299750000000003","赤纬(J2000)":"+9h40m49s","赤纬D(J2000)":"9.680277777777777","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"123","详细描述":"very faint, very small, a little extended, gradually brighter middle","简略描述":"vF, vS, lE, gbM"},{"ID":"7588","标识":"NGC7588","M标识":"NGC7588","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h17m57.7s","赤经D(J2000)":"23.299361111111114","赤纬(J2000)":"+18h45m10s","赤纬D(J2000)":"18.752777777777776","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"99","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"7589","标识":"NGC7589","M标识":"NGC7589","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h18m15.6s","赤经D(J2000)":"23.304333333333336","赤纬(J2000)":"+0h15m42s","赤纬D(J2000)":"0.26166666666666666","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"102","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7590","标识":"NGC7590","M标识":"NGC7590","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"天鹤座四重星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"23h18m54.6s","赤经D(J2000)":"23.315166666666666","赤纬(J2000)":"-42h14m21s","赤纬D(J2000)":"-42.23916666666667","可见光星等V":"11.5","摄影(蓝光)星等B":"12.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.6","短轴(分)":"1","方位角":"36","详细描述":"pretty bright, pretty large, pretty much extended, gradually brighter middle, western of 2","简略描述":"pB, pL, pmE, gbM, p of 2"},{"ID":"7591","标识":"NGC7591","M标识":"NGC7591","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h18m16.2s","赤经D(J2000)":"23.3045","赤纬(J2000)":"+6h35m10s","赤纬D(J2000)":"6.586111111111111","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"0.8","方位角":"145","详细描述":"pretty faint, small, round, very gradually brighter middle","简略描述":"pF, S, R, vgbM"},{"ID":"7592","标识":"NGC7592","M标识":"NGC7592","拓展名":"","组件":"","Class":"III 186","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h18m22s","赤经D(J2000)":"23.30611111111111","赤纬(J2000)":"-4h24m59s","赤纬D(J2000)":"-4.416388888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"57","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7593","标识":"NGC7593","M标识":"NGC7593","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h17m56.9s","赤经D(J2000)":"23.29913888888889","赤纬(J2000)":"+11h20m56s","赤纬D(J2000)":"11.34888888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.6","方位角":"104","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"7594","标识":"NGC7594","M标识":"NGC7594","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h18m13.9s","赤经D(J2000)":"23.30386111111111","赤纬(J2000)":"+10h17m52s","赤纬D(J2000)":"10.297777777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"30","详细描述":"pretty faint, round, 3 stars to west","简略描述":"pF, R, 3 st p"},{"ID":"7595","标识":"NGC7595","M标识":"NGC7595","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h18m30.2s","赤经D(J2000)":"23.30838888888889","赤纬(J2000)":"+9h55m56s","赤纬D(J2000)":"9.932222222222222","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, stellar","简略描述":"F, stellar"},{"ID":"7596","标识":"NGC7596","M标识":"NGC7596","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h17m12s","赤经D(J2000)":"23.28666666666667","赤纬(J2000)":"-6h54m42s","赤纬D(J2000)":"-6.911666666666667","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.5","方位角":"34","详细描述":"very faint, pretty small, a little extended 0°, a little brighter middle and nucleus","简略描述":"vF, pS, lE 0°, lbMN"},{"ID":"7597","标识":"NGC7597","M标识":"NGC7597","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h18m30.3s","赤经D(J2000)":"23.308416666666666","赤纬(J2000)":"+18h41m18s","赤纬D(J2000)":"18.688333333333333","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"very faint, considerably extended, several knots or groups of nebulae","简略描述":"eF, vS, gbM"},{"ID":"7598","标识":"NGC7598","M标识":"NGC7598","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h18m33.3s","赤经D(J2000)":"23.309250000000002","赤纬(J2000)":"+18h44m59s","赤纬D(J2000)":"18.749722222222225","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"110","详细描述":"extremely faint, extremely small, stellar","简略描述":"eF, eS, stellar"},{"ID":"7599","标识":"NGC7599","M标识":"NGC7599","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"天鹤座四重星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"23h19m20.8s","赤经D(J2000)":"23.322444444444443","赤纬(J2000)":"-42h15m29s","赤纬D(J2000)":"-42.25805555555556","可见光星等V":"11.5","摄影(蓝光)星等B":"12.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"4.4","短轴(分)":"1.4","方位角":"57","详细描述":"faint, pretty large, pretty much extended, gradually brighter middle, eastern of 2","简略描述":"F, pL, pmE, gbM, f of 2"},{"ID":"7600","标识":"NGC7600","M标识":"NGC7600","拓展名":"","组件":"","Class":"II 431","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h18m53.8s","赤经D(J2000)":"23.314944444444446","赤纬(J2000)":"-7h34m48s","赤纬D(J2000)":"-7.58","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.5","短轴(分)":"1","方位角":"70","详细描述":"considerably faint, small, round, pretty suddenly much brighter middle","简略描述":"cF, S, R, psmbM"},{"ID":"7601","标识":"NGC7601","M标识":"NGC7601","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h18m47.1s","赤经D(J2000)":"23.313083333333335","赤纬(J2000)":"+9h14m1s","赤纬D(J2000)":"9.23361111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"96","详细描述":"pretty bright, diffuse","简略描述":"pB, dif"},{"ID":"7602","标识":"NGC7602","M标识":"NGC7602","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h18m43.5s","赤经D(J2000)":"23.312083333333334","赤纬(J2000)":"+18h41m56s","赤纬D(J2000)":"18.698888888888888","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, extremely small, stellar","简略描述":"eF, eS, stellar"},{"ID":"7603","标识":"NGC7603","M标识":"NGC7603","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h18m56.4s","赤经D(J2000)":"23.31566666666667","赤纬(J2000)":"+0h14m39s","赤纬D(J2000)":"0.24416666666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"1","方位角":"165","详细描述":"faint, very small, stellar","简略描述":"F, vS, stellar"},{"ID":"7604","标识":"NGC7604","M标识":"NGC7604","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h17m51.9s","赤经D(J2000)":"23.29775","赤纬(J2000)":"+7h25m48s","赤纬D(J2000)":"7.430000000000001","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"extremely faint, very small, brighter middle","简略描述":"eF, vS, bM"},{"ID":"7605","标识":"NGC7605","M标识":"NGC7605","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h17m52.8s","赤经D(J2000)":"23.298000000000002","赤纬(J2000)":"+7h22m46s","赤纬D(J2000)":"7.379444444444444","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, small, round, gradually a little brighter middle","简略描述":"vF, S, R, glbM"},{"ID":"7606","标识":"NGC7606","M标识":"NGC7606","拓展名":"","组件":"","Class":"I 104","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h19m4.8s","赤经D(J2000)":"23.318","赤纬(J2000)":"-8h29m11s","赤纬D(J2000)":"-8.486388888888888","可见光星等V":"10.8","摄影(蓝光)星等B":"11.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"5.4","短轴(分)":"2.1","方位角":"145","详细描述":"pretty faint, considerably large, pretty much extended 0°±","简略描述":"pF, cL, pmE 0° ±"},{"ID":"7607","标识":"NGC7607","M标识":"NGC7607","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h18m59.3s","赤经D(J2000)":"23.316472222222224","赤纬(J2000)":"+11h20m30s","赤纬D(J2000)":"11.341666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, 16th magnitude star half an arcmin to northeast (nebulous?)","简略描述":"vF, S, R, * 16 nf ?' (nebs ?)"},{"ID":"7608","标识":"NGC7608","M标识":"NGC7608","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h19m15.3s","赤经D(J2000)":"23.320916666666665","赤纬(J2000)":"+8h21m1s","赤纬D(J2000)":"8.350277777777777","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"20","详细描述":"very faint, pretty small, a little extended, a little brighter middle","简略描述":"vF, pS, lE, lbM"},{"ID":"7609","标识":"NGC7609","M标识":"NGC7609","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h19m30s","赤经D(J2000)":"23.325","赤纬(J2000)":"+9h30m31s","赤纬D(J2000)":"9.508611111111112","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"135","详细描述":"very faint, very small, gradually brighter middle","简略描述":"vF, vS, gbM"},{"ID":"7610","标识":"NGC7610","M标识":"NGC7610","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h19m41.6s","赤经D(J2000)":"23.328222222222223","赤纬(J2000)":"+10h11m4s","赤纬D(J2000)":"10.184444444444445","可见光星等V":"13","摄影(蓝光)星等B":"13.4","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"2.5","短轴(分)":"1.9","方位角":"45","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"7611","标识":"NGC7611","M标识":"NGC7611","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h19m36.5s","赤经D(J2000)":"23.326805555555556","赤纬(J2000)":"+8h3m49s","赤纬D(J2000)":"8.063611111111111","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"139","详细描述":"faint, small, round, in a triangle with two 19th magnitude stars to the north","简略描述":"F, S, R, Δ with 2 st 19, n"},{"ID":"7612","标识":"NGC7612","M标识":"NGC7612","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h19m44.1s","赤经D(J2000)":"23.328916666666668","赤纬(J2000)":"+8h34m37s","赤纬D(J2000)":"8.576944444444445","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"2","详细描述":"pretty bright, very small, round, brighter middle","简略描述":"pB, vS, R, bM"},{"ID":"7613","标识":"NGC7613","M标识":"NGC7613","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h19m51s","赤经D(J2000)":"23.330833333333334","赤纬(J2000)":"+0h11m54s","赤纬D(J2000)":"0.1983333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"7614","标识":"NGC7614","M标识":"NGC7614","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h19m52.6s","赤经D(J2000)":"23.33127777777778","赤纬(J2000)":"+0h10m56s","赤纬D(J2000)":"0.1822222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, northeastern of 2","简略描述":"vF, nf of 2"},{"ID":"7615","标识":"NGC7615","M标识":"NGC7615","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h19m54.4s","赤经D(J2000)":"23.331777777777777","赤纬(J2000)":"+8h23m58s","赤纬D(J2000)":"8.399444444444445","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"152","详细描述":"extremely faint, extremely small","简略描述":"eF, cS"},{"ID":"7616","标识":"NGC7616","M标识":"NGC7616","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h19m41.6s","赤经D(J2000)":"23.328222222222223","赤纬(J2000)":"+10h11m4s","赤纬D(J2000)":"10.184444444444445","可见光星等V":"13","摄影(蓝光)星等B":"13.4","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"2.5","短轴(分)":"1.9","方位角":"45","详细描述":"faint, small, diffuse","简略描述":"pF, dif"},{"ID":"7617","标识":"NGC7617","M标识":"NGC7617","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h20m8.9s","赤经D(J2000)":"23.335805555555556","赤纬(J2000)":"+8h9m58s","赤纬D(J2000)":"8.166111111111112","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"42","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7618","标识":"NGC7618","M标识":"NGC7618","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"23h19m47.3s","赤经D(J2000)":"23.329805555555556","赤纬(J2000)":"+42h51m10s","赤纬D(J2000)":"42.85277777777778","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"1","方位角":"5","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"7619","标识":"NGC7619","M标识":"NGC7619","拓展名":"","组件":"","Class":"II 439","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h20m14.6s","赤经D(J2000)":"23.33738888888889","赤纬(J2000)":"+8h12m25s","赤纬D(J2000)":"8.206944444444444","可见光星等V":"11.1","摄影(蓝光)星等B":"12.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.5","短轴(分)":"2.3","方位角":"30","详细描述":"considerably bright, pretty small, round, pretty suddenly brighter middle","简略描述":"cB, pS, R, psbM"},{"ID":"7620","标识":"NGC7620","M标识":"NGC7620","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h20m5.6s","赤经D(J2000)":"23.334888888888887","赤纬(J2000)":"+24h13m15s","赤纬D(J2000)":"24.22083333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"13.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"faint, small, very little extended","简略描述":"F, S, vlE"},{"ID":"7621","标识":"NGC7621","M标识":"NGC7621","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h20m24.7s","赤经D(J2000)":"23.340194444444442","赤纬(J2000)":"+8h22m0s","赤纬D(J2000)":"8.366666666666667","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"177","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"7622","标识":"NGC7622","M标识":"NGC7622","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h21m38.5s","赤经D(J2000)":"23.360694444444444","赤纬(J2000)":"-62h7m3s","赤纬D(J2000)":"-62.1175","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"60","详细描述":"extremely faint, extremely small, among 5 stars, doubtful","简略描述":"eF, eS, am 5 st (doubtful)"},{"ID":"7623","标识":"NGC7623","M标识":"NGC7623","拓展名":"","组件":"","Class":"III 435","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h20m29.9s","赤经D(J2000)":"23.341638888888887","赤纬(J2000)":"+8h23m47s","赤纬D(J2000)":"8.396388888888888","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"165","详细描述":"faint, very small, round, pretty suddenly brighter middle","简略描述":"F, vS, R, psbM"},{"ID":"7624","标识":"NGC7624","M标识":"NGC7624","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h20m22.6s","赤经D(J2000)":"23.33961111111111","赤纬(J2000)":"+27h18m53s","赤纬D(J2000)":"27.314722222222223","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.7","方位角":"30","详细描述":"very faint, a little extended or irregularly round, diffuse, a very little brighter middle","简略描述":"vF, lE or iR, dif, vlbM"},{"ID":"7625","标识":"NGC7625","M标识":"NGC7625","拓展名":"","组件":"","Class":"II 250","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h20m30.2s","赤经D(J2000)":"23.34172222222222","赤纬(J2000)":"+17h13m36s","赤纬D(J2000)":"17.226666666666667","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"60","详细描述":"pretty bright, considerably small, round, suddenly much brighter middle","简略描述":"pB, cS, R, smbM"},{"ID":"7626","标识":"NGC7626","M标识":"NGC7626","拓展名":"","组件":"","Class":"II 440","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h20m42.6s","赤经D(J2000)":"23.345166666666664","赤纬(J2000)":"+8h13m1s","赤纬D(J2000)":"8.216944444444444","可见光星等V":"11.1","摄影(蓝光)星等B":"12.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.6","短轴(分)":"2.3","方位角":"9","详细描述":"considerably bright, pretty small, round, pretty suddenly brighter middle","简略描述":"cB, pS, R, psbM"},{"ID":"7627","标识":"NGC7627","M标识":"NGC7627","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h22m30.8s","赤经D(J2000)":"23.375222222222224","赤纬(J2000)":"+11h53m37s","赤纬D(J2000)":"11.893611111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"133","详细描述":"very faint, small, much extended, 2 stars to north","简略描述":"vF, S, mE, 2 st n"},{"ID":"7628","标识":"NGC7628","M标识":"NGC7628","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h20m55s","赤经D(J2000)":"23.34861111111111","赤纬(J2000)":"+25h53m55s","赤纬D(J2000)":"25.898611111111112","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"117","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"7629","标识":"NGC7629","M标识":"NGC7629","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h21m19.3s","赤经D(J2000)":"23.35536111111111","赤纬(J2000)":"+1h24m13s","赤纬D(J2000)":"1.403611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.8","方位角":"179","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"7630","标识":"NGC7630","M标识":"NGC7630","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h21m16.3s","赤经D(J2000)":"23.35452777777778","赤纬(J2000)":"+11h23m51s","赤纬D(J2000)":"11.397499999999999","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"162","详细描述":"faint, small","简略描述":"F, S"},{"ID":"7631","标识":"NGC7631","M标识":"NGC7631","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h21m26.7s","赤经D(J2000)":"23.35741666666667","赤纬(J2000)":"+8h13m3s","赤纬D(J2000)":"8.2175","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"0.7","方位角":"79","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"7632","标识":"NGC7632","M标识":"NGC7632","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"23h22m0.9s","赤经D(J2000)":"23.36691666666667","赤纬(J2000)":"-42h28m49s","赤纬D(J2000)":"-42.48027777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.4","短轴(分)":"1.2","方位角":"92","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"7633","标识":"NGC7633","M标识":"NGC7633","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"23h23m3.1s","赤经D(J2000)":"23.384194444444443","赤纬(J2000)":"-67h39m13s","赤纬D(J2000)":"-67.65361111111112","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.3","短轴(分)":"2","方位角":"142","详细描述":"faint, very small, extended 90°, pretty suddenly brighter middle","简略描述":"F, vS, E 90°, psbM"},{"ID":"7634","标识":"NGC7634","M标识":"NGC7634","拓展名":"","组件":"","Class":"II 441","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h21m41.7s","赤经D(J2000)":"23.361583333333336","赤纬(J2000)":"+8h53m15s","赤纬D(J2000)":"8.8875","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"95","详细描述":"faint, small, faint double star attached","简略描述":"F, S, F ** att"},{"ID":"7635","标识":"NGC7635","M标识":"NGC7635","拓展名":"","组件":"","Class":"IV 52","业余排名":"2","中文名":"气泡星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"23h20m45s","赤经D(J2000)":"23.34583333333333","赤纬(J2000)":"+61h12m42s","赤纬D(J2000)":"61.211666666666666","可见光星等V":"99","摄影(蓝光)星等B":"11","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"8","方位角":"","详细描述":"very faint, 8th magnitude star involved, a little eccentric","简略描述":"vF, * 8 inv l excentric"},{"ID":"7636","标识":"NGC7636","M标识":"NGC7636","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h22m33.1s","赤经D(J2000)":"23.37586111111111","赤纬(J2000)":"-29h16m51s","赤纬D(J2000)":"-29.280833333333334","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"30","详细描述":"extremely faint, small, round, suddenly brighter middle","简略描述":"eF, S, R, sbM"},{"ID":"7637","标识":"NGC7637","M标识":"NGC7637","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"南极座","星座(En)":"OCT","赤经(J2000)":"23h26m28.3s","赤经D(J2000)":"23.441194444444445","赤纬(J2000)":"-81h54m40s","赤纬D(J2000)":"-81.91111111111111","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.1","短轴(分)":"1.9","方位角":"36","详细描述":"very faint, pretty large, round, a very little brighter middle, star near","简略描述":"vF, pL, R, vlbM, * nr"},{"ID":"7638","标识":"NGC7638","M标识":"NGC7638","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h22m33s","赤经D(J2000)":"23.375833333333333","赤纬(J2000)":"+11h19m46s","赤纬D(J2000)":"11.329444444444444","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"(one of) 2 nebulae, faint, small","简略描述":"2 neb, F, S"},{"ID":"7639","标识":"NGC7639","M标识":"NGC7639","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h22m48.2s","赤经D(J2000)":"23.380055555555558","赤纬(J2000)":"+11h22m24s","赤纬D(J2000)":"11.373333333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"123","详细描述":"(one of) 2 nebulae, faint, small","简略描述":"2 neb, F, S"},{"ID":"7640","标识":"NGC7640","M标识":"NGC7640","拓展名":"","组件":"","Class":"II 600","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"23h22m6.6s","赤经D(J2000)":"23.3685","赤纬(J2000)":"+40h50m42s","赤纬D(J2000)":"40.845","可见光星等V":"11.3","摄影(蓝光)星等B":"11.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"10.5","短轴(分)":"1.8","方位角":"167","详细描述":"considerably faint, large, much extended 164°, very little brighter middle, mottled but not resolved","简略描述":"cF, L, mE 164°, vlbM, r"},{"ID":"7641","标识":"NGC7641","M标识":"NGC7641","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h22m30.8s","赤经D(J2000)":"23.375222222222224","赤纬(J2000)":"+11h53m37s","赤纬D(J2000)":"11.893611111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"133","详细描述":"very faint, small, much extended, 2 stars to north","简略描述":"vF, S, iR, dif, lbM"},{"ID":"7642","标识":"NGC7642","M标识":"NGC7642","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h22m53.4s","赤经D(J2000)":"23.3815","赤纬(J2000)":"+1h26m34s","赤纬D(J2000)":"1.4427777777777777","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"175","详细描述":"very faint, very small, brighter middle","简略描述":"vF, vS, bM"},{"ID":"7643","标识":"NGC7643","M标识":"NGC7643","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h22m50.4s","赤经D(J2000)":"23.380666666666666","赤纬(J2000)":"+11h59m19s","赤纬D(J2000)":"11.98861111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"45","详细描述":"faint, pretty small, irregularly round, diffuse, a little brighter middle","简略描述":"F, pS, iR, dif, lbM"},{"ID":"7644","标识":"NGC7644","M标识":"NGC7644","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h22m50.4s","赤经D(J2000)":"23.380666666666666","赤纬(J2000)":"+11h59m19s","赤纬D(J2000)":"11.98861111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"45","详细描述":"faint, pretty small, irregularly round, diffuse, a little brighter middle","简略描述":"vF, pS, lE"},{"ID":"7645","标识":"NGC7645","M标识":"NGC7645","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h23m47.4s","赤经D(J2000)":"23.3965","赤纬(J2000)":"-29h23m17s","赤纬D(J2000)":"-29.388055555555557","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"165","详细描述":"very faint, small, round, gradually a little brighter middle","简略描述":"vF, S, R, glbM"},{"ID":"7646","标识":"NGC7646","M标识":"NGC7646","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h24m6.9s","赤经D(J2000)":"23.401916666666665","赤纬(J2000)":"-11h51m37s","赤纬D(J2000)":"-11.860277777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"135","详细描述":"very faint, very small, extended 260° (nebulosity?), 9th magnitude star 3.6 arcmin to north","简略描述":"vF, vS, E 260° (neb?), * 9 n 3'.6"},{"ID":"7647","标识":"NGC7647","M标识":"NGC7647","拓展名":"","组件":"","Class":"III 473","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h23m57.4s","赤经D(J2000)":"23.399277777777776","赤纬(J2000)":"+16h46m40s","赤纬D(J2000)":"16.77777777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"1","方位角":"14","详细描述":"extremely faint, considerably large (?), a row of stars to west","简略描述":"eF, cL(?), p a row of st"},{"ID":"7648","标识":"NGC7648","M标识":"NGC7648","拓展名":"","组件":"","Class":"III 218","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h23m54.2s","赤经D(J2000)":"23.39838888888889","赤纬(J2000)":"+9h40m6s","赤纬D(J2000)":"9.668333333333333","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1","方位角":"85","详细描述":"very faint, pretty small, a little extended, brighter middle","简略描述":"vF, pS, lE, bM"},{"ID":"7649","标识":"NGC7649","M标识":"NGC7649","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h24m20.1s","赤经D(J2000)":"23.405583333333333","赤纬(J2000)":"+14h38m49s","赤纬D(J2000)":"14.646944444444443","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.3","短轴(分)":"1","方位角":"80","详细描述":"very faint, pretty large, round","简略描述":"vF, pL, R"},{"ID":"7650","标识":"NGC7650","M标识":"NGC7650","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h25m20.9s","赤经D(J2000)":"23.422472222222222","赤纬(J2000)":"-57h47m28s","赤纬D(J2000)":"-57.79111111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.1","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"126","详细描述":"pretty faint, pretty small, round, gradually a little brighter middle, northwestern of 2","简略描述":"pF, pS, R, glbM, np of 2"},{"ID":"7651","标识":"NGC7651","M标识":"NGC7651","拓展名":"","组件":"2","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h24m25.6s","赤经D(J2000)":"23.40711111111111","赤纬(J2000)":"+13h58m2s","赤纬D(J2000)":"13.967222222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"25","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"7652","标识":"NGC7652","M标识":"NGC7652","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h25m37.6s","赤经D(J2000)":"23.427111111111113","赤纬(J2000)":"-57h53m15s","赤纬D(J2000)":"-57.8875","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"106","详细描述":"extremely faint, small, round, southeastern of 2","简略描述":"eF, S, R, sf of 2"},{"ID":"7653","标识":"NGC7653","M标识":"NGC7653","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h24m49.1s","赤经D(J2000)":"23.413638888888887","赤纬(J2000)":"+15h16m32s","赤纬D(J2000)":"15.275555555555556","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"1.5","方位角":"132","详细描述":"very faint, pretty small, round, gradually brighter middle","简略描述":"vF, pS, R, gbM"},{"ID":"7654","标识":"NGC7654","M标识":"M52","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"仙后座椒盐星团","类型":"OCL","含重复类型":"OCL","形态":"I2r","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"23h24m48s","赤经D(J2000)":"23.41333333333333","赤纬(J2000)":"+61h36m0s","赤纬D(J2000)":"61.6","可见光星等V":"6.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"16","短轴(分)":"","方位角":"","详细描述":"a cluster, large, rich, much compressed middle, round, stars from 9th to 13th magnitude","简略描述":"Cl, L, Ri, mCM, R, st 9…13"},{"ID":"7655","标识":"NGC7655","M标识":"NGC7655","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"23h26m45.9s","赤经D(J2000)":"23.446083333333334","赤纬(J2000)":"-68h1m39s","赤纬D(J2000)":"-68.0275","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"75","详细描述":"extremely faint, very small, round, pretty suddenly a little brighter middle, 10th magnitude star 22 seconds of time to west","简略描述":"eF, vS, R, pslbM, * 10 p 22s"},{"ID":"7656","标识":"NGC7656","M标识":"NGC7656","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h24m31.5s","赤经D(J2000)":"23.408749999999998","赤纬(J2000)":"-19h3m33s","赤纬D(J2000)":"-19.059166666666666","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"50","详细描述":"very faint, very small, round, brighter middle and nucleus","简略描述":"vF, vS, R, bMN"},{"ID":"7657","标识":"NGC7657","M标识":"NGC7657","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h26m47.1s","赤经D(J2000)":"23.446416666666668","赤纬(J2000)":"-57h48m19s","赤纬D(J2000)":"-57.805277777777775","可见光星等V":"14.1","摄影(蓝光)星等B":"14.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"106","详细描述":"extremely faint, round","简略描述":"eF, R"},{"ID":"7658","标识":"NGC7658","M标识":"NGC7658","拓展名":"B","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"23h26m24.9s","赤经D(J2000)":"23.44025","赤纬(J2000)":"-39h13m37s","赤纬D(J2000)":"-39.22694444444445","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"128","详细描述":"double, both extremely faint, small, round, 4 stars to west","简略描述":"D, both eF, S, R, 4 st p"},{"ID":"7659","标识":"NGC7659","M标识":"NGC7659","拓展名":"","组件":"","Class":"III 212","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h25m55.5s","赤经D(J2000)":"23.432083333333335","赤纬(J2000)":"+14h12m35s","赤纬D(J2000)":"14.209722222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"110","详细描述":"very faint, very small, round, pretty suddenly brighter middle","简略描述":"vF, vS, R, psbM"},{"ID":"7660","标识":"NGC7660","M标识":"NGC7660","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h25m48.7s","赤经D(J2000)":"23.430194444444446","赤纬(J2000)":"+27h1m47s","赤纬D(J2000)":"27.029722222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"35","详细描述":"faint, very small, pretty suddenly much brighter middle, 10th magnitude star to west","简略描述":"F, vS, psmbM, * 10 p"},{"ID":"7661","标识":"NGC7661","M标识":"NGC7661","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h27m14.5s","赤经D(J2000)":"23.454027777777778","赤纬(J2000)":"-65h16m18s","赤纬D(J2000)":"-65.27166666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"25","详细描述":"extremely faint, considerably large, round, very gradually a very little brighter middle","简略描述":"eF, cL, R, vgvlbM"},{"ID":"7662","标识":"NGC7662","M标识":"NGC7662","拓展名":"","组件":"","Class":"IV 18","业余排名":"2","中文名":"蓝雪球星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"23h25m53.9s","赤经D(J2000)":"23.43163888888889","赤纬(J2000)":"+42h32m8s","赤纬D(J2000)":"42.535555555555554","可见光星等V":"8.3","摄影(蓝光)星等B":"9.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.62","短轴(分)":"","方位角":"","详细描述":"a magnificent or otherwise interesting object, a planetary or annular nebula, very bright, pretty small, round, blue","简略描述":"!!! planetary or annular, vB, pS, R, blue"},{"ID":"7663","标识":"NGC7663","M标识":"NGC7663","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h26m40s","赤经D(J2000)":"23.444444444444446","赤纬(J2000)":"-4h45m12s","赤纬D(J2000)":"-4.753333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"7664","标识":"NGC7664","M标识":"NGC7664","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h26m39.7s","赤经D(J2000)":"23.44436111111111","赤纬(J2000)":"+25h4m49s","赤纬D(J2000)":"25.080277777777777","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.6","短轴(分)":"1.5","方位角":"90","详细描述":"very faint, star to south, two stars of 11th or 12th magnitude to west","简略描述":"vF, * s, 2 st 11·12 p"},{"ID":"7665","标识":"NGC7665","M标识":"NGC7665","拓展名":"","组件":"","Class":"III 438","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h27m14.8s","赤经D(J2000)":"23.45411111111111","赤纬(J2000)":"-9h23m11s","赤纬D(J2000)":"-9.386388888888888","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, small, stellar","简略描述":"eF, S, stellar"},{"ID":"7666","标识":"NGC7666","M标识":"NGC7666","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h27m24s","赤经D(J2000)":"23.456666666666667","赤纬(J2000)":"-4h11m0s","赤纬D(J2000)":"-4.183333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"7667","标识":"NGC7667","M标识":"NGC7667","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h24m23.1s","赤经D(J2000)":"23.406416666666665","赤纬(J2000)":"-0h6m31s","赤纬D(J2000)":"-0.10861111111111112","可见光星等V":"13.9","摄影(蓝光)星等B":"14.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"79","详细描述":"very faint","简略描述":"vF"},{"ID":"7668","标识":"NGC7668","M标识":"NGC7668","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h26m41.7s","赤经D(J2000)":"23.444916666666668","赤纬(J2000)":"-0h11m29s","赤纬D(J2000)":"-0.1913888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"(one of three) very faint (nebulae) surrounding GC 6197","简略描述":"vF, surround G.C. 6197"},{"ID":"7669","标识":"NGC7669","M标识":"NGC7669","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h26m41.7s","赤经D(J2000)":"23.444916666666668","赤纬(J2000)":"-0h11m29s","赤纬D(J2000)":"-0.1913888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"(one of three) very faint (nebulae) surrounding GC 6197","简略描述":"vF, surround G.C. 6197"},{"ID":"7670","标识":"NGC7670","M标识":"NGC7670","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h26m41.7s","赤经D(J2000)":"23.444916666666668","赤纬(J2000)":"-0h11m29s","赤纬D(J2000)":"-0.1913888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"(one of three) very faint (nebulae) surrounding GC 6197","简略描述":"vF, surround G.C. 6197"},{"ID":"7671","标识":"NGC7671","M标识":"NGC7671","拓展名":"","组件":"","Class":"III 226","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h27m19.3s","赤经D(J2000)":"23.45536111111111","赤纬(J2000)":"+12h28m4s","赤纬D(J2000)":"12.467777777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"138","详细描述":"pretty bright, small, round, very suddenly much brighter middle, 9th magnitude star to west","简略描述":"pB, S, R, vsmbM, * 9 p"},{"ID":"7672","标识":"NGC7672","M标识":"NGC7672","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h27m31.4s","赤经D(J2000)":"23.45872222222222","赤纬(J2000)":"+12h23m6s","赤纬D(J2000)":"12.385","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"36","详细描述":"very faint, small, 5' south of h 2242","简略描述":"vF, S, 5' s of h 2242"},{"ID":"7673","标识":"NGC7673","M标识":"NGC7673","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc\/P","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h27m41.2s","赤经D(J2000)":"23.461444444444442","赤纬(J2000)":"+23h35m21s","赤纬D(J2000)":"23.589166666666664","可见光星等V":"12.8","摄影(蓝光)星等B":"13.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"57","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"7674","标识":"NGC7674","M标识":"NGC7674","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h27m56.7s","赤经D(J2000)":"23.46575","赤纬(J2000)":"+8h46m43s","赤纬D(J2000)":"8.778611111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"1","方位角":"150","详细描述":"faint, considerably small, gradually brighter middle, western of 2","简略描述":"F, cS, gbM, p of 2"},{"ID":"7675","标识":"NGC7675","M标识":"NGC7675","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h28m5.8s","赤经D(J2000)":"23.468277777777775","赤纬(J2000)":"+8h46m9s","赤纬D(J2000)":"8.769166666666667","可见光星等V":"14.9","摄影(蓝光)星等B":"16","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"25","详细描述":"very faint, small, round, gradually brighter middle, eastern of 2","简略描述":"vF, S, R, gbM, f of 2"},{"ID":"7676","标识":"NGC7676","M标识":"NGC7676","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h29m1.7s","赤经D(J2000)":"23.483805555555556","赤纬(J2000)":"-59h43m0s","赤纬D(J2000)":"-59.71666666666667","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"85","详细描述":"bright, small, a little extended, very suddenly very much brighter middle equal to 11th magnitude star","简略描述":"B, S, lE, vsvmbM * 11"},{"ID":"7677","标识":"NGC7677","M标识":"NGC7677","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h28m6.1s","赤经D(J2000)":"23.46836111111111","赤纬(J2000)":"+23h31m53s","赤纬D(J2000)":"23.531388888888888","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"1","方位角":"35","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stell"},{"ID":"7678","标识":"NGC7678","M标识":"NGC7678","拓展名":"","组件":"","Class":"II 226","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h28m27.8s","赤经D(J2000)":"23.47438888888889","赤纬(J2000)":"+22h25m16s","赤纬D(J2000)":"22.421111111111113","可见光星等V":"11.8","摄影(蓝光)星等B":"12.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.5","短轴(分)":"1.7","方位角":"5","详细描述":"very faint, pretty large, very little extended, a little brighter middle, among 4 stars","简略描述":"vF, pL, vlE, lbM, am 4 st"},{"ID":"7679","标识":"NGC7679","M标识":"NGC7679","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h28m46.5s","赤经D(J2000)":"23.47958333333333","赤纬(J2000)":"+3h30m39s","赤纬D(J2000)":"3.5108333333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"13.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"90","详细描述":"pretty bright, small, round, much brighter middle and nucleus, stellar","简略描述":"pB, S, R, mbMN, stell"},{"ID":"7680","标识":"NGC7680","M标识":"NGC7680","拓展名":"","组件":"1","Class":"III 860","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h28m35.2s","赤经D(J2000)":"23.476444444444443","赤纬(J2000)":"+32h24m56s","赤纬D(J2000)":"32.41555555555556","可见光星等V":"12.6","摄影(蓝光)星等B":"13.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.9","短轴(分)":"1.9","方位角":"","详细描述":"very faint, small, round, a little brighter middle, mottled but not resolved","简略描述":"vF, S, R, lbM, r"},{"ID":"7681","标识":"NGC7681","M标识":"NGC7681","拓展名":"","组件":"","Class":"II 242","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h28m54.8s","赤经D(J2000)":"23.481888888888886","赤纬(J2000)":"+17h18m34s","赤纬D(J2000)":"17.309444444444445","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"15.7","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"42","详细描述":"very faint, small, irregularly round, mottled but not resolved, double star to east","简略描述":"vF, S, iR, r, ** f"},{"ID":"7682","标识":"NGC7682","M标识":"NGC7682","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h29m3.8s","赤经D(J2000)":"23.48438888888889","赤纬(J2000)":"+3h32m2s","赤纬D(J2000)":"3.533888888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"153","详细描述":"pretty bright, small, round, much brighter middle and nucleus, stellar","简略描述":"eF, * 14 p 13s.7, ln"},{"ID":"7683","标识":"NGC7683","M标识":"NGC7683","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h29m3.8s","赤经D(J2000)":"23.48438888888889","赤纬(J2000)":"+11h26m43s","赤纬D(J2000)":"11.445277777777777","可见光星等V":"12.5","摄影(蓝光)星等B":"13.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"140","详细描述":"faint, 13th magnitude star to north","简略描述":"F, * 13 n"},{"ID":"7684","标识":"NGC7684","M标识":"NGC7684","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h30m32s","赤经D(J2000)":"23.50888888888889","赤纬(J2000)":"+0h4m53s","赤纬D(J2000)":"0.08138888888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"21","详细描述":"faint, very small, stellar","简略描述":"F, vS, stell"},{"ID":"7685","标识":"NGC7685","M标识":"NGC7685","拓展名":"","组件":"","Class":"III 426","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h30m33.3s","赤经D(J2000)":"23.50925","赤纬(J2000)":"+3h54m6s","赤纬D(J2000)":"3.9016666666666664","可见光星等V":"13.2","摄影(蓝光)星等B":"13.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"170","详细描述":"extremely faint, considerably large, round, gradually brighter middle, double star near","简略描述":"eF, cL, R, gbM, ** nr"},{"ID":"7686","标识":"NGC7686","M标识":"NGC7686","拓展名":"","组件":"","Class":"VIII 69","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV1p","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"23h30m7.3s","赤经D(J2000)":"23.502027777777776","赤纬(J2000)":"+49h8m3s","赤纬D(J2000)":"49.134166666666665","可见光星等V":"5.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, poor, a little compressed, stars from 7th to 11th magnitude","简略描述":"Cl, P, lC, st 7…11"},{"ID":"7687","标识":"NGC7687","M标识":"NGC7687","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h30m54.4s","赤经D(J2000)":"23.51511111111111","赤纬(J2000)":"+3h32m50s","赤纬D(J2000)":"3.547222222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"1","方位角":"75","详细描述":"very faint, very small, 11th magnitude star 1 second of time to east, 85 arcsec to north","简略描述":"vF, vS, * 11 f 1s, n 85\""},{"ID":"7688","标识":"NGC7688","M标识":"NGC7688","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h31m5.4s","赤经D(J2000)":"23.518166666666666","赤纬(J2000)":"+21h24m43s","赤纬D(J2000)":"21.411944444444444","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"95","详细描述":"faint, very small, diffuse, 11th magnitude star 80","简略描述":"F, vS, dif, * 11 201°, 80\""},{"ID":"7689","标识":"NGC7689","M标识":"NGC7689","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"23h33m16.4s","赤经D(J2000)":"23.554555555555556","赤纬(J2000)":"-54h5m39s","赤纬D(J2000)":"-54.094166666666666","可见光星等V":"11.5","摄影(蓝光)星等B":"12.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.8","短轴(分)":"1.9","方位角":"135","详细描述":"pretty faint, large, round, very gradually brighter middle","简略描述":"pF, L, R, vgbM"},{"ID":"7690","标识":"NGC7690","M标识":"NGC7690","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"23h33m2.4s","赤经D(J2000)":"23.550666666666668","赤纬(J2000)":"-51h41m54s","赤纬D(J2000)":"-51.69833333333333","可见光星等V":"12.4","摄影(蓝光)星等B":"13","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.1","短轴(分)":"0.8","方位角":"132","详细描述":"considerably bright, small, a little extended, pretty suddenly brighter middle, 8th magnitude star to east","简略描述":"cB, S, lE, psbM, * 8 f"},{"ID":"7691","标识":"NGC7691","M标识":"NGC7691","拓展名":"","组件":"","Class":"III 213","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h32m24.6s","赤经D(J2000)":"23.540166666666668","赤纬(J2000)":"+15h50m56s","赤纬D(J2000)":"15.84888888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.1","短轴(分)":"1.6","方位角":"175","详细描述":"extremely faint, pretty large, forming a triangle with two 10th magnitude stars","简略描述":"eF, pL, Δ with 2 st 10"},{"ID":"7692","标识":"NGC7692","M标识":"NGC7692","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h32m46.7s","赤经D(J2000)":"23.546305555555556","赤纬(J2000)":"-5h35m46s","赤纬D(J2000)":"-5.596111111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"100","详细描述":"a nebula, 9th magnitude star 18 seconds of time to east and 73 arcsec to south","简略描述":"Neb, * 9 f 18s, 73\" s"},{"ID":"7693","标识":"NGC7693","M标识":"NGC7693","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h33m10.4s","赤经D(J2000)":"23.55288888888889","赤纬(J2000)":"-1h17m29s","赤纬D(J2000)":"-1.2913888888888887","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"156","详细描述":"a small nebula or nebulous 14th magnitude star, A. N. 2394","简略描述":"S neb or neb * 14 (A.N. 2394)"},{"ID":"7694","标识":"NGC7694","M标识":"NGC7694","拓展名":"","组件":"","Class":"III 187","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h33m16.1s","赤经D(J2000)":"23.554472222222223","赤纬(J2000)":"-2h42m13s","赤纬D(J2000)":"-2.7036111111111114","可见光星等V":"13.4","摄影(蓝光)星等B":"14","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"85","详细描述":"extremely faint, pretty large, stellar","简略描述":"eF, pL, stellar"},{"ID":"7695","标识":"NGC7695","M标识":"NGC7695","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h33m14.9s","赤经D(J2000)":"23.55413888888889","赤纬(J2000)":"-2h43m11s","赤纬D(J2000)":"-2.7197222222222224","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"81","详细描述":"extremely faint, stellar, near III 187","简略描述":"eF, stell (nr III 187)"},{"ID":"7696","标识":"NGC7696","M标识":"NGC7696","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h33m50.2s","赤经D(J2000)":"23.563944444444445","赤纬(J2000)":"+4h52m17s","赤纬D(J2000)":"4.871388888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"96","详细描述":"faint, small, a little extended","简略描述":"F, S, lE"},{"ID":"7697","标识":"NGC7697","M标识":"NGC7697","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h34m52.3s","赤经D(J2000)":"23.581194444444446","赤纬(J2000)":"-65h23m46s","赤纬D(J2000)":"-65.39611111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"87","详细描述":"most extremely faint, pretty large, certain","简略描述":"eeF, pL (certain)"},{"ID":"7698","标识":"NGC7698","M标识":"NGC7698","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h34m1.5s","赤经D(J2000)":"23.567083333333333","赤纬(J2000)":"+24h56m43s","赤纬D(J2000)":"24.94527777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.8","方位角":"170","详细描述":"very faint, extremely small, round, brighter middle and small nucleus","简略描述":"vF, eS, R, bMSN"},{"ID":"7699","标识":"NGC7699","M标识":"NGC7699","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h34m27s","赤经D(J2000)":"23.574166666666667","赤纬(J2000)":"-2h54m0s","赤纬D(J2000)":"-2.9","可见光星等V":"15","摄影(蓝光)星等B":"15.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"109","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7700","标识":"NGC7700","M标识":"NGC7700","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h34m30.2s","赤经D(J2000)":"23.575055555555554","赤纬(J2000)":"-2h57m12s","赤纬D(J2000)":"-2.9533333333333336","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"1","方位角":"154","详细描述":"very faint, extremely small, stellar","简略描述":"vF, eS, stellar"},{"ID":"7701","标识":"NGC7701","M标识":"NGC7701","拓展名":"","组件":"","Class":"III 188","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h34m31.5s","赤经D(J2000)":"23.575416666666666","赤纬(J2000)":"-2h51m18s","赤纬D(J2000)":"-2.855","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"155","详细描述":"very faint, small, round, much brighter middle, 11th magnitude star to southwest","简略描述":"vF, S, R, mbM, * 11 sp"},{"ID":"7702","标识":"NGC7702","M标识":"NGC7702","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"23h35m28.8s","赤经D(J2000)":"23.59133333333333","赤纬(J2000)":"-56h0m43s","赤纬D(J2000)":"-56.011944444444445","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.1","短轴(分)":"1.2","方位角":"117","详细描述":"bright, considerably small, extended, gradually then suddenly brighter middle, 8th or 9th magnitude star to west","简略描述":"B, cS, E, g, sbM, * 8·9 p"},{"ID":"7703","标识":"NGC7703","M标识":"NGC7703","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h34m46.8s","赤经D(J2000)":"23.579666666666668","赤纬(J2000)":"+16h4m33s","赤纬D(J2000)":"16.075833333333332","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.2","短轴(分)":"0.5","方位角":"147","详细描述":"very faint, very small, gradually brighter middle, 14th magnitude star 1 arcmin to northeast","简略描述":"vF, vS, gbM, * 14 nf 1'"},{"ID":"7704","标识":"NGC7704","M标识":"NGC7704","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h35m0.9s","赤经D(J2000)":"23.583583333333333","赤纬(J2000)":"+4h53m53s","赤纬D(J2000)":"4.898055555555555","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"67","详细描述":"extremely faint, 12th magnitude star to west, southwestern of 2","简略描述":"eF, * 12 p, sp of 2"},{"ID":"7705","标识":"NGC7705","M标识":"NGC7705","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h35m2.4s","赤经D(J2000)":"23.584","赤纬(J2000)":"+4h48m16s","赤纬D(J2000)":"4.804444444444444","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"30","详细描述":"extremely faint","简略描述":"eF"},{"ID":"7706","标识":"NGC7706","M标识":"NGC7706","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h35m10.4s","赤经D(J2000)":"23.586222222222222","赤纬(J2000)":"+4h57m53s","赤纬D(J2000)":"4.964722222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"1","方位角":"120","详细描述":"very faint, pretty small, 18th magnitude star close to south, northeastern of 2","简略描述":"vF, pS, * 18 close s, nf of 2"},{"ID":"7707","标识":"NGC7707","M标识":"NGC7707","拓展名":"","组件":"","Class":"III 579","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"23h34m51.3s","赤经D(J2000)":"23.580916666666667","赤纬(J2000)":"+44h18m17s","赤纬D(J2000)":"44.30472222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"45","详细描述":"extremely faint, small, round, 9th or 10th magnitude star very near to west","简略描述":"eF, S, R, * 9·10 p v nr"},{"ID":"7708","标识":"NGC7708","M标识":"NGC7708","拓展名":"","组件":"","Class":"VIII 62","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"23h35m0s","赤经D(J2000)":"23.583333333333332","赤纬(J2000)":"+72h50m0s","赤纬D(J2000)":"72.83333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"30","短轴(分)":"","方位角":"","详细描述":"a cluster, large, poor, a little compressed, stars of 8th and from 10th to 15th magnitude","简略描述":"Cl, L, P, lC, st 10…15"},{"ID":"7709","标识":"NGC7709","M标识":"NGC7709","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h35m27.2s","赤经D(J2000)":"23.590888888888887","赤纬(J2000)":"-16h42m20s","赤纬D(J2000)":"-16.705555555555556","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.3","短轴(分)":"0.6","方位角":"55","详细描述":"pretty faint, small, round, a little brighter middle","简略描述":"pF, S, R, lbM"},{"ID":"7710","标识":"NGC7710","M标识":"NGC7710","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h35m46.1s","赤经D(J2000)":"23.596138888888888","赤纬(J2000)":"-2h52m51s","赤纬D(J2000)":"-2.8808333333333334","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"135","详细描述":"pretty faint, very small, stellar","简略描述":"pF, vS, stellar"},{"ID":"7711","标识":"NGC7711","M标识":"NGC7711","拓展名":"","组件":"","Class":"II 244","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h35m39.4s","赤经D(J2000)":"23.594277777777776","赤纬(J2000)":"+15h18m6s","赤纬D(J2000)":"15.301666666666668","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.6","短轴(分)":"1.3","方位角":"95","详细描述":"faint, small, round, pretty suddenly brighter middle, stellar","简略描述":"F, S, R, psbM, stellar"},{"ID":"7712","标识":"NGC7712","M标识":"NGC7712","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h35m51.5s","赤经D(J2000)":"23.597638888888888","赤纬(J2000)":"+23h37m6s","赤纬D(J2000)":"23.618333333333332","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"120","详细描述":"very faint","简略描述":"vF"},{"ID":"7713","标识":"NGC7713","M标识":"NGC7713","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h36m15.3s","赤经D(J2000)":"23.60425","赤纬(J2000)":"-37h56m20s","赤纬D(J2000)":"-37.93888888888888","可见光星等V":"11.2","摄影(蓝光)星等B":"11.5","B-V":"0.3","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"4.5","短轴(分)":"1.8","方位角":"168","详细描述":"pretty bright, large, extended, very gradually brighter middle","简略描述":"pB, L, E, vgbM"},{"ID":"7714","标识":"NGC7714","M标识":"NGC7714","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h36m14.1s","赤经D(J2000)":"23.603916666666667","赤纬(J2000)":"+2h9m17s","赤纬D(J2000)":"2.154722222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"79","详细描述":"pretty bright, small, round, pretty suddenly brighter middle, 12th magnitude star to southwest, 6th magnitude star to southeast","简略描述":"pB, S, R, psbM, * 12 sp, * 6 sf"},{"ID":"7715","标识":"NGC7715","M标识":"NGC7715","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im\/P","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h36m21.7s","赤经D(J2000)":"23.60602777777778","赤纬(J2000)":"+2h9m23s","赤纬D(J2000)":"2.156388888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"14.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2.7","短轴(分)":"0.4","方位角":"73","详细描述":"pretty bright, small, round, pretty suddenly brighter middle, 12th magnitude star to southwest, 6th magnitude star to southeast","简略描述":"eF, pL, R"},{"ID":"7716","标识":"NGC7716","M标识":"NGC7716","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h36m31.3s","赤经D(J2000)":"23.608694444444446","赤纬(J2000)":"+0h17m51s","赤纬D(J2000)":"0.2975","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.2","短轴(分)":"1.8","方位角":"35","详细描述":"faint, pretty large, a little extended, gradually brighter middle, 10th magnitude star to south","简略描述":"F, pL, lE, gbM, * 10 s"},{"ID":"7717","标识":"NGC7717","M标识":"NGC7717","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h37m43.6s","赤经D(J2000)":"23.628777777777778","赤纬(J2000)":"-15h7m7s","赤纬D(J2000)":"-15.118611111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"8","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"7718","标识":"NGC7718","M标识":"NGC7718","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h38m4.9s","赤经D(J2000)":"23.634694444444445","赤纬(J2000)":"+25h43m11s","赤纬D(J2000)":"25.71972222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"151","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"7719","标识":"NGC7719","M标识":"NGC7719","拓展名":"","组件":"1","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h38m2.6s","赤经D(J2000)":"23.634055555555555","赤纬(J2000)":"-22h58m29s","赤纬D(J2000)":"-22.97472222222222","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"7720","标识":"NGC7720","M标识":"NGC7720","拓展名":"","组件":"1","Class":"III 146","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h38m29.3s","赤经D(J2000)":"23.641472222222223","赤纬(J2000)":"+27h1m52s","赤纬D(J2000)":"27.03111111111111","可见光星等V":"12.3","摄影(蓝光)星等B":"13.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"18","详细描述":"faint, small, a little extended, brighter middle, among stars","简略描述":"F, S, lE, bM, am st"},{"ID":"7721","标识":"NGC7721","M标识":"NGC7721","拓展名":"","组件":"","Class":"II 432","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h38m48.6s","赤经D(J2000)":"23.646833333333333","赤纬(J2000)":"-6h31m4s","赤纬D(J2000)":"-6.517777777777778","可见光星等V":"11.6","摄影(蓝光)星等B":"12.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.8","短轴(分)":"1.1","方位角":"15","详细描述":"pretty faint, considerably large, extended 12°±, very gradually brighter middle","简略描述":"pF, cL, E 12° ±, vgbM"},{"ID":"7722","标识":"NGC7722","M标识":"NGC7722","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h38m40.9s","赤经D(J2000)":"23.644694444444443","赤纬(J2000)":"+15h57m17s","赤纬D(J2000)":"15.954722222222221","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"150","详细描述":"pretty bright, pretty large, round, much brighter middle","简略描述":"pB, pL, R, mbM"},{"ID":"7723","标识":"NGC7723","M标识":"NGC7723","拓展名":"","组件":"","Class":"I 110","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h38m57s","赤经D(J2000)":"23.649166666666666","赤纬(J2000)":"-12h57m40s","赤纬D(J2000)":"-12.96111111111111","可见光星等V":"11.2","摄影(蓝光)星等B":"11.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.5","短轴(分)":"2.2","方位角":"40","详细描述":"considerably bright, considerably large, extended, gradually much brighter middle, mottled but not resolved","简略描述":"cB, cL, E, gmbM, r"},{"ID":"7724","标识":"NGC7724","M标识":"NGC7724","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h39m7s","赤经D(J2000)":"23.651944444444442","赤纬(J2000)":"-12h13m27s","赤纬D(J2000)":"-12.224166666666667","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"1","方位角":"37","详细描述":"extremely faint, pretty large, irregularly round","简略描述":"eF, pL, iR"},{"ID":"7725","标识":"NGC7725","M标识":"NGC7725","拓展名":"","组件":"","Class":"III 189","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h39m14.7s","赤经D(J2000)":"23.654083333333332","赤纬(J2000)":"-4h32m20s","赤纬D(J2000)":"-4.538888888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"123","详细描述":"most extremely faint","简略描述":"eeF"},{"ID":"7726","标识":"NGC7726","M标识":"NGC7726","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h39m11.9s","赤经D(J2000)":"23.653305555555555","赤纬(J2000)":"+27h6m54s","赤纬D(J2000)":"27.115000000000002","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"60","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"7727","标识":"NGC7727","M标识":"NGC7727","拓展名":"","组件":"","Class":"I 111","业余排名":"6","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa\/P","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h39m53.7s","赤经D(J2000)":"23.664916666666667","赤纬(J2000)":"-12h17m34s","赤纬D(J2000)":"-12.292777777777777","可见光星等V":"10.6","摄影(蓝光)星等B":"11.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"4.7","短轴(分)":"3.5","方位角":"39","详细描述":"pretty bright, pretty large, irregularly round, much brighter middle","简略描述":"pB, pL, iR, mbM"},{"ID":"7728","标识":"NGC7728","M标识":"NGC7728","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h40m0.7s","赤经D(J2000)":"23.666861111111114","赤纬(J2000)":"+27h8m0s","赤纬D(J2000)":"27.133333333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.8","方位角":"75","详细描述":"very faint, very small, a little extended, 10th magnitude star to southwest","简略描述":"vF, vS, lE, * 10 sp"},{"ID":"7729","标识":"NGC7729","M标识":"NGC7729","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h40m33.6s","赤经D(J2000)":"23.676000000000002","赤纬(J2000)":"+29h11m17s","赤纬D(J2000)":"29.188055555555557","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"7","详细描述":"very faint, small, irregularly extended, faint star involved on south side","简略描述":"vF, S, iE, F * inv s"},{"ID":"7730","标识":"NGC7730","M标识":"NGC7730","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h40m45.8s","赤经D(J2000)":"23.67938888888889","赤纬(J2000)":"-20h30m32s","赤纬D(J2000)":"-20.50888888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"129","详细描述":"pretty bright, pretty large, extended","简略描述":"pB, pL, E"},{"ID":"7731","标识":"NGC7731","M标识":"NGC7731","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h41m29s","赤经D(J2000)":"23.691388888888888","赤纬(J2000)":"+3h44m26s","赤纬D(J2000)":"3.7405555555555554","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"95","详细描述":"faint, small","简略描述":"F, S"},{"ID":"7732","标识":"NGC7732","M标识":"NGC7732","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h41m34s","赤经D(J2000)":"23.692777777777778","赤纬(J2000)":"+3h43m30s","赤纬D(J2000)":"3.725","可见光星等V":"13.8","摄影(蓝光)星等B":"14.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2","短轴(分)":"0.6","方位角":"96","详细描述":"very faint, pretty large","简略描述":"vF, pL"},{"ID":"7733","标识":"NGC7733","M标识":"NGC7733","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h42m32.9s","赤经D(J2000)":"23.709138888888887","赤纬(J2000)":"-65h57m22s","赤纬D(J2000)":"-65.95611111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"107","详细描述":"extremely faint, small, round, western of 2","简略描述":"eF, S, R, p of 2"},{"ID":"7734","标识":"NGC7734","M标识":"NGC7734","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h42m43s","赤经D(J2000)":"23.711944444444445","赤纬(J2000)":"-65h56m39s","赤纬D(J2000)":"-65.94416666666667","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"119","详细描述":"extremely faint, considerably small, round, eastern of 2","简略描述":"eF, cS, R, f of 2"},{"ID":"7735","标识":"NGC7735","M标识":"NGC7735","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h42m17.3s","赤经D(J2000)":"23.704805555555556","赤纬(J2000)":"+26h13m56s","赤纬D(J2000)":"26.23222222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"90","详细描述":"very faint, small, very little extended, 13th magnitude star to the northeast, very near","简略描述":"vF, S, vlE, * 13 nf, v nr"},{"ID":"7736","标识":"NGC7736","M标识":"NGC7736","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h42m25.7s","赤经D(J2000)":"23.70713888888889","赤纬(J2000)":"-19h27m9s","赤纬D(J2000)":"-19.4525","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"","详细描述":"extremely faint, extremely small, gradually brighter middle, between two 12th magnitude stars","简略描述":"eF, eS, gbM, bet 2 st 12"},{"ID":"7737","标识":"NGC7737","M标识":"NGC7737","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h42m46.3s","赤经D(J2000)":"23.71286111111111","赤纬(J2000)":"+27h3m9s","赤纬D(J2000)":"27.052500000000002","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"147","详细描述":"very faint, small, much brighter middle and nucleus","简略描述":"vF, S, mbMN"},{"ID":"7738","标识":"NGC7738","M标识":"NGC7738","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h44m2s","赤经D(J2000)":"23.733888888888888","赤纬(J2000)":"+0h31m3s","赤纬D(J2000)":"0.5175000000000001","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2","短轴(分)":"1.5","方位角":"80","详细描述":"very faint, northern of 2","简略描述":"vF, n of 2"},{"ID":"7739","标识":"NGC7739","M标识":"NGC7739","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h44m30s","赤经D(J2000)":"23.741666666666667","赤纬(J2000)":"+0h19m16s","赤纬D(J2000)":"0.32111111111111107","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"90","详细描述":"southern of 2, very near","简略描述":"s of 2, v nr"},{"ID":"7740","标识":"NGC7740","M标识":"NGC7740","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h43m32.2s","赤经D(J2000)":"23.72561111111111","赤纬(J2000)":"+27h18m45s","赤纬D(J2000)":"27.3125","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"140","详细描述":"very faint, small, a little brighter middle, stellar","简略描述":"vF, S, lbM, stellar"},{"ID":"7741","标识":"NGC7741","M标识":"NGC7741","拓展名":"","组件":"","Class":"II 208","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h43m54.3s","赤经D(J2000)":"23.731749999999998","赤纬(J2000)":"+26h4m31s","赤纬D(J2000)":"26.075277777777778","可见光星等V":"11.3","摄影(蓝光)星等B":"11.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"4.5","短轴(分)":"2.9","方位角":"170","详细描述":"considerably faint, considerably large, irregularly round, double star of 10th and 12th magnitudes 2 arcmin to northwest","简略描述":"cF, cL, iR, D * 10,12 np 2'"},{"ID":"7742","标识":"NGC7742","M标识":"NGC7742","拓展名":"","组件":"","Class":"II 255","业余排名":"6.5","中文名":"荷包蛋星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h44m15.7s","赤经D(J2000)":"23.737694444444447","赤纬(J2000)":"+10h46m1s","赤纬D(J2000)":"10.766944444444444","可见光星等V":"11.6","摄影(蓝光)星等B":"12.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.7","短轴(分)":"1.7","方位角":"","详细描述":"considerably bright, considerably small, gradually much brighter middle, 12th magnitude star 72 arcsec to east","简略描述":"cB, cS, gmbM, * 12 f 72\""},{"ID":"7743","标识":"NGC7743","M标识":"NGC7743","拓展名":"","组件":"","Class":"II 256","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h44m21.1s","赤经D(J2000)":"23.739194444444447","赤纬(J2000)":"+9h56m2s","赤纬D(J2000)":"9.93388888888889","可见光星等V":"11.5","摄影(蓝光)星等B":"12.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.8","短轴(分)":"2.4","方位角":"80","详细描述":"pretty faint, small, round, 14th magnitude star to southeast","简略描述":"pF, S, R, * 14 sf"},{"ID":"7744","标识":"NGC7744","M标识":"NGC7744","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"23h44m59.2s","赤经D(J2000)":"23.74977777777778","赤纬(J2000)":"-42h54m36s","赤纬D(J2000)":"-42.91","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"1.8","方位角":"105","详细描述":"considerably bright, small, very little extended, suddenly very much brighter middle equal to 14th magnitude star","简略描述":"cB, S, vlE, svmbM * 14"},{"ID":"7745","标识":"NGC7745","M标识":"NGC7745","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h44m45.7s","赤经D(J2000)":"23.74602777777778","赤纬(J2000)":"+25h54m34s","赤纬D(J2000)":"25.909444444444443","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"7746","标识":"NGC7746","M标识":"NGC7746","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h45m19.9s","赤经D(J2000)":"23.75552777777778","赤纬(J2000)":"-1h41m4s","赤纬D(J2000)":"-1.6844444444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"154","详细描述":"extremely faint, pretty small, round, star near to south","简略描述":"eF, pS, R, * nr s"},{"ID":"7747","标识":"NGC7747","M标识":"NGC7747","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h45m32.5s","赤经D(J2000)":"23.759027777777778","赤纬(J2000)":"+27h21m38s","赤纬D(J2000)":"27.360555555555557","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"36","详细描述":"very faint, very small, irregularly round","简略描述":"vF, vS, iR"},{"ID":"7748","标识":"NGC7748","M标识":"NGC7748","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"23h44m56.5s","赤经D(J2000)":"23.74902777777778","赤纬(J2000)":"+69h45m19s","赤纬D(J2000)":"69.75527777777778","可见光星等V":"99","摄影(蓝光)星等B":"7.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a very large nebulosity, surrounds 7th magnitude star","简略描述":"vL neby, surrounds * 7"},{"ID":"7749","标识":"NGC7749","M标识":"NGC7749","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h45m47.5s","赤经D(J2000)":"23.763194444444444","赤纬(J2000)":"-29h31m4s","赤纬D(J2000)":"-29.517777777777777","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"28","详细描述":"very faint, small, round, gradually much brighter middle, 12th magnitude star to east","简略描述":"vF, S, R, gmbM, * 12 f"},{"ID":"7750","标识":"NGC7750","M标识":"NGC7750","拓展名":"","组件":"","Class":"III 427","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h46m37.8s","赤经D(J2000)":"23.777166666666666","赤纬(J2000)":"+3h47m59s","赤纬D(J2000)":"3.799722222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"171","详细描述":"considerably faint, pretty large, very little extended 0°, a little brighter middle, 11th magnitude star to southeast","简略描述":"cF, pL, vlE 0°, lbM, * 11 sf"},{"ID":"7751","标识":"NGC7751","M标识":"NGC7751","拓展名":"","组件":"","Class":"III 437","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h46m58.4s","赤经D(J2000)":"23.782888888888888","赤纬(J2000)":"+6h51m43s","赤纬D(J2000)":"6.861944444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"faint, small, round, gradually brighter middle, extremely mottled but not resolved","简略描述":"F, S, R, gbM, er"},{"ID":"7752","标识":"NGC7752","M标识":"NGC7752","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h46m58.5s","赤经D(J2000)":"23.782916666666665","赤纬(J2000)":"+29h27m34s","赤纬D(J2000)":"29.459444444444443","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"113","详细描述":"faint, small, a little extended, west of h 2268","简略描述":"F, S, lE, p h 2268"},{"ID":"7753","标识":"NGC7753","M标识":"NGC7753","拓展名":"","组件":"","Class":"II 213","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h47m4.8s","赤经D(J2000)":"23.78466666666667","赤纬(J2000)":"+29h29m2s","赤纬D(J2000)":"29.483888888888888","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3.3","短轴(分)":"2.1","方位角":"50","详细描述":"faint, small, a little extended, west of h 2268","简略描述":"cF, cL, vlE, vglbM, r"},{"ID":"7754","标识":"NGC7754","M标识":"NGC7754","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h49m11.2s","赤经D(J2000)":"23.819777777777777","赤纬(J2000)":"-16h36m2s","赤纬D(J2000)":"-16.600555555555555","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"128","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7755","标识":"NGC7755","M标识":"NGC7755","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h47m51.9s","赤经D(J2000)":"23.79775","赤纬(J2000)":"-30h31m25s","赤纬D(J2000)":"-30.52361111111111","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"3.8","短轴(分)":"2.8","方位角":"20","详细描述":"bright, considerably large, round, pretty suddenly much brighter middle","简略描述":"B, cL, R, psmbM"},{"ID":"7756","标识":"NGC7756","M标识":"NGC7756","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h48m28.5s","赤经D(J2000)":"23.807916666666667","赤纬(J2000)":"+4h7m32s","赤纬D(J2000)":"4.125555555555555","可见光星等V":"99","摄影(蓝光)星等B":"12.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a nebula, 5 arcmin southwest of h 2270","简略描述":"Neb, 5' sp h 2270"},{"ID":"7757","标识":"NGC7757","M标识":"NGC7757","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h48m45.5s","赤经D(J2000)":"23.81263888888889","赤纬(J2000)":"+4h10m17s","赤纬D(J2000)":"4.171388888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.1","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.4","短轴(分)":"1.7","方位角":"115","详细描述":"very faint, considerably large, very little extended, very gradually a little brighter middle, two 13th magnitude stars to north","简略描述":"vF, cL, vlE, vglbM, 2 st 13 n"},{"ID":"7758","标识":"NGC7758","M标识":"NGC7758","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h48m55.1s","赤经D(J2000)":"23.815305555555558","赤纬(J2000)":"-22h1m27s","赤纬D(J2000)":"-22.024166666666666","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"118","详细描述":"extremely faint, very small, irregularly round, suddenly brighter middle, 10th magnitude double star 50 seconds of time to northeast","简略描述":"eF, vS, iR, sbM, D * 10 nf 50s"},{"ID":"7759","标识":"NGC7759","M标识":"NGC7759","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h48m54.6s","赤经D(J2000)":"23.815166666666666","赤纬(J2000)":"-16h32m27s","赤纬D(J2000)":"-16.540833333333335","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"141","详细描述":"very faint, small, round, a little brighter middle, bright star to north","简略描述":"vF, S, R, lbM, B * n"},{"ID":"7760","标识":"NGC7760","M标识":"NGC7760","拓展名":"","组件":"","Class":"III 854","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h49m11.9s","赤经D(J2000)":"23.819972222222223","赤纬(J2000)":"+30h58m59s","赤纬D(J2000)":"30.983055555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"considerably bright, very small, round, pretty suddenly brighter middle, 12th magnitude star attached","简略描述":"cB, vS, R, psbM, * 12 att"},{"ID":"7761","标识":"NGC7761","M标识":"NGC7761","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h51m28.8s","赤经D(J2000)":"23.858","赤纬(J2000)":"-13h22m52s","赤纬D(J2000)":"-13.381111111111112","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"faint, very small, round, gradually brighter middle, 10th magnitude star 8 arcmin to west","简略描述":"F, vS, R, gbM, * 10 p 8'"},{"ID":"7762","标识":"NGC7762","M标识":"NGC7762","拓展名":"","组件":"","Class":"VII 55","业余排名":"6.5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"23h50m0s","赤经D(J2000)":"23.833333333333332","赤纬(J2000)":"+68h2m18s","赤纬D(J2000)":"68.03833333333333","可见光星等V":"10","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, pretty compressed, stars from 11th to 15th magnitude","简略描述":"Cl, pRi, pC, st 11…15"},{"ID":"7763","标识":"NGC7763","M标识":"NGC7763","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h50m15.7s","赤经D(J2000)":"23.837694444444445","赤纬(J2000)":"-16h35m23s","赤纬D(J2000)":"-16.58972222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"163","详细描述":"extremely faint, very small, round, faint star to east","简略描述":"eF, vS, R, F * f"},{"ID":"7764","标识":"NGC7764","M标识":"NGC7764","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"23h50m53.6s","赤经D(J2000)":"23.848222222222223","赤纬(J2000)":"-40h43m48s","赤纬D(J2000)":"-40.730000000000004","可见光星等V":"12.2","摄影(蓝光)星等B":"12.6","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2","短轴(分)":"1.5","方位角":"148","详细描述":"bright, pretty large, round, gradually brighter middle","简略描述":"B, pL, R, gbM"},{"ID":"7765","标识":"NGC7765","M标识":"NGC7765","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h50m52.4s","赤经D(J2000)":"23.84788888888889","赤纬(J2000)":"+27h9m57s","赤纬D(J2000)":"27.16583333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very very faint, 100 arcsec northwest of h 2273","简略描述":"vvF, 100\" np h 2273"},{"ID":"7766","标识":"NGC7766","M标识":"NGC7766","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h50m55.8s","赤经D(J2000)":"23.84883333333333","赤纬(J2000)":"+27h7m37s","赤纬D(J2000)":"27.126944444444444","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"43","详细描述":"very faint, small, 85 arcsec south of h 2273","简略描述":"vF, S, 85\" s of h 2273"},{"ID":"7767","标识":"NGC7767","M标识":"NGC7767","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h50m56.5s","赤经D(J2000)":"23.849027777777778","赤纬(J2000)":"+27h5m12s","赤纬D(J2000)":"27.086666666666666","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"1","短轴(分)":"0.2","方位角":"142","详细描述":"very faint, small, a little extended, star 19 arcsec to west","简略描述":"vF, S, lE, * p 19\""},{"ID":"7768","标识":"NGC7768","M标识":"NGC7768","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h50m58.4s","赤经D(J2000)":"23.849555555555554","赤纬(J2000)":"+27h8m52s","赤纬D(J2000)":"27.147777777777776","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"60","详细描述":"very faint, small, extended, star involved, star very near to west","简略描述":"vF, S, E, * inv, * p v nr"},{"ID":"7769","标识":"NGC7769","M标识":"NGC7769","拓展名":"","组件":"","Class":"II 230","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h51m4.1s","赤经D(J2000)":"23.85113888888889","赤纬(J2000)":"+20h9m2s","赤纬D(J2000)":"20.150555555555552","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"3.2","短轴(分)":"2.7","方位角":"170","详细描述":"pretty faint, pretty small, round, much brighter middle","简略描述":"pF, pS, R, mbM"},{"ID":"7770","标识":"NGC7770","M标识":"NGC7770","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h51m22.5s","赤经D(J2000)":"23.856250000000003","赤纬(J2000)":"+20h5m49s","赤纬D(J2000)":"20.096944444444443","可见光星等V":"13.8","摄影(蓝光)星等B":"14.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"17","详细描述":"very faint, very small, irregularly round, southern of 2","简略描述":"vF, vS, iR, s of 2"},{"ID":"7771","标识":"NGC7771","M标识":"NGC7771","拓展名":"","组件":"","Class":"II 231","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h51m24.6s","赤经D(J2000)":"23.856833333333334","赤纬(J2000)":"+20h6m44s","赤纬D(J2000)":"20.112222222222222","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.4","短轴(分)":"1.1","方位角":"68","详细描述":"pretty bright, pretty large, extended 84°, brighter middle, northern of 2","简略描述":"pB, pL, E 84°, bM, n of 2"},{"ID":"7772","标识":"NGC7772","M标识":"NGC7772","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1p","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h51m45s","赤经D(J2000)":"23.8625","赤纬(J2000)":"+16h14m54s","赤纬D(J2000)":"16.248333333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster of scattered 10th magnitude stars","简略描述":"Cl of sc st 10 m"},{"ID":"7773","标识":"NGC7773","M标识":"NGC7773","拓展名":"","组件":"","Class":"II 851","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h52m10s","赤经D(J2000)":"23.869444444444444","赤纬(J2000)":"+31h16m37s","赤纬D(J2000)":"31.276944444444442","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"pretty faint, considerably small, round, 13th magnitude star near to northeast","简略描述":"pF, cS, R, * 13 nf nr"},{"ID":"7774","标识":"NGC7774","M标识":"NGC7774","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S+S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h52m10.6s","赤经D(J2000)":"23.869611111111112","赤纬(J2000)":"+11h28m13s","赤纬D(J2000)":"11.470277777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.6","方位角":"93","详细描述":"extremely faint, small, round, in center of 3 stars","简略描述":"eF, S, R, in centre of 3 st"},{"ID":"7775","标识":"NGC7775","M标识":"NGC7775","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h52m24.4s","赤经D(J2000)":"23.873444444444445","赤纬(J2000)":"+28h46m21s","赤纬D(J2000)":"28.772499999999997","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"20","详细描述":"very faint, pretty small, a little extended, gradually a little brighter middle","简略描述":"vF, pS, lE, glbM"},{"ID":"7776","标识":"NGC7776","M标识":"NGC7776","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h54m16.5s","赤经D(J2000)":"23.90458333333333","赤纬(J2000)":"-13h35m11s","赤纬D(J2000)":"-13.586388888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"153","详细描述":"extremely faint, very small, a little extended, gradually brighter middle","简略描述":"eF, vS, lE, gbM"},{"ID":"7777","标识":"NGC7777","M标识":"NGC7777","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h53m12.5s","赤经D(J2000)":"23.886805555555554","赤纬(J2000)":"+28h17m2s","赤纬D(J2000)":"28.28388888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"48","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"7778","标识":"NGC7778","M标识":"NGC7778","拓展名":"","组件":"","Class":"III 231","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h53m19.5s","赤经D(J2000)":"23.888749999999998","赤纬(J2000)":"+7h52m14s","赤纬D(J2000)":"7.870555555555556","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"considerably faint, small, round, pretty suddenly brighter middle, stellar, 1st of 4","简略描述":"cF, S, R, psbM, stellar, 1st of 4"},{"ID":"7779","标识":"NGC7779","M标识":"NGC7779","拓展名":"","组件":"","Class":"III 232","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h53m26.6s","赤经D(J2000)":"23.890722222222223","赤纬(J2000)":"+7h52m34s","赤纬D(J2000)":"7.876111111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"10","详细描述":"pretty faint, small, round, pretty suddenly brighter middle, stellar, 2nd of 4","简略描述":"pF, S, R, psbM, stellar, 2nd of 4"},{"ID":"7780","标识":"NGC7780","M标识":"NGC7780","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h53m32.1s","赤经D(J2000)":"23.89225","赤纬(J2000)":"+8h7m6s","赤纬D(J2000)":"8.118333333333334","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"3","详细描述":"very faint, very small, round, a little brighter middle, faint star involved","简略描述":"vF, vS, R, lbM, F * inv"},{"ID":"7781","标识":"NGC7781","M标识":"NGC7781","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h53m45.9s","赤经D(J2000)":"23.896083333333333","赤纬(J2000)":"+7h51m39s","赤纬D(J2000)":"7.860833333333333","可见光星等V":"13.9","摄影(蓝光)星等B":"15","B-V":"1.1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"13","详细描述":"faint, small, round, 3rd of 4","简略描述":"F, S, R, 3rd of 4"},{"ID":"7782","标识":"NGC7782","M标识":"NGC7782","拓展名":"","组件":"","Class":"III 233","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h53m53.9s","赤经D(J2000)":"23.898305555555556","赤纬(J2000)":"+7h58m14s","赤纬D(J2000)":"7.970555555555555","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.2","短轴(分)":"1.3","方位角":"1","详细描述":"pretty faint, pretty large, a little extended, gradually a little brighter middle, 4th of 4","简略描述":"pF, pL, lE, glbM, 4th of 4"},{"ID":"7783","标识":"NGC7783","M标识":"NGC7783","拓展名":"A","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h54m10.1s","赤经D(J2000)":"23.902805555555553","赤纬(J2000)":"+0h23m0s","赤纬D(J2000)":"0.38333333333333336","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"100","详细描述":"faint, small, a little extended","简略描述":"F, S, lE"},{"ID":"7784","标识":"NGC7784","M标识":"NGC7784","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h55m13.6s","赤经D(J2000)":"23.920444444444446","赤纬(J2000)":"+21h45m46s","赤纬D(J2000)":"21.762777777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, extremely small, a little brighter middle, mottled but not resolved?, western of 2","简略描述":"vF, eS, lbM, r?, p of 2"},{"ID":"7785","标识":"NGC7785","M标识":"NGC7785","拓展名":"","组件":"","Class":"II 468","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h55m18.9s","赤经D(J2000)":"23.921916666666668","赤纬(J2000)":"+5h54m58s","赤纬D(J2000)":"5.916111111111111","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.5","短轴(分)":"1.3","方位角":"143","详细描述":"pretty bright, pretty small, irregularly round, pretty suddenly brighter middle, mottled but not resolved, 8th magnitude star 4.5 arcmin to west","简略描述":"pB, pS, iR, psbM, r, * 8 p 4'.5"},{"ID":"7786","标识":"NGC7786","M标识":"NGC7786","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h55m21.7s","赤经D(J2000)":"23.922694444444446","赤纬(J2000)":"+21h35m19s","赤纬D(J2000)":"21.58861111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"2","详细描述":"pretty faint, pretty small, a little extended, very faint star involved, eastern of 2","简略描述":"pF, pS, lE, vF st inv, f of 2"},{"ID":"7787","标识":"NGC7787","M标识":"NGC7787","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h55m52s","赤经D(J2000)":"23.93111111111111","赤纬(J2000)":"+0h33m28s","赤纬D(J2000)":"0.5577777777777778","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"7788","标识":"NGC7788","M标识":"NGC7788","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"23h56m46s","赤经D(J2000)":"23.94611111111111","赤纬(J2000)":"+61h24m0s","赤纬D(J2000)":"61.4","可见光星等V":"9.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"a cluster, small, pretty rich, very compressed, stars of 10th magnitude and from 13th magnitude","简略描述":"Cl, S, pRi, vC, st 10, 13…"},{"ID":"7789","标识":"NGC7789","M标识":"NGC7789","拓展名":"","组件":"","Class":"VI 30","业余排名":"5","中文名":"卡洛琳玫瑰星团","类型":"OCL","含重复类型":"OCL","形态":"II2r","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"23h57m28.6s","赤经D(J2000)":"23.957944444444443","赤纬(J2000)":"+56h42m52s","赤纬D(J2000)":"56.714444444444446","可见光星等V":"6.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, very rich, very much compressed, stars from 11th to 18th magnitude","简略描述":"Cl, vL, vRi, vmC, st 11…18"},{"ID":"7790","标识":"NGC7790","M标识":"NGC7790","拓展名":"","组件":"","Class":"VII 56","业余排名":"6","中文名":"寡妇的网星团","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"23h58m24.2s","赤经D(J2000)":"23.973388888888888","赤纬(J2000)":"+61h12m30s","赤纬D(J2000)":"61.208333333333336","可见光星等V":"8.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, pretty compressed","简略描述":"Cl, pRi, pC"},{"ID":"7791","标识":"NGC7791","M标识":"NGC7791","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h57m57.2s","赤经D(J2000)":"23.965888888888887","赤纬(J2000)":"+10h45m58s","赤纬D(J2000)":"10.766111111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, a faint star?, [d'Arrest not found]","简略描述":"vF, vS, ? F * (d'A not found)"},{"ID":"7792","标识":"NGC7792","M标识":"NGC7792","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h58m3.6s","赤经D(J2000)":"23.967666666666666","赤纬(J2000)":"+16h30m7s","赤纬D(J2000)":"16.501944444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.8","方位角":"3","详细描述":"extremely faint, extremely small, brighter middle","简略描述":"eF, eS, bM"},{"ID":"7793","标识":"NGC7793","M标识":"NGC7793","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"邦德星系","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h57m49.2s","赤经D(J2000)":"23.963666666666665","赤纬(J2000)":"-32h35m30s","赤纬D(J2000)":"-32.59166666666667","可见光星等V":"9.1","摄影(蓝光)星等B":"9.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"9.3","短轴(分)":"6.3","方位角":"98","详细描述":"like a comet (1850)","简略描述":"Like a comet (1850)"},{"ID":"7794","标识":"NGC7794","M标识":"NGC7794","拓展名":"","组件":"","Class":"III 466","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h58m34.1s","赤经D(J2000)":"23.976138888888887","赤纬(J2000)":"+10h43m42s","赤纬D(J2000)":"10.728333333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"1","方位角":"0","详细描述":"very faint, pretty small, irregularly round","简略描述":"vF, pS, iR"},{"ID":"7795","标识":"NGC7795","M标识":"NGC7795","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"23h58m34.5s","赤经D(J2000)":"23.976249999999997","赤纬(J2000)":"+60h1m25s","赤纬D(J2000)":"60.02361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"16","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, poor, a little compressed, stars of 7th magnitude and from 10th magnitude","简略描述":"Cl, vL, P, lC, st 7, 10…"},{"ID":"7796","标识":"NGC7796","M标识":"NGC7796","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"23h58m59.7s","赤经D(J2000)":"23.983249999999998","赤纬(J2000)":"-55h27m29s","赤纬D(J2000)":"-55.45805555555556","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.2","短轴(分)":"1.9","方位角":"168","详细描述":"pretty bright, considerably small, round, gradually much brighter middle","简略描述":"pB, cS, R, gmbM"},{"ID":"7797","标识":"NGC7797","M标识":"NGC7797","拓展名":"","组件":"","Class":"III 867","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h58m58.8s","赤经D(J2000)":"23.982999999999997","赤纬(J2000)":"+3h38m3s","赤纬D(J2000)":"3.6341666666666668","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.9","方位角":"13","详细描述":"extremely faint, pretty small, irregularly round, a little brighter middle","简略描述":"eF, pS, iR, lbM"},{"ID":"7798","标识":"NGC7798","M标识":"NGC7798","拓展名":"","组件":"","Class":"II 232","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h59m25.6s","赤经D(J2000)":"23.990444444444446","赤纬(J2000)":"+20h45m0s","赤纬D(J2000)":"20.75","可见光星等V":"12.4","摄影(蓝光)星等B":"13","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"51","详细描述":"pretty faint, small, round, suddenly brighter middle, 10th magnitude star to southwest","简略描述":"pF, S, R, sbM, * 10 sp"},{"ID":"7799","标识":"NGC7799","M标识":"NGC7799","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h59m31.5s","赤经D(J2000)":"23.992083333333333","赤纬(J2000)":"+31h17m46s","赤纬D(J2000)":"31.296111111111113","可见光星等V":"99","摄影(蓝光)星等B":"14.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, 16th magnitude star close to west","简略描述":"vF, vS, * 16 close p"},{"ID":"7800","标识":"NGC7800","M标识":"NGC7800","拓展名":"","组件":"","Class":"II 10","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h59m37s","赤经D(J2000)":"23.99361111111111","赤纬(J2000)":"+14h48m27s","赤纬D(J2000)":"14.807500000000001","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.3","短轴(分)":"1.6","方位角":"42","详细描述":"faint, pretty small, extended 39°","简略描述":"F, pS, E 39°"},{"ID":"7801","标识":"NGC7801","M标识":"NGC7801","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h0m23s","赤经D(J2000)":"0.006388888888888889","赤纬(J2000)":"+50h44m24s","赤纬D(J2000)":"50.74","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty rich, pretty compressed, stars from 9th magnitude","简略描述":"Cl, pRi, pC, st 9…"},{"ID":"7802","标识":"NGC7802","M标识":"NGC7802","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h1m0.5s","赤经D(J2000)":"0.016805555555555556","赤纬(J2000)":"+6h14m30s","赤纬D(J2000)":"6.241666666666667","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"52","详细描述":"very faint, small, round, pretty suddenly brighter middle","简略描述":"vF, S, R, psbM"},{"ID":"7803","标识":"NGC7803","M标识":"NGC7803","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h1m20s","赤经D(J2000)":"0.022222222222222223","赤纬(J2000)":"+13h6m41s","赤纬D(J2000)":"13.111388888888888","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.6","方位角":"85","详细描述":"pretty faint, pretty small, round, faint star very near to northwest","简略描述":"pF, pS, R, F * np v nr"},{"ID":"7804","标识":"NGC7804","M标识":"NGC7804","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h1m18.8s","赤经D(J2000)":"0.02188888888888889","赤纬(J2000)":"+7h44m55s","赤纬D(J2000)":"7.748611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, a double star, nebulous?","简略描述":"vF, D *, nebulous ?"},{"ID":"7805","标识":"NGC7805","M标识":"NGC7805","拓展名":"","组件":"","Class":"III 855","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h1m26.7s","赤经D(J2000)":"0.02408333333333333","赤纬(J2000)":"+31h26m1s","赤纬D(J2000)":"31.433611111111112","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"45","详细描述":"extremely faint, small, round, suddenly brighter middle, stellar, southwestern of 2","简略描述":"eF, S, R, sbM, stellar, sp of 2"},{"ID":"7806","标识":"NGC7806","M标识":"NGC7806","拓展名":"","组件":"","Class":"III 856","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h1m30.1s","赤经D(J2000)":"0.025027777777777777","赤纬(J2000)":"+31h26m31s","赤纬D(J2000)":"31.441944444444445","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"20","详细描述":"extremely faint, small, round, suddenly brighter middle, stellar, southwestern of 2","简略描述":"eF, S, R, stellar, nf of 2"},{"ID":"7807","标识":"NGC7807","M标识":"NGC7807","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h0m26.6s","赤经D(J2000)":"0.007388888888888889","赤纬(J2000)":"-18h50m31s","赤纬D(J2000)":"-18.841944444444444","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"27","详细描述":"extremely faint, pretty small, irregular figure","简略描述":"eF, pS, iF"},{"ID":"7808","标识":"NGC7808","M标识":"NGC7808","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h3m32.1s","赤经D(J2000)":"0.05891666666666667","赤纬(J2000)":"-10h44m39s","赤纬D(J2000)":"-10.744166666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"extremely faint, very small, round, stellar nucleus, 8.5 magnitude star 3 arcmin to southwest","简略描述":"eF, vS, R, stell N, * 8.5 sp 3'"},{"ID":"7809","标识":"NGC7809","M标识":"NGC7809","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h2m9.4s","赤经D(J2000)":"0.035944444444444446","赤纬(J2000)":"+2h56m26s","赤纬D(J2000)":"2.9405555555555556","可见光星等V":"14.5","摄影(蓝光)星等B":"15.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"95","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"7810","标识":"NGC7810","M标识":"NGC7810","拓展名":"","组件":"","Class":"III 984","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h2m19.1s","赤经D(J2000)":"0.03863888888888889","赤纬(J2000)":"+12h58m18s","赤纬D(J2000)":"12.971666666666668","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"80","详细描述":"pretty faint, stellar, 2 stars in line to northwest","简略描述":"pF, stellar, 2 st np in line"},{"ID":"7811","标识":"NGC7811","M标识":"NGC7811","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h2m26.4s","赤经D(J2000)":"0.04066666666666666","赤纬(J2000)":"+3h21m7s","赤纬D(J2000)":"3.3519444444444444","可见光星等V":"14.5","摄影(蓝光)星等B":"15.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, round, stellar","简略描述":"vF, S, R, stellar"},{"ID":"7812","标识":"NGC7812","M标识":"NGC7812","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h2m54.2s","赤经D(J2000)":"0.04838888888888889","赤纬(J2000)":"-34h14m9s","赤纬D(J2000)":"-34.23583333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"146","详细描述":"very faint, small, round, among stars","简略描述":"vF, S, R, am st"},{"ID":"7813","标识":"NGC7813","M标识":"NGC7813","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h4m9.2s","赤经D(J2000)":"0.06922222222222223","赤纬(J2000)":"-11h59m2s","赤纬D(J2000)":"-11.983888888888888","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"158","详细描述":"extremely faint, very small, extended 80°, 8.5 magnitude star 38 seconds of time to east, 9th magnitude star 40 seconds of time to northeast","简略描述":"eF, vS, E 80°, * 8.5 f 38s, * 9 np 40s"},{"ID":"7814","标识":"NGC7814","M标识":"NGC7814","拓展名":"","组件":"","Class":"II 240","业余排名":"2","中文名":"小墨西哥帽星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h3m14.8s","赤经D(J2000)":"0.05411111111111112","赤纬(J2000)":"+16h8m43s","赤纬D(J2000)":"16.14527777777778","可见光星等V":"10.6","摄影(蓝光)星等B":"11.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"5.5","短轴(分)":"2.3","方位角":"135","详细描述":"considerably bright, considerably large, extended, very gradually brighter middle","简略描述":"cB, cL, E, vgbM"},{"ID":"7815","标识":"NGC7815","M标识":"NGC7815","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h3m24.9s","赤经D(J2000)":"0.05691666666666667","赤纬(J2000)":"+20h42m11s","赤纬D(J2000)":"20.703055555555554","可见光星等V":"99","摄影(蓝光)星等B":"14.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, a little extended, h 2300 to northeast","简略描述":"F, S, lE, h 2300 nf"},{"ID":"7816","标识":"NGC7816","M标识":"NGC7816","拓展名":"","组件":"","Class":"III 436","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h3m49s","赤经D(J2000)":"0.06361111111111112","赤纬(J2000)":"+7h28m42s","赤纬D(J2000)":"7.4783333333333335","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"171","详细描述":"very faint, pretty large, round, gradually brighter middle","简略描述":"vF, pL, R, gbM"},{"ID":"7817","标识":"NGC7817","M标识":"NGC7817","拓展名":"","组件":"","Class":"II 227","业余排名":"15","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h3m58.5s","赤经D(J2000)":"0.06625","赤纬(J2000)":"+20h45m2s","赤纬D(J2000)":"20.750555555555554","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3.5","短轴(分)":"1","方位角":"45","详细描述":"pretty faint, considerably large, much extended 45°±, a little brighter middle","简略描述":"pF, cL, mE 45° ±, lbm"},{"ID":"7818","标识":"NGC7818","M标识":"NGC7818","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h4m9s","赤经D(J2000)":"0.06916666666666667","赤纬(J2000)":"+7h22m45s","赤纬D(J2000)":"7.379166666666666","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"most extremely faint, pretty small, very difficult, southeast of h 2298","简略描述":"eeF, pS, v diffic, sf h 2298"},{"ID":"7819","标识":"NGC7819","M标识":"NGC7819","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h4m24.5s","赤经D(J2000)":"0.07347222222222222","赤纬(J2000)":"+31h28m21s","赤纬D(J2000)":"31.472499999999997","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"109","详细描述":"extremely faint, large","简略描述":"eF, L"},{"ID":"7820","标识":"NGC7820","M标识":"NGC7820","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h4m30.9s","赤经D(J2000)":"0.07525","赤纬(J2000)":"+5h11m59s","赤纬D(J2000)":"5.199722222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"165","详细描述":"pretty faint, very small, very suddenly much brighter middle, 14th magnitude star to southwest","简略描述":"pF, vS, vsmbM, * 14 sp"},{"ID":"7821","标识":"NGC7821","M标识":"NGC7821","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h5m16.5s","赤经D(J2000)":"0.08791666666666666","赤纬(J2000)":"-16h28m35s","赤纬D(J2000)":"-16.476388888888888","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"111","详细描述":"very faint, pretty small, irregular figure, gradually a little brighter middle","简略描述":"vF, pS, iF, glbM"},{"ID":"7822","标识":"NGC7822","M标识":"NGC7822","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"0h3m36s","赤经D(J2000)":"0.060000000000000005","赤纬(J2000)":"+67h9m0s","赤纬D(J2000)":"67.15","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"100","短轴(分)":"","方位角":"","详细描述":"a remarkable object, most extremely faint, most extremely large","简略描述":"! eeF, eeL"},{"ID":"7823","标识":"NGC7823","M标识":"NGC7823","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h4m45.8s","赤经D(J2000)":"0.07938888888888888","赤纬(J2000)":"-62h3m40s","赤纬D(J2000)":"-62.06111111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"1","方位角":"21","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"7824","标识":"NGC7824","M标识":"NGC7824","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h5m6.2s","赤经D(J2000)":"0.08505555555555555","赤纬(J2000)":"+6h55m14s","赤纬D(J2000)":"6.920555555555556","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"145","详细描述":"pretty faint, small, round, 10th magnitude star to northwest","简略描述":"pF, S, R, * 10 np"},{"ID":"7825","标识":"NGC7825","M标识":"NGC7825","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h5m6.7s","赤经D(J2000)":"0.08519444444444443","赤纬(J2000)":"+5h12m11s","赤纬D(J2000)":"5.203055555555555","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.5","方位角":"135","详细描述":"very faint, small, gradually brighter middle","简略描述":"vF, S, gbM"},{"ID":"7826","标识":"NGC7826","M标识":"NGC7826","拓展名":"","组件":"","Class":"VIII 29","业余排名":"15","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h5m15s","赤经D(J2000)":"0.0875","赤纬(J2000)":"-20h42m54s","赤纬D(J2000)":"-20.715","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"","方位角":"","详细描述":"a cluster, very poor, very little compressed","简略描述":"Cl, vP, vlC"},{"ID":"7827","标识":"NGC7827","M标识":"NGC7827","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h5m27.7s","赤经D(J2000)":"0.09102777777777778","赤纬(J2000)":"+5h13m19s","赤纬D(J2000)":"5.2219444444444445","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"45","详细描述":"very faint, small, round, 12 or 13th magnitude star to northeast","简略描述":"vF, S, R, * 12·13 nf"},{"ID":"7828","标识":"NGC7828","M标识":"NGC7828","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Ring B","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h6m27.1s","赤经D(J2000)":"0.10752777777777778","赤纬(J2000)":"-13h24m57s","赤纬D(J2000)":"-13.415833333333333","可见光星等V":"13.9","摄影(蓝光)星等B":"14.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.5","方位角":"140","详细描述":"extremely faint, small, extended 130°, suddenly brighter middle and nucleus, 15th magnitude star to southeast, NGC 7829 20 arcsec away at position angle 100°","简略描述":"eF, S, E 130°, sbMN, * 15 sf, 100° 20\""},{"ID":"7829","标识":"NGC7829","M标识":"NGC7829","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Ring A","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h6m29.1s","赤经D(J2000)":"0.10808333333333334","赤纬(J2000)":"-13h25m16s","赤纬D(J2000)":"-13.421111111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"130","详细描述":"extremely faint, small, extended 130°, suddenly brighter middle and nucleus, 15th magnitude star to southeast, NGC 7829 20 arcsec away at position angle 100°","简略描述":"eF, eS, R (neb ?), f of 2, 100° 20\""},{"ID":"7830","标识":"NGC7830","M标识":"NGC7830","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h6m2.2s","赤经D(J2000)":"0.10061111111111112","赤纬(J2000)":"+8h20m34s","赤纬D(J2000)":"8.342777777777778","可见光星等V":"99","摄影(蓝光)星等B":"12.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, nebulous 13th magnitude star","简略描述":"eF, neb * 13m"},{"ID":"7831","标识":"NGC7831","M标识":"NGC7831","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h7m19.3s","赤经D(J2000)":"0.12202777777777778","赤纬(J2000)":"+32h36m33s","赤纬D(J2000)":"32.60916666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"1.5","短轴(分)":"0.3","方位角":"38","详细描述":"extremely faint, very small, much extended, very faint star very near","简略描述":"eF, vS, mE, vF * v nr"},{"ID":"7832","标识":"NGC7832","M标识":"NGC7832","拓展名":"","组件":"","Class":"III 190","业余排名":"6.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h6m28.4s","赤经D(J2000)":"0.1078888888888889","赤纬(J2000)":"-3h43m0s","赤纬D(J2000)":"-3.716666666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.9","短轴(分)":"1","方位角":"25","详细描述":"very faint, very small, round, very gradually then pretty suddenly much brighter middle, two 9th magnitude stars to southeast","简略描述":"vF, vS, R, vgpsmbM, 2 st 9 sf"},{"ID":"7833","标识":"NGC7833","M标识":"NGC7833","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h6m32.6s","赤经D(J2000)":"0.10905555555555556","赤纬(J2000)":"+27h38m48s","赤纬D(J2000)":"27.646666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, very small, very faint, 2.5 arcmin, nebulous?","简略描述":"Cl, vS, vF, 2'.5, nebs?"},{"ID":"7834","标识":"NGC7834","M标识":"NGC7834","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h6m37.9s","赤经D(J2000)":"0.11052777777777778","赤纬(J2000)":"+8h22m8s","赤纬D(J2000)":"8.36888888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"18","详细描述":"most extremely faint, very small","简略描述":"eeF, vS"},{"ID":"7835","标识":"NGC7835","M标识":"NGC7835","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h6m46.7s","赤经D(J2000)":"0.11297222222222222","赤纬(J2000)":"+8h25m38s","赤纬D(J2000)":"8.427222222222222","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"162","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"7836","标识":"NGC7836","M标识":"NGC7836","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h8m1.6s","赤经D(J2000)":"0.13377777777777777","赤纬(J2000)":"+33h4m17s","赤纬D(J2000)":"33.07138888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"133","详细描述":"extremely faint, very small, round, between 2 stars","简略描述":"eF, vS, R, bet 2 st"},{"ID":"7837","标识":"NGC7837","M标识":"NGC7837","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h6m51.4s","赤经D(J2000)":"0.11427777777777778","赤纬(J2000)":"+8h21m7s","赤纬D(J2000)":"8.351944444444444","可见光星等V":"15.6","摄影(蓝光)星等B":"16.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"171","详细描述":"extremely faint, western of double nebula","简略描述":"eF, p of D neb"},{"ID":"7838","标识":"NGC7838","M标识":"NGC7838","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h6m53.9s","赤经D(J2000)":"0.11497222222222223","赤纬(J2000)":"+8h21m7s","赤纬D(J2000)":"8.351944444444444","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"93","详细描述":"extremely faint, western of double nebula","简略描述":"eF, f of D neb"},{"ID":"7839","标识":"NGC7839","M标识":"NGC7839","拓展名":"","组件":"","Class":"","业余排名":"19","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h7m0.7s","赤经D(J2000)":"0.11686111111111111","赤纬(J2000)":"+27h38m10s","赤纬D(J2000)":"27.63611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, diffuse, mottled but not resolved","简略描述":"vF, pS, dif, r"},{"ID":"7840","标识":"NGC7840","M标识":"NGC7840","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h7m8.8s","赤经D(J2000)":"0.11911111111111111","赤纬(J2000)":"+8h23m5s","赤纬D(J2000)":"8.384722222222221","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"125","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"7841","标识":"IC1","M标识":"IC1","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h8m27.3s","赤经D(J2000)":"0.14091666666666666","赤纬(J2000)":"+27h43m9s","赤纬D(J2000)":"27.719166666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a double star, magnitudes 13 and 13, one with nebulosity","简略描述":"D *, 13 & 13, one nebs"},{"ID":"7842","标识":"IC2","M标识":"IC2","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h11m0.8s","赤经D(J2000)":"0.18355555555555556","赤纬(J2000)":"-12h49m20s","赤纬D(J2000)":"-12.822222222222223","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"141","详细描述":"faint, small, brighter middle","简略描述":"F, S, bM"},{"ID":"7843","标识":"IC3","M标识":"IC3","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h12m6s","赤经D(J2000)":"0.2016666666666667","赤纬(J2000)":"-0h24m53s","赤纬D(J2000)":"-0.41472222222222227","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"55","详细描述":"faint, very small, irregular figure, mottled but not resolved","简略描述":"F, vS, iF, r"},{"ID":"7844","标识":"IC4","M标识":"IC4","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h13m27s","赤经D(J2000)":"0.22416666666666668","赤纬(J2000)":"+17h29m9s","赤纬D(J2000)":"17.485833333333336","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.9","方位角":"10","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"7845","标识":"IC5","M标识":"IC5","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h17m34.9s","赤经D(J2000)":"0.2930277777777778","赤纬(J2000)":"-9h32m34s","赤纬D(J2000)":"-9.542777777777777","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"9","详细描述":"a double star, magnitudes 13 and 13, one with nebulosity","简略描述":"F, neb * 13 m"},{"ID":"7846","标识":"IC6","M标识":"IC6","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h18m54.9s","赤经D(J2000)":"0.31525","赤纬(J2000)":"-3h16m34s","赤纬D(J2000)":"-3.276111111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, very small, round, much brighter middle equal to 14th magnitude star","简略描述":"F, vS, R, mbM = * 14"},{"ID":"7847","标识":"IC7","M标识":"IC7","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h18m53s","赤经D(J2000)":"0.31472222222222224","赤纬(J2000)":"+10h35m43s","赤纬D(J2000)":"10.595277777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"0","详细描述":"faint, very small, round, 12.5 magnitude star close","简略描述":"F, vS, R, * 12.5 close"},{"ID":"7848","标识":"IC8","M标识":"IC8","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h19m2.6s","赤经D(J2000)":"0.3173888888888889","赤纬(J2000)":"-3h13m19s","赤纬D(J2000)":"-3.2219444444444445","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"128","详细描述":"very faint, very small, irregularly extended, a little brighter middle","简略描述":"vF, vS, irr E, lbM"},{"ID":"7849","标识":"IC9","M标识":"IC9","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h19m44.2s","赤经D(J2000)":"0.32894444444444443","赤纬(J2000)":"-14h7m17s","赤纬D(J2000)":"-14.12138888888889","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"129","详细描述":"very faint, pretty large, round","简略描述":"vF, pL, R"},{"ID":"7850","标识":"IC10","M标识":"IC10","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"星爆星系","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h20m24.5s","赤经D(J2000)":"0.3401388888888889","赤纬(J2000)":"+59h17m33s","赤纬D(J2000)":"59.2925","可见光星等V":"10.4","摄影(蓝光)星等B":"11.8","B-V":"1.4","表面亮度(mag\/arcmin2)":"14","长轴(分)":"6.4","短轴(分)":"5.3","方位角":"135","详细描述":"faint star involved in an extremely faint, very large nebula","简略描述":"F * inv in eF, vL neb"},{"ID":"7851","标识":"IC11","M标识":"IC11","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Dup","形态":"EN","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h52m53.8s","赤经D(J2000)":"0.8816111111111111","赤纬(J2000)":"+56h37m30s","赤纬D(J2000)":"56.625","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"35","短轴(分)":"30","方位角":"","详细描述":"very faint, large, triple star on northwest corner","简略描述":"vF, L, triple * on np corner"},{"ID":"7852","标识":"IC12","M标识":"IC12","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h20m15.2s","赤经D(J2000)":"0.33755555555555555","赤纬(J2000)":"-2h39m12s","赤纬D(J2000)":"-2.6533333333333333","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"15","详细描述":"pretty faint, small, extended north-south","简略描述":"pF, S, E ns"},{"ID":"7853","标识":"IC13","M标识":"IC13","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h20m20.1s","赤经D(J2000)":"0.33891666666666664","赤纬(J2000)":"+7h42m2s","赤纬D(J2000)":"7.700555555555556","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"163","详细描述":"very faint, pretty large, extended north-south, diffuse","简略描述":"vF, pL, E ns, dif"},{"ID":"7854","标识":"IC14","M标识":"IC14","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h22m31.3s","赤经D(J2000)":"0.3753611111111111","赤纬(J2000)":"+10h29m25s","赤纬D(J2000)":"10.490277777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"suspected nebula","简略描述":"susp neb"},{"ID":"7855","标识":"IC15","M标识":"IC15","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h27m57.5s","赤经D(J2000)":"0.46597222222222223","赤纬(J2000)":"-0h3m41s","赤纬D(J2000)":"-0.061388888888888896","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, irregular figure, suddenly brighter middle","简略描述":"vF, vS, iF, sbM"},{"ID":"7856","标识":"IC16","M标识":"IC16","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h28m7.7s","赤经D(J2000)":"0.4688055555555556","赤纬(J2000)":"-13h5m39s","赤纬D(J2000)":"-13.094166666666668","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"51","详细描述":"pretty bright, round, brighter middle","简略描述":"pB, R, bM"},{"ID":"7857","标识":"IC17","M标识":"IC17","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h28m29.7s","赤经D(J2000)":"0.47491666666666665","赤纬(J2000)":"+2h38m55s","赤纬D(J2000)":"2.6486111111111112","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"pretty bright, very small, round, stellar","简略描述":"pB, vS, R, stellar"},{"ID":"7858","标识":"IC18","M标识":"IC18","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h28m35s","赤经D(J2000)":"0.4763888888888889","赤纬(J2000)":"-11h35m11s","赤纬D(J2000)":"-11.586388888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"15","详细描述":"pretty faint, small, irregular figure, gradually brighter middle","简略描述":"pF, S, iF, gbM"},{"ID":"7859","标识":"IC19","M标识":"IC19","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h28m39.4s","赤经D(J2000)":"0.4776111111111111","赤纬(J2000)":"-11h38m25s","赤纬D(J2000)":"-11.640277777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"27","详细描述":"pretty faint, small, irregular figure, gradually brighter middle","简略描述":"R, S, stellar = 14 m"},{"ID":"7860","标识":"IC20","M标识":"IC20","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h28m39.6s","赤经D(J2000)":"0.4776666666666667","赤纬(J2000)":"-13h0m35s","赤纬D(J2000)":"-13.009722222222223","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"pretty bright, round","简略描述":"pB, R"},{"ID":"7861","标识":"IC21","M标识":"IC21","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h29m10.4s","赤经D(J2000)":"0.4862222222222222","赤纬(J2000)":"-0h9m49s","赤纬D(J2000)":"-0.1636111111111111","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"pretty bright, very small, irregular figure","简略描述":"pB, vs, iF"},{"ID":"7862","标识":"IC22","M标识":"IC22","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h29m33.1s","赤经D(J2000)":"0.4925277777777778","赤纬(J2000)":"-9h4m49s","赤纬D(J2000)":"-9.080277777777777","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"45","详细描述":"faint, small, a little brighter middle, mottled but not resolved","简略描述":"F, S, lbM, r"},{"ID":"7863","标识":"IC23","M标识":"IC23","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h30m50.7s","赤经D(J2000)":"0.5140833333333333","赤纬(J2000)":"-12h43m11s","赤纬D(J2000)":"-12.719722222222222","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"pretty bright, small, round, brighter middle","简略描述":"pB, S, R, bM"},{"ID":"7864","标识":"IC24","M标识":"IC24","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h31m16.7s","赤经D(J2000)":"0.5213055555555556","赤纬(J2000)":"+30h50m26s","赤纬D(J2000)":"30.840555555555554","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"small, a cluster, 30 to 40 seconds of arc, nebulous?","简略描述":"S, Cl, 30\"-40\", nebs ?"},{"ID":"7865","标识":"IC25","M标识":"IC25","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h31m12.2s","赤经D(J2000)":"0.5200555555555556","赤纬(J2000)":"-0h24m27s","赤纬D(J2000)":"-0.40750000000000003","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1","短轴(分)":"0.9","方位角":"39","详细描述":"faint, very small, irregularly round, a very little brighter middle, mottled but not resolved","简略描述":"F, vS, irrR, vlbM, r"},{"ID":"7866","标识":"IC26","M标识":"IC26","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h31m45.9s","赤经D(J2000)":"0.5294166666666668","赤纬(J2000)":"-13h20m16s","赤纬D(J2000)":"-13.337777777777779","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"7867","标识":"IC27","M标识":"IC27","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h33m6.2s","赤经D(J2000)":"0.5517222222222222","赤纬(J2000)":"-13h22m16s","赤纬D(J2000)":"-13.371111111111112","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, very small, a little extended east-west, brighter middle","简略描述":"F, vS, lE pf, bM"},{"ID":"7868","标识":"IC28","M标识":"IC28","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h33m8.6s","赤经D(J2000)":"0.5523888888888889","赤纬(J2000)":"-13h27m21s","赤纬D(J2000)":"-13.455833333333333","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"90","详细描述":"very faint, diffuse, a very little brighter middle","简略描述":"vF, dif, vlbM"},{"ID":"7869","标识":"IC29","M标识":"IC29","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h34m10.7s","赤经D(J2000)":"0.5696388888888889","赤纬(J2000)":"-2h10m37s","赤纬D(J2000)":"-2.176944444444444","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, small, round, a little brighter middle","简略描述":"vF, S, R, lbM"},{"ID":"7870","标识":"IC30","M标识":"IC30","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h34m14.7s","赤经D(J2000)":"0.57075","赤纬(J2000)":"-2h5m5s","赤纬D(J2000)":"-2.0847222222222226","可见光星等V":"15.9","摄影(蓝光)星等B":"16.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"21","详细描述":"very faint, small, round, a little brighter middle","简略描述":"vF, S, R, lbM"},{"ID":"7871","标识":"IC31","M标识":"IC31","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h34m24.6s","赤经D(J2000)":"0.5735","赤纬(J2000)":"+12h16m7s","赤纬D(J2000)":"12.268611111111111","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"89","详细描述":"faint, extended east-west, diffuse","简略描述":"F, E pf, dif"},{"ID":"7872","标识":"IC32","M标识":"IC32","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h35m1.6s","赤经D(J2000)":"0.5837777777777778","赤纬(J2000)":"-2h8m28s","赤纬D(J2000)":"-2.141111111111111","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"7873","标识":"IC33","M标识":"IC33","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h35m5s","赤经D(J2000)":"0.5847222222222223","赤纬(J2000)":"-2h8m16s","赤纬D(J2000)":"-2.1377777777777776","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF vS, R, lbM"},{"ID":"7874","标识":"IC34","M标识":"IC34","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h35m36.4s","赤经D(J2000)":"0.5934444444444444","赤纬(J2000)":"+9h7m30s","赤纬D(J2000)":"9.125","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.4","短轴(分)":"0.8","方位角":"156","详细描述":"very faint, pretty small, a little extended","简略描述":"vF, pS, lE"},{"ID":"7875","标识":"IC35","M标识":"IC35","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h37m39.9s","赤经D(J2000)":"0.62775","赤纬(J2000)":"+10h21m27s","赤纬D(J2000)":"10.3575","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.8","方位角":"33","详细描述":"very faint, small, diffuse, 9.5 magnitude star to northeast","简略描述":"vF, S, dif, * 9.5 nf"},{"ID":"7876","标识":"IC36","M标识":"IC36","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h37m49.6s","赤经D(J2000)":"0.6304444444444445","赤纬(J2000)":"-15h26m27s","赤纬D(J2000)":"-15.440833333333334","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, very small, round, diffuse","简略描述":"F, vS, R, dif"},{"ID":"7877","标识":"IC37","M标识":"IC37","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h38m34.2s","赤经D(J2000)":"0.6428333333333333","赤纬(J2000)":"-15h21m31s","赤纬D(J2000)":"-15.358611111111111","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"171","详细描述":"extremely faint, very small, round, diffuse","简略描述":"eF, vS, R, dif"},{"ID":"7878","标识":"IC38","M标识":"IC38","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h38m38.8s","赤经D(J2000)":"0.6441111111111111","赤纬(J2000)":"-15h25m9s","赤纬D(J2000)":"-15.419166666666666","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"84","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"7879","标识":"IC39","M标识":"IC39","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h39m8.4s","赤经D(J2000)":"0.6523333333333333","赤纬(J2000)":"-14h10m20s","赤纬D(J2000)":"-14.172222222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.1","短轴(分)":"0.9","方位角":"178","详细描述":"pretty bright, pretty large, extended north-south, gradually brighter middle","简略描述":"pB, pl, E ns, gbM"},{"ID":"7880","标识":"IC40","M标识":"IC40","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h39m21.3s","赤经D(J2000)":"0.6559166666666667","赤纬(J2000)":"+2h27m22s","赤纬D(J2000)":"2.4561111111111114","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.5","方位角":"13","详细描述":"faint, small, round, gradually brighter middle with nucleus equal to 13.5 magnitude star","简略描述":"F, S, R, gbMN = 13.5"},{"ID":"7881","标识":"IC41","M标识":"IC41","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h39m40.3s","赤经D(J2000)":"0.6611944444444444","赤纬(J2000)":"-14h10m26s","赤纬D(J2000)":"-14.173888888888888","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"7882","标识":"IC42","M标识":"IC42","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h41m5.9s","赤经D(J2000)":"0.6849722222222222","赤纬(J2000)":"-15h25m42s","赤纬D(J2000)":"-15.428333333333333","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"45","详细描述":"small, irregular, very diffuse","简略描述":"S, irr, v dif"},{"ID":"7883","标识":"IC43","M标识":"IC43","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h42m22s","赤经D(J2000)":"0.706111111111111","赤纬(J2000)":"+29h38m31s","赤纬D(J2000)":"29.641944444444444","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"117","详细描述":"very faint, small, much brighter middle","简略描述":"vF, S, mbM"},{"ID":"7884","标识":"IC44","M标识":"IC44","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h42m15.9s","赤经D(J2000)":"0.7044166666666666","赤纬(J2000)":"+0h50m46s","赤纬D(J2000)":"0.8461111111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"62","详细描述":"extremely faint, small, round, between two stars","简略描述":"eF, S, R, bet 2 st"},{"ID":"7885","标识":"IC45","M标识":"IC45","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h42m36.5s","赤经D(J2000)":"0.7101388888888889","赤纬(J2000)":"+29h39m21s","赤纬D(J2000)":"29.65583333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"suspected nebula","简略描述":"Susp neb"},{"ID":"7886","标识":"IC46","M标识":"IC46","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h42m57.9s","赤经D(J2000)":"0.7160833333333333","赤纬(J2000)":"+27h15m14s","赤纬D(J2000)":"27.253888888888888","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"87","详细描述":"pretty bright, small, round, brighter middle","简略描述":"pB, S, R, bM"},{"ID":"7887","标识":"IC47","M标识":"IC47","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h42m54.9s","赤经D(J2000)":"0.7152499999999999","赤纬(J2000)":"-13h44m25s","赤纬D(J2000)":"-13.740277777777777","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"100","详细描述":"extremely faint, extremely small, round, stellar","简略描述":"eF, eS, R, stellar"},{"ID":"7888","标识":"IC48","M标识":"IC48","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h43m34.4s","赤经D(J2000)":"0.7262222222222222","赤纬(J2000)":"-8h11m8s","赤纬D(J2000)":"-8.185555555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.8","方位角":"25","详细描述":"pretty faint, small, variable brightness?","简略描述":"pF, S (? var brightness)"},{"ID":"7889","标识":"IC49","M标识":"IC49","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h43m56.2s","赤经D(J2000)":"0.7322777777777778","赤纬(J2000)":"+1h51m2s","赤纬D(J2000)":"1.8505555555555557","可见光星等V":"13.7","摄影(蓝光)星等B":"14.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"95","详细描述":"most extremely faint, pretty small, round, extremely difficult","简略描述":"eeF, pS, R, e diffic"},{"ID":"7890","标识":"IC50","M标识":"IC50","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h46m5.7s","赤经D(J2000)":"0.7682500000000001","赤纬(J2000)":"-9h30m12s","赤纬D(J2000)":"-9.503333333333334","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, equal to nebulous 13th magnitude star","简略描述":"F, = neb * 13"},{"ID":"7891","标识":"IC51","M标识":"IC51","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h46m24.2s","赤经D(J2000)":"0.7733888888888889","赤纬(J2000)":"-13h26m29s","赤纬D(J2000)":"-13.44138888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"30","详细描述":"pretty bright, small, brighter middle, mottled but not resolved","简略描述":"pB, S, bM, r"},{"ID":"7892","标识":"IC52","M标识":"IC52","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h48m23.7s","赤经D(J2000)":"0.8065833333333334","赤纬(J2000)":"+4h5m31s","赤纬D(J2000)":"4.091944444444444","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.4","方位角":"97","详细描述":"very faint, very small, round, gradually a very little brighter middle","简略描述":"vF, vS, R, gvlbM"},{"ID":"7893","标识":"IC53","M标识":"IC53","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h50m40.7s","赤经D(J2000)":"0.8446388888888889","赤纬(J2000)":"+10h36m3s","赤纬D(J2000)":"10.600833333333332","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"most extremely faint, pretty small, round, others suspected","简略描述":"eeF, pS, R, others susp"},{"ID":"7894","标识":"IC54","M标识":"IC54","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h50m46.8s","赤经D(J2000)":"0.8463333333333334","赤纬(J2000)":"-2h17m19s","赤纬D(J2000)":"-2.288611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a nebula or small cluster, 2 arcmin diameter, brighter middle","简略描述":"Neb or S Cl, 2', bM"},{"ID":"7895","标识":"IC55","M标识":"IC55","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h51m42.3s","赤经D(J2000)":"0.86175","赤纬(J2000)":"+7h43m9s","赤纬D(J2000)":"7.719166666666667","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"177","详细描述":"faint, very small, diffuse, 13th magnitude star close","简略描述":"F, vS, dif, * 13 close"},{"ID":"7896","标识":"IC56","M标识":"IC56","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h51m30s","赤经D(J2000)":"0.8583333333333333","赤纬(J2000)":"-12h50m40s","赤纬D(J2000)":"-12.844444444444445","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"9","详细描述":"very faint, small, a little brighter middle","简略描述":"vF, S, lbM"},{"ID":"7897","标识":"IC57","M标识":"IC57","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h54m48.4s","赤经D(J2000)":"0.9134444444444445","赤纬(J2000)":"+11h50m30s","赤纬D(J2000)":"11.841666666666667","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, very small, round, a very little brighter middle, faint star close","简略描述":"F, vS, R, vlbM, F * close"},{"ID":"7898","标识":"IC58","M标识":"IC58","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h55m2.4s","赤经D(J2000)":"0.9173333333333333","赤纬(J2000)":"-13h40m39s","赤纬D(J2000)":"-13.6775","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"111","详细描述":"faint, very small, round, mottled but not resolved","简略描述":"F, vS, R, r"},{"ID":"7899","标识":"IC59","M标识":"IC59","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"策星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h57m28.5s","赤经D(J2000)":"0.9579166666666666","赤纬(J2000)":"+61h8m37s","赤纬D(J2000)":"61.14361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"5","方位角":"","详细描述":"pretty faint, extremely large!, northeast of γ Cassiop(eia)","简略描述":"pF, eL ! (nf γ Cassiop)"},{"ID":"7900","标识":"IC60","M标识":"IC60","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h56m4.2s","赤经D(J2000)":"0.9345","赤纬(J2000)":"-13h21m27s","赤纬D(J2000)":"-13.3575","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"60","详细描述":"faint, very small, round, small nucleus","简略描述":"F, vS, R, SN"},{"ID":"7901","标识":"IC61","M标识":"IC61","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h57m7.2s","赤经D(J2000)":"0.952","赤纬(J2000)":"+7h30m26s","赤纬D(J2000)":"7.5072222222222225","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"174","详细描述":"pretty faint, very small, round, a very little brighter middle","简略描述":"pF, vS, R, vlbM"},{"ID":"7902","标识":"IC62","M标识":"IC62","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h58m44s","赤经D(J2000)":"0.9788888888888889","赤纬(J2000)":"+11h48m30s","赤纬D(J2000)":"11.808333333333334","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"25","详细描述":"very faint, pretty large, diffuse","简略描述":"vF, pL, dif"},{"ID":"7903","标识":"IC63","M标识":"IC63","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"策星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h59m29s","赤经D(J2000)":"0.9913888888888889","赤纬(J2000)":"+60h54m40s","赤纬D(J2000)":"60.91111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"3","方位角":"","详细描述":"pretty faint, extremely large!, connected with northwestern one","简略描述":"pF, eL ! conn with np one"},{"ID":"7904","标识":"IC64","M标识":"IC64","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h59m24.4s","赤经D(J2000)":"0.990111111111111","赤纬(J2000)":"+27h3m34s","赤纬D(J2000)":"27.059444444444445","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"147","详细描述":"faint, small, round, gradually much brighter middle","简略描述":"F, S, R, gmbM"},{"ID":"7905","标识":"IC65","M标识":"IC65","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h0m55.3s","赤经D(J2000)":"1.0153611111111112","赤纬(J2000)":"+47h40m54s","赤纬D(J2000)":"47.681666666666665","可见光星等V":"12.9","摄影(蓝光)星等B":"13.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3","短轴(分)":"0.9","方位角":"155","详细描述":"extremely faint, pretty large, much extended, bright stars to east and south","简略描述":"eF, pL, mE, B st f & s"},{"ID":"7906","标识":"IC66","M标识":"IC66","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h0m32.4s","赤经D(J2000)":"1.009","赤纬(J2000)":"+30h47m48s","赤纬D(J2000)":"30.796666666666667","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"125","详细描述":"very faint, very small, irregular","简略描述":"vF, vS, irr"},{"ID":"7907","标识":"IC67","M标识":"IC67","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h0m17.6s","赤经D(J2000)":"1.004888888888889","赤纬(J2000)":"-6h54m39s","赤纬D(J2000)":"-6.910833333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, suspected","简略描述":"vF, suspected"},{"ID":"7908","标识":"IC68","M标识":"IC68","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h0m21.6s","赤经D(J2000)":"1.006","赤纬(J2000)":"-6h56m39s","赤纬D(J2000)":"-6.944166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, suspected","简略描述":"vF, suspected"},{"ID":"7909","标识":"IC69","M标识":"IC69","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h1m23.6s","赤经D(J2000)":"1.0232222222222223","赤纬(J2000)":"+31h2m28s","赤纬D(J2000)":"31.041111111111114","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"66","详细描述":"faint, irregular figure, a little brighter middle","简略描述":"F, iF, lbM"},{"ID":"7910","标识":"IC70","M标识":"IC70","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h1m3.9s","赤经D(J2000)":"1.01775","赤纬(J2000)":"+0h3m5s","赤纬D(J2000)":"0.051388888888888894","可见光星等V":"16.3","摄影(蓝光)星等B":"17.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"140","详细描述":"very faint, very small, a little brighter middle","简略描述":"vF, vS, lbM"},{"ID":"7911","标识":"IC71","M标识":"IC71","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h1m19.2s","赤经D(J2000)":"1.022","赤纬(J2000)":"-6h46m2s","赤纬D(J2000)":"-6.767222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, suspected","简略描述":"vF, suspected"},{"ID":"7912","标识":"IC72","M标识":"IC72","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h1m34.6s","赤经D(J2000)":"1.0262777777777776","赤纬(J2000)":"-6h46m41s","赤纬D(J2000)":"-6.7780555555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a nebula; 7th magnitude star 2 arcmin to southeast","简略描述":"Neb, * 7 sf 2'"},{"ID":"7913","标识":"IC73","M标识":"IC73","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h4m53.1s","赤经D(J2000)":"1.0814166666666667","赤纬(J2000)":"+4h46m2s","赤纬D(J2000)":"4.767222222222222","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"160","详细描述":"very faint, pretty large, diffuse","简略描述":"vF, pL, dif"},{"ID":"7914","标识":"IC74","M标识":"IC74","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h5m55.9s","赤经D(J2000)":"1.098861111111111","赤纬(J2000)":"+4h5m27s","赤纬D(J2000)":"4.090833333333333","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"15","详细描述":"very faint, small, stellar","简略描述":"vF, S, stellar"},{"ID":"7915","标识":"IC75","M标识":"IC75","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h7m11.5s","赤经D(J2000)":"1.1198611111111112","赤纬(J2000)":"+10h50m14s","赤纬D(J2000)":"10.837222222222223","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"1","方位角":"30","详细描述":"very faint, very small, diffuse, a very little brighter middle","简略描述":"vF, vS, dif, vlbM"},{"ID":"7916","标识":"IC76","M标识":"IC76","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h8m11.6s","赤经D(J2000)":"1.1365555555555555","赤纬(J2000)":"-4h33m16s","赤纬D(J2000)":"-4.554444444444444","可见光星等V":"15.6","摄影(蓝光)星等B":"16.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"120","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"7917","标识":"IC77","M标识":"IC77","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h8m43.7s","赤经D(J2000)":"1.1454722222222222","赤纬(J2000)":"-15h25m15s","赤纬D(J2000)":"-15.420833333333333","可见光星等V":"14.9","摄影(蓝光)星等B":"15.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"90","详细描述":"very faint, small, irregular, brighter middle","简略描述":"vF, S, irr, bM"},{"ID":"7918","标识":"IC78","M标识":"IC78","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h8m47.6s","赤经D(J2000)":"1.1465555555555556","赤纬(J2000)":"-15h50m41s","赤纬D(J2000)":"-15.844722222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"0.7","方位角":"133","详细描述":"faint, small, a little brighter middle, mottled but not resolved","简略描述":"F, S, lbM, r"},{"ID":"7919","标识":"IC79","M标识":"IC79","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h8m49.7s","赤经D(J2000)":"1.147138888888889","赤纬(J2000)":"-15h56m54s","赤纬D(J2000)":"-15.948333333333334","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"155","详细描述":"round, small, brighter middle and nucleus equal to 14th magnitude star","简略描述":"R, S, bM N = 14 m"},{"ID":"7920","标识":"IC80","M标识":"IC80","拓展名":"A","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h8m51.1s","赤经D(J2000)":"1.1475277777777777","赤纬(J2000)":"-15h24m23s","赤纬D(J2000)":"-15.40638888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"57","详细描述":"very faint, small, round, gradually brighter middle","简略描述":"vF, S, R, gbM"},{"ID":"7921","标识":"IC81","M标识":"IC81","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h9m22.4s","赤经D(J2000)":"1.156222222222222","赤纬(J2000)":"-1h41m42s","赤纬D(J2000)":"-1.695","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.9","方位角":"126","详细描述":"extremely faint, small, a little extended, star close to northeast","简略描述":"eF, S, lE, * close nf"},{"ID":"7922","标识":"IC82","M标识":"IC82","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h9m5.8s","赤经D(J2000)":"1.151611111111111","赤纬(J2000)":"-16h0m1s","赤纬D(J2000)":"-16.00027777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"111","详细描述":"faint, small, gradually brighter middle","简略描述":"F, S, gbM"},{"ID":"7923","标识":"IC83","M标识":"IC83","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h10m29.7s","赤经D(J2000)":"1.1749166666666668","赤纬(J2000)":"+1h41m21s","赤纬D(J2000)":"1.6891666666666667","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"105","详细描述":"faint, small, diffuse, a little brighter middle","简略描述":"F, S, dif, lbM"},{"ID":"7924","标识":"IC84","M标识":"IC84","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h11m25.5s","赤经D(J2000)":"1.1904166666666667","赤纬(J2000)":"+1h38m27s","赤纬D(J2000)":"1.6408333333333334","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"12","详细描述":"pretty bright, small, irregular figure, brighter middle","简略描述":"pB, S, iF, bM"},{"ID":"7925","标识":"IC85","M标识":"IC85","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h11m49.5s","赤经D(J2000)":"1.1970833333333333","赤纬(J2000)":"-0h27m9s","赤纬D(J2000)":"-0.4525","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, close to 8th magnitude star","简略描述":"eF, close to * 8"},{"ID":"7926","标识":"IC86","M标识":"IC86","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h13m28.4s","赤经D(J2000)":"1.2245555555555556","赤纬(J2000)":"-16h14m28s","赤纬D(J2000)":"-16.241111111111113","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"140","详细描述":"faint, suddenly brighter middle","简略描述":"F, sbM"},{"ID":"7927","标识":"IC87","M标识":"IC87","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h14m15.8s","赤经D(J2000)":"1.2377222222222224","赤纬(J2000)":"+0h45m57s","赤纬D(J2000)":"0.7658333333333334","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"6","详细描述":"faint, pretty small, round, diffuse","简略描述":"F, pS, R, dif"},{"ID":"7928","标识":"IC88","M标识":"IC88","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h14m31.3s","赤经D(J2000)":"1.2420277777777777","赤纬(J2000)":"+0h47m30s","赤纬D(J2000)":"0.7916666666666666","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"pretty faint, small, round, very little brighter middle","简略描述":"pF, S, R, vlbM"},{"ID":"7929","标识":"IC89","M标识":"IC89","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h16m3.7s","赤经D(J2000)":"1.2676944444444445","赤纬(J2000)":"+4h17m40s","赤纬D(J2000)":"4.294444444444444","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2","短轴(分)":"1.6","方位角":"54","详细描述":"faint, small, irregular figure, nucleus equal to 13th magnitude star; 462 to the east","简略描述":"F, S, iF, N = 13m, 462 f"},{"ID":"7930","标识":"IC90","M标识":"IC90","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h16m30.3s","赤经D(J2000)":"1.2750833333333333","赤纬(J2000)":"-7h58m36s","赤纬D(J2000)":"-7.976666666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"144","详细描述":"bright, very small, suddenly brighter middle and nucleus","简略描述":"B, vS, sbMN"},{"ID":"7931","标识":"IC91","M标识":"IC91","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h18m39.4s","赤经D(J2000)":"1.3109444444444445","赤纬(J2000)":"+2h33m15s","赤纬D(J2000)":"2.5541666666666667","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"60","详细描述":"faint, small, mottled but not resolved, nucleus equal to 14th magnitude star","简略描述":"F, S, r, N = 14m"},{"ID":"7932","标识":"IC92","M标识":"IC92","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h19m48.4s","赤经D(J2000)":"1.330111111111111","赤纬(J2000)":"+32h46m2s","赤纬D(J2000)":"32.76722222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"171","详细描述":"most extremely faint [different from h 98?]","简略描述":"eeF [? different from h 98]"},{"ID":"7933","标识":"IC93","M标识":"IC93","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h19m2.2s","赤经D(J2000)":"1.3172777777777778","赤纬(J2000)":"-17h3m40s","赤纬D(J2000)":"-17.061111111111114","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"170","详细描述":"very faint, pretty small, a little extended, 8th magnitude star 14 seconds of time to east and 1 arcmin to north","简略描述":"vF, pS, lE, * 8 f 14s, 1' n"},{"ID":"7934","标识":"IC94","M标识":"IC94","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h20m5.5s","赤经D(J2000)":"1.334861111111111","赤纬(J2000)":"+32h43m2s","赤纬D(J2000)":"32.717222222222226","可见光星等V":"99","摄影(蓝光)星等B":"14.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a nebula equal to 13th magnitude star","简略描述":"neb * 13"},{"ID":"7935","标识":"IC95","M标识":"IC95","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h19m17.8s","赤经D(J2000)":"1.321611111111111","赤纬(J2000)":"-12h34m25s","赤纬D(J2000)":"-12.573611111111111","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, diffuse, a very little brighter middle","简略描述":"F, vS, dif, vlbM"},{"ID":"7936","标识":"IC96","M标识":"IC96","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h20m33.3s","赤经D(J2000)":"1.3425833333333332","赤纬(J2000)":"+29h36m59s","赤纬D(J2000)":"29.616388888888892","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"48","详细描述":"pretty bright, pretty small, very much brighter middle and nucleus equal to 12th or 13th magnitude star","简略描述":"pB, pS, vmbMN = 12?13m"},{"ID":"7937","标识":"IC97","M标识":"IC97","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h20m1.9s","赤经D(J2000)":"1.333861111111111","赤纬(J2000)":"+14h51m42s","赤纬D(J2000)":"14.861666666666666","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"stellar, equal to 13.5 magnitude star","简略描述":"Stellar = 13.5m"},{"ID":"7938","标识":"IC98","M标识":"IC98","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h20m54.8s","赤经D(J2000)":"1.3485555555555555","赤纬(J2000)":"-12h36m15s","赤纬D(J2000)":"-12.604166666666666","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, very small, irregular figure, brighter middle","简略描述":"vF, vS, iF, bM"},{"ID":"7939","标识":"IC99","M标识":"IC99","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h22m27.3s","赤经D(J2000)":"1.37425","赤纬(J2000)":"-12h57m9s","赤纬D(J2000)":"-12.952499999999999","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, small, a little brighter middle","简略描述":"vF, S, lbM"},{"ID":"7940","标识":"IC100","M标识":"IC100","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h22m53.9s","赤经D(J2000)":"1.3816388888888889","赤纬(J2000)":"-4h38m33s","赤纬D(J2000)":"-4.642499999999999","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"99","详细描述":"faint, very small, round, nucleus equal to 12.5 magnitude star","简略描述":"F, vS, R, N = 12.5m"},{"ID":"7941","标识":"IC101","M标识":"IC101","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h24m8.5s","赤经D(J2000)":"1.402361111111111","赤纬(J2000)":"+9h55m50s","赤纬D(J2000)":"9.930555555555555","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"127","详细描述":"very faint, pretty large, extended, diffuse","简略描述":"vF, pL, E, dif"},{"ID":"7942","标识":"IC102","M标识":"IC102","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h24m26.3s","赤经D(J2000)":"1.4073055555555554","赤纬(J2000)":"+9h53m14s","赤纬D(J2000)":"9.887222222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"92","详细描述":"extremely faint, small, diffuse","简略描述":"eF, S, dif"},{"ID":"7943","标识":"IC103","M标识":"IC103","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h24m36.4s","赤经D(J2000)":"1.410111111111111","赤纬(J2000)":"+2h2m41s","赤纬D(J2000)":"2.044722222222222","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"124","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"7944","标识":"IC104","M标识":"IC104","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h24m33.4s","赤经D(J2000)":"1.4092777777777776","赤纬(J2000)":"-1h27m21s","赤纬D(J2000)":"-1.4558333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"stellar, 13th magnitude","简略描述":"stellar, 13m"},{"ID":"7945","标识":"IC105","M标识":"IC105","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h24m46.2s","赤经D(J2000)":"1.4128333333333332","赤纬(J2000)":"+2h4m30s","赤纬D(J2000)":"2.075","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"40","详细描述":"faint, extremely small, round, a little brighter middle","简略描述":"F, eS, R, lbM"},{"ID":"7946","标识":"IC106","M标识":"IC106","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h24m41.7s","赤经D(J2000)":"1.4115833333333332","赤纬(J2000)":"-1h35m13s","赤纬D(J2000)":"-1.5869444444444445","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"134","详细描述":"very faint, small, diffuse, a little brighter middle","简略描述":"vF, S, dif, lbM"},{"ID":"7947","标识":"IC107","M标识":"IC107","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h25m24.7s","赤经D(J2000)":"1.423527777777778","赤纬(J2000)":"+14h51m53s","赤纬D(J2000)":"14.864722222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.7","方位角":"27","详细描述":"very faint, very small, round, star close to the west","简略描述":"vF, vS, R, * close p"},{"ID":"7948","标识":"IC108","M标识":"IC108","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h24m39s","赤经D(J2000)":"1.4108333333333332","赤纬(J2000)":"-12h38m8s","赤纬D(J2000)":"-12.635555555555555","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"3","详细描述":"faint, pretty large, extended north-south","简略描述":"F, pL, E ns"},{"ID":"7949","标识":"IC109","M标识":"IC109","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h25m12.9s","赤经D(J2000)":"1.42025","赤纬(J2000)":"+2h4m3s","赤纬D(J2000)":"2.0675000000000003","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"99","详细描述":"pretty bright, very small, round","简略描述":"pB, vS, R"},{"ID":"7950","标识":"IC110","M标识":"IC110","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h25m50s","赤经D(J2000)":"1.4305555555555556","赤纬(J2000)":"+33h31m36s","赤纬D(J2000)":"33.526666666666664","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"7951","标识":"IC111","M标识":"IC111","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h25m49.2s","赤经D(J2000)":"1.4303333333333335","赤纬(J2000)":"+33h30m16s","赤纬D(J2000)":"33.504444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a 13th magnitude star with nebulosity","简略描述":"* 13 with neb"},{"ID":"7952","标识":"IC112","M标识":"IC112","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h26m2.9s","赤经D(J2000)":"1.4341388888888889","赤纬(J2000)":"+11h26m35s","赤纬D(J2000)":"11.443055555555556","可见光星等V":"13.8","摄影(蓝光)星等B":"14.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"128","详细描述":"faint, small, diffuse, extended east-west","简略描述":"F, S, dif, E pf"},{"ID":"7953","标识":"IC113","M标识":"IC113","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h26m25.5s","赤经D(J2000)":"1.4404166666666667","赤纬(J2000)":"+19h11m31s","赤纬D(J2000)":"19.191944444444445","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, 3 arcmin northeast of 5th magnitude star","简略描述":"vF, 3' nf of * 5 m"},{"ID":"7954","标识":"IC114","M标识":"IC114","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h26m22.5s","赤经D(J2000)":"1.4395833333333334","赤纬(J2000)":"+9h54m37s","赤纬D(J2000)":"9.910277777777779","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"150","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"7955","标识":"IC115","M标识":"IC115","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h26m54.5s","赤经D(J2000)":"1.4484722222222222","赤纬(J2000)":"+19h12m52s","赤纬D(J2000)":"19.214444444444442","可见光星等V":"14","摄影(蓝光)星等B":"15.2","B-V":"1.2","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, 6th magnitude star 3 1\/2 arcmin to west northwest","简略描述":"vF, * 6m 3?' npp"},{"ID":"7956","标识":"IC116","M标识":"IC116","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h26m50.5s","赤经D(J2000)":"1.447361111111111","赤纬(J2000)":"-4h58m56s","赤纬D(J2000)":"-4.982222222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"129","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"7957","标识":"IC117","M标识":"IC117","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h27m21s","赤经D(J2000)":"1.4558333333333333","赤纬(J2000)":"-1h51m52s","赤纬D(J2000)":"-1.8644444444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, diffuse, III 441 to southeast","简略描述":"pF, S, dif, III. 441 sf"},{"ID":"7958","标识":"IC118","M标识":"IC118","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h27m36s","赤经D(J2000)":"1.46","赤纬(J2000)":"-4h59m49s","赤纬D(J2000)":"-4.996944444444445","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"7959","标识":"IC119","M标识":"IC119","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h27m54.9s","赤经D(J2000)":"1.46525","赤纬(J2000)":"-2h2m24s","赤纬D(J2000)":"-2.04","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"77","详细描述":"faint, extended east-west, diffuse, III 442 to north","简略描述":"F, E pf, dif, III. 442 n"},{"ID":"7960","标识":"IC120","M标识":"IC120","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h28m12.8s","赤经D(J2000)":"1.4702222222222223","赤纬(J2000)":"-1h54m54s","赤纬D(J2000)":"-1.9149999999999998","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"135","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"7961","标识":"IC121","M标识":"IC121","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h28m21.7s","赤经D(J2000)":"1.4726944444444445","赤纬(J2000)":"+2h30m46s","赤纬D(J2000)":"2.512777777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"108","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"7962","标识":"IC122","M标识":"IC122","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h28m13.1s","赤经D(J2000)":"1.4703055555555558","赤纬(J2000)":"-14h50m20s","赤纬D(J2000)":"-14.83888888888889","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"10","详细描述":"pretty bright, small, brighter middle","简略描述":"pB, S, bM"},{"ID":"7963","标识":"IC123","M标识":"IC123","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h28m51.4s","赤经D(J2000)":"1.4809444444444446","赤纬(J2000)":"+2h26m49s","赤纬D(J2000)":"2.4469444444444446","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"36","详细描述":"faint, small, round, suddenly brighter middle","简略描述":"F, S, R, sbM"},{"ID":"7964","标识":"IC124","M标识":"IC124","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h29m9s","赤经D(J2000)":"1.4858333333333333","赤纬(J2000)":"-1h56m13s","赤纬D(J2000)":"-1.9369444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, diffuse","简略描述":"vF, vS, dif"},{"ID":"7965","标识":"IC125","M标识":"IC125","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h29m18.3s","赤经D(J2000)":"1.4884166666666667","赤纬(J2000)":"-13h16m46s","赤纬D(J2000)":"-13.279444444444445","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"7966","标识":"IC126","M标识":"IC126","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h29m47.7s","赤经D(J2000)":"1.4965833333333334","赤纬(J2000)":"-1h59m0s","赤纬D(J2000)":"-1.9833333333333334","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"extremely faint, stellar, (NGC) 577 to east","简略描述":"eF, stellar, 557 f"},{"ID":"7967","标识":"IC127","M标识":"IC127","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h29m47.4s","赤经D(J2000)":"1.4965000000000002","赤纬(J2000)":"-6h58m47s","赤纬D(J2000)":"-6.979722222222223","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"125","详细描述":"faint, pretty small, diffuse, 11.5 magnitude star close","简略描述":"F, pS, dif, * 11.5 close"},{"ID":"7968","标识":"IC128","M标识":"IC128","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h31m23.9s","赤经D(J2000)":"1.5233055555555555","赤纬(J2000)":"-12h37m28s","赤纬D(J2000)":"-12.624444444444444","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"165","详细描述":"faint, round, small, nucleus","简略描述":"F, R, S, N"},{"ID":"7969","标识":"IC129","M标识":"IC129","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h31m31.2s","赤经D(J2000)":"1.5253333333333332","赤纬(J2000)":"-12h39m14s","赤纬D(J2000)":"-12.65388888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"60","详细描述":"faint, pretty large, round, diffuse","简略描述":"F, pL, R, dif"},{"ID":"7970","标识":"IC130","M标识":"IC130","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h31m28.7s","赤经D(J2000)":"1.5246388888888889","赤纬(J2000)":"-15h35m28s","赤纬D(J2000)":"-15.591111111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"7971","标识":"IC131","M标识":"IC131","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h33m11.1s","赤经D(J2000)":"1.5530833333333334","赤纬(J2000)":"+30h45m10s","赤纬D(J2000)":"30.752777777777776","可见光星等V":"14","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.3","短轴(分)":"","方位角":"","详细描述":"very faint, close to magnitude 13.5 star","简略描述":"vF, close to * 13.5"},{"ID":"7972","标识":"IC132","M标识":"IC132","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h33m16s","赤经D(J2000)":"1.5544444444444445","赤纬(J2000)":"+30h56m42s","赤纬D(J2000)":"30.945","可见光星等V":"13.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"very faint, double star (both 13th magnitude stars) close","简略描述":"vF, D * (13, 13) close"},{"ID":"7973","标识":"IC133","M标识":"IC133","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h33m15.8s","赤经D(J2000)":"1.554388888888889","赤纬(J2000)":"+30h53m5s","赤纬D(J2000)":"30.884722222222223","可见光星等V":"14","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.4","短轴(分)":"","方位角":"","详细描述":"very faint, small, a very little brighter on south, diffuse","简略描述":"vF, S, vlb south, dif"},{"ID":"7974","标识":"IC134","M标识":"IC134","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h33m25.2s","赤经D(J2000)":"1.557","赤纬(J2000)":"+30h53m58s","赤纬D(J2000)":"30.899444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, suspected, 9th magnitude star 3 arcmin to north","简略描述":"vF, susp, * 9 n 3'"},{"ID":"7975","标识":"IC135","M标识":"IC135","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h34m15.5s","赤经D(J2000)":"1.5709722222222222","赤纬(J2000)":"+30h37m10s","赤纬D(J2000)":"30.619444444444444","可见光星等V":"14","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.4","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"7976","标识":"IC136","M标识":"IC136","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h34m13.5s","赤经D(J2000)":"1.5704166666666666","赤纬(J2000)":"+30h33m40s","赤纬D(J2000)":"30.561111111111114","可见光星等V":"14.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.3","短轴(分)":"","方位角":"","详细描述":"extremely faint, difficult, 10th magnitude star 3 arcmin to northwest","简略描述":"eF, diffic, * 10 np 3'"},{"ID":"7977","标识":"IC137","M标识":"IC137","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h33m38.8s","赤经D(J2000)":"1.5607777777777778","赤纬(J2000)":"+30h31m23s","赤纬D(J2000)":"30.523055555555555","可见光星等V":"14","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, diffuse","简略描述":"vF, pL, dif"},{"ID":"7978","标识":"IC138","M标识":"IC138","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h33m2s","赤经D(J2000)":"1.5505555555555557","赤纬(J2000)":"-0h41m23s","赤纬D(J2000)":"-0.6897222222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"30","详细描述":"no description","简略描述":"No description"},{"ID":"7979","标识":"IC139","M标识":"IC139","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h33m59.3s","赤经D(J2000)":"1.5664722222222223","赤纬(J2000)":"+30h34m33s","赤纬D(J2000)":"30.575833333333332","可见光星等V":"14","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"very faint, very diffuse, a very little brighter middle","简略描述":"vF, v dif, vlbM"},{"ID":"7980","标识":"IC140","M标识":"IC140","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h33m58.1s","赤经D(J2000)":"1.566138888888889","赤纬(J2000)":"+30h33m2s","赤纬D(J2000)":"30.550555555555555","可见光星等V":"13","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"very faint, diffuse","简略描述":"vF, dif"},{"ID":"7981","标识":"IC141","M标识":"IC141","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h32m51.7s","赤经D(J2000)":"1.5476944444444443","赤纬(J2000)":"-14h48m53s","赤纬D(J2000)":"-14.814722222222223","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"1","方位角":"","详细描述":"pretty bright, small, round, nucleus 11.5 magnitude excentr","简略描述":"pB, S, R, N 11.5 excentr"},{"ID":"7982","标识":"IC142","M标识":"IC142","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h33m55.8s","赤经D(J2000)":"1.5655000000000001","赤纬(J2000)":"+30h45m22s","赤纬D(J2000)":"30.75611111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"very faint, stellar, or 13th magnitude star involved","简略描述":"vF, stellar, or * 13 inv"},{"ID":"7983","标识":"IC143","M标识":"IC143","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h34m11.1s","赤经D(J2000)":"1.56975","赤纬(J2000)":"+30h46m41s","赤纬D(J2000)":"30.778055555555554","可见光星等V":"13.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.3","短轴(分)":"","方位角":"","详细描述":"very faint, small, diffuse, 13th magnitude star 0.6 arcmin to east","简略描述":"vF, S, dif, * 13 f 0'.6"},{"ID":"7984","标识":"IC144","M标识":"IC144","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h37m40.8s","赤经D(J2000)":"1.6280000000000001","赤纬(J2000)":"-13h18m51s","赤纬D(J2000)":"-13.314166666666667","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, extremely small, stellar","简略描述":"eF, eS, stellar"},{"ID":"7985","标识":"IC145","M标识":"IC145","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h38m38.5s","赤经D(J2000)":"1.6440277777777776","赤纬(J2000)":"+0h44m29s","赤纬D(J2000)":"0.7413888888888889","可见光星等V":"14.9","摄影(蓝光)星等B":"15.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"177","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"7986","标识":"IC146","M标识":"IC146","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h38m39.8s","赤经D(J2000)":"1.644388888888889","赤纬(J2000)":"-17h49m52s","赤纬D(J2000)":"-17.83111111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"114","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"7987","标识":"IC147","M标识":"IC147","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h39m59.4s","赤经D(J2000)":"1.6664999999999999","赤纬(J2000)":"-14h51m46s","赤纬D(J2000)":"-14.862777777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"69","详细描述":"faint, very small, round, very faint star close","简略描述":"F, vS, R, vF * close"},{"ID":"7988","标识":"IC148","M标识":"IC148","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h42m26.9s","赤经D(J2000)":"1.7074722222222223","赤纬(J2000)":"+13h58m36s","赤纬D(J2000)":"13.976666666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3.5","短轴(分)":"1.1","方位角":"50","详细描述":"most extremely faint, pretty small, very difficult, II. 253 to southeast","简略描述":"eeF, pS, v diffic, II. 253 sf"},{"ID":"7989","标识":"IC149","M标识":"IC149","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h42m25.6s","赤经D(J2000)":"1.707111111111111","赤纬(J2000)":"-16h18m0s","赤纬D(J2000)":"-16.3","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"81","详细描述":"faint, pretty small, extended east-west, a little brighter middle","简略描述":"F, pS, E pf, lbM"},{"ID":"7990","标识":"IC150","M标识":"IC150","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h42m57.6s","赤经D(J2000)":"1.716","赤纬(J2000)":"+4h11m57s","赤纬D(J2000)":"4.199166666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.5","方位角":"143","详细描述":"faint, small, round, diffuse, magnitude 10.5 star near, h 148 to east","简略描述":"F, S, R, dif, * 10.5 near, h 148 f"},{"ID":"7991","标识":"IC151","M标识":"IC151","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h43m57.4s","赤经D(J2000)":"1.7326111111111113","赤纬(J2000)":"+13h12m9s","赤纬D(J2000)":"13.202499999999999","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty small, northwestern of 2","简略描述":"eF, pS, np of 2"},{"ID":"7992","标识":"IC152","M标识":"IC152","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h44m1.2s","赤经D(J2000)":"1.7336666666666667","赤纬(J2000)":"+13h4m28s","赤纬D(J2000)":"13.074444444444444","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"130","详细描述":"extremely faint, small, round, very faint star close, southeastern of 2","简略描述":"eF, S, R, vF * close, sf of 2"},{"ID":"7993","标识":"IC153","M标识":"IC153","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h48m33.1s","赤经D(J2000)":"1.8091944444444445","赤纬(J2000)":"+12h36m50s","赤纬D(J2000)":"12.613888888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"130","详细描述":"extremely faint, pretty small, round, southwestern of 2","简略描述":"eF, pS, R, sp of 2"},{"ID":"7994","标识":"IC154","M标识":"IC154","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h45m16.2s","赤经D(J2000)":"1.7545","赤纬(J2000)":"+10h38m59s","赤纬D(J2000)":"10.649722222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.5","短轴(分)":"0.2","方位角":"66","详细描述":"faint, very small, a little brighter middle, 11.5 magnitude star to southwest","简略描述":"F, vS, lbM, * 11.5 sp"},{"ID":"7995","标识":"IC155","M标识":"IC155","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h47m32s","赤经D(J2000)":"1.7922222222222222","赤纬(J2000)":"+60h36m42s","赤纬D(J2000)":"60.611666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, considerably large, diffuse","简略描述":"vF, eL, dif"},{"ID":"7996","标识":"IC156","M标识":"IC156","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h45m29.1s","赤经D(J2000)":"1.7580833333333334","赤纬(J2000)":"+10h33m12s","赤纬D(J2000)":"10.553333333333335","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"72","详细描述":"pretty bright, small, round, much brighter middle and nucleus equal to 12th magnitude star","简略描述":"pB, S, R, mbMN = * 12"},{"ID":"7997","标识":"IC157","M标识":"IC157","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h49m11.6s","赤经D(J2000)":"1.819888888888889","赤纬(J2000)":"+12h51m12s","赤纬D(J2000)":"12.853333333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"105","详细描述":"most extremely faint, small, round, double star to west, northeastern of 2","简略描述":"eeF, S, R, D * p, nf of 2"},{"ID":"7998","标识":"IC158","M标识":"IC158","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h45m53.4s","赤经D(J2000)":"1.7648333333333333","赤纬(J2000)":"-6h56m7s","赤纬D(J2000)":"-6.935277777777778","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"140","详细描述":"very faint, very small, round, much brighter middle","简略描述":"vF, vS, R, mbM"},{"ID":"7999","标识":"IC159","M标识":"IC159","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h46m25s","赤经D(J2000)":"1.773611111111111","赤纬(J2000)":"-8h38m12s","赤纬D(J2000)":"-8.636666666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"36","详细描述":"pretty bright, small, round, much brighter middle","简略描述":"pB, S, R, mbM"},{"ID":"8000","标识":"IC160","M标识":"IC160","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h46m29.5s","赤经D(J2000)":"1.774861111111111","赤纬(J2000)":"-13h14m50s","赤纬D(J2000)":"-13.247222222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"85","详细描述":"faint, stellar, 13th magnitude","简略描述":"F, stellar, 13m"},{"ID":"8001","标识":"IC161","M标识":"IC161","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h48m43.8s","赤经D(J2000)":"1.8121666666666667","赤纬(J2000)":"+10h30m30s","赤纬D(J2000)":"10.508333333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"65","详细描述":"most extremely faint, very small, round","简略描述":"eeF, vS, R"},{"ID":"8002","标识":"IC162","M标识":"IC162","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h48m53.4s","赤经D(J2000)":"1.8148333333333333","赤纬(J2000)":"+10h31m20s","赤纬D(J2000)":"10.522222222222224","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"most extremely faint, small, a little extended","简略描述":"eeF, S, lE"},{"ID":"8003","标识":"IC163","M标识":"IC163","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h49m15s","赤经D(J2000)":"1.8208333333333333","赤纬(J2000)":"+20h42m38s","赤纬D(J2000)":"20.710555555555555","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"0.9","方位角":"95","详细描述":"faint, pretty small, round, brighter middle","简略描述":"F, pS, R, bM"},{"ID":"8004","标识":"IC164","M标识":"IC164","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h49m8.4s","赤经D(J2000)":"1.819","赤纬(J2000)":"-3h54m16s","赤纬D(J2000)":"-3.904444444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"0","详细描述":"pretty faint, small, round, between 2 stars (a small cluster?)","简略描述":"pF, S, R, bet 2 st (? S Cl)"},{"ID":"8005","标识":"IC165","M标识":"IC165","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h50m14.1s","赤经D(J2000)":"1.83725","赤纬(J2000)":"+27h38m46s","赤纬D(J2000)":"27.64611111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.2","短轴(分)":"0.6","方位角":"87","详细描述":"extremely faint, small, a little extended, very faint star close to east","简略描述":"eF, S, lE, vF * close f"},{"ID":"8006","标识":"IC166","M标识":"IC166","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III1r","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h52m22s","赤经D(J2000)":"1.8727777777777779","赤纬(J2000)":"+61h51m12s","赤纬D(J2000)":"61.85333333333333","可见光星等V":"11.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"a small cluster, nebulous?","简略描述":"S Cl, nebulous ?"},{"ID":"8007","标识":"IC167","M标识":"IC167","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h51m8.5s","赤经D(J2000)":"1.8523611111111111","赤纬(J2000)":"+21h54m45s","赤纬D(J2000)":"21.912499999999998","可见光星等V":"13.1","摄影(蓝光)星等B":"13.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"2.7","短轴(分)":"1.8","方位角":"95","详细描述":"extremely faint, magnitude 10.5 star 4 arcmin to north","简略描述":"eF, * 10.5 n 4'"},{"ID":"8008","标识":"IC168","M标识":"IC168","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h50m27.5s","赤经D(J2000)":"1.8409722222222225","赤纬(J2000)":"-8h31m25s","赤纬D(J2000)":"-8.523611111111112","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"105","详细描述":"very faint, stellar, 10th magnitude star 4 arcmin to east, [(NGC) 707 one minute of time to east]","简略描述":"vF, stellar, * 10 f 4' (707 f 1m )"},{"ID":"8009","标识":"IC169","M标识":"IC169","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h50m39.3s","赤经D(J2000)":"1.8442500000000002","赤纬(J2000)":"-12h40m45s","赤纬D(J2000)":"-12.679166666666665","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"80","详细描述":"faint, small, extended east-west, brighter middle, mottled but not resolved","简略描述":"F, S, E pf, bM, r"},{"ID":"8010","标识":"IC170","M标识":"IC170","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h51m57.4s","赤经D(J2000)":"1.8659444444444446","赤纬(J2000)":"-8h31m2s","赤纬D(J2000)":"-8.517222222222223","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stellar"},{"ID":"8011","标识":"IC171","M标识":"IC171","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h55m10.3s","赤经D(J2000)":"1.9195277777777777","赤纬(J2000)":"+35h16m55s","赤纬D(J2000)":"35.28194444444444","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"1","方位角":"132","详细描述":"pretty bright, pretty small, considerably extended, star to northeast","简略描述":"pB, pS, cE, * nf"},{"ID":"8012","标识":"IC172","M标识":"IC172","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h54m54.2s","赤经D(J2000)":"1.9150555555555555","赤纬(J2000)":"+0h48m42s","赤纬D(J2000)":"0.8116666666666668","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"90","详细描述":"pretty bright, small, round, brighter middle","简略描述":"pB, S, R, bM"},{"ID":"8013","标识":"IC173","M标识":"IC173","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h55m57.1s","赤经D(J2000)":"1.9325277777777776","赤纬(J2000)":"+1h17m5s","赤纬D(J2000)":"1.284722222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"107","详细描述":"faint, pretty small, round, a little brighter middle","简略描述":"F, pS, R, lbM"},{"ID":"8014","标识":"IC174","M标识":"IC174","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h56m16.1s","赤经D(J2000)":"1.9378055555555556","赤纬(J2000)":"+3h45m45s","赤纬D(J2000)":"3.7625","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"101","详细描述":"a nebulous 13th magnitude star","简略描述":"Neb * 13"},{"ID":"8015","标识":"IC175","M标识":"IC175","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h56m18.8s","赤经D(J2000)":"1.9385555555555556","赤纬(J2000)":"+1h19m57s","赤纬D(J2000)":"1.3325","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, diffuse, difficult","简略描述":"vF, dif, diffic"},{"ID":"8016","标识":"IC176","M标识":"IC176","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h56m53.5s","赤经D(J2000)":"1.9481944444444446","赤纬(J2000)":"-2h1m8s","赤纬D(J2000)":"-2.0188888888888887","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"94","详细描述":"pretty bright, small","简略描述":"pB, S"},{"ID":"8017","标识":"IC177","M标识":"IC177","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h57m0.6s","赤经D(J2000)":"1.9501666666666666","赤纬(J2000)":"-0h5m21s","赤纬D(J2000)":"-0.08916666666666666","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"10","详细描述":"faint, very small, round, diffuse","简略描述":"F, vS, R, dif"},{"ID":"8018","标识":"IC178","M标识":"IC178","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h58m54.9s","赤经D(J2000)":"1.9819166666666668","赤纬(J2000)":"+36h40m30s","赤纬D(J2000)":"36.675","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"161","详细描述":"pretty faint, nucleus equal to 13th magnitude","简略描述":"pF, N = 13m"},{"ID":"8019","标识":"IC179","M标识":"IC179","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h0m11.5s","赤经D(J2000)":"2.0031944444444445","赤纬(J2000)":"+38h1m17s","赤纬D(J2000)":"38.021388888888886","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"110","详细描述":"pretty bright, small, a little extended, 9.5 magnitude star to northeast","简略描述":"pB, S, lE, * 9.5 nf"},{"ID":"8020","标识":"IC180","M标识":"IC180","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h0m0.3s","赤经D(J2000)":"2.0000833333333334","赤纬(J2000)":"+23h36m18s","赤纬D(J2000)":"23.605","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"0","详细描述":"very faint, extremely small, round, stellar, southeast of (NGC) 776","简略描述":"vF, eS, R, stellar, sf 776"},{"ID":"8021","标识":"IC181","M标识":"IC181","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h0m2.3s","赤经D(J2000)":"2.000638888888889","赤纬(J2000)":"+23h39m33s","赤纬D(J2000)":"23.659166666666664","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, extremely small, stellar","简略描述":"eF, eS, stellar"},{"ID":"8022","标识":"IC182","M标识":"IC182","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h59m51.7s","赤经D(J2000)":"1.9976944444444444","赤纬(J2000)":"+7h24m44s","赤纬D(J2000)":"7.412222222222223","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"33","详细描述":"faint, pretty large, binuclear","简略描述":"F, pL, biN"},{"ID":"8023","标识":"IC183","M标识":"IC183","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h59m33.9s","赤经D(J2000)":"1.99275","赤纬(J2000)":"-5h20m50s","赤纬D(J2000)":"-5.347222222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"95","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"8024","标识":"IC184","M标识":"IC184","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h59m51.1s","赤经D(J2000)":"1.9975277777777778","赤纬(J2000)":"-6h50m26s","赤纬D(J2000)":"-6.8405555555555555","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"177","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"8025","标识":"IC185","M标识":"IC185","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h0m6.1s","赤经D(J2000)":"2.0016944444444444","赤纬(J2000)":"-1h31m40s","赤纬D(J2000)":"-1.5277777777777777","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"88","详细描述":"extremely faint, very small, diffuse","简略描述":"eF, vS, dif"},{"ID":"8026","标识":"IC186","M标识":"IC186","拓展名":"A","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h0m23.9s","赤经D(J2000)":"2.006638888888889","赤纬(J2000)":"-1h33m12s","赤纬D(J2000)":"-1.5533333333333335","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"27","详细描述":"faint, double, distance 15 arcsec","简略描述":"F, double, dist 15\""},{"ID":"8027","标识":"IC187","M标识":"IC187","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h1m30.7s","赤经D(J2000)":"2.0251944444444443","赤纬(J2000)":"+26h28m52s","赤纬D(J2000)":"26.481111111111108","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2","短轴(分)":"0.7","方位角":"70","详细描述":"most extremely faint, round","简略描述":"eeF, R"},{"ID":"8028","标识":"IC188","M标识":"IC188","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h1m46.5s","赤经D(J2000)":"2.029583333333333","赤纬(J2000)":"+26h32m49s","赤纬D(J2000)":"26.546944444444446","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"45","详细描述":"most extremely faint, very small, round","简略描述":"eeF, vS, R"},{"ID":"8029","标识":"IC189","M标识":"IC189","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h1m52.9s","赤经D(J2000)":"2.031361111111111","赤纬(J2000)":"+23h33m4s","赤纬D(J2000)":"23.551111111111112","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"147","详细描述":"very faint, very small, round, 13.5 magnitude star close","简略描述":"vF, vS, R, * 13.5 close"},{"ID":"8030","标识":"IC190","M标识":"IC190","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h2m7.2s","赤经D(J2000)":"2.035333333333333","赤纬(J2000)":"+23h33m1s","赤纬D(J2000)":"23.55027777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"105","详细描述":"faint, very small, round, much brighter middle","简略描述":"F, vS, R, mbM"},{"ID":"8031","标识":"IC191","M标识":"IC191","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h2m29.4s","赤经D(J2000)":"2.0415","赤纬(J2000)":"+18h22m22s","赤纬D(J2000)":"18.372777777777777","可见光星等V":"12.7","摄影(蓝光)星等B":"13.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"45","详细描述":"pretty bright, pretty large, a little extended [probably = h 188]","简略描述":"pB, pL, lE [probably = h 188]"},{"ID":"8032","标识":"IC192","M标识":"IC192","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h2m32.4s","赤经D(J2000)":"2.042333333333333","赤纬(J2000)":"+16h0m51s","赤纬D(J2000)":"16.014166666666668","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"156","详细描述":"faint, large, round, a little brighter middle","简略描述":"F, L, R, lbM"},{"ID":"8033","标识":"IC193","M标识":"IC193","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h2m31s","赤经D(J2000)":"2.0419444444444443","赤纬(J2000)":"+11h5m35s","赤纬D(J2000)":"11.093055555555557","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"165","详细描述":"extremely faint, pretty small, a little extended, bright star to southeast, faint star to east","简略描述":"eF, pS, lE, B * sf, F * f"},{"ID":"8034","标识":"IC194","M标识":"IC194","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"2h3m5.1s","赤经D(J2000)":"2.0514166666666664","赤纬(J2000)":"+2h36m50s","赤纬D(J2000)":"2.613888888888889","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"0.2","方位角":"13","详细描述":"very faint, very small, round, magnitude 9.5 star 15 seconds of time to east","简略描述":"vF, vS, R, * 9.5 f 15s"},{"ID":"8035","标识":"IC195","M标识":"IC195","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h3m44.6s","赤经D(J2000)":"2.0623888888888886","赤纬(J2000)":"+14h42m33s","赤纬D(J2000)":"14.709166666666667","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"126","详细描述":"most extremely faint, small, round, faint star to south","简略描述":"eeF, S, R, F * s"},{"ID":"8036","标识":"IC196","M标识":"IC196","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h3m49.7s","赤经D(J2000)":"2.0638055555555552","赤纬(J2000)":"+14h44m21s","赤纬D(J2000)":"14.739166666666666","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.8","短轴(分)":"1.4","方位角":"5","详细描述":"most extremely faint, small, round, faint star to south","简略描述":"pF, pS, R, 3 st nr"},{"ID":"8037","标识":"IC197","M标识":"IC197","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"2h4m4.9s","赤经D(J2000)":"2.068027777777778","赤纬(J2000)":"+2h47m12s","赤纬D(J2000)":"2.7866666666666666","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.5","方位角":"55","详细描述":"pretty bright, small, extended 225°, gradually brighter middle","简略描述":"pB, S, E 225° , gbM"},{"ID":"8038","标识":"IC198","M标识":"IC198","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"2h6m3.1s","赤经D(J2000)":"2.100861111111111","赤纬(J2000)":"+9h17m46s","赤纬D(J2000)":"9.296111111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"43","详细描述":"pretty bright, pretty small, round, brighter middle","简略描述":"pB, pS, R, bM"},{"ID":"8039","标识":"IC199","M标识":"IC199","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"2h6m19.4s","赤经D(J2000)":"2.105388888888889","赤纬(J2000)":"+9h13m38s","赤纬D(J2000)":"9.227222222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"25","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"8040","标识":"IC200","M标识":"IC200","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb R","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h5m26.6s","赤经D(J2000)":"2.0907222222222224","赤纬(J2000)":"+31h10m32s","赤纬D(J2000)":"31.175555555555558","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.1","短轴(分)":"1.5","方位角":"85","详细描述":"pretty bright, pretty large, round, brighter middle","简略描述":"pB, pL, R, bM"},{"ID":"8041","标识":"IC201","M标识":"IC201","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h7m15.2s","赤经D(J2000)":"2.120888888888889","赤纬(J2000)":"+9h6m56s","赤纬D(J2000)":"9.115555555555556","可见光星等V":"16","摄影(蓝光)星等B":"16.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"8042","标识":"IC202","M标识":"IC202","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h7m28.6s","赤经D(J2000)":"2.1246111111111112","赤纬(J2000)":"+9h10m7s","赤纬D(J2000)":"9.16861111111111","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.2","方位角":"132","详细描述":"very faint, very small, diffuse","简略描述":"vF, vS, dif"},{"ID":"8043","标识":"IC203","M标识":"IC203","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h7m29.6s","赤经D(J2000)":"2.124888888888889","赤纬(J2000)":"+9h7m23s","赤纬D(J2000)":"9.123055555555556","可见光星等V":"16.1","摄影(蓝光)星等B":"16.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"25","详细描述":"very faint, very small, round, 10th magnitude star to southeast","简略描述":"vF, vS, R, * 10 sf"},{"ID":"8044","标识":"IC204","M标识":"IC204","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h7m27s","赤经D(J2000)":"2.1241666666666665","赤纬(J2000)":"-1h25m47s","赤纬D(J2000)":"-1.4297222222222223","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"170","详细描述":"No description","简略描述":"No description"},{"ID":"8045","标识":"IC205","M标识":"IC205","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h7m27.6s","赤经D(J2000)":"2.1243333333333334","赤纬(J2000)":"-2h5m31s","赤纬D(J2000)":"-2.0919444444444446","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"pretty bright, very small, irregularly round","简略描述":"pB, vS, irr R"},{"ID":"8046","标识":"IC206","M标识":"IC206","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h9m30.8s","赤经D(J2000)":"2.1585555555555556","赤纬(J2000)":"-6h58m8s","赤纬D(J2000)":"-6.968888888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.4","方位角":"138","详细描述":"pretty faint, small, irregularly round","简略描述":"pF, S, irr R"},{"ID":"8047","标识":"IC207","M标识":"IC207","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h9m39.4s","赤经D(J2000)":"2.1609444444444446","赤纬(J2000)":"-6h55m21s","赤纬D(J2000)":"-6.9225","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.2","短轴(分)":"0.4","方位角":"99","详细描述":"pretty faint, small, irregularly round","简略描述":"pF, S, irr R"},{"ID":"8048","标识":"IC208","M标识":"IC208","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h8m27.8s","赤经D(J2000)":"2.1410555555555555","赤纬(J2000)":"+6h23m41s","赤纬D(J2000)":"6.394722222222223","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"very faint, pretty large, diffuse","简略描述":"vF, pL, dif"},{"ID":"8049","标识":"IC209","M标识":"IC209","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h8m58.6s","赤经D(J2000)":"2.149611111111111","赤纬(J2000)":"-7h3m33s","赤纬D(J2000)":"-7.059166666666666","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"60","详细描述":"pretty bright, small, diffuse","简略描述":"pB, S, dif"},{"ID":"8050","标识":"IC210","M标识":"IC210","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h9m28.3s","赤经D(J2000)":"2.157861111111111","赤纬(J2000)":"-9h40m47s","赤纬D(J2000)":"-9.679722222222221","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.3","短轴(分)":"0.7","方位角":"66","详细描述":"no description","简略描述":"No description"},{"ID":"8051","标识":"IC211","M标识":"IC211","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h11m8s","赤经D(J2000)":"2.1855555555555553","赤纬(J2000)":"+3h51m7s","赤纬D(J2000)":"3.8519444444444444","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"2.3","短轴(分)":"1.8","方位角":"45","详细描述":"faint, pretty small, round, brighter middle, (NGC) 851 to southeast","简略描述":"F, pS, R, bM, 851 sf"},{"ID":"8052","标识":"IC212","M标识":"IC212","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h13m38.2s","赤经D(J2000)":"2.2272777777777777","赤纬(J2000)":"+16h35m40s","赤纬D(J2000)":"16.594444444444445","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"85","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stellar"},{"ID":"8053","标识":"IC213","M标识":"IC213","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h14m4.2s","赤经D(J2000)":"2.2345","赤纬(J2000)":"+16h27m22s","赤纬D(J2000)":"16.45611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"150","详细描述":"faint, small, gradually brighter middle, 13.5 magnitude star close","简略描述":"F, S, gbM, * 13.5 close"},{"ID":"8054","标识":"IC214","M标识":"IC214","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h14m5.7s","赤经D(J2000)":"2.234916666666667","赤纬(J2000)":"+5h10m34s","赤纬D(J2000)":"5.176111111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"14.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"162","详细描述":"pretty bright, small, gradually brighter middle, mottled but not resolved","简略描述":"pB, S, gbM, r"},{"ID":"8055","标识":"IC215","M标识":"IC215","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h14m9.3s","赤经D(J2000)":"2.2359166666666668","赤纬(J2000)":"-6h48m22s","赤纬D(J2000)":"-6.806111111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"81","详细描述":"pretty bright, extended east-west","简略描述":"pB, E pf"},{"ID":"8056","标识":"IC216","M标识":"IC216","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h15m55.3s","赤经D(J2000)":"2.265361111111111","赤纬(J2000)":"-2h0m53s","赤纬D(J2000)":"-2.0147222222222223","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"20","详细描述":"very faint, extremely small, round, a little brighter middle","简略描述":"vF, eS, R, lbM"},{"ID":"8057","标识":"IC217","M标识":"IC217","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h16m10.6s","赤经D(J2000)":"2.2696111111111112","赤纬(J2000)":"-11h55m32s","赤纬D(J2000)":"-11.925555555555555","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.2","短轴(分)":"0.5","方位角":"39","详细描述":"faint, pretty large, extended north-south","简略描述":"F, pL, E ns"},{"ID":"8058","标识":"IC218","M标识":"IC218","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h17m7.2s","赤经D(J2000)":"2.285333333333333","赤纬(J2000)":"+1h16m57s","赤纬D(J2000)":"1.2825","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"77","详细描述":"very faint, small, diffuse, 13.5 magnitude star close, (NGC) 875 to southeast","简略描述":"vF, S, dif, * 13.5 close, 875 sf"},{"ID":"8059","标识":"IC219","M标识":"IC219","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h18m38.7s","赤经D(J2000)":"2.3107499999999996","赤纬(J2000)":"-6h54m11s","赤纬D(J2000)":"-6.9030555555555555","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.6","方位角":"18","详细描述":"pretty bright, small, stellar","简略描述":"pB, S, stellar"},{"ID":"8060","标识":"IC220","M标识":"IC220","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h19m11.9s","赤经D(J2000)":"2.319972222222222","赤纬(J2000)":"-12h46m53s","赤纬D(J2000)":"-12.78138888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"36","详细描述":"very faint, diffuse, a very little brighter middle","简略描述":"vF, dif, vlbM"},{"ID":"8061","标识":"IC221","M标识":"IC221","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h22m40.8s","赤经D(J2000)":"2.378","赤纬(J2000)":"+28h15m25s","赤纬D(J2000)":"28.256944444444443","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"9","详细描述":"faint, pretty large, round","简略描述":"F, pL, R"},{"ID":"8062","标识":"IC222","M标识":"IC222","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h22m47.9s","赤经D(J2000)":"2.3799722222222224","赤纬(J2000)":"+11h38m19s","赤纬D(J2000)":"11.63861111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"24","详细描述":"faint, small, irregular, nuclear, excentric","简略描述":"F, S, irr, N, excentr"},{"ID":"8063","标识":"IC223","M标识":"IC223","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h22m1s","赤经D(J2000)":"2.3669444444444445","赤纬(J2000)":"-20h44m45s","赤纬D(J2000)":"-20.745833333333334","可见光星等V":"13.4","摄影(蓝光)星等B":"14","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"152","详细描述":"very faint, small, diffuse, very faint stellar nucleus","简略描述":"vF, S, dif, vF stell N"},{"ID":"8064","标识":"IC224","M标识":"IC224","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h24m45.2s","赤经D(J2000)":"2.4125555555555556","赤纬(J2000)":"-12h33m50s","赤纬D(J2000)":"-12.56388888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"132","详细描述":"faint, small, irregularly round, a little brighter middle","简略描述":"F, S, irr R, lbM"},{"ID":"8065","标识":"IC225","M标识":"IC225","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h26m28.2s","赤经D(J2000)":"2.4411666666666667","赤纬(J2000)":"+1h9m39s","赤纬D(J2000)":"1.1608333333333332","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.9","方位角":"168","详细描述":"faint, small, round, a very little brighter middle, 14th magnitude star 2 arcmin to northeast","简略描述":"F, S, R, vlbM, * 14 nf 2'"},{"ID":"8066","标识":"IC226","M标识":"IC226","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h27m45.5s","赤经D(J2000)":"2.4626388888888893","赤纬(J2000)":"+28h12m32s","赤纬D(J2000)":"28.20888888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"15","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"150","详细描述":"pretty faint, small, round, brighter middle, 2 faint stars to north","简略描述":"pF, S, R, bM, 2 F st n"},{"ID":"8067","标识":"IC227","M标识":"IC227","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h28m3.4s","赤经D(J2000)":"2.467611111111111","赤纬(J2000)":"+28h10m32s","赤纬D(J2000)":"28.175555555555558","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"60","详细描述":"faint, pretty small, round, a little brighter middle","简略描述":"F, pS, R, lbM"},{"ID":"8068","标识":"IC228","M标识":"IC228","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h26m41.6s","赤经D(J2000)":"2.4448888888888893","赤纬(J2000)":"-14h30m57s","赤纬D(J2000)":"-14.515833333333333","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"15","详细描述":"very small, round, gradually brighter middle","简略描述":"vS, R, gbM"},{"ID":"8069","标识":"IC229","M标识":"IC229","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h27m23s","赤经D(J2000)":"2.456388888888889","赤纬(J2000)":"-23h49m12s","赤纬D(J2000)":"-23.82","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a nebula, 10th magnitude","简略描述":"Neb, 10 mag"},{"ID":"8070","标识":"IC230","M标识":"IC230","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h28m47.2s","赤经D(J2000)":"2.479777777777778","赤纬(J2000)":"-10h49m54s","赤纬D(J2000)":"-10.831666666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"90","详细描述":"extremely faint, small, 9.4 magnitude star 9 arcmin to northwest","简略描述":"eF, S, * 9.4 np 9'"},{"ID":"8071","标识":"IC231","M标识":"IC231","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h29m56.3s","赤经D(J2000)":"2.498972222222222","赤纬(J2000)":"+1h10m46s","赤纬D(J2000)":"1.1794444444444445","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.8","方位角":"160","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stellar"},{"ID":"8072","标识":"IC232","M标识":"IC232","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h31m11.5s","赤经D(J2000)":"2.519861111111111","赤纬(J2000)":"+1h15m58s","赤纬D(J2000)":"1.2661111111111112","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"155","详细描述":"very faint, small, round (= Javelle 567?)","简略描述":"vF, S, R, (? = J. 567)"},{"ID":"8073","标识":"IC233","M标识":"IC233","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h31m40.7s","赤经D(J2000)":"2.527972222222222","赤纬(J2000)":"+2h48m38s","赤纬D(J2000)":"2.8105555555555553","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"105","详细描述":"pretty faint, small, round, a little brighter middle, very faint star 1 arcmin to south","简略描述":"pF, S, R, lbM, vF * s 1'"},{"ID":"8074","标识":"IC234","M标识":"IC234","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h31m37.7s","赤经D(J2000)":"2.527138888888889","赤纬(J2000)":"-0h8m22s","赤纬D(J2000)":"-0.13944444444444445","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"150","详细描述":"faint, small, diffuse, mottled but not resolved","简略描述":"F, S, dif, r"},{"ID":"8075","标识":"IC235","M标识":"IC235","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h32m50.8s","赤经D(J2000)":"2.5474444444444444","赤纬(J2000)":"+20h38m29s","赤纬D(J2000)":"20.641388888888887","可见光星等V":"14.4","摄影(蓝光)星等B":"14.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"3","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"8076","标识":"IC236","M标识":"IC236","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h32m55.8s","赤经D(J2000)":"2.548833333333333","赤纬(J2000)":"-0h7m51s","赤纬D(J2000)":"-0.13083333333333333","可见光星等V":"16","摄影(蓝光)星等B":"16.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"25","详细描述":"faint, small, diffuse, a very little brighter middle","简略描述":"F, S, dif, vlbM"},{"ID":"8077","标识":"IC237","M标识":"IC237","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h33m31.6s","赤经D(J2000)":"2.558777777777778","赤纬(J2000)":"+1h8m23s","赤纬D(J2000)":"1.1397222222222223","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, 9.5 magnitude star to west","简略描述":"F, S, R, * 9.5 p"},{"ID":"8078","标识":"IC238","M标识":"IC238","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h35m22.7s","赤经D(J2000)":"2.589638888888889","赤纬(J2000)":"+12h50m18s","赤纬D(J2000)":"12.838333333333335","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"30","详细描述":"very faint, very small, round, much brighter middle","简略描述":"vF, vS, R, mbM"},{"ID":"8079","标识":"IC239","M标识":"IC239","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h36m27.9s","赤经D(J2000)":"2.6077500000000002","赤纬(J2000)":"+38h58m8s","赤纬D(J2000)":"38.96888888888889","可见光星等V":"11.1","摄影(蓝光)星等B":"11.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"4.6","短轴(分)":"4.2","方位角":"3","详细描述":"a very faint spiral, faint stellar nucleus","简略描述":"vF spiral, F stellar N"},{"ID":"8080","标识":"IC240","M标识":"IC240","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h38m58.3s","赤经D(J2000)":"2.6495277777777777","赤纬(J2000)":"+41h43m10s","赤纬D(J2000)":"41.71944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small","简略描述":"vF, pS"},{"ID":"8081","标识":"IC241","M标识":"IC241","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h37m54.4s","赤经D(J2000)":"2.6317777777777778","赤纬(J2000)":"+2h19m40s","赤纬D(J2000)":"2.3277777777777775","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"150","详细描述":"very faint, pretty small, round, stellar nucleus","简略描述":"vF, pS, R, stell N"},{"ID":"8082","标识":"IC242","M标识":"IC242","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h38m24s","赤经D(J2000)":"2.64","赤纬(J2000)":"-6h56m1s","赤纬D(J2000)":"-6.933611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, very faint star close","简略描述":"eF, eS, vF * close"},{"ID":"8083","标识":"IC243","M标识":"IC243","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h38m32.1s","赤经D(J2000)":"2.6422499999999998","赤纬(J2000)":"-6h54m6s","赤纬D(J2000)":"-6.901666666666667","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"30","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"8084","标识":"IC244","M标识":"IC244","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h39m24.7s","赤经D(J2000)":"2.656861111111111","赤纬(J2000)":"+2h43m39s","赤纬D(J2000)":"2.7275","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"6","详细描述":"very faint, very small, diffuse","简略描述":"vF, vS, dif"},{"ID":"8085","标识":"IC245","M标识":"IC245","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h38m54.4s","赤经D(J2000)":"2.6484444444444444","赤纬(J2000)":"-14h18m22s","赤纬D(J2000)":"-14.306111111111111","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"21","详细描述":"pretty bright, small, round, a little brighter middle","简略描述":"pB, S, R, lbM"},{"ID":"8086","标识":"IC246","M标识":"IC246","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h40m28.5s","赤经D(J2000)":"2.674583333333333","赤纬(J2000)":"+2h28m45s","赤纬D(J2000)":"2.479166666666667","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"65","详细描述":"most extremely faint, very faint, round, 2 extremely faint stars near","简略描述":"eef, vF, R, 2 eF st nr"},{"ID":"8087","标识":"IC247","M标识":"IC247","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h40m8.7s","赤经D(J2000)":"2.669083333333333","赤纬(J2000)":"-11h44m0s","赤纬D(J2000)":"-11.733333333333333","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"1","方位角":"45","详细描述":"pretty bright, small, round","简略描述":"pB, S, R"},{"ID":"8088","标识":"IC248","M标识":"IC248","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h41m25.6s","赤经D(J2000)":"2.6904444444444446","赤纬(J2000)":"+17h48m43s","赤纬D(J2000)":"17.811944444444446","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"145","详细描述":"very faint","简略描述":"vF"},{"ID":"8089","标识":"IC249","M标识":"IC249","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sm","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h41m2.2s","赤经D(J2000)":"2.6839444444444447","赤纬(J2000)":"-6h56m8s","赤纬D(J2000)":"-6.935555555555556","可见光星等V":"12.8","摄影(蓝光)星等B":"13.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"49","详细描述":"pretty bright, very small, round, diffuse, (NGC) 1051 to east","简略描述":"pB, vS, R, dif, 1051 f"},{"ID":"8090","标识":"IC250","M标识":"IC250","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h40m54.2s","赤经D(J2000)":"2.681722222222222","赤纬(J2000)":"-13h18m49s","赤纬D(J2000)":"-13.313611111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"126","详细描述":"very faint, pretty small, irregular figure","简略描述":"vF, pS, iF"},{"ID":"8091","标识":"IC251","M标识":"IC251","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h41m13.8s","赤经D(J2000)":"2.6871666666666667","赤纬(J2000)":"-14h57m29s","赤纬D(J2000)":"-14.958055555555555","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, small, a little brighter middle","简略描述":"F, S, lbM"},{"ID":"8092","标识":"IC252","M标识":"IC252","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h41m45s","赤经D(J2000)":"2.6958333333333337","赤纬(J2000)":"-14h50m52s","赤纬D(J2000)":"-14.847777777777779","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"20","详细描述":"faint, small, brighter middle","简略描述":"F, S, bM"},{"ID":"8093","标识":"IC253","M标识":"IC253","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h42m5.7s","赤经D(J2000)":"2.7015833333333337","赤纬(J2000)":"-15h2m50s","赤纬D(J2000)":"-15.047222222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"155","详细描述":"pretty bright, irregular figure, brighter middle","简略描述":"pB, iF, bM"},{"ID":"8094","标识":"IC254","M标识":"IC254","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h42m4.8s","赤经D(J2000)":"2.7013333333333334","赤纬(J2000)":"-15h6m26s","赤纬D(J2000)":"-15.107222222222221","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"90","详细描述":"very faint, extremely small, round, 1065 close","简略描述":"vF, eS, R, 1065 close"},{"ID":"8095","标识":"IC255","M标识":"IC255","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h47m3.3s","赤经D(J2000)":"2.7842499999999997","赤纬(J2000)":"+16h17m20s","赤纬D(J2000)":"16.28888888888889","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"45","详细描述":"very faint, very small, round, 12th magnitude star 5 seconds of time to east","简略描述":"vF, vS, R, * 12 f 5s"},{"ID":"8096","标识":"IC256","M标识":"IC256","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h49m40.3s","赤经D(J2000)":"2.827861111111111","赤纬(J2000)":"+46h57m16s","赤纬D(J2000)":"46.95444444444445","可见光星等V":"16.9","摄影(蓝光)星等B":"17.9","B-V":"1","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"10","详细描述":"extremely faint, a little extended, small, 1st of 3","简略描述":"cF, lE, S, 1st of 3"},{"ID":"8097","标识":"IC257","M标识":"IC257","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h49m45.2s","赤经D(J2000)":"2.829222222222222","赤纬(J2000)":"+46h58m32s","赤纬D(J2000)":"46.97555555555556","可见光星等V":"12.6","摄影(蓝光)星等B":"13.8","B-V":"1.2","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"155","详细描述":"extremely faint, pretty small, round, very difficult, 2nd of 3","简略描述":"eF, pS, R, v diffic, 2nd of 3"},{"ID":"8098","标识":"IC258","M标识":"IC258","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h49m45.9s","赤经D(J2000)":"2.8294166666666665","赤纬(J2000)":"+41h3m7s","赤纬D(J2000)":"41.051944444444445","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"1","短轴(分)":"0.6","方位角":"","详细描述":"very faint, a very little brighter middle, 9.5 magnitude star 2 arcmin to east","简略描述":"vF, vlbM, * 9.5 f 2'"},{"ID":"8099","标识":"IC259","M标识":"IC259","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h49m40.8s","赤经D(J2000)":"2.828","赤纬(J2000)":"+41h3m20s","赤纬D(J2000)":"41.05555555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"","详细描述":"very faint, double, distance 17 arcsec","简略描述":"vF, double, dist 17\""},{"ID":"8100","标识":"IC260","M标识":"IC260","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h51m0.9s","赤经D(J2000)":"2.85025","赤纬(J2000)":"+46h57m18s","赤纬D(J2000)":"46.955000000000005","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.7","方位角":"175","详细描述":"most extremely faint, pretty small, 2 faint stars near, 3rd of 3","简略描述":"eeF, pS, 2 F st nr, 3rd of 3"},{"ID":"8101","标识":"IC261","M标识":"IC261","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h49m4s","赤经D(J2000)":"2.8177777777777777","赤纬(J2000)":"-14h28m13s","赤纬D(J2000)":"-14.470277777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"40","详细描述":"faint, pretty large","简略描述":"F, pL"},{"ID":"8102","标识":"IC262","M标识":"IC262","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h51m43.2s","赤经D(J2000)":"2.862","赤纬(J2000)":"+42h49m42s","赤纬D(J2000)":"42.82833333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"62","详细描述":"most extremely faint, pretty small, round, between 2 stars, very difficult","简略描述":"eeF, pS, R, bet 2 st, v diffic"},{"ID":"8103","标识":"IC263","M标识":"IC263","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h49m39.9s","赤经D(J2000)":"2.8277499999999995","赤纬(J2000)":"-0h4m11s","赤纬D(J2000)":"-0.06972222222222223","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, round, nucleus = 14th magnitude","简略描述":"vF, vS, R, N = 14m"},{"ID":"8104","标识":"IC264","M标识":"IC264","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h48m47.7s","赤经D(J2000)":"2.81325","赤纬(J2000)":"-0h6m31s","赤纬D(J2000)":"-0.10861111111111112","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"40","详细描述":"very faint, extremely small, round, stellar","简略描述":"vF, eS, R, stellar"},{"ID":"8105","标识":"IC265","M标识":"IC265","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h54m43.9s","赤经D(J2000)":"2.9121944444444443","赤纬(J2000)":"+41h39m21s","赤纬D(J2000)":"41.655833333333334","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"most extremely faint, extremely small, round","简略描述":"eeF, eS, R"},{"ID":"8106","标识":"IC266","M标识":"IC266","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"2h55m4.7s","赤经D(J2000)":"2.917972222222222","赤纬(J2000)":"+42h15m50s","赤纬D(J2000)":"42.263888888888886","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"126","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"8107","标识":"IC267","M标识":"IC267","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h53m50.1s","赤经D(J2000)":"2.89725","赤纬(J2000)":"+12h50m57s","赤纬D(J2000)":"12.849166666666667","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"156","详细描述":"very faint, pretty small, diffuse, II 254 to northwest","简略描述":"vF, pS, dif, II 254 np"},{"ID":"8108","标识":"IC268","M标识":"IC268","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h55m26.9s","赤经D(J2000)":"2.924138888888889","赤纬(J2000)":"-14h6m12s","赤纬D(J2000)":"-14.103333333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1","短轴(分)":"0.6","方位角":"72","详细描述":"very faint, very small, irregularly round, a little brighter middle","简略描述":"vF, vS, irr R, lbM"},{"ID":"8109","标识":"IC269","M标识":"IC269","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h55m26.4s","赤经D(J2000)":"2.924","赤纬(J2000)":"-14h3m59s","赤纬D(J2000)":"-14.06638888888889","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"126","详细描述":"extremely faint, very small, diffuse","简略描述":"eF, vS, dif"},{"ID":"8110","标识":"IC270","M标识":"IC270","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h55m44.1s","赤经D(J2000)":"2.9289166666666664","赤纬(J2000)":"-14h12m27s","赤纬D(J2000)":"-14.2075","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"90","详细描述":"pretty bright, very small, round","简略描述":"pB, vS, R"},{"ID":"8111","标识":"IC271","M标识":"IC271","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h55m59.4s","赤经D(J2000)":"2.9331666666666667","赤纬(J2000)":"-12h0m30s","赤纬D(J2000)":"-12.008333333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"120","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"8112","标识":"IC272","M标识":"IC272","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h56m6.3s","赤经D(J2000)":"2.9350833333333335","赤纬(J2000)":"-14h11m13s","赤纬D(J2000)":"-14.186944444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.7","方位角":"171","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"8113","标识":"IC273","M标识":"IC273","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h57m10.7s","赤经D(J2000)":"2.9529722222222223","赤纬(J2000)":"+2h46m34s","赤纬D(J2000)":"2.776111111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"31","详细描述":"faint, pretty small, a little extended 235°, brighter middle","简略描述":"F, pS, lE 235°, bM"},{"ID":"8114","标识":"IC274","M标识":"IC274","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h0m6s","赤经D(J2000)":"3.0016666666666665","赤纬(J2000)":"+44h13m0s","赤纬D(J2000)":"44.21666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"8115","标识":"IC275","M标识":"IC275","拓展名":"","组件":"3","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h0m58.6s","赤经D(J2000)":"3.016277777777778","赤纬(J2000)":"+44h21m2s","赤纬D(J2000)":"44.35055555555556","可见光星等V":"15.6","摄影(蓝光)星等B":"16.6","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"most extremely faint, pretty small, round, between 2 stars","简略描述":"eeF, pS, R, bet 2 st"},{"ID":"8116","标识":"IC276","M标识":"IC276","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h58m41s","赤经D(J2000)":"2.9780555555555557","赤纬(J2000)":"-15h42m12s","赤纬D(J2000)":"-15.703333333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2","短轴(分)":"0.5","方位角":"60","详细描述":"pretty bright, small, much brighter middle","简略描述":"pB, S, mbM"},{"ID":"8117","标识":"IC277","M标识":"IC277","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h59m50.5s","赤经D(J2000)":"2.997361111111111","赤纬(J2000)":"+2h46m16s","赤纬D(J2000)":"2.771111111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"33","详细描述":"pretty bright. pretty small, round, nucleus = 12.5 magnitude","简略描述":"pB, pS, R, N = 12.5"},{"ID":"8118","标识":"IC278","M标识":"IC278","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h1m30.4s","赤经D(J2000)":"3.025111111111111","赤纬(J2000)":"+37h45m59s","赤纬D(J2000)":"37.76638888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"very faint, 10th magnitude star 95 arcsec to west, faint star 12 arcsec to southwest","简略描述":"vF, * 10 p 95\", F * 12\" sp"},{"ID":"8119","标识":"IC279","M标识":"IC279","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"3h1m12.2s","赤经D(J2000)":"3.0200555555555555","赤纬(J2000)":"+16h12m33s","赤纬D(J2000)":"16.209166666666665","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"0","详细描述":"very faint, very small, round, diffuse","简略描述":"vF, vS, R, dif"},{"ID":"8120","标识":"IC280","M标识":"IC280","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h3m3s","赤经D(J2000)":"3.0508333333333333","赤纬(J2000)":"+42h21m32s","赤纬D(J2000)":"42.35888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"8121","标识":"IC281","M标识":"IC281","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h4m37.2s","赤经D(J2000)":"3.0770000000000004","赤纬(J2000)":"+42h21m46s","赤纬D(J2000)":"42.36277777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"most extremely faint, very small, star close to north, II 607 near","简略描述":"eeF, vS, * close n, II 607 nr"},{"ID":"8122","标识":"IC282","M标识":"IC282","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h6m13.3s","赤经D(J2000)":"3.1036944444444448","赤纬(J2000)":"+41h50m56s","赤纬D(J2000)":"41.848888888888894","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"120","详细描述":"extremely faint, small, round, between 2 nearby stars","简略描述":"eF, S, R, bet 2 st nr"},{"ID":"8123","标识":"IC283","M标识":"IC283","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"3h3m50.5s","赤经D(J2000)":"3.0640277777777776","赤纬(J2000)":"-0h12m16s","赤纬D(J2000)":"-0.20444444444444446","可见光星等V":"14.9","摄影(蓝光)星等B":"15.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"20","详细描述":"pretty bright, extremely small, round","简略描述":"pB, eS, R"},{"ID":"8124","标识":"IC284","M标识":"IC284","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h6m9.9s","赤经D(J2000)":"3.10275","赤纬(J2000)":"+42h22m18s","赤纬D(J2000)":"42.37166666666667","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.8","短轴(分)":"1.2","方位角":"13","详细描述":"most extremely faint, pretty large, a little extended, double star to northwest, between 2 stars","简略描述":"eeF, pL, lE, D * np, bet 2 st"},{"ID":"8125","标识":"IC285","M标识":"IC285","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h4m6.2s","赤经D(J2000)":"3.0683888888888893","赤纬(J2000)":"-12h0m54s","赤纬D(J2000)":"-12.015","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"117","详细描述":"faint, very small, diffuse, II 475 to west","简略描述":"F, vS, dif, II. 475 p"},{"ID":"8126","标识":"IC286","M标识":"IC286","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h4m47.4s","赤经D(J2000)":"3.0798333333333336","赤纬(J2000)":"-6h29m7s","赤纬D(J2000)":"-6.485277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"8127","标识":"IC287","M标识":"IC287","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h4m57.8s","赤经D(J2000)":"3.0827222222222224","赤纬(J2000)":"-12h4m12s","赤纬D(J2000)":"-12.07","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"10","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stellar"},{"ID":"8128","标识":"IC288","M标识":"IC288","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h7m32.8s","赤经D(J2000)":"3.125777777777778","赤纬(J2000)":"+42h23m16s","赤纬D(J2000)":"42.38777777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.3","方位角":"42","详细描述":"very faint, very small, round, 2 stars to northeast, perhaps a small cluster?","简略描述":"vF, vS, R, 2 st nf, ? S Cl"},{"ID":"8129","标识":"IC289","M标识":"IC289","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"3h10m19.2s","赤经D(J2000)":"3.1719999999999997","赤纬(J2000)":"+61h19m3s","赤纬D(J2000)":"61.3175","可见光星等V":"13.2","摄影(蓝光)星等B":"12.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, round, between 2 very faint stars","简略描述":"pB, pL, R, bet 2 vF st"},{"ID":"8130","标识":"IC290","M标识":"IC290","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h9m42.8s","赤经D(J2000)":"3.161888888888889","赤纬(J2000)":"+40h58m30s","赤纬D(J2000)":"40.975","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"131","详细描述":"most extremely faint, small, round","简略描述":"eeF, S, R"},{"ID":"8131","标识":"IC291","M标识":"IC291","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h7m26.6s","赤经D(J2000)":"3.1240555555555556","赤纬(J2000)":"-12h35m13s","赤纬D(J2000)":"-12.586944444444445","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"90","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"8132","标识":"IC292","M标识":"IC292","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h10m12.9s","赤经D(J2000)":"3.17025","赤纬(J2000)":"+40h45m57s","赤纬D(J2000)":"40.76583333333333","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"75","详细描述":"extremely faint, pretty small, round, star to south, between 2 stars","简略描述":"eF, pS, R, * s, bet 2 st"},{"ID":"8133","标识":"IC293","M标识":"IC293","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h10m56.1s","赤经D(J2000)":"3.18225","赤纬(J2000)":"+41h8m16s","赤纬D(J2000)":"41.13777777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"90","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"8134","标识":"IC294","M标识":"IC294","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h11m3.1s","赤经D(J2000)":"3.184194444444444","赤纬(J2000)":"+40h37m18s","赤纬D(J2000)":"40.62166666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"15","长轴(分)":"2.1","短轴(分)":"1.5","方位角":"123","详细描述":"very faint, pretty small, irregularly round","简略描述":"vF, pS, irr R"},{"ID":"8135","标识":"IC295","M标识":"IC295","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h11m3.1s","赤经D(J2000)":"3.184194444444444","赤纬(J2000)":"+40h37m18s","赤纬D(J2000)":"40.62166666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"15","长轴(分)":"2.1","短轴(分)":"1.5","方位角":"123","详细描述":"very faint, pretty small, irregularly round","简略描述":"eF, pS, R"},{"ID":"8136","标识":"IC296","M标识":"IC296","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h11m3.1s","赤经D(J2000)":"3.184194444444444","赤纬(J2000)":"+40h37m18s","赤纬D(J2000)":"40.62166666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"15","长轴(分)":"2.1","短轴(分)":"1.5","方位角":"123","详细描述":"very faint, pretty small, irregularly round","简略描述":"eF, pS, irr R, F D * p"},{"ID":"8137","标识":"IC297","M标识":"IC297","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h13m18.4s","赤经D(J2000)":"3.221777777777778","赤纬(J2000)":"+42h8m55s","赤纬D(J2000)":"42.14861111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, pretty small, round, very difficult, faint star to southwest","简略描述":"eeF, pS, R, v diffic, F * sp"},{"ID":"8138","标识":"IC298","M标识":"IC298","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Ring","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"3h11m18.3s","赤经D(J2000)":"3.1884166666666665","赤纬(J2000)":"+1h18m57s","赤纬D(J2000)":"1.3158333333333334","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"126","详细描述":"faint, pretty large, 2 bright points involved","简略描述":"F, pL, 2 B points inv"},{"ID":"8139","标识":"IC299","M标识":"IC299","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h11m2.5s","赤经D(J2000)":"3.1840277777777777","赤纬(J2000)":"-13h6m33s","赤纬D(J2000)":"-13.109166666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"8140","标识":"IC300","M标识":"IC300","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h14m15.8s","赤经D(J2000)":"3.237722222222222","赤纬(J2000)":"+42h24m54s","赤纬D(J2000)":"42.415","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, small, round, 9th magnitude star to southwest, northwestern of 2","简略描述":"eF, S, R, * 9 sp, np of 2"},{"ID":"8141","标识":"IC301","M标识":"IC301","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h14m47.7s","赤经D(J2000)":"3.2465833333333336","赤纬(J2000)":"+42h13m23s","赤纬D(J2000)":"42.223055555555554","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, pretty small, round, southeastern of 2","简略描述":"eF, pS, R, sf of 2"},{"ID":"8142","标识":"IC302","M标识":"IC302","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"3h12m51.3s","赤经D(J2000)":"3.2142500000000003","赤纬(J2000)":"+4h42m23s","赤纬D(J2000)":"4.706388888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"21","详细描述":"pretty faint, pretty small, round, very small nucleus","简略描述":"pF, pS, R, vSN"},{"ID":"8143","标识":"IC303","M标识":"IC303","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h12m40.8s","赤经D(J2000)":"3.2113333333333336","赤纬(J2000)":"-11h41m22s","赤纬D(J2000)":"-11.689444444444444","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"30","详细描述":"extremely faint, extremely small, stellar","简略描述":"eF, eS, stellar"},{"ID":"8144","标识":"IC304","M标识":"IC304","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h15m1.4s","赤经D(J2000)":"3.2503888888888888","赤纬(J2000)":"+37h52m55s","赤纬D(J2000)":"37.88194444444444","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"25","详细描述":"very faint, star 76 arcsec to southeast, northwestern of 2","简略描述":"vF, * 76\" sf, np of 2"},{"ID":"8145","标识":"IC305","M标识":"IC305","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h15m3.7s","赤经D(J2000)":"3.251027777777778","赤纬(J2000)":"+37h51m38s","赤纬D(J2000)":"37.86055555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"45","详细描述":"very faint, star 49 arcsec to northeast","简略描述":"vF, * 49\" nf"},{"ID":"8146","标识":"IC306","M标识":"IC306","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h13m0.2s","赤经D(J2000)":"3.2167222222222223","赤纬(J2000)":"-11h42m57s","赤纬D(J2000)":"-11.715833333333332","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"80","详细描述":"extremely faint, small, round, difficult","简略描述":"eF, S, R, diffic"},{"ID":"8147","标识":"IC307","M标识":"IC307","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"3h13m45.2s","赤经D(J2000)":"3.2292222222222224","赤纬(J2000)":"-0h14m28s","赤纬D(J2000)":"-0.2411111111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"73","详细描述":"pretty bright, very small, mottled but not resolved","简略描述":"pB, vS, r"},{"ID":"8148","标识":"IC308","M标识":"IC308","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h16m15.9s","赤经D(J2000)":"3.2710833333333333","赤纬(J2000)":"+41h10m53s","赤纬D(J2000)":"41.18138888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.4","B-V":"1.2","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"extremely faint, pretty small, irregularly round, mottled but not resolved?","简略描述":"eF, pS, iR, r ?"},{"ID":"8149","标识":"IC309","M标识":"IC309","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h16m6.2s","赤经D(J2000)":"3.268388888888889","赤纬(J2000)":"+40h48m17s","赤纬D(J2000)":"40.80472222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"most extremely faint, pretty small, round, between 2 stars","简略描述":"eeF, pS, R, bet 2 st"},{"ID":"8150","标识":"IC310","M标识":"IC310","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h16m43s","赤经D(J2000)":"3.278611111111111","赤纬(J2000)":"+41h19m29s","赤纬D(J2000)":"41.32472222222223","可见光星等V":"12.7","摄影(蓝光)星等B":"13.9","B-V":"1.2","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"very faint, pretty small, round, (NGC) 1259 and 1260 near","简略描述":"vF, pS, R, 1259 and 1260 near"},{"ID":"8151","标识":"IC311","M标识":"IC311","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h16m46.8s","赤经D(J2000)":"3.2796666666666665","赤纬(J2000)":"+40h0m15s","赤纬D(J2000)":"40.00416666666667","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"113","详细描述":"extremely faint, pretty small, irregularly round, between 2 stars, very faint star very close to east","简略描述":"eF, pS, iR, bet 2 st, vF * v close f"},{"ID":"8152","标识":"IC312","M标识":"IC312","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E5","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h18m8.4s","赤经D(J2000)":"3.3023333333333333","赤纬(J2000)":"+41h45m16s","赤纬D(J2000)":"41.754444444444445","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.5","方位角":"125","详细描述":"most extremely faint, pretty small, round, nearly between 2 stars","简略描述":"eeF, pS, R, nearly bet 2 st"},{"ID":"8153","标识":"IC313","M标识":"IC313","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h20m57.9s","赤经D(J2000)":"3.349416666666667","赤纬(J2000)":"+41h53m39s","赤纬D(J2000)":"41.89416666666666","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"","详细描述":"most extremely faint, very small, round, close double star near to south","简略描述":"eeF, vS, R, close D * nr s"},{"ID":"8154","标识":"IC314","M标识":"IC314","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h18m49.8s","赤经D(J2000)":"3.313833333333333","赤纬(J2000)":"-1h58m23s","赤纬D(J2000)":"-1.9730555555555558","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"100","详细描述":"a 13th magnitude star in a very faint, small nebula","简略描述":"* 13 in vF, S neb"},{"ID":"8155","标识":"IC315","M标识":"IC315","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"3h19m9.3s","赤经D(J2000)":"3.31925","赤纬(J2000)":"+4h2m21s","赤纬D(J2000)":"4.039166666666667","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"36","详细描述":"very faint, small, diffuse, a very little brighter middle","简略描述":"vF, S, dif, vlbM"},{"ID":"8156","标识":"IC316","M标识":"IC316","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h21m19.9s","赤经D(J2000)":"3.3555277777777777","赤纬(J2000)":"+41h55m55s","赤纬D(J2000)":"41.93194444444444","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"64","详细描述":"most extremely faint, pretty small, round","简略描述":"eeF, pS, R"},{"ID":"8157","标识":"IC317","M标识":"IC317","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h18m55.4s","赤经D(J2000)":"3.3153888888888887","赤纬(J2000)":"-12h44m23s","赤纬D(J2000)":"-12.739722222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"39","详细描述":"very faint, pretty large, round","简略描述":"vF, pL, R"},{"ID":"8158","标识":"IC318","M标识":"IC318","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h20m43.8s","赤经D(J2000)":"3.3455000000000004","赤纬(J2000)":"-14h34m5s","赤纬D(J2000)":"-14.568055555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"138","详细描述":"faint, small, diffuse, a little brighter middle","简略描述":"F, S, dif, lbM"},{"ID":"8159","标识":"IC319","M标识":"IC319","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h23m27.3s","赤经D(J2000)":"3.3909166666666666","赤纬(J2000)":"+41h24m2s","赤纬D(J2000)":"41.400555555555556","可见光星等V":"99","摄影(蓝光)星等B":"14.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"stellar, = 13th magnitude star","简略描述":"stellar, = 13m"},{"ID":"8160","标识":"IC320","M标识":"IC320","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h25m59.2s","赤经D(J2000)":"3.433111111111111","赤纬(J2000)":"+40h47m21s","赤纬D(J2000)":"40.78916666666667","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"48","详细描述":"extremely faint, pretty small, round, very faint star close to west","简略描述":"eF, pS, R, vF * close p"},{"ID":"8161","标识":"IC321","M标识":"IC321","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h24m29.5s","赤经D(J2000)":"3.4081944444444443","赤纬(J2000)":"-14h59m9s","赤纬D(J2000)":"-14.985833333333332","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"pretty bright, very small, round","简略描述":"pB, vS, R"},{"ID":"8162","标识":"IC322","M标识":"IC322","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"D","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h26m0.5s","赤经D(J2000)":"3.4334722222222225","赤纬(J2000)":"+3h40m49s","赤纬D(J2000)":"3.6802777777777775","可见光星等V":"14.6","摄影(蓝光)星等B":"15.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"","详细描述":"very faint, pretty large, a very little brighter middle, difficult","简略描述":"vF, pL, vlbM, diffic"},{"ID":"8163","标识":"IC323","M标识":"IC323","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h29m33.5s","赤经D(J2000)":"3.492638888888889","赤纬(J2000)":"+41h51m21s","赤纬D(J2000)":"41.85583333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty small, round, western of 2","简略描述":"eF, pS, R, p of 2"},{"ID":"8164","标识":"IC324","M标识":"IC324","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E2","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h26m28.2s","赤经D(J2000)":"3.4411666666666667","赤纬(J2000)":"-21h21m20s","赤纬D(J2000)":"-21.355555555555558","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"3","详细描述":"faint, pretty small, diffuse, brighter middle","简略描述":"F, pS, dif, bM"},{"ID":"8165","标识":"IC325","M标识":"IC325","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h30m48.8s","赤经D(J2000)":"3.5135555555555555","赤纬(J2000)":"-7h2m47s","赤纬D(J2000)":"-7.046388888888889","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"15.1","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, small, round, a very little brighter middle","简略描述":"vF, S, R, vlbM"},{"ID":"8166","标识":"IC326","M标识":"IC326","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h30m36.5s","赤经D(J2000)":"3.5101388888888887","赤纬(J2000)":"-14h25m30s","赤纬D(J2000)":"-14.424999999999999","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"114","详细描述":"very faint, pretty large, extended north-south","简略描述":"vF, pL, E ns"},{"ID":"8167","标识":"IC327","M标识":"IC327","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h31m10.2s","赤经D(J2000)":"3.5195","赤纬(J2000)":"-14h41m32s","赤纬D(J2000)":"-14.692222222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"60","详细描述":"extremely faint, very small, diffuse, very difficult","简略描述":"eF, vS, dif, v diffic"},{"ID":"8168","标识":"IC328","M标识":"IC328","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h31m11s","赤经D(J2000)":"3.519722222222222","赤纬(J2000)":"-14h38m16s","赤纬D(J2000)":"-14.637777777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"15","详细描述":"very faint, extremely small, round","简略描述":"vF, eS, R"},{"ID":"8169","标识":"IC329","M标识":"IC329","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h32m1.3s","赤经D(J2000)":"3.5336944444444445","赤纬(J2000)":"+0h16m48s","赤纬D(J2000)":"0.27999999999999997","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"63","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"8170","标识":"IC330","M标识":"IC330","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h32m7.9s","赤经D(J2000)":"3.535527777777778","赤纬(J2000)":"+0h21m12s","赤纬D(J2000)":"0.35333333333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"78","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"8171","标识":"IC331","M标识":"IC331","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h32m19s","赤经D(J2000)":"3.538611111111111","赤纬(J2000)":"+0h16m58s","赤纬D(J2000)":"0.2827777777777778","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"a 13th magnitude star in a nebula","简略描述":"* 13 in neb"},{"ID":"8172","标识":"IC332","M标识":"IC332","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h32m37.4s","赤经D(J2000)":"3.543722222222222","赤纬(J2000)":"+1h22m59s","赤纬D(J2000)":"1.3830555555555555","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"42","详细描述":"faint, very small, round, suddenly brighter middle","简略描述":"F, vS, R, sbM"},{"ID":"8173","标识":"IC333","M标识":"IC333","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h34m0.7s","赤经D(J2000)":"3.566861111111111","赤纬(J2000)":"-5h6m26s","赤纬D(J2000)":"-5.107222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, 8.8 magnitude star 4 arcmin to northeast","简略描述":"eF, * 8.8 nf 4'"},{"ID":"8174","标识":"IC334","M标识":"IC334","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"I\/P","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"3h45m17.1s","赤经D(J2000)":"3.75475","赤纬(J2000)":"+76h38m15s","赤纬D(J2000)":"76.6375","可见光星等V":"11.3","摄影(蓝光)星等B":"12.5","B-V":"1.2","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.5","短轴(分)":"2.1","方位角":"51","详细描述":"pretty bright, small, 13th magnitude star involved on southeast","简略描述":"pB, S, * 13 inv sf"},{"ID":"8175","标识":"IC335","M标识":"IC335","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h35m31.2s","赤经D(J2000)":"3.592","赤纬(J2000)":"-34h26m48s","赤纬D(J2000)":"-34.446666666666665","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.6","短轴(分)":"0.7","方位角":"84","详细描述":"pretty faint, pretty small, extremely extended east-west","简略描述":"pF, pS, eE pf"},{"ID":"8176","标识":"IC336","M标识":"IC336","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h37m0s","赤经D(J2000)":"3.6166666666666667","赤纬(J2000)":"+23h24m0s","赤纬D(J2000)":"23.4","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, most extremely large, very diffuse","简略描述":"vF, eeL, v dif"},{"ID":"8177","标识":"IC337","M标识":"IC337","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h36m21.3s","赤经D(J2000)":"3.605916666666667","赤纬(J2000)":"-6h42m54s","赤纬D(J2000)":"-6.715","可见光星等V":"14.9","摄影(蓝光)星等B":"15.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"15.3","长轴(分)":"1.6","短轴(分)":"1","方位角":"165","详细描述":"most extremely faint, pretty large, 3 stars near","简略描述":"eeF, pL, 3 st nr"},{"ID":"8178","标识":"IC338","M标识":"IC338","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h37m38.1s","赤经D(J2000)":"3.62725","赤纬(J2000)":"+3h7m6s","赤纬D(J2000)":"3.118333333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"171","详细描述":"very faint, small, diffuse, very faint star close","简略描述":"vF, S, dif, vF * close"},{"ID":"8179","标识":"IC339","M标识":"IC339","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h38m1.9s","赤经D(J2000)":"3.633861111111111","赤纬(J2000)":"-18h23m59s","赤纬D(J2000)":"-18.399722222222223","可见光星等V":"99","摄影(蓝光)星等B":"12.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, stellar nucleus","简略描述":"eF, eS, stell N"},{"ID":"8180","标识":"IC340","M标识":"IC340","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h39m28.9s","赤经D(J2000)":"3.658027777777778","赤纬(J2000)":"-13h6m54s","赤纬D(J2000)":"-13.115","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"90","详细描述":"faint, pretty small, extended east-west, 14th magnitude star at end","简略描述":"F, pS, E pf, * 14 at end"},{"ID":"8181","标识":"IC341","M标识":"IC341","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h40m0s","赤经D(J2000)":"3.6666666666666665","赤纬(J2000)":"+22h0m0s","赤纬D(J2000)":"22","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"135","短轴(分)":"","方位角":"","详细描述":"very faint, most extremely large, very diffuse","简略描述":"vF, eeL, v dif"},{"ID":"8182","标识":"IC342","M标识":"IC342","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"马费伊1星系群","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"3h46m48.4s","赤经D(J2000)":"3.780111111111111","赤纬(J2000)":"+68h5m44s","赤纬D(J2000)":"68.09555555555555","可见光星等V":"8.4","摄影(蓝光)星等B":"9.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.9","长轴(分)":"21.4","短轴(分)":"20.9","方位角":"168","详细描述":"pretty bright, very small, 12th magnitude star close to north","简略描述":"pB, vS, * 12 close n"},{"ID":"8183","标识":"IC343","M标识":"IC343","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h40m7.1s","赤经D(J2000)":"3.668638888888889","赤纬(J2000)":"-18h26m38s","赤纬D(J2000)":"-18.44388888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"118","详细描述":"extremely faint, very small, a little extended 90°, diffuse","简略描述":"eF, vS, lE 90°, dif"},{"ID":"8184","标识":"IC344","M标识":"IC344","拓展名":"","组件":"","Class":"","业余排名":"16","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h41m29.5s","赤经D(J2000)":"3.691527777777778","赤纬(J2000)":"-4h39m56s","赤纬D(J2000)":"-4.665555555555556","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"45","详细描述":"most extremely faint, pretty large, round, II 455 to east","简略描述":"eeF, pL, R, II. 455 f"},{"ID":"8185","标识":"IC345","M标识":"IC345","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h41m9.1s","赤经D(J2000)":"3.6858611111111115","赤纬(J2000)":"-18h18m52s","赤纬D(J2000)":"-18.314444444444444","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"42","详细描述":"extremely faint, very small, irregularly round, gradually brighter middle","简略描述":"eF, vS, iR, gbM"},{"ID":"8186","标识":"IC346","M标识":"IC346","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h41m24.9s","赤经D(J2000)":"3.6902500000000003","赤纬(J2000)":"-18h22m16s","赤纬D(J2000)":"-18.371111111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small","简略描述":"vF, eS"},{"ID":"8187","标识":"IC347","M标识":"IC347","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h42m32.5s","赤经D(J2000)":"3.709027777777778","赤纬(J2000)":"-4h17m55s","赤纬D(J2000)":"-4.298611111111111","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"123","详细描述":"extremely faint, very small, round, stellar","简略描述":"eF, vS, R, stellar"},{"ID":"8188","标识":"IC348","M标识":"IC348","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"卷舌五星云","类型":"OCL","含重复类型":"OCL","形态":"IV2pn","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h44m34.1s","赤经D(J2000)":"3.7428055555555555","赤纬(J2000)":"+32h9m47s","赤纬D(J2000)":"32.16305555555555","可见光星等V":"7.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"pretty bright, very large, very gradually brighter middle","简略描述":"pB, vL, vgbM"},{"ID":"8189","标识":"IC349","M标识":"IC349","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"巴纳德昴宿五星云","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h46m20s","赤经D(J2000)":"3.772222222222222","赤纬(J2000)":"+23h56m23s","赤纬D(J2000)":"23.939722222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, very small, position angle 165°, distance 36 arcsec from Merope","简略描述":"eF, vS, Pos. 165°, Dist. 36\" from Merope"},{"ID":"8190","标识":"IC350","M标识":"IC350","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h44m36.6s","赤经D(J2000)":"3.7435","赤纬(J2000)":"-11h48m3s","赤纬D(J2000)":"-11.800833333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"171","详细描述":"faint, small, round, very diffuse","简略描述":"F, S, R, v dif"},{"ID":"8191","标识":"IC351","M标识":"IC351","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h47m33s","赤经D(J2000)":"3.7925","赤纬(J2000)":"+35h2m50s","赤纬D(J2000)":"35.04722222222222","可见光星等V":"11.9","摄影(蓝光)星等B":"12.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.3","短轴(分)":"","方位角":"","详细描述":"a planetary nebula equal to a 10th magnitude star, 9th magnitude star 14 seconds of time to west and 2 arcmin to south","简略描述":"Planetary = * 10m, * 9m p 14s, 2' s"},{"ID":"8192","标识":"IC352","M标识":"IC352","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h47m37.4s","赤经D(J2000)":"3.793722222222222","赤纬(J2000)":"-8h43m54s","赤纬D(J2000)":"-8.731666666666667","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"130","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"8193","标识":"IC353","M标识":"IC353","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h53m0.3s","赤经D(J2000)":"3.8834166666666667","赤纬(J2000)":"+25h48m0s","赤纬D(J2000)":"25.8","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"180","短轴(分)":"30","方位角":"","详细描述":"very faint, most extremely large, very diffuse","简略描述":"vF, eeL, v dif"},{"ID":"8194","标识":"IC354","M标识":"IC354","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h53m0s","赤经D(J2000)":"3.8833333333333333","赤纬(J2000)":"+23h0m0s","赤纬D(J2000)":"23","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"130","短轴(分)":"","方位角":"","详细描述":"very faint, most extremely large, very diffuse","简略描述":"vF, eeL, v dif"},{"ID":"8195","标识":"IC355","M标识":"IC355","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h53m46.3s","赤经D(J2000)":"3.8961944444444443","赤纬(J2000)":"+19h58m27s","赤纬D(J2000)":"19.974166666666665","可见光星等V":"14.9","摄影(蓝光)星等B":"15.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, small, round, diffuse","简略描述":"vF, S, R, dif"},{"ID":"8196","标识":"IC356","M标识":"IC356","拓展名":"","组件":"","Class":"","业余排名":"8.5","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"4h7m46.3s","赤经D(J2000)":"4.129527777777778","赤纬(J2000)":"+69h48m43s","赤纬D(J2000)":"69.81194444444444","可见光星等V":"10.6","摄影(蓝光)星等B":"11.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"5.9","短轴(分)":"3.9","方位角":"105","详细描述":"pretty faint, pretty large, brighter middle, 8.5 magnitude star 4 arcmin to north","简略描述":"pF, pL, bM, * 8.5 4' n"},{"ID":"8197","标识":"IC357","M标识":"IC357","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h3m43.9s","赤经D(J2000)":"4.062194444444445","赤纬(J2000)":"+22h9m35s","赤纬D(J2000)":"22.15972222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1","方位角":"175","详细描述":"faint, small, round, nucleus = 13.5 magnitude star","简略描述":"F, S, R, N = 13.5"},{"ID":"8198","标识":"IC358","M标识":"IC358","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h3m42.8s","赤经D(J2000)":"4.061888888888888","赤纬(J2000)":"+19h53m44s","赤纬D(J2000)":"19.895555555555553","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.4","方位角":"64","详细描述":"very small, diffuse, a little brighter middle","简略描述":"vS, dif, lbM"},{"ID":"8199","标识":"IC359","M标识":"IC359","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h12m28.4s","赤经D(J2000)":"4.207888888888889","赤纬(J2000)":"+27h42m11s","赤纬D(J2000)":"27.703055555555554","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"most extremely faint, pretty large, round","简略描述":"eeF, pL, R"},{"ID":"8200","标识":"IC360","M标识":"IC360","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h9m0s","赤经D(J2000)":"4.15","赤纬(J2000)":"+26h6m0s","赤纬D(J2000)":"26.1","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"180","短轴(分)":"100","方位角":"","详细描述":"very faint, most extremely large, very diffuse","简略描述":"vF, eeL, v dif"},{"ID":"8201","标识":"IC361","M标识":"IC361","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1r","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"4h18m50.6s","赤经D(J2000)":"4.314055555555555","赤纬(J2000)":"+58h14m58s","赤纬D(J2000)":"58.24944444444444","可见光星等V":"11.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"faint, large, a nebulous cluster?","简略描述":"F, L, ? neb Cl"},{"ID":"8202","标识":"IC362","M标识":"IC362","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h16m42.4s","赤经D(J2000)":"4.278444444444444","赤纬(J2000)":"-12h11m59s","赤纬D(J2000)":"-12.199722222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"1","详细描述":"pretty bright, very small, brighter middle","简略描述":"pB, vS, bM"},{"ID":"8203","标识":"IC363","M标识":"IC363","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h18m55.2s","赤经D(J2000)":"4.315333333333333","赤纬(J2000)":"+3h1m56s","赤纬D(J2000)":"3.0322222222222224","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"10.8","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, 9th magnitude star 3 arcmin to northeast","简略描述":"eF, * 9 nf 3'"},{"ID":"8204","标识":"IC364","M标识":"IC364","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h19m6.6s","赤经D(J2000)":"4.318499999999999","赤纬(J2000)":"+3h11m22s","赤纬D(J2000)":"3.1894444444444443","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"11.1","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"80","详细描述":"very faint, very small, round, suddenly brighter middle","简略描述":"vF, vS, R, sbM"},{"ID":"8205","标识":"IC365","M标识":"IC365","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h19m14.2s","赤经D(J2000)":"4.320611111111111","赤纬(J2000)":"+3h20m56s","赤纬D(J2000)":"3.3488888888888892","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.6","方位角":"30","详细描述":"pretty bright, small, irregular figure, suddenly brighter middle","简略描述":"pB, S, iF, sbM"},{"ID":"8206","标识":"IC366","M标识":"IC366","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h19m41.5s","赤经D(J2000)":"4.328194444444444","赤纬(J2000)":"+2h21m37s","赤纬D(J2000)":"2.3602777777777777","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"15","详细描述":"extremely faint, 3 arcmin southeast of (NGC) 1550","简略描述":"eF, 3' sf of 1550"},{"ID":"8207","标识":"IC367","M标识":"IC367","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h20m41s","赤经D(J2000)":"4.344722222222222","赤纬(J2000)":"-14h46m50s","赤纬D(J2000)":"-14.780555555555557","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"141","详细描述":"pretty bright, pretty large, diffuse","简略描述":"pB, pL, dif"},{"ID":"8208","标识":"IC368","M标识":"IC368","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h22m42.7s","赤经D(J2000)":"4.378527777777777","赤纬(J2000)":"-12h36m53s","赤纬D(J2000)":"-12.614722222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"174","详细描述":"extremely small, round, brighter middle","简略描述":"eS, R, bM"},{"ID":"8209","标识":"IC369","M标识":"IC369","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h23m28.2s","赤经D(J2000)":"4.391166666666667","赤纬(J2000)":"-11h47m22s","赤纬D(J2000)":"-11.789444444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, stellar","简略描述":"F, S, R, stellar"},{"ID":"8210","标识":"IC370","M标识":"IC370","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h24m1.8s","赤经D(J2000)":"4.4005","赤纬(J2000)":"-9h23m43s","赤纬D(J2000)":"-9.395277777777777","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"150","详细描述":"extremely faint, small, diffuse","简略描述":"eF, S, dif"},{"ID":"8211","标识":"IC371","M标识":"IC371","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h30m12.5s","赤经D(J2000)":"4.503472222222222","赤纬(J2000)":"-0h33m39s","赤纬D(J2000)":"-0.5608333333333334","可见光星等V":"99","摄影(蓝光)星等B":"14.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"stellar, extremely small, a nebulosity?","简略描述":"Stellar, eS, ? neb"},{"ID":"8212","标识":"IC372","M标识":"IC372","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h30m4.2s","赤经D(J2000)":"4.501166666666666","赤纬(J2000)":"-5h0m36s","赤纬D(J2000)":"-5.01","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"35","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"8213","标识":"IC373","M标识":"IC373","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h30m42.7s","赤经D(J2000)":"4.511861111111111","赤纬(J2000)":"-4h52m11s","赤纬D(J2000)":"-4.869722222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"100","详细描述":"faint, very small, round, much brighter middle","简略描述":"F, vS, R, mbM"},{"ID":"8214","标识":"IC374","M标识":"IC374","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h32m32.8s","赤经D(J2000)":"4.5424444444444445","赤纬(J2000)":"+16h38m6s","赤纬D(J2000)":"16.634999999999998","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"85","详细描述":"faint, small, round, much brighter middle","简略描述":"F, S, R, mbM"},{"ID":"8215","标识":"IC375","M标识":"IC375","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h31m3.2s","赤经D(J2000)":"4.517555555555555","赤纬(J2000)":"-12h58m25s","赤纬D(J2000)":"-12.973611111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"45","详细描述":"very faint, diffuse, a little brighter middle","简略描述":"vF, dif, lbM"},{"ID":"8216","标识":"IC376","M标识":"IC376","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h31m13.7s","赤经D(J2000)":"4.520472222222222","赤纬(J2000)":"-12h25m59s","赤纬D(J2000)":"-12.433055555555555","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"60","详细描述":"faint, irregular figure","简略描述":"F, iF"},{"ID":"8217","标识":"IC377","M标识":"IC377","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h31m16.5s","赤经D(J2000)":"4.52125","赤纬(J2000)":"-12h27m18s","赤纬D(J2000)":"-12.455","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"faint, irregular figure","简略描述":"F, iF"},{"ID":"8218","标识":"IC378","M标识":"IC378","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h31m27.9s","赤经D(J2000)":"4.524416666666666","赤纬(J2000)":"-12h17m57s","赤纬D(J2000)":"-12.299166666666666","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"80","详细描述":"a star, strongly nebulous","简略描述":"* strongly nebs"},{"ID":"8219","标识":"IC379","M标识":"IC379","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h31m50.9s","赤经D(J2000)":"4.530805555555555","赤纬(J2000)":"-7h14m16s","赤纬D(J2000)":"-7.237777777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"9","详细描述":"very faint, small, round, diffuse","简略描述":"vF, S, R, dif"},{"ID":"8220","标识":"IC380","M标识":"IC380","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h31m41.3s","赤经D(J2000)":"4.528138888888889","赤纬(J2000)":"-12h55m38s","赤纬D(J2000)":"-12.927222222222222","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"81","详细描述":"very faint, brighter middle","简略描述":"vF, bM"},{"ID":"8221","标识":"IC381","M标识":"IC381","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"4h44m28.4s","赤经D(J2000)":"4.7412222222222224","赤纬(J2000)":"+75h38m23s","赤纬D(J2000)":"75.63972222222223","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.4","短轴(分)":"1.3","方位角":"177","详细描述":"faint, small, brighter middle, 12th magnitude star to northwest","简略描述":"F, S, bM, * 12 np"},{"ID":"8222","标识":"IC382","M标识":"IC382","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h37m55.4s","赤经D(J2000)":"4.632055555555556","赤纬(J2000)":"-9h31m11s","赤纬D(J2000)":"-9.519722222222223","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.3","短轴(分)":"1.4","方位角":"173","详细描述":"pretty bright, pretty large, round, small nucleus","简略描述":"pB, pL, R, SN"},{"ID":"8223","标识":"IC383","M标识":"IC383","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h38m58s","赤经D(J2000)":"4.649444444444444","赤纬(J2000)":"+9h53m33s","赤纬D(J2000)":"9.8925","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, diffuse, 11.5 magnitude star to east","简略描述":"vF, S, dif, * 11.5 f"},{"ID":"8224","标识":"IC384","M标识":"IC384","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h39m18.2s","赤经D(J2000)":"4.655055555555556","赤纬(J2000)":"-7h50m20s","赤纬D(J2000)":"-7.838888888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"170","详细描述":"faint, extremely small, round, 11th magnitude star to north","简略描述":"F, eS, R, * 11 n"},{"ID":"8225","标识":"IC385","M标识":"IC385","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h39m31.4s","赤经D(J2000)":"4.658722222222223","赤纬(J2000)":"-7h5m49s","赤纬D(J2000)":"-7.0969444444444445","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"110","详细描述":"very faint, very small, round, diffuse","简略描述":"vF, vS, R, dif"},{"ID":"8226","标识":"IC386","M标识":"IC386","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h39m58.5s","赤经D(J2000)":"4.666250000000001","赤纬(J2000)":"-9h27m21s","赤纬D(J2000)":"-9.455833333333333","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.6","方位角":"40","详细描述":"very faint, very small, a very little brighter middle","简略描述":"vF, vS, vlbM"},{"ID":"8227","标识":"IC387","M标识":"IC387","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h41m44.2s","赤经D(J2000)":"4.695611111111111","赤纬(J2000)":"-7h5m11s","赤纬D(J2000)":"-7.086388888888888","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"78","详细描述":"extremely faint, pretty large, very diffuse, difficult","简略描述":"eF, pL, v dif, diffic"},{"ID":"8228","标识":"IC388","M标识":"IC388","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h41m54.3s","赤经D(J2000)":"4.698416666666667","赤纬(J2000)":"-7h18m21s","赤纬D(J2000)":"-7.305833333333333","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very diffuse, small star involved","简略描述":"vF, v dif, S * inv"},{"ID":"8229","标识":"IC389","M标识":"IC389","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h41m59.6s","赤经D(J2000)":"4.699888888888889","赤纬(J2000)":"-7h18m39s","赤纬D(J2000)":"-7.310833333333333","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"51","详细描述":"faint, small, round, stellar","简略描述":"F, S, R, stellar"},{"ID":"8230","标识":"IC390","M标识":"IC390","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h42m3.8s","赤经D(J2000)":"4.7010555555555555","赤纬(J2000)":"-7h12m21s","赤纬D(J2000)":"-7.2058333333333335","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"42","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"8231","标识":"IC391","M标识":"IC391","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc\/P","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"4h57m22.1s","赤经D(J2000)":"4.956138888888889","赤纬(J2000)":"+78h11m23s","赤纬D(J2000)":"78.18972222222223","可见光星等V":"12.7","摄影(蓝光)星等B":"13","B-V":"0.3","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"8232","标识":"IC392","M标识":"IC392","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h46m25.8s","赤经D(J2000)":"4.773833333333333","赤纬(J2000)":"+3h30m20s","赤纬D(J2000)":"3.5055555555555555","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1","短轴(分)":"0.8","方位角":"167","详细描述":"pretty bright, small, round, nucleus = 12.5 magnitude star","简略描述":"pB, S, R, N = 12.5"},{"ID":"8233","标识":"IC393","M标识":"IC393","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h47m51.7s","赤经D(J2000)":"4.797694444444445","赤纬(J2000)":"-15h31m31s","赤纬D(J2000)":"-15.525277777777779","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, very small, irregular figure, a little brighter middle","简略描述":"F, vS, iF, lbM"},{"ID":"8234","标识":"IC394","M标识":"IC394","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h48m48s","赤经D(J2000)":"4.8133333333333335","赤纬(J2000)":"-6h16m0s","赤纬D(J2000)":"-6.266666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, diffuse, a very small cluster?","简略描述":"vF, dif, ? vS Cl"},{"ID":"8235","标识":"IC395","M标识":"IC395","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h49m33.8s","赤经D(J2000)":"4.8260555555555555","赤纬(J2000)":"+0h15m12s","赤纬D(J2000)":"0.25333333333333335","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"130","详细描述":"extremely faint, very small, round, faint star close to east","简略描述":"eF, vS, R, F * close f"},{"ID":"8236","标识":"IC396","M标识":"IC396","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"4h57m58.8s","赤经D(J2000)":"4.966333333333334","赤纬(J2000)":"+68h19m23s","赤纬D(J2000)":"68.32305555555556","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.1","短轴(分)":"1.5","方位角":"85","详细描述":"faint, small, round, brighter middle and nucleus, faint double star to southeast","简略描述":"F, S, R, bMN, F D * sf"},{"ID":"8237","标识":"IC397","M标识":"IC397","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h1m6.5s","赤经D(J2000)":"5.018472222222222","赤纬(J2000)":"+40h25m30s","赤纬D(J2000)":"40.425","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"faint, small","简略描述":"F, S"},{"ID":"8238","标识":"IC398","M标识":"IC398","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h58m12.5s","赤经D(J2000)":"4.970138888888889","赤纬(J2000)":"-7h46m51s","赤纬D(J2000)":"-7.780833333333334","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"21","详细描述":"extremely faint, pretty large, extended 5°, diffuse","简略描述":"eF, pL, E 5°, dif"},{"ID":"8239","标识":"IC399","M标识":"IC399","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IB","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"5h1m44s","赤经D(J2000)":"5.028888888888889","赤纬(J2000)":"-4h17m18s","赤纬D(J2000)":"-4.288333333333333","可见光星等V":"15.4","摄影(蓝光)星等B":"16","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"80","详细描述":"very faint, very small, southeast of (NGC) 1741","简略描述":"vF, vS, sf of 1741"},{"ID":"8240","标识":"IC400","M标识":"IC400","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h3m45.6s","赤经D(J2000)":"5.062666666666667","赤纬(J2000)":"-15h49m10s","赤纬D(J2000)":"-15.819444444444445","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.2","方位角":"112","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"8241","标识":"IC401","M标识":"IC401","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"5h4m19.8s","赤经D(J2000)":"5.072166666666666","赤纬(J2000)":"-10h4m32s","赤纬D(J2000)":"-10.075555555555555","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.7","短轴(分)":"0.6","方位角":"57","详细描述":"very faint, very small, round, very small nucleus","简略描述":"vF, vS, R, vSN"},{"ID":"8242","标识":"IC402","M标识":"IC402","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"5h6m14.7s","赤经D(J2000)":"5.104083333333333","赤纬(J2000)":"-9h6m26s","赤纬D(J2000)":"-9.107222222222221","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.9","长轴(分)":"2.3","短轴(分)":"1.5","方位角":"147","详细描述":"extremely faint, pretty large, irregularly round, diffuse","简略描述":"eF, pL, iR, dif"},{"ID":"8243","标识":"IC403","M标识":"IC403","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h15m15.8s","赤经D(J2000)":"5.254388888888889","赤纬(J2000)":"+39h58m22s","赤纬D(J2000)":"39.97277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"8244","标识":"IC404","M标识":"IC404","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h13m19.6s","赤经D(J2000)":"5.222111111111111","赤纬(J2000)":"+9h45m17s","赤纬D(J2000)":"9.754722222222222","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, stellar, 13th magnitude star close","简略描述":"vF, vS, stellar, * 13 close"},{"ID":"8245","标识":"IC405","M标识":"IC405","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"火焰之星星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h16m29.4s","赤经D(J2000)":"5.2748333333333335","赤纬(J2000)":"+34h21m22s","赤纬D(J2000)":"34.35611111111111","可见光星等V":"99","摄影(蓝光)星等B":"10","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"30","短轴(分)":"20","方位角":"","详细描述":"a magnitude 6 or 7 star with pretty bright, very large nebula","简略描述":"* 6.7 with pB, vL neb"},{"ID":"8246","标识":"IC406","M标识":"IC406","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h17m48.8s","赤经D(J2000)":"5.296888888888889","赤纬(J2000)":"+39h53m8s","赤纬D(J2000)":"39.885555555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"an extremely faint nebula or extremely small nebulous cluster","简略描述":"eF neb or eS neb Cl"},{"ID":"8247","标识":"IC407","M标识":"IC407","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h17m42.6s","赤经D(J2000)":"5.295166666666667","赤纬(J2000)":"-15h31m24s","赤纬D(J2000)":"-15.523333333333333","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.2","短轴(分)":"0.5","方位角":"165","详细描述":"faint, a little extended north-south","简略描述":"F, lE ns"},{"ID":"8248","标识":"IC408","M标识":"IC408","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h19m44.7s","赤经D(J2000)":"5.329083333333333","赤纬(J2000)":"-25h3m52s","赤纬D(J2000)":"-25.064444444444444","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"160","详细描述":"very faint, pretty small, extended, 8.5 magnitude star 5' south","简略描述":"vF, pS, E, * 8.5 south 5'"},{"ID":"8249","标识":"IC409","M标识":"IC409","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h19m33.5s","赤经D(J2000)":"5.325972222222222","赤纬(J2000)":"+3h19m2s","赤纬D(J2000)":"3.317222222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"30","详细描述":"pretty bright, round, binuclear?","简略描述":"pB, R, biN?"},{"ID":"8250","标识":"IC410","M标识":"IC410","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"小蝌蚪星云","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h22m45s","赤经D(J2000)":"5.379166666666666","赤纬(J2000)":"+33h24m48s","赤纬D(J2000)":"33.413333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"55","短轴(分)":"45","方位角":"","详细描述":"diffuse, many stars involved","简略描述":"Dif, many st inv"},{"ID":"8251","标识":"IC411","M标识":"IC411","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h20m18.5s","赤经D(J2000)":"5.338472222222222","赤纬(J2000)":"-25h19m28s","赤纬D(J2000)":"-25.324444444444445","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"129","详细描述":"very faint, pretty small, round, 2 others in field","简略描述":"vF, vS, R, 2 others in field"},{"ID":"8252","标识":"IC412","M标识":"IC412","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h21m56.7s","赤经D(J2000)":"5.365749999999999","赤纬(J2000)":"+3h29m11s","赤纬D(J2000)":"3.486388888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"3","详细描述":"very faint, very small, stellar, part of a pair separated by 36 arcsec, at position angle 115°","简略描述":"vF, vS, stellar, Pos 115° Dist 36\""},{"ID":"8253","标识":"IC413","M标识":"IC413","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h21m58.7s","赤经D(J2000)":"5.366305555555555","赤纬(J2000)":"+3h28m56s","赤纬D(J2000)":"3.4822222222222226","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"159","详细描述":"extremely faint, very small, stellar, part of a pair separated by 36 arcsec, at position angle 115°","简略描述":"eF, vS, stellar, Pos 115° Dist 36\""},{"ID":"8254","标识":"IC414","M标识":"IC414","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h21m55s","赤经D(J2000)":"5.365277777777777","赤纬(J2000)":"+3h20m35s","赤纬D(J2000)":"3.343055555555556","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"135","详细描述":"extremely faint, 9th magnitude star 2' to southeast","简略描述":"eF, * 9 sf 2'"},{"ID":"8255","标识":"IC415","M标识":"IC415","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h21m21.5s","赤经D(J2000)":"5.3559722222222215","赤纬(J2000)":"-15h32m32s","赤纬D(J2000)":"-15.542222222222222","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"140","详细描述":"very faint, very small, round, diffuse","简略描述":"vF, vS, R, dif"},{"ID":"8256","标识":"IC416","M标识":"IC416","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h23m56.4s","赤经D(J2000)":"5.399","赤纬(J2000)":"-17h15m37s","赤纬D(J2000)":"-17.260277777777777","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"66","详细描述":"faint, small, gradually brighter middle","简略描述":"F, S, gbM"},{"ID":"8257","标识":"IC417","M标识":"IC417","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"蜘蛛星云","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h28m5.9s","赤经D(J2000)":"5.468305555555555","赤纬(J2000)":"+34h25m26s","赤纬D(J2000)":"34.42388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"13","短轴(分)":"10","方位角":"","详细描述":"very large, diffuse, 6th magnitude star involved","简略描述":"vL, dif, * 6 inv"},{"ID":"8258","标识":"IC418","M标识":"IC418","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"万花尺星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h27m28.3s","赤经D(J2000)":"5.457861111111112","赤纬(J2000)":"-12h41m48s","赤纬D(J2000)":"-12.696666666666667","可见光星等V":"9.3","摄影(蓝光)星等B":"10.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.2","短轴(分)":"","方位角":"","详细描述":"a planetary nebula = 9.2 magnitude st (gaseous spectrum)","简略描述":"Planentary = * 9.2 (gaseous sp)"},{"ID":"8259","标识":"IC419","M标识":"IC419","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h30m52s","赤经D(J2000)":"5.514444444444444","赤纬(J2000)":"+30h7m5s","赤纬D(J2000)":"30.118055555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, large, much extended","简略描述":"pB, L, mE"},{"ID":"8260","标识":"IC420","M标识":"IC420","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h32m14s","赤经D(J2000)":"5.537222222222222","赤纬(J2000)":"-4h31m12s","赤纬D(J2000)":"-4.52","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"","方位角":"","详细描述":"very faint, 9th magnitude star to west-southwest (not verified)","简略描述":"vF, spp * 9 (not verified)"},{"ID":"8261","标识":"IC421","M标识":"IC421","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h32m8.5s","赤经D(J2000)":"5.535694444444444","赤纬(J2000)":"-7h55m4s","赤纬D(J2000)":"-7.917777777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"16.5","长轴(分)":"3.3","短轴(分)":"2.9","方位角":"39","详细描述":"very faint, large","简略描述":"vF, L"},{"ID":"8262","标识":"IC422","M标识":"IC422","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h32m18.5s","赤经D(J2000)":"5.5384722222222225","赤纬(J2000)":"-17h13m26s","赤纬D(J2000)":"-17.223888888888887","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"pretty bright, very small, round, suddenly brighter middle","简略描述":"pB, vS, R, sbM"},{"ID":"8263","标识":"IC423","M标识":"IC423","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h33m22s","赤经D(J2000)":"5.556111111111111","赤纬(J2000)":"-0h36m52s","赤纬D(J2000)":"-0.6144444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"2","方位角":"","详细描述":"very faint, large oval ring","简略描述":"vF, L oval ring"},{"ID":"8264","标识":"IC424","M标识":"IC424","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h33m37.2s","赤经D(J2000)":"5.560333333333333","赤纬(J2000)":"-0h24m47s","赤纬D(J2000)":"-0.41305555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"120","短轴(分)":"","方位角":"","详细描述":"very faint, large, brightest on eastern side","简略描述":"vF, L, brightest f"},{"ID":"8265","标识":"IC425","M标识":"IC425","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h37m12s","赤经D(J2000)":"5.62","赤纬(J2000)":"+32h25m0s","赤纬D(J2000)":"32.416666666666664","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very very large","简略描述":"F, vvL"},{"ID":"8266","标识":"IC426","M标识":"IC426","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h36m31s","赤经D(J2000)":"5.60861111111111","赤纬(J2000)":"-0h17m54s","赤纬D(J2000)":"-0.29833333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"7","方位角":"","详细描述":"very faint, 5 arcmin diameter","简略描述":"vF, 5' diam"},{"ID":"8267","标识":"IC427","M标识":"IC427","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h36m18s","赤经D(J2000)":"5.6049999999999995","赤纬(J2000)":"-6h37m0s","赤纬D(J2000)":"-6.616666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"large, probably connected with Great Nebula","简略描述":"L, probably connected with Great Neb"},{"ID":"8268","标识":"IC428","M标识":"IC428","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h36m24.2s","赤经D(J2000)":"5.6067222222222215","赤纬(J2000)":"-6h27m6s","赤纬D(J2000)":"-6.451666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"large, probably connected with Great Nebula","简略描述":"L, probably connected with Great Neb"},{"ID":"8269","标识":"IC429","M标识":"IC429","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h38m18s","赤经D(J2000)":"5.638333333333333","赤纬(J2000)":"-7h2m12s","赤纬D(J2000)":"-7.036666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round [perhaps involved with following one]","简略描述":"vF, vS, R [? inv in f one]"},{"ID":"8270","标识":"IC430","M标识":"IC430","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h38m18.2s","赤经D(J2000)":"5.638388888888889","赤纬(J2000)":"-7h2m26s","赤纬D(J2000)":"-7.040555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"11","短轴(分)":"11","方位角":"","详细描述":"nebulous band 10 arcmin long, northwest of 5th magnitude star","简略描述":"Neb band 10' l, np * 5m"},{"ID":"8271","标识":"IC431","M标识":"IC431","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h40m14s","赤经D(J2000)":"5.670555555555556","赤纬(J2000)":"-1h27m48s","赤纬D(J2000)":"-1.4633333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"3","方位角":"","详细描述":"a nebulous star of magnitude 8.6","简略描述":"Neb * 8.6"},{"ID":"8272","标识":"IC432","M标识":"IC432","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h40m55s","赤经D(J2000)":"5.6819444444444445","赤纬(J2000)":"-1h30m24s","赤纬D(J2000)":"-1.5066666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"4","方位角":"","详细描述":"nebula, a little extended, magnitude 8.4 star involved","简略描述":"Neb, lE, * 8.4 inv"},{"ID":"8273","标识":"IC433","M标识":"IC433","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h40m31.1s","赤经D(J2000)":"5.675305555555556","赤纬(J2000)":"-11h39m55s","赤纬D(J2000)":"-11.665277777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, diffuse, gradually brighter middle","简略描述":"F, S, dif, gbM"},{"ID":"8274","标识":"IC434","M标识":"IC434","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h41m0s","赤经D(J2000)":"5.683333333333334","赤纬(J2000)":"-2h27m12s","赤纬D(J2000)":"-2.4533333333333336","可见光星等V":"99","摄影(蓝光)星等B":"11","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"60","短轴(分)":"10","方位角":"","详细描述":"a nebula, 60' long, south from ζ Orionis","简略描述":"Neb, 60' l, south from ζ Orionis"},{"ID":"8275","标识":"IC435","M标识":"IC435","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h43m0s","赤经D(J2000)":"5.716666666666667","赤纬(J2000)":"-2h18m46s","赤纬D(J2000)":"-2.312777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"3","方位角":"","详细描述":"","简略描述":"Neb, * 8.5"},{"ID":"8276","标识":"IC436","M标识":"IC436","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h53m39.9s","赤经D(J2000)":"5.894416666666666","赤纬(J2000)":"+38h37m42s","赤纬D(J2000)":"38.62833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"8277","标识":"IC437","M标识":"IC437","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h51m37.3s","赤经D(J2000)":"5.860361111111111","赤纬(J2000)":"-12h33m52s","赤纬D(J2000)":"-12.564444444444446","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"10","详细描述":"very faint, very small, round, diffuse","简略描述":"vF, vS, R, dif"},{"ID":"8278","标识":"IC438","M标识":"IC438","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h53m0s","赤经D(J2000)":"5.883333333333333","赤纬(J2000)":"-17h52m33s","赤纬D(J2000)":"-17.875833333333333","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.8","短轴(分)":"2.2","方位角":"43","详细描述":"most extremely faint, pretty small, extended north-south, 2 stars to west","简略描述":"eeF, pS, E ns, 2 st p"},{"ID":"8279","标识":"IC439","M标识":"IC439","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h56m42s","赤经D(J2000)":"5.945","赤纬(J2000)":"+32h1m0s","赤纬D(J2000)":"32.016666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely large, extremely extended 150°±","简略描述":"eeL, eE 150° ±"},{"ID":"8280","标识":"IC440","M标识":"IC440","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"6h19m13s","赤经D(J2000)":"6.320277777777777","赤纬(J2000)":"+80h4m6s","赤纬D(J2000)":"80.06833333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"33","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"8281","标识":"IC441","M标识":"IC441","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"6h2m42.7s","赤经D(J2000)":"6.045194444444444","赤纬(J2000)":"-12h29m59s","赤纬D(J2000)":"-12.499722222222221","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"40","详细描述":"extremely faint, very small, difficult, very faint star close","简略描述":"eF, vS, diffic, vF * close"},{"ID":"8282","标识":"IC442","M标识":"IC442","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"6h36m11.9s","赤经D(J2000)":"6.603305555555555","赤纬(J2000)":"+82h58m8s","赤纬D(J2000)":"82.96888888888888","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"faint, small, round, much brighter middle","简略描述":"F, S, R, mbM"},{"ID":"8283","标识":"IC443","M标识":"IC443","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"水母星云","类型":"Nb","含重复类型":"Nb","形态":"SNR","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h16m36s","赤经D(J2000)":"6.276666666666666","赤纬(J2000)":"+22h31m0s","赤纬D(J2000)":"22.516666666666666","可见光星等V":"99","摄影(蓝光)星等B":"12","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"50","短轴(分)":"40","方位角":"","详细描述":"faint, narrow, curved","简略描述":"F, narrow, curved"},{"ID":"8284","标识":"IC444","M标识":"IC444","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h22m30s","赤经D(J2000)":"6.375","赤纬(J2000)":"+22h52m0s","赤纬D(J2000)":"22.866666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"48","短轴(分)":"38","方位角":"","详细描述":"nebula, 9.5 magnitude star involved","简略描述":"Neb, * 9.5 inv"},{"ID":"8285","标识":"IC445","M标识":"IC445","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"6h37m21s","赤经D(J2000)":"6.6225000000000005","赤纬(J2000)":"+67h51m36s","赤纬D(J2000)":"67.86","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"7","详细描述":"extremely faint, small, round, bright star to southeast","简略描述":"eF, S, R, B * sf"},{"ID":"8286","标识":"IC446","M标识":"IC446","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN+*","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h31m6s","赤经D(J2000)":"6.5183333333333335","赤纬(J2000)":"+10h27m35s","赤纬D(J2000)":"10.459722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"4","方位角":"","详细描述":"nebulous 10th magnitude star","简略描述":"Neb * 10m"},{"ID":"8287","标识":"IC447","M标识":"IC447","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h31m4s","赤经D(J2000)":"6.517777777777778","赤纬(J2000)":"+9h52m0s","赤纬D(J2000)":"9.866666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"20","方位角":"","详细描述":"very faint, most extremely large, diffuse","简略描述":"vF, eeL, dif"},{"ID":"8288","标识":"IC448","M标识":"IC448","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h32m45s","赤经D(J2000)":"6.545833333333333","赤纬(J2000)":"+7h23m18s","赤纬D(J2000)":"7.388333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"10","方位角":"","详细描述":"nebulosity northwest of a 5th magnitude star","简略描述":"Neby, np * 5 mag"},{"ID":"8289","标识":"IC449","M标识":"IC449","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"6h45m40.8s","赤经D(J2000)":"6.761333333333333","赤纬(J2000)":"+71h20m37s","赤纬D(J2000)":"71.3436111111111","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"69","详细描述":"pretty faint, small, round, brighter middle, between two double stars","简略描述":"pF, S, R, bM, bet 2 D st"},{"ID":"8290","标识":"IC450","M标识":"IC450","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"6h52m12.3s","赤经D(J2000)":"6.8700833333333335","赤纬(J2000)":"+74h25m39s","赤纬D(J2000)":"74.42750000000001","可见光星等V":"13.9","摄影(蓝光)星等B":"15","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"130","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"8291","标识":"IC451","M标识":"IC451","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"6h52m51.8s","赤经D(J2000)":"6.881055555555556","赤纬(J2000)":"+74h28m48s","赤纬D(J2000)":"74.48","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"155","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"8292","标识":"IC452","M标识":"IC452","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Dup","形态":"RN","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h48m39s","赤经D(J2000)":"6.810833333333333","赤纬(J2000)":"-16h54m4s","赤纬D(J2000)":"-16.90111111111111","可见光星等V":"99","摄影(蓝光)星等B":"13","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"175","详细描述":"13.5 magnitude star in small nebulosity","简略描述":"* 13.5 in S neby"},{"ID":"8293","标识":"IC453","M标识":"IC453","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h49m11.5s","赤经D(J2000)":"6.819861111111111","赤纬(J2000)":"-16h54m23s","赤纬D(J2000)":"-16.906388888888888","可见光星等V":"99","摄影(蓝光)星等B":"14.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"13th magnitude star in a small nebula, or 2 or 3 close stars","简略描述":"* 13 in S neb, or 2 or 3 st close"},{"ID":"8294","标识":"IC454","M标识":"IC454","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h51m6.2s","赤经D(J2000)":"6.851722222222222","赤纬(J2000)":"+12h55m21s","赤纬D(J2000)":"12.9225","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"140","详细描述":"most extremely faint, small, extremely difficult","简略描述":"eeF, S, e diffic"},{"ID":"8295","标识":"IC455","M标识":"IC455","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"7h34m57.7s","赤经D(J2000)":"7.582694444444444","赤纬(J2000)":"+85h32m16s","赤纬D(J2000)":"85.53777777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"82","详细描述":"","简略描述":"vF, eS, sf 2300"},{"ID":"8296","标识":"IC456","M标识":"IC456","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h0m17.4s","赤经D(J2000)":"7.004833333333333","赤纬(J2000)":"-30h9m47s","赤纬D(J2000)":"-30.163055555555555","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.1","短轴(分)":"1.3","方位角":"110","详细描述":"","简略描述":"vF, pS, R, B st nf and np"},{"ID":"8297","标识":"IC457","M标识":"IC457","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E3","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h9m28.3s","赤经D(J2000)":"7.157861111111112","赤纬(J2000)":"+50h9m11s","赤纬D(J2000)":"50.153055555555554","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"30","详细描述":"extremely faint, to southwest of h430","简略描述":"eF, sp h 430"},{"ID":"8298","标识":"IC458","M标识":"IC458","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h10m33.7s","赤经D(J2000)":"7.176027777777778","赤纬(J2000)":"+50h7m11s","赤纬D(J2000)":"50.11972222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"170","详细描述":"faint, brighter middle","简略描述":"F, bM"},{"ID":"8299","标识":"IC459","M标识":"IC459","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h10m38.6s","赤经D(J2000)":"7.177388888888889","赤纬(J2000)":"+50h10m40s","赤纬D(J2000)":"50.17777777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"8300","标识":"IC460","M标识":"IC460","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h10m44.1s","赤经D(J2000)":"7.178916666666667","赤纬(J2000)":"+50h12m8s","赤纬D(J2000)":"50.202222222222225","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"160","详细描述":"very faint (not seen at Birr)","简略描述":"vF (not seen at Birr)"},{"ID":"8301","标识":"IC461","M标识":"IC461","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h10m45s","赤经D(J2000)":"7.179166666666667","赤纬(J2000)":"+50h4m53s","赤纬D(J2000)":"50.081388888888895","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"80","详细描述":"very faint, 3 faint stars to east","简略描述":"vF, 3 F st f"},{"ID":"8302","标识":"IC462","M标识":"IC462","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h10m55.7s","赤经D(J2000)":"7.182138888888889","赤纬(J2000)":"+50h10m52s","赤纬D(J2000)":"50.18111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint (not seen at Birr)","简略描述":"vF (not seen at Birr)"},{"ID":"8303","标识":"IC463","M标识":"IC463","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h11m0.9s","赤经D(J2000)":"7.183583333333334","赤纬(J2000)":"+50h7m10s","赤纬D(J2000)":"50.11944444444445","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"85","详细描述":"extremely faint","简略描述":"eF"},{"ID":"8304","标识":"IC464","M标识":"IC464","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h11m4.5s","赤经D(J2000)":"7.184583333333333","赤纬(J2000)":"+50h8m10s","赤纬D(J2000)":"50.13611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"45","详细描述":"faint","简略描述":"F"},{"ID":"8305","标识":"IC465","M标识":"IC465","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"C","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h11m33.6s","赤经D(J2000)":"7.192666666666667","赤纬(J2000)":"+50h14m56s","赤纬D(J2000)":"50.24888888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"80","详细描述":"faint","简略描述":"F"},{"ID":"8306","标识":"IC466","M标识":"IC466","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h8m38.9s","赤经D(J2000)":"7.1441388888888895","赤纬(J2000)":"-4h19m2s","赤纬D(J2000)":"-4.317222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"11.5 magnitude star in a very faint nebula","简略描述":"* 11.5 in vF neb"},{"ID":"8307","标识":"IC467","M标识":"IC467","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"7h30m17.8s","赤经D(J2000)":"7.504944444444445","赤纬(J2000)":"+79h52m21s","赤纬D(J2000)":"79.87249999999999","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3.1","短轴(分)":"1.2","方位角":"80","详细描述":"very faint, pretty small, south-southeast of (NGC) 2336","简略描述":"vF, pS, ssF of 2336"},{"ID":"8308","标识":"IC468","M标识":"IC468","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h17m18.9s","赤经D(J2000)":"7.288583333333333","赤纬(J2000)":"-13h13m7s","赤纬D(J2000)":"-13.21861111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint nebulosity, perhaps 2 or 3 stars involved","简略描述":"vF neby, perhaps 2 or 3 st inv"},{"ID":"8309","标识":"IC469","M标识":"IC469","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"7h55m59.3s","赤经D(J2000)":"7.933138888888889","赤纬(J2000)":"+85h9m31s","赤纬D(J2000)":"85.15861111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.2","短轴(分)":"1","方位角":"90","详细描述":"","简略描述":"F, S, E, sf 2300"},{"ID":"8310","标识":"IC470","M标识":"IC470","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h23m31.4s","赤经D(J2000)":"7.392055555555556","赤纬(J2000)":"+46h4m45s","赤纬D(J2000)":"46.07916666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, stellar","简略描述":"eF, eS, stellar"},{"ID":"8311","标识":"IC471","M标识":"IC471","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h43m36.4s","赤经D(J2000)":"7.7267777777777775","赤纬(J2000)":"+49h40m5s","赤纬D(J2000)":"49.668055555555554","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, pretty small, round, northwestern of 2","简略描述":"eF, pS, R, np of 2"},{"ID":"8312","标识":"IC472","M标识":"IC472","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h43m50.2s","赤经D(J2000)":"7.730611111111111","赤纬(J2000)":"+49h36m48s","赤纬D(J2000)":"49.61333333333334","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.6","短轴(分)":"1","方位角":"167","详细描述":"most extremely faint, pretty small, round, southeastern of 2","简略描述":"eeF, pS, R, sf of 2"},{"ID":"8313","标识":"IC473","M标识":"IC473","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h42m24.7s","赤经D(J2000)":"7.706861111111111","赤纬(J2000)":"+9h15m17s","赤纬D(J2000)":"9.254722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebulous 14th magnitude star, h462 to northeast","简略描述":"Neb * 14, h 462 nf"},{"ID":"8314","标识":"IC474","M标识":"IC474","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h46m7.3s","赤经D(J2000)":"7.768694444444445","赤纬(J2000)":"+26h30m16s","赤纬D(J2000)":"26.504444444444445","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.3","方位角":"120","详细描述":"pretty bright, very small, diffuse","简略描述":"pB, vS, dif"},{"ID":"8315","标识":"IC475","M标识":"IC475","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h47m9.2s","赤经D(J2000)":"7.785888888888889","赤纬(J2000)":"+30h29m20s","赤纬D(J2000)":"30.48888888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"141","详细描述":"very faint, very small, diffuse","简略描述":"vF, vS, dif"},{"ID":"8316","标识":"IC476","M标识":"IC476","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h47m16.4s","赤经D(J2000)":"7.787888888888888","赤纬(J2000)":"+26h57m3s","赤纬D(J2000)":"26.950833333333332","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"90","详细描述":"very small, very faint, a little brighter middle, difficult","简略描述":"vS, vF, lbM, diffic"},{"ID":"8317","标识":"IC477","M标识":"IC477","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h52m6.9s","赤经D(J2000)":"7.8685833333333335","赤纬(J2000)":"+23h29m1s","赤纬D(J2000)":"23.483611111111113","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"faint, pretty large, round, diffuse","简略描述":"F, pL, R, dif"},{"ID":"8318","标识":"IC478","M标识":"IC478","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h53m41.6s","赤经D(J2000)":"7.894888888888889","赤纬(J2000)":"+26h29m32s","赤纬D(J2000)":"26.492222222222225","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"10","详细描述":"very faint, very small, diffuse","简略描述":"vF, vS, dif"},{"ID":"8319","标识":"IC479","M标识":"IC479","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h54m22.1s","赤经D(J2000)":"7.906138888888889","赤纬(J2000)":"+27h0m26s","赤纬D(J2000)":"27.00722222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"171","详细描述":"pretty faint, very small, round","简略描述":"pF, vS, R"},{"ID":"8320","标识":"IC480","M标识":"IC480","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h55m23.1s","赤经D(J2000)":"7.9230833333333335","赤纬(J2000)":"+26h44m32s","赤纬D(J2000)":"26.742222222222225","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"0.3","方位角":"168","详细描述":"very faint, pretty large, extended north-south, diffuse","简略描述":"vF, pL, E ns, dif"},{"ID":"8321","标识":"IC481","M标识":"IC481","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h59m2.8s","赤经D(J2000)":"7.984111111111111","赤纬(J2000)":"+24h9m37s","赤纬D(J2000)":"24.160277777777775","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.2","方位角":"3","详细描述":"very faint, very small, diffuse","简略描述":"vF, vS, dif"},{"ID":"8322","标识":"IC482","M标识":"IC482","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h59m47.3s","赤经D(J2000)":"7.996472222222223","赤纬(J2000)":"+25h21m22s","赤纬D(J2000)":"25.35611111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"156","详细描述":"very faint, small, diffuse, difficult","简略描述":"vF, S, dif, diffic"},{"ID":"8323","标识":"IC483","M标识":"IC483","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h59m52.4s","赤经D(J2000)":"7.997888888888889","赤纬(J2000)":"+25h55m30s","赤纬D(J2000)":"25.925","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, brighter middle, faint star to northeast","简略描述":"F, S, bM, F * nf"},{"ID":"8324","标识":"IC484","M标识":"IC484","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"8h0m1s","赤经D(J2000)":"8.000277777777777","赤纬(J2000)":"+26h39m57s","赤纬D(J2000)":"26.66583333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"45","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"8325","标识":"IC485","M标识":"IC485","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"8h0m19.8s","赤经D(J2000)":"8.0055","赤纬(J2000)":"+26h42m6s","赤纬D(J2000)":"26.701666666666664","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"153","详细描述":"very faint, very small, round, suddenly brighter middle","简略描述":"vF, vS, R, sbM"},{"ID":"8326","标识":"IC486","M标识":"IC486","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"8h0m21.1s","赤经D(J2000)":"8.00586111111111","赤纬(J2000)":"+26h36m48s","赤纬D(J2000)":"26.613333333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"139","详细描述":"faint, small, diffuse, gradually brighter middle","简略描述":"F, S, dif, gbM"},{"ID":"8327","标识":"IC487","M标识":"IC487","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h59m7.2s","赤经D(J2000)":"7.985333333333333","赤纬(J2000)":"-0h38m15s","赤纬D(J2000)":"-0.6375","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"95","详细描述":"most extremely faint, very small, round","简略描述":"eeF, vS, R"},{"ID":"8328","标识":"IC488","M标识":"IC488","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h0m49.7s","赤经D(J2000)":"8.013805555555555","赤纬(J2000)":"+25h54m10s","赤纬D(J2000)":"25.902777777777775","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, diffuse, 13th magnitude star to southwest","简略描述":"vF, S, dif, * 13 sp"},{"ID":"8329","标识":"IC489","M标识":"IC489","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h1m37.8s","赤经D(J2000)":"8.027166666666668","赤纬(J2000)":"+25h59m48s","赤纬D(J2000)":"25.996666666666666","可见光星等V":"99","摄影(蓝光)星等B":"14.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, suddenly brighter middle","简略描述":"vF, vS, sbM"},{"ID":"8330","标识":"IC490","M标识":"IC490","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h3m20.1s","赤经D(J2000)":"8.055583333333335","赤纬(J2000)":"+25h48m40s","赤纬D(J2000)":"25.811111111111114","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"90","详细描述":"","简略描述":"eF, eS, S * f"},{"ID":"8331","标识":"IC491","M标识":"IC491","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S M","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h3m55s","赤经D(J2000)":"8.065277777777778","赤纬(J2000)":"+26h31m10s","赤纬D(J2000)":"26.519444444444442","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"100","详细描述":"very faint, extremely small, round","简略描述":"vF, eS, R"},{"ID":"8332","标识":"IC492","M标识":"IC492","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h5m38.4s","赤经D(J2000)":"8.094000000000001","赤纬(J2000)":"+26h10m3s","赤纬D(J2000)":"26.1675","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"1","方位角":"138","详细描述":"pretty bright, very gradually brighter middle, extended north-south, 13.5 magnitude star to southeast","简略描述":"pB, vgbM, E ns, * 13.5 sf"},{"ID":"8333","标识":"IC493","M标识":"IC493","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h7m27.6s","赤经D(J2000)":"8.124333333333334","赤纬(J2000)":"+25h8m1s","赤纬D(J2000)":"25.13361111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"24","详细描述":"pretty bright, extended north-south","简略描述":"pB, E ns"},{"ID":"8334","标识":"IC494","M标识":"IC494","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"8h6m24.3s","赤经D(J2000)":"8.10675","赤纬(J2000)":"+1h2m12s","赤纬D(J2000)":"1.0366666666666668","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"50","详细描述":"very faint, pretty small, brighter middle","简略描述":"vF, pS, bM"},{"ID":"8335","标识":"IC495","M标识":"IC495","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h8m19.4s","赤经D(J2000)":"8.138722222222222","赤纬(J2000)":"+9h0m52s","赤纬D(J2000)":"9.014444444444445","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, round, gradually a very little brighter middle","简略描述":"vF, vS, R, gvlbM"},{"ID":"8336","标识":"IC496","M标识":"IC496","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h9m43.9s","赤经D(J2000)":"8.162194444444445","赤纬(J2000)":"+25h52m52s","赤纬D(J2000)":"25.88111111111111","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"108","详细描述":"pretty faint, small, extended east-west, a little brighter middle","简略描述":"pF, S, E pf, lbM"},{"ID":"8337","标识":"IC497","M标识":"IC497","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h10m6.1s","赤经D(J2000)":"8.16836111111111","赤纬(J2000)":"+24h55m20s","赤纬D(J2000)":"24.922222222222224","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"0","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"8338","标识":"IC498","M标识":"IC498","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"8h9m30.3s","赤经D(J2000)":"8.158416666666668","赤纬(J2000)":"+5h16m50s","赤纬D(J2000)":"5.280555555555556","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"54","详细描述":"faint, pretty small, round","简略描述":"F, pS, R"},{"ID":"8339","标识":"IC499","M标识":"IC499","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"8h45m17.3s","赤经D(J2000)":"8.754805555555556","赤纬(J2000)":"+85h44m26s","赤纬D(J2000)":"85.74055555555556","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.1","短轴(分)":"1.1","方位角":"80","详细描述":"pretty faint, small, much brighter middle, star to northeast","简略描述":"pF, S, mbM, * nf"},{"ID":"8340","标识":"IC500","M标识":"IC500","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h12m39.5s","赤经D(J2000)":"8.210972222222221","赤纬(J2000)":"-16h3m4s","赤纬D(J2000)":"-16.051111111111112","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"45","详细描述":"very faint, diffuse, very faint star attached","简略描述":"vF, dif, vF * att"},{"ID":"8341","标识":"IC501","M标识":"IC501","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m47.7s","赤经D(J2000)":"8.31325","赤纬(J2000)":"+24h32m14s","赤纬D(J2000)":"24.537222222222223","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, round, a little brighter middle","简略描述":"F, R, lbM"},{"ID":"8342","标识":"IC502","M标识":"IC502","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h22m3.6s","赤经D(J2000)":"8.367666666666667","赤纬(J2000)":"+8h45m11s","赤纬D(J2000)":"8.753055555555555","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, diffuse","简略描述":"F, vS, dif"},{"ID":"8343","标识":"IC503","M标识":"IC503","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h22m10.6s","赤经D(J2000)":"8.369611111111112","赤纬(J2000)":"+3h16m7s","赤纬D(J2000)":"3.268611111111111","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"1","方位角":"114","详细描述":"very faint, small, a little extended","简略描述":"vF, S, lE"},{"ID":"8344","标识":"IC504","M标识":"IC504","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h22m41.2s","赤经D(J2000)":"8.378111111111112","赤纬(J2000)":"+4h15m43s","赤纬D(J2000)":"4.2619444444444445","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"140","详细描述":"very faint, pretty small, round, 4 stars following (to the east)","简略描述":"vF, pS, R, 4 st f"},{"ID":"8345","标识":"IC505","M标识":"IC505","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h23m21.6s","赤经D(J2000)":"8.389333333333333","赤纬(J2000)":"+4h22m23s","赤纬D(J2000)":"4.373055555555555","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"143","详细描述":"extremely faint, small, round, a little brighter middle","简略描述":"eF, S, R, lbM"},{"ID":"8346","标识":"IC506","M标识":"IC506","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h23m30.7s","赤经D(J2000)":"8.39186111111111","赤纬(J2000)":"+4h18m1s","赤纬D(J2000)":"4.300277777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"most extremely faint, extremely small, round, very difficult","简略描述":"eeF, eS, R, v diffic"},{"ID":"8347","标识":"IC507","M标识":"IC507","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h25m2s","赤经D(J2000)":"8.417222222222222","赤纬(J2000)":"-0h35m28s","赤纬D(J2000)":"-0.5911111111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.2","短轴(分)":"0.7","方位角":"77","详细描述":"most extremely faint, pretty small, very little elongated, between 2 stars","简略描述":"eeF, pS, vlE, bet 2 st"},{"ID":"8348","标识":"IC508","M标识":"IC508","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h28m22.3s","赤经D(J2000)":"8.472861111111111","赤纬(J2000)":"+25h7m28s","赤纬D(J2000)":"25.124444444444446","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"75","详细描述":"faint, large, round","简略描述":"F, L, R"},{"ID":"8349","标识":"IC509","M标识":"IC509","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h32m3.5s","赤经D(J2000)":"8.534305555555555","赤纬(J2000)":"+24h0m37s","赤纬D(J2000)":"24.010277777777777","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"0","详细描述":"very faint, pretty large, diffuse, a little brighter middle","简略描述":"vF, pL, dif, lbM"},{"ID":"8350","标识":"IC510","M标识":"IC510","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h32m10.9s","赤经D(J2000)":"8.53636111111111","赤纬(J2000)":"-2h9m44s","赤纬D(J2000)":"-2.1622222222222223","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"150","详细描述":"faint, very small, round, diffuse","简略描述":"F, vS, R, dif"},{"ID":"8351","标识":"IC511","M标识":"IC511","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"8h50m21.8s","赤经D(J2000)":"8.83938888888889","赤纬(J2000)":"+73h27m46s","赤纬D(J2000)":"73.46277777777777","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"very faint, small, considerably extended, 2 stars to southeast","简略描述":"vF, S, cE, 2 st sf"},{"ID":"8352","标识":"IC512","M标识":"IC512","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"9h3m49s","赤经D(J2000)":"9.063611111111111","赤纬(J2000)":"+85h30m6s","赤纬D(J2000)":"85.50166666666667","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"1","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"8353","标识":"IC513","M标识":"IC513","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h33m5s","赤经D(J2000)":"8.551388888888889","赤纬(J2000)":"-12h21m18s","赤纬D(J2000)":"-12.355","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"40","详细描述":"faint, small, diffuse, mottled but not resolved","简略描述":"F, S, dif, r"},{"ID":"8354","标识":"IC514","M标识":"IC514","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h35m22.3s","赤经D(J2000)":"8.589527777777779","赤纬(J2000)":"-2h2m49s","赤纬D(J2000)":"-2.0469444444444442","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"10.9","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"175","详细描述":"very faint, extended north-south","简略描述":"vF, E ns"},{"ID":"8355","标识":"IC515","M标识":"IC515","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h35m31.2s","赤经D(J2000)":"8.592","赤纬(J2000)":"-1h54m2s","赤纬D(J2000)":"-1.9005555555555556","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"28","详细描述":"","简略描述":"vF, vS, dif, 2616 nf"},{"ID":"8356","标识":"IC516","M标识":"IC516","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h35m50.8s","赤经D(J2000)":"8.597444444444445","赤纬(J2000)":"-1h52m16s","赤纬D(J2000)":"-1.8711111111111112","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"70","详细描述":"","简略描述":"vF, vS, dif, 2616 p"},{"ID":"8357","标识":"IC517","M标识":"IC517","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h36m22s","赤经D(J2000)":"8.60611111111111","赤纬(J2000)":"-2h3m20s","赤纬D(J2000)":"-2.0555555555555554","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"20","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"8358","标识":"IC518","M标识":"IC518","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h36m7s","赤经D(J2000)":"8.601944444444444","赤纬(J2000)":"+0h41m36s","赤纬D(J2000)":"0.6933333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, perhaps a very small cluster","简略描述":"vF, ? vS Cl"},{"ID":"8359","标识":"IC519","M标识":"IC519","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h40m34.4s","赤经D(J2000)":"8.676222222222222","赤纬(J2000)":"+2h36m43s","赤纬D(J2000)":"2.6119444444444446","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"","简略描述":"vF, vS, R, diffic, * 14 close"},{"ID":"8360","标识":"IC520","M标识":"IC520","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"8h53m42.1s","赤经D(J2000)":"8.895027777777777","赤纬(J2000)":"+73h29m27s","赤纬D(J2000)":"73.49083333333333","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"0","详细描述":"pretty bright, pretty large, brighter middle, star near","简略描述":"pB, pL, bM, * nr"},{"ID":"8361","标识":"IC521","M标识":"IC521","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S+C?","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h46m44.2s","赤经D(J2000)":"8.778944444444445","赤纬(J2000)":"+2h32m18s","赤纬D(J2000)":"2.538333333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"90","详细描述":"","简略描述":"Neb * 13m"},{"ID":"8362","标识":"IC522","M标识":"IC522","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"8h54m34.8s","赤经D(J2000)":"8.909666666666666","赤纬(J2000)":"+57h10m0s","赤纬D(J2000)":"57.166666666666664","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.8","方位角":"165","详细描述":"","简略描述":"pF, pS, R, bM (? 2 eF st inv)"},{"ID":"8363","标识":"IC523","M标识":"IC523","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h53m11.2s","赤经D(J2000)":"8.886444444444445","赤纬(J2000)":"+9h8m54s","赤纬D(J2000)":"9.148333333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"99","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"8364","标识":"IC524","M标识":"IC524","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h58m12.8s","赤经D(J2000)":"8.970222222222223","赤纬(J2000)":"-19h11m29s","赤纬D(J2000)":"-19.191388888888888","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.6","方位角":"17","详细描述":"","简略描述":"vF, vS, R, vF N ?"},{"ID":"8365","标识":"IC525","M标识":"IC525","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h1m22.5s","赤经D(J2000)":"9.022916666666667","赤纬(J2000)":"-1h51m11s","赤纬D(J2000)":"-1.8530555555555557","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.3","方位角":"11","详细描述":"faint, small, extended north-south","简略描述":"F, S, E ns"},{"ID":"8366","标识":"IC526","M标识":"IC526","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h2m40.7s","赤经D(J2000)":"9.044638888888889","赤纬(J2000)":"+10h50m32s","赤纬D(J2000)":"10.842222222222222","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"45","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"8367","标识":"IC527","M标识":"IC527","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h9m41.8s","赤经D(J2000)":"9.161611111111112","赤纬(J2000)":"+37h36m7s","赤纬D(J2000)":"37.60194444444445","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"66","详细描述":"most extremely faint, pretty large, round, extremely difficult","简略描述":"eeF, pL, R, e diffic"},{"ID":"8368","标识":"IC528","M标识":"IC528","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h9m22.5s","赤经D(J2000)":"9.15625","赤纬(J2000)":"+15h47m45s","赤纬D(J2000)":"15.795833333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"163","详细描述":"pretty bright, very small, round, nucleus equal to 13th magnitude","简略描述":"pB, vS, R, N = 13m"},{"ID":"8369","标识":"IC529","M标识":"IC529","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"9h18m32.9s","赤经D(J2000)":"9.30913888888889","赤纬(J2000)":"+73h45m35s","赤纬D(J2000)":"73.75972222222222","可见光星等V":"11.9","摄影(蓝光)星等B":"12.3","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.3","短轴(分)":"1.3","方位角":"145","详细描述":"pretty faint, pretty large, extended","简略描述":"pF, pL, E"},{"ID":"8370","标识":"IC530","M标识":"IC530","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h15m17.1s","赤经D(J2000)":"9.25475","赤纬(J2000)":"+11h53m10s","赤纬D(J2000)":"11.886111111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"87","详细描述":"pretty bright, small, extended east-west","简略描述":"pB, S, E pf"},{"ID":"8371","标识":"IC531","M标识":"IC531","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h17m50.8s","赤经D(J2000)":"9.297444444444444","赤纬(J2000)":"-0h16m41s","赤纬D(J2000)":"-0.27805555555555556","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"60","详细描述":"faint, very small, extended east-west, a little brighter middle","简略描述":"F, vS, E pf, lbM"},{"ID":"8372","标识":"IC532","M标识":"IC532","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h19m3s","赤经D(J2000)":"9.317499999999999","赤纬(J2000)":"-16h45m18s","赤纬D(J2000)":"-16.755","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, elongated east-west, brighter middle","简略描述":"pB, pL, E pf, bM"},{"ID":"8373","标识":"IC533","M标识":"IC533","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h20m23.3s","赤经D(J2000)":"9.339805555555555","赤纬(J2000)":"-3h59m29s","赤纬D(J2000)":"-3.991388888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.3","方位角":"155","详细描述":"extremely faint, small, diffuse","简略描述":"eF, S, dif"},{"ID":"8374","标识":"IC534","M标识":"IC534","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h21m15.6s","赤经D(J2000)":"9.354333333333333","赤纬(J2000)":"+3h9m1s","赤纬D(J2000)":"3.1502777777777777","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"0.2","方位角":"148","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"8375","标识":"IC535","M标识":"IC535","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h22m16.2s","赤经D(J2000)":"9.371166666666667","赤纬(J2000)":"-1h2m24s","赤纬D(J2000)":"-1.04","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"8376","标识":"IC536","M标识":"IC536","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h24m40s","赤经D(J2000)":"9.411111111111111","赤纬(J2000)":"+25h6m37s","赤纬D(J2000)":"25.110277777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.2","方位角":"23","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"8377","标识":"IC537","M标识":"IC537","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h25m22.5s","赤经D(J2000)":"9.422916666666666","赤纬(J2000)":"-12h23m28s","赤纬D(J2000)":"-12.39111111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"175","详细描述":"nebulous 14th magnitude star","简略描述":"Neb * 14"},{"ID":"8378","标识":"IC538","M标识":"IC538","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h27m18.4s","赤经D(J2000)":"9.45511111111111","赤纬(J2000)":"+23h1m12s","赤纬D(J2000)":"23.02","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"70","详细描述":"13th magnitude star in very faint nebulosity (perhaps = h599, whose right ascension was uncertain)","简略描述":"* 13 in vF neb (? = h 599, whose α was uncertain)"},{"ID":"8379","标识":"IC539","M标识":"IC539","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h29m8.2s","赤经D(J2000)":"9.48561111111111","赤纬(J2000)":"-2h32m56s","赤纬D(J2000)":"-2.548888888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.9","方位角":"156","详细描述":"pretty bright, small, round, gradually brighter middle, mottled but not resolved","简略描述":"pB, S, R, gbM, r"},{"ID":"8380","标识":"IC540","M标识":"IC540","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h30m10.1s","赤经D(J2000)":"9.502805555555556","赤纬(J2000)":"+7h54m5s","赤纬D(J2000)":"7.9013888888888895","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.3","方位角":"170","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"8381","标识":"IC541","M标识":"IC541","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h30m30s","赤经D(J2000)":"9.508333333333333","赤纬(J2000)":"-4h15m0s","赤纬D(J2000)":"-4.25","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, pretty small, round, 10th magnitude star to the south","简略描述":"eeF, pS, R, * 10 s"},{"ID":"8382","标识":"IC542","M标识":"IC542","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h31m6.2s","赤经D(J2000)":"9.51838888888889","赤纬(J2000)":"-13h10m52s","赤纬D(J2000)":"-13.181111111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"96","详细描述":"faint, very small, extended east-west, a little brighter middle","简略描述":"F, vS, E pf, lbM"},{"ID":"8383","标识":"IC543","M标识":"IC543","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h31m9s","赤经D(J2000)":"9.519166666666667","赤纬(J2000)":"-14h46m24s","赤纬D(J2000)":"-14.773333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, elongated, diffuse","简略描述":"vF, pL, E, dif"},{"ID":"8384","标识":"IC544","M标识":"IC544","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h35m53.1s","赤经D(J2000)":"9.598083333333333","赤纬(J2000)":"+24h53m34s","赤纬D(J2000)":"24.892777777777777","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"25","详细描述":"very faint, diffuse, difficult","简略描述":"vF, dif, diffic"},{"ID":"8385","标识":"IC545","M标识":"IC545","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h36m5.3s","赤经D(J2000)":"9.601472222222222","赤纬(J2000)":"+24h56m51s","赤纬D(J2000)":"24.9475","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"3","详细描述":"faint, extended east-west, faint star to east","简略描述":"F, E pf, F * f"},{"ID":"8386","标识":"IC546","M标识":"IC546","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h34m50.2s","赤经D(J2000)":"9.58061111111111","赤纬(J2000)":"-16h23m4s","赤纬D(J2000)":"-16.384444444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"100","详细描述":"","简略描述":"F, vS, iF, h 3175 f"},{"ID":"8387","标识":"IC547","M标识":"IC547","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h36m5.8s","赤经D(J2000)":"9.601611111111112","赤纬(J2000)":"-12h26m12s","赤纬D(J2000)":"-12.436666666666667","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"25","详细描述":"pretty bright, small, round, a little brighter middle","简略描述":"pB, S, R, lbM"},{"ID":"8388","标识":"IC548","M标识":"IC548","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h38m19.3s","赤经D(J2000)":"9.638694444444443","赤纬(J2000)":"+9h26m46s","赤纬D(J2000)":"9.446111111111112","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"175","详细描述":"","简略描述":"F, vS, ibM, h 614 np"},{"ID":"8389","标识":"IC549","M标识":"IC549","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h40m43.1s","赤经D(J2000)":"9.678638888888889","赤纬(J2000)":"+3h57m32s","赤纬D(J2000)":"3.958888888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"3","详细描述":"very faint, small, irregular figure, brighter middle","简略描述":"vF, S, iF, bM"},{"ID":"8390","标识":"IC550","M标识":"IC550","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h40m28.6s","赤经D(J2000)":"9.67461111111111","赤纬(J2000)":"-6h56m45s","赤纬D(J2000)":"-6.945833333333334","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"30","详细描述":"faint, extremely small, stellar","简略描述":"F, eS, stellar"},{"ID":"8391","标识":"IC551","M标识":"IC551","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h41m0s","赤经D(J2000)":"9.683333333333334","赤纬(J2000)":"+6h56m12s","赤纬D(J2000)":"6.9366666666666665","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"168","详细描述":"faint, very small, round, nucleus equal to 13th magnitude","简略描述":"F, vS, R, N = 13m"},{"ID":"8392","标识":"IC552","M标识":"IC552","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h41m16.5s","赤经D(J2000)":"9.687916666666666","赤纬(J2000)":"+10h38m50s","赤纬D(J2000)":"10.647222222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.6","方位角":"1","详细描述":"","简略描述":"F, vS, stell N = 14m"},{"ID":"8393","标识":"IC553","M标识":"IC553","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h40m45s","赤经D(J2000)":"9.679166666666665","赤纬(J2000)":"-5h26m7s","赤纬D(J2000)":"-5.435277777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"129","详细描述":"very faint, very small, round, diffuse","简略描述":"vF, vS, R, dif"},{"ID":"8394","标识":"IC554","M标识":"IC554","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h41m57s","赤经D(J2000)":"9.699166666666667","赤纬(J2000)":"+12h17m47s","赤纬D(J2000)":"12.296388888888888","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"18","详细描述":"faint, small, round, gradually brighter middle","简略描述":"eeF, eS, alm stell"},{"ID":"8395","标识":"IC555","M标识":"IC555","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h41m57s","赤经D(J2000)":"9.699166666666667","赤纬(J2000)":"+12h17m47s","赤纬D(J2000)":"12.296388888888888","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"18","详细描述":"pretty bright, very small, round, brighter middle","简略描述":"pB, vS, R, bM"},{"ID":"8396","标识":"IC556","M标识":"IC556","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h43m40.3s","赤经D(J2000)":"9.72786111111111","赤纬(J2000)":"+11h3m41s","赤纬D(J2000)":"11.061388888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, very small, round, nucleus equivalent to 14th-magnitude star","简略描述":"F, vS, R, N = 14m"},{"ID":"8397","标识":"IC557","M标识":"IC557","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h44m2.5s","赤经D(J2000)":"9.734027777777778","赤纬(J2000)":"+10h59m19s","赤纬D(J2000)":"10.98861111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"42","详细描述":"faint, very small, round, very little brighter middle","简略描述":"F, vS, R, vlbM"},{"ID":"8398","标识":"IC558","M标识":"IC558","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h45m0.3s","赤经D(J2000)":"9.750083333333333","赤纬(J2000)":"+29h27m10s","赤纬D(J2000)":"29.452777777777776","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, round, brighter middle","简略描述":"F, R, bM"},{"ID":"8399","标识":"IC559","M标识":"IC559","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h44m43.8s","赤经D(J2000)":"9.7455","赤纬(J2000)":"+9h36m57s","赤纬D(J2000)":"9.615833333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"90","详细描述":"faint, pretty small, round, diffuse","简略描述":"F, pS, R, dif"},{"ID":"8400","标识":"IC560","M标识":"IC560","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h45m53.4s","赤经D(J2000)":"9.764833333333334","赤纬(J2000)":"-0h16m6s","赤纬D(J2000)":"-0.2683333333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"15","详细描述":"","简略描述":"F, S, dif, * 10 near"},{"ID":"8401","标识":"IC561","M标识":"IC561","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h45m58.9s","赤经D(J2000)":"9.766361111111111","赤纬(J2000)":"+3h8m42s","赤纬D(J2000)":"3.145","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"15","详细描述":"pretty faint, diffuse","简略描述":"pF, dif"},{"ID":"8402","标识":"IC562","M标识":"IC562","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h46m4s","赤经D(J2000)":"9.767777777777779","赤纬(J2000)":"-3h58m19s","赤纬D(J2000)":"-3.9719444444444445","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"150","详细描述":"very faint, pretty large, extended north-south, gradually brighter middle","简略描述":"vF, pL, E ns, gbM"},{"ID":"8403","标识":"IC563","M标识":"IC563","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab\/P","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h46m20.2s","赤经D(J2000)":"9.772277777777779","赤纬(J2000)":"+3h2m46s","赤纬D(J2000)":"3.046111111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"108","详细描述":"faint, small, round, gradually brighter middle","简略描述":"pB, S, dif, gbM"},{"ID":"8404","标识":"IC564","M标识":"IC564","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h46m21s","赤经D(J2000)":"9.7725","赤纬(J2000)":"+3h4m16s","赤纬D(J2000)":"3.071111111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"0.4","方位角":"68","详细描述":"pretty bright, pretty large, extended east-west","简略描述":"pB, pL, E pf"},{"ID":"8405","标识":"IC565","M标识":"IC565","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h47m50.3s","赤经D(J2000)":"9.797305555555555","赤纬(J2000)":"+15h51m5s","赤纬D(J2000)":"15.851388888888888","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.2","方位角":"50","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"8406","标识":"IC566","M标识":"IC566","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h49m56.3s","赤经D(J2000)":"9.832305555555555","赤纬(J2000)":"-0h13m51s","赤纬D(J2000)":"-0.23083333333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"45","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"8407","标识":"IC567","M标识":"IC567","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h50m33.9s","赤经D(J2000)":"9.84275","赤纬(J2000)":"+12h47m8s","赤纬D(J2000)":"12.785555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, suspected, 2 arcmin from III 52","简略描述":"vF, suspected, 2' from III. 52"},{"ID":"8408","标识":"IC568","M标识":"IC568","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h51m8.4s","赤经D(J2000)":"9.852333333333332","赤纬(J2000)":"+15h43m50s","赤纬D(J2000)":"15.730555555555556","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"33","详细描述":"faint, pretty large, extended east-west, gradually brighter middle","简略描述":"F, pL, E pf, gbM"},{"ID":"8409","标识":"IC569","M标识":"IC569","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h51m28.1s","赤经D(J2000)":"9.857805555555554","赤纬(J2000)":"+10h55m14s","赤纬D(J2000)":"10.920555555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"162","详细描述":"very faint, diffuse, very little brighter middle","简略描述":"vF, dif, vlbM"},{"ID":"8410","标识":"IC570","M标识":"IC570","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h51m50.9s","赤经D(J2000)":"9.864138888888888","赤纬(J2000)":"+15h45m22s","赤纬D(J2000)":"15.75611111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"pretty faint, small, round, gradually brighter middle","简略描述":"pF, S, R, gbM"},{"ID":"8411","标识":"IC571","M标识":"IC571","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h52m31.5s","赤经D(J2000)":"9.875416666666666","赤纬(J2000)":"+15h46m31s","赤纬D(J2000)":"15.775277777777779","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1","短轴(分)":"0.6","方位角":"0","详细描述":"pretty bright, small, round, nucleus = 12.5 magnitude star","简略描述":"pB, S, R, N = 12.5"},{"ID":"8412","标识":"IC572","M标识":"IC572","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h52m32.8s","赤经D(J2000)":"9.875777777777778","赤纬(J2000)":"+15h49m39s","赤纬D(J2000)":"15.8275","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"8413","标识":"IC573","M标识":"IC573","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h53m36.1s","赤经D(J2000)":"9.89336111111111","赤纬(J2000)":"-12h28m56s","赤纬D(J2000)":"-12.482222222222223","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"30","详细描述":"extremely faint, very small, round, very small star close","简略描述":"eF, vS, R, vS * close"},{"ID":"8414","标识":"IC574","M标识":"IC574","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h54m27s","赤经D(J2000)":"9.9075","赤纬(J2000)":"-6h57m10s","赤纬D(J2000)":"-6.952777777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"3","详细描述":"","简略描述":"pB, S, R, mbM, * 12s"},{"ID":"8415","标识":"IC575","M标识":"IC575","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h54m32.9s","赤经D(J2000)":"9.90913888888889","赤纬(J2000)":"-6h51m26s","赤纬D(J2000)":"-6.857222222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"140","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"8416","标识":"IC576","M标识":"IC576","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h55m7s","赤经D(J2000)":"9.91861111111111","赤纬(J2000)":"+11h2m24s","赤纬D(J2000)":"11.04","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"8417","标识":"IC577","M标识":"IC577","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h56m4s","赤经D(J2000)":"9.934444444444445","赤纬(J2000)":"+10h29m56s","赤纬D(J2000)":"10.498888888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, very small, irregular figure, faint star to north","简略描述":"F, vS, iF, F * n"},{"ID":"8418","标识":"IC578","M标识":"IC578","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h56m16.1s","赤经D(J2000)":"9.937805555555556","赤纬(J2000)":"+10h29m11s","赤纬D(J2000)":"10.486388888888888","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"72","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"8419","标识":"IC579","M标识":"IC579","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h56m39.4s","赤经D(J2000)":"9.944277777777778","赤纬(J2000)":"-13h46m28s","赤纬D(J2000)":"-13.774444444444445","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"141","详细描述":"pretty faint, pretty small, round","简略描述":"pF, pS, R"},{"ID":"8420","标识":"IC580","M标识":"IC580","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h57m56.7s","赤经D(J2000)":"9.96575","赤纬(J2000)":"+10h25m58s","赤纬D(J2000)":"10.432777777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"165","详细描述":"pretty faint, very small, irregular figure","简略描述":"pF, vS, iF"},{"ID":"8421","标识":"IC581","M标识":"IC581","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h58m11.5s","赤经D(J2000)":"9.969861111111111","赤纬(J2000)":"+15h56m51s","赤纬D(J2000)":"15.9475","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.4","方位角":"135","详细描述":"","简略描述":"pB, S, dif, N = 13 inv"},{"ID":"8422","标识":"IC582","M标识":"IC582","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h59m0.2s","赤经D(J2000)":"9.983388888888888","赤纬(J2000)":"+17h49m1s","赤纬D(J2000)":"17.816944444444445","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"pretty bright, small, irregular figure, gradually brighter middle","简略描述":"pB, S, iF, gbM"},{"ID":"8423","标识":"IC583","M标识":"IC583","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h59m5s","赤经D(J2000)":"9.98472222222222","赤纬(J2000)":"+17h49m16s","赤纬D(J2000)":"17.82111111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"114","详细描述":"faint, very small, gradually brighter middle","简略描述":"F, vS, gbM"},{"ID":"8424","标识":"IC584","M标识":"IC584","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h59m5.1s","赤经D(J2000)":"9.98475","赤纬(J2000)":"+10h21m40s","赤纬D(J2000)":"10.36111111111111","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"","简略描述":"eF, S, R, dif, II. 59 p"},{"ID":"8425","标识":"IC585","M标识":"IC585","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h59m44.1s","赤经D(J2000)":"9.995583333333332","赤纬(J2000)":"+12h59m21s","赤纬D(J2000)":"12.989166666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"129","详细描述":"","简略描述":"* 13 in eF, S neb"},{"ID":"8426","标识":"IC586","M标识":"IC586","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h59m50.2s","赤经D(J2000)":"9.997277777777777","赤纬(J2000)":"-6h55m20s","赤纬D(J2000)":"-6.9222222222222225","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"","简略描述":"F, vS, mottled"},{"ID":"8427","标识":"IC587","M标识":"IC587","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h3m5.2s","赤经D(J2000)":"10.051444444444446","赤纬(J2000)":"-2h23m59s","赤纬D(J2000)":"-2.399722222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"107","详细描述":"faint, pretty large, round","简略描述":"F, pL, R"},{"ID":"8428","标识":"IC588","M标识":"IC588","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h2m7s","赤经D(J2000)":"10.035277777777777","赤纬(J2000)":"+3h3m30s","赤纬D(J2000)":"3.058333333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"159","详细描述":"","简略描述":"F, S, R, mottled"},{"ID":"8429","标识":"IC589","M标识":"IC589","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h4m23.8s","赤经D(J2000)":"10.073277777777777","赤纬(J2000)":"-5h40m42s","赤纬D(J2000)":"-5.678333333333334","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"10","详细描述":"very faint, very small, possibly binuclear","简略描述":"vF, vS, biN ?"},{"ID":"8430","标识":"IC590","M标识":"IC590","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h5m49.6s","赤经D(J2000)":"10.097111111111111","赤纬(J2000)":"+0h37m59s","赤纬D(J2000)":"0.6330555555555556","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.9","方位角":"123","详细描述":"faint, diffuse, perhaps a nebulous double star with (NGC) 943","简略描述":"F, dif, neb D * ?"},{"ID":"8431","标识":"IC591","M标识":"IC591","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h7m27.6s","赤经D(J2000)":"10.124333333333334","赤纬(J2000)":"+12h16m27s","赤纬D(J2000)":"12.274166666666668","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.7","方位角":"170","详细描述":"pretty faint, small, round","简略描述":"pF, S, R"},{"ID":"8432","标识":"IC592","M标识":"IC592","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h7m58.7s","赤经D(J2000)":"10.132972222222223","赤纬(J2000)":"-2h29m56s","赤纬D(J2000)":"-2.498888888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"30","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"8433","标识":"IC593","M标识":"IC593","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h8m18s","赤经D(J2000)":"10.138333333333334","赤纬(J2000)":"-2h31m36s","赤纬D(J2000)":"-2.5266666666666664","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"81","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"8434","标识":"IC594","M标识":"IC594","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h8m31.9s","赤经D(J2000)":"10.142194444444444","赤纬(J2000)":"-0h39m58s","赤纬D(J2000)":"-0.6661111111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"127","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"8435","标识":"IC595","M标识":"IC595","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h9m38.1s","赤经D(J2000)":"10.160583333333333","赤纬(J2000)":"+11h0m3s","赤纬D(J2000)":"11.000833333333333","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"165","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"8436","标识":"IC596","M标识":"IC596","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h10m31.3s","赤经D(J2000)":"10.17536111111111","赤纬(J2000)":"+10h2m30s","赤纬D(J2000)":"10.041666666666666","可见光星等V":"14.9","摄影(蓝光)星等B":"15.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"15","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"8437","标识":"IC597","M标识":"IC597","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h10m11.9s","赤经D(J2000)":"10.169972222222222","赤纬(J2000)":"-6h53m55s","赤纬D(J2000)":"-6.89861111111111","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"170","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"8438","标识":"IC598","M标识":"IC598","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h12m48.5s","赤经D(J2000)":"10.213472222222222","赤纬(J2000)":"+43h8m44s","赤纬D(J2000)":"43.14555555555555","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"8","详细描述":"very faint, very small, round, brighter middle, almost stellar","简略描述":"vF, vS, R, bM, alm stell"},{"ID":"8439","标识":"IC599","M标识":"IC599","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h13m12.4s","赤经D(J2000)":"10.22011111111111","赤纬(J2000)":"-5h37m44s","赤纬D(J2000)":"-5.6288888888888895","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"36","详细描述":"pretty faint, small, very little brighter middle","简略描述":"pF, S, vlbM"},{"ID":"8440","标识":"IC600","M标识":"IC600","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h17m10.7s","赤经D(J2000)":"10.286305555555556","赤纬(J2000)":"-3h29m50s","赤纬D(J2000)":"-3.4972222222222222","可见光星等V":"12.4","摄影(蓝光)星等B":"13","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.4","短轴(分)":"1.2","方位角":"27","详细描述":"faint, pretty small, round, gradually brighter middle","简略描述":"F, pS, R, gbM"},{"ID":"8441","标识":"IC601","M标识":"IC601","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h18m15.3s","赤经D(J2000)":"10.304250000000001","赤纬(J2000)":"+7h2m21s","赤纬D(J2000)":"7.039166666666667","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"40","详细描述":"very faint, very small, diffuse, suddenly brighter middle","简略描述":"vF, vS, dif, sbM"},{"ID":"8442","标识":"IC602","M标识":"IC602","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h18m19.6s","赤经D(J2000)":"10.305444444444445","赤纬(J2000)":"+7h2m57s","赤纬D(J2000)":"7.049166666666666","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"177","详细描述":"pretty bright, small, extended north-south","简略描述":"pB, S, E ns"},{"ID":"8443","标识":"IC603","M标识":"IC603","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h19m25s","赤经D(J2000)":"10.323611111111111","赤纬(J2000)":"-5h39m22s","赤纬D(J2000)":"-5.6561111111111115","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"157","详细描述":"faint, very small, round, nucleus = 13.5 magnitude star","简略描述":"F, vS, R, N = 13.5"},{"ID":"8444","标识":"IC604","M标识":"IC604","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h23m44.7s","赤经D(J2000)":"10.39575","赤纬(J2000)":"+57h1m36s","赤纬D(J2000)":"57.026666666666664","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"97","详细描述":"most extremely faint, very small, very much extended (perhaps several faint stars in a line)","简略描述":"eeF, vS, vmE (? sev eF st in line)"},{"ID":"8445","标识":"IC605","M标识":"IC605","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h22m24.1s","赤经D(J2000)":"10.373361111111112","赤纬(J2000)":"+1h11m56s","赤纬D(J2000)":"1.198888888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"12","详细描述":"east, small, round, gradually brighter middle","简略描述":"f, S, R, gbM"},{"ID":"8446","标识":"IC606","M标识":"IC606","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h23m32.6s","赤经D(J2000)":"10.392388888888888","赤纬(J2000)":"+10h57m35s","赤纬D(J2000)":"10.959722222222222","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"30","详细描述":"very faint, very small, round, diffuse","简略描述":"vF, vS, R, dif"},{"ID":"8447","标识":"IC607","M标识":"IC607","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h24m8.5s","赤经D(J2000)":"10.402361111111112","赤纬(J2000)":"+16h44m30s","赤纬D(J2000)":"16.741666666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"105","详细描述":"most extremely faint, pretty small, round, very difficult, star to southwest","简略描述":"eeF, pS, R, v diffic, * sp"},{"ID":"8448","标识":"IC608","M标识":"IC608","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h24m21s","赤经D(J2000)":"10.405833333333334","赤纬(J2000)":"-6h2m22s","赤纬D(J2000)":"-6.039444444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"108","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"8449","标识":"IC609","M标识":"IC609","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h25m35.4s","赤经D(J2000)":"10.426499999999999","赤纬(J2000)":"-2h12m51s","赤纬D(J2000)":"-2.214166666666667","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"28","详细描述":"faint, pretty large, round","简略描述":"F, pL, R"},{"ID":"8450","标识":"IC610","M标识":"IC610","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h26m28.4s","赤经D(J2000)":"10.441222222222223","赤纬(J2000)":"+20h13m37s","赤纬D(J2000)":"20.22694444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"0.3","方位角":"29","详细描述":"most extremely faint, pretty small, considerably extended, extremely difficult","简略描述":"eeF, pS, cE, e diffic"},{"ID":"8451","标识":"IC611","M标识":"IC611","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h26m28.4s","赤经D(J2000)":"10.441222222222223","赤纬(J2000)":"+20h13m37s","赤纬D(J2000)":"20.22694444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"0.3","方位角":"29","详细描述":"extremely faint, small, a little extended","简略描述":"eF, S, lE"},{"ID":"8452","标识":"IC612","M标识":"IC612","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h27m5.8s","赤经D(J2000)":"10.451611111111111","赤纬(J2000)":"+11h3m17s","赤纬D(J2000)":"11.054722222222223","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"0","详细描述":"faint, very small, diffuse, very little brighter middle","简略描述":"F, vS, dif, vlbM"},{"ID":"8453","标识":"IC613","M标识":"IC613","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h27m7.7s","赤经D(J2000)":"10.452138888888888","赤纬(J2000)":"+11h0m41s","赤纬D(J2000)":"11.011388888888888","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"8454","标识":"IC614","M标识":"IC614","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"RN4","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h26m51.8s","赤经D(J2000)":"10.447722222222222","赤纬(J2000)":"-3h27m53s","赤纬D(J2000)":"-3.4647222222222225","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"27","详细描述":"very faint, diffuse","简略描述":"vF, dif"},{"ID":"8455","标识":"IC615","M标识":"IC615","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h27m21.9s","赤经D(J2000)":"10.456083333333332","赤纬(J2000)":"+11h4m50s","赤纬D(J2000)":"11.080555555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"143","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"8456","标识":"IC616","M标识":"IC616","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h32m47.4s","赤经D(J2000)":"10.5465","赤纬(J2000)":"+15h51m38s","赤纬D(J2000)":"15.860555555555555","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"faint, pretty small, round","简略描述":"F, pS, R"},{"ID":"8457","标识":"IC617","M标识":"IC617","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h32m43.8s","赤经D(J2000)":"10.5455","赤纬(J2000)":"-12h38m12s","赤纬D(J2000)":"-12.636666666666667","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"130","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"8458","标识":"IC618","M标识":"IC618","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h32m45.3s","赤经D(J2000)":"10.545916666666667","赤纬(J2000)":"-12h43m0s","赤纬D(J2000)":"-12.716666666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, extended east-west, a little brighter middle","简略描述":"F, S, E pf, lbM"},{"ID":"8459","标识":"IC619","M标识":"IC619","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h33m50s","赤经D(J2000)":"10.56388888888889","赤纬(J2000)":"+12h52m42s","赤纬D(J2000)":"12.878333333333334","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.8","方位角":"0","详细描述":"most extremely faint, small, round, 3 faint stars to east","简略描述":"eeF, S, R, 3 F st f"},{"ID":"8460","标识":"IC620","M标识":"IC620","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S M","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h33m33.4s","赤经D(J2000)":"10.559277777777778","赤纬(J2000)":"+11h52m15s","赤纬D(J2000)":"11.870833333333334","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"80","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"8461","标识":"IC621","M标识":"IC621","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h33m21s","赤经D(J2000)":"10.555833333333334","赤纬(J2000)":"+2h37m0s","赤纬D(J2000)":"2.6166666666666667","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"90","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"8462","标识":"IC622","M标识":"IC622","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Scd","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h34m42.6s","赤经D(J2000)":"10.5785","赤纬(J2000)":"+11h11m49s","赤纬D(J2000)":"11.196944444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.9","短轴(分)":"0.4","方位角":"152","详细描述":"very faint, pretty small, extended, 9th magnitude star to south","简略描述":"vF, pS, E, * 9 s"},{"ID":"8463","标识":"IC623","M标识":"IC623","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h35m21s","赤经D(J2000)":"10.589166666666667","赤纬(J2000)":"+3h33m30s","赤纬D(J2000)":"3.558333333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.4","方位角":"152","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"8464","标识":"IC624","M标识":"IC624","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h36m15.3s","赤经D(J2000)":"10.60425","赤纬(J2000)":"-8h20m3s","赤纬D(J2000)":"-8.334166666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.7","短轴(分)":"0.5","方位角":"42","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"8465","标识":"IC625","M标识":"IC625","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc?","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h42m37.9s","赤经D(J2000)":"10.710527777777777","赤纬(J2000)":"-23h56m6s","赤纬D(J2000)":"-23.935","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.3","短轴(分)":"0.5","方位角":"110","详细描述":"extremely faint, pretty large, extended 110°, diffuse","简略描述":"eF, pL, E 110°, dif"},{"ID":"8466","标识":"IC626","M标识":"IC626","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h36m57.2s","赤经D(J2000)":"10.615888888888888","赤纬(J2000)":"-7h1m26s","赤纬D(J2000)":"-7.023888888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.2","短轴(分)":"1","方位角":"141","详细描述":"faint, small, round, mottled but not resolved","简略描述":"F, S, R, r"},{"ID":"8467","标识":"IC627","M标识":"IC627","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h37m19.8s","赤经D(J2000)":"10.622166666666667","赤纬(J2000)":"-3h21m26s","赤纬D(J2000)":"-3.357222222222222","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, small, mottled but not resolved","简略描述":"F, S, r"},{"ID":"8468","标识":"IC628","M标识":"IC628","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h37m36.2s","赤经D(J2000)":"10.626722222222222","赤纬(J2000)":"+5h36m12s","赤纬D(J2000)":"5.603333333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"118","详细描述":"very faint, very small, irregular figure","简略描述":"vF, vS, iF"},{"ID":"8469","标识":"IC629","M标识":"IC629","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h37m2.3s","赤经D(J2000)":"10.617305555555555","赤纬(J2000)":"-27h33m56s","赤纬D(J2000)":"-27.565555555555555","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.3","短轴(分)":"1.2","方位角":"175","详细描述":"very faint, very small star involved, possible cluster","简略描述":"vF, vS st inv, Cl ?"},{"ID":"8470","标识":"IC630","M标识":"IC630","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h38m33.9s","赤经D(J2000)":"10.64275","赤纬(J2000)":"-7h10m14s","赤纬D(J2000)":"-7.170555555555556","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"2.1","短轴(分)":"1.7","方位角":"130","详细描述":"","简略描述":"F, eS, stellar, * 9.5 sp 1?'"},{"ID":"8471","标识":"IC631","M标识":"IC631","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h38m58.8s","赤经D(J2000)":"10.649666666666667","赤纬(J2000)":"-7h3m6s","赤纬D(J2000)":"-7.051666666666667","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, very small, diffuse","简略描述":"vF, vS, dif"},{"ID":"8472","标识":"IC632","M标识":"IC632","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h39m11.8s","赤经D(J2000)":"10.653277777777777","赤纬(J2000)":"-0h24m35s","赤纬D(J2000)":"-0.40972222222222227","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"30","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"8473","标识":"IC633","M标识":"IC633","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h39m24.1s","赤经D(J2000)":"10.656694444444446","赤纬(J2000)":"-0h23m19s","赤纬D(J2000)":"-0.38861111111111113","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"102","详细描述":"very faint, very small, round, small nucleus","简略描述":"vF, vS, R, SN"},{"ID":"8474","标识":"IC634","M标识":"IC634","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h40m54.8s","赤经D(J2000)":"10.681888888888889","赤纬(J2000)":"+5h59m31s","赤纬D(J2000)":"5.991944444444444","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"116","详细描述":"very faint, small, mottled but not resolved","简略描述":"vF, S, r"},{"ID":"8475","标识":"IC635","M标识":"IC635","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h41m45.3s","赤经D(J2000)":"10.695916666666667","赤纬(J2000)":"+15h38m36s","赤纬D(J2000)":"15.643333333333333","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"5","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"8476","标识":"IC636","M标识":"IC636","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h41m50.6s","赤经D(J2000)":"10.69738888888889","赤纬(J2000)":"+4h19m51s","赤纬D(J2000)":"4.3308333333333335","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"48","详细描述":"very faint, very small, mottled but not resolved","简略描述":"vF, vS, r"},{"ID":"8477","标识":"IC637","M标识":"IC637","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h42m21.9s","赤经D(J2000)":"10.706083333333332","赤纬(J2000)":"+15h21m37s","赤纬D(J2000)":"15.360277777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.5","方位角":"15","详细描述":"","简略描述":"F, vS, in line w 3 st"},{"ID":"8478","标识":"IC638","M标识":"IC638","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h43m48s","赤经D(J2000)":"10.73","赤纬(J2000)":"+15h53m44s","赤纬D(J2000)":"15.895555555555555","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"5","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"8479","标识":"IC639","M标识":"IC639","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h45m52s","赤经D(J2000)":"10.764444444444445","赤纬(J2000)":"+16h55m46s","赤纬D(J2000)":"16.929444444444446","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"0","详细描述":"","简略描述":"eF, S, mE ns, * 10 nf 5'"},{"ID":"8480","标识":"IC640","M标识":"IC640","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h46m50s","赤经D(J2000)":"10.780555555555557","赤纬(J2000)":"+34h46m0s","赤纬D(J2000)":"34.766666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, extended, double?","简略描述":"vF, pS, E, D ?"},{"ID":"8481","标识":"IC641","M标识":"IC641","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h47m49.3s","赤经D(J2000)":"10.797027777777778","赤纬(J2000)":"+34h40m21s","赤纬D(J2000)":"34.6725","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, diffuse","简略描述":"vS, pS, dif"},{"ID":"8482","标识":"IC642","M标识":"IC642","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h48m7.9s","赤经D(J2000)":"10.802194444444446","赤纬(J2000)":"+18h11m19s","赤纬D(J2000)":"18.18861111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"very faint, pretty small, a little extended, 2 stars to east","简略描述":"vF, pS, lE, 2 st f"},{"ID":"8483","标识":"IC643","M标识":"IC643","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h49m27.1s","赤经D(J2000)":"10.824194444444444","赤纬(J2000)":"+12h12m4s","赤纬D(J2000)":"12.20111111111111","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"75","详细描述":"pretty faint, small, extended north-south, a little brighter middle","简略描述":"pF, S, E ns, lbM"},{"ID":"8484","标识":"IC644","M标识":"IC644","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h51m31.2s","赤经D(J2000)":"10.858666666666666","赤纬(J2000)":"+55h23m28s","赤纬D(J2000)":"55.39111111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1","短轴(分)":"0.3","方位角":"78","详细描述":"most extremely faint, pretty small, a little extended, bright star to southeast, southwestern of 2","简略描述":"eeF, pS, lE, B * sf, sp of 2"},{"ID":"8485","标识":"IC645","M标识":"IC645","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h50m9.2s","赤经D(J2000)":"10.83588888888889","赤纬(J2000)":"-6h2m35s","赤纬D(J2000)":"-6.043055555555555","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"90","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"8486","标识":"IC646","M标识":"IC646","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h51m35.1s","赤经D(J2000)":"10.85975","赤纬(J2000)":"+55h27m59s","赤纬D(J2000)":"55.46638888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"114","详细描述":"most extremely faint, pretty small, round, northeastern of 2","简略描述":"eeF, pS, R, nf of 2"},{"ID":"8487","标识":"IC647","M标识":"IC647","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h50m34.4s","赤经D(J2000)":"10.84288888888889","赤纬(J2000)":"-12h51m14s","赤纬D(J2000)":"-12.85388888888889","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"80","详细描述":"","简略描述":"eF, vS, dif, III. 522 p"},{"ID":"8488","标识":"IC648","M标识":"IC648","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h51m0.7s","赤经D(J2000)":"10.850194444444444","赤纬(J2000)":"+12h17m24s","赤纬D(J2000)":"12.29","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, very small, very faint star involved, difficult","简略描述":"eF, vS, vF * inv, diffic"},{"ID":"8489","标识":"IC649","M标识":"IC649","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab\/P","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h50m52s","赤经D(J2000)":"10.847777777777779","赤纬(J2000)":"+1h9m55s","赤纬D(J2000)":"1.1652777777777776","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"171","详细描述":"","简略描述":"F, S, lbM, * 10.5 sp"},{"ID":"8490","标识":"IC650","M标识":"IC650","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h50m40.5s","赤经D(J2000)":"10.844583333333334","赤纬(J2000)":"-13h26m30s","赤纬D(J2000)":"-13.441666666666666","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"5","详细描述":"pretty faint, very small, round","简略描述":"pF, vS, R"},{"ID":"8491","标识":"IC651","M标识":"IC651","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h50m58.2s","赤经D(J2000)":"10.8495","赤纬(J2000)":"-2h9m1s","赤纬D(J2000)":"-2.1502777777777777","可见光星等V":"13","摄影(蓝光)星等B":"13.4","B-V":"0.4","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"pretty bright, pretty small, gradually brighter middle, mottled but not resolved","简略描述":"pB, pS, gbM, r"},{"ID":"8492","标识":"IC652","M标识":"IC652","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa\/P","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h50m57.6s","赤经D(J2000)":"10.849333333333334","赤纬(J2000)":"-12h26m52s","赤纬D(J2000)":"-12.447777777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"175","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"8493","标识":"IC653","M标识":"IC653","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h52m6.7s","赤经D(J2000)":"10.868527777777778","赤纬(J2000)":"-0h33m40s","赤纬D(J2000)":"-0.5611111111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"55","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"8494","标识":"IC654","M标识":"IC654","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"10h53m50.4s","赤经D(J2000)":"10.897333333333332","赤纬(J2000)":"-11h43m32s","赤纬D(J2000)":"-11.725555555555555","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"126","详细描述":"very faint, small, difficult","简略描述":"vF, S, diffic"},{"ID":"8495","标识":"IC655","M标识":"IC655","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h54m22.1s","赤经D(J2000)":"10.90613888888889","赤纬(J2000)":"-0h21m56s","赤纬D(J2000)":"-0.3655555555555555","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.2","方位角":"45","详细描述":"extremely faint, irregular figure","简略描述":"eF, iF"},{"ID":"8496","标识":"IC656","M标识":"IC656","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3+C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h55m8.8s","赤经D(J2000)":"10.91911111111111","赤纬(J2000)":"+17h36m42s","赤纬D(J2000)":"17.611666666666668","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very small, a cluster, possibly nebulous","简略描述":"vS, Cl, neb ?"},{"ID":"8497","标识":"IC657","M标识":"IC657","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h57m53.5s","赤经D(J2000)":"10.96486111111111","赤纬(J2000)":"-4h54m15s","赤纬D(J2000)":"-4.904166666666667","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"165","详细描述":"faint, pretty small, a little extended north-south","简略描述":"F, pS, lE ns"},{"ID":"8498","标识":"IC658","M标识":"IC658","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h58m16.2s","赤经D(J2000)":"10.971166666666667","赤纬(J2000)":"+8h14m32s","赤纬D(J2000)":"8.242222222222221","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"57","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stellar"},{"ID":"8499","标识":"IC659","M标识":"IC659","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h58m3.8s","赤经D(J2000)":"10.967722222222223","赤纬(J2000)":"-6h15m36s","赤纬D(J2000)":"-6.26","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"1.4","短轴(分)":"1","方位角":"147","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"8500","标识":"IC660","M标识":"IC660","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h58m26.6s","赤经D(J2000)":"10.974055555555555","赤纬(J2000)":"+1h23m0s","赤纬D(J2000)":"1.3833333333333333","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"41","详细描述":"very faint, small, mottled but not resolved","简略描述":"vF, S, r"},{"ID":"8501","标识":"IC661","M标识":"IC661","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h58m51.4s","赤经D(J2000)":"10.980944444444445","赤纬(J2000)":"+1h39m4s","赤纬D(J2000)":"1.651111111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, very small, round, difficult","简略描述":"eF, vS, R, diffic"},{"ID":"8502","标识":"IC662","M标识":"IC662","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h59m20.5s","赤经D(J2000)":"10.989027777777777","赤纬(J2000)":"+1h35m58s","赤纬D(J2000)":"1.5994444444444447","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"85","详细描述":"very faint, small nucleus, difficult","简略描述":"vF, SN, diffic"},{"ID":"8503","标识":"IC663","M标识":"IC663","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h0m37.3s","赤经D(J2000)":"11.010361111111111","赤纬(J2000)":"+10h26m14s","赤纬D(J2000)":"10.437222222222223","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"175","详细描述":"extremely faint, very small, round, 2 stars to south, 1st of 4","简略描述":"eF, vS, R, 2 st s, 1st of 4"},{"ID":"8504","标识":"IC664","M标识":"IC664","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h0m45.4s","赤经D(J2000)":"11.012611111111111","赤纬(J2000)":"+10h33m11s","赤纬D(J2000)":"10.553055555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"40","详细描述":"","简略描述":"eF, vS, R, lbM, 3492 f"},{"ID":"8505","标识":"IC665","M标识":"IC665","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h0m29.9s","赤经D(J2000)":"11.008305555555555","赤纬(J2000)":"-13h51m58s","赤纬D(J2000)":"-13.866111111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"135","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"8506","标识":"IC666","M标识":"IC666","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h1m14.8s","赤经D(J2000)":"11.020777777777779","赤纬(J2000)":"+10h28m51s","赤纬D(J2000)":"10.480833333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"160","详细描述":"extremely faint, very small, irregular figure, 4th of 4","简略描述":"eF, vS, iF, 4th of 4"},{"ID":"8507","标识":"IC667","M标识":"IC667","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h6m36.5s","赤经D(J2000)":"11.110138888888889","赤纬(J2000)":"+15h5m21s","赤纬D(J2000)":"15.089166666666667","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, round, very little brighter middle","简略描述":"vF, vS, R, vlbM"},{"ID":"8508","标识":"IC668","M标识":"IC668","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h6m39.4s","赤经D(J2000)":"11.110944444444444","赤纬(J2000)":"+15h2m28s","赤纬D(J2000)":"15.04111111111111","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"87","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"8509","标识":"IC669","M标识":"IC669","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h7m16.5s","赤经D(J2000)":"11.12125","赤纬(J2000)":"+6h18m11s","赤纬D(J2000)":"6.303055555555555","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"165","详细描述":"pretty bright, very small, round, suddenly brighter middle","简略描述":"pB, vS, R, sbM"},{"ID":"8510","标识":"IC670","M标识":"IC670","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h7m28.7s","赤经D(J2000)":"11.124638888888889","赤纬(J2000)":"+6h42m52s","赤纬D(J2000)":"6.714444444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.8","方位角":"51","详细描述":"faint, pretty small, round, brighter middle","简略描述":"F, pS, R, bM"},{"ID":"8511","标识":"IC671","M标识":"IC671","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h7m31.6s","赤经D(J2000)":"11.125444444444446","赤纬(J2000)":"+0h47m0s","赤纬D(J2000)":"0.7833333333333333","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"22","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"8512","标识":"IC672","M标识":"IC672","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h8m3.2s","赤经D(J2000)":"11.134222222222222","赤纬(J2000)":"-12h29m3s","赤纬D(J2000)":"-12.484166666666665","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"153","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"8513","标识":"IC673","M标识":"IC673","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h9m25.2s","赤经D(J2000)":"11.157","赤纬(J2000)":"-0h5m52s","赤纬D(J2000)":"-0.09777777777777777","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"0.7","方位角":"165","详细描述":"very faint, very small, extended east-west, mottled but not resolved","简略描述":"vF, vS, E pf, r"},{"ID":"8514","标识":"IC674","M标识":"IC674","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h11m6.4s","赤经D(J2000)":"11.18511111111111","赤纬(J2000)":"+43h37m59s","赤纬D(J2000)":"43.63305555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"0.7","方位角":"120","详细描述":"pretty faint, round, brighter middle, double star to southeast","简略描述":"pF, R, bM, D * sf"},{"ID":"8515","标识":"IC675","M标识":"IC675","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h10m57.4s","赤经D(J2000)":"11.182611111111111","赤纬(J2000)":"+3h35m41s","赤纬D(J2000)":"3.5947222222222224","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, extended north-south, binuclear?","简略描述":"pB, pL, E ns, biN ?"},{"ID":"8516","标识":"IC676","M标识":"IC676","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h12m39.7s","赤经D(J2000)":"11.211027777777778","赤纬(J2000)":"+9h3m22s","赤纬D(J2000)":"9.056111111111111","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.1","短轴(分)":"1.3","方位角":"10","详细描述":"very faint, pretty small, a little extended, between 2 distant stars","简略描述":"vF, pS, lE, bet 2 dist st"},{"ID":"8517","标识":"IC677","M标识":"IC677","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h13m56.6s","赤经D(J2000)":"11.23238888888889","赤纬(J2000)":"+12h18m6s","赤纬D(J2000)":"12.301666666666668","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.5","短轴(分)":"0.6","方位角":"45","详细描述":"faint, pretty large, gradually brighter middle","简略描述":"F, pL, gbM"},{"ID":"8518","标识":"IC678","M标识":"IC678","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m6.3s","赤经D(J2000)":"11.235083333333332","赤纬(J2000)":"+6h34m40s","赤纬D(J2000)":"6.5777777777777775","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"147","详细描述":"faint, small, mottled but not resolved, nucleus = 13.5 magnitude star","简略描述":"F, S, r, N = 13.5"},{"ID":"8519","标识":"IC679","M标识":"IC679","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h16m36.5s","赤经D(J2000)":"11.276805555555557","赤纬(J2000)":"-13h58m17s","赤纬D(J2000)":"-13.971388888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"120","详细描述":"faint, small, round, suddenly brighter middle","简略描述":"F, S, R, sbM"},{"ID":"8520","标识":"IC680","M标识":"IC680","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m54.6s","赤经D(J2000)":"11.2985","赤纬(J2000)":"-1h56m48s","赤纬D(J2000)":"-1.9466666666666668","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"165","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"8521","标识":"IC681","M标识":"IC681","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h18m31.9s","赤经D(J2000)":"11.308861111111112","赤纬(J2000)":"-12h8m25s","赤纬D(J2000)":"-12.140277777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"18","详细描述":"very faint, small, irregular figure, difficult","简略描述":"vF, S, iF, diffic"},{"ID":"8522","标识":"IC682","M标识":"IC682","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m14.8s","赤经D(J2000)":"11.370777777777779","赤纬(J2000)":"+20h12m31s","赤纬D(J2000)":"20.20861111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"140","详细描述":"extremely faint, extremely small, round, very faint star close on northwest","简略描述":"eF, eS, R, vF * close np"},{"ID":"8523","标识":"IC683","M标识":"IC683","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m31.7s","赤经D(J2000)":"11.358805555555556","赤纬(J2000)":"+2h45m8s","赤纬D(J2000)":"2.752222222222222","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"","详细描述":"nebulous object of 13.5 magnitude","简略描述":"Neb object 13.5 mag"},{"ID":"8524","标识":"IC684","M标识":"IC684","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m32.9s","赤经D(J2000)":"11.35913888888889","赤纬(J2000)":"+2h48m37s","赤纬D(J2000)":"2.8102777777777774","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"63","详细描述":"faint, small, double star 0.5 arcmin to southwest","简略描述":"F, S, ** sp 0'.5"},{"ID":"8525","标识":"IC685","M标识":"IC685","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m6.5s","赤经D(J2000)":"11.368472222222223","赤纬(J2000)":"+17h45m15s","赤纬D(J2000)":"17.754166666666666","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"169","详细描述":"most extremely faint, pretty small, round, star to northeast","简略描述":"eeF, pS, R, * nf"},{"ID":"8526","标识":"IC686","M标识":"IC686","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h23m5.1s","赤经D(J2000)":"11.38475","赤纬(J2000)":"+5h38m39s","赤纬D(J2000)":"5.644166666666666","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"30","详细描述":"extremely faint, very small, round, very difficult","简略描述":"eF, vS, R, v diffic"},{"ID":"8527","标识":"IC687","M标识":"IC687","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h24m17.3s","赤经D(J2000)":"11.404805555555557","赤纬(J2000)":"+47h50m53s","赤纬D(J2000)":"47.84805555555556","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, extremely small, round, stellar nucleus, faint star to east","简略描述":"eF, eS, R, stell N, F * f"},{"ID":"8528","标识":"IC688","M标识":"IC688","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h23m40s","赤经D(J2000)":"11.394444444444444","赤纬(J2000)":"-9h47m45s","赤纬D(J2000)":"-9.795833333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"110","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"8529","标识":"IC689","M标识":"IC689","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h23m38.3s","赤经D(J2000)":"11.393972222222223","赤纬(J2000)":"-13h49m51s","赤纬D(J2000)":"-13.830833333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"137","详细描述":"extremely faint, very small, round, diffuse","简略描述":"eF, vS, r, dif"},{"ID":"8530","标识":"IC690","M标识":"IC690","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h24m20.5s","赤经D(J2000)":"11.405694444444444","赤纬(J2000)":"-8h20m29s","赤纬D(J2000)":"-8.34138888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"170","详细描述":"","简略描述":"pB, S, R, N = 12 m"},{"ID":"8531","标识":"IC691","M标识":"IC691","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h26m44s","赤经D(J2000)":"11.445555555555556","赤纬(J2000)":"+59h9m20s","赤纬D(J2000)":"59.15555555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"150","详细描述":"pretty faint, pretty small, round, 2 stars near","简略描述":"pF, pS, R, 2 st nr"},{"ID":"8532","标识":"IC692","M标识":"IC692","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h25m53.5s","赤经D(J2000)":"11.431527777777777","赤纬(J2000)":"+9h59m15s","赤纬D(J2000)":"9.987499999999999","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"125","详细描述":"","简略描述":"F, vS, R, * 12 sf 2'"},{"ID":"8533","标识":"IC693","M标识":"IC693","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h26m48.6s","赤经D(J2000)":"11.446833333333334","赤纬(J2000)":"-5h0m16s","赤纬D(J2000)":"-5.004444444444444","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"90","详细描述":"faint, pretty small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, pS, R, gbM, r"},{"ID":"8534","标识":"IC694","M标识":"IC694","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h28m27.2s","赤经D(J2000)":"11.474222222222222","赤纬(J2000)":"+58h34m43s","赤纬D(J2000)":"58.578611111111115","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very small, forms double nebula with I 247","简略描述":"vS, forms D neb with I 247"},{"ID":"8535","标识":"IC695","M标识":"IC695","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h27m58.3s","赤经D(J2000)":"11.466194444444444","赤纬(J2000)":"-11h42m55s","赤纬D(J2000)":"-11.715277777777777","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"85","详细描述":"extremely faint, small, very difficult","简略描述":"eF, S, v diffic"},{"ID":"8536","标识":"IC696","M标识":"IC696","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m39.9s","赤经D(J2000)":"11.47775","赤纬(J2000)":"+9h5m57s","赤纬D(J2000)":"9.099166666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.9","方位角":"144","详细描述":"very faint, pretty small, round, very little brighter middle","简略描述":"vF, pS, R, vlbM"},{"ID":"8537","标识":"IC697","M标识":"IC697","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m34.4s","赤经D(J2000)":"11.476222222222223","赤纬(J2000)":"-1h37m44s","赤纬D(J2000)":"-1.6288888888888888","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"135","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"8538","标识":"IC698","M标识":"IC698","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m3.6s","赤经D(J2000)":"11.484333333333332","赤纬(J2000)":"+9h6m45s","赤纬D(J2000)":"9.112499999999999","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.5","方位角":"147","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"8539","标识":"IC699","M标识":"IC699","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m6.5s","赤经D(J2000)":"11.485138888888889","赤纬(J2000)":"+8h59m21s","赤纬D(J2000)":"8.989166666666666","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"12","详细描述":"faint, very small, a little extended north-south","简略描述":"F, vS, lE ns"},{"ID":"8540","标识":"IC700","M标识":"IC700","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m15.2s","赤经D(J2000)":"11.487555555555554","赤纬(J2000)":"+20h34m58s","赤纬D(J2000)":"20.58277777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"1","短轴(分)":"0.5","方位角":"59","详细描述":"pretty small, round, a little brighter middle","简略描述":"pS, R, lbM"},{"ID":"8541","标识":"IC701","M标识":"IC701","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm\/P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m0.6s","赤经D(J2000)":"11.516833333333334","赤纬(J2000)":"+20h28m11s","赤纬D(J2000)":"20.46972222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.1","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"105","详细描述":"extremely faint, very small, round, 2 pretty bright stars to southeast","简略描述":"eF, vS, R, 2 pB st sf"},{"ID":"8542","标识":"IC702","M标识":"IC702","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h30m54.6s","赤经D(J2000)":"11.515166666666667","赤纬(J2000)":"-4h55m20s","赤纬D(J2000)":"-4.9222222222222225","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"130","详细描述":"faint, very small, round, nucleus = 13.5 magnitude star","简略描述":"F, vS, R, N = 13.5"},{"ID":"8543","标识":"IC703","M标识":"IC703","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h31m54s","赤经D(J2000)":"11.531666666666668","赤纬(J2000)":"-11h36m0s","赤纬D(J2000)":"-11.6","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, round, preceding of 2","简略描述":"eeF, S, R, p of 2"},{"ID":"8544","标识":"IC704","M标识":"IC704","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h32m0s","赤经D(J2000)":"11.533333333333333","赤纬(J2000)":"-11h33m0s","赤纬D(J2000)":"-11.55","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small (perhaps a close double), following of 2","简略描述":"eF, vS (? close D), f of 2"},{"ID":"8545","标识":"IC705","M标识":"IC705","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h32m56.3s","赤经D(J2000)":"11.548972222222222","赤纬(J2000)":"+50h14m32s","赤纬D(J2000)":"50.242222222222225","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"27","详细描述":"most extremely faint, very small, round","简略描述":"eeF, vS, R"},{"ID":"8546","标识":"IC706","M标识":"IC706","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h33m12.6s","赤经D(J2000)":"11.553500000000001","赤纬(J2000)":"-13h20m17s","赤纬D(J2000)":"-13.338055555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.3","短轴(分)":"0.2","方位角":"111","详细描述":"extremely faint, very small, a little brighter middle","简略描述":"eF, vS, lbM"},{"ID":"8547","标识":"IC707","M标识":"IC707","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h33m44.6s","赤经D(J2000)":"11.56238888888889","赤纬(J2000)":"+21h22m48s","赤纬D(J2000)":"21.38","可见光星等V":"13.8","摄影(蓝光)星等B":"14.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"18","详细描述":"pretty faint, pretty small, brighter middle","简略描述":"pF, pS, bM"},{"ID":"8548","标识":"IC708","M标识":"IC708","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"蝴蝶犬星系","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h33m59.1s","赤经D(J2000)":"11.566416666666667","赤纬(J2000)":"+49h3m44s","赤纬D(J2000)":"49.06222222222222","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"174","详细描述":"extremely faint, suspected, 3 arcmin north-northeast of 6th-magnitude star","简略描述":"eF, S, R, 1st of 4"},{"ID":"8549","标识":"IC709","M标识":"IC709","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h34m14.5s","赤经D(J2000)":"11.570694444444444","赤纬(J2000)":"+49h2m37s","赤纬D(J2000)":"49.04361111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"most extremely faint, small, round, 2nd of 4","简略描述":"eeF, S, R, 2nd of 4"},{"ID":"8550","标识":"IC710","M标识":"IC710","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h34m27.3s","赤经D(J2000)":"11.57425","赤纬(J2000)":"+25h52m34s","赤纬D(J2000)":"25.87611111111111","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"0","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"8551","标识":"IC711","M标识":"IC711","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h34m46.5s","赤经D(J2000)":"11.579583333333334","赤纬(J2000)":"+48h57m22s","赤纬D(J2000)":"48.95611111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"eeF, pS, R, F, * close sp"},{"ID":"8552","标识":"IC712","M标识":"IC712","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h34m49.1s","赤经D(J2000)":"11.580305555555555","赤纬(J2000)":"+49h4m40s","赤纬D(J2000)":"49.07777777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"98","详细描述":"extremely faint, small, round, pretty bright, star to northeast","简略描述":"eF, S, R, pB, * nf"},{"ID":"8553","标识":"IC713","M标识":"IC713","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h34m44.1s","赤经D(J2000)":"11.578916666666666","赤纬(J2000)":"+16h50m46s","赤纬D(J2000)":"16.84611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, suspected, 3 arcmin north-northeast of 6th-magnitude star","简略描述":"eF, susp, 3' nnf from * 6"},{"ID":"8554","标识":"IC714","M标识":"IC714","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h36m30.2s","赤经D(J2000)":"11.60838888888889","赤纬(J2000)":"-9h50m50s","赤纬D(J2000)":"-9.847222222222223","可见光星等V":"11.8","摄影(蓝光)星等B":"12.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"very faint, pretty small, a little extended 170°, gradually brighter middle and nucleus","简略描述":"vF, pS, lE 170°, gbMN"},{"ID":"8555","标识":"IC715","M标识":"IC715","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h36m54.3s","赤经D(J2000)":"11.615083333333333","赤纬(J2000)":"-8h22m32s","赤纬D(J2000)":"-8.375555555555556","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"160","详细描述":"faint, pretty small, round","简略描述":"F, pS, R"},{"ID":"8556","标识":"IC716","M标识":"IC716","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h39m3.3s","赤经D(J2000)":"11.650916666666667","赤纬(J2000)":"-0h12m20s","赤纬D(J2000)":"-0.20555555555555557","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"132","详细描述":"very faint, small, a little brighter middle","简略描述":"vF, S, lbM"},{"ID":"8557","标识":"IC717","M标识":"IC717","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Scd","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h38m50.8s","赤经D(J2000)":"11.647444444444444","赤纬(J2000)":"-10h35m3s","赤纬D(J2000)":"-10.584166666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.9","短轴(分)":"1","方位角":"85","详细描述":"extremely faint, pretty small, extended east-west, diffuse","简略描述":"eF, pS, E pf, dif"},{"ID":"8558","标识":"IC718","M标识":"IC718","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h39m52.7s","赤经D(J2000)":"11.66463888888889","赤纬(J2000)":"+8h52m28s","赤纬D(J2000)":"8.874444444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"4","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"8559","标识":"IC719","M标识":"IC719","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h40m18.5s","赤经D(J2000)":"11.671805555555554","赤纬(J2000)":"+9h0m35s","赤纬D(J2000)":"9.009722222222223","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"52","详细描述":"faint, pretty large, a little extended 45°, brighter middle","简略描述":"F, pL, lE 45°, bM"},{"ID":"8560","标识":"IC720","M标识":"IC720","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h42m22.3s","赤经D(J2000)":"11.706194444444444","赤纬(J2000)":"+8h46m2s","赤纬D(J2000)":"8.767222222222223","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"0","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"8561","标识":"IC721","M标识":"IC721","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h42m28.8s","赤经D(J2000)":"11.707999999999998","赤纬(J2000)":"-8h20m25s","赤纬D(J2000)":"-8.340277777777779","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"115","详细描述":"pretty faint, pretty large, extended east-west","简略描述":"pF, pL, E pf"},{"ID":"8562","标识":"IC722","M标识":"IC722","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h42m43.7s","赤经D(J2000)":"11.712138888888887","赤纬(J2000)":"+8h58m28s","赤纬D(J2000)":"8.974444444444444","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"66","详细描述":"extremely faint, very small, 10th-magnitude star 2 arcmin to northeast","简略描述":"eF, vS, * 10 nf 2'"},{"ID":"8563","标识":"IC723","M标识":"IC723","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h42m57.5s","赤经D(J2000)":"11.715972222222222","赤纬(J2000)":"-8h19m55s","赤纬D(J2000)":"-8.331944444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"14.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"3","详细描述":"pretty bright, small, nucleus = 12.5 magnitude star, mottled but not resolved","简略描述":"pB, S, N = 12.5, r"},{"ID":"8564","标识":"IC724","M标识":"IC724","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h43m34.6s","赤经D(J2000)":"11.726277777777778","赤纬(J2000)":"+8h56m33s","赤纬D(J2000)":"8.9425","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.3","短轴(分)":"0.9","方位角":"60","详细描述":"faint, a little extended 45°, small, brighter middle","简略描述":"F, lE 45°, S, bM"},{"ID":"8565","标识":"IC725","M标识":"IC725","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h43m29.4s","赤经D(J2000)":"11.724833333333333","赤纬(J2000)":"-1h40m6s","赤纬D(J2000)":"-1.6683333333333332","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, very small, a little extended north-south, 11th magnitude star 1 arcmin north","简略描述":"F, vS, lE ns, * 11 n 1'"},{"ID":"8566","标识":"IC726","M标识":"IC726","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h43m45.5s","赤经D(J2000)":"11.729305555555555","赤纬(J2000)":"+33h23m34s","赤纬D(J2000)":"33.39277777777778","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"","详细描述":"very faint, pretty large, round","简略描述":"vF, pL, R"},{"ID":"8567","标识":"IC727","M标识":"IC727","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h44m28.7s","赤经D(J2000)":"11.741305555555554","赤纬(J2000)":"+10h47m0s","赤纬D(J2000)":"10.783333333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.2","方位角":"161","详细描述":"very faint, extremely small, round, (NGC) 3839 to west","简略描述":"vF, eS, R, 3839 p"},{"ID":"8568","标识":"IC728","M标识":"IC728","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h44m50.5s","赤经D(J2000)":"11.747361111111111","赤纬(J2000)":"-1h36m5s","赤纬D(J2000)":"-1.601388888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"65","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"8569","标识":"IC729","M标识":"IC729","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h45m18.3s","赤经D(J2000)":"11.755083333333333","赤纬(J2000)":"+33h20m9s","赤纬D(J2000)":"33.33583333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"2","详细描述":"faint, pretty small, round","简略描述":"F, pS, R"},{"ID":"8570","标识":"IC730","M标识":"IC730","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h45m35.2s","赤经D(J2000)":"11.759777777777778","赤纬(J2000)":"+3h13m56s","赤纬D(J2000)":"3.2322222222222226","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"36","详细描述":"faint, very small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, vS, R, gbM, R"},{"ID":"8571","标识":"IC731","M标识":"IC731","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h45m18.1s","赤经D(J2000)":"11.755027777777778","赤纬(J2000)":"+49h34m13s","赤纬D(J2000)":"49.57027777777778","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"80","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"8572","标识":"IC732","M标识":"IC732","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h45m59.7s","赤经D(J2000)":"11.766583333333333","赤纬(J2000)":"+20h26m20s","赤纬D(J2000)":"20.43888888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"140","详细描述":"very faint, very diffuse","简略描述":"vF, v dif"},{"ID":"8573","标识":"IC733","M标识":"IC733","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h45m58.8s","赤经D(J2000)":"11.766333333333334","赤纬(J2000)":"-8h9m21s","赤纬D(J2000)":"-8.155833333333334","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"88","详细描述":"faint, very small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, vS, R, gbM, r"},{"ID":"8574","标识":"IC734","M标识":"IC734","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h46m3.8s","赤经D(J2000)":"11.767722222222224","赤纬(J2000)":"-8h16m15s","赤纬D(J2000)":"-8.270833333333334","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.4","方位角":"0","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"8575","标识":"IC735","M标识":"IC735","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h48m12.8s","赤经D(J2000)":"11.803555555555556","赤纬(J2000)":"+13h12m32s","赤纬D(J2000)":"13.208888888888888","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"103","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"8576","标识":"IC736","M标识":"IC736","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h48m20s","赤经D(J2000)":"11.805555555555557","赤纬(J2000)":"+12h43m2s","赤纬D(J2000)":"12.717222222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, extremely small, round","简略描述":"vF, eS, R"},{"ID":"8577","标识":"IC737","M标识":"IC737","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h48m27.5s","赤经D(J2000)":"11.80763888888889","赤纬(J2000)":"+12h43m38s","赤纬D(J2000)":"12.727222222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"100","详细描述":"very faint, extremely small, round, nucleus equivalent to 14th magnitude star","简略描述":"vF, eS, R, N = 14"},{"ID":"8578","标识":"IC738","M标识":"IC738","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h48m54.7s","赤经D(J2000)":"11.815194444444446","赤纬(J2000)":"-4h40m55s","赤纬D(J2000)":"-4.6819444444444445","可见光星等V":"14","摄影(蓝光)星等B":"14.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"100","详细描述":"","简略描述":"F, S, R, N = 14 m"},{"ID":"8579","标识":"IC739","M标识":"IC739","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h51m31.3s","赤经D(J2000)":"11.858694444444444","赤纬(J2000)":"+23h51m46s","赤纬D(J2000)":"23.86277777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"150","详细描述":"very faint, small, round, 10.5 magnitude star to east","简略描述":"vF, S, R, * 10.5 f"},{"ID":"8580","标识":"IC740","M标识":"IC740","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h50m38.4s","赤经D(J2000)":"11.844000000000001","赤纬(J2000)":"+55h21m14s","赤纬D(J2000)":"55.35388888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"2.6","短轴(分)":"2.6","方位角":"","详细描述":"most extremely faint, pretty large, irregularly round, II 787 to south","简略描述":"eeF, pL, iR, II. 787 s"},{"ID":"8581","标识":"IC741","M标识":"IC741","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h50m31.8s","赤经D(J2000)":"11.842166666666667","赤纬(J2000)":"-4h50m11s","赤纬D(J2000)":"-4.836388888888888","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"135","详细描述":"","简略描述":"pB, S, R, sbMN = 12m"},{"ID":"8582","标识":"IC742","M标识":"IC742","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h51m2.2s","赤经D(J2000)":"11.85061111111111","赤纬(J2000)":"+20h47m59s","赤纬D(J2000)":"20.799722222222226","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"","详细描述":"","简略描述":"eeF, pS, R, pB * sp"},{"ID":"8583","标识":"IC743","M标识":"IC743","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h53m22.3s","赤经D(J2000)":"11.889527777777777","赤纬(J2000)":"-13h15m53s","赤纬D(J2000)":"-13.264722222222222","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"147","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"8584","标识":"IC744","M标识":"IC744","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h54m4.7s","赤经D(J2000)":"11.901305555555556","赤纬(J2000)":"+23h11m34s","赤纬D(J2000)":"23.192777777777778","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.3","方位角":"81","详细描述":"extremely faint, very small, very difficult","简略描述":"eF, vS, v diffic"},{"ID":"8585","标识":"IC745","M标识":"IC745","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h54m12.2s","赤经D(J2000)":"11.90338888888889","赤纬(J2000)":"+0h8m13s","赤纬D(J2000)":"0.13694444444444445","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, very small, stellar, nucleus equivalent to 14th magnitude star","简略描述":"F, vS, stellar, N = 14"},{"ID":"8586","标识":"IC746","M标识":"IC746","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h55m35.1s","赤经D(J2000)":"11.926416666666666","赤纬(J2000)":"+25h53m20s","赤纬D(J2000)":"25.88888888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"169","详细描述":"faint, pretty small, round","简略描述":"F, pS, R"},{"ID":"8587","标识":"IC747","M标识":"IC747","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h57m4.8s","赤经D(J2000)":"11.951333333333332","赤纬(J2000)":"-8h17m30s","赤纬D(J2000)":"-8.291666666666666","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"45","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stellar"},{"ID":"8588","标识":"IC748","M标识":"IC748","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h57m26.6s","赤经D(J2000)":"11.957388888888888","赤纬(J2000)":"+7h27m41s","赤纬D(J2000)":"7.461388888888889","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"81","详细描述":"","简略描述":"F, vS, R, sbMN = 13"},{"ID":"8589","标识":"IC749","M标识":"IC749","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h58m33.9s","赤经D(J2000)":"11.976083333333333","赤纬(J2000)":"+42h44m0s","赤纬D(J2000)":"42.733333333333334","可见光星等V":"12.4","摄影(蓝光)星等B":"12.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.3","短轴(分)":"2","方位角":"150","详细描述":"pretty bright, large, round, a little brighter middle","简略描述":"pB, L, R, lbM"},{"ID":"8590","标识":"IC750","M标识":"IC750","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h58m52s","赤经D(J2000)":"11.981111111111112","赤纬(J2000)":"+42h43m22s","赤纬D(J2000)":"42.72277777777778","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.6","短轴(分)":"1.2","方位角":"43","详细描述":"","简略描述":"pB, L, lE 35°, bM"},{"ID":"8591","标识":"IC751","M标识":"IC751","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h58m52.4s","赤经D(J2000)":"11.981222222222222","赤纬(J2000)":"+42h34m12s","赤纬D(J2000)":"42.57","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"30","详细描述":"pretty faint, pretty large, a little extended 45°, much brighter middle","简略描述":"pF, pL, lE 45°, mbM"},{"ID":"8592","标识":"IC752","M标识":"IC752","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h59m15s","赤经D(J2000)":"11.987499999999999","赤纬(J2000)":"+42h34m1s","赤纬D(J2000)":"42.566944444444445","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"vF, S, iR, * 13 nf 1?'"},{"ID":"8593","标识":"IC753","M标识":"IC753","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h59m12.8s","赤经D(J2000)":"11.986888888888888","赤纬(J2000)":"-0h31m25s","赤纬D(J2000)":"-0.5236111111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"11.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"30","详细描述":"pretty bright, very small, round, very much brighter middle, 11th magnitude star to northeast","简略描述":"pB, vS, R, vmbM, * 11 nf"},{"ID":"8594","标识":"IC754","M标识":"IC754","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h59m23.5s","赤经D(J2000)":"11.98986111111111","赤纬(J2000)":"-1h39m16s","赤纬D(J2000)":"-1.6544444444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"19","详细描述":"faint, small, round, suddenly brighter middle","简略描述":"F, S, R, sbM"},{"ID":"8595","标识":"IC755","M标识":"IC755","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h1m10.5s","赤经D(J2000)":"12.019583333333333","赤纬(J2000)":"+14h6m15s","赤纬D(J2000)":"14.104166666666666","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.4","短轴(分)":"0.3","方位角":"145","详细描述":"most extremely faint, small, extended, between two stars","简略描述":"eeF, S, E, bet 2 st"},{"ID":"8596","标识":"IC756","M标识":"IC756","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h2m57.8s","赤经D(J2000)":"12.049388888888888","赤纬(J2000)":"+4h50m42s","赤纬D(J2000)":"4.845","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"102","详细描述":"very faint, pretty large","简略描述":"vF, pL"},{"ID":"8597","标识":"IC757","M标识":"IC757","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Im","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h4m2.3s","赤经D(J2000)":"12.067305555555555","赤纬(J2000)":"+52h35m26s","赤纬D(J2000)":"52.59055555555556","可见光星等V":"12.4","摄影(蓝光)星等B":"13","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.5","短轴(分)":"1.6","方位角":"30","详细描述":"","简略描述":"Susp., close to * 12"},{"ID":"8598","标识":"IC758","M标识":"IC758","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h4m11.9s","赤经D(J2000)":"12.069972222222223","赤纬(J2000)":"+62h30m20s","赤纬D(J2000)":"62.50555555555555","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.9","短轴(分)":"1.6","方位角":"9","详细描述":"","简略描述":"eeF, pS, R, bet 2 distant st"},{"ID":"8599","标识":"IC759","M标识":"IC759","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h5m9.3s","赤经D(J2000)":"12.085916666666668","赤纬(J2000)":"+20h15m36s","赤纬D(J2000)":"20.26","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, extended east-west","简略描述":"pB, pL, E pf"},{"ID":"8600","标识":"IC760","M标识":"IC760","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h5m53.5s","赤经D(J2000)":"12.098194444444445","赤纬(J2000)":"-29h17m34s","赤纬D(J2000)":"-29.29277777777778","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"148","详细描述":"extremely faint, very small, partially resolved (some stars seen), brighter middle and nucleus","简略描述":"eF, vS, rr, bMN"},{"ID":"8601","标识":"IC761","M标识":"IC761","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h5m53.6s","赤经D(J2000)":"12.098222222222223","赤纬(J2000)":"-12h40m22s","赤纬D(J2000)":"-12.672777777777776","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"102","详细描述":"","简略描述":"Neb * 14m"},{"ID":"8602","标识":"IC762","M标识":"IC762","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h8m11.9s","赤经D(J2000)":"12.13663888888889","赤纬(J2000)":"+25h45m23s","赤纬D(J2000)":"25.75638888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"144","详细描述":"","简略描述":"pB, S, R, N = 12m"},{"ID":"8603","标识":"IC763","M标识":"IC763","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h8m15.2s","赤经D(J2000)":"12.137555555555554","赤纬(J2000)":"+25h48m43s","赤纬D(J2000)":"25.811944444444446","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"85","详细描述":"faint, very small, nucleus equal to 13th magnitude","简略描述":"F, vS, N = 13m"},{"ID":"8604","标识":"IC764","M标识":"IC764","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h10m14s","赤经D(J2000)":"12.170555555555556","赤纬(J2000)":"-29h44m13s","赤纬D(J2000)":"-29.736944444444447","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"4.8","短轴(分)":"1.4","方位角":"177","详细描述":"extremely faint, pretty large, extended north-south, a little brighter middle","简略描述":"eF, pL, E ns, lbM"},{"ID":"8605","标识":"IC765","M标识":"IC765","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h10m32.8s","赤经D(J2000)":"12.175777777777776","赤纬(J2000)":"+16h7m58s","赤纬D(J2000)":"16.13277777777778","可见光星等V":"99","摄影(蓝光)星等B":"14.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, susp 6' n of II. 83"},{"ID":"8606","标识":"IC766","M标识":"IC766","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h10m53.6s","赤经D(J2000)":"12.181555555555555","赤纬(J2000)":"-12h39m17s","赤纬D(J2000)":"-12.654722222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"165","详细描述":"","简略描述":"pB, E ns, sbMN = 14m"},{"ID":"8607","标识":"IC767","M标识":"IC767","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h11m2.8s","赤经D(J2000)":"12.184111111111111","赤纬(J2000)":"+12h6m15s","赤纬D(J2000)":"12.104166666666666","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"72","详细描述":"faint, very small, stellar, nucleus = 14th magnitude","简略描述":"F, vS, stell, N = 14m"},{"ID":"8608","标识":"IC768","M标识":"IC768","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h11m47.5s","赤经D(J2000)":"12.196527777777778","赤纬(J2000)":"+12h8m35s","赤纬D(J2000)":"12.143055555555556","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"115","详细描述":"very faint, pretty small, round, gradually brighter middle","简略描述":"vF, pS, R, gbM"},{"ID":"8609","标识":"IC769","M标识":"IC769","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m32.2s","赤经D(J2000)":"12.208944444444445","赤纬(J2000)":"+12h7m24s","赤纬D(J2000)":"12.123333333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.5","短轴(分)":"1.7","方位角":"43","详细描述":"very faint, pretty small, very little brighter middle","简略描述":"vF, pS, vlbM"},{"ID":"8610","标识":"IC770","M标识":"IC770","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h13m2.3s","赤经D(J2000)":"12.217305555555555","赤纬(J2000)":"-4h33m10s","赤纬D(J2000)":"-4.552777777777778","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"","简略描述":"vF, vS, R, * 13.5 n 1'"},{"ID":"8611","标识":"IC771","M标识":"IC771","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h15m13.1s","赤经D(J2000)":"12.253638888888888","赤纬(J2000)":"+13h11m4s","赤纬D(J2000)":"13.184444444444445","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"","详细描述":"","简略描述":"vF, S, R, * 3' south"},{"ID":"8612","标识":"IC772","M标识":"IC772","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h15m15.8s","赤经D(J2000)":"12.254388888888888","赤纬(J2000)":"+23h57m32s","赤纬D(J2000)":"23.95888888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"100","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stell"},{"ID":"8613","标识":"IC773","M标识":"IC773","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m8s","赤经D(J2000)":"12.302222222222223","赤纬(J2000)":"+6h8m22s","赤纬D(J2000)":"6.139444444444445","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"0","详细描述":"faint, very small, diffuse, 2 very faint stars involved","简略描述":"F, vS, dif, 2 vF st inv"},{"ID":"8614","标识":"IC774","M标识":"IC774","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m51.2s","赤经D(J2000)":"12.314222222222224","赤纬(J2000)":"-6h45m57s","赤纬D(J2000)":"-6.765833333333333","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, very small, round, gradually brighter middle","简略描述":"F, vS, R, gbM"},{"ID":"8615","标识":"IC775","M标识":"IC775","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m53.5s","赤经D(J2000)":"12.314861111111112","赤纬(J2000)":"+12h54m47s","赤纬D(J2000)":"12.913055555555555","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"18","详细描述":"very faint, small, stellar nucleus","简略描述":"vF, S, stell N"},{"ID":"8616","标识":"IC776","M标识":"IC776","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m2.9s","赤经D(J2000)":"12.317472222222221","赤纬(J2000)":"+8h51m25s","赤纬D(J2000)":"8.856944444444444","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.8","短轴(分)":"0.8","方位角":"98","详细描述":"faint, pretty large, round","简略描述":"F, pL, R"},{"ID":"8617","标识":"IC777","M标识":"IC777","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h19m23.6s","赤经D(J2000)":"12.323222222222222","赤纬(J2000)":"+28h18m34s","赤纬D(J2000)":"28.309444444444445","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"149","详细描述":"very faint","简略描述":"vF"},{"ID":"8618","标识":"IC778","M标识":"IC778","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h14m21.8s","赤经D(J2000)":"12.239388888888888","赤纬(J2000)":"+56h0m42s","赤纬D(J2000)":"56.01166666666666","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.6","方位角":"130","详细描述":"extremely faint, pretty small, mottled but not resolved, between 2 stars","简略描述":"eF, pS, r, bet 2 st"},{"ID":"8619","标识":"IC779","M标识":"IC779","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h19m38.7s","赤经D(J2000)":"12.327416666666666","赤纬(J2000)":"+29h52m58s","赤纬D(J2000)":"29.88277777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"faint","简略描述":"F"},{"ID":"8620","标识":"IC780","M标识":"IC780","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h19m58.4s","赤经D(J2000)":"12.332888888888888","赤纬(J2000)":"+25h46m19s","赤纬D(J2000)":"25.771944444444443","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"7","详细描述":"","简略描述":"pB, S, R, N = 12.5 m"},{"ID":"8621","标识":"IC781","M标识":"IC781","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m3.4s","赤经D(J2000)":"12.334277777777778","赤纬(J2000)":"+14h57m41s","赤纬D(J2000)":"14.961388888888887","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"45","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"8622","标识":"IC782","M标识":"IC782","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h21m36.9s","赤经D(J2000)":"12.360249999999999","赤纬(J2000)":"+5h45m59s","赤纬D(J2000)":"5.766388888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"60","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"8623","标识":"IC783","M标识":"IC783","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m38.8s","赤经D(J2000)":"12.360777777777777","赤纬(J2000)":"+15h44m41s","赤纬D(J2000)":"15.74472222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"141","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"8624","标识":"IC784","M标识":"IC784","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m30s","赤经D(J2000)":"12.375","赤纬(J2000)":"-4h39m10s","赤纬D(J2000)":"-4.652777777777779","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"0.7","方位角":"109","详细描述":"","简略描述":"vF, pL, mE, pB * s"},{"ID":"8625","标识":"IC785","M标识":"IC785","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h23m2s","赤经D(J2000)":"12.383888888888889","赤纬(J2000)":"-13h13m23s","赤纬D(J2000)":"-13.223055555555556","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"61","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"8626","标识":"IC786","M标识":"IC786","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h23m10.9s","赤经D(J2000)":"12.38636111111111","赤纬(J2000)":"-13h12m15s","赤纬D(J2000)":"-13.204166666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.9","方位角":"174","详细描述":"very faint, extremely small, round, stellar","简略描述":"vF, eS, R, stell"},{"ID":"8627","标识":"IC787","M标识":"IC787","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m25.2s","赤经D(J2000)":"12.423666666666666","赤纬(J2000)":"+16h7m25s","赤纬D(J2000)":"16.12361111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"0","详细描述":"","简略描述":"eF, pS, R, B * n, II. 88 f"},{"ID":"8628","标识":"IC788","M标识":"IC788","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m7.1s","赤经D(J2000)":"12.435305555555555","赤纬(J2000)":"+16h10m52s","赤纬D(J2000)":"16.18111111111111","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"20","详细描述":"","简略描述":"pB, pL, R, II. 88 south"},{"ID":"8629","标识":"IC789","M标识":"IC789","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m20.5s","赤经D(J2000)":"12.439027777777778","赤纬(J2000)":"+7h27m37s","赤纬D(J2000)":"7.460277777777778","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.5","方位角":"131","详细描述":"faint, very small, round, nucleus = 14th magnitude, very faint star close","简略描述":"F, vS, R, N = 14m, vF * close"},{"ID":"8630","标识":"IC790","M标识":"IC790","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m35.4s","赤经D(J2000)":"12.443166666666666","赤纬(J2000)":"+9h2m9s","赤纬D(J2000)":"9.035833333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"93","详细描述":"","简略描述":"vF, vS, f h 1256"},{"ID":"8631","标识":"IC791","M标识":"IC791","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m59.4s","赤经D(J2000)":"12.449833333333334","赤纬(J2000)":"+22h38m24s","赤纬D(J2000)":"22.64","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"","简略描述":"BN = 12m"},{"ID":"8632","标识":"IC792","M标识":"IC792","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h27m8.8s","赤经D(J2000)":"12.452444444444444","赤纬(J2000)":"+16h19m30s","赤纬D(J2000)":"16.325","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"59","详细描述":"faint, small, gradually brighter middle","简略描述":"F, S, gbM"},{"ID":"8633","标识":"IC793","M标识":"IC793","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h28m16.1s","赤经D(J2000)":"12.47113888888889","赤纬(J2000)":"+9h26m12s","赤纬D(J2000)":"9.436666666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.6","短轴(分)":"0.5","方位角":"106","详细描述":"extremely faint, small, much extended, 3 others in field","简略描述":"eF, S, mE, 3 others in field"},{"ID":"8634","标识":"IC794","M标识":"IC794","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h28m8.5s","赤经D(J2000)":"12.469027777777779","赤纬(J2000)":"+12h5m38s","赤纬D(J2000)":"12.09388888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"14.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"1","方位角":"110","详细描述":"","简略描述":"F, S, E pF, bM"},{"ID":"8635","标识":"IC795","M标识":"IC795","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m31.3s","赤经D(J2000)":"12.475361111111111","赤纬(J2000)":"+23h18m19s","赤纬D(J2000)":"23.30527777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"165","详细描述":"pretty bright, small, stellar, 13th magnitude","简略描述":"pB, S, stellar, 13m"},{"ID":"8636","标识":"IC796","M标识":"IC796","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m26.3s","赤经D(J2000)":"12.490638888888888","赤纬(J2000)":"+16h24m17s","赤纬D(J2000)":"16.404722222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"145","详细描述":"faint, small, extended north-south, mottled but not resolved","简略描述":"F, S, E ns, r"},{"ID":"8637","标识":"IC797","M标识":"IC797","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m54.8s","赤经D(J2000)":"12.53188888888889","赤纬(J2000)":"+15h7m25s","赤纬D(J2000)":"15.123611111111112","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"108","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"8638","标识":"IC798","M标识":"IC798","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h32m33.3s","赤经D(J2000)":"12.542583333333333","赤纬(J2000)":"+15h24m57s","赤纬D(J2000)":"15.415833333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, extremely small, round","简略描述":"vF, eS, R"},{"ID":"8639","标识":"IC799","M标识":"IC799","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h33m49.9s","赤经D(J2000)":"12.563861111111112","赤纬(J2000)":"-7h22m29s","赤纬D(J2000)":"-7.374722222222222","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"104","详细描述":"","简略描述":"eF, eS, R, ? eF * att p"},{"ID":"8640","标识":"IC800","M标识":"IC800","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m56.7s","赤经D(J2000)":"12.565750000000001","赤纬(J2000)":"+15h21m16s","赤纬D(J2000)":"15.354444444444445","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"157","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"8641","标识":"IC801","M标识":"IC801","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h33m44.8s","赤经D(J2000)":"12.562444444444445","赤纬(J2000)":"+52h15m17s","赤纬D(J2000)":"52.25472222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"1","方位角":"55","详细描述":"most extremely faint, small, round, star close to north","简略描述":"eeF, S, R, * close n"},{"ID":"8642","标识":"IC802","M标识":"IC802","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h35m58.2s","赤经D(J2000)":"12.5995","赤纬(J2000)":"+74h18m3s","赤纬D(J2000)":"74.30083333333333","可见光星等V":"99","摄影(蓝光)星等B":"14.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, stellar","简略描述":"vF, S, stellar"},{"ID":"8643","标识":"IC803","M标识":"IC803","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m36.6s","赤经D(J2000)":"12.660166666666667","赤纬(J2000)":"+16h35m20s","赤纬D(J2000)":"16.58888888888889","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"131","详细描述":"extremely faint, small, very difficult","简略描述":"eF, S, v diffic"},{"ID":"8644","标识":"IC804","M标识":"IC804","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S R","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h41m15.8s","赤经D(J2000)":"12.687722222222222","赤纬(J2000)":"-5h0m33s","赤纬D(J2000)":"-5.009166666666666","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.6","方位角":"84","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"8645","标识":"IC805","M标识":"IC805","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m25.4s","赤经D(J2000)":"12.690388888888888","赤纬(J2000)":"+13h43m47s","赤纬D(J2000)":"13.729722222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.2","短轴(分)":"0.2","方位角":"126","详细描述":"","简略描述":"vF, pL, R, 2 st n & nf"},{"ID":"8646","标识":"IC806","M标识":"IC806","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h42m8.4s","赤经D(J2000)":"12.702333333333332","赤纬(J2000)":"-17h20m59s","赤纬D(J2000)":"-17.349722222222223","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"135","详细描述":"extremely faint, extremely small, round, 12th magnitude star close","简略描述":"eF, eS, R, * 12 close"},{"ID":"8647","标识":"IC807","M标识":"IC807","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h42m12.4s","赤经D(J2000)":"12.703444444444443","赤纬(J2000)":"-17h24m13s","赤纬D(J2000)":"-17.40361111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"pretty faint, very small, round, gradually brighter middle","简略描述":"pF, vS, R, gbM"},{"ID":"8648","标识":"IC808","M标识":"IC808","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m54.9s","赤经D(J2000)":"12.698583333333334","赤纬(J2000)":"+19h55m57s","赤纬D(J2000)":"19.9325","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"S nebs Cl"},{"ID":"8649","标识":"IC809","M标识":"IC809","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m8.7s","赤经D(J2000)":"12.702416666666666","赤纬(J2000)":"+11h45m15s","赤纬D(J2000)":"11.754166666666666","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"","简略描述":"eF, pS, R, M 59 s"},{"ID":"8650","标识":"IC810","M标识":"IC810","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m8.8s","赤经D(J2000)":"12.702444444444444","赤纬(J2000)":"+12h35m48s","赤纬D(J2000)":"12.596666666666668","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"166","详细描述":"extremely faint, pretty small, much extended","简略描述":"eF, pS, mE"},{"ID":"8651","标识":"IC811","M标识":"IC811","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h44m47s","赤经D(J2000)":"12.746388888888887","赤纬(J2000)":"-10h11m53s","赤纬D(J2000)":"-10.198055555555555","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"170","详细描述":"","简略描述":"Nebs * 13, sf II. 558"},{"ID":"8652","标识":"IC812","M标识":"IC812","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h44m50.9s","赤经D(J2000)":"12.747472222222221","赤纬(J2000)":"-4h26m4s","赤纬D(J2000)":"-4.434444444444445","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"120","详细描述":"pretty bright, small, round, nucleus equal to 13th magnitude","简略描述":"pB, S, R, N = 13m"},{"ID":"8653","标识":"IC813","M标识":"IC813","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m11.8s","赤经D(J2000)":"12.753277777777777","赤纬(J2000)":"+23h2m9s","赤纬D(J2000)":"23.035833333333336","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"36","详细描述":"faint, pretty small, irregularly round, brighter middle","简略描述":"F, pS, iR, bM"},{"ID":"8654","标识":"IC814","M标识":"IC814","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h45m34.1s","赤经D(J2000)":"12.759472222222222","赤纬(J2000)":"-8h5m30s","赤纬D(J2000)":"-8.091666666666667","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"175","详细描述":"pretty bright, very small, round, mottled but not resolved","简略描述":"pB, vS, R, r"},{"ID":"8655","标识":"IC815","M标识":"IC815","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h46m22.6s","赤经D(J2000)":"12.772944444444445","赤纬(J2000)":"+11h52m36s","赤纬D(J2000)":"11.876666666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, 14th magnitude star involved","简略描述":"F, vS, * 14 inv"},{"ID":"8656","标识":"IC816","M标识":"IC816","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h46m46.2s","赤经D(J2000)":"12.7795","赤纬(J2000)":"+9h51m4s","赤纬D(J2000)":"9.851111111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"35","详细描述":"most extremely faint, very small, round, double star to northeast, northwestern of 2","简略描述":"eeF, vS, R, D * nf, np of 2"},{"ID":"8657","标识":"IC817","M标识":"IC817","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h46m56.7s","赤经D(J2000)":"12.782416666666668","赤纬(J2000)":"+9h51m28s","赤纬D(J2000)":"9.857777777777777","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"most extremely faint, very small, round, southeastern of 2","简略描述":"eeF, vS, R, sf of 2"},{"ID":"8658","标识":"IC818","M标识":"IC818","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h46m44.4s","赤经D(J2000)":"12.779000000000002","赤纬(J2000)":"+29h44m7s","赤纬D(J2000)":"29.735277777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"48","详细描述":"","简略描述":"vS, R, bM, * 12 nf 2?'"},{"ID":"8659","标识":"IC819","M标识":"IC819","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h46m10.1s","赤经D(J2000)":"12.769472222222223","赤纬(J2000)":"+30h43m57s","赤纬D(J2000)":"30.732499999999998","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"0","详细描述":"","简略描述":"D neb, conn, vF, vS, sf one brighter"},{"ID":"8660","标识":"IC820","M标识":"IC820","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h46m11.2s","赤经D(J2000)":"12.76977777777778","赤纬(J2000)":"+30h43m21s","赤纬D(J2000)":"30.722499999999997","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2.2","短轴(分)":"0.8","方位角":"2","详细描述":"","简略描述":"D neb, conn, vF, vS, sf one brighter"},{"ID":"8661","标识":"IC821","M标识":"IC821","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h47m26.1s","赤经D(J2000)":"12.790583333333334","赤纬(J2000)":"+29h47m16s","赤纬D(J2000)":"29.78777777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"","简略描述":"R, pL, glbM, 2 st ssf"},{"ID":"8662","标识":"IC822","M标识":"IC822","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h47m45.5s","赤经D(J2000)":"12.795972222222222","赤纬(J2000)":"+30h4m40s","赤纬D(J2000)":"30.07777777777778","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, extremely small, brighter middle","简略描述":"F, eS, bM"},{"ID":"8663","标识":"IC823","M标识":"IC823","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h47m50.9s","赤经D(J2000)":"12.797472222222222","赤纬(J2000)":"+27h12m10s","赤纬D(J2000)":"27.202777777777776","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Susp, 2' s of II. 381"},{"ID":"8664","标识":"IC824","M标识":"IC824","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h49m41s","赤经D(J2000)":"12.828055555555554","赤纬(J2000)":"-4h34m49s","赤纬D(J2000)":"-4.580277777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"100","详细描述":"pretty bright, pretty large, extended east-west, binuclear","简略描述":"pB, pL, E pf, biN"},{"ID":"8665","标识":"IC825","M标识":"IC825","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h50m19.1s","赤经D(J2000)":"12.83863888888889","赤纬(J2000)":"-5h21m47s","赤纬D(J2000)":"-5.3630555555555555","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"85","详细描述":"most extremely faint, pretty small, round, nearly between 2 stars","简略描述":"eeF, pS, R, nearly bet 2 st"},{"ID":"8666","标识":"IC826","M标识":"IC826","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h51m19.9s","赤经D(J2000)":"12.855527777777777","赤纬(J2000)":"+31h3m33s","赤纬D(J2000)":"31.059166666666666","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, pretty small, round, gradually brighter middle","简略描述":"F, pS, R, gbM"},{"ID":"8667","标识":"IC827","M标识":"IC827","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h51m55s","赤经D(J2000)":"12.865277777777777","赤纬(J2000)":"+16h16m59s","赤纬D(J2000)":"16.283055555555556","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"104","详细描述":"very faint, small, extended east-west, diffuse","简略描述":"vF, S, E pf, dif"},{"ID":"8668","标识":"IC828","M标识":"IC828","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h52m15.6s","赤经D(J2000)":"12.871","赤纬(J2000)":"-8h7m58s","赤纬D(J2000)":"-8.132777777777779","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"140","详细描述":"","简略描述":"F, vS, R, N = 13.5 m"},{"ID":"8669","标识":"IC829","M标识":"IC829","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h52m27.3s","赤经D(J2000)":"12.87425","赤纬(J2000)":"-15h31m5s","赤纬D(J2000)":"-15.518055555555556","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"126","详细描述":"","简略描述":"Neb * 13m"},{"ID":"8670","标识":"IC830","M标识":"IC830","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h51m16.4s","赤经D(J2000)":"12.854555555555555","赤纬(J2000)":"+53h41m45s","赤纬D(J2000)":"53.69583333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"165","详细描述":"very faint, very small, a little extended, stellar","简略描述":"vF, vS, lE, stellar"},{"ID":"8671","标识":"IC831","M标识":"IC831","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h52m43.9s","赤经D(J2000)":"12.878861111111112","赤纬(J2000)":"+26h28m16s","赤纬D(J2000)":"26.47111111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"95","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"8672","标识":"IC832","M标识":"IC832","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h53m59s","赤经D(J2000)":"12.899722222222222","赤纬(J2000)":"+26h26m40s","赤纬D(J2000)":"26.444444444444446","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, brighter middle, double star to northeast","简略描述":"F, S, R, bM, D * nf"},{"ID":"8673","标识":"IC833","M标识":"IC833","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h56m38.2s","赤经D(J2000)":"12.943944444444444","赤纬(J2000)":"-6h44m0s","赤纬D(J2000)":"-6.733333333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"95","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"8674","标识":"IC834","M标识":"IC834","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h56m18.5s","赤经D(J2000)":"12.938472222222222","赤纬(J2000)":"+26h21m34s","赤纬D(J2000)":"26.359444444444446","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"95","详细描述":"pretty faint, pretty small, suddenly brighter middle","简略描述":"pF, pS, sbM"},{"ID":"8675","标识":"IC835","M标识":"IC835","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h56m52.4s","赤经D(J2000)":"12.947888888888889","赤纬(J2000)":"+26h29m13s","赤纬D(J2000)":"26.486944444444447","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"8676","标识":"IC836","M标识":"IC836","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"12h55m54.1s","赤经D(J2000)":"12.931694444444444","赤纬(J2000)":"+63h36m42s","赤纬D(J2000)":"63.611666666666665","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"0.2","方位角":"73","详细描述":"most extremely faint, very small, very difficult, between 2 stars","简略描述":"eeF, vS, v diffic, bet 2 st"},{"ID":"8677","标识":"IC837","M标识":"IC837","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h57m31.4s","赤经D(J2000)":"12.958722222222221","赤纬(J2000)":"+26h30m40s","赤纬D(J2000)":"26.511111111111113","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"5","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"8678","标识":"IC838","M标识":"IC838","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m13.9s","赤经D(J2000)":"12.970527777777779","赤纬(J2000)":"+26h25m34s","赤纬D(J2000)":"26.426111111111112","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"vF, 1?' nf 4849"},{"ID":"8679","标识":"IC839","M标识":"IC839","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m15s","赤经D(J2000)":"12.970833333333333","赤纬(J2000)":"+28h7m35s","赤纬D(J2000)":"28.12638888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"92","详细描述":"stellar, 13th magnitude","简略描述":"stellar, 13m"},{"ID":"8680","标识":"IC840","M标识":"IC840","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h58m42s","赤经D(J2000)":"12.978333333333333","赤纬(J2000)":"+10h37m0s","赤纬D(J2000)":"10.616666666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"30","详细描述":"faint, small, round, a little brighter middle, mottled but not resolved","简略描述":"F, S, R, lbM, r"},{"ID":"8681","标识":"IC841","M标识":"IC841","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m47.2s","赤经D(J2000)":"12.996444444444444","赤纬(J2000)":"+21h48m48s","赤纬D(J2000)":"21.813333333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"145","详细描述":"","简略描述":"vF (Astr & Astrophys, No. 103)"},{"ID":"8682","标识":"IC842","M标识":"IC842","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m39.6s","赤经D(J2000)":"13.011","赤纬(J2000)":"+29h1m7s","赤纬D(J2000)":"29.01861111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"57","详细描述":"pretty faint","简略描述":"pF"},{"ID":"8683","标识":"IC843","M标识":"IC843","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m33.6s","赤经D(J2000)":"13.026000000000002","赤纬(J2000)":"+29h7m50s","赤纬D(J2000)":"29.130555555555556","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"131","详细描述":"faint, brighter middle and nucleus","简略描述":"F, bMN"},{"ID":"8684","标识":"IC844","M标识":"IC844","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h3m18.2s","赤经D(J2000)":"13.055055555555557","赤纬(J2000)":"-30h31m15s","赤纬D(J2000)":"-30.520833333333332","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"100","详细描述":"very faint, very small, a little brighter middle","简略描述":"vF, vS, lbM"},{"ID":"8685","标识":"IC845","M标识":"IC845","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h4m57.5s","赤经D(J2000)":"13.082638888888889","赤纬(J2000)":"+12h4m43s","赤纬D(J2000)":"12.07861111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"most extremely faint, small, round, faint star near to west","简略描述":"eeF, S, R, F * nr p"},{"ID":"8686","标识":"IC846","M标识":"IC846","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h5m21.1s","赤经D(J2000)":"13.089194444444445","赤纬(J2000)":"+23h5m44s","赤纬D(J2000)":"23.095555555555553","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"1.1","短轴(分)":"1","方位角":"","详细描述":"very faint, round, a little brighter middle, difficult","简略描述":"vF, R, lbM, diffic"},{"ID":"8687","标识":"IC847","M标识":"IC847","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h5m32.1s","赤经D(J2000)":"13.09225","赤纬(J2000)":"+53h41m8s","赤纬D(J2000)":"53.68555555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, small, round, between 2 stars","简略描述":"vF, S, R, bet 2 st"},{"ID":"8688","标识":"IC848","M标识":"IC848","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h7m1.5s","赤经D(J2000)":"13.117083333333333","赤纬(J2000)":"+16h0m24s","赤纬D(J2000)":"16.006666666666668","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"170","详细描述":"extremely faint, very small, difficult","简略描述":"eF, vS, diffic"},{"ID":"8689","标识":"IC849","M标识":"IC849","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h7m38.7s","赤经D(J2000)":"13.127416666666667","赤纬(J2000)":"-0h56m33s","赤纬D(J2000)":"-0.9425","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"140","详细描述":"faint, pretty large, round, gradually brighter middle","简略描述":"F, pL, R, gbM"},{"ID":"8690","标识":"IC850","M标识":"IC850","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h7m50.2s","赤经D(J2000)":"13.130611111111111","赤纬(J2000)":"-0h52m5s","赤纬D(J2000)":"-0.8680555555555556","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"67","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"8691","标识":"IC851","M标识":"IC851","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h8m34.2s","赤经D(J2000)":"13.142833333333332","赤纬(J2000)":"+21h3m0s","赤纬D(J2000)":"21.05","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.4","方位角":"150","详细描述":"","简略描述":"vF (Astr & Astrophys, No. 103)"},{"ID":"8692","标识":"IC852","M标识":"IC852","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h7m36.7s","赤经D(J2000)":"13.126861111111111","赤纬(J2000)":"+60h9m28s","赤纬D(J2000)":"60.157777777777774","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"20","详细描述":"very faint, pretty small, round, bright star to west","简略描述":"vF, pS, R, B * p"},{"ID":"8693","标识":"IC853","M标识":"IC853","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h8m41.6s","赤经D(J2000)":"13.144888888888888","赤纬(J2000)":"+52h46m28s","赤纬D(J2000)":"52.77444444444444","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"33","详细描述":"most extremely faint, pretty small, round","简略描述":"eeF, pS, R"},{"ID":"8694","标识":"IC854","M标识":"IC854","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc R","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h9m49.9s","赤经D(J2000)":"13.163861111111112","赤纬(J2000)":"+24h34m39s","赤纬D(J2000)":"24.5775","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"135","详细描述":"pretty faint, very small, round, very little brighter middle","简略描述":"pF, vS, R, vlbM"},{"ID":"8695","标识":"IC855","M标识":"IC855","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h10m36.9s","赤经D(J2000)":"13.176916666666665","赤纬(J2000)":"-4h29m7s","赤纬D(J2000)":"-4.485277777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"","详细描述":"","简略描述":"F, S, * 13.5 sp"},{"ID":"8696","标识":"IC856","M标识":"IC856","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h10m41.6s","赤经D(J2000)":"13.178222222222221","赤纬(J2000)":"+20h32m13s","赤纬D(J2000)":"20.536944444444448","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.2","方位角":"60","详细描述":"faint, extended, a little brighter middle","简略描述":"F, E, lbM"},{"ID":"8697","标识":"IC857","M标识":"IC857","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h13m50.1s","赤经D(J2000)":"13.230583333333334","赤纬(J2000)":"+17h4m33s","赤纬D(J2000)":"17.075833333333332","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"110","详细描述":"pretty faint, very small, round, gradually a very little brighter middle","简略描述":"pF, vS, R, gvlbM"},{"ID":"8698","标识":"IC858","M标识":"IC858","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h14m51.9s","赤经D(J2000)":"13.24775","赤纬(J2000)":"+17h13m38s","赤纬D(J2000)":"17.22722222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"100","详细描述":"","简略描述":"F, vS, R, stellar, N = 12m"},{"ID":"8699","标识":"IC859","M标识":"IC859","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h14m57.2s","赤经D(J2000)":"13.24922222222222","赤纬(J2000)":"+17h13m33s","赤纬D(J2000)":"17.22583333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"pretty faint, round, nucleus = 14th magnitude","简略描述":"pF, R, N = 14m"},{"ID":"8700","标识":"IC860","M标识":"IC860","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h15m3.5s","赤经D(J2000)":"13.250972222222222","赤纬(J2000)":"+24h37m6s","赤纬D(J2000)":"24.618333333333332","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"12","详细描述":"","简略描述":"F, vS, R, N = 12m"},{"ID":"8701","标识":"IC861","M标识":"IC861","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h15m7.5s","赤经D(J2000)":"13.252083333333333","赤纬(J2000)":"+34h19m42s","赤纬D(J2000)":"34.32833333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"80","详细描述":"faint, very small, round, suddenly brighter middle","简略描述":"F, vS, R, sbM"},{"ID":"8702","标识":"IC862","M标识":"IC862","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h16m15.4s","赤经D(J2000)":"13.270944444444446","赤纬(J2000)":"+20h2m51s","赤纬D(J2000)":"20.047500000000003","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"","简略描述":"pB, eS, R, N = 12m"},{"ID":"8703","标识":"IC863","M标识":"IC863","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h17m12.2s","赤经D(J2000)":"13.286722222222222","赤纬(J2000)":"-17h15m17s","赤纬D(J2000)":"-17.254722222222224","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"48","详细描述":"faint, small, irregular figure, binuclear","简略描述":"F, S, iF, biN"},{"ID":"8704","标识":"IC864","M标识":"IC864","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h17m8.4s","赤经D(J2000)":"13.285666666666666","赤纬(J2000)":"+20h41m33s","赤纬D(J2000)":"20.6925","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"20","详细描述":"very faint, pretty small, round, brighter middle and small nucleus","简略描述":"vF, pS, R, bMSN"},{"ID":"8705","标识":"IC865","M标识":"IC865","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h17m35.4s","赤经D(J2000)":"13.293166666666666","赤纬(J2000)":"-5h50m0s","赤纬D(J2000)":"-5.833333333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"50","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stellar"},{"ID":"8706","标识":"IC866","M标识":"IC866","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h17m16.7s","赤经D(J2000)":"13.287972222222223","赤纬(J2000)":"+20h41m29s","赤纬D(J2000)":"20.691388888888888","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"32","详细描述":"very faint, small, round, a little brighter middle","简略描述":"vF, S, R, lbM"},{"ID":"8707","标识":"IC867","M标识":"IC867","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h17m19.7s","赤经D(J2000)":"13.288805555555555","赤纬(J2000)":"+20h38m15s","赤纬D(J2000)":"20.6375","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.4","短轴(分)":"1","方位角":"30","详细描述":"very faint, round, a little brighter middle","简略描述":"vF, R, lbM"},{"ID":"8708","标识":"IC868","M标识":"IC868","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h17m28.5s","赤经D(J2000)":"13.29125","赤纬(J2000)":"+20h36m44s","赤纬D(J2000)":"20.612222222222222","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, round, a little brighter middle","简略描述":"vF, R, lbM"},{"ID":"8709","标识":"IC869","M标识":"IC869","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h17m29.9s","赤经D(J2000)":"13.291638888888889","赤纬(J2000)":"+20h41m4s","赤纬D(J2000)":"20.684444444444445","可见光星等V":"99","摄影(蓝光)星等B":"14.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, a little brighter middle","简略描述":"vF, S, R, lbM"},{"ID":"8710","标识":"IC870","M标识":"IC870","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h17m30.7s","赤经D(J2000)":"13.29186111111111","赤纬(J2000)":"+20h35m59s","赤纬D(J2000)":"20.599722222222223","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"45","详细描述":"very faint, small, round, a little brighter middle","简略描述":"vF, S, R, lbM"},{"ID":"8711","标识":"IC871","M标识":"IC871","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h17m58.6s","赤经D(J2000)":"13.29961111111111","赤纬(J2000)":"+4h24m15s","赤纬D(J2000)":"4.404166666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"70","详细描述":"pretty bright, pretty small, extended east-west, diffuse","简略描述":"pB, pS, E pf, dif"},{"ID":"8712","标识":"IC872","M标识":"IC872","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h18m18.6s","赤经D(J2000)":"13.305166666666667","赤纬(J2000)":"+6h20m10s","赤纬D(J2000)":"6.336111111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"150","详细描述":"most extremely faint, pretty small, round, a little brighter middle","简略描述":"eeF, pS, R, lbM"},{"ID":"8713","标识":"IC873","M标识":"IC873","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h18m16.2s","赤经D(J2000)":"13.3045","赤纬(J2000)":"+4h27m54s","赤纬D(J2000)":"4.465","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"","简略描述":"F, vS, R, bMN = 13.5m"},{"ID":"8714","标识":"IC874","M标识":"IC874","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h19m0.5s","赤经D(J2000)":"13.316805555555556","赤纬(J2000)":"-27h37m42s","赤纬D(J2000)":"-27.628333333333334","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"1","方位角":"17","详细描述":"very faint, small, round, diffuse","简略描述":"vF, S, R, dif"},{"ID":"8715","标识":"IC875","M标识":"IC875","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h17m7.5s","赤经D(J2000)":"13.285416666666666","赤纬(J2000)":"+57h32m24s","赤纬D(J2000)":"57.54","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"150","详细描述":"extremely faint, small, round, stellar","简略描述":"eF, S, R, stellar"},{"ID":"8716","标识":"IC876","M标识":"IC876","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h18m34.6s","赤经D(J2000)":"13.309611111111112","赤纬(J2000)":"+4h29m10s","赤纬D(J2000)":"4.486111111111112","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"9","详细描述":"faint, pretty large, diffuse","简略描述":"F, pL, dif"},{"ID":"8717","标识":"IC877","M标识":"IC877","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h19m0s","赤经D(J2000)":"13.316666666666666","赤纬(J2000)":"+6h5m0s","赤纬D(J2000)":"6.083333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eeF, pS, pB * f 13s"},{"ID":"8718","标识":"IC878","M标识":"IC878","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h19m0s","赤经D(J2000)":"13.316666666666666","赤纬(J2000)":"+6h7m18s","赤纬D(J2000)":"6.121666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, pretty large, very difficult","简略描述":"eeF, pL, v diffic"},{"ID":"8719","标识":"IC879","M标识":"IC879","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h19m40.3s","赤经D(J2000)":"13.32786111111111","赤纬(J2000)":"-27h25m45s","赤纬D(J2000)":"-27.429166666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"64","详细描述":"extremely faint, pretty large, irregularly round, diffuse","简略描述":"eF, pL, iR, dif"},{"ID":"8720","标识":"IC880","M标识":"IC880","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h19m7.7s","赤经D(J2000)":"13.318805555555555","赤纬(J2000)":"+6h6m6s","赤纬D(J2000)":"6.101666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eeF, pS, E ns, pB * s, 5th of 5"},{"ID":"8721","标识":"IC881","M标识":"IC881","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h19m56.3s","赤经D(J2000)":"13.332305555555555","赤纬(J2000)":"+15h51m1s","赤纬D(J2000)":"15.850277777777777","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"11","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stellar"},{"ID":"8722","标识":"IC882","M标识":"IC882","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h20m7s","赤经D(J2000)":"13.335277777777778","赤纬(J2000)":"+15h53m53s","赤纬D(J2000)":"15.898055555555555","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"60","详细描述":"pretty faint, very small, round, stellar","简略描述":"pF, vS, R, stellar"},{"ID":"8723","标识":"IC883","M标识":"IC883","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im\/P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h20m35.5s","赤经D(J2000)":"13.343194444444444","赤纬(J2000)":"+34h8m19s","赤纬D(J2000)":"34.13861111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"141","详细描述":"faint, pretty small, irregularly round, brighter middle","简略描述":"F, pS, iR, bM"},{"ID":"8724","标识":"IC884","M标识":"IC884","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h21m54.8s","赤经D(J2000)":"13.365222222222222","赤纬(J2000)":"-12h43m42s","赤纬D(J2000)":"-12.728333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"8725","标识":"IC885","M标识":"IC885","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h22m31s","赤经D(J2000)":"13.375277777777779","赤纬(J2000)":"+21h19m0s","赤纬D(J2000)":"21.316666666666666","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"8726","标识":"IC886","M标识":"IC886","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h23m57.4s","赤经D(J2000)":"13.399277777777778","赤纬(J2000)":"-4h23m41s","赤纬D(J2000)":"-4.394722222222223","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, brighter middle and nucleus, very difficult","简略描述":"vF, vS, bMN, v diffic"},{"ID":"8727","标识":"IC887","M标识":"IC887","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h24m12s","赤经D(J2000)":"13.403333333333334","赤纬(J2000)":"-12h27m38s","赤纬D(J2000)":"-12.460555555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, nearly between 2 stars","简略描述":"vF, vS, nearly bet 2 st"},{"ID":"8728","标识":"IC888","M标识":"IC888","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h24m51.4s","赤经D(J2000)":"13.414277777777778","赤纬(J2000)":"+13h44m17s","赤纬D(J2000)":"13.738055555555555","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"78","详细描述":"most extremely faint, pretty small, round","简略描述":"eeF, pS, R"},{"ID":"8729","标识":"IC889","M标识":"IC889","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h26m37.5s","赤经D(J2000)":"13.44375","赤纬(J2000)":"+11h52m12s","赤纬D(J2000)":"11.870000000000001","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, round, nucleus = 14th magnitude","简略描述":"F, vS, R, N = 14m"},{"ID":"8730","标识":"IC890","M标识":"IC890","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h28m25.4s","赤经D(J2000)":"13.473722222222221","赤纬(J2000)":"-16h5m31s","赤纬D(J2000)":"-16.091944444444444","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"140","详细描述":"very faint, suddenly brighter middle equivalent to 13.5 magnitude star, mottled but not resolved","简略描述":"vF, sbM * 13.5, r"},{"ID":"8731","标识":"IC891","M标识":"IC891","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h29m59.8s","赤经D(J2000)":"13.499944444444443","赤纬(J2000)":"+0h18m21s","赤纬D(J2000)":"0.30583333333333335","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, nucleus equal to 13th magnitude","简略描述":"F, S, R, N = 13m"},{"ID":"8732","标识":"IC892","M标识":"IC892","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h31m45.8s","赤经D(J2000)":"13.52938888888889","赤纬(J2000)":"-2h42m45s","赤纬D(J2000)":"-2.7125000000000004","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1","方位角":"15","详细描述":"pretty bright, irregular figure, brighter middle, mottled but not resolved","简略描述":"pB, iF, bM, r"},{"ID":"8733","标识":"IC893","M标识":"IC893","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h31m47.4s","赤经D(J2000)":"13.529833333333334","赤纬(J2000)":"-2h36m41s","赤纬D(J2000)":"-2.611388888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"52","详细描述":"faint, very small, diffuse","简略描述":"F, vS, dif"},{"ID":"8734","标识":"IC894","M标识":"IC894","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h32m4.7s","赤经D(J2000)":"13.534638888888889","赤纬(J2000)":"+17h2m58s","赤纬D(J2000)":"17.049444444444447","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"78","详细描述":"pretty faint, very small, round, a little brighter middle","简略描述":"pF, vS, R, lbM"},{"ID":"8735","标识":"IC895","M标识":"IC895","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h42m8.3s","赤经D(J2000)":"13.702305555555554","赤纬(J2000)":"+35h39m14s","赤纬D(J2000)":"35.653888888888886","可见光星等V":"11.6","摄影(蓝光)星等B":"12.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.8","短轴(分)":"2.5","方位角":"10","详细描述":"very faint, pretty large, round, suddenly brighter middle, double star?","简略描述":"vF, pLR, sbM, D ?"},{"ID":"8736","标识":"IC896","M标识":"IC896","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h34m10.1s","赤经D(J2000)":"13.569472222222222","赤纬(J2000)":"+4h52m8s","赤纬D(J2000)":"4.86888888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"35","详细描述":"very faint, very small, diffuse, a little brighter middle","简略描述":"vF, vS, dif, lbM"},{"ID":"8737","标识":"IC897","M标识":"IC897","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h34m19.3s","赤经D(J2000)":"13.572027777777777","赤纬(J2000)":"+17h50m53s","赤纬D(J2000)":"17.848055555555554","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"50","详细描述":"","简略描述":"vF, s of h 1634"},{"ID":"8738","标识":"IC898","M标识":"IC898","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h34m9.5s","赤经D(J2000)":"13.569305555555555","赤纬(J2000)":"+13h16m48s","赤纬D(J2000)":"13.280000000000001","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"170","详细描述":"very faint, very small, diffuse","简略描述":"vF, vS, dif"},{"ID":"8739","标识":"IC899","M标识":"IC899","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h34m59.4s","赤经D(J2000)":"13.583166666666667","赤纬(J2000)":"-8h5m28s","赤纬D(J2000)":"-8.091111111111111","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, very small, round, suddenly brighter middle and nucleus","简略描述":"F, vS, R, sbMN"},{"ID":"8740","标识":"IC900","M标识":"IC900","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h34m42.9s","赤经D(J2000)":"13.578583333333333","赤纬(J2000)":"+9h20m13s","赤纬D(J2000)":"9.336944444444445","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1","方位角":"27","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"8741","标识":"IC901","M标识":"IC901","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h35m42.5s","赤经D(J2000)":"13.59513888888889","赤纬(J2000)":"+13h19m49s","赤纬D(J2000)":"13.330277777777777","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"117","详细描述":"pretty faint, extremely small, round","简略描述":"pF, eS, R"},{"ID":"8742","标识":"IC902","M标识":"IC902","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h36m1.2s","赤经D(J2000)":"13.600333333333333","赤纬(J2000)":"+49h57m38s","赤纬D(J2000)":"49.96055555555556","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.2","短轴(分)":"0.4","方位角":"162","详细描述":"most extremely faint, small, much extended, very difficult","简略描述":"eeF, S, mE, v diffic"},{"ID":"8743","标识":"IC903","M标识":"IC903","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h38m26.1s","赤经D(J2000)":"13.640583333333334","赤纬(J2000)":"-0h13m39s","赤纬D(J2000)":"-0.2275","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.9","短轴(分)":"0.8","方位角":"178","详细描述":"","简略描述":"pB, lE ns, gbM N = 13m"},{"ID":"8744","标识":"IC904","M标识":"IC904","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h38m32.2s","赤经D(J2000)":"13.642277777777778","赤纬(J2000)":"+0h32m26s","赤纬D(J2000)":"0.5405555555555556","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"135","详细描述":"faint, very small, diffuse","简略描述":"F, vS, dif"},{"ID":"8745","标识":"IC905","M标识":"IC905","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h40m2.8s","赤经D(J2000)":"13.667444444444444","赤纬(J2000)":"+23h8m36s","赤纬D(J2000)":"23.143333333333334","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, very small, round, a little brighter middle, stellar","简略描述":"F, vS, R, lbM, stellar"},{"ID":"8746","标识":"IC906","M标识":"IC906","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h40m10s","赤经D(J2000)":"13.669444444444444","赤纬(J2000)":"+23h20m27s","赤纬D(J2000)":"23.340833333333332","可见光星等V":"15","摄影(蓝光)星等B":"15.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"150","详细描述":"extremely faint, small, brighter middle","简略描述":"eF, S, bM"},{"ID":"8747","标识":"IC907","M标识":"IC907","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h39m22.7s","赤经D(J2000)":"13.656305555555555","赤纬(J2000)":"+51h3m5s","赤纬D(J2000)":"51.05138888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.2","方位角":"20","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"8748","标识":"IC908","M标识":"IC908","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h41m19s","赤经D(J2000)":"13.688611111111111","赤纬(J2000)":"-4h20m40s","赤纬D(J2000)":"-4.344444444444444","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"60","详细描述":"extremely faint, pretty small, 13.5 magnitude star close","简略描述":"eF, pS, * 13.5 close"},{"ID":"8749","标识":"IC909","M标识":"IC909","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h40m51.2s","赤经D(J2000)":"13.680888888888889","赤纬(J2000)":"+24h28m23s","赤纬D(J2000)":"24.473055555555554","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"no description","简略描述":"No descr"},{"ID":"8750","标识":"IC910","M标识":"IC910","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h41m7.8s","赤经D(J2000)":"13.685500000000001","赤纬(J2000)":"+23h16m53s","赤纬D(J2000)":"23.281388888888888","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"80","详细描述":"faint, small, brighter middle, mottled but not resolved","简略描述":"F, S, bM, r"},{"ID":"8751","标识":"IC911","M标识":"IC911","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S M","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h41m25.3s","赤经D(J2000)":"13.69036111111111","赤纬(J2000)":"+23h14m53s","赤纬D(J2000)":"23.248055555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, extremely small, round, a little brighter middle","简略描述":"eF, eS, R, lbM"},{"ID":"8752","标识":"IC912","M标识":"IC912","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S M","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h41m29s","赤经D(J2000)":"13.69138888888889","赤纬(J2000)":"+23h14m43s","赤纬D(J2000)":"23.24527777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"90","详细描述":"extremely faint, extremely small, round, a little brighter middle","简略描述":"eF, eS, R, lbM"},{"ID":"8753","标识":"IC913","M标识":"IC913","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h41m29.7s","赤经D(J2000)":"13.691583333333334","赤纬(J2000)":"+23h10m1s","赤纬D(J2000)":"23.166944444444447","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"80","详细描述":"very faint, very small, round, diffuse","简略描述":"vF, vS, R, dif"},{"ID":"8754","标识":"IC914","M标识":"IC914","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h41m40.6s","赤经D(J2000)":"13.694611111111112","赤纬(J2000)":"+23h11m24s","赤纬D(J2000)":"23.19","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"","详细描述":"very faint, very small, round, diffuse","简略描述":"vF, vS, R, dif"},{"ID":"8755","标识":"IC915","M标识":"IC915","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h43m27.3s","赤经D(J2000)":"13.72425","赤纬(J2000)":"-17h19m56s","赤纬D(J2000)":"-17.33222222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, very small, difficult","简略描述":"eF, vS, diffic"},{"ID":"8756","标识":"IC916","M标识":"IC916","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h42m38.1s","赤经D(J2000)":"13.710583333333332","赤纬(J2000)":"+24h27m56s","赤纬D(J2000)":"24.465555555555554","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"nucleus equal to 13th magnitude","简略描述":"N = 13m"},{"ID":"8757","标识":"IC917","M标识":"IC917","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h42m31.5s","赤经D(J2000)":"13.708749999999998","赤纬(J2000)":"+55h38m12s","赤纬D(J2000)":"55.63666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"small","简略描述":"S"},{"ID":"8758","标识":"IC918","M标识":"IC918","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h42m38.8s","赤经D(J2000)":"13.710777777777777","赤纬(J2000)":"+55h37m11s","赤纬D(J2000)":"55.61972222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"8759","标识":"IC919","M标识":"IC919","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h42m56.5s","赤经D(J2000)":"13.715694444444443","赤纬(J2000)":"+55h36m12s","赤纬D(J2000)":"55.60333333333333","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"considerably bright, round, brighter middle","简略描述":"cB, R, bM"},{"ID":"8760","标识":"IC920","M标识":"IC920","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h45m24.7s","赤经D(J2000)":"13.75686111111111","赤纬(J2000)":"-12h34m27s","赤纬D(J2000)":"-12.574166666666667","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, very small, round, brighter middle and nucleus, mottled but not resolved","简略描述":"F, vS, R, bMN, r"},{"ID":"8761","标识":"IC921","M标识":"IC921","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h43m8.1s","赤经D(J2000)":"13.718916666666667","赤纬(J2000)":"+55h39m2s","赤纬D(J2000)":"55.650555555555556","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very small, round, brighter middle","简略描述":"vS, R, bM"},{"ID":"8762","标识":"IC922","M标识":"IC922","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h43m14.4s","赤经D(J2000)":"13.720666666666666","赤纬(J2000)":"+55h36m10s","赤纬D(J2000)":"55.60277777777778","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very small, round, brighter middle","简略描述":"vS, R, bM"},{"ID":"8763","标识":"IC923","M标识":"IC923","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h43m16.3s","赤经D(J2000)":"13.721194444444444","赤纬(J2000)":"+55h36m55s","赤纬D(J2000)":"55.61527777777778","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"105","详细描述":"very small","简略描述":"vS"},{"ID":"8764","标识":"IC924","M标识":"IC924","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h45m37.7s","赤经D(J2000)":"13.760472222222223","赤纬(J2000)":"-12h27m19s","赤纬D(J2000)":"-12.455277777777777","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"90","详细描述":"","简略描述":"F, S, dif, 86 Virg nf"},{"ID":"8765","标识":"IC925","M标识":"IC925","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h43m19.8s","赤经D(J2000)":"13.722166666666666","赤纬(J2000)":"+55h35m52s","赤纬D(J2000)":"55.59777777777778","可见光星等V":"16.5","摄影(蓝光)星等B":"17.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.1","短轴(分)":"0.1","方位角":"","详细描述":"very small","简略描述":"vS"},{"ID":"8766","标识":"IC926","M标识":"IC926","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h43m39.4s","赤经D(J2000)":"13.727611111111111","赤纬(J2000)":"+55h37m52s","赤纬D(J2000)":"55.63111111111111","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"100","详细描述":"very small, round, brighter middle","简略描述":"vS, R, bM"},{"ID":"8767","标识":"IC927","M标识":"IC927","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h45m52.3s","赤经D(J2000)":"13.764527777777777","赤纬(J2000)":"-12h27m50s","赤纬D(J2000)":"-12.463888888888889","可见光星等V":"15","摄影(蓝光)星等B":"15.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"85","详细描述":"","简略描述":"F, S, dif, 86 Virg nf"},{"ID":"8768","标识":"IC928","M标识":"IC928","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h43m45.2s","赤经D(J2000)":"13.729222222222223","赤纬(J2000)":"+55h38m1s","赤纬D(J2000)":"55.63361111111111","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, round, gradually brighter middle","简略描述":"F, vS, R, gbM"},{"ID":"8769","标识":"IC929","M标识":"IC929","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h43m45.8s","赤经D(J2000)":"13.72938888888889","赤纬(J2000)":"+55h38m46s","赤纬D(J2000)":"55.64611111111111","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very small, round, brighter middle","简略描述":"vS, R, bM"},{"ID":"8770","标识":"IC930","M标识":"IC930","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h43m52.5s","赤经D(J2000)":"13.73125","赤纬(J2000)":"+55h39m22s","赤纬D(J2000)":"55.65611111111111","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, round, gradually brighter middle","简略描述":"F, vS, R, gbM"},{"ID":"8771","标识":"IC931","M标识":"IC931","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h43m49.4s","赤经D(J2000)":"13.73038888888889","赤纬(J2000)":"+55h37m24s","赤纬D(J2000)":"55.623333333333335","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, round, gradually brighter middle","简略描述":"F, vS, R, gbM"},{"ID":"8772","标识":"IC932","M标识":"IC932","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h43m51.5s","赤经D(J2000)":"13.730972222222222","赤纬(J2000)":"+55h38m47s","赤纬D(J2000)":"55.646388888888886","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very small, round","简略描述":"vS, R"},{"ID":"8773","标识":"IC933","M标识":"IC933","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h45m16.2s","赤经D(J2000)":"13.7545","赤纬(J2000)":"+23h13m9s","赤纬D(J2000)":"23.219166666666666","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"155","详细描述":"very faint, very small, round, nucleus equal to 13th magnitude, stellar","简略描述":"vF, vS, R, N = 13m, stellar"},{"ID":"8774","标识":"IC934","M标识":"IC934","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h44m3.2s","赤经D(J2000)":"13.734222222222222","赤纬(J2000)":"+55h38m59s","赤纬D(J2000)":"55.64972222222222","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.1","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"90","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"8775","标识":"IC935","M标识":"IC935","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h44m5.4s","赤经D(J2000)":"13.734833333333333","赤纬(J2000)":"+55h36m55s","赤纬D(J2000)":"55.61527777777778","可见光星等V":"99","摄影(蓝光)星等B":"13.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, gradually brighter middle","简略描述":"F, vS, R, gbM"},{"ID":"8776","标识":"IC936","M标识":"IC936","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h44m3.2s","赤经D(J2000)":"13.734222222222222","赤纬(J2000)":"+55h38m59s","赤纬D(J2000)":"55.64972222222222","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.1","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"90","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"8777","标识":"IC937","M标识":"IC937","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h44m29.1s","赤经D(J2000)":"13.741416666666666","赤纬(J2000)":"+55h37m46s","赤纬D(J2000)":"55.629444444444445","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very small","简略描述":"vS"},{"ID":"8778","标识":"IC938","M标识":"IC938","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h44m31.4s","赤经D(J2000)":"13.742055555555554","赤纬(J2000)":"+55h37m37s","赤纬D(J2000)":"55.62694444444445","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"160","详细描述":"very small","简略描述":"vS"},{"ID":"8779","标识":"IC939","M标识":"IC939","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h47m43s","赤经D(J2000)":"13.795277777777777","赤纬(J2000)":"+3h24m43s","赤纬D(J2000)":"3.4119444444444444","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"pretty bright, very small, brighter middle","简略描述":"pB, vS, bM"},{"ID":"8780","标识":"IC940","M标识":"IC940","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h47m57.9s","赤经D(J2000)":"13.799416666666666","赤纬(J2000)":"+3h27m1s","赤纬D(J2000)":"3.450277777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"125","详细描述":"very faint, very small, diffuse","简略描述":"vF, vS, dif"},{"ID":"8781","标识":"IC941","M标识":"IC941","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h48m35.6s","赤经D(J2000)":"13.80988888888889","赤纬(J2000)":"+24h0m56s","赤纬D(J2000)":"24.015555555555554","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"120","详细描述":"faint, extremely small, gradually brighter middle, mottled but not resolved","简略描述":"F, eS, gbM, r"},{"ID":"8782","标识":"IC942","M标识":"IC942","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h47m41.1s","赤经D(J2000)":"13.79475","赤纬(J2000)":"+56h37m19s","赤纬D(J2000)":"56.621944444444445","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"8783","标识":"IC943","M标识":"IC943","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h50m32s","赤经D(J2000)":"13.842222222222222","赤纬(J2000)":"+3h11m39s","赤纬D(J2000)":"3.1941666666666664","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"pretty faint, irregular figure, a little brighter middle, faint star close","简略描述":"pF, iF, lbM, F * close"},{"ID":"8784","标识":"IC944","M标识":"IC944","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h51m30.8s","赤经D(J2000)":"13.858555555555554","赤纬(J2000)":"+14h5m30s","赤纬D(J2000)":"14.091666666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"108","详细描述":"very small, pretty small, much extended, 3 stars to east","简略描述":"vS, pS, mE, 3 st f"},{"ID":"8785","标识":"IC945","M标识":"IC945","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"13h47m7.5s","赤经D(J2000)":"13.785416666666666","赤纬(J2000)":"+72h4m12s","赤纬D(J2000)":"72.07","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"126","详细描述":"most extremely faint, small, round, 2 stars to northeast","简略描述":"eeF, S, R, 2 st nf"},{"ID":"8786","标识":"IC946","M标识":"IC946","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h52m8.2s","赤经D(J2000)":"13.868944444444445","赤纬(J2000)":"+14h6m59s","赤纬D(J2000)":"14.116388888888888","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"110","详细描述":"extremely faint, very small, round, star close to east","简略描述":"eF, vS, R, * close f"},{"ID":"8787","标识":"IC947","M标识":"IC947","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h52m35.8s","赤经D(J2000)":"13.876611111111112","赤纬(J2000)":"+0h49m5s","赤纬D(J2000)":"0.8180555555555555","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"1.1","方位角":"60","详细描述":"","简略描述":"pB, vS, R, sbMN = 12m"},{"ID":"8788","标识":"IC948","M标识":"IC948","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h52m26.6s","赤经D(J2000)":"13.874055555555556","赤纬(J2000)":"+14h5m28s","赤纬D(J2000)":"14.091111111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"152","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"8789","标识":"IC949","M标识":"IC949","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h52m16.7s","赤经D(J2000)":"13.871305555555557","赤纬(J2000)":"+22h31m19s","赤纬D(J2000)":"22.521944444444443","可见光星等V":"14.7","摄影(蓝光)星等B":"15.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"140","详细描述":"pretty faint","简略描述":"pF"},{"ID":"8790","标识":"IC950","M标识":"IC950","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h52m26.6s","赤经D(J2000)":"13.874055555555556","赤纬(J2000)":"+14h29m30s","赤纬D(J2000)":"14.491666666666665","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"45","详细描述":"faint, extremely small, round, a little brighter middle","简略描述":"F, eS, R, lbM"},{"ID":"8791","标识":"IC951","M标识":"IC951","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h51m47.2s","赤经D(J2000)":"13.863111111111111","赤纬(J2000)":"+50h58m40s","赤纬D(J2000)":"50.97777777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"","简略描述":"eeF, pS, R, 2 st nr sp"},{"ID":"8792","标识":"IC952","M标识":"IC952","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h53m41.9s","赤经D(J2000)":"13.894972222222222","赤纬(J2000)":"+3h22m39s","赤纬D(J2000)":"3.3775","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"93","详细描述":"faint, extended east-west, faint star involved","简略描述":"F, E pf, F * inv"},{"ID":"8793","标识":"IC953","M标识":"IC953","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h54m57s","赤经D(J2000)":"13.915833333333333","赤纬(J2000)":"-30h17m0s","赤纬D(J2000)":"-30.283333333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, gradually brighter middle","简略描述":"vF, eS, gbM"},{"ID":"8794","标识":"IC954","M标识":"IC954","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"13h49m56.3s","赤经D(J2000)":"13.832305555555555","赤纬(J2000)":"+71h9m53s","赤纬D(J2000)":"71.16472222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"91","详细描述":"most extremely faint, small, round, bright star to east","简略描述":"eeF, S, R, B * f"},{"ID":"8795","标识":"IC955","M标识":"IC955","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h55m43.6s","赤经D(J2000)":"13.928777777777777","赤纬(J2000)":"-30h15m43s","赤纬D(J2000)":"-30.261944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, gradually brighter middle","简略描述":"vF, vS, gbM"},{"ID":"8796","标识":"IC956","M标识":"IC956","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h54m40.2s","赤经D(J2000)":"13.911166666666666","赤纬(J2000)":"+20h43m11s","赤纬D(J2000)":"20.71972222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, very small, 14th magnitude star to north","简略描述":"eF, vS, * 14 n"},{"ID":"8797","标识":"IC957","M标识":"IC957","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h56m7.8s","赤经D(J2000)":"13.935500000000001","赤纬(J2000)":"-30h14m17s","赤纬D(J2000)":"-30.238055555555558","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, gradually brighter middle","简略描述":"vF, S, gbM"},{"ID":"8798","标识":"IC958","M标识":"IC958","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h55m38.4s","赤经D(J2000)":"13.927333333333333","赤纬(J2000)":"+4h59m0s","赤纬D(J2000)":"4.983333333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"70","详细描述":"most extremely faint, pretty small, irregularly round","简略描述":"eeF, pS, iR"},{"ID":"8799","标识":"IC959","M标识":"IC959","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h56m3.3s","赤经D(J2000)":"13.93425","赤纬(J2000)":"+13h30m23s","赤纬D(J2000)":"13.506388888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1","方位角":"3","详细描述":"most extremely faint, small, round","简略描述":"eeF, S, R"},{"ID":"8800","标识":"IC960","M标识":"IC960","拓展名":"A","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab\/P","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h55m59s","赤经D(J2000)":"13.933055555555555","赤纬(J2000)":"+17h29m58s","赤纬D(J2000)":"17.499444444444446","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"24","详细描述":"faint, pretty large, a little brighter middle, diffuse","简略描述":"F, pL, lbM, dif"},{"ID":"8801","标识":"IC961","M标识":"IC961","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h55m46.6s","赤经D(J2000)":"13.929611111111111","赤纬(J2000)":"+25h50m24s","赤纬D(J2000)":"25.84","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"8802","标识":"IC962","M标识":"IC962","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h57m13.2s","赤经D(J2000)":"13.953666666666665","赤纬(J2000)":"+12h1m17s","赤纬D(J2000)":"12.02138888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"pretty faint, very small, round, brighter middle","简略描述":"pF, vS, R, bM"},{"ID":"8803","标识":"IC963","M标识":"IC963","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h57m25s","赤经D(J2000)":"13.956944444444444","赤纬(J2000)":"+17h24m30s","赤纬D(J2000)":"17.40833333333333","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"170","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"8804","标识":"IC964","M标识":"IC964","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h57m41.2s","赤经D(J2000)":"13.961444444444444","赤纬(J2000)":"+17h30m33s","赤纬D(J2000)":"17.509166666666665","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"8805","标识":"IC965","M标识":"IC965","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h57m47.4s","赤经D(J2000)":"13.963166666666666","赤纬(J2000)":"+17h30m40s","赤纬D(J2000)":"17.511111111111113","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"50","详细描述":"very faint, very small, round, very small nucleus","简略描述":"vF, vS, R, vSN"},{"ID":"8806","标识":"IC966","M标识":"IC966","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h58m14s","赤经D(J2000)":"13.970555555555556","赤纬(J2000)":"+5h24m27s","赤纬D(J2000)":"5.407500000000001","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"162","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"8807","标识":"IC967","M标识":"IC967","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h58m22.9s","赤经D(J2000)":"13.973027777777778","赤纬(J2000)":"+14h27m27s","赤纬D(J2000)":"14.4575","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"21","详细描述":"pretty faint, very small, round, 14th magnitude star near","简略描述":"pF, vS, R, * 14 nr"},{"ID":"8808","标识":"IC968","M标识":"IC968","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h0m36.5s","赤经D(J2000)":"14.01013888888889","赤纬(J2000)":"-2h54m31s","赤纬D(J2000)":"-2.908611111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"123","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"8809","标识":"IC969","M标识":"IC969","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h1m46.1s","赤经D(J2000)":"14.029472222222223","赤纬(J2000)":"-4h10m47s","赤纬D(J2000)":"-4.179722222222223","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"175","详细描述":"very faint, very small, round, nucleus = 14th magnitude","简略描述":"vF, vS, R, N = 14m"},{"ID":"8810","标识":"IC970","M标识":"IC970","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h2m34.1s","赤经D(J2000)":"14.042805555555555","赤纬(J2000)":"+14h33m9s","赤纬D(J2000)":"14.5525","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.3","方位角":"53","详细描述":"pretty bright, very small, round","简略描述":"pB, vS, R"},{"ID":"8811","标识":"IC971","M标识":"IC971","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h3m52.7s","赤经D(J2000)":"14.06463888888889","赤纬(J2000)":"-10h8m23s","赤纬D(J2000)":"-10.139722222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.3","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.3","短轴(分)":"1.3","方位角":"126","详细描述":"no description","简略描述":"No description"},{"ID":"8812","标识":"IC972","M标识":"IC972","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h4m26s","赤经D(J2000)":"14.073888888888888","赤纬(J2000)":"-17h13m39s","赤纬D(J2000)":"-17.2275","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.9","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, mottled but not resolved","简略描述":"F, vS, R, r"},{"ID":"8813","标识":"IC973","M标识":"IC973","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Dup","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h6m29.4s","赤经D(J2000)":"14.108166666666666","赤纬(J2000)":"-5h28m54s","赤纬D(J2000)":"-5.4816666666666665","可见光星等V":"99","摄影(蓝光)星等B":"15.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Stellar, 13.5m"},{"ID":"8814","标识":"IC974","M标识":"IC974","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h6m34.3s","赤经D(J2000)":"14.109527777777778","赤纬(J2000)":"-5h29m34s","赤纬D(J2000)":"-5.4927777777777775","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Neb object 1'.8 sff of 5465. Not obs by T"},{"ID":"8815","标识":"IC975","M标识":"IC975","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h7m8.8s","赤经D(J2000)":"14.119111111111112","赤纬(J2000)":"+15h19m7s","赤纬D(J2000)":"15.31861111111111","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"5","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"8816","标识":"IC976","M标识":"IC976","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h8m43.3s","赤经D(J2000)":"14.14536111111111","赤纬(J2000)":"-1h9m44s","赤纬D(J2000)":"-1.162222222222222","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"175","详细描述":"","简略描述":"eF, vS, R, eF, * att s"},{"ID":"8817","标识":"IC977","M标识":"IC977","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h8m42.1s","赤经D(J2000)":"14.145027777777777","赤纬(J2000)":"-3h0m9s","赤纬D(J2000)":"-3.0025","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"130","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"8818","标识":"IC978","M标识":"IC978","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h8m58s","赤经D(J2000)":"14.149444444444445","赤纬(J2000)":"-2h58m25s","赤纬D(J2000)":"-2.9736111111111114","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"33","详细描述":"very faint, small, round, brighter middle and nucleus","简略描述":"vF, S, R, bMN"},{"ID":"8819","标识":"IC979","M标识":"IC979","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h9m32.3s","赤经D(J2000)":"14.158972222222223","赤纬(J2000)":"+14h49m54s","赤纬D(J2000)":"14.831666666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.7","方位角":"172","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"8820","标识":"IC980","M标识":"IC980","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h10m22.3s","赤经D(J2000)":"14.17286111111111","赤纬(J2000)":"-7h20m31s","赤纬D(J2000)":"-7.341944444444444","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, nucleus equal to 13th magnitude, mottled but not resolved","简略描述":"F, S, R, N = 13m, r"},{"ID":"8821","标识":"IC981","M标识":"IC981","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h10m28s","赤经D(J2000)":"14.174444444444443","赤纬(J2000)":"-4h10m19s","赤纬D(J2000)":"-4.171944444444445","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"70","详细描述":"faint, small, gradually brighter middle","简略描述":"F, S, gbM"},{"ID":"8822","标识":"IC982","M标识":"IC982","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h9m59s","赤经D(J2000)":"14.16638888888889","赤纬(J2000)":"+17h41m48s","赤纬D(J2000)":"17.696666666666665","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"","简略描述":"vS, R, N = 11m"},{"ID":"8823","标识":"IC983","M标识":"IC983","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h10m4.3s","赤经D(J2000)":"14.16786111111111","赤纬(J2000)":"+17h44m4s","赤纬D(J2000)":"17.734444444444446","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"15.1","长轴(分)":"3.9","短轴(分)":"2.6","方位角":"126","详细描述":"","简略描述":"eS, R, N = 11m"},{"ID":"8824","标识":"IC984","M标识":"IC984","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h10m7.6s","赤经D(J2000)":"14.168777777777777","赤纬(J2000)":"+18h21m51s","赤纬D(J2000)":"18.36416666666667","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"0.5","方位角":"35","详细描述":"pretty bright, small, gradually brighter middle","简略描述":"pB, S, gbM"},{"ID":"8825","标识":"IC985","M标识":"IC985","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h11m33s","赤经D(J2000)":"14.1925","赤纬(J2000)":"-3h13m11s","赤纬D(J2000)":"-3.2197222222222224","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"54","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"8826","标识":"IC986","M标识":"IC986","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h11m26.2s","赤经D(J2000)":"14.190611111111112","赤纬(J2000)":"+1h17m13s","赤纬D(J2000)":"1.2869444444444442","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, small, nucleus = 13.5 magnitude star, mottled but not resolved","简略描述":"F, S, N = 13.5, r"},{"ID":"8827","标识":"IC987","M标识":"IC987","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h11m31.9s","赤经D(J2000)":"14.192194444444445","赤纬(J2000)":"+19h10m19s","赤纬D(J2000)":"19.171944444444446","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"87","详细描述":"extremely faint, very small, stellar, very difficult","简略描述":"eF, vS, stellar, v diffic"},{"ID":"8828","标识":"IC988","M标识":"IC988","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h14m32s","赤经D(J2000)":"14.242222222222221","赤纬(J2000)":"+3h11m27s","赤纬D(J2000)":"3.190833333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"54","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"8829","标识":"IC989","M标识":"IC989","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h14m51.2s","赤经D(J2000)":"14.247555555555556","赤纬(J2000)":"+3h7m52s","赤纬D(J2000)":"3.131111111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"63","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"8830","标识":"IC990","M标识":"IC990","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h15m49.1s","赤经D(J2000)":"14.263638888888888","赤纬(J2000)":"+39h47m54s","赤纬D(J2000)":"39.79833333333333","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"51","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"8831","标识":"IC991","M标识":"IC991","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h17m48.6s","赤经D(J2000)":"14.296833333333334","赤纬(J2000)":"-13h52m23s","赤纬D(J2000)":"-13.873055555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"109","详细描述":"faint, small","简略描述":"F, S"},{"ID":"8832","标识":"IC992","M标识":"IC992","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h18m14.8s","赤经D(J2000)":"14.304111111111112","赤纬(J2000)":"+0h53m26s","赤纬D(J2000)":"0.8905555555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"130","详细描述":"faint, pretty small, round, 10.5 magnitude star to northeast","简略描述":"F, pS, R, * 10.5 nf"},{"ID":"8833","标识":"IC993","M标识":"IC993","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h18m18.6s","赤经D(J2000)":"14.305166666666667","赤纬(J2000)":"+11h12m59s","赤纬D(J2000)":"11.216388888888888","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"160","详细描述":"very faint, irregular figure, difficult","简略描述":"vF, iF, diffic"},{"ID":"8834","标识":"IC994","M标识":"IC994","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h18m22.5s","赤经D(J2000)":"14.30625","赤纬(J2000)":"+11h11m43s","赤纬D(J2000)":"11.195277777777777","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"13","详细描述":"pretty bright, very small, round","简略描述":"pB, vS, R"},{"ID":"8835","标识":"IC995","M标识":"IC995","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h16m31.2s","赤经D(J2000)":"14.275333333333334","赤纬(J2000)":"+57h48m36s","赤纬D(J2000)":"57.809999999999995","可见光星等V":"14","摄影(蓝光)星等B":"14.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"147","详细描述":"most extremely faint, small, a little extended, very difficult","简略描述":"eeF, S, lE, v diffic"},{"ID":"8836","标识":"IC996","M标识":"IC996","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"14h17m21.8s","赤经D(J2000)":"14.289388888888888","赤纬(J2000)":"+57h37m48s","赤纬D(J2000)":"57.63","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.4","短轴(分)":"0.2","方位角":"155","详细描述":"most extremely faint, small, much extended, very difficult","简略描述":"eeF, S, mE, v diffic"},{"ID":"8837","标识":"IC997","M标识":"IC997","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h19m25.1s","赤经D(J2000)":"14.323638888888889","赤纬(J2000)":"-4h29m24s","赤纬D(J2000)":"-4.49","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"21","详细描述":"pretty faint, small, round, star to north","简略描述":"pF, S, R, * n"},{"ID":"8838","标识":"IC998","M标识":"IC998","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h19m59.2s","赤经D(J2000)":"14.33311111111111","赤纬(J2000)":"-4h27m8s","赤纬D(J2000)":"-4.452222222222223","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"23","详细描述":"most extremely faint, small, round, very difficult","简略描述":"eeF, S, R, v diffic"},{"ID":"8839","标识":"IC999","M标识":"IC999","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h19m32.6s","赤经D(J2000)":"14.325722222222222","赤纬(J2000)":"+17h52m33s","赤纬D(J2000)":"17.875833333333333","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"142","详细描述":"faint, very small, round, nucleus = 14th magnitude, stellar","简略描述":"F, vS, R, N = 14m, stellar"},{"ID":"8840","标识":"IC1000","M标识":"IC1000","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h19m40.2s","赤经D(J2000)":"14.327833333333333","赤纬(J2000)":"+17h51m18s","赤纬D(J2000)":"17.855","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"23","详细描述":"faint, very small, round, nucleus = 14th magnitude, stellar","简略描述":"F, vS, R, N = 14m, stellar"},{"ID":"8841","标识":"IC1001","M标识":"IC1001","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h20m39.6s","赤经D(J2000)":"14.344333333333333","赤纬(J2000)":"+5h25m40s","赤纬D(J2000)":"5.427777777777778","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"92","详细描述":"extremely faint, small, diffuse","简略描述":"eF, S, dif"},{"ID":"8842","标识":"IC1002","M标识":"IC1002","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h20m42.3s","赤经D(J2000)":"14.345083333333333","赤纬(J2000)":"+5h29m9s","赤纬D(J2000)":"5.485833333333334","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"90","详细描述":"extremely faint, very small, a little brighter middle","简略描述":"eF, vS, lbM"},{"ID":"8843","标识":"IC1003","M标识":"IC1003","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h21m29.8s","赤经D(J2000)":"14.358277777777777","赤纬(J2000)":"+5h4m23s","赤纬D(J2000)":"5.073055555555555","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"40","详细描述":"extremely faint, very small, very small (faint) star attached, difficult","简略描述":"eF, vS, vS * att, diffic"},{"ID":"8844","标识":"IC1004","M标识":"IC1004","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h20m49.7s","赤经D(J2000)":"14.347138888888889","赤纬(J2000)":"+17h39m54s","赤纬D(J2000)":"17.665","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"45","详细描述":"pretty faint, suddenly brighter middle","简略描述":"pF, sbM"},{"ID":"8845","标识":"IC1005","M标识":"IC1005","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S\/P","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"14h19m26.7s","赤经D(J2000)":"14.324083333333332","赤纬(J2000)":"+71h35m17s","赤纬D(J2000)":"71.58805555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"13.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"66","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"8846","标识":"IC1006","M标识":"IC1006","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h22m59s","赤经D(J2000)":"14.383055555555556","赤纬(J2000)":"+23h47m41s","赤纬D(J2000)":"23.794722222222223","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"0.6","方位角":"90","详细描述":"faint","简略描述":"F"},{"ID":"8847","标识":"IC1007","M标识":"IC1007","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h24m36.6s","赤经D(J2000)":"14.410166666666667","赤纬(J2000)":"+4h33m34s","赤纬D(J2000)":"4.559444444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"","简略描述":"vF, vS, R, lbM, * 10.5 nr"},{"ID":"8848","标识":"IC1008","M标识":"IC1008","拓展名":"A","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h23m42.6s","赤经D(J2000)":"14.395166666666666","赤纬(J2000)":"+28h20m50s","赤纬D(J2000)":"28.34722222222222","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"0","详细描述":"pretty faint","简略描述":"pF"},{"ID":"8849","标识":"IC1009","M标识":"IC1009","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h26m17.5s","赤经D(J2000)":"14.438194444444445","赤纬(J2000)":"+12h21m12s","赤纬D(J2000)":"12.353333333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"60","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"8850","标识":"IC1010","M标识":"IC1010","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h27m20.4s","赤经D(J2000)":"14.455666666666666","赤纬(J2000)":"+1h1m33s","赤纬D(J2000)":"1.0258333333333334","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.9","短轴(分)":"1.8","方位角":"78","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"8851","标识":"IC1011","M标识":"IC1011","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h28m4.4s","赤经D(J2000)":"14.467888888888888","赤纬(J2000)":"+1h0m25s","赤纬D(J2000)":"1.0069444444444444","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"111","详细描述":"faint, very small, round, nucleus = 14th magnitude","简略描述":"F, vS, R, N = 14m"},{"ID":"8852","标识":"IC1012","M标识":"IC1012","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h27m9.5s","赤经D(J2000)":"14.452638888888888","赤纬(J2000)":"+30h56m54s","赤纬D(J2000)":"30.948333333333334","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"105","详细描述":"no description","简略描述":"No description"},{"ID":"8853","标识":"IC1013","M标识":"IC1013","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h27m50.8s","赤经D(J2000)":"14.46411111111111","赤纬(J2000)":"+25h50m19s","赤纬D(J2000)":"25.83861111111111","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"90","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"8854","标识":"IC1014","M标识":"IC1014","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h28m18.6s","赤经D(J2000)":"14.471833333333333","赤纬(J2000)":"+13h46m50s","赤纬D(J2000)":"13.780555555555557","可见光星等V":"12.4","摄影(蓝光)星等B":"13","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.7","短轴(分)":"2","方位角":"90","详细描述":"faint, pretty large, round, very gradually brighter middle","简略描述":"F, pL, R, vgbM"},{"ID":"8855","标识":"IC1015","M标识":"IC1015","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h28m19.1s","赤经D(J2000)":"14.471972222222222","赤纬(J2000)":"+15h25m13s","赤纬D(J2000)":"15.420277777777777","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"30","详细描述":"very faint, irregular figure","简略描述":"vF, iF"},{"ID":"8856","标识":"IC1016","M标识":"IC1016","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h27m32.3s","赤经D(J2000)":"14.458972222222222","赤纬(J2000)":"+4h49m17s","赤纬D(J2000)":"4.8213888888888885","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"111","详细描述":"very faint, very small, round, east of h1806","简略描述":"vF, vS, R, f h 1806"},{"ID":"8857","标识":"IC1017","M标识":"IC1017","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h28m7.2s","赤经D(J2000)":"14.468666666666667","赤纬(J2000)":"+25h52m6s","赤纬D(J2000)":"25.868333333333332","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.5","方位角":"128","详细描述":"pretty faint, very small, suddenly brighter middle, stellar","简略描述":"pF, vS, sbM, stellar"},{"ID":"8858","标识":"IC1018","M标识":"IC1018","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h28m12.7s","赤经D(J2000)":"14.470194444444445","赤纬(J2000)":"+25h49m48s","赤纬D(J2000)":"25.83","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"89","详细描述":"extremely faint, extremely small, very difficult","简略描述":"eF, eS, v diffic"},{"ID":"8859","标识":"IC1019","M标识":"IC1019","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h28m13.3s","赤经D(J2000)":"14.470361111111112","赤纬(J2000)":"+25h56m50s","赤纬D(J2000)":"25.947222222222223","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"140","详细描述":"faint, very small, round, stellar, 13th magnitude star near","简略描述":"F, vS, R, stellar, * 13 nr"},{"ID":"8860","标识":"IC1020","M标识":"IC1020","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h28m49.4s","赤经D(J2000)":"14.48038888888889","赤纬(J2000)":"+26h1m58s","赤纬D(J2000)":"26.032777777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"176","详细描述":"faint, stellar, very faint star close","简略描述":"F, stellar, vF * close"},{"ID":"8861","标识":"IC1021","M标识":"IC1021","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h29m17s","赤经D(J2000)":"14.488055555555555","赤纬(J2000)":"+20h39m18s","赤纬D(J2000)":"20.654999999999998","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"127","详细描述":"faint, small, irregularly round","简略描述":"F, S, iR"},{"ID":"8862","标识":"IC1022","M标识":"IC1022","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h30m1.9s","赤经D(J2000)":"14.500527777777778","赤纬(J2000)":"+3h46m22s","赤纬D(J2000)":"3.772777777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"161","详细描述":"very faint, extended north-south","简略描述":"vF, E ns"},{"ID":"8863","标识":"IC1023","M标识":"IC1023","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h32m25.1s","赤经D(J2000)":"14.540305555555555","赤纬(J2000)":"-35h48m13s","赤纬D(J2000)":"-35.80361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"nebula","简略描述":"Neb"},{"ID":"8864","标识":"IC1024","M标识":"IC1024","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h31m27s","赤经D(J2000)":"14.524166666666668","赤纬(J2000)":"+3h0m28s","赤纬D(J2000)":"3.0077777777777777","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"24","详细描述":"pretty bright, very small, extended north-south","简略描述":"pB, vS, E ns"},{"ID":"8865","标识":"IC1025","M标识":"IC1025","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h31m28.4s","赤经D(J2000)":"14.524555555555557","赤纬(J2000)":"+7h3m47s","赤纬D(J2000)":"7.063055555555556","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"130","详细描述":"extremely faint, suddenly brighter middle","简略描述":"eF, sbM"},{"ID":"8866","标识":"IC1026","M标识":"IC1026","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h30m10.3s","赤经D(J2000)":"14.50286111111111","赤纬(J2000)":"+31h12m55s","赤纬D(J2000)":"31.21527777777778","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"125","详细描述":"pretty bright","简略描述":"pB"},{"ID":"8867","标识":"IC1027","M标识":"IC1027","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h29m48.4s","赤经D(J2000)":"14.496777777777776","赤纬(J2000)":"+53h57m56s","赤纬D(J2000)":"53.96555555555556","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"170","详细描述":"","简略描述":"eeF, pS, R, another nr ?"},{"ID":"8868","标识":"IC1028","M标识":"IC1028","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h42m28.9s","赤经D(J2000)":"14.708027777777778","赤纬(J2000)":"+41h50m35s","赤纬D(J2000)":"41.84305555555556","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.3","短轴(分)":"2.1","方位角":"0","详细描述":"pretty bright, small, round, faint star close to northeast","简略描述":"pB, S, R, F * close nf"},{"ID":"8869","标识":"IC1029","M标识":"IC1029","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h32m27.2s","赤经D(J2000)":"14.540888888888889","赤纬(J2000)":"+49h54m16s","赤纬D(J2000)":"49.904444444444444","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.6","短轴(分)":"0.5","方位角":"152","详细描述":"very faint, small, a little extended, much brighter middle","简略描述":"vF, S, lE, mbM"},{"ID":"8870","标识":"IC1030","M标识":"IC1030","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h32m38.5s","赤经D(J2000)":"14.544027777777778","赤纬(J2000)":"+31h40m13s","赤纬D(J2000)":"31.67027777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"50","详细描述":"pretty faint","简略描述":"pF"},{"ID":"8871","标识":"IC1031","M标识":"IC1031","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h34m23.9s","赤经D(J2000)":"14.573305555555555","赤纬(J2000)":"+48h2m17s","赤纬D(J2000)":"48.03805555555555","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"45","详细描述":"most extremely faint, small, round","简略描述":"eeF, S, R"},{"ID":"8872","标识":"IC1032","M标识":"IC1032","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h34m39.1s","赤经D(J2000)":"14.577527777777778","赤纬(J2000)":"+47h58m7s","赤纬D(J2000)":"47.968611111111116","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"90","详细描述":"most extremely faint, small, round","简略描述":"eeF, S, R"},{"ID":"8873","标识":"IC1033","M标识":"IC1033","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h34m41.8s","赤经D(J2000)":"14.578277777777778","赤纬(J2000)":"+47h56m16s","赤纬D(J2000)":"47.937777777777775","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"0","详细描述":"most extremely faint, small, round","简略描述":"eeF, S, R"},{"ID":"8874","标识":"IC1034","M标识":"IC1034","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h37m13.6s","赤经D(J2000)":"14.620444444444445","赤纬(J2000)":"+14h39m57s","赤纬D(J2000)":"14.665833333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"9","详细描述":"very faint, a little brighter middle","简略描述":"vF, lbM"},{"ID":"8875","标识":"IC1035","M标识":"IC1035","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m10.2s","赤经D(J2000)":"14.636166666666666","赤纬(J2000)":"+9h20m12s","赤纬D(J2000)":"9.336666666666668","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"pretty faint, very small, round, small, star near","简略描述":"pF, vS, R, S, * nr"},{"ID":"8876","标识":"IC1036","M标识":"IC1036","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m22.7s","赤经D(J2000)":"14.639638888888888","赤纬(J2000)":"+18h6m41s","赤纬D(J2000)":"18.11138888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"45","详细描述":"pretty faint, small","简略描述":"pF, S"},{"ID":"8877","标识":"IC1037","M标识":"IC1037","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m25.3s","赤经D(J2000)":"14.64036111111111","赤纬(J2000)":"+18h11m4s","赤纬D(J2000)":"18.184444444444445","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"108","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stellar"},{"ID":"8878","标识":"IC1038","M标识":"IC1038","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h39m27.4s","赤经D(J2000)":"14.65761111111111","赤纬(J2000)":"+11h55m44s","赤纬D(J2000)":"11.928888888888888","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"5","详细描述":"","简略描述":"F, vS, stellar, * 10 f 8s"},{"ID":"8879","标识":"IC1039","M标识":"IC1039","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h40m29.3s","赤经D(J2000)":"14.674805555555555","赤纬(J2000)":"+3h26m0s","赤纬D(J2000)":"3.4333333333333336","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"45","详细描述":"very faint, very small, a little brighter middle","简略描述":"vF, vS, lbM"},{"ID":"8880","标识":"IC1040","M标识":"IC1040","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h40m22.5s","赤经D(J2000)":"14.672916666666666","赤纬(J2000)":"+9h28m39s","赤纬D(J2000)":"9.477500000000001","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"8881","标识":"IC1041","M标识":"IC1041","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h40m37.9s","赤经D(J2000)":"14.677194444444444","赤纬(J2000)":"+3h22m38s","赤纬D(J2000)":"3.377222222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"171","详细描述":"","简略描述":"pB, vS, R, N = 12m"},{"ID":"8882","标识":"IC1042","M标识":"IC1042","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h40m38.7s","赤经D(J2000)":"14.677416666666666","赤纬(J2000)":"+3h28m11s","赤纬D(J2000)":"3.4697222222222224","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"","简略描述":"vF, vS, R, bM, close D with h 1862"},{"ID":"8883","标识":"IC1043","M标识":"IC1043","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h40m43.3s","赤经D(J2000)":"14.678694444444444","赤纬(J2000)":"+3h22m29s","赤纬D(J2000)":"3.374722222222222","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"15","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"8884","标识":"IC1044","M标识":"IC1044","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h41m28.9s","赤经D(J2000)":"14.691361111111112","赤纬(J2000)":"+9h25m54s","赤纬D(J2000)":"9.431666666666667","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"0","详细描述":"faint, very small, round, gradually brighter middle","简略描述":"F, vS, R, gbM"},{"ID":"8885","标识":"IC1045","M标识":"IC1045","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h50m39.4s","赤经D(J2000)":"14.844277777777778","赤纬(J2000)":"+42h44m27s","赤纬D(J2000)":"42.740833333333335","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"140","详细描述":"most extremely faint, pretty small, round, nearly between 2 stars","简略描述":"eeF, pS, R, nearly bet 2 st"},{"ID":"8886","标识":"IC1046","M标识":"IC1046","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"14h37m53.2s","赤经D(J2000)":"14.631444444444444","赤纬(J2000)":"+69h0m52s","赤纬D(J2000)":"69.01444444444445","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"88","详细描述":"extremely faint, small, round, double star to east","简略描述":"eF, S, R, D * f"},{"ID":"8887","标识":"IC1047","M标识":"IC1047","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h42m19.8s","赤经D(J2000)":"14.705499999999999","赤纬(J2000)":"+19h11m31s","赤纬D(J2000)":"19.191944444444445","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"","详细描述":"","简略描述":"vF, S, v, dif"},{"ID":"8888","标识":"IC1048","M标识":"IC1048","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h42m57.9s","赤经D(J2000)":"14.716083333333332","赤纬(J2000)":"+4h53m27s","赤纬D(J2000)":"4.890833333333333","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.2","短轴(分)":"0.7","方位角":"163","详细描述":"pretty bright, pretty large, extended east-west, mottled but not resolved","简略描述":"pB, pL, E pf, r"},{"ID":"8889","标识":"IC1049","M标识":"IC1049","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"14h39m33s","赤经D(J2000)":"14.659166666666668","赤纬(J2000)":"+62h0m11s","赤纬D(J2000)":"62.003055555555555","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"65","详细描述":"most extremely faint, pretty small, round","简略描述":"eeF, pS, R"},{"ID":"8890","标识":"IC1050","M标识":"IC1050","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h44m7s","赤经D(J2000)":"14.735277777777776","赤纬(J2000)":"+18h0m48s","赤纬D(J2000)":"18.013333333333332","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"33","详细描述":"very faint, small, round, diffuse","简略描述":"vF, S, R, dif"},{"ID":"8891","标识":"IC1051","M标识":"IC1051","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h44m11.5s","赤经D(J2000)":"14.736527777777777","赤纬(J2000)":"+19h1m14s","赤纬D(J2000)":"19.020555555555553","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"60","详细描述":"faint, very small, stellar","简略描述":"F, vS, stellar"},{"ID":"8892","标识":"IC1052","M标识":"IC1052","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h44m14.2s","赤经D(J2000)":"14.737277777777777","赤纬(J2000)":"+20h36m53s","赤纬D(J2000)":"20.614722222222223","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"30","详细描述":"","简略描述":"Neb * 12m"},{"ID":"8893","标识":"IC1053","M标识":"IC1053","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h45m43.2s","赤经D(J2000)":"14.762","赤纬(J2000)":"+16h56m49s","赤纬D(J2000)":"16.946944444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"35","详细描述":"","简略描述":"eF, vS, v dif, * 4 np 28s"},{"ID":"8894","标识":"IC1054","M标识":"IC1054","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h46m31.2s","赤经D(J2000)":"14.775333333333334","赤纬(J2000)":"+1h16m31s","赤纬D(J2000)":"1.2752777777777777","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.6","方位角":"13","详细描述":"","简略描述":"vF, vS, sbMN = 14m"},{"ID":"8895","标识":"IC1055","M标识":"IC1055","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h47m25.6s","赤经D(J2000)":"14.790444444444445","赤纬(J2000)":"-13h42m58s","赤纬D(J2000)":"-13.716111111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2","短轴(分)":"0.7","方位角":"5","详细描述":"faint, pretty large, extended north-south","简略描述":"F, pL, E ns"},{"ID":"8896","标识":"IC1056","M标识":"IC1056","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h45m48.8s","赤经D(J2000)":"14.763555555555556","赤纬(J2000)":"+50h23m36s","赤纬D(J2000)":"50.39333333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"29","详细描述":"","简略描述":"eeF, L, R, 3 pB st sf"},{"ID":"8897","标识":"IC1057","M标识":"IC1057","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h45m48.8s","赤经D(J2000)":"14.763555555555556","赤纬(J2000)":"+50h23m36s","赤纬D(J2000)":"50.39333333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"29","详细描述":"extremely faint, pretty small, round, between 3 stars","简略描述":"eF, pS, R, bet 3 st"},{"ID":"8898","标识":"IC1058","M标识":"IC1058","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h49m12.3s","赤经D(J2000)":"14.820083333333333","赤纬(J2000)":"+17h1m17s","赤纬D(J2000)":"17.02138888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"115","详细描述":"","简略描述":"F, E ns, mbMN = 14m"},{"ID":"8899","标识":"IC1059","M标识":"IC1059","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h50m42.5s","赤经D(J2000)":"14.84513888888889","赤纬(J2000)":"-0h52m31s","赤纬D(J2000)":"-0.8752777777777778","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, a little brighter middle, mottled but not resolved","简略描述":"F, S, lbm, r"},{"ID":"8900","标识":"IC1060","M标识":"IC1060","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h51m47.3s","赤经D(J2000)":"14.863138888888889","赤纬(J2000)":"-7h13m55s","赤纬D(J2000)":"-7.231944444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"90","详细描述":"no description","简略描述":"No descr"},{"ID":"8901","标识":"IC1061","M标识":"IC1061","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h51m14.1s","赤经D(J2000)":"14.853916666666667","赤纬(J2000)":"+18h45m27s","赤纬D(J2000)":"18.7575","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, extremely small, difficult","简略描述":"eF, eS, diffic"},{"ID":"8902","标识":"IC1062","M标识":"IC1062","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h51m17.6s","赤经D(J2000)":"14.854888888888889","赤纬(J2000)":"+18h41m15s","赤纬D(J2000)":"18.6875","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"102","详细描述":"pretty faint, irregular figure, difficult","简略描述":"pF, iF, diffic"},{"ID":"8903","标识":"IC1063","M标识":"IC1063","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h52m10.9s","赤经D(J2000)":"14.869694444444445","赤纬(J2000)":"+4h40m53s","赤纬D(J2000)":"4.681388888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"162","详细描述":"pretty faint, stellar","简略描述":"pF, stellar"},{"ID":"8904","标识":"IC1064","M标识":"IC1064","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h52m10.9s","赤经D(J2000)":"14.869694444444445","赤纬(J2000)":"+4h40m53s","赤纬D(J2000)":"4.681388888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"162","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"8905","标识":"IC1065","M标识":"IC1065","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"14h49m21.3s","赤经D(J2000)":"14.822583333333332","赤纬(J2000)":"+63h16m15s","赤纬D(J2000)":"63.270833333333336","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.8","方位角":"141","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"8906","标识":"IC1066","M标识":"IC1066","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h53m2.8s","赤经D(J2000)":"14.88411111111111","赤纬(J2000)":"+3h17m46s","赤纬D(J2000)":"3.296111111111111","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"70","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"8907","标识":"IC1067","M标识":"IC1067","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h53m5.2s","赤经D(J2000)":"14.884777777777778","赤纬(J2000)":"+3h19m54s","赤纬D(J2000)":"3.3316666666666666","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2","短轴(分)":"1.6","方位角":"122","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"8908","标识":"IC1068","M标识":"IC1068","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h53m32.8s","赤经D(J2000)":"14.892444444444443","赤纬(J2000)":"+3h4m40s","赤纬D(J2000)":"3.077777777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"130","详细描述":"faint, pretty large, diffuse","简略描述":"F, pL, dif"},{"ID":"8909","标识":"IC1069","M标识":"IC1069","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h50m46.4s","赤经D(J2000)":"14.846222222222222","赤纬(J2000)":"+54h24m42s","赤纬D(J2000)":"54.41166666666666","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"45","详细描述":"","简略描述":"pF, vS, R, no st nr"},{"ID":"8910","标识":"IC1070","M标识":"IC1070","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h53m51.2s","赤经D(J2000)":"14.897555555555556","赤纬(J2000)":"+3h29m7s","赤纬D(J2000)":"3.4852777777777777","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"130","详细描述":"very faint, small, round, difficult","简略描述":"vF, S, R, diffic"},{"ID":"8911","标识":"IC1071","M标识":"IC1071","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h54m12.4s","赤经D(J2000)":"14.903444444444444","赤纬(J2000)":"+4h45m2s","赤纬D(J2000)":"4.750555555555556","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.8","方位角":"150","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"8912","标识":"IC1072","M标识":"IC1072","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h54m13.1s","赤经D(J2000)":"14.903638888888889","赤纬(J2000)":"+4h50m32s","赤纬D(J2000)":"4.8422222222222215","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"160","详细描述":"very faint, very small, round, very little brighter middle, 2nd of 3","简略描述":"vF, vS, R, vlbM, 2nd of 3"},{"ID":"8913","标识":"IC1073","M标识":"IC1073","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h54m14.4s","赤经D(J2000)":"14.904","赤纬(J2000)":"+4h47m40s","赤纬D(J2000)":"4.794444444444444","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"160","详细描述":"very faint, small, round, small star to south, 3rd of 3","简略描述":"vF, S, R, S * s, 3rd of 3"},{"ID":"8914","标识":"IC1074","M标识":"IC1074","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h51m57.2s","赤经D(J2000)":"14.865888888888888","赤纬(J2000)":"+51h15m54s","赤纬D(J2000)":"51.265","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"118","详细描述":"most extremely faint, small, round","简略描述":"eeF, S, R"},{"ID":"8915","标识":"IC1075","M标识":"IC1075","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h54m49.2s","赤经D(J2000)":"14.913666666666668","赤纬(J2000)":"+18h6m21s","赤纬D(J2000)":"18.105833333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"156","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"8916","标识":"IC1076","M标识":"IC1076","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h54m59.4s","赤经D(J2000)":"14.916500000000001","赤纬(J2000)":"+18h2m15s","赤纬D(J2000)":"18.0375","可见光星等V":"13.7","摄影(蓝光)星等B":"14.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.5","方位角":"5","详细描述":"extremely faint, pretty small, round, brighter middle, star to southwest","简略描述":"eF, pS, R, bM, * sp"},{"ID":"8917","标识":"IC1077","M标识":"IC1077","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h57m21.6s","赤经D(J2000)":"14.956","赤纬(J2000)":"-19h12m53s","赤纬D(J2000)":"-19.21472222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"33","详细描述":"very faint, very small, round, gradually brighter middle and nucleus","简略描述":"vF, vS, R, gbMN"},{"ID":"8918","标识":"IC1078","M标识":"IC1078","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h56m29s","赤经D(J2000)":"14.94138888888889","赤纬(J2000)":"+9h21m15s","赤纬D(J2000)":"9.354166666666666","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.9","方位角":"0","详细描述":"pretty faint, very small, round, a little brighter middle","简略描述":"pF, vS, R, lbM"},{"ID":"8919","标识":"IC1079","M标识":"IC1079","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h56m36.1s","赤经D(J2000)":"14.94336111111111","赤纬(J2000)":"+9h22m10s","赤纬D(J2000)":"9.369444444444445","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"83","详细描述":"faint, very small, round, gradually brighter middle","简略描述":"F, vS, R, gbM"},{"ID":"8920","标识":"IC1080","M标识":"IC1080","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h57m59.7s","赤经D(J2000)":"14.966583333333332","赤纬(J2000)":"-6h43m22s","赤纬D(J2000)":"-6.722777777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"27","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"8921","标识":"IC1081","M标识":"IC1081","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h58m55s","赤经D(J2000)":"14.981944444444444","赤纬(J2000)":"-19h14m21s","赤纬D(J2000)":"-19.239166666666666","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"147","详细描述":"extremely faint, pretty large, extended 175°","简略描述":"eF, pL, E 175°"},{"ID":"8922","标识":"IC1082","M标识":"IC1082","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h58m52.4s","赤经D(J2000)":"14.981222222222222","赤纬(J2000)":"+7h0m28s","赤纬D(J2000)":"7.007777777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"33","详细描述":"pretty faint, small, round","简略描述":"pF, S, R"},{"ID":"8923","标识":"IC1083","M标识":"IC1083","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"14h55m33.5s","赤经D(J2000)":"14.92597222222222","赤纬(J2000)":"+68h24m31s","赤纬D(J2000)":"68.40861111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"90","详细描述":"most extremely faint, small, round","简略描述":"eeF, S, R"},{"ID":"8924","标识":"IC1084","M标识":"IC1084","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h1m14.8s","赤经D(J2000)":"15.020777777777779","赤纬(J2000)":"-7h28m32s","赤纬D(J2000)":"-7.475555555555555","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"171","详细描述":"extremely faint, small, round, diffuse","简略描述":"eF, S, R, dif"},{"ID":"8925","标识":"IC1085","M标识":"IC1085","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h2m43.3s","赤经D(J2000)":"15.045361111111111","赤纬(J2000)":"+17h15m11s","赤纬D(J2000)":"17.253055555555555","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"27","详细描述":"pretty bright, very small, a little extended north-south","简略描述":"pB, vS, lE ns"},{"ID":"8926","标识":"IC1086","M标识":"IC1086","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h3m29.1s","赤经D(J2000)":"15.058083333333334","赤纬(J2000)":"+17h6m54s","赤纬D(J2000)":"17.115000000000002","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"170","详细描述":"faint, irregularly round, brighter middle and nucleus","简略描述":"F, iR, bMN"},{"ID":"8927","标识":"IC1087","M标识":"IC1087","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h6m43.8s","赤经D(J2000)":"15.112166666666667","赤纬(J2000)":"+3h46m38s","赤纬D(J2000)":"3.777222222222222","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"80","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"8928","标识":"IC1088","M标识":"IC1088","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h6m47.5s","赤经D(J2000)":"15.113194444444444","赤纬(J2000)":"+3h47m31s","赤纬D(J2000)":"3.7919444444444443","可见光星等V":"99","摄影(蓝光)星等B":"14.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, very small","简略描述":"eeF, vS"},{"ID":"8929","标识":"IC1089","M标识":"IC1089","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h7m25.9s","赤经D(J2000)":"15.123861111111111","赤纬(J2000)":"+7h7m2s","赤纬D(J2000)":"7.117222222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"140","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"8930","标识":"IC1090","M标识":"IC1090","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h5m42.9s","赤经D(J2000)":"15.09525","赤纬(J2000)":"+42h41m0s","赤纬D(J2000)":"42.68333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, possibly nebulous","简略描述":"eF, neb ?"},{"ID":"8931","标识":"IC1091","M标识":"IC1091","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h8m13.4s","赤经D(J2000)":"15.137055555555555","赤纬(J2000)":"-11h8m26s","赤纬D(J2000)":"-11.140555555555554","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.7","方位角":"120","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"8932","标识":"IC1092","M标识":"IC1092","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h7m36s","赤经D(J2000)":"15.126666666666667","赤纬(J2000)":"+9h21m32s","赤纬D(J2000)":"9.358888888888888","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"69","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"8933","标识":"IC1093","M标识":"IC1093","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h7m35.8s","赤经D(J2000)":"15.126611111111112","赤纬(J2000)":"+14h32m55s","赤纬D(J2000)":"14.54861111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.8","方位角":"120","详细描述":"pretty bright, very small, round, a little brighter middle","简略描述":"pB, vS, R, lbM"},{"ID":"8934","标识":"IC1094","M标识":"IC1094","拓展名":"","组件":"3","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C M","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h7m42s","赤经D(J2000)":"15.128333333333334","赤纬(J2000)":"+14h37m21s","赤纬D(J2000)":"14.6225","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"pretty bright, very small, round, binuclear","简略描述":"pB, vS, R, biN"},{"ID":"8935","标识":"IC1095","M标识":"IC1095","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h8m35s","赤经D(J2000)":"15.143055555555556","赤纬(J2000)":"+13h40m13s","赤纬D(J2000)":"13.670277777777777","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"90","详细描述":"most extremely faint, small, a little extended","简略描述":"eeF, S, lE"},{"ID":"8936","标识":"IC1096","M标识":"IC1096","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h8m21.7s","赤经D(J2000)":"15.13936111111111","赤纬(J2000)":"+19h11m31s","赤纬D(J2000)":"19.191944444444445","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"70","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"8937","标识":"IC1097","M标识":"IC1097","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h8m31.3s","赤经D(J2000)":"15.142027777777777","赤纬(J2000)":"+19h11m4s","赤纬D(J2000)":"19.184444444444445","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"52","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"8938","标识":"IC1098","M标识":"IC1098","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h6m25.5s","赤经D(J2000)":"15.107083333333334","赤纬(J2000)":"+55h36m5s","赤纬D(J2000)":"55.60138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF (? only a * 13m)"},{"ID":"8939","标识":"IC1099","M标识":"IC1099","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h6m54.7s","赤经D(J2000)":"15.115194444444445","赤纬(J2000)":"+56h30m31s","赤纬D(J2000)":"56.50861111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.2","短轴(分)":"1","方位角":"162","详细描述":"most extremely faint, pretty small, round, between 2 faint stars","简略描述":"eeF, pS, R, bet 2 F st"},{"ID":"8940","标识":"IC1100","M标识":"IC1100","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S?","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h6m20.6s","赤经D(J2000)":"15.105722222222221","赤纬(J2000)":"+62h58m50s","赤纬D(J2000)":"62.980555555555554","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"60","详细描述":"very faint, pretty small, a little extended, between 2 stars","简略描述":"vF, pS, lE, bet 2 st"},{"ID":"8941","标识":"IC1101","M标识":"IC1101","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h10m56.1s","赤经D(J2000)":"15.18225","赤纬(J2000)":"+5h44m44s","赤纬D(J2000)":"5.745555555555556","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"23","详细描述":"Description is extremely faint, very small, 13th magnitude star 1.5 seconds east, 13th magnitude star 2 seconds west and a little north.","简略描述":"No descr"},{"ID":"8942","标识":"IC1102","M标识":"IC1102","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"15h11m4.9s","赤经D(J2000)":"15.184694444444444","赤纬(J2000)":"+4h17m38s","赤纬D(J2000)":"4.293888888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"25","详细描述":"most extremely faint, very small, faint star to southeast, very difficult","简略描述":"eeF, vS, F * sf, v diffic"},{"ID":"8943","标识":"IC1103","M标识":"IC1103","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h11m35.8s","赤经D(J2000)":"15.193277777777778","赤纬(J2000)":"+19h12m30s","赤纬D(J2000)":"19.208333333333332","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"5","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"8944","标识":"IC1104","M标识":"IC1104","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h12m49.9s","赤经D(J2000)":"15.213861111111111","赤纬(J2000)":"-5h3m22s","赤纬D(J2000)":"-5.056111111111111","可见光星等V":"99","摄影(蓝光)星等B":"15.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"8945","标识":"IC1105","M标识":"IC1105","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h13m13.8s","赤经D(J2000)":"15.2205","赤纬(J2000)":"+4h17m17s","赤纬D(J2000)":"4.288055555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"96","详细描述":"most extremely faint, small, a little extended, faint star to northwest","简略描述":"eeF, S, lE, F * np"},{"ID":"8946","标识":"IC1106","M标识":"IC1106","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h13m56.2s","赤经D(J2000)":"15.232277777777778","赤纬(J2000)":"+4h42m37s","赤纬D(J2000)":"4.710277777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.4","方位角":"30","详细描述":"very faint, very small, round, gradually brighter middle","简略描述":"vF, vS, R, gbM"},{"ID":"8947","标识":"IC1107","M标识":"IC1107","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C M","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h14m9s","赤经D(J2000)":"15.235833333333332","赤纬(J2000)":"+4h42m53s","赤纬D(J2000)":"4.714722222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, very small, round, gradually brighter middle","简略描述":"F, vS, R, gbM"},{"ID":"8948","标识":"IC1108","M标识":"IC1108","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"PN","含重复类型":"Dup","形态":"PN","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"15h16m50s","赤经D(J2000)":"15.280555555555557","赤纬(J2000)":"-45h38m56s","赤纬D(J2000)":"-45.64888888888889","可见光星等V":"9.4","摄影(蓝光)星等B":"10.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.33","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Stellar, gaseous spectrum"},{"ID":"8949","标识":"IC1109","M标识":"IC1109","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h17m3.9s","赤经D(J2000)":"15.284416666666667","赤纬(J2000)":"+5h15m24s","赤纬D(J2000)":"5.256666666666667","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"most extremely faint, pretty small, round, star to northeast, very difficult","简略描述":"eeF, pS, R, * nf, v diffic"},{"ID":"8950","标识":"IC1110","M标识":"IC1110","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"15h12m5.3s","赤经D(J2000)":"15.201472222222222","赤纬(J2000)":"+67h21m44s","赤纬D(J2000)":"67.36222222222221","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"77","详细描述":"most extremely faint, small, much extended","简略描述":"eeF, S, mE"},{"ID":"8951","标识":"IC1111","M标识":"IC1111","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h9m31.4s","赤经D(J2000)":"15.158722222222222","赤纬(J2000)":"+54h30m23s","赤纬D(J2000)":"54.506388888888885","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.4","短轴(分)":"1.2","方位角":"50","详细描述":"pretty bright, small, round, 2 stars near","简略描述":"pB, S, R, 2 st nr"},{"ID":"8952","标识":"IC1112","M标识":"IC1112","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h17m47.4s","赤经D(J2000)":"15.2965","赤纬(J2000)":"+7h13m7s","赤纬D(J2000)":"7.2186111111111115","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.7","方位角":"150","详细描述":"most extremely faint, pretty small, round","简略描述":"eeF, pS, R"},{"ID":"8953","标识":"IC1113","M标识":"IC1113","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h18m15.1s","赤经D(J2000)":"15.304194444444445","赤纬(J2000)":"+12h29m19s","赤纬D(J2000)":"12.48861111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"123","详细描述":"extremely faint, 12th magnitude star near","简略描述":"eF, * 12 nr"},{"ID":"8954","标识":"IC1114","M标识":"IC1114","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"15h11m16s","赤经D(J2000)":"15.187777777777779","赤纬(J2000)":"+75h28m30s","赤纬D(J2000)":"75.47500000000001","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, ? only a * 13"},{"ID":"8955","标识":"IC1115","M标识":"IC1115","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h22m19s","赤经D(J2000)":"15.371944444444445","赤纬(J2000)":"-4h28m28s","赤纬D(J2000)":"-4.474444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, round, pretty bright star to southeast","简略描述":"eeF, S, R, pB * sf"},{"ID":"8956","标识":"IC1116","M标识":"IC1116","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h21m55.2s","赤经D(J2000)":"15.365333333333332","赤纬(J2000)":"+8h25m26s","赤纬D(J2000)":"8.423888888888888","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"174","详细描述":"most extremely faint, small, round","简略描述":"eeF, S, R"},{"ID":"8957","标识":"IC1117","M标识":"IC1117","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h24m22.8s","赤经D(J2000)":"15.406333333333334","赤纬(J2000)":"+15h29m21s","赤纬D(J2000)":"15.489166666666666","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"130","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"8958","标识":"IC1118","M标识":"IC1118","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h24m59.4s","赤经D(J2000)":"15.416500000000001","赤纬(J2000)":"+13h26m44s","赤纬D(J2000)":"13.445555555555556","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.6","方位角":"84","详细描述":"pretty bright, very small, round, small (faint) star near","简略描述":"pB, vS, R, S * nr"},{"ID":"8959","标识":"IC1119","M标识":"IC1119","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h25m44.7s","赤经D(J2000)":"15.429083333333333","赤纬(J2000)":"-3h39m31s","赤纬D(J2000)":"-3.658611111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"140","详细描述":"","简略描述":"F, pS, R, * 11.5 nf"},{"ID":"8960","标识":"IC1120","M标识":"IC1120","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h26m11.4s","赤经D(J2000)":"15.4365","赤纬(J2000)":"+18h52m30s","赤纬D(J2000)":"18.875","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, extremely small, very faint, star attached","简略描述":"eF, eS, vF, * att"},{"ID":"8961","标识":"IC1121","M标识":"IC1121","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h27m44s","赤经D(J2000)":"15.462222222222222","赤纬(J2000)":"+6h48m16s","赤纬D(J2000)":"6.804444444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"most extremely faint, extremely small, stellar, very faint star close to west","简略描述":"eeF, eS, stellar, vF * close p"},{"ID":"8962","标识":"IC1122","M标识":"IC1122","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h29m23s","赤经D(J2000)":"15.489722222222222","赤纬(J2000)":"+7h37m3s","赤纬D(J2000)":"7.617500000000001","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"70","详细描述":"very faint, pretty small, much brighter middle, 11th magnitude star one arcmin to west","简略描述":"vF, pS, mbM, * 11 p 1'"},{"ID":"8963","标识":"IC1123","M标识":"IC1123","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h28m54.1s","赤经D(J2000)":"15.481694444444445","赤纬(J2000)":"+42h53m55s","赤纬D(J2000)":"42.89861111111111","可见光星等V":"99","摄影(蓝光)星等B":"14.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, stellar","简略描述":"vF, eS, stellar"},{"ID":"8964","标识":"IC1124","M标识":"IC1124","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h30m0.9s","赤经D(J2000)":"15.50025","赤纬(J2000)":"+23h38m18s","赤纬D(J2000)":"23.638333333333332","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"74","详细描述":"most extremely faint, very small, much extended, 2 stars to north","简略描述":"eeF, vS, mE, 2 st n"},{"ID":"8965","标识":"IC1125","M标识":"IC1125","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h33m5.7s","赤经D(J2000)":"15.551583333333333","赤纬(J2000)":"-1h37m42s","赤纬D(J2000)":"-1.6283333333333334","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.7","短轴(分)":"1","方位角":"147","详细描述":"faint, pretty large, round, diffuse","简略描述":"F, pL, R, dif"},{"ID":"8966","标识":"IC1126","M标识":"IC1126","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h35m0.8s","赤经D(J2000)":"15.583555555555556","赤纬(J2000)":"+4h59m26s","赤纬D(J2000)":"4.990555555555556","可见光星等V":"99","摄影(蓝光)星等B":"14.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"13th magnitude star, nebulous?","简略描述":"* 13, nebulous ?"},{"ID":"8967","标识":"IC1127","M标识":"IC1127","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h34m57.2s","赤经D(J2000)":"15.582555555555555","赤纬(J2000)":"+23h30m9s","赤纬D(J2000)":"23.5025","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"1.7","方位角":"144","详细描述":"pretty faint","简略描述":"pF"},{"ID":"8968","标识":"IC1128","M标识":"IC1128","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h37m52.8s","赤经D(J2000)":"15.631333333333334","赤纬(J2000)":"-1h44m5s","赤纬D(J2000)":"-1.7347222222222223","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"0","详细描述":"pretty faint, pretty small, round","简略描述":"pF, pS, R"},{"ID":"8969","标识":"IC1129","M标识":"IC1129","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"15h32m0.8s","赤经D(J2000)":"15.533555555555555","赤纬(J2000)":"+68h14m48s","赤纬D(J2000)":"68.24666666666667","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"170","详细描述":"very faint, pretty small, irregularly round, double star to northeast","简略描述":"vF, pS, iR, D * nf"},{"ID":"8970","标识":"IC1130","M标识":"IC1130","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h37m44s","赤经D(J2000)":"15.62888888888889","赤纬(J2000)":"+17h14m40s","赤纬D(J2000)":"17.244444444444447","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"20","详细描述":"","简略描述":"vF (? another 2' sp?), * 8.7 f"},{"ID":"8971","标识":"IC1131","M标识":"IC1131","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h38m51.6s","赤经D(J2000)":"15.647666666666666","赤纬(J2000)":"+12h4m52s","赤纬D(J2000)":"12.081111111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"153","详细描述":"","简略描述":"pF, vS, R, stellar, II. 76 np"},{"ID":"8972","标识":"IC1132","M标识":"IC1132","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h40m6.7s","赤经D(J2000)":"15.668527777777777","赤纬(J2000)":"+20h40m49s","赤纬D(J2000)":"20.68027777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"1","方位角":"36","详细描述":"no description","简略描述":"No descr"},{"ID":"8973","标识":"IC1133","M标识":"IC1133","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h41m12s","赤经D(J2000)":"15.686666666666667","赤纬(J2000)":"+15h34m24s","赤纬D(J2000)":"15.573333333333332","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"130","详细描述":"pretty bright, pretty large, irregular figure","简略描述":"pB, pL, iF"},{"ID":"8974","标识":"IC1134","M标识":"IC1134","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h44m58.4s","赤经D(J2000)":"15.749555555555554","赤纬(J2000)":"+16h57m46s","赤纬D(J2000)":"16.962777777777777","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"0","详细描述":"very faint, very small, diffuse","简略描述":"vF, vS, dif"},{"ID":"8975","标识":"IC1135","M标识":"IC1135","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h45m34.7s","赤经D(J2000)":"15.759638888888889","赤纬(J2000)":"+17h42m0s","赤纬D(J2000)":"17.7","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"66","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"8976","标识":"IC1136","M标识":"IC1136","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h47m34.3s","赤经D(J2000)":"15.792861111111112","赤纬(J2000)":"-1h32m41s","赤纬D(J2000)":"-1.544722222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, extremely small, stellar","简略描述":"F, eS, stellar"},{"ID":"8977","标识":"IC1137","M标识":"IC1137","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h48m32.6s","赤经D(J2000)":"15.809055555555556","赤纬(J2000)":"+8h35m17s","赤纬D(J2000)":"8.588055555555556","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"","简略描述":"vF, S, R, * 9 close np"},{"ID":"8978","标识":"IC1138","M标识":"IC1138","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h48m15.8s","赤经D(J2000)":"15.804388888888889","赤纬(J2000)":"+26h12m22s","赤纬D(J2000)":"26.20611111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"41","详细描述":"very faint, small, irregular figure, a little brighter middle, mottled but not resolved","简略描述":"vF, S, iF, lbM, r"},{"ID":"8979","标识":"IC1139","M标识":"IC1139","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"15h29m26s","赤经D(J2000)":"15.490555555555554","赤纬(J2000)":"+82h35m4s","赤纬D(J2000)":"82.58444444444444","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"45","详细描述":"most extremely faint, small, a little extended, very difficult","简略描述":"eeF, S, lE, v diffic"},{"ID":"8980","标识":"IC1140","M标识":"IC1140","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h49m25.3s","赤经D(J2000)":"15.823694444444444","赤纬(J2000)":"+19h6m52s","赤纬D(J2000)":"19.114444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF (? S Cl), * 9.5 close"},{"ID":"8981","标识":"IC1141","M标识":"IC1141","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h49m47s","赤经D(J2000)":"15.829722222222221","赤纬(J2000)":"+12h23m57s","赤纬D(J2000)":"12.399166666666666","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"8982","标识":"IC1142","M标识":"IC1142","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h50m25.9s","赤经D(J2000)":"15.840527777777778","赤纬(J2000)":"+18h8m24s","赤纬D(J2000)":"18.14","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"144","详细描述":"very faint, diffuse","简略描述":"vF, dif"},{"ID":"8983","标识":"IC1143","M标识":"IC1143","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"15h30m55.8s","赤经D(J2000)":"15.5155","赤纬(J2000)":"+82h27m23s","赤纬D(J2000)":"82.4563888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"pretty faint, very small, round, star near","简略描述":"pF, vS, R, * nr"},{"ID":"8984","标识":"IC1144","M标识":"IC1144","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"15h51m21.6s","赤经D(J2000)":"15.856","赤纬(J2000)":"+43h25m6s","赤纬D(J2000)":"43.41833333333333","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.6","方位角":"100","详细描述":"most extremely faint, very small, round, star to southeast","简略描述":"eeF, vS, R, * sf"},{"ID":"8985","标识":"IC1145","M标识":"IC1145","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"15h44m8.3s","赤经D(J2000)":"15.735638888888888","赤纬(J2000)":"+72h25m51s","赤纬D(J2000)":"72.43083333333334","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"168","详细描述":"","简略描述":"eeF, pS, R, III. 313 nr"},{"ID":"8986","标识":"IC1146","M标识":"IC1146","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h48m22s","赤经D(J2000)":"15.806111111111111","赤纬(J2000)":"+69h23m10s","赤纬D(J2000)":"69.38611111111112","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"105","详细描述":"very faint, pretty small, round, 2 stars near, southwestern of 2","简略描述":"vF, pS, R, 2 st nr, sp of 2"},{"ID":"8987","标识":"IC1147","M标识":"IC1147","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"15h50m11.5s","赤经D(J2000)":"15.836527777777778","赤纬(J2000)":"+69h33m36s","赤纬D(J2000)":"69.56","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"most extremely faint, small, round, northeastern of 2","简略描述":"eeF, S, R, nf of 2"},{"ID":"8988","标识":"IC1148","M标识":"IC1148","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E3","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h57m8.1s","赤经D(J2000)":"15.95225","赤纬(J2000)":"+22h24m18s","赤纬D(J2000)":"22.404999999999998","可见光星等V":"12.7","摄影(蓝光)星等B":"13.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1","方位角":"140","详细描述":"a nebulous star","简略描述":"Neb *"},{"ID":"8989","标识":"IC1149","M标识":"IC1149","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h58m7.9s","赤经D(J2000)":"15.968861111111112","赤纬(J2000)":"+12h4m11s","赤纬D(J2000)":"12.069722222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1","方位角":"160","详细描述":"most extremely faint, pretty small, round, among 4 stars, very difficult","简略描述":"eeF, pS, R, am 4 st, v diffic"},{"ID":"8990","标识":"IC1150","M标识":"IC1150","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h58m18s","赤经D(J2000)":"15.971666666666668","赤纬(J2000)":"+15h52m30s","赤纬D(J2000)":"15.875","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"2 S st in F neby"},{"ID":"8991","标识":"IC1151","M标识":"IC1151","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h58m32.3s","赤经D(J2000)":"15.97563888888889","赤纬(J2000)":"+17h26m27s","赤纬D(J2000)":"17.440833333333334","可见光星等V":"13","摄影(蓝光)星等B":"13.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.4","短轴(分)":"0.8","方位角":"28","详细描述":"very faint, pretty large, diffuse","简略描述":"vF, pL, dif"},{"ID":"8992","标识":"IC1152","M标识":"IC1152","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"15h56m43.2s","赤经D(J2000)":"15.945333333333334","赤纬(J2000)":"+48h5m41s","赤纬D(J2000)":"48.094722222222224","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"very faint, small, round, southwestern of 2","简略描述":"vF, S, R, sp of 2"},{"ID":"8993","标识":"IC1153","M标识":"IC1153","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"15h57m3.1s","赤经D(J2000)":"15.950861111111111","赤纬(J2000)":"+48h10m7s","赤纬D(J2000)":"48.16861111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"156","详细描述":"pretty faint, pretty small, round, brighter middle, star to northeast, northeastern of 2","简略描述":"pF, pS, R, bM, * nf, nf of 2"},{"ID":"8994","标识":"IC1154","M标识":"IC1154","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"15h52m28.5s","赤经D(J2000)":"15.874583333333334","赤纬(J2000)":"+70h22m32s","赤纬D(J2000)":"70.37555555555555","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.8","方位角":"145","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"8995","标识":"IC1155","M标识":"IC1155","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h0m35.7s","赤经D(J2000)":"16.009916666666665","赤纬(J2000)":"+15h41m9s","赤纬D(J2000)":"15.685833333333333","可见光星等V":"14.3","摄影(蓝光)星等B":"14.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"9","详细描述":"very faint, small, difficult","简略描述":"vF, S, diffic"},{"ID":"8996","标识":"IC1156","M标识":"IC1156","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h0m37.3s","赤经D(J2000)":"16.010361111111113","赤纬(J2000)":"+19h43m26s","赤纬D(J2000)":"19.723888888888887","可见光星等V":"13.4","摄影(蓝光)星等B":"14.5","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.8","方位角":"0","详细描述":"most extremely faint, pretty small, a little extended, 2 stars near","简略描述":"eeF, pS, lE, 2 st nr"},{"ID":"8997","标识":"IC1157","M标识":"IC1157","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h0m56.2s","赤经D(J2000)":"16.01561111111111","赤纬(J2000)":"+15h31m36s","赤纬D(J2000)":"15.526666666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"135","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"8998","标识":"IC1158","M标识":"IC1158","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h1m34.2s","赤经D(J2000)":"16.026166666666665","赤纬(J2000)":"+1h42m27s","赤纬D(J2000)":"1.7075","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.5","短轴(分)":"1.7","方位角":"137","详细描述":"most extremely faint, pretty large, irregularly round","简略描述":"eeF, pL, iR"},{"ID":"8999","标识":"IC1159","M标识":"IC1159","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h1m1.5s","赤经D(J2000)":"16.017083333333332","赤纬(J2000)":"+15h25m11s","赤纬D(J2000)":"15.419722222222221","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"45","详细描述":"very faint, extremely small, round","简略描述":"vF, eS, R"},{"ID":"9000","标识":"IC1160","M标识":"IC1160","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h1m2.6s","赤经D(J2000)":"16.01738888888889","赤纬(J2000)":"+15h29m42s","赤纬D(J2000)":"15.495","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"135","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"9001","标识":"IC1161","M标识":"IC1161","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h1m16.7s","赤经D(J2000)":"16.021305555555553","赤纬(J2000)":"+15h38m45s","赤纬D(J2000)":"15.645833333333332","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, very small, round, very small nucleus","简略描述":"F, vS, R, vSN"},{"ID":"9002","标识":"IC1162","M标识":"IC1162","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h1m16.3s","赤经D(J2000)":"16.021194444444443","赤纬(J2000)":"+17h40m39s","赤纬D(J2000)":"17.677500000000002","可见光星等V":"14.7","摄影(蓝光)星等B":"15.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"vF, vS, R, diffic (another susp)"},{"ID":"9003","标识":"IC1163","M标识":"IC1163","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h1m30.6s","赤经D(J2000)":"16.025166666666667","赤纬(J2000)":"+15h30m16s","赤纬D(J2000)":"15.504444444444445","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, round, very small nucleus","简略描述":"F, R, vSN"},{"ID":"9004","标识":"IC1164","M标识":"IC1164","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"15h55m2.8s","赤经D(J2000)":"15.917444444444444","赤纬(J2000)":"+70h35m13s","赤纬D(J2000)":"70.58694444444444","可见光星等V":"99","摄影(蓝光)星等B":"14.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* 13 with neb ?"},{"ID":"9005","标识":"IC1165","M标识":"IC1165","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h2m7.9s","赤经D(J2000)":"16.03552777777778","赤纬(J2000)":"+15h41m47s","赤纬D(J2000)":"15.696388888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"156","详细描述":"very faint, small, difficult","简略描述":"vF, S, diffic"},{"ID":"9006","标识":"IC1166","M标识":"IC1166","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h2m8.9s","赤经D(J2000)":"16.03580555555556","赤纬(J2000)":"+26h19m30s","赤纬D(J2000)":"26.325","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"160","详细描述":"","简略描述":"vF, vS, vF * nf"},{"ID":"9007","标识":"IC1167","M标识":"IC1167","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h3m52.9s","赤经D(J2000)":"16.064694444444445","赤纬(J2000)":"+14h56m46s","赤纬D(J2000)":"14.946111111111112","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"9008","标识":"IC1168","M标识":"IC1168","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h3m55.6s","赤经D(J2000)":"16.065444444444445","赤纬(J2000)":"+14h54m11s","赤纬D(J2000)":"14.903055555555556","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"","简略描述":"pF, vS, iF, D?, 3 F st n"},{"ID":"9009","标识":"IC1169","M标识":"IC1169","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h4m13.4s","赤经D(J2000)":"16.07038888888889","赤纬(J2000)":"+13h44m39s","赤纬D(J2000)":"13.744166666666667","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.6","方位角":"10","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stellar"},{"ID":"9010","标识":"IC1170","M标识":"IC1170","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h4m31.6s","赤经D(J2000)":"16.075444444444443","赤纬(J2000)":"+17h43m17s","赤纬D(J2000)":"17.72138888888889","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"88","详细描述":"","简略描述":"vF, vS, vSFN, 6041 f"},{"ID":"9011","标识":"IC1171","M标识":"IC1171","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h4m51.9s","赤经D(J2000)":"16.081083333333332","赤纬(J2000)":"+17h58m43s","赤纬D(J2000)":"17.97861111111111","可见光星等V":"99","摄影(蓝光)星等B":"14.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Neb * ?"},{"ID":"9012","标识":"IC1172","M标识":"IC1172","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h4m59.6s","赤经D(J2000)":"16.083222222222222","赤纬(J2000)":"+17h52m13s","赤纬D(J2000)":"17.87027777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, small, stellar nucleus","简略描述":"vF, S, stellar N"},{"ID":"9013","标识":"IC1173","M标识":"IC1173","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m12.7s","赤经D(J2000)":"16.08686111111111","赤纬(J2000)":"+17h25m21s","赤纬D(J2000)":"17.4225","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"55","详细描述":"pretty faint, small, irregular figure, gradually brighter middle, mottled but not resolved","简略描述":"pF, S, iF, gbM, r"},{"ID":"9014","标识":"IC1174","M标识":"IC1174","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h5m26.9s","赤经D(J2000)":"16.090805555555555","赤纬(J2000)":"+15h1m31s","赤纬D(J2000)":"15.025277777777779","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.8","方位角":"50","详细描述":"","简略描述":"pF, S, bMN = 12m"},{"ID":"9015","标识":"IC1175","M标识":"IC1175","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m22.7s","赤经D(J2000)":"16.08963888888889","赤纬(J2000)":"+18h9m47s","赤纬D(J2000)":"18.163055555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Neb object, 6055 f 2'"},{"ID":"9016","标识":"IC1176","M标识":"IC1176","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m31.1s","赤经D(J2000)":"16.09197222222222","赤纬(J2000)":"+17h57m46s","赤纬D(J2000)":"17.962777777777777","可见光星等V":"13.9","摄影(蓝光)星等B":"15","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"56","详细描述":"","简略描述":"eeF, pS, iR, 2 st nr s"},{"ID":"9017","标识":"IC1177","M标识":"IC1177","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m19.5s","赤经D(J2000)":"16.088749999999997","赤纬(J2000)":"+18h18m55s","赤纬D(J2000)":"18.31527777777778","可见光星等V":"15.3","摄影(蓝光)星等B":"16.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"","简略描述":"vF, * 9.5 4' s"},{"ID":"9018","标识":"IC1178","M标识":"IC1178","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m33s","赤经D(J2000)":"16.092499999999998","赤纬(J2000)":"+17h36m7s","赤纬D(J2000)":"17.601944444444445","可见光星等V":"14.1","摄影(蓝光)星等B":"15.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1","短轴(分)":"0.9","方位角":"36","详细描述":"most extremely faint, pretty small, between 2 stars","简略描述":"eeF, pS, bet 2 st"},{"ID":"9019","标识":"IC1179","M标识":"IC1179","拓展名":"A","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m23.5s","赤经D(J2000)":"16.08986111111111","赤纬(J2000)":"+17h45m26s","赤纬D(J2000)":"17.75722222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"132","详细描述":"","简略描述":"eeF, pS, R [? 6054]"},{"ID":"9020","标识":"IC1180","M标识":"IC1180","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m30s","赤经D(J2000)":"16.091666666666665","赤纬(J2000)":"+18h8m58s","赤纬D(J2000)":"18.149444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F * with neb ?, 6055 f"},{"ID":"9021","标识":"IC1181","M标识":"IC1181","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m33.9s","赤经D(J2000)":"16.09275","赤纬(J2000)":"+17h35m37s","赤纬D(J2000)":"17.59361111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"70","详细描述":"","简略描述":"eeF, S, R, ‘ 12th of 12 ’"},{"ID":"9022","标识":"IC1182","M标识":"IC1182","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m36.7s","赤经D(J2000)":"16.093527777777776","赤纬(J2000)":"+17h48m10s","赤纬D(J2000)":"17.802777777777777","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.5","方位角":"81","详细描述":"very faint, small, diffuse, a little brighter middle","简略描述":"vF, S, dif, lbM"},{"ID":"9023","标识":"IC1183","M标识":"IC1183","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m38.1s","赤经D(J2000)":"16.093916666666665","赤纬(J2000)":"+17h46m3s","赤纬D(J2000)":"17.7675","可见光星等V":"14.2","摄影(蓝光)星等B":"15.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"65","详细描述":"very faint, very small, stellar, 11th magnitude star 1 arcmin to southwest","简略描述":"vF, vS, stellar, * 11 sp 1'"},{"ID":"9024","标识":"IC1184","M标识":"IC1184","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m42.9s","赤经D(J2000)":"16.09525","赤纬(J2000)":"+17h47m21s","赤纬D(J2000)":"17.789166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* 13 with neb ?"},{"ID":"9025","标识":"IC1185","M标识":"IC1185","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m44.6s","赤经D(J2000)":"16.09572222222222","赤纬(J2000)":"+17h43m2s","赤纬D(J2000)":"17.71722222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"0","详细描述":"","简略描述":"* 13 with S neb"},{"ID":"9026","标识":"IC1186","M标识":"IC1186","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m44.2s","赤经D(J2000)":"16.09561111111111","赤纬(J2000)":"+17h21m44s","赤纬D(J2000)":"17.362222222222222","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"0","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"9027","标识":"IC1187","M标识":"IC1187","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"15h59m10.1s","赤经D(J2000)":"15.986138888888888","赤纬(J2000)":"+70h33m27s","赤纬D(J2000)":"70.55749999999999","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"93","详细描述":"a 13th magnitude star with nebulosity","简略描述":"* 13 with neb"},{"ID":"9028","标识":"IC1188","M标识":"IC1188","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h6m7.3s","赤经D(J2000)":"16.102027777777778","赤纬(J2000)":"+17h27m37s","赤纬D(J2000)":"17.460277777777776","可见光星等V":"15","摄影(蓝光)星等B":"15.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"0","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"9029","标识":"IC1189","M标识":"IC1189","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a R","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h6m14.6s","赤经D(J2000)":"16.104055555555558","赤纬(J2000)":"+18h10m57s","赤纬D(J2000)":"18.1825","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"175","详细描述":"most extremely faint, pretty small, irregularly round, between 2 stars","简略描述":"eeF, pS, iR, bet 2 st"},{"ID":"9030","标识":"IC1190","M标识":"IC1190","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h5m52.4s","赤经D(J2000)":"16.09788888888889","赤纬(J2000)":"+18h13m14s","赤纬D(J2000)":"18.220555555555553","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"120","详细描述":"","简略描述":"eeF, S, R, 6061 nr"},{"ID":"9031","标识":"IC1191","M标识":"IC1191","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h6m28.9s","赤经D(J2000)":"16.108027777777778","赤纬(J2000)":"+18h16m8s","赤纬D(J2000)":"18.26888888888889","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.1","方位角":"170","详细描述":"most extremely faint, small, a little extended","简略描述":"eeF, S, lE"},{"ID":"9032","标识":"IC1192","M标识":"IC1192","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h6m33s","赤经D(J2000)":"16.109166666666667","赤纬(J2000)":"+17h46m34s","赤纬D(J2000)":"17.77611111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"115","详细描述":"very faint, small, irregular figure, diffuse","简略描述":"vF, S, iF, dif"},{"ID":"9033","标识":"IC1193","M标识":"IC1193","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h6m32.2s","赤经D(J2000)":"16.108944444444447","赤纬(J2000)":"+17h42m50s","赤纬D(J2000)":"17.71388888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"5","详细描述":"faint, small, mottled but not resolved","简略描述":"F, S, r"},{"ID":"9034","标识":"IC1194","M标识":"IC1194","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h6m38.7s","赤经D(J2000)":"16.110750000000003","赤纬(J2000)":"+17h47m0s","赤纬D(J2000)":"17.783333333333335","可见光星等V":"15.6","摄影(蓝光)星等B":"16.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, very small, diffuse","简略描述":"eF, vS, dif"},{"ID":"9035","标识":"IC1195","M标识":"IC1195","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h6m40.8s","赤经D(J2000)":"16.111333333333334","赤纬(J2000)":"+17h11m31s","赤纬D(J2000)":"17.191944444444445","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"10","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"9036","标识":"IC1196","M标识":"IC1196","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h7m58.4s","赤经D(J2000)":"16.13288888888889","赤纬(J2000)":"+10h46m48s","赤纬D(J2000)":"10.780000000000001","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"3","详细描述":"","简略描述":"eeF, nr p * of 3 in line"},{"ID":"9037","标识":"IC1197","M标识":"IC1197","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h8m17.3s","赤经D(J2000)":"16.13813888888889","赤纬(J2000)":"+7h32m21s","赤纬D(J2000)":"7.539166666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.9","短轴(分)":"0.5","方位角":"56","详细描述":"","简略描述":"L, mE, * att nf"},{"ID":"9038","标识":"IC1198","M标识":"IC1198","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h8m36.3s","赤经D(J2000)":"16.143416666666667","赤纬(J2000)":"+12h19m50s","赤纬D(J2000)":"12.330555555555556","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"105","详细描述":"faint, very small, round, nucleus equal to 13th magnitude","简略描述":"F, vS, R, N = 13m"},{"ID":"9039","标识":"IC1199","M标识":"IC1199","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h10m34.4s","赤经D(J2000)":"16.176222222222222","赤纬(J2000)":"+10h2m24s","赤纬D(J2000)":"10.04","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"157","详细描述":"","简略描述":"eeF, S, E, * 9.5 f 9s"},{"ID":"9040","标识":"IC1200","M标识":"IC1200","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E3","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h4m28.7s","赤经D(J2000)":"16.074638888888888","赤纬(J2000)":"+69h39m58s","赤纬D(J2000)":"69.66611111111112","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1","方位角":"150","详细描述":"","简略描述":"pF, pS, lE, * 12 nr [? = B 207]"},{"ID":"9041","标识":"IC1201","M标识":"IC1201","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb R","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h5m41.5s","赤经D(J2000)":"16.09486111111111","赤纬(J2000)":"+69h35m38s","赤纬D(J2000)":"69.59388888888888","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"118","详细描述":"most extremely faint, pretty small, irregularly round, very difficult","简略描述":"eeF, pS, iR, v diffic"},{"ID":"9042","标识":"IC1202","M标识":"IC1202","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h12m56.8s","赤经D(J2000)":"16.215777777777777","赤纬(J2000)":"+9h52m4s","赤纬D(J2000)":"9.867777777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"131","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"9043","标识":"IC1203","M标识":"IC1203","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h15m16s","赤经D(J2000)":"16.254444444444445","赤纬(J2000)":"-22h20m18s","赤纬D(J2000)":"-22.33833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"no description","简略描述":"No descr"},{"ID":"9044","标识":"IC1204","M标识":"IC1204","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"16h7m15.3s","赤经D(J2000)":"16.120916666666666","赤纬(J2000)":"+69h55m54s","赤纬D(J2000)":"69.93166666666667","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"60","详细描述":"","简略描述":"vF, S, stell N, * 11 f 3'"},{"ID":"9045","标识":"IC1205","M标识":"IC1205","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h14m15.8s","赤经D(J2000)":"16.237722222222224","赤纬(J2000)":"+9h32m15s","赤纬D(J2000)":"9.5375","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, a little extended, star to west","简略描述":"F, S, lE, * p"},{"ID":"9046","标识":"IC1206","M标识":"IC1206","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h15m13s","赤经D(J2000)":"16.253611111111113","赤纬(J2000)":"+11h17m50s","赤纬D(J2000)":"11.297222222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"2","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"9047","标识":"IC1207","M标识":"IC1207","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h19m26s","赤经D(J2000)":"16.323888888888888","赤纬(J2000)":"-29h38m36s","赤纬D(J2000)":"-29.643333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"no description","简略描述":"No descr"},{"ID":"9048","标识":"IC1208","M标识":"IC1208","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h15m47.8s","赤经D(J2000)":"16.263277777777777","赤纬(J2000)":"+36h31m39s","赤纬D(J2000)":"36.527499999999996","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.2","方位角":"95","详细描述":"","简略描述":"vF, * 7 105\" n"},{"ID":"9049","标识":"IC1209","M标识":"IC1209","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h18m39.5s","赤经D(J2000)":"16.310972222222222","赤纬(J2000)":"+15h33m32s","赤纬D(J2000)":"15.55888888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"5","详细描述":"pretty faint, very small, round, brighter middle, mottled but not resolved","简略描述":"pF, vS, R, bM, r"},{"ID":"9050","标识":"IC1210","M标识":"IC1210","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h14m30s","赤经D(J2000)":"16.241666666666667","赤纬(J2000)":"+62h32m10s","赤纬D(J2000)":"62.53611111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"168","详细描述":"very faint, very small, a little extended, mottled but not resolved","简略描述":"vF, vS, lE, r"},{"ID":"9051","标识":"IC1211","M标识":"IC1211","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h16m51.9s","赤经D(J2000)":"16.28108333333333","赤纬(J2000)":"+53h0m22s","赤纬D(J2000)":"53.00611111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.9","方位角":"42","详细描述":"pretty bright, very small, round, brighter middle","简略描述":"pB, vS, R, bM"},{"ID":"9052","标识":"IC1212","M标识":"IC1212","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h15m30.7s","赤经D(J2000)":"16.25852777777778","赤纬(J2000)":"+64h13m31s","赤纬D(J2000)":"64.22527777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"eeF, pS, R, 3 st n in line"},{"ID":"9053","标识":"IC1213","M标识":"IC1213","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h22m10.2s","赤经D(J2000)":"16.369500000000002","赤纬(J2000)":"-1h30m51s","赤纬D(J2000)":"-1.5141666666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"9054","标识":"IC1214","M标识":"IC1214","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h16m11.4s","赤经D(J2000)":"16.26983333333333","赤纬(J2000)":"+65h58m7s","赤纬D(J2000)":"65.96861111111112","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"18","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"9055","标识":"IC1215","M标识":"IC1215","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB\/P","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h15m35s","赤经D(J2000)":"16.259722222222223","赤纬(J2000)":"+68h23m50s","赤纬D(J2000)":"68.39722222222223","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"10","详细描述":"very faint, small, round, 1st of 3","简略描述":"vF, S, R, 1st of 3"},{"ID":"9056","标识":"IC1216","M标识":"IC1216","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h15m55.3s","赤经D(J2000)":"16.265361111111112","赤纬(J2000)":"+68h20m58s","赤纬D(J2000)":"68.34944444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"0.9","方位角":"33","详细描述":"most extremely faint, pretty small, round, 2nd of 3","简略描述":"eeF, pS, R, 2nd of 3"},{"ID":"9057","标识":"IC1217","M标识":"IC1217","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h16m3.7s","赤经D(J2000)":"16.267694444444444","赤纬(J2000)":"+69h40m35s","赤纬D(J2000)":"69.6763888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, round, very difficult","简略描述":"eeF, S, R, v diffic"},{"ID":"9058","标识":"IC1218","M标识":"IC1218","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h16m37.3s","赤经D(J2000)":"16.27702777777778","赤纬(J2000)":"+68h12m11s","赤纬D(J2000)":"68.20305555555557","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"57","详细描述":"very faint, very small, a little extended","简略描述":"vF, vS, lE"},{"ID":"9059","标识":"IC1219","M标识":"IC1219","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h24m27.4s","赤经D(J2000)":"16.40761111111111","赤纬(J2000)":"+19h29m1s","赤纬D(J2000)":"19.483611111111113","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"125","详细描述":"","简略描述":"F, S, E pF, lbM"},{"ID":"9060","标识":"IC1220","M标识":"IC1220","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h29m38.2s","赤经D(J2000)":"16.493944444444445","赤纬(J2000)":"+8h27m2s","赤纬D(J2000)":"8.450555555555555","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"most extremely faint, pretty small, extended","简略描述":"eeF, pS, E"},{"ID":"9061","标识":"IC1221","M标识":"IC1221","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h34m41.5s","赤经D(J2000)":"16.578194444444446","赤纬(J2000)":"+46h23m30s","赤纬D(J2000)":"46.391666666666666","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"0","详细描述":"most extremely faint, pretty small, extended, western of 2","简略描述":"eeF, pS, E, p of 2"},{"ID":"9062","标识":"IC1222","M标识":"IC1222","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h35m9s","赤经D(J2000)":"16.585833333333333","赤纬(J2000)":"+46h12m49s","赤纬D(J2000)":"46.21361111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"50","详细描述":"most extremely faint, pretty large, round, eastern of 2","简略描述":"eeF, pL, R, f of 2"},{"ID":"9063","标识":"IC1223","M标识":"IC1223","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h35m42.4s","赤经D(J2000)":"16.59511111111111","赤纬(J2000)":"+49h13m16s","赤纬D(J2000)":"49.221111111111114","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"18","详细描述":"","简略描述":"eeF, pS, R, bet 2 dist F st"},{"ID":"9064","标识":"IC1224","M标识":"IC1224","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h42m56.2s","赤经D(J2000)":"16.71561111111111","赤纬(J2000)":"+19h15m18s","赤纬D(J2000)":"19.255","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"90","详细描述":"very faint, very small, round, stellar","简略描述":"vF, vS, R, stellar"},{"ID":"9065","标识":"IC1225","M标识":"IC1225","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h36m52.3s","赤经D(J2000)":"16.61452777777778","赤纬(J2000)":"+67h37m45s","赤纬D(J2000)":"67.62916666666666","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"73","详细描述":"","简略描述":"eeF, vS, 2 or 3 F st inv, * p"},{"ID":"9066","标识":"IC1226","M标识":"IC1226","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h41m6.5s","赤经D(J2000)":"16.68513888888889","赤纬(J2000)":"+46h0m14s","赤纬D(J2000)":"46.00388888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"30","详细描述":"","简略描述":"eF, S, R, forms arc with 4 st"},{"ID":"9067","标识":"IC1227","M标识":"IC1227","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h40m7.9s","赤经D(J2000)":"16.668861111111113","赤纬(J2000)":"+58h37m2s","赤纬D(J2000)":"58.617222222222225","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, small, round, stellar nucleus","简略描述":"vF, S, R, stellar N"},{"ID":"9068","标识":"IC1228","M标识":"IC1228","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h42m6.4s","赤经D(J2000)":"16.701777777777778","赤纬(J2000)":"+65h35m8s","赤纬D(J2000)":"65.58555555555554","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.6","短轴(分)":"1.5","方位角":"39","详细描述":"","简略描述":"vF, pS * n, 4 st in curve s"},{"ID":"9069","标识":"IC1229","M标识":"IC1229","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h44m58.7s","赤经D(J2000)":"16.74963888888889","赤纬(J2000)":"+51h18m29s","赤纬D(J2000)":"51.308055555555555","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"90","详细描述":"most extremely faint, pretty small, very difficult, northwestern of 2","简略描述":"eeF, pS, v diffic, np of 2"},{"ID":"9070","标识":"IC1230","M标识":"IC1230","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S M","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h45m1.4s","赤经D(J2000)":"16.75038888888889","赤纬(J2000)":"+51h15m36s","赤纬D(J2000)":"51.26","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"most extremely faint, small, round, very difficult, southeastern of 2","简略描述":"eeF, L, R, v diffic, sf of 2"},{"ID":"9071","标识":"IC1231","M标识":"IC1231","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h46m59.1s","赤经D(J2000)":"16.783083333333334","赤纬(J2000)":"+58h25m22s","赤纬D(J2000)":"58.422777777777775","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.2","短轴(分)":"1","方位角":"155","详细描述":"","简略描述":"eeF, L, R, pB * sp"},{"ID":"9072","标识":"IC1232","M标识":"IC1232","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h49m42s","赤经D(J2000)":"16.828333333333333","赤纬(J2000)":"+46h5m22s","赤纬D(J2000)":"46.089444444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, irregularly round, bright star to the southeast","简略描述":"eeF, S, iR, B * sf"},{"ID":"9073","标识":"IC1233","M标识":"IC1233","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h48m24s","赤经D(J2000)":"16.80666666666667","赤纬(J2000)":"+63h8m0s","赤纬D(J2000)":"63.13333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, very extended, between 2 stars [= 6247?]","简略描述":"eF, vS, vE, bet 2 st [= 6247 ?]"},{"ID":"9074","标识":"IC1234","M标识":"IC1234","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h52m50.6s","赤经D(J2000)":"16.88072222222222","赤纬(J2000)":"+56h52m42s","赤纬D(J2000)":"56.87833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, sev st in neb ?"},{"ID":"9075","标识":"IC1235","M标识":"IC1235","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h52m3.1s","赤经D(J2000)":"16.867527777777777","赤纬(J2000)":"+63h6m58s","赤纬D(J2000)":"63.11611111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"21","详细描述":"","简略描述":"vF, dif, pS, * 8 nf 3'"},{"ID":"9076","标识":"IC1236","M标识":"IC1236","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h58m29.7s","赤经D(J2000)":"16.974916666666665","赤纬(J2000)":"+20h2m27s","赤纬D(J2000)":"20.040833333333335","可见光星等V":"13.6","摄影(蓝光)星等B":"14.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"0.8","方位角":"51","详细描述":"extremely faint, pretty small, very little extended, very faint star close to west","简略描述":"eF, pS, vlE, vF * close p"},{"ID":"9077","标识":"IC1237","M标识":"IC1237","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"16h56m15.9s","赤经D(J2000)":"16.93775","赤纬(J2000)":"+55h1m37s","赤纬D(J2000)":"55.026944444444446","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.9","短轴(分)":"1","方位角":"20","详细描述":"","简略描述":"eF, pL, lE, * nr p"},{"ID":"9078","标识":"IC1238","M标识":"IC1238","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h0m30.3s","赤经D(J2000)":"17.008416666666665","赤纬(J2000)":"+23h4m36s","赤纬D(J2000)":"23.076666666666668","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF (not obs by St)"},{"ID":"9079","标识":"IC1239","M标识":"IC1239","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h0m45s","赤经D(J2000)":"17.0125","赤纬(J2000)":"+23h2m40s","赤纬D(J2000)":"23.044444444444448","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"123","详细描述":"","简略描述":"eF, eF stell N [6276 ?]"},{"ID":"9080","标识":"IC1240","M标识":"IC1240","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h0m59.7s","赤经D(J2000)":"17.016583333333333","赤纬(J2000)":"+61h3m0s","赤纬D(J2000)":"61.05","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"suspected nebula, 3' northeast 8th magnitude star","简略描述":"Susp neb, 3' nf * 8.7"},{"ID":"9081","标识":"IC1241","M标识":"IC1241","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h1m28.1s","赤经D(J2000)":"17.024472222222222","赤纬(J2000)":"+63h41m28s","赤纬D(J2000)":"63.691111111111105","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"1","方位角":"165","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"9082","标识":"IC1242","M标识":"IC1242","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h8m42.9s","赤经D(J2000)":"17.14525","赤纬(J2000)":"+4h2m59s","赤纬D(J2000)":"4.049722222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"130","详细描述":"very small, round, very little brighter middle","简略描述":"vS, R, vlbM"},{"ID":"9083","标识":"IC1243","M标识":"IC1243","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h10m24.5s","赤经D(J2000)":"17.173472222222223","赤纬(J2000)":"+10h46m2s","赤纬D(J2000)":"10.767222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"","详细描述":"pretty faint, pretty small, much extended, mottled but not resolved","简略描述":"pF, pS, mE, r"},{"ID":"9084","标识":"IC1244","M标识":"IC1244","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h10m33.6s","赤经D(J2000)":"17.176000000000002","赤纬(J2000)":"+36h18m14s","赤纬D(J2000)":"36.303888888888885","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"very faint, pretty small, round, between 2 stars","简略描述":"vF, pS, R, bet 2 st"},{"ID":"9085","标识":"IC1245","M标识":"IC1245","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h12m36.8s","赤经D(J2000)":"17.21022222222222","赤纬(J2000)":"+38h1m13s","赤纬D(J2000)":"38.02027777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"125","详细描述":"extremely faint, small, round, brighter middle, faint star close to south","简略描述":"eF, S, R, bM, F * close s"},{"ID":"9086","标识":"IC1246","M标识":"IC1246","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h14m12.4s","赤经D(J2000)":"17.236777777777778","赤纬(J2000)":"+20h14m13s","赤纬D(J2000)":"20.236944444444447","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Neb * 13 ? * 10 n 1'"},{"ID":"9087","标识":"IC1247","M标识":"IC1247","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h16m22s","赤经D(J2000)":"17.272777777777776","赤纬(J2000)":"-12h46m53s","赤纬D(J2000)":"-12.78138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Stellar, * 9.8 sp 0'.7"},{"ID":"9088","标识":"IC1248","M标识":"IC1248","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h11m39.9s","赤经D(J2000)":"17.194416666666665","赤纬(J2000)":"+59h59m42s","赤纬D(J2000)":"59.995","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"30","详细描述":"","简略描述":"eeF, pS, R, bet 2 st p & f"},{"ID":"9089","标识":"IC1249","M标识":"IC1249","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h14m54.9s","赤经D(J2000)":"17.248583333333336","赤纬(J2000)":"+35h31m14s","赤纬D(J2000)":"35.52055555555555","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"","简略描述":"eeF, pS, R, v diffic, 4 st s"},{"ID":"9090","标识":"IC1250","M标识":"IC1250","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h14m29s","赤经D(J2000)":"17.24138888888889","赤纬(J2000)":"+57h25m2s","赤纬D(J2000)":"57.41722222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"60","详细描述":"pretty faint, small, considerably extended","简略描述":"pF, S, cE"},{"ID":"9091","标识":"IC1251","M标识":"IC1251","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h10m12.9s","赤经D(J2000)":"17.170250000000003","赤纬(J2000)":"+72h24m35s","赤纬D(J2000)":"72.40972222222223","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.5","短轴(分)":"1","方位角":"71","详细描述":"","简略描述":"eeF, pS, R, sp of 2, II. 767 nr"},{"ID":"9092","标识":"IC1252","M标识":"IC1252","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h15m50s","赤经D(J2000)":"17.26388888888889","赤纬(J2000)":"+57h22m1s","赤纬D(J2000)":"57.36694444444444","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.2","方位角":"142","详细描述":"very faint, pretty small, 12.5 magnitude star very close","简略描述":"vF, pS, * 12.5 v close"},{"ID":"9093","标识":"IC1253","M标识":"IC1253","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h19m54.6s","赤经D(J2000)":"17.331833333333332","赤纬(J2000)":"+16h39m38s","赤纬D(J2000)":"16.660555555555554","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"100","详细描述":"faint","简略描述":"F"},{"ID":"9094","标识":"IC1254","M标识":"IC1254","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h11m33.3s","赤经D(J2000)":"17.192583333333335","赤纬(J2000)":"+72h24m6s","赤纬D(J2000)":"72.40166666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"15","B-V":"1.2","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"32","详细描述":"most extremely faint, pretty small, round, northeastern of 2, very difficult","简略描述":"eeF, pS, R, nf of 2, v diffic"},{"ID":"9095","标识":"IC1255","M标识":"IC1255","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h23m5.4s","赤经D(J2000)":"17.384833333333333","赤纬(J2000)":"+12h41m46s","赤纬D(J2000)":"12.696111111111112","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.5","方位角":"12","详细描述":"","简略描述":"vF, pS, R, forms trap with 3 st"},{"ID":"9096","标识":"IC1256","M标识":"IC1256","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h23m47.3s","赤经D(J2000)":"17.396472222222222","赤纬(J2000)":"+26h29m11s","赤纬D(J2000)":"26.48638888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"97","详细描述":"faint, small, gradually brighter middle","简略描述":"F, S, gbM"},{"ID":"9097","标识":"IC1257","M标识":"IC1257","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"V","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h27m8.4s","赤经D(J2000)":"17.452333333333332","赤纬(J2000)":"-7h5m37s","赤纬D(J2000)":"-7.093611111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"faint, pretty large, a little brighter middle","简略描述":"F, pL, lbM"},{"ID":"9098","标识":"IC1258","M标识":"IC1258","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h27m17.2s","赤经D(J2000)":"17.454777777777778","赤纬(J2000)":"+58h29m7s","赤纬D(J2000)":"58.48527777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"65","详细描述":"pretty bright, pretty small, round, 1st of 3","简略描述":"pB, pS, R, 1st of 3"},{"ID":"9099","标识":"IC1259","M标识":"IC1259","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S M","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h27m26.7s","赤经D(J2000)":"17.457416666666667","赤纬(J2000)":"+58h30m59s","赤纬D(J2000)":"58.51638888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"pretty bright, pretty small, round, 2nd of 3","简略描述":"pB, pS, R, 2nd of 3"},{"ID":"9100","标识":"IC1260","M标识":"IC1260","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h27m31.6s","赤经D(J2000)":"17.458777777777776","赤纬(J2000)":"+58h28m35s","赤纬D(J2000)":"58.47638888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"most extremely faint, small, round, 3rd of 3","简略描述":"eeF, S, R, 3rd of 3"},{"ID":"9101","标识":"IC1261","M标识":"IC1261","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h23m20.7s","赤经D(J2000)":"17.389083333333332","赤纬(J2000)":"+71h15m50s","赤纬D(J2000)":"71.26388888888889","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"90","详细描述":"most extremely faint, pretty small, round","简略描述":"eeF, pS, R"},{"ID":"9102","标识":"IC1262","M标识":"IC1262","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h33m2s","赤经D(J2000)":"17.550555555555555","赤纬(J2000)":"+43h45m35s","赤纬D(J2000)":"43.75972222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"85","详细描述":"extremely faint, pretty small, round, 1st of 3","简略描述":"eF, pS, R, 1st of 3"},{"ID":"9103","标识":"IC1263","M标识":"IC1263","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h33m7s","赤经D(J2000)":"17.551944444444445","赤纬(J2000)":"+43h49m18s","赤纬D(J2000)":"43.82166666666667","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"168","详细描述":"extremely faint, pretty small, round, 2nd of 3","简略描述":"eF, pS, R, 2nd of 3"},{"ID":"9104","标识":"IC1264","M标识":"IC1264","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h33m16.8s","赤经D(J2000)":"17.554666666666666","赤纬(J2000)":"+43h37m44s","赤纬D(J2000)":"43.62888888888889","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"39","详细描述":"extremely faint, pretty small, round, 3rd of 3","简略描述":"eF, pS, R, 3rd of 3"},{"ID":"9105","标识":"IC1265","M标识":"IC1265","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h36m39.3s","赤经D(J2000)":"17.610916666666668","赤纬(J2000)":"+42h5m20s","赤纬D(J2000)":"42.08888888888889","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2","短轴(分)":"0.9","方位角":"80","详细描述":"most extremely faint, small, a little extended","简略描述":"eeF, S, lE"},{"ID":"9106","标识":"IC1266","M标识":"IC1266","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"17h45m35.5s","赤经D(J2000)":"17.75986111111111","赤纬(J2000)":"-46h5m19s","赤纬D(J2000)":"-46.08861111111111","可见光星等V":"99","摄影(蓝光)星等B":"12.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.17","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Stellar (gaseous spectrum)"},{"ID":"9107","标识":"IC1267","M标识":"IC1267","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h38m45.9s","赤经D(J2000)":"17.646083333333333","赤纬(J2000)":"+59h22m21s","赤纬D(J2000)":"59.3725","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.5","短轴(分)":"1","方位角":"35","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"9108","标识":"IC1268","M标识":"IC1268","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h50m39.2s","赤经D(J2000)":"17.84422222222222","赤纬(J2000)":"+17h12m36s","赤纬D(J2000)":"17.21","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"117","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"9109","标识":"IC1269","M标识":"IC1269","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h52m5.9s","赤经D(J2000)":"17.868305555555555","赤纬(J2000)":"+21h34m8s","赤纬D(J2000)":"21.56888888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"125","详细描述":"most extremely faint, pretty large, round, 2 faint stars near","简略描述":"eeF, pL, R, 2 F st nr"},{"ID":"9110","标识":"IC1270","M标识":"IC1270","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h47m57.3s","赤经D(J2000)":"17.79925","赤纬(J2000)":"+62h13m27s","赤纬D(J2000)":"62.22416666666667","可见光星等V":"99","摄影(蓝光)星等B":"13","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eeF, S, R, v diffic, 6488 f"},{"ID":"9111","标识":"IC1271","M标识":"IC1271","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+*","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h5m13s","赤经D(J2000)":"18.086944444444445","赤纬(J2000)":"-24h24m38s","赤纬D(J2000)":"-24.410555555555554","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very large, bright star involved","简略描述":"eF, vL, B * inv"},{"ID":"9112","标识":"IC1272","M标识":"IC1272","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h4m55.8s","赤经D(J2000)":"18.082166666666666","赤纬(J2000)":"+25h7m45s","赤纬D(J2000)":"25.129166666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a small cluster","简略描述":"S Cl"},{"ID":"9113","标识":"IC1273","M标识":"IC1273","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h5m3s","赤经D(J2000)":"18.084166666666665","赤纬(J2000)":"+25h8m2s","赤纬D(J2000)":"25.133888888888887","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, S Cl with neb ? * 10 f 3'"},{"ID":"9114","标识":"IC1274","M标识":"IC1274","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+*","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h9m50s","赤经D(J2000)":"18.163888888888888","赤纬(J2000)":"-23h38m54s","赤纬D(J2000)":"-23.648333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"6","短轴(分)":"5","方位角":"","详细描述":"","简略描述":"3 st 8.5 to 9m in pL neb"},{"ID":"9115","标识":"IC1275","M标识":"IC1275","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+*","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h10m7s","赤经D(J2000)":"18.16861111111111","赤纬(J2000)":"-23h45m42s","赤纬D(J2000)":"-23.761666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"2 st 8 & 8.5 in pL neb"},{"ID":"9116","标识":"IC1276","M标识":"IC1276","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"XII","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"18h10m45.7s","赤经D(J2000)":"18.179361111111113","赤纬(J2000)":"-7h12m40s","赤纬D(J2000)":"-7.211111111111111","可见光星等V":"10.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eeF, vL, v diffic, D * close p"},{"ID":"9117","标识":"IC1277","M标识":"IC1277","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h10m27.3s","赤经D(J2000)":"18.17425","赤纬(J2000)":"+31h0m12s","赤纬D(J2000)":"31.003333333333334","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"25","详细描述":"a small cluster","简略描述":"S Cl"},{"ID":"9118","标识":"IC1278","M标识":"IC1278","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h10m41.9s","赤经D(J2000)":"18.178305555555557","赤纬(J2000)":"+31h8m59s","赤纬D(J2000)":"31.149722222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.8","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, vS, sev st susp"},{"ID":"9119","标识":"IC1279","M标识":"IC1279","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h11m15.4s","赤经D(J2000)":"18.18761111111111","赤纬(J2000)":"+36h0m27s","赤纬D(J2000)":"36.0075","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.6","短轴(分)":"0.6","方位角":"159","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"9120","标识":"IC1280","M标识":"IC1280","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"C","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h12m18.3s","赤经D(J2000)":"18.205083333333334","赤纬(J2000)":"+25h39m46s","赤纬D(J2000)":"25.662777777777777","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"13th magnitude star, nebulous?","简略描述":"* 13, nebulous ?"},{"ID":"9121","标识":"IC1281","M标识":"IC1281","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h11m38.1s","赤经D(J2000)":"18.193916666666667","赤纬(J2000)":"+35h59m52s","赤纬D(J2000)":"35.99777777777778","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"3","详细描述":"","简略描述":"eeF, S, cE, sev st nr f [? = 1279]"},{"ID":"9122","标识":"IC1282","M标识":"IC1282","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h14m5.3s","赤经D(J2000)":"18.234805555555557","赤纬(J2000)":"+21h6m6s","赤纬D(J2000)":"21.101666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, 2 or 3 st susp"},{"ID":"9123","标识":"IC1283","M标识":"IC1283","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h17m16.7s","赤经D(J2000)":"18.287972222222223","赤纬(J2000)":"-19h45m44s","赤纬D(J2000)":"-19.76222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"3","方位角":"","详细描述":"","简略描述":"* 9.3 nebulous"},{"ID":"9124","标识":"IC1284","M标识":"IC1284","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+*","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h17m39.5s","赤经D(J2000)":"18.294305555555557","赤纬(J2000)":"-19h40m19s","赤纬D(J2000)":"-19.671944444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"17","短轴(分)":"15","方位角":"","详细描述":"","简略描述":"* 7.6 in neb, 15' diam"},{"ID":"9125","标识":"IC1285","M标识":"IC1285","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h16m9.8s","赤经D(J2000)":"18.269388888888887","赤纬(J2000)":"+25h6m8s","赤纬D(J2000)":"25.102222222222224","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a small cluster","简略描述":"S Cl"},{"ID":"9126","标识":"IC1286","M标识":"IC1286","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h16m14.4s","赤经D(J2000)":"18.270666666666667","赤纬(J2000)":"+55h35m24s","赤纬D(J2000)":"55.59","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"87","详细描述":"extremely faint, pretty small, round, 2 stars near","简略描述":"eF, pS, R, 2 st nr"},{"ID":"9127","标识":"IC1287","M标识":"IC1287","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"盾牌座","星座(En)":"SCT","赤经(J2000)":"18h31m26s","赤经D(J2000)":"18.523888888888887","赤纬(J2000)":"-10h47m42s","赤纬D(J2000)":"-10.795","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"10","方位角":"","详细描述":"","简略描述":"* 5.5 in L, E neb"},{"ID":"9128","标识":"IC1288","M标识":"IC1288","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h29m22.5s","赤经D(J2000)":"18.489583333333336","赤纬(J2000)":"+39h42m50s","赤纬D(J2000)":"39.71388888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"2","详细描述":"very faint, small, a little extended, 3 stars near","简略描述":"vF, S, lE, 3 st nr"},{"ID":"9129","标识":"IC1289","M标识":"IC1289","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h30m2.2s","赤经D(J2000)":"18.500611111111112","赤纬(J2000)":"+39h57m53s","赤纬D(J2000)":"39.96472222222223","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"145","详细描述":"most extremely faint, pretty small, a little extended, 3 stars near","简略描述":"eeF, pS, lE, 3 st nr"},{"ID":"9130","标识":"IC1290","M标识":"IC1290","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h38m28s","赤经D(J2000)":"18.641111111111112","赤纬(J2000)":"-24h6m48s","赤纬D(J2000)":"-24.113333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"1","方位角":"","详细描述":"no description","简略描述":"No descr"},{"ID":"9131","标识":"IC1291","M标识":"IC1291","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h33m52.4s","赤经D(J2000)":"18.564555555555557","赤纬(J2000)":"+49h16m43s","赤纬D(J2000)":"49.27861111111111","可见光星等V":"13","摄影(蓝光)星等B":"13.5","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.8","短轴(分)":"1.4","方位角":"39","详细描述":"extremely faint, very small, round, faint star close to north","简略描述":"eF, vS, R, F * close n"},{"ID":"9132","标识":"IC1292","M标识":"IC1292","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h44m40.3s","赤经D(J2000)":"18.74452777777778","赤纬(J2000)":"-27h48m54s","赤纬D(J2000)":"-27.815","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Stellar, gaseous spectrum, * 9.6 sf"},{"ID":"9133","标识":"IC1293","M标识":"IC1293","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h41m38s","赤经D(J2000)":"18.69388888888889","赤纬(J2000)":"+56h19m2s","赤纬D(J2000)":"56.31722222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eeF, S, lE, * in centre, ? D"},{"ID":"9134","标识":"IC1294","M标识":"IC1294","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h49m50.5s","赤经D(J2000)":"18.830694444444443","赤纬(J2000)":"+40h12m33s","赤纬D(J2000)":"40.20916666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, irregularly round, very difficult, faint star close to northeast","简略描述":"eeF, S, iR, v diffic, F * close nf"},{"ID":"9135","标识":"IC1295","M标识":"IC1295","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"盾牌座","星座(En)":"SCT","赤经(J2000)":"18h54m37.1s","赤经D(J2000)":"18.910305555555553","赤纬(J2000)":"-8h49m35s","赤纬D(J2000)":"-8.82638888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"15","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.5","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, gradually brighter middle","简略描述":"pB, pL, gbM"},{"ID":"9136","标识":"IC1296","M标识":"IC1296","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h53m18.8s","赤经D(J2000)":"18.888555555555556","赤纬(J2000)":"+33h3m59s","赤纬D(J2000)":"33.06638888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"80","详细描述":"","简略描述":"eF, pS, iR, 4' np M 57"},{"ID":"9137","标识":"IC1297","M标识":"IC1297","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"南冕座","星座(En)":"CRA","赤经(J2000)":"19h17m23.4s","赤经D(J2000)":"19.289833333333334","赤纬(J2000)":"-39h36m45s","赤纬D(J2000)":"-39.612500000000004","可见光星等V":"10.7","摄影(蓝光)星等B":"10.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.4","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Stellar (gaseous spectrum)"},{"ID":"9138","标识":"IC1298","M标识":"IC1298","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h18m35.4s","赤经D(J2000)":"19.309833333333334","赤纬(J2000)":"-1h35m46s","赤纬D(J2000)":"-1.5961111111111113","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vS Cl, 6778 p 3'"},{"ID":"9139","标识":"IC1299","M标识":"IC1299","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"19h22m42s","赤经D(J2000)":"19.378333333333334","赤纬(J2000)":"+20h44m24s","赤纬D(J2000)":"20.740000000000002","可见光星等V":"99","摄影(蓝光)星等B":"14","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"1","方位角":"","详细描述":"","简略描述":"S Cl of vF st"},{"ID":"9140","标识":"IC1300","M标识":"IC1300","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h24m3.1s","赤经D(J2000)":"19.40086111111111","赤纬(J2000)":"+53h37m27s","赤纬D(J2000)":"53.62416666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"141","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"9141","标识":"IC1301","M标识":"IC1301","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h26m31.9s","赤经D(J2000)":"19.442194444444446","赤纬(J2000)":"+50h7m33s","赤纬D(J2000)":"50.12583333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"17","详细描述":"most extremely faint, very small, round, 3 stars to east","简略描述":"eeF, vS, R, 3 st f"},{"ID":"9142","标识":"IC1302","M标识":"IC1302","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h30m52.8s","赤经D(J2000)":"19.514666666666667","赤纬(J2000)":"+35h47m6s","赤纬D(J2000)":"35.785","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"45","详细描述":"","简略描述":"vF, undefined"},{"ID":"9143","标识":"IC1303","M标识":"IC1303","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h31m30.2s","赤经D(J2000)":"19.525055555555554","赤纬(J2000)":"+35h52m33s","赤纬D(J2000)":"35.87583333333333","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"106","详细描述":"","简略描述":"vF, S, with S Cl"},{"ID":"9144","标识":"IC1304","M标识":"IC1304","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h35m36s","赤经D(J2000)":"19.593333333333334","赤纬(J2000)":"+41h6m36s","赤纬D(J2000)":"41.11","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F neby"},{"ID":"9145","标识":"IC1305","M标识":"IC1305","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"19h39m18s","赤经D(J2000)":"19.654999999999998","赤纬(J2000)":"+20h11m40s","赤纬D(J2000)":"20.194444444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, * 9.5 at sf end"},{"ID":"9146","标识":"IC1306","M标识":"IC1306","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h41m42s","赤经D(J2000)":"19.695","赤纬(J2000)":"+37h41m30s","赤纬D(J2000)":"37.69166666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Neb group of F st"},{"ID":"9147","标识":"IC1307","M标识":"IC1307","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"19h42m29s","赤经D(J2000)":"19.708055555555553","赤纬(J2000)":"+27h45m6s","赤纬D(J2000)":"27.751666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very large, extended north-south, star involved","简略描述":"F, vL, E ns, st inv"},{"ID":"9148","标识":"IC1308","M标识":"IC1308","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h45m5.2s","赤经D(J2000)":"19.751444444444445","赤纬(J2000)":"-14h43m17s","赤纬D(J2000)":"-14.721388888888889","可见光星等V":"14","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, eS, lE, gbM, 6822 p 12s"},{"ID":"9149","标识":"IC1309","M标识":"IC1309","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"20h3m1.4s","赤经D(J2000)":"20.05038888888889","赤纬(J2000)":"-17h13m57s","赤纬D(J2000)":"-17.232499999999998","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"35","详细描述":"faint, very small, round, mottled but not resolved","简略描述":"F, vS, R, r"},{"ID":"9150","标识":"IC1310","M标识":"IC1310","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h10m1s","赤经D(J2000)":"20.166944444444447","赤纬(J2000)":"+34h58m6s","赤纬D(J2000)":"34.968333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F neby"},{"ID":"9151","标识":"IC1311","M标识":"IC1311","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3rn","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h10m48s","赤经D(J2000)":"20.18","赤纬(J2000)":"+41h10m24s","赤纬D(J2000)":"41.17333333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, within circle of st"},{"ID":"9152","标识":"IC1312","M标识":"IC1312","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天箭座","星座(En)":"SGE","赤经(J2000)":"20h16m51.5s","赤经D(J2000)":"20.28097222222222","赤纬(J2000)":"+18h2m45s","赤纬D(J2000)":"18.045833333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large, diffuse","简略描述":"eF, pL, dif"},{"ID":"9153","标识":"IC1313","M标识":"IC1313","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h18m43.6s","赤经D(J2000)":"20.31211111111111","赤纬(J2000)":"-16h56m46s","赤纬D(J2000)":"-16.94611111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"15.5","长轴(分)":"2.1","短轴(分)":"1.9","方位角":"29","详细描述":"faint, very small, round, 13th magnitude star close","简略描述":"F, vS, R, * 13 close"},{"ID":"9154","标识":"IC1314","M标识":"IC1314","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"20h17m47s","赤经D(J2000)":"20.29638888888889","赤纬(J2000)":"+25h5m48s","赤纬D(J2000)":"25.096666666666664","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, pL, partly resolved"},{"ID":"9155","标识":"IC1315","M标识":"IC1315","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h17m21.7s","赤经D(J2000)":"20.289361111111113","赤纬(J2000)":"+30h41m17s","赤纬D(J2000)":"30.688055555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* 13 with eF neb?"},{"ID":"9156","标识":"IC1316","M标识":"IC1316","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h22m25.8s","赤经D(J2000)":"20.373833333333334","赤纬(J2000)":"+6h30m6s","赤纬D(J2000)":"6.501666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint nebula, suspected","简略描述":"eF neb, suspected"},{"ID":"9157","标识":"IC1317","M标识":"IC1317","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h23m15.5s","赤经D(J2000)":"20.387638888888887","赤纬(J2000)":"+0h39m53s","赤纬D(J2000)":"0.6647222222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"80","详细描述":"","简略描述":"Planetary = * 12, diam 10\"-15\""},{"ID":"9158","标识":"IC1318","M标识":"IC1318","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"天津一星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h22m14s","赤经D(J2000)":"20.370555555555555","赤纬(J2000)":"+40h15m24s","赤纬D(J2000)":"40.25666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"50","短轴(分)":"30","方位角":"","详细描述":"","简略描述":"γ Cygni, surrounded by L patches of F neby"},{"ID":"9159","标识":"IC1319","M标识":"IC1319","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h26m1.2s","赤经D(J2000)":"20.433666666666667","赤纬(J2000)":"-18h30m15s","赤纬D(J2000)":"-18.504166666666666","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"12","详细描述":"pretty faint, very small, round, mottled but not resolved","简略描述":"pF, vS, R, r"},{"ID":"9160","标识":"IC1320","M标识":"IC1320","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h26m25.7s","赤经D(J2000)":"20.440472222222223","赤纬(J2000)":"+2h54m34s","赤纬D(J2000)":"2.9094444444444445","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.6","方位角":"87","详细描述":"pretty faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"pF, S, R, gbM, r"},{"ID":"9161","标识":"IC1321","M标识":"IC1321","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h28m11s","赤经D(J2000)":"20.46972222222222","赤纬(J2000)":"-18h17m31s","赤纬D(J2000)":"-18.291944444444447","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"85","详细描述":"faint, small, irregular figure, mottled but not resolved","简略描述":"F, S, iF, r"},{"ID":"9162","标识":"IC1322","M标识":"IC1322","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h30m8.4s","赤经D(J2000)":"20.502333333333333","赤纬(J2000)":"-15h13m40s","赤纬D(J2000)":"-15.227777777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"100","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"9163","标识":"IC1323","M标识":"IC1323","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h30m29.7s","赤经D(J2000)":"20.50825","赤纬(J2000)":"-15h10m57s","赤纬D(J2000)":"-15.1825","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vS neb *"},{"ID":"9164","标识":"IC1324","M标识":"IC1324","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h32m12.2s","赤经D(J2000)":"20.536722222222224","赤纬(J2000)":"-9h3m20s","赤纬D(J2000)":"-9.055555555555557","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"39","详细描述":"","简略描述":"eeF, S, R, * 8m s"},{"ID":"9165","标识":"IC1325","M标识":"IC1325","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h32m50.1s","赤经D(J2000)":"20.547250000000002","赤纬(J2000)":"+9h55m39s","赤纬D(J2000)":"9.9275","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2.1","短轴(分)":"0.6","方位角":"106","详细描述":"very faint, small, several faint stars involved, southwestern of 2","简略描述":"vF, S, sev F st inv, sp of 2"},{"ID":"9166","标识":"IC1326","M标识":"IC1326","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h32m58.8s","赤经D(J2000)":"20.549666666666667","赤纬(J2000)":"+9h52m26s","赤纬D(J2000)":"9.873888888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"8","详细描述":"","简略描述":"eeF, S, mE, pF * s, nf of 2"},{"ID":"9167","标识":"IC1327","M标识":"IC1327","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h35m41.3s","赤经D(J2000)":"20.594805555555553","赤纬(J2000)":"-0h0m19s","赤纬D(J2000)":"-0.005277777777777778","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"170","详细描述":"","简略描述":"vF, * 8 1' f"},{"ID":"9168","标识":"IC1328","M标识":"IC1328","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h41m57s","赤经D(J2000)":"20.699166666666667","赤纬(J2000)":"-19h37m59s","赤纬D(J2000)":"-19.633055555555558","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"49","详细描述":"faint, small, very faint star close","简略描述":"F, S, vF * close"},{"ID":"9169","标识":"IC1329","M标识":"IC1329","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"20h43m42.3s","赤经D(J2000)":"20.728416666666664","赤纬(J2000)":"+15h35m16s","赤纬D(J2000)":"15.587777777777779","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eeF, pL, R, bet 4 st, v diffic"},{"ID":"9170","标识":"IC1330","M标识":"IC1330","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h46m14.8s","赤经D(J2000)":"20.770777777777777","赤纬(J2000)":"-14h1m22s","赤纬D(J2000)":"-14.022777777777778","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"115","详细描述":"faint, very small, diffuse","简略描述":"F, vS, dif"},{"ID":"9171","标识":"IC1331","M标识":"IC1331","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h47m48.8s","赤经D(J2000)":"20.79688888888889","赤纬(J2000)":"-9h59m44s","赤纬D(J2000)":"-9.995555555555555","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"85","详细描述":"faint, small, brighter middle, mottled but not resolved","简略描述":"F, S, bM, r"},{"ID":"9172","标识":"IC1332","M标识":"IC1332","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h51m51.3s","赤经D(J2000)":"20.864250000000002","赤纬(J2000)":"-13h42m40s","赤纬D(J2000)":"-13.71111111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"66","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"9173","标识":"IC1333","M标识":"IC1333","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h52m17.1s","赤经D(J2000)":"20.87141666666667","赤纬(J2000)":"-16h17m9s","赤纬D(J2000)":"-16.285833333333336","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"69","详细描述":"faint, small, gradually brighter middle, mottled but not resolved","简略描述":"vF, vS, sbM"},{"ID":"9174","标识":"IC1334","M标识":"IC1334","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h52m17.1s","赤经D(J2000)":"20.87141666666667","赤纬(J2000)":"-16h17m9s","赤纬D(J2000)":"-16.285833333333336","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"69","详细描述":"faint, small","简略描述":"F, S"},{"ID":"9175","标识":"IC1335","M标识":"IC1335","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h53m6s","赤经D(J2000)":"20.884999999999998","赤纬(J2000)":"-16h20m6s","赤纬D(J2000)":"-16.334999999999997","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, stellar","简略描述":"F, S, stellar"},{"ID":"9176","标识":"IC1336","M标识":"IC1336","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h55m5s","赤经D(J2000)":"20.918055555555558","赤纬(J2000)":"-18h2m19s","赤纬D(J2000)":"-18.038611111111113","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"36","详细描述":"very faint, small, diffuse, faint star to east","简略描述":"vF, S, dif, F * f"},{"ID":"9177","标识":"IC1337","M标识":"IC1337","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h56m52.6s","赤经D(J2000)":"20.947944444444445","赤纬(J2000)":"-16h35m6s","赤纬D(J2000)":"-16.584999999999997","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"178","详细描述":"faint, very small, round, gradually brighter middle","简略描述":"F, vS, R, gbM"},{"ID":"9178","标识":"IC1338","M标识":"IC1338","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h56m57.7s","赤经D(J2000)":"20.949361111111113","赤纬(J2000)":"-16h29m32s","赤纬D(J2000)":"-16.492222222222225","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"40","详细描述":"very faint, very small, diffuse","简略描述":"vF, vS, dif"},{"ID":"9179","标识":"IC1339","M标识":"IC1339","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h57m55.5s","赤经D(J2000)":"20.965416666666666","赤纬(J2000)":"-17h56m32s","赤纬D(J2000)":"-17.942222222222224","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"55","详细描述":"faint, small, gradually brighter middle, mottled but not resolved","简略描述":"F, S, gbM, r"},{"ID":"9180","标识":"IC1340","M标识":"IC1340","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"SNR","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h56m8s","赤经D(J2000)":"20.935555555555556","赤纬(J2000)":"+31h2m54s","赤纬D(J2000)":"31.048333333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"20","方位角":"","详细描述":"","简略描述":"Possibly conn with h 2093"},{"ID":"9181","标识":"IC1341","M标识":"IC1341","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h0m16.6s","赤经D(J2000)":"21.00461111111111","赤纬(J2000)":"-13h58m33s","赤纬D(J2000)":"-13.975833333333334","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"73","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"9182","标识":"IC1342","M标识":"IC1342","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h0m25.5s","赤经D(J2000)":"21.007083333333334","赤纬(J2000)":"-14h29m42s","赤纬D(J2000)":"-14.495","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"78","详细描述":"very faint, very small, extended east-west, a little brighter middle","简略描述":"vF, vS, E pf, lbM"},{"ID":"9183","标识":"IC1343","M标识":"IC1343","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h1m0.7s","赤经D(J2000)":"21.016861111111112","赤纬(J2000)":"-15h24m13s","赤纬D(J2000)":"-15.403611111111111","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1","短轴(分)":"0.5","方位角":"177","详细描述":"pretty bright, very small, round, much brighter middle","简略描述":"pB, vS, R, mbM"},{"ID":"9184","标识":"IC1344","M标识":"IC1344","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h1m16.5s","赤经D(J2000)":"21.02125","赤纬(J2000)":"-13h22m49s","赤纬D(J2000)":"-13.380277777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.4","方位角":"54","详细描述":"pretty bright, pretty large, irregular figure, suddenly brighter middle","简略描述":"pB, pL, iF, sbM"},{"ID":"9185","标识":"IC1345","M标识":"IC1345","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h1m22.1s","赤经D(J2000)":"21.022805555555554","赤纬(J2000)":"-13h23m51s","赤纬D(J2000)":"-13.397499999999999","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, small, round, very little brighter middle","简略描述":"vF, S, R, vlbM"},{"ID":"9186","标识":"IC1346","M标识":"IC1346","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h1m37.1s","赤经D(J2000)":"21.02697222222222","赤纬(J2000)":"-13h57m37s","赤纬D(J2000)":"-13.960277777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"102","详细描述":"pretty bright, very small, round, gradually brighter middle","简略描述":"pB, vS, R, gbM"},{"ID":"9187","标识":"IC1347","M标识":"IC1347","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h1m44.3s","赤经D(J2000)":"21.028972222222222","赤纬(J2000)":"-13h18m46s","赤纬D(J2000)":"-13.312777777777779","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"18","详细描述":"pretty bright, round","简略描述":"pB, R"},{"ID":"9188","标识":"IC1348","M标识":"IC1348","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h1m43.9s","赤经D(J2000)":"21.02886111111111","赤纬(J2000)":"-13h21m25s","赤纬D(J2000)":"-13.356944444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"150","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"9189","标识":"IC1349","M标识":"IC1349","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h1m50.4s","赤经D(J2000)":"21.030666666666665","赤纬(J2000)":"-13h15m54s","赤纬D(J2000)":"-13.265","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"50","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"9190","标识":"IC1350","M标识":"IC1350","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h1m52.2s","赤经D(J2000)":"21.031166666666667","赤纬(J2000)":"-13h51m8s","赤纬D(J2000)":"-13.852222222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"171","详细描述":"faint, small, irregular figure, a little brighter middle, mottled but not resolved","简略描述":"F, S, iF, lbM, r"},{"ID":"9191","标识":"IC1351","M标识":"IC1351","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h1m52.3s","赤经D(J2000)":"21.031194444444445","赤纬(J2000)":"-13h12m5s","赤纬D(J2000)":"-13.201388888888888","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"20","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"9192","标识":"IC1352","M标识":"IC1352","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h1m54.8s","赤经D(J2000)":"21.031888888888886","赤纬(J2000)":"-13h23m4s","赤纬D(J2000)":"-13.384444444444444","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"10","详细描述":"pretty bright","简略描述":"pB"},{"ID":"9193","标识":"IC1353","M标识":"IC1353","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h1m56.3s","赤经D(J2000)":"21.032305555555556","赤纬(J2000)":"-13h16m21s","赤纬D(J2000)":"-13.2725","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"9194","标识":"IC1354","M标识":"IC1354","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h1m52.2s","赤经D(J2000)":"21.031166666666667","赤纬(J2000)":"-13h51m8s","赤纬D(J2000)":"-13.852222222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"171","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"9195","标识":"IC1355","M标识":"IC1355","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h1m58.3s","赤经D(J2000)":"21.03286111111111","赤纬(J2000)":"-13h10m21s","赤纬D(J2000)":"-13.1725","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"9196","标识":"IC1356","M标识":"IC1356","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h2m53s","赤经D(J2000)":"21.048055555555557","赤纬(J2000)":"-15h48m43s","赤纬D(J2000)":"-15.811944444444444","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"168","详细描述":"faint, round, suddenly brighter middle","简略描述":"F, R, sbM"},{"ID":"9197","标识":"IC1357","M标识":"IC1357","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h5m57.2s","赤经D(J2000)":"21.09922222222222","赤纬(J2000)":"-10h42m57s","赤纬D(J2000)":"-10.715833333333332","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"39","详细描述":"very faint, very small, irregular figure, very little brighter middle","简略描述":"vF, vS, iF, vlbM"},{"ID":"9198","标识":"IC1358","M标识":"IC1358","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h6m29.7s","赤经D(J2000)":"21.10825","赤纬(J2000)":"-16h12m13s","赤纬D(J2000)":"-16.203611111111112","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"45","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"9199","标识":"IC1359","M标识":"IC1359","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"21h8m43s","赤经D(J2000)":"21.14527777777778","赤纬(J2000)":"+12h29m2s","赤纬D(J2000)":"12.483888888888888","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"175","详细描述":"","简略描述":"eeF, eS, stellar, eF * att"},{"ID":"9200","标识":"IC1360","M标识":"IC1360","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小马座","星座(En)":"EQU","赤经(J2000)":"21h10m50.3s","赤经D(J2000)":"21.18063888888889","赤纬(J2000)":"+5h4m18s","赤纬D(J2000)":"5.071666666666666","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"20","详细描述":"faint, diffuse","简略描述":"F, dif"},{"ID":"9201","标识":"IC1361","M标识":"IC1361","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"小马座","星座(En)":"EQU","赤经(J2000)":"21h11m29.1s","赤经D(J2000)":"21.191416666666665","赤纬(J2000)":"+5h3m17s","赤纬D(J2000)":"5.054722222222222","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"45","详细描述":"very faint, very small, diffuse","简略描述":"vF, vS, dif"},{"ID":"9202","标识":"IC1362","M标识":"IC1362","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h11m52.6s","赤经D(J2000)":"21.197944444444445","赤纬(J2000)":"+2h19m46s","赤纬D(J2000)":"2.3294444444444444","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"0","详细描述":"","简略描述":"vF, vS, R, * 14 nf"},{"ID":"9203","标识":"IC1363","M标识":"IC1363","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h10m40s","赤经D(J2000)":"21.17777777777778","赤纬(J2000)":"+46h52m12s","赤纬D(J2000)":"46.87","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, * 9.4 at s end"},{"ID":"9204","标识":"IC1364","M标识":"IC1364","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"小马座","星座(En)":"EQU","赤经(J2000)":"21h13m24.6s","赤经D(J2000)":"21.223499999999998","赤纬(J2000)":"+2h46m13s","赤纬D(J2000)":"2.770277777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.6","方位角":"130","详细描述":"pretty bright, pretty small, round, suddenly brighter middle","简略描述":"pB, pS, R, sbM"},{"ID":"9205","标识":"IC1365","M标识":"IC1365","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"ZW II 108星系群","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"小马座","星座(En)":"EQU","赤经(J2000)":"21h13m56s","赤经D(J2000)":"21.23222222222222","赤纬(J2000)":"+2h33m55s","赤纬D(J2000)":"2.5652777777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"57","详细描述":"","简略描述":"eF, pS, R (Spit. another p ?)"},{"ID":"9206","标识":"IC1366","M标识":"IC1366","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h14m7.9s","赤经D(J2000)":"21.23552777777778","赤纬(J2000)":"+1h46m36s","赤纬D(J2000)":"1.7766666666666666","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"10","详细描述":"","简略描述":"F, S, iR, bet 2 st 11 & 13"},{"ID":"9207","标识":"IC1367","M标识":"IC1367","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小马座","星座(En)":"EQU","赤经(J2000)":"21h14m9.6s","赤经D(J2000)":"21.236","赤纬(J2000)":"+2h59m40s","赤纬D(J2000)":"2.9944444444444445","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"10.9","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"140","详细描述":"very faint, very small, round, faint star near","简略描述":"vF, vS, R, F * nr"},{"ID":"9208","标识":"IC1368","M标识":"IC1368","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h14m12.6s","赤经D(J2000)":"21.236833333333333","赤纬(J2000)":"+2h10m42s","赤纬D(J2000)":"2.1783333333333332","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"48","详细描述":"most extremely faint, small, round, very difficult","简略描述":"eeF, S, R, v diffic"},{"ID":"9209","标识":"IC1369","M标识":"IC1369","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I1m","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h12m9s","赤经D(J2000)":"21.2025","赤纬(J2000)":"+47h46m0s","赤纬D(J2000)":"47.766666666666666","可见光星等V":"8.8","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"","简略描述":"S neb Cl of st 13m"},{"ID":"9210","标识":"IC1370","M标识":"IC1370","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"5C","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h15m14.3s","赤经D(J2000)":"21.253972222222224","赤纬(J2000)":"+2h11m32s","赤纬D(J2000)":"2.192222222222222","可见光星等V":"14.6","摄影(蓝光)星等B":"15.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"131","详细描述":"very faint, 2 faint stars involved","简略描述":"vF, 2 F st inv"},{"ID":"9211","标识":"IC1371","M标识":"IC1371","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h20m15.6s","赤经D(J2000)":"21.337666666666667","赤纬(J2000)":"-4h52m34s","赤纬D(J2000)":"-4.876111111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"15","详细描述":"faint, small, diffuse, gradually brighter middle, mottled but not resolved","简略描述":"F, S, dif, gbM, r"},{"ID":"9212","标识":"IC1372","M标识":"IC1372","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h20m17.1s","赤经D(J2000)":"21.338083333333334","赤纬(J2000)":"-5h36m17s","赤纬D(J2000)":"-5.604722222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"140","详细描述":"very faint, very small, round, diffuse, 14th magnitude star to southeast","简略描述":"vF, vS, R, dif, * 14 sf"},{"ID":"9213","标识":"IC1373","M标识":"IC1373","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h20m37.1s","赤经D(J2000)":"21.343638888888886","赤纬(J2000)":"+1h5m35s","赤纬D(J2000)":"1.0930555555555554","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"","简略描述":"F, vS, R, sbM, 2 others south"},{"ID":"9214","标识":"IC1374","M标识":"IC1374","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h21m2.6s","赤经D(J2000)":"21.350722222222224","赤纬(J2000)":"+1h42m49s","赤纬D(J2000)":"1.713611111111111","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"very faint, very small, a little brighter middle","简略描述":"vF, vS, lbM"},{"ID":"9215","标识":"IC1375","M标识":"IC1375","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"小马座","星座(En)":"EQU","赤经(J2000)":"21h20m59.7s","赤经D(J2000)":"21.349916666666665","赤纬(J2000)":"+3h59m9s","赤纬D(J2000)":"3.9858333333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.7","方位角":"138","详细描述":"faint, small, 2 faint stars involved","简略描述":"F, S, 2 F st inv"},{"ID":"9216","标识":"IC1376","M标识":"IC1376","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h24m42s","赤经D(J2000)":"21.411666666666665","赤纬(J2000)":"-5h44m34s","赤纬D(J2000)":"-5.7427777777777775","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"no description","简略描述":"No descr"},{"ID":"9217","标识":"IC1377","M标识":"IC1377","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"小马座","星座(En)":"EQU","赤经(J2000)":"21h25m26.8s","赤经D(J2000)":"21.424111111111113","赤纬(J2000)":"+4h18m51s","赤纬D(J2000)":"4.314166666666667","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"120","详细描述":"pretty bright, small, round","简略描述":"pB, S, R"},{"ID":"9218","标识":"IC1378","M标识":"IC1378","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"21h22m52s","赤经D(J2000)":"21.38111111111111","赤纬(J2000)":"+55h27m50s","赤纬D(J2000)":"55.46388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, diffuse, faint star involved","简略描述":"F, dif, F st inv"},{"ID":"9219","标识":"IC1379","M标识":"IC1379","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"小马座","星座(En)":"EQU","赤经(J2000)":"21h26m1.1s","赤经D(J2000)":"21.43363888888889","赤纬(J2000)":"+3h5m50s","赤纬D(J2000)":"3.0972222222222223","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, brighter middle, stellar","简略描述":"vF, bM, stellar"},{"ID":"9220","标识":"IC1380","M标识":"IC1380","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h27m10.9s","赤经D(J2000)":"21.453027777777777","赤纬(J2000)":"+2h43m5s","赤纬D(J2000)":"2.718055555555556","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"pretty bright, small","简略描述":"pB, S"},{"ID":"9221","标识":"IC1381","M标识":"IC1381","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h27m33.6s","赤经D(J2000)":"21.459333333333333","赤纬(J2000)":"-1h11m17s","赤纬D(J2000)":"-1.1880555555555556","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"57","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"9222","标识":"IC1382","M标识":"IC1382","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h22m7.5s","赤经D(J2000)":"21.368750000000002","赤纬(J2000)":"+18h39m56s","赤纬D(J2000)":"18.665555555555553","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"57","详细描述":"pretty faint, pretty small, irregular figure","简略描述":"pF, pS, iF"},{"ID":"9223","标识":"IC1383","M标识":"IC1383","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h27m39.5s","赤经D(J2000)":"21.46097222222222","赤纬(J2000)":"-1h6m8s","赤纬D(J2000)":"-1.1022222222222222","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"140","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stellar"},{"ID":"9224","标识":"IC1384","M标识":"IC1384","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h27m53s","赤经D(J2000)":"21.46472222222222","赤纬(J2000)":"-1h22m7s","赤纬D(J2000)":"-1.3686111111111112","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"9225","标识":"IC1385","M标识":"IC1385","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h28m51.1s","赤经D(J2000)":"21.48086111111111","赤纬(J2000)":"-1h4m11s","赤纬D(J2000)":"-1.0697222222222222","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"pretty bright, very small, round","简略描述":"pB, vS, R"},{"ID":"9226","标识":"IC1386","M标识":"IC1386","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h29m37.4s","赤经D(J2000)":"21.493722222222225","赤纬(J2000)":"-21h11m44s","赤纬D(J2000)":"-21.195555555555554","可见光星等V":"13.1","摄影(蓝光)星等B":"14.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"130","详细描述":"","简略描述":"F, biN, or neb D *"},{"ID":"9227","标识":"IC1387","M标识":"IC1387","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h29m34.4s","赤经D(J2000)":"21.49288888888889","赤纬(J2000)":"-1h21m2s","赤纬D(J2000)":"-1.3505555555555557","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"6","详细描述":"pretty bright, very small, irregular figure","简略描述":"pB, vS, iF"},{"ID":"9228","标识":"IC1388","M标识":"IC1388","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h29m52.1s","赤经D(J2000)":"21.497805555555555","赤纬(J2000)":"-0h37m51s","赤纬D(J2000)":"-0.6308333333333334","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"135","详细描述":"extremely faint, very small, 2 stars to northeast","简略描述":"eF, vS, 2 st nf"},{"ID":"9229","标识":"IC1389","M标识":"IC1389","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h32m8s","赤经D(J2000)":"21.535555555555558","赤纬(J2000)":"-18h1m9s","赤纬D(J2000)":"-18.019166666666667","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"120","详细描述":"faint, very small, round, gradually brighter middle","简略描述":"F, vS, R, gbM"},{"ID":"9230","标识":"IC1390","M标识":"IC1390","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h32m24.9s","赤经D(J2000)":"21.54025","赤纬(J2000)":"-1h51m43s","赤纬D(J2000)":"-1.8619444444444446","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"162","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"9231","标识":"IC1391","M标识":"IC1391","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h35m0.4s","赤经D(J2000)":"21.583444444444442","赤纬(J2000)":"-0h30m41s","赤纬D(J2000)":"-0.5113888888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"9232","标识":"IC1392","M标识":"IC1392","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h35m32.6s","赤经D(J2000)":"21.592388888888888","赤纬(J2000)":"+35h23m55s","赤纬D(J2000)":"35.39861111111111","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"75","详细描述":"","简略描述":"pB, vmbM *"},{"ID":"9233","标识":"IC1393","M标识":"IC1393","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h40m14.1s","赤经D(J2000)":"21.670583333333333","赤纬(J2000)":"-22h24m40s","赤纬D(J2000)":"-22.41111111111111","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"174","详细描述":"extremely faint, very small, round, diffuse","简略描述":"eF, vS, R, dif"},{"ID":"9234","标识":"IC1394","M标识":"IC1394","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h40m12.9s","赤经D(J2000)":"21.670250000000003","赤纬(J2000)":"+14h38m1s","赤纬D(J2000)":"14.63361111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1","短轴(分)":"0.9","方位角":"177","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"9235","标识":"IC1395","M标识":"IC1395","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h41m41.3s","赤经D(J2000)":"21.694805555555554","赤纬(J2000)":"+4h6m18s","赤纬D(J2000)":"4.1049999999999995","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, irregular figure, a little brighter middle","简略描述":"vF, vS, iF, lbM"},{"ID":"9236","标识":"IC1396","M标识":"IC1396","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"象鼻星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"21h38m54s","赤经D(J2000)":"21.648333333333333","赤纬(J2000)":"+57h29m20s","赤纬D(J2000)":"57.48888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"170","短轴(分)":"140","方位角":"","详细描述":"","简略描述":"Neb part of M. Way"},{"ID":"9237","标识":"IC1397","M标识":"IC1397","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h44m2.2s","赤经D(J2000)":"21.733944444444447","赤纬(J2000)":"-4h53m4s","赤纬D(J2000)":"-4.884444444444444","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"0","详细描述":"faint, very small, stellar","简略描述":"F, vS, stellar"},{"ID":"9238","标识":"IC1398","M标识":"IC1398","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h45m51.4s","赤经D(J2000)":"21.764277777777778","赤纬(J2000)":"+9h28m32s","赤纬D(J2000)":"9.475555555555555","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"81","详细描述":"very faint, very small, brighter middle","简略描述":"vF, vS, bM"},{"ID":"9239","标识":"IC1399","M标识":"IC1399","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h46m8.8s","赤经D(J2000)":"21.76911111111111","赤纬(J2000)":"+4h24m10s","赤纬D(J2000)":"4.402777777777779","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stellar"},{"ID":"9240","标识":"IC1400","M标识":"IC1400","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h44m16s","赤经D(J2000)":"21.73777777777778","赤纬(J2000)":"+52h58m0s","赤纬D(J2000)":"52.96666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, dif, partly resolved"},{"ID":"9241","标识":"IC1401","M标识":"IC1401","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h46m59.5s","赤经D(J2000)":"21.783194444444444","赤纬(J2000)":"+1h42m41s","赤纬D(J2000)":"1.7113888888888888","可见光星等V":"13.8","摄影(蓝光)星等B":"14.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"175","详细描述":"pretty bright, pretty small, mottled but not resolved","简略描述":"pB, pS, r"},{"ID":"9242","标识":"IC1402","M标识":"IC1402","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h44m58s","赤经D(J2000)":"21.749444444444446","赤纬(J2000)":"+53h15m48s","赤纬D(J2000)":"53.263333333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, partly res, st 14m"},{"ID":"9243","标识":"IC1403","M标识":"IC1403","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h50m29s","赤经D(J2000)":"21.841388888888886","赤纬(J2000)":"-2h42m56s","赤纬D(J2000)":"-2.715555555555556","可见光星等V":"15.8","摄影(蓝光)星等B":"16.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"160","详细描述":"extremely faint, small, faint, star attached, very difficult","简略描述":"eF, S, F, * att, v diffic"},{"ID":"9244","标识":"IC1404","M标识":"IC1404","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h50m56.3s","赤经D(J2000)":"21.848972222222223","赤纬(J2000)":"-9h15m58s","赤纬D(J2000)":"-9.266111111111112","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, very small, round, suddenly brighter middle like a 13th-magnitude star","简略描述":"F, vS, R, sbM * 13"},{"ID":"9245","标识":"IC1405","M标识":"IC1405","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h50m49.8s","赤经D(J2000)":"21.847166666666666","赤纬(J2000)":"+2h1m17s","赤纬D(J2000)":"2.0213888888888887","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"115","详细描述":"pretty bright, very small, round, brighter middle","简略描述":"pB, vS, R, bM"},{"ID":"9246","标识":"IC1406","M标识":"IC1406","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h51m4.8s","赤经D(J2000)":"21.851333333333336","赤纬(J2000)":"+1h59m15s","赤纬D(J2000)":"1.9875","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stellar"},{"ID":"9247","标识":"IC1407","M标识":"IC1407","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h52m23.4s","赤经D(J2000)":"21.873166666666666","赤纬(J2000)":"+3h25m36s","赤纬D(J2000)":"3.4266666666666663","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, mottled but not resolved","简略描述":"F, S, r"},{"ID":"9248","标识":"IC1408","M标识":"IC1408","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h53m8.9s","赤经D(J2000)":"21.885805555555557","赤纬(J2000)":"-13h20m47s","赤纬D(J2000)":"-13.346388888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.4","方位角":"33","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"9249","标识":"IC1409","M标识":"IC1409","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h53m19.5s","赤经D(J2000)":"21.888749999999998","赤纬(J2000)":"-7h29m59s","赤纬D(J2000)":"-7.499722222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"20","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"9250","标识":"IC1410","M标识":"IC1410","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h56m2.1s","赤经D(J2000)":"21.93391666666667","赤纬(J2000)":"-2h53m59s","赤纬D(J2000)":"-2.899722222222222","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"130","详细描述":"pretty faint, very small nucleus","简略描述":"pF, vSN"},{"ID":"9251","标识":"IC1411","M标识":"IC1411","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h56m0.5s","赤经D(J2000)":"21.93347222222222","赤纬(J2000)":"-1h31m0s","赤纬D(J2000)":"-1.5166666666666666","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"31","详细描述":"faint, very small, round, very little brighter middle","简略描述":"F, vS, R, vlbM"},{"ID":"9252","标识":"IC1412","M标识":"IC1412","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h58m18.5s","赤经D(J2000)":"21.971805555555555","赤纬(J2000)":"-17h10m36s","赤纬D(J2000)":"-17.17666666666667","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"99","详细描述":"","简略描述":"F, vS, ? D stell neb"},{"ID":"9253","标识":"IC1413","M标识":"IC1413","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h58m26.8s","赤经D(J2000)":"21.97411111111111","赤纬(J2000)":"-3h6m6s","赤纬D(J2000)":"-3.1016666666666666","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"73","详细描述":"faint, small, stellar","简略描述":"F, S, stellar"},{"ID":"9254","标识":"IC1414","M标识":"IC1414","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h58m18s","赤经D(J2000)":"21.971666666666664","赤纬(J2000)":"+8h25m26s","赤纬D(J2000)":"8.423888888888888","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"vF, vS, R, 2 F st s"},{"ID":"9255","标识":"IC1415","M标识":"IC1415","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h58m42.6s","赤经D(J2000)":"21.978499999999997","赤纬(J2000)":"+1h21m1s","赤纬D(J2000)":"1.350277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, * 9.5 sf 8'"},{"ID":"9256","标识":"IC1416","M标识":"IC1416","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h58m49.5s","赤经D(J2000)":"21.980416666666667","赤纬(J2000)":"+1h27m5s","赤纬D(J2000)":"1.4513888888888888","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF trace of neby"},{"ID":"9257","标识":"IC1417","M标识":"IC1417","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h0m21.7s","赤经D(J2000)":"22.006027777777778","赤纬(J2000)":"-13h8m49s","赤纬D(J2000)":"-13.146944444444443","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"108","详细描述":"","简略描述":"pB, pL, part more condensed"},{"ID":"9258","标识":"IC1418","M标识":"IC1418","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h1m59.9s","赤经D(J2000)":"22.033305555555554","赤纬(J2000)":"+4h23m5s","赤纬D(J2000)":"4.384722222222223","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"0","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"9259","标识":"IC1419","M标识":"IC1419","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h2m58.8s","赤经D(J2000)":"22.049666666666667","赤纬(J2000)":"-9h55m14s","赤纬D(J2000)":"-9.920555555555556","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"170","详细描述":"extremely faint, suddenly a little brighter middle","简略描述":"eF, slbM"},{"ID":"9260","标识":"IC1420","M标识":"IC1420","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h2m31.5s","赤经D(J2000)":"22.042083333333334","赤纬(J2000)":"+19h45m0s","赤纬D(J2000)":"19.75","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"90","详细描述":"most extremely faint, pretty small, round, between 2 faint stars","简略描述":"eeF, pS, R, bet 2 F st"},{"ID":"9261","标识":"IC1421","M标识":"IC1421","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h3m3.9s","赤经D(J2000)":"22.051083333333334","赤纬(J2000)":"-9h58m40s","赤纬D(J2000)":"-9.977777777777778","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"60","详细描述":"","简略描述":"Neb * 14m"},{"ID":"9262","标识":"IC1422","M标识":"IC1422","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h3m0s","赤经D(J2000)":"22.05","赤纬(J2000)":"+2h35m58s","赤纬D(J2000)":"2.5994444444444444","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"135","详细描述":"","简略描述":"vF, eS, lbM, bet 2 st 13.5"},{"ID":"9263","标识":"IC1423","M标识":"IC1423","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h3m12.8s","赤经D(J2000)":"22.053555555555555","赤纬(J2000)":"+4h17m53s","赤纬D(J2000)":"4.298055555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.5","方位角":"35","详细描述":"faint, very small, round, gradually a very little brighter middle","简略描述":"F, vS, R, gvlbM"},{"ID":"9264","标识":"IC1424","M标识":"IC1424","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h3m9.3s","赤经D(J2000)":"22.052583333333335","赤纬(J2000)":"+11h11m52s","赤纬D(J2000)":"11.197777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, vS, 1' f 7190"},{"ID":"9265","标识":"IC1425","M标识":"IC1425","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h3m24.4s","赤经D(J2000)":"22.05677777777778","赤纬(J2000)":"+2h35m43s","赤纬D(J2000)":"2.595277777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"100","详细描述":"faint, a little extended east-west, mottled but not resolved, perhaps double","简略描述":"F, lE pf, r, D ?"},{"ID":"9266","标识":"IC1426","M标识":"IC1426","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h3m53.1s","赤经D(J2000)":"22.06475","赤纬(J2000)":"-9h54m35s","赤纬D(J2000)":"-9.909722222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, irregular figure, a little brighter middle","简略描述":"F, S, iF, lbM"},{"ID":"9267","标识":"IC1427","M标识":"IC1427","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h3m35.1s","赤经D(J2000)":"22.05975","赤纬(J2000)":"+15h6m26s","赤纬D(J2000)":"15.107222222222221","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"0.9","方位角":"105","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"9268","标识":"IC1428","M标识":"IC1428","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h4m27.7s","赤经D(J2000)":"22.07436111111111","赤纬(J2000)":"+2h37m52s","赤纬D(J2000)":"2.631111111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"50","详细描述":"very faint, small, round, 14th magnitude star near","简略描述":"vF, S, R, * 14 nr"},{"ID":"9269","标识":"IC1429","M标识":"IC1429","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h7m2.5s","赤经D(J2000)":"22.117361111111112","赤纬(J2000)":"+10h6m32s","赤纬D(J2000)":"10.108888888888888","可见光星等V":"99","摄影(蓝光)星等B":"14.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Neb susp close to * 11"},{"ID":"9270","标识":"IC1430","M标识":"IC1430","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h7m29.7s","赤经D(J2000)":"22.124916666666667","赤纬(J2000)":"-13h34m51s","赤纬D(J2000)":"-13.580833333333333","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, very little brighter middle, difficult","简略描述":"F, S, vlbM, diffic"},{"ID":"9271","标识":"IC1431","M标识":"IC1431","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h7m39.5s","赤经D(J2000)":"22.12763888888889","赤纬(J2000)":"-13h30m48s","赤纬D(J2000)":"-13.513333333333334","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"150","详细描述":"extremely faint, very difficult, faint star to northwest","简略描述":"eF, v diffic, F * np"},{"ID":"9272","标识":"IC1432","M标识":"IC1432","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h10m3.9s","赤经D(J2000)":"22.16775","赤纬(J2000)":"+3h41m24s","赤纬D(J2000)":"3.6900000000000004","可见光星等V":"16","摄影(蓝光)星等B":"16.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"10","详细描述":"very faint, very small, suddenly brighter middle equivalent to 14th magnitude star, 13.5 magnitude star near","简略描述":"vF, vS, sbM * 14, * 13.5 nr"},{"ID":"9273","标识":"IC1433","M标识":"IC1433","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h12m10.5s","赤经D(J2000)":"22.202916666666667","赤纬(J2000)":"-12h45m54s","赤纬D(J2000)":"-12.765","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"111","详细描述":"faint, small, extended east-west, brighter middle","简略描述":"F, S, E pf, bM"},{"ID":"9274","标识":"IC1434","M标识":"IC1434","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II1p","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h10m30s","赤经D(J2000)":"22.175","赤纬(J2000)":"+52h50m0s","赤纬D(J2000)":"52.833333333333336","可见光星等V":"9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Fine Cl, 6 branches, st 12-15m"},{"ID":"9275","标识":"IC1435","M标识":"IC1435","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h13m26.1s","赤经D(J2000)":"22.223916666666664","赤纬(J2000)":"-22h5m47s","赤纬D(J2000)":"-22.09638888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.6","方位角":"8","详细描述":"faint, small","简略描述":"F, S"},{"ID":"9276","标识":"IC1436","M标识":"IC1436","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h13m51.3s","赤经D(J2000)":"22.230916666666666","赤纬(J2000)":"-10h11m29s","赤纬D(J2000)":"-10.19138888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"63","详细描述":"extremely faint, very small, round, very small nucleus","简略描述":"eF, vS, R, vSN"},{"ID":"9277","标识":"IC1437","M标识":"IC1437","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h15m44.9s","赤经D(J2000)":"22.26247222222222","赤纬(J2000)":"+2h3m57s","赤纬D(J2000)":"2.065833333333333","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"1","方位角":"72","详细描述":"pretty bright, very small, round, much brighter middle","简略描述":"pB, vS, R, mbM"},{"ID":"9278","标识":"IC1438","M标识":"IC1438","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h16m29s","赤经D(J2000)":"22.27472222222222","赤纬(J2000)":"-21h25m51s","赤纬D(J2000)":"-21.430833333333336","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.4","短轴(分)":"2.1","方位角":"2","详细描述":"faint, binuclear","简略描述":"F, biN"},{"ID":"9279","标识":"IC1439","M标识":"IC1439","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h16m40.2s","赤经D(J2000)":"22.277833333333334","赤纬(J2000)":"-21h29m8s","赤纬D(J2000)":"-21.485555555555557","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"33","详细描述":"very faint, small, very little brighter middle","简略描述":"vF, S, vlbM"},{"ID":"9280","标识":"IC1440","M标识":"IC1440","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h16m33.2s","赤经D(J2000)":"22.275888888888886","赤纬(J2000)":"-16h0m59s","赤纬D(J2000)":"-16.01638888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"78","详细描述":"faint, small, stellar","简略描述":"F, S, stellar"},{"ID":"9281","标识":"IC1441","M标识":"IC1441","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h15m19.1s","赤经D(J2000)":"22.255305555555555","赤纬(J2000)":"+37h18m3s","赤纬D(J2000)":"37.30083333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"30","详细描述":"","简略描述":"eF, S, S stellar N"},{"ID":"9282","标识":"IC1442","M标识":"IC1442","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h16m6s","赤经D(J2000)":"22.26833333333333","赤纬(J2000)":"+53h59m30s","赤纬D(J2000)":"53.99166666666667","可见光星等V":"9.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl of neb stars"},{"ID":"9283","标识":"IC1443","M标识":"IC1443","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h19m3.6s","赤经D(J2000)":"22.317666666666668","赤纬(J2000)":"-20h56m24s","赤纬D(J2000)":"-20.94","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"36","详细描述":"pretty bright, small, irregular figure, much brighter middle","简略描述":"pB, S, iF, mbM"},{"ID":"9284","标识":"IC1444","M标识":"IC1444","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h22m23.8s","赤经D(J2000)":"22.37327777777778","赤纬(J2000)":"+5h8m23s","赤纬D(J2000)":"5.139722222222223","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, irregular figure, much brighter middle, very faint star close","简略描述":"F, S, iF, mbM, vF * close"},{"ID":"9285","标识":"IC1445","M标识":"IC1445","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h25m30.2s","赤经D(J2000)":"22.425055555555556","赤纬(J2000)":"-17h14m37s","赤纬D(J2000)":"-17.24361111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"80","详细描述":"pretty faint, very small, gradually brighter middle and nucleus","简略描述":"pF, vS, gbMN"},{"ID":"9286","标识":"IC1446","M标识":"IC1446","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h29m4.6s","赤经D(J2000)":"22.48461111111111","赤纬(J2000)":"-1h11m3s","赤纬D(J2000)":"-1.1841666666666666","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"15","详细描述":"very faint, stellar","简略描述":"vF, stellar"},{"ID":"9287","标识":"IC1447","M标识":"IC1447","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h29m59.8s","赤经D(J2000)":"22.499944444444445","赤纬(J2000)":"-5h7m10s","赤纬D(J2000)":"-5.1194444444444445","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"108","详细描述":"","简略描述":"eeF, pS, R, * 9.0 n 3'"},{"ID":"9288","标识":"IC1448","M标识":"IC1448","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h34m32s","赤经D(J2000)":"22.575555555555557","赤纬(J2000)":"-12h56m1s","赤纬D(J2000)":"-12.93361111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"145","详细描述":"very faint, very small, difficult","简略描述":"vF, vS, diffic"},{"ID":"9289","标识":"IC1449","M标识":"IC1449","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h35m7s","赤经D(J2000)":"22.585277777777776","赤纬(J2000)":"-8h45m56s","赤纬D(J2000)":"-8.765555555555556","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"45","详细描述":"faint, small, irregular figure, brighter middle, mottled but not resolved","简略描述":"F, S, iF, bM, r"},{"ID":"9290","标识":"IC1450","M标识":"IC1450","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h37m58s","赤经D(J2000)":"22.63277777777778","赤纬(J2000)":"+34h32m9s","赤纬D(J2000)":"34.53583333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, stellar","简略描述":"vF, eS, stellar"},{"ID":"9291","标识":"IC1451","M标识":"IC1451","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h46m7.4s","赤经D(J2000)":"22.76872222222222","赤纬(J2000)":"-10h22m13s","赤纬D(J2000)":"-10.370277777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"vF, S, dif, vS, excent N"},{"ID":"9292","标识":"IC1452","M标识":"IC1452","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h45m59.2s","赤经D(J2000)":"22.766444444444446","赤纬(J2000)":"+10h52m5s","赤纬D(J2000)":"10.868055555555555","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"160","详细描述":"","简略描述":"vF, vS, quite stellar"},{"ID":"9293","标识":"IC1453","M标识":"IC1453","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h46m54.4s","赤经D(J2000)":"22.781777777777776","赤纬(J2000)":"-13h26m58s","赤纬D(J2000)":"-13.449444444444445","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"156","详细描述":"pretty bright, pretty large, round","简略描述":"pB, pL, R"},{"ID":"9294","标识":"IC1454","M标识":"IC1454","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"22h42m24.5s","赤经D(J2000)":"22.706805555555555","赤纬(J2000)":"+80h26m35s","赤纬D(J2000)":"80.44305555555556","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.63","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, S, * 7 m 4' f"},{"ID":"9295","标识":"IC1455","M标识":"IC1455","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"22h53m46s","赤经D(J2000)":"22.89611111111111","赤纬(J2000)":"+1h22m21s","赤纬D(J2000)":"1.3725","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"30","详细描述":"faint, pretty small, round, 2 stars of 11th magnitude near","简略描述":"F, pS, R, 2 st 11 nr"},{"ID":"9296","标识":"IC1456","M标识":"IC1456","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h55m18.2s","赤经D(J2000)":"22.921722222222222","赤纬(J2000)":"-12h43m55s","赤纬D(J2000)":"-12.731944444444444","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"120","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"9297","标识":"IC1457","M标识":"IC1457","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h55m23.8s","赤经D(J2000)":"22.92327777777778","赤纬(J2000)":"-5h33m45s","赤纬D(J2000)":"-5.5625","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, * 10 sf 1'"},{"ID":"9298","标识":"IC1458","M标识":"IC1458","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h56m41.4s","赤经D(J2000)":"22.944833333333335","赤纬(J2000)":"-7h22m47s","赤纬D(J2000)":"-7.379722222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"144","详细描述":"very faint, pretty large, diffuse","简略描述":"vF, pL, dif"},{"ID":"9299","标识":"IC1459","M标识":"IC1459","拓展名":"","组件":"","Class":"","业余排名":"3","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h57m10.4s","赤经D(J2000)":"22.95288888888889","赤纬(J2000)":"-36h27m45s","赤纬D(J2000)":"-36.462500000000006","可见光星等V":"10","摄影(蓝光)星等B":"11","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"5.2","短轴(分)":"1.8","方位角":"40","详细描述":"","简略描述":"F, pS, com, N = 12m"},{"ID":"9300","标识":"IC1460","M标识":"IC1460","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"22h57m4s","赤经D(J2000)":"22.95111111111111","赤纬(J2000)":"+4h40m39s","赤纬D(J2000)":"4.6775","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"pretty bright, very small, much brighter middle","简略描述":"pB, vS, mbM"},{"ID":"9301","标识":"IC1461","M标识":"IC1461","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h58m34.2s","赤经D(J2000)":"22.976166666666664","赤纬(J2000)":"+15h10m24s","赤纬D(J2000)":"15.173333333333332","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"144","详细描述":"most extremely faint, very small, round","简略描述":"eeF, vS, R"},{"ID":"9302","标识":"IC1462","M标识":"IC1462","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h58m37.2s","赤经D(J2000)":"22.976999999999997","赤纬(J2000)":"+8h26m28s","赤纬D(J2000)":"8.44111111111111","可见光星等V":"99","摄影(蓝光)星等B":"14.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, eS, ? only a *"},{"ID":"9303","标识":"IC1463","M标识":"IC1463","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h59m21.1s","赤经D(J2000)":"22.989194444444447","赤纬(J2000)":"-10h31m51s","赤纬D(J2000)":"-10.530833333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Neb * 14m"},{"ID":"9304","标识":"IC1464","M标识":"IC1464","拓展名":"A","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S M","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h3m11s","赤经D(J2000)":"23.053055555555556","赤纬(J2000)":"-8h59m19s","赤纬D(J2000)":"-8.98861111111111","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"15","详细描述":"faint, mottled but not resolved, perhaps double","简略描述":"F, r, D ?"},{"ID":"9305","标识":"IC1465","M标识":"IC1465","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h2m53.5s","赤经D(J2000)":"23.048194444444444","赤纬(J2000)":"+16h34m57s","赤纬D(J2000)":"16.5825","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, a very small cluster?","简略描述":"vF, ? vS Cl"},{"ID":"9306","标识":"IC1466","M标识":"IC1466","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h3m39s","赤经D(J2000)":"23.060833333333335","赤纬(J2000)":"-2h46m32s","赤纬D(J2000)":"-2.7755555555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"130","详细描述":"pretty bright, very small, irregular figure","简略描述":"pB, vS, iF"},{"ID":"9307","标识":"IC1467","M标识":"IC1467","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h4m49.6s","赤经D(J2000)":"23.080444444444446","赤纬(J2000)":"-3h13m52s","赤纬D(J2000)":"-3.2311111111111113","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"5","详细描述":"faint, small, binuclear","简略描述":"F, S, biN"},{"ID":"9308","标识":"IC1468","M标识":"IC1468","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h5m7.3s","赤经D(J2000)":"23.08536111111111","赤纬(J2000)":"-3h12m19s","赤纬D(J2000)":"-3.205277777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"156","详细描述":"very faint, very small, irregular figure, suddenly brighter middle","简略描述":"vF, vS, iF, sbM"},{"ID":"9309","标识":"IC1469","M标识":"IC1469","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h6m28.5s","赤经D(J2000)":"23.107916666666668","赤纬(J2000)":"-13h32m11s","赤纬D(J2000)":"-13.536388888888888","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"85","详细描述":"faint, small, round, faint star to east","简略描述":"F, S, R, F * f"},{"ID":"9310","标识":"IC1470","M标识":"IC1470","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"23h5m10.4s","赤经D(J2000)":"23.086222222222222","赤纬(J2000)":"+60h14m32s","赤纬D(J2000)":"60.242222222222225","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"","简略描述":"vF, vS, stellar N north edge"},{"ID":"9311","标识":"IC1471","M标识":"IC1471","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h8m45s","赤经D(J2000)":"23.145833333333332","赤纬(J2000)":"-12h38m21s","赤纬D(J2000)":"-12.639166666666666","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"165","详细描述":"pretty bright, small, round, brighter middle","简略描述":"pB, S, R, bM"},{"ID":"9312","标识":"IC1472","M标识":"IC1472","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h9m6.6s","赤经D(J2000)":"23.151833333333332","赤纬(J2000)":"+17h15m35s","赤纬D(J2000)":"17.259722222222223","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"57","详细描述":"faint, very small, brighter middle, 2 stars to east","简略描述":"F, vS, bM, 2 st f"},{"ID":"9313","标识":"IC1473","M标识":"IC1473","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h11m5.2s","赤经D(J2000)":"23.18477777777778","赤纬(J2000)":"+29h38m35s","赤纬D(J2000)":"29.643055555555556","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.1","短轴(分)":"1","方位角":"176","详细描述":"faint, pretty small, gradually brighter middle","简略描述":"F, pS, gbM"},{"ID":"9314","标识":"IC1474","M标识":"IC1474","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h12m51.3s","赤经D(J2000)":"23.21425","赤纬(J2000)":"+5h48m21s","赤纬D(J2000)":"5.805833333333333","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"150","详细描述":"faint, round, pretty small, gradually brighter middle","简略描述":"F, R, pS, gbM"},{"ID":"9315","标识":"IC1475","M标识":"IC1475","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h14m2s","赤经D(J2000)":"23.233888888888888","赤纬(J2000)":"-28h25m18s","赤纬D(J2000)":"-28.421666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a nebulous star","简略描述":"Neb *"},{"ID":"9316","标识":"IC1476","M标识":"IC1476","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h14m16.3s","赤经D(J2000)":"23.237861111111112","赤纬(J2000)":"+30h33m7s","赤纬D(J2000)":"30.551944444444445","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"","简略描述":"S Cl ?"},{"ID":"9317","标识":"IC1477","M标识":"IC1477","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h17m12s","赤经D(J2000)":"23.28666666666667","赤纬(J2000)":"-6h54m42s","赤纬D(J2000)":"-6.911666666666667","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.5","方位角":"34","详细描述":"faint, small, mottled but not resolved","简略描述":"F, S, r"},{"ID":"9318","标识":"IC1478","M标识":"IC1478","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h18m13.9s","赤经D(J2000)":"23.30386111111111","赤纬(J2000)":"+10h17m52s","赤纬D(J2000)":"10.297777777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"30","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"9319","标识":"IC1479","M标识":"IC1479","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h18m46.3s","赤经D(J2000)":"23.31286111111111","赤纬(J2000)":"-10h23m55s","赤纬D(J2000)":"-10.39861111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"1","方位角":"18","详细描述":"pretty faint, small, round, stellar","简略描述":"pF, S, R, stellar"},{"ID":"9320","标识":"IC1480","M标识":"IC1480","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Dup","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h18m59.4s","赤经D(J2000)":"23.3165","赤纬(J2000)":"+11h20m31s","赤纬D(J2000)":"11.341944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very small cluster, nebulous?","简略描述":"vS Cl, nebs ?"},{"ID":"9321","标识":"IC1481","M标识":"IC1481","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h19m25s","赤经D(J2000)":"23.32361111111111","赤纬(J2000)":"+5h54m21s","赤纬D(J2000)":"5.905833333333334","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"42","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"9322","标识":"IC1482","M标识":"IC1482","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h20m49.4s","赤经D(J2000)":"23.347055555555553","赤纬(J2000)":"+1h44m22s","赤纬D(J2000)":"1.7394444444444446","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"123","详细描述":"pretty bright, very small, round","简略描述":"pB, vS, R"},{"ID":"9323","标识":"IC1483","M标识":"IC1483","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h22m33s","赤经D(J2000)":"23.375833333333333","赤纬(J2000)":"+11h19m46s","赤纬D(J2000)":"11.329444444444444","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, small, a little brighter middle","简略描述":"F, S, lbM"},{"ID":"9324","标识":"IC1484","M标识":"IC1484","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h22m39.9s","赤经D(J2000)":"23.37775","赤纬(J2000)":"+11h23m6s","赤纬D(J2000)":"11.385","可见光星等V":"17","摄影(蓝光)星等B":"17.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"45","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"9325","标识":"IC1485","M标识":"IC1485","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h22m48.2s","赤经D(J2000)":"23.380055555555558","赤纬(J2000)":"+11h22m24s","赤纬D(J2000)":"11.373333333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"123","详细描述":"very faint, very small, round, very small nucleus","简略描述":"vF, vS, R, vSN"},{"ID":"9326","标识":"IC1486","M标识":"IC1486","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h23m54.2s","赤经D(J2000)":"23.39838888888889","赤纬(J2000)":"+9h40m6s","赤纬D(J2000)":"9.668333333333333","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1","方位角":"85","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"9327","标识":"IC1487","M标识":"IC1487","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h24m20.1s","赤经D(J2000)":"23.405583333333333","赤纬(J2000)":"+14h38m49s","赤纬D(J2000)":"14.646944444444443","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.3","短轴(分)":"1","方位角":"80","详细描述":"most extremely faint, pretty small, irregularly round, 8th magnitude star to east, faint star to northeast","简略描述":"eeF, pS, iR, * 8 f, F * nf"},{"ID":"9328","标识":"IC1488","M标识":"IC1488","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h25m38.5s","赤经D(J2000)":"23.42736111111111","赤纬(J2000)":"+15h21m14s","赤纬D(J2000)":"15.35388888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"170","详细描述":"","简略描述":"eF, vS, E ns, v diffic, h 2237 s"},{"ID":"9329","标识":"IC1489","M标识":"IC1489","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h26m32.1s","赤经D(J2000)":"23.44225","赤纬(J2000)":"-12h30m59s","赤纬D(J2000)":"-12.516388888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"30","详细描述":"","简略描述":"F, vS, R, * 9 south"},{"ID":"9330","标识":"IC1490","M标识":"IC1490","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h59m10.7s","赤经D(J2000)":"23.986305555555557","赤纬(J2000)":"-4h7m37s","赤纬D(J2000)":"-4.126944444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.7","短轴(分)":"0.7","方位角":"80","详细描述":"","简略描述":"eF, pS, R, vF * close n"},{"ID":"9331","标识":"IC1491","M标识":"IC1491","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h29m24.5s","赤经D(J2000)":"23.49013888888889","赤纬(J2000)":"-16h18m58s","赤纬D(J2000)":"-16.316111111111113","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"159","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"9332","标识":"IC1492","M标识":"IC1492","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h30m36s","赤经D(J2000)":"23.51","赤纬(J2000)":"-3h2m22s","赤纬D(J2000)":"-3.0394444444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.8","方位角":"36","详细描述":"extremely faint, small, round, southwestern of 2","简略描述":"eF, S, R, sp of 2"},{"ID":"9333","标识":"IC1493","M标识":"IC1493","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h30m27.4s","赤经D(J2000)":"23.50761111111111","赤纬(J2000)":"+14h27m30s","赤纬D(J2000)":"14.458333333333332","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"135","详细描述":"","简略描述":"F, vS, sbM, another susp 7s p, 1' n"},{"ID":"9334","标识":"IC1494","M标识":"IC1494","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h30m46.1s","赤经D(J2000)":"23.512805555555556","赤纬(J2000)":"-12h43m27s","赤纬D(J2000)":"-12.724166666666667","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"120","详细描述":"faint, round, a little brighter middle","简略描述":"F, R, lbM"},{"ID":"9335","标识":"IC1495","M标识":"IC1495","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h30m47.5s","赤经D(J2000)":"23.513194444444444","赤纬(J2000)":"-13h29m7s","赤纬D(J2000)":"-13.485277777777776","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"1","方位角":"170","详细描述":"faint, small, a little brighter middle","简略描述":"F, S, lbM"},{"ID":"9336","标识":"IC1496","M标识":"IC1496","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h30m53.4s","赤经D(J2000)":"23.514833333333332","赤纬(J2000)":"-2h56m2s","赤纬D(J2000)":"-2.933888888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"85","详细描述":"most extremely faint, pretty small, round, northeastern of 2","简略描述":"eeF, pS, R, nf of 2"},{"ID":"9337","标识":"IC1497","M标识":"IC1497","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h28m50s","赤经D(J2000)":"23.480555555555554","赤纬(J2000)":"+11h59m13s","赤纬D(J2000)":"11.986944444444443","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, (only) suspected","简略描述":"eF, suspected"},{"ID":"9338","标识":"IC1498","M标识":"IC1498","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h31m53.5s","赤经D(J2000)":"23.531527777777775","赤纬(J2000)":"-5h0m23s","赤纬D(J2000)":"-5.006388888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.9","短轴(分)":"0.6","方位角":"11","详细描述":"","简略描述":"eeF, pS, R, * 9.5 p 36s, 3' s"},{"ID":"9339","标识":"IC1499","M标识":"IC1499","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h31m57s","赤经D(J2000)":"23.5325","赤纬(J2000)":"-13h26m22s","赤纬D(J2000)":"-13.439444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, irregular figure","简略描述":"pB, pL, iF"},{"ID":"9340","标识":"IC1500","M标识":"IC1500","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h33m9.5s","赤经D(J2000)":"23.55263888888889","赤纬(J2000)":"+4h33m9s","赤纬D(J2000)":"4.5525","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"10","详细描述":"faint, very small, extended north-south, a little brighter middle","简略描述":"F, vS, E ns, lbM"},{"ID":"9341","标识":"IC1501","M标识":"IC1501","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h34m40.1s","赤经D(J2000)":"23.577805555555557","赤纬(J2000)":"-3h9m13s","赤纬D(J2000)":"-3.153611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"136","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"9342","标识":"IC1502","M标识":"IC1502","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"23h36m20.1s","赤经D(J2000)":"23.605583333333335","赤纬(J2000)":"+75h38m51s","赤纬D(J2000)":"75.64750000000001","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"52","详细描述":"very faint, small, very faint star close","简略描述":"vF, S, vF * close"},{"ID":"9343","标识":"IC1503","M标识":"IC1503","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h38m27.2s","赤经D(J2000)":"23.640888888888888","赤纬(J2000)":"+4h48m5s","赤纬D(J2000)":"4.801388888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"65","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"9344","标识":"IC1504","M标识":"IC1504","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h41m19.6s","赤经D(J2000)":"23.688777777777776","赤纬(J2000)":"+4h1m6s","赤纬D(J2000)":"4.0183333333333335","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"94","详细描述":"faint, pretty large, extended east-west, gradually brighter middle","简略描述":"F, pL, E pf, gbM"},{"ID":"9345","标识":"IC1505","M标识":"IC1505","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h41m37s","赤经D(J2000)":"23.69361111111111","赤纬(J2000)":"-3h33m53s","赤纬D(J2000)":"-3.564722222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"156","详细描述":"most extremely faint, pretty small, round, 3 stars to east, difficult","简略描述":"eeF, pS, R, 3 st f, diffic"},{"ID":"9346","标识":"IC1506","M标识":"IC1506","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h44m48.3s","赤经D(J2000)":"23.746750000000002","赤纬(J2000)":"+4h44m10s","赤纬D(J2000)":"4.736111111111112","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"135","详细描述":"very faint, gradually brighter middle","简略描述":"vF, gbM"},{"ID":"9347","标识":"IC1507","M标识":"IC1507","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h45m33s","赤经D(J2000)":"23.759166666666665","赤纬(J2000)":"+1h41m21s","赤纬D(J2000)":"1.6891666666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"134","详细描述":"pretty bright, irregular figure, much brighter middle","简略描述":"pB, iF, mbM"},{"ID":"9348","标识":"IC1508","M标识":"IC1508","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h45m55.1s","赤经D(J2000)":"23.765305555555557","赤纬(J2000)":"+12h3m40s","赤纬D(J2000)":"12.061111111111112","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2","短轴(分)":"0.5","方位角":"168","详细描述":"faint, pretty large, extended north-south","简略描述":"F, pL, E ns"},{"ID":"9349","标识":"IC1509","M标识":"IC1509","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h47m16.6s","赤经D(J2000)":"23.787944444444445","赤纬(J2000)":"-15h18m26s","赤纬D(J2000)":"-15.307222222222222","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.2","方位角":"12","详细描述":"faint, small, extended north-south, gradually brighter middle","简略描述":"F, S, E ns, gbM"},{"ID":"9350","标识":"IC1510","M标识":"IC1510","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h50m33s","赤经D(J2000)":"23.842499999999998","赤纬(J2000)":"+2h4m20s","赤纬D(J2000)":"2.0722222222222224","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"70","详细描述":"faint, small, round, binuclear","简略描述":"F, S, R, biN"},{"ID":"9351","标识":"IC1511","M标识":"IC1511","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h51m0.4s","赤经D(J2000)":"23.85011111111111","赤纬(J2000)":"+27h3m46s","赤纬D(J2000)":"27.06277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, susp close to * 12.5"},{"ID":"9352","标识":"IC1512","M标识":"IC1512","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h51m1.4s","赤经D(J2000)":"23.85038888888889","赤纬(J2000)":"+27h1m38s","赤纬D(J2000)":"27.02722222222222","可见光星等V":"99","摄影(蓝光)星等B":"14","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"13th magnitude star, nebulous?","简略描述":"* 13, nebulous ?"},{"ID":"9353","标识":"IC1513","M标识":"IC1513","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h53m29.2s","赤经D(J2000)":"23.891444444444446","赤纬(J2000)":"+11h19m4s","赤纬D(J2000)":"11.317777777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.3","方位角":"107","详细描述":"faint, very small, extended east-west, gradually brighter middle","简略描述":"F, vS, E pf, gbM"},{"ID":"9354","标识":"IC1514","M标识":"IC1514","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h54m16.5s","赤经D(J2000)":"23.90458333333333","赤纬(J2000)":"-13h35m11s","赤纬D(J2000)":"-13.586388888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"153","详细描述":"","简略描述":"vF, S, excent N"},{"ID":"9355","标识":"IC1515","M标识":"IC1515","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h56m4.1s","赤经D(J2000)":"23.934472222222222","赤纬(J2000)":"-0h59m19s","赤纬D(J2000)":"-0.9886111111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"1","方位角":"13","详细描述":"most extremely faint, pretty small, 9.5 magnitude star involved, between 2 stars","简略描述":"eeF, pS, * 9.5 inv, bet 2 st"},{"ID":"9356","标识":"IC1516","M标识":"IC1516","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h56m7.1s","赤经D(J2000)":"23.935305555555555","赤纬(J2000)":"-0h55m1s","赤纬D(J2000)":"-0.9169444444444445","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"65","详细描述":"very faint, pretty small, round, bright star to southeast, northeastern of 2","简略描述":"vF, pS, R, B * sf, nf of 2"},{"ID":"9357","标识":"IC1517","M标识":"IC1517","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h56m18.9s","赤经D(J2000)":"23.938583333333334","赤纬(J2000)":"-0h18m20s","赤纬D(J2000)":"-0.3055555555555555","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"most extremely faint, very small, round, 3 stars to west","简略描述":"eeF, vS, R, 3 st p"},{"ID":"9358","标识":"IC1518","M标识":"IC1518","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h57m6s","赤经D(J2000)":"23.951666666666664","赤纬(J2000)":"+12h27m56s","赤纬D(J2000)":"12.465555555555556","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"80","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"9359","标识":"IC1519","M标识":"IC1519","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h57m8.3s","赤经D(J2000)":"23.952305555555554","赤纬(J2000)":"+12h27m29s","赤纬D(J2000)":"12.458055555555555","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"","详细描述":"faint, very small, a little brighter middle, stellar","简略描述":"F, vS, lbM, stellar"},{"ID":"9360","标识":"IC1520","M标识":"IC1520","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"23h57m54.5s","赤经D(J2000)":"23.965138888888887","赤纬(J2000)":"-14h2m20s","赤纬D(J2000)":"-14.03888888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"165","详细描述":"very faint, pretty large, round","简略描述":"vF, pL, R"},{"ID":"9361","标识":"IC1521","M标识":"IC1521","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"23h58m59.7s","赤经D(J2000)":"23.983249999999998","赤纬(J2000)":"-7h8m46s","赤纬D(J2000)":"-7.146111111111112","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"110","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"9362","标识":"IC1522","M标识":"IC1522","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h59m3.4s","赤经D(J2000)":"23.98427777777778","赤纬(J2000)":"+1h43m13s","赤纬D(J2000)":"1.7202777777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.3","方位角":"12","详细描述":"faint, small, extended north-south","简略描述":"F, S, E ns"},{"ID":"9363","标识":"IC1523","M标识":"IC1523","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h59m6.5s","赤经D(J2000)":"23.98513888888889","赤纬(J2000)":"+6h52m25s","赤纬D(J2000)":"6.873611111111112","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"10","详细描述":"","简略描述":"vF, * 4m 3' f"},{"ID":"9364","标识":"IC1524","M标识":"IC1524","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h59m10.7s","赤经D(J2000)":"23.986305555555557","赤纬(J2000)":"-4h7m37s","赤纬D(J2000)":"-4.126944444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.7","短轴(分)":"0.7","方位角":"80","详细描述":"no description","简略描述":"No description"},{"ID":"9365","标识":"IC1525","M标识":"IC1525","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"23h59m15.7s","赤经D(J2000)":"23.987694444444447","赤纬(J2000)":"+46h53m22s","赤纬D(J2000)":"46.88944444444444","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"20","详细描述":"extremely faint, pretty small","简略描述":"eF, pS"},{"ID":"9366","标识":"IC1526","M标识":"IC1526","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h1m31.5s","赤经D(J2000)":"0.025416666666666667","赤纬(J2000)":"+11h20m48s","赤纬D(J2000)":"11.346666666666668","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"129","详细描述":"faint, small, brighter middle and small nucleus","简略描述":"F, S, bMSN"},{"ID":"9367","标识":"IC1527","M标识":"IC1527","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h2m21.5s","赤经D(J2000)":"0.03930555555555555","赤纬(J2000)":"+4h5m25s","赤纬D(J2000)":"4.090277777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"147","详细描述":"faint, round, mottled but not resolved, very faint star to southeast","简略描述":"F, R, r, vF * sf"},{"ID":"9368","标识":"IC1528","M标识":"IC1528","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h5m5.3s","赤经D(J2000)":"0.08480555555555555","赤纬(J2000)":"-7h7m5s","赤纬D(J2000)":"-7.118055555555555","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.4","短轴(分)":"1.1","方位角":"74","详细描述":"no description","简略描述":"No description"},{"ID":"9369","标识":"IC1529","M标识":"IC1529","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h5m13.1s","赤经D(J2000)":"0.08697222222222221","赤纬(J2000)":"-11h30m8s","赤纬D(J2000)":"-11.502222222222223","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"0","详细描述":"faint, small, round, binuclear, mottled but not resolved","简略描述":"F, S, R, biN, r"},{"ID":"9370","标识":"IC1530","M标识":"IC1530","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h7m19.3s","赤经D(J2000)":"0.12202777777777778","赤纬(J2000)":"+32h36m33s","赤纬D(J2000)":"32.60916666666667","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"1.5","短轴(分)":"0.3","方位角":"38","详细描述":"very faint, small, irregular figure, brighter middle","简略描述":"vF, S, iF, bM"},{"ID":"9371","标识":"IC1531","M标识":"IC1531","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h9m35.5s","赤经D(J2000)":"0.1598611111111111","赤纬(J2000)":"-32h16m36s","赤纬D(J2000)":"-32.276666666666664","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.8","短轴(分)":"1.4","方位角":"138","详细描述":"very faint, very small, round, double star to north","简略描述":"vF, vS, R, D * n"},{"ID":"9372","标识":"IC1532","M标识":"IC1532","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h9m53.4s","赤经D(J2000)":"0.16483333333333333","赤纬(J2000)":"-64h22m16s","赤纬D(J2000)":"-64.3711111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"74","详细描述":"2 arcmin long, much extended, brighter middle","简略描述":"2' l, mE, bM"},{"ID":"9373","标识":"IC1533","M标识":"IC1533","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h10m36.8s","赤经D(J2000)":"0.17688888888888887","赤纬(J2000)":"-7h24m55s","赤纬D(J2000)":"-7.415277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eeF, vS, R, v diffic, * 7.5 n, * 9 s"},{"ID":"9374","标识":"IC1534","M标识":"IC1534","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h13m45.4s","赤经D(J2000)":"0.22927777777777777","赤纬(J2000)":"+48h9m7s","赤纬D(J2000)":"48.151944444444446","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.5","方位角":"72","详细描述":"","简略描述":"pF, vS, diffic, * 10 nr nf"},{"ID":"9375","标识":"IC1535","M标识":"IC1535","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h13m57.2s","赤经D(J2000)":"0.23255555555555557","赤纬(J2000)":"+48h9m27s","赤纬D(J2000)":"48.1575","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"170","详细描述":"","简略描述":"vF, S, 48 nf 6'"},{"ID":"9376","标识":"IC1536","M标识":"IC1536","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h14m18.9s","赤经D(J2000)":"0.23858333333333334","赤纬(J2000)":"+48h8m38s","赤纬D(J2000)":"48.14388888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"171","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"9377","标识":"IC1537","M标识":"IC1537","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h15m49.5s","赤经D(J2000)":"0.26375","赤纬(J2000)":"-39h15m39s","赤纬D(J2000)":"-39.26083333333333","可见光星等V":"15","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eeF, vL, vmE, 55 np"},{"ID":"9378","标识":"IC1538","M标识":"IC1538","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h18m0.5s","赤经D(J2000)":"0.3001388888888889","赤纬(J2000)":"+30h1m40s","赤纬D(J2000)":"30.02777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"9379","标识":"IC1539","M标识":"IC1539","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h18m22.4s","赤经D(J2000)":"0.30622222222222223","赤纬(J2000)":"+30h4m44s","赤纬D(J2000)":"30.078888888888887","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"0","详细描述":"extremely faint, between two 13th-magnitude stars","简略描述":"eF, bet 2 st 13"},{"ID":"9380","标识":"IC1540","M标识":"IC1540","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h19m48.8s","赤经D(J2000)":"0.3302222222222222","赤纬(J2000)":"+23h46m21s","赤纬D(J2000)":"23.772499999999997","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"27","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"9381","标识":"IC1541","M标识":"IC1541","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h20m2s","赤经D(J2000)":"0.33388888888888885","赤纬(J2000)":"+22h0m2s","赤纬D(J2000)":"22.000555555555554","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"32","详细描述":"faint, small, round, a little brighter middle, mottled but not resolved","简略描述":"F, S, R, lbM, r"},{"ID":"9382","标识":"IC1542","M标识":"IC1542","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h20m41.4s","赤经D(J2000)":"0.3448333333333333","赤纬(J2000)":"+22h35m34s","赤纬D(J2000)":"22.592777777777776","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"78","详细描述":"faint, diffuse, gradually brighter middle","简略描述":"F, dif, gbM"},{"ID":"9383","标识":"IC1543","M标识":"IC1543","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h20m55.6s","赤经D(J2000)":"0.34877777777777774","赤纬(J2000)":"+21h51m56s","赤纬D(J2000)":"21.865555555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, round, gradually brighter middle and nucleus","简略描述":"F, S, R, gbMN"},{"ID":"9384","标识":"IC1544","M标识":"IC1544","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h21m17.6s","赤经D(J2000)":"0.35488888888888886","赤纬(J2000)":"+23h5m27s","赤纬D(J2000)":"23.090833333333332","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"150","详细描述":"faint, small, round, very little brighter middle","简略描述":"F, S, R, vlbM"},{"ID":"9385","标识":"IC1545","M标识":"IC1545","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h21m20.8s","赤经D(J2000)":"0.35577777777777775","赤纬(J2000)":"+21h59m2s","赤纬D(J2000)":"21.983888888888888","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"0","详细描述":"faint, very small, round, diffuse, very faint nucleus","简略描述":"F, vS, R, dif, vFN"},{"ID":"9386","标识":"IC1546","M标识":"IC1546","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h21m29.1s","赤经D(J2000)":"0.3580833333333333","赤纬(J2000)":"+22h30m23s","赤纬D(J2000)":"22.50638888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"129","详细描述":"very faint, small, very difficult","简略描述":"vF, S, v diffic"},{"ID":"9387","标识":"IC1547","M标识":"IC1547","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h21m35.7s","赤经D(J2000)":"0.35991666666666666","赤纬(J2000)":"+22h1m24s","赤纬D(J2000)":"22.023333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty small, suddenly brighter middle like a star","简略描述":"eF, pS, sbM *"},{"ID":"9388","标识":"IC1548","M标识":"IC1548","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h21m55.1s","赤经D(J2000)":"0.36530555555555555","赤纬(J2000)":"+22h0m25s","赤纬D(J2000)":"22.006944444444443","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"85","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"9389","标识":"IC1549","M标识":"IC1549","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h22m49.8s","赤经D(J2000)":"0.38049999999999995","赤纬(J2000)":"+6h57m53s","赤纬D(J2000)":"6.964722222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"","简略描述":"eF, D * f 46s"},{"ID":"9390","标识":"IC1550","M标识":"IC1550","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h24m27.8s","赤经D(J2000)":"0.40772222222222226","赤纬(J2000)":"+38h11m7s","赤纬D(J2000)":"38.18527777777778","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"159","详细描述":"round, stellar, very faint nucleus","简略描述":"R, stell, vFN"},{"ID":"9391","标识":"IC1551","M标识":"IC1551","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h27m35.5s","赤经D(J2000)":"0.4598611111111111","赤纬(J2000)":"+8h52m39s","赤纬D(J2000)":"8.877500000000001","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"2.5","短轴(分)":"1.2","方位角":"15","详细描述":"faint, very small, round, mottled but not resolved","简略描述":"F, vS, R, r"},{"ID":"9392","标识":"IC1552","M标识":"IC1552","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h29m43.9s","赤经D(J2000)":"0.4955277777777778","赤纬(J2000)":"+21h28m35s","赤纬D(J2000)":"21.476388888888888","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"127","详细描述":"faint, pretty large, diffuse","简略描述":"F, pL, dif"},{"ID":"9393","标识":"IC1553","M标识":"IC1553","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h32m40s","赤经D(J2000)":"0.5444444444444444","赤纬(J2000)":"-25h36m32s","赤纬D(J2000)":"-25.60888888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"15","详细描述":"very faint, very much extended 10°","简略描述":"vF, vmE 10°"},{"ID":"9394","标识":"IC1554","M标识":"IC1554","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h32m50.2s","赤经D(J2000)":"0.5472777777777778","赤纬(J2000)":"-32h1m53s","赤纬D(J2000)":"-32.03138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, extremely extended 170°, suddenly brighter middle","简略描述":"vF, vS, eE 170°, sbM"},{"ID":"9395","标识":"IC1555","M标识":"IC1555","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h34m32.8s","赤经D(J2000)":"0.5757777777777777","赤纬(J2000)":"-30h1m3s","赤纬D(J2000)":"-30.0175","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"126","详细描述":"most extremely faint, small, round, 2 stars in line to west","简略描述":"eeF, S, R, 2 st p in line"},{"ID":"9396","标识":"IC1556","M标识":"IC1556","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h35m6s","赤经D(J2000)":"0.5850000000000001","赤纬(J2000)":"-9h34m0s","赤纬D(J2000)":"-9.566666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"9397","标识":"IC1557","M标识":"IC1557","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h35m34.4s","赤经D(J2000)":"0.5928888888888889","赤纬(J2000)":"-2h52m33s","赤纬D(J2000)":"-2.8758333333333335","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"135","详细描述":"extremely faint, very small, 2 very faint stars close; near (NGC) 161","简略描述":"eF, vS, 2 vF st close, nr 161"},{"ID":"9398","标识":"IC1558","M标识":"IC1558","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h35m47.1s","赤经D(J2000)":"0.5964166666666667","赤纬(J2000)":"-25h22m28s","赤纬D(J2000)":"-25.374444444444446","可见光星等V":"12.2","摄影(蓝光)星等B":"12.6","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"3.3","短轴(分)":"2.4","方位角":"150","详细描述":"extended 160°, star to north, perhaps spiral","简略描述":"E 160°, * n, perhaps spir"},{"ID":"9399","标识":"IC1559","M标识":"IC1559","拓展名":"","组件":"","Class":"","业余排名":"18","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h36m52.2s","赤经D(J2000)":"0.6144999999999999","赤纬(J2000)":"+23h59m6s","赤纬D(J2000)":"23.985","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"10","详细描述":"very faint, 0.5 arcmin south southeast of (NGC) 169","简略描述":"vF, 0'.5 ssf 169"},{"ID":"9400","标识":"IC1560","M标识":"IC1560","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h37m40s","赤经D(J2000)":"0.6277777777777778","赤纬(J2000)":"+2h40m18s","赤纬D(J2000)":"2.6716666666666664","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, perhaps = 164","简略描述":"eF, ? = 164"},{"ID":"9401","标识":"IC1561","M标识":"IC1561","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h38m32.4s","赤经D(J2000)":"0.6423333333333333","赤纬(J2000)":"-24h20m25s","赤纬D(J2000)":"-24.340277777777775","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"97","详细描述":"extended 105°, star to north","简略描述":"E 105°, * n"},{"ID":"9402","标识":"IC1562","M标识":"IC1562","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h38m33.8s","赤经D(J2000)":"0.6427222222222222","赤纬(J2000)":"-24h16m26s","赤纬D(J2000)":"-24.273888888888887","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"1.5","方位角":"170","详细描述":"small, round, pretty suddenly brighter middle","简略描述":"S, R, psbM"},{"ID":"9403","标识":"IC1563","M标识":"IC1563","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h39m0.1s","赤经D(J2000)":"0.6500277777777778","赤纬(J2000)":"-9h0m54s","赤纬D(J2000)":"-9.015","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"143","详细描述":"extremely faint, stellar, 0.6 arcmin southeast of (NGC) 191","简略描述":"eF, stellar, 0'.6 sf 191"},{"ID":"9404","标识":"IC1564","M标识":"IC1564","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h39m5.2s","赤经D(J2000)":"0.6514444444444445","赤纬(J2000)":"+6h1m16s","赤纬D(J2000)":"6.021111111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.5","方位角":"83","详细描述":"extremely faint","简略描述":"eF"},{"ID":"9405","标识":"IC1565","M标识":"IC1565","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h39m26.2s","赤经D(J2000)":"0.6572777777777778","赤纬(J2000)":"+6h44m3s","赤纬D(J2000)":"6.734166666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"9406","标识":"IC1566","M标识":"IC1566","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h39m33.3s","赤经D(J2000)":"0.65925","赤纬(J2000)":"+6h48m56s","赤纬D(J2000)":"6.815555555555555","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"126","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"9407","标识":"IC1567","M标识":"IC1567","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h39m26.2s","赤经D(J2000)":"0.6572777777777778","赤纬(J2000)":"+6h44m3s","赤纬D(J2000)":"6.734166666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"faint, small, round, gradually brighter middle","简略描述":"Neb *"},{"ID":"9408","标识":"IC1568","M标识":"IC1568","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h39m55.9s","赤经D(J2000)":"0.6655277777777778","赤纬(J2000)":"+6h50m57s","赤纬D(J2000)":"6.849166666666666","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"9409","标识":"IC1569","M标识":"IC1569","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h40m28s","赤经D(J2000)":"0.6744444444444444","赤纬(J2000)":"+6h43m11s","赤纬D(J2000)":"6.719722222222222","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, round, gradually brighter middle","简略描述":"vF, vS, R, gbM"},{"ID":"9410","标识":"IC1570","M标识":"IC1570","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h40m34.2s","赤经D(J2000)":"0.6761666666666666","赤纬(J2000)":"+6h45m12s","赤纬D(J2000)":"6.753333333333333","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"179","详细描述":"very faint, very small, round, very faint nucleus","简略描述":"vF, vS, R, vFN"},{"ID":"9411","标识":"IC1571","M标识":"IC1571","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h40m37.8s","赤经D(J2000)":"0.6771666666666666","赤纬(J2000)":"-0h19m49s","赤纬D(J2000)":"-0.3302777777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"42","详细描述":"faint, pretty small, round, diffuse","简略描述":"F, pS, R, dif"},{"ID":"9412","标识":"IC1572","M标识":"IC1572","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h41m12s","赤经D(J2000)":"0.6866666666666666","赤纬(J2000)":"+16h14m18s","赤纬D(J2000)":"16.238333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, stellar, III 200 near","简略描述":"eF, stell, III 200 nr"},{"ID":"9413","标识":"IC1573","M标识":"IC1573","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h42m10.2s","赤经D(J2000)":"0.7028333333333333","赤纬(J2000)":"-23h35m32s","赤纬D(J2000)":"-23.592222222222222","可见光星等V":"16","摄影(蓝光)星等B":"16.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.1","方位角":"70","详细描述":"extremely faint, extremely small, much extended 60°","简略描述":"eF, eS, mE 60°"},{"ID":"9414","标识":"IC1574","M标识":"IC1574","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h43m4s","赤经D(J2000)":"0.7177777777777777","赤纬(J2000)":"-22h14m46s","赤纬D(J2000)":"-22.246111111111112","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.1","短轴(分)":"0.8","方位角":"175","详细描述":"very faint, very much extended 0°, gradually brighter middle","简略描述":"vF, vmE 0°, gbM"},{"ID":"9415","标识":"IC1575","M标识":"IC1575","拓展名":"B","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h43m33.6s","赤经D(J2000)":"0.726","赤纬(J2000)":"-4h7m10s","赤纬D(J2000)":"-4.1194444444444445","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"1","方位角":"30","详细描述":"extremely faint, small, round, 10th magnitude star to south","简略描述":"eF, S, R, * 10 s"},{"ID":"9416","标识":"IC1576","M标识":"IC1576","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h44m13.8s","赤经D(J2000)":"0.7371666666666666","赤纬(J2000)":"-25h6m33s","赤纬D(J2000)":"-25.109166666666667","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"144","详细描述":"very faint, very small, considerably extended 135°, between 2 stars","简略描述":"vF, vS, cE 135°, bet 2 st"},{"ID":"9417","标识":"IC1577","M标识":"IC1577","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h43m34.4s","赤经D(J2000)":"0.7262222222222222","赤纬(J2000)":"-8h11m8s","赤纬D(J2000)":"-8.185555555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.8","方位角":"25","详细描述":"pretty bright, small, round, gradually brighter middle and stellar nucleus","简略描述":"pB, S, R, gbM stell N"},{"ID":"9418","标识":"IC1578","M标识":"IC1578","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h44m25.8s","赤经D(J2000)":"0.7404999999999999","赤纬(J2000)":"-25h4m35s","赤纬D(J2000)":"-25.07638888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"18","详细描述":"very faint, very small, very much extended","简略描述":"vF, vS, vmE"},{"ID":"9419","标识":"IC1579","M标识":"IC1579","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h45m32.2s","赤经D(J2000)":"0.7589444444444444","赤纬(J2000)":"-26h33m52s","赤纬D(J2000)":"-26.564444444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"5","详细描述":"extremely faint, extremely small, considerably extended 15°, gradually brighter middle","简略描述":"eF, eS, cE 15°, gbM"},{"ID":"9420","标识":"IC1580","M标识":"IC1580","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h46m21.3s","赤经D(J2000)":"0.7725833333333334","赤纬(J2000)":"+29h56m14s","赤纬D(J2000)":"29.93722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very stellar","简略描述":"vF, v stell"},{"ID":"9421","标识":"IC1581","M标识":"IC1581","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h45m46.4s","赤经D(J2000)":"0.7628888888888888","赤纬(J2000)":"-25h55m10s","赤纬D(J2000)":"-25.919444444444444","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"46","详细描述":"extremely faint, extremely small, extended 45°, gradually brighter middle","简略描述":"eF, eS, E 45°, gbM"},{"ID":"9422","标识":"IC1582","M标识":"IC1582","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h46m16.8s","赤经D(J2000)":"0.7713333333333334","赤纬(J2000)":"-24h16m47s","赤纬D(J2000)":"-24.279722222222222","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"46","详细描述":"extremely faint, extremely small, extended 45°, suddenly brighter middle like a star","简略描述":"eF, eS, E 45°, sbM *"},{"ID":"9423","标识":"IC1583","M标识":"IC1583","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h47m10.2s","赤经D(J2000)":"0.7861666666666667","赤纬(J2000)":"+23h4m28s","赤纬D(J2000)":"23.074444444444445","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"21","详细描述":"faint, very small, round, stellar nucleus","简略描述":"F, vS, R, stell N"},{"ID":"9424","标识":"IC1584","M标识":"IC1584","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h47m18.5s","赤经D(J2000)":"0.7884722222222222","赤纬(J2000)":"+27h49m42s","赤纬D(J2000)":"27.828333333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"90","详细描述":"extremely faint, large, diffuse, mottled but not resolved","简略描述":"eF, L, dif, r"},{"ID":"9425","标识":"IC1585","M标识":"IC1585","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h47m14.2s","赤经D(J2000)":"0.7872777777777777","赤纬(J2000)":"+23h3m15s","赤纬D(J2000)":"23.054166666666667","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"108","详细描述":"faint, very small, round, stellar nucleus","简略描述":"F, vS, R, stell N"},{"ID":"9426","标识":"IC1586","M标识":"IC1586","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h47m56.5s","赤经D(J2000)":"0.7990277777777778","赤纬(J2000)":"+22h22m24s","赤纬D(J2000)":"22.373333333333335","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"0","详细描述":"faint, very small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, vS, R, gbM, r"},{"ID":"9427","标识":"IC1587","M标识":"IC1587","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h48m43.2s","赤经D(J2000)":"0.812","赤纬(J2000)":"-23h33m42s","赤纬D(J2000)":"-23.561666666666667","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"36","详细描述":"extremely faint, extremely small, almost round","简略描述":"eF, eS, alm R"},{"ID":"9428","标识":"IC1588","M标识":"IC1588","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h50m57.7s","赤经D(J2000)":"0.8493611111111111","赤纬(J2000)":"-23h33m31s","赤纬D(J2000)":"-23.558611111111112","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"155","详细描述":"very faint, very small, considerably extended 155°","简略描述":"vF, vS, cE 155°"},{"ID":"9429","标识":"IC1589","M标识":"IC1589","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h51m59.3s","赤经D(J2000)":"0.8664722222222222","赤纬(J2000)":"-34h25m19s","赤纬D(J2000)":"-34.42194444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, round, like double nebula","简略描述":"eF, eS, R, like D neb"},{"ID":"9430","标识":"IC1590","M标识":"IC1590","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL+EN","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"0h52m48s","赤经D(J2000)":"0.88","赤纬(J2000)":"+56h37m54s","赤纬D(J2000)":"56.63166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, very large, stars scattered; 281 to east","简略描述":"Cl, vL, st sc, 281 f"},{"ID":"9431","标识":"IC1591","M标识":"IC1591","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h52m6.5s","赤经D(J2000)":"0.8684722222222222","赤纬(J2000)":"-22h40m49s","赤纬D(J2000)":"-22.68027777777778","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.4","方位角":"90","详细描述":"very faint, very small, considerably extended 95°, brighter middle","简略描述":"vF, vS, cE 95°, bM"},{"ID":"9432","标识":"IC1592","M标识":"IC1592","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h53m27.1s","赤经D(J2000)":"0.8908611111111111","赤纬(J2000)":"+5h46m11s","赤纬D(J2000)":"5.769722222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.7","方位角":"165","详细描述":"extremely faint, small, between a 12th magnitude star and a 13th magnitude star","简略描述":"eF, S, bet * 12 and * 13"},{"ID":"9433","标识":"IC1593","M标识":"IC1593","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h54m39.5s","赤经D(J2000)":"0.9109722222222223","赤纬(J2000)":"+32h31m11s","赤纬D(J2000)":"32.51972222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, semi-stellar","简略描述":"eF, semi-stellar"},{"ID":"9434","标识":"IC1594","M标识":"IC1594","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h53m45.2s","赤经D(J2000)":"0.8958888888888888","赤纬(J2000)":"-47h38m52s","赤纬D(J2000)":"-47.647777777777776","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"130","详细描述":"extremely faint, extremely small, considerably extended 130°, stellar nucleus","简略描述":"eF, eS, cE 130°, stell N"},{"ID":"9435","标识":"IC1595","M标识":"IC1595","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h53m47s","赤经D(J2000)":"0.8963888888888889","赤纬(J2000)":"-45h11m11s","赤纬D(J2000)":"-45.186388888888885","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.2","方位角":"12","详细描述":"extremely faint, small, much extended 10°, stellar nucleus","简略描述":"eF, S, mE 10°, stell N"},{"ID":"9436","标识":"IC1596","M标识":"IC1596","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h54m42.7s","赤经D(J2000)":"0.9118611111111111","赤纬(J2000)":"+21h31m23s","赤纬D(J2000)":"21.523055555555555","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"120","详细描述":"faint, small, extended east-west, gradually brighter middle","简略描述":"F, S, E pf, gbM"},{"ID":"9437","标识":"IC1597","M标识":"IC1597","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h53m32.1s","赤经D(J2000)":"0.89225","赤纬(J2000)":"-58h6m26s","赤纬D(J2000)":"-58.10722222222223","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"0.3","方位角":"151","详细描述":"extremely faint, extremely small, considerably extended 165°, considerably brighter middle","简略描述":"eF, eS, cE 165°, cbM"},{"ID":"9438","标识":"IC1598","M标识":"IC1598","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h54m41.7s","赤经D(J2000)":"0.9115833333333334","赤纬(J2000)":"+5h46m27s","赤纬D(J2000)":"5.774166666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.5","方位角":"2","详细描述":"a nebulous 11th magnitude star; 9th magnitude star 10 seconds of time to west, 4.5 arcmin to north","简略描述":"Neb * 11, * 9 p 10s, 4'.5 n"},{"ID":"9439","标识":"IC1599","M标识":"IC1599","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h54m32.7s","赤经D(J2000)":"0.9090833333333334","赤纬(J2000)":"-23h29m40s","赤纬D(J2000)":"-23.494444444444447","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"106","详细描述":"very faint, very small, considerably extended 100°","简略描述":"vF, vS, cE 100°"},{"ID":"9440","标识":"IC1600","M标识":"IC1600","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h55m4.2s","赤经D(J2000)":"0.9178333333333333","赤纬(J2000)":"-23h31m28s","赤纬D(J2000)":"-23.524444444444445","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"88","详细描述":"very faint, very small, considerably extended 95°","简略描述":"vF, vS, cE 95°"},{"ID":"9441","标识":"IC1601","M标识":"IC1601","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h55m34.7s","赤经D(J2000)":"0.9263055555555555","赤纬(J2000)":"-24h9m12s","赤纬D(J2000)":"-24.153333333333332","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"117","详细描述":"","简略描述":"vF, vS, lE 105°"},{"ID":"9442","标识":"IC1602","M标识":"IC1602","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h55m51.8s","赤经D(J2000)":"0.9310555555555555","赤纬(J2000)":"-9h59m7s","赤纬D(J2000)":"-9.985277777777776","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"174","详细描述":"","简略描述":"vF, S, nr 309"},{"ID":"9443","标识":"IC1603","M标识":"IC1603","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h56m59.7s","赤经D(J2000)":"0.9499166666666666","赤纬(J2000)":"-45h24m46s","赤纬D(J2000)":"-45.41277777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"111","详细描述":"","简略描述":"eF, eS, cE 115°, cbM"},{"ID":"9444","标识":"IC1604","M标识":"IC1604","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h58m0s","赤经D(J2000)":"0.9666666666666667","赤纬(J2000)":"-16h13m0s","赤纬D(J2000)":"-16.216666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pF, vS, * 7.5 np, F * nr sp [? = 333]"},{"ID":"9445","标识":"IC1605","M标识":"IC1605","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h57m37.4s","赤经D(J2000)":"0.9603888888888888","赤纬(J2000)":"-48h54m10s","赤纬D(J2000)":"-48.90277777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"138","详细描述":"very faint, extremely small, round","简略描述":"vF, eS, R"},{"ID":"9446","标识":"IC1606","M标识":"IC1606","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h58m22.3s","赤经D(J2000)":"0.9728611111111111","赤纬(J2000)":"-12h10m47s","赤纬D(J2000)":"-12.179722222222221","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, pS, nearly bet * 7 p and * 9 nf"},{"ID":"9447","标识":"IC1607","M标识":"IC1607","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h58m48.9s","赤经D(J2000)":"0.98025","赤纬(J2000)":"+0h35m14s","赤纬D(J2000)":"0.5872222222222223","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"very faint, pretty small, round, a little brighter middle","简略描述":"vF, pS, R, lbM"},{"ID":"9448","标识":"IC1608","M标识":"IC1608","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"0h59m24.2s","赤经D(J2000)":"0.9900555555555555","赤纬(J2000)":"-34h19m47s","赤纬D(J2000)":"-34.32972222222222","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2","短轴(分)":"0.9","方位角":"170","详细描述":"","简略描述":"pB, pS, R, 2 st nf, 2 np"},{"ID":"9449","标识":"IC1609","M标识":"IC1609","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"0h59m46.7s","赤经D(J2000)":"0.9963055555555556","赤纬(J2000)":"-40h20m1s","赤纬D(J2000)":"-40.33361111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"9450","标识":"IC1610","M标识":"IC1610","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h1m42.7s","赤经D(J2000)":"1.0285277777777777","赤纬(J2000)":"-15h34m4s","赤纬D(J2000)":"-15.567777777777778","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1","方位角":"110","详细描述":"pretty faint, pretty small, round, 10th magnitude star to northwest","简略描述":"pF, pS, R, * 10 np"},{"ID":"9451","标识":"IC1611","M标识":"IC1611","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h59m48.7s","赤经D(J2000)":"0.9968611111111111","赤纬(J2000)":"-72h19m57s","赤纬D(J2000)":"-72.3325","可见光星等V":"12","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"very faint, brighter middle","简略描述":"vF, bM"},{"ID":"9452","标识":"IC1612","M标识":"IC1612","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h59m59.6s","赤经D(J2000)":"0.9998888888888888","赤纬(J2000)":"-72h22m15s","赤纬D(J2000)":"-72.37083333333332","可见光星等V":"12.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"9453","标识":"IC1613","M标识":"IC1613","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h4m47.5s","赤经D(J2000)":"1.0798611111111112","赤纬(J2000)":"+2h7m7s","赤纬D(J2000)":"2.118611111111111","可见光星等V":"9.2","摄影(蓝光)星等B":"9.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"15","长轴(分)":"16.6","短轴(分)":"14.9","方位角":"50","详细描述":"faint, most extremely large","简略描述":"F, eeL"},{"ID":"9454","标识":"IC1614","M标识":"IC1614","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h5m6.9s","赤经D(J2000)":"1.0852499999999998","赤纬(J2000)":"+33h11m25s","赤纬D(J2000)":"33.19027777777777","可见光星等V":"16.6","摄影(蓝光)星等B":"17.6","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, small, extended 120°, very little brighter middle, 15th magnitude star near","简略描述":"vF, S, E 120°, vlbM, * 15 nr"},{"ID":"9455","标识":"IC1615","M标识":"IC1615","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h4m6.8s","赤经D(J2000)":"1.0685555555555555","赤纬(J2000)":"-51h7m58s","赤纬D(J2000)":"-51.132777777777775","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"143","详细描述":"extremely faint, small, considerably extended 140°, considerably brighter middle","简略描述":"eF, S, cE 140°, cbM"},{"ID":"9456","标识":"IC1616","M标识":"IC1616","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h4m56.1s","赤经D(J2000)":"1.08225","赤纬(J2000)":"-27h25m44s","赤纬D(J2000)":"-27.42888888888889","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"4","详细描述":"","简略描述":"eF, pS, 3 st in line nr"},{"ID":"9457","标识":"IC1617","M标识":"IC1617","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h4m16.7s","赤经D(J2000)":"1.0713055555555555","赤纬(J2000)":"-51h1m57s","赤纬D(J2000)":"-51.0325","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"125","详细描述":"extremely faint, small, considerably extended 130°, considerably brighter middle","简略描述":"eF, S, cE 130°, cbM"},{"ID":"9458","标识":"IC1618","M标识":"IC1618","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h5m55.9s","赤经D(J2000)":"1.098861111111111","赤纬(J2000)":"+32h24m46s","赤纬D(J2000)":"32.41277777777778","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"159","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"9459","标识":"IC1619","M标识":"IC1619","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h7m22.4s","赤经D(J2000)":"1.1228888888888888","赤纬(J2000)":"+33h4m1s","赤纬D(J2000)":"33.066944444444445","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"102","详细描述":"","简略描述":"F, S, R, gbMFN, bet 2 st 13"},{"ID":"9460","标识":"IC1620","M标识":"IC1620","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h7m14s","赤经D(J2000)":"1.1205555555555555","赤纬(J2000)":"+13h57m18s","赤纬D(J2000)":"13.955","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.7","方位角":"90","详细描述":"faint, pretty small, diffuse","简略描述":"F, pS, dif"},{"ID":"9461","标识":"IC1621","M标识":"IC1621","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h6m22.6s","赤经D(J2000)":"1.106277777777778","赤纬(J2000)":"-46h43m31s","赤纬D(J2000)":"-46.72527777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"3","详细描述":"extremely faint, extremely small, much extended 0°, considerably brighter middle","简略描述":"eF, eS, mE 0°, cbM"},{"ID":"9462","标识":"IC1622","M标识":"IC1622","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h7m36.6s","赤经D(J2000)":"1.1268333333333334","赤纬(J2000)":"-17h32m19s","赤纬D(J2000)":"-17.538611111111113","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"165","详细描述":"very faint, small, round, southwestern of 2","简略描述":"vF, S, R, sp of 2"},{"ID":"9463","标识":"IC1623","M标识":"IC1623","拓展名":"A","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h7m46.8s","赤经D(J2000)":"1.1296666666666666","赤纬(J2000)":"-17h30m24s","赤纬D(J2000)":"-17.506666666666668","可见光星等V":"13.9","摄影(蓝光)星等B":"14.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"12","详细描述":"bright, considerably small, a little extended, northeastern of 2","简略描述":"B, cS, lE, nf of 2"},{"ID":"9464","标识":"IC1624","M标识":"IC1624","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h5m21.9s","赤经D(J2000)":"1.0894166666666667","赤纬(J2000)":"-72h2m33s","赤纬D(J2000)":"-72.0425","可见光星等V":"12.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"9465","标识":"IC1625","M标识":"IC1625","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h7m42.6s","赤经D(J2000)":"1.1285","赤纬(J2000)":"-46h54m30s","赤纬D(J2000)":"-46.90833333333333","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"7","详细描述":"extremely faint, very small, round, suspected","简略描述":"eF, vS, R, susp"},{"ID":"9466","标识":"IC1626","M标识":"IC1626","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h6m13.4s","赤经D(J2000)":"1.1037222222222223","赤纬(J2000)":"-73h17m53s","赤纬D(J2000)":"-73.29805555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, considerably small, round","简略描述":"vF, cS, R"},{"ID":"9467","标识":"IC1627","M标识":"IC1627","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h8m10.8s","赤经D(J2000)":"1.1363333333333332","赤纬(J2000)":"-46h5m38s","赤纬D(J2000)":"-46.09388888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.5","短轴(分)":"0.6","方位角":"139","详细描述":"","简略描述":"cF, S, eE 135°, vmbM"},{"ID":"9468","标识":"IC1628","M标识":"IC1628","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0\/P","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h8m47.5s","赤经D(J2000)":"1.1465277777777778","赤纬(J2000)":"-28h34m56s","赤纬D(J2000)":"-28.58222222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"","简略描述":"cB, pS, R, 3 st 8 nr"},{"ID":"9469","标识":"IC1629","M标识":"IC1629","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h9m18.1s","赤经D(J2000)":"1.1550277777777778","赤纬(J2000)":"+2h34m5s","赤纬D(J2000)":"2.5680555555555555","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"50","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"9470","标识":"IC1630","M标识":"IC1630","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h8m16.8s","赤经D(J2000)":"1.138","赤纬(J2000)":"-46h45m15s","赤纬D(J2000)":"-46.75416666666667","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"0.3","方位角":"65","详细描述":"","简略描述":"eF, eS, E 60°, susp"},{"ID":"9471","标识":"IC1631","M标识":"IC1631","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h8m44.7s","赤经D(J2000)":"1.14575","赤纬(J2000)":"-46h28m31s","赤纬D(J2000)":"-46.47527777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"82","详细描述":"extremely faint, small, round, suspected","简略描述":"eF, S, R, susp"},{"ID":"9472","标识":"IC1632","M标识":"IC1632","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h10m43.4s","赤经D(J2000)":"1.1787222222222222","赤纬(J2000)":"+17h41m0s","赤纬D(J2000)":"17.683333333333334","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"","简略描述":"vF, vS, dif, * 15 v close"},{"ID":"9473","标识":"IC1633","M标识":"IC1633","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h9m55.5s","赤经D(J2000)":"1.1654166666666665","赤纬(J2000)":"-45h55m53s","赤纬D(J2000)":"-45.93138888888889","可见光星等V":"11.5","摄影(蓝光)星等B":"12.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.6","短轴(分)":"2.4","方位角":"93","详细描述":"very faint, small, round, very faint star to east","简略描述":"vF, S, R, vF * f"},{"ID":"9474","标识":"IC1634","M标识":"IC1634","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h11m3s","赤经D(J2000)":"1.1841666666666666","赤纬(J2000)":"+17h39m45s","赤纬D(J2000)":"17.662499999999998","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"9475","标识":"IC1635","M标识":"IC1635","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h11m3.6s","赤经D(J2000)":"1.1843333333333332","赤纬(J2000)":"+17h39m6s","赤纬D(J2000)":"17.651666666666664","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"9476","标识":"IC1636","M标识":"IC1636","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h11m37.3s","赤经D(J2000)":"1.1936944444444444","赤纬(J2000)":"+33h21m18s","赤纬D(J2000)":"33.355000000000004","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"faint, very small, gradually brighter middle and nucleus","简略描述":"F, vS, gbMN"},{"ID":"9477","标识":"IC1637","M标识":"IC1637","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h11m1.2s","赤经D(J2000)":"1.1836666666666666","赤纬(J2000)":"-30h26m19s","赤纬D(J2000)":"-30.43861111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"90","详细描述":"extremely faint, small, round, suspected","简略描述":"eF, S, R, susp"},{"ID":"9478","标识":"IC1638","M标识":"IC1638","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h12m21.7s","赤经D(J2000)":"1.2060277777777777","赤纬(J2000)":"+33h21m54s","赤纬D(J2000)":"33.365","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, very small, round, gradually brighter middle and nucleus, mottled but not resolved","简略描述":"F, vS, R, gbMN, r"},{"ID":"9479","标识":"IC1639","M标识":"IC1639","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h11m46.5s","赤经D(J2000)":"1.19625","赤纬(J2000)":"-0h39m50s","赤纬D(J2000)":"-0.6638888888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"100","详细描述":"very small, round, stellar","简略描述":"vS, R, stell"},{"ID":"9480","标识":"IC1640","M标识":"IC1640","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h11m51.2s","赤经D(J2000)":"1.1975555555555555","赤纬(J2000)":"-0h37m50s","赤纬D(J2000)":"-0.6305555555555555","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"10.8","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very small, round, brighter middle and nucleus","简略描述":"vS, R, bMN"},{"ID":"9481","标识":"IC1641","M标识":"IC1641","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h9m39.1s","赤经D(J2000)":"1.1608611111111111","赤纬(J2000)":"-71h46m8s","赤纬D(J2000)":"-71.76888888888888","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"9482","标识":"IC1642","M标识":"IC1642","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h12m27.3s","赤经D(J2000)":"1.2075833333333332","赤纬(J2000)":"+15h45m2s","赤纬D(J2000)":"15.750555555555556","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, round, a little brighter middle and nucleus","简略描述":"F, S, R, lbMN"},{"ID":"9483","标识":"IC1643","M标识":"IC1643","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h12m8.5s","赤经D(J2000)":"1.202361111111111","赤纬(J2000)":"-0h24m35s","赤纬D(J2000)":"-0.40972222222222227","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"9484","标识":"IC1644","M标识":"IC1644","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h9m12s","赤经D(J2000)":"1.1533333333333333","赤纬(J2000)":"-73h11m44s","赤纬D(J2000)":"-73.19555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stell"},{"ID":"9485","标识":"IC1645","M标识":"IC1645","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h12m27.3s","赤经D(J2000)":"1.2075833333333332","赤纬(J2000)":"+15h45m2s","赤纬D(J2000)":"15.750555555555556","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"9486","标识":"IC1646","M标识":"IC1646","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h12m43.8s","赤经D(J2000)":"1.2121666666666666","赤纬(J2000)":"+15h42m25s","赤纬D(J2000)":"15.706944444444444","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, pretty small, diffuse","简略描述":"vF, pS, dif"},{"ID":"9487","标识":"IC1647","M标识":"IC1647","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h13m14.5s","赤经D(J2000)":"1.2206944444444445","赤纬(J2000)":"+38h53m7s","赤纬D(J2000)":"38.88527777777778","可见光星等V":"15","摄影(蓝光)星等B":"15.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"39","详细描述":"very faint, small, round, difficult","简略描述":"vF, S, R, diffic"},{"ID":"9488","标识":"IC1648","M标识":"IC1648","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h13m42.2s","赤经D(J2000)":"1.228388888888889","赤纬(J2000)":"+33h13m5s","赤纬D(J2000)":"33.21805555555556","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"132","详细描述":"faint, very small, round, nuclear, mottled but not resolved","简略描述":"F, vS, R, N, r"},{"ID":"9489","标识":"IC1649","M标识":"IC1649","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h11m50.8s","赤经D(J2000)":"1.1974444444444445","赤纬(J2000)":"-55h51m24s","赤纬D(J2000)":"-55.85666666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"0.3","方位角":"136","详细描述":"","简略描述":"eF, cS, E 140°, cbM"},{"ID":"9490","标识":"IC1650","M标识":"IC1650","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h12m18.9s","赤经D(J2000)":"1.20525","赤纬(J2000)":"-50h24m7s","赤纬D(J2000)":"-50.401944444444446","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"62","详细描述":"","简略描述":"cF, S, mE 55°, cbM"},{"ID":"9491","标识":"IC1651","M标识":"IC1651","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h13m27.6s","赤经D(J2000)":"1.2243333333333335","赤纬(J2000)":"+2h4m7s","赤纬D(J2000)":"2.068611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* 13 with neb, chiefly nnf"},{"ID":"9492","标识":"IC1652","M标识":"IC1652","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h14m56.5s","赤经D(J2000)":"1.2490277777777778","赤纬(J2000)":"+31h56m52s","赤纬D(J2000)":"31.947777777777777","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"169","详细描述":"","简略描述":"F, S, E ns, * 12 v close"},{"ID":"9493","标识":"IC1653","M标识":"IC1653","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h15m7.5s","赤经D(J2000)":"1.2520833333333334","赤纬(J2000)":"+33h22m40s","赤纬D(J2000)":"33.37777777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"57","详细描述":"faint, very small, round, gradually brighter middle and nucleus, mottled but not resolved","简略描述":"F, vS, R, gbMN, r"},{"ID":"9494","标识":"IC1654","M标识":"IC1654","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h15m11.8s","赤经D(J2000)":"1.2532777777777777","赤纬(J2000)":"+30h11m43s","赤纬D(J2000)":"30.19527777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"42","详细描述":"","简略描述":"F, S, lE, gblM, r"},{"ID":"9495","标识":"IC1655","M标识":"IC1655","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h11m53.8s","赤经D(J2000)":"1.1982777777777778","赤纬(J2000)":"-71h19m54s","赤纬D(J2000)":"-71.33166666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"a cluster, compressed, extremely faint, very small","简略描述":"Cl, C, eF, vS"},{"ID":"9496","标识":"IC1656","M标识":"IC1656","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h15m37.9s","赤经D(J2000)":"1.2605277777777777","赤纬(J2000)":"+33h3m59s","赤纬D(J2000)":"33.06638888888889","可见光星等V":"14","摄影(蓝光)星等B":"15.1","B-V":"1.1","表面亮度(mag\/arcmin2)":"15.6","长轴(分)":"2.2","短轴(分)":"2.2","方位角":"","详细描述":"","简略描述":"Neb, S * close sf, * 9 sf 3'"},{"ID":"9497","标识":"IC1657","M标识":"IC1657","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h14m6.8s","赤经D(J2000)":"1.2352222222222222","赤纬(J2000)":"-32h39m2s","赤纬D(J2000)":"-32.650555555555556","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.4","短轴(分)":"0.6","方位角":"170","详细描述":"extremely faint, small, very much extended","简略描述":"eF, S, vmE"},{"ID":"9498","标识":"IC1658","M标识":"IC1658","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Scd","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h15m49.6s","赤经D(J2000)":"1.2637777777777779","赤纬(J2000)":"+31h4m50s","赤纬D(J2000)":"31.080555555555556","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"157","详细描述":"very faint, pretty small, extended, nuclear, mottled but not resolved","简略描述":"vF, pS, E, N, r"},{"ID":"9499","标识":"IC1659","M标识":"IC1659","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h16m6.2s","赤经D(J2000)":"1.2683888888888888","赤纬(J2000)":"+30h20m54s","赤纬D(J2000)":"30.348333333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"20","详细描述":"faint, small, round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"9500","标识":"IC1660","M标识":"IC1660","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h12m38.4s","赤经D(J2000)":"1.2106666666666666","赤纬(J2000)":"-71h45m41s","赤纬D(J2000)":"-71.76138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, vS, R, stell N or F * in M"},{"ID":"9501","标识":"IC1661","M标识":"IC1661","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h16m12.4s","赤经D(J2000)":"1.270111111111111","赤纬(J2000)":"+33h3m49s","赤纬D(J2000)":"33.06361111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"35","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"9502","标识":"IC1662","M标识":"IC1662","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h12m33.3s","赤经D(J2000)":"1.20925","赤纬(J2000)":"-73h27m25s","赤纬D(J2000)":"-73.45694444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, a very small cluster?","简略描述":"vF, eS, ? vS Cl"},{"ID":"9503","标识":"IC1663","M标识":"IC1663","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h14m6.8s","赤经D(J2000)":"1.2352222222222222","赤纬(J2000)":"-32h39m2s","赤纬D(J2000)":"-32.650555555555556","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.4","短轴(分)":"0.6","方位角":"170","详细描述":"","简略描述":"eF, mE 350° [? PD 45'.1]"},{"ID":"9504","标识":"IC1664","M标识":"IC1664","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"1h14m18.5s","赤经D(J2000)":"1.2384722222222222","赤纬(J2000)":"-69h48m42s","赤纬D(J2000)":"-69.81166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"2 F st inv in eeF neb"},{"ID":"9505","标识":"IC1665","M标识":"IC1665","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h17m45s","赤经D(J2000)":"1.2958333333333332","赤纬(J2000)":"+34h42m6s","赤纬D(J2000)":"34.70166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, vS, R, like 2 or 3 F st in neb"},{"ID":"9506","标识":"IC1666","M标识":"IC1666","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h19m53.4s","赤经D(J2000)":"1.3315","赤纬(J2000)":"+32h28m0s","赤纬D(J2000)":"32.46666666666667","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"1","方位角":"72","详细描述":"faint, pretty small, diffuse, 13th magnitude star attached","简略描述":"F, pS, dif, * 13 att"},{"ID":"9507","标识":"IC1667","M标识":"IC1667","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h18m42.2s","赤经D(J2000)":"1.3117222222222222","赤纬(J2000)":"-17h3m1s","赤纬D(J2000)":"-17.05027777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.9","方位角":"69","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"9508","标识":"IC1668","M标识":"IC1668","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h18m53.2s","赤经D(J2000)":"1.3147777777777778","赤纬(J2000)":"+33h10m20s","赤纬D(J2000)":"33.17222222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, very small, round, very faint nucleus","简略描述":"eF, vS, R, vFN"},{"ID":"9509","标识":"IC1669","M标识":"IC1669","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h20m6.9s","赤经D(J2000)":"1.3352499999999998","赤纬(J2000)":"+33h11m2s","赤纬D(J2000)":"33.18388888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.2","方位角":"5","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"9510","标识":"IC1670","M标识":"IC1670","拓展名":"A","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h18m48.7s","赤经D(J2000)":"1.3135277777777778","赤纬(J2000)":"-16h48m13s","赤纬D(J2000)":"-16.803611111111113","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"126","详细描述":"","简略描述":"vF, pS, lE, 2 st nr nf"},{"ID":"9511","标识":"IC1671","M标识":"IC1671","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h19m2.2s","赤经D(J2000)":"1.3172777777777778","赤纬(J2000)":"-17h3m40s","赤纬D(J2000)":"-17.061111111111114","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"170","详细描述":"extremely faint, very small, round, 7th-magnitude star 47 sec northeast","简略描述":"eF, vS, R, * 7 nf 47s"},{"ID":"9512","标识":"IC1672","M标识":"IC1672","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h20m38.3s","赤经D(J2000)":"1.3439722222222221","赤纬(J2000)":"+29h41m56s","赤纬D(J2000)":"29.698888888888888","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"1","方位角":"140","详细描述":"pretty bright, small, round, gradually brighter middle and nucleus, mottled but not resolved","简略描述":"pB, S, R, gbMN, r"},{"ID":"9513","标识":"IC1673","M标识":"IC1673","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h20m46.3s","赤经D(J2000)":"1.3461944444444445","赤纬(J2000)":"+33h2m44s","赤纬D(J2000)":"33.04555555555555","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, round, stellar nucleus","简略描述":"F, R, stell N"},{"ID":"9514","标识":"IC1674","M标识":"IC1674","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"1h19m0s","赤经D(J2000)":"1.3166666666666667","赤纬(J2000)":"-50h38m0s","赤纬D(J2000)":"-50.63333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, eS, bM, 2 spir wisps"},{"ID":"9515","标识":"IC1675","M标识":"IC1675","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h21m0.1s","赤经D(J2000)":"1.3500277777777778","赤纬(J2000)":"+34h14m56s","赤纬D(J2000)":"34.24888888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"69","详细描述":"faint, small","简略描述":"F, S"},{"ID":"9516","标识":"IC1676","M标识":"IC1676","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h20m58.5s","赤经D(J2000)":"1.3495833333333334","赤纬(J2000)":"+30h15m36s","赤纬D(J2000)":"30.26","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"0","详细描述":"faint, very small, stellar nucleus","简略描述":"F, vS, stell N"},{"ID":"9517","标识":"IC1677","M标识":"IC1677","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h21m7.1s","赤经D(J2000)":"1.3519722222222224","赤纬(J2000)":"+33h12m56s","赤纬D(J2000)":"33.21555555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"120","详细描述":"faint, pretty small, round, brighter middle and nucleus","简略描述":"F, pS, R, bMN"},{"ID":"9518","标识":"IC1678","M标识":"IC1678","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h21m2.6s","赤经D(J2000)":"1.3507222222222224","赤纬(J2000)":"+5h33m37s","赤纬D(J2000)":"5.560277777777777","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"9519","标识":"IC1679","M标识":"IC1679","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h21m44.5s","赤经D(J2000)":"1.3623611111111111","赤纬(J2000)":"+33h29m34s","赤纬D(J2000)":"33.49277777777778","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"54","详细描述":"faint, small, irregular figure, very little brighter middle, diffuse","简略描述":"F, S, iF, vlbM, dif"},{"ID":"9520","标识":"IC1680","M标识":"IC1680","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h21m51.4s","赤经D(J2000)":"1.364277777777778","赤纬(J2000)":"+33h16m55s","赤纬D(J2000)":"33.28194444444444","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"90","详细描述":"faint, very small, brighter middle and nucleus","简略描述":"F, vS, bMN"},{"ID":"9521","标识":"IC1681","M标识":"IC1681","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h21m21.2s","赤经D(J2000)":"1.355888888888889","赤纬(J2000)":"+0h5m26s","赤纬D(J2000)":"0.09055555555555556","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.5","方位角":"99","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"9522","标识":"IC1682","M标识":"IC1682","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h22m13.4s","赤经D(J2000)":"1.3703888888888889","赤纬(J2000)":"+33h15m35s","赤纬D(J2000)":"33.25972222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"126","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"9523","标识":"IC1683","M标识":"IC1683","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h22m39.1s","赤经D(J2000)":"1.377527777777778","赤纬(J2000)":"+34h26m14s","赤纬D(J2000)":"34.43722222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"177","详细描述":"faint, small, extended north-south, gradually brighter middle, mottled but not resolved","简略描述":"F, S, E ns, gbM, r"},{"ID":"9524","标识":"IC1684","M标识":"IC1684","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h22m53.2s","赤经D(J2000)":"1.3814444444444445","赤纬(J2000)":"+33h24m47s","赤纬D(J2000)":"33.41305555555555","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"125","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"9525","标识":"IC1685","M标识":"IC1685","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m6.7s","赤经D(J2000)":"1.3851944444444444","赤纬(J2000)":"+33h11m27s","赤纬D(J2000)":"33.19083333333333","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"25","详细描述":"faint, small, round, very little brighter middle, diffuse","简略描述":"F, S, R, vlbM, dif"},{"ID":"9526","标识":"IC1686","M标识":"IC1686","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m11.5s","赤经D(J2000)":"1.3865277777777778","赤纬(J2000)":"+33h27m35s","赤纬D(J2000)":"33.459722222222226","可见光星等V":"12.1","摄影(蓝光)星等B":"13.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"84","详细描述":"pretty bright, pretty small, a little extended east-west, gradually brighter middle and nucleus","简略描述":"pB, pS, lE pf, gbMN"},{"ID":"9527","标识":"IC1687","M标识":"IC1687","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m19.3s","赤经D(J2000)":"1.3886944444444445","赤纬(J2000)":"+33h16m37s","赤纬D(J2000)":"33.276944444444446","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"3","详细描述":"faint, very small, round, brighter middle and nucleus","简略描述":"F, vS, R, bMN"},{"ID":"9528","标识":"IC1688","M标识":"IC1688","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m28.2s","赤经D(J2000)":"1.3911666666666667","赤纬(J2000)":"+33h4m58s","赤纬D(J2000)":"33.08277777777778","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"40","详细描述":"faint, very small, round, brighter middle and nucleus","简略描述":"F, vS, R, bMN"},{"ID":"9529","标识":"IC1689","M标识":"IC1689","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/PRG","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m48s","赤经D(J2000)":"1.3966666666666667","赤纬(J2000)":"+33h3m18s","赤纬D(J2000)":"33.055","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"165","详细描述":"","简略描述":"F, vS, R, gbMN, * 14 close"},{"ID":"9530","标识":"IC1690","M标识":"IC1690","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h23m49.5s","赤经D(J2000)":"1.3970833333333332","赤纬(J2000)":"+33h9m25s","赤纬D(J2000)":"33.15694444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"135","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"9531","标识":"IC1691","M标识":"IC1691","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h24m25.9s","赤经D(J2000)":"1.4071944444444444","赤纬(J2000)":"+33h24m24s","赤纬D(J2000)":"33.406666666666666","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"115","详细描述":"pretty faint, very small, round, diffuse","简略描述":"pF, vS, R, dif"},{"ID":"9532","标识":"IC1692","M标识":"IC1692","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h24m39.7s","赤经D(J2000)":"1.4110277777777778","赤纬(J2000)":"+33h14m7s","赤纬D(J2000)":"33.23527777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"140","详细描述":"faint, very small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, vS, R, gbM, r"},{"ID":"9533","标识":"IC1693","M标识":"IC1693","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h24m2.3s","赤经D(J2000)":"1.4006388888888888","赤纬(J2000)":"-1h39m25s","赤纬D(J2000)":"-1.6569444444444443","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"162","详细描述":"","简略描述":"eF, vS, possibly F *"},{"ID":"9534","标识":"IC1694","M标识":"IC1694","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h24m47.7s","赤经D(J2000)":"1.41325","赤纬(J2000)":"+1h36m28s","赤纬D(J2000)":"1.607777777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"3","详细描述":"very faint, small, much brighter middle","简略描述":"vF, S, mbM"},{"ID":"9535","标识":"IC1695","M标识":"IC1695","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h25m7.5s","赤经D(J2000)":"1.4187500000000002","赤纬(J2000)":"+8h41m57s","赤纬D(J2000)":"8.699166666666667","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"","简略描述":"eF, pS, R, * 10 att p"},{"ID":"9536","标识":"IC1696","M标识":"IC1696","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h24m52.4s","赤经D(J2000)":"1.4145555555555556","赤纬(J2000)":"-1h37m2s","赤纬D(J2000)":"-1.6172222222222223","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"10","详细描述":"","简略描述":"eF, eS, 530 np"},{"ID":"9537","标识":"IC1697","M标识":"IC1697","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h25m2.9s","赤经D(J2000)":"1.4174722222222222","赤纬(J2000)":"+0h26m42s","赤纬D(J2000)":"0.445","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"110","详细描述":"faint, very small, round, gradually brighter middle","简略描述":"F, vS, R, gbM"},{"ID":"9538","标识":"IC1698","M标识":"IC1698","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h25m22.1s","赤经D(J2000)":"1.4228055555555557","赤纬(J2000)":"+14h50m18s","赤纬D(J2000)":"14.838333333333335","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"120","详细描述":"pretty bright, small, irregular figure, brighter middle and nucleus","简略描述":"pB, S, iF, bMN"},{"ID":"9539","标识":"IC1699","M标识":"IC1699","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h25m5.6s","赤经D(J2000)":"1.4182222222222223","赤纬(J2000)":"+14h54m40s","赤纬D(J2000)":"14.911111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, gradually brighter middle","简略描述":"vF, vS, R, gbM"},{"ID":"9540","标识":"IC1700","M标识":"IC1700","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h25m24.7s","赤经D(J2000)":"1.423527777777778","赤纬(J2000)":"+14h51m53s","赤纬D(J2000)":"14.864722222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.7","方位角":"27","详细描述":"pretty bright, small, round, gradually brighter middle and nucleus","简略描述":"pB, S, R, gbMN"},{"ID":"9541","标识":"IC1701","M标识":"IC1701","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h25m50.3s","赤经D(J2000)":"1.430638888888889","赤纬(J2000)":"+18h11m6s","赤纬D(J2000)":"18.185","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.2","短轴(分)":"1","方位角":"99","详细描述":"","简略描述":"F, S, dif, N 13 mag"},{"ID":"9542","标识":"IC1702","M标识":"IC1702","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h25m56.2s","赤经D(J2000)":"1.4322777777777778","赤纬(J2000)":"+16h36m4s","赤纬D(J2000)":"16.601111111111113","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"1","方位角":"170","详细描述":"most extremely faint, pretty small, a little extended, very difficult, between 2 stars north and south","简略描述":"eeF, pS, lE, v diffic, bet 2 st ns"},{"ID":"9543","标识":"IC1703","M标识":"IC1703","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h26m25.1s","赤经D(J2000)":"1.4403055555555555","赤纬(J2000)":"-1h38m18s","赤纬D(J2000)":"-1.6383333333333332","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"123","详细描述":"extremely faint, small, diffuse","简略描述":"eF, S, dif"},{"ID":"9544","标识":"IC1704","M标识":"IC1704","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h27m9.5s","赤经D(J2000)":"1.4526388888888888","赤纬(J2000)":"+14h46m33s","赤纬D(J2000)":"14.775833333333335","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"165","详细描述":"pretty bright, pretty small, diffuse, irregular figure, gradually a very little brighter middle","简略描述":"pB, pS, dif, iF, gvlbM"},{"ID":"9545","标识":"IC1705","M标识":"IC1705","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h26m44.8s","赤经D(J2000)":"1.4457777777777778","赤纬(J2000)":"-3h30m6s","赤纬D(J2000)":"-3.5016666666666665","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"3","详细描述":"","简略描述":"Neb * 12, F D * nf 2'"},{"ID":"9546","标识":"IC1706","M标识":"IC1706","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h27m30.8s","赤经D(J2000)":"1.4585555555555556","赤纬(J2000)":"+14h49m9s","赤纬D(J2000)":"14.819166666666666","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, diffuse, very little brighter middle","简略描述":"F, S, dif, vlbM"},{"ID":"9547","标识":"IC1707","M标识":"IC1707","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h28m0s","赤经D(J2000)":"1.4666666666666668","赤纬(J2000)":"+37h7m2s","赤纬D(J2000)":"37.117222222222225","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, dif, * 13.3 close"},{"ID":"9548","标识":"IC1708","M标识":"IC1708","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"水蛇座","星座(En)":"HYI","赤经(J2000)":"1h24m56.5s","赤经D(J2000)":"1.4156944444444444","赤纬(J2000)":"-71h11m2s","赤纬D(J2000)":"-71.18388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, 9th magnitude star 4 arcmin to southeast","简略描述":"vF, vS, R, * 9 sf 4'"},{"ID":"9549","标识":"IC1709","M标识":"IC1709","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h27m56.9s","赤经D(J2000)":"1.4658055555555556","赤纬(J2000)":"-35h43m3s","赤纬D(J2000)":"-35.7175","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.2","短轴(分)":"1.3","方位角":"140","详细描述":"extremely faint, pretty small, round, very difficult","简略描述":"eF, pS, R, v diffic"},{"ID":"9550","标识":"IC1710","M标识":"IC1710","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h30m46.4s","赤经D(J2000)":"1.512888888888889","赤纬(J2000)":"+21h26m25s","赤纬D(J2000)":"21.440277777777776","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"66","详细描述":"","简略描述":"F, pL, dif, * 13.5 att"},{"ID":"9551","标识":"IC1711","M标识":"IC1711","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h30m55.2s","赤经D(J2000)":"1.5153333333333334","赤纬(J2000)":"+17h11m20s","赤纬D(J2000)":"17.18888888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.6","短轴(分)":"0.5","方位角":"43","详细描述":"faint, pretty large, extended 260°, gradually brighter middle","简略描述":"F, pL, E 260°, gbM"},{"ID":"9552","标识":"IC1712","M标识":"IC1712","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E4","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h31m20.5s","赤经D(J2000)":"1.522361111111111","赤纬(J2000)":"-6h52m2s","赤纬D(J2000)":"-6.867222222222223","可见光星等V":"10.5","摄影(蓝光)星等B":"11.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"4.1","短轴(分)":"2","方位角":"72","详细描述":"no description","简略描述":"No descr"},{"ID":"9553","标识":"IC1713","M标识":"IC1713","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h32m43.8s","赤经D(J2000)":"1.5454999999999999","赤纬(J2000)":"+35h19m28s","赤纬D(J2000)":"35.324444444444445","可见光星等V":"99","摄影(蓝光)星等B":"14","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"13th magnitude star, nebulous?","简略描述":"* 13, nebs ?"},{"ID":"9554","标识":"IC1714","M标识":"IC1714","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h32m53.1s","赤经D(J2000)":"1.5480833333333333","赤纬(J2000)":"-13h1m29s","赤纬D(J2000)":"-13.024722222222223","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"eeF, S, lE, v dif, * 8 n"},{"ID":"9555","标识":"IC1715","M标识":"IC1715","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h33m34.4s","赤经D(J2000)":"1.5595555555555556","赤纬(J2000)":"+12h35m8s","赤纬D(J2000)":"12.585555555555556","可见光星等V":"14","摄影(蓝光)星等B":"14.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"100","详细描述":"faint, small, round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"9556","标识":"IC1716","M标识":"IC1716","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h33m26.8s","赤经D(J2000)":"1.5574444444444444","赤纬(J2000)":"-12h18m29s","赤纬D(J2000)":"-12.308055555555557","可见光星等V":"99","摄影(蓝光)星等B":"15.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, mottled but not resolved, possibly nebulous","简略描述":"eF, r, neb ?"},{"ID":"9557","标识":"IC1717","M标识":"IC1717","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"水蛇座","星座(En)":"HYI","赤经(J2000)":"1h32m30s","赤经D(J2000)":"1.5416666666666665","赤纬(J2000)":"-67h32m0s","赤纬D(J2000)":"-67.53333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, much extended 25°, stellar nucleus","简略描述":"eF, eS, mE 25°, stell N"},{"ID":"9558","标识":"IC1718","M标识":"IC1718","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h38m26.9s","赤经D(J2000)":"1.6408055555555556","赤纬(J2000)":"+33h21m55s","赤纬D(J2000)":"33.36527777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"129","详细描述":"","简略描述":"F, pS, pR, * 13.5 att"},{"ID":"9559","标识":"IC1719","M标识":"IC1719","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h37m35.8s","赤经D(J2000)":"1.6266111111111112","赤纬(J2000)":"-33h55m27s","赤纬D(J2000)":"-33.924166666666665","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"174","详细描述":"","简略描述":"vF, S, R, cF * nr nf"},{"ID":"9560","标识":"IC1720","M标识":"IC1720","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h40m21.4s","赤经D(J2000)":"1.672611111111111","赤纬(J2000)":"-28h54m50s","赤纬D(J2000)":"-28.913888888888888","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"162","详细描述":"extremely faint, extremely small, round, bright star to west","简略描述":"eF, eS, R, B * p"},{"ID":"9561","标识":"IC1721","M标识":"IC1721","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h41m24.4s","赤经D(J2000)":"1.6901111111111111","赤纬(J2000)":"+8h31m34s","赤纬D(J2000)":"8.526111111111112","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.5","方位角":"94","详细描述":"pretty bright, pretty small, extended east-west, gradually brighter middle, mottled but not resolved","简略描述":"pB, pS, E pf, gbM, r"},{"ID":"9562","标识":"IC1722","M标识":"IC1722","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h43m2.7s","赤经D(J2000)":"1.7174166666666668","赤纬(J2000)":"-34h11m17s","赤纬D(J2000)":"-34.18805555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"50","详细描述":"faint, small, considerably extended 45°","简略描述":"F, S, cE 45°"},{"ID":"9563","标识":"IC1723","M标识":"IC1723","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h43m14.1s","赤经D(J2000)":"1.7205833333333334","赤纬(J2000)":"+8h53m20s","赤纬D(J2000)":"8.88888888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3.3","短轴(分)":"0.8","方位角":"29","详细描述":"faint, pretty large, extended 200°, gradually a little brighter middle","简略描述":"F, pL, E 200°, glbM"},{"ID":"9564","标识":"IC1724","M标识":"IC1724","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"1h43m9.5s","赤经D(J2000)":"1.7193055555555556","赤纬(J2000)":"-34h14m32s","赤纬D(J2000)":"-34.242222222222225","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"126","详细描述":"","简略描述":"F, S, cE 175°"},{"ID":"9565","标识":"IC1725","M标识":"IC1725","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h45m11.9s","赤经D(J2000)":"1.7533055555555555","赤纬(J2000)":"+21h46m36s","赤纬D(J2000)":"21.776666666666667","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, pretty round, diffuse","简略描述":"F, S, pR, dif"},{"ID":"9566","标识":"IC1726","M标识":"IC1726","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h45m19.6s","赤经D(J2000)":"1.7554444444444444","赤纬(J2000)":"+4h37m9s","赤纬D(J2000)":"4.6191666666666675","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"24","详细描述":"faint, very small, gradually brighter middle, 13.5 magnitude star close","简略描述":"F, vS, gbM, * 13.5 close"},{"ID":"9567","标识":"IC1727","M标识":"IC1727","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h47m30s","赤经D(J2000)":"1.7916666666666665","赤纬(J2000)":"+27h19m57s","赤纬D(J2000)":"27.3325","可见光星等V":"11.5","摄影(蓝光)星等B":"12.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"5.7","短轴(分)":"2.4","方位角":"150","详细描述":"","简略描述":"F, L, st inv, I 157 nf"},{"ID":"9568","标识":"IC1728","M标识":"IC1728","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h47m44.4s","赤经D(J2000)":"1.7956666666666665","赤纬(J2000)":"-33h36m6s","赤纬D(J2000)":"-33.60166666666667","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"3","详细描述":"faint, small, extended 160°, much brighter middle","简略描述":"F, S, E 160°, mbM"},{"ID":"9569","标识":"IC1729","M标识":"IC1729","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h47m55.2s","赤经D(J2000)":"1.7986666666666666","赤纬(J2000)":"-26h53m31s","赤纬D(J2000)":"-26.891944444444444","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"150","详细描述":"pretty bright, extremely small, almost stellar, partially resolved? perhaps some stars seen?","简略描述":"pB, eS, alm stell, rr ?"},{"ID":"9570","标识":"IC1730","M标识":"IC1730","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h49m57.9s","赤经D(J2000)":"1.8327499999999999","赤纬(J2000)":"+22h0m46s","赤纬D(J2000)":"22.012777777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"65","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"9571","标识":"IC1731","M标识":"IC1731","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h50m12.5s","赤经D(J2000)":"1.8368055555555558","赤纬(J2000)":"+27h11m46s","赤纬D(J2000)":"27.19611111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1","方位角":"140","详细描述":"faint, extended northwest southeast, brighter middle, probably spiral","简略描述":"F, E npsf, bM, prob spir"},{"ID":"9572","标识":"IC1732","M标识":"IC1732","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h50m48s","赤经D(J2000)":"1.846666666666667","赤纬(J2000)":"+35h55m59s","赤纬D(J2000)":"35.933055555555555","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"62","详细描述":"very faint, pretty small, much brighter middle, perhaps extremely faint star involved","简略描述":"vF, pS, mbM, ? eF st inv"},{"ID":"9573","标识":"IC1733","M标识":"IC1733","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h50m42.9s","赤经D(J2000)":"1.84525","赤纬(J2000)":"+33h4m56s","赤纬D(J2000)":"33.08222222222223","可见光星等V":"13","摄影(蓝光)星等B":"14.1","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"1","方位角":"50","详细描述":"faint, very small, pretty round, mottled but not resolved","简略描述":"F, vS, pR, r"},{"ID":"9574","标识":"IC1734","M标识":"IC1734","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h49m16.8s","赤经D(J2000)":"1.8213333333333332","赤纬(J2000)":"-32h44m36s","赤纬D(J2000)":"-32.74333333333333","可见光星等V":"12.8","摄影(蓝光)星等B":"13.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"28","详细描述":"","简略描述":"vF, pS, lE 100°, bM"},{"ID":"9575","标识":"IC1735","M标识":"IC1735","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h50m51.8s","赤经D(J2000)":"1.8477222222222223","赤纬(J2000)":"+33h5m31s","赤纬D(J2000)":"33.091944444444444","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"149","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"9576","标识":"IC1736","M标识":"IC1736","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h50m53.2s","赤经D(J2000)":"1.8481111111111113","赤纬(J2000)":"+18h18m9s","赤纬D(J2000)":"18.302500000000002","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"120","详细描述":"faint, pretty small, extended 210°, gradually a little brighter middle","简略描述":"F, pS, E 210°, glbM"},{"ID":"9577","标识":"IC1737","M标识":"IC1737","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"1h51m42.4s","赤经D(J2000)":"1.861777777777778","赤纬(J2000)":"+36h15m0s","赤纬D(J2000)":"36.25","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, 3 or 4 vF st in neb"},{"ID":"9578","标识":"IC1738","M标识":"IC1738","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h51m7.7s","赤经D(J2000)":"1.852138888888889","赤纬(J2000)":"-9h47m35s","赤纬D(J2000)":"-9.793055555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"80","详细描述":"","简略描述":"eF, vS, I 62 p"},{"ID":"9579","标识":"IC1739","M标识":"IC1739","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h50m29.3s","赤经D(J2000)":"1.8414722222222224","赤纬(J2000)":"-34h3m20s","赤纬D(J2000)":"-34.05555555555555","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"94","详细描述":"considerably faint, considerably small, round, much brighter middle","简略描述":"cF, cS, R, mbM"},{"ID":"9580","标识":"IC1740","M标识":"IC1740","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h48m51.6s","赤经D(J2000)":"1.8143333333333334","赤纬(J2000)":"-30h5m11s","赤纬D(J2000)":"-30.086388888888887","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pB, eS, lE, like D *"},{"ID":"9581","标识":"IC1741","M标识":"IC1741","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h51m56.7s","赤经D(J2000)":"1.86575","赤纬(J2000)":"-16h47m15s","赤纬D(J2000)":"-16.7875","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"171","详细描述":"","简略描述":"eF, eS, ? = 690"},{"ID":"9582","标识":"IC1742","M标识":"IC1742","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h53m14.3s","赤经D(J2000)":"1.8873055555555556","赤纬(J2000)":"+22h43m16s","赤纬D(J2000)":"22.72111111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"36","详细描述":"faint, small, a little extended east-west, gradually a little brighter middle","简略描述":"F, S, lE pf, glbM"},{"ID":"9583","标识":"IC1743","M标识":"IC1743","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h52m59.5s","赤经D(J2000)":"1.8831944444444444","赤纬(J2000)":"+12h42m30s","赤纬D(J2000)":"12.708333333333332","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"0.8","方位角":"57","详细描述":"","简略描述":"vF, pS, lbM, dif, ? = 716"},{"ID":"9584","标识":"IC1744","M标识":"IC1744","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h53m38.8s","赤经D(J2000)":"1.894111111111111","赤纬(J2000)":"+19h50m27s","赤纬D(J2000)":"19.840833333333332","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"150","详细描述":"faint, small, round, gradually a little brighter middle","简略描述":"F, S, R, glbM"},{"ID":"9585","标识":"IC1745","M标识":"IC1745","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h52m59s","赤经D(J2000)":"1.8830555555555555","赤纬(J2000)":"-16h40m9s","赤纬D(J2000)":"-16.66916666666667","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"130","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"9586","标识":"IC1746","M标识":"IC1746","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h54m24.2s","赤经D(J2000)":"1.9067222222222222","赤纬(J2000)":"+4h48m13s","赤纬D(J2000)":"4.803611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"93","详细描述":"faint, small, pretty round, gradually brighter middle","简略描述":"F, S, pR, gbM"},{"ID":"9587","标识":"IC1747","M标识":"IC1747","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"1h57m35.8s","赤经D(J2000)":"1.9599444444444445","赤纬(J2000)":"+63h19m22s","赤纬D(J2000)":"63.32277777777778","可见光星等V":"12","摄影(蓝光)星等B":"13.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.32","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stell"},{"ID":"9588","标识":"IC1748","M标识":"IC1748","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h56m8.8s","赤经D(J2000)":"1.9357777777777778","赤纬(J2000)":"+17h38m28s","赤纬D(J2000)":"17.641111111111112","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.7","方位角":"130","详细描述":"very faint","简略描述":"vF"},{"ID":"9589","标识":"IC1749","M标识":"IC1749","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h56m11s","赤经D(J2000)":"1.936388888888889","赤纬(J2000)":"+6h44m44s","赤纬D(J2000)":"6.745555555555556","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"149","详细描述":"faint, small, extended north-south, binuclear, mottled but not resolved","简略描述":"F, S, E ns, biN, r"},{"ID":"9590","标识":"IC1750","M标识":"IC1750","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h56m18.7s","赤经D(J2000)":"1.9385277777777778","赤纬(J2000)":"+4h4m35s","赤纬D(J2000)":"4.076388888888888","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"64","详细描述":"very faint, very small, pretty round, nuclear","简略描述":"vF, vS, pR, N"},{"ID":"9591","标识":"IC1751","M标识":"IC1751","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h56m20.9s","赤经D(J2000)":"1.939138888888889","赤纬(J2000)":"+5h37m43s","赤纬D(J2000)":"5.628611111111112","可见光星等V":"11.1","摄影(蓝光)星等B":"12.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3","短轴(分)":"2.9","方位角":"90","详细描述":"pretty bright, pretty small, round, 9th magnitude star to northwest","简略描述":"pB, pS, R, * 9 np"},{"ID":"9592","标识":"IC1752","M标识":"IC1752","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h57m15.4s","赤经D(J2000)":"1.9542777777777778","赤纬(J2000)":"+28h36m51s","赤纬D(J2000)":"28.61416666666667","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"110","详细描述":"","简略描述":"F, vS, * 14.5 att"},{"ID":"9593","标识":"IC1753","M标识":"IC1753","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"1h57m19.3s","赤经D(J2000)":"1.955361111111111","赤纬(J2000)":"+28h35m22s","赤纬D(J2000)":"28.589444444444442","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"","简略描述":"F, vS, dif, * 14.5 close"},{"ID":"9594","标识":"IC1754","M标识":"IC1754","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"1h56m49.8s","赤经D(J2000)":"1.9471666666666667","赤纬(J2000)":"+4h1m34s","赤纬D(J2000)":"4.026111111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, small, gradually brighter middle","简略描述":"F, S, gbM"},{"ID":"9595","标识":"IC1755","M标识":"IC1755","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"1h57m9.8s","赤经D(J2000)":"1.9527222222222222","赤纬(J2000)":"+14h32m59s","赤纬D(J2000)":"14.549722222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"0.3","方位角":"154","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"9596","标识":"IC1756","M标识":"IC1756","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h57m5.2s","赤经D(J2000)":"1.9514444444444443","赤纬(J2000)":"-0h28m6s","赤纬D(J2000)":"-0.4683333333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.2","方位角":"155","详细描述":"","简略描述":"vF, E npsf, * 13 close sf"},{"ID":"9597","标识":"IC1757","M标识":"IC1757","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h57m11.5s","赤经D(J2000)":"1.9531944444444445","赤纬(J2000)":"-0h28m25s","赤纬D(J2000)":"-0.4736111111111111","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"60","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"9598","标识":"IC1758","M标识":"IC1758","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h56m52.5s","赤经D(J2000)":"1.9479166666666667","赤纬(J2000)":"-16h32m30s","赤纬D(J2000)":"-16.541666666666668","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"45","详细描述":"","简略描述":"F, eS, sbM * 11"},{"ID":"9599","标识":"IC1759","M标识":"IC1759","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h57m55.5s","赤经D(J2000)":"1.9654166666666666","赤纬(J2000)":"-32h59m14s","赤纬D(J2000)":"-32.98722222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"169","详细描述":"","简略描述":"pB, vS, R, bM, * 10 close sp"},{"ID":"9600","标识":"IC1760","M标识":"IC1760","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h57m55.5s","赤经D(J2000)":"1.9654166666666666","赤纬(J2000)":"-32h59m14s","赤纬D(J2000)":"-32.98722222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"169","详细描述":"extremely faint, pretty small, round (PD may be 123°)","简略描述":"eF, pS, R [? PD 123°]"},{"ID":"9601","标识":"IC1761","M标识":"IC1761","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h58m52.2s","赤经D(J2000)":"1.9811666666666667","赤纬(J2000)":"+0h34m8s","赤纬D(J2000)":"0.5688888888888889","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"45","详细描述":"very faint, very small, round, gradually brighter middle and nucleus","简略描述":"vF, vS, R, gbMN"},{"ID":"9602","标识":"IC1762","M标识":"IC1762","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h57m48.6s","赤经D(J2000)":"1.9635","赤纬(J2000)":"-33h14m23s","赤纬D(J2000)":"-33.23972222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"0.4","方位角":"43","详细描述":"most extremely faint, pretty small, round, 7th magnitude star to northeast","简略描述":"eeF, pS, R, * 7 nf"},{"ID":"9603","标识":"IC1763","M标识":"IC1763","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"1h59m11.5s","赤经D(J2000)":"1.986527777777778","赤纬(J2000)":"-27h48m41s","赤纬D(J2000)":"-27.81138888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.8","方位角":"32","详细描述":"","简略描述":"eeF, S, R, * 8 ssf"},{"ID":"9604","标识":"IC1764","M标识":"IC1764","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h0m23.3s","赤经D(J2000)":"2.0064722222222224","赤纬(J2000)":"+24h34m47s","赤纬D(J2000)":"24.579722222222223","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"174","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"9605","标识":"IC1765","M标识":"IC1765","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h1m6.6s","赤经D(J2000)":"2.0185","赤纬(J2000)":"+31h52m55s","赤纬D(J2000)":"31.881944444444446","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"35","详细描述":"","简略描述":"S * att p"},{"ID":"9606","标识":"IC1766","M标识":"IC1766","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h1m40s","赤经D(J2000)":"2.0277777777777777","赤纬(J2000)":"+31h49m36s","赤纬D(J2000)":"31.826666666666668","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"83","详细描述":"no description","简略描述":"No descr"},{"ID":"9607","标识":"IC1767","M标识":"IC1767","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"1h59m59.4s","赤经D(J2000)":"1.9998333333333334","赤纬(J2000)":"-11h4m43s","赤纬D(J2000)":"-11.07861111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"75","详细描述":"","简略描述":"eF, pS, bet 2 st 10.5, 2 st n"},{"ID":"9608","标识":"IC1768","M标识":"IC1768","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h0m49.8s","赤经D(J2000)":"2.0138333333333334","赤纬(J2000)":"-25h1m35s","赤纬D(J2000)":"-25.02638888888889","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"","简略描述":"eeF, pS, R, 3 st 9 sf, v diffic"},{"ID":"9609","标识":"IC1769","M标识":"IC1769","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h0m54.8s","赤经D(J2000)":"2.015222222222222","赤纬(J2000)":"-31h55m14s","赤纬D(J2000)":"-31.920555555555556","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"77","详细描述":"extremely faint, extremely small, much extended 80°","简略描述":"eF, eS, mE 80°"},{"ID":"9610","标识":"IC1770","M标识":"IC1770","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"2h2m14.4s","赤经D(J2000)":"2.037333333333333","赤纬(J2000)":"+9h58m51s","赤纬D(J2000)":"9.980833333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.7","方位角":"63","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"9611","标识":"IC1771","M标识":"IC1771","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"2h2m15.8s","赤经D(J2000)":"2.037722222222222","赤纬(J2000)":"+9h58m7s","赤纬D(J2000)":"9.96861111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"9612","标识":"IC1772","M标识":"IC1772","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"2h2m42.8s","赤经D(J2000)":"2.0452222222222223","赤纬(J2000)":"+7h44m44s","赤纬D(J2000)":"7.745555555555556","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"","简略描述":"F, S, slbM, * 8.5 166\" n"},{"ID":"9613","标识":"IC1773","M标识":"IC1773","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h4m2.2s","赤经D(J2000)":"2.067277777777778","赤纬(J2000)":"+30h49m57s","赤纬D(J2000)":"30.8325","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.4","短轴(分)":"0.3","方位角":"7","详细描述":"very faint, very small, gradually brighter middle, mottled but not resolved","简略描述":"vF, vS, gbM, r"},{"ID":"9614","标识":"IC1774","M标识":"IC1774","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h3m59s","赤经D(J2000)":"2.0663888888888886","赤纬(J2000)":"+15h19m4s","赤纬D(J2000)":"15.317777777777778","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"140","详细描述":"very faint, diffuse","简略描述":"vF, dif"},{"ID":"9615","标识":"IC1775","M标识":"IC1775","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h5m17.5s","赤经D(J2000)":"2.0881944444444445","赤纬(J2000)":"+13h30m20s","赤纬D(J2000)":"13.505555555555556","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, diffuse, 13.5 magnitude star near","简略描述":"F, S, dif, * 13.5 nr"},{"ID":"9616","标识":"IC1776","M标识":"IC1776","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"2h5m15.1s","赤经D(J2000)":"2.087527777777778","赤纬(J2000)":"+6h6m20s","赤纬D(J2000)":"6.105555555555555","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"159","详细描述":"faint, pretty large, irregularly round, diffuse","简略描述":"F, pL, iR, dif"},{"ID":"9617","标识":"IC1777","M标识":"IC1777","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h6m8.6s","赤经D(J2000)":"2.102388888888889","赤纬(J2000)":"+15h12m36s","赤纬D(J2000)":"15.209999999999999","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, extremely small, round, stellar","简略描述":"F, eS, R, stell"},{"ID":"9618","标识":"IC1778","M标识":"IC1778","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sab","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"2h6m19.4s","赤经D(J2000)":"2.105388888888889","赤纬(J2000)":"+9h13m38s","赤纬D(J2000)":"9.227222222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"25","详细描述":"faint, small, round, gradually brighter middle and nucleus","简略描述":"F, S, R, gbMN"},{"ID":"9619","标识":"IC1779","M标识":"IC1779","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"2h6m25.9s","赤经D(J2000)":"2.1071944444444446","赤纬(J2000)":"+3h42m23s","赤纬D(J2000)":"3.706388888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"100","详细描述":"faint, small, round, 14th magnitude star near","简略描述":"F, S, R, * 14 nr"},{"ID":"9620","标识":"IC1780","M标识":"IC1780","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h6m51.1s","赤经D(J2000)":"2.1141944444444447","赤纬(J2000)":"+14h43m20s","赤纬D(J2000)":"14.722222222222223","可见光星等V":"14.9","摄影(蓝光)星等B":"15.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"9","详细描述":"","简略描述":"F, S, dif, sev st 9?10 nr"},{"ID":"9621","标识":"IC1781","M标识":"IC1781","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h6m52.8s","赤经D(J2000)":"2.114666666666667","赤纬(J2000)":"-0h31m5s","赤纬D(J2000)":"-0.5180555555555556","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round, nuclear","简略描述":"F, vS, R, N"},{"ID":"9622","标识":"IC1782","M标识":"IC1782","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h7m20s","赤经D(J2000)":"2.1222222222222222","赤纬(J2000)":"-25h26m30s","赤纬D(J2000)":"-25.441666666666666","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"102","详细描述":"","简略描述":"vF, D * in neb"},{"ID":"9623","标识":"IC1783","M标识":"IC1783","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h10m6s","赤经D(J2000)":"2.168333333333333","赤纬(J2000)":"-32h56m23s","赤纬D(J2000)":"-32.939722222222215","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2","短轴(分)":"0.8","方位角":"3","详细描述":"pretty faint, very small, much extended north-south, faint star to west","简略描述":"pF, vS, mE ns, F * p"},{"ID":"9624","标识":"IC1784","M标识":"IC1784","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h16m12.8s","赤经D(J2000)":"2.2702222222222224","赤纬(J2000)":"+32h38m57s","赤纬D(J2000)":"32.649166666666666","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"88","详细描述":"faint, large, extended east-west, gradually brighter middle","简略描述":"F, L, E pf, gbM"},{"ID":"9625","标识":"IC1785","M标识":"IC1785","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h16m21s","赤经D(J2000)":"2.2725","赤纬(J2000)":"+32h40m1s","赤纬D(J2000)":"32.66694444444444","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"144","详细描述":"faint, small, round, stellar","简略描述":"F, S, R, stell"},{"ID":"9626","标识":"IC1786","M标识":"IC1786","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h16m5.5s","赤经D(J2000)":"2.268194444444444","赤纬(J2000)":"+5h8m46s","赤纬D(J2000)":"5.146111111111112","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"160","详细描述":"very faint, very small, round, nuclear","简略描述":"vF, vS, R, N"},{"ID":"9627","标识":"IC1787","M标识":"IC1787","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h16m10.6s","赤经D(J2000)":"2.2696111111111112","赤纬(J2000)":"-11h55m32s","赤纬D(J2000)":"-11.925555555555555","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.2","短轴(分)":"0.5","方位角":"39","详细描述":"extremely faint, very much extended, between 2 stars east and west, 8th magnitude star to northeast","简略描述":"eF, vmE, bet 2 st pf, * 8 nf"},{"ID":"9628","标识":"IC1788","M标识":"IC1788","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h15m50.2s","赤经D(J2000)":"2.2639444444444443","赤纬(J2000)":"-31h12m4s","赤纬D(J2000)":"-31.20111111111111","可见光星等V":"11.6","摄影(蓝光)星等B":"12.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.6","短轴(分)":"1.1","方位角":"27","详细描述":"pretty faint, pretty small, round, 2 stars to northeast","简略描述":"pF, pS, R, 2 st nf"},{"ID":"9629","标识":"IC1789","M标识":"IC1789","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h17m51.3s","赤经D(J2000)":"2.2975833333333333","赤纬(J2000)":"+32h23m44s","赤纬D(J2000)":"32.39555555555555","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.2","短轴(分)":"0.4","方位角":"27","详细描述":"faint, small, irregular figure, questionable","简略描述":"F, S, iF, ?"},{"ID":"9630","标识":"IC1790","M标识":"IC1790","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h17m37.9s","赤经D(J2000)":"2.293861111111111","赤纬(J2000)":"+12h30m33s","赤纬D(J2000)":"12.509166666666667","可见光星等V":"14.9","摄影(蓝光)星等B":"15.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.3","方位角":"65","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"9631","标识":"IC1791","M标识":"IC1791","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h17m41.3s","赤经D(J2000)":"2.2948055555555555","赤纬(J2000)":"+12h28m13s","赤纬D(J2000)":"12.470277777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"","简略描述":"S, R, like neb * 11"},{"ID":"9632","标识":"IC1792","M标识":"IC1792","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h19m1.1s","赤经D(J2000)":"2.3169722222222218","赤纬(J2000)":"+34h27m42s","赤纬D(J2000)":"34.461666666666666","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"33","详细描述":"faint, small, pretty round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, pR, gbM, r"},{"ID":"9633","标识":"IC1793","M标识":"IC1793","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h21m32.2s","赤经D(J2000)":"2.3589444444444445","赤纬(J2000)":"+32h32m39s","赤纬D(J2000)":"32.54416666666666","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"34","详细描述":"faint, small, extended 200°, gradually a little brighter middle","简略描述":"F, S, E 200°, glbM"},{"ID":"9634","标识":"IC1794","M标识":"IC1794","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h21m30.1s","赤经D(J2000)":"2.3583611111111114","赤纬(J2000)":"+15h45m44s","赤纬D(J2000)":"15.762222222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"108","详细描述":"faint, very small, diffuse, mottled but not resolved","简略描述":"F, vS, dif, r"},{"ID":"9635","标识":"IC1795","M标识":"IC1795","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"鱼头星云","类型":"Nb","含重复类型":"Dup","形态":"EN","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"2h25m27.8s","赤经D(J2000)":"2.4243888888888887","赤纬(J2000)":"+62h1m10s","赤纬D(J2000)":"62.019444444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"10","方位角":"","详细描述":"","简略描述":"Patch of neby"},{"ID":"9636","标识":"IC1796","M标识":"IC1796","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"2h22m47.3s","赤经D(J2000)":"2.3798055555555555","赤纬(J2000)":"-41h22m15s","赤纬D(J2000)":"-41.37083333333334","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"86","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"9637","标识":"IC1797","M标识":"IC1797","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h25m27.9s","赤经D(J2000)":"2.4244166666666667","赤纬(J2000)":"+20h23m44s","赤纬D(J2000)":"20.395555555555553","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"138","详细描述":"faint, very small, irregular figure, diffuse","简略描述":"F, vS, iF, dif"},{"ID":"9638","标识":"IC1798","M标识":"IC1798","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h26m15.5s","赤经D(J2000)":"2.437638888888889","赤纬(J2000)":"+13h25m51s","赤纬D(J2000)":"13.430833333333332","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, suddenly brighter middle equal to 15th magnitude star","简略描述":"vF, vS, sbM * 15"},{"ID":"9639","标识":"IC1799","M标识":"IC1799","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S?","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"2h28m45.8s","赤经D(J2000)":"2.479388888888889","赤纬(J2000)":"+45h58m16s","赤纬D(J2000)":"45.971111111111114","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"34","详细描述":"","简略描述":"vF, S, lbM, * 13 p 0'.5"},{"ID":"9640","标识":"IC1800","M标识":"IC1800","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h28m31.4s","赤经D(J2000)":"2.475388888888889","赤纬(J2000)":"+31h24m48s","赤纬D(J2000)":"31.41333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, S, ? eS Cl"},{"ID":"9641","标识":"IC1801","M标识":"IC1801","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h28m12.9s","赤经D(J2000)":"2.47025","赤纬(J2000)":"+19h34m59s","赤纬D(J2000)":"19.583055555555557","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"40","详细描述":"faint, small, gradually a little brighter middle, diffuse","简略描述":"F, S, glbM, dif"},{"ID":"9642","标识":"IC1802","M标识":"IC1802","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h29m13.9s","赤经D(J2000)":"2.4871944444444445","赤纬(J2000)":"+23h5m0s","赤纬D(J2000)":"23.083333333333332","可见光星等V":"13.4","摄影(蓝光)星等B":"14.6","B-V":"1.2","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"115","详细描述":"magnitude 11 star 1 arcmin to the northwest","简略描述":"* 11 np 1'"},{"ID":"9643","标识":"IC1803","M标识":"IC1803","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h29m17.2s","赤经D(J2000)":"2.4881111111111114","赤纬(J2000)":"+23h8m27s","赤纬D(J2000)":"23.140833333333333","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"0","详细描述":"stellar nucleus","简略描述":"Stell N"},{"ID":"9644","标识":"IC1804","M标识":"IC1804","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h29m54.4s","赤经D(J2000)":"2.4984444444444445","赤纬(J2000)":"+23h5m50s","赤纬D(J2000)":"23.09722222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"","详细描述":"no description","简略描述":"No descr"},{"ID":"9645","标识":"IC1805","M标识":"IC1805","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"心脏星云","类型":"OCL","含重复类型":"OCL","形态":"III3pn","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"2h32m48s","赤经D(J2000)":"2.5466666666666664","赤纬(J2000)":"+61h27m42s","赤纬D(J2000)":"61.461666666666666","可见光星等V":"6.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, co, eL neby extends f"},{"ID":"9646","标识":"IC1806","M标识":"IC1806","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h29m34.9s","赤经D(J2000)":"2.493027777777778","赤纬(J2000)":"+22h56m38s","赤纬D(J2000)":"22.94388888888889","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"135","详细描述":"faint, very small, round, brighter middle and nucleus","简略描述":"F, vS, R, bMN"},{"ID":"9647","标识":"IC1807","M标识":"IC1807","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h30m30.9s","赤经D(J2000)":"2.508583333333333","赤纬(J2000)":"+22h57m1s","赤纬D(J2000)":"22.950277777777778","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"9648","标识":"IC1808","M标识":"IC1808","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Irr","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h30m31.1s","赤经D(J2000)":"2.508638888888889","赤纬(J2000)":"-4h12m56s","赤纬D(J2000)":"-4.2155555555555555","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, very small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, vS, R, gbM, r"},{"ID":"9649","标识":"IC1809","M标识":"IC1809","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h31m40.5s","赤经D(J2000)":"2.5279166666666666","赤纬(J2000)":"+22h55m3s","赤纬D(J2000)":"22.9175","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"128","详细描述":"pretty bright, pretty large, extended 135°, gradually brighter middle","简略描述":"pB, pL, E 135°, gbM"},{"ID":"9650","标识":"IC1810","M标识":"IC1810","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h29m26.6s","赤经D(J2000)":"2.4907222222222223","赤纬(J2000)":"-43h4m36s","赤纬D(J2000)":"-43.07666666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"1","方位角":"122","详细描述":"very faint, round, stellar nucleus","简略描述":"vF, R, stell N"},{"ID":"9651","标识":"IC1811","M标识":"IC1811","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h30m38s","赤经D(J2000)":"2.5105555555555554","赤纬(J2000)":"-34h15m53s","赤纬D(J2000)":"-34.264722222222225","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"7","详细描述":"","简略描述":"eeF, S, R, 2 st p, np of 2 (sic)"},{"ID":"9652","标识":"IC1812","M标识":"IC1812","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h29m31.8s","赤经D(J2000)":"2.492166666666667","赤纬(J2000)":"-42h48m41s","赤纬D(J2000)":"-42.811388888888885","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"1.6","方位角":"24","详细描述":"very faint, brighter middle","简略描述":"vF, bM"},{"ID":"9653","标识":"IC1813","M标识":"IC1813","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h30m49.6s","赤经D(J2000)":"2.513777777777778","赤纬(J2000)":"-34h13m18s","赤纬D(J2000)":"-34.22166666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"102","详细描述":"","简略描述":"eF, eS, R, F * n, 2 st np, sf of 2 (sic)"},{"ID":"9654","标识":"IC1814","M标识":"IC1814","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sab","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h31m5.7s","赤经D(J2000)":"2.51825","赤纬(J2000)":"-36h2m5s","赤纬D(J2000)":"-36.03472222222222","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"2.1","短轴(分)":"0.5","方位角":"31","详细描述":"pretty bright, pretty small, much extended","简略描述":"pB, pS, mE"},{"ID":"9655","标识":"IC1815","M标识":"IC1815","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h34m19.9s","赤经D(J2000)":"2.572194444444444","赤纬(J2000)":"+32h25m48s","赤纬D(J2000)":"32.43","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"141","详细描述":"faint, small, round, gradually brighter middle and nucleus","简略描述":"F, S, R, gbMN"},{"ID":"9656","标识":"IC1816","M标识":"IC1816","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h31m51s","赤经D(J2000)":"2.5308333333333333","赤纬(J2000)":"-36h40m20s","赤纬D(J2000)":"-36.67222222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"167","详细描述":"","简略描述":"vF, S, R, 2 st nr p"},{"ID":"9657","标识":"IC1817","M标识":"IC1817","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h33m49.5s","赤经D(J2000)":"2.5637499999999998","赤纬(J2000)":"+11h12m12s","赤纬D(J2000)":"11.203333333333333","可见光星等V":"14.7","摄影(蓝光)星等B":"15.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"10","详细描述":"faint, pretty large, extended east-west, diffuse","简略描述":"F, pL, E pf, dif"},{"ID":"9658","标识":"IC1818","M标识":"IC1818","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h34m7.1s","赤经D(J2000)":"2.5686388888888887","赤纬(J2000)":"-11h2m25s","赤纬D(J2000)":"-11.040277777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"vF, eS, R, prob neb *"},{"ID":"9659","标识":"IC1819","M标识":"IC1819","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h35m41.8s","赤经D(J2000)":"2.5949444444444447","赤纬(J2000)":"+4h3m8s","赤纬D(J2000)":"4.052222222222222","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"36","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"9660","标识":"IC1820","M标识":"IC1820","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h35m52.7s","赤经D(J2000)":"2.5979722222222223","赤纬(J2000)":"+6h2m27s","赤纬D(J2000)":"6.0408333333333335","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"70","详细描述":"faint, very small, round, brighter middle and nucleus","简略描述":"F, vS, R, bMN"},{"ID":"9661","标识":"IC1821","M标识":"IC1821","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h36m25.3s","赤经D(J2000)":"2.6070277777777777","赤纬(J2000)":"+13h46m50s","赤纬D(J2000)":"13.780555555555557","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"90","详细描述":"pretty faint, small, gradually brighter middle, diffuse","简略描述":"pF, S, gbM, dif"},{"ID":"9662","标识":"IC1822","M标识":"IC1822","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h35m42.3s","赤经D(J2000)":"2.5950833333333336","赤纬(J2000)":"-8h33m44s","赤纬D(J2000)":"-8.562222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* 13.5 slightly nebs"},{"ID":"9663","标识":"IC1823","M标识":"IC1823","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"三角座","星座(En)":"TRI","赤经(J2000)":"2h38m36.9s","赤经D(J2000)":"2.6435833333333334","赤纬(J2000)":"+32h4m13s","赤纬D(J2000)":"32.07027777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.9","长轴(分)":"2.1","短轴(分)":"2","方位角":"72","详细描述":"faint, small, irregular figure, diffuse","简略描述":"F, S, iF, dif"},{"ID":"9664","标识":"IC1824","M标识":"IC1824","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"III2p","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"2h42m36s","赤经D(J2000)":"2.71","赤纬(J2000)":"+61h35m42s","赤纬D(J2000)":"61.595","可见光星等V":"6.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, faint stars, perhaps faint nebulosity to west extends to it","简略描述":"Cl, st F, perh. F neby p extends to it"},{"ID":"9665","标识":"IC1825","M标识":"IC1825","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h38m55.5s","赤经D(J2000)":"2.64875","赤纬(J2000)":"+9h5m49s","赤纬D(J2000)":"9.096944444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"15","详细描述":"faint, small, round, gradually brighter middle and nucleus","简略描述":"F, S, R, gbMN"},{"ID":"9666","标识":"IC1826","M标识":"IC1826","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h39m3.7s","赤经D(J2000)":"2.6510277777777778","赤纬(J2000)":"-27h26m35s","赤纬D(J2000)":"-27.443055555555556","可见光星等V":"12.8","摄影(蓝光)星等B":"13.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"137","详细描述":"","简略描述":"pB, cS, R, * 8 nr p"},{"ID":"9667","标识":"IC1827","M标识":"IC1827","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h39m46.4s","赤经D(J2000)":"2.662888888888889","赤纬(J2000)":"+1h33m30s","赤纬D(J2000)":"1.5583333333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"154","详细描述":"","简略描述":"F, S, fan-shape, * 13.5 close s"},{"ID":"9668","标识":"IC1828","M标识":"IC1828","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"P","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h40m29s","赤经D(J2000)":"2.674722222222222","赤纬(J2000)":"+19h17m49s","赤纬D(J2000)":"19.296944444444446","可见光星等V":"13.2","摄影(蓝光)星等B":"13.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"2","详细描述":"faint, small, irregular figure, gradually brighter middle and nucleus","简略描述":"F, S, iF, gbMN"},{"ID":"9669","标识":"IC1829","M标识":"IC1829","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h40m32.8s","赤经D(J2000)":"2.675777777777778","赤纬(J2000)":"+14h17m53s","赤纬D(J2000)":"14.298055555555555","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, very small, diffuse, mottled but not resolved","简略描述":"vF, vS, dif, r"},{"ID":"9670","标识":"IC1830","M标识":"IC1830","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h39m3.7s","赤经D(J2000)":"2.6510277777777778","赤纬(J2000)":"-27h26m35s","赤纬D(J2000)":"-27.443055555555556","可见光星等V":"12.8","摄影(蓝光)星等B":"13.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"137","详细描述":"","简略描述":"vF, S, susp, eF * 1'.5 sp"},{"ID":"9671","标识":"IC1831","M标识":"IC1831","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"2h44m0s","赤经D(J2000)":"2.7333333333333334","赤纬(J2000)":"+63h0m36s","赤纬D(J2000)":"63.01","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"120","短轴(分)":"","方位角":"","详细描述":"very faint, most extremely large","简略描述":"vF, eeL"},{"ID":"9672","标识":"IC1832","M标识":"IC1832","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h41m57.6s","赤经D(J2000)":"2.6993333333333336","赤纬(J2000)":"+19h1m50s","赤纬D(J2000)":"19.030555555555555","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"30","详细描述":"","简略描述":"F, iF or lE ns, bMN"},{"ID":"9673","标识":"IC1833","M标识":"IC1833","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h41m38.6s","赤经D(J2000)":"2.694055555555556","赤纬(J2000)":"-28h10m18s","赤纬D(J2000)":"-28.171666666666667","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"61","详细描述":"","简略描述":"eeF, S, R, 3 D st nf"},{"ID":"9674","标识":"IC1834","M标识":"IC1834","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h42m48s","赤经D(J2000)":"2.7133333333333334","赤纬(J2000)":"+3h5m2s","赤纬D(J2000)":"3.083888888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"156","详细描述":"faint, pretty small, pretty round, gradually a little brighter middle","简略描述":"F, pS, pR, glbM"},{"ID":"9675","标识":"IC1835","M标识":"IC1835","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h43m49s","赤经D(J2000)":"2.730277777777778","赤纬(J2000)":"+14h53m22s","赤纬D(J2000)":"14.889444444444443","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"9676","标识":"IC1836","M标识":"IC1836","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h43m23.3s","赤经D(J2000)":"2.723138888888889","赤纬(J2000)":"+3h6m18s","赤纬D(J2000)":"3.105","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, very little brighter middle","简略描述":"F, S, R, vlbM"},{"ID":"9677","标识":"IC1837","M标识":"IC1837","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h43m31.3s","赤经D(J2000)":"2.7253611111111113","赤纬(J2000)":"+0h18m25s","赤纬D(J2000)":"0.3069444444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"11","详细描述":"faint, very small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, vS, R, gbM, r"},{"ID":"9678","标识":"IC1838","M标识":"IC1838","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h44m43s","赤经D(J2000)":"2.745277777777778","赤纬(J2000)":"+19h27m18s","赤纬D(J2000)":"19.455","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"0","详细描述":"faint, very small, round, suddenly brighter middle equivalent to 14th magnitude star","简略描述":"F, vS, R, sbM * 14"},{"ID":"9679","标识":"IC1839","M标识":"IC1839","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h44m43s","赤经D(J2000)":"2.745277777777778","赤纬(J2000)":"+15h14m22s","赤纬D(J2000)":"15.239444444444443","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.5","方位角":"97","详细描述":"very faint, small, round, diffuse","简略描述":"vF, S, R, dif"},{"ID":"9680","标识":"IC1840","M标识":"IC1840","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h43m41.9s","赤经D(J2000)":"2.7283055555555555","赤纬(J2000)":"-15h42m21s","赤纬D(J2000)":"-15.705833333333333","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"","简略描述":"vF, vS, mbM, 1081 nf"},{"ID":"9681","标识":"IC1841","M标识":"IC1841","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h45m36.3s","赤经D(J2000)":"2.760083333333333","赤纬(J2000)":"+18h55m45s","赤纬D(J2000)":"18.929166666666667","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"51","详细描述":"faint, very small, round, gradually a very little brighter middle","简略描述":"F, vS, R, gvlbM"},{"ID":"9682","标识":"IC1842","M标识":"IC1842","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h45m23.4s","赤经D(J2000)":"2.7565","赤纬(J2000)":"+11h27m32s","赤纬D(J2000)":"11.458888888888888","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"25","详细描述":"faint, very small, round, gradually a little brighter middle","简略描述":"F, vS, R, glbM"},{"ID":"9683","标识":"IC1843","M标识":"IC1843","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h45m24.9s","赤经D(J2000)":"2.7569166666666667","赤纬(J2000)":"+2h52m50s","赤纬D(J2000)":"2.8805555555555555","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"70","详细描述":"faint, pretty large, extended east-west, diffuse","简略描述":"F, pL, E pf, dif"},{"ID":"9684","标识":"IC1844","M标识":"IC1844","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h45m49.2s","赤经D(J2000)":"2.7636666666666665","赤纬(J2000)":"+3h13m50s","赤纬D(J2000)":"3.2305555555555556","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"105","详细描述":"faint, pretty faint, extended east-west, diffuse","简略描述":"F, pF, E pf, dif"},{"ID":"9685","标识":"IC1845","M标识":"IC1845","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h43m56.7s","赤经D(J2000)":"2.732416666666667","赤纬(J2000)":"-27h58m5s","赤纬D(J2000)":"-27.968055555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, round, double star to northwest","简略描述":"eeF, S, R, D * np"},{"ID":"9686","标识":"IC1846","M标识":"IC1846","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"C","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h47m43.5s","赤经D(J2000)":"2.7954166666666667","赤纬(J2000)":"+13h15m20s","赤纬D(J2000)":"13.255555555555556","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"150","详细描述":"faint, small, a gradually little brighter middle","简略描述":"F, S, glbM"},{"ID":"9687","标识":"IC1847","M标识":"IC1847","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h47m53.6s","赤经D(J2000)":"2.798222222222222","赤纬(J2000)":"+14h30m20s","赤纬D(J2000)":"14.505555555555556","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"135","详细描述":"faint, small, irregular figure, mottled but not resolved","简略描述":"F, S, iF, r"},{"ID":"9688","标识":"IC1848","M标识":"IC1848","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV3pn","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"2h51m18s","赤经D(J2000)":"2.855","赤纬(J2000)":"+60h24m30s","赤纬D(J2000)":"60.40833333333333","可见光星等V":"6.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"18","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, st F, extends 8m f, in F neby"},{"ID":"9689","标识":"IC1849","M标识":"IC1849","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h47m44.7s","赤经D(J2000)":"2.79575","赤纬(J2000)":"+9h21m24s","赤纬D(J2000)":"9.356666666666666","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"90","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"9690","标识":"IC1850","M标识":"IC1850","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h48m39.3s","赤经D(J2000)":"2.8109166666666665","赤纬(J2000)":"+13h15m33s","赤纬D(J2000)":"13.259166666666667","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"5","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"9691","标识":"IC1851","M标识":"IC1851","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"2h51m45.9s","赤经D(J2000)":"2.86275","赤纬(J2000)":"+58h18m52s","赤纬D(J2000)":"58.31444444444444","可见光星等V":"99","摄影(蓝光)星等B":"6.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"6.2 magnitude star, nebula attached to southwest, 5' long","简略描述":"* 6.2, neb att sp, 5' l"},{"ID":"9692","标识":"IC1852","M标识":"IC1852","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h49m0.4s","赤经D(J2000)":"2.8167777777777774","赤纬(J2000)":"+13h13m25s","赤纬D(J2000)":"13.223611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"3","详细描述":"faint, pretty small, round, gradually brighter middle","简略描述":"F, pS, R, gbM"},{"ID":"9693","标识":"IC1853","M标识":"IC1853","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h48m4.3s","赤经D(J2000)":"2.801194444444444","赤纬(J2000)":"-13h59m36s","赤纬D(J2000)":"-13.993333333333332","可见光星等V":"13.7","摄影(蓝光)星等B":"14.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"91","详细描述":"extremely faint, very small, (NGC) 1103 2s east and 2' north","简略描述":"eF, vS, 1103 f 2s, 2' n"},{"ID":"9694","标识":"IC1854","M标识":"IC1854","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h49m20.6s","赤经D(J2000)":"2.822388888888889","赤纬(J2000)":"+19h18m16s","赤纬D(J2000)":"19.304444444444446","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"162","详细描述":"faint, very small, round, bright middle and nucleus","简略描述":"F, vS, R, bMN"},{"ID":"9695","标识":"IC1855","M标识":"IC1855","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h49m4.3s","赤经D(J2000)":"2.8178611111111107","赤纬(J2000)":"+13h26m34s","赤纬D(J2000)":"13.442777777777778","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, pretty large, double north south, binary nucleus","简略描述":"F, pL, D ns, biN"},{"ID":"9696","标识":"IC1856","M标识":"IC1856","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h48m50.8s","赤经D(J2000)":"2.814111111111111","赤纬(J2000)":"-0h46m2s","赤纬D(J2000)":"-0.7672222222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"60","详细描述":"faint, small, extended 200°, gradually brighter middle and nucleus","简略描述":"F, S, E 200°, gbMN"},{"ID":"9697","标识":"IC1857","M标识":"IC1857","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h49m38.8s","赤经D(J2000)":"2.827444444444444","赤纬(J2000)":"+14h37m12s","赤纬D(J2000)":"14.620000000000001","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.5","方位角":"150","详细描述":"faint, small, round, gradually a little brighter middle","简略描述":"F, S, R, glbM"},{"ID":"9698","标识":"IC1858","M标识":"IC1858","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h49m8.4s","赤经D(J2000)":"2.819","赤纬(J2000)":"-31h17m22s","赤纬D(J2000)":"-31.289444444444445","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"0.5","方位角":"176","详细描述":"very faint, pretty small, round, 1st of 3","简略描述":"vF, pS, R, 1st of 3"},{"ID":"9699","标识":"IC1859","M标识":"IC1859","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h49m3.8s","赤经D(J2000)":"2.817722222222222","赤纬(J2000)":"-31h10m21s","赤纬D(J2000)":"-31.1725","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"21","详细描述":"pretty faint, pretty small, round, 2nd of 3","简略描述":"pF, pS, R, 2nd of 3"},{"ID":"9700","标识":"IC1860","M标识":"IC1860","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h49m33.7s","赤经D(J2000)":"2.8260277777777776","赤纬(J2000)":"-31h11m23s","赤纬D(J2000)":"-31.189722222222223","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.2","短轴(分)":"1.7","方位角":"6","详细描述":"pretty faint, pretty small, a little extended, 3rd of 3","简略描述":"pF, pS, lE, 3rd of 3"},{"ID":"9701","标识":"IC1861","M标识":"IC1861","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"2h53m7s","赤经D(J2000)":"2.8852777777777776","赤纬(J2000)":"+25h29m25s","赤纬D(J2000)":"25.490277777777777","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"150","详细描述":"faint, pretty small, round, very gradually brighter middle","简略描述":"F, pS, R, vgbM"},{"ID":"9702","标识":"IC1862","M标识":"IC1862","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h51m58.8s","赤经D(J2000)":"2.8663333333333334","赤纬(J2000)":"-33h20m24s","赤纬D(J2000)":"-33.34","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3","短轴(分)":"0.3","方位角":"3","详细描述":"most extremely faint, very small, a little extended, very difficult, 7th magnitude star to southeast","简略描述":"eeF, vS, lE, v diffic, * 7 sf"},{"ID":"9703","标识":"IC1863","M标识":"IC1863","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h54m50.7s","赤经D(J2000)":"2.914083333333333","赤纬(J2000)":"+8h47m6s","赤纬D(J2000)":"8.785","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round, gradually brighter middle and nucleus","简略描述":"F, vS, R, gbMN"},{"ID":"9704","标识":"IC1864","M标识":"IC1864","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"2h53m39.4s","赤经D(J2000)":"2.894277777777778","赤纬(J2000)":"-34h11m53s","赤纬D(J2000)":"-34.198055555555555","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"63","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"9705","标识":"IC1865","M标识":"IC1865","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h55m20s","赤经D(J2000)":"2.922222222222222","赤纬(J2000)":"+8h49m41s","赤纬D(J2000)":"8.828055555555554","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"90","详细描述":"faint, very small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, vS, R, gbM, r"},{"ID":"9706","标识":"IC1866","M标识":"IC1866","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h54m52.9s","赤经D(J2000)":"2.9146944444444443","赤纬(J2000)":"-15h39m10s","赤纬D(J2000)":"-15.652777777777779","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"90","详细描述":"very faint, extremely small, almost stellar","简略描述":"vF, eS, alm stell"},{"ID":"9707","标识":"IC1867","M标识":"IC1867","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h55m52.2s","赤经D(J2000)":"2.9311666666666665","赤纬(J2000)":"+9h18m44s","赤纬D(J2000)":"9.312222222222223","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"15","详细描述":"faint, small, pretty round, gradually brighter middle","简略描述":"F, S, pR, gbM"},{"ID":"9708","标识":"IC1868","M标识":"IC1868","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h56m5.8s","赤经D(J2000)":"2.9349444444444446","赤纬(J2000)":"+9h22m46s","赤纬D(J2000)":"9.379444444444445","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"70","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"9709","标识":"IC1869","M标识":"IC1869","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"2h58m11.7s","赤经D(J2000)":"2.9699166666666668","赤纬(J2000)":"+5h50m12s","赤纬D(J2000)":"5.836666666666666","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"120","详细描述":"","简略描述":"F, eS, like neb D *"},{"ID":"9710","标识":"IC1870","M标识":"IC1870","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"2h57m53.5s","赤经D(J2000)":"2.9648611111111114","赤纬(J2000)":"-2h20m48s","赤纬D(J2000)":"-2.3466666666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"13.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"2.8","短轴(分)":"1.6","方位角":"132","详细描述":"very faint, round, very gradually brighter middle, very difficult","简略描述":"vF, R, vgbM, v diffic"},{"ID":"9711","标识":"IC1871","M标识":"IC1871","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"2h57m21.7s","赤经D(J2000)":"2.956027777777778","赤纬(J2000)":"+60h40m20s","赤纬D(J2000)":"60.67222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* 9.3 nebs, chiefly f"},{"ID":"9712","标识":"IC1872","M标识":"IC1872","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h4m34.9s","赤经D(J2000)":"3.0763611111111113","赤纬(J2000)":"+42h48m34s","赤纬D(J2000)":"42.809444444444445","可见光星等V":"99","摄影(蓝光)星等B":"16","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster","简略描述":"Cl"},{"ID":"9713","标识":"IC1873","M标识":"IC1873","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"3h3m52.8s","赤经D(J2000)":"3.0646666666666667","赤纬(J2000)":"+9h36m50s","赤纬D(J2000)":"9.613888888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"24","详细描述":"faint, small, extended 200°","简略描述":"F, S, E 200°"},{"ID":"9714","标识":"IC1874","M标识":"IC1874","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h6m21.9s","赤经D(J2000)":"3.1060833333333333","赤纬(J2000)":"+36h0m54s","赤纬D(J2000)":"36.015","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.7","方位角":"96","详细描述":"faint, very small, very little brighter middle, diffuse","简略描述":"F, vS, vlbM, dif"},{"ID":"9715","标识":"IC1875","M标识":"IC1875","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h3m56.6s","赤经D(J2000)":"3.065722222222222","赤纬(J2000)":"-39h26m27s","赤纬D(J2000)":"-39.44083333333333","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"3","详细描述":"","简略描述":"eF, pS, R, F D * sf in line"},{"ID":"9716","标识":"IC1876","M标识":"IC1876","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h4m32.3s","赤经D(J2000)":"3.0756388888888893","赤纬(J2000)":"-27h27m36s","赤纬D(J2000)":"-27.46","可见光星等V":"14.1","摄影(蓝光)星等B":"14.4","B-V":"0.3","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.1","短轴(分)":"1","方位角":"3","详细描述":"most extremely faint, small, round, faint star near to southeast","简略描述":"eeF, S, R, F * nr sf"},{"ID":"9717","标识":"IC1877","M标识":"IC1877","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h3m9.6s","赤经D(J2000)":"3.0526666666666666","赤纬(J2000)":"-50h30m41s","赤纬D(J2000)":"-50.51138888888889","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"155","详细描述":"","简略描述":"eF, vS, E 170°, prob neb"},{"ID":"9718","标识":"IC1878","M标识":"IC1878","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h3m43.4s","赤经D(J2000)":"3.0620555555555553","赤纬(J2000)":"-52h6m6s","赤纬D(J2000)":"-52.10166666666667","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"50","详细描述":"","简略描述":"eeF, eS, cE 5°, prob neb"},{"ID":"9719","标识":"IC1879","M标识":"IC1879","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h3m52.5s","赤经D(J2000)":"3.064583333333333","赤纬(J2000)":"-52h7m4s","赤纬D(J2000)":"-52.117777777777775","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.2","方位角":"136","详细描述":"most extremely faint, extremely small, much extended 135°, stellar nucleus","简略描述":"eeF, eS, mE 135°, stell N"},{"ID":"9720","标识":"IC1880","M标识":"IC1880","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h6m28.4s","赤经D(J2000)":"3.107888888888889","赤纬(J2000)":"-9h43m50s","赤纬D(J2000)":"-9.730555555555556","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"30","详细描述":"","简略描述":"eF, S, * 9 f 8s"},{"ID":"9721","标识":"IC1881","M标识":"IC1881","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sd","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h9m17.3s","赤经D(J2000)":"3.1548055555555554","赤纬(J2000)":"+38h38m57s","赤纬D(J2000)":"38.649166666666666","可见光星等V":"14.4","摄影(蓝光)星等B":"15","B-V":"0.6","表面亮度(mag\/arcmin2)":"15.3","长轴(分)":"1.8","短轴(分)":"1.4","方位角":"54","详细描述":"very faint, pretty small, very diffuse (? = 1213)","简略描述":"vF, pS, v dif [? = 1213]"},{"ID":"9722","标识":"IC1882","M标识":"IC1882","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"3h7m49.5s","赤经D(J2000)":"3.1304166666666666","赤纬(J2000)":"+3h8m50s","赤纬D(J2000)":"3.147222222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"20","详细描述":"faint, pretty large, extended 210°","简略描述":"F, pL, E 210°"},{"ID":"9723","标识":"IC1883","M标识":"IC1883","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h9m42.3s","赤经D(J2000)":"3.16175","赤纬(J2000)":"+40h53m35s","赤纬D(J2000)":"40.893055555555556","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.5","方位角":"22","详细描述":"small, round, very gradually brighter middle","简略描述":"S, R, vgbM"},{"ID":"9724","标识":"IC1884","M标识":"IC1884","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h9m42.8s","赤经D(J2000)":"3.161888888888889","赤纬(J2000)":"+40h58m30s","赤纬D(J2000)":"40.975","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"131","详细描述":"small, extended northwest southeast, difficult, 12th magnitude star close to east","简略描述":"S, E npsf, diffic, * 12 close f"},{"ID":"9725","标识":"IC1885","M标识":"IC1885","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h6m40.3s","赤经D(J2000)":"3.1111944444444446","赤纬(J2000)":"-32h51m51s","赤纬D(J2000)":"-32.86416666666667","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"138","详细描述":"very faint, very small, much extended 140°, gradually brighter middle","简略描述":"vF, vS, mE 140°, gbM"},{"ID":"9726","标识":"IC1886","M标识":"IC1886","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h8m3.2s","赤经D(J2000)":"3.1342222222222222","赤纬(J2000)":"-4h24m0s","赤纬D(J2000)":"-4.4","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.7","方位角":"0","详细描述":"","简略描述":"vF, S, vmbM, * 13 s 1'.2"},{"ID":"9727","标识":"IC1887","M标识":"IC1887","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sd","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h10m12.9s","赤经D(J2000)":"3.17025","赤纬(J2000)":"+40h45m57s","赤纬D(J2000)":"40.76583333333333","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"75","详细描述":"","简略描述":"* 12 close sf"},{"ID":"9728","标识":"IC1888","M标识":"IC1888","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h10m56.1s","赤经D(J2000)":"3.18225","赤纬(J2000)":"+41h8m16s","赤纬D(J2000)":"41.13777777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"90","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"9729","标识":"IC1889","M标识":"IC1889","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h11m3.1s","赤经D(J2000)":"3.184194444444444","赤纬(J2000)":"+40h37m18s","赤纬D(J2000)":"40.62166666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"15","长轴(分)":"2.1","短轴(分)":"1.5","方位角":"123","详细描述":"faint, round, very gradually brighter middle","简略描述":"F, R, vgbM"},{"ID":"9730","标识":"IC1890","M标识":"IC1890","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"3h9m58.4s","赤经D(J2000)":"3.1662222222222223","赤纬(J2000)":"+19h12m31s","赤纬D(J2000)":"19.20861111111111","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"pretty bright, pretty large, irregular figure, nuclear, mottled but not resolved","简略描述":"pB, pL, iF, N, r"},{"ID":"9731","标识":"IC1891","M标识":"IC1891","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"3h10m12s","赤经D(J2000)":"3.17","赤纬(J2000)":"+19h36m24s","赤纬D(J2000)":"19.60666666666667","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"45","详细描述":"very faint, small, brighter middle, diffuse","简略描述":"vF, S, bM, dif"},{"ID":"9732","标识":"IC1892","M标识":"IC1892","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB\/P","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h8m27.2s","赤经D(J2000)":"3.140888888888889","赤纬(J2000)":"-23h3m20s","赤纬D(J2000)":"-23.055555555555557","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"10","详细描述":"","简略描述":"vF, L, nr 1230"},{"ID":"9733","标识":"IC1893","M标识":"IC1893","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"3h10m16.5s","赤经D(J2000)":"3.1712499999999997","赤纬(J2000)":"+19h37m1s","赤纬D(J2000)":"19.616944444444446","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"50","详细描述":"","简略描述":"ef, vS, diffic"},{"ID":"9734","标识":"IC1894","M标识":"IC1894","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"白羊座","星座(En)":"ARI","赤经(J2000)":"3h10m25.4s","赤经D(J2000)":"3.173722222222222","赤纬(J2000)":"+19h36m26s","赤纬D(J2000)":"19.607222222222223","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"5","详细描述":"faint, small, very little brighter middle, diffuse","简略描述":"F, S, vlbM, dif"},{"ID":"9735","标识":"IC1895","M标识":"IC1895","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h9m36.2s","赤经D(J2000)":"3.1600555555555556","赤纬(J2000)":"-25h15m12s","赤纬D(J2000)":"-25.253333333333334","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"153","详细描述":"","简略描述":"eeF, pS, 2 st close p"},{"ID":"9736","标识":"IC1896","M标识":"IC1896","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h7m52.9s","赤经D(J2000)":"3.131361111111111","赤纬(J2000)":"-54h12m50s","赤纬D(J2000)":"-54.21388888888889","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"16","详细描述":"most extremely faint, extremely small, considerably extended 10°, stellar nucleus","简略描述":"eeF, eS, cE 10°, stell N"},{"ID":"9737","标识":"IC1897","M标识":"IC1897","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h10m45.9s","赤经D(J2000)":"3.1794166666666666","赤纬(J2000)":"-10h47m44s","赤纬D(J2000)":"-10.795555555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"eF, vS, nr 1238"},{"ID":"9738","标识":"IC1898","M标识":"IC1898","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h10m20.4s","赤经D(J2000)":"3.172333333333333","赤纬(J2000)":"-22h24m14s","赤纬D(J2000)":"-22.403888888888886","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.6","短轴(分)":"0.6","方位角":"73","详细描述":"","简略描述":"Neb line at 60°, susp"},{"ID":"9739","标识":"IC1899","M标识":"IC1899","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h12m13s","赤经D(J2000)":"3.2036111111111114","赤纬(J2000)":"-25h18m18s","赤纬D(J2000)":"-25.305","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"165","详细描述":"most extremely faint, small, round, 2 faint stars in line to southwest","简略描述":"eeF, S, R, 2 F st sp in line"},{"ID":"9740","标识":"IC1900","M标识":"IC1900","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h15m55.2s","赤经D(J2000)":"3.2653333333333334","赤纬(J2000)":"+37h9m17s","赤纬D(J2000)":"37.15472222222222","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"96","详细描述":"faint, small, pretty round, gradually brighter middle and nucleus","简略描述":"F, S, pR, gbMN"},{"ID":"9741","标识":"IC1901","M标识":"IC1901","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h16m2.5s","赤经D(J2000)":"3.267361111111111","赤纬(J2000)":"+37h6m47s","赤纬D(J2000)":"37.113055555555555","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"170","详细描述":"faint, very small, round, gradually brighter middle and nucleus","简略描述":"F, vS, R, gbMN"},{"ID":"9742","标识":"IC1902","M标识":"IC1902","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h16m12.4s","赤经D(J2000)":"3.270111111111111","赤纬(J2000)":"+37h10m41s","赤纬D(J2000)":"37.17805555555555","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round, suddenly brighter middle equivalent to 14th magnitude star","简略描述":"F, vS, R, sbM * 14"},{"ID":"9743","标识":"IC1903","M标识":"IC1903","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h13m12.6s","赤经D(J2000)":"3.2201666666666666","赤纬(J2000)":"-50h34m41s","赤纬D(J2000)":"-50.57805555555556","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"6","详细描述":"2 faint nebulae, extended","简略描述":"2 F neb, E"},{"ID":"9744","标识":"IC1904","M标识":"IC1904","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h15m0.9s","赤经D(J2000)":"3.25025","赤纬(J2000)":"-30h42m30s","赤纬D(J2000)":"-30.708333333333332","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"108","详细描述":"extremely faint, very small, much extended 80°, stellar nucleus","简略描述":"eF, vS, mE 80°, stell N"},{"ID":"9745","标识":"IC1905","M标识":"IC1905","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h18m48s","赤经D(J2000)":"3.313333333333333","赤纬(J2000)":"+41h21m59s","赤纬D(J2000)":"41.36638888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, small, very faint, perhaps nebulous","简略描述":"Cl, S, vF, ? Neb"},{"ID":"9746","标识":"IC1906","M标识":"IC1906","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h16m5.7s","赤经D(J2000)":"3.26825","赤纬(J2000)":"-34h21m36s","赤纬D(J2000)":"-34.36","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"63","详细描述":"","简略描述":"vF, vS, vmE 60°, gbM"},{"ID":"9747","标识":"IC1907","M标识":"IC1907","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E2","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h19m54.1s","赤经D(J2000)":"3.331694444444444","赤纬(J2000)":"+41h33m49s","赤纬D(J2000)":"41.56361111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13.6","B-V":"1.2","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"102","详细描述":"very faint, small, very much brighter middle","简略描述":"vF, S, vmbM"},{"ID":"9748","标识":"IC1908","M标识":"IC1908","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h15m5.1s","赤经D(J2000)":"3.2514166666666666","赤纬(J2000)":"-54h49m9s","赤纬D(J2000)":"-54.81916666666667","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"45","详细描述":"very faint, very small, spiral branch","简略描述":"vF, vS, spir branch"},{"ID":"9749","标识":"IC1909","M标识":"IC1909","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h17m20s","赤经D(J2000)":"3.2888888888888888","赤纬(J2000)":"-33h41m25s","赤纬D(J2000)":"-33.69027777777777","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"60","详细描述":"very faint, very small, considerably extended 45°, stellar nucleus","简略描述":"vF, vS, cE 45°, stell N"},{"ID":"9750","标识":"IC1910","M标识":"IC1910","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h17m55.7s","赤经D(J2000)":"3.2988055555555555","赤纬(J2000)":"-21h26m5s","赤纬D(J2000)":"-21.434722222222224","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"2 eF, eS neb susp"},{"ID":"9751","标识":"IC1911","M标识":"IC1911","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h20m46s","赤经D(J2000)":"3.3461111111111115","赤纬(J2000)":"+35h17m40s","赤纬D(J2000)":"35.294444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Neb, not well seen"},{"ID":"9752","标识":"IC1912","M标识":"IC1912","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h16m43.3s","赤经D(J2000)":"3.2786944444444446","赤纬(J2000)":"-50h39m18s","赤纬D(J2000)":"-50.655","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"6","详细描述":"small, extended north-south","简略描述":"S, E ns"},{"ID":"9753","标识":"IC1913","M标识":"IC1913","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h19m34.5s","赤经D(J2000)":"3.32625","赤纬(J2000)":"-32h27m54s","赤纬D(J2000)":"-32.465","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.9","短轴(分)":"0.3","方位角":"149","详细描述":"very faint, very small, much extended 155°, considerably brighter middle","简略描述":"vF, vS, mE 155°, cbM"},{"ID":"9754","标识":"IC1914","M标识":"IC1914","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h19m25.1s","赤经D(J2000)":"3.3236388888888886","赤纬(J2000)":"-49h35m57s","赤纬D(J2000)":"-49.59916666666667","可见光星等V":"12.9","摄影(蓝光)星等B":"13.3","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.9","长轴(分)":"3.4","短轴(分)":"1.6","方位角":"99","详细描述":"","简略描述":"Spiral?"},{"ID":"9755","标识":"IC1915","M标识":"IC1915","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB? R","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h19m51.8s","赤经D(J2000)":"3.3310555555555554","赤纬(J2000)":"-50h41m31s","赤纬D(J2000)":"-50.69194444444444","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"82","详细描述":"extended north-south","简略描述":"E ns"},{"ID":"9756","标识":"IC1916","M标识":"IC1916","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h20m16.2s","赤经D(J2000)":"3.3378333333333337","赤纬(J2000)":"-49h2m30s","赤纬D(J2000)":"-49.041666666666664","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"86","详细描述":"faint, small, round, 2 stars to southwest","简略描述":"F, S, R, 2 st sp"},{"ID":"9757","标识":"IC1917","M标识":"IC1917","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h22m12.3s","赤经D(J2000)":"3.3700833333333335","赤纬(J2000)":"-53h11m8s","赤纬D(J2000)":"-53.18555555555555","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extended north-south","简略描述":"E ns"},{"ID":"9758","标识":"IC1918","M标识":"IC1918","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h26m17.8s","赤经D(J2000)":"3.438277777777778","赤纬(J2000)":"+4h32m30s","赤纬D(J2000)":"4.541666666666667","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.2","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"160","详细描述":"faint, small, gradually a little brighter middle, diffuse","简略描述":"F, S, glbM, dif"},{"ID":"9759","标识":"IC1919","M标识":"IC1919","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h26m2.1s","赤经D(J2000)":"3.4339166666666667","赤纬(J2000)":"-32h53m41s","赤纬D(J2000)":"-32.89472222222222","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1","方位角":"84","详细描述":"","简略描述":"eF, pS, lE, sev st n [? RA 9m]"},{"ID":"9760","标识":"IC1920","M标识":"IC1920","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h24m24.4s","赤经D(J2000)":"3.4067777777777777","赤纬(J2000)":"-52h42m49s","赤纬D(J2000)":"-52.71361111111111","可见光星等V":"15.5","摄影(蓝光)星等B":"16.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"160","详细描述":"stellar","简略描述":"Stellar"},{"ID":"9761","标识":"IC1921","M标识":"IC1921","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h24m42s","赤经D(J2000)":"3.4116666666666666","赤纬(J2000)":"-50h41m54s","赤纬D(J2000)":"-50.69833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"stellar","简略描述":"Stellar"},{"ID":"9762","标识":"IC1922","M标识":"IC1922","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h24m43s","赤经D(J2000)":"3.4119444444444444","赤纬(J2000)":"-50h44m25s","赤纬D(J2000)":"-50.74027777777778","可见光星等V":"16.1","摄影(蓝光)星等B":"16.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"46","详细描述":"stellar","简略描述":"Stellar"},{"ID":"9763","标识":"IC1923","M标识":"IC1923","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S+S","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h24m53s","赤经D(J2000)":"3.414722222222222","赤纬(J2000)":"-50h33m20s","赤纬D(J2000)":"-50.55555555555555","可见光星等V":"16.1","摄影(蓝光)星等B":"17.5","B-V":"1.4","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"91","详细描述":"stellar","简略描述":"Stellar"},{"ID":"9764","标识":"IC1924","M标识":"IC1924","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h25m7.5s","赤经D(J2000)":"3.4187499999999997","赤纬(J2000)":"-51h42m12s","赤纬D(J2000)":"-51.70333333333333","可见光星等V":"15.9","摄影(蓝光)星等B":"16.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"75","详细描述":"extended, stellar","简略描述":"E, stellar"},{"ID":"9765","标识":"IC1925","M标识":"IC1925","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h25m25.6s","赤经D(J2000)":"3.4237777777777776","赤纬(J2000)":"-51h16m0s","赤纬D(J2000)":"-51.266666666666666","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"143","详细描述":"extended northwest southeast, stellar","简略描述":"E npsf, stell"},{"ID":"9766","标识":"IC1926","M标识":"IC1926","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h25m18.8s","赤经D(J2000)":"3.4218888888888888","赤纬(J2000)":"-51h42m4s","赤纬D(J2000)":"-51.70111111111111","可见光星等V":"15.8","摄影(蓝光)星等B":"16.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"80","详细描述":"extended, stellar","简略描述":"E, stell"},{"ID":"9767","标识":"IC1927","M标识":"IC1927","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h25m13s","赤经D(J2000)":"3.4202777777777778","赤纬(J2000)":"-51h43m56s","赤纬D(J2000)":"-51.73222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"9768","标识":"IC1928","M标识":"IC1928","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h27m29.1s","赤经D(J2000)":"3.4580833333333336","赤纬(J2000)":"-21h33m35s","赤纬D(J2000)":"-21.559722222222224","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"30","详细描述":"very faint, very small, much extended 20°, considerably brighter middle","简略描述":"vF, vS, mE 20°, cbM"},{"ID":"9769","标识":"IC1929","M标识":"IC1929","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sab","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h25m25.6s","赤经D(J2000)":"3.4237777777777776","赤纬(J2000)":"-51h16m0s","赤纬D(J2000)":"-51.266666666666666","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"143","详细描述":"extended northwest southeast","简略描述":"E npsf"},{"ID":"9770","标识":"IC1930","M标识":"IC1930","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h28m46.1s","赤经D(J2000)":"3.4794722222222223","赤纬(J2000)":"+4h23m2s","赤纬D(J2000)":"4.383888888888889","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"0","详细描述":"","简略描述":"F, S, R, gbM, * 8 p 3s, s 1'.6"},{"ID":"9771","标识":"IC1931","M标识":"IC1931","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"D","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h28m57.8s","赤经D(J2000)":"3.4827222222222223","赤纬(J2000)":"+1h45m2s","赤纬D(J2000)":"1.7505555555555556","可见光星等V":"14.7","摄影(蓝光)星等B":"15.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"very faint, diffuse","简略描述":"vF, dif"},{"ID":"9772","标识":"IC1932","M标识":"IC1932","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0 R","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h25m54s","赤经D(J2000)":"3.4316666666666666","赤纬(J2000)":"-51h20m34s","赤纬D(J2000)":"-51.34277777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"15","详细描述":"extended north-south","简略描述":"E ns"},{"ID":"9773","标识":"IC1933","M标识":"IC1933","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h25m39.9s","赤经D(J2000)":"3.4277499999999996","赤纬(J2000)":"-52h47m5s","赤纬D(J2000)":"-52.78472222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"12.9","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.2","短轴(分)":"1.1","方位角":"55","详细描述":"","简略描述":"lE spnf"},{"ID":"9774","标识":"IC1934","M标识":"IC1934","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h31m13.9s","赤经D(J2000)":"3.5205277777777777","赤纬(J2000)":"+42h47m34s","赤纬D(J2000)":"42.79277777777778","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"137","详细描述":"","简略描述":"eF, pS, lbM, * 12 dist 34\""},{"ID":"9775","标识":"IC1935","M标识":"IC1935","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h26m13.3s","赤经D(J2000)":"3.437027777777778","赤纬(J2000)":"-50h0m38s","赤纬D(J2000)":"-50.010555555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"14.7","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"65","详细描述":"","简略描述":"Stell, E, spir ?"},{"ID":"9776","标识":"IC1936","M标识":"IC1936","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h26m27.9s","赤经D(J2000)":"3.4410833333333337","赤纬(J2000)":"-51h19m23s","赤纬D(J2000)":"-51.323055555555555","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"153","详细描述":"","简略描述":"Stell, E npsf"},{"ID":"9777","标识":"IC1937","M标识":"IC1937","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h26m47.4s","赤经D(J2000)":"3.4465000000000003","赤纬(J2000)":"-48h42m10s","赤纬D(J2000)":"-48.70277777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"52","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"9778","标识":"IC1938","M标识":"IC1938","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h27m10.4s","赤经D(J2000)":"3.452888888888889","赤纬(J2000)":"-53h0m36s","赤纬D(J2000)":"-53.01","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"","详细描述":"","简略描述":"Perhaps D *"},{"ID":"9779","标识":"IC1939","M标识":"IC1939","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h27m45s","赤经D(J2000)":"3.4625000000000004","赤纬(J2000)":"-51h4m18s","赤纬D(J2000)":"-51.07166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extended east-west","简略描述":"E pf"},{"ID":"9780","标识":"IC1940","M标识":"IC1940","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h27m42s","赤经D(J2000)":"3.461666666666667","赤纬(J2000)":"-52h8m22s","赤纬D(J2000)":"-52.13944444444444","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"brighter middle","简略描述":"bM"},{"ID":"9781","标识":"IC1941","M标识":"IC1941","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h32m14.8s","赤经D(J2000)":"3.537444444444444","赤纬(J2000)":"+24h23m2s","赤纬D(J2000)":"24.383888888888887","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, S, vmE 0° (prob neb)"},{"ID":"9782","标识":"IC1942","M标识":"IC1942","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h27m54s","赤经D(J2000)":"3.4650000000000003","赤纬(J2000)":"-52h40m32s","赤纬D(J2000)":"-52.675555555555555","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"11","详细描述":"","简略描述":"Stell, E ns"},{"ID":"9783","标识":"IC1943","M标识":"IC1943","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h38m44.9s","赤经D(J2000)":"3.6458055555555555","赤纬(J2000)":"-44h6m2s","赤纬D(J2000)":"-44.10055555555556","可见光星等V":"11.3","摄影(蓝光)星等B":"12.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.8","短轴(分)":"1.4","方位角":"6","详细描述":"pretty bright, small, round","简略描述":"pB, S, R"},{"ID":"9784","标识":"IC1944","M标识":"IC1944","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h29m39.9s","赤经D(J2000)":"3.4944166666666665","赤纬(J2000)":"-47h59m47s","赤纬D(J2000)":"-47.99638888888889","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"12","详细描述":"extremely faint, extremely small, a little extended 20°","简略描述":"eF, eS, lE 20°"},{"ID":"9785","标识":"IC1945","M标识":"IC1945","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h29m16.4s","赤经D(J2000)":"3.487888888888889","赤纬(J2000)":"-52h37m37s","赤纬D(J2000)":"-52.62694444444445","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"129","详细描述":"","简略描述":"Stell"},{"ID":"9786","标识":"IC1946","M标识":"IC1946","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h29m22s","赤经D(J2000)":"3.4894444444444446","赤纬(J2000)":"-52h37m10s","赤纬D(J2000)":"-52.61944444444445","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"62","详细描述":"","简略描述":"Stell"},{"ID":"9787","标识":"IC1947","M标识":"IC1947","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h30m32.6s","赤经D(J2000)":"3.5090555555555554","赤纬(J2000)":"-50h20m20s","赤纬D(J2000)":"-50.33888888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"137","详细描述":"","简略描述":"Stell"},{"ID":"9788","标识":"IC1948","M标识":"IC1948","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h30m49.9s","赤经D(J2000)":"3.5138611111111113","赤纬(J2000)":"-47h57m52s","赤纬D(J2000)":"-47.964444444444446","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"","详细描述":"most extremely faint, small, round","简略描述":"eeF, S, R"},{"ID":"9789","标识":"IC1949","M标识":"IC1949","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h30m52.9s","赤经D(J2000)":"3.5146944444444443","赤纬(J2000)":"-47h58m47s","赤纬D(J2000)":"-47.97972222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"13.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"27","详细描述":"considerably faint, very small, spiral, considerably brighter middle","简略描述":"cF, vS, spir, cbM"},{"ID":"9790","标识":"IC1950","M标识":"IC1950","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h31m4.3s","赤经D(J2000)":"3.517861111111111","赤纬(J2000)":"-50h25m58s","赤纬D(J2000)":"-50.43277777777777","可见光星等V":"14.5","摄影(蓝光)星等B":"15.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"153","详细描述":"extended northwest southeast","简略描述":"E npsf"},{"ID":"9791","标识":"IC1951","M标识":"IC1951","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h30m56.4s","赤经D(J2000)":"3.5156666666666667","赤纬(J2000)":"-53h7m34s","赤纬D(J2000)":"-53.126111111111115","可见光星等V":"16.3","摄影(蓝光)星等B":"17.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"54","详细描述":"extended southwest-northeast","简略描述":"E spnf"},{"ID":"9792","标识":"IC1952","M标识":"IC1952","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h33m26.6s","赤经D(J2000)":"3.5573888888888887","赤纬(J2000)":"-23h42m46s","赤纬D(J2000)":"-23.712777777777777","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.6","短轴(分)":"0.6","方位角":"141","详细描述":"","简略描述":"cF, S, vmE 140°, * 1' sf"},{"ID":"9793","标识":"IC1953","M标识":"IC1953","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h33m41.8s","赤经D(J2000)":"3.561611111111111","赤纬(J2000)":"-21h28m42s","赤纬D(J2000)":"-21.47833333333333","可见光星等V":"11.7","摄影(蓝光)星等B":"12.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.9","短轴(分)":"2.1","方位角":"121","详细描述":"","简略描述":"vF, cL, spir or annular"},{"ID":"9794","标识":"IC1954","M标识":"IC1954","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h31m31.1s","赤经D(J2000)":"3.5253055555555557","赤纬(J2000)":"-51h54m15s","赤纬D(J2000)":"-51.90416666666667","可见光星等V":"11.6","摄影(蓝光)星等B":"12.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3","短轴(分)":"1.5","方位角":"66","详细描述":"faint, pretty large, round, spiral","简略描述":"F, pL, R, spir"},{"ID":"9795","标识":"IC1955","M标识":"IC1955","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h31m24.7s","赤经D(J2000)":"3.523527777777778","赤纬(J2000)":"-57h14m31s","赤纬D(J2000)":"-57.24194444444444","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"9796","标识":"IC1956","M标识":"IC1956","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h35m33.2s","赤经D(J2000)":"3.5925555555555557","赤纬(J2000)":"+5h4m2s","赤纬D(J2000)":"5.067222222222222","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"34","详细描述":"","简略描述":"F, S, E 200°, 2 vF Nuclei"},{"ID":"9797","标识":"IC1957","M标识":"IC1957","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h32m13.4s","赤经D(J2000)":"3.5370555555555554","赤纬(J2000)":"-52h27m25s","赤纬D(J2000)":"-52.456944444444446","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"33","详细描述":"extended southwest-northeast","简略描述":"E spnf"},{"ID":"9798","标识":"IC1958","M标识":"IC1958","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h32m46.6s","赤经D(J2000)":"3.5462777777777776","赤纬(J2000)":"-51h26m28s","赤纬D(J2000)":"-51.441111111111105","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"85","详细描述":"","简略描述":"Stell"},{"ID":"9799","标识":"IC1959","M标识":"IC1959","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h33m12.1s","赤经D(J2000)":"3.5533611111111107","赤纬(J2000)":"-50h24m44s","赤纬D(J2000)":"-50.41222222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.9","短轴(分)":"0.7","方位角":"147","详细描述":"extended northwest southeast","简略描述":"E npsf"},{"ID":"9800","标识":"IC1960","M标识":"IC1960","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h32m32.8s","赤经D(J2000)":"3.5424444444444445","赤纬(J2000)":"-57h12m25s","赤纬D(J2000)":"-57.206944444444446","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"110","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"9801","标识":"IC1961","M标识":"IC1961","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h33m33.3s","赤经D(J2000)":"3.55925","赤纬(J2000)":"-48h57m3s","赤纬D(J2000)":"-48.950833333333335","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"24","详细描述":"extremely faint, very small, considerably extended 20°","简略描述":"eF, vS, cE 20°"},{"ID":"9802","标识":"IC1962","M标识":"IC1962","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h35m37.3s","赤经D(J2000)":"3.5936944444444445","赤纬(J2000)":"-21h17m31s","赤纬D(J2000)":"-21.291944444444447","可见光星等V":"14.1","摄影(蓝光)星等B":"14.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2.7","短轴(分)":"0.5","方位角":"2","详细描述":"extremely faint, small, much extended 175°, gradually brighter middle","简略描述":"eF, S, mE 175°, gbM"},{"ID":"9803","标识":"IC1963","M标识":"IC1963","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h35m31.2s","赤经D(J2000)":"3.592","赤纬(J2000)":"-34h26m48s","赤纬D(J2000)":"-34.446666666666665","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.6","短轴(分)":"0.7","方位角":"84","详细描述":"pretty bright, small, extremely extended 90°","简略描述":"pB, S, eE 90° "},{"ID":"9804","标识":"IC1964","M标识":"IC1964","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h33m30.2s","赤经D(J2000)":"3.5583888888888886","赤纬(J2000)":"-53h10m22s","赤纬D(J2000)":"-53.172777777777775","可见光星等V":"15.8","摄影(蓝光)星等B":"16.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"81","详细描述":"extended east-west","简略描述":"E pf"},{"ID":"9805","标识":"IC1965","M标识":"IC1965","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h33m10.9s","赤经D(J2000)":"3.5530277777777775","赤纬(J2000)":"-56h33m14s","赤纬D(J2000)":"-56.553888888888885","可见光星等V":"15.1","摄影(蓝光)星等B":"15.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"1","短轴(分)":"0.8","方位角":"105","详细描述":"extremely faint, very small, round, considerably brighter middle","简略描述":"eF, vS, R, cbM"},{"ID":"9806","标识":"IC1966","M标识":"IC1966","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h34m3.3s","赤经D(J2000)":"3.567583333333333","赤纬(J2000)":"-51h19m20s","赤纬D(J2000)":"-51.32222222222222","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"120","详细描述":"","简略描述":"Stell"},{"ID":"9807","标识":"IC1967","M标识":"IC1967","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h37m47.8s","赤经D(J2000)":"3.6299444444444444","赤纬(J2000)":"+3h16m13s","赤纬D(J2000)":"3.270277777777778","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"57","详细描述":"very faint, small, round, 13th magnitude star near","简略描述":"vF, S, R, * 13 nr"},{"ID":"9808","标识":"IC1968","M标识":"IC1968","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h34m37.8s","赤经D(J2000)":"3.5771666666666664","赤纬(J2000)":"-50h39m5s","赤纬D(J2000)":"-50.65138888888889","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"92","详细描述":"","简略描述":"Stell"},{"ID":"9809","标识":"IC1969","M标识":"IC1969","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h36m13.9s","赤经D(J2000)":"3.603861111111111","赤纬(J2000)":"-45h10m45s","赤纬D(J2000)":"-45.17916666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.2","方位角":"42","详细描述":"extremely faint, very small, considerably extended 50°, considerably brighter middle","简略描述":"eF, vS, cE 50°, cbM"},{"ID":"9810","标识":"IC1970","M标识":"IC1970","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h36m31.2s","赤经D(J2000)":"3.6086666666666667","赤纬(J2000)":"-43h57m24s","赤纬D(J2000)":"-43.95666666666667","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"3.1","短轴(分)":"0.6","方位角":"78","详细描述":"extremely faint, very small, extremely extended 75°","简略描述":"eF, vS, eE 75°"},{"ID":"9811","标识":"IC1971","M标识":"IC1971","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa?","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h35m57.5s","赤经D(J2000)":"3.5993055555555555","赤纬(J2000)":"-52h39m0s","赤纬D(J2000)":"-52.65","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"173","详细描述":"extended east-west","简略描述":"E pf"},{"ID":"9812","标识":"IC1972","M标识":"IC1972","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h36m21.2s","赤经D(J2000)":"3.605888888888889","赤纬(J2000)":"-51h58m4s","赤纬D(J2000)":"-51.967777777777776","可见光星等V":"15.6","摄影(蓝光)星等B":"16.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"154","详细描述":"extended","简略描述":"E"},{"ID":"9813","标识":"IC1973","M标识":"IC1973","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h36m20.9s","赤经D(J2000)":"3.6058055555555555","赤纬(J2000)":"-51h59m38s","赤纬D(J2000)":"-51.99388888888889","可见光星等V":"15.9","摄影(蓝光)星等B":"16.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"11","详细描述":"extended","简略描述":"E"},{"ID":"9814","标识":"IC1974","M标识":"IC1974","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h36m42.2s","赤经D(J2000)":"3.6117222222222223","赤纬(J2000)":"-49h33m1s","赤纬D(J2000)":"-49.55027777777777","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"160","详细描述":"extended northwest southeast","简略描述":"E npsf"},{"ID":"9815","标识":"IC1975","M标识":"IC1975","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h39m3.5s","赤经D(J2000)":"3.6509722222222223","赤纬(J2000)":"-15h29m59s","赤纬D(J2000)":"-15.499722222222221","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"","简略描述":"eF, vS, v diffic, nr 1405"},{"ID":"9816","标识":"IC1976","M标识":"IC1976","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h37m8.9s","赤经D(J2000)":"3.619138888888889","赤纬(J2000)":"-47h26m16s","赤纬D(J2000)":"-47.437777777777775","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"122","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"9817","标识":"IC1977","M标识":"IC1977","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h40m45s","赤经D(J2000)":"3.6791666666666667","赤纬(J2000)":"+17h44m27s","赤纬D(J2000)":"17.740833333333335","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"177","详细描述":"faint, small, round, diffuse, 13.5 magnitude star near","简略描述":"F, S, R, dif, * 13.5 nr"},{"ID":"9818","标识":"IC1978","M标识":"IC1978","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h37m5.5s","赤经D(J2000)":"3.6181944444444443","赤纬(J2000)":"-50h9m4s","赤纬D(J2000)":"-50.151111111111106","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"7","详细描述":"extended north-south","简略描述":"E ns"},{"ID":"9819","标识":"IC1979","M标识":"IC1979","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h36m46.3s","赤经D(J2000)":"3.612861111111111","赤纬(J2000)":"-57h56m40s","赤纬D(J2000)":"-57.94444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eeF, eS, vmE 20°"},{"ID":"9820","标识":"IC1980","M标识":"IC1980","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h36m58.9s","赤经D(J2000)":"3.6163611111111114","赤纬(J2000)":"-57h58m25s","赤纬D(J2000)":"-57.97361111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"20","详细描述":"","简略描述":"eF, cS, vmE 25°"},{"ID":"9821","标识":"IC1981","M标识":"IC1981","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h40m29.3s","赤经D(J2000)":"3.6748055555555554","赤纬(J2000)":"-26h51m43s","赤纬D(J2000)":"-26.861944444444447","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"131","详细描述":"extremely faint, extremely small, a little extended, star close to northeast","简略描述":"eF, eS, lE, * close nf"},{"ID":"9822","标识":"IC1982","M标识":"IC1982","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h37m42.4s","赤经D(J2000)":"3.6284444444444444","赤纬(J2000)":"-57h46m35s","赤纬D(J2000)":"-57.77638888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"considerably faint, extremely small, round","简略描述":"cF, eS, R"},{"ID":"9823","标识":"IC1983","M标识":"IC1983","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h40m56.9s","赤经D(J2000)":"3.682472222222222","赤纬(J2000)":"-22h33m51s","赤纬D(J2000)":"-22.56416666666667","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"3.6","短轴(分)":"1.7","方位角":"148","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"9824","标识":"IC1984","M标识":"IC1984","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h39m50.2s","赤经D(J2000)":"3.6639444444444442","赤纬(J2000)":"-47h4m35s","赤纬D(J2000)":"-47.07638888888889","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"140","详细描述":"most extremely faint, extremely small, much extended 150°","简略描述":"eeF, eS, mE 150°"},{"ID":"9825","标识":"IC1985","M标识":"IC1985","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"Dup","形态":"IV2pn","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h44m34.1s","赤经D(J2000)":"3.7428055555555555","赤纬(J2000)":"+32h9m47s","赤纬D(J2000)":"32.16305555555555","可见光星等V":"7.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* 8 in F, eL neb"},{"ID":"9826","标识":"IC1986","M标识":"IC1986","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h40m35.2s","赤经D(J2000)":"3.6764444444444444","赤纬(J2000)":"-45h21m21s","赤纬D(J2000)":"-45.35583333333334","可见光星等V":"14.3","摄影(蓝光)星等B":"14.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.7","方位角":"120","详细描述":"extremely faint, extremely small, considerably extended 135°","简略描述":"eF, eS, cE 135°"},{"ID":"9827","标识":"IC1987","M标识":"IC1987","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h40m11.5s","赤经D(J2000)":"3.669861111111111","赤纬(J2000)":"-55h3m33s","赤纬D(J2000)":"-55.05916666666666","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"9828","标识":"IC1988","M标识":"IC1988","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h42m45s","赤经D(J2000)":"3.7125000000000004","赤纬(J2000)":"-39h53m13s","赤纬D(J2000)":"-39.886944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, pL, R, 2 st nr f, 2 st np"},{"ID":"9829","标识":"IC1989","M标识":"IC1989","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h41m54.4s","赤经D(J2000)":"3.6984444444444446","赤纬(J2000)":"-50h57m28s","赤纬D(J2000)":"-50.95777777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"131","详细描述":"stellar","简略描述":"stell"},{"ID":"9830","标识":"IC1990","M标识":"IC1990","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h47m13.8s","赤经D(J2000)":"3.7871666666666663","赤纬(J2000)":"+24h20m2s","赤纬D(J2000)":"24.333888888888886","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vL, mE pf, 15' l"},{"ID":"9831","标识":"IC1991","M标识":"IC1991","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h44m46.4s","赤经D(J2000)":"3.7462222222222223","赤纬(J2000)":"-51h31m26s","赤纬D(J2000)":"-51.52388888888889","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"39","详细描述":"stellar, extended southwest-northeast","简略描述":"stell, E spnf"},{"ID":"9832","标识":"IC1992","M标识":"IC1992","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h45m8s","赤经D(J2000)":"3.752222222222222","赤纬(J2000)":"-51h0m18s","赤纬D(J2000)":"-51.005","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"stellar","简略描述":"stell"},{"ID":"9833","标识":"IC1993","M标识":"IC1993","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天炉座","星座(En)":"FOR","赤经(J2000)":"3h47m4.8s","赤经D(J2000)":"3.7846666666666664","赤纬(J2000)":"-33h42m38s","赤纬D(J2000)":"-33.71055555555556","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.5","短轴(分)":"2.2","方位角":"56","详细描述":"","简略描述":"eF, L, cE, * 7.5 att, v diffic"},{"ID":"9834","标识":"IC1994","M标识":"IC1994","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h45m55.1s","赤经D(J2000)":"3.7653055555555555","赤纬(J2000)":"-51h38m36s","赤纬D(J2000)":"-51.64333333333333","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"4","详细描述":"extended north-south","简略描述":"E ns"},{"ID":"9835","标识":"IC1995","M标识":"IC1995","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h50m18.5s","赤经D(J2000)":"3.8384722222222223","赤纬(J2000)":"+25h34m51s","赤纬D(J2000)":"25.580833333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"135","短轴(分)":"135","方位角":"","详细描述":"","简略描述":"* 6 in eF, eeL neb (M.N., lx. P. 260)"},{"ID":"9836","标识":"IC1996","M标识":"IC1996","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h45m7.9s","赤经D(J2000)":"3.7521944444444446","赤纬(J2000)":"-57h19m28s","赤纬D(J2000)":"-57.324444444444445","可见光星等V":"15.6","摄影(蓝光)星等B":"16.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"102","详细描述":"most extremely faint, extremely small, extremely extended 95°","简略描述":"eeF, eS, eE 95°"},{"ID":"9837","标识":"IC1997","M标识":"IC1997","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h44m51.9s","赤经D(J2000)":"3.74775","赤纬(J2000)":"-59h8m15s","赤纬D(J2000)":"-59.1375","可见光星等V":"13.4","摄影(蓝光)星等B":"13.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"73","详细描述":"extremely faint, very small, round, considerably brighter middle, stellar nucleus","简略描述":"eF, vS, R, cbM, stell N"},{"ID":"9838","标识":"IC1998","M标识":"IC1998","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h51m31.2s","赤经D(J2000)":"3.8586666666666667","赤纬(J2000)":"+1h11m25s","赤纬D(J2000)":"1.1902777777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, round, brighter middle and nucleus","简略描述":"F, S, R, bMN"},{"ID":"9839","标识":"IC1999","M标识":"IC1999","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa?","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h47m43s","赤经D(J2000)":"3.7952777777777778","赤纬(J2000)":"-56h57m7s","赤纬D(J2000)":"-56.95194444444445","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"most extremely faint, very small, considerably extended 140°","简略描述":"eeF, vS, cE 140°"},{"ID":"9840","标识":"IC2000","M标识":"IC2000","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h49m7.6s","赤经D(J2000)":"3.8187777777777776","赤纬(J2000)":"-48h51m30s","赤纬D(J2000)":"-48.858333333333334","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"4.1","短轴(分)":"0.8","方位角":"83","详细描述":"","简略描述":"cB, L, eE 80°, vmbM"},{"ID":"9841","标识":"IC2001","M标识":"IC2001","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h50m51.7s","赤经D(J2000)":"3.8476944444444445","赤纬(J2000)":"-48h36m0s","赤纬D(J2000)":"-48.6","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, round, 3 stars near","简略描述":"eF, vS, R, 3 st nr"},{"ID":"9842","标识":"IC2002","M标识":"IC2002","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"3h54m30.3s","赤经D(J2000)":"3.9084166666666667","赤纬(J2000)":"+10h42m25s","赤纬D(J2000)":"10.706944444444444","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"1","方位角":"0","详细描述":"faint, extended north-south, diffuse, 14th magnitude star to north","简略描述":"F, E ns, dif, * 14 n"},{"ID":"9843","标识":"IC2003","M标识":"IC2003","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h56m22s","赤经D(J2000)":"3.9394444444444447","赤纬(J2000)":"+33h52m32s","赤纬D(J2000)":"33.87555555555556","可见光星等V":"11.4","摄影(蓝光)星等B":"12.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.33","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pB, eS, lE ns, * 13 n 4\", * 12 sp 18\""},{"ID":"9844","标识":"IC2004","M标识":"IC2004","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h51m45.6s","赤经D(J2000)":"3.8626666666666667","赤纬(J2000)":"-49h25m9s","赤纬D(J2000)":"-49.41916666666666","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"46","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"9845","标识":"IC2005","M标识":"IC2005","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"3h57m39.5s","赤经D(J2000)":"3.9609722222222223","赤纬(J2000)":"+36h47m15s","赤纬D(J2000)":"36.7875","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.2","长轴(分)":"0.4","短轴(分)":"0.1","方位角":"5","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"9846","标识":"IC2006","M标识":"IC2006","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h54m28.3s","赤经D(J2000)":"3.907861111111111","赤纬(J2000)":"-35h58m2s","赤纬D(J2000)":"-35.967222222222226","可见光星等V":"11.3","摄影(蓝光)星等B":"12.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.9","短轴(分)":"1.6","方位角":"36","详细描述":"pretty bright, small, round, star near to northeast, double star to southwest","简略描述":"pB, S, R, * nr nf, D * sp"},{"ID":"9847","标识":"IC2007","M标识":"IC2007","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h55m22.6s","赤经D(J2000)":"3.922944444444444","赤纬(J2000)":"-28h9m32s","赤纬D(J2000)":"-28.15888888888889","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"52","详细描述":"","简略描述":"eF, S, R, F * att nf"},{"ID":"9848","标识":"IC2008","M标识":"IC2008","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h55m22.6s","赤经D(J2000)":"3.922944444444444","赤纬(J2000)":"-28h9m32s","赤纬D(J2000)":"-28.15888888888889","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"52","详细描述":"","简略描述":"eF, vS, eF * v close nf"},{"ID":"9849","标识":"IC2009","M标识":"IC2009","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h53m34.6s","赤经D(J2000)":"3.8929444444444443","赤纬(J2000)":"-48h59m28s","赤纬D(J2000)":"-48.99111111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"51","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"9850","标识":"IC2010","M标识":"IC2010","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h51m58.2s","赤经D(J2000)":"3.866166666666667","赤纬(J2000)":"-59h55m45s","赤纬D(J2000)":"-59.92916666666667","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"70","详细描述":"","简略描述":"eF, S, E 70°"},{"ID":"9851","标识":"IC2011","M标识":"IC2011","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h52m27.4s","赤经D(J2000)":"3.874277777777778","赤纬(J2000)":"-57h28m5s","赤纬D(J2000)":"-57.46805555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, very small, round","简略描述":"eeF, vS, R"},{"ID":"9852","标识":"IC2012","M标识":"IC2012","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h52m55.3s","赤经D(J2000)":"3.8820277777777776","赤纬(J2000)":"-58h38m57s","赤纬D(J2000)":"-58.649166666666666","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"5","详细描述":"most extremely faint, extremely small, considerably extended north-south","简略描述":"eeF, eS, cE ns"},{"ID":"9853","标识":"IC2013","M标识":"IC2013","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"3h56m44s","赤经D(J2000)":"3.945555555555556","赤纬(J2000)":"-17h6m36s","赤纬D(J2000)":"-17.110000000000003","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably bright, considerably large, much extended 170°, considerably brighter middle, suspected","简略描述":"cB, cL, mE 170°, cbM, susp"},{"ID":"9854","标识":"IC2014","M标识":"IC2014","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h55m21.7s","赤经D(J2000)":"3.9226944444444443","赤纬(J2000)":"-56h44m48s","赤纬D(J2000)":"-56.74666666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"17","详细描述":"most extremely faint, very small, round","简略描述":"eeF, vS, R"},{"ID":"9855","标识":"IC2015","M标识":"IC2015","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"3h58m11.4s","赤经D(J2000)":"3.9698333333333333","赤纬(J2000)":"-40h23m21s","赤纬D(J2000)":"-40.38916666666667","可见光星等V":"14.9","摄影(蓝光)星等B":"15.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, small, round, brighter middle, suspected","简略描述":"eF, S, R, bM, susp"},{"ID":"9856","标识":"IC2016","M标识":"IC2016","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h1m59.9s","赤经D(J2000)":"4.033305555555556","赤纬(J2000)":"+20h14m26s","赤纬D(J2000)":"20.240555555555556","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"5","详细描述":"","简略描述":"eF, vS, * 15 s 30\""},{"ID":"9857","标识":"IC2017","M标识":"IC2017","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h56m38.7s","赤经D(J2000)":"3.9440833333333334","赤纬(J2000)":"-59h23m40s","赤纬D(J2000)":"-59.394444444444446","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"19","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"9858","标识":"IC2018","M标识":"IC2018","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc R","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"3h57m54.4s","赤经D(J2000)":"3.9651111111111113","赤纬(J2000)":"-52h46m50s","赤纬D(J2000)":"-52.78055555555555","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"140","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"9859","标识":"IC2019","M标识":"IC2019","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h1m53.7s","赤经D(J2000)":"4.031583333333333","赤纬(J2000)":"+5h38m21s","赤纬D(J2000)":"5.639166666666666","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"45","详细描述":"faint, small, round, stellar, mottled but not resolved","简略描述":"F, S, R, stell, r"},{"ID":"9860","标识":"IC2020","M标识":"IC2020","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h58m53s","赤经D(J2000)":"3.981388888888889","赤纬(J2000)":"-54h3m30s","赤纬D(J2000)":"-54.05833333333333","可见光星等V":"14.9","摄影(蓝光)星等B":"15.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"9861","标识":"IC2021","M标识":"IC2021","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"3h59m23.9s","赤经D(J2000)":"3.9899722222222223","赤纬(J2000)":"-52h39m24s","赤纬D(J2000)":"-52.656666666666666","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"120","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"9862","标识":"IC2022","M标识":"IC2022","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"3h58m40.2s","赤经D(J2000)":"3.9778333333333333","赤纬(J2000)":"-59h2m39s","赤纬D(J2000)":"-59.04416666666666","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"0","详细描述":"most extremely faint, extremely small, much extended 5°, considerably brighter middle","简略描述":"eeF, eS, mE 5°, cbM"},{"ID":"9863","标识":"IC2023","M标识":"IC2023","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"3h59m40.8s","赤经D(J2000)":"3.994666666666667","赤纬(J2000)":"-52h40m49s","赤纬D(J2000)":"-52.680277777777775","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"9864","标识":"IC2024","M标识":"IC2024","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"4h0m4s","赤经D(J2000)":"4.001111111111111","赤纬(J2000)":"-53h22m19s","赤纬D(J2000)":"-53.371944444444445","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"29","详细描述":"extremely faint, very small, considerably extended 35°","简略描述":"eF, vS, cE 35°"},{"ID":"9865","标识":"IC2025","M标识":"IC2025","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"4h0m22.8s","赤经D(J2000)":"4.006333333333333","赤纬(J2000)":"-53h3m54s","赤纬D(J2000)":"-53.065","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"120","详细描述":"extremely faint, very small, considerably extended 135°","简略描述":"eF, vS, cE 135°"},{"ID":"9866","标识":"IC2026","M标识":"IC2026","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h3m55.1s","赤经D(J2000)":"4.065305555555556","赤纬(J2000)":"-11h10m43s","赤纬D(J2000)":"-11.17861111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"50","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stell"},{"ID":"9867","标识":"IC2027","M标识":"IC2027","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"4h6m39.6s","赤经D(J2000)":"4.111","赤纬(J2000)":"+37h6m57s","赤纬D(J2000)":"37.115833333333335","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round, very little brighter middle","简略描述":"F, vS, R, vlbM"},{"ID":"9868","标识":"IC2028","M标识":"IC2028","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h1m18.1s","赤经D(J2000)":"4.021694444444444","赤纬(J2000)":"-52h42m27s","赤纬D(J2000)":"-52.7075","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"53","详细描述":"considerably faint, very small, round","简略描述":"cF, vS, R"},{"ID":"9869","标识":"IC2029","M标识":"IC2029","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h1m17.8s","赤经D(J2000)":"4.0216111111111115","赤纬(J2000)":"-52h48m3s","赤纬D(J2000)":"-52.80083333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"178","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"9870","标识":"IC2030","M标识":"IC2030","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h4m56s","赤经D(J2000)":"4.082222222222222","赤纬(J2000)":"-19h13m40s","赤纬D(J2000)":"-19.227777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"cF, vS, eE 135°, susp"},{"ID":"9871","标识":"IC2031","M标识":"IC2031","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h6m14.7s","赤经D(J2000)":"4.104083333333333","赤纬(J2000)":"-5h39m7s","赤纬D(J2000)":"-5.651944444444445","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, very small, diffuse, a little brighter middle, 11th magnitude star 3 arcmin to northeast","简略描述":"eF, vS, dif, lbM, * 11 nf 3'"},{"ID":"9872","标识":"IC2032","M标识":"IC2032","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h7m3.2s","赤经D(J2000)":"4.117555555555555","赤纬(J2000)":"-55h19m23s","赤纬D(J2000)":"-55.323055555555555","可见光星等V":"14.1","摄影(蓝光)星等B":"14.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"78","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"9873","标识":"IC2033","M标识":"IC2033","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h7m14.5s","赤经D(J2000)":"4.120694444444444","赤纬(J2000)":"-53h40m52s","赤纬D(J2000)":"-53.68111111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"127","详细描述":"extremely faint, very small, considerably extended 130°","简略描述":"eF, vS, cE 130°"},{"ID":"9874","标识":"IC2034","M标识":"IC2034","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"4h6m36.8s","赤经D(J2000)":"4.110222222222222","赤纬(J2000)":"-57h57m42s","赤纬D(J2000)":"-57.961666666666666","可见光星等V":"15.2","摄影(蓝光)星等B":"15.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.2","方位角":"118","详细描述":"","简略描述":"eeF, vS, cE 115°"},{"ID":"9875","标识":"IC2035","M标识":"IC2035","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"4h9m1.8s","赤经D(J2000)":"4.1505","赤纬(J2000)":"-45h31m2s","赤纬D(J2000)":"-45.51722222222222","可见光星等V":"11.8","摄影(蓝光)星等B":"12.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"86","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"9876","标识":"IC2036","M标识":"IC2036","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"4h9m55s","赤经D(J2000)":"4.165277777777778","赤纬(J2000)":"-39h41m19s","赤纬D(J2000)":"-39.68861111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.8","方位角":"82","详细描述":"most extremely faint, pretty small, round, very difficult, 9th magnitude star to east","简略描述":"eeF, pS, R, v diffic, * 9 f"},{"ID":"9877","标识":"IC2037","M标识":"IC2037","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"4h8m19.3s","赤经D(J2000)":"4.138694444444445","赤纬(J2000)":"-58h45m4s","赤纬D(J2000)":"-58.75111111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"92","详细描述":"extremely faint, very small, extremely extended 90°, considerably brighter middle","简略描述":"eF, vS, eE 90°, cbM"},{"ID":"9878","标识":"IC2038","M标识":"IC2038","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h8m54.2s","赤经D(J2000)":"4.148388888888889","赤纬(J2000)":"-55h59m33s","赤纬D(J2000)":"-55.9925","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.8","短轴(分)":"0.4","方位角":"152","详细描述":"extremely faint, very small, extremely extended 145°","简略描述":"eF, vS, eE 145°"},{"ID":"9879","标识":"IC2039","M标识":"IC2039","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h9m2.6s","赤经D(J2000)":"4.150722222222223","赤纬(J2000)":"-56h0m40s","赤纬D(J2000)":"-56.01111111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"131","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"9880","标识":"IC2040","M标识":"IC2040","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h12m59.6s","赤经D(J2000)":"4.216555555555556","赤纬(J2000)":"-32h33m14s","赤纬D(J2000)":"-32.553888888888885","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"65","详细描述":"","简略描述":"vF, vS, R, rr ?, 1531-32 s"},{"ID":"9881","标识":"IC2041","M标识":"IC2041","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h12m34.9s","赤经D(J2000)":"4.209694444444445","赤纬(J2000)":"-32h49m3s","赤纬D(J2000)":"-32.8175","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"136","详细描述":"","简略描述":"eF, vS, R, * 10 close s"},{"ID":"9882","标识":"IC2042","M标识":"IC2042","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"时钟座","星座(En)":"HOR","赤经(J2000)":"4h11m43s","赤经D(J2000)":"4.195277777777778","赤纬(J2000)":"-47h16m17s","赤纬D(J2000)":"-47.271388888888886","可见光星等V":"99","摄影(蓝光)星等B":"10.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* 9 in neb 1' diam"},{"ID":"9883","标识":"IC2043","M标识":"IC2043","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h11m9.8s","赤经D(J2000)":"4.186055555555556","赤纬(J2000)":"-53h41m11s","赤纬D(J2000)":"-53.686388888888885","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.2","方位角":"15","详细描述":"extremely faint, very small, extremely extended 15°, very much brighter middle","简略描述":"eF, vS, eE 5°, vmbM"},{"ID":"9884","标识":"IC2044","M标识":"IC2044","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h11m14s","赤经D(J2000)":"4.187222222222222","赤纬(J2000)":"-54h31m56s","赤纬D(J2000)":"-54.532222222222224","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"54","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"9885","标识":"IC2045","M标识":"IC2045","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h14m36s","赤经D(J2000)":"4.243333333333333","赤纬(J2000)":"-13h10m30s","赤纬D(J2000)":"-13.174999999999999","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"125","详细描述":"","简略描述":"eF, eS, alm stell, nr 1538"},{"ID":"9886","标识":"IC2046","M标识":"IC2046","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h11m24.5s","赤经D(J2000)":"4.190138888888889","赤纬(J2000)":"-54h40m23s","赤纬D(J2000)":"-54.67305555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"104","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"9887","标识":"IC2047","M标识":"IC2047","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S?","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h14m56s","赤经D(J2000)":"4.248888888888889","赤纬(J2000)":"-13h11m29s","赤纬D(J2000)":"-13.19138888888889","可见光星等V":"15.1","摄影(蓝光)星等B":"16","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"eF, eS, diffic, nr 1538"},{"ID":"9888","标识":"IC2048","M标识":"IC2048","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h14m21s","赤经D(J2000)":"4.239166666666667","赤纬(J2000)":"-33h7m18s","赤纬D(J2000)":"-33.12166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, extremely small, bright star to east, very difficult","简略描述":"eeF, eS, B * f, v diffic"},{"ID":"9889","标识":"IC2049","M标识":"IC2049","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"4h12m4.3s","赤经D(J2000)":"4.201194444444445","赤纬(J2000)":"-58h33m27s","赤纬D(J2000)":"-58.5575","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1","短轴(分)":"0.9","方位角":"168","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"9890","标识":"IC2050","M标识":"IC2050","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h13m56.2s","赤经D(J2000)":"4.232277777777778","赤纬(J2000)":"-53h28m33s","赤纬D(J2000)":"-53.475833333333334","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"23","详细描述":"faint, very small, considerably extended 60°","简略描述":"F, vS, cE 60°"},{"ID":"9891","标识":"IC2051","M标识":"IC2051","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"3h52m0.3s","赤经D(J2000)":"3.86675","赤纬(J2000)":"-83h49m55s","赤纬D(J2000)":"-83.83194444444445","可见光星等V":"11.5","摄影(蓝光)星等B":"12.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.6","短轴(分)":"1.6","方位角":"67","详细描述":"","简略描述":"! vF, vS, stell N ellipt ring"},{"ID":"9892","标识":"IC2052","M标识":"IC2052","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h14m58.7s","赤经D(J2000)":"4.249638888888889","赤纬(J2000)":"-54h20m11s","赤纬D(J2000)":"-54.33638888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"165","详细描述":"very faint, very small, much extended","简略描述":"vF, vS, mE"},{"ID":"9893","标识":"IC2053","M标识":"IC2053","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h15m48s","赤经D(J2000)":"4.263333333333334","赤纬(J2000)":"-49h22m8s","赤纬D(J2000)":"-49.36888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, considerably extended 140°, suspected","简略描述":"eF, S, cE 140°, susp"},{"ID":"9894","标识":"IC2054","M标识":"IC2054","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa?","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"4h7m26.7s","赤经D(J2000)":"4.124083333333333","赤纬(J2000)":"-78h15m13s","赤纬D(J2000)":"-78.25361111111111","可见光星等V":"15.6","摄影(蓝光)星等B":"16.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"","简略描述":"eeF, eS, vF * 1' nf, susp"},{"ID":"9895","标识":"IC2055","M标识":"IC2055","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h17m48s","赤经D(J2000)":"4.296666666666667","赤纬(J2000)":"-48h55m24s","赤纬D(J2000)":"-48.92333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, considerably extended north-south, suspected","简略描述":"F, S, cE ns, susp"},{"ID":"9896","标识":"IC2056","M标识":"IC2056","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"4h16m24.8s","赤经D(J2000)":"4.273555555555555","赤纬(J2000)":"-60h12m23s","赤纬D(J2000)":"-60.20638888888889","可见光星等V":"11.9","摄影(蓝光)星等B":"12.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.9","短轴(分)":"1.6","方位角":"8","详细描述":"faint, pretty large, round, brighter middle","简略描述":"F, pL, R, bM"},{"ID":"9897","标识":"IC2057","M标识":"IC2057","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h21m56s","赤经D(J2000)":"4.365555555555555","赤纬(J2000)":"+4h2m53s","赤纬D(J2000)":"4.048055555555555","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"","详细描述":"pretty bright, pretty small, round, gradually brighter middle, mottled but not resolved","简略描述":"pB, pS, R, gbM, r"},{"ID":"9898","标识":"IC2058","M标识":"IC2058","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h17m54.5s","赤经D(J2000)":"4.298472222222222","赤纬(J2000)":"-55h55m51s","赤纬D(J2000)":"-55.93083333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.9","短轴(分)":"0.4","方位角":"18","详细描述":"considerably bright, considerably large, extremely extended 10°","简略描述":"cB, cL, eE 10°"},{"ID":"9899","标识":"IC2059","M标识":"IC2059","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h20m26.2s","赤经D(J2000)":"4.3406111111111105","赤纬(J2000)":"-31h43m28s","赤纬D(J2000)":"-31.724444444444444","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"172","详细描述":"most extremely faint, pretty large, round","简略描述":"eeF, pL, R"},{"ID":"9900","标识":"IC2060","M标识":"IC2060","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"网罟座","星座(En)":"RET","赤经(J2000)":"4h17m53.5s","赤经D(J2000)":"4.298194444444444","赤纬(J2000)":"-56h36m58s","赤纬D(J2000)":"-56.61611111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"148","详细描述":"faint, small, brighter middle","简略描述":"F, S, bM"},{"ID":"9901","标识":"IC2061","M标识":"IC2061","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h24m0s","赤经D(J2000)":"4.4","赤纬(J2000)":"+21h5m0s","赤纬D(J2000)":"21.083333333333332","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, considerably small, round, suspected","简略描述":"F, cS, R, susp"},{"ID":"9902","标识":"IC2062","M标识":"IC2062","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"4h32m2.1s","赤经D(J2000)":"4.533916666666666","赤纬(J2000)":"+71h55m11s","赤纬D(J2000)":"71.91972222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"9903","标识":"IC2063","M标识":"IC2063","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h22m40.2s","赤经D(J2000)":"4.377833333333333","赤纬(J2000)":"-15h39m40s","赤纬D(J2000)":"-15.661111111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"0","详细描述":"","简略描述":"eF, vS, nr 1561-65"},{"ID":"9904","标识":"IC2064","M标识":"IC2064","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h23m26.7s","赤经D(J2000)":"4.390750000000001","赤纬(J2000)":"-15h41m7s","赤纬D(J2000)":"-15.685277777777777","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"","简略描述":"susp, nf 1565"},{"ID":"9905","标识":"IC2065","M标识":"IC2065","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h21m28.1s","赤经D(J2000)":"4.357805555555555","赤纬(J2000)":"-55h55m58s","赤纬D(J2000)":"-55.93277777777777","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"37","详细描述":"very faint, very small, very much extended 45°, pretty much brighter middle","简略描述":"vF, vS, vmE 45°, pmbM"},{"ID":"9906","标识":"IC2066","M标识":"IC2066","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h23m32.2s","赤经D(J2000)":"4.392277777777778","赤纬(J2000)":"-54h44m0s","赤纬D(J2000)":"-54.733333333333334","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"129","详细描述":"most extremely faint, very small, round","简略描述":"eeF, vS, R"},{"ID":"9907","标识":"IC2067","M标识":"IC2067","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"英仙座","星座(En)":"PER","赤经(J2000)":"4h30m52s","赤经D(J2000)":"4.514444444444444","赤纬(J2000)":"+35h26m42s","赤纬D(J2000)":"35.44499999999999","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, R, * 15 inv n, * 17 close np"},{"ID":"9908","标识":"IC2068","M标识":"IC2068","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h26m36.8s","赤经D(J2000)":"4.443555555555556","赤纬(J2000)":"-42h5m37s","赤纬D(J2000)":"-42.093611111111116","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"153","详细描述":"","简略描述":"eF, pL, R, h 2643 f"},{"ID":"9909","标识":"IC2069","M标识":"IC2069","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h25m56s","赤经D(J2000)":"4.432222222222222","赤纬(J2000)":"-48h12m30s","赤纬D(J2000)":"-48.208333333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, round, suspected","简略描述":"eeF, S, R, susp"},{"ID":"9910","标识":"IC2070","M标识":"IC2070","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h24m35.6s","赤经D(J2000)":"4.409888888888889","赤纬(J2000)":"-57h58m52s","赤纬D(J2000)":"-57.98111111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"85","详细描述":"very faint, very small, considerably brighter middle","简略描述":"vF, vS, cbM"},{"ID":"9911","标识":"IC2071","M标识":"IC2071","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h26m14.3s","赤经D(J2000)":"4.437305555555556","赤纬(J2000)":"-53h9m5s","赤纬D(J2000)":"-53.15138888888889","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"85","详细描述":"","简略描述":"eeF, vS, cE 80°"},{"ID":"9912","标识":"IC2072","M标识":"IC2072","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h26m54s","赤经D(J2000)":"4.448333333333333","赤纬(J2000)":"-48h22m36s","赤纬D(J2000)":"-48.376666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, small, round, suspected","简略描述":"cF, S, R, susp"},{"ID":"9913","标识":"IC2073","M标识":"IC2073","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h26m33.4s","赤经D(J2000)":"4.442611111111112","赤纬(J2000)":"-53h11m18s","赤纬D(J2000)":"-53.18833333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"49","详细描述":"","简略描述":"vF, vS, eE 60°, stell N"},{"ID":"9914","标识":"IC2074","M标识":"IC2074","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h31m23s","赤经D(J2000)":"4.523055555555556","赤纬(J2000)":"+7h42m12s","赤纬D(J2000)":"7.703333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, star involved, perhaps a small cluster?","简略描述":"vF, S, st inv, ? S Cl"},{"ID":"9915","标识":"IC2075","M标识":"IC2075","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h30m51.5s","赤经D(J2000)":"4.514305555555556","赤纬(J2000)":"-5h47m52s","赤纬D(J2000)":"-5.797777777777777","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"60","详细描述":"extremely faint, pretty large, very little brighter middle","简略描述":"eF, pL, vlbM"},{"ID":"9916","标识":"IC2076","M标识":"IC2076","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h28m7s","赤经D(J2000)":"4.4686111111111115","赤纬(J2000)":"-48h13m42s","赤纬D(J2000)":"-48.22833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, considerably extended 130°, suspected","简略描述":"vF, vS, cE 130°, susp"},{"ID":"9917","标识":"IC2077","M标识":"IC2077","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h32m6.1s","赤经D(J2000)":"4.535027777777778","赤纬(J2000)":"+0h34m4s","赤纬D(J2000)":"0.5677777777777777","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"130","详细描述":"faint, very small, gradually brighter middle and nucleus","简略描述":"F, vS, gbMN"},{"ID":"9918","标识":"IC2078","M标识":"IC2078","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h31m52.3s","赤经D(J2000)":"4.531194444444444","赤纬(J2000)":"-4h41m55s","赤纬D(J2000)":"-4.698611111111111","可见光星等V":"99","摄影(蓝光)星等B":"14.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty small","简略描述":"eF, pS"},{"ID":"9919","标识":"IC2079","M标识":"IC2079","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h28m30.7s","赤经D(J2000)":"4.475194444444445","赤纬(J2000)":"-53h44m17s","赤纬D(J2000)":"-53.738055555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"125","详细描述":"extremely faint, very small, extended 130°","简略描述":"eF, vS, E 130°"},{"ID":"9920","标识":"IC2080","M标识":"IC2080","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h31m52.1s","赤经D(J2000)":"4.531138888888889","赤纬(J2000)":"-5h45m25s","赤纬D(J2000)":"-5.756944444444445","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"","简略描述":"eF, vS, 1594 p 90s ±, 3' s"},{"ID":"9921","标识":"IC2081","M标识":"IC2081","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h29m0.7s","赤经D(J2000)":"4.483527777777778","赤纬(J2000)":"-53h36m49s","赤纬D(J2000)":"-53.61361111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"92","详细描述":"extremely faint, very small, round, between 2 faint stars","简略描述":"eF, vS, R, bet 2 F st"},{"ID":"9922","标识":"IC2082","M标识":"IC2082","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h29m7.8s","赤经D(J2000)":"4.4855","赤纬(J2000)":"-53h49m40s","赤纬D(J2000)":"-53.82777777777778","可见光星等V":"12.7","摄影(蓝光)星等B":"13.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"136","详细描述":"considerably faint, small, round","简略描述":"cF, S, R"},{"ID":"9923","标识":"IC2083","M标识":"IC2083","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h30m44.1s","赤经D(J2000)":"4.51225","赤纬(J2000)":"-53h58m51s","赤纬D(J2000)":"-53.98083333333334","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"128","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"9924","标识":"IC2084","M标识":"IC2084","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h32m6.2s","赤经D(J2000)":"4.535055555555555","赤纬(J2000)":"-48h17m18s","赤纬D(J2000)":"-48.288333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, suspected","简略描述":"F, S, R, susp"},{"ID":"9925","标识":"IC2085","M标识":"IC2085","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h31m24.4s","赤经D(J2000)":"4.523444444444444","赤纬(J2000)":"-54h24m58s","赤纬D(J2000)":"-54.41611111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.3","短轴(分)":"0.4","方位角":"119","详细描述":"extremely faint, very small, extremely extended 110°","简略描述":"eF, vS, eE 110°"},{"ID":"9926","标识":"IC2086","M标识":"IC2086","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h31m32.1s","赤经D(J2000)":"4.5255833333333335","赤纬(J2000)":"-53h38m51s","赤纬D(J2000)":"-53.6475","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"most extremely faint, very small, round","简略描述":"eeF, vS, R"},{"ID":"9927","标识":"IC2087","M标识":"IC2087","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h40m0s","赤经D(J2000)":"4.666666666666667","赤纬(J2000)":"+25h44m32s","赤纬D(J2000)":"25.742222222222225","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"4","方位角":"","详细描述":"","简略描述":"eeF, in hole of eL neby"},{"ID":"9928","标识":"IC2088","M标识":"IC2088","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"4h31m0s","赤经D(J2000)":"4.516666666666667","赤纬(J2000)":"+26h36m0s","赤纬D(J2000)":"26.6","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"360","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eeL, 3° long"},{"ID":"9929","标识":"IC2089","M标识":"IC2089","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"4h32m50.6s","赤经D(J2000)":"4.5473888888888885","赤纬(J2000)":"-75h32m25s","赤纬D(J2000)":"-75.54027777777777","可见光星等V":"14.5","摄影(蓝光)星等B":"15.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"","详细描述":"","简略描述":"eeF, vS, R, F * 1' f, susp"},{"ID":"9930","标识":"IC2090","M标识":"IC2090","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h44m45s","赤经D(J2000)":"4.745833333333334","赤纬(J2000)":"-33h59m33s","赤纬D(J2000)":"-33.9925","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, pS, R, 3 st sp"},{"ID":"9931","标识":"IC2091","M标识":"IC2091","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h46m40.1s","赤经D(J2000)":"4.777805555555555","赤纬(J2000)":"-4h40m24s","赤纬D(J2000)":"-4.673333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"faint, stellar nucleus","简略描述":"F, stell N"},{"ID":"9932","标识":"IC2092","M标识":"IC2092","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h46m47.6s","赤经D(J2000)":"4.779888888888888","赤纬(J2000)":"-4h56m39s","赤纬D(J2000)":"-4.944166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"S, spiral, stell N"},{"ID":"9933","标识":"IC2093","M标识":"IC2093","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h47m32.4s","赤经D(J2000)":"4.792333333333334","赤纬(J2000)":"-2h42m34s","赤纬D(J2000)":"-2.7094444444444448","可见光星等V":"99","摄影(蓝光)星等B":"15.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, stellar","简略描述":"vF, stell"},{"ID":"9934","标识":"IC2094","M标识":"IC2094","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h48m24.8s","赤经D(J2000)":"4.8068888888888885","赤纬(J2000)":"-5h21m9s","赤纬D(J2000)":"-5.3525","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"77","详细描述":"","简略描述":"Spiral, F stell N"},{"ID":"9935","标识":"IC2095","M标识":"IC2095","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h48m45.8s","赤经D(J2000)":"4.812722222222222","赤纬(J2000)":"-5h7m30s","赤纬D(J2000)":"-5.125","可见光星等V":"15.2","摄影(蓝光)星等B":"15.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"0.2","方位角":"48","详细描述":"","简略描述":"F, S, E spnf, spiral ?"},{"ID":"9936","标识":"IC2096","M标识":"IC2096","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h49m41s","赤经D(J2000)":"4.828055555555555","赤纬(J2000)":"-4h58m43s","赤纬D(J2000)":"-4.978611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"S, E, spiral, stell N"},{"ID":"9937","标识":"IC2097","M标识":"IC2097","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h50m23.8s","赤经D(J2000)":"4.839944444444444","赤纬(J2000)":"-5h4m51s","赤纬D(J2000)":"-5.0808333333333335","可见光星等V":"15.2","摄影(蓝光)星等B":"15.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"120","详细描述":"","简略描述":"F, E npsf, spiral, lbM"},{"ID":"9938","标识":"IC2098","M标识":"IC2098","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h50m44.2s","赤经D(J2000)":"4.84561111111111","赤纬(J2000)":"-5h25m6s","赤纬D(J2000)":"-5.418333333333334","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.1","短轴(分)":"0.3","方位角":"95","详细描述":"","简略描述":"F, spiral, lbM"},{"ID":"9939","标识":"IC2099","M标识":"IC2099","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h50m51.9s","赤经D(J2000)":"4.84775","赤纬(J2000)":"-4h53m31s","赤纬D(J2000)":"-4.8919444444444435","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"139","详细描述":"small, much brighter middle and nucleus","简略描述":"S, mbMN"},{"ID":"9940","标识":"IC2100","M标识":"IC2100","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h51m15.1s","赤经D(J2000)":"4.8541944444444445","赤纬(J2000)":"-4h49m47s","赤纬D(J2000)":"-4.829722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, S, lE stell"},{"ID":"9941","标识":"IC2101","M标识":"IC2101","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h51m42s","赤经D(J2000)":"4.861666666666666","赤纬(J2000)":"-6h13m50s","赤纬D(J2000)":"-6.230555555555556","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"0.4","方位角":"147","详细描述":"faint, extended northwest southeast, brighter middle, probably spiral","简略描述":"F, E npsf, bM, prob spir"},{"ID":"9942","标识":"IC2102","M标识":"IC2102","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"4h51m55.2s","赤经D(J2000)":"4.865333333333333","赤纬(J2000)":"-4h57m8s","赤纬D(J2000)":"-4.952222222222223","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"144","详细描述":"very faint, a little brighter middle, probably spiral","简略描述":"vF, lbM, prob spir"},{"ID":"9943","标识":"IC2103","M标识":"IC2103","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"4h39m47.7s","赤经D(J2000)":"4.663250000000001","赤纬(J2000)":"-76h50m12s","赤纬D(J2000)":"-76.83666666666666","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"0.3","方位角":"89","详细描述":"","简略描述":"cF, vS, eE 80°, stell N"},{"ID":"9944","标识":"IC2104","M标识":"IC2104","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"4h56m18.9s","赤经D(J2000)":"4.938583333333334","赤纬(J2000)":"-15h47m52s","赤纬D(J2000)":"-15.797777777777778","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.5","短轴(分)":"1.1","方位角":"105","详细描述":"faint, extended, gradually brighter middle","简略描述":"F, E, gbM"},{"ID":"9945","标识":"IC2105","M标识":"IC2105","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h49m26.7s","赤经D(J2000)":"4.824083333333333","赤纬(J2000)":"-69h12m3s","赤纬D(J2000)":"-69.20083333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"9946","标识":"IC2106","M标识":"IC2106","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"雕具座","星座(En)":"CAE","赤经(J2000)":"4h56m33.8s","赤经D(J2000)":"4.942722222222223","赤纬(J2000)":"-28h30m14s","赤纬D(J2000)":"-28.503888888888888","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"157","详细描述":"","简略描述":"eeF, pL, D * 24s f"},{"ID":"9947","标识":"IC2107","M标识":"IC2107","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Dup","形态":"*Grp","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h58m21.1s","赤经D(J2000)":"4.972527777777778","赤纬(J2000)":"+8h14m20s","赤纬D(J2000)":"8.238888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"a cluster, very faint, very small, round","简略描述":"Cl, vF, vS, R"},{"ID":"9948","标识":"IC2108","M标识":"IC2108","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"4h57m16.8s","赤经D(J2000)":"4.954666666666667","赤纬(J2000)":"-15h17m20s","赤纬D(J2000)":"-15.28888888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1","方位角":"15","详细描述":"","简略描述":"vF, pS, R, mbM, * 9.5 sf 1'.3"},{"ID":"9949","标识":"IC2109","M标识":"IC2109","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h58m59.3s","赤经D(J2000)":"4.983138888888889","赤纬(J2000)":"-0h18m20s","赤纬D(J2000)":"-0.3055555555555555","可见光星等V":"99","摄影(蓝光)星等B":"15.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF *, ? nebs"},{"ID":"9950","标识":"IC2110","M标识":"IC2110","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"4h59m1.9s","赤经D(J2000)":"4.9838611111111115","赤纬(J2000)":"-0h18m10s","赤纬D(J2000)":"-0.30277777777777776","可见光星等V":"99","摄影(蓝光)星等B":"14.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF *, ? nebs"},{"ID":"9951","标识":"IC2111","M标识":"IC2111","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h51m51.4s","赤经D(J2000)":"4.864277777777778","赤纬(J2000)":"-69h23m37s","赤纬D(J2000)":"-69.39361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"9952","标识":"IC2112","M标识":"IC2112","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h0m30s","赤经D(J2000)":"5.008333333333334","赤纬(J2000)":"+4h23m11s","赤纬D(J2000)":"4.386388888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"30","详细描述":"very faint, pretty small, diffuse","简略描述":"vF, pS, dif"},{"ID":"9953","标识":"IC2113","M标识":"IC2113","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"4h59m31.7s","赤经D(J2000)":"4.992138888888889","赤纬(J2000)":"-15h49m24s","赤纬D(J2000)":"-15.823333333333332","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.3","短轴(分)":"1","方位角":"100","详细描述":"","简略描述":"no descr"},{"ID":"9954","标识":"IC2114","M标识":"IC2114","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Dup","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h54m23.7s","赤经D(J2000)":"4.906583333333334","赤纬(J2000)":"-69h11m6s","赤纬D(J2000)":"-69.185","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"9955","标识":"IC2115","M标识":"IC2115","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h57m8.8s","赤经D(J2000)":"4.952444444444445","赤纬(J2000)":"-66h23m25s","赤纬D(J2000)":"-66.39027777777778","可见光星等V":"99","摄影(蓝光)星等B":"11.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"9956","标识":"IC2116","M标识":"IC2116","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h57m16.2s","赤经D(J2000)":"4.9545","赤纬(J2000)":"-66h23m21s","赤纬D(J2000)":"-66.38916666666667","可见光星等V":"99","摄影(蓝光)星等B":"11.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"9957","标识":"IC2117","M标识":"IC2117","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"4h57m14.3s","赤经D(J2000)":"4.953972222222222","赤纬(J2000)":"-68h26m32s","赤纬D(J2000)":"-68.44222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.8","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"9958","标识":"IC2118","M标识":"IC2118","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"女巫头星云","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"波江座","星座(En)":"ERI","赤经(J2000)":"5h4m54s","赤经D(J2000)":"5.081666666666666","赤纬(J2000)":"-7h15m0s","赤纬D(J2000)":"-7.25","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"180","短轴(分)":"60","方位角":"","详细描述":"","简略描述":"F, eL, iF, III 500 inv s"},{"ID":"9959","标识":"IC2119","M标识":"IC2119","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h6m50.9s","赤经D(J2000)":"5.114138888888888","赤纬(J2000)":"-20h20m45s","赤纬D(J2000)":"-20.34583333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"56","详细描述":"","简略描述":"eeF, pS, v diffic, 2 st 12.5 nr"},{"ID":"9960","标识":"IC2120","M标识":"IC2120","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h19m10.3s","赤经D(J2000)":"5.319527777777777","赤纬(J2000)":"+38h11m6s","赤纬D(J2000)":"38.184999999999995","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"9961","标识":"IC2121","M标识":"IC2121","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h19m44.7s","赤经D(J2000)":"5.329083333333333","赤纬(J2000)":"-25h3m52s","赤纬D(J2000)":"-25.064444444444444","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"160","详细描述":"most extremely faint, small, round, very difficult, 7th magnitude star 14s west, 3.6 arcmin south","简略描述":"eef, S, R, v diffic, * 7 p 14s, 3'.6 s"},{"ID":"9962","标识":"IC2122","M标识":"IC2122","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h19m1.4s","赤经D(J2000)":"5.317055555555555","赤纬(J2000)":"-37h5m21s","赤纬D(J2000)":"-37.08916666666667","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"67","详细描述":"","简略描述":"pB, eS, R, 3 st nf"},{"ID":"9963","标识":"IC2123","M标识":"IC2123","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sab","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h21m56.7s","赤经D(J2000)":"5.365749999999999","赤纬(J2000)":"+3h29m11s","赤纬D(J2000)":"3.486388888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"3","详细描述":"","简略描述":"vS, R, mbM, S * close n"},{"ID":"9964","标识":"IC2124","M标识":"IC2124","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"5h21m58.7s","赤经D(J2000)":"5.366305555555555","赤纬(J2000)":"+3h28m56s","赤纬D(J2000)":"3.4822222222222226","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"159","详细描述":"","简略描述":"vS, R, mbM, S * close n"},{"ID":"9965","标识":"IC2125","M标识":"IC2125","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h24m28.1s","赤经D(J2000)":"5.407805555555556","赤纬(J2000)":"-27h0m57s","赤纬D(J2000)":"-27.015833333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"125","详细描述":"most extremely faint, very small, round, very difficult","简略描述":"eeF, vS, R, v diffic"},{"ID":"9966","标识":"IC2126","M标识":"IC2126","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Dup","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h21m58.8s","赤经D(J2000)":"5.366333333333333","赤纬(J2000)":"-67h57m27s","赤纬D(J2000)":"-67.9575","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"9967","标识":"IC2127","M标识":"IC2127","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Dup","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h22m14.6s","赤经D(J2000)":"5.370722222222222","赤纬(J2000)":"-67h58m34s","赤纬D(J2000)":"-67.97611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"9968","标识":"IC2128","M标识":"IC2128","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"OCL","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h22m42s","赤经D(J2000)":"5.378333333333333","赤纬(J2000)":"-68h3m40s","赤纬D(J2000)":"-68.0611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, few st and neb (L Mag-Cloud)"},{"ID":"9969","标识":"IC2129","M标识":"IC2129","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h31m16.1s","赤经D(J2000)":"5.521138888888889","赤纬(J2000)":"-23h3m46s","赤纬D(J2000)":"-23.06277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eeF, pS, R, * 7 ssf"},{"ID":"9970","标识":"IC2130","M标识":"IC2130","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h31m50.3s","赤经D(J2000)":"5.530638888888888","赤纬(J2000)":"-23h8m44s","赤纬D(J2000)":"-23.145555555555553","可见光星等V":"13.1","摄影(蓝光)星等B":"13.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"0.9","方位角":"103","详细描述":"","简略描述":"eF, pL, R, * 7.5 nf"},{"ID":"9971","标识":"IC2131","M标识":"IC2131","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h32m18.5s","赤经D(J2000)":"5.5384722222222225","赤纬(J2000)":"-17h13m26s","赤纬D(J2000)":"-17.223888888888887","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"pretty bright, very small, round","简略描述":"pB, vS, R"},{"ID":"9972","标识":"IC2132","M标识":"IC2132","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h32m28.6s","赤经D(J2000)":"5.541277777777777","赤纬(J2000)":"-13h55m36s","赤纬D(J2000)":"-13.926666666666666","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"177","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"9973","标识":"IC2133","M标识":"IC2133","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"5h42m3.9s","赤经D(J2000)":"5.701083333333334","赤纬(J2000)":"+69h22m43s","赤纬D(J2000)":"69.3786111111111","可见光星等V":"11","摄影(蓝光)星等B":"11.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"4.5","短轴(分)":"3.1","方位角":"85","详细描述":"","简略描述":"vF, pL, * 13 sf 0'.7"},{"ID":"9974","标识":"IC2134","M标识":"IC2134","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h23m7.2s","赤经D(J2000)":"5.3853333333333335","赤纬(J2000)":"-75h26m47s","赤纬D(J2000)":"-75.44638888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"considerably faint, very small","简略描述":"cF, vS"},{"ID":"9975","标识":"IC2135","M标识":"IC2135","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h33m13.2s","赤经D(J2000)":"5.5536666666666665","赤纬(J2000)":"-36h23m58s","赤纬D(J2000)":"-36.39944444444444","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.8","短轴(分)":"0.6","方位角":"109","详细描述":"most extremely faint, extremely small, extremely extended, very difficult","简略描述":"eeF, eS, eE, v diffic"},{"ID":"9976","标识":"IC2136","M标识":"IC2136","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h33m13.2s","赤经D(J2000)":"5.5536666666666665","赤纬(J2000)":"-36h23m58s","赤纬D(J2000)":"-36.39944444444444","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.8","短轴(分)":"0.6","方位角":"109","详细描述":"extremely faint, pretty small, extremely extended","简略描述":"eF, pS, eE"},{"ID":"9977","标识":"IC2137","M标识":"IC2137","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h34m21.5s","赤经D(J2000)":"5.572638888888888","赤纬(J2000)":"-23h32m0s","赤纬D(J2000)":"-23.533333333333335","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"88","详细描述":"","简略描述":"eF, vS, R, * 8 f 10s, III 240 nr"},{"ID":"9978","标识":"IC2138","M标识":"IC2138","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sab","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h34m21.5s","赤经D(J2000)":"5.572638888888888","赤纬(J2000)":"-23h32m0s","赤纬D(J2000)":"-23.533333333333335","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"88","详细描述":"","简略描述":"eF, S, 2 st inv ?' apart, * 7 p"},{"ID":"9979","标识":"IC2139","M标识":"IC2139","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h35m15.2s","赤经D(J2000)":"5.587555555555555","赤纬(J2000)":"-17h56m2s","赤纬D(J2000)":"-17.933888888888887","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, vvS (12\"), looks nebs"},{"ID":"9980","标识":"IC2140","M标识":"IC2140","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h33m22s","赤经D(J2000)":"5.556111111111111","赤纬(J2000)":"-75h22m31s","赤纬D(J2000)":"-75.37527777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.1","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, vS, ? eS Cl"},{"ID":"9981","标识":"IC2141","M标识":"IC2141","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"绘架座","星座(En)":"PIC","赤经(J2000)":"5h42m22.3s","赤经D(J2000)":"5.706194444444445","赤纬(J2000)":"-51h1m57s","赤纬D(J2000)":"-51.0325","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"9982","标识":"IC2142","M标识":"IC2142","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h33m8.9s","赤经D(J2000)":"5.552472222222222","赤纬(J2000)":"-78h1m10s","赤纬D(J2000)":"-78.01944444444445","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"31","详细描述":"","简略描述":"eF, vS, lE 25°, lbM"},{"ID":"9983","标识":"IC2143","M标识":"IC2143","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h46m52.4s","赤经D(J2000)":"5.7812222222222225","赤纬(J2000)":"-18h43m33s","赤纬D(J2000)":"-18.72583333333333","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2","短轴(分)":"0.8","方位角":"98","详细描述":"extremely faint, pretty small, very much extended 45°, 3 stars to southeast","简略描述":"eF, pS, vmE 45°, 3 st sf"},{"ID":"9984","标识":"IC2144","M标识":"IC2144","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"金牛座","星座(En)":"TAU","赤经(J2000)":"5h50m14s","赤经D(J2000)":"5.837222222222222","赤纬(J2000)":"+23h52m20s","赤纬D(J2000)":"23.872222222222224","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pF, eS, * 12 nnp 2', * 12 s 1'"},{"ID":"9985","标识":"IC2145","M标识":"IC2145","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"剑鱼座","星座(En)":"DOR","赤经(J2000)":"5h40m23.9s","赤经D(J2000)":"5.673305555555556","赤纬(J2000)":"-69h40m17s","赤纬D(J2000)":"-69.6713888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"9986","标识":"IC2146","M标识":"IC2146","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h37m46s","赤经D(J2000)":"5.629444444444445","赤纬(J2000)":"-74h46m50s","赤纬D(J2000)":"-74.78055555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.6","短轴(分)":"","方位角":"","详细描述":"a cluster, very faint, between 2 stars","简略描述":"Cl, vF, bet 2 st"},{"ID":"9987","标识":"IC2147","M标识":"IC2147","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h47m48.1s","赤经D(J2000)":"5.796694444444444","赤纬(J2000)":"-30h29m52s","赤纬D(J2000)":"-30.497777777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, pretty small, round, faint star to northwest","简略描述":"eeF, pS, R, F * np"},{"ID":"9988","标识":"IC2148","M标识":"IC2148","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h39m12s","赤经D(J2000)":"5.653333333333333","赤纬(J2000)":"-75h33m45s","赤纬D(J2000)":"-75.5625","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.1","短轴(分)":"","方位角":"","详细描述":"very faint, very small, brighter middle","简略描述":"vF, vS, bM"},{"ID":"9989","标识":"IC2149","M标识":"IC2149","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"5h56m23.9s","赤经D(J2000)":"5.939972222222223","赤纬(J2000)":"+46h6m19s","赤纬D(J2000)":"46.10527777777778","可见光星等V":"10.6","摄影(蓝光)星等B":"11.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.57","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"9990","标识":"IC2150","M标识":"IC2150","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"5h51m18.5s","赤经D(J2000)":"5.855138888888889","赤纬(J2000)":"-38h19m16s","赤纬D(J2000)":"-38.321111111111115","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.6","短轴(分)":"0.8","方位角":"84","详细描述":"most extremely faint, small, very much extended, very difficult, 3 stars to south","简略描述":"eeF, S, vmE, v diffic, 3 st s"},{"ID":"9991","标识":"IC2151","M标识":"IC2151","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h52m36.8s","赤经D(J2000)":"5.87688888888889","赤纬(J2000)":"-17h47m15s","赤纬D(J2000)":"-17.7875","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"99","详细描述":"","简略描述":"eF, pS, nr I.C. 438"},{"ID":"9992","标识":"IC2152","M标识":"IC2152","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"5h57m53.3s","赤经D(J2000)":"5.9648055555555555","赤纬(J2000)":"-23h10m50s","赤纬D(J2000)":"-23.180555555555557","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"54","详细描述":"","简略描述":"pB, pS, R, sev B st f"},{"ID":"9993","标识":"IC2153","M标识":"IC2153","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"6h0m4.8s","赤经D(J2000)":"6.001333333333333","赤纬(J2000)":"-33h55m10s","赤纬D(J2000)":"-33.919444444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"72","详细描述":"extremely faint, very small, suspected","简略描述":"eF, vS, susp"},{"ID":"9994","标识":"IC2154","M标识":"IC2154","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"天兔座","星座(En)":"LEP","赤经(J2000)":"6h1m8s","赤经D(J2000)":"6.018888888888889","赤纬(J2000)":"-23h40m22s","赤纬D(J2000)":"-23.672777777777778","可见光星等V":"11.6","摄影(蓝光)星等B":"12","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.4","短轴(分)":"1.9","方位角":"140","详细描述":"","简略描述":"pF, pS, R, * nf, 2 st np, prop. = II 264"},{"ID":"9995","标识":"IC2155","M标识":"IC2155","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"6h0m49s","赤经D(J2000)":"6.0136111111111115","赤纬(J2000)":"-34h0m50s","赤纬D(J2000)":"-34.013888888888886","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, round, suspected","简略描述":"eF, vS, R, susp"},{"ID":"9996","标识":"IC2156","M标识":"IC2156","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h4m50.6s","赤经D(J2000)":"6.080722222222222","赤纬(J2000)":"+24h9m37s","赤纬D(J2000)":"24.160277777777775","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.5","短轴(分)":"","方位角":"","详细描述":"a cluster, perhaps nebulous","简略描述":"Cl, ? nebs"},{"ID":"9997","标识":"IC2157","M标识":"IC2157","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h4m49.8s","赤经D(J2000)":"6.0805","赤纬(J2000)":"+24h3m21s","赤纬D(J2000)":"24.055833333333332","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"a cluster, small","简略描述":"Cl, S"},{"ID":"9998","标识":"IC2158","M标识":"IC2158","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天鸽座","星座(En)":"COL","赤经(J2000)":"6h5m17.9s","赤经D(J2000)":"6.088305555555555","赤纬(J2000)":"-27h51m25s","赤纬D(J2000)":"-27.856944444444444","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"107","详细描述":"","简略描述":"vF, pS, lE, brush, * att nf"},{"ID":"9999","标识":"IC2159","M标识":"IC2159","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"6h9m57s","赤经D(J2000)":"6.1658333333333335","赤纬(J2000)":"+20h25m54s","赤纬D(J2000)":"20.43166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very large, diffuse","简略描述":"vF, vL, dif"},{"ID":"10000","标识":"IC2160","M标识":"IC2160","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h55m28.7s","赤经D(J2000)":"5.9246388888888895","赤纬(J2000)":"-76h55m13s","赤纬D(J2000)":"-76.92027777777778","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.1","短轴(分)":"0.8","方位角":"107","详细描述":"very faint, very small, stellar nucleus","简略描述":"vF, vS, stell N"},{"ID":"10001","标识":"IC2161","M标识":"IC2161","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"GCL","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"5h57m26.9s","赤经D(J2000)":"5.957472222222222","赤纬(J2000)":"-75h8m22s","赤纬D(J2000)":"-75.13944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.5","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, brighter middle, suspected","简略描述":"eF, vS, bM, susp"},{"ID":"10002","标识":"IC2162","M标识":"IC2162","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"猎户座","星座(En)":"ORI","赤经(J2000)":"6h13m6s","赤经D(J2000)":"6.218333333333334","赤纬(J2000)":"+17h58m48s","赤纬D(J2000)":"17.979999999999997","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"3","方位角":"","详细描述":"","简略描述":"vF, pL, R, * 10 inv p"},{"ID":"10003","标识":"IC2163","M标识":"IC2163","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h16m28s","赤经D(J2000)":"6.274444444444445","赤纬(J2000)":"-21h22m35s","赤纬D(J2000)":"-21.37638888888889","可见光星等V":"11.7","摄影(蓝光)星等B":"12.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3","短轴(分)":"1.2","方位角":"98","详细描述":"","简略描述":"eF, pS,h 3032 p 7s"},{"ID":"10004","标识":"IC2164","M标识":"IC2164","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"山案座","星座(En)":"MEN","赤经(J2000)":"6h6m52.4s","赤经D(J2000)":"6.1145555555555555","赤纬(J2000)":"-75h21m54s","赤纬D(J2000)":"-75.365","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"131","详细描述":"extremely faint, most extremely small, round, stellar nucleus","简略描述":"eF, eeS, R, stell N"},{"ID":"10005","标识":"IC2165","M标识":"IC2165","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h21m42.7s","赤经D(J2000)":"6.361861111111111","赤纬(J2000)":"-12h59m12s","赤纬D(J2000)":"-12.986666666666666","可见光星等V":"10.5","摄影(蓝光)星等B":"12.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.47","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"10006","标识":"IC2166","M标识":"IC2166","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"6h26m55.8s","赤经D(J2000)":"6.448833333333334","赤纬(J2000)":"+59h4m47s","赤纬D(J2000)":"59.07972222222222","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"3","短轴(分)":"2.1","方位角":"115","详细描述":"","简略描述":"Neb, F * p 1', D * f 3'"},{"ID":"10007","标识":"IC2167","M标识":"IC2167","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Dup","形态":"RN+*","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h31m6s","赤经D(J2000)":"6.5183333333333335","赤纬(J2000)":"+10h27m35s","赤纬D(J2000)":"10.459722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"4","方位角":"","详细描述":"","简略描述":"* 9.5 in F, L neb"},{"ID":"10008","标识":"IC2168","M标识":"IC2168","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"6h33m47.7s","赤经D(J2000)":"6.56325","赤纬(J2000)":"+44h41m10s","赤纬D(J2000)":"44.68611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, S, F neby"},{"ID":"10009","标识":"IC2169","M标识":"IC2169","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Dup","形态":"RN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h31m4s","赤经D(J2000)":"6.517777777777778","赤纬(J2000)":"+9h52m0s","赤纬D(J2000)":"9.866666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"20","方位角":"","详细描述":"","简略描述":"F, L, dif, sev st 9-10 inv"},{"ID":"10010","标识":"IC2170","M标识":"IC2170","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"6h34m5s","赤经D(J2000)":"6.5680555555555555","赤纬(J2000)":"+44h41m20s","赤纬D(J2000)":"44.68888888888888","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, S, r, * 13 spp 0'.8"},{"ID":"10011","标识":"IC2171","M标识":"IC2171","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"6h45m13s","赤经D(J2000)":"6.753611111111111","赤纬(J2000)":"-17h40m24s","赤纬D(J2000)":"-17.673333333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, 3 st 10 around"},{"ID":"10012","标识":"IC2172","M标识":"IC2172","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Dup","形态":"RN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"6h46m51.2s","赤经D(J2000)":"6.780888888888889","赤纬(J2000)":"+1h18m54s","赤纬D(J2000)":"1.315","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"3","方位角":"","详细描述":"nebulous star","简略描述":"neb *"},{"ID":"10013","标识":"IC2173","M标识":"IC2173","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"6h50m47.2s","赤经D(J2000)":"6.846444444444444","赤纬(J2000)":"+33h27m27s","赤纬D(J2000)":"33.4575","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF neb *, 2288 close, * 12 nnp 1'"},{"ID":"10014","标识":"IC2174","M标识":"IC2174","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"7h9m5s","赤经D(J2000)":"7.1513888888888895","赤纬(J2000)":"+75h21m13s","赤纬D(J2000)":"75.3536111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"42","详细描述":"extremely faint, small, brighter middle","简略描述":"eF, S, bM"},{"ID":"10015","标识":"IC2175","M标识":"IC2175","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h8m39.6s","赤经D(J2000)":"7.144333333333334","赤纬(J2000)":"+35h17m17s","赤纬D(J2000)":"35.28805555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large, mottled but not resolved, nebulous?","简略描述":"eF, pL, r, nebs ?"},{"ID":"10016","标识":"IC2176","M标识":"IC2176","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h7m31.8s","赤经D(J2000)":"7.1255","赤纬(J2000)":"+32h28m13s","赤纬D(J2000)":"32.47027777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"6","详细描述":"very faint, very small, round, stellar","简略描述":"vF, vS, R, stell"},{"ID":"10017","标识":"IC2177","M标识":"IC2177","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"麒麟座","星座(En)":"MON","赤经(J2000)":"7h4m25.3s","赤经D(J2000)":"7.0736944444444445","赤纬(J2000)":"-10h27m13s","赤纬D(J2000)":"-10.45361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"20","方位角":"","详细描述":"pretty bright, extremely large, irregularly round, very diffuse","简略描述":"pB, eL, iR, v dif"},{"ID":"10018","标识":"IC2178","M标识":"IC2178","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h7m37.6s","赤经D(J2000)":"7.127111111111111","赤纬(J2000)":"+32h30m47s","赤纬D(J2000)":"32.51305555555555","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"130","详细描述":"very faint, very small, round, brighter middle and nucleus","简略描述":"vF, vS, R, bMN"},{"ID":"10019","标识":"IC2179","M标识":"IC2179","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"7h15m32.3s","赤经D(J2000)":"7.258972222222222","赤纬(J2000)":"+64h55m34s","赤纬D(J2000)":"64.92611111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13.5","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"","简略描述":"* 13 in vF, vS neb [? = III 746]"},{"ID":"10020","标识":"IC2180","M标识":"IC2180","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h11m19.5s","赤经D(J2000)":"7.188750000000001","赤纬(J2000)":"+26h22m15s","赤纬D(J2000)":"26.370833333333334","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"0","详细描述":"faint, small, irregular figure, diffuse","简略描述":"F, S, iF, dif"},{"ID":"10021","标识":"IC2181","M标识":"IC2181","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h13m10.3s","赤经D(J2000)":"7.2195277777777775","赤纬(J2000)":"+18h59m47s","赤纬D(J2000)":"18.99638888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"140","详细描述":"faint, small, round, stellar","简略描述":"F, S, R, stell"},{"ID":"10022","标识":"IC2182","M标识":"IC2182","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h14m11s","赤经D(J2000)":"7.2363888888888885","赤纬(J2000)":"+18h56m42s","赤纬D(J2000)":"18.945","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, very small, diffuse, 12th magnitude star attached","简略描述":"vF, vS, dif, * 12 att"},{"ID":"10023","标识":"IC2183","M标识":"IC2183","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"大犬座","星座(En)":"CMA","赤经(J2000)":"7h16m56s","赤经D(J2000)":"7.282222222222222","赤纬(J2000)":"-20h24m36s","赤纬D(J2000)":"-20.41","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Wisp 2' ns, 3 st n, susp"},{"ID":"10024","标识":"IC2184","M标识":"IC2184","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"7h29m24.9s","赤经D(J2000)":"7.49025","赤纬(J2000)":"+72h7m43s","赤纬D(J2000)":"72.1286111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"0","详细描述":"very faint, small, stellar, mottled but not resolved","简略描述":"vF, S, stell, r"},{"ID":"10025","标识":"IC2185","M标识":"IC2185","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h23m16.1s","赤经D(J2000)":"7.387805555555556","赤纬(J2000)":"+32h29m41s","赤纬D(J2000)":"32.49472222222222","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"135","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"10026","标识":"IC2186","M标识":"IC2186","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h22m43.1s","赤经D(J2000)":"7.378638888888888","赤纬(J2000)":"+21h30m49s","赤纬D(J2000)":"21.51361111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"111","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"10027","标识":"IC2187","M标识":"IC2187","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h22m43.3s","赤经D(J2000)":"7.378694444444444","赤纬(J2000)":"+21h28m58s","赤纬D(J2000)":"21.482777777777777","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"","简略描述":"F, S, R, dif, * 11.5 v nr"},{"ID":"10028","标识":"IC2188","M标识":"IC2188","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h22m43.1s","赤经D(J2000)":"7.378638888888888","赤纬(J2000)":"+21h30m49s","赤纬D(J2000)":"21.51361111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"111","详细描述":"faint, small, diffuse, faint nucleus","简略描述":"F, S, dif, FN"},{"ID":"10029","标识":"IC2189","M标识":"IC2189","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h24m57s","赤经D(J2000)":"7.4158333333333335","赤纬(J2000)":"+8h55m12s","赤纬D(J2000)":"8.92","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stell"},{"ID":"10030","标识":"IC2190","M标识":"IC2190","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"御夫座","星座(En)":"AUR","赤经(J2000)":"7h29m54.3s","赤经D(J2000)":"7.4984166666666665","赤纬(J2000)":"+37h27m6s","赤纬D(J2000)":"37.45166666666667","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"21","详细描述":"faint, pretty small, diffuse","简略描述":"F, pS, dif"},{"ID":"10031","标识":"IC2191","M标识":"IC2191","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h30m17.4s","赤经D(J2000)":"7.504833333333333","赤纬(J2000)":"+24h19m42s","赤纬D(J2000)":"24.328333333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"10032","标识":"IC2192","M标识":"IC2192","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h33m19.8s","赤经D(J2000)":"7.555499999999999","赤纬(J2000)":"+31h33m12s","赤纬D(J2000)":"31.553333333333335","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"","简略描述":"F, vS, R, * 14 nearly in cont"},{"ID":"10033","标识":"IC2193","M标识":"IC2193","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h33m23.6s","赤经D(J2000)":"7.556555555555556","赤纬(J2000)":"+31h29m0s","赤纬D(J2000)":"31.483333333333334","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"87","详细描述":"","简略描述":"Close p * 10m [? = J. 1001]"},{"ID":"10034","标识":"IC2194","M标识":"IC2194","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h33m40.2s","赤经D(J2000)":"7.561166666666667","赤纬(J2000)":"+31h20m4s","赤纬D(J2000)":"31.334444444444443","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"48","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"10035","标识":"IC2195","M标识":"IC2195","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"7h28m27s","赤经D(J2000)":"7.474166666666667","赤纬(J2000)":"-51h15m24s","赤纬D(J2000)":"-51.25666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably bright, small, round, brighter middle, suspected","简略描述":"cB, S, R, bM, susp"},{"ID":"10036","标识":"IC2196","M标识":"IC2196","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h34m9.7s","赤经D(J2000)":"7.569361111111111","赤纬(J2000)":"+31h24m22s","赤纬D(J2000)":"31.40611111111111","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"150","详细描述":"","简略描述":"F, S, pR, gbM, r, 3 st 2' p"},{"ID":"10037","标识":"IC2197","M标识":"IC2197","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h34m18.9s","赤经D(J2000)":"7.571916666666667","赤纬(J2000)":"+31h20m14s","赤纬D(J2000)":"31.33722222222222","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very very faint","简略描述":"vvF"},{"ID":"10038","标识":"IC2198","M标识":"IC2198","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h34m11.1s","赤经D(J2000)":"7.56975","赤纬(J2000)":"+23h57m59s","赤纬D(J2000)":"23.96638888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"10039","标识":"IC2199","M标识":"IC2199","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"IC 2199 星系群","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h34m55.6s","赤经D(J2000)":"7.582111111111111","赤纬(J2000)":"+31h16m33s","赤纬D(J2000)":"31.27583333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"25","详细描述":"faint, small","简略描述":"F, S"},{"ID":"10040","标识":"IC2200","M标识":"IC2200","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb\/P","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"7h28m17.4s","赤经D(J2000)":"7.4715","赤纬(J2000)":"-62h21m10s","赤纬D(J2000)":"-62.35277777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"58","详细描述":"extremely faint, extremely small, extremely extended 65°, between 2 stars, suspected","简略描述":"eF, eS, eE 65°, bet 2 st, susp"},{"ID":"10041","标识":"IC2201","M标识":"IC2201","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h36m16.8s","赤经D(J2000)":"7.604666666666667","赤纬(J2000)":"+33h7m23s","赤纬D(J2000)":"33.12305555555555","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"67","详细描述":"faint, very small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, vS, R, gbM, r"},{"ID":"10042","标识":"IC2202","M标识":"IC2202","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞鱼座","星座(En)":"VOL","赤经(J2000)":"7h27m54.9s","赤经D(J2000)":"7.46525","赤纬(J2000)":"-67h34m28s","赤纬D(J2000)":"-67.57444444444444","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2","短轴(分)":"0.7","方位角":"165","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"10043","标识":"IC2203","M标识":"IC2203","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h40m33.6s","赤经D(J2000)":"7.676","赤纬(J2000)":"+34h13m48s","赤纬D(J2000)":"34.230000000000004","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"1","方位角":"162","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"10044","标识":"IC2204","M标识":"IC2204","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h41m18.1s","赤经D(J2000)":"7.688361111111111","赤纬(J2000)":"+34h13m53s","赤纬D(J2000)":"34.231388888888894","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"51","详细描述":"","简略描述":"F, vS, R, eFN, r"},{"ID":"10045","标识":"IC2205","M标识":"IC2205","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h46m54.5s","赤经D(J2000)":"7.781805555555556","赤纬(J2000)":"+26h52m22s","赤纬D(J2000)":"26.872777777777777","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"45","详细描述":"","简略描述":"F, vS, neb D *"},{"ID":"10046","标识":"IC2206","M标识":"IC2206","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"7h45m46.1s","赤经D(J2000)":"7.7628055555555555","赤纬(J2000)":"-34h22m11s","赤纬D(J2000)":"-34.36972222222222","可见光星等V":"99","摄影(蓝光)星等B":"9.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Planetary, stell, 9.5 mag"},{"ID":"10047","标识":"IC2207","M标识":"IC2207","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h49m50.8s","赤经D(J2000)":"7.830777777777778","赤纬(J2000)":"+33h57m45s","赤纬D(J2000)":"33.962500000000006","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2","短轴(分)":"0.3","方位角":"124","详细描述":"","简略描述":"vF, vS, dif, * 15 v nr"},{"ID":"10048","标识":"IC2208","M标识":"IC2208","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h52m7.9s","赤经D(J2000)":"7.868861111111111","赤纬(J2000)":"+27h29m3s","赤纬D(J2000)":"27.484166666666667","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.7","方位角":"20","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"10049","标识":"IC2209","M标识":"IC2209","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"7h56m14.2s","赤经D(J2000)":"7.937277777777778","赤纬(J2000)":"+60h18m14s","赤纬D(J2000)":"60.303888888888885","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"145","详细描述":"very faint, small, a little brighter middle","简略描述":"vF, S, lbM"},{"ID":"10050","标识":"IC2210","M标识":"IC2210","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h56m56.3s","赤经D(J2000)":"7.948972222222222","赤纬(J2000)":"+56h40m50s","赤纬D(J2000)":"56.68055555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, stellar, 13th magnitude star to northwest","简略描述":"eF, stell, * 13 np"},{"ID":"10051","标识":"IC2211","M标识":"IC2211","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h57m45.6s","赤经D(J2000)":"7.962666666666667","赤纬(J2000)":"+32h33m31s","赤纬D(J2000)":"32.558611111111105","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"140","详细描述":"pretty bright, small, round, faint nucleus, mottled but not resolved","简略描述":"pB, S, R, FN, r"},{"ID":"10052","标识":"IC2212","M标识":"IC2212","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h58m57.1s","赤经D(J2000)":"7.982527777777778","赤纬(J2000)":"+32h36m46s","赤纬D(J2000)":"32.61277777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, pretty large, very little brighter middle, diffuse","简略描述":"F, pL, vlbM, dif"},{"ID":"10053","标识":"IC2213","M标识":"IC2213","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h59m6.5s","赤经D(J2000)":"7.985138888888889","赤纬(J2000)":"+27h27m52s","赤纬D(J2000)":"27.464444444444442","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"45","详细描述":"faint, small, round, a little brighter middle and nucleus","简略描述":"F, S, R, lbMN"},{"ID":"10054","标识":"IC2214","M标识":"IC2214","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"7h59m53.8s","赤经D(J2000)":"7.998277777777778","赤纬(J2000)":"+33h17m25s","赤纬D(J2000)":"33.290277777777774","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"51","详细描述":"pretty bright, small, round, gradually brighter middle and nucleus","简略描述":"pB, S, R, gbMN"},{"ID":"10055","标识":"IC2215","M标识":"IC2215","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双子座","星座(En)":"GEM","赤经(J2000)":"7h59m33s","赤经D(J2000)":"7.9925","赤纬(J2000)":"+24h55m44s","赤纬D(J2000)":"24.92888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"a cluster, very small, 30 arcsec (wide)","简略描述":"Cl, vS, 30\""},{"ID":"10056","标识":"IC2216","M标识":"IC2216","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"7h59m27.7s","赤经D(J2000)":"7.991027777777778","赤纬(J2000)":"+5h36m52s","赤纬D(J2000)":"5.614444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, suddenly brighter middle","简略描述":"vF, eS, sbM"},{"ID":"10057","标识":"IC2217","M标识":"IC2217","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h0m49.8s","赤经D(J2000)":"8.013833333333332","赤纬(J2000)":"+27h30m1s","赤纬D(J2000)":"27.50027777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"80","详细描述":"faint, pretty small, round, diffuse, mottled but not resolved","简略描述":"F, pS, R, dif, r"},{"ID":"10058","标识":"IC2218","M标识":"IC2218","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S M","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h1m38.4s","赤经D(J2000)":"8.027333333333335","赤纬(J2000)":"+24h25m55s","赤纬D(J2000)":"24.431944444444447","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"15","详细描述":"","简略描述":"F, S, R, * 14 v nr"},{"ID":"10059","标识":"IC2219","M标识":"IC2219","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h2m36.5s","赤经D(J2000)":"8.043472222222222","赤纬(J2000)":"+27h26m14s","赤纬D(J2000)":"27.43722222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"175","详细描述":"faint, pretty small, extended 135°, gradually brighter middle, mottled but not resolved","简略描述":"F, pS, E 135°, gbM, r"},{"ID":"10060","标识":"IC2220","M标识":"IC2220","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"托比壶星云","类型":"Nb","含重复类型":"Nb","形态":"EN+*","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"7h56m51.3s","赤经D(J2000)":"7.947583333333333","赤纬(J2000)":"-59h7m31s","赤纬D(J2000)":"-59.125277777777775","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"5","方位角":"","详细描述":"","简略描述":"!! L, E, spiral, * inv."},{"ID":"10061","标识":"IC2221","M标识":"IC2221","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h5m8s","赤经D(J2000)":"8.085555555555556","赤纬(J2000)":"+37h27m2s","赤纬D(J2000)":"37.45055555555556","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, round, difficult","简略描述":"vF, vS, R, diffic"},{"ID":"10062","标识":"IC2222","M标识":"IC2222","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h5m14.8s","赤经D(J2000)":"8.087444444444445","赤纬(J2000)":"+37h28m21s","赤纬D(J2000)":"37.472500000000004","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"120","详细描述":"faint, small, round, diffuse, mottled but not resolved","简略描述":"F, S, R, dif, r"},{"ID":"10063","标识":"IC2223","M标识":"IC2223","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h5m46s","赤经D(J2000)":"8.096111111111112","赤纬(J2000)":"+37h27m45s","赤纬D(J2000)":"37.462500000000006","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"10064","标识":"IC2224","M标识":"IC2224","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h5m50.3s","赤经D(J2000)":"8.097305555555556","赤纬(J2000)":"+37h27m35s","赤纬D(J2000)":"37.459722222222226","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, round, very little brighter middle, difficult","简略描述":"vF, vS, R, vlbM, diffic"},{"ID":"10065","标识":"IC2225","M标识":"IC2225","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h5m28.1s","赤经D(J2000)":"8.091138888888889","赤纬(J2000)":"+35h56m49s","赤纬D(J2000)":"35.94694444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"84","详细描述":"faint, pretty small, gradually brighter middle, mottled but not resolved","简略描述":"F, pS, gbM, r"},{"ID":"10066","标识":"IC2226","M标识":"IC2226","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h6m11.1s","赤经D(J2000)":"8.103083333333332","赤纬(J2000)":"+12h32m39s","赤纬D(J2000)":"12.544166666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"150","详细描述":"faint, small","简略描述":"F, S"},{"ID":"10067","标识":"IC2227","M标识":"IC2227","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h7m7.1s","赤经D(J2000)":"8.118638888888889","赤纬(J2000)":"+36h14m0s","赤纬D(J2000)":"36.233333333333334","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"","简略描述":"F, vS, gbMN, r, * 13.5 v nr"},{"ID":"10068","标识":"IC2228","M标识":"IC2228","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h7m5.4s","赤经D(J2000)":"8.118166666666667","赤纬(J2000)":"+8h1m33s","赤纬D(J2000)":"8.025833333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, mottled but not resolved","简略描述":"eF, S, r"},{"ID":"10069","标识":"IC2229","M标识":"IC2229","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h9m43.9s","赤经D(J2000)":"8.162194444444445","赤纬(J2000)":"+25h52m52s","赤纬D(J2000)":"25.88111111111111","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"108","详细描述":"faint, small, round, a little brighter middle and nucleus, mottled but not resolved","简略描述":"F, S, R, lbMN, r"},{"ID":"10070","标识":"IC2230","M标识":"IC2230","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h10m56.5s","赤经D(J2000)":"8.18236111111111","赤纬(J2000)":"+25h41m7s","赤纬D(J2000)":"25.685277777777777","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"160","详细描述":"faint, very small, diffuse","简略描述":"F, vS, dif"},{"ID":"10071","标识":"IC2231","M标识":"IC2231","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"小犬座","星座(En)":"CMI","赤经(J2000)":"8h11m1.4s","赤经D(J2000)":"8.183722222222222","赤纬(J2000)":"+5h5m15s","赤纬D(J2000)":"5.0874999999999995","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"faint, very small, round, diffuse, 14th magnitude star attached","简略描述":"F, vS, R, dif, * 14 att"},{"ID":"10072","标识":"IC2232","M标识":"IC2232","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h12m57.8s","赤经D(J2000)":"8.216055555555554","赤纬(J2000)":"+36h15m13s","赤纬D(J2000)":"36.25361111111111","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.3","短轴(分)":"1.2","方位角":"45","详细描述":"faint, pretty small, round, gradually brighter middle and nucleus","简略描述":"F, pS, R, gbMN"},{"ID":"10073","标识":"IC2233","M标识":"IC2233","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h13m59s","赤经D(J2000)":"8.233055555555556","赤纬(J2000)":"+45h44m23s","赤纬D(J2000)":"45.73972222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"4.6","短轴(分)":"0.5","方位角":"172","详细描述":"","简略描述":"pB, L, E np sf, IV. 55 np"},{"ID":"10074","标识":"IC2234","M标识":"IC2234","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h13m51.6s","赤经D(J2000)":"8.231","赤纬(J2000)":"+35h29m36s","赤纬D(J2000)":"35.49333333333333","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"pretty faint, very small, diffuse, very faint nucleus","简略描述":"pF, vS, dif, vFN"},{"ID":"10075","标识":"IC2235","M标识":"IC2235","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h13m34.1s","赤经D(J2000)":"8.226138888888888","赤纬(J2000)":"+24h4m41s","赤纬D(J2000)":"24.078055555555554","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, extended 135°, diffuse","简略描述":"pB, S, E 135°, dif"},{"ID":"10076","标识":"IC2236","M标识":"IC2236","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h13m37.6s","赤经D(J2000)":"8.22711111111111","赤纬(J2000)":"+24h2m55s","赤纬D(J2000)":"24.048611111111114","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, extended 0°, diffuse","简略描述":"pB, E 0°, dif"},{"ID":"10077","标识":"IC2237","M标识":"IC2237","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h14m8s","赤经D(J2000)":"8.235555555555555","赤纬(J2000)":"+24h41m43s","赤纬D(J2000)":"24.69527777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, pS, p dif"},{"ID":"10078","标识":"IC2238","M标识":"IC2238","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h14m8.6s","赤经D(J2000)":"8.235722222222222","赤纬(J2000)":"+24h39m42s","赤纬D(J2000)":"24.661666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, diffuse","简略描述":"pF, S, dif"},{"ID":"10079","标识":"IC2239","M标识":"IC2239","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h14m6.7s","赤经D(J2000)":"8.235194444444444","赤纬(J2000)":"+23h51m59s","赤纬D(J2000)":"23.866388888888892","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.7","方位角":"168","详细描述":"pretty bright, small, round, stellar nucleus","简略描述":"pB, S, R, stell N"},{"ID":"10080","标识":"IC2240","M标识":"IC2240","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h14m47.5s","赤经D(J2000)":"8.246527777777777","赤纬(J2000)":"+24h28m3s","赤纬D(J2000)":"24.467499999999998","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, S, E 155°, dif"},{"ID":"10081","标识":"IC2241","M标识":"IC2241","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h15m8.9s","赤经D(J2000)":"8.252472222222222","赤纬(J2000)":"+24h7m48s","赤纬D(J2000)":"24.13","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, diffuse","简略描述":"pB, S, dif"},{"ID":"10082","标识":"IC2242","M标识":"IC2242","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h15m11.7s","赤经D(J2000)":"8.25325","赤纬(J2000)":"+24h7m59s","赤纬D(J2000)":"24.133055555555558","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, diffuse","简略描述":"pF, S, dif"},{"ID":"10083","标识":"IC2243","M标识":"IC2243","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h15m18.5s","赤经D(J2000)":"8.255138888888888","赤纬(J2000)":"+23h57m45s","赤纬D(J2000)":"23.9625","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, diffuse, binuclear","简略描述":"F, S, dif, biN"},{"ID":"10084","标识":"IC2244","M标识":"IC2244","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h15m22.3s","赤经D(J2000)":"8.256194444444445","赤纬(J2000)":"+24h32m45s","赤纬D(J2000)":"24.545833333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, extended 0°","简略描述":"vF, S, E 0°"},{"ID":"10085","标识":"IC2245","M标识":"IC2245","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h15m28.4s","赤经D(J2000)":"8.257888888888889","赤纬(J2000)":"+24h32m8s","赤纬D(J2000)":"24.535555555555558","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"10086","标识":"IC2246","M标识":"IC2246","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h16m1s","赤经D(J2000)":"8.266944444444444","赤纬(J2000)":"+23h50m58s","赤纬D(J2000)":"23.849444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, diffuse, brightest toward the eastern side","简略描述":"pB, S, dif, bf"},{"ID":"10087","标识":"IC2247","M标识":"IC2247","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h15m59s","赤经D(J2000)":"8.266388888888889","赤纬(J2000)":"+23h11m59s","赤纬D(J2000)":"23.199722222222224","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.8","短轴(分)":"0.3","方位角":"150","详细描述":"pretty faint, extended 135°, binuclear","简略描述":"pF, E 135°, biN"},{"ID":"10088","标识":"IC2248","M标识":"IC2248","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h16m4.7s","赤经D(J2000)":"8.267972222222223","赤纬(J2000)":"+23h8m4s","赤纬D(J2000)":"23.134444444444444","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"0","详细描述":"","简略描述":"pB, pL, E 90°, Nn"},{"ID":"10089","标识":"IC2249","M标识":"IC2249","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h16m34.5s","赤经D(J2000)":"8.276250000000001","赤纬(J2000)":"+24h29m35s","赤纬D(J2000)":"24.493055555555557","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"","简略描述":"F, vS, iF, att * sp"},{"ID":"10090","标识":"IC2250","M标识":"IC2250","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h16m32.3s","赤经D(J2000)":"8.27563888888889","赤纬(J2000)":"+23h37m57s","赤纬D(J2000)":"23.6325","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"10091","标识":"IC2251","M标识":"IC2251","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h16m38.9s","赤经D(J2000)":"8.277472222222222","赤纬(J2000)":"+23h56m58s","赤纬D(J2000)":"23.949444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty small, diffuse","简略描述":"pF, pS, dif"},{"ID":"10092","标识":"IC2252","M标识":"IC2252","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h16m42s","赤经D(J2000)":"8.278333333333334","赤纬(J2000)":"+24h41m36s","赤纬D(J2000)":"24.693333333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, round","简略描述":"pF, S, R"},{"ID":"10093","标识":"IC2253","M标识":"IC2253","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h16m33.9s","赤经D(J2000)":"8.276083333333334","赤纬(J2000)":"+21h24m37s","赤纬D(J2000)":"21.410277777777775","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"168","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"10094","标识":"IC2254","M标识":"IC2254","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h16m45.5s","赤经D(J2000)":"8.279305555555556","赤纬(J2000)":"+24h46m49s","赤纬D(J2000)":"24.780277777777776","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"120","详细描述":"","简略描述":"F, S, R, stell, * 13.5 v nr"},{"ID":"10095","标识":"IC2255","M标识":"IC2255","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h16m43s","赤经D(J2000)":"8.278611111111111","赤纬(J2000)":"+23h27m26s","赤纬D(J2000)":"23.45722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, nuclear","简略描述":"vF, pL, N"},{"ID":"10096","标识":"IC2256","M标识":"IC2256","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h16m54.4s","赤经D(J2000)":"8.281777777777778","赤纬(J2000)":"+24h10m36s","赤纬D(J2000)":"24.17666666666667","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"10","详细描述":"","简略描述":"B, pS, E 205°"},{"ID":"10097","标识":"IC2257","M标识":"IC2257","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h17m10.8s","赤经D(J2000)":"8.286333333333333","赤纬(J2000)":"+23h39m0s","赤纬D(J2000)":"23.65","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, a little brighter middle","简略描述":"F, S, lbM"},{"ID":"10098","标识":"IC2258","M标识":"IC2258","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h17m16.2s","赤经D(J2000)":"8.287833333333333","赤纬(J2000)":"+23h34m39s","赤纬D(J2000)":"23.5775","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, much extended 0°, binuclear","简略描述":"pF, S, mE 0°, biN"},{"ID":"10099","标识":"IC2259","M标识":"IC2259","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h17m18s","赤经D(J2000)":"8.288333333333334","赤纬(J2000)":"+23h34m39s","赤纬D(J2000)":"23.5775","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, diffuse, difficult","简略描述":"vF, S, dif, diffic"},{"ID":"10100","标识":"IC2260","M标识":"IC2260","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h17m27.5s","赤经D(J2000)":"8.290972222222223","赤纬(J2000)":"+24h40m24s","赤纬D(J2000)":"24.673333333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, round, diffuse","简略描述":"pF, S, R, dif"},{"ID":"10101","标识":"IC2261","M标识":"IC2261","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h17m32.7s","赤经D(J2000)":"8.292416666666666","赤纬(J2000)":"+23h30m44s","赤纬D(J2000)":"23.51222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, mE 45°, B * 1' f"},{"ID":"10102","标识":"IC2262","M标识":"IC2262","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h17m22.6s","赤经D(J2000)":"8.28961111111111","赤纬(J2000)":"+18h27m16s","赤纬D(J2000)":"18.454444444444444","可见光星等V":"99","摄影(蓝光)星等B":"14.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, bright star to northeast","简略描述":"pB, S, B * nf"},{"ID":"10103","标识":"IC2263","M标识":"IC2263","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h17m40.9s","赤经D(J2000)":"8.294694444444444","赤纬(J2000)":"+23h34m48s","赤纬D(J2000)":"23.58","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, extended 0°, very little brighter middle","简略描述":"vF, S, E 0°, vlbM"},{"ID":"10104","标识":"IC2264","M标识":"IC2264","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h17m44.9s","赤经D(J2000)":"8.295805555555555","赤纬(J2000)":"+23h42m52s","赤纬D(J2000)":"23.714444444444442","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, stellar nucleus","简略描述":"pB, S, stell N"},{"ID":"10105","标识":"IC2265","M标识":"IC2265","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h17m50.4s","赤经D(J2000)":"8.297333333333333","赤纬(J2000)":"+24h11m37s","赤纬D(J2000)":"24.19361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, round, diffuse","简略描述":"pF, vS, R, dif"},{"ID":"10106","标识":"IC2266","M标识":"IC2266","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h17m38.4s","赤经D(J2000)":"8.294","赤纬(J2000)":"+18h24m39s","赤纬D(J2000)":"18.410833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pB, vS, mE, B * att"},{"ID":"10107","标识":"IC2267","M标识":"IC2267","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m1.5s","赤经D(J2000)":"8.300416666666667","赤纬(J2000)":"+24h44m10s","赤纬D(J2000)":"24.73611111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.1","短轴(分)":"0.3","方位角":"153","详细描述":"","简略描述":"pB, mE 137°"},{"ID":"10108","标识":"IC2268","M标识":"IC2268","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m6.5s","赤经D(J2000)":"8.301805555555557","赤纬(J2000)":"+24h47m46s","赤纬D(J2000)":"24.796111111111113","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"10.9","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"pretty faint, small, round, gradually a little brighter middle","简略描述":"pF, S, R, glbM"},{"ID":"10109","标识":"IC2269","M标识":"IC2269","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m8.6s","赤经D(J2000)":"8.30238888888889","赤纬(J2000)":"+23h2m50s","赤纬D(J2000)":"23.047222222222224","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.5","短轴(分)":"0.1","方位角":"30","详细描述":"pretty faint, small, extended 25°","简略描述":"pF, S, E 25°"},{"ID":"10110","标识":"IC2270","M标识":"IC2270","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m0.4s","赤经D(J2000)":"8.300111111111113","赤纬(J2000)":"+19h5m52s","赤纬D(J2000)":"19.097777777777775","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pB, S, * v nr np"},{"ID":"10111","标识":"IC2271","M标识":"IC2271","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m19.7s","赤经D(J2000)":"8.305472222222223","赤纬(J2000)":"+24h31m39s","赤纬D(J2000)":"24.5275","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"11","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"135","详细描述":"pretty bright, small, brighter middle","简略描述":"pB, S, bM"},{"ID":"10112","标识":"IC2272","M标识":"IC2272","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m6.6s","赤经D(J2000)":"8.301833333333335","赤纬(J2000)":"+18h44m4s","赤纬D(J2000)":"18.734444444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, gradually brighter middle, star attached","简略描述":"vF, vS, gbM, * att"},{"ID":"10113","标识":"IC2273","M标识":"IC2273","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m12.9s","赤经D(J2000)":"8.303583333333334","赤纬(J2000)":"+18h24m4s","赤纬D(J2000)":"18.40111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, brighter middle","简略描述":"pF, S, bM"},{"ID":"10114","标识":"IC2274","M标识":"IC2274","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m14.2s","赤经D(J2000)":"8.303944444444445","赤纬(J2000)":"+18h39m56s","赤纬D(J2000)":"18.665555555555553","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pB neb *, 2 spir branches"},{"ID":"10115","标识":"IC2275","M标识":"IC2275","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m13.7s","赤经D(J2000)":"8.303805555555556","赤纬(J2000)":"+18h24m41s","赤纬D(J2000)":"18.411388888888887","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, gradually brighter middle","简略描述":"pB, S, gbM"},{"ID":"10116","标识":"IC2276","M标识":"IC2276","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m29.3s","赤经D(J2000)":"8.30813888888889","赤纬(J2000)":"+18h28m40s","赤纬D(J2000)":"18.477777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"iF, conn with 44 and 46"},{"ID":"10117","标识":"IC2277","M标识":"IC2277","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m32.4s","赤经D(J2000)":"8.309000000000001","赤纬(J2000)":"+18h39m0s","赤纬D(J2000)":"18.65","可见光星等V":"99","摄影(蓝光)星等B":"14.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, irregular figure","简略描述":"pF, vS, iF"},{"ID":"10118","标识":"IC2278","M标识":"IC2278","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m34.5s","赤经D(J2000)":"8.309583333333334","赤纬(J2000)":"+18h27m40s","赤纬D(J2000)":"18.461111111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"iF, conn with 41 and 46"},{"ID":"10119","标识":"IC2279","M标识":"IC2279","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m35.5s","赤经D(J2000)":"8.309861111111111","赤纬(J2000)":"+18h34m7s","赤纬D(J2000)":"18.56861111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"10120","标识":"IC2280","M标识":"IC2280","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m38.5s","赤经D(J2000)":"8.310694444444445","赤纬(J2000)":"+18h27m1s","赤纬D(J2000)":"18.450277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pF, iF, conn with 41, 44"},{"ID":"10121","标识":"IC2281","M标识":"IC2281","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m54.1s","赤经D(J2000)":"8.315027777777779","赤纬(J2000)":"+18h54m33s","赤纬D(J2000)":"18.909166666666664","可见光星等V":"99","摄影(蓝光)星等B":"12.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* att 51°, spir br"},{"ID":"10122","标识":"IC2282","M标识":"IC2282","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m15.6s","赤经D(J2000)":"8.321","赤纬(J2000)":"+24h47m35s","赤纬D(J2000)":"24.793055555555558","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.8","方位角":"","详细描述":"pretty faint, large, diffuse, star to southeast","简略描述":"pF, L, dif, * sf"},{"ID":"10123","标识":"IC2283","M标识":"IC2283","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m17.5s","赤经D(J2000)":"8.321527777777778","赤纬(J2000)":"+24h47m11s","赤纬D(J2000)":"24.78638888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pF, pS, R, * 9 f 4s.6, 35\" s"},{"ID":"10124","标识":"IC2284","M标识":"IC2284","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h18m58.7s","赤经D(J2000)":"8.316305555555557","赤纬(J2000)":"+18h36m23s","赤纬D(J2000)":"18.60638888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, S, dif, stell N, * v nr sf"},{"ID":"10125","标识":"IC2285","M标识":"IC2285","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m2.9s","赤经D(J2000)":"8.317472222222221","赤纬(J2000)":"+18h54m55s","赤纬D(J2000)":"18.915277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pF, S, curved N, conn with 47"},{"ID":"10126","标识":"IC2286","M标识":"IC2286","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m4.1s","赤经D(J2000)":"8.317805555555555","赤纬(J2000)":"+18h57m22s","赤纬D(J2000)":"18.95611111111111","可见光星等V":"99","摄影(蓝光)星等B":"15.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, very small, extended 50°","简略描述":"pB, vS, E 50°"},{"ID":"10127","标识":"IC2287","M标识":"IC2287","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m7.6s","赤经D(J2000)":"8.318777777777777","赤纬(J2000)":"+19h24m0s","赤纬D(J2000)":"19.4","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, a little brighter middle, diffuse","简略描述":"vF, pS, lbM, dif"},{"ID":"10128","标识":"IC2288","M标识":"IC2288","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m22.3s","赤经D(J2000)":"8.322861111111111","赤纬(J2000)":"+23h44m50s","赤纬D(J2000)":"23.747222222222224","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"70","详细描述":"faint, small, extended 90°, brighter middle, diffuse","简略描述":"F, S, E 90°, bM, dif"},{"ID":"10129","标识":"IC2289","M标识":"IC2289","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m7.8s","赤经D(J2000)":"8.318833333333334","赤纬(J2000)":"+18h29m54s","赤纬D(J2000)":"18.498333333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, irregular figure","简略描述":"pF, S, iF"},{"ID":"10130","标识":"IC2290","M标识":"IC2290","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m15.7s","赤经D(J2000)":"8.321027777777777","赤纬(J2000)":"+19h18m49s","赤纬D(J2000)":"19.31361111111111","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"150","详细描述":"pretty faint, pretty small, diffuse, others near","简略描述":"pF, pS, dif, others nr"},{"ID":"10131","标识":"IC2291","M标识":"IC2291","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m18.2s","赤经D(J2000)":"8.321722222222222","赤纬(J2000)":"+18h30m30s","赤纬D(J2000)":"18.508333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, much extended 125°, gradually brighter middle","简略描述":"vF, S, mE 125°, gbM"},{"ID":"10132","标识":"IC2292","M标识":"IC2292","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m22s","赤经D(J2000)":"8.322777777777777","赤纬(J2000)":"+19h33m47s","赤纬D(J2000)":"19.563055555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, extended 135°, brighter middle","简略描述":"pF, vS, E 135°, bM"},{"ID":"10133","标识":"IC2293","M标识":"IC2293","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m32.1s","赤经D(J2000)":"8.325583333333332","赤纬(J2000)":"+21h23m40s","赤纬D(J2000)":"21.394444444444446","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"123","详细描述":"faint, pretty small, diffuse","简略描述":"F, pS, dif"},{"ID":"10134","标识":"IC2294","M标识":"IC2294","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m25.9s","赤经D(J2000)":"8.32386111111111","赤纬(J2000)":"+18h59m7s","赤纬D(J2000)":"18.985277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, irregular figure","简略描述":"pF, vS, iF"},{"ID":"10135","标识":"IC2295","M标识":"IC2295","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m25.9s","赤经D(J2000)":"8.32386111111111","赤纬(J2000)":"+18h24m41s","赤纬D(J2000)":"18.411388888888887","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, extended 90°, very faint stellar nucleus, bright star to southeast","简略描述":"F, vS, E 90°, vF stell N, B * sf"},{"ID":"10136","标识":"IC2296","M标识":"IC2296","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h19m28.5s","赤经D(J2000)":"8.324583333333333","赤纬(J2000)":"+18h53m55s","赤纬D(J2000)":"18.898611111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, irregular figure, very little brighter middle","简略描述":"pF, vS, iF, vlbM"},{"ID":"10137","标识":"IC2297","M标识":"IC2297","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m4.4s","赤经D(J2000)":"8.334555555555555","赤纬(J2000)":"+18h22m52s","赤纬D(J2000)":"18.38111111111111","可见光星等V":"99","摄影(蓝光)星等B":"14.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, others near","简略描述":"pB, S, others nr"},{"ID":"10138","标识":"IC2298","M标识":"IC2298","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m7.1s","赤经D(J2000)":"8.335305555555555","赤纬(J2000)":"+18h24m10s","赤纬D(J2000)":"18.402777777777775","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pF, S, iF, Ns, * close nf"},{"ID":"10139","标识":"IC2299","M标识":"IC2299","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m9.7s","赤经D(J2000)":"8.336027777777778","赤纬(J2000)":"+19h20m17s","赤纬D(J2000)":"19.338055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, vME 60°"},{"ID":"10140","标识":"IC2300","M标识":"IC2300","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m12.7s","赤经D(J2000)":"8.336861111111112","赤纬(J2000)":"+18h25m12s","赤纬D(J2000)":"18.42","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, pS, iF, arms n and p"},{"ID":"10141","标识":"IC2301","M标识":"IC2301","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m13.9s","赤经D(J2000)":"8.337194444444446","赤纬(J2000)":"+18h26m4s","赤纬D(J2000)":"18.434444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, S, mE, exc N, * sf"},{"ID":"10142","标识":"IC2302","M标识":"IC2302","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m17.3s","赤经D(J2000)":"8.33813888888889","赤纬(J2000)":"+19h21m24s","赤纬D(J2000)":"19.35666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, very little brighter middle","简略描述":"F, vS, R, vlbM"},{"ID":"10143","标识":"IC2303","M标识":"IC2303","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m19.4s","赤经D(J2000)":"8.338722222222223","赤纬(J2000)":"+19h25m9s","赤纬D(J2000)":"19.41916666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, much extended 0°","简略描述":"F, vS, mE 0°"},{"ID":"10144","标识":"IC2304","M标识":"IC2304","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m35.8s","赤经D(J2000)":"8.343277777777779","赤纬(J2000)":"+19h26m22s","赤纬D(J2000)":"19.439444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"bright, very small, nebulous star","简略描述":"B, vS, neb *"},{"ID":"10145","标识":"IC2305","M标识":"IC2305","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m40.2s","赤经D(J2000)":"8.3445","赤纬(J2000)":"+19h27m10s","赤纬D(J2000)":"19.452777777777776","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, nuclear","简略描述":"vF, S, N"},{"ID":"10146","标识":"IC2306","M标识":"IC2306","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m39.5s","赤经D(J2000)":"8.344305555555556","赤纬(J2000)":"+19h6m36s","赤纬D(J2000)":"19.110000000000003","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"10147","标识":"IC2307","M标识":"IC2307","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m42.9s","赤经D(J2000)":"8.34525","赤纬(J2000)":"+19h26m27s","赤纬D(J2000)":"19.440833333333334","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"165","详细描述":"pretty bright, pretty small, diffuse, extended 0°","简略描述":"pB, pS, dif, E 0°"},{"ID":"10148","标识":"IC2308","M标识":"IC2308","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m45.3s","赤经D(J2000)":"8.345916666666668","赤纬(J2000)":"+19h21m42s","赤纬D(J2000)":"19.361666666666668","可见光星等V":"14.9","摄影(蓝光)星等B":"15.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"90","详细描述":"pretty bright, very small, irregular figure, brighter middle","简略描述":"pB, vS, iF, bM"},{"ID":"10149","标识":"IC2309","M标识":"IC2309","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m43.6s","赤经D(J2000)":"8.345444444444444","赤纬(J2000)":"+18h23m50s","赤纬D(J2000)":"18.397222222222222","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"5","详细描述":"","简略描述":"vF, pS, E 165°"},{"ID":"10150","标识":"IC2310","M标识":"IC2310","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m46.3s","赤经D(J2000)":"8.346194444444444","赤纬(J2000)":"+18h27m48s","赤纬D(J2000)":"18.46333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty small, much extended 40°, curved, much brighter middle","简略描述":"pB, pS, mE 40°, curved, mbM"},{"ID":"10151","标识":"IC2311","M标识":"IC2311","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h18m45.9s","赤经D(J2000)":"8.312750000000001","赤纬(J2000)":"-25h22m12s","赤纬D(J2000)":"-25.37","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"","简略描述":"pB, vS, R, lbM, 6' n of III 288"},{"ID":"10152","标识":"IC2312","M标识":"IC2312","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m53.2s","赤经D(J2000)":"8.348111111111113","赤纬(J2000)":"+18h30m30s","赤纬D(J2000)":"18.508333333333333","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, extended 45°, diffuse, very little brighter middle","简略描述":"vF, S, E 45°, dif, vlbM"},{"ID":"10153","标识":"IC2313","M标识":"IC2313","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h20m54.6s","赤经D(J2000)":"8.348500000000001","赤纬(J2000)":"+18h30m52s","赤纬D(J2000)":"18.514444444444443","可见光星等V":"99","摄影(蓝光)星等B":"14.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, very faint stellar nucleus","简略描述":"vF, vS, vF stell N"},{"ID":"10154","标识":"IC2314","M标识":"IC2314","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h21m3.7s","赤经D(J2000)":"8.351027777777777","赤纬(J2000)":"+18h45m47s","赤纬D(J2000)":"18.763055555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, spiral, very little brighter middle","简略描述":"F, S, spir, vlbM"},{"ID":"10155","标识":"IC2315","M标识":"IC2315","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h21m10.9s","赤经D(J2000)":"8.353027777777777","赤纬(J2000)":"+18h54m53s","赤纬D(J2000)":"18.91472222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, diffuse, nuclear","简略描述":"F, vS, R, dif, N"},{"ID":"10156","标识":"IC2316","M标识":"IC2316","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h21m15.3s","赤经D(J2000)":"8.35425","赤纬(J2000)":"+19h45m36s","赤纬D(J2000)":"19.76","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pB, S, R, exc stell N"},{"ID":"10157","标识":"IC2317","M标识":"IC2317","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h21m21.6s","赤经D(J2000)":"8.356","赤纬(J2000)":"+18h50m40s","赤纬D(J2000)":"18.844444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, diffuse, very faint stellar nucleus","简略描述":"F, vS, dif, vF stell N"},{"ID":"10158","标识":"IC2318","M标识":"IC2318","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h21m32.8s","赤经D(J2000)":"8.35911111111111","赤纬(J2000)":"+18h37m23s","赤纬D(J2000)":"18.623055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, nuclear","简略描述":"F, vS, N"},{"ID":"10159","标识":"IC2319","M标识":"IC2319","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h21m33.1s","赤经D(J2000)":"8.359194444444444","赤纬(J2000)":"+18h28m34s","赤纬D(J2000)":"18.47611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"10160","标识":"IC2320","M标识":"IC2320","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h21m35.4s","赤经D(J2000)":"8.359833333333333","赤纬(J2000)":"+18h40m13s","赤纬D(J2000)":"18.67027777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, nuclear","简略描述":"F, vS, N"},{"ID":"10161","标识":"IC2321","M标识":"IC2321","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h21m39.1s","赤经D(J2000)":"8.360861111111111","赤纬(J2000)":"+18h28m7s","赤纬D(J2000)":"18.46861111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, very small, round","简略描述":"pB, vS, R"},{"ID":"10162","标识":"IC2322","M标识":"IC2322","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h21m39s","赤经D(J2000)":"8.360833333333334","赤纬(J2000)":"+18h29m2s","赤纬D(J2000)":"18.483888888888888","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"10163","标识":"IC2323","M标识":"IC2323","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h21m41.3s","赤经D(J2000)":"8.361472222222222","赤纬(J2000)":"+18h36m48s","赤纬D(J2000)":"18.613333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, round","简略描述":"pF, S, R"},{"ID":"10164","标识":"IC2324","M标识":"IC2324","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h21m58.8s","赤经D(J2000)":"8.366333333333333","赤纬(J2000)":"+19h11m38s","赤纬D(J2000)":"19.19388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pF, S, mE 155°, sev N"},{"ID":"10165","标识":"IC2325","M标识":"IC2325","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h22m8.7s","赤经D(J2000)":"8.369083333333334","赤纬(J2000)":"+18h54m42s","赤纬D(J2000)":"18.911666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, irregular figure, faint star attached on east","简略描述":"vF, pL, iF, F * att f"},{"ID":"10166","标识":"IC2326","M标识":"IC2326","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h22m12s","赤经D(J2000)":"8.370000000000001","赤纬(J2000)":"+19h0m42s","赤纬D(J2000)":"19.011666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, mE 90°, dif, sev N"},{"ID":"10167","标识":"IC2327","M标识":"IC2327","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h21m28s","赤经D(J2000)":"8.357777777777777","赤纬(J2000)":"+3h10m8s","赤纬D(J2000)":"3.1688888888888886","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"174","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"10168","标识":"IC2328","M标识":"IC2328","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h22m17.3s","赤经D(J2000)":"8.371472222222224","赤纬(J2000)":"+19h36m59s","赤纬D(J2000)":"19.616388888888892","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pB, pS, mE 65°"},{"ID":"10169","标识":"IC2329","M标识":"IC2329","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h22m19.4s","赤经D(J2000)":"8.372055555555557","赤纬(J2000)":"+19h24m56s","赤纬D(J2000)":"19.415555555555553","可见光星等V":"14","摄影(蓝光)星等B":"14.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.1","短轴(分)":"0.4","方位角":"117","详细描述":"","简略描述":"pF, pS, mE 110°, stell N"},{"ID":"10170","标识":"IC2330","M标识":"IC2330","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h22m23.2s","赤经D(J2000)":"8.373111111111111","赤纬(J2000)":"+18h51m12s","赤纬D(J2000)":"18.853333333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"B, vS, stell, 2 spir branches"},{"ID":"10171","标识":"IC2331","M标识":"IC2331","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h22m35.2s","赤经D(J2000)":"8.376444444444445","赤纬(J2000)":"+19h40m45s","赤纬D(J2000)":"19.679166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, round, diffuse","简略描述":"vF, pL, R, dif"},{"ID":"10172","标识":"IC2332","M标识":"IC2332","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h22m39.7s","赤经D(J2000)":"8.377694444444446","赤纬(J2000)":"+19h55m13s","赤纬D(J2000)":"19.92027777777778","可见光星等V":"99","摄影(蓝光)星等B":"14.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pB, vS, R, stell N, F * att s"},{"ID":"10173","标识":"IC2333","M标识":"IC2333","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h23m1s","赤经D(J2000)":"8.38361111111111","赤纬(J2000)":"+19h4m54s","赤纬D(J2000)":"19.081666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, nuclear","简略描述":"F, S, R, N"},{"ID":"10174","标识":"IC2334","M标识":"IC2334","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h23m0s","赤经D(J2000)":"8.383333333333333","赤纬(J2000)":"+18h36m52s","赤纬D(J2000)":"18.614444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, round","简略描述":"pF, S, R"},{"ID":"10175","标识":"IC2335","M标识":"IC2335","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h23m7.1s","赤经D(J2000)":"8.385305555555554","赤纬(J2000)":"+19h24m27s","赤纬D(J2000)":"19.4075","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"170","详细描述":"faint, pretty small, very little brighter middle, diffuse, binuclear","简略描述":"F, pS, vlbM, dif, biN"},{"ID":"10176","标识":"IC2336","M标识":"IC2336","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h23m19.1s","赤经D(J2000)":"8.388638888888888","赤纬(J2000)":"+18h32m14s","赤纬D(J2000)":"18.537222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"10177","标识":"IC2337","M标识":"IC2337","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h23m20.3s","赤经D(J2000)":"8.388972222222222","赤纬(J2000)":"+18h32m8s","赤纬D(J2000)":"18.535555555555558","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"10.9","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"45","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"10178","标识":"IC2338","M标识":"IC2338","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h23m32.7s","赤经D(J2000)":"8.392416666666666","赤纬(J2000)":"+21h20m16s","赤纬D(J2000)":"21.337777777777777","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, brighter middle and nucleus","简略描述":"F, vS, bMN"},{"ID":"10179","标识":"IC2339","M标识":"IC2339","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h23m34.2s","赤经D(J2000)":"8.392833333333332","赤纬(J2000)":"+21h20m51s","赤纬D(J2000)":"21.3475","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"60","详细描述":"faint, small, round, brighter middle and nucleus","简略描述":"F, S, R, bMN"},{"ID":"10180","标识":"IC2340","M标识":"IC2340","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h23m30.2s","赤经D(J2000)":"8.391722222222223","赤纬(J2000)":"+18h44m58s","赤纬D(J2000)":"18.749444444444446","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"171","详细描述":"pretty faint, pretty small, diffuse, brighter middle and nucleus","简略描述":"pF, pS, dif, bMN"},{"ID":"10181","标识":"IC2341","M标识":"IC2341","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h23m41.4s","赤经D(J2000)":"8.394833333333333","赤纬(J2000)":"+21h26m6s","赤纬D(J2000)":"21.435","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"1","详细描述":"faint, small, round, brighter middle and nucleus","简略描述":"F, S, R, bMN"},{"ID":"10182","标识":"IC2342","M标识":"IC2342","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h23m32.2s","赤经D(J2000)":"8.392277777777778","赤纬(J2000)":"+18h34m46s","赤纬D(J2000)":"18.579444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pB, S, R, * 12 att 112°"},{"ID":"10183","标识":"IC2343","M标识":"IC2343","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h23m32.2s","赤经D(J2000)":"8.392277777777778","赤纬(J2000)":"+18h34m47s","赤纬D(J2000)":"18.579722222222223","可见光星等V":"99","摄影(蓝光)星等B":"15","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, a little brighter middle, diffuse","简略描述":"F, pS, lbM, dif"},{"ID":"10184","标识":"IC2344","M标识":"IC2344","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h23m54.9s","赤经D(J2000)":"8.398583333333333","赤纬(J2000)":"+18h39m34s","赤纬D(J2000)":"18.659444444444443","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty small, round, a little brighter middle","简略描述":"pF, pS, R, lbM"},{"ID":"10185","标识":"IC2345","M标识":"IC2345","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h24m8.5s","赤经D(J2000)":"8.402361111111112","赤纬(J2000)":"+19h57m9s","赤纬D(J2000)":"19.9525","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, S, E 90°, att B * sp"},{"ID":"10186","标识":"IC2346","M标识":"IC2346","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h24m10.5s","赤经D(J2000)":"8.402916666666666","赤纬(J2000)":"+19h42m20s","赤纬D(J2000)":"19.705555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, S, R, bM, 2nd v nr sf"},{"ID":"10187","标识":"IC2347","M标识":"IC2347","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h24m14s","赤经D(J2000)":"8.40388888888889","赤纬(J2000)":"+18h46m26s","赤纬D(J2000)":"18.773888888888887","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, diffuse","简略描述":"vF, S, iF, dif"},{"ID":"10188","标识":"IC2348","M标识":"IC2348","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h24m20.2s","赤经D(J2000)":"8.405611111111112","赤纬(J2000)":"+20h32m2s","赤纬D(J2000)":"20.53388888888889","可见光星等V":"15","摄影(蓝光)星等B":"15.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"90","详细描述":"faint, pretty small, much extended 45°, brighter middle","简略描述":"F, pS, mE 45°, bM"},{"ID":"10189","标识":"IC2349","M标识":"IC2349","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h24m17.1s","赤经D(J2000)":"8.40475","赤纬(J2000)":"+19h0m22s","赤纬D(J2000)":"19.00611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, large, a little brighter middle, diffuse","简略描述":"pF, L, lbM, dif"},{"ID":"10190","标识":"IC2350","M标识":"IC2350","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h24m28.3s","赤经D(J2000)":"8.407861111111112","赤纬(J2000)":"+19h33m7s","赤纬D(J2000)":"19.551944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, gradually brighter middle and nucleus, bright star to south","简略描述":"vF, S, gbMN, B * s"},{"ID":"10191","标识":"IC2351","M标识":"IC2351","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h24m30.3s","赤经D(J2000)":"8.408416666666668","赤纬(J2000)":"+18h35m18s","赤纬D(J2000)":"18.58833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pF, pS, iF, F stell N, 2581 f"},{"ID":"10192","标识":"IC2352","M标识":"IC2352","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h24m40s","赤经D(J2000)":"8.411111111111111","赤纬(J2000)":"+19h36m8s","赤纬D(J2000)":"19.602222222222224","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, S, lbM, S neb f"},{"ID":"10193","标识":"IC2353","M标识":"IC2353","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h24m18s","赤经D(J2000)":"8.405000000000001","赤纬(J2000)":"+18h39m21s","赤纬D(J2000)":"18.65583333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pB, S, R, spir br"},{"ID":"10194","标识":"IC2354","M标识":"IC2354","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h24m40.7s","赤经D(J2000)":"8.411305555555556","赤纬(J2000)":"+18h39m59s","赤纬D(J2000)":"18.66638888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, diffuse, very faint nucleus","简略描述":"vF, vS, dif, vFN"},{"ID":"10195","标识":"IC2355","M标识":"IC2355","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h24m51.7s","赤经D(J2000)":"8.414361111111111","赤纬(J2000)":"+20h27m43s","赤纬D(J2000)":"20.461944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, round, stellar nucleus","简略描述":"pB, S, R, stell N"},{"ID":"10196","标识":"IC2356","M标识":"IC2356","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h25m0.8s","赤经D(J2000)":"8.416888888888888","赤纬(J2000)":"+19h29m50s","赤纬D(J2000)":"19.497222222222224","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, much extended, a little brighter middle","简略描述":"F, vS, mE, lbM"},{"ID":"10197","标识":"IC2357","M标识":"IC2357","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h25m4.6s","赤经D(J2000)":"8.417944444444444","赤纬(J2000)":"+19h30m31s","赤纬D(J2000)":"19.50861111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, round, diffuse, stellar nucleus","简略描述":"pF, S, R, dif, stell N"},{"ID":"10198","标识":"IC2358","M标识":"IC2358","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h25m5.2s","赤经D(J2000)":"8.418111111111111","赤纬(J2000)":"+19h29m43s","赤纬D(J2000)":"19.49527777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, S, E 135°, FN, vS neb f"},{"ID":"10199","标识":"IC2359","M标识":"IC2359","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h25m12.1s","赤经D(J2000)":"8.420027777777777","赤纬(J2000)":"+20h20m3s","赤纬D(J2000)":"20.334166666666665","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"","简略描述":"F, vS, E 160°, stell N exc nf"},{"ID":"10200","标识":"IC2360","M标识":"IC2360","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h25m15.2s","赤经D(J2000)":"8.420888888888888","赤纬(J2000)":"+19h31m0s","赤纬D(J2000)":"19.516666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, S, dif, vFN exc"},{"ID":"10201","标识":"IC2361","M标识":"IC2361","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h25m44.4s","赤经D(J2000)":"8.429","赤纬(J2000)":"+27h52m29s","赤纬D(J2000)":"27.87472222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"78","详细描述":"faint, pretty small, a little extended north-south, gradually brighter middle, mottled but not resolved","简略描述":"F, pS, lE ns, gbM, r"},{"ID":"10202","标识":"IC2362","M标识":"IC2362","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h25m41.5s","赤经D(J2000)":"8.428194444444443","赤纬(J2000)":"+19h56m28s","赤纬D(J2000)":"19.941111111111113","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pF, pL, dif, bet 4 B st"},{"ID":"10203","标识":"IC2363","M标识":"IC2363","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h25m45.5s","赤经D(J2000)":"8.429305555555555","赤纬(J2000)":"+19h26m55s","赤纬D(J2000)":"19.448611111111113","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"pretty faint, pretty large, diffuse","简略描述":"pF, pL, dif"},{"ID":"10204","标识":"IC2364","M标识":"IC2364","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h25m51.5s","赤经D(J2000)":"8.430972222222222","赤纬(J2000)":"+19h45m33s","赤纬D(J2000)":"19.759166666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, round, brighter middle","简略描述":"pF, S, R, bM"},{"ID":"10205","标识":"IC2365","M标识":"IC2365","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h26m18s","赤经D(J2000)":"8.438333333333334","赤纬(J2000)":"+27h50m26s","赤纬D(J2000)":"27.840555555555554","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"45","详细描述":"pretty bright, very small, round, stellar","简略描述":"pB, vS, R, stell"},{"ID":"10206","标识":"IC2366","M标识":"IC2366","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h26m18s","赤经D(J2000)":"8.438333333333334","赤纬(J2000)":"+27h50m26s","赤纬D(J2000)":"27.840555555555554","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"45","详细描述":"pretty bright, very small, round, brighter middle and nucleus","简略描述":"pB, vS, R, bMN"},{"ID":"10207","标识":"IC2367","M标识":"IC2367","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h24m10s","赤经D(J2000)":"8.402777777777779","赤纬(J2000)":"-18h46m33s","赤纬D(J2000)":"-18.77583333333333","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.6","短轴(分)":"1.8","方位角":"55","详细描述":"pretty bright, small","简略描述":"pB, S"},{"ID":"10208","标识":"IC2368","M标识":"IC2368","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h26m1.3s","赤经D(J2000)":"8.433694444444445","赤纬(J2000)":"+19h52m59s","赤纬D(J2000)":"19.883055555555558","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, brighter middle and nucleus, extended 170°","简略描述":"pF, vS, bMN, E 170°"},{"ID":"10209","标识":"IC2369","M标识":"IC2369","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h26m16.3s","赤经D(J2000)":"8.437861111111111","赤纬(J2000)":"+20h13m57s","赤纬D(J2000)":"20.232499999999998","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, round, stellar nucleus","简略描述":"pB, S, R, stell N"},{"ID":"10210","标识":"IC2370","M标识":"IC2370","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h26m22.8s","赤经D(J2000)":"8.439666666666668","赤纬(J2000)":"+19h38m18s","赤纬D(J2000)":"19.638333333333332","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, very small, irregular figure, nuclear","简略描述":"pB, vS, iF, N"},{"ID":"10211","标识":"IC2371","M标识":"IC2371","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h26m37s","赤经D(J2000)":"8.443611111111112","赤纬(J2000)":"+19h47m55s","赤纬D(J2000)":"19.798611111111114","可见光星等V":"99","摄影(蓝光)星等B":"14.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, a little extended 90°","简略描述":"pB, S, lE 90°"},{"ID":"10212","标识":"IC2372","M标识":"IC2372","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h26m40.6s","赤经D(J2000)":"8.444611111111112","赤纬(J2000)":"+19h52m58s","赤纬D(J2000)":"19.88277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, S, lE 135°, B * sf"},{"ID":"10213","标识":"IC2373","M标识":"IC2373","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h26m49s","赤经D(J2000)":"8.446944444444444","赤纬(J2000)":"+20h21m53s","赤纬D(J2000)":"20.364722222222223","可见光星等V":"14.7","摄影(蓝光)星等B":"15.1","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"","简略描述":"F, S, dif, exc N"},{"ID":"10214","标识":"IC2374","M标识":"IC2374","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h28m22.2s","赤经D(J2000)":"8.472833333333334","赤纬(J2000)":"+30h26m35s","赤纬D(J2000)":"30.443055555555556","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"pretty faint, small, round, diffuse, 11.5 magnitude star close","简略描述":"pF, S, R, dif, * 11.5 close"},{"ID":"10215","标识":"IC2375","M标识":"IC2375","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h26m19.6s","赤经D(J2000)":"8.438777777777778","赤纬(J2000)":"-13h18m11s","赤纬D(J2000)":"-13.303055555555556","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"83","详细描述":"faint, very small, extended 90°, 1st of 3","简略描述":"F, vS, E 90°, 1st of 3"},{"ID":"10216","标识":"IC2376","M标识":"IC2376","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h28m26.1s","赤经D(J2000)":"8.473916666666668","赤纬(J2000)":"+30h24m27s","赤纬D(J2000)":"30.4075","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"70","详细描述":"","简略描述":"F, vS, R, * 14 close"},{"ID":"10217","标识":"IC2377","M标识":"IC2377","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h26m26s","赤经D(J2000)":"8.440555555555555","赤纬(J2000)":"-13h18m25s","赤纬D(J2000)":"-13.306944444444445","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"36","详细描述":"extremely faint, very small, 2nd of 3","简略描述":"eF, vS, 2nd of 3"},{"ID":"10218","标识":"IC2378","M标识":"IC2378","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h28m31.6s","赤经D(J2000)":"8.475444444444445","赤纬(J2000)":"+30h25m52s","赤纬D(J2000)":"30.43111111111111","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, small, round, gradually a little brighter middle, mottled but not resolved","简略描述":"F, S, R, glbM, r"},{"ID":"10219","标识":"IC2379","M标识":"IC2379","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"船尾座","星座(En)":"PUP","赤经(J2000)":"8h26m27.7s","赤经D(J2000)":"8.441027777777778","赤纬(J2000)":"-13h17m36s","赤纬D(J2000)":"-13.293333333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.6","方位角":"144","详细描述":"very faint, very small, 3rd of 3","简略描述":"vF, vS, 3rd of 3"},{"ID":"10220","标识":"IC2380","M标识":"IC2380","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h28m43.8s","赤经D(J2000)":"8.478833333333334","赤纬(J2000)":"+30h24m18s","赤纬D(J2000)":"30.404999999999998","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, a little brighter middle, mottled but not resolved","简略描述":"F, S, R, lbM, r"},{"ID":"10221","标识":"IC2381","M标识":"IC2381","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h28m21.8s","赤经D(J2000)":"8.472722222222222","赤纬(J2000)":"+19h47m28s","赤纬D(J2000)":"19.791111111111114","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pF, S, R bM, dif"},{"ID":"10222","标识":"IC2382","M标识":"IC2382","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h28m46.1s","赤经D(J2000)":"8.479472222222222","赤纬(J2000)":"+22h3m12s","赤纬D(J2000)":"22.053333333333335","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"168","详细描述":"faint, small, round, mottled but not resolved, 12.5 magnitude star close","简略描述":"F, S, R, r, * 12.5 close"},{"ID":"10223","标识":"IC2383","M标识":"IC2383","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h29m41.4s","赤经D(J2000)":"8.494833333333332","赤纬(J2000)":"+30h41m17s","赤纬D(J2000)":"30.688055555555557","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, round, brighter middle and nucleus","简略描述":"F, vS, R, bMN"},{"ID":"10224","标识":"IC2384","M标识":"IC2384","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h34m23.4s","赤经D(J2000)":"8.573166666666667","赤纬(J2000)":"+32h26m7s","赤纬D(J2000)":"32.43527777777778","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, stellar","简略描述":"F, S, R, stell"},{"ID":"10225","标识":"IC2385","M标识":"IC2385","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h35m10.6s","赤经D(J2000)":"8.586277777777779","赤纬(J2000)":"+37h15m57s","赤纬D(J2000)":"37.26583333333333","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"18","详细描述":"faint, small, round, diffuse, mottled but not resolved","简略描述":"F, S, R, dif, r"},{"ID":"10226","标识":"IC2386","M标识":"IC2386","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h34m43.9s","赤经D(J2000)":"8.578861111111111","赤纬(J2000)":"+25h48m24s","赤纬D(J2000)":"25.80666666666667","可见光星等V":"99","摄影(蓝光)星等B":"15.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, large, extremely dif","简略描述":"eF, L, e dif"},{"ID":"10227","标识":"IC2387","M标识":"IC2387","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h38m33.9s","赤经D(J2000)":"8.64275","赤纬(J2000)":"+30h47m54s","赤纬D(J2000)":"30.798333333333336","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"18","详细描述":"faint, pretty small, extended north-south, gradually brighter middle, mottled but not resolved","简略描述":"F, pS, E ns, gbM, r"},{"ID":"10228","标识":"IC2388","M标识":"IC2388","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h39m56.5s","赤经D(J2000)":"8.665694444444444","赤纬(J2000)":"+19h38m41s","赤纬D(J2000)":"19.64472222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"160","详细描述":"","简略描述":"eF, S, dif, ? FN, * 10 n 90\""},{"ID":"10229","标识":"IC2389","M标识":"IC2389","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"8h47m58.3s","赤经D(J2000)":"8.799527777777778","赤纬(J2000)":"+73h32m19s","赤纬D(J2000)":"73.53861111111111","可见光星等V":"13.4","摄影(蓝光)星等B":"14","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.4","短轴(分)":"0.3","方位角":"126","详细描述":"very faint, small, a little brighter middle","简略描述":"vF, S, lbM"},{"ID":"10230","标识":"IC2390","M标识":"IC2390","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h41m51.7s","赤经D(J2000)":"8.697694444444444","赤纬(J2000)":"+19h42m11s","赤纬D(J2000)":"19.703055555555554","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"30","详细描述":"","简略描述":"iF, gbM, * 10 sf 1?', * 12 nf 1'"},{"ID":"10231","标识":"IC2391","M标识":"IC2391","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"船帆座ο星团","类型":"OCL","含重复类型":"OCL","形态":"II3p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"8h40m18s","赤经D(J2000)":"8.671666666666667","赤纬(J2000)":"-52h55m0s","赤纬D(J2000)":"-52.916666666666664","可见光星等V":"2.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"60","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, co, incl. ο Velorum 3.7 mag"},{"ID":"10232","标识":"IC2392","M标识":"IC2392","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h44m30.9s","赤经D(J2000)":"8.741916666666667","赤纬(J2000)":"+18h17m10s","赤纬D(J2000)":"18.28611111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"6","详细描述":"pretty bright, pretty small, extended 180°, very little brighter middle","简略描述":"pB, pS, E 180°, vlbM"},{"ID":"10233","标识":"IC2393","M标识":"IC2393","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h46m49.2s","赤经D(J2000)":"8.780333333333335","赤纬(J2000)":"+28h10m15s","赤纬D(J2000)":"28.170833333333334","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"20","详细描述":"faint, small, round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"10234","标识":"IC2394","M标识":"IC2394","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h47m6.7s","赤经D(J2000)":"8.785194444444445","赤纬(J2000)":"+28h14m11s","赤纬D(J2000)":"28.23638888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"105","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"10235","标识":"IC2395","M标识":"IC2395","拓展名":"","组件":"","Class":"","业余排名":"4","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3p","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"8h42m30s","赤经D(J2000)":"8.708333333333332","赤纬(J2000)":"-48h6m30s","赤纬D(J2000)":"-48.108333333333334","可见光星等V":"4.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"13","短轴(分)":"","方位角":"","详细描述":"a cluster, coarse","简略描述":"Cl, co"},{"ID":"10236","标识":"IC2396","M标识":"IC2396","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h46m40.6s","赤经D(J2000)":"8.777944444444445","赤纬(J2000)":"+17h38m57s","赤纬D(J2000)":"17.649166666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"10237","标识":"IC2397","M标识":"IC2397","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h46m41.7s","赤经D(J2000)":"8.778250000000002","赤纬(J2000)":"+17h39m35s","赤纬D(J2000)":"17.65972222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"10238","标识":"IC2398","M标识":"IC2398","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h46m44.5s","赤经D(J2000)":"8.77902777777778","赤纬(J2000)":"+17h45m19s","赤纬D(J2000)":"17.755277777777778","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"5","详细描述":"pretty bright, small, round, brighter middle","简略描述":"pB, S, R, bM"},{"ID":"10239","标识":"IC2399","M标识":"IC2399","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h46m50.1s","赤经D(J2000)":"8.780583333333334","赤纬(J2000)":"+18h54m55s","赤纬D(J2000)":"18.915277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, extended 190, brighter on southern side","简略描述":"vF, pL, E 190°, bs"},{"ID":"10240","标识":"IC2400","M标识":"IC2400","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h47m59.1s","赤经D(J2000)":"8.79975","赤纬(J2000)":"+38h4m8s","赤纬D(J2000)":"38.06888888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"111","详细描述":"faint, small, stellar","简略描述":"F, S, stell"},{"ID":"10241","标识":"IC2401","M标识":"IC2401","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h48m10.2s","赤经D(J2000)":"8.802833333333334","赤纬(J2000)":"+37h45m21s","赤纬D(J2000)":"37.755833333333335","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"101","详细描述":"faint, small, round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"10242","标识":"IC2402","M标识":"IC2402","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h47m59s","赤经D(J2000)":"8.799722222222222","赤纬(J2000)":"+31h47m10s","赤纬D(J2000)":"31.78611111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, gradually brighter middle and nucleus, mottled but not resolved","简略描述":"F, S, R, gbMN, r"},{"ID":"10243","标识":"IC2403","M标识":"IC2403","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h46m9.3s","赤经D(J2000)":"8.769250000000001","赤纬(J2000)":"-15h21m24s","赤纬D(J2000)":"-15.356666666666666","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"120","详细描述":"very faint, extremely small, a little extended","简略描述":"vF, eS, lE"},{"ID":"10244","标识":"IC2404","M标识":"IC2404","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h48m10.3s","赤经D(J2000)":"8.802861111111111","赤纬(J2000)":"+29h29m29s","赤纬D(J2000)":"29.49138888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"95","详细描述":"faint, small, round, suddenly brighter middle and nucleus","简略描述":"F, S, R, sbMN"},{"ID":"10245","标识":"IC2405","M标识":"IC2405","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h48m42.7s","赤经D(J2000)":"8.811861111111112","赤纬(J2000)":"+37h13m6s","赤纬D(J2000)":"37.218333333333334","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"3","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"10246","标识":"IC2406","M标识":"IC2406","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h48m4.4s","赤经D(J2000)":"8.801222222222222","赤纬(J2000)":"+17h42m8s","赤纬D(J2000)":"17.702222222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"173","详细描述":"","简略描述":"B, pS, E 165°"},{"ID":"10247","标识":"IC2407","M标识":"IC2407","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h48m9.1s","赤经D(J2000)":"8.802527777777778","赤纬(J2000)":"+17h36m42s","赤纬D(J2000)":"17.611666666666668","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.2","方位角":"86","详细描述":"pretty bright, pretty small, much extended 80°","简略描述":"pB, pS, mE 80°"},{"ID":"10248","标识":"IC2408","M标识":"IC2408","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h48m20.3s","赤经D(J2000)":"8.80563888888889","赤纬(J2000)":"+19h2m12s","赤纬D(J2000)":"19.03666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, round","简略描述":"pF, vS, R"},{"ID":"10249","标识":"IC2409","M标识":"IC2409","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h48m24.7s","赤经D(J2000)":"8.806861111111111","赤纬(J2000)":"+18h19m49s","赤纬D(J2000)":"18.330277777777777","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.7","方位角":"165","详细描述":"","简略描述":"pB, pL, bM, * 15 p"},{"ID":"10250","标识":"IC2410","M标识":"IC2410","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h48m27.2s","赤经D(J2000)":"8.807555555555556","赤纬(J2000)":"+19h1m11s","赤纬D(J2000)":"19.01972222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"78","详细描述":"pretty bright, small, extended 90°, stellar nucleus","简略描述":"pB, S, E 90°, stell N"},{"ID":"10251","标识":"IC2411","M标识":"IC2411","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h48m30.2s","赤经D(J2000)":"8.80838888888889","赤纬(J2000)":"+19h2m37s","赤纬D(J2000)":"19.04361111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"45","详细描述":"very faint, small, extended 235°","简略描述":"vF, S, E 235°"},{"ID":"10252","标识":"IC2412","M标识":"IC2412","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h49m23.8s","赤经D(J2000)":"8.823277777777777","赤纬(J2000)":"+18h32m36s","赤纬D(J2000)":"18.543333333333337","可见光星等V":"99","摄影(蓝光)星等B":"15.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, round, nuclear, 14th magnitude star to northwest","简略描述":"pB, S, R, N, * 14 np"},{"ID":"10253","标识":"IC2413","M标识":"IC2413","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h49m31.5s","赤经D(J2000)":"8.825416666666666","赤纬(J2000)":"+18h44m42s","赤纬D(J2000)":"18.745","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, faint nucleus","简略描述":"pF, vS, FN"},{"ID":"10254","标识":"IC2414","M标识":"IC2414","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h49m50s","赤经D(J2000)":"8.830555555555556","赤纬(J2000)":"+18h47m35s","赤纬D(J2000)":"18.793055555555558","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"pretty faint, very small, round, very little brighter middle","简略描述":"pF, vS, R, vlbM"},{"ID":"10255","标识":"IC2415","M标识":"IC2415","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h50m2s","赤经D(J2000)":"8.83388888888889","赤纬(J2000)":"+18h39m8s","赤纬D(J2000)":"18.65222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, vS, E 65°, FN"},{"ID":"10256","标识":"IC2416","M标识":"IC2416","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h50m32.1s","赤经D(J2000)":"8.84225","赤纬(J2000)":"+18h33m35s","赤纬D(J2000)":"18.559722222222224","可见光星等V":"99","摄影(蓝光)星等B":"14.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, round","简略描述":"pB, S, R"},{"ID":"10257","标识":"IC2417","M标识":"IC2417","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h51m8.2s","赤经D(J2000)":"8.852277777777777","赤纬(J2000)":"+18h37m30s","赤纬D(J2000)":"18.625","可见光星等V":"99","摄影(蓝光)星等B":"14.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"bright, small, round, stellar nucleus","简略描述":"B, S, R, stell N"},{"ID":"10258","标识":"IC2418","M标识":"IC2418","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h51m25s","赤经D(J2000)":"8.856944444444444","赤纬(J2000)":"+17h56m41s","赤纬D(J2000)":"17.94472222222222","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"","简略描述":"vF, pL, R, 2nd v nr sf"},{"ID":"10259","标识":"IC2419","M标识":"IC2419","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h52m9.5s","赤经D(J2000)":"8.869305555555556","赤纬(J2000)":"+18h6m5s","赤纬D(J2000)":"18.10138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, extended 0°, diffuse","简略描述":"F, pS, E 0°, dif"},{"ID":"10260","标识":"IC2420","M标识":"IC2420","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h51m33.7s","赤经D(J2000)":"8.859361111111111","赤纬(J2000)":"+3h6m4s","赤纬D(J2000)":"3.1011111111111114","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, small, gradually brighter middle and nucleus","简略描述":"F, S, gbMN"},{"ID":"10261","标识":"IC2421","M标识":"IC2421","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h54m21.5s","赤经D(J2000)":"8.905972222222223","赤纬(J2000)":"+32h40m50s","赤纬D(J2000)":"32.68055555555555","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"2","短轴(分)":"1.5","方位角":"147","详细描述":"very faint, pretty small, diffuse, difficult","简略描述":"vF, pS, dif, diffic"},{"ID":"10262","标识":"IC2422","M标识":"IC2422","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h54m24.3s","赤经D(J2000)":"8.90675","赤纬(J2000)":"+20h13m31s","赤纬D(J2000)":"20.225277777777777","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"pF, S, R, dif, * 14 close"},{"ID":"10263","标识":"IC2423","M标识":"IC2423","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"8h54m47.1s","赤经D(J2000)":"8.913083333333333","赤纬(J2000)":"+20h13m13s","赤纬D(J2000)":"20.220277777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.8","方位角":"130","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"10264","标识":"IC2424","M标识":"IC2424","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"8h56m47.7s","赤经D(J2000)":"8.946583333333333","赤纬(J2000)":"+39h22m57s","赤纬D(J2000)":"39.3825","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"","简略描述":"vF, S, lbM [? = 2704]"},{"ID":"10265","标识":"IC2425","M标识":"IC2425","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h55m50.2s","赤经D(J2000)":"8.93061111111111","赤纬(J2000)":"-3h25m25s","赤纬D(J2000)":"-3.423611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, possibly nebulous","简略描述":"eF, neb ?"},{"ID":"10266","标识":"IC2426","M标识":"IC2426","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"8h58m30.4s","赤经D(J2000)":"8.975111111111111","赤纬(J2000)":"+2h55m34s","赤纬D(J2000)":"2.926111111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"111","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"10267","标识":"IC2427","M标识":"IC2427","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h1m1.6s","赤经D(J2000)":"9.017111111111111","赤纬(J2000)":"+37h52m34s","赤纬D(J2000)":"37.876111111111115","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"90","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"10268","标识":"IC2428","M标识":"IC2428","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h3m14.7s","赤经D(J2000)":"9.054083333333335","赤纬(J2000)":"+30h35m27s","赤纬D(J2000)":"30.590833333333332","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"75","详细描述":"faint, pretty small, extended east-west, gradually a little brighter middle","简略描述":"F, pS, E pf, glbM"},{"ID":"10269","标识":"IC2429","M标识":"IC2429","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h3m42.5s","赤经D(J2000)":"9.061805555555557","赤纬(J2000)":"+29h17m48s","赤纬D(J2000)":"29.296666666666667","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"160","详细描述":"faint, very small, round, brighter middle and nucleus","简略描述":"F, vS, R, bMN"},{"ID":"10270","标识":"IC2430","M标识":"IC2430","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h4m22.8s","赤经D(J2000)":"9.073","赤纬(J2000)":"+27h57m9s","赤纬D(J2000)":"27.9525","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"43","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"10271","标识":"IC2431","M标识":"IC2431","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"布朗宁星系","类型":"Gxy","含重复类型":"Gxy","形态":"4S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h4m34.8s","赤经D(J2000)":"9.076333333333332","赤纬(J2000)":"+14h35m43s","赤纬D(J2000)":"14.595277777777778","可见光星等V":"14","摄影(蓝光)星等B":"14.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"54","详细描述":"faint, small, round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"10272","标识":"IC2432","M标识":"IC2432","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h4m39.5s","赤经D(J2000)":"9.077638888888888","赤纬(J2000)":"+5h30m45s","赤纬D(J2000)":"5.5125","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"135","详细描述":"faint, very small, round, diffuse","简略描述":"F, vS, R, dif"},{"ID":"10273","标识":"IC2433","M标识":"IC2433","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h5m28.6s","赤经D(J2000)":"9.091277777777778","赤纬(J2000)":"+22h36m7s","赤纬D(J2000)":"22.601944444444445","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"120","详细描述":"faint, a little extended east-west, diffuse","简略描述":"F, lE pf, dif"},{"ID":"10274","标识":"IC2434","M标识":"IC2434","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB\/P","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h7m15.9s","赤经D(J2000)":"9.121083333333333","赤纬(J2000)":"+37h12m56s","赤纬D(J2000)":"37.21555555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"13","详细描述":"faint, pretty small, a little brighter middle, mottled but not resolved","简略描述":"F, pS, lbM, r"},{"ID":"10275","标识":"IC2435","M标识":"IC2435","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h6m49.7s","赤经D(J2000)":"9.113805555555555","赤纬(J2000)":"+26h16m33s","赤纬D(J2000)":"26.27583333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"120","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"10276","标识":"IC2436","M标识":"IC2436","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h5m23.1s","赤经D(J2000)":"9.08975","赤纬(J2000)":"-19h9m59s","赤纬D(J2000)":"-19.16638888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, stellar, suspected","简略描述":"eF, S, stell, susp"},{"ID":"10277","标识":"IC2437","M标识":"IC2437","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h5m33.1s","赤经D(J2000)":"9.092527777777779","赤纬(J2000)":"-19h12m26s","赤纬D(J2000)":"-19.20722222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"123","详细描述":"","简略描述":"F, vS, R, 10' s of 2754, 57, 58"},{"ID":"10278","标识":"IC2438","M标识":"IC2438","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"9h14m11s","赤经D(J2000)":"9.236388888888888","赤纬(J2000)":"+73h24m50s","赤纬D(J2000)":"73.41388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, 5 or 6 st 13... within 1'.5"},{"ID":"10279","标识":"IC2439","M标识":"IC2439","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h8m38.4s","赤经D(J2000)":"9.144","赤纬(J2000)":"+32h35m36s","赤纬D(J2000)":"32.593333333333334","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1","短轴(分)":"0.2","方位角":"30","详细描述":"faint, small, diffuse, mottled but not resolved","简略描述":"F, S, dif, r"},{"ID":"10280","标识":"IC2440","M标识":"IC2440","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"9h15m50.4s","赤经D(J2000)":"9.264","赤纬(J2000)":"+73h27m31s","赤纬D(J2000)":"73.45861111111111","可见光星等V":"99","摄影(蓝光)星等B":"14.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, stell (13m), neb ?"},{"ID":"10281","标识":"IC2441","M标识":"IC2441","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h10m2.8s","赤经D(J2000)":"9.167444444444444","赤纬(J2000)":"+22h51m6s","赤纬D(J2000)":"22.851666666666667","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"130","详细描述":"faint, small, round, gradually a little brighter middle, perhaps double","简略描述":"F, S, R, glbM, D ?"},{"ID":"10282","标识":"IC2442","M标识":"IC2442","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h10m5.1s","赤经D(J2000)":"9.168083333333334","赤纬(J2000)":"+22h50m20s","赤纬D(J2000)":"22.83888888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, very small, round, very little brighter middle","简略描述":"vF, vS, R, vlbM"},{"ID":"10283","标识":"IC2443","M标识":"IC2443","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h11m30.8s","赤经D(J2000)":"9.191888888888888","赤纬(J2000)":"+28h49m37s","赤纬D(J2000)":"28.826944444444443","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"162","详细描述":"faint, small, round, gradually brighter middle and nucleus","简略描述":"F, S, R, gbMN"},{"ID":"10284","标识":"IC2444","M标识":"IC2444","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h12m50.8s","赤经D(J2000)":"9.21411111111111","赤纬(J2000)":"+30h12m46s","赤纬D(J2000)":"30.212777777777777","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"10285","标识":"IC2445","M标识":"IC2445","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h13m12.5s","赤经D(J2000)":"9.220138888888888","赤纬(J2000)":"+31h48m27s","赤纬D(J2000)":"31.8075","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"16","详细描述":"faint, small, round, diffuse, mottled but not resolved","简略描述":"F, S, R, dif, r"},{"ID":"10286","标识":"IC2446","M标识":"IC2446","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h13m31.3s","赤经D(J2000)":"9.225361111111111","赤纬(J2000)":"+28h57m5s","赤纬D(J2000)":"28.95138888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"148","详细描述":"faint, small, extended 130°, brighter middle and nucleus, mottled but not resolved","简略描述":"F, S, E 130°, bMN, r"},{"ID":"10287","标识":"IC2447","M标识":"IC2447","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h13m30s","赤经D(J2000)":"9.225","赤纬(J2000)":"+28h44m30s","赤纬D(J2000)":"28.741666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, gradually brighter middle and nucleus","简略描述":"F, S, R, gbMN"},{"ID":"10288","标识":"IC2448","M标识":"IC2448","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"9h7m6.5s","赤经D(J2000)":"9.118472222222223","赤纬(J2000)":"-69h56m29s","赤纬D(J2000)":"-69.9413888888889","可见光星等V":"10.4","摄影(蓝光)星等B":"11.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.45","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stell"},{"ID":"10289","标识":"IC2449","M标识":"IC2449","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h13m32.9s","赤经D(J2000)":"9.225805555555556","赤纬(J2000)":"+30h0m1s","赤纬D(J2000)":"30.00027777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"0.2","方位角":"77","详细描述":"very faint, very small, a little brighter middle","简略描述":"vF, vS, lbM"},{"ID":"10290","标识":"IC2450","M标识":"IC2450","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h17m5.5s","赤经D(J2000)":"9.28486111111111","赤纬(J2000)":"+25h25m40s","赤纬D(J2000)":"25.42777777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"157","详细描述":"faint, small, gradually brighter middle, mottled but not resolved","简略描述":"F, S, gbM, r"},{"ID":"10291","标识":"IC2451","M标识":"IC2451","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h15m47.7s","赤经D(J2000)":"9.26325","赤纬(J2000)":"+23h29m49s","赤纬D(J2000)":"23.496944444444445","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, round, gradually brighter middle and nucleus","简略描述":"F, S, R, gbMN"},{"ID":"10292","标识":"IC2452","M标识":"IC2452","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h15m57.5s","赤经D(J2000)":"9.265972222222222","赤纬(J2000)":"+23h28m22s","赤纬D(J2000)":"23.472777777777775","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"135","详细描述":"faint, small, round, gradually brighter middle and nucleus","简略描述":"F, S, R, gbMN"},{"ID":"10293","标识":"IC2453","M标识":"IC2453","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h15m54.5s","赤经D(J2000)":"9.265138888888888","赤纬(J2000)":"+20h55m46s","赤纬D(J2000)":"20.929444444444446","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"60","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"10294","标识":"IC2454","M标识":"IC2454","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h16m1.7s","赤经D(J2000)":"9.26713888888889","赤纬(J2000)":"+17h49m17s","赤纬D(J2000)":"17.82138888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"","详细描述":"faint, very small, gradually brighter middle and nucleus","简略描述":"F, vS, gbMN"},{"ID":"10295","标识":"IC2455","M标识":"IC2455","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h16m49.9s","赤经D(J2000)":"9.28052777777778","赤纬(J2000)":"+20h11m54s","赤纬D(J2000)":"20.198333333333334","可见光星等V":"12.8","摄影(蓝光)星等B":"13.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"60","详细描述":"faint, round, gradually brighter middle and nucleus, mottled but not resolved","简略描述":"F, R, gbMN, r"},{"ID":"10296","标识":"IC2456","M标识":"IC2456","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h17m24.3s","赤经D(J2000)":"9.290083333333333","赤纬(J2000)":"+34h40m29s","赤纬D(J2000)":"34.67472222222222","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"60","详细描述":"faint, small, diffuse, mottled but not resolved","简略描述":"F, S, dif, r"},{"ID":"10297","标识":"IC2457","M标识":"IC2457","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蟹座","星座(En)":"CNC","赤经(J2000)":"9h17m4.2s","赤经D(J2000)":"9.2845","赤纬(J2000)":"+20h5m37s","赤纬D(J2000)":"20.09361111111111","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"50","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"10298","标识":"IC2458","M标识":"IC2458","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"9h21m30.2s","赤经D(J2000)":"9.35838888888889","赤纬(J2000)":"+64h14m18s","赤纬D(J2000)":"64.23833333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"21","详细描述":"","简略描述":"eF, S, dif close to 2820"},{"ID":"10299","标识":"IC2459","M标识":"IC2459","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h18m59.4s","赤经D(J2000)":"9.316500000000001","赤纬(J2000)":"+34h51m46s","赤纬D(J2000)":"34.86277777777778","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"100","详细描述":"extremely faint, very small, difficult","简略描述":"eF, vS, diffic"},{"ID":"10300","标识":"IC2460","M标识":"IC2460","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h19m18.9s","赤经D(J2000)":"9.321916666666667","赤纬(J2000)":"+33h52m51s","赤纬D(J2000)":"33.880833333333335","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"6","详细描述":"faint, very small, extended east-west, stellar nucleus","简略描述":"F, vS, E pf, stell N"},{"ID":"10301","标识":"IC2461","M标识":"IC2461","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天猫座","星座(En)":"LYN","赤经(J2000)":"9h19m58s","赤经D(J2000)":"9.332777777777778","赤纬(J2000)":"+37h11m27s","赤纬D(J2000)":"37.19083333333333","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.3","短轴(分)":"0.4","方位角":"143","详细描述":"faint, very small, very little brighter middle","简略描述":"F, vS, vlbM"},{"ID":"10302","标识":"IC2462","M标识":"IC2462","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h22m56.3s","赤经D(J2000)":"9.382305555555556","赤纬(J2000)":"+22h41m10s","赤纬D(J2000)":"22.68611111111111","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"45","详细描述":"very faint, small, diffuse, mottled but not resolved","简略描述":"vF, S, dif, r"},{"ID":"10303","标识":"IC2463","M标识":"IC2463","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h23m0.2s","赤经D(J2000)":"9.383388888888888","赤纬(J2000)":"+22h37m9s","赤纬D(J2000)":"22.61916666666667","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"10304","标识":"IC2464","M标识":"IC2464","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h23m22.2s","赤经D(J2000)":"9.3895","赤纬(J2000)":"+22h37m49s","赤纬D(J2000)":"22.630277777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"","详细描述":"pretty faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"pF, S, R, gbM, r"},{"ID":"10305","标识":"IC2465","M标识":"IC2465","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h23m31.5s","赤经D(J2000)":"9.392083333333332","赤纬(J2000)":"+24h26m46s","赤纬D(J2000)":"24.44611111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"80","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"10306","标识":"IC2466","M标识":"IC2466","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h23m44.8s","赤经D(J2000)":"9.395777777777777","赤纬(J2000)":"+24h31m5s","赤纬D(J2000)":"24.518055555555556","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"","详细描述":"","简略描述":"vF, vS, dif, * 13.5 att"},{"ID":"10307","标识":"IC2467","M标识":"IC2467","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h24m52.7s","赤经D(J2000)":"9.41463888888889","赤纬(J2000)":"+38h21m6s","赤纬D(J2000)":"38.35166666666667","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, very small, round, gradually brighter middle and nucleus","简略描述":"F, vS, R, gbMN"},{"ID":"10308","标识":"IC2468","M标识":"IC2468","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h24m52.6s","赤经D(J2000)":"9.414611111111112","赤纬(J2000)":"+38h21m8s","赤纬D(J2000)":"38.352222222222224","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very small, round, suddenly brighter middle equal to 15th magnitude star","简略描述":"vS, R, sbM * 15"},{"ID":"10309","标识":"IC2469","M标识":"IC2469","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"罗盘座","星座(En)":"PYX","赤经(J2000)":"9h23m1.4s","赤经D(J2000)":"9.383722222222222","赤纬(J2000)":"-32h26m59s","赤纬D(J2000)":"-32.44972222222222","可见光星等V":"11.1","摄影(蓝光)星等B":"12","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"4.7","短轴(分)":"1","方位角":"36","详细描述":"","简略描述":"pF, cS, mE, * 10 sp nr"},{"ID":"10310","标识":"IC2470","M标识":"IC2470","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h25m41.2s","赤经D(J2000)":"9.42811111111111","赤纬(J2000)":"+23h21m41s","赤纬D(J2000)":"23.36138888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, pretty small, irregular figure, extended 135°, mottled but not resolved","简略描述":"F, pS, iF, E 135°, r"},{"ID":"10311","标识":"IC2471","M标识":"IC2471","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h25m12.2s","赤经D(J2000)":"9.420055555555555","赤纬(J2000)":"-6h49m48s","赤纬D(J2000)":"-6.83","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"141","详细描述":"","简略描述":"vF, 2 or 3 st in neb [?=2876]"},{"ID":"10312","标识":"IC2472","M标识":"IC2472","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h26m33.5s","赤经D(J2000)":"9.442638888888888","赤纬(J2000)":"+21h23m6s","赤纬D(J2000)":"21.384999999999998","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"5","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"10313","标识":"IC2473","M标识":"IC2473","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h27m23.4s","赤经D(J2000)":"9.4565","赤纬(J2000)":"+30h26m29s","赤纬D(J2000)":"30.441388888888888","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"18","详细描述":"faint, pretty small, round, gradually a little brighter middle","简略描述":"F, pS, R, glbM"},{"ID":"10314","标识":"IC2474","M标识":"IC2474","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h27m11.2s","赤经D(J2000)":"9.453111111111111","赤纬(J2000)":"+23h2m3s","赤纬D(J2000)":"23.034166666666668","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"95","详细描述":"","简略描述":"* 13 in vS neb, I.C. 538 f"},{"ID":"10315","标识":"IC2475","M标识":"IC2475","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h27m54.3s","赤经D(J2000)":"9.465083333333332","赤纬(J2000)":"+29h47m32s","赤纬D(J2000)":"29.792222222222225","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"105","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"10316","标识":"IC2476","M标识":"IC2476","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h27m52.8s","赤经D(J2000)":"9.464666666666666","赤纬(J2000)":"+29h59m9s","赤纬D(J2000)":"29.985833333333336","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"21","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"10317","标识":"IC2477","M标识":"IC2477","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h27m59.5s","赤经D(J2000)":"9.466527777777777","赤纬(J2000)":"+29h42m20s","赤纬D(J2000)":"29.705555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, gradually brighter middle, mottled but not resolved","简略描述":"F, S, gbM, r"},{"ID":"10318","标识":"IC2478","M标识":"IC2478","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h28m0.9s","赤经D(J2000)":"9.466916666666666","赤纬(J2000)":"+30h2m15s","赤纬D(J2000)":"30.0375","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, round, nuclear","简略描述":"F, S, R, N"},{"ID":"10319","标识":"IC2479","M标识":"IC2479","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h28m4.2s","赤经D(J2000)":"9.467833333333333","赤纬(J2000)":"+29h59m28s","赤纬D(J2000)":"29.991111111111113","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"160","详细描述":"faint, small, round, very little brighter middle","简略描述":"F, S, R, vlbM"},{"ID":"10320","标识":"IC2480","M标识":"IC2480","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a R","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h28m17.8s","赤经D(J2000)":"9.47161111111111","赤纬(J2000)":"+29h42m23s","赤纬D(J2000)":"29.70638888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"170","详细描述":"faint, very small, a little extended east-west, gradually brighter middle, mottled but not resolved","简略描述":"F, vS, lE pf, gbM, r"},{"ID":"10321","标识":"IC2481","M标识":"IC2481","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h27m28.8s","赤经D(J2000)":"9.457999999999998","赤纬(J2000)":"+3h55m45s","赤纬D(J2000)":"3.9291666666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"160","详细描述":"faint, small, extended 150°, gradually brighter middle, mottled but not resolved","简略描述":"F, S, E 150°, gbM, r"},{"ID":"10322","标识":"IC2482","M标识":"IC2482","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h26m59.2s","赤经D(J2000)":"9.449777777777777","赤纬(J2000)":"-12h6m30s","赤纬D(J2000)":"-12.108333333333333","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.3","短轴(分)":"1.6","方位角":"145","详细描述":"","简略描述":"F, vS, * 10 p 7s, 0'.8 n"},{"ID":"10323","标识":"IC2483","M标识":"IC2483","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h29m25.7s","赤经D(J2000)":"9.490472222222222","赤纬(J2000)":"+30h59m40s","赤纬D(J2000)":"30.994444444444447","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"100","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"10324","标识":"IC2484","M标识":"IC2484","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"9h26m50.3s","赤经D(J2000)":"9.447305555555555","赤纬(J2000)":"-42h50m33s","赤纬D(J2000)":"-42.8425","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, round, 7th magnitude star to northeast, double star to west","简略描述":"pB, S, R, * 7 nf, D * p"},{"ID":"10325","标识":"IC2485","M标识":"IC2485","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h27m11.8s","赤经D(J2000)":"9.453277777777776","赤纬(J2000)":"-39h17m5s","赤纬D(J2000)":"-39.28472222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, vS, R, st in neb, susp"},{"ID":"10326","标识":"IC2486","M标识":"IC2486","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h30m17.4s","赤经D(J2000)":"9.504833333333334","赤纬(J2000)":"+26h38m28s","赤纬D(J2000)":"26.641111111111112","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"129","详细描述":"very faint, considerably small, diffuse","简略描述":"vF, cS, dif"},{"ID":"10327","标识":"IC2487","M标识":"IC2487","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h30m9s","赤经D(J2000)":"9.5025","赤纬(J2000)":"+20h5m24s","赤纬D(J2000)":"20.09","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"0.4","方位角":"164","详细描述":"faint, large, much extended 160°","简略描述":"F, L, mE 160°"},{"ID":"10328","标识":"IC2488","M标识":"IC2488","拓展名":"","组件":"","Class":"","业余排名":"4","中文名":"珍珠串星团","类型":"OCL","含重复类型":"OCL","形态":"II2m","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"9h27m27s","赤经D(J2000)":"9.4575","赤纬(J2000)":"-56h57m24s","赤纬D(J2000)":"-56.95666666666667","可见光星等V":"7.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"18","短轴(分)":"","方位角":"","详细描述":"cluster, coarse","简略描述":"Cl, co"},{"ID":"10329","标识":"IC2489","M标识":"IC2489","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h30m36.6s","赤经D(J2000)":"9.510166666666667","赤纬(J2000)":"-5h53m13s","赤纬D(J2000)":"-5.886944444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, round","简略描述":"pF, R"},{"ID":"10330","标识":"IC2490","M标识":"IC2490","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h33m3.7s","赤经D(J2000)":"9.551027777777778","赤纬(J2000)":"+29h55m43s","赤纬D(J2000)":"29.928611111111113","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"1","方位角":"175","详细描述":"faint, small, gradually brighter middle","简略描述":"F, S, gbM"},{"ID":"10331","标识":"IC2491","M标识":"IC2491","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h35m14.2s","赤经D(J2000)":"9.587277777777778","赤纬(J2000)":"+34h43m56s","赤纬D(J2000)":"34.73222222222223","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"75","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"10332","标识":"IC2492","M标识":"IC2492","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h33m14.8s","赤经D(J2000)":"9.554111111111112","赤纬(J2000)":"-37h52m0s","赤纬D(J2000)":"-37.86666666666667","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"43","详细描述":"","简略描述":"cF, vS, R, B * 1' np, susp"},{"ID":"10333","标识":"IC2493","M标识":"IC2493","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h36m17.5s","赤经D(J2000)":"9.604861111111111","赤纬(J2000)":"+37h21m52s","赤纬D(J2000)":"37.364444444444445","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"0","详细描述":"faint, very small, stellar","简略描述":"F, vS, stell"},{"ID":"10334","标识":"IC2494","M标识":"IC2494","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h36m5.8s","赤经D(J2000)":"9.601611111111112","赤纬(J2000)":"-12h26m12s","赤纬D(J2000)":"-12.436666666666667","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"25","详细描述":"","简略描述":"pB, pL, R, 2 st nr f"},{"ID":"10335","标识":"IC2495","M标识":"IC2495","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h38m7.4s","赤经D(J2000)":"9.635388888888889","赤纬(J2000)":"+28h3m29s","赤纬D(J2000)":"28.058055555555555","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"15","详细描述":"faint, considerably small, round, gradually brighter middle and nucleus","简略描述":"F, cS, R, gbMN"},{"ID":"10336","标识":"IC2496","M标识":"IC2496","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h38m44.5s","赤经D(J2000)":"9.645694444444445","赤纬(J2000)":"+34h43m36s","赤纬D(J2000)":"34.72666666666667","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"25","详细描述":"faint, very small, round, mottled but not resolved","简略描述":"F, vS, R, r"},{"ID":"10337","标识":"IC2497","M标识":"IC2497","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h41m4s","赤经D(J2000)":"9.684444444444445","赤纬(J2000)":"+34h44m1s","赤纬D(J2000)":"34.73361111111111","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"110","详细描述":"very faint, very small, round, mottled but not resolved","简略描述":"vF, vS, R, r"},{"ID":"10338","标识":"IC2498","M标识":"IC2498","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h41m21.9s","赤经D(J2000)":"9.689416666666666","赤纬(J2000)":"+28h6m52s","赤纬D(J2000)":"28.114444444444445","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"20","详细描述":"faint, small, extended north-south, mottled but not resolved, prehaps binuclear","简略描述":"F, S, E ns, r, ? biN"},{"ID":"10339","标识":"IC2499","M标识":"IC2499","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h41m24.5s","赤经D(J2000)":"9.690138888888889","赤纬(J2000)":"+27h53m45s","赤纬D(J2000)":"27.895833333333332","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"120","详细描述":"faint, very small, diffuse, very difficult","简略描述":"F, vS, dif, v diffic"},{"ID":"10340","标识":"IC2500","M标识":"IC2500","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h42m23.3s","赤经D(J2000)":"9.70647222222222","赤纬(J2000)":"+36h20m57s","赤纬D(J2000)":"36.34916666666667","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"165","详细描述":"very faint, pretty small, round, much brighter middle","简略描述":"vF, pS, R, mbM"},{"ID":"10341","标识":"IC2501","M标识":"IC2501","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"9h38m47.3s","赤经D(J2000)":"9.646472222222222","赤纬(J2000)":"-60h5m29s","赤纬D(J2000)":"-60.09138888888889","可见光星等V":"10.4","摄影(蓝光)星等B":"11.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.03","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stell"},{"ID":"10342","标识":"IC2502","M标识":"IC2502","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h43m15.4s","赤经D(J2000)":"9.720944444444445","赤纬(J2000)":"+35h9m38s","赤纬D(J2000)":"35.160555555555554","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, round, gradually brighter middle, difficult","简略描述":"F, S, R, gbM, diffic"},{"ID":"10343","标识":"IC2503","M标识":"IC2503","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h43m15.9s","赤经D(J2000)":"9.721083333333333","赤纬(J2000)":"+35h12m23s","赤纬D(J2000)":"35.20638888888889","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"105","详细描述":"very faint, very small, diffuse, very difficult","简略描述":"vF, vS, dif, v diffic"},{"ID":"10344","标识":"IC2504","M标识":"IC2504","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"9h38m33s","赤经D(J2000)":"9.6425","赤纬(J2000)":"-69h5m6s","赤纬D(J2000)":"-69.085","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, extremely extended 170°, a little brighter middle, suspected","简略描述":"eF, vS, eE 170°, lbM, susp"},{"ID":"10345","标识":"IC2505","M标识":"IC2505","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h45m6.9s","赤经D(J2000)":"9.751916666666666","赤纬(J2000)":"+27h16m9s","赤纬D(J2000)":"27.269166666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"1","短轴(分)":"0.9","方位角":"143","详细描述":"faint, small, round, very little brighter middle","简略描述":"F, S, R, vlbM"},{"ID":"10346","标识":"IC2506","M标识":"IC2506","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h45m12.7s","赤经D(J2000)":"9.753527777777778","赤纬(J2000)":"+27h15m9s","赤纬D(J2000)":"27.2525","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"119","详细描述":"faint, small, round, gradually a little brighter middle, mottled but not resolved","简略描述":"F, S, R, glbM, r"},{"ID":"10347","标识":"IC2507","M标识":"IC2507","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h44m33.6s","赤经D(J2000)":"9.742666666666667","赤纬(J2000)":"-31h47m26s","赤纬D(J2000)":"-31.790555555555557","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"43","详细描述":"","简略描述":"vF, S, R, * 12.5 nr nf, * 9 np"},{"ID":"10348","标识":"IC2508","M标识":"IC2508","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h47m7s","赤经D(J2000)":"9.785277777777777","赤纬(J2000)":"+33h30m31s","赤纬D(J2000)":"33.50861111111111","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"10","详细描述":"faint, very small, round, diffuse, mottled but not resolved","简略描述":"F, vS, R, dif, r"},{"ID":"10349","标识":"IC2509","M标识":"IC2509","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"9h46m55.9s","赤经D(J2000)":"9.782194444444444","赤纬(J2000)":"+5h42m8s","赤纬D(J2000)":"5.702222222222223","可见光星等V":"99","摄影(蓝光)星等B":"15.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, possibly nebulous","简略描述":"eF, neb ?"},{"ID":"10350","标识":"IC2510","M标识":"IC2510","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h47m43.5s","赤经D(J2000)":"9.795416666666666","赤纬(J2000)":"-32h50m16s","赤纬D(J2000)":"-32.83777777777778","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"148","详细描述":"extremely faint, very small, considerably extended 140°, brighter middle, suspected","简略描述":"eF, vS, cE 140°, bM, susp"},{"ID":"10351","标识":"IC2511","M标识":"IC2511","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h49m24.2s","赤经D(J2000)":"9.82338888888889","赤纬(J2000)":"-32h50m21s","赤纬D(J2000)":"-32.83916666666667","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.9","短轴(分)":"0.6","方位角":"38","详细描述":"pretty bright, pretty small, extremely extended, 7th magnitude star to northwest, northwestern of 2","简略描述":"pB, pS, eE, * 7 np, np of 2"},{"ID":"10352","标识":"IC2512","M标识":"IC2512","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h49m24.2s","赤经D(J2000)":"9.82338888888889","赤纬(J2000)":"-32h50m21s","赤纬D(J2000)":"-32.83916666666667","可见光星等V":"12.1","摄影(蓝光)星等B":"12.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.9","短轴(分)":"0.6","方位角":"38","详细描述":"most extremely faint, pretty small, much extended, between 2 stars, southeastern of 2","简略描述":"eeF, pS, mE, bet 2 st, sf of 2"},{"ID":"10353","标识":"IC2513","M标识":"IC2513","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sab","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h50m0.6s","赤经D(J2000)":"9.8335","赤纬(J2000)":"-32h53m2s","赤纬D(J2000)":"-32.88388888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3","短轴(分)":"0.6","方位角":"61","详细描述":"","简略描述":"eeF, eS, R, D * nr sf, sp of 2"},{"ID":"10354","标识":"IC2514","M标识":"IC2514","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h50m0.6s","赤经D(J2000)":"9.8335","赤纬(J2000)":"-32h53m2s","赤纬D(J2000)":"-32.88388888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"3","短轴(分)":"0.6","方位角":"61","详细描述":"","简略描述":"eeF, eS, 3 F st nr f, nf of 2"},{"ID":"10355","标识":"IC2515","M标识":"IC2515","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h54m39.4s","赤经D(J2000)":"9.910944444444445","赤纬(J2000)":"+37h24m30s","赤纬D(J2000)":"37.40833333333333","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"173","详细描述":"faint, considerably small, extended north-south, mottled but not resolved, possibly binuclear","简略描述":"F, cS, E ns, r, biN ?"},{"ID":"10356","标识":"IC2516","M标识":"IC2516","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h54m48.3s","赤经D(J2000)":"9.913416666666667","赤纬(J2000)":"+37h41m15s","赤纬D(J2000)":"37.6875","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.8","方位角":"18","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"10357","标识":"IC2517","M标识":"IC2517","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0 R","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h52m50.7s","赤经D(J2000)":"9.88075","赤纬(J2000)":"-33h44m31s","赤纬D(J2000)":"-33.74194444444444","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"100","详细描述":"most extremely faint, small, round, suspected","简略描述":"eeF, S, R, susp"},{"ID":"10358","标识":"IC2518","M标识":"IC2518","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h55m58.5s","赤经D(J2000)":"9.932916666666666","赤纬(J2000)":"+37h9m22s","赤纬D(J2000)":"37.15611111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"90","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"10359","标识":"IC2519","M标识":"IC2519","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h55m58.8s","赤经D(J2000)":"9.933","赤纬(J2000)":"+34h2m11s","赤纬D(J2000)":"34.03638888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"faint, very small, round, diffuse","简略描述":"F, vS, R, dif"},{"ID":"10360","标识":"IC2520","M标识":"IC2520","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"9h56m20.3s","赤经D(J2000)":"9.938972222222223","赤纬(J2000)":"+27h13m39s","赤纬D(J2000)":"27.2275","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"90","详细描述":"faint, very small, round, gradually brighter middle and nucleus, mottled but not resolved","简略描述":"F, vS, R, gbMN, r"},{"ID":"10361","标识":"IC2521","M标识":"IC2521","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h57m15.7s","赤经D(J2000)":"9.95436111111111","赤纬(J2000)":"+33h58m37s","赤纬D(J2000)":"33.97694444444445","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"10362","标识":"IC2522","M标识":"IC2522","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h55m8.9s","赤经D(J2000)":"9.919138888888888","赤纬(J2000)":"-33h8m13s","赤纬D(J2000)":"-33.136944444444445","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.8","短轴(分)":"1.9","方位角":"171","详细描述":"","简略描述":"vF, cL, R, * 8 n, susp"},{"ID":"10363","标识":"IC2523","M标识":"IC2523","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h55m9.4s","赤经D(J2000)":"9.919277777777777","赤纬(J2000)":"-33h12m40s","赤纬D(J2000)":"-33.211111111111116","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"25","详细描述":"very faint, very small, considerably extended 20°, suspected","简略描述":"vF, vS, cE 20°, susp"},{"ID":"10364","标识":"IC2524","M标识":"IC2524","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h57m32.9s","赤经D(J2000)":"9.959138888888889","赤纬(J2000)":"+33h37m13s","赤纬D(J2000)":"33.62027777777778","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"63","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"10365","标识":"IC2525","M标识":"IC2525","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"9h58m24.9s","赤经D(J2000)":"9.973583333333334","赤纬(J2000)":"+37h6m9s","赤纬D(J2000)":"37.1025","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"10366","标识":"IC2526","M标识":"IC2526","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h57m2.9s","赤经D(J2000)":"9.950805555555554","赤纬(J2000)":"-32h15m25s","赤纬D(J2000)":"-32.25694444444444","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.1","短轴(分)":"0.7","方位角":"55","详细描述":"","简略描述":"vF, S, R, * 7.5 nf"},{"ID":"10367","标识":"IC2527","M标识":"IC2527","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h0m6.5s","赤经D(J2000)":"10.001805555555556","赤纬(J2000)":"+38h10m22s","赤纬D(J2000)":"38.172777777777775","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, round, nuclear","简略描述":"F, vS, R, N"},{"ID":"10368","标识":"IC2528","M标识":"IC2528","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab\/P","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h59m6.1s","赤经D(J2000)":"9.985027777777777","赤纬(J2000)":"-27h7m42s","赤纬D(J2000)":"-27.128333333333334","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"2","详细描述":"","简略描述":"eeF, eS, R, v diffic, eF D * s"},{"ID":"10369","标识":"IC2529","M标识":"IC2529","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"9h59m29.5s","赤经D(J2000)":"9.991527777777778","赤纬(J2000)":"-22h49m34s","赤纬D(J2000)":"-22.82611111111111","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"1.8","方位角":"74","详细描述":"","简略描述":"eeF, eS, eF * att"},{"ID":"10370","标识":"IC2530","M标识":"IC2530","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h1m31s","赤经D(J2000)":"10.025277777777779","赤纬(J2000)":"+37h12m16s","赤纬D(J2000)":"37.20444444444445","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, very small, stellar","简略描述":"F, vS, stell"},{"ID":"10371","标识":"IC2531","M标识":"IC2531","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"9h59m55.7s","赤经D(J2000)":"9.998805555555554","赤纬(J2000)":"-29h37m4s","赤纬D(J2000)":"-29.61777777777778","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"6.9","短轴(分)":"0.6","方位角":"75","详细描述":"","简略描述":"eeF, pS, cE, 4 st n, nf, D * np"},{"ID":"10372","标识":"IC2532","M标识":"IC2532","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h0m5.4s","赤经D(J2000)":"10.0015","赤纬(J2000)":"-34h13m42s","赤纬D(J2000)":"-34.22833333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1","方位角":"38","详细描述":"considerably bright, small, stellar nucleus","简略描述":"cB, S, stell N"},{"ID":"10373","标识":"IC2533","M标识":"IC2533","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h0m31.5s","赤经D(J2000)":"10.00875","赤纬(J2000)":"-31h14m42s","赤纬D(J2000)":"-31.245","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.8","短轴(分)":"1.3","方位角":"1","详细描述":"considerably bright, small, round","简略描述":"cB, S, R"},{"ID":"10374","标识":"IC2534","M标识":"IC2534","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h1m29.8s","赤经D(J2000)":"10.024944444444445","赤纬(J2000)":"-34h6m45s","赤纬D(J2000)":"-34.112500000000004","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"1","短轴(分)":"0.6","方位角":"88","详细描述":"considerably bright, small, round","简略描述":"cB, S, R"},{"ID":"10375","标识":"IC2535","M标识":"IC2535","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h4m31.7s","赤经D(J2000)":"10.075472222222222","赤纬(J2000)":"+38h0m24s","赤纬D(J2000)":"38.00666666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"90","详细描述":"pretty bright, pretty small, extended 110°, gradually brighter middle, mottled but not resolved","简略描述":"pB, pS, E 110°, gbM, r"},{"ID":"10376","标识":"IC2536","M标识":"IC2536","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h3m30s","赤经D(J2000)":"10.058333333333334","赤纬(J2000)":"-33h57m1s","赤纬D(J2000)":"-33.95027777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"45","详细描述":"faint, small, extended 50°, considerably brighter middle","简略描述":"F, S, E 50°, cbM"},{"ID":"10377","标识":"IC2537","M标识":"IC2537","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h3m51.8s","赤经D(J2000)":"10.064388888888889","赤纬(J2000)":"-27h34m17s","赤纬D(J2000)":"-27.57138888888889","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.5","短轴(分)":"1.7","方位角":"26","详细描述":"most extremely faint, large, considerably extended","简略描述":"eeF, L, cE"},{"ID":"10378","标识":"IC2538","M标识":"IC2538","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h3m56.6s","赤经D(J2000)":"10.065722222222224","赤纬(J2000)":"-34h48m26s","赤纬D(J2000)":"-34.80722222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"1","详细描述":"very faint, very small, round, considerably brighter middle","简略描述":"vF, vS, R, cbM"},{"ID":"10379","标识":"IC2539","M标识":"IC2539","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h4m16s","赤经D(J2000)":"10.071111111111112","赤纬(J2000)":"-31h21m45s","赤纬D(J2000)":"-31.3625","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.9","短轴(分)":"0.5","方位角":"25","详细描述":"considerably faint, very small, considerably extended 30°, very much brighter middle","简略描述":"cF, vS, cE 30°, vmbM"},{"ID":"10380","标识":"IC2540","M标识":"IC2540","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h6m46.7s","赤经D(J2000)":"10.112972222222222","赤纬(J2000)":"+31h28m34s","赤纬D(J2000)":"31.47611111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1","短轴(分)":"0.8","方位角":"","详细描述":"faint, very small, round, gradually brighter middle and nucleus","简略描述":"F, vS, R, gbMN"},{"ID":"10381","标识":"IC2541","M标识":"IC2541","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h5m48s","赤经D(J2000)":"10.096666666666668","赤纬(J2000)":"-17h26m6s","赤纬D(J2000)":"-17.435","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"5","详细描述":"faint, extremely extended 15°, very much brighter middle","简略描述":"F, eE 5°, vmbM"},{"ID":"10382","标识":"IC2542","M标识":"IC2542","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h7m50.5s","赤经D(J2000)":"10.130694444444446","赤纬(J2000)":"+34h18m55s","赤纬D(J2000)":"34.31527777777777","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"177","详细描述":"faint, pretty small, gradually a little brighter middle","简略描述":"F, pS, glbM"},{"ID":"10383","标识":"IC2543","M标识":"IC2543","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h8m23.5s","赤经D(J2000)":"10.139861111111111","赤纬(J2000)":"+37h50m27s","赤纬D(J2000)":"37.840833333333336","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"130","详细描述":"faint, small, round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"10384","标识":"IC2544","M标识":"IC2544","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h8m29.6s","赤经D(J2000)":"10.141555555555556","赤纬(J2000)":"+33h20m46s","赤纬D(J2000)":"33.346111111111114","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"10385","标识":"IC2545","M标识":"IC2545","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h6m36s","赤经D(J2000)":"10.11","赤纬(J2000)":"-33h51m18s","赤纬D(J2000)":"-33.855000000000004","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, considerably extended 25°, in a triangle with 2 stars","简略描述":"eF, eS, cE 25°, Δ 2 st"},{"ID":"10386","标识":"IC2546","M标识":"IC2546","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h7m5s","赤经D(J2000)":"10.118055555555555","赤纬(J2000)":"-33h15m43s","赤纬D(J2000)":"-33.261944444444445","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"96","详细描述":"very faint, very small, round, between 2 stars","简略描述":"vF, vS, R, bet 2 st"},{"ID":"10387","标识":"IC2547","M标识":"IC2547","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h10m4.5s","赤经D(J2000)":"10.167916666666667","赤纬(J2000)":"+36h30m11s","赤纬D(J2000)":"36.503055555555555","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"125","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"10388","标识":"IC2548","M标识":"IC2548","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h7m54.9s","赤经D(J2000)":"10.131916666666667","赤纬(J2000)":"-35h13m47s","赤纬D(J2000)":"-35.22972222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.9","短轴(分)":"1.7","方位角":"65","详细描述":"extremely faint, very small, round, brighter middle, diffuse","简略描述":"eF, vS, R, bM, dif"},{"ID":"10389","标识":"IC2549","M标识":"IC2549","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h10m10.1s","赤经D(J2000)":"10.169472222222222","赤纬(J2000)":"+36h27m55s","赤纬D(J2000)":"36.46527777777778","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"faint, small, round, gradually a very little brighter middle","简略描述":"F, S, R, gvlbM"},{"ID":"10390","标识":"IC2550","M标识":"IC2550","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h10m27.9s","赤经D(J2000)":"10.174416666666666","赤纬(J2000)":"+27h57m21s","赤纬D(J2000)":"27.95583333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.8","方位角":"135","详细描述":"faint, considerably small, round, diffuse","简略描述":"F, cS, R, dif"},{"ID":"10391","标识":"IC2551","M标识":"IC2551","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h10m40.3s","赤经D(J2000)":"10.17786111111111","赤纬(J2000)":"+24h24m53s","赤纬D(J2000)":"24.41472222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.8","方位角":"33","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"10392","标识":"IC2552","M标识":"IC2552","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h10m46.1s","赤经D(J2000)":"10.179472222222222","赤纬(J2000)":"-34h50m40s","赤纬D(J2000)":"-34.84444444444445","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1.5","方位角":"96","详细描述":"considerably bright, small, round, brighter middle","简略描述":"cB, S, R, bM"},{"ID":"10393","标识":"IC2553","M标识":"IC2553","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"10h9m20.9s","赤经D(J2000)":"10.155805555555556","赤纬(J2000)":"-62h36m47s","赤纬D(J2000)":"-62.613055555555555","可见光星等V":"10.3","摄影(蓝光)星等B":"13","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.15","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"10394","标识":"IC2554","M标识":"IC2554","拓展名":"A","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"10h8m50.5s","赤经D(J2000)":"10.147361111111111","赤纬(J2000)":"-67h1m54s","赤纬D(J2000)":"-67.03166666666667","可见光星等V":"11.8","摄影(蓝光)星等B":"12.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3","短轴(分)":"1.2","方位角":"175","详细描述":"considerably faint, small, considerably extended 10°, nuclear, spiral","简略描述":"cF, S, cE 10°, N, spir"},{"ID":"10395","标识":"IC2555","M标识":"IC2555","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h11m42.4s","赤经D(J2000)":"10.195111111111112","赤纬(J2000)":"-31h38m34s","赤纬D(J2000)":"-31.642777777777777","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.5","短轴(分)":"0.5","方位角":"38","详细描述":"extremely faint, very small, extremely extended 45°, considerably brighter middle","简略描述":"eF, vS, eE 45°, cbM"},{"ID":"10396","标识":"IC2556","M标识":"IC2556","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h12m37.5s","赤经D(J2000)":"10.210416666666665","赤纬(J2000)":"-34h43m42s","赤纬D(J2000)":"-34.72833333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2","短轴(分)":"1","方位角":"108","详细描述":"extremely faint, small, stellar nucleus","简略描述":"eF, S, stell N"},{"ID":"10397","标识":"IC2557","M标识":"IC2557","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h16m5.8s","赤经D(J2000)":"10.26827777777778","赤纬(J2000)":"+38h6m30s","赤纬D(J2000)":"38.108333333333334","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"93","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"10398","标识":"IC2558","M标识":"IC2558","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h14m44.4s","赤经D(J2000)":"10.245666666666667","赤纬(J2000)":"-34h20m13s","赤纬D(J2000)":"-34.33694444444445","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"13","详细描述":"considerably faint, very small, considerably extended 10°, considerably brighter middle","简略描述":"cF, vS, cE 10°, cbM"},{"ID":"10399","标识":"IC2559","M标识":"IC2559","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h14m45.3s","赤经D(J2000)":"10.245916666666666","赤纬(J2000)":"-34h3m31s","赤纬D(J2000)":"-34.058611111111105","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"0.7","方位角":"18","详细描述":"extremely faint, small, a little extended 10°, considerably brighter middle","简略描述":"eF, S, lE 10°, cbM"},{"ID":"10400","标识":"IC2560","M标识":"IC2560","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h16m18.6s","赤经D(J2000)":"10.271833333333333","赤纬(J2000)":"-33h33m48s","赤纬D(J2000)":"-33.56333333333333","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.1","短轴(分)":"2","方位角":"45","详细描述":"extremely faint, pretty small, among 4 stars","简略描述":"eF, pS, am 4 st"},{"ID":"10401","标识":"IC2561","M标识":"IC2561","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h19m8.5s","赤经D(J2000)":"10.319027777777778","赤纬(J2000)":"+34h40m28s","赤纬D(J2000)":"34.67444444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"14","详细描述":"faint, small, extended 200°, gradually brighter middle","简略描述":"F, S, E 200°, gbM"},{"ID":"10402","标识":"IC2562","M标识":"IC2562","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h18m54.4s","赤经D(J2000)":"10.315111111111111","赤纬(J2000)":"+16h9m18s","赤纬D(J2000)":"16.154999999999998","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"170","详细描述":"faint, small, gradually brighter middle, diffuse","简略描述":"F, S, gbM, dif"},{"ID":"10403","标识":"IC2563","M标识":"IC2563","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd\/P","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h18m51.9s","赤经D(J2000)":"10.314416666666668","赤纬(J2000)":"-32h35m48s","赤纬D(J2000)":"-32.59666666666667","可见光星等V":"15","摄影(蓝光)星等B":"15.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"106","详细描述":"","简略描述":"eF, vS, eE 110°, eF * s"},{"ID":"10404","标识":"IC2564","M标识":"IC2564","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h21m27.6s","赤经D(J2000)":"10.357666666666667","赤纬(J2000)":"+36h27m9s","赤纬D(J2000)":"36.4525","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, round, gradually brighter middle and stellar nucleus","简略描述":"F, S, R, gbM stell N"},{"ID":"10405","标识":"IC2565","M标识":"IC2565","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h21m17.9s","赤经D(J2000)":"10.354972222222221","赤纬(J2000)":"+27h55m48s","赤纬D(J2000)":"27.93","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"80","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"10406","标识":"IC2566","M标识":"IC2566","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h22m19.4s","赤经D(J2000)":"10.372055555555557","赤纬(J2000)":"+36h35m0s","赤纬D(J2000)":"36.583333333333336","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"3","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"10407","标识":"IC2567","M标识":"IC2567","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h21m57.9s","赤经D(J2000)":"10.366083333333332","赤纬(J2000)":"+24h39m19s","赤纬D(J2000)":"24.655277777777776","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"","详细描述":"faint, very small, round, mottled but not resolved","简略描述":"F, vS, R, r"},{"ID":"10408","标识":"IC2568","M标识":"IC2568","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h22m30s","赤经D(J2000)":"10.375","赤纬(J2000)":"+36h35m59s","赤纬D(J2000)":"36.599722222222226","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"98","详细描述":"faint, small, round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"10409","标识":"IC2569","M标识":"IC2569","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h22m53.5s","赤经D(J2000)":"10.381527777777778","赤纬(J2000)":"+24h36m25s","赤纬D(J2000)":"24.606944444444444","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"round, very small, round, stellar","简略描述":"R, vS, R, stell"},{"ID":"10410","标识":"IC2570","M标识":"IC2570","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h21m34.3s","赤经D(J2000)":"10.359527777777778","赤纬(J2000)":"-33h37m24s","赤纬D(J2000)":"-33.623333333333335","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"165","详细描述":"extremely faint, extremely small, much extended 150°, 3 stars to southeast","简略描述":"eF, eS, mE 150°, 3 st sf"},{"ID":"10411","标识":"IC2571","M标识":"IC2571","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h21m34.8s","赤经D(J2000)":"10.359666666666666","赤纬(J2000)":"-34h16m1s","赤纬D(J2000)":"-34.26694444444444","可见光星等V":"11","摄影(蓝光)星等B":"11.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"4.1","短轴(分)":"2.7","方位角":"135","详细描述":"","简略描述":"vF, cS, R, mbM, * 9 f 9s "},{"ID":"10412","标识":"IC2572","M标识":"IC2572","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa R","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h25m7.2s","赤经D(J2000)":"10.418666666666667","赤纬(J2000)":"+28h5m39s","赤纬D(J2000)":"28.094166666666666","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"27","详细描述":"pretty faint, small, irregular figure","简略描述":"pF, S, iF"},{"ID":"10413","标识":"IC2573","M标识":"IC2573","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h23m30.2s","赤经D(J2000)":"10.391722222222223","赤纬(J2000)":"-35h27m23s","赤纬D(J2000)":"-35.45638888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"2","详细描述":"extremely faint, very small, extremely extended 0°","简略描述":"eF, vS, eE 0°"},{"ID":"10414","标识":"IC2574","M标识":"IC2574","拓展名":"","组件":"","Class":"","业余排名":"11","中文名":"柯丁顿星云","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h28m22.4s","赤经D(J2000)":"10.472888888888889","赤纬(J2000)":"+68h25m0s","赤纬D(J2000)":"68.41666666666667","可见光星等V":"10.4","摄影(蓝光)星等B":"10.8","B-V":"0.4","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"13.2","短轴(分)":"5.4","方位角":"41","详细描述":"very faint, very large, irregular figure","简略描述":"vF, vL, iF"},{"ID":"10415","标识":"IC2575","M标识":"IC2575","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h25m24s","赤经D(J2000)":"10.423333333333332","赤纬(J2000)":"-32h38m10s","赤纬D(J2000)":"-32.63611111111111","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"120","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"10416","标识":"IC2576","M标识":"IC2576","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h25m58.9s","赤经D(J2000)":"10.433027777777777","赤纬(J2000)":"-32h54m13s","赤纬D(J2000)":"-32.90361111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"48","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"10417","标识":"IC2577","M标识":"IC2577","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h28m1.4s","赤经D(J2000)":"10.467055555555556","赤纬(J2000)":"+32h45m48s","赤纬D(J2000)":"32.763333333333335","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"102","详细描述":"faint, considerably small, mottled but not resolved, 12th magnitude star near","简略描述":"F, cS, r, * 12 nr"},{"ID":"10418","标识":"IC2578","M标识":"IC2578","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h27m22.7s","赤经D(J2000)":"10.456305555555554","赤纬(J2000)":"-33h52m42s","赤纬D(J2000)":"-33.87833333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.3","方位角":"141","详细描述":"","简略描述":"eF, vS, eE 135°"},{"ID":"10419","标识":"IC2579","M标识":"IC2579","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h29m16.5s","赤经D(J2000)":"10.487916666666665","赤纬(J2000)":"+26h5m56s","赤纬D(J2000)":"26.098888888888887","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2","短轴(分)":"0.4","方位角":"55","详细描述":"","简略描述":"pB, pL, E 260°, bM [? 3251]"},{"ID":"10420","标识":"IC2580","M标识":"IC2580","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h28m17.7s","赤经D(J2000)":"10.471583333333333","赤纬(J2000)":"-31h31m4s","赤纬D(J2000)":"-31.517777777777777","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.9","短轴(分)":"1.7","方位角":"154","详细描述":"considerably bright, small, brighter middle","简略描述":"cB, S, bM"},{"ID":"10421","标识":"IC2581","M标识":"IC2581","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I3m","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"10h27m26.1s","赤经D(J2000)":"10.45725","赤纬(J2000)":"-57h37m32s","赤纬D(J2000)":"-57.62555555555556","可见光星等V":"4.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Cl, around * 5.4 mag"},{"ID":"10422","标识":"IC2582","M标识":"IC2582","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h29m11.2s","赤经D(J2000)":"10.486444444444444","赤纬(J2000)":"-30h20m34s","赤纬D(J2000)":"-30.342777777777776","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"19","详细描述":"","简略描述":"bM, indistinct (corner of plate)"},{"ID":"10423","标识":"IC2583","M标识":"IC2583","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h31m10.5s","赤经D(J2000)":"10.519583333333333","赤纬(J2000)":"+26h3m17s","赤纬D(J2000)":"26.054722222222225","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"110","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"10424","标识":"IC2584","M标识":"IC2584","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h29m51.4s","赤经D(J2000)":"10.49761111111111","赤纬(J2000)":"-34h54m42s","赤纬D(J2000)":"-34.91166666666666","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.5","短轴(分)":"0.3","方位角":"133","详细描述":"considerably bright, brighter middle","简略描述":"cB, bM"},{"ID":"10425","标识":"IC2585","M标识":"IC2585","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h30m26.5s","赤经D(J2000)":"10.507361111111111","赤纬(J2000)":"-35h21m36s","赤纬D(J2000)":"-35.36","可见光星等V":"11.8","摄影(蓝光)星等B":"12.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.3","短轴(分)":"1.8","方位角":"106","详细描述":"considerably bright, brighter middle","简略描述":"cB, bM"},{"ID":"10426","标识":"IC2586","M标识":"IC2586","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h31m2.3s","赤经D(J2000)":"10.517305555555556","赤纬(J2000)":"-28h43m1s","赤纬D(J2000)":"-28.716944444444444","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"79","详细描述":"","简略描述":"pF, vS, R, 4 st nr sp"},{"ID":"10427","标识":"IC2587","M标识":"IC2587","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h30m59.5s","赤经D(J2000)":"10.516527777777778","赤纬(J2000)":"-34h33m46s","赤纬D(J2000)":"-34.562777777777775","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"1.5","方位角":"26","详细描述":"considerably bright, brighter middle","简略描述":"cB, bM"},{"ID":"10428","标识":"IC2588","M标识":"IC2588","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"唧筒座","星座(En)":"ANT","赤经(J2000)":"10h31m50.1s","赤经D(J2000)":"10.530583333333334","赤纬(J2000)":"-30h23m2s","赤纬D(J2000)":"-30.383888888888887","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"141","详细描述":"","简略描述":"eeF, pL, R, D * nr sf"},{"ID":"10429","标识":"IC2589","M标识":"IC2589","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h32m20.7s","赤经D(J2000)":"10.539083333333334","赤纬(J2000)":"-24h2m14s","赤纬D(J2000)":"-24.037222222222223","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"12","详细描述":"","简略描述":"eeF, eS, v diffic, * 13 sf, * 9 p 1'"},{"ID":"10430","标识":"IC2590","M标识":"IC2590","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h36m16.5s","赤经D(J2000)":"10.604583333333332","赤纬(J2000)":"+26h57m46s","赤纬D(J2000)":"26.962777777777777","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"faint, small, round, gradually brighter middle, 12th magnitude star close","简略描述":"F, S, R, gbM, * 12 close"},{"ID":"10431","标识":"IC2591","M标识":"IC2591","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h36m38.6s","赤经D(J2000)":"10.610722222222222","赤纬(J2000)":"+35h3m12s","赤纬D(J2000)":"35.05333333333333","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"128","详细描述":"faint, considerably small, extended 200°","简略描述":"F, cS, E 200°"},{"ID":"10432","标识":"IC2592","M标识":"IC2592","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"船帆座","星座(En)":"VEL","赤经(J2000)":"10h35m8.1s","赤经D(J2000)":"10.585583333333334","赤纬(J2000)":"-43h41m37s","赤纬D(J2000)":"-43.69361111111111","可见光星等V":"11.3","摄影(蓝光)星等B":"12","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.8","短轴(分)":"0.8","方位角":"37","详细描述":"","简略描述":"F, pL, cE 15°, spir ?"},{"ID":"10433","标识":"IC2593","M标识":"IC2593","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h36m15.9s","赤经D(J2000)":"10.604416666666665","赤纬(J2000)":"-12h43m31s","赤纬D(J2000)":"-12.725277777777778","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"90","详细描述":"extremely faint, considerably small, perhaps a star","简略描述":"eF, cS, ? *"},{"ID":"10434","标识":"IC2594","M标识":"IC2594","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h36m4.2s","赤经D(J2000)":"10.601166666666666","赤纬(J2000)":"-24h19m22s","赤纬D(J2000)":"-24.322777777777777","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"","简略描述":"eF, pS, R, bet 2 wide D st"},{"ID":"10435","标识":"IC2595","M标识":"IC2595","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"六分仪座","星座(En)":"SEX","赤经(J2000)":"10h37m33s","赤经D(J2000)":"10.625833333333334","赤纬(J2000)":"-11h7m0s","赤纬D(J2000)":"-11.116666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably bright, extremely small, round, almost stellar","简略描述":"cB, eS, R, alm stell"},{"ID":"10436","标识":"IC2596","M标识":"IC2596","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"10h34m12.2s","赤经D(J2000)":"10.570055555555555","赤纬(J2000)":"-73h14m24s","赤纬D(J2000)":"-73.24","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"177","详细描述":"extremely faint, pretty small, brighter middle","简略描述":"eF, pS, bM"},{"ID":"10437","标识":"IC2597","M标识":"IC2597","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h37m47.3s","赤经D(J2000)":"10.629805555555556","赤纬(J2000)":"-27h4m51s","赤纬D(J2000)":"-27.080833333333334","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"4","详细描述":"","简略描述":"pB, pS, D * nr p"},{"ID":"10438","标识":"IC2598","M标识":"IC2598","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h39m42.2s","赤经D(J2000)":"10.661722222222222","赤纬(J2000)":"+26h43m39s","赤纬D(J2000)":"26.7275","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"144","详细描述":"faint, small, round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"10439","标识":"IC2599","M标识":"IC2599","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"10h37m27s","赤经D(J2000)":"10.624166666666667","赤纬(J2000)":"-58h44m0s","赤纬D(J2000)":"-58.733333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* 8.5 in neb, 3324 f 6s, 6' s"},{"ID":"10440","标识":"IC2600","M标识":"IC2600","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h46m38.7s","赤经D(J2000)":"10.777416666666667","赤纬(J2000)":"+72h19m14s","赤纬D(J2000)":"72.32055555555556","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"125","详细描述":"extremely faint, small, very diffuse","简略描述":"eF, S, v dif"},{"ID":"10441","标识":"IC2601","M标识":"IC2601","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"10h47m13.3s","赤经D(J2000)":"10.787027777777778","赤纬(J2000)":"+72h19m25s","赤纬D(J2000)":"72.3236111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, pretty small, several extremely faint stars involved","简略描述":"eF, pS, sev eF st inv"},{"ID":"10442","标识":"IC2602","M标识":"IC2602","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"南天七姐妹星团","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"10h42m56.5s","赤经D(J2000)":"10.715694444444443","赤纬(J2000)":"-64h23m39s","赤纬D(J2000)":"-64.39416666666668","可见光星等V":"1.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"100","短轴(分)":"","方位角":"","详细描述":"cluster, coarse, including θ Carinae","简略描述":"Cl, co, incl. θ Carinae"},{"ID":"10443","标识":"IC2603","M标识":"IC2603","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h48m25s","赤经D(J2000)":"10.806944444444445","赤纬(J2000)":"+32h55m36s","赤纬D(J2000)":"32.92666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, pL, biN or D pf, bf"},{"ID":"10444","标识":"IC2604","M标识":"IC2604","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h49m25s","赤经D(J2000)":"10.823611111111111","赤纬(J2000)":"+32h46m21s","赤纬D(J2000)":"32.7725","可见光星等V":"14.1","摄影(蓝光)星等B":"14.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"40","详细描述":"faint, considerably small, diffuse","简略描述":"F, cS, dif"},{"ID":"10445","标识":"IC2605","M标识":"IC2605","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h49m47.5s","赤经D(J2000)":"10.82986111111111","赤纬(J2000)":"+32h58m18s","赤纬D(J2000)":"32.97166666666667","可见光星等V":"99","摄影(蓝光)星等B":"15.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"80","详细描述":"","简略描述":"eF, S, 0'.3 ssp I 116"},{"ID":"10446","标识":"IC2606","M标识":"IC2606","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h50m17.5s","赤经D(J2000)":"10.838194444444445","赤纬(J2000)":"+37h57m23s","赤纬D(J2000)":"37.95638888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"120","详细描述":"faint, small, extended north-south, diffuse","简略描述":"F, S, E ns, dif"},{"ID":"10447","标识":"IC2607","M标识":"IC2607","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h50m18.9s","赤经D(J2000)":"10.838583333333334","赤纬(J2000)":"+37h59m39s","赤纬D(J2000)":"37.994166666666665","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"65","详细描述":"very faint, very small, very little brighter middle, difficult","简略描述":"vF, vS, vlbM, diffic"},{"ID":"10448","标识":"IC2608","M标识":"IC2608","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h50m15.4s","赤经D(J2000)":"10.837611111111112","赤纬(J2000)":"+32h46m8s","赤纬D(J2000)":"32.76888888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"120","详细描述":"faint, very small, round, 14th magnitude star attached","简略描述":"F, vS, R, * 14 att"},{"ID":"10449","标识":"IC2609","M标识":"IC2609","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"10h50m17.8s","赤经D(J2000)":"10.838277777777778","赤纬(J2000)":"-12h6m29s","赤纬D(J2000)":"-12.108055555555556","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.1","短轴(分)":"0.5","方位角":"84","详细描述":"","简略描述":"vf, S, bM"},{"ID":"10450","标识":"IC2610","M标识":"IC2610","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h52m8s","赤经D(J2000)":"10.86888888888889","赤纬(J2000)":"+33h5m0s","赤纬D(J2000)":"33.083333333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, S, lbM, * 25\" p"},{"ID":"10451","标识":"IC2611","M标识":"IC2611","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"10h52m39s","赤经D(J2000)":"10.877500000000001","赤纬(J2000)":"+10h8m11s","赤纬D(J2000)":"10.136388888888888","可见光星等V":"99","摄影(蓝光)星等B":"15","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"10452","标识":"IC2612","M标识":"IC2612","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h53m37.1s","赤经D(J2000)":"10.893638888888889","赤纬(J2000)":"+32h46m6s","赤纬D(J2000)":"32.76833333333333","可见光星等V":"15.6","摄影(蓝光)星等B":"16.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"95","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"10453","标识":"IC2613","M标识":"IC2613","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"10h49m49.9s","赤经D(J2000)":"10.830527777777778","赤纬(J2000)":"+32h58m53s","赤纬D(J2000)":"32.981388888888894","可见光星等V":"12.1","摄影(蓝光)星等B":"12.4","B-V":"0.3","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.1","短轴(分)":"1.1","方位角":"50","详细描述":"","简略描述":"B, pL, E 200°, gmbM dif N"},{"ID":"10454","标识":"IC2614","M标识":"IC2614","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h1m33.9s","赤经D(J2000)":"11.026083333333334","赤纬(J2000)":"+38h48m14s","赤纬D(J2000)":"38.803888888888885","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"10455","标识":"IC2615","M标识":"IC2615","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h2m2.2s","赤经D(J2000)":"11.033944444444444","赤纬(J2000)":"+37h56m44s","赤纬D(J2000)":"37.94555555555555","可见光星等V":"14.9","摄影(蓝光)星等B":"15.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"10456","标识":"IC2616","M标识":"IC2616","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h2m5.7s","赤经D(J2000)":"11.034916666666666","赤纬(J2000)":"+38h47m14s","赤纬D(J2000)":"38.78722222222222","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"85","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"10457","标识":"IC2617","M标识":"IC2617","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h2m7.6s","赤经D(J2000)":"11.035444444444444","赤纬(J2000)":"+38h39m52s","赤纬D(J2000)":"38.66444444444444","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"93","详细描述":"faint, small, round, faint nucleus","简略描述":"F, S, R, FN"},{"ID":"10458","标识":"IC2618","M标识":"IC2618","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"小狮座","星座(En)":"LMI","赤经(J2000)":"11h1m58.8s","赤经D(J2000)":"11.033000000000001","赤纬(J2000)":"+27h47m11s","赤纬D(J2000)":"27.78638888888889","可见光星等V":"99","摄影(蓝光)星等B":"14.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vS neb ?"},{"ID":"10459","标识":"IC2619","M标识":"IC2619","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"D","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h2m15.2s","赤经D(J2000)":"11.037555555555555","赤纬(J2000)":"+37h57m59s","赤纬D(J2000)":"37.96638888888889","可见光星等V":"15.1","摄影(蓝光)星等B":"15.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"","简略描述":"F, vS, R stell"},{"ID":"10460","标识":"IC2620","M标识":"IC2620","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h2m23.9s","赤经D(J2000)":"11.039972222222222","赤纬(J2000)":"+38h30m20s","赤纬D(J2000)":"38.50555555555555","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1","短轴(分)":"0.9","方位角":"141","详细描述":"faint, small, round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"10461","标识":"IC2621","M标识":"IC2621","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"11h0m20.2s","赤经D(J2000)":"11.005611111111111","赤纬(J2000)":"-65h14m56s","赤纬D(J2000)":"-65.24888888888889","可见光星等V":"11.2","摄影(蓝光)星等B":"11.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.08","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Planetary, stell, 10.5 mag"},{"ID":"10462","标识":"IC2622","M标识":"IC2622","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h2m59.7s","赤经D(J2000)":"11.049916666666666","赤纬(J2000)":"-16h17m19s","赤纬D(J2000)":"-16.288611111111113","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"15","详细描述":"","简略描述":"eeF, eS, like D *"},{"ID":"10463","标识":"IC2623","M标识":"IC2623","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h3m50.9s","赤经D(J2000)":"11.06413888888889","赤纬(J2000)":"-20h5m35s","赤纬D(J2000)":"-20.093055555555555","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"70","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"10464","标识":"IC2624","M标识":"IC2624","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h7m18.1s","赤经D(J2000)":"11.121694444444445","赤纬(J2000)":"-19h28m17s","赤纬D(J2000)":"-19.47138888888889","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.6","短轴(分)":"1.5","方位角":"59","详细描述":"considerably bright, pretty small, round, northern of 2","简略描述":"cB, pS, R, n of 2"},{"ID":"10465","标识":"IC2625","M标识":"IC2625","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h7m19.2s","赤经D(J2000)":"11.122","赤纬(J2000)":"-19h33m22s","赤纬D(J2000)":"-19.55611111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.8","方位角":"55","详细描述":"most extremely faint, very small, round, southern of 2","简略描述":"eeF, vS, R, s of 2"},{"ID":"10466","标识":"IC2626","M标识":"IC2626","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h9m3.8s","赤经D(J2000)":"11.151055555555557","赤纬(J2000)":"+26h54m16s","赤纬D(J2000)":"26.904444444444444","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.4","短轴(分)":"0.1","方位角":"45","详细描述":"faint, very small, diffuse, difficult","简略描述":"F, vS, dif, diffic"},{"ID":"10467","标识":"IC2627","M标识":"IC2627","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h9m53.5s","赤经D(J2000)":"11.164861111111112","赤纬(J2000)":"-23h43m36s","赤纬D(J2000)":"-23.726666666666667","可见光星等V":"12","摄影(蓝光)星等B":"12.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.6","短轴(分)":"2.1","方位角":"66","详细描述":"extremely faint, large, round, stellar nucleus","简略描述":"eF, L, R, stell N"},{"ID":"10468","标识":"IC2628","M标识":"IC2628","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h11m37.8s","赤经D(J2000)":"11.193833333333334","赤纬(J2000)":"+12h7m21s","赤纬D(J2000)":"12.1225","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"168","详细描述":"pretty faint, pretty small, round, brighter middle, spiral","简略描述":"pF, pS, R, bM, spir"},{"ID":"10469","标识":"IC2629","M标识":"IC2629","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h12m36.9s","赤经D(J2000)":"11.210249999999998","赤纬(J2000)":"+12h6m16s","赤纬D(J2000)":"12.104444444444445","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"40","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"10470","标识":"IC2630","M标识":"IC2630","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h12m43.2s","赤经D(J2000)":"11.212","赤纬(J2000)":"+12h19m9s","赤纬D(J2000)":"12.319166666666666","可见光星等V":"99","摄影(蓝光)星等B":"14.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, spiral","简略描述":"F, vS, R, spir"},{"ID":"10471","标识":"IC2631","M标识":"IC2631","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"堰蜓座","星座(En)":"CHA","赤经(J2000)":"11h9m52.4s","赤经D(J2000)":"11.164555555555555","赤纬(J2000)":"-76h36m57s","赤纬D(J2000)":"-76.61583333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"* 9 in L neb"},{"ID":"10472","标识":"IC2632","M标识":"IC2632","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h13m5.9s","赤经D(J2000)":"11.218305555555556","赤纬(J2000)":"+11h40m26s","赤纬D(J2000)":"11.673888888888888","可见光星等V":"16.7","摄影(蓝光)星等B":"17.7","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"10473","标识":"IC2633","M标识":"IC2633","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h13m10.1s","赤经D(J2000)":"11.219472222222223","赤纬(J2000)":"+11h36m5s","赤纬D(J2000)":"11.601388888888888","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"10","详细描述":"faint, considerably small, irregular figure","简略描述":"F, cS, iF"},{"ID":"10474","标识":"IC2634","M标识":"IC2634","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h13m28.3s","赤经D(J2000)":"11.224527777777778","赤纬(J2000)":"+10h29m9s","赤纬D(J2000)":"10.485833333333332","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"114","详细描述":"considerably bright, considerably small, round, gradually brighter middle","简略描述":"cB, cS, R, gbM"},{"ID":"10475","标识":"IC2635","M标识":"IC2635","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h13m29.8s","赤经D(J2000)":"11.224944444444445","赤纬(J2000)":"+11h27m50s","赤纬D(J2000)":"11.463888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, stellar nucleus","简略描述":"F, S, stell N"},{"ID":"10476","标识":"IC2636","M标识":"IC2636","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h13m34s","赤经D(J2000)":"11.226111111111111","赤纬(J2000)":"+11h27m23s","赤纬D(J2000)":"11.456388888888888","可见光星等V":"16.5","摄影(蓝光)星等B":"17.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"80","详细描述":"faint, small, brighter middle","简略描述":"F, S, bM"},{"ID":"10477","标识":"IC2637","M标识":"IC2637","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h13m49.6s","赤经D(J2000)":"11.230444444444444","赤纬(J2000)":"+9h35m12s","赤纬D(J2000)":"9.586666666666668","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"pretty bright, considerably small, round, brighter middle","简略描述":"pB, cS, R, bM"},{"ID":"10478","标识":"IC2638","M标识":"IC2638","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h13m51.8s","赤经D(J2000)":"11.231055555555555","赤纬(J2000)":"+10h33m48s","赤纬D(J2000)":"10.563333333333334","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.5","方位角":"98","详细描述":"considerably bright, pretty small, extended 100°, brighter middle","简略描述":"cB, pS, E 100°, bM"},{"ID":"10479","标识":"IC2639","M标识":"IC2639","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h13m55.5s","赤经D(J2000)":"11.232083333333334","赤纬(J2000)":"+9h38m36s","赤纬D(J2000)":"9.643333333333333","可见光星等V":"16.1","摄影(蓝光)星等B":"17.1","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, round, brighter middle, spiral","简略描述":"F, S, R, bM, spir"},{"ID":"10480","标识":"IC2640","M标识":"IC2640","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m5.5s","赤经D(J2000)":"11.23486111111111","赤纬(J2000)":"+10h59m50s","赤纬D(J2000)":"10.997222222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"120","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"10481","标识":"IC2641","M标识":"IC2641","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m10.6s","赤经D(J2000)":"11.236277777777778","赤纬(J2000)":"+9h23m57s","赤纬D(J2000)":"9.399166666666666","可见光星等V":"99","摄影(蓝光)星等B":"15.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"10482","标识":"IC2642","M标识":"IC2642","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m15.8s","赤经D(J2000)":"11.23772222222222","赤纬(J2000)":"+12h15m57s","赤纬D(J2000)":"12.265833333333333","可见光星等V":"99","摄影(蓝光)星等B":"15.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, brighter middle, spiral","简略描述":"vF, vS, R, bM, spir"},{"ID":"10483","标识":"IC2643","M标识":"IC2643","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m26.6s","赤经D(J2000)":"11.240722222222221","赤纬(J2000)":"+10h7m35s","赤纬D(J2000)":"10.12638888888889","可见光星等V":"99","摄影(蓝光)星等B":"15.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, small, round, brighter middle","简略描述":"cF, S, R, bM"},{"ID":"10484","标识":"IC2644","M标识":"IC2644","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m29.8s","赤经D(J2000)":"11.24161111111111","赤纬(J2000)":"+10h46m8s","赤纬D(J2000)":"10.76888888888889","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"90","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"10485","标识":"IC2645","M标识":"IC2645","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m30.8s","赤经D(J2000)":"11.241888888888887","赤纬(J2000)":"+11h53m12s","赤纬D(J2000)":"11.886666666666667","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"92","详细描述":"pretty faint, small, round, brighter middle","简略描述":"pF, S, R, bM"},{"ID":"10486","标识":"IC2646","M标识":"IC2646","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m37.6s","赤经D(J2000)":"11.243777777777776","赤纬(J2000)":"+12h31m43s","赤纬D(J2000)":"12.528611111111111","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"0","详细描述":"very faint, very small, irregular figure","简略描述":"vF, vS, iF"},{"ID":"10487","标识":"IC2647","M标识":"IC2647","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m38.6s","赤经D(J2000)":"11.244055555555555","赤纬(J2000)":"+12h8m32s","赤纬D(J2000)":"12.142222222222221","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large, irregular figure","简略描述":"eF, pL, iF"},{"ID":"10488","标识":"IC2648","M标识":"IC2648","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m45.6s","赤经D(J2000)":"11.245999999999999","赤纬(J2000)":"+10h13m31s","赤纬D(J2000)":"10.225277777777778","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"considerably faint, considerably small, round, brighter middle","简略描述":"cF, cS, R, bM"},{"ID":"10489","标识":"IC2649","M标识":"IC2649","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m47.4s","赤经D(J2000)":"11.2465","赤纬(J2000)":"+11h7m44s","赤纬D(J2000)":"11.12888888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.1","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"pretty bright, small, round, brighter middle, spiral","简略描述":"pB, S, R, bM, spir"},{"ID":"10490","标识":"IC2650","M标识":"IC2650","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m52.4s","赤经D(J2000)":"11.247888888888887","赤纬(J2000)":"+13h51m10s","赤纬D(J2000)":"13.852777777777778","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, brighter middle, irregular figure","简略描述":"F, S, bM, iF"},{"ID":"10491","标识":"IC2651","M标识":"IC2651","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m52.2s","赤经D(J2000)":"11.247833333333332","赤纬(J2000)":"+12h14m23s","赤纬D(J2000)":"12.239722222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"90","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"10492","标识":"IC2652","M标识":"IC2652","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m52.3s","赤经D(J2000)":"11.24786111111111","赤纬(J2000)":"+12h26m55s","赤纬D(J2000)":"12.448611111111111","可见光星等V":"16.1","摄影(蓝光)星等B":"17.1","B-V":"1","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, small, round, brighter middle, spiral","简略描述":"vF, S, R, bM, spir"},{"ID":"10493","标识":"IC2653","M标识":"IC2653","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h14m53.5s","赤经D(J2000)":"11.248194444444444","赤纬(J2000)":"+10h32m54s","赤纬D(J2000)":"10.548333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"10494","标识":"IC2654","M标识":"IC2654","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m2.9s","赤经D(J2000)":"11.250805555555555","赤纬(J2000)":"+12h30m0s","赤纬D(J2000)":"12.5","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"90","详细描述":"very faint, small, extended 120°","简略描述":"vF, S, E 120°"},{"ID":"10495","标识":"IC2655","M标识":"IC2655","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m5.2s","赤经D(J2000)":"11.251444444444445","赤纬(J2000)":"+12h9m52s","赤纬D(J2000)":"12.164444444444445","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"10496","标识":"IC2656","M标识":"IC2656","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m5.3s","赤经D(J2000)":"11.251472222222223","赤纬(J2000)":"+12h22m44s","赤纬D(J2000)":"12.37888888888889","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"120","详细描述":"very faint, small, irregular figure, extended 120°","简略描述":"vF, S, iF, E 120°"},{"ID":"10497","标识":"IC2657","M标识":"IC2657","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m8.7s","赤经D(J2000)":"11.252416666666667","赤纬(J2000)":"+13h41m41s","赤纬D(J2000)":"13.694722222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, pretty large, diffuse, between 2 stars","简略描述":"F, pL, dif, bet 2 st"},{"ID":"10498","标识":"IC2658","M标识":"IC2658","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m8.9s","赤经D(J2000)":"11.252472222222222","赤纬(J2000)":"+12h59m48s","赤纬D(J2000)":"12.996666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, considerably small, round, brighter middle","简略描述":"vF, cS, R, bM"},{"ID":"10499","标识":"IC2659","M标识":"IC2659","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m28s","赤经D(J2000)":"11.257777777777777","赤纬(J2000)":"+12h53m14s","赤纬D(J2000)":"12.887222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle, spiral","简略描述":"F, vS, R, bM, spir"},{"ID":"10500","标识":"IC2660","M标识":"IC2660","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m28.4s","赤经D(J2000)":"11.257888888888889","赤纬(J2000)":"+12h26m12s","赤纬D(J2000)":"12.436666666666667","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"160","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"10501","标识":"IC2661","M标识":"IC2661","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m29.1s","赤经D(J2000)":"11.258083333333333","赤纬(J2000)":"+13h36m32s","赤纬D(J2000)":"13.608888888888888","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"100","详细描述":"faint, pretty small, extended 100°, brighter middle","简略描述":"F, pS, E 100°, bM"},{"ID":"10502","标识":"IC2662","M标识":"IC2662","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m30.7s","赤经D(J2000)":"11.258527777777777","赤纬(J2000)":"+12h46m15s","赤纬D(J2000)":"12.770833333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"10503","标识":"IC2663","M标识":"IC2663","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m32.6s","赤经D(J2000)":"11.259055555555555","赤纬(J2000)":"+12h36m15s","赤纬D(J2000)":"12.604166666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, very small, round, suddenly brighter middle like a star","简略描述":"pB, vS, R, sbM *"},{"ID":"10504","标识":"IC2664","M标识":"IC2664","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m39.1s","赤经D(J2000)":"11.260861111111112","赤纬(J2000)":"+12h33m45s","赤纬D(J2000)":"12.5625","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, vS, lE 80°, bM"},{"ID":"10505","标识":"IC2665","M标识":"IC2665","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m40.8s","赤经D(J2000)":"11.261333333333333","赤纬(J2000)":"+11h43m26s","赤纬D(J2000)":"11.723888888888888","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.1","方位角":"100","详细描述":"","简略描述":"vF, pL, iF, N, 2 st 13 att"},{"ID":"10506","标识":"IC2666","M标识":"IC2666","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m43.8s","赤经D(J2000)":"11.262166666666667","赤纬(J2000)":"+13h46m56s","赤纬D(J2000)":"13.782222222222224","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"0","详细描述":"considerably bright, considerably small, extended 20°, brighter middle","简略描述":"cB, cS, E 20°, bM"},{"ID":"10507","标识":"IC2667","M标识":"IC2667","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m44s","赤经D(J2000)":"11.262222222222222","赤纬(J2000)":"+12h7m1s","赤纬D(J2000)":"12.116944444444444","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, round, brighter middle, spiral","简略描述":"F, vS, R, bM, spir"},{"ID":"10508","标识":"IC2668","M标识":"IC2668","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h15m32.1s","赤经D(J2000)":"11.258916666666666","赤纬(J2000)":"-14h10m17s","赤纬D(J2000)":"-14.171388888888888","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"140","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"10509","标识":"IC2669","M标识":"IC2669","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m53.1s","赤经D(J2000)":"11.26475","赤纬(J2000)":"+13h25m47s","赤纬D(J2000)":"13.429722222222221","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, extended 50°, brighter middle","简略描述":"F, S, E 50°, bM"},{"ID":"10510","标识":"IC2670","M标识":"IC2670","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h15m59.5s","赤经D(J2000)":"11.266527777777778","赤纬(J2000)":"+11h46m59s","赤纬D(J2000)":"11.783055555555556","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"140","详细描述":"faint, very small, round, brighter middle, spiral","简略描述":"F, vS, R, bM, spir"},{"ID":"10511","标识":"IC2671","M标识":"IC2671","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h16m3.5s","赤经D(J2000)":"11.26763888888889","赤纬(J2000)":"+13h7m28s","赤纬D(J2000)":"13.124444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"10512","标识":"IC2672","M标识":"IC2672","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h16m3.8s","赤经D(J2000)":"11.267722222222224","赤纬(J2000)":"+10h9m25s","赤纬D(J2000)":"10.156944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"10513","标识":"IC2673","M标识":"IC2673","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc R","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h16m4.1s","赤经D(J2000)":"11.267805555555556","赤纬(J2000)":"+10h9m44s","赤纬D(J2000)":"10.162222222222223","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.8","方位角":"35","详细描述":"","简略描述":"F, pL, iF, N, * 11 f 1'"},{"ID":"10514","标识":"IC2674","M标识":"IC2674","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h16m8.2s","赤经D(J2000)":"11.268944444444445","赤纬(J2000)":"+11h2m54s","赤纬D(J2000)":"11.048333333333334","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"20","详细描述":"faint, pretty small, round, brighter middle, spiral","简略描述":"F, pS, R, bM, spir"},{"ID":"10515","标识":"IC2675","M标识":"IC2675","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h16m10.9s","赤经D(J2000)":"11.269694444444445","赤纬(J2000)":"+12h14m58s","赤纬D(J2000)":"12.249444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"10516","标识":"IC2676","M标识":"IC2676","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h16m18.5s","赤经D(J2000)":"11.271805555555556","赤纬(J2000)":"+9h49m18s","赤纬D(J2000)":"9.821666666666667","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"170","详细描述":"","简略描述":"F, S, iF, * 11 sf ?'"},{"ID":"10517","标识":"IC2677","M标识":"IC2677","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h16m20.5s","赤经D(J2000)":"11.272361111111111","赤纬(J2000)":"+12h12m53s","赤纬D(J2000)":"12.214722222222221","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, vS, R, bM, in L, E neby"},{"ID":"10518","标识":"IC2678","M标识":"IC2678","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h16m21.6s","赤经D(J2000)":"11.272666666666668","赤纬(J2000)":"+11h56m55s","赤纬D(J2000)":"11.948611111111111","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"115","详细描述":"faint, very small, extended 110°, brighter middle","简略描述":"F, vS, E 110°, bM"},{"ID":"10519","标识":"IC2679","M标识":"IC2679","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h16m23.2s","赤经D(J2000)":"11.273111111111112","赤纬(J2000)":"+12h0m55s","赤纬D(J2000)":"12.015277777777778","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"","简略描述":"F, S, R, bM, spir, * 13 sp 20\""},{"ID":"10520","标识":"IC2680","M标识":"IC2680","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h16m25.5s","赤经D(J2000)":"11.273750000000001","赤纬(J2000)":"+9h48m24s","赤纬D(J2000)":"9.806666666666667","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"135","详细描述":"considerably faint, small, irregular figure, nuclear, 11th magnitude star to northwest","简略描述":"cF, S, iF, N, * 11 np"},{"ID":"10521","标识":"IC2681","M标识":"IC2681","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h16m33.2s","赤经D(J2000)":"11.27588888888889","赤纬(J2000)":"+11h12m26s","赤纬D(J2000)":"11.20722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably bright, very small","简略描述":"cB, vS"},{"ID":"10522","标识":"IC2682","M标识":"IC2682","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h16m36.1s","赤经D(J2000)":"11.276694444444445","赤纬(J2000)":"+9h24m40s","赤纬D(J2000)":"9.411111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, extended, brighter middle","简略描述":"pF, S, E, bM"},{"ID":"10523","标识":"IC2683","M标识":"IC2683","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h16m54.3s","赤经D(J2000)":"11.28175","赤纬(J2000)":"+12h5m57s","赤纬D(J2000)":"12.099166666666667","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"faint, pretty large, irregular figure, nuclear","简略描述":"F, pL, iF, N"},{"ID":"10524","标识":"IC2684","M标识":"IC2684","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"D","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m1s","赤经D(J2000)":"11.28361111111111","赤纬(J2000)":"+13h5m59s","赤纬D(J2000)":"13.099722222222223","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, pretty small, round, brighter middle","简略描述":"F, pS, R, bM"},{"ID":"10525","标识":"IC2685","M标识":"IC2685","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m0.1s","赤经D(J2000)":"11.28336111111111","赤纬(J2000)":"+10h5m41s","赤纬D(J2000)":"10.094722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, suddenly brighter middle equivalent to 14th magnitude star","简略描述":"F, vS, R, sbM * 14"},{"ID":"10526","标识":"IC2686","M标识":"IC2686","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m2.6s","赤经D(J2000)":"11.284055555555556","赤纬(J2000)":"+12h57m6s","赤纬D(J2000)":"12.951666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, S, iF, att * 14 sf"},{"ID":"10527","标识":"IC2687","M标识":"IC2687","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m12.1s","赤经D(J2000)":"11.286694444444445","赤纬(J2000)":"+10h9m29s","赤纬D(J2000)":"10.158055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, brighter middle, spiral","简略描述":"vF, vS, R, bM, spir"},{"ID":"10528","标识":"IC2688","M标识":"IC2688","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m18s","赤经D(J2000)":"11.288333333333334","赤纬(J2000)":"+13h29m25s","赤纬D(J2000)":"13.490277777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, extended 30°, brighter middle","简略描述":"vF, S, E 30°, bM"},{"ID":"10529","标识":"IC2689","M标识":"IC2689","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m19.7s","赤经D(J2000)":"11.288805555555555","赤纬(J2000)":"+12h57m39s","赤纬D(J2000)":"12.960833333333333","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.5","短轴(分)":"0.1","方位角":"45","详细描述":"faint, small, extended 40°","简略描述":"F, S, E 40°"},{"ID":"10530","标识":"IC2690","M标识":"IC2690","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m19.5s","赤经D(J2000)":"11.28875","赤纬(J2000)":"+12h57m38s","赤纬D(J2000)":"12.960555555555555","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"40","详细描述":"very faint, small, irregular figure, difficult","简略描述":"vF, S, iF, diffic"},{"ID":"10531","标识":"IC2691","M标识":"IC2691","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m25s","赤经D(J2000)":"11.290277777777778","赤纬(J2000)":"+12h2m18s","赤纬D(J2000)":"12.038333333333334","可见光星等V":"99","摄影(蓝光)星等B":"15.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, much brighter middle","简略描述":"F, S, R, mbM"},{"ID":"10532","标识":"IC2692","M标识":"IC2692","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m33.1s","赤经D(J2000)":"11.292527777777778","赤纬(J2000)":"+10h46m7s","赤纬D(J2000)":"10.768611111111111","可见光星等V":"16.3","摄影(蓝光)星等B":"17.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"faint, very small","简略描述":"F, vS"},{"ID":"10533","标识":"IC2693","M标识":"IC2693","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m36.5s","赤经D(J2000)":"11.293472222222222","赤纬(J2000)":"+13h32m58s","赤纬D(J2000)":"13.549444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"10534","标识":"IC2694","M标识":"IC2694","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m38.5s","赤经D(J2000)":"11.294027777777778","赤纬(J2000)":"+13h22m34s","赤纬D(J2000)":"13.376111111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"90","详细描述":"pretty bright, small, extended 90°, brighter middle","简略描述":"pB, S, E 90°, bM"},{"ID":"10535","标识":"IC2695","M标识":"IC2695","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m48.6s","赤经D(J2000)":"11.296833333333334","赤纬(J2000)":"+13h43m39s","赤纬D(J2000)":"13.727500000000001","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"45","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"10536","标识":"IC2696","M标识":"IC2696","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m49.3s","赤经D(J2000)":"11.297027777777778","赤纬(J2000)":"+12h45m21s","赤纬D(J2000)":"12.755833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"10537","标识":"IC2697","M标识":"IC2697","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m51.1s","赤经D(J2000)":"11.297527777777777","赤纬(J2000)":"+13h24m2s","赤纬D(J2000)":"13.400555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, irregular figure, nuclear, between 2 stars","简略描述":"F, S, iF, N, bet 2 st"},{"ID":"10538","标识":"IC2698","M标识":"IC2698","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m51.1s","赤经D(J2000)":"11.297527777777777","赤纬(J2000)":"+11h53m7s","赤纬D(J2000)":"11.885277777777777","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"faint, pretty small, irregular figure, binuclear","简略描述":"F, pS, iF, biN"},{"ID":"10539","标识":"IC2699","M标识":"IC2699","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m52.6s","赤经D(J2000)":"11.297944444444445","赤纬(J2000)":"+11h54m35s","赤纬D(J2000)":"11.909722222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, extremely small, round, brighter middle","简略描述":"F, eS, R, bM"},{"ID":"10540","标识":"IC2700","M标识":"IC2700","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m54.1s","赤经D(J2000)":"11.298361111111111","赤纬(J2000)":"+12h3m17s","赤纬D(J2000)":"12.054722222222223","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"120","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"10541","标识":"IC2701","M标识":"IC2701","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m56.9s","赤经D(J2000)":"11.299138888888889","赤纬(J2000)":"+11h7m4s","赤纬D(J2000)":"11.117777777777778","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"85","详细描述":"faint, very small, irregular figure","简略描述":"F, vS, iF"},{"ID":"10542","标识":"IC2702","M标识":"IC2702","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h17m57.1s","赤经D(J2000)":"11.299194444444444","赤纬(J2000)":"+9h24m47s","赤纬D(J2000)":"9.413055555555555","可见光星等V":"16.5","摄影(蓝光)星等B":"17.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, small, extended","简略描述":"vF, S, E"},{"ID":"10543","标识":"IC2703","M标识":"IC2703","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"D","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h18m5.1s","赤经D(J2000)":"11.301416666666668","赤纬(J2000)":"+17h39m0s","赤纬D(J2000)":"17.65","可见光星等V":"14.4","摄影(蓝光)星等B":"15","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"10544","标识":"IC2704","M标识":"IC2704","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h18m3.9s","赤经D(J2000)":"11.301083333333334","赤纬(J2000)":"+12h27m13s","赤纬D(J2000)":"12.45361111111111","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"75","详细描述":"","简略描述":"F, S, E 70°, bM"},{"ID":"10545","标识":"IC2705","M标识":"IC2705","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h18m3.9s","赤经D(J2000)":"11.301083333333334","赤纬(J2000)":"+11h54m17s","赤纬D(J2000)":"11.904722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, round, brighter middle, difficult","简略描述":"eF, eS, R, bM, diffic"},{"ID":"10546","标识":"IC2706","M标识":"IC2706","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h18m29.2s","赤经D(J2000)":"11.308111111111112","赤纬(J2000)":"+12h32m56s","赤纬D(J2000)":"12.54888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, vS, E 60°, bM"},{"ID":"10547","标识":"IC2707","M标识":"IC2707","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h18m30.9s","赤经D(J2000)":"11.308583333333335","赤纬(J2000)":"+9h28m27s","赤纬D(J2000)":"9.474166666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"170","详细描述":"","简略描述":"F, vS, R, bM, spir, * 13 sf"},{"ID":"10548","标识":"IC2708","M标识":"IC2708","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h18m34.5s","赤经D(J2000)":"11.309583333333334","赤纬(J2000)":"+12h42m42s","赤纬D(J2000)":"12.711666666666666","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"pretty bright, very small, round, brighter middle","简略描述":"pB, vS, R, bM"},{"ID":"10549","标识":"IC2709","M标识":"IC2709","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h18m40.8s","赤经D(J2000)":"11.311333333333334","赤纬(J2000)":"+12h33m51s","赤纬D(J2000)":"12.564166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large, irregular figure, 13th magnitude star to north","简略描述":"eF, pL, iF, * 13 n"},{"ID":"10550","标识":"IC2710","M标识":"IC2710","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h18m44.4s","赤经D(J2000)":"11.312333333333335","赤纬(J2000)":"+13h34m2s","赤纬D(J2000)":"13.567222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"bright, very small, round, brighter middle","简略描述":"B, vS, R, bM"},{"ID":"10551","标识":"IC2711","M标识":"IC2711","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h18m46.6s","赤经D(J2000)":"11.312944444444446","赤纬(J2000)":"+13h44m23s","赤纬D(J2000)":"13.739722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"10552","标识":"IC2712","M标识":"IC2712","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h18m52.7s","赤经D(J2000)":"11.31463888888889","赤纬(J2000)":"+9h37m38s","赤纬D(J2000)":"9.627222222222223","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"10553","标识":"IC2713","M标识":"IC2713","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h19m10.2s","赤经D(J2000)":"11.3195","赤纬(J2000)":"+12h9m55s","赤纬D(J2000)":"12.165277777777778","可见光星等V":"15.9","摄影(蓝光)星等B":"16.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"considerably faint, very small, round, brighter middle","简略描述":"cF, vS, R, bM"},{"ID":"10554","标识":"IC2714","M标识":"IC2714","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"利普-托恩星团","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"船底座","星座(En)":"CAR","赤经(J2000)":"11h17m22s","赤经D(J2000)":"11.289444444444444","赤纬(J2000)":"-62h43m18s","赤纬D(J2000)":"-62.72166666666667","可见光星等V":"8.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"","方位角":"","详细描述":"a cluster, pretty compressed","简略描述":"Cl, pC"},{"ID":"10555","标识":"IC2715","M标识":"IC2715","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h19m14.3s","赤经D(J2000)":"11.320638888888888","赤纬(J2000)":"+11h57m3s","赤纬D(J2000)":"11.950833333333332","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"10556","标识":"IC2716","M标识":"IC2716","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h19m16.3s","赤经D(J2000)":"11.321194444444444","赤纬(J2000)":"+11h41m55s","赤纬D(J2000)":"11.698611111111111","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"85","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"10557","标识":"IC2717","M标识":"IC2717","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h19m18.7s","赤经D(J2000)":"11.321861111111112","赤纬(J2000)":"+12h2m54s","赤纬D(J2000)":"12.048333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, brighter middle, difficult","简略描述":"vF, vS, R, bM, diffic"},{"ID":"10558","标识":"IC2718","M标识":"IC2718","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h19m20.9s","赤经D(J2000)":"11.322472222222222","赤纬(J2000)":"+12h1m21s","赤纬D(J2000)":"12.0225","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"95","详细描述":"faint, very small, irregular figure","简略描述":"F, vS, iF"},{"ID":"10559","标识":"IC2719","M标识":"IC2719","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h19m32.2s","赤经D(J2000)":"11.325611111111112","赤纬(J2000)":"+12h3m34s","赤纬D(J2000)":"12.059444444444445","可见光星等V":"16.7","摄影(蓝光)星等B":"17.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"10560","标识":"IC2720","M标识":"IC2720","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h19m35.6s","赤经D(J2000)":"11.326555555555556","赤纬(J2000)":"+12h4m37s","赤纬D(J2000)":"12.076944444444445","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"45","详细描述":"considerably faint, very small, round, brighter middle","简略描述":"cF, vS, R, bM"},{"ID":"10561","标识":"IC2721","M标识":"IC2721","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h19m42.7s","赤经D(J2000)":"11.328527777777778","赤纬(J2000)":"+12h18m38s","赤纬D(J2000)":"12.310555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty small, diffuse","简略描述":"eF, pS, dif"},{"ID":"10562","标识":"IC2722","M标识":"IC2722","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E+C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h19m43.9s","赤经D(J2000)":"11.328861111111111","赤纬(J2000)":"+13h57m49s","赤纬D(J2000)":"13.96361111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"90","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"10563","标识":"IC2723","M标识":"IC2723","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h19m47.9s","赤经D(J2000)":"11.329972222222223","赤纬(J2000)":"+12h1m59s","赤纬D(J2000)":"12.033055555555556","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, extended 200°, difficult","简略描述":"F, vS, E 200°, diffic"},{"ID":"10564","标识":"IC2724","M标识":"IC2724","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h19m48.4s","赤经D(J2000)":"11.33011111111111","赤纬(J2000)":"+10h43m2s","赤纬D(J2000)":"10.717222222222222","可见光星等V":"15.9","摄影(蓝光)星等B":"16.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"","简略描述":"cF, vF, R, bM, * 13 p 20\""},{"ID":"10565","标识":"IC2725","M标识":"IC2725","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h19m57.4s","赤经D(J2000)":"11.332611111111111","赤纬(J2000)":"+13h25m47s","赤纬D(J2000)":"13.429722222222221","可见光星等V":"16.6","摄影(蓝光)星等B":"17.6","B-V":"1","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, irregular figure, difficult","简略描述":"vF, S, iF, diffic"},{"ID":"10566","标识":"IC2726","M标识":"IC2726","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h19m58.5s","赤经D(J2000)":"11.332916666666666","赤纬(J2000)":"+13h24m56s","赤纬D(J2000)":"13.415555555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, difficult","简略描述":"vF, vS, iF, diffic"},{"ID":"10567","标识":"IC2727","M标识":"IC2727","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m0s","赤经D(J2000)":"11.333333333333334","赤纬(J2000)":"+12h1m59s","赤纬D(J2000)":"12.033055555555556","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, irregular figure, nuclear, difficult","简略描述":"F, vS, iF, N, diffic"},{"ID":"10568","标识":"IC2728","M标识":"IC2728","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m5s","赤经D(J2000)":"11.334722222222222","赤纬(J2000)":"+13h25m38s","赤纬D(J2000)":"13.427222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nuclear, difficult","简略描述":"vF, S, iF, N, diffic"},{"ID":"10569","标识":"IC2729","M标识":"IC2729","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m6.7s","赤经D(J2000)":"11.335194444444445","赤纬(J2000)":"+13h24m33s","赤纬D(J2000)":"13.409166666666668","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"175","详细描述":"very faint, small, irregular figure, difficult","简略描述":"vF, S, iF, diffic"},{"ID":"10570","标识":"IC2730","M标识":"IC2730","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m7.4s","赤经D(J2000)":"11.33538888888889","赤纬(J2000)":"+12h22m0s","赤纬D(J2000)":"12.366666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, extremely small, extended 90°, brighter middle","简略描述":"F, eS, E 90°, bM"},{"ID":"10571","标识":"IC2731","M标识":"IC2731","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m10.3s","赤经D(J2000)":"11.336194444444445","赤纬(J2000)":"+13h33m29s","赤纬D(J2000)":"13.558055555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, brighter middle, spiral","简略描述":"F, S, R, bM, spir"},{"ID":"10572","标识":"IC2732","M标识":"IC2732","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m12.4s","赤经D(J2000)":"11.336777777777778","赤纬(J2000)":"+12h24m14s","赤纬D(J2000)":"12.40388888888889","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"10573","标识":"IC2733","M标识":"IC2733","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m17.3s","赤经D(J2000)":"11.33813888888889","赤纬(J2000)":"+13h50m6s","赤纬D(J2000)":"13.835","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, considerably small, irregular figure, nuclear, 14th magnitude star to north","简略描述":"vF, cS, iF, N, * 14 n"},{"ID":"10574","标识":"IC2734","M标识":"IC2734","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m23.8s","赤经D(J2000)":"11.339944444444445","赤纬(J2000)":"+12h26m35s","赤纬D(J2000)":"12.443055555555556","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"10","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"10575","标识":"IC2735","M标识":"IC2735","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h21m3.8s","赤经D(J2000)":"11.351055555555556","赤纬(J2000)":"+34h20m40s","赤纬D(J2000)":"34.34444444444445","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.2","方位角":"100","详细描述":"","简略描述":"pB, cS, E pF, N, r"},{"ID":"10576","标识":"IC2736","M标识":"IC2736","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h20m55s","赤经D(J2000)":"11.348611111111111","赤纬(J2000)":"+12h24m32s","赤纬D(J2000)":"12.408888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"10577","标识":"IC2737","M标识":"IC2737","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m8.2s","赤经D(J2000)":"11.352277777777777","赤纬(J2000)":"+14h17m36s","赤纬D(J2000)":"14.293333333333333","可见光星等V":"99","摄影(蓝光)星等B":"15.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, considerably small, round, brighter middle","简略描述":"F, cS, R, bM"},{"ID":"10578","标识":"IC2738","M标识":"IC2738","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h21m23s","赤经D(J2000)":"11.356388888888889","赤纬(J2000)":"+34h21m26s","赤纬D(J2000)":"34.35722222222223","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, round, gradually brighter middle and nucleus","简略描述":"F, S, R, gbMN"},{"ID":"10579","标识":"IC2739","M标识":"IC2739","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m12.4s","赤经D(J2000)":"11.353444444444444","赤纬(J2000)":"+11h54m52s","赤纬D(J2000)":"11.914444444444445","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"","简略描述":"F, vS, annular ?"},{"ID":"10580","标识":"IC2740","M标识":"IC2740","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m17s","赤经D(J2000)":"11.354722222222222","赤纬(J2000)":"+8h45m6s","赤纬D(J2000)":"8.751666666666667","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"50","详细描述":"very faint, small, diffuse, difficult","简略描述":"vF, S, dif, diffic"},{"ID":"10581","标识":"IC2741","M标识":"IC2741","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m17.5s","赤经D(J2000)":"11.354861111111111","赤纬(J2000)":"+9h9m11s","赤纬D(J2000)":"9.153055555555556","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"","简略描述":"vF, pS, iF, sev N"},{"ID":"10582","标识":"IC2742","M标识":"IC2742","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m18.6s","赤经D(J2000)":"11.355166666666666","赤纬(J2000)":"+10h26m47s","赤纬D(J2000)":"10.446388888888889","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"45","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"10583","标识":"IC2743","M标识":"IC2743","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m25s","赤经D(J2000)":"11.356944444444444","赤纬(J2000)":"+8h41m35s","赤纬D(J2000)":"8.693055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle, spiral","简略描述":"F, vS, R, bM, spir"},{"ID":"10584","标识":"IC2744","M标识":"IC2744","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h21m42.6s","赤经D(J2000)":"11.361833333333333","赤纬(J2000)":"+34h21m46s","赤纬D(J2000)":"34.36277777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, gradually brighter middle, mottled but not resolved","简略描述":"F, S, gbM, r"},{"ID":"10585","标识":"IC2745","M标识":"IC2745","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m31.7s","赤经D(J2000)":"11.358805555555556","赤纬(J2000)":"+13h25m37s","赤纬D(J2000)":"13.426944444444445","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"67","详细描述":"","简略描述":"pB, pS, E 70°, bM, * 12 att sf"},{"ID":"10586","标识":"IC2746","M标识":"IC2746","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m36.4s","赤经D(J2000)":"11.360111111111111","赤纬(J2000)":"+11h44m12s","赤纬D(J2000)":"11.736666666666666","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"160","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"10587","标识":"IC2747","M标识":"IC2747","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m39.9s","赤经D(J2000)":"11.361083333333333","赤纬(J2000)":"+8h48m16s","赤纬D(J2000)":"8.804444444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, 2 stars to west","简略描述":"vF, vS, iF, 2 st p"},{"ID":"10588","标识":"IC2748","M标识":"IC2748","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m44.1s","赤经D(J2000)":"11.36225","赤纬(J2000)":"+8h48m20s","赤纬D(J2000)":"8.805555555555557","可见光星等V":"16.1","摄影(蓝光)星等B":"17.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"60","详细描述":"faint, very small, irregular figure","简略描述":"F, vS, iF"},{"ID":"10589","标识":"IC2749","M标识":"IC2749","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m45.2s","赤经D(J2000)":"11.362555555555556","赤纬(J2000)":"+8h34m30s","赤纬D(J2000)":"8.575","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"90","详细描述":"","简略描述":"F, S, dif (? D *)"},{"ID":"10590","标识":"IC2750","M标识":"IC2750","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m50.7s","赤经D(J2000)":"11.364083333333333","赤纬(J2000)":"+9h39m30s","赤纬D(J2000)":"9.658333333333333","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"45","详细描述":"very faint, very small, irregular figure","简略描述":"vF, vS, iF"},{"ID":"10591","标识":"IC2751","M标识":"IC2751","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h22m7.4s","赤经D(J2000)":"11.368722222222223","赤纬(J2000)":"+34h21m59s","赤纬D(J2000)":"34.36638888888889","可见光星等V":"14.9","摄影(蓝光)星等B":"15.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"F, S, R, 2 st 15 inv"},{"ID":"10592","标识":"IC2752","M标识":"IC2752","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m2s","赤经D(J2000)":"11.367222222222223","赤纬(J2000)":"+14h7m28s","赤纬D(J2000)":"14.124444444444444","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.5","短轴(分)":"0.1","方位角":"100","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"10593","标识":"IC2753","M标识":"IC2753","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h21m59.7s","赤经D(J2000)":"11.366583333333333","赤纬(J2000)":"+9h52m40s","赤纬D(J2000)":"9.877777777777778","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"considerably faint, very small, round, brighter middle","简略描述":"cF, vS, R, bM"},{"ID":"10594","标识":"IC2754","M标识":"IC2754","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m2.4s","赤经D(J2000)":"11.367333333333335","赤纬(J2000)":"+14h8m38s","赤纬D(J2000)":"14.143888888888888","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"85","详细描述":"faint, small, irregular figure, nuclear, difficult","简略描述":"F, S, iF, N, diffic"},{"ID":"10595","标识":"IC2755","M标识":"IC2755","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m2.4s","赤经D(J2000)":"11.367333333333335","赤纬(J2000)":"+13h47m35s","赤纬D(J2000)":"13.793055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"10596","标识":"IC2756","M标识":"IC2756","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m1s","赤经D(J2000)":"11.366944444444444","赤纬(J2000)":"+9h57m36s","赤纬D(J2000)":"9.959999999999999","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"100","详细描述":"very faint, very small, extended 120°, brighter middle","简略描述":"vF, vS, E 120°, bM"},{"ID":"10597","标识":"IC2757","M标识":"IC2757","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m2.1s","赤经D(J2000)":"11.36725","赤纬(J2000)":"+8h23m38s","赤纬D(J2000)":"8.393888888888888","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"80","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"10598","标识":"IC2758","M标识":"IC2758","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S M","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m3.2s","赤经D(J2000)":"11.367555555555557","赤纬(J2000)":"+7h48m50s","赤纬D(J2000)":"7.813888888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"30","详细描述":"faint, considerably small, round, brighter middle, difficult","简略描述":"F, cS, R, bM, diffic"},{"ID":"10599","标识":"IC2759","M标识":"IC2759","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m13.2s","赤经D(J2000)":"11.370333333333333","赤纬(J2000)":"+24h19m2s","赤纬D(J2000)":"24.31722222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"considerably faint, stellar, 13th magnitude star 2.5 arcmin west northwest","简略描述":"cF, stell, * 13 npp 2'.5"},{"ID":"10600","标识":"IC2760","M标识":"IC2760","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m12.7s","赤经D(J2000)":"11.370194444444445","赤纬(J2000)":"+12h39m57s","赤纬D(J2000)":"12.665833333333333","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"110","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"10601","标识":"IC2761","M标识":"IC2761","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m17s","赤经D(J2000)":"11.37138888888889","赤纬(J2000)":"+14h10m38s","赤纬D(J2000)":"14.177222222222222","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, small, round, brighter middle, difficult","简略描述":"F, S, R, bM, diffic"},{"ID":"10602","标识":"IC2762","M标识":"IC2762","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m17.9s","赤经D(J2000)":"11.371638888888889","赤纬(J2000)":"+12h43m21s","赤纬D(J2000)":"12.7225","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"140","详细描述":"considerably faint, pretty small, much extended 150°, brighter middle, 12th magnitude star to west","简略描述":"cF, pS, mE 150°, bM, * 12 p"},{"ID":"10603","标识":"IC2763","M标识":"IC2763","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m18.4s","赤经D(J2000)":"11.371777777777778","赤纬(J2000)":"+13h3m55s","赤纬D(J2000)":"13.065277777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"0.2","方位角":"96","详细描述":"","简略描述":"cF, pS, E 95°, long N"},{"ID":"10604","标识":"IC2764","M标识":"IC2764","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"11h27m4.9s","赤经D(J2000)":"11.45136111111111","赤纬(J2000)":"-28h58m50s","赤纬D(J2000)":"-28.980555555555554","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.5","方位角":"0","详细描述":"","简略描述":"pB, pS, R, * 10 nr nf, * 7 f"},{"ID":"10605","标识":"IC2765","M标识":"IC2765","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m23.1s","赤经D(J2000)":"11.373083333333334","赤纬(J2000)":"+14h11m56s","赤纬D(J2000)":"14.19888888888889","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"10606","标识":"IC2766","M标识":"IC2766","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m23s","赤经D(J2000)":"11.373055555555556","赤纬(J2000)":"+12h54m14s","赤纬D(J2000)":"12.90388888888889","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.5","短轴(分)":"0.1","方位角":"140","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"10607","标识":"IC2767","M标识":"IC2767","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m23.5s","赤经D(J2000)":"11.373194444444445","赤纬(J2000)":"+13h4m39s","赤纬D(J2000)":"13.0775","可见光星等V":"16","摄影(蓝光)星等B":"16.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.1","方位角":"90","详细描述":"very faint, very small, irregular figure","简略描述":"vF, vS, iF"},{"ID":"10608","标识":"IC2768","M标识":"IC2768","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m23.5s","赤经D(J2000)":"11.373194444444445","赤纬(J2000)":"+12h31m44s","赤纬D(J2000)":"12.52888888888889","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"60","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"10609","标识":"IC2769","M标识":"IC2769","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m25.6s","赤经D(J2000)":"11.373777777777779","赤纬(J2000)":"+14h11m47s","赤纬D(J2000)":"14.196388888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"170","详细描述":"faint, considerably small, round, brighter middle","简略描述":"F, cS, R, bM"},{"ID":"10610","标识":"IC2770","M标识":"IC2770","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m24.7s","赤经D(J2000)":"11.373527777777777","赤纬(J2000)":"+9h13m16s","赤纬D(J2000)":"9.221111111111112","可见光星等V":"15.9","摄影(蓝光)星等B":"16.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"10611","标识":"IC2771","M标识":"IC2771","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m28s","赤经D(J2000)":"11.374444444444444","赤纬(J2000)":"+12h31m10s","赤纬D(J2000)":"12.519444444444446","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear, difficult","简略描述":"vF, vS, iF, N, diffic"},{"ID":"10612","标识":"IC2772","M标识":"IC2772","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m30.4s","赤经D(J2000)":"11.375111111111112","赤纬(J2000)":"+13h35m57s","赤纬D(J2000)":"13.599166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, irregular figure, nuclear","简略描述":"vF, eS, iF, N"},{"ID":"10613","标识":"IC2773","M标识":"IC2773","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m36.4s","赤经D(J2000)":"11.376777777777779","赤纬(J2000)":"+13h34m12s","赤纬D(J2000)":"13.57","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, very irregular figure, difficult","简略描述":"vF, S, viF, diffic"},{"ID":"10614","标识":"IC2774","M标识":"IC2774","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m37.2s","赤经D(J2000)":"11.377","赤纬(J2000)":"+12h30m54s","赤纬D(J2000)":"12.515","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear, difficult","简略描述":"vF, vS, iF, N, diffic"},{"ID":"10615","标识":"IC2775","M标识":"IC2775","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m39.5s","赤经D(J2000)":"11.377638888888889","赤纬(J2000)":"+12h30m44s","赤纬D(J2000)":"12.512222222222222","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear, difficult","简略描述":"vF, vS, iF, N, diffic"},{"ID":"10616","标识":"IC2776","M标识":"IC2776","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m40s","赤经D(J2000)":"11.377777777777778","赤纬(J2000)":"+13h19m51s","赤纬D(J2000)":"13.330833333333333","可见光星等V":"14.9","摄影(蓝光)星等B":"15.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"168","详细描述":"pretty faint, pretty small, round, brighter middle, spiral","简略描述":"pF, pS, R, bM, spir"},{"ID":"10617","标识":"IC2777","M标识":"IC2777","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m40.6s","赤经D(J2000)":"11.377944444444445","赤纬(J2000)":"+12h1m32s","赤纬D(J2000)":"12.025555555555556","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"145","详细描述":"pretty faint, very small, round, brighter middle","简略描述":"pF, vS, R, bM"},{"ID":"10618","标识":"IC2778","M标识":"IC2778","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m41.9s","赤经D(J2000)":"11.378305555555556","赤纬(J2000)":"+12h31m36s","赤纬D(J2000)":"12.526666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear, difficult","简略描述":"vF, vS, iF, N, diffic"},{"ID":"10619","标识":"IC2779","M标识":"IC2779","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m44.4s","赤经D(J2000)":"11.379000000000001","赤纬(J2000)":"+13h20m45s","赤纬D(J2000)":"13.345833333333333","可见光星等V":"16.5","摄影(蓝光)星等B":"17.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"0","详细描述":"considerably faint, extremely small, round","简略描述":"cF, eS, R"},{"ID":"10620","标识":"IC2780","M标识":"IC2780","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m48.1s","赤经D(J2000)":"11.380027777777778","赤纬(J2000)":"+10h8m58s","赤纬D(J2000)":"10.149444444444445","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"","简略描述":"F, vS, R, bM, * 15 n 15\""},{"ID":"10621","标识":"IC2781","M标识":"IC2781","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m50.6s","赤经D(J2000)":"11.380722222222223","赤纬(J2000)":"+12h20m43s","赤纬D(J2000)":"12.345277777777778","可见光星等V":"16.7","摄影(蓝光)星等B":"17.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"160","详细描述":"","简略描述":"F, vS, iF, fainter one 2' nf"},{"ID":"10622","标识":"IC2782","M标识":"IC2782","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m55.4s","赤经D(J2000)":"11.382055555555556","赤纬(J2000)":"+13h26m29s","赤纬D(J2000)":"13.44138888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"0","详细描述":"considerably faint, considerably small, round, brighter middle","简略描述":"cF, cS, R, bM"},{"ID":"10623","标识":"IC2783","M标识":"IC2783","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h22m53.5s","赤经D(J2000)":"11.381527777777778","赤纬(J2000)":"+8h53m4s","赤纬D(J2000)":"8.884444444444444","可见光星等V":"15.8","摄影(蓝光)星等B":"16.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"165","详细描述":"faint, very small, round, brighter middle, spiral","简略描述":"F, vS, R, bM, spir"},{"ID":"10624","标识":"IC2784","M标识":"IC2784","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h23m11.5s","赤经D(J2000)":"11.386527777777777","赤纬(J2000)":"+13h7m6s","赤纬D(J2000)":"13.118333333333334","可见光星等V":"15.9","摄影(蓝光)星等B":"16.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"40","详细描述":"","简略描述":"pB, eS, R, bM, * 13 p 20\""},{"ID":"10625","标识":"IC2785","M标识":"IC2785","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h23m15.3s","赤经D(J2000)":"11.387583333333334","赤纬(J2000)":"+13h23m30s","赤纬D(J2000)":"13.391666666666666","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"175","详细描述":"pretty faint, small, round, brighter middle","简略描述":"pF, S, R, bM"},{"ID":"10626","标识":"IC2786","M标识":"IC2786","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h23m17.5s","赤经D(J2000)":"11.388194444444444","赤纬(J2000)":"+13h23m34s","赤纬D(J2000)":"13.392777777777777","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"116","详细描述":"considerably faint, small, extended 110°, brighter middle","简略描述":"cF, S, E 110°, bM"},{"ID":"10627","标识":"IC2787","M标识":"IC2787","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h23m19.1s","赤经D(J2000)":"11.388638888888888","赤纬(J2000)":"+13h37m47s","赤纬D(J2000)":"13.629722222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"considerably faint, small, round, brighter middle","简略描述":"cF, S, R, bM"},{"ID":"10628","标识":"IC2788","M标识":"IC2788","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h23m27s","赤经D(J2000)":"11.390833333333333","赤纬(J2000)":"+12h41m53s","赤纬D(J2000)":"12.698055555555555","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"0","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"10629","标识":"IC2789","M标识":"IC2789","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h23m33s","赤经D(J2000)":"11.3925","赤纬(J2000)":"+14h11m12s","赤纬D(J2000)":"14.186666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, round, brighter middle","简略描述":"pB, S, R, bM"},{"ID":"10630","标识":"IC2790","M标识":"IC2790","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h23m34s","赤经D(J2000)":"11.392777777777777","赤纬(J2000)":"+9h33m17s","赤纬D(J2000)":"9.554722222222223","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"10631","标识":"IC2791","M标识":"IC2791","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h23m37.5s","赤经D(J2000)":"11.393749999999999","赤纬(J2000)":"+12h53m47s","赤纬D(J2000)":"12.896388888888888","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"160","详细描述":"very faint, very small, irregular figure, difficult","简略描述":"vF, vS, iF, diffic"},{"ID":"10632","标识":"IC2792","M标识":"IC2792","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h23m41.5s","赤经D(J2000)":"11.39486111111111","赤纬(J2000)":"+11h24m15s","赤纬D(J2000)":"11.404166666666667","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"85","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"10633","标识":"IC2793","M标识":"IC2793","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h23m47.3s","赤经D(J2000)":"11.396472222222222","赤纬(J2000)":"+9h27m4s","赤纬D(J2000)":"9.45111111111111","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, irregular figure, difficult","简略描述":"vF, S, iF, diffic"},{"ID":"10634","标识":"IC2794","M标识":"IC2794","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h24m3.6s","赤经D(J2000)":"11.401","赤纬(J2000)":"+12h47m29s","赤纬D(J2000)":"12.79138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, extremely small, round, brighter middle","简略描述":"F, eS, R, bM"},{"ID":"10635","标识":"IC2795","M标识":"IC2795","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h24m4s","赤经D(J2000)":"11.401111111111112","赤纬(J2000)":"+12h8m8s","赤纬D(J2000)":"12.135555555555555","可见光星等V":"16.9","摄影(蓝光)星等B":"17.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"60","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"10636","标识":"IC2796","M标识":"IC2796","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h24m8.3s","赤经D(J2000)":"11.402305555555555","赤纬(J2000)":"+9h20m45s","赤纬D(J2000)":"9.345833333333333","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"30","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"10637","标识":"IC2797","M标识":"IC2797","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h24m21s","赤经D(J2000)":"11.405833333333334","赤纬(J2000)":"+11h42m23s","赤纬D(J2000)":"11.706388888888888","可见光星等V":"16.3","摄影(蓝光)星等B":"17.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"140","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"10638","标识":"IC2798","M标识":"IC2798","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h24m24s","赤经D(J2000)":"11.406666666666666","赤纬(J2000)":"+12h24m57s","赤纬D(J2000)":"12.415833333333333","可见光星等V":"15.3","摄影(蓝光)星等B":"16","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.1","方位角":"175","详细描述":"very faint, small, irregular figure, nuclear, difficult","简略描述":"vF, S, iF, N, diffic"},{"ID":"10639","标识":"IC2799","M标识":"IC2799","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h24m26.6s","赤经D(J2000)":"11.407388888888889","赤纬(J2000)":"+13h50m58s","赤纬D(J2000)":"13.849444444444446","可见光星等V":"16.6","摄影(蓝光)星等B":"17.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"160","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"10640","标识":"IC2800","M标识":"IC2800","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h24m27s","赤经D(J2000)":"11.4075","赤纬(J2000)":"+12h12m32s","赤纬D(J2000)":"12.208888888888888","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"95","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"10641","标识":"IC2801","M标识":"IC2801","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h24m29s","赤经D(J2000)":"11.408055555555556","赤纬(J2000)":"+10h11m1s","赤纬D(J2000)":"10.18361111111111","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"90","详细描述":"faint, small, round, brighter middle, spiral","简略描述":"F, S, R, bM, spir"},{"ID":"10642","标识":"IC2802","M标识":"IC2802","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h24m30.3s","赤经D(J2000)":"11.408416666666668","赤纬(J2000)":"+12h12m32s","赤纬D(J2000)":"12.208888888888888","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear, very difficult","简略描述":"vF, vS, iF, N, v diffic"},{"ID":"10643","标识":"IC2803","M标识":"IC2803","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h24m35.3s","赤经D(J2000)":"11.409805555555556","赤纬(J2000)":"+9h51m0s","赤纬D(J2000)":"9.85","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.4","短轴(分)":"0.1","方位角":"55","详细描述":"","简略描述":"F, vS, E 70°"},{"ID":"10644","标识":"IC2804","M标识":"IC2804","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h24m55.7s","赤经D(J2000)":"11.415472222222222","赤纬(J2000)":"+13h13m22s","赤纬D(J2000)":"13.222777777777777","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"12","详细描述":"","简略描述":"pB, cS, E 10°, exc N"},{"ID":"10645","标识":"IC2805","M标识":"IC2805","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h24m59.9s","赤经D(J2000)":"11.416638888888889","赤纬(J2000)":"+14h0m54s","赤纬D(J2000)":"14.015","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, brighter middle, difficult","简略描述":"vF, S, R, bM, diffic"},{"ID":"10646","标识":"IC2806","M标识":"IC2806","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h25m15.2s","赤经D(J2000)":"11.420888888888888","赤纬(J2000)":"+9h39m11s","赤纬D(J2000)":"9.653055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, S, iF, ? Annular"},{"ID":"10647","标识":"IC2807","M标识":"IC2807","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h25m17s","赤经D(J2000)":"11.421388888888888","赤纬(J2000)":"+11h31m47s","赤纬D(J2000)":"11.529722222222222","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"45","详细描述":"faint, small, irregular figure, 14th magnitude star attached on west","简略描述":"F, S, iF, * 14 att p"},{"ID":"10648","标识":"IC2808","M标识":"IC2808","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h25m26.9s","赤经D(J2000)":"11.424138888888889","赤纬(J2000)":"+9h7m57s","赤纬D(J2000)":"9.1325","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, brighter middle, spiral","简略描述":"vF, vS, R, bM, spir"},{"ID":"10649","标识":"IC2809","M标识":"IC2809","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h25m37.8s","赤经D(J2000)":"11.427166666666666","赤纬(J2000)":"+8h31m40s","赤纬D(J2000)":"8.527777777777779","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, brighter middle, possibly spiral","简略描述":"F, S, R, bM, ? spir"},{"ID":"10650","标识":"IC2810","M标识":"IC2810","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h25m44.9s","赤经D(J2000)":"11.429138888888888","赤纬(J2000)":"+14h40m36s","赤纬D(J2000)":"14.676666666666666","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"30","详细描述":"pretty faint, pretty small, round, brighter middle, 14th magnitude star to southeast","简略描述":"pF, pS, R, bM, * 14 sf"},{"ID":"10651","标识":"IC2811","M标识":"IC2811","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h25m44.7s","赤经D(J2000)":"11.429083333333333","赤纬(J2000)":"+9h10m13s","赤纬D(J2000)":"9.170277777777777","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"88","详细描述":"","简略描述":"F, S, iF, * 14 f 30\""},{"ID":"10652","标识":"IC2812","M标识":"IC2812","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h25m55.9s","赤经D(J2000)":"11.432194444444443","赤纬(J2000)":"+11h31m49s","赤纬D(J2000)":"11.530277777777778","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"20","详细描述":"faint, small, extended 10°","简略描述":"F, S, E 10°"},{"ID":"10653","标识":"IC2813","M标识":"IC2813","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h26m6.4s","赤经D(J2000)":"11.43511111111111","赤纬(J2000)":"+11h15m22s","赤纬D(J2000)":"11.25611111111111","可见光星等V":"16.2","摄影(蓝光)星等B":"17.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, round, brighter middle, spiral","简略描述":"F, vS, R, bM, spir"},{"ID":"10654","标识":"IC2814","M标识":"IC2814","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h26m8.6s","赤经D(J2000)":"11.435722222222223","赤纬(J2000)":"+9h39m42s","赤纬D(J2000)":"9.661666666666667","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"50","详细描述":"","简略描述":"pF, vS, R, bM, * 14 nf 30\""},{"ID":"10655","标识":"IC2815","M标识":"IC2815","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h26m16.5s","赤经D(J2000)":"11.437916666666666","赤纬(J2000)":"+12h48m13s","赤纬D(J2000)":"12.803611111111111","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"105","详细描述":"faint, extremely small, round, brighter middle","简略描述":"F, eS, R, bM"},{"ID":"10656","标识":"IC2816","M标识":"IC2816","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h26m18.3s","赤经D(J2000)":"11.438416666666667","赤纬(J2000)":"+10h38m11s","赤纬D(J2000)":"10.636388888888888","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"0","详细描述":"considerably faint, very small, round, brighter middle, spiral","简略描述":"cF, vS, R, bM, spir"},{"ID":"10657","标识":"IC2817","M标识":"IC2817","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h26m18.9s","赤经D(J2000)":"11.438583333333334","赤纬(J2000)":"+9h8m53s","赤纬D(J2000)":"9.148055555555555","可见光星等V":"99","摄影(蓝光)星等B":"15.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"10658","标识":"IC2818","M标识":"IC2818","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h26m26.8s","赤经D(J2000)":"11.440777777777779","赤纬(J2000)":"+12h55m18s","赤纬D(J2000)":"12.921666666666667","可见光星等V":"16.9","摄影(蓝光)星等B":"17.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"10659","标识":"IC2819","M标识":"IC2819","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h26m27.6s","赤经D(J2000)":"11.441","赤纬(J2000)":"+13h50m41s","赤纬D(J2000)":"13.844722222222222","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"70","详细描述":"","简略描述":"cF, S, E 60°, bM"},{"ID":"10660","标识":"IC2820","M标识":"IC2820","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h26m26.8s","赤经D(J2000)":"11.440777777777779","赤纬(J2000)":"+10h14m20s","赤纬D(J2000)":"10.238888888888889","可见光星等V":"15.9","摄影(蓝光)星等B":"16.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"20","详细描述":"","简略描述":"pF, vS, * 16 att n"},{"ID":"10661","标识":"IC2821","M标识":"IC2821","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h26m34.9s","赤经D(J2000)":"11.443027777777777","赤纬(J2000)":"+13h57m45s","赤纬D(J2000)":"13.962499999999999","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small","简略描述":"F, S"},{"ID":"10662","标识":"IC2822","M标识":"IC2822","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h26m34s","赤经D(J2000)":"11.442777777777778","赤纬(J2000)":"+11h26m23s","赤纬D(J2000)":"11.439722222222223","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"115","详细描述":"faint, pretty large, extended 110°, brighter middle, 14th magnitude star to south","简略描述":"F, pL, E 110°, bM, * 14 s"},{"ID":"10663","标识":"IC2823","M标识":"IC2823","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h26m44.6s","赤经D(J2000)":"11.445722222222223","赤纬(J2000)":"+12h50m52s","赤纬D(J2000)":"12.847777777777779","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"10","详细描述":"pretty faint, small, extended 20°, possibly binuclear","简略描述":"pF, S, E 20°, biN ?"},{"ID":"10664","标识":"IC2824","M标识":"IC2824","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m4.8s","赤经D(J2000)":"11.451333333333332","赤纬(J2000)":"+14h5m7s","赤纬D(J2000)":"14.085277777777778","可见光星等V":"99","摄影(蓝光)星等B":"15","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, round, brighter middle","简略描述":"pF, S, R, bM"},{"ID":"10665","标识":"IC2825","M标识":"IC2825","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m3.6s","赤经D(J2000)":"11.450999999999999","赤纬(J2000)":"+8h26m39s","赤纬D(J2000)":"8.444166666666668","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, S, iF, N, * 15 att sf"},{"ID":"10666","标识":"IC2826","M标识":"IC2826","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m6.1s","赤经D(J2000)":"11.451694444444444","赤纬(J2000)":"+13h14m19s","赤纬D(J2000)":"13.23861111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"pretty faint, considerably small, nuclear","简略描述":"pF, cS, N"},{"ID":"10667","标识":"IC2827","M标识":"IC2827","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m9.8s","赤经D(J2000)":"11.45272222222222","赤纬(J2000)":"+11h30m52s","赤纬D(J2000)":"11.514444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, extremely small, 14th magnitude star to southeast","简略描述":"F, eS, * 14 sf"},{"ID":"10668","标识":"IC2828","M标识":"IC2828","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m11.1s","赤经D(J2000)":"11.453083333333332","赤纬(J2000)":"+8h43m56s","赤纬D(J2000)":"8.732222222222223","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"51","详细描述":"","简略描述":"pF, cS, E 65°, bM, 2 st p"},{"ID":"10669","标识":"IC2829","M标识":"IC2829","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m14.9s","赤经D(J2000)":"11.454138888888888","赤纬(J2000)":"+10h19m22s","赤纬D(J2000)":"10.322777777777777","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"0","详细描述":"","简略描述":"cF, vS, R, bM, spir, * 12 s"},{"ID":"10670","标识":"IC2830","M标识":"IC2830","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m21.7s","赤经D(J2000)":"11.456027777777777","赤纬(J2000)":"+7h48m51s","赤纬D(J2000)":"7.814166666666667","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"10671","标识":"IC2831","M标识":"IC2831","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m22.7s","赤经D(J2000)":"11.456305555555554","赤纬(J2000)":"+8h58m45s","赤纬D(J2000)":"8.979166666666666","可见光星等V":"99","摄影(蓝光)星等B":"15.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"10672","标识":"IC2832","M标识":"IC2832","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m25s","赤经D(J2000)":"11.456944444444444","赤纬(J2000)":"+13h59m23s","赤纬D(J2000)":"13.989722222222222","可见光星等V":"99","摄影(蓝光)星等B":"15.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, round, brighter middle","简略描述":"pF, S, R, bM"},{"ID":"10673","标识":"IC2833","M标识":"IC2833","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m26.1s","赤经D(J2000)":"11.45725","赤纬(J2000)":"+13h36m10s","赤纬D(J2000)":"13.602777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, S, iF, diffic, * 14 att ? np"},{"ID":"10674","标识":"IC2834","M标识":"IC2834","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m31.8s","赤经D(J2000)":"11.458833333333333","赤纬(J2000)":"+13h34m14s","赤纬D(J2000)":"13.570555555555556","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"","简略描述":"vF, S, iF, diffic, other neb att f"},{"ID":"10675","标识":"IC2835","M标识":"IC2835","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m31.5s","赤经D(J2000)":"11.458749999999998","赤纬(J2000)":"+12h8m36s","赤纬D(J2000)":"12.143333333333333","可见光星等V":"16.8","摄影(蓝光)星等B":"17.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"140","详细描述":"considerably faint, very small, round, brighter middle, 14th magnitude star to east","简略描述":"cF, vS, R, bM, * 14 f"},{"ID":"10676","标识":"IC2836","M标识":"IC2836","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m37.3s","赤经D(J2000)":"11.46036111111111","赤纬(J2000)":"+9h5m8s","赤纬D(J2000)":"9.085555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, vS, neb * 15 n 1'"},{"ID":"10677","标识":"IC2837","M标识":"IC2837","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m41.9s","赤经D(J2000)":"11.461638888888888","赤纬(J2000)":"+10h18m47s","赤纬D(J2000)":"10.313055555555556","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"considerably faint, very small, round, brighter middle, spiral","简略描述":"cF, vS, R, bM, spir"},{"ID":"10678","标识":"IC2838","M标识":"IC2838","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m45.2s","赤经D(J2000)":"11.462555555555555","赤纬(J2000)":"+14h0m42s","赤纬D(J2000)":"14.011666666666667","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, small","简略描述":"F, S"},{"ID":"10679","标识":"IC2839","M标识":"IC2839","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m45.5s","赤经D(J2000)":"11.462638888888888","赤纬(J2000)":"+10h49m11s","赤纬D(J2000)":"10.819722222222222","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"5","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"10680","标识":"IC2840","M标识":"IC2840","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"dE","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m47.5s","赤经D(J2000)":"11.463194444444444","赤纬(J2000)":"+13h25m34s","赤纬D(J2000)":"13.42611111111111","可见光星等V":"16.9","摄影(蓝光)星等B":"17.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"10681","标识":"IC2841","M标识":"IC2841","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m48.9s","赤经D(J2000)":"11.463583333333332","赤纬(J2000)":"+12h36m6s","赤纬D(J2000)":"12.601666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle, difficult","简略描述":"F, vS, R, bM, diffic"},{"ID":"10682","标识":"IC2842","M标识":"IC2842","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m47.7s","赤经D(J2000)":"11.463249999999999","赤纬(J2000)":"+9h39m7s","赤纬D(J2000)":"9.651944444444444","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"45","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"10683","标识":"IC2843","M标识":"IC2843","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"D","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m58.1s","赤经D(J2000)":"11.466138888888889","赤纬(J2000)":"+13h11m2s","赤纬D(J2000)":"13.18388888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"","简略描述":"F, cS, R, bM, diffic, * 8.7 f 2'"},{"ID":"10684","标识":"IC2844","M标识":"IC2844","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h27m58.1s","赤经D(J2000)":"11.466138888888889","赤纬(J2000)":"+11h27m12s","赤纬D(J2000)":"11.453333333333333","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"120","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"10685","标识":"IC2845","M标识":"IC2845","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m0.4s","赤经D(J2000)":"11.466777777777779","赤纬(J2000)":"+12h31m49s","赤纬D(J2000)":"12.530277777777778","可见光星等V":"17","摄影(蓝光)星等B":"17.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"80","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"10686","标识":"IC2846","M标识":"IC2846","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m0.4s","赤经D(J2000)":"11.466777777777779","赤纬(J2000)":"+11h9m31s","赤纬D(J2000)":"11.158611111111112","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"114","详细描述":"pretty bright, very small, round, brighter middle, 12th magnitude star to east","简略描述":"pB, vS, R, bM, * 12 f"},{"ID":"10687","标识":"IC2847","M标识":"IC2847","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m3.4s","赤经D(J2000)":"11.467611111111111","赤纬(J2000)":"+13h55m46s","赤纬D(J2000)":"13.929444444444444","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"10","详细描述":"very faint, very small, irregular figure, difficult","简略描述":"vF, vS, iF, diffic"},{"ID":"10688","标识":"IC2848","M标识":"IC2848","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"dE","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m13.6s","赤经D(J2000)":"11.470444444444444","赤纬(J2000)":"+13h1m51s","赤纬D(J2000)":"13.030833333333334","可见光星等V":"17.4","摄影(蓝光)星等B":"18","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"10689","标识":"IC2849","M标识":"IC2849","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m11.7s","赤经D(J2000)":"11.469916666666666","赤纬(J2000)":"+9h5m38s","赤纬D(J2000)":"9.09388888888889","可见光星等V":"99","摄影(蓝光)星等B":"15.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, round, brighter middle","简略描述":"pF, vS, R, bM"},{"ID":"10690","标识":"IC2850","M标识":"IC2850","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m13s","赤经D(J2000)":"11.470277777777778","赤纬(J2000)":"+9h3m46s","赤纬D(J2000)":"9.062777777777779","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"126","详细描述":"","简略描述":"pB, S, E 120°, bM, * 13 sf"},{"ID":"10691","标识":"IC2851","M标识":"IC2851","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m14.5s","赤经D(J2000)":"11.470694444444444","赤纬(J2000)":"+11h23m39s","赤纬D(J2000)":"11.394166666666667","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"45","详细描述":"faint, small","简略描述":"F, S"},{"ID":"10692","标识":"IC2852","M标识":"IC2852","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m14s","赤经D(J2000)":"11.470555555555556","赤纬(J2000)":"+9h48m4s","赤纬D(J2000)":"9.801111111111112","可见光星等V":"16.5","摄影(蓝光)星等B":"17.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"110","详细描述":"faint, very small, round, brighter middle, spiral, possibly nebulous star","简略描述":"F, vS, R, bM, spir, ? neb *"},{"ID":"10693","标识":"IC2853","M标识":"IC2853","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m14.8s","赤经D(J2000)":"11.470777777777778","赤纬(J2000)":"+9h8m52s","赤纬D(J2000)":"9.147777777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.5","方位角":"0","详细描述":"pretty bright, pretty small, extended 160°, brighter middle","简略描述":"pB, pS, E 160°, bM"},{"ID":"10694","标识":"IC2854","M标识":"IC2854","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m19.8s","赤经D(J2000)":"11.472166666666666","赤纬(J2000)":"+8h58m8s","赤纬D(J2000)":"8.96888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle, spiral","简略描述":"F, vS, R, bM, spir"},{"ID":"10695","标识":"IC2855","M标识":"IC2855","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m24.9s","赤经D(J2000)":"11.473583333333334","赤纬(J2000)":"+9h41m16s","赤纬D(J2000)":"9.687777777777779","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"10696","标识":"IC2856","M标识":"IC2856","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h28m16.3s","赤经D(J2000)":"11.471194444444444","赤纬(J2000)":"-12h53m26s","赤纬D(J2000)":"-12.890555555555554","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"42","详细描述":"very faint, very small, considerably extended 30°, considerably brighter middle, suspected","简略描述":"vF, vS, cE 30°, cbM, susp"},{"ID":"10697","标识":"IC2857","M标识":"IC2857","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m31s","赤经D(J2000)":"11.475277777777778","赤纬(J2000)":"+9h6m14s","赤纬D(J2000)":"9.10388888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.8","短轴(分)":"0.2","方位角":"161","详细描述":"faint, pretty large, much extended 160°, brighter middle","简略描述":"F, pL, mE 160°, bM"},{"ID":"10698","标识":"IC2858","M标识":"IC2858","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m36s","赤经D(J2000)":"11.476666666666667","赤纬(J2000)":"+13h39m41s","赤纬D(J2000)":"13.661388888888888","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"120","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"10699","标识":"IC2859","M标识":"IC2859","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m41.8s","赤经D(J2000)":"11.478277777777778","赤纬(J2000)":"+9h6m32s","赤纬D(J2000)":"9.108888888888888","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, very small, round, brighter middle","简略描述":"cF, vS, R, bM"},{"ID":"10700","标识":"IC2860","M标识":"IC2860","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m44.6s","赤经D(J2000)":"11.479055555555556","赤纬(J2000)":"+14h2m29s","赤纬D(J2000)":"14.04138888888889","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"10701","标识":"IC2861","M标识":"IC2861","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h28m58.9s","赤经D(J2000)":"11.483027777777778","赤纬(J2000)":"+38h51m7s","赤纬D(J2000)":"38.85194444444445","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"99","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"10702","标识":"IC2862","M标识":"IC2862","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m43.3s","赤经D(J2000)":"11.478694444444445","赤纬(J2000)":"+10h7m40s","赤纬D(J2000)":"10.127777777777778","可见光星等V":"16.4","摄影(蓝光)星等B":"17.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"45","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"10703","标识":"IC2863","M标识":"IC2863","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m54s","赤经D(J2000)":"11.481666666666667","赤纬(J2000)":"+9h5m43s","赤纬D(J2000)":"9.095277777777778","可见光星等V":"99","摄影(蓝光)星等B":"15.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, extended 110°, brighter middle","简略描述":"pF, vS, E 110°, bM"},{"ID":"10704","标识":"IC2864","M标识":"IC2864","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m59.6s","赤经D(J2000)":"11.483222222222222","赤纬(J2000)":"+12h22m5s","赤纬D(J2000)":"12.368055555555555","可见光星等V":"16.9","摄影(蓝光)星等B":"17.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"160","详细描述":"faint, very small, irregular figure","简略描述":"F, vS, iF"},{"ID":"10705","标识":"IC2865","M标识":"IC2865","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h28m59.7s","赤经D(J2000)":"11.48325","赤纬(J2000)":"+9h6m55s","赤纬D(J2000)":"9.115277777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"10706","标识":"IC2866","M标识":"IC2866","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m0s","赤经D(J2000)":"11.483333333333333","赤纬(J2000)":"+9h2m32s","赤纬D(J2000)":"9.042222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very small, very faint, irregular figure","简略描述":"vS, vF, iF"},{"ID":"10707","标识":"IC2867","M标识":"IC2867","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m0.4s","赤经D(J2000)":"11.483444444444444","赤纬(J2000)":"+9h5m24s","赤纬D(J2000)":"9.09","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"80","详细描述":"considerably faint, small, irregular figure, very difficult, 14th magnitude star to northwest","简略描述":"cF, S, iF, v diffic, * 14 np"},{"ID":"10708","标识":"IC2868","M标识":"IC2868","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m5.7s","赤经D(J2000)":"11.484916666666665","赤纬(J2000)":"+9h5m42s","赤纬D(J2000)":"9.095","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"10709","标识":"IC2869","M标识":"IC2869","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m8.7s","赤经D(J2000)":"11.48575","赤纬(J2000)":"+9h1m4s","赤纬D(J2000)":"9.017777777777779","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, brighter middle, spiral","简略描述":"vF, S, R, bM, spir"},{"ID":"10710","标识":"IC2870","M标识":"IC2870","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m12.3s","赤经D(J2000)":"11.486749999999999","赤纬(J2000)":"+11h51m54s","赤纬D(J2000)":"11.865","可见光星等V":"14.9","摄影(蓝光)星等B":"15.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"15.1","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"","详细描述":"faint, pretty large, diffuse, difficult","简略描述":"F, pL, dif, diffic"},{"ID":"10711","标识":"IC2871","M标识":"IC2871","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m20.6s","赤经D(J2000)":"11.489055555555554","赤纬(J2000)":"+8h36m9s","赤纬D(J2000)":"8.6025","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"84","详细描述":"faint, considerably small, extended 85°","简略描述":"F, cS, E 85°"},{"ID":"10712","标识":"IC2872","M标识":"IC2872","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h28m16s","赤经D(J2000)":"11.471111111111112","赤纬(J2000)":"-62h59m0s","赤纬D(J2000)":"-62.983333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"6","方位角":"","详细描述":"very large, much extended, brighter middle","简略描述":"vL, mE, bM"},{"ID":"10713","标识":"IC2873","M标识":"IC2873","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m27.5s","赤经D(J2000)":"11.490972222222222","赤纬(J2000)":"+13h13m12s","赤纬D(J2000)":"13.22","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"3","详细描述":"pretty faint, considerably small, extended 5°, brighter middle","简略描述":"pF, cS, E 5°, bM"},{"ID":"10714","标识":"IC2874","M标识":"IC2874","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m27.3s","赤经D(J2000)":"11.490916666666665","赤纬(J2000)":"+10h37m40s","赤纬D(J2000)":"10.627777777777778","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"40","详细描述":"faint, pretty small, irregular figure, possible cluster","简略描述":"F, pS, iF, ? Cl"},{"ID":"10715","标识":"IC2875","M标识":"IC2875","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m34.9s","赤经D(J2000)":"11.493027777777776","赤纬(J2000)":"+12h59m27s","赤纬D(J2000)":"12.990833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle, 9th magnitude star to southwest","简略描述":"F, vS, R, bM, * 9 sp"},{"ID":"10716","标识":"IC2876","M标识":"IC2876","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m33.5s","赤经D(J2000)":"11.492638888888887","赤纬(J2000)":"+9h0m58s","赤纬D(J2000)":"9.016111111111112","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"170","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"10717","标识":"IC2877","M标识":"IC2877","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"D","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m37.5s","赤经D(J2000)":"11.493749999999999","赤纬(J2000)":"+12h51m13s","赤纬D(J2000)":"12.85361111111111","可见光星等V":"15.4","摄影(蓝光)星等B":"16","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"10718","标识":"IC2878","M标识":"IC2878","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m38.2s","赤经D(J2000)":"11.493944444444443","赤纬(J2000)":"+9h58m3s","赤纬D(J2000)":"9.9675","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.35","短轴(分)":"0.2","方位角":"115","详细描述":"pretty faint, very small, irregular figure, nuclear","简略描述":"pF, vS, iF, N"},{"ID":"10719","标识":"IC2879","M标识":"IC2879","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m44.2s","赤经D(J2000)":"11.49561111111111","赤纬(J2000)":"+9h0m49s","赤纬D(J2000)":"9.01361111111111","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"160","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"10720","标识":"IC2880","M标识":"IC2880","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m53.1s","赤经D(J2000)":"11.498083333333332","赤纬(J2000)":"+13h11m56s","赤纬D(J2000)":"13.19888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, round, brighter middle","简略描述":"pF, vS, R, bM"},{"ID":"10721","标识":"IC2881","M标识":"IC2881","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E+S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h29m54.5s","赤经D(J2000)":"11.49847222222222","赤纬(J2000)":"+12h30m41s","赤纬D(J2000)":"12.511388888888888","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"85","详细描述":"faint, very small","简略描述":"F, vS"},{"ID":"10722","标识":"IC2882","M标识":"IC2882","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h30m9.5s","赤经D(J2000)":"11.502638888888889","赤纬(J2000)":"+11h59m23s","赤纬D(J2000)":"11.989722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, brighter middle, difficult","简略描述":"vF, S, R, bM, diffic"},{"ID":"10723","标识":"IC2883","M标识":"IC2883","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h30m15.7s","赤经D(J2000)":"11.50436111111111","赤纬(J2000)":"+10h54m41s","赤纬D(J2000)":"10.911388888888888","可见光星等V":"16.7","摄影(蓝光)星等B":"17.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"10724","标识":"IC2884","M标识":"IC2884","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"堰蜓座","星座(En)":"CHA","赤经(J2000)":"11h27m42.6s","赤经D(J2000)":"11.461833333333333","赤纬(J2000)":"-79h44m9s","赤纬D(J2000)":"-79.73583333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eeF, eS, cE 145°, susp"},{"ID":"10725","标识":"IC2885","M标识":"IC2885","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h30m22.5s","赤经D(J2000)":"11.50625","赤纬(J2000)":"+9h46m20s","赤纬D(J2000)":"9.772222222222224","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle, spiral","简略描述":"F, vS, R, bM, spir"},{"ID":"10726","标识":"IC2886","M标识":"IC2886","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h30m24.4s","赤经D(J2000)":"11.506777777777778","赤纬(J2000)":"+11h33m47s","赤纬D(J2000)":"11.563055555555556","可见光星等V":"16.5","摄影(蓝光)星等B":"17.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, round, brighter middle, spiral, 12th magnitude star to southeast","简略描述":"F, vS, R, bM, spir, * 12 sf"},{"ID":"10727","标识":"IC2887","M标识":"IC2887","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h30m29.5s","赤经D(J2000)":"11.508194444444445","赤纬(J2000)":"+9h23m18s","赤纬D(J2000)":"9.388333333333334","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.9","短轴(分)":"0.1","方位角":"126","详细描述":"faint, pretty small, extended, curved, 10th magnitude star 1 arcmin to northeast","简略描述":"F, pS, E, curved, * 10 nf 1'"},{"ID":"10728","标识":"IC2888","M标识":"IC2888","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h30m35s","赤经D(J2000)":"11.509722222222223","赤纬(J2000)":"+9h54m32s","赤纬D(J2000)":"9.908888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, extended 130°","简略描述":"pF, vS, E 130°"},{"ID":"10729","标识":"IC2889","M标识":"IC2889","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h30m28.9s","赤经D(J2000)":"11.508027777777778","赤纬(J2000)":"-13h5m30s","赤纬D(J2000)":"-13.091666666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"156","详细描述":"extremely faint, very small, considerably extended 165°, brighter middle, suspected","简略描述":"eF, vS, cE 165°, bM, susp"},{"ID":"10730","标识":"IC2890","M标识":"IC2890","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h30m46.1s","赤经D(J2000)":"11.512805555555556","赤纬(J2000)":"+13h10m57s","赤纬D(J2000)":"13.1825","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"10731","标识":"IC2891","M标识":"IC2891","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h30m48.1s","赤经D(J2000)":"11.513361111111111","赤纬(J2000)":"+12h40m39s","赤纬D(J2000)":"12.6775","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, irregular figure, nuclear, difficult","简略描述":"F, S, iF, N, diffic"},{"ID":"10732","标识":"IC2892","M标识":"IC2892","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h30m49s","赤经D(J2000)":"11.51361111111111","赤纬(J2000)":"+10h35m17s","赤纬D(J2000)":"10.588055555555556","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"120","详细描述":"faint, very small, irregular figure","简略描述":"F, vS, iF"},{"ID":"10733","标识":"IC2893","M标识":"IC2893","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h30m53.4s","赤经D(J2000)":"11.514833333333334","赤纬(J2000)":"+13h23m24s","赤纬D(J2000)":"13.389999999999999","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"10","详细描述":"","简略描述":"F, eS, E 345°"},{"ID":"10734","标识":"IC2894","M标识":"IC2894","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h30m57.4s","赤经D(J2000)":"11.515944444444445","赤纬(J2000)":"+13h14m6s","赤纬D(J2000)":"13.235","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"65","详细描述":"very faint, considerably small, round, brighter middle","简略描述":"vF, cS, R, bM"},{"ID":"10735","标识":"IC2895","M标识":"IC2895","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h30m57.3s","赤经D(J2000)":"11.515916666666667","赤纬(J2000)":"+9h58m39s","赤纬D(J2000)":"9.977500000000001","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"10736","标识":"IC2896","M标识":"IC2896","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m13.4s","赤经D(J2000)":"11.52038888888889","赤纬(J2000)":"+12h21m2s","赤纬D(J2000)":"12.350555555555555","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"160","详细描述":"","简略描述":"pB, vS, annular ?"},{"ID":"10737","标识":"IC2897","M标识":"IC2897","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m19.5s","赤经D(J2000)":"11.522083333333335","赤纬(J2000)":"+11h32m57s","赤纬D(J2000)":"11.549166666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"cF, vS, R, bM, * 14 p"},{"ID":"10738","标识":"IC2898","M标识":"IC2898","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m20.4s","赤经D(J2000)":"11.522333333333334","赤纬(J2000)":"+13h20m8s","赤纬D(J2000)":"13.335555555555556","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"135","详细描述":"","简略描述":"vF, S, iF, * 14 nf"},{"ID":"10739","标识":"IC2899","M标识":"IC2899","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m20.4s","赤经D(J2000)":"11.522333333333334","赤纬(J2000)":"+10h38m6s","赤纬D(J2000)":"10.635","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, S, E 350°, ? st"},{"ID":"10740","标识":"IC2900","M标识":"IC2900","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m29.6s","赤经D(J2000)":"11.52488888888889","赤纬(J2000)":"+13h10m4s","赤纬D(J2000)":"13.167777777777777","可见光星等V":"16.9","摄影(蓝光)星等B":"17.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"130","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"10741","标识":"IC2901","M标识":"IC2901","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m32.1s","赤经D(J2000)":"11.525583333333334","赤纬(J2000)":"+12h42m1s","赤纬D(J2000)":"12.700277777777776","可见光星等V":"17.1","摄影(蓝光)星等B":"17.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"110","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"10742","标识":"IC2902","M标识":"IC2902","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m33.2s","赤经D(J2000)":"11.52588888888889","赤纬(J2000)":"+14h13m21s","赤纬D(J2000)":"14.2225","可见光星等V":"99","摄影(蓝光)星等B":"14.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, brighter middle, difficult","简略描述":"F, S, R, bM, diffic"},{"ID":"10743","标识":"IC2903","M标识":"IC2903","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m40.8s","赤经D(J2000)":"11.528","赤纬(J2000)":"+12h38m32s","赤纬D(J2000)":"12.642222222222221","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"45","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"10744","标识":"IC2904","M标识":"IC2904","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m42.5s","赤经D(J2000)":"11.528472222222224","赤纬(J2000)":"+13h11m5s","赤纬D(J2000)":"13.184722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"FN in vF, dif neb"},{"ID":"10745","标识":"IC2905","M标识":"IC2905","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m47.1s","赤经D(J2000)":"11.52975","赤纬(J2000)":"+9h6m25s","赤纬D(J2000)":"9.106944444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, S, R, bM, * 14 nf"},{"ID":"10746","标识":"IC2906","M标识":"IC2906","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m49.6s","赤经D(J2000)":"11.530444444444445","赤纬(J2000)":"+13h7m58s","赤纬D(J2000)":"13.132777777777779","可见光星等V":"99","摄影(蓝光)星等B":"15.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"10747","标识":"IC2907","M标识":"IC2907","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m49s","赤经D(J2000)":"11.530277777777778","赤纬(J2000)":"+9h53m57s","赤纬D(J2000)":"9.899166666666666","可见光星等V":"99","摄影(蓝光)星等B":"15.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"10748","标识":"IC2908","M标识":"IC2908","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m50.6s","赤经D(J2000)":"11.530722222222224","赤纬(J2000)":"+12h56m17s","赤纬D(J2000)":"12.938055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, 13th magnitude star to southwest","简略描述":"vF, S, iF, * 13 sp"},{"ID":"10749","标识":"IC2909","M标识":"IC2909","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h31m50.9s","赤经D(J2000)":"11.530805555555556","赤纬(J2000)":"+11h28m13s","赤纬D(J2000)":"11.470277777777778","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, small, round, very little brighter middle","简略描述":"vF, S, R, vlbM"},{"ID":"10750","标识":"IC2910","M标识":"IC2910","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h31m54.6s","赤经D(J2000)":"11.531833333333335","赤纬(J2000)":"-9h43m29s","赤纬D(J2000)":"-9.724722222222223","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"130","详细描述":"very faint, very small, suddenly brighter middle like a 13th-magnitude star","简略描述":"vF, vS, sbM * 13"},{"ID":"10751","标识":"IC2911","M标识":"IC2911","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h32m5.3s","赤经D(J2000)":"11.534805555555556","赤纬(J2000)":"+12h58m41s","赤纬D(J2000)":"12.978055555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, cS, iF, other nf"},{"ID":"10752","标识":"IC2912","M标识":"IC2912","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h32m7s","赤经D(J2000)":"11.535277777777777","赤纬(J2000)":"+11h42m37s","赤纬D(J2000)":"11.710277777777778","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.5","短轴(分)":"0.1","方位角":"85","详细描述":"faint, small, round, brighter middle, difficult","简略描述":"F, S, R, bM, diffic"},{"ID":"10753","标识":"IC2913","M标识":"IC2913","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"11h31m51.3s","赤经D(J2000)":"11.530916666666668","赤纬(J2000)":"-30h24m38s","赤纬D(J2000)":"-30.410555555555554","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"","简略描述":"B, pS, R, sf 3717"},{"ID":"10754","标识":"IC2914","M标识":"IC2914","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h32m12.4s","赤经D(J2000)":"11.536777777777777","赤纬(J2000)":"+13h29m31s","赤纬D(J2000)":"13.491944444444444","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"0","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"10755","标识":"IC2915","M标识":"IC2915","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h32m15.6s","赤经D(J2000)":"11.537666666666667","赤纬(J2000)":"+14h29m2s","赤纬D(J2000)":"14.483888888888888","可见光星等V":"99","摄影(蓝光)星等B":"14.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, considerably small, round, brighter middle","简略描述":"F, cS, R, bM"},{"ID":"10756","标识":"IC2916","M标识":"IC2916","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h32m16.1s","赤经D(J2000)":"11.537805555555556","赤纬(J2000)":"+11h41m2s","赤纬D(J2000)":"11.68388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"10757","标识":"IC2917","M标识":"IC2917","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h32m19.4s","赤经D(J2000)":"11.538722222222223","赤纬(J2000)":"+10h56m45s","赤纬D(J2000)":"10.945833333333333","可见光星等V":"16.7","摄影(蓝光)星等B":"17.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.15","短轴(分)":"0.1","方位角":"50","详细描述":"very faint, pretty small, irregular figure","简略描述":"vF, pS, iF"},{"ID":"10758","标识":"IC2918","M标识":"IC2918","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h32m26.2s","赤经D(J2000)":"11.540611111111112","赤纬(J2000)":"+13h14m55s","赤纬D(J2000)":"13.24861111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, extended 100°, brighter middle","简略描述":"vF, S, E 100°, bM"},{"ID":"10759","标识":"IC2919","M标识":"IC2919","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h32m35s","赤经D(J2000)":"11.543055555555556","赤纬(J2000)":"+14h11m25s","赤纬D(J2000)":"14.190277777777778","可见光星等V":"15.9","摄影(蓝光)星等B":"16.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"50","详细描述":"pretty faint, considerably small, round, brighter middle","简略描述":"pF, cS, R, bM"},{"ID":"10760","标识":"IC2920","M标识":"IC2920","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h32m49s","赤经D(J2000)":"11.546944444444444","赤纬(J2000)":"+12h33m26s","赤纬D(J2000)":"12.557222222222222","可见光星等V":"99","摄影(蓝光)星等B":"15","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"10761","标识":"IC2921","M标识":"IC2921","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h32m49.2s","赤经D(J2000)":"11.547","赤纬(J2000)":"+10h17m49s","赤纬D(J2000)":"10.296944444444444","可见光星等V":"16","摄影(蓝光)星等B":"16.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"130","详细描述":"considerably faint, small, round, brighter middle, spiral","简略描述":"cF, S, R, bM, spir"},{"ID":"10762","标识":"IC2922","M标识":"IC2922","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h32m51.3s","赤经D(J2000)":"11.547583333333334","赤纬(J2000)":"+12h55m21s","赤纬D(J2000)":"12.9225","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, very small, round, brighter middle","简略描述":"pB, vS, R, bM"},{"ID":"10763","标识":"IC2923","M标识":"IC2923","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h32m53.7s","赤经D(J2000)":"11.54825","赤纬(J2000)":"+13h9m50s","赤纬D(J2000)":"13.16388888888889","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, considerably small, irregular figure, nuclear, difficult, 10th magnitude star to southeast","简略描述":"vF, cS, iF, N, diffic, * 10 sf"},{"ID":"10764","标识":"IC2924","M标识":"IC2924","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h32m52.3s","赤经D(J2000)":"11.54786111111111","赤纬(J2000)":"+9h1m26s","赤纬D(J2000)":"9.023888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nuclear, 11th magnitude star to northeast","简略描述":"vF, S, iF, N, * 11 nf"},{"ID":"10765","标识":"IC2925","M标识":"IC2925","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h33m13.2s","赤经D(J2000)":"11.553666666666667","赤纬(J2000)":"+34h15m56s","赤纬D(J2000)":"34.26555555555556","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"15","详细描述":"faint, small, round, gradually brighter middle, binuclear","简略描述":"F, S, R, gbM, biN"},{"ID":"10766","标识":"IC2926","M标识":"IC2926","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h33m4.7s","赤经D(J2000)":"11.551305555555556","赤纬(J2000)":"+12h26m13s","赤纬D(J2000)":"12.436944444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, round, stellar nucleus, spiral","简略描述":"pF, vS, R, stell N, spir"},{"ID":"10767","标识":"IC2927","M标识":"IC2927","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h33m4.9s","赤经D(J2000)":"11.551361111111111","赤纬(J2000)":"+13h5m7s","赤纬D(J2000)":"13.085277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure","简略描述":"vF, vS, iF"},{"ID":"10768","标识":"IC2928","M标识":"IC2928","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h33m29.9s","赤经D(J2000)":"11.558305555555556","赤纬(J2000)":"+34h18m58s","赤纬D(J2000)":"34.316111111111105","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"143","详细描述":"faint, considerably small, round, gradually brighter middle and nucleus","简略描述":"F, cS, R, gbMN"},{"ID":"10769","标识":"IC2929","M标识":"IC2929","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h33m31.4s","赤经D(J2000)":"11.558722222222222","赤纬(J2000)":"+12h8m12s","赤纬D(J2000)":"12.136666666666667","可见光星等V":"15.9","摄影(蓝光)星等B":"16.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, pretty small, diffuse","简略描述":"F, pS, dif"},{"ID":"10770","标识":"IC2930","M标识":"IC2930","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h33m44.1s","赤经D(J2000)":"11.56225","赤纬(J2000)":"+10h5m19s","赤纬D(J2000)":"10.088611111111112","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"60","详细描述":"","简略描述":"F, cS, E 60°, bM"},{"ID":"10771","标识":"IC2931","M标识":"IC2931","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h33m50.6s","赤经D(J2000)":"11.564055555555557","赤纬(J2000)":"+12h28m0s","赤纬D(J2000)":"12.466666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, cS, N, ?neb * 15 np 20\""},{"ID":"10772","标识":"IC2932","M标识":"IC2932","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h33m53.5s","赤经D(J2000)":"11.564861111111112","赤纬(J2000)":"+10h32m38s","赤纬D(J2000)":"10.543888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, round, brighter middle","简略描述":"pB, S, R, bM"},{"ID":"10773","标识":"IC2933","M标识":"IC2933","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h34m12.7s","赤经D(J2000)":"11.570194444444445","赤纬(J2000)":"+34h18m46s","赤纬D(J2000)":"34.312777777777775","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"8","详细描述":"faint, considerably small, extended north-south, gradually brighter middle and nucleus","简略描述":"F, cS, E ns, gbMN"},{"ID":"10774","标识":"IC2934","M标识":"IC2934","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h34m19.6s","赤经D(J2000)":"11.572111111111111","赤纬(J2000)":"+13h19m17s","赤纬D(J2000)":"13.321388888888889","可见光星等V":"15.3","摄影(蓝光)星等B":"16","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"159","详细描述":"","简略描述":"F, S, iF, * 14 nf ?'"},{"ID":"10775","标识":"IC2935","M标识":"IC2935","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h34m48.6s","赤经D(J2000)":"11.580166666666667","赤纬(J2000)":"+10h15m0s","赤纬D(J2000)":"10.25","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, considerably small, extended 130°, brighter middle","简略描述":"cF, cS, E 130°, bM"},{"ID":"10776","标识":"IC2936","M标识":"IC2936","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h34m56.9s","赤经D(J2000)":"11.582472222222222","赤纬(J2000)":"+13h0m31s","赤纬D(J2000)":"13.008611111111112","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"10.9","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"10777","标识":"IC2937","M标识":"IC2937","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h35m3.4s","赤经D(J2000)":"11.584277777777778","赤纬(J2000)":"+10h6m14s","赤纬D(J2000)":"10.10388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"10778","标识":"IC2938","M标识":"IC2938","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h35m36.3s","赤经D(J2000)":"11.593416666666668","赤纬(J2000)":"+13h40m48s","赤纬D(J2000)":"13.68","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"considerably faint, pretty small","简略描述":"cF, pS"},{"ID":"10779","标识":"IC2939","M标识":"IC2939","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h35m38s","赤经D(J2000)":"11.59388888888889","赤纬(J2000)":"+10h41m50s","赤纬D(J2000)":"10.697222222222223","可见光星等V":"99","摄影(蓝光)星等B":"15.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, small, round, brighter middle","简略描述":"cF, S, R, bM"},{"ID":"10780","标识":"IC2940","M标识":"IC2940","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h36m2.7s","赤经D(J2000)":"11.60075","赤纬(J2000)":"+21h57m42s","赤纬D(J2000)":"21.961666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, susp [not seen at Birr]"},{"ID":"10781","标识":"IC2941","M标识":"IC2941","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h36m10s","赤经D(J2000)":"11.602777777777778","赤纬(J2000)":"+10h3m21s","赤纬D(J2000)":"10.055833333333334","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"72","详细描述":"","简略描述":"F, pL R, bM, spir"},{"ID":"10782","标识":"IC2942","M标识":"IC2942","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"D","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h36m12s","赤经D(J2000)":"11.603333333333333","赤纬(J2000)":"+11h48m55s","赤纬D(J2000)":"11.815277777777778","可见光星等V":"15.4","摄影(蓝光)星等B":"16","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"80","详细描述":"considerably faint, considerably small, round, brighter middle","简略描述":"cF, cS, R, bM"},{"ID":"10783","标识":"IC2943","M标识":"IC2943","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h36m42.2s","赤经D(J2000)":"11.611722222222221","赤纬(J2000)":"+54h50m45s","赤纬D(J2000)":"54.84583333333334","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"pretty faint, small","简略描述":"pF, S"},{"ID":"10784","标识":"IC2944","M标识":"IC2944","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"奔鸡星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h35m47.3s","赤经D(J2000)":"11.596472222222223","赤纬(J2000)":"-63h1m11s","赤纬D(J2000)":"-63.01972222222222","可见光星等V":"99","摄影(蓝光)星等B":"4.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"40","短轴(分)":"20","方位角":"","详细描述":"","简略描述":"* 3.4 in eL neb"},{"ID":"10785","标识":"IC2945","M标识":"IC2945","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h37m4.2s","赤经D(J2000)":"11.617833333333333","赤纬(J2000)":"+12h55m37s","赤纬D(J2000)":"12.926944444444445","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.8","方位角":"","详细描述":"pretty faint, pretty small","简略描述":"pF, pS"},{"ID":"10786","标识":"IC2946","M标识":"IC2946","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h37m29.6s","赤经D(J2000)":"11.62488888888889","赤纬(J2000)":"+32h15m11s","赤纬D(J2000)":"32.253055555555555","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"175","详细描述":"faint, small, round, gradually a very little brighter middle","简略描述":"F, S, R, gvlbM"},{"ID":"10787","标识":"IC2947","M标识":"IC2947","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h37m31.1s","赤经D(J2000)":"11.625305555555556","赤纬(J2000)":"+31h21m42s","赤纬D(J2000)":"31.361666666666668","可见光星等V":"14","摄影(蓝光)星等B":"14.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"12","详细描述":"faint, considerably small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, cS, R, gbM, r"},{"ID":"10788","标识":"IC2948","M标识":"IC2948","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"海山五星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h39m5s","赤经D(J2000)":"11.651388888888889","赤纬(J2000)":"-63h26m36s","赤纬D(J2000)":"-63.44333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"45","短轴(分)":"40","方位角":"","详细描述":"most extremely large","简略描述":"eeL"},{"ID":"10789","标识":"IC2949","M标识":"IC2949","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h40m54.4s","赤经D(J2000)":"11.681777777777777","赤纬(J2000)":"-46h27m16s","赤纬D(J2000)":"-46.45444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"no description","简略描述":"No descr"},{"ID":"10790","标识":"IC2950","M标识":"IC2950","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h41m37.8s","赤经D(J2000)":"11.693833333333334","赤纬(J2000)":"+37h59m33s","赤纬D(J2000)":"37.9925","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"faint, considerably small, a little extended east-west, gradually brighter middle, mottled but not resolved","简略描述":"F, cS, lE pf, gbM, r"},{"ID":"10791","标识":"IC2951","M标识":"IC2951","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h43m24.4s","赤经D(J2000)":"11.723444444444445","赤纬(J2000)":"+19h44m59s","赤纬D(J2000)":"19.749722222222225","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"80","详细描述":"","简略描述":"* 14 in neb"},{"ID":"10792","标识":"IC2952","M标识":"IC2952","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h44m17.1s","赤经D(J2000)":"11.738083333333332","赤纬(J2000)":"+33h21m4s","赤纬D(J2000)":"33.35111111111111","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"170","详细描述":"pretty faint, small, diffuse, very little brighter middle","简略描述":"pF, S, dif, vlbM"},{"ID":"10793","标识":"IC2953","M标识":"IC2953","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h44m25.8s","赤经D(J2000)":"11.740499999999999","赤纬(J2000)":"+33h21m21s","赤纬D(J2000)":"33.35583333333334","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"72","详细描述":"faint, considerably small, diffuse, very little brighter middle","简略描述":"F, cS, dif, vlbM"},{"ID":"10794","标识":"IC2954","M标识":"IC2954","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h45m3.2s","赤经D(J2000)":"11.75088888888889","赤纬(J2000)":"+26h47m12s","赤纬D(J2000)":"26.78666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, gradually brighter middle, stellar","简略描述":"F, S, R, gbM, stell"},{"ID":"10795","标识":"IC2955","M标识":"IC2955","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h45m5s","赤经D(J2000)":"11.751388888888888","赤纬(J2000)":"+19h37m22s","赤纬D(J2000)":"19.622777777777777","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"","简略描述":"eF, close to III 385"},{"ID":"10796","标识":"IC2956","M标识":"IC2956","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h45m17.6s","赤经D(J2000)":"11.754888888888889","赤纬(J2000)":"+26h46m0s","赤纬D(J2000)":"26.766666666666666","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"68","详细描述":"pretty faint, considerably small, a little brighter middle","简略描述":"pF, cS, lbM"},{"ID":"10797","标识":"IC2957","M标识":"IC2957","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h45m37s","赤经D(J2000)":"11.760277777777778","赤纬(J2000)":"+31h17m58s","赤纬D(J2000)":"31.299444444444447","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"24","详细描述":"","简略描述":"F, S, R, * 14 nr f"},{"ID":"10798","标识":"IC2958","M标识":"IC2958","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h45m42.3s","赤经D(J2000)":"11.76175","赤纬(J2000)":"+33h9m15s","赤纬D(J2000)":"33.15416666666667","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"10799","标识":"IC2959","M标识":"IC2959","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h46m10.1s","赤经D(J2000)":"11.769472222222223","赤纬(J2000)":"+33h6m34s","赤纬D(J2000)":"33.10944444444445","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"102","详细描述":"very faint, small, round, mottled but not resolved","简略描述":"vF, S, R, r"},{"ID":"10800","标识":"IC2960","M标识":"IC2960","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h46m19.7s","赤经D(J2000)":"11.77213888888889","赤纬(J2000)":"+35h0m15s","赤纬D(J2000)":"35.00416666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"90","详细描述":"faint, small, diffuse, very little brighter middle","简略描述":"F, S, dif, vlbM"},{"ID":"10801","标识":"IC2961","M标识":"IC2961","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h47m49.5s","赤经D(J2000)":"11.797083333333333","赤纬(J2000)":"+31h20m43s","赤纬D(J2000)":"31.345277777777778","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"10.3","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"10","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"10802","标识":"IC2962","M标识":"IC2962","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h49m5.7s","赤经D(J2000)":"11.818249999999999","赤纬(J2000)":"-12h18m40s","赤纬D(J2000)":"-12.311111111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, considerably large, irregularly round, 2 stars to north, east","简略描述":"eF, cL, iR, 2 st n, f"},{"ID":"10803","标识":"IC2963","M标识":"IC2963","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h49m24.2s","赤经D(J2000)":"11.82338888888889","赤纬(J2000)":"-5h7m5s","赤纬D(J2000)":"-5.118055555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"99","详细描述":"","简略描述":"v diffic, * 12 npp 20\""},{"ID":"10804","标识":"IC2964","M标识":"IC2964","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h49m52.4s","赤经D(J2000)":"11.831222222222221","赤纬(J2000)":"+12h3m1s","赤纬D(J2000)":"12.050277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eeF, eF * 3s f, 3' s"},{"ID":"10805","标识":"IC2965","M标识":"IC2965","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h54m1.5s","赤经D(J2000)":"11.900416666666667","赤纬(J2000)":"-19h34m8s","赤纬D(J2000)":"-19.56888888888889","可见光星等V":"11.8","摄影(蓝光)星等B":"12.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.9","短轴(分)":"0.7","方位角":"173","详细描述":"bright, small, very much extended, with ray","简略描述":"B, S, vmE, ray"},{"ID":"10806","标识":"IC2966","M标识":"IC2966","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"苍蝇座","星座(En)":"MUS","赤经(J2000)":"11h50m12.9s","赤经D(J2000)":"11.836916666666667","赤纬(J2000)":"-64h52m17s","赤纬D(J2000)":"-64.87138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"2","方位角":"","详细描述":"pretty large, brighter middle","简略描述":"pL, bM"},{"ID":"10807","标识":"IC2967","M标识":"IC2967","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h50m55.2s","赤经D(J2000)":"11.848666666666666","赤纬(J2000)":"+30h51m4s","赤纬D(J2000)":"30.851111111111113","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"15","详细描述":"pretty bright, very small, stellar nucleus","简略描述":"pB, vS, stell N"},{"ID":"10808","标识":"IC2968","M标识":"IC2968","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h52m30.5s","赤经D(J2000)":"11.87513888888889","赤纬(J2000)":"+20h37m33s","赤纬D(J2000)":"20.625833333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"80","详细描述":"","简略描述":"eF, vS, 3937 f 12s"},{"ID":"10809","标识":"IC2969","M标识":"IC2969","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h52m31.2s","赤经D(J2000)":"11.875333333333334","赤纬(J2000)":"-3h52m23s","赤纬D(J2000)":"-3.8730555555555557","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"100","详细描述":"","简略描述":"eF, pS, R, B * f 55s, np of 2"},{"ID":"10810","标识":"IC2970","M标识":"IC2970","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨爵座","星座(En)":"CRT","赤经(J2000)":"11h53m9s","赤经D(J2000)":"11.885833333333332","赤纬(J2000)":"-23h7m24s","赤纬D(J2000)":"-23.123333333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pB, S, R, II 623 f"},{"ID":"10811","标识":"IC2971","M标识":"IC2971","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h53m27.5s","赤经D(J2000)":"11.890972222222222","赤纬(J2000)":"+30h41m51s","赤纬D(J2000)":"30.6975","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"160","详细描述":"faint, small, round, pretty suddenly brighter middle","简略描述":"F, S, R, psbM"},{"ID":"10812","标识":"IC2972","M标识":"IC2972","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h53m40.1s","赤经D(J2000)":"11.894472222222221","赤纬(J2000)":"-3h59m50s","赤纬D(J2000)":"-3.9972222222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"13.5","B-V":"0.4","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"78","详细描述":"","简略描述":"vF, pS, R, 2 B st n, np, sf of 2"},{"ID":"10813","标识":"IC2973","M标识":"IC2973","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h53m50.7s","赤经D(J2000)":"11.897416666666667","赤纬(J2000)":"+33h21m57s","赤纬D(J2000)":"33.365833333333335","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"125","详细描述":"faint, considerably small, diffuse","简略描述":"F, cS, dif"},{"ID":"10814","标识":"IC2974","M标识":"IC2974","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h53m48.7s","赤经D(J2000)":"11.89686111111111","赤纬(J2000)":"-5h10m6s","赤纬D(J2000)":"-5.168333333333334","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"0.5","方位角":"105","详细描述":"most extremely faint, very small, a little extended","简略描述":"eeF, vS, lE"},{"ID":"10815","标识":"IC2975","M标识":"IC2975","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h54m6s","赤经D(J2000)":"11.901666666666667","赤纬(J2000)":"-5h33m42s","赤纬D(J2000)":"-5.5616666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eeF, vS, lE, 3 B st in line n, circle of st n"},{"ID":"10816","标识":"IC2976","M标识":"IC2976","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h56m1.1s","赤经D(J2000)":"11.93363888888889","赤纬(J2000)":"-2h43m14s","赤纬D(J2000)":"-2.720555555555556","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"112","详细描述":"","简略描述":"vF, vS, R, vF * nr nf"},{"ID":"10817","标识":"IC2977","M标识":"IC2977","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"11h55m14.5s","赤经D(J2000)":"11.920694444444443","赤纬(J2000)":"-37h41m46s","赤纬D(J2000)":"-37.69611111111111","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"122","详细描述":"","简略描述":"eF, vS, * 7 sp"},{"ID":"10818","标识":"IC2978","M标识":"IC2978","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h56m23.1s","赤经D(J2000)":"11.93975","赤纬(J2000)":"+32h2m19s","赤纬D(J2000)":"32.03861111111111","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"126","详细描述":"very faint, small, very diffuse","简略描述":"vF, S, v dif"},{"ID":"10819","标识":"IC2979","M标识":"IC2979","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h56m54.2s","赤经D(J2000)":"11.94838888888889","赤纬(J2000)":"+32h9m31s","赤纬D(J2000)":"32.15861111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"171","详细描述":"faint, small, round, a little brighter middle, mottled but not resolved","简略描述":"F, S, R, lbM, r"},{"ID":"10820","标识":"IC2980","M标识":"IC2980","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"苍蝇座","星座(En)":"MUS","赤经(J2000)":"11h57m30s","赤经D(J2000)":"11.958333333333332","赤纬(J2000)":"-73h41m6s","赤纬D(J2000)":"-73.685","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"1","方位角":"42","详细描述":"most extremely faint, extremely small, round, considerably brighter middle","简略描述":"eeF, eS, R, cbM"},{"ID":"10821","标识":"IC2981","M标识":"IC2981","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h55m42.5s","赤经D(J2000)":"11.928472222222222","赤纬(J2000)":"+32h11m24s","赤纬D(J2000)":"32.19","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, round, gradually a very little brighter middle","简略描述":"F, S, R, gvlbM"},{"ID":"10822","标识":"IC2982","M标识":"IC2982","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"狮子座","星座(En)":"LEO","赤经(J2000)":"11h57m51.3s","赤经D(J2000)":"11.96425","赤纬(J2000)":"+27h52m6s","赤纬D(J2000)":"27.868333333333332","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"85","详细描述":"","简略描述":"vF, stell, * 10 nr"},{"ID":"10823","标识":"IC2983","M标识":"IC2983","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"11h58m16s","赤经D(J2000)":"11.971111111111112","赤纬(J2000)":"-2h6m36s","赤纬D(J2000)":"-2.11","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"10824","标识":"IC2984","M标识":"IC2984","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h59m7.2s","赤经D(J2000)":"11.985333333333333","赤纬(J2000)":"+30h41m51s","赤纬D(J2000)":"30.6975","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"75","详细描述":"faint, considerably small, round, very little brighter middle","简略描述":"F, cS, R, vlbM"},{"ID":"10825","标识":"IC2985","M标识":"IC2985","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h59m12.5s","赤经D(J2000)":"11.986805555555554","赤纬(J2000)":"+30h43m52s","赤纬D(J2000)":"30.731111111111108","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.5","方位角":"142","详细描述":"pretty faint, small, diffuse","简略描述":"pF, S, dif"},{"ID":"10826","标识":"IC2986","M标识":"IC2986","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"11h59m49.5s","赤经D(J2000)":"11.997083333333332","赤纬(J2000)":"+30h50m42s","赤纬D(J2000)":"30.845","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"0","详细描述":"faint, very small, round, nuclear, mottled but not resolved","简略描述":"F, vS, R, N, r"},{"ID":"10827","标识":"IC2987","M标识":"IC2987","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h3m24.6s","赤经D(J2000)":"12.056833333333334","赤纬(J2000)":"+38h48m48s","赤纬D(J2000)":"38.81333333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"60","详细描述":"faint, small, nuclear, diffuse","简略描述":"F, S, N, dif"},{"ID":"10828","标识":"IC2988","M标识":"IC2988","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h3m42.2s","赤经D(J2000)":"12.061722222222222","赤纬(J2000)":"+3h25m46s","赤纬D(J2000)":"3.4294444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, r, * 11.5 sf 2'.7"},{"ID":"10829","标识":"IC2989","M标识":"IC2989","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h4m34s","赤经D(J2000)":"12.07611111111111","赤纬(J2000)":"+1h48m5s","赤纬D(J2000)":"1.801388888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.5","方位角":"153","详细描述":"","简略描述":"vF, S, bM or 2 or 3 eF st inv"},{"ID":"10830","标识":"IC2990","M标识":"IC2990","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h4m38.5s","赤经D(J2000)":"12.077361111111111","赤纬(J2000)":"+11h3m0s","赤纬D(J2000)":"11.05","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"15","详细描述":"","简略描述":"eF, R, poss planetary"},{"ID":"10831","标识":"IC2991","M标识":"IC2991","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h5m12.5s","赤经D(J2000)":"12.086805555555555","赤纬(J2000)":"+10h38m24s","赤纬D(J2000)":"10.639999999999999","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"40","详细描述":"","简略描述":"eF, S, E 10°, bet 4082 and 83"},{"ID":"10832","标识":"IC2992","M标识":"IC2992","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h5m15.8s","赤经D(J2000)":"12.087722222222222","赤纬(J2000)":"+30h51m19s","赤纬D(J2000)":"30.85527777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"0","详细描述":"faint, small, round, gradually brighter middle and nucleus, mottled but not resolved","简略描述":"F, S, R, gbMN, r"},{"ID":"10833","标识":"IC2993","M标识":"IC2993","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h5m38.3s","赤经D(J2000)":"12.093972222222224","赤纬(J2000)":"+32h49m20s","赤纬D(J2000)":"32.82222222222222","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, nuclear, diffuse, mottled but not resolved","简略描述":"F, S, N, dif, r"},{"ID":"10834","标识":"IC2994","M标识":"IC2994","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h5m27.9s","赤经D(J2000)":"12.091083333333334","赤纬(J2000)":"+12h42m11s","赤纬D(J2000)":"12.703055555555554","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"extremely faint, round, brighter middle","简略描述":"eF, R, bM"},{"ID":"10835","标识":"IC2995","M标识":"IC2995","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h5m47s","赤经D(J2000)":"12.096388888888889","赤纬(J2000)":"-27h56m30s","赤纬D(J2000)":"-27.941666666666666","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3","短轴(分)":"0.8","方位角":"117","详细描述":"","简略描述":"vF, L, cE 120°, * 8 f"},{"ID":"10836","标识":"IC2996","M标识":"IC2996","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h5m48.5s","赤经D(J2000)":"12.096805555555557","赤纬(J2000)":"-29h58m19s","赤纬D(J2000)":"-29.971944444444443","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"21","详细描述":"faint, very small, extended 20°, star to southwest","简略描述":"F, vS, E 20°, * sp"},{"ID":"10837","标识":"IC2997","M标识":"IC2997","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h5m45s","赤经D(J2000)":"12.095833333333333","赤纬(J2000)":"+20h16m54s","赤纬D(J2000)":"20.281666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, * 12 sf 2' [?=4090]"},{"ID":"10838","标识":"IC2998","M标识":"IC2998","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h5m54s","赤经D(J2000)":"12.098333333333334","赤纬(J2000)":"+20h45m0s","赤纬D(J2000)":"20.75","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, others near","简略描述":"vF, others near"},{"ID":"10839","标识":"IC2999","M标识":"IC2999","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h5m57.5s","赤经D(J2000)":"12.099305555555556","赤纬(J2000)":"+31h20m54s","赤纬D(J2000)":"31.348333333333333","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"50","详细描述":"very faint, very small, nuclear","简略描述":"vF, vS, N"},{"ID":"10840","标识":"IC3000","M标识":"IC3000","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h6m8s","赤经D(J2000)":"12.102222222222222","赤纬(J2000)":"-29h40m24s","赤纬D(J2000)":"-29.673333333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, indistinct (possible defect)","简略描述":"F, indistinct (? defect)"},{"ID":"10841","标识":"IC3001","M标识":"IC3001","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h6m16.7s","赤经D(J2000)":"12.10463888888889","赤纬(J2000)":"+33h31m34s","赤纬D(J2000)":"33.52611111111111","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"72","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"10842","标识":"IC3002","M标识":"IC3002","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h7m4.2s","赤经D(J2000)":"12.117833333333333","赤纬(J2000)":"+33h22m57s","赤纬D(J2000)":"33.3825","可见光星等V":"15.6","摄影(蓝光)星等B":"16.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, considerably small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, cS, R, gbM, r"},{"ID":"10843","标识":"IC3003","M标识":"IC3003","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h7m32.5s","赤经D(J2000)":"12.125694444444445","赤纬(J2000)":"+32h48m48s","赤纬D(J2000)":"32.81333333333333","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"138","详细描述":"faint, small, diffuse, nuclear, mottled but not resolved","简略描述":"F, S, dif, N, r"},{"ID":"10844","标识":"IC3004","M标识":"IC3004","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S RM","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h7m10.2s","赤经D(J2000)":"12.1195","赤纬(J2000)":"+13h14m51s","赤纬D(J2000)":"13.247499999999999","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1","短轴(分)":"0.9","方位角":"","详细描述":"","简略描述":"R, bM, magn. 15"},{"ID":"10845","标识":"IC3005","M标识":"IC3005","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h7m14.3s","赤经D(J2000)":"12.12063888888889","赤纬(J2000)":"-30h1m34s","赤纬D(J2000)":"-30.02611111111111","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.3","短轴(分)":"0.4","方位角":"160","详细描述":"faint, small, extremely extended 160°, stellar nucleus","简略描述":"F, S, eE 160°, stell N"},{"ID":"10846","标识":"IC3006","M标识":"IC3006","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h7m22.9s","赤经D(J2000)":"12.123027777777779","赤纬(J2000)":"+13h0m14s","赤纬D(J2000)":"13.00388888888889","可见光星等V":"99","摄影(蓝光)星等B":"14.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"round, brighter middle, 15th magnitude","简略描述":"R, bM, magn 15"},{"ID":"10847","标识":"IC3007","M标识":"IC3007","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h7m30.7s","赤经D(J2000)":"12.125194444444444","赤纬(J2000)":"+31h20m55s","赤纬D(J2000)":"31.34861111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"85","详细描述":"very faint, very small, difficult","简略描述":"vF, vS, diffic"},{"ID":"10848","标识":"IC3008","M标识":"IC3008","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h7m51.8s","赤经D(J2000)":"12.131055555555555","赤纬(J2000)":"+13h34m41s","赤纬D(J2000)":"13.578055555555554","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"24","详细描述":"round, brighter middle, magnitude 13.5","简略描述":"R, bM, magn 13.5"},{"ID":"10849","标识":"IC3009","M标识":"IC3009","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h8m0.1s","赤经D(J2000)":"12.13336111111111","赤纬(J2000)":"+12h38m47s","赤纬D(J2000)":"12.646388888888888","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, considerably small","简略描述":"pB, cS"},{"ID":"10850","标识":"IC3010","M标识":"IC3010","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h7m57.3s","赤经D(J2000)":"12.132583333333335","赤纬(J2000)":"-30h20m22s","赤纬D(J2000)":"-30.339444444444442","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.9","短轴(分)":"1.8","方位角":"84","详细描述":"","简略描述":"eF, cS, R, 2 st 10 sf 8'"},{"ID":"10851","标识":"IC3011","M标识":"IC3011","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h8m9.5s","赤经D(J2000)":"12.135972222222222","赤纬(J2000)":"+10h22m44s","赤纬D(J2000)":"10.37888888888889","可见光星等V":"11.4","摄影(蓝光)星等B":"12.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"4.3","短轴(分)":"1.4","方位角":"114","详细描述":"pretty faint, pretty small, extended 110°","简略描述":"pF, pS, E 110° "},{"ID":"10852","标识":"IC3012","M标识":"IC3012","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h8m23.9s","赤经D(J2000)":"12.139972222222221","赤纬(J2000)":"+11h10m37s","赤纬D(J2000)":"11.176944444444445","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"35","详细描述":"round, perhaps a planetary nebula, magnitude 15","简略描述":"R, planetary ?, magn 15"},{"ID":"10853","标识":"IC3013","M标识":"IC3013","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S R","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h8m25.6s","赤经D(J2000)":"12.140444444444444","赤纬(J2000)":"+10h1m0s","赤纬D(J2000)":"10.016666666666667","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"10854","标识":"IC3014","M标识":"IC3014","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h8m36.9s","赤经D(J2000)":"12.143583333333332","赤纬(J2000)":"+38h49m55s","赤纬D(J2000)":"38.831944444444446","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"69","详细描述":"pretty bright, considerably small, round, gradually brighter middle, mottled but not resolved","简略描述":"pB, cS, R, gbM, r"},{"ID":"10855","标识":"IC3015","M标识":"IC3015","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h9m0.1s","赤经D(J2000)":"12.150027777777778","赤纬(J2000)":"-31h31m10s","赤纬D(J2000)":"-31.519444444444442","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.9","短轴(分)":"0.7","方位角":"166","详细描述":"","简略描述":"pB, mE 45°, * 10.5 sf 1'"},{"ID":"10856","标识":"IC3016","M标识":"IC3016","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h9m18.5s","赤经D(J2000)":"12.155138888888889","赤纬(J2000)":"+11h25m47s","赤纬D(J2000)":"11.429722222222221","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"small, round, brighter middle","简略描述":"S, R, bM"},{"ID":"10857","标识":"IC3017","M标识":"IC3017","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h9m22.7s","赤经D(J2000)":"12.156305555555555","赤纬(J2000)":"+13h37m7s","赤纬D(J2000)":"13.618611111111111","可见光星等V":"15.9","摄影(蓝光)星等B":"16.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"40","详细描述":"round, brighter middle, diffuse, magnitude 14.5","简略描述":"R, bM, dif, magn 14.5"},{"ID":"10858","标识":"IC3018","M标识":"IC3018","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h9m24.9s","赤经D(J2000)":"12.156916666666667","赤纬(J2000)":"+13h34m32s","赤纬D(J2000)":"13.575555555555555","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"175","详细描述":"round, a little brighter middle, magnitude 13.5","简略描述":"R, lbM, magn 13.5"},{"ID":"10859","标识":"IC3019","M标识":"IC3019","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h9m22.3s","赤经D(J2000)":"12.156194444444445","赤纬(J2000)":"+13h59m32s","赤纬D(J2000)":"13.992222222222221","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.4","短轴(分)":"1.3","方位角":"123","详细描述":"round, brighter middle, diffuse, magnitude 14.5","简略描述":"R, bM, dif, magn 14.5"},{"ID":"10860","标识":"IC3020","M标识":"IC3020","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h9m27.1s","赤经D(J2000)":"12.157527777777778","赤纬(J2000)":"+14h13m30s","赤纬D(J2000)":"14.225","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"125","详细描述":"round, brighter middle, magnitude 14","简略描述":"R, bM, magn 14"},{"ID":"10861","标识":"IC3021","M标识":"IC3021","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h9m54.5s","赤经D(J2000)":"12.165138888888889","赤纬(J2000)":"+13h2m59s","赤纬D(J2000)":"13.049722222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"14.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"0","详细描述":"round, brighter middle, very diffuse, magnitude 14.5","简略描述":"R, bM, v dif, magn 14.5"},{"ID":"10862","标识":"IC3022","M标识":"IC3022","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h10m2.3s","赤经D(J2000)":"12.167305555555554","赤纬(J2000)":"+38h44m26s","赤纬D(J2000)":"38.74055555555556","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"2.9","短轴(分)":"0.9","方位角":"29","详细描述":"pretty bright, pretty small, gradually brighter middle","简略描述":"pB, pS, gbM"},{"ID":"10863","标识":"IC3023","M标识":"IC3023","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h10m1.9s","赤经D(J2000)":"12.167194444444444","赤纬(J2000)":"+14h22m1s","赤纬D(J2000)":"14.366944444444444","可见光星等V":"14.6","摄影(蓝光)星等B":"15.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"141","详细描述":"round, brighter middle, diffuse, magnitude 15","简略描述":"R, bM, dif, magn 15"},{"ID":"10864","标识":"IC3024","M标识":"IC3024","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h10m12s","赤经D(J2000)":"12.17","赤纬(J2000)":"+12h19m32s","赤纬D(J2000)":"12.325555555555555","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.4","方位角":"167","详细描述":"round, brighter middle, magnitude 13.5","简略描述":"R, bM, magn 13.5"},{"ID":"10865","标识":"IC3025","M标识":"IC3025","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h10m23s","赤经D(J2000)":"12.173055555555555","赤纬(J2000)":"+10h11m19s","赤纬D(J2000)":"10.188611111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"95","详细描述":"small, extended, brighter middle","简略描述":"S, E, bM"},{"ID":"10866","标识":"IC3026","M标识":"IC3026","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h10m34s","赤经D(J2000)":"12.17611111111111","赤纬(J2000)":"-29h55m24s","赤纬D(J2000)":"-29.923333333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, much extended 40°, between 2 stars","简略描述":"vF, vS, mE 40°, bet 2 st"},{"ID":"10867","标识":"IC3027","M标识":"IC3027","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h10m30s","赤经D(J2000)":"12.174999999999999","赤纬(J2000)":"+14h11m36s","赤纬D(J2000)":"14.193333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"10868","标识":"IC3028","M标识":"IC3028","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h10m35.6s","赤经D(J2000)":"12.176555555555556","赤纬(J2000)":"+11h45m41s","赤纬D(J2000)":"11.761388888888888","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"150","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"10869","标识":"IC3029","M标识":"IC3029","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h10m41.8s","赤经D(J2000)":"12.178277777777778","赤纬(J2000)":"+13h19m53s","赤纬D(J2000)":"13.331388888888888","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"28","详细描述":"extended 35°, magnitude 13.5","简略描述":"E 35°, magn 13.5"},{"ID":"10870","标识":"IC3030","M标识":"IC3030","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h11m6s","赤经D(J2000)":"12.185","赤纬(J2000)":"+14h8m36s","赤纬D(J2000)":"14.143333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"round, brighter middle, magnitude 14","简略描述":"R, bM, magn 14"},{"ID":"10871","标识":"IC3031","M标识":"IC3031","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h11m4.2s","赤经D(J2000)":"12.1845","赤纬(J2000)":"+13h18m29s","赤纬D(J2000)":"13.308055555555557","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.7","短轴(分)":"0.1","方位角":"32","详细描述":"","简略描述":"vF, wisp at 35°"},{"ID":"10872","标识":"IC3032","M标识":"IC3032","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h11m7.8s","赤经D(J2000)":"12.185500000000001","赤纬(J2000)":"+14h16m31s","赤纬D(J2000)":"14.275277777777779","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"0.9","方位角":"","详细描述":"round, brighter middle, magnitude 13.5","简略描述":"R, bM, magn 13.5"},{"ID":"10873","标识":"IC3033","M标识":"IC3033","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h11m10s","赤经D(J2000)":"12.186111111111112","赤纬(J2000)":"+13h35m17s","赤纬D(J2000)":"13.588055555555556","可见光星等V":"14.3","摄影(蓝光)星等B":"14.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"2","详细描述":"","简略描述":"bM, wisps ns 0'.5, magn 13.5"},{"ID":"10874","标识":"IC3034","M标识":"IC3034","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h11m47.7s","赤经D(J2000)":"12.196583333333333","赤纬(J2000)":"+14h12m5s","赤纬D(J2000)":"14.201388888888888","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"150","详细描述":"very faint, extended, brighter middle","简略描述":"vF, E, bM"},{"ID":"10875","标识":"IC3035","M标识":"IC3035","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m11.8s","赤经D(J2000)":"12.203277777777776","赤纬(J2000)":"+13h14m46s","赤纬D(J2000)":"13.24611111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"160","详细描述":"faint, considerably small","简略描述":"F, cS"},{"ID":"10876","标识":"IC3036","M标识":"IC3036","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m15.1s","赤经D(J2000)":"12.204194444444443","赤纬(J2000)":"+12h29m19s","赤纬D(J2000)":"12.48861111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"177","详细描述":"very faint, spiral","简略描述":"vF, spir"},{"ID":"10877","标识":"IC3037","M标识":"IC3037","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m20.5s","赤经D(J2000)":"12.205694444444443","赤纬(J2000)":"+9h59m9s","赤纬D(J2000)":"9.985833333333332","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"45","详细描述":"round, perhaps a planetary nebula, magnitude 16","简略描述":"R, planetary ?, magn 16"},{"ID":"10878","标识":"IC3038","M标识":"IC3038","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m32.6s","赤经D(J2000)":"12.209055555555555","赤纬(J2000)":"+11h21m12s","赤纬D(J2000)":"11.353333333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"100","详细描述":"round, brighter middle, perhaps a planetary nebula, magnitude 16","简略描述":"R, bM, planetary ?, magn 16"},{"ID":"10879","标识":"IC3039","M标识":"IC3039","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m32.6s","赤经D(J2000)":"12.209055555555555","赤纬(J2000)":"+12h18m36s","赤纬D(J2000)":"12.31","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.3","方位角":"15","详细描述":"small, round, brighter middle","简略描述":"S, R, bM"},{"ID":"10880","标识":"IC3040","M标识":"IC3040","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m34.5s","赤经D(J2000)":"12.209583333333333","赤纬(J2000)":"+11h4m27s","赤纬D(J2000)":"11.074166666666667","可见光星等V":"14.6","摄影(蓝光)星等B":"15.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"","详细描述":"round, perhaps a planetary nebula, magnitude 16","简略描述":"R, planetary ?, magn 16"},{"ID":"10881","标识":"IC3041","M标识":"IC3041","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m42.7s","赤经D(J2000)":"12.21186111111111","赤纬(J2000)":"+12h45m47s","赤纬D(J2000)":"12.763055555555555","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"51","详细描述":"small, extended","简略描述":"S, E"},{"ID":"10882","标识":"IC3042","M标识":"IC3042","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBcd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m46.2s","赤经D(J2000)":"12.212833333333332","赤纬(J2000)":"+10h51m51s","赤纬D(J2000)":"10.864166666666666","可见光星等V":"11.4","摄影(蓝光)星等B":"11.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"5","短轴(分)":"1.7","方位角":"30","详细描述":"pretty faint, considerably large","简略描述":"pF, cL"},{"ID":"10883","标识":"IC3043","M标识":"IC3043","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m47.2s","赤经D(J2000)":"12.213111111111111","赤纬(J2000)":"+10h0m36s","赤纬D(J2000)":"10.01","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"170","详细描述":"considerably small, extended north-south, magnitude 15","简略描述":"cS, E ns, magn 15"},{"ID":"10884","标识":"IC3044","M标识":"IC3044","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h12m48.4s","赤经D(J2000)":"12.213444444444443","赤纬(J2000)":"+13h58m34s","赤纬D(J2000)":"13.976111111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2","短轴(分)":"0.8","方位角":"68","详细描述":"faint, stellar","简略描述":"F, stell"},{"ID":"10885","标识":"IC3045","M标识":"IC3045","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h12m59.7s","赤经D(J2000)":"12.216583333333332","赤纬(J2000)":"+12h46m46s","赤纬D(J2000)":"12.779444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pF, cS, Ns = 10.5 magn"},{"ID":"10886","标识":"IC3046","M标识":"IC3046","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h13m7.8s","赤经D(J2000)":"12.218833333333334","赤纬(J2000)":"+12h55m7s","赤纬D(J2000)":"12.91861111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"132","详细描述":"very faint, pretty small, spiral","简略描述":"vF, pS, spir"},{"ID":"10887","标识":"IC3047","M标识":"IC3047","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h13m14.6s","赤经D(J2000)":"12.220722222222223","赤纬(J2000)":"+12h59m50s","赤纬D(J2000)":"12.997222222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"45","详细描述":"round, brighter middle, magnitude 14.5","简略描述":"R, bM, magn 14.5"},{"ID":"10888","标识":"IC3048","M标识":"IC3048","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h13m22.4s","赤经D(J2000)":"12.222888888888889","赤纬(J2000)":"+13h4m12s","赤纬D(J2000)":"13.07","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, possibly a 13th-magnitude star","简略描述":"F, S, ? * 13"},{"ID":"10889","标识":"IC3049","M标识":"IC3049","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h13m33.2s","赤经D(J2000)":"12.225888888888889","赤纬(J2000)":"+14h28m58s","赤纬D(J2000)":"14.482777777777779","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"10","详细描述":"round, perhaps a planetary nebula, magnitude 16","简略描述":"R, planetary ?, magn 16"},{"ID":"10890","标识":"IC3050","M标识":"IC3050","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h13m47.2s","赤经D(J2000)":"12.229777777777779","赤纬(J2000)":"+13h25m29s","赤纬D(J2000)":"13.424722222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.5","短轴(分)":"1.7","方位角":"85","详细描述":"pretty bright, considerably large, gradually brighter middle","简略描述":"pB, cL, gbM"},{"ID":"10891","标识":"IC3051","M标识":"IC3051","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h13m53.4s","赤经D(J2000)":"12.2315","赤纬(J2000)":"+13h10m22s","赤纬D(J2000)":"13.172777777777776","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.2","短轴(分)":"1.1","方位角":"93","详细描述":"pretty bright, pretty small","简略描述":"pB, pS"},{"ID":"10892","标识":"IC3052","M标识":"IC3052","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h13m48.3s","赤经D(J2000)":"12.230083333333333","赤纬(J2000)":"+12h41m25s","赤纬D(J2000)":"12.690277777777778","可见光星等V":"15.4","摄影(蓝光)星等B":"16.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"95","详细描述":"","简略描述":"R, planetary ?, magn 16.5"},{"ID":"10893","标识":"IC3053","M标识":"IC3053","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab R","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h13m52s","赤经D(J2000)":"12.231111111111112","赤纬(J2000)":"+14h13m21s","赤纬D(J2000)":"14.2225","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"5","详细描述":"round, brighter middle, perhaps a planetary nebula, magnitude 16","简略描述":"R, bM, planetary ?, magn 16"},{"ID":"10894","标识":"IC3054","M标识":"IC3054","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h14m14.5s","赤经D(J2000)":"12.23736111111111","赤纬(J2000)":"+13h32m32s","赤纬D(J2000)":"13.542222222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"167","详细描述":"","简略描述":"R, planetary ?, magn 16.5"},{"ID":"10895","标识":"IC3055","M标识":"IC3055","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h14m22.5s","赤经D(J2000)":"12.239583333333332","赤纬(J2000)":"+12h5m30s","赤纬D(J2000)":"12.091666666666667","可见光星等V":"16.1","摄影(蓝光)星等B":"17","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"80","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"10896","标识":"IC3056","M标识":"IC3056","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h14m37.9s","赤经D(J2000)":"12.24386111111111","赤纬(J2000)":"+13h46m47s","赤纬D(J2000)":"13.779722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pL, vmE 50°"},{"ID":"10897","标识":"IC3057","M标识":"IC3057","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h15m2s","赤经D(J2000)":"12.250555555555556","赤纬(J2000)":"-44h28m24s","赤纬D(J2000)":"-44.473333333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"cF, S, R ( ? defect)"},{"ID":"10898","标识":"IC3058","M标识":"IC3058","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h14m47.4s","赤经D(J2000)":"12.2465","赤纬(J2000)":"+14h5m43s","赤纬D(J2000)":"14.095277777777778","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"120","详细描述":"round, perhaps a planetary nebula, magnitude 16","简略描述":"R, planetary ?, magn 16"},{"ID":"10899","标识":"IC3059","M标识":"IC3059","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h14m55.1s","赤经D(J2000)":"12.248638888888888","赤纬(J2000)":"+13h27m39s","赤纬D(J2000)":"13.460833333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"14.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"0","详细描述":"very faint, spiral, doubtful","简略描述":"vF, spir, doubtful"},{"ID":"10900","标识":"IC3060","M标识":"IC3060","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h15m2s","赤经D(J2000)":"12.250555555555556","赤纬(J2000)":"+12h32m52s","赤纬D(J2000)":"12.547777777777778","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"0","详细描述":"","简略描述":"vF, S, lE 0°, ? * 14 m"},{"ID":"10901","标识":"IC3061","M标识":"IC3061","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h15m4.3s","赤经D(J2000)":"12.251194444444444","赤纬(J2000)":"+14h1m44s","赤纬D(J2000)":"14.02888888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.2","短轴(分)":"0.4","方位角":"122","详细描述":"faint, pretty large, spiral","简略描述":"F, pL, spir"},{"ID":"10902","标识":"IC3062","M标识":"IC3062","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h15m5.1s","赤经D(J2000)":"12.251416666666668","赤纬(J2000)":"+13h35m40s","赤纬D(J2000)":"13.594444444444445","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"6","详细描述":"faint, small","简略描述":"F, S"},{"ID":"10903","标识":"IC3063","M标识":"IC3063","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h15m6.8s","赤经D(J2000)":"12.251888888888889","赤纬(J2000)":"+12h0m58s","赤纬D(J2000)":"12.016111111111112","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.6","方位角":"20","详细描述":"brighter middle, magnitude 14.5","简略描述":"bM, magn 14.5"},{"ID":"10904","标识":"IC3064","M标识":"IC3064","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h15m16.7s","赤经D(J2000)":"12.25463888888889","赤纬(J2000)":"+13h1m22s","赤纬D(J2000)":"13.022777777777778","可见光星等V":"12.2","摄影(蓝光)星等B":"12.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"6.4","短轴(分)":"1.1","方位角":"0","详细描述":"considerably faint, considerably large, extended 5°","简略描述":"cF, cL, E 5° "},{"ID":"10905","标识":"IC3065","M标识":"IC3065","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h15m12.5s","赤经D(J2000)":"12.253472222222221","赤纬(J2000)":"+14h26m1s","赤纬D(J2000)":"14.43361111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"0","详细描述":"round, perhaps a planetary nebula, magnitude 14","简略描述":"R, planetary ?, magn 14"},{"ID":"10906","标识":"IC3066","M标识":"IC3066","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h15m16.2s","赤经D(J2000)":"12.2545","赤纬(J2000)":"+13h28m25s","赤纬D(J2000)":"13.473611111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.2","方位角":"138","详细描述":"pretty large, extended 160°, spiral","简略描述":"pL, E 160°, spir"},{"ID":"10907","标识":"IC3067","M标识":"IC3067","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h15m15.8s","赤经D(J2000)":"12.254388888888888","赤纬(J2000)":"+23h57m32s","赤纬D(J2000)":"23.95888888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"100","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stell"},{"ID":"10908","标识":"IC3068","M标识":"IC3068","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h15m23.2s","赤经D(J2000)":"12.256444444444444","赤纬(J2000)":"+11h30m40s","赤纬D(J2000)":"11.511111111111111","可见光星等V":"16.3","摄影(蓝光)星等B":"17","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"50","详细描述":"brighter middle, magnitude 16","简略描述":"bM, magn 16"},{"ID":"10909","标识":"IC3069","M标识":"IC3069","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h15m19.8s","赤经D(J2000)":"12.2555","赤纬(J2000)":"+10h9m39s","赤纬D(J2000)":"10.160833333333334","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"105","详细描述":"brighter middle, magnitude 15.5","简略描述":"bM, magn 15.5"},{"ID":"10910","标识":"IC3070","M标识":"IC3070","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h15m24.6s","赤经D(J2000)":"12.256833333333333","赤纬(J2000)":"+13h2m22s","赤纬D(J2000)":"13.039444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"10911","标识":"IC3071","M标识":"IC3071","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h15m31.8s","赤经D(J2000)":"12.258833333333333","赤纬(J2000)":"+9h32m44s","赤纬D(J2000)":"9.545555555555556","可见光星等V":"99","摄影(蓝光)星等B":"14.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"10912","标识":"IC3072","M标识":"IC3072","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h15m38.1s","赤经D(J2000)":"12.260583333333333","赤纬(J2000)":"+9h33m20s","赤纬D(J2000)":"9.555555555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, questionable","简略描述":"eF, eS, ?"},{"ID":"10913","标识":"IC3073","M标识":"IC3073","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h15m35.7s","赤经D(J2000)":"12.259916666666667","赤纬(J2000)":"+13h37m11s","赤纬D(J2000)":"13.619722222222222","可见光星等V":"14.4","摄影(蓝光)星等B":"15","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.6","方位角":"85","详细描述":"brighter middle, magnitude 16","简略描述":"bM, magn 16"},{"ID":"10914","标识":"IC3074","M标识":"IC3074","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h15m46.1s","赤经D(J2000)":"12.262805555555556","赤纬(J2000)":"+10h41m55s","赤纬D(J2000)":"10.698611111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"14.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.3","短轴(分)":"0.3","方位角":"160","详细描述":"considerably faint, pretty large, extended 170°","简略描述":"cF, pL, E 170°"},{"ID":"10915","标识":"IC3075","M标识":"IC3075","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h15m55s","赤经D(J2000)":"12.265277777777778","赤纬(J2000)":"+23h35m46s","赤纬D(J2000)":"23.59611111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"60","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"10916","标识":"IC3076","M标识":"IC3076","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h16m4s","赤经D(J2000)":"12.267777777777779","赤纬(J2000)":"+9h4m45s","赤纬D(J2000)":"9.079166666666666","可见光星等V":"99","摄影(蓝光)星等B":"14.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"10917","标识":"IC3077","M标识":"IC3077","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h15m56.1s","赤经D(J2000)":"12.265583333333334","赤纬(J2000)":"+14h25m58s","赤纬D(J2000)":"14.432777777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"0","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"10918","标识":"IC3078","M标识":"IC3078","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h16m0s","赤经D(J2000)":"12.266666666666667","赤纬(J2000)":"+12h41m16s","赤纬D(J2000)":"12.687777777777779","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"10919","标识":"IC3079","M标识":"IC3079","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h16m4.2s","赤经D(J2000)":"12.267833333333334","赤纬(J2000)":"+11h32m6s","赤纬D(J2000)":"11.535","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"10920","标识":"IC3080","M标识":"IC3080","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h16m2.6s","赤经D(J2000)":"12.26738888888889","赤纬(J2000)":"+14h11m24s","赤纬D(J2000)":"14.19","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"10921","标识":"IC3081","M标识":"IC3081","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h16m9s","赤经D(J2000)":"12.269166666666667","赤纬(J2000)":"+12h41m28s","赤纬D(J2000)":"12.69111111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"85","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"10922","标识":"IC3082","M标识":"IC3082","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h16m12.1s","赤经D(J2000)":"12.270027777777779","赤纬(J2000)":"+23h50m31s","赤纬D(J2000)":"23.841944444444444","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"10","详细描述":"","简略描述":"vF, vS, dif, * 5 n 6'"},{"ID":"10923","标识":"IC3083","M标识":"IC3083","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h16m24s","赤经D(J2000)":"12.273333333333333","赤纬(J2000)":"+12h35m40s","赤纬D(J2000)":"12.594444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"10924","标识":"IC3084","M标识":"IC3084","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h16m23.4s","赤经D(J2000)":"12.273166666666668","赤纬(J2000)":"+23h55m6s","赤纬D(J2000)":"23.918333333333333","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"125","详细描述":"faint, very small, round, diffuse","简略描述":"F, vS, R, dif"},{"ID":"10925","标识":"IC3085","M标识":"IC3085","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h16m26s","赤经D(J2000)":"12.273888888888889","赤纬(J2000)":"+9h28m9s","赤纬D(J2000)":"9.469166666666666","可见光星等V":"99","摄影(蓝光)星等B":"13.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, = 13th-magnitude star","简略描述":"cF, vS, = * 13"},{"ID":"10926","标识":"IC3086","M标识":"IC3086","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h16m27.8s","赤经D(J2000)":"12.27438888888889","赤纬(J2000)":"+9h0m33s","赤纬D(J2000)":"9.009166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"10927","标识":"IC3087","M标识":"IC3087","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h16m26.6s","赤经D(J2000)":"12.274055555555556","赤纬(J2000)":"+13h17m21s","赤纬D(J2000)":"13.289166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, extremely extended 30°, nebulosity uncertain","简略描述":"F, S, eE 30°, neb ?"},{"ID":"10928","标识":"IC3088","M标识":"IC3088","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h16m28.4s","赤经D(J2000)":"12.274555555555557","赤纬(J2000)":"+9h27m32s","赤纬D(J2000)":"9.458888888888888","可见光星等V":"99","摄影(蓝光)星等B":"14.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, = 14th-magnitude star","简略描述":"vF, vS, = * 14"},{"ID":"10929","标识":"IC3089","M标识":"IC3089","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h16m29.6s","赤经D(J2000)":"12.27488888888889","赤纬(J2000)":"+23h49m42s","赤纬D(J2000)":"23.828333333333333","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"50","详细描述":"very faint, small, very little brighter middle, diffuse","简略描述":"vF, S, vlbM, dif"},{"ID":"10930","标识":"IC3090","M标识":"IC3090","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h16m31.6s","赤经D(J2000)":"12.275444444444446","赤纬(J2000)":"+9h26m23s","赤纬D(J2000)":"9.439722222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"10931","标识":"IC3091","M标识":"IC3091","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h16m29.2s","赤经D(J2000)":"12.274777777777778","赤纬(J2000)":"+14h0m45s","赤纬D(J2000)":"14.0125","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"130","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"10932","标识":"IC3092","M标识":"IC3092","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h16m32.2s","赤经D(J2000)":"12.275611111111113","赤纬(J2000)":"+10h2m47s","赤纬D(J2000)":"10.046388888888888","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"160","详细描述":"brighter middle, magnitude 15.5","简略描述":"bM, magn 15.5"},{"ID":"10933","标识":"IC3093","M标识":"IC3093","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h16m42.2s","赤经D(J2000)":"12.27838888888889","赤纬(J2000)":"+14h16m42s","赤纬D(J2000)":"14.278333333333334","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"0","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"10934","标识":"IC3094","M标识":"IC3094","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h16m55.9s","赤经D(J2000)":"12.282194444444444","赤纬(J2000)":"+13h37m32s","赤纬D(J2000)":"13.625555555555556","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, brighter middle","简略描述":"F, S, bM"},{"ID":"10935","标识":"IC3095","M标识":"IC3095","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h16m55.3s","赤经D(J2000)":"12.28202777777778","赤纬(J2000)":"+23h57m29s","赤纬D(J2000)":"23.958055555555553","可见光星等V":"14.9","摄影(蓝光)星等B":"15.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"90","详细描述":"","简略描述":"pF, S, vlE pf, bM, * 5 p 35s, 1' s"},{"ID":"10936","标识":"IC3096","M标识":"IC3096","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h16m52.3s","赤经D(J2000)":"12.281194444444445","赤纬(J2000)":"+14h30m55s","赤纬D(J2000)":"14.515277777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"96","详细描述":"brighter middle, magnitude 14.5","简略描述":"bM, magn 14.5"},{"ID":"10937","标识":"IC3097","M标识":"IC3097","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m1s","赤经D(J2000)":"12.28361111111111","赤纬(J2000)":"+9h24m27s","赤纬D(J2000)":"9.4075","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"20","详细描述":"very faint, small, a little brighter middle","简略描述":"vF, S, lbM"},{"ID":"10938","标识":"IC3098","M标识":"IC3098","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m9.7s","赤经D(J2000)":"12.286027777777777","赤纬(J2000)":"+7h11m27s","赤纬D(J2000)":"7.190833333333334","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"4.2","短轴(分)":"0.9","方位角":"48","详细描述":"pretty faint, pretty small, extended 45°","简略描述":"pF, pS, E 45° "},{"ID":"10939","标识":"IC3099","M标识":"IC3099","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m9.3s","赤经D(J2000)":"12.285916666666667","赤纬(J2000)":"+12h27m12s","赤纬D(J2000)":"12.453333333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.9","短轴(分)":"0.3","方位角":"172","详细描述":"very faint, pretty large, a little extended 0°","简略描述":"vF, pL, lE 0°"},{"ID":"10940","标识":"IC3100","M标识":"IC3100","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m5.3s","赤经D(J2000)":"12.284805555555556","赤纬(J2000)":"+12h17m22s","赤纬D(J2000)":"12.289444444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"58","详细描述":"","简略描述":"bM, wisps 45° ?, magn 14.5"},{"ID":"10941","标识":"IC3101","M标识":"IC3101","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m19.5s","赤经D(J2000)":"12.28875","赤纬(J2000)":"+11h56m36s","赤纬D(J2000)":"11.943333333333333","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"20","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"10942","标识":"IC3102","M标识":"IC3102","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m25.8s","赤经D(J2000)":"12.2905","赤纬(J2000)":"+6h41m22s","赤纬D(J2000)":"6.689444444444445","可见光星等V":"11.9","摄影(蓝光)星等B":"13","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.5","短轴(分)":"1.4","方位角":"128","详细描述":"pretty faint, pretty small, perhaps a star","简略描述":"pF, pS, ? *"},{"ID":"10943","标识":"IC3103","M标识":"IC3103","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m28.4s","赤经D(J2000)":"12.291222222222222","赤纬(J2000)":"+9h21m38s","赤纬D(J2000)":"9.360555555555555","可见光星等V":"99","摄影(蓝光)星等B":"14.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stell"},{"ID":"10944","标识":"IC3104","M标识":"IC3104","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"堰蜓座","星座(En)":"CHA","赤经(J2000)":"12h18m46.1s","赤经D(J2000)":"12.312805555555556","赤纬(J2000)":"-79h43m51s","赤纬D(J2000)":"-79.73083333333334","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"3.7","短轴(分)":"1.7","方位角":"45","详细描述":"","简略描述":"eeF, cS, or vS Cl, * 12 sp 0'.5"},{"ID":"10945","标识":"IC3105","M标识":"IC3105","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m33.5s","赤经D(J2000)":"12.292638888888888","赤纬(J2000)":"+12h23m10s","赤纬D(J2000)":"12.386111111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"14.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.9","短轴(分)":"0.6","方位角":"27","详细描述":"very faint, pretty small, extended 40°","简略描述":"vF, pS, E 40°"},{"ID":"10946","标识":"IC3106","M标识":"IC3106","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m45.8s","赤经D(J2000)":"12.296055555555556","赤纬(J2000)":"+9h36m47s","赤纬D(J2000)":"9.613055555555555","可见光星等V":"99","摄影(蓝光)星等B":"15.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, extended 95°","简略描述":"vF, vS, E 95°"},{"ID":"10947","标识":"IC3107","M标识":"IC3107","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m47s","赤经D(J2000)":"12.296388888888888","赤纬(J2000)":"+10h50m41s","赤纬D(J2000)":"10.844722222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"133","详细描述":"faint, very small, a little extended, much brighter middle","简略描述":"F, vS, lE, mbM"},{"ID":"10948","标识":"IC3108","M标识":"IC3108","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h17m42.6s","赤经D(J2000)":"12.295166666666667","赤纬(J2000)":"+13h22m46s","赤纬D(J2000)":"13.379444444444445","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"90","详细描述":"round, brighter middle, magnitude 14","简略描述":"R, bM, magn 14"},{"ID":"10949","标识":"IC3109","M标识":"IC3109","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m44s","赤经D(J2000)":"12.295555555555556","赤纬(J2000)":"+13h10m16s","赤纬D(J2000)":"13.171111111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"10950","标识":"IC3110","M标识":"IC3110","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h17m44.8s","赤经D(J2000)":"12.295777777777777","赤纬(J2000)":"+37h24m1s","赤纬D(J2000)":"37.400277777777774","可见光星等V":"16","摄影(蓝光)星等B":"16.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"0.55","短轴(分)":"0.4","方位角":"45","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"10951","标识":"IC3111","M标识":"IC3111","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m50.7s","赤经D(J2000)":"12.297416666666667","赤纬(J2000)":"+8h25m51s","赤纬D(J2000)":"8.430833333333332","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"25","详细描述":"","简略描述":"eF, S ?"},{"ID":"10952","标识":"IC3112","M标识":"IC3112","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h17m48.3s","赤经D(J2000)":"12.29675","赤纬(J2000)":"+26h1m51s","赤纬D(J2000)":"26.030833333333334","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"170","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"10953","标识":"IC3113","M标识":"IC3113","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m58.1s","赤经D(J2000)":"12.299472222222223","赤纬(J2000)":"+7h11m8s","赤纬D(J2000)":"7.185555555555556","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.3","短轴(分)":"1.2","方位角":"83","详细描述":"considerably faint, pretty large, extended","简略描述":"cF, pL, E"},{"ID":"10954","标识":"IC3114","M标识":"IC3114","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m56.8s","赤经D(J2000)":"12.299111111111111","赤纬(J2000)":"+9h8m7s","赤纬D(J2000)":"9.135277777777777","可见光星等V":"99","摄影(蓝光)星等B":"14.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, very small, stellar","简略描述":"cF, vS, stell"},{"ID":"10955","标识":"IC3115","M标识":"IC3115","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h17m59.9s","赤经D(J2000)":"12.299972222222221","赤纬(J2000)":"+6h39m15s","赤纬D(J2000)":"6.654166666666667","可见光星等V":"13.1","摄影(蓝光)星等B":"13.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"132","详细描述":"very faint, pretty large, extended","简略描述":"vF, pL, E"},{"ID":"10956","标识":"IC3116","M标识":"IC3116","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h17m57.2s","赤经D(J2000)":"12.299222222222221","赤纬(J2000)":"+25h4m34s","赤纬D(J2000)":"25.07611111111111","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"10","详细描述":"very faint, considerably small, round, brighter middle","简略描述":"vF, cS, R, bM"},{"ID":"10957","标识":"IC3117","M标识":"IC3117","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m4.7s","赤经D(J2000)":"12.301305555555556","赤纬(J2000)":"+9h4m35s","赤纬D(J2000)":"9.07638888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, extended 30°","简略描述":"eF, S, E 30°"},{"ID":"10958","标识":"IC3118","M标识":"IC3118","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m11.1s","赤经D(J2000)":"12.303083333333333","赤纬(J2000)":"+9h30m1s","赤纬D(J2000)":"9.500277777777777","可见光星等V":"14.1","摄影(蓝光)星等B":"14.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"170","详细描述":"very faint, considerably small, a little extended, diffuse","简略描述":"vF, cS, lE, dif"},{"ID":"10959","标识":"IC3119","M标识":"IC3119","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h18m8.4s","赤经D(J2000)":"12.302333333333333","赤纬(J2000)":"+24h41m20s","赤纬D(J2000)":"24.68888888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"pretty faint, considerably small, round, brighter middle","简略描述":"pF, cS, R, bM"},{"ID":"10960","标识":"IC3120","M标识":"IC3120","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h18m15.3s","赤经D(J2000)":"12.304250000000001","赤纬(J2000)":"+13h44m54s","赤纬D(J2000)":"13.748333333333333","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"round, brighter middle, magnitude 14.5","简略描述":"R, bM, magn 14.5"},{"ID":"10961","标识":"IC3121","M标识":"IC3121","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m17.3s","赤经D(J2000)":"12.304805555555557","赤纬(J2000)":"+13h15m26s","赤纬D(J2000)":"13.257222222222222","可见光星等V":"16.5","摄影(蓝光)星等B":"17.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"130","详细描述":"extremely faint, a little extended, magnitude 15","简略描述":"eF, lE, magn 15"},{"ID":"10962","标识":"IC3122","M标识":"IC3122","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h18m21.4s","赤经D(J2000)":"12.305944444444446","赤纬(J2000)":"+25h13m2s","赤纬D(J2000)":"25.21722222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"150","详细描述":"","简略描述":"pF, pL, E 150°, pLN"},{"ID":"10963","标识":"IC3123","M标识":"IC3123","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m27.6s","赤经D(J2000)":"12.307666666666668","赤纬(J2000)":"+8h3m54s","赤纬D(J2000)":"8.065000000000001","可见光星等V":"99","摄影(蓝光)星等B":"7.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebula, or star","简略描述":"Neb, or *"},{"ID":"10964","标识":"IC3124","M标识":"IC3124","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m27.6s","赤经D(J2000)":"12.307666666666668","赤纬(J2000)":"+9h35m19s","赤纬D(J2000)":"9.588611111111112","可见光星等V":"99","摄影(蓝光)星等B":"15.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, small, equal to a 13th-magnitude star","简略描述":"cF, S, = * 13"},{"ID":"10965","标识":"IC3125","M标识":"IC3125","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h18m25.5s","赤经D(J2000)":"12.307083333333335","赤纬(J2000)":"+24h21m56s","赤纬D(J2000)":"24.365555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"10966","标识":"IC3126","M标识":"IC3126","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h18m37.1s","赤经D(J2000)":"12.310305555555557","赤纬(J2000)":"+13h48m51s","赤纬D(J2000)":"13.814166666666667","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"round, brighter middle, magnitude 15","简略描述":"R, bM, magn 15"},{"ID":"10967","标识":"IC3127","M标识":"IC3127","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m35.2s","赤经D(J2000)":"12.309777777777779","赤纬(J2000)":"+11h52m12s","赤纬D(J2000)":"11.870000000000001","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"177","详细描述":"round, brighter middle, magnitude 16","简略描述":"R, bM, magn 16"},{"ID":"10968","标识":"IC3128","M标识":"IC3128","拓展名":"A","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m41.9s","赤经D(J2000)":"12.31163888888889","赤纬(J2000)":"+11h43m53s","赤纬D(J2000)":"11.731388888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"170","详细描述":"a little extended, perhaps double, magnitude 14.5","简略描述":"lE, D ?, magn 14.5"},{"ID":"10969","标识":"IC3129","M标识":"IC3129","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m45s","赤经D(J2000)":"12.3125","赤纬(J2000)":"+9h35m28s","赤纬D(J2000)":"9.591111111111111","可见光星等V":"99","摄影(蓝光)星等B":"14.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, equal to a 14th magnitude star","简略描述":"vF, eS, = * 14"},{"ID":"10970","标识":"IC3130","M标识":"IC3130","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m49.5s","赤经D(J2000)":"12.31375","赤纬(J2000)":"+8h14m2s","赤纬D(J2000)":"8.233888888888888","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty small, much extended 140°, questionable","简略描述":"eF, pS, mE 140°, ?"},{"ID":"10971","标识":"IC3131","M标识":"IC3131","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m50.8s","赤经D(J2000)":"12.314111111111112","赤纬(J2000)":"+7h51m41s","赤纬D(J2000)":"7.8613888888888885","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"10972","标识":"IC3132","M标识":"IC3132","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m50.8s","赤经D(J2000)":"12.314111111111112","赤纬(J2000)":"+7h51m41s","赤纬D(J2000)":"7.8613888888888885","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.4","短轴(分)":"1.4","方位角":"","详细描述":"very faint, small, stellar","简略描述":"vF, S, stell"},{"ID":"10973","标识":"IC3133","M标识":"IC3133","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m54.6s","赤经D(J2000)":"12.315166666666668","赤纬(J2000)":"+7h38m20s","赤纬D(J2000)":"7.638888888888888","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, diffuse","简略描述":"eF, S, dif"},{"ID":"10974","标识":"IC3134","M标识":"IC3134","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m56s","赤经D(J2000)":"12.315555555555557","赤纬(J2000)":"+8h57m44s","赤纬D(J2000)":"8.962222222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"175","详细描述":"very faint, very small, extended 0°","简略描述":"vF, vS, E 0°"},{"ID":"10975","标识":"IC3135","M标识":"IC3135","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h18m53s","赤经D(J2000)":"12.314722222222223","赤纬(J2000)":"+27h29m31s","赤纬D(J2000)":"27.491944444444446","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"130","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"10976","标识":"IC3136","M标识":"IC3136","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m57.2s","赤经D(J2000)":"12.315888888888889","赤纬(J2000)":"+6h11m1s","赤纬D(J2000)":"6.183611111111111","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"32","详细描述":"faint","简略描述":"F"},{"ID":"10977","标识":"IC3137","M标识":"IC3137","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m54.6s","赤经D(J2000)":"12.315166666666668","赤纬(J2000)":"+12h28m10s","赤纬D(J2000)":"12.469444444444445","可见光星等V":"15.6","摄影(蓝光)星等B":"16.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.1","方位角":"44","详细描述":"pretty large, extended 45°","简略描述":"pL, E 45°"},{"ID":"10978","标识":"IC3138","M标识":"IC3138","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h18m56.1s","赤经D(J2000)":"12.315583333333334","赤纬(J2000)":"+12h26m43s","赤纬D(J2000)":"12.445277777777777","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"60","详细描述":"round, brighter middle, magnitude 15.5","简略描述":"R, bM, magn 15.5"},{"ID":"10979","标识":"IC3139","M标识":"IC3139","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m0.7s","赤经D(J2000)":"12.31686111111111","赤纬(J2000)":"+9h7m37s","赤纬D(J2000)":"9.126944444444446","可见光星等V":"99","摄影(蓝光)星等B":"15","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"10980","标识":"IC3140","M标识":"IC3140","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h18m57.6s","赤经D(J2000)":"12.316","赤纬(J2000)":"+27h7m48s","赤纬D(J2000)":"27.13","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, irregular figure, diffuse","简略描述":"vF, pS, iF, dif"},{"ID":"10981","标识":"IC3141","M标识":"IC3141","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h18m58.5s","赤经D(J2000)":"12.31625","赤纬(J2000)":"+24h11m11s","赤纬D(J2000)":"24.18638888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"35","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"10982","标识":"IC3142","M标识":"IC3142","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB? R","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h19m5.1s","赤经D(J2000)":"12.318083333333334","赤纬(J2000)":"+13h58m50s","赤纬D(J2000)":"13.980555555555556","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"135","详细描述":"round, brighter middle, magnitude 14.5","简略描述":"R, bM, magn 14.5"},{"ID":"10983","标识":"IC3143","M标识":"IC3143","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h19m5.4s","赤经D(J2000)":"12.318166666666666","赤纬(J2000)":"+27h17m53s","赤纬D(J2000)":"27.298055555555557","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"150","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"10984","标识":"IC3144","M标识":"IC3144","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h19m9.7s","赤经D(J2000)":"12.31936111111111","赤纬(J2000)":"+25h17m51s","赤纬D(J2000)":"25.297500000000003","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"10985","标识":"IC3145","M标识":"IC3145","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h19m10.5s","赤经D(J2000)":"12.319583333333332","赤纬(J2000)":"+24h17m39s","赤纬D(J2000)":"24.29416666666667","可见光星等V":"99","摄影(蓝光)星等B":"14.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"10986","标识":"IC3146","M标识":"IC3146","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h19m12.4s","赤经D(J2000)":"12.32011111111111","赤纬(J2000)":"+25h42m53s","赤纬D(J2000)":"25.71472222222222","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"10987","标识":"IC3147","M标识":"IC3147","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0 R","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m18.7s","赤经D(J2000)":"12.321861111111112","赤纬(J2000)":"+12h1m6s","赤纬D(J2000)":"12.018333333333334","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"70","详细描述":"very faint, very small, stellar","简略描述":"vF, vS, stell"},{"ID":"10988","标识":"IC3148","M标识":"IC3148","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m21.6s","赤经D(J2000)":"12.322666666666667","赤纬(J2000)":"+7h52m14s","赤纬D(J2000)":"7.870555555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"14.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"10989","标识":"IC3149","M标识":"IC3149","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a R","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m24.2s","赤经D(J2000)":"12.32338888888889","赤纬(J2000)":"+12h18m5s","赤纬D(J2000)":"12.301388888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"10990","标识":"IC3150","M标识":"IC3150","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m28.5s","赤经D(J2000)":"12.324583333333333","赤纬(J2000)":"+7h47m56s","赤纬D(J2000)":"7.7988888888888885","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"45","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"10991","标识":"IC3151","M标识":"IC3151","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m32.8s","赤经D(J2000)":"12.325777777777777","赤纬(J2000)":"+9h24m53s","赤纬D(J2000)":"9.414722222222222","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"126","详细描述":"round, brighter middle, magnitude 13.5","简略描述":"R, bM, magn 13.5"},{"ID":"10992","标识":"IC3152","M标识":"IC3152","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h19m35.9s","赤经D(J2000)":"12.326638888888889","赤纬(J2000)":"-26h8m41s","赤纬D(J2000)":"-26.14472222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"52","详细描述":"pretty bright, small, round, 4 stars to southeast, 8th magnitude star to northwest","简略描述":"pB, S, R, 4 st sf, * 8 np"},{"ID":"10993","标识":"IC3153","M标识":"IC3153","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m36.8s","赤经D(J2000)":"12.326888888888888","赤纬(J2000)":"+5h23m54s","赤纬D(J2000)":"5.398333333333333","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"vF, S, 4273 f"},{"ID":"10994","标识":"IC3154","M标识":"IC3154","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h19m33.9s","赤经D(J2000)":"12.326083333333333","赤纬(J2000)":"+25h35m11s","赤纬D(J2000)":"25.586388888888887","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"105","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"10995","标识":"IC3155","M标识":"IC3155","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m45.2s","赤经D(J2000)":"12.329222222222223","赤纬(J2000)":"+6h0m23s","赤纬D(J2000)":"6.006388888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"35","详细描述":"","简略描述":"cF, S, sbM, ? vF st inv"},{"ID":"10996","标识":"IC3156","M标识":"IC3156","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m44.2s","赤经D(J2000)":"12.328944444444444","赤纬(J2000)":"+9h8m55s","赤纬D(J2000)":"9.14861111111111","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"39","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"10997","标识":"IC3157","M标识":"IC3157","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m47.9s","赤经D(J2000)":"12.329972222222223","赤纬(J2000)":"+12h25m20s","赤纬D(J2000)":"12.422222222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"110","详细描述":"round, brighter middle, magnitude 14","简略描述":"R, bM, magn 14"},{"ID":"10998","标识":"IC3158","M标识":"IC3158","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m48.7s","赤经D(J2000)":"12.330194444444444","赤纬(J2000)":"+9h17m30s","赤纬D(J2000)":"9.291666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, considerably small, extremely questionable","简略描述":"eF, cS, ??"},{"ID":"10999","标识":"IC3159","M标识":"IC3159","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h19m53.2s","赤经D(J2000)":"12.331444444444443","赤纬(J2000)":"+11h40m28s","赤纬D(J2000)":"11.674444444444443","可见光星等V":"15.9","摄影(蓝光)星等B":"16.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"25","详细描述":"round, much brighter middle, magnitude 15","简略描述":"R, mbM, magn 15"},{"ID":"11000","标识":"IC3160","M标识":"IC3160","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m0s","赤经D(J2000)":"12.333333333333334","赤纬(J2000)":"+9h6m6s","赤纬D(J2000)":"9.101666666666667","可见光星等V":"99","摄影(蓝光)星等B":"15.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, considerably small","简略描述":"eF, cS"},{"ID":"11001","标识":"IC3161","M标识":"IC3161","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m1.2s","赤经D(J2000)":"12.333666666666668","赤纬(J2000)":"+8h59m57s","赤纬D(J2000)":"8.999166666666666","可见光星等V":"99","摄影(蓝光)星等B":"15","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, perhaps a star, connected with following one","简略描述":"eF, vS, ? *, conn w f one"},{"ID":"11002","标识":"IC3162","M标识":"IC3162","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m3.1s","赤经D(J2000)":"12.334194444444446","赤纬(J2000)":"+8h59m50s","赤纬D(J2000)":"8.997222222222222","可见光星等V":"99","摄影(蓝光)星等B":"15.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, perhaps a star, connected with preceding one","简略描述":"eF, vS, ? *, conn w p one"},{"ID":"11003","标识":"IC3163","M标识":"IC3163","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m3.5s","赤经D(J2000)":"12.334305555555556","赤纬(J2000)":"+9h15m24s","赤纬D(J2000)":"9.256666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebula or star?","简略描述":"Neb or * ?"},{"ID":"11004","标识":"IC3164","M标识":"IC3164","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m5.2s","赤经D(J2000)":"12.334777777777779","赤纬(J2000)":"+24h57m24s","赤纬D(J2000)":"24.956666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, irregular figure, perhaps double star","简略描述":"eF, S, iF, ? D *"},{"ID":"11005","标识":"IC3165","M标识":"IC3165","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m4.7s","赤经D(J2000)":"12.33463888888889","赤纬(J2000)":"+27h58m30s","赤纬D(J2000)":"27.974999999999998","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"5","详细描述":"faint, considerably small, irregular figure, a little brighter middle","简略描述":"F, cS, iF, lbM"},{"ID":"11006","标识":"IC3166","M标识":"IC3166","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h19m54s","赤经D(J2000)":"12.331666666666667","赤纬(J2000)":"+60h41m42s","赤纬D(J2000)":"60.69499999999999","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, preceding of 2","简略描述":"eeF, S, p of 2"},{"ID":"11007","标识":"IC3167","M标识":"IC3167","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0\/D","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m18.8s","赤经D(J2000)":"12.338555555555557","赤纬(J2000)":"+9h32m43s","赤纬D(J2000)":"9.545277777777777","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"90","详细描述":"","简略描述":"vF, vS, lE 65°, bM"},{"ID":"11008","标识":"IC3168","M标识":"IC3168","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m18.5s","赤经D(J2000)":"12.338472222222222","赤纬(J2000)":"+27h55m11s","赤纬D(J2000)":"27.919722222222223","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"50","详细描述":"faint, considerably small, extended 45°, brighter middle","简略描述":"F, cS, E 45°, bM"},{"ID":"11009","标识":"IC3169","M标识":"IC3169","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m21.3s","赤经D(J2000)":"12.33925","赤纬(J2000)":"+25h35m58s","赤纬D(J2000)":"25.599444444444444","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"130","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11010","标识":"IC3170","M标识":"IC3170","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m26.6s","赤经D(J2000)":"12.340722222222222","赤纬(J2000)":"+9h25m28s","赤纬D(J2000)":"9.424444444444443","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"11011","标识":"IC3171","M标识":"IC3171","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m24s","赤经D(J2000)":"12.34","赤纬(J2000)":"+25h33m40s","赤纬D(J2000)":"25.561111111111114","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"60","详细描述":"pretty bright, small, round, brighter middle","简略描述":"pB, S, R, bM"},{"ID":"11012","标识":"IC3172","M标识":"IC3172","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m24.5s","赤经D(J2000)":"12.34013888888889","赤纬(J2000)":"+27h49m9s","赤纬D(J2000)":"27.819166666666668","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"3","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"11013","标识":"IC3173","M标识":"IC3173","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m30.1s","赤经D(J2000)":"12.341694444444444","赤纬(J2000)":"+11h20m29s","赤纬D(J2000)":"11.34138888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"11","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"round, brighter middle, magnitude 13","简略描述":"R, bM, magn 13"},{"ID":"11014","标识":"IC3174","M标识":"IC3174","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab R","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m29.5s","赤经D(J2000)":"12.34152777777778","赤纬(J2000)":"+10h14m44s","赤纬D(J2000)":"10.245555555555555","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"135","详细描述":"","简略描述":"eF, vS, * 13 att sp"},{"ID":"11015","标识":"IC3175","M标识":"IC3175","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab R","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m33.3s","赤经D(J2000)":"12.342583333333334","赤纬(J2000)":"+9h51m14s","赤纬D(J2000)":"9.85388888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"50","详细描述":"round, brighter middle, magnitude 13","简略描述":"R, bM, magn 13"},{"ID":"11016","标识":"IC3176","M标识":"IC3176","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m30s","赤经D(J2000)":"12.341666666666667","赤纬(J2000)":"+25h30m55s","赤纬D(J2000)":"25.51527777777778","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"155","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11017","标识":"IC3177","M标识":"IC3177","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m36s","赤经D(J2000)":"12.343333333333334","赤纬(J2000)":"+14h7m42s","赤纬D(J2000)":"14.128333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"large, very much extended 45°, 2.5 arcmin across","简略描述":"L, vmE 45°, 2'.5 l"},{"ID":"11018","标识":"IC3178","M标识":"IC3178","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m35s","赤经D(J2000)":"12.343055555555557","赤纬(J2000)":"+26h10m12s","赤纬D(J2000)":"26.17","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregular figure, nucleus","简略描述":"F, vS, iF, N"},{"ID":"11019","标识":"IC3179","M标识":"IC3179","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m37.7s","赤经D(J2000)":"12.343805555555557","赤纬(J2000)":"+26h9m55s","赤纬D(J2000)":"26.165277777777778","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, irregular figure, nucleus","简略描述":"F, vS, iF, N"},{"ID":"11020","标识":"IC3180","M标识":"IC3180","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h20m24s","赤经D(J2000)":"12.34","赤纬(J2000)":"+60h41m4s","赤纬D(J2000)":"60.68444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, round, 7.5 magnitude star to south, following of 2","简略描述":"vF, pL, R, * 7.5 s, f of 2"},{"ID":"11021","标识":"IC3181","M标识":"IC3181","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m42.1s","赤经D(J2000)":"12.345027777777778","赤纬(J2000)":"+29h20m44s","赤纬D(J2000)":"29.345555555555553","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"150","详细描述":"","简略描述":"pF, pL, lE 150° "},{"ID":"11022","标识":"IC3182","M标识":"IC3182","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m48s","赤经D(J2000)":"12.346666666666668","赤纬(J2000)":"+12h43m42s","赤纬D(J2000)":"12.728333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, binuclear","简略描述":"vF, S, biN"},{"ID":"11023","标识":"IC3183","M标识":"IC3183","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m48.9s","赤经D(J2000)":"12.346916666666667","赤纬(J2000)":"+6h41m11s","赤纬D(J2000)":"6.686388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, considerably small, perhaps a star?","简略描述":"vF, cS, st ?"},{"ID":"11024","标识":"IC3184","M标识":"IC3184","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m46.7s","赤经D(J2000)":"12.346305555555556","赤纬(J2000)":"+24h54m56s","赤纬D(J2000)":"24.915555555555553","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"45","详细描述":"pretty faint, considerably small, extended 40°, brighter middle","简略描述":"pF, cS, E 40°, bM"},{"ID":"11025","标识":"IC3185","M标识":"IC3185","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m52.6s","赤经D(J2000)":"12.347944444444446","赤纬(J2000)":"+25h25m46s","赤纬D(J2000)":"25.429444444444446","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"10.9","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"95","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11026","标识":"IC3186","M标识":"IC3186","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m55.9s","赤经D(J2000)":"12.34886111111111","赤纬(J2000)":"+24h40m9s","赤纬D(J2000)":"24.66916666666667","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"171","详细描述":"pretty bright, small, round, brighter middle","简略描述":"pB, S, R, bM"},{"ID":"11027","标识":"IC3187","M标识":"IC3187","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc R","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m54.8s","赤经D(J2000)":"12.348555555555556","赤纬(J2000)":"+11h9m41s","赤纬D(J2000)":"11.161388888888888","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"95","详细描述":"very little extended, brighter middle, magnitude 14.5","简略描述":"vlE, bM, magn 14.5"},{"ID":"11028","标识":"IC3188","M标识":"IC3188","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h20m55.1s","赤经D(J2000)":"12.348638888888889","赤纬(J2000)":"+11h0m31s","赤纬D(J2000)":"11.008611111111112","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"51","详细描述":"round, brighter middle, magnitude 13.5","简略描述":"R, bM, magn 13.5"},{"ID":"11029","标识":"IC3189","M标识":"IC3189","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h20m56.2s","赤经D(J2000)":"12.348944444444445","赤纬(J2000)":"+25h25m35s","赤纬D(J2000)":"25.42638888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"95","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11030","标识":"IC3190","M标识":"IC3190","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h21m2.4s","赤经D(J2000)":"12.350666666666667","赤纬(J2000)":"+9h34m12s","赤纬D(J2000)":"9.57","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"11031","标识":"IC3191","M标识":"IC3191","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h21m5.3s","赤经D(J2000)":"12.351472222222222","赤纬(J2000)":"+7h42m16s","赤纬D(J2000)":"7.704444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"11032","标识":"IC3192","M标识":"IC3192","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h21m4.7s","赤经D(J2000)":"12.351305555555555","赤纬(J2000)":"+11h45m14s","赤纬D(J2000)":"11.75388888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"","详细描述":"a little brighter middle, perhaps a planetary nebula, magnitude 15","简略描述":"lbM, planetary ?, magn 15"},{"ID":"11033","标识":"IC3193","M标识":"IC3193","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m1.2s","赤经D(J2000)":"12.350333333333333","赤纬(J2000)":"+27h53m55s","赤纬D(J2000)":"27.898611111111112","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"135","详细描述":"faint, small, irregular figure, perhaps a double star","简略描述":"F, S, iF, ? D *"},{"ID":"11034","标识":"IC3194","M标识":"IC3194","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m9.1s","赤经D(J2000)":"12.352527777777777","赤纬(J2000)":"+25h8m1s","赤纬D(J2000)":"25.13361111111111","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"170","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11035","标识":"IC3195","M标识":"IC3195","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m17.5s","赤经D(J2000)":"12.354861111111111","赤纬(J2000)":"+25h48m29s","赤纬D(J2000)":"25.808055555555555","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"11036","标识":"IC3196","M标识":"IC3196","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h21m26.7s","赤经D(J2000)":"12.357416666666666","赤纬(J2000)":"+11h45m28s","赤纬D(J2000)":"11.757777777777777","可见光星等V":"15.9","摄影(蓝光)星等B":"16.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"85","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"11037","标识":"IC3197","M标识":"IC3197","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m25.8s","赤经D(J2000)":"12.357166666666666","赤纬(J2000)":"+25h26m38s","赤纬D(J2000)":"25.44388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, bright middle","简略描述":"F, vS, R, bM"},{"ID":"11038","标识":"IC3198","M标识":"IC3198","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m31.2s","赤经D(J2000)":"12.358666666666666","赤纬(J2000)":"+26h21m59s","赤纬D(J2000)":"26.366388888888892","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"11039","标识":"IC3199","M标识":"IC3199","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a R","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h21m45.5s","赤经D(J2000)":"12.362638888888888","赤纬(J2000)":"+10h35m46s","赤纬D(J2000)":"10.596111111111112","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.6","方位角":"170","详细描述":"round, brighter middle, magnitude 14","简略描述":"R, bM, magn 14"},{"ID":"11040","标识":"IC3200","M标识":"IC3200","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m37.2s","赤经D(J2000)":"12.360333333333333","赤纬(J2000)":"+26h45m39s","赤纬D(J2000)":"26.760833333333334","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"10","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"11041","标识":"IC3201","M标识":"IC3201","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0\/P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m40.3s","赤经D(J2000)":"12.361194444444443","赤纬(J2000)":"+25h43m34s","赤纬D(J2000)":"25.72611111111111","可见光星等V":"15.9","摄影(蓝光)星等B":"16.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"11042","标识":"IC3202","M标识":"IC3202","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m44.2s","赤经D(J2000)":"12.362277777777777","赤纬(J2000)":"+27h3m27s","赤纬D(J2000)":"27.0575","可见光星等V":"16.4","摄影(蓝光)星等B":"17.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"11043","标识":"IC3203","M标识":"IC3203","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m45.6s","赤经D(J2000)":"12.362666666666666","赤纬(J2000)":"+25h53m3s","赤纬D(J2000)":"25.884166666666665","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"0.2","方位角":"145","详细描述":"pretty faint, small, extended 150°","简略描述":"pF, S, E 150°"},{"ID":"11044","标识":"IC3204","M标识":"IC3204","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m50.5s","赤经D(J2000)":"12.364027777777778","赤纬(J2000)":"+24h14m56s","赤纬D(J2000)":"24.24888888888889","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"115","详细描述":"faint, small, extended","简略描述":"F, S, E"},{"ID":"11045","标识":"IC3205","M标识":"IC3205","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m50.9s","赤经D(J2000)":"12.364138888888888","赤纬(J2000)":"+26h20m29s","赤纬D(J2000)":"26.341388888888886","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"considerably faint, small, irregular figure, nuclear","简略描述":"cF, S, iF, N"},{"ID":"11046","标识":"IC3206","M标识":"IC3206","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m51.3s","赤经D(J2000)":"12.36425","赤纬(J2000)":"+26h21m51s","赤纬D(J2000)":"26.36416666666667","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"115","详细描述":"considerably faint, small, irregular figure, nuclear","简略描述":"cF, S, iF, N"},{"ID":"11047","标识":"IC3207","M标识":"IC3207","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h21m52.5s","赤经D(J2000)":"12.364583333333332","赤纬(J2000)":"+24h21m16s","赤纬D(J2000)":"24.354444444444447","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"90","详细描述":"faint, small, extended 100°","简略描述":"F, S, E 100°"},{"ID":"11048","标识":"IC3208","M标识":"IC3208","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IB","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h21m55.5s","赤经D(J2000)":"12.365416666666667","赤纬(J2000)":"+11h58m1s","赤纬D(J2000)":"11.966944444444444","可见光星等V":"14.7","摄影(蓝光)星等B":"15.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"70","详细描述":"","简略描述":"F, pL, vmE 70°"},{"ID":"11049","标识":"IC3209","M标识":"IC3209","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m6.1s","赤经D(J2000)":"12.368361111111112","赤纬(J2000)":"+11h45m17s","赤纬D(J2000)":"11.754722222222222","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"160","详细描述":"","简略描述":"pL, E 140°, sbM *, spir"},{"ID":"11050","标识":"IC3210","M标识":"IC3210","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m0.8s","赤经D(J2000)":"12.366888888888889","赤纬(J2000)":"+28h25m52s","赤纬D(J2000)":"28.43111111111111","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"80","详细描述":"faint, small, round, brighter middle, spiral","简略描述":"F, S, R, bM, spir"},{"ID":"11051","标识":"IC3211","M标识":"IC3211","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m7.3s","赤经D(J2000)":"12.368694444444445","赤纬(J2000)":"+8h59m26s","赤纬D(J2000)":"8.990555555555554","可见光星等V":"14.5","摄影(蓝光)星等B":"15.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"11052","标识":"IC3212","M标识":"IC3212","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m3.4s","赤经D(J2000)":"12.367611111111112","赤纬(J2000)":"+28h11m9s","赤纬D(J2000)":"28.185833333333335","可见光星等V":"15","摄影(蓝光)星等B":"15.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, gradually a little brighter middle","简略描述":"F, S, R, glbM"},{"ID":"11053","标识":"IC3213","M标识":"IC3213","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m7.7s","赤经D(J2000)":"12.368805555555555","赤纬(J2000)":"+23h52m8s","赤纬D(J2000)":"23.86888888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"0","详细描述":"pretty faint, small, round, brighter middle, 12th magnitude star attached on northwest","简略描述":"pF, S, R, bM, * 12 att np"},{"ID":"11054","标识":"IC3214","M标识":"IC3214","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m9.1s","赤经D(J2000)":"12.369194444444444","赤纬(J2000)":"+27h14m6s","赤纬D(J2000)":"27.235","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11055","标识":"IC3215","M标识":"IC3215","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m10.2s","赤经D(J2000)":"12.3695","赤纬(J2000)":"+26h3m6s","赤纬D(J2000)":"26.051666666666666","可见光星等V":"14.4","摄影(蓝光)星等B":"15","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.8","短轴(分)":"0.5","方位角":"92","详细描述":"very faint, pretty small, extended 95°, brighter middle","简略描述":"vF, pS, E 95°, bM"},{"ID":"11056","标识":"IC3216","M标识":"IC3216","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m11.8s","赤经D(J2000)":"12.369944444444444","赤纬(J2000)":"+25h17m12s","赤纬D(J2000)":"25.28666666666667","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11057","标识":"IC3217","M标识":"IC3217","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m13.5s","赤经D(J2000)":"12.370416666666667","赤纬(J2000)":"+26h23m9s","赤纬D(J2000)":"26.385833333333334","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"5","详细描述":"considerably faint, small, round, brighter middle, spiral","简略描述":"cF, S, R, bM, spir"},{"ID":"11058","标识":"IC3218","M标识":"IC3218","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m19.6s","赤经D(J2000)":"12.372111111111112","赤纬(J2000)":"+6h55m38s","赤纬D(J2000)":"6.927222222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, pretty large, possibly binuclear","简略描述":"vF, pL, biN ?"},{"ID":"11059","标识":"IC3219","M标识":"IC3219","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m15s","赤经D(J2000)":"12.370833333333334","赤纬(J2000)":"+25h57m4s","赤纬D(J2000)":"25.95111111111111","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.7","短轴(分)":"0.1","方位角":"5","详细描述":"extremely faint, very small, round, brighter middle, spiral","简略描述":"eF, vS, R, bM, spir"},{"ID":"11060","标识":"IC3220","M标识":"IC3220","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m21.7s","赤经D(J2000)":"12.372694444444445","赤纬(J2000)":"+10h36m4s","赤纬D(J2000)":"10.601111111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1","短轴(分)":"0.5","方位角":"5","详细描述":"round, brighter middle, magnitude 14.5","简略描述":"R, bM, magn 14.5"},{"ID":"11061","标识":"IC3221","M标识":"IC3221","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m20.1s","赤经D(J2000)":"12.372250000000001","赤纬(J2000)":"+25h17m0s","赤纬D(J2000)":"25.283333333333335","可见光星等V":"15.9","摄影(蓝光)星等B":"16.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"130","详细描述":"extremely faint, small, irregular figure, very difficult","简略描述":"eF, S, iF, v diffic"},{"ID":"11062","标识":"IC3222","M标识":"IC3222","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m19.5s","赤经D(J2000)":"12.372083333333334","赤纬(J2000)":"+28h49m53s","赤纬D(J2000)":"28.83138888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"17","详细描述":"faint, considerably small, diffuse","简略描述":"F, cS, dif"},{"ID":"11063","标识":"IC3223","M标识":"IC3223","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m30.6s","赤经D(J2000)":"12.375166666666667","赤纬(J2000)":"+9h29m14s","赤纬D(J2000)":"9.487222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, among 3 very faint stars","简略描述":"vF, pS, am 3 vF st"},{"ID":"11064","标识":"IC3224","M标识":"IC3224","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m36s","赤经D(J2000)":"12.376666666666667","赤纬(J2000)":"+12h9m30s","赤纬D(J2000)":"12.158333333333333","可见光星等V":"15.6","摄影(蓝光)星等B":"16.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"70","详细描述":"round, brighter middle, magnitude 14.5","简略描述":"R, bM, magn 14.5"},{"ID":"11065","标识":"IC3225","M标识":"IC3225","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m39s","赤经D(J2000)":"12.377500000000001","赤纬(J2000)":"+6h40m35s","赤纬D(J2000)":"6.676388888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"40","详细描述":"faint, small, possibly a star","简略描述":"F, S, ? St"},{"ID":"11066","标识":"IC3226","M标识":"IC3226","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m34.6s","赤经D(J2000)":"12.376277777777778","赤纬(J2000)":"+26h3m54s","赤纬D(J2000)":"26.065","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, brighter middle like a star, spiral","简略描述":"vF, vS, bM *, spir"},{"ID":"11067","标识":"IC3227","M标识":"IC3227","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m35.6s","赤经D(J2000)":"12.376555555555557","赤纬(J2000)":"+24h5m9s","赤纬D(J2000)":"24.085833333333333","可见光星等V":"16.1","摄影(蓝光)星等B":"16.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"0","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"11068","标识":"IC3228","M标识":"IC3228","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m39.4s","赤经D(J2000)":"12.377611111111111","赤纬(J2000)":"+24h19m48s","赤纬D(J2000)":"24.33","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"135","详细描述":"faint, very small, extended 150°, brighter middle","简略描述":"F, vS, E 150°, bM"},{"ID":"11069","标识":"IC3229","M标识":"IC3229","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m52.8s","赤经D(J2000)":"12.381333333333334","赤纬(J2000)":"+6h40m48s","赤纬D(J2000)":"6.680000000000001","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.3","方位角":"47","详细描述":"extremely faint, extremely small, diffuse, questionable","简略描述":"eF, cS, dif, ?"},{"ID":"11070","标识":"IC3230","M标识":"IC3230","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m39.6s","赤经D(J2000)":"12.377666666666666","赤纬(J2000)":"+27h44m48s","赤纬D(J2000)":"27.746666666666666","可见光星等V":"15.8","摄影(蓝光)星等B":"16.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"faint, very small, irregular figure","简略描述":"F, vS, iF"},{"ID":"11071","标识":"IC3231","M标识":"IC3231","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m43.7s","赤经D(J2000)":"12.378805555555555","赤纬(J2000)":"+24h49m14s","赤纬D(J2000)":"24.820555555555554","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"25","详细描述":"pretty faint, small, irregular figure, brighter middle","简略描述":"pF, S, iF, bM"},{"ID":"11072","标识":"IC3232","M标识":"IC3232","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m47.8s","赤经D(J2000)":"12.379944444444446","赤纬(J2000)":"+24h25m33s","赤纬D(J2000)":"24.425833333333333","可见光星等V":"99","摄影(蓝光)星等B":"15.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, extremely small, nebulous star","简略描述":"F, eS, neb *"},{"ID":"11073","标识":"IC3233","M标识":"IC3233","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h22m54.9s","赤经D(J2000)":"12.381916666666667","赤纬(J2000)":"+12h33m59s","赤纬D(J2000)":"12.56638888888889","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"90","详细描述":"round, brighter middle, magnitude 15","简略描述":"R, bM, magn 15"},{"ID":"11074","标识":"IC3234","M标识":"IC3234","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m52.1s","赤经D(J2000)":"12.38113888888889","赤纬(J2000)":"+28h6m46s","赤纬D(J2000)":"28.11277777777778","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"11075","标识":"IC3235","M标识":"IC3235","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m57.9s","赤经D(J2000)":"12.38275","赤纬(J2000)":"+13h32m43s","赤纬D(J2000)":"13.545277777777777","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"135","详细描述":"a little extended, brighter middle, magnitude 15","简略描述":"lE, bM, magn 15"},{"ID":"11076","标识":"IC3236","M标识":"IC3236","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m0.2s","赤经D(J2000)":"12.383388888888888","赤纬(J2000)":"+10h6m6s","赤纬D(J2000)":"10.101666666666667","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"120","详细描述":"round, brighter middle, magnitude 14","简略描述":"R, bM, magn 14"},{"ID":"11077","标识":"IC3237","M标识":"IC3237","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h22m58s","赤经D(J2000)":"12.382777777777779","赤纬(J2000)":"+28h29m38s","赤纬D(J2000)":"28.49388888888889","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"55","详细描述":"","简略描述":"F, cS, iF, eFN, att * 14 sp"},{"ID":"11078","标识":"IC3238","M标识":"IC3238","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m6.4s","赤经D(J2000)":"12.38511111111111","赤纬(J2000)":"+14h27m32s","赤纬D(J2000)":"14.458888888888888","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"round, brighter middle, magnitude 14","简略描述":"R, bM, magn 14"},{"ID":"11079","标识":"IC3239","M标识":"IC3239","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m9.5s","赤经D(J2000)":"12.385972222222222","赤纬(J2000)":"+11h43m33s","赤纬D(J2000)":"11.725833333333334","可见光星等V":"14.8","摄影(蓝光)星等B":"15.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"155","详细描述":"extended, a little brighter middle, magnitude 15","简略描述":"E, lbM, magn 15"},{"ID":"11080","标识":"IC3240","M标识":"IC3240","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m7.4s","赤经D(J2000)":"12.385388888888889","赤纬(J2000)":"+10h21m43s","赤纬D(J2000)":"10.361944444444443","可见光星等V":"15.8","摄影(蓝光)星等B":"16.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"80","详细描述":"round, brighter middle, magnitude 15","简略描述":"R, bM, magn 15"},{"ID":"11081","标识":"IC3241","M标识":"IC3241","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m8.4s","赤经D(J2000)":"12.385666666666665","赤纬(J2000)":"+26h54m21s","赤纬D(J2000)":"26.90583333333333","可见光星等V":"16.3","摄影(蓝光)星等B":"17.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"10","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11082","标识":"IC3242","M标识":"IC3242","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m10.4s","赤经D(J2000)":"12.386222222222221","赤纬(J2000)":"+26h14m58s","赤纬D(J2000)":"26.249444444444446","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"170","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"11083","标识":"IC3243","M标识":"IC3243","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m11.3s","赤经D(J2000)":"12.386472222222222","赤纬(J2000)":"+27h45m56s","赤纬D(J2000)":"27.765555555555554","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"54","详细描述":"faint, small, irregular figure, diffuse","简略描述":"F, S, iF, dif"},{"ID":"11084","标识":"IC3244","M标识":"IC3244","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m12.3s","赤经D(J2000)":"12.38675","赤纬(J2000)":"+14h23m21s","赤纬D(J2000)":"14.389166666666666","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"80","详细描述":"round, brighter middle, magnitude 14","简略描述":"R, bM, magn 14"},{"ID":"11085","标识":"IC3245","M标识":"IC3245","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m18s","赤经D(J2000)":"12.388333333333334","赤纬(J2000)":"+9h7m48s","赤纬D(J2000)":"9.13","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, brighter middle, possible defect","简略描述":"vF, pL, bM, ? Defect"},{"ID":"11086","标识":"IC3246","M标识":"IC3246","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m17.2s","赤经D(J2000)":"12.38811111111111","赤纬(J2000)":"+13h3m6s","赤纬D(J2000)":"13.051666666666668","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, pretty large, very much extended 145°, questionable","简略描述":"eF, pL, vmE 145°, ?"},{"ID":"11087","标识":"IC3247","M标识":"IC3247","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m14s","赤经D(J2000)":"12.387222222222222","赤纬(J2000)":"+28h53m35s","赤纬D(J2000)":"28.893055555555556","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2.2","短轴(分)":"0.2","方位角":"175","详细描述":"pretty faint, pretty small, extended 170°, brighter middle","简略描述":"pF, pS, E 170°, bM"},{"ID":"11088","标识":"IC3248","M标识":"IC3248","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m16.8s","赤经D(J2000)":"12.388","赤纬(J2000)":"+25h33m6s","赤纬D(J2000)":"25.551666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, round, brighter middle","简略描述":"eeF, S, R, bM, chain of about 18 neb s to n"},{"ID":"11089","标识":"IC3249","M标识":"IC3249","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m17.9s","赤经D(J2000)":"12.388305555555554","赤纬(J2000)":"+25h26m40s","赤纬D(J2000)":"25.444444444444446","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"10","详细描述":"","简略描述":"eeF, S, iF, chain of about 18 neb s to n"},{"ID":"11090","标识":"IC3250","M标识":"IC3250","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m17.8s","赤经D(J2000)":"12.388277777777777","赤纬(J2000)":"+25h37m43s","赤纬D(J2000)":"25.628611111111113","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, round, brighter middle","简略描述":"eeF, S, R, bM, chain of about 18 neb s to n"},{"ID":"11091","标识":"IC3251","M标识":"IC3251","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m18s","赤经D(J2000)":"12.388333333333334","赤纬(J2000)":"+25h39m13s","赤纬D(J2000)":"25.65361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, round, brighter middle","简略描述":"eeF, S, R, bM, chain of about 18 neb s to n"},{"ID":"11092","标识":"IC3252","M标识":"IC3252","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m26s","赤经D(J2000)":"12.390555555555554","赤纬(J2000)":"+28h37m6s","赤纬D(J2000)":"28.618333333333332","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, irregular figure, possible cluster","简略描述":"F, S, iF, ? Cl"},{"ID":"11093","标识":"IC3253","M标识":"IC3253","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h23m45s","赤经D(J2000)":"12.395833333333332","赤纬(J2000)":"-34h37m17s","赤纬D(J2000)":"-34.62138888888889","可见光星等V":"11.6","摄影(蓝光)星等B":"12.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.7","短轴(分)":"1.1","方位角":"23","详细描述":"extremely faint, very large, much extended 20°, a little brighter middle","简略描述":"eF, vL, mE 20°, lbM"},{"ID":"11094","标识":"IC3254","M标识":"IC3254","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m29.7s","赤经D(J2000)":"12.391583333333333","赤纬(J2000)":"+19h25m37s","赤纬D(J2000)":"19.426944444444445","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2","短轴(分)":"0.9","方位角":"162","详细描述":"bright, small, round, planetary","简略描述":"B, S, R, planetary "},{"ID":"11095","标识":"IC3255","M标识":"IC3255","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m34.8s","赤经D(J2000)":"12.392999999999999","赤纬(J2000)":"+9h38m56s","赤纬D(J2000)":"9.648888888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"110","详细描述":"round, brighter middle, magnitude 13","简略描述":"R, bM, magn 13"},{"ID":"11096","标识":"IC3256","M标识":"IC3256","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m39.1s","赤经D(J2000)":"12.394194444444445","赤纬(J2000)":"+7h3m16s","赤纬D(J2000)":"7.054444444444444","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"168","详细描述":"a 12th magnitude star in a small nebula (possibly = III 95 or 96)","简略描述":"* 12 in S neb [? = III 95 or 96]"},{"ID":"11097","标识":"IC3257","M标识":"IC3257","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m44.6s","赤经D(J2000)":"12.395722222222222","赤纬(J2000)":"+7h15m14s","赤纬D(J2000)":"7.253888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"11098","标识":"IC3258","M标识":"IC3258","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m44.5s","赤经D(J2000)":"12.395694444444445","赤纬(J2000)":"+12h28m43s","赤纬D(J2000)":"12.47861111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.6","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"109","详细描述":"","简略描述":"cF, cS, R, exc N s"},{"ID":"11099","标识":"IC3259","M标识":"IC3259","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m48.6s","赤经D(J2000)":"12.396833333333333","赤纬(J2000)":"+7h11m11s","赤纬D(J2000)":"7.186388888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"15","详细描述":"faint, considerably small, round, brighter middle","简略描述":"F, cS, R, bM"},{"ID":"11100","标识":"IC3260","M标识":"IC3260","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m53.1s","赤经D(J2000)":"12.398083333333332","赤纬(J2000)":"+7h6m25s","赤纬D(J2000)":"7.106944444444444","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"0.6","方位角":"96","详细描述":"faint, considerably small, round, brighter middle","简略描述":"F, cS, R, bM"},{"ID":"11101","标识":"IC3261","M标识":"IC3261","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m52.5s","赤经D(J2000)":"12.397916666666665","赤纬(J2000)":"+11h28m51s","赤纬D(J2000)":"11.480833333333333","可见光星等V":"14.9","摄影(蓝光)星等B":"15.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"100","详细描述":"pretty small, faint star in middle, spiral, doubtful","简略描述":"pS, F * M, spir, doubtful"},{"ID":"11102","标识":"IC3262","M标识":"IC3262","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m48.1s","赤经D(J2000)":"12.396694444444444","赤纬(J2000)":"+27h23m40s","赤纬D(J2000)":"27.394444444444446","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"155","详细描述":"faint, small, irregular figure, possible cluster","简略描述":"F, S, iF, Cl ?"},{"ID":"11103","标识":"IC3263","M标识":"IC3263","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m50.5s","赤经D(J2000)":"12.397361111111111","赤纬(J2000)":"+28h11m55s","赤纬D(J2000)":"28.198611111111113","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"111","详细描述":"","简略描述":"pF, S, R, bM, spir, 2nd sp att"},{"ID":"11104","标识":"IC3264","M标识":"IC3264","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h23m51.9s","赤经D(J2000)":"12.39775","赤纬(J2000)":"+25h33m25s","赤纬D(J2000)":"25.556944444444444","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"11105","标识":"IC3265","M标识":"IC3265","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h23m58.9s","赤经D(J2000)":"12.399694444444444","赤纬(J2000)":"+7h48m14s","赤纬D(J2000)":"7.803888888888888","可见光星等V":"99","摄影(蓝光)星等B":"13.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, nuclear, possibly a star","简略描述":"pF, S, N, ? *"},{"ID":"11106","标识":"IC3266","M标识":"IC3266","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"IBm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m0.2s","赤经D(J2000)":"12.400055555555555","赤纬(J2000)":"+7h47m3s","赤纬D(J2000)":"7.784166666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"75","详细描述":"considerably faint, small, binuclear, possibly a star","简略描述":"cF, S, biN, ? St"},{"ID":"11107","标识":"IC3267","M标识":"IC3267","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m5.5s","赤经D(J2000)":"12.401527777777778","赤纬(J2000)":"+7h2m26s","赤纬D(J2000)":"7.040555555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"pretty faint, considerably small, round","简略描述":"pF, cS, R"},{"ID":"11108","标识":"IC3268","M标识":"IC3268","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m7.6s","赤经D(J2000)":"12.402111111111111","赤纬(J2000)":"+6h36m25s","赤纬D(J2000)":"6.606944444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"48","详细描述":"pretty bright, perhaps a star","简略描述":"pB, ? *"},{"ID":"11109","标识":"IC3269","M标识":"IC3269","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m4.2s","赤经D(J2000)":"12.401166666666667","赤纬(J2000)":"+27h26m5s","赤纬D(J2000)":"27.434722222222224","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"177","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"11110","标识":"IC3270","M标识":"IC3270","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m5.8s","赤经D(J2000)":"12.401611111111112","赤纬(J2000)":"+27h34m39s","赤纬D(J2000)":"27.5775","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"60","详细描述":"very faint, very small, irregular figure","简略描述":"vF, vS, iF"},{"ID":"11111","标识":"IC3271","M标识":"IC3271","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m13.9s","赤经D(J2000)":"12.403861111111112","赤纬(J2000)":"+7h57m9s","赤纬D(J2000)":"7.952500000000001","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"extremely faint, pretty small, diffuse, very questionable","简略描述":"eF, pS, dif, ??"},{"ID":"11112","标识":"IC3272","M标识":"IC3272","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m9.3s","赤经D(J2000)":"12.402583333333334","赤纬(J2000)":"+23h17m6s","赤纬D(J2000)":"23.285","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"150","详细描述":"","简略描述":"vF, S, iF, * 13 att n"},{"ID":"11113","标识":"IC3273","M标识":"IC3273","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m14.6s","赤经D(J2000)":"12.404055555555557","赤纬(J2000)":"+8h32m13s","赤纬D(J2000)":"8.536944444444444","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.8","短轴(分)":"0.5","方位角":"40","详细描述":"","简略描述":"cF, pL, E 48°, * 10.5 inv"},{"ID":"11114","标识":"IC3274","M标识":"IC3274","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m14.6s","赤经D(J2000)":"12.404055555555557","赤纬(J2000)":"+9h16m2s","赤纬D(J2000)":"9.267222222222223","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, very small, questionable","简略描述":"eF, vS, ?"},{"ID":"11115","标识":"IC3275","M标识":"IC3275","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S R","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m19.5s","赤经D(J2000)":"12.405416666666667","赤纬(J2000)":"+10h26m47s","赤纬D(J2000)":"10.446388888888889","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"75","详细描述":"round, brighter middle, magnitude 14.5","简略描述":"R, bM, magn 14.5"},{"ID":"11116","标识":"IC3276","M标识":"IC3276","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m14s","赤经D(J2000)":"12.40388888888889","赤纬(J2000)":"+25h49m6s","赤纬D(J2000)":"25.81833333333333","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11117","标识":"IC3277","M标识":"IC3277","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m15.6s","赤经D(J2000)":"12.404333333333334","赤纬(J2000)":"+25h33m49s","赤纬D(J2000)":"25.56361111111111","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"160","详细描述":"extremely faint, considerably small, diffuse","简略描述":"eF, cS, dif"},{"ID":"11118","标识":"IC3278","M标识":"IC3278","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m15s","赤经D(J2000)":"12.404166666666667","赤纬(J2000)":"+27h25m20s","赤纬D(J2000)":"27.422222222222224","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"","详细描述":"very faint, small, irregular figure, nucleus","简略描述":"vF, S, iF, N"},{"ID":"11119","标识":"IC3279","M标识":"IC3279","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m23.6s","赤经D(J2000)":"12.406555555555556","赤纬(J2000)":"+12h51m10s","赤纬D(J2000)":"12.852777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pF, S, ? 2 st"},{"ID":"11120","标识":"IC3280","M标识":"IC3280","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc R","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m26.9s","赤经D(J2000)":"12.407472222222223","赤纬(J2000)":"+13h14m0s","赤纬D(J2000)":"13.233333333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"","详细描述":"small, round, brighter middle, magnitude 15.5","简略描述":"S, R, bM, magn 15.5"},{"ID":"11121","标识":"IC3281","M标识":"IC3281","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m28s","赤经D(J2000)":"12.407777777777778","赤纬(J2000)":"+7h49m8s","赤纬D(J2000)":"7.818888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty small, nuclear, stellar","简略描述":"pB, pS, N, stell"},{"ID":"11122","标识":"IC3282","M标识":"IC3282","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m28s","赤经D(J2000)":"12.407777777777778","赤纬(J2000)":"+25h40m14s","赤纬D(J2000)":"25.670555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, round, brighter middle","简略描述":"eF, vS, R, bM"},{"ID":"11123","标识":"IC3283","M标识":"IC3283","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m28.1s","赤经D(J2000)":"12.407805555555555","赤纬(J2000)":"+27h12m42s","赤纬D(J2000)":"27.211666666666666","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"45","详细描述":"very faint, small, round, brighter middle, spiral","简略描述":"vF, S, R, bM, spir"},{"ID":"11124","标识":"IC3284","M标识":"IC3284","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBR","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m37.5s","赤经D(J2000)":"12.410416666666666","赤纬(J2000)":"+10h50m19s","赤纬D(J2000)":"10.838611111111112","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very small, round, brighter middle, magnitude 14","简略描述":"vS, R, bM, magn 14"},{"ID":"11125","标识":"IC3285","M标识":"IC3285","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m33.7s","赤经D(J2000)":"12.409361111111112","赤纬(J2000)":"+24h51m35s","赤纬D(J2000)":"24.859722222222224","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, bright middle, in diffuse nebula extended 25°","简略描述":"vF, vS, R, bM, in dif neb E 25°"},{"ID":"11126","标识":"IC3286","M标识":"IC3286","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m34.5s","赤经D(J2000)":"12.409583333333334","赤纬(J2000)":"+23h44m52s","赤纬D(J2000)":"23.747777777777777","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"60","详细描述":"small, pretty round","简略描述":"S, pR"},{"ID":"11127","标识":"IC3287","M标识":"IC3287","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m37s","赤经D(J2000)":"12.410277777777779","赤纬(J2000)":"+24h35m41s","赤纬D(J2000)":"24.59472222222222","可见光星等V":"17.2","摄影(蓝光)星等B":"18","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"","简略描述":"eF, cS, iF, in dif neby"},{"ID":"11128","标识":"IC3288","M标识":"IC3288","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m39.3s","赤经D(J2000)":"12.410916666666667","赤纬(J2000)":"+24h56m57s","赤纬D(J2000)":"24.949166666666667","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"120","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11129","标识":"IC3289","M标识":"IC3289","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h24m57.4s","赤经D(J2000)":"12.415944444444445","赤纬(J2000)":"-26h1m49s","赤纬D(J2000)":"-26.030277777777776","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"extremely faint, very small, round, very difficult, 7th magnitude star to northeast, 8th magnitude star to northwest","简略描述":"eF, vS, R, v diffic, * 7 nf, * 8 np"},{"ID":"11130","标识":"IC3290","M标识":"IC3290","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h25m8.8s","赤经D(J2000)":"12.41911111111111","赤纬(J2000)":"-39h46m33s","赤纬D(J2000)":"-39.77583333333333","可见光星等V":"12","摄影(蓝光)星等B":"12.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2","短轴(分)":"1.4","方位角":"43","详细描述":"","简略描述":"pF, vS, R, * att, 4373 f"},{"ID":"11131","标识":"IC3291","M标识":"IC3291","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h24m48.3s","赤经D(J2000)":"12.413416666666667","赤纬(J2000)":"+12h1m9s","赤纬D(J2000)":"12.019166666666667","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"60","详细描述":"round, brighter middle, magnitude 14","简略描述":"R, bM, magn 14"},{"ID":"11132","标识":"IC3292","M标识":"IC3292","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m48.3s","赤经D(J2000)":"12.413416666666667","赤纬(J2000)":"+18h11m44s","赤纬D(J2000)":"18.195555555555554","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11133","标识":"IC3293","M标识":"IC3293","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m53.5s","赤经D(J2000)":"12.414861111111112","赤纬(J2000)":"+17h25m57s","赤纬D(J2000)":"17.4325","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"70","详细描述":"faint, extremely small, round, a planetary nebula","简略描述":"F, eS, R, planetary"},{"ID":"11134","标识":"IC3294","M标识":"IC3294","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m49.6s","赤经D(J2000)":"12.413777777777778","赤纬(J2000)":"+25h35m49s","赤纬D(J2000)":"25.596944444444443","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, considerably small, diffuse","简略描述":"eF, cS, dif"},{"ID":"11135","标识":"IC3295","M标识":"IC3295","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m49s","赤经D(J2000)":"12.413611111111111","赤纬(J2000)":"+28h42m28s","赤纬D(J2000)":"28.70777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, small, round, brighter middle","简略描述":"cF, S, R, bM"},{"ID":"11136","标识":"IC3296","M标识":"IC3296","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m57.7s","赤经D(J2000)":"12.416027777777778","赤纬(J2000)":"+24h23m0s","赤纬D(J2000)":"24.383333333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"92","详细描述":"considerably faint, a nebula equal to 13th magnitude star, 13th magnitude star to southwest","简略描述":"cF, neb * 13, * 13 sp"},{"ID":"11137","标识":"IC3297","M标识":"IC3297","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h24m58s","赤经D(J2000)":"12.416111111111112","赤纬(J2000)":"+26h46m17s","赤纬D(J2000)":"26.77138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large, round, brighter middle, spiral","简略描述":"vF, pL, R, bM, spir"},{"ID":"11138","标识":"IC3298","M标识":"IC3298","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m3.8s","赤经D(J2000)":"12.417722222222222","赤纬(J2000)":"+17h0m55s","赤纬D(J2000)":"17.01527777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"160","详细描述":"small, extended 150°, brighter middle","简略描述":"S, E 150°, bM"},{"ID":"11139","标识":"IC3299","M标识":"IC3299","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m3.1s","赤经D(J2000)":"12.417527777777778","赤纬(J2000)":"+27h22m30s","赤纬D(J2000)":"27.375","可见光星等V":"17.2","摄影(蓝光)星等B":"18","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"40","详细描述":"very faint, very small, round, brighter middle, spiral","简略描述":"vF, vS, R, bM, spir"},{"ID":"11140","标识":"IC3300","M标识":"IC3300","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m4.8s","赤经D(J2000)":"12.418","赤纬(J2000)":"+25h57m24s","赤纬D(J2000)":"25.956666666666667","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.3","方位角":"79","详细描述":"pretty faint, pretty small, extended 80°, brighter middle","简略描述":"pF, pS, E 80°, bM"},{"ID":"11141","标识":"IC3301","M标识":"IC3301","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m17.6s","赤经D(J2000)":"12.421555555555555","赤纬(J2000)":"+14h10m19s","赤纬D(J2000)":"14.171944444444444","可见光星等V":"15.4","摄影(蓝光)星等B":"16.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"11142","标识":"IC3302","M标识":"IC3302","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m10.3s","赤经D(J2000)":"12.419527777777777","赤纬(J2000)":"+25h52m43s","赤纬D(J2000)":"25.878611111111113","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, very small, irregular figure","简略描述":"eF, vS, iF"},{"ID":"11143","标识":"IC3303","M标识":"IC3303","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m15.2s","赤经D(J2000)":"12.420888888888888","赤纬(J2000)":"+12h42m54s","赤纬D(J2000)":"12.715","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.6","方位角":"73","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"11144","标识":"IC3304","M标识":"IC3304","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m11.7s","赤经D(J2000)":"12.419916666666666","赤纬(J2000)":"+25h25m25s","赤纬D(J2000)":"25.42361111111111","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"11145","标识":"IC3305","M标识":"IC3305","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m14.5s","赤经D(J2000)":"12.420694444444443","赤纬(J2000)":"+11h50m59s","赤纬D(J2000)":"11.849722222222223","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"44","详细描述":"very little extended, brighter middle, magnitude 15","简略描述":"vlE, bM, magn 15"},{"ID":"11146","标识":"IC3306","M标识":"IC3306","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m12.4s","赤经D(J2000)":"12.42011111111111","赤纬(J2000)":"+27h24m10s","赤纬D(J2000)":"27.402777777777775","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"135","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11147","标识":"IC3307","M标识":"IC3307","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m17.6s","赤经D(J2000)":"12.421555555555555","赤纬(J2000)":"+14h10m19s","赤纬D(J2000)":"14.171944444444444","可见光星等V":"15.4","摄影(蓝光)星等B":"16.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"round, brighter middle, magnitude 15","简略描述":"R, bM, magn 15"},{"ID":"11148","标识":"IC3308","M标识":"IC3308","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m18.1s","赤经D(J2000)":"12.421694444444444","赤纬(J2000)":"+26h42m57s","赤纬D(J2000)":"26.715833333333332","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.2","方位角":"65","详细描述":"","简略描述":"F, cS, E 70°, bM"},{"ID":"11149","标识":"IC3309","M标识":"IC3309","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m20.2s","赤经D(J2000)":"12.422277777777778","赤纬(J2000)":"+28h22m53s","赤纬D(J2000)":"28.38138888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"15","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"85","详细描述":"faint, pretty small, round, brighter middle, spiral","简略描述":"F, pS, R, bM, spir"},{"ID":"11150","标识":"IC3310","M标识":"IC3310","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m55.3s","赤经D(J2000)":"12.432027777777778","赤纬(J2000)":"+15h40m49s","赤纬D(J2000)":"15.680277777777777","可见光星等V":"99","摄影(蓝光)星等B":"14.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, diffuse, suddenly brighter middle","简略描述":"vF, S, dif, sbM"},{"ID":"11151","标识":"IC3311","M标识":"IC3311","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m33.1s","赤经D(J2000)":"12.42586111111111","赤纬(J2000)":"+12h15m37s","赤纬D(J2000)":"12.260277777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"14.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"0.3","方位角":"135","详细描述":"very faint, considerably small, much extended 135°","简略描述":"vF, cS, mE 135°"},{"ID":"11152","标识":"IC3312","M标识":"IC3312","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m29.8s","赤经D(J2000)":"12.424944444444444","赤纬(J2000)":"+23h34m53s","赤纬D(J2000)":"23.58138888888889","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"160","详细描述":"extremely faint, small, round, brighter middle, very difficult","简略描述":"eF, S, R, bM, v diffic"},{"ID":"11153","标识":"IC3313","M标识":"IC3313","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m36.5s","赤经D(J2000)":"12.426805555555555","赤纬(J2000)":"+15h49m47s","赤纬D(J2000)":"15.829722222222221","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"","简略描述":"F, vS, R, planetary, B 297 ssp"},{"ID":"11154","标识":"IC3314","M标识":"IC3314","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m31.4s","赤经D(J2000)":"12.425388888888888","赤纬(J2000)":"+23h35m30s","赤纬D(J2000)":"23.591666666666665","可见光星等V":"16.1","摄影(蓝光)星等B":"17.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"30","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"11155","标识":"IC3315","M标识":"IC3315","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m39s","赤经D(J2000)":"12.4275","赤纬(J2000)":"+12h18m48s","赤纬D(J2000)":"12.313333333333334","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"93","详细描述":"extended, brighter middle, magnitude 15","简略描述":"E, bM, magn 15"},{"ID":"11156","标识":"IC3316","M标识":"IC3316","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m36s","赤经D(J2000)":"12.426666666666666","赤纬(J2000)":"+26h9m51s","赤纬D(J2000)":"26.164166666666667","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"80","详细描述":"extremely faint, very small, brighter middle, possibly nebulous","简略描述":"eF, vS, bM, ? neb"},{"ID":"11157","标识":"IC3317","M标识":"IC3317","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E+E","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m38.8s","赤经D(J2000)":"12.427444444444443","赤纬(J2000)":"+25h20m36s","赤纬D(J2000)":"25.343333333333334","可见光星等V":"16.5","摄影(蓝光)星等B":"17.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"40","详细描述":"extremely faint, small, extended","简略描述":"eF, S, E"},{"ID":"11158","标识":"IC3318","M标识":"IC3318","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m50s","赤经D(J2000)":"12.430555555555555","赤纬(J2000)":"+9h45m46s","赤纬D(J2000)":"9.762777777777778","可见光星等V":"99","摄影(蓝光)星等B":"11","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, small, = 10.5 magnitude star","简略描述":"pB, S, = * 10.5"},{"ID":"11159","标识":"IC3319","M标识":"IC3319","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m51s","赤经D(J2000)":"12.430833333333332","赤纬(J2000)":"+10h23m28s","赤纬D(J2000)":"10.39111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty small","简略描述":"pF, pS"},{"ID":"11160","标识":"IC3320","M标识":"IC3320","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m50.5s","赤经D(J2000)":"12.430694444444445","赤纬(J2000)":"+10h27m32s","赤纬D(J2000)":"10.458888888888888","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"95","详细描述":"pretty faint, pretty small, irregular figure, faint nucleus","简略描述":"pF, pS, iF, FN"},{"ID":"11161","标识":"IC3321","M标识":"IC3321","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m46s","赤经D(J2000)":"12.429444444444444","赤纬(J2000)":"+26h4m55s","赤纬D(J2000)":"26.081944444444446","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"10","详细描述":"very faint, very small, round, perhaps a double star","简略描述":"vF, vS, R, ? D *"},{"ID":"11162","标识":"IC3322","M标识":"IC3322","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m54.1s","赤经D(J2000)":"12.431694444444444","赤纬(J2000)":"+7h33m17s","赤纬D(J2000)":"7.554722222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.3","短轴(分)":"0.5","方位角":"156","详细描述":"considerably faint, pretty small, much extended 130°","简略描述":"cF, pS, mE 130°"},{"ID":"11163","标识":"IC3323","M标识":"IC3323","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m48.2s","赤经D(J2000)":"12.430055555555555","赤纬(J2000)":"+27h32m36s","赤纬D(J2000)":"27.543333333333337","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, very small, round, brighter middle, nebulous star attached","简略描述":"cF, vS, R, bM, neb * att"},{"ID":"11164","标识":"IC3324","M标识":"IC3324","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m49s","赤经D(J2000)":"12.430277777777777","赤纬(J2000)":"+26h44m22s","赤纬D(J2000)":"26.739444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, very small, round, brighter middle, spiral","简略描述":"cF, vS, R, bM, spir"},{"ID":"11165","标识":"IC3325","M标识":"IC3325","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m51.4s","赤经D(J2000)":"12.430944444444444","赤纬(J2000)":"+23h53m45s","赤纬D(J2000)":"23.895833333333332","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"20","详细描述":"faint, small","简略描述":"F, S"},{"ID":"11166","标识":"IC3326","M标识":"IC3326","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m52.7s","赤经D(J2000)":"12.431305555555555","赤纬(J2000)":"+23h46m6s","赤纬D(J2000)":"23.76833333333333","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"170","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"11167","标识":"IC3327","M标识":"IC3327","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m2.8s","赤经D(J2000)":"12.434111111111111","赤纬(J2000)":"+14h52m49s","赤纬D(J2000)":"14.880277777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"11168","标识":"IC3328","M标识":"IC3328","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h25m58s","赤经D(J2000)":"12.432777777777778","赤纬(J2000)":"+10h3m14s","赤纬D(J2000)":"10.05388888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, very small, brighter middle","简略描述":"vF, vS, bM"},{"ID":"11169","标识":"IC3329","M标识":"IC3329","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m55.9s","赤经D(J2000)":"12.432194444444443","赤纬(J2000)":"+27h33m52s","赤纬D(J2000)":"27.564444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, small, irregular figure, attached to (NGC) 4393","简略描述":"vF, S, iF, att 4393"},{"ID":"11170","标识":"IC3330","M标识":"IC3330","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h25m56.3s","赤经D(J2000)":"12.432305555555555","赤纬(J2000)":"+30h50m35s","赤纬D(J2000)":"30.843055555555555","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"100","详细描述":"faint, considerably small, extended east-west, gradually brighter middle","简略描述":"F, cS, E pf, gbM"},{"ID":"11171","标识":"IC3331","M标识":"IC3331","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m5.3s","赤经D(J2000)":"12.434805555555556","赤纬(J2000)":"+11h48m45s","赤纬D(J2000)":"11.8125","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"48","详细描述":"","简略描述":"eF, cS, E 78°, bM"},{"ID":"11172","标识":"IC3332","M标识":"IC3332","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E+E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m5.1s","赤经D(J2000)":"12.434750000000001","赤纬(J2000)":"+25h16m46s","赤纬D(J2000)":"25.279444444444444","可见光星等V":"16.5","摄影(蓝光)星等B":"17.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"150","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11173","标识":"IC3333","M标识":"IC3333","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m8.9s","赤经D(J2000)":"12.435805555555556","赤纬(J2000)":"+13h7m58s","赤纬D(J2000)":"13.132777777777779","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, possibly a 14th magnitude star","简略描述":"vF, vS, ? * 14"},{"ID":"11174","标识":"IC3334","M标识":"IC3334","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"dE","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m9.5s","赤经D(J2000)":"12.435972222222222","赤纬(J2000)":"+28h27m57s","赤纬D(J2000)":"28.465833333333332","可见光星等V":"15.9","摄影(蓝光)星等B":"16.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, pretty small, round, brighter middle","简略描述":"vF, pS, R, bM"},{"ID":"11175","标识":"IC3335","M标识":"IC3335","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m19s","赤经D(J2000)":"12.438611111111111","赤纬(J2000)":"+26h7m47s","赤纬D(J2000)":"26.129722222222224","可见光星等V":"17","摄影(蓝光)星等B":"18","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, very small, round, brighter middle, suspected nebulosity","简略描述":"eF, vS, R, bM, ? neb"},{"ID":"11176","标识":"IC3336","M标识":"IC3336","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m19.7s","赤经D(J2000)":"12.438805555555556","赤纬(J2000)":"+26h50m18s","赤纬D(J2000)":"26.83833333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"75","详细描述":"pretty bright, very small, round, brighter middle","简略描述":"pB, vS, R, bM"},{"ID":"11177","标识":"IC3337","M标识":"IC3337","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m21.3s","赤经D(J2000)":"12.43925","赤纬(J2000)":"+25h18m39s","赤纬D(J2000)":"25.310833333333335","可见光星等V":"16.7","摄影(蓝光)星等B":"17.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"15","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, very small, round, brighter middle, spiral","简略描述":"eF, vS, R, bM, spir"},{"ID":"11178","标识":"IC3338","M标识":"IC3338","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m22.1s","赤经D(J2000)":"12.439472222222223","赤纬(J2000)":"+25h53m9s","赤纬D(J2000)":"25.885833333333334","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"55","详细描述":"faint, very small, round, brighter middle, spiral","简略描述":"F, vS, R, bM, spir"},{"ID":"11179","标识":"IC3339","M标识":"IC3339","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBdm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m30s","赤经D(J2000)":"12.441666666666666","赤纬(J2000)":"+8h52m18s","赤纬D(J2000)":"8.871666666666668","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"2","短轴(分)":"1.9","方位角":"30","详细描述":"11th magnitude star with nebulosity to northeast","简略描述":"* 11 with neb nf"},{"ID":"11180","标识":"IC3340","M标识":"IC3340","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m32.6s","赤经D(J2000)":"12.442388888888889","赤纬(J2000)":"+16h50m39s","赤纬D(J2000)":"16.844166666666666","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"25","详细描述":"very small, extended 200°","简略描述":"vS, E 200°"},{"ID":"11181","标识":"IC3341","M标识":"IC3341","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m23.2s","赤经D(J2000)":"12.439777777777778","赤纬(J2000)":"+27h44m46s","赤纬D(J2000)":"27.746111111111112","可见光星等V":"15.9","摄影(蓝光)星等B":"16.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"90","详细描述":"very faint, considerably small, diffuse","简略描述":"vF, cS, dif"},{"ID":"11182","标识":"IC3342","M标识":"IC3342","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m27.2s","赤经D(J2000)":"12.440888888888889","赤纬(J2000)":"+27h8m22s","赤纬D(J2000)":"27.139444444444443","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, spiral, suddenly bright middle like a star","简略描述":"vF, vS, R, spir, sbM *"},{"ID":"11183","标识":"IC3343","M标识":"IC3343","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m34.7s","赤经D(J2000)":"12.442972222222222","赤纬(J2000)":"+8h52m35s","赤纬D(J2000)":"8.87638888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, very questionable","简略描述":"eF, vS, ??"},{"ID":"11184","标识":"IC3344","M标识":"IC3344","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m32.3s","赤经D(J2000)":"12.442305555555556","赤纬(J2000)":"+13h34m46s","赤纬D(J2000)":"13.579444444444444","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"48","详细描述":"round, brighter middle, magnitude 14.5","简略描述":"R, bM, magn 14.5"},{"ID":"11185","标识":"IC3345","M标识":"IC3345","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m33.3s","赤经D(J2000)":"12.442583333333333","赤纬(J2000)":"+24h22m8s","赤纬D(J2000)":"24.36888888888889","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"11186","标识":"IC3346","M标识":"IC3346","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m44.5s","赤经D(J2000)":"12.445694444444445","赤纬(J2000)":"+11h22m47s","赤纬D(J2000)":"11.379722222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"139","详细描述":"extremely small, round, brighter middle, magnitude 15.5","简略描述":"eS, R, bM, magn 15.5"},{"ID":"11187","标识":"IC3347","M标识":"IC3347","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m44.5s","赤经D(J2000)":"12.445694444444445","赤纬(J2000)":"+10h55m7s","赤纬D(J2000)":"10.91861111111111","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"155","详细描述":"round, brighter middle, magnitude 15","简略描述":"R, bM, magn 15"},{"ID":"11188","标识":"IC3348","M标识":"IC3348","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m38s","赤经D(J2000)":"12.443888888888889","赤纬(J2000)":"+25h37m27s","赤纬D(J2000)":"25.624166666666667","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, very small, irregular figure","简略描述":"eF, vS, iF"},{"ID":"11189","标识":"IC3349","M标识":"IC3349","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m47.1s","赤经D(J2000)":"12.446416666666666","赤纬(J2000)":"+12h27m14s","赤纬D(J2000)":"12.453888888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"60","详细描述":"very small, round, a little brighter middle, magnitude 15","简略描述":"vS, R, lbM, magn 15"},{"ID":"11190","标识":"IC3350","M标识":"IC3350","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m46.4s","赤经D(J2000)":"12.446222222222222","赤纬(J2000)":"+9h26m33s","赤纬D(J2000)":"9.4425","可见光星等V":"99","摄影(蓝光)星等B":"12.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"10.5 magnitude star with nebulosity to southwest","简略描述":"* 10.5 with neb sp"},{"ID":"11191","标识":"IC3351","M标识":"IC3351","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m41.6s","赤经D(J2000)":"12.444888888888888","赤纬(J2000)":"+27h36m21s","赤纬D(J2000)":"27.605833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"11192","标识":"IC3352","M标识":"IC3352","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m47.3s","赤经D(J2000)":"12.446472222222223","赤纬(J2000)":"+8h45m26s","赤纬D(J2000)":"8.757222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, extended","简略描述":"F, pS, E"},{"ID":"11193","标识":"IC3353","M标识":"IC3353","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m45s","赤经D(J2000)":"12.445833333333333","赤纬(J2000)":"+27h54m43s","赤纬D(J2000)":"27.911944444444444","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"95","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"11194","标识":"IC3354","M标识":"IC3354","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m51.5s","赤经D(J2000)":"12.44763888888889","赤纬(J2000)":"+12h5m49s","赤纬D(J2000)":"12.096944444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, questionable","简略描述":"eF, S, ?"},{"ID":"11195","标识":"IC3355","M标识":"IC3355","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m50.7s","赤经D(J2000)":"12.447416666666667","赤纬(J2000)":"+13h10m38s","赤纬D(J2000)":"13.177222222222222","可见光星等V":"14.9","摄影(蓝光)星等B":"15.2","B-V":"0.3","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"172","详细描述":"","简略描述":"eF, pS, E 168°"},{"ID":"11196","标识":"IC3356","M标识":"IC3356","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m50.8s","赤经D(J2000)":"12.447444444444445","赤纬(J2000)":"+11h33m30s","赤纬D(J2000)":"11.558333333333334","可见光星等V":"14.6","摄影(蓝光)星等B":"15.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"90","详细描述":"round, brighter middle, magnitude 16","简略描述":"R, bM, magn 16"},{"ID":"11197","标识":"IC3357","M标识":"IC3357","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m51.4s","赤经D(J2000)":"12.447611111111112","赤纬(J2000)":"+9h46m39s","赤纬D(J2000)":"9.777500000000002","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"11","长轴(分)":"0.4","短轴(分)":"0.1","方位角":"170","详细描述":"round, brighter middle, magnitude 15","简略描述":"R, bM, magn 15"},{"ID":"11198","标识":"IC3358","M标识":"IC3358","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m54.4s","赤经D(J2000)":"12.448444444444444","赤纬(J2000)":"+11h39m48s","赤纬D(J2000)":"11.663333333333334","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"120","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"11199","标识":"IC3359","M标识":"IC3359","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m51.3s","赤经D(J2000)":"12.447583333333334","赤纬(J2000)":"+23h29m55s","赤纬D(J2000)":"23.498611111111114","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"60","详细描述":"faint, small, irregular figure, nuclear, 14th magnitude star to northwest","简略描述":"F, S, iF, N, * 14 np"},{"ID":"11200","标识":"IC3360","M标识":"IC3360","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m50.9s","赤经D(J2000)":"12.447472222222222","赤纬(J2000)":"+26h2m46s","赤纬D(J2000)":"26.046111111111113","可见光星等V":"99","摄影(蓝光)星等B":"15","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, irregular figure","简略描述":"eF, vS, iF"},{"ID":"11201","标识":"IC3361","M标识":"IC3361","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h26m54.5s","赤经D(J2000)":"12.448472222222222","赤纬(J2000)":"+10h39m55s","赤纬D(J2000)":"10.665277777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"120","详细描述":"round, brighter middle, magnitude 15.5","简略描述":"R, bM, magn 15.5"},{"ID":"11202","标识":"IC3362","M标识":"IC3362","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S R","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h26m54.3s","赤经D(J2000)":"12.448416666666667","赤纬(J2000)":"+26h41m26s","赤纬D(J2000)":"26.690555555555555","可见光星等V":"15.8","摄影(蓝光)星等B":"16.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, very small, brighter middle, spiral","简略描述":"F, vS, bM, spir"},{"ID":"11203","标识":"IC3363","M标识":"IC3363","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m3s","赤经D(J2000)":"12.450833333333332","赤纬(J2000)":"+12h33m40s","赤纬D(J2000)":"12.561111111111112","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"126","详细描述":"extended, brighter middle, magnitude 15","简略描述":"E, bM, magn 15"},{"ID":"11204","标识":"IC3364","M标识":"IC3364","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h27m4.7s","赤经D(J2000)":"12.451305555555555","赤纬(J2000)":"+25h33m48s","赤纬D(J2000)":"25.563333333333333","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"90","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11205","标识":"IC3365","M标识":"IC3365","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h27m11.5s","赤经D(J2000)":"12.453194444444444","赤纬(J2000)":"+15h53m49s","赤纬D(J2000)":"15.896944444444443","可见光星等V":"13.6","摄影(蓝光)星等B":"14.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"0.7","方位角":"72","详细描述":"","简略描述":"pL, vmE 240°"},{"ID":"11206","标识":"IC3366","M标识":"IC3366","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m12.1s","赤经D(J2000)":"12.45336111111111","赤纬(J2000)":"+9h24m36s","赤纬D(J2000)":"9.41","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"165","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"11207","标识":"IC3367","M标识":"IC3367","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h27m10s","赤经D(J2000)":"12.452777777777778","赤纬(J2000)":"+26h57m28s","赤纬D(J2000)":"26.95777777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"F, vS, R, att 2nd np"},{"ID":"11208","标识":"IC3368","M标识":"IC3368","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h27m20.5s","赤经D(J2000)":"12.455694444444443","赤纬(J2000)":"+16h25m38s","赤纬D(J2000)":"16.427222222222223","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"130","详细描述":"very small, very little extended, a planetary nebula","简略描述":"vS, vlE, planetary"},{"ID":"11209","标识":"IC3369","M标识":"IC3369","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h27m16.9s","赤经D(J2000)":"12.454694444444444","赤纬(J2000)":"+16h1m29s","赤纬D(J2000)":"16.02472222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"130","详细描述":"very faint, brighter middle, magnitude 14","简略描述":"vF, bM, magn 14"},{"ID":"11210","标识":"IC3370","M标识":"IC3370","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h27m37.2s","赤经D(J2000)":"12.460333333333333","赤纬(J2000)":"-39h20m16s","赤纬D(J2000)":"-39.33777777777778","可见光星等V":"11","摄影(蓝光)星等B":"12","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.1","短轴(分)":"1.6","方位角":"45","详细描述":"","简略描述":"pB, pL, R, * 8.5 p 4'"},{"ID":"11211","标识":"IC3371","M标识":"IC3371","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m22.2s","赤经D(J2000)":"12.456166666666666","赤纬(J2000)":"+10h52m0s","赤纬D(J2000)":"10.866666666666667","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.8","短轴(分)":"0.2","方位角":"55","详细描述":"","简略描述":"F, pL, vmE 225°"},{"ID":"11212","标识":"IC3372","M标识":"IC3372","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h27m24.8s","赤经D(J2000)":"12.456888888888889","赤纬(J2000)":"+25h17m12s","赤纬D(J2000)":"25.28666666666667","可见光星等V":"99","摄影(蓝光)星等B":"14.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, brighter middle, spiral","简略描述":"vF, vS, bM, spir"},{"ID":"11213","标识":"IC3373","M标识":"IC3373","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h27m27.7s","赤经D(J2000)":"12.457694444444444","赤纬(J2000)":"+25h27m11s","赤纬D(J2000)":"25.453055555555554","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"90","详细描述":"faint, considerably small, irregular figure","简略描述":"F, cS, iF"},{"ID":"11214","标识":"IC3374","M标识":"IC3374","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h27m33.4s","赤经D(J2000)":"12.459277777777777","赤纬(J2000)":"+10h0m14s","赤纬D(J2000)":"10.00388888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"30","详细描述":"round, brighter middle, magnitude 15.5","简略描述":"R, bM, magn 15.5"},{"ID":"11215","标识":"IC3375","M标识":"IC3375","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h27m40.2s","赤经D(J2000)":"12.461166666666665","赤纬(J2000)":"+27h21m54s","赤纬D(J2000)":"27.365000000000002","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, attached 14th magnitude star to southwest","简略描述":"F, vS, R, att * 14 sp"},{"ID":"11216","标识":"IC3376","M标识":"IC3376","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h27m50.2s","赤经D(J2000)":"12.463944444444444","赤纬(J2000)":"+26h59m37s","赤纬D(J2000)":"26.99361111111111","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"60","详细描述":"pretty bright, small, round, brighter middle","简略描述":"pB, S, R, bM"},{"ID":"11217","标识":"IC3377","M标识":"IC3377","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h27m51.9s","赤经D(J2000)":"12.464416666666667","赤纬(J2000)":"+24h56m34s","赤纬D(J2000)":"24.942777777777778","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"140","详细描述":"pretty faint, very small, round, brighter middle","简略描述":"pF, vS, R, bM"},{"ID":"11218","标识":"IC3378","M标识":"IC3378","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m1.5s","赤经D(J2000)":"12.467083333333333","赤纬(J2000)":"+17h17m46s","赤纬D(J2000)":"17.296111111111113","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"170","详细描述":"2 nebulae, 1' apart, magnitude 15.5","简略描述":"2 neb, 1' apart, magn 15.5"},{"ID":"11219","标识":"IC3379","M标识":"IC3379","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m4.2s","赤经D(J2000)":"12.467833333333333","赤纬(J2000)":"+17h18m21s","赤纬D(J2000)":"17.305833333333332","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"40","详细描述":"2 nebulae, 1' apart, magnitude 15.5","简略描述":"2 neb, 1' apart, magn 15.5"},{"ID":"11220","标识":"IC3380","M标识":"IC3380","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m5.5s","赤经D(J2000)":"12.468194444444444","赤纬(J2000)":"+26h40m24s","赤纬D(J2000)":"26.673333333333336","可见光星等V":"16.2","摄影(蓝光)星等B":"17.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, brighter middle, spiral","简略描述":"F, vS, bM, spir"},{"ID":"11221","标识":"IC3381","M标识":"IC3381","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h28m14.8s","赤经D(J2000)":"12.470777777777778","赤纬(J2000)":"+11h47m22s","赤纬D(J2000)":"11.789444444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"110","详细描述":"extremely faint, very small, stellar","简略描述":"eF, vS, stell"},{"ID":"11222","标识":"IC3382","M标识":"IC3382","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m13.6s","赤经D(J2000)":"12.470444444444444","赤纬(J2000)":"+13h34m16s","赤纬D(J2000)":"13.571111111111112","可见光星等V":"16","摄影(蓝光)星等B":"16.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"149","详细描述":"faint, pretty small, much extended 150°","简略描述":"F, pS, mE 150°"},{"ID":"11223","标识":"IC3383","M标识":"IC3383","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h28m12.4s","赤经D(J2000)":"12.47011111111111","赤纬(J2000)":"+10h17m51s","赤纬D(J2000)":"10.2975","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"30","详细描述":"round, brighter middle, magnitude 15","简略描述":"R, bM, magn 15"},{"ID":"11224","标识":"IC3384","M标识":"IC3384","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m12.5s","赤经D(J2000)":"12.470138888888888","赤纬(J2000)":"+25h5m29s","赤纬D(J2000)":"25.091388888888886","可见光星等V":"15.8","摄影(蓝光)星等B":"16.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"135","详细描述":"extremely faint, very small, irregular figure","简略描述":"eF, vS, iF"},{"ID":"11225","标识":"IC3385","M标识":"IC3385","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"dI","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m15.1s","赤经D(J2000)":"12.47086111111111","赤纬(J2000)":"+25h25m55s","赤纬D(J2000)":"25.431944444444447","可见光星等V":"17.4","摄影(蓝光)星等B":"18","B-V":"0.6","表面亮度(mag\/arcmin2)":"15.5","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"150","详细描述":"extremely faint, pretty small, round, brighter middle, diffuse","简略描述":"eF, pS, R, bM, dif"},{"ID":"11226","标识":"IC3386","M标识":"IC3386","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h28m24s","赤经D(J2000)":"12.473333333333333","赤纬(J2000)":"+13h11m43s","赤纬D(J2000)":"13.195277777777777","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"102","详细描述":"very faint, considerably small, extended 90°","简略描述":"vF, cS, E 90°"},{"ID":"11227","标识":"IC3387","M标识":"IC3387","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m18.8s","赤经D(J2000)":"12.47188888888889","赤纬(J2000)":"+27h59m45s","赤纬D(J2000)":"27.995833333333334","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, small, very irregular figure","简略描述":"vF, S, viF"},{"ID":"11228","标识":"IC3388","M标识":"IC3388","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h28m28.1s","赤经D(J2000)":"12.474472222222222","赤纬(J2000)":"+12h49m25s","赤纬D(J2000)":"12.823611111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"70","详细描述":"very small, round, a little brighter middle, magnitude 15","简略描述":"vS, R, lbM, magn 15"},{"ID":"11229","标识":"IC3389","M标识":"IC3389","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m23.6s","赤经D(J2000)":"12.473222222222223","赤纬(J2000)":"+27h50m42s","赤纬D(J2000)":"27.845","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"11230","标识":"IC3390","M标识":"IC3390","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m28.7s","赤经D(J2000)":"12.474638888888888","赤纬(J2000)":"+24h48m32s","赤纬D(J2000)":"24.80888888888889","可见光星等V":"16.1","摄影(蓝光)星等B":"17","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"100","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11231","标识":"IC3391","M标识":"IC3391","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m27.4s","赤经D(J2000)":"12.474277777777777","赤纬(J2000)":"+18h24m55s","赤纬D(J2000)":"18.415277777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"63","详细描述":"","简略描述":"cS, vlE, sbMF *, ? spir"},{"ID":"11232","标识":"IC3392","M标识":"IC3392","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m43.2s","赤经D(J2000)":"12.478666666666667","赤纬(J2000)":"+14h59m57s","赤纬D(J2000)":"14.999166666666666","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.3","短轴(分)":"1","方位角":"40","详细描述":"","简略描述":"B, L, mE 225°, mbM"},{"ID":"11233","标识":"IC3393","M标识":"IC3393","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h28m41.7s","赤经D(J2000)":"12.478250000000001","赤纬(J2000)":"+12h54m59s","赤纬D(J2000)":"12.91638888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"135","详细描述":"small, extended 125°, brighter middle, magnitude 14","简略描述":"S, E 125°, bM, magn 14"},{"ID":"11234","标识":"IC3394","M标识":"IC3394","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m41.1s","赤经D(J2000)":"12.478083333333334","赤纬(J2000)":"+26h47m56s","赤纬D(J2000)":"26.79888888888889","可见光星等V":"15.8","摄影(蓝光)星等B":"16.8","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, brighter middle, spiral","简略描述":"F, S, bM, spir"},{"ID":"11235","标识":"IC3395","M标识":"IC3395","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m44.6s","赤经D(J2000)":"12.479055555555556","赤纬(J2000)":"+25h2m6s","赤纬D(J2000)":"25.035","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"45","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11236","标识":"IC3396","M标识":"IC3396","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m45.1s","赤经D(J2000)":"12.479194444444445","赤纬(J2000)":"+25h2m59s","赤纬D(J2000)":"25.049722222222226","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"","简略描述":"vF, vS, R, bM, others n"},{"ID":"11237","标识":"IC3397","M标识":"IC3397","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m46.7s","赤经D(J2000)":"12.47963888888889","赤纬(J2000)":"+25h43m54s","赤纬D(J2000)":"25.731666666666666","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"170","详细描述":"","简略描述":"F, S, v iF"},{"ID":"11238","标识":"IC3398","M标识":"IC3398","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m58.2s","赤经D(J2000)":"12.482833333333334","赤纬(J2000)":"+13h33m54s","赤纬D(J2000)":"13.565000000000001","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, very small","简略描述":"cF, vS"},{"ID":"11239","标识":"IC3399","M标识":"IC3399","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m56.2s","赤经D(J2000)":"12.482277777777778","赤纬(J2000)":"+25h41m44s","赤纬D(J2000)":"25.695555555555554","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11240","标识":"IC3400","M标识":"IC3400","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m2.9s","赤经D(J2000)":"12.484138888888888","赤纬(J2000)":"+9h24m22s","赤纬D(J2000)":"9.40611111111111","可见光星等V":"99","摄影(蓝光)星等B":"11.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably bright, considerably small, = 10th magnitude star","简略描述":"cB, cS, = * 10"},{"ID":"11241","标识":"IC3401","M标识":"IC3401","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m58.8s","赤经D(J2000)":"12.483","赤纬(J2000)":"+26h27m38s","赤纬D(J2000)":"26.460555555555555","可见光星等V":"17","摄影(蓝光)星等B":"18","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"11242","标识":"IC3402","M标识":"IC3402","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h28m59.3s","赤经D(J2000)":"12.483138888888888","赤纬(J2000)":"+28h51m45s","赤纬D(J2000)":"28.8625","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.9","短轴(分)":"0.1","方位角":"8","详细描述":"","简略描述":"vF, cL, E 10°, * np, conn ?"},{"ID":"11243","标识":"IC3403","M标识":"IC3403","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m1.6s","赤经D(J2000)":"12.483777777777776","赤纬(J2000)":"+24h37m58s","赤纬D(J2000)":"24.63277777777778","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"70","详细描述":"considerably faint, small, pretty round, brighter middle","简略描述":"cF, S, pR, bM"},{"ID":"11244","标识":"IC3404","M标识":"IC3404","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m10.7s","赤经D(J2000)":"12.486305555555555","赤纬(J2000)":"+7h9m14s","赤纬D(J2000)":"7.153888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably bright, considerably small, round, much brighter middle","简略描述":"cB, cS, R, mbM"},{"ID":"11245","标识":"IC3405","M标识":"IC3405","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h28m59.5s","赤经D(J2000)":"12.483194444444445","赤纬(J2000)":"+37h43m50s","赤纬D(J2000)":"37.730555555555554","可见光星等V":"16.1","摄影(蓝光)星等B":"17.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"20","详细描述":"faint, small, round, very little brighter middle","简略描述":"F, S, R, vlbM"},{"ID":"11246","标识":"IC3406","M标识":"IC3406","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m2.8s","赤经D(J2000)":"12.48411111111111","赤纬(J2000)":"+27h38m26s","赤纬D(J2000)":"27.640555555555554","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"80","详细描述":"considerably faint, small, brighter middle, spiral","简略描述":"cF, S, bM, spir"},{"ID":"11247","标识":"IC3407","M标识":"IC3407","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m3.9s","赤经D(J2000)":"12.484416666666666","赤纬(J2000)":"+27h46m42s","赤纬D(J2000)":"27.778333333333332","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"145","详细描述":"considerably faint, considerably small, extended 150°, brighter middle, possibly spiral","简略描述":"cF, cS, E 150°, bM, ? spir"},{"ID":"11248","标识":"IC3408","M标识":"IC3408","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m15.9s","赤经D(J2000)":"12.487749999999998","赤纬(J2000)":"+11h52m32s","赤纬D(J2000)":"11.875555555555556","可见光星等V":"99","摄影(蓝光)星等B":"10.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"bright, stellar, possibly 9.5 magnitude star","简略描述":"B, stell, ? * 9.5"},{"ID":"11249","标识":"IC3409","M标识":"IC3409","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S? R","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m21.1s","赤经D(J2000)":"12.489194444444443","赤纬(J2000)":"+14h47m18s","赤纬D(J2000)":"14.788333333333334","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"130","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"11250","标识":"IC3410","M标识":"IC3410","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m6.1s","赤经D(J2000)":"12.485027777777777","赤纬(J2000)":"+19h0m18s","赤纬D(J2000)":"19.005","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"11","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"brighter middle, magnitude 15.5","简略描述":"bM, magn 15.5"},{"ID":"11251","标识":"IC3411","M标识":"IC3411","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m12.4s","赤经D(J2000)":"12.486777777777776","赤纬(J2000)":"+24h35m2s","赤纬D(J2000)":"24.583888888888886","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"175","详细描述":"","简略描述":"eF, S, iF, neby sf"},{"ID":"11252","标识":"IC3412","M标识":"IC3412","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m22.6s","赤经D(J2000)":"12.48961111111111","赤纬(J2000)":"+9h59m16s","赤纬D(J2000)":"9.987777777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"159","详细描述":"extremely faint, considerably small","简略描述":"eF, cS"},{"ID":"11253","标识":"IC3413","M标识":"IC3413","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m22.6s","赤经D(J2000)":"12.48961111111111","赤纬(J2000)":"+11h26m1s","赤纬D(J2000)":"11.43361111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.6","方位角":"160","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11254","标识":"IC3414","M标识":"IC3414","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m28.9s","赤经D(J2000)":"12.491361111111111","赤纬(J2000)":"+6h46m12s","赤纬D(J2000)":"6.77","可见光星等V":"13.3","摄影(蓝光)星等B":"13.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"35","详细描述":"considerably faint, considerably small, much brighter middle","简略描述":"cF, cS, mbM"},{"ID":"11255","标识":"IC3415","M标识":"IC3415","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m21.9s","赤经D(J2000)":"12.489416666666665","赤纬(J2000)":"+26h45m57s","赤纬D(J2000)":"26.765833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, brighter middle, spiral, possibly nebulous star","简略描述":"F, vS, bM, spir, ? neb *"},{"ID":"11256","标识":"IC3416","M标识":"IC3416","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m35.5s","赤经D(J2000)":"12.493194444444443","赤纬(J2000)":"+10h47m38s","赤纬D(J2000)":"10.793888888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"90","详细描述":"","简略描述":"S, mE 250°"},{"ID":"11257","标识":"IC3417","M标识":"IC3417","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m39.1s","赤经D(J2000)":"12.494194444444444","赤纬(J2000)":"+7h51m40s","赤纬D(J2000)":"7.861111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, possibly a star","简略描述":"eF, vS, ? *"},{"ID":"11258","标识":"IC3418","M标识":"IC3418","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m42.5s","赤经D(J2000)":"12.495138888888889","赤纬(J2000)":"+11h24m3s","赤纬D(J2000)":"11.400833333333333","可见光星等V":"13.8","摄影(蓝光)星等B":"14.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.5","短轴(分)":"1","方位角":"45","详细描述":"very faint, wisp","简略描述":"vF, wisp"},{"ID":"11259","标识":"IC3419","M标识":"IC3419","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m44.6s","赤经D(J2000)":"12.495722222222222","赤纬(J2000)":"+15h1m27s","赤纬D(J2000)":"15.024166666666668","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"5","详细描述":"very faint, round, magnitude 16","简略描述":"vF, R, magn 16"},{"ID":"11260","标识":"IC3420","M标识":"IC3420","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m42.7s","赤经D(J2000)":"12.495194444444444","赤纬(J2000)":"+13h26m46s","赤纬D(J2000)":"13.446111111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, very questionable","简略描述":"vF, S, R, ??"},{"ID":"11261","标识":"IC3421","M标识":"IC3421","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m38.8s","赤经D(J2000)":"12.49411111111111","赤纬(J2000)":"+26h13m52s","赤纬D(J2000)":"26.231111111111108","可见光星等V":"14.9","摄影(蓝光)星等B":"15.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"33","详细描述":"a cluster, faint, considerably small, round, brighter middle","简略描述":"Cl, F, cS, R, bM"},{"ID":"11262","标识":"IC3422","M标识":"IC3422","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m54.6s","赤经D(J2000)":"12.4985","赤纬(J2000)":"+14h41m18s","赤纬D(J2000)":"14.688333333333334","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"11263","标识":"IC3423","M标识":"IC3423","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m46.5s","赤经D(J2000)":"12.49625","赤纬(J2000)":"+13h39m32s","赤纬D(J2000)":"13.658888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"11264","标识":"IC3424","M标识":"IC3424","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h29m45s","赤经D(J2000)":"12.495833333333332","赤纬(J2000)":"+24h24m30s","赤纬D(J2000)":"24.40833333333333","可见光星等V":"15.8","摄影(蓝光)星等B":"16.8","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"100","详细描述":"extremely faint, pretty small, irregular figure","简略描述":"eF, pS, iF"},{"ID":"11265","标识":"IC3425","M标识":"IC3425","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h29m56.5s","赤经D(J2000)":"12.499027777777776","赤纬(J2000)":"+10h36m56s","赤纬D(J2000)":"10.615555555555556","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"0.7","方位角":"35","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"11266","标识":"IC3426","M标识":"IC3426","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h30m1.5s","赤经D(J2000)":"12.500416666666666","赤纬(J2000)":"+13h35m54s","赤纬D(J2000)":"13.598333333333334","可见光星等V":"99","摄影(蓝光)星等B":"15","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"11267","标识":"IC3427","M标识":"IC3427","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E4","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h30m10.3s","赤经D(J2000)":"12.50286111111111","赤纬(J2000)":"+10h46m45s","赤纬D(J2000)":"10.779166666666667","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.7","短轴(分)":"1","方位角":"145","详细描述":"faint, very small, excentric nucleus to east","简略描述":"F, vS, exc Nf"},{"ID":"11268","标识":"IC3428","M标识":"IC3428","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h30m7.6s","赤经D(J2000)":"12.50211111111111","赤纬(J2000)":"+23h40m30s","赤纬D(J2000)":"23.675","可见光星等V":"99","摄影(蓝光)星等B":"14.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"11269","标识":"IC3429","M标识":"IC3429","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S R","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h30m7.9s","赤经D(J2000)":"12.502194444444445","赤纬(J2000)":"+23h32m44s","赤纬D(J2000)":"23.545555555555556","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"11270","标识":"IC3430","M标识":"IC3430","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h30m17.1s","赤经D(J2000)":"12.50475","赤纬(J2000)":"+9h5m4s","赤纬D(J2000)":"9.084444444444445","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.4","方位角":"115","详细描述":"extremely faint, considerably small, diffuse","简略描述":"eF, cS, dif"},{"ID":"11271","标识":"IC3431","M标识":"IC3431","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h30m24.2s","赤经D(J2000)":"12.506722222222223","赤纬(J2000)":"+11h36m51s","赤纬D(J2000)":"11.614166666666666","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"10","详细描述":"very small, round","简略描述":"vS, R"},{"ID":"11272","标识":"IC3432","M标识":"IC3432","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h30m27.8s","赤经D(J2000)":"12.507722222222222","赤纬(J2000)":"+14h9m38s","赤纬D(J2000)":"14.160555555555556","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"54","详细描述":"bright, small, round","简略描述":"B, S, R"},{"ID":"11273","标识":"IC3433","M标识":"IC3433","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h30m28.3s","赤经D(J2000)":"12.507861111111112","赤纬(J2000)":"+17h18m34s","赤纬D(J2000)":"17.309444444444445","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"80","详细描述":"brighter middle, magnitude 14.5","简略描述":"bM, magn 14.5"},{"ID":"11274","标识":"IC3434","M标识":"IC3434","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h30m27.2s","赤经D(J2000)":"12.507555555555555","赤纬(J2000)":"+18h48m34s","赤纬D(J2000)":"18.809444444444445","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"50","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"11275","标识":"IC3435","M标识":"IC3435","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h30m39.9s","赤经D(J2000)":"12.511083333333334","赤纬(J2000)":"+15h7m47s","赤纬D(J2000)":"15.129722222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.2","方位角":"141","详细描述":"small, much extended 135°, suddenly brighter middle","简略描述":"S, mE 135°, sbM"},{"ID":"11276","标识":"IC3436","M标识":"IC3436","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h30m29.9s","赤经D(J2000)":"12.508305555555555","赤纬(J2000)":"+19h40m25s","赤纬D(J2000)":"19.67361111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"10.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"135","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"11277","标识":"IC3437","M标识":"IC3437","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h30m45.9s","赤经D(J2000)":"12.51275","赤纬(J2000)":"+11h20m34s","赤纬D(J2000)":"11.342777777777778","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"60","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"11278","标识":"IC3438","M标识":"IC3438","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h30m59.7s","赤经D(J2000)":"12.516583333333333","赤纬(J2000)":"+8h4m41s","赤纬D(J2000)":"8.078055555555554","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"90","详细描述":"considerably faint, small, faint nucleus","简略描述":"cF, S, FN"},{"ID":"11279","标识":"IC3439","M标识":"IC3439","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h30m59.6s","赤经D(J2000)":"12.516555555555556","赤纬(J2000)":"+25h33m41s","赤纬D(J2000)":"25.56138888888889","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"20","详细描述":"","简略描述":"vF, cS, iF, sev N"},{"ID":"11280","标识":"IC3440","M标识":"IC3440","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h31m5.1s","赤经D(J2000)":"12.518083333333335","赤纬(J2000)":"+12h1m46s","赤纬D(J2000)":"12.029444444444445","可见光星等V":"15.9","摄影(蓝光)星等B":"16.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, pretty small, a little extended 30°","简略描述":"eF, pS, lE 30°"},{"ID":"11281","标识":"IC3441","M标识":"IC3441","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m4.5s","赤经D(J2000)":"12.517916666666668","赤纬(J2000)":"+28h51m13s","赤纬D(J2000)":"28.853611111111114","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"141","详细描述":"faint, small, brighter middle, spiral","简略描述":"F, S, bM, spir"},{"ID":"11282","标识":"IC3442","M标识":"IC3442","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m20.2s","赤经D(J2000)":"12.522277777777779","赤纬(J2000)":"+14h6m52s","赤纬D(J2000)":"14.114444444444445","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"11283","标识":"IC3443","M标识":"IC3443","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h31m15.6s","赤经D(J2000)":"12.521","赤纬(J2000)":"+12h19m56s","赤纬D(J2000)":"12.332222222222223","可见光星等V":"14.9","摄影(蓝光)星等B":"15.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"brighter middle, magnitude 15.5","简略描述":"bM, magn 15.5"},{"ID":"11284","标识":"IC3444","M标识":"IC3444","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m14.1s","赤经D(J2000)":"12.520583333333335","赤纬(J2000)":"+27h32m57s","赤纬D(J2000)":"27.549166666666668","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, brighter middle, spiral","简略描述":"vF, vS, bM, spir"},{"ID":"11285","标识":"IC3445","M标识":"IC3445","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h31m19.4s","赤经D(J2000)":"12.522055555555557","赤纬(J2000)":"+12h44m16s","赤纬D(J2000)":"12.737777777777778","可见光星等V":"15.4","摄影(蓝光)星等B":"16.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"15","详细描述":"faint, extremely small, round","简略描述":"F, eS, R"},{"ID":"11286","标识":"IC3446","M标识":"IC3446","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h31m23s","赤经D(J2000)":"12.523055555555556","赤纬(J2000)":"+11h29m33s","赤纬D(J2000)":"11.4925","可见光星等V":"14.7","摄影(蓝光)星等B":"15.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"0","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"11287","标识":"IC3447","M标识":"IC3447","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h31m17.9s","赤经D(J2000)":"12.521638888888889","赤纬(J2000)":"+10h40m48s","赤纬D(J2000)":"10.68","可见光星等V":"16.1","摄影(蓝光)星等B":"16.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, extremely small, round","简略描述":"F, eS, R"},{"ID":"11288","标识":"IC3448","M标识":"IC3448","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m23.1s","赤经D(J2000)":"12.523083333333334","赤纬(J2000)":"+17h12m22s","赤纬D(J2000)":"17.20611111111111","可见光星等V":"15.2","摄影(蓝光)星等B":"16.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"92","详细描述":"very faint, very little extended","简略描述":"vF, vlE"},{"ID":"11289","标识":"IC3449","M标识":"IC3449","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m22.9s","赤经D(J2000)":"12.523027777777779","赤纬(J2000)":"+25h54m52s","赤纬D(J2000)":"25.91444444444444","可见光星等V":"16.3","摄影(蓝光)星等B":"17.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"135","详细描述":"extremely faint, very small, brighter middle, spiral","简略描述":"eF, vS, bM, spir"},{"ID":"11290","标识":"IC3450","M标识":"IC3450","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m24.9s","赤经D(J2000)":"12.523583333333335","赤纬(J2000)":"+26h47m47s","赤纬D(J2000)":"26.79638888888889","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"170","详细描述":"","简略描述":"vF, vS, spir, ? (I 83 sp)"},{"ID":"11291","标识":"IC3451","M标识":"IC3451","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m24s","赤经D(J2000)":"12.523333333333333","赤纬(J2000)":"+28h51m20s","赤纬D(J2000)":"28.855555555555558","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, brighter middle, spiral","简略描述":"F, S, bM, spir"},{"ID":"11292","标识":"IC3452","M标识":"IC3452","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h31m32.6s","赤经D(J2000)":"12.525722222222223","赤纬(J2000)":"+11h37m30s","赤纬D(J2000)":"11.625","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"0.8","方位角":"65","详细描述":"pretty faint, pretty small, extended 100°","简略描述":"pF, pS, E 100° "},{"ID":"11293","标识":"IC3453","M标识":"IC3453","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IB","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m37.8s","赤经D(J2000)":"12.527166666666668","赤纬(J2000)":"+14h51m34s","赤纬D(J2000)":"14.859444444444444","可见光星等V":"14.8","摄影(蓝光)星等B":"15.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.2","方位角":"166","详细描述":"faint, small, extended 160°, a little brighter middle","简略描述":"F, S, E 160°, lbM"},{"ID":"11294","标识":"IC3454","M标识":"IC3454","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m38.7s","赤经D(J2000)":"12.527416666666667","赤纬(J2000)":"+27h29m47s","赤纬D(J2000)":"27.49638888888889","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.2","方位角":"26","详细描述":"","简略描述":"F, S, iF, dif, att * 11 n"},{"ID":"11295","标识":"IC3455","M标识":"IC3455","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m44.6s","赤经D(J2000)":"12.529055555555557","赤纬(J2000)":"+25h47m7s","赤纬D(J2000)":"25.78527777777778","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"0","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"11296","标识":"IC3456","M标识":"IC3456","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m43.7s","赤经D(J2000)":"12.528805555555556","赤纬(J2000)":"+28h21m26s","赤纬D(J2000)":"28.357222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, irregular figure","简略描述":"vF, pS, iF"},{"ID":"11297","标识":"IC3457","M标识":"IC3457","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h31m51.4s","赤经D(J2000)":"12.530944444444446","赤纬(J2000)":"+12h39m26s","赤纬D(J2000)":"12.657222222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"135","详细描述":"small, round, a little brighter middle","简略描述":"S, R, lbM"},{"ID":"11298","标识":"IC3458","M标识":"IC3458","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m44s","赤经D(J2000)":"12.52888888888889","赤纬(J2000)":"+28h8m50s","赤纬D(J2000)":"28.147222222222222","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, brighter middle, spiral","简略描述":"F, S, bM, spir"},{"ID":"11299","标识":"IC3459","M标识":"IC3459","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h31m55.9s","赤经D(J2000)":"12.532194444444444","赤纬(J2000)":"+12h10m29s","赤纬D(J2000)":"12.174722222222222","可见光星等V":"14.2","摄影(蓝光)星等B":"14.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"155","详细描述":"very faint, pretty small, diffuse","简略描述":"vF, pS, dif"},{"ID":"11300","标识":"IC3460","M标识":"IC3460","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h31m50.4s","赤经D(J2000)":"12.530666666666667","赤纬(J2000)":"+27h23m14s","赤纬D(J2000)":"27.38722222222222","可见光星等V":"15.4","摄影(蓝光)星等B":"16.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"120","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"11301","标识":"IC3461","M标识":"IC3461","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h32m2.8s","赤经D(J2000)":"12.53411111111111","赤纬(J2000)":"+11h53m23s","赤纬D(J2000)":"11.889722222222222","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"11302","标识":"IC3462","M标识":"IC3462","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h32m9.6s","赤经D(J2000)":"12.536","赤纬(J2000)":"+15h18m4s","赤纬D(J2000)":"15.301111111111112","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"45","详细描述":"very faint, extremely small, round","简略描述":"vF, eS, R"},{"ID":"11303","标识":"IC3463","M标识":"IC3463","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h32m5s","赤经D(J2000)":"12.534722222222221","赤纬(J2000)":"+12h19m12s","赤纬D(J2000)":"12.32","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, considerably small, extended 40°","简略描述":"vF, cS, E 40°"},{"ID":"11304","标识":"IC3464","M标识":"IC3464","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h32m0.3s","赤经D(J2000)":"12.533416666666666","赤纬(J2000)":"+26h0m16s","赤纬D(J2000)":"26.004444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, brighter middle, spiral","简略描述":"eF, vS, bM, spir"},{"ID":"11305","标识":"IC3465","M标识":"IC3465","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h32m12.3s","赤经D(J2000)":"12.53675","赤纬(J2000)":"+12h3m41s","赤纬D(J2000)":"12.061388888888889","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"90","详细描述":"brighter middle, magnitude 16","简略描述":"bM, magn 16"},{"ID":"11306","标识":"IC3466","M标识":"IC3466","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h32m5.6s","赤经D(J2000)":"12.534888888888888","赤纬(J2000)":"+11h49m3s","赤纬D(J2000)":"11.817499999999999","可见光星等V":"15.2","摄影(蓝光)星等B":"15.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"80","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"11307","标识":"IC3467","M标识":"IC3467","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h32m24.5s","赤经D(J2000)":"12.540138888888889","赤纬(J2000)":"+11h47m15s","赤纬D(J2000)":"11.7875","可见光星等V":"14.9","摄影(蓝光)星等B":"15.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"72","详细描述":"","简略描述":"cS, vmE 255°, sbM *"},{"ID":"11308","标识":"IC3468","M标识":"IC3468","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h32m14.1s","赤经D(J2000)":"12.53725","赤纬(J2000)":"+10h15m7s","赤纬D(J2000)":"10.251944444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"167","详细描述":"brighter middle, magnitude 13.5","简略描述":"bM, magn 13.5"},{"ID":"11309","标识":"IC3469","M标识":"IC3469","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h32m11.1s","赤经D(J2000)":"12.536416666666666","赤纬(J2000)":"+25h48m10s","赤纬D(J2000)":"25.802777777777777","可见光星等V":"16.5","摄影(蓝光)星等B":"17.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.1","短轴(分)":"0.1","方位角":"","详细描述":"extremely faint, small, extended 50°","简略描述":"eF, S, E 50°"},{"ID":"11310","标识":"IC3470","M标识":"IC3470","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h32m23.3s","赤经D(J2000)":"12.539805555555555","赤纬(J2000)":"+11h15m48s","赤纬D(J2000)":"11.263333333333334","可见光星等V":"13.3","摄影(蓝光)星等B":"14.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"brighter middle, magnitude 13.5","简略描述":"bM, magn 13.5"},{"ID":"11311","标识":"IC3471","M标识":"IC3471","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h32m22.7s","赤经D(J2000)":"12.539638888888888","赤纬(J2000)":"+16h1m6s","赤纬D(J2000)":"16.01833333333333","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"0","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"11312","标识":"IC3472","M标识":"IC3472","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h32m18.8s","赤经D(J2000)":"12.538555555555556","赤纬(J2000)":"+24h43m42s","赤纬D(J2000)":"24.72833333333333","可见光星等V":"16.9","摄影(蓝光)星等B":"17.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"11313","标识":"IC3473","M标识":"IC3473","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h32m19s","赤经D(J2000)":"12.538611111111111","赤纬(J2000)":"+18h14m40s","赤纬D(J2000)":"18.244444444444447","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"35","详细描述":"small, round, a little brighter middle","简略描述":"S, R, lbM"},{"ID":"11314","标识":"IC3474","M标识":"IC3474","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h32m36.8s","赤经D(J2000)":"12.543555555555555","赤纬(J2000)":"+2h39m45s","赤纬D(J2000)":"2.6625","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.2","短轴(分)":"0.3","方位角":"36","详细描述":"pretty faint, extended southwest-northeast, diffuse, 17th magnitude star to northwest, bright star to southeast","简略描述":"pF, E spnf, dif, * 17 np, B * sf"},{"ID":"11315","标识":"IC3475","M标识":"IC3475","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h32m40.6s","赤经D(J2000)":"12.544611111111111","赤纬(J2000)":"+12h46m10s","赤纬D(J2000)":"12.769444444444446","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"86","详细描述":"very faint, pretty small, round, diffuse","简略描述":"vF, pS, R, dif"},{"ID":"11316","标识":"IC3476","M标识":"IC3476","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h32m41.8s","赤经D(J2000)":"12.544944444444445","赤纬(J2000)":"+14h3m0s","赤纬D(J2000)":"14.05","可见光星等V":"12.7","摄影(蓝光)星等B":"13.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2","短轴(分)":"1.4","方位角":"30","详细描述":"pretty faint, pretty large, a little brighter middle","简略描述":"pF, pL, lbM"},{"ID":"11317","标识":"IC3477","M标识":"IC3477","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h32m38.3s","赤经D(J2000)":"12.543972222222223","赤纬(J2000)":"+26h2m18s","赤纬D(J2000)":"26.038333333333334","可见光星等V":"99","摄影(蓝光)星等B":"15.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, brighter middle, spiral","简略描述":"vF, vF, bM, spir"},{"ID":"11318","标识":"IC3478","M标识":"IC3478","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h32m44.2s","赤经D(J2000)":"12.54561111111111","赤纬(J2000)":"+14h11m46s","赤纬D(J2000)":"14.196111111111112","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"1","方位角":"105","详细描述":"very faint, very small, brighter middle","简略描述":"vF, vS, bM"},{"ID":"11319","标识":"IC3479","M标识":"IC3479","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h32m41s","赤经D(J2000)":"12.544722222222221","赤纬(J2000)":"+25h24m22s","赤纬D(J2000)":"25.40611111111111","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure","简略描述":"vF, vS, iF"},{"ID":"11320","标识":"IC3480","M标识":"IC3480","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h32m41.1s","赤经D(J2000)":"12.54475","赤纬(J2000)":"+26h49m44s","赤纬D(J2000)":"26.828888888888887","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, extended 90°, brighter middle","简略描述":"vF, S, E 90°, bM"},{"ID":"11321","标识":"IC3481","M标识":"IC3481","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h32m52.2s","赤经D(J2000)":"12.547833333333333","赤纬(J2000)":"+11h24m17s","赤纬D(J2000)":"11.404722222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"45","详细描述":"brighter middle, magnitude 13","简略描述":"bM, magn 13"},{"ID":"11322","标识":"IC3482","M标识":"IC3482","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m1s","赤经D(J2000)":"12.550277777777778","赤纬(J2000)":"+27h49m50s","赤纬D(J2000)":"27.830555555555556","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.2","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"45","详细描述":"very faint, small, brighter middle, spiral","简略描述":"vF, S, bM, spir"},{"ID":"11323","标识":"IC3483","M标识":"IC3483","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h33m10s","赤经D(J2000)":"12.552777777777779","赤纬(J2000)":"+11h20m49s","赤纬D(J2000)":"11.346944444444444","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"11324","标识":"IC3484","M标识":"IC3484","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m5.3s","赤经D(J2000)":"12.551472222222223","赤纬(J2000)":"+17h24m11s","赤纬D(J2000)":"17.403055555555554","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"small, round, brighter middle","简略描述":"S, R, bM"},{"ID":"11325","标识":"IC3485","M标识":"IC3485","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h33m11.2s","赤经D(J2000)":"12.553111111111113","赤纬(J2000)":"+9h13m5s","赤纬D(J2000)":"9.218055555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small; questionable","简略描述":"eF, S, ?"},{"ID":"11326","标识":"IC3486","M标识":"IC3486","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h33m14s","赤经D(J2000)":"12.55388888888889","赤纬(J2000)":"+12h51m26s","赤纬D(J2000)":"12.857222222222221","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"45","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"11327","标识":"IC3487","M标识":"IC3487","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h33m13.4s","赤经D(J2000)":"12.553722222222223","赤纬(J2000)":"+9h23m49s","赤纬D(J2000)":"9.396944444444443","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"84","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"11328","标识":"IC3488","M标识":"IC3488","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m8.4s","赤经D(J2000)":"12.552333333333333","赤纬(J2000)":"+26h20m59s","赤纬D(J2000)":"26.349722222222223","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"11329","标识":"IC3489","M标识":"IC3489","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h33m13.7s","赤经D(J2000)":"12.553805555555556","赤纬(J2000)":"+12h14m49s","赤纬D(J2000)":"12.246944444444443","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"brighter middle, magnitude 13","简略描述":"bM, magn 13"},{"ID":"11330","标识":"IC3490","M标识":"IC3490","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h33m13.9s","赤经D(J2000)":"12.553861111111113","赤纬(J2000)":"+10h55m42s","赤纬D(J2000)":"10.928333333333333","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"50","详细描述":"","简略描述":"vF, S, vmE 240°"},{"ID":"11331","标识":"IC3491","M标识":"IC3491","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m9s","赤经D(J2000)":"12.5525","赤纬(J2000)":"+27h5m41s","赤纬D(J2000)":"27.09472222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"12","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"11332","标识":"IC3492","M标识":"IC3492","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h33m19.7s","赤经D(J2000)":"12.555472222222223","赤纬(J2000)":"+12h51m14s","赤纬D(J2000)":"12.85388888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"55","详细描述":"","简略描述":"sbM, prob spiral"},{"ID":"11333","标识":"IC3493","M标识":"IC3493","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h33m18.9s","赤经D(J2000)":"12.555250000000001","赤纬(J2000)":"+9h23m36s","赤纬D(J2000)":"9.393333333333333","可见光星等V":"99","摄影(蓝光)星等B":"13.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"11334","标识":"IC3494","M标识":"IC3494","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m13.6s","赤经D(J2000)":"12.553777777777778","赤纬(J2000)":"+27h35m5s","赤纬D(J2000)":"27.584722222222222","可见光星等V":"16.6","摄影(蓝光)星等B":"17.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, nebulous star, 15th magnitude star to northwest","简略描述":"vF, vS, neb *, * 15 np"},{"ID":"11335","标识":"IC3495","M标识":"IC3495","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m16.5s","赤经D(J2000)":"12.554583333333333","赤纬(J2000)":"+26h48m32s","赤纬D(J2000)":"26.80888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, considerably small, irregular figure, difficult","简略描述":"vF, cS, iF, diffic"},{"ID":"11336","标识":"IC3496","M标识":"IC3496","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m18.8s","赤经D(J2000)":"12.555222222222223","赤纬(J2000)":"+26h45m30s","赤纬D(J2000)":"26.758333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, considerably small, irregular figure, 15th magnitude star involved to south","简略描述":"vF, cS, iF, * 15 np"},{"ID":"11337","标识":"IC3497","M标识":"IC3497","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m28.5s","赤经D(J2000)":"12.557916666666667","赤纬(J2000)":"+25h29m19s","赤纬D(J2000)":"25.488611111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11338","标识":"IC3498","M标识":"IC3498","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m29.1s","赤经D(J2000)":"12.558083333333334","赤纬(J2000)":"+26h44m19s","赤纬D(J2000)":"26.738611111111112","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"50","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"11339","标识":"IC3499","M标识":"IC3499","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h33m45s","赤经D(J2000)":"12.5625","赤纬(J2000)":"+10h59m44s","赤纬D(J2000)":"10.995555555555555","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"125","详细描述":"","简略描述":"cS, E (wisps) 130°, bM"},{"ID":"11340","标识":"IC3500","M标识":"IC3500","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m49.5s","赤经D(J2000)":"12.56375","赤纬(J2000)":"+13h57m46s","赤纬D(J2000)":"13.962777777777777","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"95","详细描述":"small, extended 90°, suddenly brighter middle like a star","简略描述":"S, E 90°, sbM *"},{"ID":"11341","标识":"IC3501","M标识":"IC3501","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"dE","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m51.5s","赤经D(J2000)":"12.564305555555556","赤纬(J2000)":"+13h19m21s","赤纬D(J2000)":"13.3225","可见光星等V":"13.9","摄影(蓝光)星等B":"14.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, round, brighter middle and nucleus","简略描述":"F, S, R, bMN"},{"ID":"11342","标识":"IC3502","M标识":"IC3502","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h33m42.5s","赤经D(J2000)":"12.561805555555557","赤纬(J2000)":"+26h37m4s","赤纬D(J2000)":"26.61777777777778","可见光星等V":"16.9","摄影(蓝光)星等B":"17.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"5","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"11343","标识":"IC3503","M标识":"IC3503","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h33m48.4s","赤经D(J2000)":"12.563444444444444","赤纬(J2000)":"+37h47m23s","赤纬D(J2000)":"37.78972222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, brighter middle and nucleus","简略描述":"eF, vS, bMN"},{"ID":"11344","标识":"IC3504","M标识":"IC3504","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m8s","赤经D(J2000)":"12.568888888888889","赤纬(J2000)":"+6h53m12s","赤纬D(J2000)":"6.886666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, near 10th magnitude star","简略描述":"eF, vS, nr * 10"},{"ID":"11345","标识":"IC3505","M标识":"IC3505","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m10.3s","赤经D(J2000)":"12.569527777777777","赤纬(J2000)":"+15h58m7s","赤纬D(J2000)":"15.96861111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"175","详细描述":"faint, small, extended","简略描述":"F, S, E"},{"ID":"11346","标识":"IC3506","M标识":"IC3506","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m6.7s","赤经D(J2000)":"12.568527777777778","赤纬(J2000)":"+12h44m30s","赤纬D(J2000)":"12.741666666666665","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"83","详细描述":"very faint, round","简略描述":"vF, R"},{"ID":"11347","标识":"IC3507","M标识":"IC3507","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m4.4s","赤经D(J2000)":"12.567888888888888","赤纬(J2000)":"+25h21m48s","赤纬D(J2000)":"25.363333333333333","可见光星等V":"16.7","摄影(蓝光)星等B":"17.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure","简略描述":"vF, vS, iF"},{"ID":"11348","标识":"IC3508","M标识":"IC3508","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0 R","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m6.9s","赤经D(J2000)":"12.568583333333333","赤纬(J2000)":"+26h40m17s","赤纬D(J2000)":"26.67138888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"considerably faint, small, brighter middle, spiral","简略描述":"cF, S, bM, spir"},{"ID":"11349","标识":"IC3509","M标识":"IC3509","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m11.5s","赤经D(J2000)":"12.569861111111111","赤纬(J2000)":"+12h2m58s","赤纬D(J2000)":"12.049444444444445","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"80","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"11350","标识":"IC3510","M标识":"IC3510","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m15s","赤经D(J2000)":"12.570833333333333","赤纬(J2000)":"+11h4m18s","赤纬D(J2000)":"11.071666666666667","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"0","详细描述":"extremely faint, brighter middle, magnitude 15, 10th magnitude star to northeast","简略描述":"eF, bM, magn 15, * 10 nf"},{"ID":"11351","标识":"IC3511","M标识":"IC3511","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m9.6s","赤经D(J2000)":"12.569333333333333","赤纬(J2000)":"+27h20m55s","赤纬D(J2000)":"27.34861111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nucleus","简略描述":"vF, S, iF, N"},{"ID":"11352","标识":"IC3512","M标识":"IC3512","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m9.7s","赤经D(J2000)":"12.56936111111111","赤纬(J2000)":"+27h21m43s","赤纬D(J2000)":"27.361944444444447","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nucleus","简略描述":"vF, S, iF, N"},{"ID":"11353","标识":"IC3513","M标识":"IC3513","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m11.6s","赤经D(J2000)":"12.569888888888888","赤纬(J2000)":"+27h19m49s","赤纬D(J2000)":"27.330277777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nucleus","简略描述":"vF, S, iF, N"},{"ID":"11354","标识":"IC3514","M标识":"IC3514","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m15.8s","赤经D(J2000)":"12.571055555555555","赤纬(J2000)":"+26h42m1s","赤纬D(J2000)":"26.700277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, brighter middle, spiral","简略描述":"vF, vS, bM, spir"},{"ID":"11355","标识":"IC3515","M标识":"IC3515","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m16s","赤经D(J2000)":"12.571111111111112","赤纬(J2000)":"+27h51m43s","赤纬D(J2000)":"27.861944444444447","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"50","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"11356","标识":"IC3516","M标识":"IC3516","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m17.3s","赤经D(J2000)":"12.571472222222223","赤纬(J2000)":"+27h27m10s","赤纬D(J2000)":"27.452777777777776","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"0.2","方位角":"72","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"11357","标识":"IC3517","M标识":"IC3517","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m30.9s","赤经D(J2000)":"12.57525","赤纬(J2000)":"+9h9m18s","赤纬D(J2000)":"9.155000000000001","可见光星等V":"14.9","摄影(蓝光)星等B":"15.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"15","详细描述":"","简略描述":"eF, pS, mE 28°, ?"},{"ID":"11358","标识":"IC3518","M标识":"IC3518","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m31.3s","赤经D(J2000)":"12.57536111111111","赤纬(J2000)":"+9h37m26s","赤纬D(J2000)":"9.623888888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"14.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"45","详细描述":"","简略描述":"cS, mE 210°, bM"},{"ID":"11359","标识":"IC3519","M标识":"IC3519","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m38.4s","赤经D(J2000)":"12.577333333333334","赤纬(J2000)":"+15h36m9s","赤纬D(J2000)":"15.6025","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"15","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"11360","标识":"IC3520","M标识":"IC3520","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m31.7s","赤经D(J2000)":"12.575472222222222","赤纬(J2000)":"+13h30m12s","赤纬D(J2000)":"13.503333333333334","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"60","详细描述":"very faint, round","简略描述":"vF, R"},{"ID":"11361","标识":"IC3521","M标识":"IC3521","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m39.5s","赤经D(J2000)":"12.577638888888888","赤纬(J2000)":"+7h9m35s","赤纬D(J2000)":"7.159722222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"27","详细描述":"pretty faint, considerably small, extended 45°, brighter middle","简略描述":"pF, cS, E 45°, bM"},{"ID":"11362","标识":"IC3522","M标识":"IC3522","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m45.8s","赤经D(J2000)":"12.57938888888889","赤纬(J2000)":"+15h13m16s","赤纬D(J2000)":"15.221111111111112","可见光星等V":"14.7","摄影(蓝光)星等B":"15.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"95","详细描述":"very faint, small, much extended 90°","简略描述":"vF, S, mE 90°"},{"ID":"11363","标识":"IC3523","M标识":"IC3523","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m39.3s","赤经D(J2000)":"12.577583333333333","赤纬(J2000)":"+14h0m58s","赤纬D(J2000)":"14.016111111111112","可见光星等V":"16.5","摄影(蓝光)星等B":"17.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, round","简略描述":"vF, R"},{"ID":"11364","标识":"IC3524","M标识":"IC3524","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m43s","赤经D(J2000)":"12.57861111111111","赤纬(J2000)":"+14h14m40s","赤纬D(J2000)":"14.244444444444444","可见光星等V":"99","摄影(蓝光)星等B":"14","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, small, possibly a 12.5 magnitude star","简略描述":"cF, S, ? * 12.5"},{"ID":"11365","标识":"IC3525","M标识":"IC3525","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h34m46.4s","赤经D(J2000)":"12.579555555555554","赤纬(J2000)":"+10h10m32s","赤纬D(J2000)":"10.175555555555555","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, round","简略描述":"vF, R"},{"ID":"11366","标识":"IC3526","M标识":"IC3526","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m40.7s","赤经D(J2000)":"12.577972222222222","赤纬(J2000)":"+25h41m4s","赤纬D(J2000)":"25.684444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11367","标识":"IC3527","M标识":"IC3527","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m42.2s","赤经D(J2000)":"12.578388888888888","赤纬(J2000)":"+26h9m15s","赤纬D(J2000)":"26.154166666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle starlike","简略描述":"F, vS, R, bM *"},{"ID":"11368","标识":"IC3528","M标识":"IC3528","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m55.8s","赤经D(J2000)":"12.582166666666666","赤纬(J2000)":"+15h33m58s","赤纬D(J2000)":"15.566111111111113","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"11369","标识":"IC3529","M标识":"IC3529","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m49.8s","赤经D(J2000)":"12.580499999999999","赤纬(J2000)":"+25h41m55s","赤纬D(J2000)":"25.698611111111113","可见光星等V":"99","摄影(蓝光)星等B":"15.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11370","标识":"IC3530","M标识":"IC3530","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m49.4s","赤经D(J2000)":"12.580388888888889","赤纬(J2000)":"+17h48m49s","赤纬D(J2000)":"17.81361111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"162","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"11371","标识":"IC3531","M标识":"IC3531","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m56.6s","赤经D(J2000)":"12.58238888888889","赤纬(J2000)":"+26h37m36s","赤纬D(J2000)":"26.62666666666667","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, brighter middle, spiral","简略描述":"vF, vS, bM, spir"},{"ID":"11372","标识":"IC3532","M标识":"IC3532","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m57.6s","赤经D(J2000)":"12.582666666666666","赤纬(J2000)":"+25h52m49s","赤纬D(J2000)":"25.880277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, brighter middle, spiral","简略描述":"vF, vS, bM, spir"},{"ID":"11373","标识":"IC3533","M标识":"IC3533","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m1.2s","赤经D(J2000)":"12.583666666666668","赤纬(J2000)":"+25h46m49s","赤纬D(J2000)":"25.780277777777776","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"40","详细描述":"pretty faint, very small, round, brighter middle","简略描述":"pF, vS, R, bM"},{"ID":"11374","标识":"IC3534","M标识":"IC3534","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h34m52.1s","赤经D(J2000)":"12.581138888888889","赤纬(J2000)":"+14h58m42s","赤纬D(J2000)":"14.978333333333333","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, considerably small, round","简略描述":"vF, cS, R"},{"ID":"11375","标识":"IC3535","M标识":"IC3535","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m10.9s","赤经D(J2000)":"12.586361111111112","赤纬(J2000)":"+25h43m53s","赤纬D(J2000)":"25.731388888888887","可见光星等V":"99","摄影(蓝光)星等B":"14.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11376","标识":"IC3536","M标识":"IC3536","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m12.4s","赤经D(J2000)":"12.586777777777778","赤纬(J2000)":"+26h32m0s","赤纬D(J2000)":"26.533333333333335","可见光星等V":"15.8","摄影(蓝光)星等B":"16.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"156","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"11377","标识":"IC3537","M标识":"IC3537","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h35m22.5s","赤经D(J2000)":"12.589583333333334","赤纬(J2000)":"+7h39m11s","赤纬D(J2000)":"7.6530555555555555","可见光星等V":"99","摄影(蓝光)星等B":"14.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, questionable","简略描述":"vF, S, ?"},{"ID":"11378","标识":"IC3538","M标识":"IC3538","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m15.6s","赤经D(J2000)":"12.587666666666667","赤纬(J2000)":"+26h14m10s","赤纬D(J2000)":"26.23611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"11379","标识":"IC3539","M标识":"IC3539","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m20.1s","赤经D(J2000)":"12.588916666666668","赤纬(J2000)":"+23h58m59s","赤纬D(J2000)":"23.983055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, round, brighter middle, 13th magnitude star to southwest","简略描述":"eF, S, R, bM, * 13 sp"},{"ID":"11380","标识":"IC3540","M标识":"IC3540","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h35m27.2s","赤经D(J2000)":"12.59088888888889","赤纬(J2000)":"+12h45m3s","赤纬D(J2000)":"12.750833333333333","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"66","详细描述":"","简略描述":"vS, R, sev. condens"},{"ID":"11381","标识":"IC3541","M标识":"IC3541","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m21.7s","赤经D(J2000)":"12.589361111111112","赤纬(J2000)":"+23h58m31s","赤纬D(J2000)":"23.975277777777777","可见光星等V":"99","摄影(蓝光)星等B":"14.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, round, 14th magnitude star to northwest","简略描述":"eF, S, R, * 14 np"},{"ID":"11382","标识":"IC3542","M标识":"IC3542","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h35m41.2s","赤经D(J2000)":"12.594777777777779","赤纬(J2000)":"+11h40m0s","赤纬D(J2000)":"11.666666666666666","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"170","详细描述":"brighter middle, magnitude 14.5","简略描述":"bM, magn 14.5"},{"ID":"11383","标识":"IC3543","M标识":"IC3543","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m41.3s","赤经D(J2000)":"12.594805555555556","赤纬(J2000)":"+26h17m12s","赤纬D(J2000)":"26.28666666666667","可见光星等V":"15.8","摄影(蓝光)星等B":"16.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.1","方位角":"142","详细描述":"","简略描述":"vF, S, lE 150°"},{"ID":"11384","标识":"IC3544","M标识":"IC3544","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m47.6s","赤经D(J2000)":"12.596555555555556","赤纬(J2000)":"+14h18m5s","赤纬D(J2000)":"14.301388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, very small, perhaps a 12.5 magnitude star","简略描述":"cF, vS, ? * 12.5"},{"ID":"11385","标识":"IC3545","M标识":"IC3545","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m41s","赤经D(J2000)":"12.594722222222222","赤纬(J2000)":"+26h31m26s","赤纬D(J2000)":"26.523888888888887","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"125","详细描述":"pretty bright, small, round, brighter middle","简略描述":"pB, S, R, bM"},{"ID":"11386","标识":"IC3546","M标识":"IC3546","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m41.6s","赤经D(J2000)":"12.594888888888889","赤纬(J2000)":"+26h13m21s","赤纬D(J2000)":"26.222499999999997","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"135","详细描述":"","简略描述":"F, S, lE 150°"},{"ID":"11387","标识":"IC3547","M标识":"IC3547","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m48.8s","赤经D(J2000)":"12.59688888888889","赤纬(J2000)":"+26h19m46s","赤纬D(J2000)":"26.329444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure","简略描述":"vF, vS, iF"},{"ID":"11388","标识":"IC3548","M标识":"IC3548","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"dE","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h35m56.5s","赤经D(J2000)":"12.599027777777778","赤纬(J2000)":"+10h56m9s","赤纬D(J2000)":"10.935833333333333","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"105","详细描述":"very faint, extremely small, round","简略描述":"vF, eS, R"},{"ID":"11389","标识":"IC3549","M标识":"IC3549","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m50.9s","赤经D(J2000)":"12.597472222222223","赤纬(J2000)":"+26h23m44s","赤纬D(J2000)":"26.395555555555553","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, brighter middle, spiral","简略描述":"vF, vS, bM, spir"},{"ID":"11390","标识":"IC3550","M标识":"IC3550","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m51.8s","赤经D(J2000)":"12.597722222222222","赤纬(J2000)":"+27h55m57s","赤纬D(J2000)":"27.9325","可见光星等V":"14.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.3","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Nuclei inv. in I 92"},{"ID":"11391","标识":"IC3551","M标识":"IC3551","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m53.8s","赤经D(J2000)":"12.598277777777778","赤纬(J2000)":"+27h57m50s","赤纬D(J2000)":"27.96388888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.2","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Nuclei inv. in I 92"},{"ID":"11392","标识":"IC3552","M标识":"IC3552","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m54s","赤经D(J2000)":"12.598333333333334","赤纬(J2000)":"+27h59m36s","赤纬D(J2000)":"27.993333333333336","可见光星等V":"15.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.1","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Nuclei inv. in I 92"},{"ID":"11393","标识":"IC3553","M标识":"IC3553","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m55.9s","赤经D(J2000)":"12.59886111111111","赤纬(J2000)":"+26h11m36s","赤纬D(J2000)":"26.193333333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11394","标识":"IC3554","M标识":"IC3554","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m55.2s","赤经D(J2000)":"12.598666666666666","赤纬(J2000)":"+27h55m39s","赤纬D(J2000)":"27.927500000000002","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebula involved in I 92 (2 seconds to west, 1.8 arcmin to south)","简略描述":"N inv. in I 92 (2s p, 1'.8 s)"},{"ID":"11395","标识":"IC3555","M标识":"IC3555","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m56s","赤经D(J2000)":"12.59888888888889","赤纬(J2000)":"+27h59m24s","赤纬D(J2000)":"27.990000000000002","可见光星等V":"15","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"","简略描述":"N inv. in I 92 (1s.5 p, 2'.0 n)"},{"ID":"11396","标识":"IC3556","M标识":"IC3556","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h35m58.5s","赤经D(J2000)":"12.599583333333333","赤纬(J2000)":"+26h57m56s","赤纬D(J2000)":"26.965555555555554","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"170","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"11397","标识":"IC3557","M标识":"IC3557","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m8.1s","赤经D(J2000)":"12.60225","赤纬(J2000)":"+16h38m30s","赤纬D(J2000)":"16.641666666666666","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"brighter middle, magnitude 15.5","简略描述":"bM, magn 15.5"},{"ID":"11398","标识":"IC3558","M标识":"IC3558","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m2.8s","赤经D(J2000)":"12.600777777777777","赤纬(J2000)":"+11h50m58s","赤纬D(J2000)":"11.849444444444446","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"90","详细描述":"double; faint, round, 12 arcsec distance north and south","简略描述":"D, F, R, dist 12\" n & s"},{"ID":"11399","标识":"IC3559","M标识":"IC3559","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m3.4s","赤经D(J2000)":"12.600944444444444","赤纬(J2000)":"+26h59m16s","赤纬D(J2000)":"26.98777777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"67","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11400","标识":"IC3560","M标识":"IC3560","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m3.8s","赤经D(J2000)":"12.601055555555556","赤纬(J2000)":"+27h4m44s","赤纬D(J2000)":"27.078888888888887","可见光星等V":"16.1","摄影(蓝光)星等B":"17.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"70","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11401","标识":"IC3561","M标识":"IC3561","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m4.7s","赤经D(J2000)":"12.601305555555555","赤纬(J2000)":"+26h54m0s","赤纬D(J2000)":"26.9","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"80","详细描述":"considerably faint, very small, round, brighter middle like a star","简略描述":"cF, vS, R, bM *"},{"ID":"11402","标识":"IC3562","M标识":"IC3562","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m10.7s","赤经D(J2000)":"12.602972222222222","赤纬(J2000)":"+9h55m22s","赤纬D(J2000)":"9.922777777777776","可见光星等V":"14.7","摄影(蓝光)星等B":"15.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"40","详细描述":"extended 220°","简略描述":"E 220°"},{"ID":"11403","标识":"IC3563","M标识":"IC3563","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m7.1s","赤经D(J2000)":"12.601972222222221","赤纬(J2000)":"+27h55m36s","赤纬D(J2000)":"27.92666666666667","可见光星等V":"15.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.5","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Nuclei inv. in I 92"},{"ID":"11404","标识":"IC3564","M标识":"IC3564","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m8s","赤经D(J2000)":"12.602222222222222","赤纬(J2000)":"+27h55m40s","赤纬D(J2000)":"27.92777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Nuclei inv. in I 92"},{"ID":"11405","标识":"IC3565","M标识":"IC3565","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m12.3s","赤经D(J2000)":"12.603416666666666","赤纬(J2000)":"+26h45m22s","赤纬D(J2000)":"26.75611111111111","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"","简略描述":"vF, S, E 148°, ? st"},{"ID":"11406","标识":"IC3566","M标识":"IC3566","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m22s","赤经D(J2000)":"12.60611111111111","赤纬(J2000)":"+11h9m54s","赤纬D(J2000)":"11.165000000000001","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"cometic, round with 1 arcmin tail at 110°","简略描述":"Com, R with tail 1' at 110°"},{"ID":"11407","标识":"IC3567","M标识":"IC3567","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m22.6s","赤经D(J2000)":"12.606277777777777","赤纬(J2000)":"+13h36m11s","赤纬D(J2000)":"13.603055555555555","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11408","标识":"IC3568","M标识":"IC3568","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"柠檬片星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"鹿豹座","星座(En)":"CAM","赤经(J2000)":"12h33m6.9s","赤经D(J2000)":"12.551916666666667","赤纬(J2000)":"+82h33m51s","赤纬D(J2000)":"82.56416666666667","可见光星等V":"10.6","摄影(蓝光)星等B":"11.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.17","短轴(分)":"","方位角":"","详细描述":"a planetary or nebulous 9.5 magnitude star; 13th magnitude star 15 arcsec to west","简略描述":"Planetary or neb * 9.5, * 13 p 15\""},{"ID":"11409","标识":"IC3569","M标识":"IC3569","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBcd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m8.1s","赤经D(J2000)":"12.60225","赤纬(J2000)":"+19h19m18s","赤纬D(J2000)":"19.321666666666665","可见光星等V":"12.5","摄影(蓝光)星等B":"12.9","B-V":"0.4","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"30","详细描述":"considerably small, spiral, 2 brighter resolvable, faint star in middle, faint star involved","简略描述":"cS, spir, 2 br, F * M, F * inv"},{"ID":"11410","标识":"IC3570","M标识":"IC3570","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m18.2s","赤经D(J2000)":"12.605055555555555","赤纬(J2000)":"+24h4m42s","赤纬D(J2000)":"24.078333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, irregular figure, 13th magnitude star to northwest","简略描述":"eF, S, iF, * 13 np"},{"ID":"11411","标识":"IC3571","M标识":"IC3571","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m19.9s","赤经D(J2000)":"12.605527777777777","赤纬(J2000)":"+26h5m3s","赤纬D(J2000)":"26.084166666666665","可见光星等V":"16.9","摄影(蓝光)星等B":"17.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, small, irregular figure, others near","简略描述":"eF, S, iF, others nr"},{"ID":"11412","标识":"IC3572","M标识":"IC3572","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m28.1s","赤经D(J2000)":"12.607805555555554","赤纬(J2000)":"+11h37m8s","赤纬D(J2000)":"11.61888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, very questionable","简略描述":"eF, vS, ??"},{"ID":"11413","标识":"IC3573","M标识":"IC3573","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m27.1s","赤经D(J2000)":"12.607527777777777","赤纬(J2000)":"+11h45m35s","赤纬D(J2000)":"11.759722222222223","可见光星等V":"15.9","摄影(蓝光)星等B":"16.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"140","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"11414","标识":"IC3574","M标识":"IC3574","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m27.7s","赤经D(J2000)":"12.607694444444444","赤纬(J2000)":"+12h24m20s","赤纬D(J2000)":"12.405555555555557","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"115","详细描述":"very faint, very small, possibly a 14th magnitude star","简略描述":"vF, vS, ? * 14"},{"ID":"11415","标识":"IC3575","M标识":"IC3575","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m32.4s","赤经D(J2000)":"12.609","赤纬(J2000)":"+13h44m50s","赤纬D(J2000)":"13.747222222222222","可见光星等V":"16.3","摄影(蓝光)星等B":"17.3","B-V":"1","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"0","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"11416","标识":"IC3576","M标识":"IC3576","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m37.8s","赤经D(J2000)":"12.6105","赤纬(J2000)":"+6h37m17s","赤纬D(J2000)":"6.621388888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14","B-V":"0.5","表面亮度(mag\/arcmin2)":"15.1","长轴(分)":"2.3","短轴(分)":"2.1","方位角":"30","详细描述":"faint, pretty small, diffuse","简略描述":"F, pS, dif"},{"ID":"11417","标识":"IC3577","M标识":"IC3577","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m26.3s","赤经D(J2000)":"12.607305555555556","赤纬(J2000)":"+11h53m49s","赤纬D(J2000)":"11.896944444444443","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, diffuse, 13th magnitude star involved to northeast","简略描述":"vF, pS, dif, * 13 inv nf"},{"ID":"11418","标识":"IC3578","M标识":"IC3578","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m39.5s","赤经D(J2000)":"12.610972222222221","赤纬(J2000)":"+11h6m5s","赤纬D(J2000)":"11.101388888888888","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"135","详细描述":"small, extended 125°","简略描述":"S, E 125°"},{"ID":"11419","标识":"IC3579","M标识":"IC3579","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m32.8s","赤经D(J2000)":"12.60911111111111","赤纬(J2000)":"+26h6m15s","赤纬D(J2000)":"26.104166666666668","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, irregular figure, others near","简略描述":"eF, S, iF, others nr"},{"ID":"11420","标识":"IC3580","M标识":"IC3580","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m29.2s","赤经D(J2000)":"12.60811111111111","赤纬(J2000)":"+18h17m59s","赤纬D(J2000)":"18.299722222222226","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"11421","标识":"IC3581","M标识":"IC3581","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m38.1s","赤经D(J2000)":"12.610583333333333","赤纬(J2000)":"+24h25m44s","赤纬D(J2000)":"24.42888888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"51","详细描述":"pretty bright, small, extended 50°, brighter middle","简略描述":"pB, S, E 50°, bM"},{"ID":"11422","标识":"IC3582","M标识":"IC3582","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m36.9s","赤经D(J2000)":"12.610249999999999","赤纬(J2000)":"+26h14m5s","赤纬D(J2000)":"26.234722222222224","可见光星等V":"16.2","摄影(蓝光)星等B":"17.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, cometic, brighter middle, others near","简略描述":"F, vS, com, bM, others nr"},{"ID":"11423","标识":"IC3583","M标识":"IC3583","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m43.8s","赤经D(J2000)":"12.612166666666667","赤纬(J2000)":"+13h15m33s","赤纬D(J2000)":"13.259166666666667","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.2","短轴(分)":"1.1","方位角":"0","详细描述":"very much extended, 13th magnitude star attached on southeast, 2 stars of 12th magnitude near","简略描述":"vmE, * 13 att sf, 2 st 12 nr"},{"ID":"11424","标识":"IC3584","M标识":"IC3584","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m45.2s","赤经D(J2000)":"12.612555555555556","赤纬(J2000)":"+12h13m58s","赤纬D(J2000)":"12.232777777777779","可见光星等V":"99","摄影(蓝光)星等B":"15","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, perhaps a 14th magnitude star","简略描述":"vF, vS, ? * 14"},{"ID":"11425","标识":"IC3585","M标识":"IC3585","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m39.8s","赤经D(J2000)":"12.611055555555556","赤纬(J2000)":"+26h49m50s","赤纬D(J2000)":"26.830555555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"126","详细描述":"considerably faint, small, nebulous star","简略描述":"cF, S, neb *"},{"ID":"11426","标识":"IC3586","M标识":"IC3586","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h36m54.9s","赤经D(J2000)":"12.61525","赤纬(J2000)":"+12h31m13s","赤纬D(J2000)":"12.520277777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.1","短轴(分)":"1","方位角":"90","详细描述":"very faint, considerably small, diffuse","简略描述":"vF, cS, dif"},{"ID":"11427","标识":"IC3587","M标识":"IC3587","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m48.3s","赤经D(J2000)":"12.613416666666666","赤纬(J2000)":"+27h32m59s","赤纬D(J2000)":"27.549722222222226","可见光星等V":"15.1","摄影(蓝光)星等B":"15.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"0.2","方位角":"122","详细描述":"","简略描述":"vF, S, lE 120°, * 15 nf"},{"ID":"11428","标识":"IC3588","M标识":"IC3588","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m56.4s","赤经D(J2000)":"12.615666666666666","赤纬(J2000)":"+14h13m3s","赤纬D(J2000)":"14.2175","可见光星等V":"11.3","摄影(蓝光)星等B":"11.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.6","短轴(分)":"3.2","方位角":"55","详细描述":"considerably faint, pretty large, a little brighter middle","简略描述":"cF, pL, lbM"},{"ID":"11429","标识":"IC3589","M标识":"IC3589","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h37m1.3s","赤经D(J2000)":"12.617027777777778","赤纬(J2000)":"+6h56m13s","赤纬D(J2000)":"6.936944444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, stellar","简略描述":"vF, S, R, stell"},{"ID":"11430","标识":"IC3590","M标识":"IC3590","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m50.7s","赤经D(J2000)":"12.614083333333333","赤纬(J2000)":"+27h16m41s","赤纬D(J2000)":"27.278055555555554","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.2","方位角":"130","详细描述":"","简略描述":"vF, S, v iF"},{"ID":"11431","标识":"IC3591","M标识":"IC3591","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h37m2.8s","赤经D(J2000)":"12.617444444444445","赤纬(J2000)":"+6h55m34s","赤纬D(J2000)":"6.926111111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"48","详细描述":"","简略描述":"F, pS, nr * 14"},{"ID":"11432","标识":"IC3592","M标识":"IC3592","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m53.2s","赤经D(J2000)":"12.614777777777778","赤纬(J2000)":"+27h51m45s","赤纬D(J2000)":"27.8625","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.5","方位角":"126","详细描述":"pretty faint, small, a little extended 140°","简略描述":"pF, S, lE 140°"},{"ID":"11433","标识":"IC3593","M标识":"IC3593","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m53.8s","赤经D(J2000)":"12.614944444444443","赤纬(J2000)":"+27h44m55s","赤纬D(J2000)":"27.748611111111114","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"5","详细描述":"pretty faint, small, irregular figure, nuclear","简略描述":"pF, S, iF, N"},{"ID":"11434","标识":"IC3594","M标识":"IC3594","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h36m56.5s","赤经D(J2000)":"12.615694444444443","赤纬(J2000)":"+26h6m57s","赤纬D(J2000)":"26.115833333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, irregular figure","简略描述":"eF, vS, iF"},{"ID":"11435","标识":"IC3595","M标识":"IC3595","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h37m6.3s","赤经D(J2000)":"12.618416666666667","赤纬(J2000)":"+23h47m13s","赤纬D(J2000)":"23.786944444444448","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"95","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"11436","标识":"IC3596","M标识":"IC3596","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h37m18.9s","赤经D(J2000)":"12.621916666666667","赤纬(J2000)":"+26h31m15s","赤纬D(J2000)":"26.520833333333332","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, near double star","简略描述":"vF, S, iF, nr D *"},{"ID":"11437","标识":"IC3597","M标识":"IC3597","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h37m24.6s","赤经D(J2000)":"12.6235","赤纬(J2000)":"+23h51m49s","赤纬D(J2000)":"23.863611111111112","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"11438","标识":"IC3598","M标识":"IC3598","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h37m21s","赤经D(J2000)":"12.6225","赤纬(J2000)":"+28h12m32s","赤纬D(J2000)":"28.20888888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"140","详细描述":"","简略描述":"pF, vS, sbM *, * 15 nf 100\""},{"ID":"11439","标识":"IC3599","M标识":"IC3599","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h37m41.1s","赤经D(J2000)":"12.628083333333334","赤纬(J2000)":"+26h42m29s","赤纬D(J2000)":"26.708055555555553","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"140","详细描述":"considerably faint, small, round, brighter middle","简略描述":"cF, S, R, bM"},{"ID":"11440","标识":"IC3600","M标识":"IC3600","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h37m41s","赤经D(J2000)":"12.628055555555555","赤纬(J2000)":"+27h7m46s","赤纬D(J2000)":"27.129444444444445","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, nebulous star","简略描述":"F, vS, neb *"},{"ID":"11441","标识":"IC3601","M标识":"IC3601","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h37m53.7s","赤经D(J2000)":"12.631583333333333","赤纬(J2000)":"+15h13m29s","赤纬D(J2000)":"15.224722222222223","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"155","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"11442","标识":"IC3602","M标识":"IC3602","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h38m6.8s","赤经D(J2000)":"12.635222222222222","赤纬(J2000)":"+10h4m55s","赤纬D(J2000)":"10.081944444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"135","详细描述":"faint, extremely small, round, a little brighter middle","简略描述":"F, eS, R, lbM"},{"ID":"11443","标识":"IC3603","M标识":"IC3603","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h38m16.1s","赤经D(J2000)":"12.637805555555556","赤纬(J2000)":"+15h34m13s","赤纬D(J2000)":"15.570277777777777","可见光星等V":"15.4","摄影(蓝光)星等B":"16.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"170","详细描述":"extremely faint, brighter middle, magnitude 15","简略描述":"eF, bM, magn 15"},{"ID":"11444","标识":"IC3604","M标识":"IC3604","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h38m20.7s","赤经D(J2000)":"12.639083333333334","赤纬(J2000)":"+11h43m50s","赤纬D(J2000)":"11.730555555555556","可见光星等V":"15.3","摄影(蓝光)星等B":"16.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"170","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"11445","标识":"IC3605","M标识":"IC3605","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h38m20.9s","赤经D(J2000)":"12.639138888888889","赤纬(J2000)":"+19h32m28s","赤纬D(J2000)":"19.541111111111114","可见光星等V":"15.6","摄影(蓝光)星等B":"16.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"10","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"11446","标识":"IC3606","M标识":"IC3606","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h38m25.1s","赤经D(J2000)":"12.640305555555555","赤纬(J2000)":"+12h36m37s","赤纬D(J2000)":"12.610277777777778","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very little extended","简略描述":"F, vlE"},{"ID":"11447","标识":"IC3607","M标识":"IC3607","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h38m32.1s","赤经D(J2000)":"12.642249999999999","赤纬(J2000)":"+10h22m34s","赤纬D(J2000)":"10.376111111111111","可见光星等V":"15.4","摄影(蓝光)星等B":"16.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"136","详细描述":"faint, extremely small, round","简略描述":"F, eS, R"},{"ID":"11448","标识":"IC3608","M标识":"IC3608","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h38m37.4s","赤经D(J2000)":"12.643722222222221","赤纬(J2000)":"+10h28m33s","赤纬D(J2000)":"10.475833333333334","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.1","短轴(分)":"0.4","方位角":"95","详细描述":"","简略描述":"vS, R, wisps pf, 1' each"},{"ID":"11449","标识":"IC3609","M标识":"IC3609","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h38m34.7s","赤经D(J2000)":"12.642972222222221","赤纬(J2000)":"+14h21m11s","赤纬D(J2000)":"14.353055555555555","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"bright, very small, round, possibly a planetary","简略描述":"B, vS, R, ? planetary"},{"ID":"11450","标识":"IC3610","M标识":"IC3610","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h38m47.1s","赤经D(J2000)":"12.646416666666665","赤纬(J2000)":"+26h52m22s","赤纬D(J2000)":"26.872777777777777","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, small, very irregular figure","简略描述":"eF, S, viF"},{"ID":"11451","标识":"IC3611","M标识":"IC3611","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m4.1s","赤经D(J2000)":"12.65113888888889","赤纬(J2000)":"+13h21m51s","赤纬D(J2000)":"13.364166666666666","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"137","详细描述":"pretty faint, considerably small, extended 130°","简略描述":"pF, cS, E 130°"},{"ID":"11452","标识":"IC3612","M标识":"IC3612","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m4.6s","赤经D(J2000)":"12.651277777777779","赤纬(J2000)":"+14h43m54s","赤纬D(J2000)":"14.731666666666667","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.5","方位角":"50","详细描述":"bright, very small, round, possibly a planetary","简略描述":"B, vS, R, ? planetary"},{"ID":"11453","标识":"IC3613","M标识":"IC3613","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m4.8s","赤经D(J2000)":"12.651333333333334","赤纬(J2000)":"+13h45m31s","赤纬D(J2000)":"13.758611111111112","可见光星等V":"16.4","摄影(蓝光)星等B":"17.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"165","详细描述":"faint, extremely small, round, a little brighter middle","简略描述":"F, eS, R, lbM"},{"ID":"11454","标识":"IC3614","M标识":"IC3614","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m1.4s","赤经D(J2000)":"12.65038888888889","赤纬(J2000)":"+26h18m0s","赤纬D(J2000)":"26.3","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty small, gradually brighter middle, spiral","简略描述":"eF, pS, gbM, spir"},{"ID":"11455","标识":"IC3615","M标识":"IC3615","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m1.6s","赤经D(J2000)":"12.650444444444444","赤纬(J2000)":"+18h12m3s","赤纬D(J2000)":"18.200833333333332","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"11","详细描述":"","简略描述":"S, E 185°, bM"},{"ID":"11456","标识":"IC3616","M标识":"IC3616","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m4.6s","赤经D(J2000)":"12.651277777777779","赤纬(J2000)":"+14h43m54s","赤纬D(J2000)":"14.731666666666667","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.5","方位角":"50","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"11457","标识":"IC3617","M标识":"IC3617","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h39m25s","赤经D(J2000)":"12.656944444444445","赤纬(J2000)":"+7h57m59s","赤纬D(J2000)":"7.966388888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"14.4","B-V":"0.2","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"65","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"11458","标识":"IC3618","M标识":"IC3618","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m17.1s","赤经D(J2000)":"12.65475","赤纬(J2000)":"+26h40m42s","赤纬D(J2000)":"26.678333333333335","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11459","标识":"IC3619","M标识":"IC3619","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m18.9s","赤经D(J2000)":"12.65525","赤纬(J2000)":"+24h8m35s","赤纬D(J2000)":"24.143055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, considerably small, extended 160°, brighter middle","简略描述":"vF, cS, E 160°, bM"},{"ID":"11460","标识":"IC3620","M标识":"IC3620","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m17.9s","赤经D(J2000)":"12.654972222222222","赤纬(J2000)":"+27h54m30s","赤纬D(J2000)":"27.90833333333333","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.6","短轴(分)":"0.1","方位角":"170","详细描述":"","简略描述":"F, S, iF, bM, sev neb st nr"},{"ID":"11461","标识":"IC3621","M标识":"IC3621","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m33.5s","赤经D(J2000)":"12.659305555555555","赤纬(J2000)":"+15h30m11s","赤纬D(J2000)":"15.503055555555555","可见光星等V":"15.4","摄影(蓝光)星等B":"16.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"11462","标识":"IC3622","M标识":"IC3622","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m32.4s","赤经D(J2000)":"12.659","赤纬(J2000)":"+15h25m56s","赤纬D(J2000)":"15.432222222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"11463","标识":"IC3623","M标识":"IC3623","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m27.6s","赤经D(J2000)":"12.657666666666668","赤纬(J2000)":"+27h6m10s","赤纬D(J2000)":"27.102777777777778","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"45","详细描述":"considerably faint, small, round, brighter middle","简略描述":"cF, S, R, bM"},{"ID":"11464","标识":"IC3624","M标识":"IC3624","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h39m34.5s","赤经D(J2000)":"12.659583333333334","赤纬(J2000)":"+11h58m55s","赤纬D(J2000)":"11.981944444444444","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, extended 180°","简略描述":"F, S, E 180°"},{"ID":"11465","标识":"IC3625","M标识":"IC3625","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h39m33.1s","赤经D(J2000)":"12.659194444444445","赤纬(J2000)":"+10h58m6s","赤纬D(J2000)":"10.968333333333334","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"11","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, round","简略描述":"vF, R"},{"ID":"11466","标识":"IC3626","M标识":"IC3626","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m31.6s","赤经D(J2000)":"12.658777777777779","赤纬(J2000)":"+25h40m36s","赤纬D(J2000)":"25.67666666666667","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"10","详细描述":"very faint, small, brighter middle, spiral","简略描述":"vF, S, bM, spir"},{"ID":"11467","标识":"IC3627","M标识":"IC3627","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m31.9s","赤经D(J2000)":"12.658861111111111","赤纬(J2000)":"+27h29m52s","赤纬D(J2000)":"27.497777777777777","可见光星等V":"16","摄影(蓝光)星等B":"16.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"80","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11468","标识":"IC3628","M标识":"IC3628","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m38.8s","赤经D(J2000)":"12.660777777777778","赤纬(J2000)":"+26h14m19s","赤纬D(J2000)":"26.238611111111112","可见光星等V":"99","摄影(蓝光)星等B":"15.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"11469","标识":"IC3629","M标识":"IC3629","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m46.8s","赤经D(J2000)":"12.663","赤纬(J2000)":"+13h31m59s","赤纬D(J2000)":"13.533055555555556","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"75","详细描述":"","简略描述":"S, mE 245°, lbM"},{"ID":"11470","标识":"IC3630","M标识":"IC3630","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m46.6s","赤经D(J2000)":"12.662944444444445","赤纬(J2000)":"+25h25m57s","赤纬D(J2000)":"25.4325","可见光星等V":"99","摄影(蓝光)星等B":"15.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, a little elongated, perhaps a double star","简略描述":"vF, vS, lE, ? D *"},{"ID":"11471","标识":"IC3631","M标识":"IC3631","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h39m47.9s","赤经D(J2000)":"12.663305555555556","赤纬(J2000)":"+12h58m28s","赤纬D(J2000)":"12.974444444444444","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"90","详细描述":"brighter middle, magnitude 13","简略描述":"bM, magn 13"},{"ID":"11472","标识":"IC3632","M标识":"IC3632","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h39m59.9s","赤经D(J2000)":"12.666638888888889","赤纬(J2000)":"+26h40m56s","赤纬D(J2000)":"26.682222222222222","可见光星等V":"16.7","摄影(蓝光)星等B":"17.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"extremely faint, considerably small, irregular figure","简略描述":"eF, cS, iF"},{"ID":"11473","标识":"IC3633","M标识":"IC3633","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h40m11.2s","赤经D(J2000)":"12.669777777777778","赤纬(J2000)":"+9h53m48s","赤纬D(J2000)":"9.896666666666667","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"125","详细描述":"very small, a planetary nebula, a little brighter middle","简略描述":"vS, planetary, lbM"},{"ID":"11474","标识":"IC3634","M标识":"IC3634","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h40m11.4s","赤经D(J2000)":"12.669833333333333","赤纬(J2000)":"+9h50m50s","赤纬D(J2000)":"9.847222222222223","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"very faint, round, diffuse","简略描述":"vF, R, dif"},{"ID":"11475","标识":"IC3635","M标识":"IC3635","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h40m13.3s","赤经D(J2000)":"12.670361111111111","赤纬(J2000)":"+12h52m31s","赤纬D(J2000)":"12.875277777777779","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"168","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11476","标识":"IC3636","M标识":"IC3636","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h40m15.4s","赤经D(J2000)":"12.670944444444444","赤纬(J2000)":"+22h4m31s","赤纬D(J2000)":"22.075277777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, extended 0°, brighter middle","简略描述":"eF, vS, E 0°, bM"},{"ID":"11477","标识":"IC3637","M标识":"IC3637","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/D","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h40m19.4s","赤经D(J2000)":"12.672055555555556","赤纬(J2000)":"+14h42m54s","赤纬D(J2000)":"14.715","可见光星等V":"13.7","摄影(蓝光)星等B":"14.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"2.2","短轴(分)":"1","方位角":"18","详细描述":"very faint, very small, round, diffuse","简略描述":"vF, vS, R, dif"},{"ID":"11478","标识":"IC3638","M标识":"IC3638","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h40m16.6s","赤经D(J2000)":"12.671277777777776","赤纬(J2000)":"+10h31m7s","赤纬D(J2000)":"10.518611111111111","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"120","详细描述":"bright, small, round, a little brighter middle","简略描述":"B, S, R, lbM"},{"ID":"11479","标识":"IC3639","M标识":"IC3639","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h40m52.9s","赤经D(J2000)":"12.68136111111111","赤纬(J2000)":"-36h45m21s","赤纬D(J2000)":"-36.755833333333335","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"","简略描述":"pF, pS, * 12.5 ssp"},{"ID":"11480","标识":"IC3640","M标识":"IC3640","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h40m25.1s","赤经D(J2000)":"12.673638888888888","赤纬(J2000)":"+26h31m28s","赤纬D(J2000)":"26.524444444444445","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"40","详细描述":"faint, small, bright middle, spiral; very faint round nebula 30 arcsec to northwest","简略描述":"F, S, bM, spir, vF, R neb 30\" np"},{"ID":"11481","标识":"IC3641","M标识":"IC3641","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h40m26.8s","赤经D(J2000)":"12.674111111111111","赤纬(J2000)":"+26h31m18s","赤纬D(J2000)":"26.521666666666665","可见光星等V":"16.7","摄影(蓝光)星等B":"17.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.25","短轴(分)":"0.1","方位角":"170","详细描述":"faint, small, bright middle, spiral; very faint round nebula 30 arcsec to northwest","简略描述":"F, S, bM, spir, vF, R neb 30\" np"},{"ID":"11482","标识":"IC3642","M标识":"IC3642","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h40m25.9s","赤经D(J2000)":"12.67386111111111","赤纬(J2000)":"+26h43m54s","赤纬D(J2000)":"26.731666666666666","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, considerably small, irregular figure, diffuse","简略描述":"vF, cS, iF, dif"},{"ID":"11483","标识":"IC3643","M标识":"IC3643","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h40m40.9s","赤经D(J2000)":"12.678027777777777","赤纬(J2000)":"+12h24m24s","赤纬D(J2000)":"12.406666666666666","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"90","详细描述":"faint, very little extended","简略描述":"F, vlE"},{"ID":"11484","标识":"IC3644","M标识":"IC3644","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h40m36.1s","赤经D(J2000)":"12.676694444444443","赤纬(J2000)":"+26h30m17s","赤纬D(J2000)":"26.504722222222224","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"15","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"11485","标识":"IC3645","M标识":"IC3645","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h40m37.6s","赤经D(J2000)":"12.67711111111111","赤纬(J2000)":"+26h32m29s","赤纬D(J2000)":"26.54138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11486","标识":"IC3646","M标识":"IC3646","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h40m38.6s","赤经D(J2000)":"12.677388888888888","赤纬(J2000)":"+26h31m32s","赤纬D(J2000)":"26.525555555555556","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"90","详细描述":"","简略描述":"F, S, E 65°, bM"},{"ID":"11487","标识":"IC3647","M标识":"IC3647","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h40m53s","赤经D(J2000)":"12.681388888888888","赤纬(J2000)":"+10h28m35s","赤纬D(J2000)":"10.47638888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"140","详细描述":"faint, considerably small, much extended 135°","简略描述":"F, cS, mE 135°"},{"ID":"11488","标识":"IC3648","M标识":"IC3648","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h40m52.2s","赤经D(J2000)":"12.681166666666666","赤纬(J2000)":"+12h59m4s","赤纬D(J2000)":"12.984444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, very questionable","简略描述":"eF, S, ??"},{"ID":"11489","标识":"IC3649","M标识":"IC3649","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h40m49.7s","赤经D(J2000)":"12.680472222222221","赤纬(J2000)":"+21h6m16s","赤纬D(J2000)":"21.104444444444447","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11490","标识":"IC3650","M标识":"IC3650","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h40m48.7s","赤经D(J2000)":"12.680194444444444","赤纬(J2000)":"+26h28m25s","赤纬D(J2000)":"26.473611111111108","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, brighter middle, spiral","简略描述":"eF, vS, bM, spir"},{"ID":"11491","标识":"IC3651","M标识":"IC3651","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h40m52.8s","赤经D(J2000)":"12.681333333333333","赤纬(J2000)":"+26h43m43s","赤纬D(J2000)":"26.72861111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"pretty faint, considerably small, round, spiral","简略描述":"pF, cS, R, spir"},{"ID":"11492","标识":"IC3652","M标识":"IC3652","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h40m58.7s","赤经D(J2000)":"12.682972222222222","赤纬(J2000)":"+11h11m3s","赤纬D(J2000)":"11.184166666666666","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"small, round, much brighter middle","简略描述":"S, R, mbM"},{"ID":"11493","标识":"IC3653","M标识":"IC3653","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h41m15.7s","赤经D(J2000)":"12.687694444444444","赤纬(J2000)":"+11h23m16s","赤纬D(J2000)":"11.387777777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"brighter middle, magnitude 13","简略描述":"bM, magn 13"},{"ID":"11494","标识":"IC3654","M标识":"IC3654","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m12.4s","赤经D(J2000)":"12.686777777777777","赤纬(J2000)":"+22h35m24s","赤纬D(J2000)":"22.59","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, irregular figure, nucleus","简略描述":"F, S, iF, N"},{"ID":"11495","标识":"IC3655","M标识":"IC3655","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m14.4s","赤经D(J2000)":"12.687333333333333","赤纬(J2000)":"+20h40m0s","赤纬D(J2000)":"20.666666666666668","可见光星等V":"16.1","摄影(蓝光)星等B":"17.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"","简略描述":"vF, vS, iF, * 16 inv, other neb nr"},{"ID":"11496","标识":"IC3656","M标识":"IC3656","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m13.8s","赤经D(J2000)":"12.687166666666666","赤纬(J2000)":"+22h35m41s","赤纬D(J2000)":"22.59472222222222","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"90","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11497","标识":"IC3657","M标识":"IC3657","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m19s","赤经D(J2000)":"12.688611111111111","赤纬(J2000)":"+21h40m31s","赤纬D(J2000)":"21.67527777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, with a nucleus; perhaps a nebulous star","简略描述":"vF, vS, N, ? neb *"},{"ID":"11498","标识":"IC3658","M标识":"IC3658","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m20.6s","赤经D(J2000)":"12.689055555555555","赤纬(J2000)":"+14h42m4s","赤纬D(J2000)":"14.70111111111111","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"81","详细描述":"faint, small, extended 240°","简略描述":"F, S, E 240°"},{"ID":"11499","标识":"IC3659","M标识":"IC3659","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m27.6s","赤经D(J2000)":"12.691","赤纬(J2000)":"+22h55m51s","赤纬D(J2000)":"22.930833333333336","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"80","详细描述":"considerably faint, small, extended 50°","简略描述":"cF, S, E 50°"},{"ID":"11500","标识":"IC3660","M标识":"IC3660","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m36.8s","赤经D(J2000)":"12.693555555555555","赤纬(J2000)":"+21h5m35s","赤纬D(J2000)":"21.093055555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11501","标识":"IC3661","M标识":"IC3661","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m35.6s","赤经D(J2000)":"12.693222222222223","赤纬(J2000)":"+22h29m42s","赤纬D(J2000)":"22.495","可见光星等V":"15.8","摄影(蓝光)星等B":"16.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.1","方位角":"105","详细描述":"considerably faint, small, irregular figure, nuclear","简略描述":"cF, S, iF, N"},{"ID":"11502","标识":"IC3662","M标识":"IC3662","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m36.2s","赤经D(J2000)":"12.693388888888888","赤纬(J2000)":"+23h25m31s","赤纬D(J2000)":"23.42527777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, round, brighter middle, spiral","简略描述":"F, S, R, bM, spir"},{"ID":"11503","标识":"IC3663","M标识":"IC3663","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h41m39.3s","赤经D(J2000)":"12.69425","赤纬(J2000)":"+12h14m51s","赤纬D(J2000)":"12.247499999999999","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"178","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"11504","标识":"IC3664","M标识":"IC3664","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m41.4s","赤经D(J2000)":"12.694833333333333","赤纬(J2000)":"+19h56m40s","赤纬D(J2000)":"19.944444444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11505","标识":"IC3665","M标识":"IC3665","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h41m46.6s","赤经D(J2000)":"12.696277777777778","赤纬(J2000)":"+11h29m17s","赤纬D(J2000)":"11.488055555555555","可见光星等V":"14.5","摄影(蓝光)星等B":"15.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"72","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"11506","标识":"IC3666","M标识":"IC3666","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h41m53.4s","赤经D(J2000)":"12.698166666666667","赤纬(J2000)":"+7h50m42s","赤纬D(J2000)":"7.845","可见光星等V":"99","摄影(蓝光)星等B":"14.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, questionable","简略描述":"eF, vS, ?"},{"ID":"11507","标识":"IC3667","M标识":"IC3667","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBm","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h41m33s","赤经D(J2000)":"12.6925","赤纬(J2000)":"+41h9m4s","赤纬D(J2000)":"41.151111111111106","可见光星等V":"10.8","摄影(蓝光)星等B":"11.2","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"4.2","短轴(分)":"3.4","方位角":"25","详细描述":"considerably bright, pretty large, extended 55°, brighter middle","简略描述":"cB, pL, E 55°, bM"},{"ID":"11508","标识":"IC3668","M标识":"IC3668","拓展名":"","组件":"","Class":"I 179","业余排名":"15","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h41m32.7s","赤经D(J2000)":"12.692416666666666","赤纬(J2000)":"+41h7m33s","赤纬D(J2000)":"41.12583333333333","可见光星等V":"13","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1","短轴(分)":"","方位角":"","详细描述":"pretty faint, pretty small, irregular figure, nuclear","简略描述":"pF, pS, iF, N"},{"ID":"11509","标识":"IC3669","M标识":"IC3669","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h41m37.4s","赤经D(J2000)":"12.693722222222222","赤纬(J2000)":"+41h8m25s","赤纬D(J2000)":"41.140277777777776","可见光星等V":"15.5","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.25","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, irregular figure, nuclear","简略描述":"F, pS, iF, N"},{"ID":"11510","标识":"IC3670","M标识":"IC3670","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h41m55s","赤经D(J2000)":"12.698611111111111","赤纬(J2000)":"+11h46m24s","赤纬D(J2000)":"11.773333333333333","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"5","详细描述":"very small, round, brighter middle","简略描述":"vS, R, bM"},{"ID":"11511","标识":"IC3671","M标识":"IC3671","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc R","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h41m51.3s","赤经D(J2000)":"12.697583333333334","赤纬(J2000)":"+23h30m37s","赤纬D(J2000)":"23.510277777777777","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"considerably faint, considerably small, a little extended 230°, brighter middle","简略描述":"cF, cS, lE 230°, bM"},{"ID":"11512","标识":"IC3672","M标识":"IC3672","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m8.7s","赤经D(J2000)":"12.702416666666666","赤纬(J2000)":"+11h45m15s","赤纬D(J2000)":"11.754166666666666","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"","简略描述":"vF, vS, R, stell, I.C. 809 n"},{"ID":"11513","标识":"IC3673","M标识":"IC3673","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h42m4.3s","赤经D(J2000)":"12.701194444444443","赤纬(J2000)":"+21h8m18s","赤纬D(J2000)":"21.138333333333332","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11514","标识":"IC3674","M标识":"IC3674","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h42m5.4s","赤经D(J2000)":"12.7015","赤纬(J2000)":"+22h30m39s","赤纬D(J2000)":"22.510833333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pF, S, exc N, * 11 sp"},{"ID":"11515","标识":"IC3675","M标识":"IC3675","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBm\/P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h41m52.5s","赤经D(J2000)":"12.697916666666666","赤纬(J2000)":"+41h16m25s","赤纬D(J2000)":"41.27361111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"12.9","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.4","方位角":"132","详细描述":"pretty bright, pretty large, irregular figure, nuclear","简略描述":"pB, pL, iF, N"},{"ID":"11516","标识":"IC3676","M标识":"IC3676","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h42m12.3s","赤经D(J2000)":"12.703416666666666","赤纬(J2000)":"+13h33m35s","赤纬D(J2000)":"13.559722222222224","可见光星等V":"99","摄影(蓝光)星等B":"14.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, possibly a 13th-magnitude star","简略描述":"vF, vS, ? * 13"},{"ID":"11517","标识":"IC3677","M标识":"IC3677","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h42m11.8s","赤经D(J2000)":"12.703277777777776","赤纬(J2000)":"+20h53m8s","赤纬D(J2000)":"20.885555555555555","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11518","标识":"IC3678","M标识":"IC3678","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h42m12.6s","赤经D(J2000)":"12.7035","赤纬(J2000)":"+20h52m49s","赤纬D(J2000)":"20.880277777777778","可见光星等V":"15.9","摄影(蓝光)星等B":"16.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11519","标识":"IC3679","M标识":"IC3679","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h42m11.4s","赤经D(J2000)":"12.703166666666666","赤纬(J2000)":"+22h49m6s","赤纬D(J2000)":"22.81833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11520","标识":"IC3680","M标识":"IC3680","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h42m0.8s","赤经D(J2000)":"12.700222222222221","赤纬(J2000)":"+39h6m18s","赤纬D(J2000)":"39.105000000000004","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11521","标识":"IC3681","M标识":"IC3681","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h42m0.9s","赤经D(J2000)":"12.700249999999999","赤纬(J2000)":"+39h6m16s","赤纬D(J2000)":"39.10444444444445","可见光星等V":"99","摄影(蓝光)星等B":"14.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, very small, extended 135°, brighter middle, 13th magnitude star to southwest","简略描述":"cF, vS, E 135°, bM, * 13 sp"},{"ID":"11522","标识":"IC3682","M标识":"IC3682","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h42m1.7s","赤经D(J2000)":"12.700472222222222","赤纬(J2000)":"+39h5m1s","赤纬D(J2000)":"39.08361111111111","可见光星等V":"99","摄影(蓝光)星等B":"14.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11523","标识":"IC3683","M标识":"IC3683","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h42m20.6s","赤经D(J2000)":"12.70572222222222","赤纬(J2000)":"+20h52m19s","赤纬D(J2000)":"20.871944444444445","可见光星等V":"16.3","摄影(蓝光)星等B":"17.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"60","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11524","标识":"IC3684","M标识":"IC3684","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m26.5s","赤经D(J2000)":"12.70736111111111","赤纬(J2000)":"+11h44m22s","赤纬D(J2000)":"11.739444444444443","可见光星等V":"15.1","摄影(蓝光)星等B":"16","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"14","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"11525","标识":"IC3685","M标识":"IC3685","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m19.5s","赤经D(J2000)":"12.705416666666666","赤纬(J2000)":"+20h51m52s","赤纬D(J2000)":"20.864444444444445","可见光星等V":"99","摄影(蓝光)星等B":"14.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty large","简略描述":"vF, pL"},{"ID":"11526","标识":"IC3686","M标识":"IC3686","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m36s","赤经D(J2000)":"12.709999999999999","赤纬(J2000)":"+10h33m54s","赤纬D(J2000)":"10.565000000000001","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.4","方位角":"171","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"11527","标识":"IC3687","M标识":"IC3687","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h42m15.1s","赤经D(J2000)":"12.704194444444443","赤纬(J2000)":"+38h30m13s","赤纬D(J2000)":"38.50361111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"13.7","B-V":"0.2","表面亮度(mag\/arcmin2)":"15.8","长轴(分)":"2.5","短轴(分)":"1.5","方位角":"9","详细描述":"","简略描述":"vF, cL, dif, sev N"},{"ID":"11528","标识":"IC3688","M标识":"IC3688","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h42m37.1s","赤经D(J2000)":"12.710305555555555","赤纬(J2000)":"+14h21m25s","赤纬D(J2000)":"14.356944444444444","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2","短轴(分)":"0.9","方位角":"33","详细描述":"considerably faint, pretty small","简略描述":"cF, pS"},{"ID":"11529","标识":"IC3689","M标识":"IC3689","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h42m37s","赤经D(J2000)":"12.710277777777778","赤纬(J2000)":"+20h51m1s","赤纬D(J2000)":"20.85027777777778","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11530","标识":"IC3690","M标识":"IC3690","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m49.2s","赤经D(J2000)":"12.713666666666667","赤纬(J2000)":"+10h21m28s","赤纬D(J2000)":"10.357777777777777","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"6","详细描述":"bright, very small, round","简略描述":"B, vS, R"},{"ID":"11531","标识":"IC3691","M标识":"IC3691","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h42m49.3s","赤经D(J2000)":"12.713694444444444","赤纬(J2000)":"+22h46m22s","赤纬D(J2000)":"22.772777777777776","可见光星等V":"16.4","摄影(蓝光)星等B":"17","B-V":"0.6","表面亮度(mag\/arcmin2)":"15.1","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11532","标识":"IC3692","M标识":"IC3692","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h42m53.9s","赤经D(J2000)":"12.714972222222222","赤纬(J2000)":"+20h59m22s","赤纬D(J2000)":"20.989444444444445","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"97","详细描述":"pretty faint, small, brighter middle, spiral","简略描述":"pF, S, bM, spir"},{"ID":"11533","标识":"IC3693","M标识":"IC3693","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h42m58s","赤经D(J2000)":"12.716111111111111","赤纬(J2000)":"+10h40m53s","赤纬D(J2000)":"10.681388888888888","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"85","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"11534","标识":"IC3694","M标识":"IC3694","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h43m7.3s","赤经D(J2000)":"12.718694444444445","赤纬(J2000)":"+11h12m41s","赤纬D(J2000)":"11.211388888888887","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"30","详细描述":"brighter middle, magnitude 13.5","简略描述":"bM, magn 13.5"},{"ID":"11535","标识":"IC3695","M标识":"IC3695","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h42m32.2s","赤经D(J2000)":"12.708944444444445","赤纬(J2000)":"+6h52m15s","赤纬D(J2000)":"6.870833333333334","可见光星等V":"99","摄影(蓝光)星等B":"14.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11536","标识":"IC3696","M标识":"IC3696","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h43m9.7s","赤经D(J2000)":"12.71936111111111","赤纬(J2000)":"+19h55m41s","赤纬D(J2000)":"19.928055555555556","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11537","标识":"IC3697","M标识":"IC3697","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h42m58.8s","赤经D(J2000)":"12.716333333333333","赤纬(J2000)":"+39h50m46s","赤纬D(J2000)":"39.846111111111114","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"","详细描述":"very faint, small, nuclear, possibly nebulous star","简略描述":"vF, S, N, ? neb *"},{"ID":"11538","标识":"IC3698","M标识":"IC3698","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h43m17.3s","赤经D(J2000)":"12.721472222222223","赤纬(J2000)":"+11h12m40s","赤纬D(J2000)":"11.21111111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"small, round, much brighter middle","简略描述":"S, R, mbM"},{"ID":"11539","标识":"IC3699","M标识":"IC3699","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h43m17.3s","赤经D(J2000)":"12.721472222222223","赤纬(J2000)":"+19h0m4s","赤纬D(J2000)":"19.00111111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, irregular figure, nuclear, 3 stars to north, on the northwest","简略描述":"F, S, iF, N, 3 st n, np"},{"ID":"11540","标识":"IC3700","M标识":"IC3700","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h43m19.8s","赤经D(J2000)":"12.722166666666666","赤纬(J2000)":"+19h15m53s","赤纬D(J2000)":"19.264722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"11541","标识":"IC3701","M标识":"IC3701","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"dE","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h43m30.9s","赤经D(J2000)":"12.72525","赤纬(J2000)":"+11h2m49s","赤纬D(J2000)":"11.046944444444444","可见光星等V":"15.6","摄影(蓝光)星等B":"16.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, round, diffuse","简略描述":"F, vS, R, dif"},{"ID":"11542","标识":"IC3702","M标识":"IC3702","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h43m28.4s","赤经D(J2000)":"12.724555555555556","赤纬(J2000)":"+10h52m25s","赤纬D(J2000)":"10.873611111111112","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"45","详细描述":"bright, very small, round","简略描述":"B, vS, R"},{"ID":"11543","标识":"IC3703","M标识":"IC3703","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h43m22s","赤经D(J2000)":"12.722777777777777","赤纬(J2000)":"+37h58m29s","赤纬D(J2000)":"37.974722222222226","可见光星等V":"99","摄影(蓝光)星等B":"15.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, vS, iF, N, 2 st 11 sf"},{"ID":"11544","标识":"IC3704","M标识":"IC3704","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h43m45.5s","赤经D(J2000)":"12.729305555555555","赤纬(J2000)":"+10h46m11s","赤纬D(J2000)":"10.769722222222223","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"43","详细描述":"","简略描述":"F, pL, mE 225°"},{"ID":"11545","标识":"IC3705","M标识":"IC3705","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h43m41.6s","赤经D(J2000)":"12.728222222222222","赤纬(J2000)":"+19h19m36s","赤纬D(J2000)":"19.326666666666668","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"11546","标识":"IC3706","M标识":"IC3706","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h43m48s","赤经D(J2000)":"12.73","赤纬(J2000)":"+9h13m47s","赤纬D(J2000)":"9.229722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, considerably small, diffuse","简略描述":"vF, cS, dif"},{"ID":"11547","标识":"IC3707","M标识":"IC3707","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h43m28.6s","赤经D(J2000)":"12.72461111111111","赤纬(J2000)":"+37h58m58s","赤纬D(J2000)":"37.98277777777778","可见光星等V":"99","摄影(蓝光)星等B":"14.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, brighter middle like a star","简略描述":"pF, vS, bM *"},{"ID":"11548","标识":"IC3708","M标识":"IC3708","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GxyP","含重复类型":"GxyP","形态":"GxyP","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h43m52.6s","赤经D(J2000)":"12.731277777777779","赤纬(J2000)":"+13h7m15s","赤纬D(J2000)":"13.120833333333334","可见光星等V":"15","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"pretty bright, considerably large, extended","简略描述":"pB, cL, E"},{"ID":"11549","标识":"IC3709","M标识":"IC3709","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc R","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h44m4.1s","赤经D(J2000)":"12.734472222222221","赤纬(J2000)":"+9h3m49s","赤纬D(J2000)":"9.063611111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"0","详细描述":"very faint, considerably small, diffuse","简略描述":"vF, cS, dif"},{"ID":"11550","标识":"IC3710","M标识":"IC3710","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h44m9.6s","赤经D(J2000)":"12.735999999999999","赤纬(J2000)":"+12h6m52s","赤纬D(J2000)":"12.114444444444445","可见光星等V":"14.7","摄影(蓝光)星等B":"15.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"160","详细描述":"very faint, considerably small, round, diffuse","简略描述":"vF, cS, R, dif"},{"ID":"11551","标识":"IC3711","M标识":"IC3711","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h44m9.3s","赤经D(J2000)":"12.735916666666666","赤纬(J2000)":"+11h10m36s","赤纬D(J2000)":"11.176666666666666","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"60","详细描述":"very faint, very small, round, diffuse","简略描述":"vF, vS, R, dif"},{"ID":"11552","标识":"IC3712","M标识":"IC3712","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h44m16.6s","赤经D(J2000)":"12.737944444444443","赤纬(J2000)":"+10h22m29s","赤纬D(J2000)":"10.374722222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, pS, E 42°, ?"},{"ID":"11553","标识":"IC3713","M标识":"IC3713","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h44m3.1s","赤经D(J2000)":"12.734194444444444","赤纬(J2000)":"+41h10m10s","赤纬D(J2000)":"41.169444444444444","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"132","详细描述":"","简略描述":"F, pS, dif, * 13 sf 1'"},{"ID":"11554","标识":"IC3714","M标识":"IC3714","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h44m23.1s","赤经D(J2000)":"12.739749999999999","赤纬(J2000)":"+10h11m20s","赤纬D(J2000)":"10.18888888888889","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"150","详细描述":"small, round","简略描述":"S, R"},{"ID":"11555","标识":"IC3715","M标识":"IC3715","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h44m21.3s","赤经D(J2000)":"12.739249999999998","赤纬(J2000)":"+20h1m26s","赤纬D(J2000)":"20.023888888888887","可见光星等V":"16.7","摄影(蓝光)星等B":"17.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11556","标识":"IC3716","M标识":"IC3716","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h44m45.1s","赤经D(J2000)":"12.745861111111111","赤纬(J2000)":"+8h6m7s","赤纬D(J2000)":"8.101944444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, southwestern of 2","简略描述":"vF, vS, sp of 2"},{"ID":"11557","标识":"IC3717","M标识":"IC3717","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h44m23s","赤经D(J2000)":"12.739722222222222","赤纬(J2000)":"+39h31m20s","赤纬D(J2000)":"39.52222222222222","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"160","详细描述":"faint, considerably small, extended 150°, brighter middle, 15th magnitude star to northwest","简略描述":"F, cS, E 150°, bM, * 15 np"},{"ID":"11558","标识":"IC3718","M标识":"IC3718","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h44m45.3s","赤经D(J2000)":"12.745916666666666","赤纬(J2000)":"+12h21m3s","赤纬D(J2000)":"12.350833333333332","可见光星等V":"13.2","摄影(蓝光)星等B":"13.7","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.7","短轴(分)":"1","方位角":"72","详细描述":"faint, pretty small, extended 90°","简略描述":"F, pS, E 90°"},{"ID":"11559","标识":"IC3719","M标识":"IC3719","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h44m47.7s","赤经D(J2000)":"12.746583333333332","赤纬(J2000)":"+8h6m24s","赤纬D(J2000)":"8.106666666666666","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"90","详细描述":"extremely faint, very small, very questionable, northeastern of 2","简略描述":"eF, vS, ??, nf of 2"},{"ID":"11560","标识":"IC3720","M标识":"IC3720","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h44m47.5s","赤经D(J2000)":"12.746527777777777","赤纬(J2000)":"+12h3m53s","赤纬D(J2000)":"12.064722222222223","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"125","详细描述":"extremely faint, small, diffuse","简略描述":"eF, S, dif"},{"ID":"11561","标识":"IC3721","M标识":"IC3721","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h44m53.1s","赤经D(J2000)":"12.748083333333332","赤纬(J2000)":"+18h45m19s","赤纬D(J2000)":"18.755277777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"136","详细描述":"brighter middle, magnitude 13.5","简略描述":"bM, magn 13.5"},{"ID":"11562","标识":"IC3722","M标识":"IC3722","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h44m50.9s","赤经D(J2000)":"12.747472222222221","赤纬(J2000)":"+11h46m44s","赤纬D(J2000)":"11.77888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, = 13th-magnitude star","简略描述":"vF, vS, = * 13"},{"ID":"11563","标识":"IC3723","M标识":"IC3723","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h44m30.6s","赤经D(J2000)":"12.741833333333332","赤纬(J2000)":"+40h44m14s","赤纬D(J2000)":"40.73722222222222","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"95","详细描述":"pretty faint, very small, round, brighter middle","简略描述":"pF, vS, R, bM"},{"ID":"11564","标识":"IC3724","M标识":"IC3724","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h44m53.8s","赤经D(J2000)":"12.748277777777776","赤纬(J2000)":"+10h16m55s","赤纬D(J2000)":"10.281944444444445","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"70","详细描述":"small, round","简略描述":"S, R"},{"ID":"11565","标识":"IC3725","M标识":"IC3725","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h44m53.1s","赤经D(J2000)":"12.748083333333332","赤纬(J2000)":"+18h45m19s","赤纬D(J2000)":"18.755277777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"136","详细描述":"pretty faint, considerably small, extended, brighter middle","简略描述":"pF, cS, E, bM"},{"ID":"11566","标识":"IC3726","M标识":"IC3726","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h44m42.6s","赤经D(J2000)":"12.745166666666666","赤纬(J2000)":"+40h40m44s","赤纬D(J2000)":"40.678888888888885","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"0.3","方位角":"111","详细描述":"","简略描述":"F, cS, E 145°, bM"},{"ID":"11567","标识":"IC3727","M标识":"IC3727","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h45m5.7s","赤经D(J2000)":"12.751583333333333","赤纬(J2000)":"+10h54m2s","赤纬D(J2000)":"10.900555555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.8","方位角":"162","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"11568","标识":"IC3728","M标识":"IC3728","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m3.2s","赤经D(J2000)":"12.75088888888889","赤纬(J2000)":"+20h58m26s","赤纬D(J2000)":"20.973888888888887","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11569","标识":"IC3729","M标识":"IC3729","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h44m53s","赤经D(J2000)":"12.748055555555554","赤纬(J2000)":"+39h21m6s","赤纬D(J2000)":"39.35166666666667","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"45","详细描述":"","简略描述":"F, vS, iF, N, neb st np"},{"ID":"11570","标识":"IC3730","M标识":"IC3730","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m6.5s","赤经D(J2000)":"12.751805555555556","赤纬(J2000)":"+21h10m12s","赤纬D(J2000)":"21.17","可见光星等V":"14.6","摄影(蓝光)星等B":"15.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"","简略描述":"pB, vS, R, bM, in dif neb"},{"ID":"11571","标识":"IC3731","M标识":"IC3731","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h45m5.2s","赤经D(J2000)":"12.751444444444445","赤纬(J2000)":"+12h26m49s","赤纬D(J2000)":"12.446944444444444","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"110","详细描述":"brighter middle, magnitude 14.5","简略描述":"bM, magn 14.5"},{"ID":"11572","标识":"IC3732","M标识":"IC3732","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h45m11.9s","赤经D(J2000)":"12.753305555555556","赤纬(J2000)":"+10h19m27s","赤纬D(J2000)":"10.324166666666667","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"45","详细描述":"very small, round","简略描述":"vS, R"},{"ID":"11573","标识":"IC3733","M标识":"IC3733","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h45m16.7s","赤经D(J2000)":"12.75463888888889","赤纬(J2000)":"+6h57m25s","赤纬D(J2000)":"6.956944444444445","可见光星等V":"99","摄影(蓝光)星等B":"15.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, = 14th-magnitude star","简略描述":"eF, S, = * 14"},{"ID":"11574","标识":"IC3734","M标识":"IC3734","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m9.2s","赤经D(J2000)":"12.752555555555556","赤纬(J2000)":"+23h2m20s","赤纬D(J2000)":"23.03888888888889","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"","简略描述":"* 15 in dif neb, I.C. 813 f 0'.5"},{"ID":"11575","标识":"IC3735","M标识":"IC3735","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m20.4s","赤经D(J2000)":"12.755666666666666","赤纬(J2000)":"+13h41m35s","赤纬D(J2000)":"13.693055555555556","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"162","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"11576","标识":"IC3736","M标识":"IC3736","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m18.8s","赤经D(J2000)":"12.755222222222223","赤纬(J2000)":"+21h32m9s","赤纬D(J2000)":"21.535833333333336","可见光星等V":"15","摄影(蓝光)星等B":"15.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"165","详细描述":"","简略描述":"pF, vS, E 155°, bM"},{"ID":"11577","标识":"IC3737","M标识":"IC3737","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m20.4s","赤经D(J2000)":"12.755666666666666","赤纬(J2000)":"+21h57m36s","赤纬D(J2000)":"21.96","可见光星等V":"99","摄影(蓝光)星等B":"13.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11578","标识":"IC3738","M标识":"IC3738","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m25.3s","赤经D(J2000)":"12.757027777777777","赤纬(J2000)":"+19h13m44s","赤纬D(J2000)":"19.228888888888886","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Neb * 15"},{"ID":"11579","标识":"IC3739","M标识":"IC3739","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h45m32.2s","赤经D(J2000)":"12.758944444444445","赤纬(J2000)":"+12h59m51s","赤纬D(J2000)":"12.997499999999999","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, considerably small, binuclear","简略描述":"cF, cS, biN"},{"ID":"11580","标识":"IC3740","M标识":"IC3740","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m30.5s","赤经D(J2000)":"12.758472222222222","赤纬(J2000)":"+20h48m59s","赤纬D(J2000)":"20.81638888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"9","详细描述":"pretty faint, considerably small, extended 0°, brighter middle","简略描述":"pF, cS, E 0°, bM"},{"ID":"11581","标识":"IC3741","M标识":"IC3741","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m33.2s","赤经D(J2000)":"12.759222222222222","赤纬(J2000)":"+19h12m12s","赤纬D(J2000)":"19.203333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Neb * 16"},{"ID":"11582","标识":"IC3742","M标识":"IC3742","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m31.9s","赤经D(J2000)":"12.758861111111111","赤纬(J2000)":"+13h19m55s","赤纬D(J2000)":"13.331944444444444","可见光星等V":"13.7","摄影(蓝光)星等B":"14.1","B-V":"0.4","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.7","短轴(分)":"0.9","方位角":"45","详细描述":"","简略描述":"pL, mE 225°, bM"},{"ID":"11583","标识":"IC3743","M标识":"IC3743","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h45m41s","赤经D(J2000)":"12.761388888888888","赤纬(J2000)":"+11h6m2s","赤纬D(J2000)":"11.100555555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"11584","标识":"IC3744","M标识":"IC3744","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m41.4s","赤经D(J2000)":"12.7615","赤纬(J2000)":"+19h30m3s","赤纬D(J2000)":"19.500833333333333","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"160","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11585","标识":"IC3745","M标识":"IC3745","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m44.8s","赤经D(J2000)":"12.762444444444444","赤纬(J2000)":"+19h10m40s","赤纬D(J2000)":"19.17777777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"pretty faint, very small, round, brighter middle","简略描述":"pF, vS, R, bM"},{"ID":"11586","标识":"IC3746","M标识":"IC3746","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h45m31.8s","赤经D(J2000)":"12.758833333333333","赤纬(J2000)":"+37h49m26s","赤纬D(J2000)":"37.823888888888895","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"11.2","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11587","标识":"IC3747","M标识":"IC3747","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h45m34.5s","赤经D(J2000)":"12.759583333333333","赤纬(J2000)":"+37h58m7s","赤纬D(J2000)":"37.968611111111116","可见光星等V":"99","摄影(蓝光)星等B":"14.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11588","标识":"IC3748","M标识":"IC3748","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m51s","赤经D(J2000)":"12.764166666666666","赤纬(J2000)":"+19h25m46s","赤纬D(J2000)":"19.429444444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11589","标识":"IC3749","M标识":"IC3749","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m51.4s","赤经D(J2000)":"12.764277777777778","赤纬(J2000)":"+19h32m9s","赤纬D(J2000)":"19.535833333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, brighter middle, spiral","简略描述":"vF, eS, bM, spir"},{"ID":"11590","标识":"IC3750","M标识":"IC3750","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h45m57.2s","赤经D(J2000)":"12.765888888888888","赤纬(J2000)":"+19h6m16s","赤纬D(J2000)":"19.104444444444447","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, irregular figure, nuclear","简略描述":"eF, eS, iF, N"},{"ID":"11591","标识":"IC3751","M标识":"IC3751","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h45m45.1s","赤经D(J2000)":"12.762527777777779","赤纬(J2000)":"+37h49m25s","赤纬D(J2000)":"37.82361111111111","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"","简略描述":"F, vS, iF, N, neb * 15 p"},{"ID":"11592","标识":"IC3752","M标识":"IC3752","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h46m4.1s","赤经D(J2000)":"12.767805555555556","赤纬(J2000)":"+19h0m39s","赤纬D(J2000)":"19.010833333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, vS, iF, neb * 14 np 1', * 10 np 1'.5"},{"ID":"11593","标识":"IC3753","M标识":"IC3753","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h46m4.3s","赤经D(J2000)":"12.767861111111111","赤纬(J2000)":"+19h7m17s","赤纬D(J2000)":"19.12138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, S, E, * 14 conn p"},{"ID":"11594","标识":"IC3754","M标识":"IC3754","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h46m15.6s","赤经D(J2000)":"12.771","赤纬(J2000)":"+8h20m57s","赤纬D(J2000)":"8.349166666666667","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"128","详细描述":"faint, small","简略描述":"F, S"},{"ID":"11595","标识":"IC3755","M标识":"IC3755","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h46m9.4s","赤经D(J2000)":"12.769277777777779","赤纬(J2000)":"+19h9m27s","赤纬D(J2000)":"19.1575","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11596","标识":"IC3756","M标识":"IC3756","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h46m10.1s","赤经D(J2000)":"12.769472222222223","赤纬(J2000)":"+11h54m55s","赤纬D(J2000)":"11.915277777777778","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"20","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"11597","标识":"IC3757","M标识":"IC3757","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h45m59.8s","赤经D(J2000)":"12.76661111111111","赤纬(J2000)":"+38h30m50s","赤纬D(J2000)":"38.513888888888886","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, irregular figure, 13th magnitude star involved","简略描述":"pF, S, iF, * 13 inv"},{"ID":"11598","标识":"IC3758","M标识":"IC3758","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h45m59.6s","赤经D(J2000)":"12.766555555555556","赤纬(J2000)":"+40h46m31s","赤纬D(J2000)":"40.775277777777774","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"pretty faint, small, nebulous star","简略描述":"pF, S, neb *"},{"ID":"11599","标识":"IC3759","M标识":"IC3759","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h46m17.7s","赤经D(J2000)":"12.771583333333334","赤纬(J2000)":"+20h47m0s","赤纬D(J2000)":"20.783333333333335","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"160","详细描述":"","简略描述":"vF, vS, iF, N, * 15 sf 20\""},{"ID":"11600","标识":"IC3760","M标识":"IC3760","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h46m18.2s","赤经D(J2000)":"12.771722222222223","赤纬(J2000)":"+11h52m26s","赤纬D(J2000)":"11.873888888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"100","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"11601","标识":"IC3761","M标识":"IC3761","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h46m27.2s","赤经D(J2000)":"12.774222222222223","赤纬(J2000)":"+20h17m23s","赤纬D(J2000)":"20.289722222222224","可见光星等V":"16.7","摄影(蓝光)星等B":"17.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"70","详细描述":"very faint, very small, round, brighter middle, 12th magnitude star to southwest","简略描述":"vF, vS, R, bM, * 12 sp"},{"ID":"11602","标识":"IC3762","M标识":"IC3762","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h46m37.6s","赤经D(J2000)":"12.777111111111111","赤纬(J2000)":"+22h14m49s","赤纬D(J2000)":"22.246944444444445","可见光星等V":"16.5","摄影(蓝光)星等B":"17.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"40","详细描述":"","简略描述":"vF, S, iF, in gr of neb"},{"ID":"11603","标识":"IC3763","M标识":"IC3763","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h46m45.9s","赤经D(J2000)":"12.779416666666668","赤纬(J2000)":"+21h59m6s","赤纬D(J2000)":"21.985","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"11604","标识":"IC3764","M标识":"IC3764","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h46m56.7s","赤经D(J2000)":"12.782416666666668","赤纬(J2000)":"+9h51m28s","赤纬D(J2000)":"9.857777777777777","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"very faint, considerably small","简略描述":"vF, cS"},{"ID":"11605","标识":"IC3765","M标识":"IC3765","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h46m35.1s","赤经D(J2000)":"12.776416666666668","赤纬(J2000)":"+38h34m26s","赤纬D(J2000)":"38.573888888888895","可见光星等V":"99","摄影(蓝光)星等B":"15.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"11606","标识":"IC3766","M标识":"IC3766","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h46m53.4s","赤经D(J2000)":"12.781500000000001","赤纬(J2000)":"+19h6m40s","赤纬D(J2000)":"19.111111111111114","可见光星等V":"16.4","摄影(蓝光)星等B":"17.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11607","标识":"IC3767","M标识":"IC3767","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h46m55.5s","赤经D(J2000)":"12.782083333333334","赤纬(J2000)":"+10h10m55s","赤纬D(J2000)":"10.181944444444444","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"80","详细描述":"very faint, brighter middle, magnitude 16","简略描述":"vF, bM, magn 16"},{"ID":"11608","标识":"IC3768","M标识":"IC3768","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h46m40.7s","赤经D(J2000)":"12.777972222222223","赤纬(J2000)":"+40h35m51s","赤纬D(J2000)":"40.597500000000004","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"11609","标识":"IC3769","M标识":"IC3769","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h46m48s","赤经D(J2000)":"12.780000000000001","赤纬(J2000)":"+40h28m13s","赤纬D(J2000)":"40.47027777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11610","标识":"IC3770","M标识":"IC3770","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h47m15.6s","赤经D(J2000)":"12.787666666666667","赤纬(J2000)":"+9h12m0s","赤纬D(J2000)":"9.2","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, considerably small, extended 30°, questionable","简略描述":"cF, cS, E 30°, ?"},{"ID":"11611","标识":"IC3771","M标识":"IC3771","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h46m52.6s","赤经D(J2000)":"12.78127777777778","赤纬(J2000)":"+39h10m25s","赤纬D(J2000)":"39.17361111111111","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"70","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"11612","标识":"IC3772","M标识":"IC3772","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h46m56.1s","赤经D(J2000)":"12.782250000000001","赤纬(J2000)":"+36h31m52s","赤纬D(J2000)":"36.53111111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"75","详细描述":"pretty faint, considerably small, irregular figure, nuclear","简略描述":"pF, cS, iF, N"},{"ID":"11613","标识":"IC3773","M标识":"IC3773","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h47m15.2s","赤经D(J2000)":"12.787555555555555","赤纬(J2000)":"+10h12m12s","赤纬D(J2000)":"10.203333333333333","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"0.7","方位角":"20","详细描述":"very faint, small, brighter middle","简略描述":"vF, S, bM"},{"ID":"11614","标识":"IC3774","M标识":"IC3774","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h47m1s","赤经D(J2000)":"12.78361111111111","赤纬(J2000)":"+36h17m17s","赤纬D(J2000)":"36.28805555555555","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"110","详细描述":"faint, considerably small, irregular figure, nuclear","简略描述":"F, cS, iF, N"},{"ID":"11615","标识":"IC3775","M标识":"IC3775","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h47m16.1s","赤经D(J2000)":"12.787805555555556","赤纬(J2000)":"+11h45m37s","赤纬D(J2000)":"11.760277777777778","可见光星等V":"15.7","摄影(蓝光)星等B":"16.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"54","详细描述":"very faint, brighter middle, magnitude 16","简略描述":"vF, bM, magn 16"},{"ID":"11616","标识":"IC3776","M标识":"IC3776","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h47m12.1s","赤经D(J2000)":"12.786694444444445","赤纬(J2000)":"+22h29m3s","赤纬D(J2000)":"22.484166666666667","可见光星等V":"16","摄影(蓝光)星等B":"16.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"30","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"11617","标识":"IC3777","M标识":"IC3777","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h47m25.4s","赤经D(J2000)":"12.790388888888888","赤纬(J2000)":"+9h8m37s","赤纬D(J2000)":"9.143611111111111","可见光星等V":"99","摄影(蓝光)星等B":"14.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small","简略描述":"F, S"},{"ID":"11618","标识":"IC3778","M标识":"IC3778","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h47m1.9s","赤经D(J2000)":"12.783861111111111","赤纬(J2000)":"+40h35m49s","赤纬D(J2000)":"40.596944444444446","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"35","详细描述":"pretty faint, small, round, brighter middle","简略描述":"pF, S, R, bM"},{"ID":"11619","标识":"IC3779","M标识":"IC3779","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h47m20.6s","赤经D(J2000)":"12.789055555555555","赤纬(J2000)":"+12h9m58s","赤纬D(J2000)":"12.166111111111112","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"120","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"11620","标识":"IC3780","M标识":"IC3780","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h47m8.1s","赤经D(J2000)":"12.785583333333333","赤纬(J2000)":"+40h14m10s","赤纬D(J2000)":"40.236111111111114","可见光星等V":"99","摄影(蓝光)星等B":"14.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, brighter middle, spiral","简略描述":"F, vS, bM, spir"},{"ID":"11621","标识":"IC3781","M标识":"IC3781","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h47m24.6s","赤经D(J2000)":"12.790166666666666","赤纬(J2000)":"+22h34m10s","赤纬D(J2000)":"22.569444444444443","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, pS, iF, 2 st n and p"},{"ID":"11622","标识":"IC3782","M标识":"IC3782","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h47m15.7s","赤经D(J2000)":"12.787694444444444","赤纬(J2000)":"+40h22m4s","赤纬D(J2000)":"40.367777777777775","可见光星等V":"99","摄影(蓝光)星等B":"15.2","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11623","标识":"IC3783","M标识":"IC3783","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h47m27.8s","赤经D(J2000)":"12.791055555555555","赤纬(J2000)":"+40h33m59s","赤纬D(J2000)":"40.56638888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"120","详细描述":"pretty faint, small, irregular figure, nuclear","简略描述":"pF, S, iF, N"},{"ID":"11624","标识":"IC3784","M标识":"IC3784","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h47m50.6s","赤经D(J2000)":"12.79738888888889","赤纬(J2000)":"+19h23m5s","赤纬D(J2000)":"19.384722222222223","可见光星等V":"15.6","摄影(蓝光)星等B":"16.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"45","详细描述":"","简略描述":"F, vS, E 70°, bM"},{"ID":"11625","标识":"IC3785","M标识":"IC3785","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h47m52.2s","赤经D(J2000)":"12.797833333333333","赤纬(J2000)":"+19h16m30s","赤纬D(J2000)":"19.275","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11626","标识":"IC3786","M标识":"IC3786","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h47m36.8s","赤经D(J2000)":"12.793555555555555","赤纬(J2000)":"+39h2m47s","赤纬D(J2000)":"39.046388888888885","可见光星等V":"15.8","摄影(蓝光)星等B":"16.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"170","详细描述":"","简略描述":"vF, S, iF, p dif"},{"ID":"11627","标识":"IC3787","M标识":"IC3787","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h47m42.6s","赤经D(J2000)":"12.795166666666667","赤纬(J2000)":"+40h37m25s","赤纬D(J2000)":"40.62361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11628","标识":"IC3788","M标识":"IC3788","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h48m7.3s","赤经D(J2000)":"12.802027777777779","赤纬(J2000)":"+18h52m5s","赤纬D(J2000)":"18.868055555555557","可见光星等V":"16.7","摄影(蓝光)星等B":"17.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"15","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"F, S, R, * 7 sp 2'"},{"ID":"11629","标识":"IC3789","M标识":"IC3789","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h48m7s","赤经D(J2000)":"12.801944444444445","赤纬(J2000)":"+20h11m39s","赤纬D(J2000)":"20.194166666666668","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"0","详细描述":"","简略描述":"F, cS, bM, spir, * 13 sp ?'"},{"ID":"11630","标识":"IC3790","M标识":"IC3790","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h48m43s","赤经D(J2000)":"12.811944444444444","赤纬(J2000)":"+9h14m28s","赤纬D(J2000)":"9.24111111111111","可见光星等V":"99","摄影(蓝光)星等B":"14.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, very questionable","简略描述":"eF, vS, ??"},{"ID":"11631","标识":"IC3791","M标识":"IC3791","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"12h47m32s","赤经D(J2000)":"12.792222222222222","赤纬(J2000)":"+54h22m28s","赤纬D(J2000)":"54.37444444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"80","详细描述":"most extremely faint, small, considerably extended","简略描述":"eeF, S, cE"},{"ID":"11632","标识":"IC3792","M标识":"IC3792","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h48m14.7s","赤经D(J2000)":"12.804083333333335","赤纬(J2000)":"+11h4m50s","赤纬D(J2000)":"11.080555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"11633","标识":"IC3793","M标识":"IC3793","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h48m11.8s","赤经D(J2000)":"12.803277777777778","赤纬(J2000)":"+19h9m6s","赤纬D(J2000)":"19.151666666666664","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"80","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11634","标识":"IC3794","M标识":"IC3794","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h48m21.4s","赤经D(J2000)":"12.805944444444446","赤纬(J2000)":"+19h10m10s","赤纬D(J2000)":"19.169444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, spiral, suddenly brighter middle like a star","简略描述":"F, spir, sbM *"},{"ID":"11635","标识":"IC3795","M标识":"IC3795","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h48m5s","赤经D(J2000)":"12.801388888888889","赤纬(J2000)":"+40h43m8s","赤纬D(J2000)":"40.71888888888889","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.5","短轴(分)":"0.1","方位角":"10","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11636","标识":"IC3796","M标识":"IC3796","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h48m27.2s","赤经D(J2000)":"12.807555555555556","赤纬(J2000)":"+20h2m13s","赤纬D(J2000)":"20.036944444444448","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, eS, R, bM, D * 13 np"},{"ID":"11637","标识":"IC3797","M标识":"IC3797","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h48m34.9s","赤经D(J2000)":"12.809694444444444","赤纬(J2000)":"+11h35m52s","赤纬D(J2000)":"11.597777777777779","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, pretty small, very much extended, a little brighter middle","简略描述":"F, pS, vmE, lbM"},{"ID":"11638","标识":"IC3798","M标识":"IC3798","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h48m43.1s","赤经D(J2000)":"12.811972222222224","赤纬(J2000)":"+9h14m29s","赤纬D(J2000)":"9.241388888888888","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small","简略描述":"F, S"},{"ID":"11639","标识":"IC3799","M标识":"IC3799","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h48m59.5s","赤经D(J2000)":"12.816527777777779","赤纬(J2000)":"-14h23m55s","赤纬D(J2000)":"-14.39861111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.4","短轴(分)":"0.3","方位角":"30","详细描述":"","简略描述":"vF, pL, vmE 210°, 1st of 7"},{"ID":"11640","标识":"IC3800","M标识":"IC3800","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h48m27.3s","赤经D(J2000)":"12.807583333333334","赤纬(J2000)":"+36h34m30s","赤纬D(J2000)":"36.575","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11641","标识":"IC3801","M标识":"IC3801","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h49m0.7s","赤经D(J2000)":"12.81686111111111","赤纬(J2000)":"+10h57m21s","赤纬D(J2000)":"10.955833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably bright, pretty small, stellar","简略描述":"cB, pS, stell"},{"ID":"11642","标识":"IC3802","M标识":"IC3802","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h48m42.5s","赤经D(J2000)":"12.811805555555557","赤纬(J2000)":"+38h14m49s","赤纬D(J2000)":"38.246944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11643","标识":"IC3803","M标识":"IC3803","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h49m4.4s","赤经D(J2000)":"12.817888888888888","赤纬(J2000)":"+10h37m56s","赤纬D(J2000)":"10.632222222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large, questionable","简略描述":"eF, pL, ?"},{"ID":"11644","标识":"IC3804","M标识":"IC3804","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h48m45.7s","赤经D(J2000)":"12.812694444444444","赤纬(J2000)":"+35h19m58s","赤纬D(J2000)":"35.33277777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"40","详细描述":"pretty faint, pretty large, extended 40°, brighter middle","简略描述":"pF, pL, E 40°, bM"},{"ID":"11645","标识":"IC3805","M标识":"IC3805","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h48m42.4s","赤经D(J2000)":"12.81177777777778","赤纬(J2000)":"+38h15m15s","赤纬D(J2000)":"38.25416666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"gr of eF neb and st"},{"ID":"11646","标识":"IC3806","M标识":"IC3806","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h48m55.4s","赤经D(J2000)":"12.81538888888889","赤纬(J2000)":"+14h54m26s","赤纬D(J2000)":"14.907222222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"177","详细描述":"very small, round, brighter middle, magnitude 13.5","简略描述":"vS, R, bM, magn 13.5"},{"ID":"11647","标识":"IC3807","M标识":"IC3807","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h49m30s","赤经D(J2000)":"12.825","赤纬(J2000)":"-4h24m6s","赤纬D(J2000)":"-4.401666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, large, much extended, 7th magnitude star to southeast","简略描述":"eeF, L, mE, * 7 sf"},{"ID":"11648","标识":"IC3808","M标识":"IC3808","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h48m58.8s","赤经D(J2000)":"12.816333333333334","赤纬(J2000)":"+40h35m45s","赤纬D(J2000)":"40.59583333333334","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"160","详细描述":"","简略描述":"pF, S, iF, N, * 14 f ?'"},{"ID":"11649","标识":"IC3809","M标识":"IC3809","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h49m4.4s","赤经D(J2000)":"12.817888888888888","赤纬(J2000)":"+36h29m22s","赤纬D(J2000)":"36.489444444444445","可见光星等V":"15.6","摄影(蓝光)星等B":"16.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"170","详细描述":"pretty faint, small, irregular figure, nuclear","简略描述":"pF, S, iF, N"},{"ID":"11650","标识":"IC3810","M标识":"IC3810","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h49m3.2s","赤经D(J2000)":"12.817555555555556","赤纬(J2000)":"+40h38m47s","赤纬D(J2000)":"40.646388888888886","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, considerably small, irregular figure, nuclear","简略描述":"cF, cS, iF, N"},{"ID":"11651","标识":"IC3811","M标识":"IC3811","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h49m25.6s","赤经D(J2000)":"12.823777777777778","赤纬(J2000)":"+21h27m44s","赤纬D(J2000)":"21.46222222222222","可见光星等V":"99","摄影(蓝光)星等B":"15.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, extremely small, irregular figure, nuclear","简略描述":"F, eS, iF, N"},{"ID":"11652","标识":"IC3812","M标识":"IC3812","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h49m53.8s","赤经D(J2000)":"12.83161111111111","赤纬(J2000)":"-6h43m2s","赤纬D(J2000)":"-6.717222222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"3","详细描述":"most extremely faint, extremely small, considerably extended 15°","简略描述":"eeF, eS, cE 15°"},{"ID":"11653","标识":"IC3813","M标识":"IC3813","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h50m2.3s","赤经D(J2000)":"12.833972222222222","赤纬(J2000)":"-25h55m12s","赤纬D(J2000)":"-25.92","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"171","详细描述":"extremely faint, small, extended, 8th magnitude star to northeast","简略描述":"eF, S, E, * 8 nf"},{"ID":"11654","标识":"IC3814","M标识":"IC3814","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h49m32.2s","赤经D(J2000)":"12.825611111111112","赤纬(J2000)":"+20h3m0s","赤纬D(J2000)":"20.05","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"125","详细描述":"very faint, very small, extended 110°","简略描述":"vF, vS, E 110°"},{"ID":"11655","标识":"IC3815","M标识":"IC3815","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h49m38.5s","赤经D(J2000)":"12.827361111111111","赤纬(J2000)":"+19h16m29s","赤纬D(J2000)":"19.27472222222222","可见光星等V":"15.9","摄影(蓝光)星等B":"16.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"160","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"11656","标识":"IC3816","M标识":"IC3816","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h49m28.4s","赤经D(J2000)":"12.824555555555555","赤纬(J2000)":"+37h13m51s","赤纬D(J2000)":"37.23083333333334","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"pretty faint, very small, round, brighter middle","简略描述":"pF, vS, R, bM"},{"ID":"11657","标识":"IC3817","M标识":"IC3817","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h49m43.4s","赤经D(J2000)":"12.828722222222222","赤纬(J2000)":"+22h49m54s","赤纬D(J2000)":"22.831666666666667","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"40","详细描述":"","简略描述":"neb * 15"},{"ID":"11658","标识":"IC3818","M标识":"IC3818","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h49m46.8s","赤经D(J2000)":"12.829666666666666","赤纬(J2000)":"+21h45m7s","赤纬D(J2000)":"21.751944444444444","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"178","详细描述":"","简略描述":"vF, S, iF, * 14 p"},{"ID":"11659","标识":"IC3819","M标识":"IC3819","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h50m16.3s","赤经D(J2000)":"12.837861111111112","赤纬(J2000)":"-14h22m48s","赤纬D(J2000)":"-14.38","可见光星等V":"15.4","摄影(蓝光)星等B":"16.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"extremely faint, very small, 2nd of 7","简略描述":"eF, vS, 2nd of 7"},{"ID":"11660","标识":"IC3820","M标识":"IC3820","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h49m39s","赤经D(J2000)":"12.8275","赤纬(J2000)":"+37h7m2s","赤纬D(J2000)":"37.117222222222225","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11661","标识":"IC3821","M标识":"IC3821","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h49m57.6s","赤经D(J2000)":"12.832666666666666","赤纬(J2000)":"+20h58m7s","赤纬D(J2000)":"20.96861111111111","可见光星等V":"99","摄影(蓝光)星等B":"15.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11662","标识":"IC3822","M标识":"IC3822","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h50m22.6s","赤经D(J2000)":"12.839611111111111","赤纬(J2000)":"-14h19m21s","赤纬D(J2000)":"-14.3225","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.1","方位角":"33","详细描述":"extremely faint, very small, 3rd of 7","简略描述":"eF, vS, 3rd of 7"},{"ID":"11663","标识":"IC3823","M标识":"IC3823","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h49m44.3s","赤经D(J2000)":"12.828972222222221","赤纬(J2000)":"+40h53m5s","赤纬D(J2000)":"40.88472222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11664","标识":"IC3824","M标识":"IC3824","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h50m30.5s","赤经D(J2000)":"12.841805555555556","赤纬(J2000)":"-14h25m31s","赤纬D(J2000)":"-14.425277777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"0","详细描述":"extremely faint, very small, 4th of 7","简略描述":"eF, vS, 4th of 7"},{"ID":"11665","标识":"IC3825","M标识":"IC3825","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h50m37s","赤经D(J2000)":"12.843611111111112","赤纬(J2000)":"-14h28m58s","赤纬D(J2000)":"-14.482777777777779","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"5","详细描述":"most extremely faint, very small, possibly a 14th magnitude star, 5th of 7","简略描述":"eeF, vS, ? * 14, 5th of 7"},{"ID":"11666","标识":"IC3826","M标识":"IC3826","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h50m39.8s","赤经D(J2000)":"12.84438888888889","赤纬(J2000)":"-9h1m51s","赤纬D(J2000)":"-9.030833333333334","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.9","短轴(分)":"0.8","方位角":"177","详细描述":"very faint, very small, much brighter middle","简略描述":"vF, vS, mbM"},{"ID":"11667","标识":"IC3827","M标识":"IC3827","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h50m51.8s","赤经D(J2000)":"12.847722222222222","赤纬(J2000)":"-14h29m30s","赤纬D(J2000)":"-14.491666666666665","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"60","详细描述":"","简略描述":"F, vS, R, * 11 s 0'.6, 6th of 7"},{"ID":"11668","标识":"IC3828","M标识":"IC3828","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h50m20.6s","赤经D(J2000)":"12.839055555555555","赤纬(J2000)":"+37h56m58s","赤纬D(J2000)":"37.94944444444444","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"50","详细描述":"faint, very small, irregular figure, possibly nebulous star","简略描述":"F, vS, iF, ? neb *"},{"ID":"11669","标识":"IC3829","M标识":"IC3829","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h51m32.5s","赤经D(J2000)":"12.859027777777778","赤纬(J2000)":"-27h46m59s","赤纬D(J2000)":"-27.783055555555556","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.9","短轴(分)":"1.1","方位角":"115","详细描述":"","简略描述":"B, S, lE, * 9 sf [? 119° 14'.5]"},{"ID":"11670","标识":"IC3830","M标识":"IC3830","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h50m51.3s","赤经D(J2000)":"12.847583333333334","赤纬(J2000)":"+19h50m10s","赤纬D(J2000)":"19.83611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, brighter middle, spiral","简略描述":"vF, eS, bM, spir"},{"ID":"11671","标识":"IC3831","M标识":"IC3831","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h51m18.5s","赤经D(J2000)":"12.855138888888888","赤纬(J2000)":"-14h34m24s","赤纬D(J2000)":"-14.573333333333332","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"151","详细描述":"faint, very small, round, brighter middle, 7th of 7","简略描述":"F, vS, R, bM, 7th of 7"},{"ID":"11672","标识":"IC3832","M标识":"IC3832","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h50m49s","赤经D(J2000)":"12.846944444444444","赤纬(J2000)":"+39h48m36s","赤纬D(J2000)":"39.809999999999995","可见光星等V":"15.6","摄影(蓝光)星等B":"16.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"F, S, iF, p dif"},{"ID":"11673","标识":"IC3833","M标识":"IC3833","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h51m32.3s","赤经D(J2000)":"12.858972222222222","赤纬(J2000)":"-13h19m48s","赤纬D(J2000)":"-13.33","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"35","详细描述":"very faint, small, irregular figure, brighter middle","简略描述":"vF, S, iF, bM"},{"ID":"11674","标识":"IC3834","M标识":"IC3834","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h51m32.3s","赤经D(J2000)":"12.858972222222222","赤纬(J2000)":"-14h13m15s","赤纬D(J2000)":"-14.220833333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"85","详细描述":"","简略描述":"vF, lbM, * 13 p 0'.8"},{"ID":"11675","标识":"IC3835","M标识":"IC3835","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h50m55.8s","赤经D(J2000)":"12.848833333333333","赤纬(J2000)":"+40h11m12s","赤纬D(J2000)":"40.18666666666666","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"100","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11676","标识":"IC3836","M标识":"IC3836","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h51m3.6s","赤经D(J2000)":"12.850999999999999","赤纬(J2000)":"+40h11m2s","赤纬D(J2000)":"40.18388888888889","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"90","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11677","标识":"IC3837","M标识":"IC3837","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h51m33s","赤经D(J2000)":"12.859166666666667","赤纬(J2000)":"+19h43m23s","赤纬D(J2000)":"19.723055555555554","可见光星等V":"16.4","摄影(蓝光)星等B":"17.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"80","详细描述":"extremely faint, very small, brighter middle, spiral","简略描述":"eF, vS, bM, spir"},{"ID":"11678","标识":"IC3838","M标识":"IC3838","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"乌鸦座","星座(En)":"CRV","赤经(J2000)":"12h50m51.8s","赤经D(J2000)":"12.847722222222222","赤纬(J2000)":"-14h29m30s","赤纬D(J2000)":"-14.491666666666665","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"60","详细描述":"","简略描述":"vF, S, lbM, * 13 s 0'.8"},{"ID":"11679","标识":"IC3839","M标识":"IC3839","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h51m46.2s","赤经D(J2000)":"12.862833333333333","赤纬(J2000)":"+20h25m17s","赤纬D(J2000)":"20.42138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, brighter middle, spiral","简略描述":"vF, S, bM, spir"},{"ID":"11680","标识":"IC3840","M标识":"IC3840","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm\/I","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h51m46.1s","赤经D(J2000)":"12.862805555555555","赤纬(J2000)":"+21h44m7s","赤纬D(J2000)":"21.735277777777778","可见光星等V":"16.3","摄影(蓝光)星等B":"16.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"15.3","长轴(分)":"1","短轴(分)":"0.2","方位角":"45","详细描述":"","简略描述":"vF, S, iF, * inv sp"},{"ID":"11681","标识":"IC3841","M标识":"IC3841","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h51m50.6s","赤经D(J2000)":"12.864055555555556","赤纬(J2000)":"+22h20m39s","赤纬D(J2000)":"22.344166666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, questionable","简略描述":"vF, vS, iF, ?"},{"ID":"11682","标识":"IC3842","M标识":"IC3842","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h51m35.8s","赤经D(J2000)":"12.859944444444444","赤纬(J2000)":"+40h22m19s","赤纬D(J2000)":"40.371944444444445","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"","简略描述":"vF, cS, dif, neb * np ?'"},{"ID":"11683","标识":"IC3843","M标识":"IC3843","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h51m39s","赤经D(J2000)":"12.860833333333334","赤纬(J2000)":"+39h0m3s","赤纬D(J2000)":"39.00083333333333","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"0","详细描述":"faint, very small, much extended 160°, among 3 stars","简略描述":"F, vS, mE 160°, am 3 st"},{"ID":"11684","标识":"IC3844","M标识":"IC3844","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h52m6.4s","赤经D(J2000)":"12.868444444444444","赤纬(J2000)":"+39h49m7s","赤纬D(J2000)":"39.81861111111112","可见光星等V":"15.5","摄影(蓝光)星等B":"16.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"30","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"11685","标识":"IC3845","M标识":"IC3845","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h52m8.7s","赤经D(J2000)":"12.869083333333334","赤纬(J2000)":"+38h37m7s","赤纬D(J2000)":"38.618611111111115","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"11686","标识":"IC3846","M标识":"IC3846","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h52m39s","赤经D(J2000)":"12.877500000000001","赤纬(J2000)":"+13h38m50s","赤纬D(J2000)":"13.647222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"B, pS, N = * 9.2"},{"ID":"11687","标识":"IC3847","M标识":"IC3847","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h52m33.7s","赤经D(J2000)":"12.876027777777779","赤纬(J2000)":"+22h3m55s","赤纬D(J2000)":"22.06527777777778","可见光星等V":"17.1","摄影(蓝光)星等B":"17.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"130","详细描述":"","简略描述":"vF.vS, iF, neb * 15 sp"},{"ID":"11688","标识":"IC3848","M标识":"IC3848","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h52m40.5s","赤经D(J2000)":"12.877916666666668","赤纬(J2000)":"+21h24m53s","赤纬D(J2000)":"21.41472222222222","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, extended 120°","简略描述":"vF, vS, E 120°"},{"ID":"11689","标识":"IC3849","M标识":"IC3849","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h52m37s","赤经D(J2000)":"12.876944444444446","赤纬(J2000)":"+40h46m20s","赤纬D(J2000)":"40.77222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, vS, iF, N, * 14 nf"},{"ID":"11690","标识":"IC3850","M标识":"IC3850","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h52m39.6s","赤经D(J2000)":"12.877666666666666","赤纬(J2000)":"+40h6m11s","赤纬D(J2000)":"40.10305555555556","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1","短轴(分)":"0.8","方位角":"45","详细描述":"pretty faint, very small, irregular figure, nuclear","简略描述":"pF, vS, iF, N"},{"ID":"11691","标识":"IC3851","M标识":"IC3851","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h53m4.7s","赤经D(J2000)":"12.884638888888889","赤纬(J2000)":"+21h54m34s","赤纬D(J2000)":"21.909444444444443","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, vS, iF, ?, * 12 s"},{"ID":"11692","标识":"IC3852","M标识":"IC3852","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h53m3.2s","赤经D(J2000)":"12.884222222222222","赤纬(J2000)":"+35h46m23s","赤纬D(J2000)":"35.77305555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"60","详细描述":"","简略描述":"F, pS, E 60°, bM"},{"ID":"11693","标识":"IC3853","M标识":"IC3853","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h53m10.5s","赤经D(J2000)":"12.886249999999999","赤纬(J2000)":"+38h49m46s","赤纬D(J2000)":"38.82944444444445","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"0","详细描述":"","简略描述":"eF, S, p dif"},{"ID":"11694","标识":"IC3854","M标识":"IC3854","拓展名":"","组件":"2","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h53m14.5s","赤经D(J2000)":"12.88736111111111","赤纬(J2000)":"+40h50m55s","赤纬D(J2000)":"40.84861111111111","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, pretty large, diffuse, difficult, 15th magnitude star to east","简略描述":"vF, pL, dif, diffic, * 15 f"},{"ID":"11695","标识":"IC3855","M标识":"IC3855","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h53m22.6s","赤经D(J2000)":"12.88961111111111","赤纬(J2000)":"+36h47m11s","赤纬D(J2000)":"36.78638888888889","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"105","详细描述":"pretty faint, extremely small, round, brighter middle","简略描述":"pF, eS, R, bM"},{"ID":"11696","标识":"IC3856","M标识":"IC3856","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h53m45.2s","赤经D(J2000)":"12.895888888888889","赤纬(J2000)":"+20h5m36s","赤纬D(J2000)":"20.093333333333334","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"125","详细描述":"","简略描述":"vF, S, iF, * 15 inv p"},{"ID":"11697","标识":"IC3857","M标识":"IC3857","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h53m56.1s","赤经D(J2000)":"12.898916666666667","赤纬(J2000)":"+19h36m25s","赤纬D(J2000)":"19.606944444444444","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"100","详细描述":"extremely faint, very small, round, brighter middle, 2 extremely faint stars near","简略描述":"eF, vS, R, bM, 2 eF st nr"},{"ID":"11698","标识":"IC3858","M标识":"IC3858","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h53m55.6s","赤经D(J2000)":"12.898777777777777","赤纬(J2000)":"+20h47m20s","赤纬D(J2000)":"20.78888888888889","可见光星等V":"99","摄影(蓝光)星等B":"14.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, vS, R, bM, neb * 14 & * 13 sp"},{"ID":"11699","标识":"IC3859","M标识":"IC3859","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h54m19.9s","赤经D(J2000)":"12.905527777777777","赤纬(J2000)":"-9h7m2s","赤纬D(J2000)":"-9.117222222222223","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"1","短轴(分)":"0.3","方位角":"165","详细描述":"","简略描述":"vF, ? eF Cl"},{"ID":"11700","标识":"IC3860","M标识":"IC3860","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m7.2s","赤经D(J2000)":"12.902000000000001","赤纬(J2000)":"+19h17m58s","赤纬D(J2000)":"19.299444444444447","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11701","标识":"IC3861","M标识":"IC3861","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h53m50.8s","赤经D(J2000)":"12.897444444444444","赤纬(J2000)":"+38h16m57s","赤纬D(J2000)":"38.2825","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"120","详细描述":"faint, extremely small, possibly nebulous star","简略描述":"F, eS, ? neb *"},{"ID":"11702","标识":"IC3862","M标识":"IC3862","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h53m53.2s","赤经D(J2000)":"12.89811111111111","赤纬(J2000)":"+36h5m12s","赤纬D(J2000)":"36.086666666666666","可见光星等V":"14.5","摄影(蓝光)星等B":"15.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"157","详细描述":"very faint, pretty small, diffuse, 15th magnitude star attached","简略描述":"vF, pS, dif, * 15 att"},{"ID":"11703","标识":"IC3863","M标识":"IC3863","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h53m53.9s","赤经D(J2000)":"12.898305555555556","赤纬(J2000)":"+38h28m51s","赤纬D(J2000)":"38.48083333333334","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"85","详细描述":"faint, small, irregular figure, 14th magnitude star attached","简略描述":"F, S, iF, * 14 att"},{"ID":"11704","标识":"IC3864","M标识":"IC3864","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m12.3s","赤经D(J2000)":"12.903416666666667","赤纬(J2000)":"+18h57m5s","赤纬D(J2000)":"18.95138888888889","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"100","详细描述":"","简略描述":"vF, vS, iF, * 14 s 30\", many other neb about"},{"ID":"11705","标识":"IC3865","M标识":"IC3865","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m14.2s","赤经D(J2000)":"12.903944444444445","赤纬(J2000)":"+18h52m7s","赤纬D(J2000)":"18.86861111111111","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11706","标识":"IC3866","M标识":"IC3866","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m15.5s","赤经D(J2000)":"12.904305555555556","赤纬(J2000)":"+22h21m51s","赤纬D(J2000)":"22.36416666666667","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, small, irregular figure, nuclear, possible cluster","简略描述":"vF, S, iF, N, ? Cl"},{"ID":"11707","标识":"IC3867","M标识":"IC3867","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m19.5s","赤经D(J2000)":"12.905416666666667","赤纬(J2000)":"+18h56m32s","赤纬D(J2000)":"18.942222222222224","可见光星等V":"15.6","摄影(蓝光)星等B":"16.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"100","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"11708","标识":"IC3868","M标识":"IC3868","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m20.9s","赤经D(J2000)":"12.905805555555556","赤纬(J2000)":"+18h59m26s","赤纬D(J2000)":"18.990555555555556","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"60","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11709","标识":"IC3869","M标识":"IC3869","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m21.2s","赤经D(J2000)":"12.905888888888889","赤纬(J2000)":"+18h58m18s","赤纬D(J2000)":"18.971666666666664","可见光星等V":"16.8","摄影(蓝光)星等B":"17.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"60","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11710","标识":"IC3870","M标识":"IC3870","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m21.6s","赤经D(J2000)":"12.906","赤纬(J2000)":"+22h22m52s","赤纬D(J2000)":"22.38111111111111","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"","简略描述":"vF, S, iF, p dif"},{"ID":"11711","标识":"IC3871","M标识":"IC3871","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m25.7s","赤经D(J2000)":"12.90713888888889","赤纬(J2000)":"+18h55m44s","赤纬D(J2000)":"18.92888888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11712","标识":"IC3872","M标识":"IC3872","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m30.5s","赤经D(J2000)":"12.908472222222223","赤纬(J2000)":"+18h57m46s","赤纬D(J2000)":"18.962777777777777","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11713","标识":"IC3873","M标识":"IC3873","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m31.6s","赤经D(J2000)":"12.908777777777779","赤纬(J2000)":"+18h52m57s","赤纬D(J2000)":"18.8825","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"120","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11714","标识":"IC3874","M标识":"IC3874","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m34.4s","赤经D(J2000)":"12.909555555555556","赤纬(J2000)":"+18h57m27s","赤纬D(J2000)":"18.9575","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"","简略描述":"vF, vS, iF, * 15 sf 20\""},{"ID":"11715","标识":"IC3875","M标识":"IC3875","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m37.2s","赤经D(J2000)":"12.910333333333334","赤纬(J2000)":"+22h2m9s","赤纬D(J2000)":"22.035833333333336","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"","简略描述":"vF, S, iF, N, * 14 p"},{"ID":"11716","标识":"IC3876","M标识":"IC3876","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m48.4s","赤经D(J2000)":"12.913444444444444","赤纬(J2000)":"+19h0m55s","赤纬D(J2000)":"19.01527777777778","可见光星等V":"16.7","摄影(蓝光)星等B":"17.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11717","标识":"IC3877","M标识":"IC3877","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m48.5s","赤经D(J2000)":"12.913472222222223","赤纬(J2000)":"+19h10m35s","赤纬D(J2000)":"19.17638888888889","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"3.7","短轴(分)":"0.9","方位角":"30","详细描述":"pretty faint, considerably large, extended 20°, brighter middle","简略描述":"pF, cL, E 20°, bM"},{"ID":"11718","标识":"IC3878","M标识":"IC3878","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h54m29.5s","赤经D(J2000)":"12.908194444444446","赤纬(J2000)":"+40h4m11s","赤纬D(J2000)":"40.069722222222225","可见光星等V":"99","摄影(蓝光)星等B":"15.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, brighter middle, spiral","简略描述":"vF, vS, bM, spir"},{"ID":"11719","标识":"IC3879","M标识":"IC3879","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h54m32s","赤经D(J2000)":"12.908888888888889","赤纬(J2000)":"+38h37m43s","赤纬D(J2000)":"38.62861111111111","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"5","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"11720","标识":"IC3880","M标识":"IC3880","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m47.9s","赤经D(J2000)":"12.913305555555556","赤纬(J2000)":"+22h30m10s","赤纬D(J2000)":"22.502777777777776","可见光星等V":"16.8","摄影(蓝光)星等B":"17.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"165","详细描述":"","简略描述":"vF, S, v iF"},{"ID":"11721","标识":"IC3881","M标识":"IC3881","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m54s","赤经D(J2000)":"12.915000000000001","赤纬(J2000)":"+19h7m4s","赤纬D(J2000)":"19.11777777777778","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11722","标识":"IC3882","M标识":"IC3882","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m53.7s","赤经D(J2000)":"12.914916666666667","赤纬(J2000)":"+22h34m30s","赤纬D(J2000)":"22.575","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"155","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11723","标识":"IC3883","M标识":"IC3883","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h55m13.5s","赤经D(J2000)":"12.920416666666666","赤纬(J2000)":"-8h7m13s","赤纬D(J2000)":"-8.120277777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"12","详细描述":"extremely faint, very small, much extended 5°","简略描述":"eF, vS, mE 5°"},{"ID":"11724","标识":"IC3884","M标识":"IC3884","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h54m57.7s","赤经D(J2000)":"12.916027777777778","赤纬(J2000)":"+19h40m54s","赤纬D(J2000)":"19.68166666666667","可见光星等V":"16.3","摄影(蓝光)星等B":"17.3","B-V":"1","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, round, brighter middle, 14th magnitude star to south","简略描述":"F, S, R, bM, * 14 s"},{"ID":"11725","标识":"IC3885","M标识":"IC3885","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h54m42.7s","赤经D(J2000)":"12.911861111111111","赤纬(J2000)":"+37h9m16s","赤纬D(J2000)":"37.154444444444444","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, round, nebulous star","简略描述":"F, S, R, neb *"},{"ID":"11726","标识":"IC3886","M标识":"IC3886","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h55m0.3s","赤经D(J2000)":"12.916749999999999","赤纬(J2000)":"+19h0m41s","赤纬D(J2000)":"19.011388888888888","可见光星等V":"17.5","摄影(蓝光)星等B":"18.5","B-V":"1","表面亮度(mag\/arcmin2)":"15","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"11727","标识":"IC3887","M标识":"IC3887","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h54m43.8s","赤经D(J2000)":"12.912166666666668","赤纬(J2000)":"+40h18m18s","赤纬D(J2000)":"40.305","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11728","标识":"IC3888","M标识":"IC3888","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h54m46.3s","赤经D(J2000)":"12.912861111111111","赤纬(J2000)":"+39h34m19s","赤纬D(J2000)":"39.57194444444445","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.2","方位角":"50","详细描述":"","简略描述":"F, S, lE 60°, N"},{"ID":"11729","标识":"IC3889","M标识":"IC3889","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h54m50.8s","赤经D(J2000)":"12.914111111111112","赤纬(J2000)":"+36h1m0s","赤纬D(J2000)":"36.016666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, difficult","简略描述":"vF, S, iF, diffic"},{"ID":"11730","标识":"IC3890","M标识":"IC3890","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h54m50.1s","赤经D(J2000)":"12.913916666666667","赤纬(J2000)":"+37h11m7s","赤纬D(J2000)":"37.18527777777778","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"15","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"11731","标识":"IC3891","M标识":"IC3891","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h54m58.3s","赤经D(J2000)":"12.916194444444445","赤纬(J2000)":"+36h3m9s","赤纬D(J2000)":"36.052499999999995","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"100","详细描述":"very faint, small, irregular figure, difficult","简略描述":"vF, S, iF, diffic"},{"ID":"11732","标识":"IC3892","M标识":"IC3892","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h55m6s","赤经D(J2000)":"12.918333333333333","赤纬(J2000)":"+39h13m23s","赤纬D(J2000)":"39.223055555555554","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"175","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"11733","标识":"IC3893","M标识":"IC3893","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h55m7.6s","赤经D(J2000)":"12.918777777777777","赤纬(J2000)":"+38h37m28s","赤纬D(J2000)":"38.62444444444444","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"70","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"11734","标识":"IC3894","M标识":"IC3894","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h55m27.2s","赤经D(J2000)":"12.924222222222221","赤纬(J2000)":"+19h4m6s","赤纬D(J2000)":"19.06833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11735","标识":"IC3895","M标识":"IC3895","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h55m9.3s","赤经D(J2000)":"12.91925","赤纬(J2000)":"+39h12m13s","赤纬D(J2000)":"39.203611111111115","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"","简略描述":"F, cS, iF, N, * 15 nf conn"},{"ID":"11736","标识":"IC3896","M标识":"IC3896","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"12h56m42.8s","赤经D(J2000)":"12.945222222222222","赤纬(J2000)":"-50h20m50s","赤纬D(J2000)":"-50.34722222222222","可见光星等V":"10.9","摄影(蓝光)星等B":"12.1","B-V":"1.2","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2.5","短轴(分)":"1.8","方位角":"10","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"11737","标识":"IC3897","M标识":"IC3897","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h55m19s","赤经D(J2000)":"12.921944444444444","赤纬(J2000)":"+39h40m23s","赤纬D(J2000)":"39.67305555555555","可见光星等V":"15.6","摄影(蓝光)星等B":"16.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"15","详细描述":"faint, very small, extended 40°, brighter middle","简略描述":"F, vS, E 40°, bM"},{"ID":"11738","标识":"IC3898","M标识":"IC3898","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h55m23.8s","赤经D(J2000)":"12.923277777777777","赤纬(J2000)":"+37h35m0s","赤纬D(J2000)":"37.583333333333336","可见光星等V":"16.2","摄影(蓝光)星等B":"17.2","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"170","详细描述":"","简略描述":"eF, vS, v diffic, att eF *"},{"ID":"11739","标识":"IC3899","M标识":"IC3899","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h55m40.6s","赤经D(J2000)":"12.927944444444444","赤纬(J2000)":"+20h38m13s","赤纬D(J2000)":"20.636944444444445","可见光星等V":"16.7","摄影(蓝光)星等B":"17.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"45","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"11740","标识":"IC3900","M标识":"IC3900","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h55m41.2s","赤经D(J2000)":"12.92811111111111","赤纬(J2000)":"+27h15m5s","赤纬D(J2000)":"27.25138888888889","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"177","详细描述":"pretty bright, small, brighter middle and nucleus","简略描述":"pB, S, bMN"},{"ID":"11741","标识":"IC3901","M标识":"IC3901","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h55m50.9s","赤经D(J2000)":"12.930805555555555","赤纬(J2000)":"+21h56m17s","赤纬D(J2000)":"21.938055555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, extended 95°","简略描述":"eF, vS, E 95°"},{"ID":"11742","标识":"IC3902","M标识":"IC3902","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h55m38.8s","赤经D(J2000)":"12.927444444444443","赤纬(J2000)":"+35h59m44s","赤纬D(J2000)":"35.995555555555555","可见光星等V":"99","摄影(蓝光)星等B":"14.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, nebulous star","简略描述":"pF, vS, neb *"},{"ID":"11743","标识":"IC3903","M标识":"IC3903","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h55m38.6s","赤经D(J2000)":"12.927388888888888","赤纬(J2000)":"+40h24m0s","赤纬D(J2000)":"40.4","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11744","标识":"IC3904","M标识":"IC3904","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h55m45.5s","赤经D(J2000)":"12.929305555555555","赤纬(J2000)":"+36h17m36s","赤纬D(J2000)":"36.29333333333333","可见光星等V":"15.1","摄影(蓝光)星等B":"15.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"72","详细描述":"faint, small, brighter middle, spiral","简略描述":"F, S, bM, spir"},{"ID":"11745","标识":"IC3905","M标识":"IC3905","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h56m8.7s","赤经D(J2000)":"12.93575","赤纬(J2000)":"+19h51m10s","赤纬D(J2000)":"19.852777777777778","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"110","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"11746","标识":"IC3906","M标识":"IC3906","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h55m51s","赤经D(J2000)":"12.930833333333332","赤纬(J2000)":"+40h27m50s","赤纬D(J2000)":"40.46388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"11747","标识":"IC3907","M标识":"IC3907","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h56m18.3s","赤经D(J2000)":"12.938416666666667","赤纬(J2000)":"+18h47m3s","赤纬D(J2000)":"18.784166666666668","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"0","详细描述":"","简略描述":"eF, S, iF, N, * 13 sf 1'"},{"ID":"11748","标识":"IC3908","M标识":"IC3908","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h56m40.3s","赤经D(J2000)":"12.944527777777777","赤纬(J2000)":"-7h33m38s","赤纬D(J2000)":"-7.560555555555555","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"171","详细描述":"","简略描述":"eF, eS, cE 160°, ? F trail"},{"ID":"11749","标识":"IC3909","M标识":"IC3909","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h56m2.7s","赤经D(J2000)":"12.934083333333334","赤纬(J2000)":"+40h23m7s","赤纬D(J2000)":"40.38527777777778","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"70","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11750","标识":"IC3910","M标识":"IC3910","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h56m4.8s","赤经D(J2000)":"12.934666666666667","赤纬(J2000)":"+39h43m13s","赤纬D(J2000)":"39.72027777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, vS, R, bM, ? neb D *"},{"ID":"11751","标识":"IC3911","M标识":"IC3911","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h56m9.2s","赤经D(J2000)":"12.93588888888889","赤纬(J2000)":"+35h38m13s","赤纬D(J2000)":"35.636944444444445","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, pretty small, diffuse, difficult","简略描述":"vF, pS, dif, diffic"},{"ID":"11752","标识":"IC3912","M标识":"IC3912","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h56m7.7s","赤经D(J2000)":"12.935472222222222","赤纬(J2000)":"+39h54m38s","赤纬D(J2000)":"39.910555555555554","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11753","标识":"IC3913","M标识":"IC3913","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h56m28.8s","赤经D(J2000)":"12.941333333333333","赤纬(J2000)":"+27h17m27s","赤纬D(J2000)":"27.290833333333335","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"11754","标识":"IC3914","M标识":"IC3914","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h56m22.7s","赤经D(J2000)":"12.939638888888888","赤纬(J2000)":"+36h21m38s","赤纬D(J2000)":"36.36055555555556","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, very small, irregular figure, nuclear","简略描述":"eF, vS, iF, N"},{"ID":"11755","标识":"IC3915","M标识":"IC3915","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h56m39.5s","赤经D(J2000)":"12.944305555555555","赤纬(J2000)":"+20h7m16s","赤纬D(J2000)":"20.121111111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, vS, spir, * 14 inv s"},{"ID":"11756","标识":"IC3916","M标识":"IC3916","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h56m31.2s","赤经D(J2000)":"12.942","赤纬(J2000)":"+38h36m51s","赤纬D(J2000)":"38.61416666666667","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"135","详细描述":"","简略描述":"pF, S, bM, spir ?"},{"ID":"11757","标识":"IC3917","M标识":"IC3917","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h56m51.6s","赤经D(J2000)":"12.947666666666667","赤纬(J2000)":"+22h0m22s","赤纬D(J2000)":"22.00611111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, irregular figure, nuclear","简略描述":"eF, vS, iF, N"},{"ID":"11758","标识":"IC3918","M标识":"IC3918","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h56m53.5s","赤经D(J2000)":"12.948194444444445","赤纬(J2000)":"+22h22m24s","赤纬D(J2000)":"22.373333333333335","可见光星等V":"14.9","摄影(蓝光)星等B":"15.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"0","详细描述":"pretty faint, very small, brighter middle, spiral","简略描述":"pF, vS, bM, spir"},{"ID":"11759","标识":"IC3919","M标识":"IC3919","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h56m48.7s","赤经D(J2000)":"12.946861111111112","赤纬(J2000)":"+38h35m19s","赤纬D(J2000)":"38.58861111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"130","详细描述":"faint, very small, brighter middle, spiral","简略描述":"F, vS, bM, spir"},{"ID":"11760","标识":"IC3920","M标识":"IC3920","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h56m50s","赤经D(J2000)":"12.947222222222223","赤纬(J2000)":"+39h57m33s","赤纬D(J2000)":"39.95916666666667","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"10","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11761","标识":"IC3921","M标识":"IC3921","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h56m56.7s","赤经D(J2000)":"12.949083333333334","赤纬(J2000)":"+38h38m24s","赤纬D(J2000)":"38.64","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"80","详细描述":"faint, very small, brighter middle, spiral","简略描述":"F, vS, bM, spir"},{"ID":"11762","标识":"IC3922","M标识":"IC3922","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h56m57.5s","赤经D(J2000)":"12.949305555555556","赤纬(J2000)":"+38h28m43s","赤纬D(J2000)":"38.478611111111114","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.2","方位角":"95","详细描述":"very faint, very small, irregular figure","简略描述":"vF, vS, iF"},{"ID":"11763","标识":"IC3923","M标识":"IC3923","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h57m0.9s","赤经D(J2000)":"12.950249999999999","赤纬(J2000)":"+37h57m23s","赤纬D(J2000)":"37.95638888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, extremely small, extended, brighter middle","简略描述":"pF, eS, E, bM"},{"ID":"11764","标识":"IC3924","M标识":"IC3924","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h57m24.9s","赤经D(J2000)":"12.956916666666666","赤纬(J2000)":"+18h46m54s","赤纬D(J2000)":"18.781666666666666","可见光星等V":"16.5","摄影(蓝光)星等B":"17.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.1","短轴(分)":"0.1","方位角":"","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"11765","标识":"IC3925","M标识":"IC3925","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h57m15.4s","赤经D(J2000)":"12.954277777777778","赤纬(J2000)":"+36h25m20s","赤纬D(J2000)":"36.42222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"pF, vS, E 60°, bM"},{"ID":"11766","标识":"IC3926","M标识":"IC3926","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h57m30.4s","赤经D(J2000)":"12.958444444444444","赤纬(J2000)":"+22h48m44s","赤纬D(J2000)":"22.81222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11767","标识":"IC3927","M标识":"IC3927","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"12h58m10.4s","赤经D(J2000)":"12.969555555555555","赤纬(J2000)":"-22h52m34s","赤纬D(J2000)":"-22.87611111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"162","详细描述":"very faint, very small, 10th magnitude star to northwest, 7th magnitude star 10 arcmin to south","简略描述":"vF, vS, * 10 np, * 7 s 10'"},{"ID":"11768","标识":"IC3928","M标识":"IC3928","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h57m18.3s","赤经D(J2000)":"12.955083333333333","赤纬(J2000)":"+40h26m30s","赤纬D(J2000)":"40.44166666666666","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"160","详细描述":"very faint, pretty large, diffuse, 13th magnitude star attached","简略描述":"vF, pL, dif, * 13 att"},{"ID":"11769","标识":"IC3929","M标识":"IC3929","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h57m41s","赤经D(J2000)":"12.961388888888887","赤纬(J2000)":"+20h23m51s","赤纬D(J2000)":"20.3975","可见光星等V":"15.8","摄影(蓝光)星等B":"16.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, very small, brighter middle, spiral","简略描述":"vF, vS, bM, spir"},{"ID":"11770","标识":"IC3930","M标识":"IC3930","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h57m22.4s","赤经D(J2000)":"12.956222222222221","赤纬(J2000)":"+38h45m53s","赤纬D(J2000)":"38.764722222222225","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"10","详细描述":"faint, very small, nuclear, possibly nebulous star","简略描述":"F, vS, N, ? neb *"},{"ID":"11771","标识":"IC3931","M标识":"IC3931","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h57m57.2s","赤经D(J2000)":"12.965888888888887","赤纬(J2000)":"+19h37m2s","赤纬D(J2000)":"19.61722222222222","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"10","详细描述":"considerably faint, small, irregular figure, nuclear","简略描述":"cF, S, iF, N"},{"ID":"11772","标识":"IC3932","M标识":"IC3932","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m5.6s","赤经D(J2000)":"12.968222222222222","赤纬(J2000)":"+19h35m5s","赤纬D(J2000)":"19.584722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, eS, R bM"},{"ID":"11773","标识":"IC3933","M标识":"IC3933","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h57m57.1s","赤经D(J2000)":"12.96586111111111","赤纬(J2000)":"+36h38m43s","赤纬D(J2000)":"36.64527777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11774","标识":"IC3934","M标识":"IC3934","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m17.5s","赤经D(J2000)":"12.971527777777778","赤纬(J2000)":"+18h49m30s","赤纬D(J2000)":"18.825","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"11775","标识":"IC3935","M标识":"IC3935","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m12.7s","赤经D(J2000)":"12.970194444444445","赤纬(J2000)":"+26h23m47s","赤纬D(J2000)":"26.39638888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.4","方位角":"175","详细描述":"","简略描述":"pB, S, R, N, r, I.C. 838 f"},{"ID":"11776","标识":"IC3936","M标识":"IC3936","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m20.2s","赤经D(J2000)":"12.972277777777778","赤纬(J2000)":"+19h3m28s","赤纬D(J2000)":"19.05777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"Neb * 13, * 12.5 f 1'"},{"ID":"11777","标识":"IC3937","M标识":"IC3937","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m24.7s","赤经D(J2000)":"12.973527777777777","赤纬(J2000)":"+18h49m6s","赤纬D(J2000)":"18.81833333333333","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11778","标识":"IC3938","M标识":"IC3938","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m25.7s","赤经D(J2000)":"12.973805555555556","赤纬(J2000)":"+18h45m9s","赤纬D(J2000)":"18.7525","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, round, brighter middle, 13th magnitude star to southwest","简略描述":"eF, vS, R, bM, * 13 sp"},{"ID":"11779","标识":"IC3939","M标识":"IC3939","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m28s","赤经D(J2000)":"12.974444444444444","赤纬(J2000)":"+18h45m6s","赤纬D(J2000)":"18.751666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, brighter middle, spiral","简略描述":"vF, eS, bM, spir"},{"ID":"11780","标识":"IC3940","M标识":"IC3940","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h58m16.4s","赤经D(J2000)":"12.971222222222222","赤纬(J2000)":"+35h50m22s","赤纬D(J2000)":"35.839444444444446","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"140","详细描述":"considerably faint, very small, round, brighter middle","简略描述":"cF, vS, R, bM"},{"ID":"11781","标识":"IC3941","M标识":"IC3941","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h58m13.8s","赤经D(J2000)":"12.9705","赤纬(J2000)":"+39h46m24s","赤纬D(J2000)":"39.77333333333333","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11782","标识":"IC3942","M标识":"IC3942","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h58m19.8s","赤经D(J2000)":"12.972166666666666","赤纬(J2000)":"+36h6m32s","赤纬D(J2000)":"36.10888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, irregular figure, nuclear","简略描述":"eF, eS, iF, N"},{"ID":"11783","标识":"IC3943","M标识":"IC3943","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m36.5s","赤经D(J2000)":"12.976805555555556","赤纬(J2000)":"+28h6m48s","赤纬D(J2000)":"28.113333333333333","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"50","详细描述":"pretty faint, very small, irregular figure","简略描述":"pF, vS, iF"},{"ID":"11784","标识":"IC3944","M标识":"IC3944","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m44.8s","赤经D(J2000)":"12.979111111111111","赤纬(J2000)":"+23h46m52s","赤纬D(J2000)":"23.78111111111111","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"60","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11785","标识":"IC3945","M标识":"IC3945","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h58m29.6s","赤经D(J2000)":"12.97488888888889","赤纬(J2000)":"+39h56m8s","赤纬D(J2000)":"39.93555555555555","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"15","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11786","标识":"IC3946","M标识":"IC3946","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m49.1s","赤经D(J2000)":"12.980305555555555","赤纬(J2000)":"+27h48m35s","赤纬D(J2000)":"27.809722222222224","可见光星等V":"14","摄影(蓝光)星等B":"15.1","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"80","详细描述":"faint, pretty small, brighter middle","简略描述":"F, pS, bM"},{"ID":"11787","标识":"IC3947","M标识":"IC3947","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m52s","赤经D(J2000)":"12.981111111111112","赤纬(J2000)":"+27h47m8s","赤纬D(J2000)":"27.785555555555558","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"11.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"95","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"11788","标识":"IC3948","M标识":"IC3948","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m58.1s","赤经D(J2000)":"12.982805555555556","赤纬(J2000)":"+24h3m41s","赤纬D(J2000)":"24.06138888888889","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11789","标识":"IC3949","M标识":"IC3949","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h58m56.6s","赤经D(J2000)":"12.98238888888889","赤纬(J2000)":"+27h49m59s","赤纬D(J2000)":"27.833055555555557","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.2","方位角":"73","详细描述":"faint, pretty small, extended","简略描述":"F, pS, E"},{"ID":"11790","标识":"IC3950","M标识":"IC3950","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m6s","赤经D(J2000)":"12.985","赤纬(J2000)":"+18h44m10s","赤纬D(J2000)":"18.73611111111111","可见光星等V":"16.1","摄影(蓝光)星等B":"16.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"155","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11791","标识":"IC3951","M标识":"IC3951","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m10.1s","赤经D(J2000)":"12.986138888888888","赤纬(J2000)":"+18h45m53s","赤纬D(J2000)":"18.764722222222222","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"155","详细描述":"","简略描述":"F, vS, iF, N, ? neb D *"},{"ID":"11792","标识":"IC3952","M标识":"IC3952","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h58m52.1s","赤经D(J2000)":"12.98113888888889","赤纬(J2000)":"+38h52m11s","赤纬D(J2000)":"38.86972222222222","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, considerably small, irregular figure, nuclear","简略描述":"F, cS, iF, N"},{"ID":"11793","标识":"IC3953","M标识":"IC3953","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m9.1s","赤经D(J2000)":"12.98586111111111","赤纬(J2000)":"+23h5m14s","赤纬D(J2000)":"23.08722222222222","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, small, round, brighter middle, diffuse","简略描述":"vF, S, R, bM, dif"},{"ID":"11794","标识":"IC3954","M标识":"IC3954","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m12.7s","赤经D(J2000)":"12.98686111111111","赤纬(J2000)":"+19h16m21s","赤纬D(J2000)":"19.272499999999997","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"90","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11795","标识":"IC3955","M标识":"IC3955","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m6.1s","赤经D(J2000)":"12.985027777777777","赤纬(J2000)":"+27h59m46s","赤纬D(J2000)":"27.996111111111112","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"30","详细描述":"","简略描述":"vF, S, N 14 mag"},{"ID":"11796","标识":"IC3956","M标识":"IC3956","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h58m56.4s","赤经D(J2000)":"12.982333333333333","赤纬(J2000)":"+37h23m55s","赤纬D(J2000)":"37.39861111111111","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11797","标识":"IC3957","M标识":"IC3957","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m7.5s","赤经D(J2000)":"12.985416666666666","赤纬(J2000)":"+27h46m0s","赤纬D(J2000)":"27.766666666666666","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"considerably faint, very small, round, brighter middle","简略描述":"cF, vS, R, bM"},{"ID":"11798","标识":"IC3958","M标识":"IC3958","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m11.4s","赤经D(J2000)":"12.9865","赤纬(J2000)":"+24h1m20s","赤纬D(J2000)":"24.022222222222222","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11799","标识":"IC3959","M标识":"IC3959","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m8.3s","赤经D(J2000)":"12.985638888888888","赤纬(J2000)":"+27h47m1s","赤纬D(J2000)":"27.783611111111114","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, pretty small, round, a little brighter middle","简略描述":"F, pS, R, lbM"},{"ID":"11800","标识":"IC3960","M标识":"IC3960","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m8s","赤经D(J2000)":"12.985555555555555","赤纬(J2000)":"+27h51m17s","赤纬D(J2000)":"27.854722222222225","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, pretty small, difficult","简略描述":"vF, pS, diffic"},{"ID":"11801","标识":"IC3961","M标识":"IC3961","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBm","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m1.8s","赤经D(J2000)":"12.983833333333333","赤纬(J2000)":"+34h51m43s","赤纬D(J2000)":"34.86194444444445","可见光星等V":"13.5","摄影(蓝光)星等B":"14.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"15.4","长轴(分)":"4.2","短轴(分)":"1.6","方位角":"15","详细描述":"pretty faint, pretty large, a little extended 30°, brighter middle","简略描述":"pF, pL, lE 30°, bM"},{"ID":"11802","标识":"IC3962","M标识":"IC3962","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m15.1s","赤经D(J2000)":"12.987527777777776","赤纬(J2000)":"+23h40m4s","赤纬D(J2000)":"23.66777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint nebulous star","简略描述":"vF neb *"},{"ID":"11803","标识":"IC3963","M标识":"IC3963","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m13.6s","赤经D(J2000)":"12.98711111111111","赤纬(J2000)":"+27h46m26s","赤纬D(J2000)":"27.773888888888887","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"85","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11804","标识":"IC3964","M标识":"IC3964","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m13.6s","赤经D(J2000)":"12.98711111111111","赤纬(J2000)":"+27h51m4s","赤纬D(J2000)":"27.851111111111113","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"11805","标识":"IC3965","M标识":"IC3965","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m22.8s","赤经D(J2000)":"12.989666666666666","赤纬(J2000)":"+18h50m35s","赤纬D(J2000)":"18.843055555555555","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"160","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11806","标识":"IC3966","M标识":"IC3966","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m13.1s","赤经D(J2000)":"12.98697222222222","赤纬(J2000)":"+35h51m15s","赤纬D(J2000)":"35.85416666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"3","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11807","标识":"IC3967","M标识":"IC3967","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m12.8s","赤经D(J2000)":"12.986888888888888","赤纬(J2000)":"+36h7m47s","赤纬D(J2000)":"36.12972222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"36","详细描述":"pretty faint, very small, irregular figure, nuclear","简略描述":"pF, vS, iF, N"},{"ID":"11808","标识":"IC3968","M标识":"IC3968","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m25.6s","赤经D(J2000)":"12.990444444444444","赤纬(J2000)":"+27h58m21s","赤纬D(J2000)":"27.972499999999997","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"45","详细描述":"extremely faint, very small, 14th magnitude star near","简略描述":"eF, vS, * 14 nr"},{"ID":"11809","标识":"IC3969","M标识":"IC3969","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C+C+C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m32.7s","赤经D(J2000)":"12.992416666666665","赤纬(J2000)":"+19h39m11s","赤纬D(J2000)":"19.653055555555554","可见光星等V":"16.3","摄影(蓝光)星等B":"17.3","B-V":"1","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"11810","标识":"IC3970","M标识":"IC3970","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m11.5s","赤经D(J2000)":"12.986527777777777","赤纬(J2000)":"+40h24m8s","赤纬D(J2000)":"40.40222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, vS, E 120°, * 15 att p"},{"ID":"11811","标识":"IC3971","M标识":"IC3971","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m31.7s","赤经D(J2000)":"12.992138888888888","赤纬(J2000)":"+22h50m43s","赤纬D(J2000)":"22.845277777777778","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11812","标识":"IC3972","M标识":"IC3972","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m17.1s","赤经D(J2000)":"12.988083333333332","赤纬(J2000)":"+37h16m45s","赤纬D(J2000)":"37.27916666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11813","标识":"IC3973","M标识":"IC3973","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m30.7s","赤经D(J2000)":"12.99186111111111","赤纬(J2000)":"+27h53m6s","赤纬D(J2000)":"27.884999999999998","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"160","详细描述":"","简略描述":"F, vS, R, N 13 mag"},{"ID":"11814","标识":"IC3974","M标识":"IC3974","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h5m20.2s","赤经D(J2000)":"13.088944444444445","赤纬(J2000)":"-35h20m13s","赤纬D(J2000)":"-35.33694444444445","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.4","短轴(分)":"1.2","方位角":"10","详细描述":"most extremely faint, pretty small, a little extended","简略描述":"eeF, pS, lE"},{"ID":"11815","标识":"IC3975","M标识":"IC3975","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m15.6s","赤经D(J2000)":"12.987666666666666","赤纬(J2000)":"+38h52m59s","赤纬D(J2000)":"38.88305555555556","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"30","详细描述":"pretty faint, very small, extended 40°, brighter middle","简略描述":"pF, vS, E 40°, bM"},{"ID":"11816","标识":"IC3976","M标识":"IC3976","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m29.5s","赤经D(J2000)":"12.991527777777778","赤纬(J2000)":"+27h51m0s","赤纬D(J2000)":"27.85","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"160","详细描述":"","简略描述":"* 14 inv in vF neb"},{"ID":"11817","标识":"IC3977","M标识":"IC3977","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m19.6s","赤经D(J2000)":"12.988777777777777","赤纬(J2000)":"+36h47m55s","赤纬D(J2000)":"36.79861111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"11818","标识":"IC3978","M标识":"IC3978","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m37.4s","赤经D(J2000)":"12.993722222222221","赤纬(J2000)":"+19h37m19s","赤纬D(J2000)":"19.621944444444445","可见光星等V":"16.5","摄影(蓝光)星等B":"17.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.1","短轴(分)":"0.1","方位角":"","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"11819","标识":"IC3979","M标识":"IC3979","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m21s","赤经D(J2000)":"12.989166666666666","赤纬(J2000)":"+36h19m24s","赤纬D(J2000)":"36.32333333333334","可见光星等V":"99","摄影(蓝光)星等B":"14.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, extremely small, round, brighter middle","简略描述":"F, eS, R, bM"},{"ID":"11820","标识":"IC3980","M标识":"IC3980","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m18.6s","赤经D(J2000)":"12.988499999999998","赤纬(J2000)":"+39h9m4s","赤纬D(J2000)":"39.151111111111106","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"70","详细描述":"extremely faint, very small, irregular figure","简略描述":"eF, vS, iF"},{"ID":"11821","标识":"IC3981","M标识":"IC3981","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m21.5s","赤经D(J2000)":"12.989305555555555","赤纬(J2000)":"+37h13m41s","赤纬D(J2000)":"37.22805555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, irregular figure, nuclear, difficult","简略描述":"eF, vS, iF, N, diffic"},{"ID":"11822","标识":"IC3982","M标识":"IC3982","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m18.6s","赤经D(J2000)":"12.988499999999998","赤纬(J2000)":"+40h4m54s","赤纬D(J2000)":"40.08166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle, between two 13th-magnitude stars","简略描述":"F, vS, R, bM, bet 2 st 13"},{"ID":"11823","标识":"IC3983","M标识":"IC3983","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m20.3s","赤经D(J2000)":"12.988972222222221","赤纬(J2000)":"+39h14m53s","赤纬D(J2000)":"39.24805555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11824","标识":"IC3984","M标识":"IC3984","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m42.1s","赤经D(J2000)":"12.995027777777777","赤纬(J2000)":"+19h37m36s","赤纬D(J2000)":"19.62666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"11825","标识":"IC3985","M标识":"IC3985","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C+C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m43.1s","赤经D(J2000)":"12.995305555555555","赤纬(J2000)":"+19h35m30s","赤纬D(J2000)":"19.591666666666665","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"70","详细描述":"considerably faint, extremely small, round, brighter middle","简略描述":"cF, eS, R, bM"},{"ID":"11826","标识":"IC3986","M标识":"IC3986","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h1m0.8s","赤经D(J2000)":"13.01688888888889","赤纬(J2000)":"-32h26m29s","赤纬D(J2000)":"-32.44138888888889","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"1.9","短轴(分)":"1.5","方位角":"170","详细描述":"most extremely faint, pretty small, round, 10th magnitude star to northeast","简略描述":"eeF, pS, R, * 10 nf"},{"ID":"11827","标识":"IC3987","M标识":"IC3987","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m25s","赤经D(J2000)":"12.990277777777777","赤纬(J2000)":"+38h44m2s","赤纬D(J2000)":"38.73388888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"pretty faint, very small, round, brighter middle","简略描述":"pF, vS, R, bM"},{"ID":"11828","标识":"IC3988","M标识":"IC3988","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m26.8s","赤经D(J2000)":"12.990777777777778","赤纬(J2000)":"+37h14m41s","赤纬D(J2000)":"37.24472222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"11829","标识":"IC3989","M标识":"IC3989","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m28.8s","赤经D(J2000)":"12.991333333333332","赤纬(J2000)":"+36h45m25s","赤纬D(J2000)":"36.75694444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11830","标识":"IC3990","M标识":"IC3990","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m39.3s","赤经D(J2000)":"12.99425","赤纬(J2000)":"+28h53m42s","赤纬D(J2000)":"28.895","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"27","详细描述":"faint, small, round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"11831","标识":"IC3991","M标识":"IC3991","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m39.8s","赤经D(J2000)":"12.994388888888889","赤纬(J2000)":"+28h55m33s","赤纬D(J2000)":"28.925833333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"70","详细描述":"faint, small, round, faint nucleus, mottled but not resolved","简略描述":"F, S, R, FN, r"},{"ID":"11832","标识":"IC3992","M标识":"IC3992","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m33.4s","赤经D(J2000)":"12.99261111111111","赤纬(J2000)":"+36h46m19s","赤纬D(J2000)":"36.77194444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11833","标识":"IC3993","M标识":"IC3993","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m30.4s","赤经D(J2000)":"12.991777777777777","赤纬(J2000)":"+40h36m8s","赤纬D(J2000)":"40.602222222222224","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11834","标识":"IC3994","M标识":"IC3994","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m50.7s","赤经D(J2000)":"12.997416666666666","赤纬(J2000)":"+22h42m58s","赤纬D(J2000)":"22.71611111111111","可见光星等V":"16.7","摄影(蓝光)星等B":"17.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"","简略描述":"eF, vS, iF, ? eF * inv"},{"ID":"11835","标识":"IC3995","M标识":"IC3995","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m33.1s","赤经D(J2000)":"12.992527777777777","赤纬(J2000)":"+39h2m26s","赤纬D(J2000)":"39.04055555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11836","标识":"IC3996","M标识":"IC3996","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m31.5s","赤经D(J2000)":"12.992083333333332","赤纬(J2000)":"+40h28m2s","赤纬D(J2000)":"40.467222222222226","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, suddenly brighter middle like a star","简略描述":"F, vS, sbM *"},{"ID":"11837","标识":"IC3997","M标识":"IC3997","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m37s","赤经D(J2000)":"12.993611111111111","赤纬(J2000)":"+36h41m42s","赤纬D(J2000)":"36.69499999999999","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"10","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"11838","标识":"IC3998","M标识":"IC3998","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"12h59m46.9s","赤经D(J2000)":"12.99636111111111","赤纬(J2000)":"+27h58m22s","赤纬D(J2000)":"27.972777777777775","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"10","详细描述":"extremely faint, pretty small","简略描述":"eF, pS"},{"ID":"11839","标识":"IC3999","M标识":"IC3999","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"12h59m30.8s","赤经D(J2000)":"12.991888888888887","赤纬(J2000)":"-14h7m55s","赤纬D(J2000)":"-14.131944444444445","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"153","详细描述":"extremely faint, suspected","简略描述":"eF, susp"},{"ID":"11840","标识":"IC4000","M标识":"IC4000","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m36.6s","赤经D(J2000)":"12.9935","赤纬(J2000)":"+39h35m16s","赤纬D(J2000)":"39.58777777777778","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure, possibly nebulous star","简略描述":"vF, vS, iF, ? neb *"},{"ID":"11841","标识":"IC4001","M标识":"IC4001","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m37.8s","赤经D(J2000)":"12.993833333333333","赤纬(J2000)":"+38h52m11s","赤纬D(J2000)":"38.86972222222222","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"25","详细描述":"pretty faint, very small, round, brighter middle","简略描述":"pF, vS, R, bM"},{"ID":"11842","标识":"IC4002","M标识":"IC4002","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m40.7s","赤经D(J2000)":"12.994638888888888","赤纬(J2000)":"+36h45m52s","赤纬D(J2000)":"36.76444444444444","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"80","详细描述":"pretty faint, small, irregular figure, nuclear","简略描述":"pF, S, iF, N"},{"ID":"11843","标识":"IC4003","M标识":"IC4003","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m39.3s","赤经D(J2000)":"12.99425","赤纬(J2000)":"+38h48m58s","赤纬D(J2000)":"38.816111111111105","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"pretty faint, very small, irregular figure, nuclear","简略描述":"pF, vS, iF, N"},{"ID":"11844","标识":"IC4004","M标识":"IC4004","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S M","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m42.8s","赤经D(J2000)":"12.995222222222221","赤纬(J2000)":"+38h48m40s","赤纬D(J2000)":"38.81111111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"pretty faint, very small, irregular figure, nuclear","简略描述":"pF, vS, iF, N"},{"ID":"11845","标识":"IC4005","M标识":"IC4005","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m2.6s","赤经D(J2000)":"13.000722222222223","赤纬(J2000)":"+22h38m24s","赤纬D(J2000)":"22.64","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11846","标识":"IC4006","M标识":"IC4006","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m49s","赤经D(J2000)":"12.996944444444443","赤纬(J2000)":"+37h0m38s","赤纬D(J2000)":"37.010555555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"11847","标识":"IC4007","M标识":"IC4007","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m7s","赤经D(J2000)":"13.001944444444444","赤纬(J2000)":"+19h57m53s","赤纬D(J2000)":"19.96472222222222","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"150","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11848","标识":"IC4008","M标识":"IC4008","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m6s","赤经D(J2000)":"13.001666666666667","赤纬(J2000)":"+22h21m2s","赤纬D(J2000)":"22.350555555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11849","标识":"IC4009","M标识":"IC4009","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m52.5s","赤经D(J2000)":"12.997916666666665","赤纬(J2000)":"+36h39m42s","赤纬D(J2000)":"36.66166666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11850","标识":"IC4010","M标识":"IC4010","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m53.9s","赤经D(J2000)":"12.998305555555556","赤纬(J2000)":"+37h51m34s","赤纬D(J2000)":"37.85944444444445","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"70","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11851","标识":"IC4011","M标识":"IC4011","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m6.6s","赤经D(J2000)":"13.001833333333334","赤纬(J2000)":"+28h0m11s","赤纬D(J2000)":"28.003055555555555","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"eF, vS, N 15m"},{"ID":"11852","标识":"IC4012","M标识":"IC4012","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m8.1s","赤经D(J2000)":"13.00225","赤纬(J2000)":"+28h4m42s","赤纬D(J2000)":"28.078333333333333","可见光星等V":"14.9","摄影(蓝光)星等B":"16","B-V":"1.1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"135","详细描述":"","简略描述":"* 14 in vF neb"},{"ID":"11853","标识":"IC4013","M标识":"IC4013","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m57.9s","赤经D(J2000)":"12.999416666666665","赤纬(J2000)":"+37h11m54s","赤纬D(J2000)":"37.19833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11854","标识":"IC4014","M标识":"IC4014","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m13.9s","赤经D(J2000)":"13.003861111111112","赤纬(J2000)":"+22h29m57s","赤纬D(J2000)":"22.499166666666667","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11855","标识":"IC4015","M标识":"IC4015","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m59.6s","赤经D(J2000)":"12.999888888888888","赤纬(J2000)":"+37h11m38s","赤纬D(J2000)":"37.193888888888885","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"0","详细描述":"double nebula, extremely faint, small, irregular figure, nuclear","简略描述":"D neb, eF, S, iF, N"},{"ID":"11856","标识":"IC4016","M标识":"IC4016","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m59.9s","赤经D(J2000)":"12.99997222222222","赤纬(J2000)":"+37h11m14s","赤纬D(J2000)":"37.18722222222222","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"170","详细描述":"double nebula, extremely faint, small, irregular figure, nuclear","简略描述":"D neb, eF, S, iF, N"},{"ID":"11857","标识":"IC4017","M标识":"IC4017","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m15.8s","赤经D(J2000)":"13.004388888888888","赤纬(J2000)":"+22h33m20s","赤纬D(J2000)":"22.555555555555557","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"11","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"100","详细描述":"very faint, very small, extended 80°, brighter middle","简略描述":"vF, vS, E 80°, bM"},{"ID":"11858","标识":"IC4018","M标识":"IC4018","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"12h59m57.4s","赤经D(J2000)":"12.999277777777777","赤纬(J2000)":"+40h29m20s","赤纬D(J2000)":"40.48888888888889","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"0","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"11859","标识":"IC4019","M标识":"IC4019","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m17.2s","赤经D(J2000)":"13.004777777777777","赤纬(J2000)":"+23h43m10s","赤纬D(J2000)":"23.71944444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, vS, iF, * 14 att nf, * 11 sp"},{"ID":"11860","标识":"IC4020","M标识":"IC4020","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m3.4s","赤经D(J2000)":"13.000944444444444","赤纬(J2000)":"+38h36m35s","赤纬D(J2000)":"38.609722222222224","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.1","方位角":"85","详细描述":"extremely faint, pretty large, diffuse","简略描述":"eF, pL, dif"},{"ID":"11861","标识":"IC4021","M标识":"IC4021","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m14.9s","赤经D(J2000)":"13.004138888888889","赤纬(J2000)":"+28h2m26s","赤纬D(J2000)":"28.040555555555557","可见光星等V":"14.8","摄影(蓝光)星等B":"15.9","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"","简略描述":"* 14 in vF neb"},{"ID":"11862","标识":"IC4022","M标识":"IC4022","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m5.2s","赤经D(J2000)":"13.001444444444445","赤纬(J2000)":"+38h28m47s","赤纬D(J2000)":"38.47972222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, irregular figure, nuclear","简略描述":"eF, eS, iF, N"},{"ID":"11863","标识":"IC4023","M标识":"IC4023","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m26.5s","赤经D(J2000)":"13.007361111111111","赤纬(J2000)":"+19h5m48s","赤纬D(J2000)":"19.096666666666664","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, irregular figure, questionable","简略描述":"vF, vS, iF, ?"},{"ID":"11864","标识":"IC4024","M标识":"IC4024","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m3.9s","赤经D(J2000)":"13.001083333333334","赤纬(J2000)":"+40h30m32s","赤纬D(J2000)":"40.50888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11865","标识":"IC4025","M标识":"IC4025","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m26.5s","赤经D(J2000)":"13.007361111111111","赤纬(J2000)":"+19h5m50s","赤纬D(J2000)":"19.09722222222222","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11866","标识":"IC4026","M标识":"IC4026","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m22.3s","赤经D(J2000)":"13.006194444444445","赤纬(J2000)":"+28h2m47s","赤纬D(J2000)":"28.04638888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"","简略描述":"* 14 in vF neb"},{"ID":"11867","标识":"IC4027","M标识":"IC4027","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m13.8s","赤经D(J2000)":"13.003833333333333","赤纬(J2000)":"+37h8m27s","赤纬D(J2000)":"37.14083333333333","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"135","详细描述":"","简略描述":"F, S, iF, N, 4893 np"},{"ID":"11868","标识":"IC4028","M标识":"IC4028","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m16.5s","赤经D(J2000)":"13.004583333333333","赤纬(J2000)":"+36h15m11s","赤纬D(J2000)":"36.253055555555555","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"144","详细描述":"faint, considerably small, irregular figure, nuclear","简略描述":"F, cS, iF, N"},{"ID":"11869","标识":"IC4029","M标识":"IC4029","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m14.2s","赤经D(J2000)":"13.003944444444445","赤纬(J2000)":"+38h45m35s","赤纬D(J2000)":"38.75972222222222","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.1","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"100","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11870","标识":"IC4030","M标识":"IC4030","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m28s","赤经D(J2000)":"13.007777777777777","赤纬(J2000)":"+27h57m18s","赤纬D(J2000)":"27.955","可见光星等V":"15.4","摄影(蓝光)星等B":"16.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"10","详细描述":"extremely faint, very small, round, 15th magnitude star involved","简略描述":"eF, vS, R, * 15 inv"},{"ID":"11871","标识":"IC4031","M标识":"IC4031","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m15.5s","赤经D(J2000)":"13.004305555555556","赤纬(J2000)":"+39h8m42s","赤纬D(J2000)":"39.144999999999996","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"11872","标识":"IC4032","M标识":"IC4032","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m25.8s","赤经D(J2000)":"13.007166666666667","赤纬(J2000)":"+28h52m4s","赤纬D(J2000)":"28.86777777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"160","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"11873","标识":"IC4033","M标识":"IC4033","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m28.6s","赤经D(J2000)":"13.007944444444444","赤纬(J2000)":"+27h58m20s","赤纬D(J2000)":"27.97222222222222","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"95","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"11874","标识":"IC4034","M标识":"IC4034","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m19.8s","赤经D(J2000)":"13.0055","赤纬(J2000)":"+37h2m45s","赤纬D(J2000)":"37.045833333333334","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"considerably faint, small, irregular figure, nuclear","简略描述":"cF, S, iF, N"},{"ID":"11875","标识":"IC4035","M标识":"IC4035","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m16.7s","赤经D(J2000)":"13.00463888888889","赤纬(J2000)":"+40h17m58s","赤纬D(J2000)":"40.29944444444444","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"40","详细描述":"","简略描述":"vF, S, v iF, diffic"},{"ID":"11876","标识":"IC4036","M标识":"IC4036","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m20.6s","赤经D(J2000)":"13.005722222222222","赤纬(J2000)":"+36h54m34s","赤纬D(J2000)":"36.909444444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11877","标识":"IC4037","M标识":"IC4037","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m19.5s","赤经D(J2000)":"13.005416666666667","赤纬(J2000)":"+39h0m8s","赤纬D(J2000)":"39.00222222222222","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"100","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11878","标识":"IC4038","M标识":"IC4038","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m21.7s","赤经D(J2000)":"13.006027777777778","赤纬(J2000)":"+37h2m23s","赤纬D(J2000)":"37.03972222222222","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"170","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11879","标识":"IC4039","M标识":"IC4039","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m39.3s","赤经D(J2000)":"13.010916666666667","赤纬(J2000)":"+21h41m32s","赤纬D(J2000)":"21.692222222222224","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"considerably faint, very small, nebulous star","简略描述":"cF, vS, neb *"},{"ID":"11880","标识":"IC4040","M标识":"IC4040","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m38.1s","赤经D(J2000)":"13.010583333333333","赤纬(J2000)":"+28h3m24s","赤纬D(J2000)":"28.05666666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.3","方位角":"153","详细描述":"very faint, small, round, gradually brighter middle","简略描述":"vF, S, R, gbM"},{"ID":"11881","标识":"IC4041","M标识":"IC4041","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m40.8s","赤经D(J2000)":"13.011333333333333","赤纬(J2000)":"+27h59m49s","赤纬D(J2000)":"27.996944444444445","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"30","详细描述":"very faint, pretty small","简略描述":"vF, pS"},{"ID":"11882","标识":"IC4042","M标识":"IC4042","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m42.7s","赤经D(J2000)":"13.011861111111111","赤纬(J2000)":"+27h58m18s","赤纬D(J2000)":"27.971666666666664","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, brighter middle","简略描述":"F, S, bM"},{"ID":"11883","标识":"IC4043","M标识":"IC4043","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m34.9s","赤经D(J2000)":"13.009694444444444","赤纬(J2000)":"+37h4m15s","赤纬D(J2000)":"37.07083333333334","可见光星等V":"15.9","摄影(蓝光)星等B":"16.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"160","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"11884","标识":"IC4044","M标识":"IC4044","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m47.5s","赤经D(J2000)":"13.013194444444444","赤纬(J2000)":"+27h55m18s","赤纬D(J2000)":"27.921666666666667","可见光星等V":"15.4","摄影(蓝光)星等B":"16.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"45","详细描述":"extremely faint, small, a little brighter middle","简略描述":"eF, S, lbM"},{"ID":"11885","标识":"IC4045","M标识":"IC4045","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m48.8s","赤经D(J2000)":"13.013555555555556","赤纬(J2000)":"+28h5m25s","赤纬D(J2000)":"28.090277777777775","可见光星等V":"13.9","摄影(蓝光)星等B":"15","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"115","详细描述":"pretty faint, small, brighter middle","简略描述":"pF, S, bM"},{"ID":"11886","标识":"IC4046","M标识":"IC4046","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m39.7s","赤经D(J2000)":"13.011027777777779","赤纬(J2000)":"+36h41m7s","赤纬D(J2000)":"36.68527777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11887","标识":"IC4047","M标识":"IC4047","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m57.6s","赤经D(J2000)":"13.016","赤纬(J2000)":"+19h41m15s","赤纬D(J2000)":"19.6875","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"considerably faint, small, extended 110°, brighter middle","简略描述":"cF, S, E 110°, bM"},{"ID":"11888","标识":"IC4048","M标识":"IC4048","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m38.2s","赤经D(J2000)":"13.01061111111111","赤纬(J2000)":"+39h49m50s","赤纬D(J2000)":"39.830555555555556","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"0","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11889","标识":"IC4049","M标识":"IC4049","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m42.6s","赤经D(J2000)":"13.011833333333334","赤纬(J2000)":"+36h20m45s","赤纬D(J2000)":"36.34583333333334","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"pretty bright, very small, suddenly brighter middle like a star","简略描述":"pB, vS, sbM *"},{"ID":"11890","标识":"IC4050","M标识":"IC4050","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m43.5s","赤经D(J2000)":"13.012083333333333","赤纬(J2000)":"+36h44m19s","赤纬D(J2000)":"36.73861111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nuclear, perhaps a double star","简略描述":"vF, S, iF, N, ? D *"},{"ID":"11891","标识":"IC4051","M标识":"IC4051","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h0m51.6s","赤经D(J2000)":"13.014333333333333","赤纬(J2000)":"+28h2m34s","赤纬D(J2000)":"28.04277777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"49","详细描述":"","简略描述":"pF, S, R, bM, 4908 np"},{"ID":"11892","标识":"IC4052","M标识":"IC4052","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m41.5s","赤经D(J2000)":"13.011527777777777","赤纬(J2000)":"+39h40m5s","赤纬D(J2000)":"39.668055555555554","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11893","标识":"IC4053","M标识":"IC4053","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m1.3s","赤经D(J2000)":"13.017027777777779","赤纬(J2000)":"+22h55m27s","赤纬D(J2000)":"22.924166666666668","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, eS, R, bM, ? others nr"},{"ID":"11894","标识":"IC4054","M标识":"IC4054","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m1.3s","赤经D(J2000)":"13.017027777777779","赤纬(J2000)":"+22h54m16s","赤纬D(J2000)":"22.904444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, eS, R, bM, * 10 f ?'"},{"ID":"11895","标识":"IC4055","M标识":"IC4055","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m2.6s","赤经D(J2000)":"13.01738888888889","赤纬(J2000)":"+22h54m31s","赤纬D(J2000)":"22.90861111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, irregular figure, nuclear, questionable","简略描述":"eF, vS, iF, N, ?"},{"ID":"11896","标识":"IC4056","M标识":"IC4056","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m44.3s","赤经D(J2000)":"13.012305555555555","赤纬(J2000)":"+39h45m16s","赤纬D(J2000)":"39.754444444444445","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.9","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"90","详细描述":"","简略描述":"F, vS, exc N"},{"ID":"11897","标识":"IC4057","M标识":"IC4057","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m5.4s","赤经D(J2000)":"13.018166666666668","赤纬(J2000)":"+23h9m34s","赤纬D(J2000)":"23.159444444444443","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"11898","标识":"IC4058","M标识":"IC4058","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m9.3s","赤经D(J2000)":"13.019250000000001","赤纬(J2000)":"+19h29m38s","赤纬D(J2000)":"19.49388888888889","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"100","详细描述":"considerably faint, very small, round, brighter middle","简略描述":"cF, vS, R, bM"},{"ID":"11899","标识":"IC4059","M标识":"IC4059","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m15.4s","赤经D(J2000)":"13.020944444444446","赤纬(J2000)":"+19h16m23s","赤纬D(J2000)":"19.273055555555555","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11900","标识":"IC4060","M标识":"IC4060","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m52.4s","赤经D(J2000)":"13.014555555555555","赤纬(J2000)":"+40h35m4s","赤纬D(J2000)":"40.58444444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"141","详细描述":"very faint, considerably small, irregular figure, nuclear","简略描述":"vF, cS, iF, N"},{"ID":"11901","标识":"IC4061","M标识":"IC4061","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m57.4s","赤经D(J2000)":"13.015944444444445","赤纬(J2000)":"+39h35m0s","赤纬D(J2000)":"39.583333333333336","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"11902","标识":"IC4062","M标识":"IC4062","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB M","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h0m58.7s","赤经D(J2000)":"13.016305555555556","赤纬(J2000)":"+39h51m31s","赤纬D(J2000)":"39.85861111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, considerably small, irregular figure, nuclear","简略描述":"vF, cS, iF, N"},{"ID":"11903","标识":"IC4063","M标识":"IC4063","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m6.6s","赤经D(J2000)":"13.018500000000001","赤纬(J2000)":"+39h14m42s","赤纬D(J2000)":"39.245","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11904","标识":"IC4064","M标识":"IC4064","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m6.7s","赤经D(J2000)":"13.018527777777779","赤纬(J2000)":"+39h50m30s","赤纬D(J2000)":"39.84166666666667","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"27","详细描述":"pretty faint, small, round, brighter middle, possibly spiral","简略描述":"pF, S, R, bM, ? spir"},{"ID":"11905","标识":"IC4065","M标识":"IC4065","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m10.9s","赤经D(J2000)":"13.019694444444445","赤纬(J2000)":"+39h44m40s","赤纬D(J2000)":"39.74444444444445","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"177","详细描述":"very faint, very small, suddenly brighter middle like a star","简略描述":"vF, vS, sbM *"},{"ID":"11906","标识":"IC4066","M标识":"IC4066","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m40.1s","赤经D(J2000)":"13.027805555555556","赤纬(J2000)":"+19h16m21s","赤纬D(J2000)":"19.272499999999997","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure","简略描述":"vF, vS, iF"},{"ID":"11907","标识":"IC4067","M标识":"IC4067","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m20.2s","赤经D(J2000)":"13.022277777777779","赤纬(J2000)":"+39h56m27s","赤纬D(J2000)":"39.94083333333333","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11908","标识":"IC4068","M标识":"IC4068","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m20.2s","赤经D(J2000)":"13.022277777777779","赤纬(J2000)":"+39h53m56s","赤纬D(J2000)":"39.89888888888889","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"70","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11909","标识":"IC4069","M标识":"IC4069","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m24.9s","赤经D(J2000)":"13.023583333333335","赤纬(J2000)":"+36h6m45s","赤纬D(J2000)":"36.112500000000004","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"5","详细描述":"","简略描述":"vF, vS, pR, eF N"},{"ID":"11910","标识":"IC4070","M标识":"IC4070","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m43.2s","赤经D(J2000)":"13.028666666666668","赤纬(J2000)":"+19h18m6s","赤纬D(J2000)":"19.301666666666666","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"11.1","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"45","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11911","标识":"IC4071","M标识":"IC4071","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h2m4s","赤经D(J2000)":"13.034444444444444","赤纬(J2000)":"-7h36m11s","赤纬D(J2000)":"-7.603055555555555","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"6","详细描述":"most extremely faint, extremely small, considerably extended 10°","简略描述":"eeF, eS, cE 10°"},{"ID":"11912","标识":"IC4072","M标识":"IC4072","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m25.8s","赤经D(J2000)":"13.023833333333334","赤纬(J2000)":"+37h21m16s","赤纬D(J2000)":"37.35444444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, irregular figure, difficult","简略描述":"eF, S, iF, diffic"},{"ID":"11913","标识":"IC4073","M标识":"IC4073","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m25.6s","赤经D(J2000)":"13.023777777777779","赤纬(J2000)":"+39h54m53s","赤纬D(J2000)":"39.914722222222224","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"145","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11914","标识":"IC4074","M标识":"IC4074","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m48.8s","赤经D(J2000)":"13.030222222222223","赤纬(J2000)":"+19h0m31s","赤纬D(J2000)":"19.00861111111111","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11915","标识":"IC4075","M标识":"IC4075","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m48.6s","赤经D(J2000)":"13.030166666666668","赤纬(J2000)":"+19h57m53s","赤纬D(J2000)":"19.96472222222222","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"100","详细描述":"faint, very small, brighter middle, spiral","简略描述":"F, vS, bM, spir"},{"ID":"11916","标识":"IC4076","M标识":"IC4076","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m48.5s","赤经D(J2000)":"13.03013888888889","赤纬(J2000)":"+23h23m23s","赤纬D(J2000)":"23.389722222222222","可见光星等V":"16.2","摄影(蓝光)星等B":"17.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, irregular figure, nuclear, possible cluster, 15th magnitude star to northwest","简略描述":"F, vS, iF, N, ? Cl, * 15 np"},{"ID":"11917","标识":"IC4077","M标识":"IC4077","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m34s","赤经D(J2000)":"13.026111111111112","赤纬(J2000)":"+37h23m12s","赤纬D(J2000)":"37.38666666666666","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"60","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"11918","标识":"IC4078","M标识":"IC4078","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m35.8s","赤经D(J2000)":"13.026611111111112","赤纬(J2000)":"+36h35m39s","赤纬D(J2000)":"36.594166666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, irregular figure, nuclear","简略描述":"pF, vS, iF, N"},{"ID":"11919","标识":"IC4079","M标识":"IC4079","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m56.8s","赤经D(J2000)":"13.032444444444446","赤纬(J2000)":"+19h14m54s","赤纬D(J2000)":"19.248333333333335","可见光星等V":"16.5","摄影(蓝光)星等B":"17.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.1","短轴(分)":"0.1","方位角":"","详细描述":"very faint, very small, attached to next","简略描述":"vF, vS, att to next"},{"ID":"11920","标识":"IC4080","M标识":"IC4080","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m57.6s","赤经D(J2000)":"13.032666666666668","赤纬(J2000)":"+19h15m11s","赤纬D(J2000)":"19.253055555555555","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, 14th magnitude star 0.3 arcmin to west, 15th magnitude star to southeast","简略描述":"F, vS, * 14 p 0'.3, * 15 sf"},{"ID":"11921","标识":"IC4081","M标识":"IC4081","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m55.2s","赤经D(J2000)":"13.032","赤纬(J2000)":"+22h46m18s","赤纬D(J2000)":"22.771666666666665","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"150","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11922","标识":"IC4082","M标识":"IC4082","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m39.3s","赤经D(J2000)":"13.027583333333334","赤纬(J2000)":"+37h20m27s","赤纬D(J2000)":"37.340833333333336","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"100","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"11923","标识":"IC4083","M标识":"IC4083","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m38.7s","赤经D(J2000)":"13.027416666666667","赤纬(J2000)":"+38h8m32s","赤纬D(J2000)":"38.14222222222222","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"20","详细描述":"faint, very small, irregular figure, nebulous star","简略描述":"F, vS, iF, neb *"},{"ID":"11924","标识":"IC4084","M标识":"IC4084","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m41.2s","赤经D(J2000)":"13.028111111111112","赤纬(J2000)":"+36h57m57s","赤纬D(J2000)":"36.965833333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, round, brighter middle","简略描述":"pF, vS, R, bM"},{"ID":"11925","标识":"IC4085","M标识":"IC4085","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m38.1s","赤经D(J2000)":"13.02725","赤纬(J2000)":"+39h42m12s","赤纬D(J2000)":"39.70333333333333","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"140","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"11926","标识":"IC4086","M标识":"IC4086","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m43s","赤经D(J2000)":"13.028611111111111","赤纬(J2000)":"+36h38m52s","赤纬D(J2000)":"36.647777777777776","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"12","详细描述":"","简略描述":"F, pS, iF, N, * 15 n"},{"ID":"11927","标识":"IC4087","M标识":"IC4087","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h2m0.4s","赤经D(J2000)":"13.033444444444445","赤纬(J2000)":"+19h59m39s","赤纬D(J2000)":"19.99416666666667","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"0","详细描述":"very faint, very small, brighter middle, possibly spiral","简略描述":"vF, vS, bM, ? spir"},{"ID":"11928","标识":"IC4088","M标识":"IC4088","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h1m43.5s","赤经D(J2000)":"13.02875","赤纬(J2000)":"+29h2m39s","赤纬D(J2000)":"29.04416666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"89","详细描述":"","简略描述":"eF, susp, * 11?12 f 1'.4"},{"ID":"11929","标识":"IC4089","M标识":"IC4089","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h2m1.7s","赤经D(J2000)":"13.033805555555556","赤纬(J2000)":"+19h30m10s","赤纬D(J2000)":"19.502777777777776","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, small, irregular figure, nuclear, between two 14th magnitude stars","简略描述":"eF, S, iF, N, bet 2 st 14"},{"ID":"11930","标识":"IC4090","M标识":"IC4090","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m46.4s","赤经D(J2000)":"13.029555555555556","赤纬(J2000)":"+36h50m14s","赤纬D(J2000)":"36.83722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"11931","标识":"IC4091","M标识":"IC4091","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h2m12.8s","赤经D(J2000)":"13.036888888888889","赤纬(J2000)":"+19h53m34s","赤纬D(J2000)":"19.892777777777777","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"135","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11932","标识":"IC4092","M标识":"IC4092","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h2m13.8s","赤经D(J2000)":"13.037166666666666","赤纬(J2000)":"+19h11m1s","赤纬D(J2000)":"19.183611111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"11933","标识":"IC4093","M标识":"IC4093","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h2m3s","赤经D(J2000)":"13.034166666666666","赤纬(J2000)":"+28h59m42s","赤纬D(J2000)":"28.995","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"susp, close p * 8"},{"ID":"11934","标识":"IC4094","M标识":"IC4094","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h1m58.5s","赤经D(J2000)":"13.032916666666667","赤纬(J2000)":"+37h47m43s","赤纬D(J2000)":"37.79527777777778","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"150","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11935","标识":"IC4095","M标识":"IC4095","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h2m20.3s","赤经D(J2000)":"13.038972222222222","赤纬(J2000)":"+19h6m1s","赤纬D(J2000)":"19.10027777777778","可见光星等V":"15.8","摄影(蓝光)星等B":"16.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"25","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11936","标识":"IC4096","M标识":"IC4096","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h2m16.9s","赤经D(J2000)":"13.038027777777778","赤纬(J2000)":"+24h0m41s","赤纬D(J2000)":"24.011388888888888","可见光星等V":"16.4","摄影(蓝光)星等B":"17.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11937","标识":"IC4097","M标识":"IC4097","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h2m5.1s","赤经D(J2000)":"13.03475","赤纬(J2000)":"+36h36m18s","赤纬D(J2000)":"36.605000000000004","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, irregular figure, nuclear","简略描述":"pF, vS, iF, N"},{"ID":"11938","标识":"IC4098","M标识":"IC4098","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h2m4.1s","赤经D(J2000)":"13.034472222222222","赤纬(J2000)":"+37h58m48s","赤纬D(J2000)":"37.980000000000004","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"105","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11939","标识":"IC4099","M标识":"IC4099","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h2m23.2s","赤经D(J2000)":"13.039777777777777","赤纬(J2000)":"+24h1m47s","赤纬D(J2000)":"24.029722222222222","可见光星等V":"16.1","摄影(蓝光)星等B":"17.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11940","标识":"IC4100","M标识":"IC4100","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h2m4.8s","赤经D(J2000)":"13.034666666666666","赤纬(J2000)":"+40h24m31s","赤纬D(J2000)":"40.40861111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"110","详细描述":"","简略描述":"pF, cS, iF, 3 wings"},{"ID":"11941","标识":"IC4101","M标识":"IC4101","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h2m13.8s","赤经D(J2000)":"13.037166666666666","赤纬(J2000)":"+39h56m27s","赤纬D(J2000)":"39.94083333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11942","标识":"IC4102","M标识":"IC4102","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h2m18s","赤经D(J2000)":"13.038333333333334","赤纬(J2000)":"+36h9m7s","赤纬D(J2000)":"36.151944444444446","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"80","详细描述":"faint, very small, round, suddenly brighter middle like a star","简略描述":"F, vS, R, sbM *"},{"ID":"11943","标识":"IC4103","M标识":"IC4103","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h2m19.1s","赤经D(J2000)":"13.038638888888888","赤纬(J2000)":"+38h0m59s","赤纬D(J2000)":"38.01638888888889","可见光星等V":"14.9","摄影(蓝光)星等B":"15.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"75","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11944","标识":"IC4104","M标识":"IC4104","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h2m18.2s","赤经D(J2000)":"13.038388888888889","赤纬(J2000)":"+38h35m32s","赤纬D(J2000)":"38.592222222222226","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"0","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11945","标识":"IC4105","M标识":"IC4105","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h2m18.9s","赤经D(J2000)":"13.038583333333333","赤纬(J2000)":"+38h16m16s","赤纬D(J2000)":"38.27111111111111","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, irregular figure, nebulous star","简略描述":"vF, vS, iF, neb *"},{"ID":"11946","标识":"IC4106","M标识":"IC4106","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h2m38.5s","赤经D(J2000)":"13.044027777777778","赤纬(J2000)":"+28h6m50s","赤纬D(J2000)":"28.11388888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"160","详细描述":"extremely faint, pretty small, diffuse","简略描述":"eF, pS, dif"},{"ID":"11947","标识":"IC4107","M标识":"IC4107","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"dE","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h2m41.7s","赤经D(J2000)":"13.044916666666667","赤纬(J2000)":"+21h59m52s","赤纬D(J2000)":"21.997777777777777","可见光星等V":"17.9","摄影(蓝光)星等B":"18.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"17","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, considerably large, diffuse","简略描述":"eF, cL, dif"},{"ID":"11948","标识":"IC4108","M标识":"IC4108","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h2m31.5s","赤经D(J2000)":"13.042083333333332","赤纬(J2000)":"+38h28m44s","赤纬D(J2000)":"38.47888888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"129","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11949","标识":"IC4109","M标识":"IC4109","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h2m57.9s","赤经D(J2000)":"13.049416666666666","赤纬(J2000)":"+19h0m13s","赤纬D(J2000)":"19.003611111111113","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"11950","标识":"IC4110","M标识":"IC4110","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h2m58.3s","赤经D(J2000)":"13.049527777777778","赤纬(J2000)":"+19h13m39s","赤纬D(J2000)":"19.2275","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, very small, round, 13th magnitude star to west","简略描述":"eF, vS, R, * 13 p"},{"ID":"11951","标识":"IC4111","M标识":"IC4111","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h2m56.7s","赤经D(J2000)":"13.049083333333334","赤纬(J2000)":"+28h4m14s","赤纬D(J2000)":"28.070555555555554","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"135","详细描述":"extremely faint","简略描述":"eF"},{"ID":"11952","标识":"IC4112","M标识":"IC4112","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h2m45.5s","赤经D(J2000)":"13.045972222222222","赤纬(J2000)":"+37h12m42s","赤纬D(J2000)":"37.211666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, irregular figure, nuclear, difficult","简略描述":"F, S, iF, N, diffic"},{"ID":"11953","标识":"IC4113","M标识":"IC4113","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m3.4s","赤经D(J2000)":"13.050944444444445","赤纬(J2000)":"+20h28m25s","赤纬D(J2000)":"20.473611111111108","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11954","标识":"IC4114","M标识":"IC4114","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h2m42s","赤经D(J2000)":"13.045","赤纬(J2000)":"+40h6m17s","赤纬D(J2000)":"40.10472222222222","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"40","详细描述":"","简略描述":"vF, S, v iF, N"},{"ID":"11955","标识":"IC4115","M标识":"IC4115","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h2m49s","赤经D(J2000)":"13.046944444444444","赤纬(J2000)":"+37h13m20s","赤纬D(J2000)":"37.22222222222222","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, pretty large, irregular figure, nuclear","简略描述":"F, pL, iF, N"},{"ID":"11956","标识":"IC4116","M标识":"IC4116","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m10.2s","赤经D(J2000)":"13.052833333333334","赤纬(J2000)":"+19h4m59s","赤纬D(J2000)":"19.083055555555557","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"11957","标识":"IC4117","M标识":"IC4117","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h2m48.6s","赤经D(J2000)":"13.046833333333334","赤纬(J2000)":"+40h31m30s","赤纬D(J2000)":"40.525","可见光星等V":"99","摄影(蓝光)星等B":"15","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nebulous star","简略描述":"vF, S, iF, neb *"},{"ID":"11958","标识":"IC4118","M标识":"IC4118","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h2m51.6s","赤经D(J2000)":"13.047666666666666","赤纬(J2000)":"+38h17m37s","赤纬D(J2000)":"38.29361111111111","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"114","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11959","标识":"IC4119","M标识":"IC4119","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m15.1s","赤经D(J2000)":"13.054194444444445","赤纬(J2000)":"+19h13m57s","赤纬D(J2000)":"19.232499999999998","可见光星等V":"16.7","摄影(蓝光)星等B":"17.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"22","详细描述":"extremely faint, small, extended 30°, questionable","简略描述":"eF, S, E 30°, ?"},{"ID":"11960","标识":"IC4120","M标识":"IC4120","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h3m1.7s","赤经D(J2000)":"13.050472222222224","赤纬(J2000)":"+37h4m53s","赤纬D(J2000)":"37.081388888888895","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, very small, irregular figure, nuclear","简略描述":"cF, vS, iF, N"},{"ID":"11961","标识":"IC4121","M标识":"IC4121","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m21.5s","赤经D(J2000)":"13.055972222222223","赤纬(J2000)":"+19h16m54s","赤纬D(J2000)":"19.281666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, vS, iF N"},{"ID":"11962","标识":"IC4122","M标识":"IC4122","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m24.4s","赤经D(J2000)":"13.056777777777778","赤纬(J2000)":"+20h11m48s","赤纬D(J2000)":"20.196666666666665","可见光星等V":"14.2","摄影(蓝光)星等B":"15.3","B-V":"1.1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"","简略描述":"cF, S, bM, spir, * 15 p 20\""},{"ID":"11963","标识":"IC4123","M标识":"IC4123","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h3m5.8s","赤经D(J2000)":"13.051611111111113","赤纬(J2000)":"+38h18m54s","赤纬D(J2000)":"38.315","可见光星等V":"15","摄影(蓝光)星等B":"15.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"F, S, fan, Ns"},{"ID":"11964","标识":"IC4124","M标识":"IC4124","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m31.1s","赤经D(J2000)":"13.05863888888889","赤纬(J2000)":"+22h50m52s","赤纬D(J2000)":"22.847777777777775","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, extended 110°, brighter middle","简略描述":"vF, vS, E 110°, bM"},{"ID":"11965","标识":"IC4125","M标识":"IC4125","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m34.9s","赤经D(J2000)":"13.059694444444444","赤纬(J2000)":"+18h48m14s","赤纬D(J2000)":"18.80388888888889","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"80","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11966","标识":"IC4126","M标识":"IC4126","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m36.4s","赤经D(J2000)":"13.060111111111112","赤纬(J2000)":"+19h19m24s","赤纬D(J2000)":"19.323333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, irregular figure, nuclear","简略描述":"eF, vS, iF, N"},{"ID":"11967","标识":"IC4127","M标识":"IC4127","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h3m17.5s","赤经D(J2000)":"13.054861111111112","赤纬(J2000)":"+38h2m46s","赤纬D(J2000)":"38.04611111111111","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"51","详细描述":"faint, very small, irregular figure, nebulous star","简略描述":"F, vS, iF, neb *"},{"ID":"11968","标识":"IC4128","M标识":"IC4128","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m41.2s","赤经D(J2000)":"13.061444444444446","赤纬(J2000)":"+20h13m2s","赤纬D(J2000)":"20.21722222222222","可见光星等V":"15.6","摄影(蓝光)星等B":"16.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"80","详细描述":"faint, small, brighter middle, spiral","简略描述":"F, S, bM, spir"},{"ID":"11969","标识":"IC4129","M标识":"IC4129","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m43.9s","赤经D(J2000)":"13.062194444444446","赤纬(J2000)":"+18h52m36s","赤纬D(J2000)":"18.87666666666667","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"30","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"11970","标识":"IC4130","M标识":"IC4130","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m46.6s","赤经D(J2000)":"13.062944444444446","赤纬(J2000)":"+19h16m16s","赤纬D(J2000)":"19.27111111111111","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"15.5","长轴(分)":"1","短轴(分)":"0.6","方位角":"69","详细描述":"considerably faint, small, round","简略描述":"cF, S, R"},{"ID":"11971","标识":"IC4131","M标识":"IC4131","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h3m25.5s","赤经D(J2000)":"13.057083333333335","赤纬(J2000)":"+38h57m4s","赤纬D(J2000)":"38.95111111111111","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"160","详细描述":"faint, considerably small, irregular figure, nuclear","简略描述":"F, cS, iF, N"},{"ID":"11972","标识":"IC4132","M标识":"IC4132","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h3m33.8s","赤经D(J2000)":"13.05938888888889","赤纬(J2000)":"+38h22m41s","赤纬D(J2000)":"38.378055555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11973","标识":"IC4133","M标识":"IC4133","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m50.9s","赤经D(J2000)":"13.06413888888889","赤纬(J2000)":"+27h59m15s","赤纬D(J2000)":"27.9875","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, much brighter middle","简略描述":"vF, vS, mbM"},{"ID":"11974","标识":"IC4134","M标识":"IC4134","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"IBm","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h2m4.2s","赤经D(J2000)":"13.0345","赤纬(J2000)":"-11h22m42s","赤纬D(J2000)":"-11.378333333333334","可见光星等V":"13.5","摄影(蓝光)星等B":"14.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.7","方位角":"170","详细描述":"very faint, small, much brighter middle","简略描述":"vF, S, mbM"},{"ID":"11975","标识":"IC4135","M标识":"IC4135","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h3m37.3s","赤经D(J2000)":"13.060361111111112","赤纬(J2000)":"+40h14m55s","赤纬D(J2000)":"40.24861111111111","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"40","详细描述":"very faint, considerably small, irregular figure, nuclear","简略描述":"vF, cS, iF, N"},{"ID":"11976","标识":"IC4136","M标识":"IC4136","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBcd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h4m19s","赤经D(J2000)":"13.071944444444444","赤纬(J2000)":"-7h38m56s","赤纬D(J2000)":"-7.648888888888888","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"145","详细描述":"most extremely faint, considerably small","简略描述":"eeF, cS"},{"ID":"11977","标识":"IC4137","M标识":"IC4137","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h3m59.2s","赤经D(J2000)":"13.066444444444445","赤纬(J2000)":"+22h44m26s","赤纬D(J2000)":"22.740555555555556","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"considerably faint, very small, irregular figure, nuclear","简略描述":"cF, vS, iF, N"},{"ID":"11978","标识":"IC4138","M标识":"IC4138","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h4m2s","赤经D(J2000)":"13.067222222222222","赤纬(J2000)":"+20h39m55s","赤纬D(J2000)":"20.665277777777778","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"170","详细描述":"","简略描述":"F, vS, iF, N, * 16 inv np, ? D *"},{"ID":"11979","标识":"IC4139","M标识":"IC4139","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h4m4.1s","赤经D(J2000)":"13.067805555555555","赤纬(J2000)":"+19h17m44s","赤纬D(J2000)":"19.295555555555556","可见光星等V":"15.8","摄影(蓝光)星等B":"16.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, irregular figure, nuclear, 2 stars to northeast","简略描述":"F, S, iF, N, 2 st nf"},{"ID":"11980","标识":"IC4140","M标识":"IC4140","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h4m6s","赤经D(J2000)":"13.068333333333333","赤纬(J2000)":"+20h5m47s","赤纬D(J2000)":"20.09638888888889","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, very small, round, questionable","简略描述":"vF, vS, R, ?"},{"ID":"11981","标识":"IC4141","M标识":"IC4141","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S R","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h4m7.7s","赤经D(J2000)":"13.068805555555555","赤纬(J2000)":"+19h12m38s","赤纬D(J2000)":"19.210555555555555","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"15.1","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11982","标识":"IC4142","M标识":"IC4142","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h3m47.4s","赤经D(J2000)":"13.063166666666667","赤纬(J2000)":"+38h11m41s","赤纬D(J2000)":"38.19472222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"11983","标识":"IC4143","M标识":"IC4143","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h3m45.6s","赤经D(J2000)":"13.062666666666667","赤纬(J2000)":"+40h12m25s","赤纬D(J2000)":"40.206944444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"11984","标识":"IC4144","M标识":"IC4144","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h3m50.2s","赤经D(J2000)":"13.063944444444445","赤纬(J2000)":"+36h56m33s","赤纬D(J2000)":"36.942499999999995","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.1","方位角":"6","详细描述":"faint, considerably small, irregular figure","简略描述":"F, cS, iF"},{"ID":"11985","标识":"IC4145","M标识":"IC4145","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h3m49.8s","赤经D(J2000)":"13.063833333333333","赤纬(J2000)":"+38h17m11s","赤纬D(J2000)":"38.28638888888889","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"140","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"11986","标识":"IC4146","M标识":"IC4146","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h4m10.3s","赤经D(J2000)":"13.069527777777777","赤纬(J2000)":"+19h16m41s","赤纬D(J2000)":"19.278055555555554","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, round, brighter middle","简略描述":"F, vS, R, bM"},{"ID":"11987","标识":"IC4147","M标识":"IC4147","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h4m9.5s","赤经D(J2000)":"13.069305555555555","赤纬(J2000)":"+20h15m1s","赤纬D(J2000)":"20.25027777777778","可见光星等V":"17.4","摄影(蓝光)星等B":"18","B-V":"0.6","表面亮度(mag\/arcmin2)":"15.4","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"170","详细描述":"very faint, small, diffuse","简略描述":"vF, S, dif"},{"ID":"11988","标识":"IC4148","M标识":"IC4148","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h4m10.6s","赤经D(J2000)":"13.069611111111112","赤纬(J2000)":"+19h15m33s","赤纬D(J2000)":"19.259166666666665","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.3","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"70","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"11989","标识":"IC4149","M标识":"IC4149","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h4m10.8s","赤经D(J2000)":"13.069666666666667","赤纬(J2000)":"+22h17m24s","赤纬D(J2000)":"22.290000000000003","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"90","详细描述":"","简略描述":"pF, vS, iF, N, * 9 p 2', * 15 sf"},{"ID":"11990","标识":"IC4150","M标识":"IC4150","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h4m13.1s","赤经D(J2000)":"13.070305555555555","赤纬(J2000)":"+21h59m14s","赤纬D(J2000)":"21.987222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"11991","标识":"IC4151","M标识":"IC4151","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h3m59.2s","赤经D(J2000)":"13.066444444444445","赤纬(J2000)":"+36h51m26s","赤纬D(J2000)":"36.85722222222223","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"10","详细描述":"very faint, considerably small, irregular figure","简略描述":"vF, cS, iF"},{"ID":"11992","标识":"IC4152","M标识":"IC4152","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h3m58.5s","赤经D(J2000)":"13.06625","赤纬(J2000)":"+38h11m57s","赤纬D(J2000)":"38.19916666666666","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"11993","标识":"IC4153","M标识":"IC4153","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h4m26.5s","赤经D(J2000)":"13.074027777777777","赤纬(J2000)":"+19h2m40s","赤纬D(J2000)":"19.044444444444448","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"11994","标识":"IC4154","M标识":"IC4154","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h4m28.3s","赤经D(J2000)":"13.074527777777778","赤纬(J2000)":"+23h34m30s","赤纬D(J2000)":"23.575","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"pretty faint, small, round","简略描述":"pF, S, R"},{"ID":"11995","标识":"IC4155","M标识":"IC4155","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h4m8.9s","赤经D(J2000)":"13.069138888888888","赤纬(J2000)":"+40h0m54s","赤纬D(J2000)":"40.015","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, diffuse","简略描述":"vF, S, iF, dif"},{"ID":"11996","标识":"IC4156","M标识":"IC4156","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h4m55.8s","赤经D(J2000)":"13.082166666666666","赤纬(J2000)":"-7h56m47s","赤纬D(J2000)":"-7.946388888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"0.7","方位角":"145","详细描述":"most extremely faint, considerably small, much extended 140°","简略描述":"eeF, cS, mE 140°"},{"ID":"11997","标识":"IC4157","M标识":"IC4157","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h4m18.4s","赤经D(J2000)":"13.071777777777777","赤纬(J2000)":"+38h39m56s","赤纬D(J2000)":"38.66555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, pL, iF, ? bi-N"},{"ID":"11998","标识":"IC4158","M标识":"IC4158","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h4m24.6s","赤经D(J2000)":"13.0735","赤纬(J2000)":"+36h28m50s","赤纬D(J2000)":"36.480555555555554","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"130","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"11999","标识":"IC4159","M标识":"IC4159","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h4m45.9s","赤经D(J2000)":"13.079416666666667","赤纬(J2000)":"+22h14m30s","赤纬D(J2000)":"22.241666666666667","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"12000","标识":"IC4160","M标识":"IC4160","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h4m48s","赤经D(J2000)":"13.08","赤纬(J2000)":"+22h53m35s","赤纬D(J2000)":"22.893055555555556","可见光星等V":"16.5","摄影(蓝光)星等B":"17.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"15","详细描述":"very faint, small, irregular figure, diffuse","简略描述":"vF, S, iF, dif"},{"ID":"12001","标识":"IC4161","M标识":"IC4161","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h4m35.2s","赤经D(J2000)":"13.076444444444444","赤纬(J2000)":"+39h58m39s","赤纬D(J2000)":"39.9775","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.5","短轴(分)":"0.1","方位角":"105","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"12002","标识":"IC4162","M标识":"IC4162","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h5m3s","赤经D(J2000)":"13.084166666666667","赤纬(J2000)":"+20h33m16s","赤纬D(J2000)":"20.554444444444446","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, small, irregular figure, nuclear, 14th magnitude star to southwest","简略描述":"vF, S, iF, N, * 14 sp"},{"ID":"12003","标识":"IC4163","M标识":"IC4163","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h5m7.9s","赤经D(J2000)":"13.085527777777779","赤纬(J2000)":"+20h46m16s","赤纬D(J2000)":"20.77111111111111","可见光星等V":"15.8","摄影(蓝光)星等B":"16.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"20","详细描述":"faint, very small, brighter middle, possibly spiral","简略描述":"F, vS, bM, ? spir"},{"ID":"12004","标识":"IC4164","M标识":"IC4164","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h5m14.5s","赤经D(J2000)":"13.087361111111111","赤纬(J2000)":"+20h32m49s","赤纬D(J2000)":"20.546944444444446","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.2","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"135","详细描述":"very faint, small, a nebulous cluster?, 14th magnitude star to north","简略描述":"vF, S, ? neb Cl, * 14 n"},{"ID":"12005","标识":"IC4165","M标识":"IC4165","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h4m57.1s","赤经D(J2000)":"13.082527777777777","赤纬(J2000)":"+39h55m29s","赤纬D(J2000)":"39.92472222222222","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"","简略描述":"F, cS, p dif"},{"ID":"12006","标识":"IC4166","M标识":"IC4166","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h5m18.7s","赤经D(J2000)":"13.088527777777779","赤纬(J2000)":"+31h26m31s","赤纬D(J2000)":"31.441944444444445","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"0","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"12007","标识":"IC4167","M标识":"IC4167","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h5m30.7s","赤经D(J2000)":"13.091861111111111","赤纬(J2000)":"+21h54m38s","赤纬D(J2000)":"21.910555555555554","可见光星等V":"16.5","摄影(蓝光)星等B":"17.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"170","详细描述":"very faint, very small, irregular figure, nuclear","简略描述":"vF, vS, iF, N"},{"ID":"12008","标识":"IC4168","M标识":"IC4168","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h5m10.8s","赤经D(J2000)":"13.086333333333334","赤纬(J2000)":"+40h2m59s","赤纬D(J2000)":"40.04972222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"70","详细描述":"faint, very small, round, brighter middle, 13th magnitude star to southwest","简略描述":"F, vS, R, bM, * 13 sp"},{"ID":"12009","标识":"IC4169","M标识":"IC4169","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h5m12.5s","赤经D(J2000)":"13.086805555555555","赤纬(J2000)":"+38h46m25s","赤纬D(J2000)":"38.77361111111111","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"12010","标识":"IC4170","M标识":"IC4170","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h5m35s","赤经D(J2000)":"13.093055555555557","赤纬(J2000)":"+21h8m5s","赤纬D(J2000)":"21.134722222222223","可见光星等V":"16.8","摄影(蓝光)星等B":"17.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"12011","标识":"IC4171","M标识":"IC4171","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h5m18.8s","赤经D(J2000)":"13.088555555555557","赤纬(J2000)":"+36h6m9s","赤纬D(J2000)":"36.1025","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"85","详细描述":"","简略描述":"F, cS, E 60°, bM"},{"ID":"12012","标识":"IC4172","M标识":"IC4172","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h6m33.2s","赤经D(J2000)":"13.109222222222222","赤纬(J2000)":"+22h51m2s","赤纬D(J2000)":"22.850555555555555","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"60","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"12013","标识":"IC4173","M标识":"IC4173","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h3m54.5s","赤经D(J2000)":"13.065138888888889","赤纬(J2000)":"-11h30m18s","赤纬D(J2000)":"-11.505","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"69","详细描述":"nebulous 13th magnitude star, southwestern of 2","简略描述":"Neb * 13, sp of 2"},{"ID":"12014","标识":"IC4174","M标识":"IC4174","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h5m28.7s","赤经D(J2000)":"13.091305555555556","赤纬(J2000)":"+36h23m56s","赤纬D(J2000)":"36.39888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, nuclear","简略描述":"vF, S, iF, N"},{"ID":"12015","标识":"IC4175","M标识":"IC4175","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h5m47.4s","赤经D(J2000)":"13.0965","赤纬(J2000)":"+20h22m27s","赤纬D(J2000)":"20.374166666666667","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"125","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"12016","标识":"IC4176","M标识":"IC4176","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h3m56.7s","赤经D(J2000)":"13.065750000000001","赤纬(J2000)":"-11h29m51s","赤纬D(J2000)":"-11.497499999999999","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"2","短轴(分)":"1.1","方位角":"54","详细描述":"pretty faint, pretty small, brighter middle, northeastern of 2","简略描述":"pF, pS, bM, nf of 2"},{"ID":"12017","标识":"IC4177","M标识":"IC4177","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h6m29s","赤经D(J2000)":"13.108055555555556","赤纬(J2000)":"-13h34m16s","赤纬D(J2000)":"-13.571111111111112","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"85","详细描述":"very faint, very small, round, suspected","简略描述":"vF, vS, R, susp"},{"ID":"12018","标识":"IC4178","M标识":"IC4178","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h5m41.6s","赤经D(J2000)":"13.094888888888889","赤纬(J2000)":"+36h1m3s","赤纬D(J2000)":"36.0175","可见光星等V":"15.1","摄影(蓝光)星等B":"15.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"123","详细描述":"very faint, considerably small, round, brighter middle, diffuse","简略描述":"vF, cS, R, bM, dif"},{"ID":"12019","标识":"IC4179","M标识":"IC4179","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h5m45.8s","赤经D(J2000)":"13.096055555555557","赤纬(J2000)":"+37h11m55s","赤纬D(J2000)":"37.198611111111106","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"F, vS, iF, N, * 14 p"},{"ID":"12020","标识":"IC4180","M标识":"IC4180","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h6m56.5s","赤经D(J2000)":"13.115694444444443","赤纬(J2000)":"-23h55m2s","赤纬D(J2000)":"-23.91722222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"165","详细描述":"most extremely faint, extremely small, round, 1st of 3","简略描述":"eeF, eS, R, 1st of 3"},{"ID":"12021","标识":"IC4181","M标识":"IC4181","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h6m6.4s","赤经D(J2000)":"13.101777777777777","赤纬(J2000)":"+21h29m38s","赤纬D(J2000)":"21.49388888888889","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"considerably faint, very small, round, brighter middle","简略描述":"cF, vS, R, bM"},{"ID":"12022","标识":"IC4182","M标识":"IC4182","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h5m49.3s","赤经D(J2000)":"13.097027777777779","赤纬(J2000)":"+37h36m23s","赤纬D(J2000)":"37.60638888888889","可见光星等V":"11.1","摄影(蓝光)星等B":"11.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"4.8","短轴(分)":"4.1","方位角":"90","详细描述":"considerably faint, very large, irregular figure, nuclear","简略描述":"cF, vL, iF, N"},{"ID":"12023","标识":"IC4183","M标识":"IC4183","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h6m11.5s","赤经D(J2000)":"13.103194444444444","赤纬(J2000)":"+21h30m17s","赤纬D(J2000)":"21.504722222222224","可见光星等V":"16.2","摄影(蓝光)星等B":"17.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, irregular figure, nuclear","简略描述":"F, vS, iF, N"},{"ID":"12024","标识":"IC4184","M标识":"IC4184","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h5m51.7s","赤经D(J2000)":"13.097694444444445","赤纬(J2000)":"+38h50m16s","赤纬D(J2000)":"38.83777777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"110","详细描述":"pretty faint, small, irregular figure, nuclear","简略描述":"pF, S, iF, N"},{"ID":"12025","标识":"IC4185","M标识":"IC4185","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h6m12.5s","赤经D(J2000)":"13.103472222222221","赤纬(J2000)":"+21h46m11s","赤纬D(J2000)":"21.76972222222222","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"140","详细描述":"","简略描述":"vF, S, iF, att * 15 n"},{"ID":"12026","标识":"IC4186","M标识":"IC4186","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h5m57.8s","赤经D(J2000)":"13.099388888888889","赤纬(J2000)":"+36h59m7s","赤纬D(J2000)":"36.98527777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"12027","标识":"IC4187","M标识":"IC4187","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h5m59.7s","赤经D(J2000)":"13.099916666666667","赤纬(J2000)":"+36h17m54s","赤纬D(J2000)":"36.29833333333333","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, irregular figure, nuclear, double star to south","简略描述":"F, S, iF, N, D * s"},{"ID":"12028","标识":"IC4188","M标识":"IC4188","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h6m2.5s","赤经D(J2000)":"13.100694444444445","赤纬(J2000)":"+36h19m38s","赤纬D(J2000)":"36.327222222222225","可见光星等V":"15.7","摄影(蓝光)星等B":"16.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"72","详细描述":"","简略描述":"vF, S, iF, cF neb p 1'"},{"ID":"12029","标识":"IC4189","M标识":"IC4189","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h6m3.7s","赤经D(J2000)":"13.101027777777777","赤纬(J2000)":"+35h58m48s","赤纬D(J2000)":"35.980000000000004","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"0","详细描述":"","简略描述":"pF, pS, E 60°, bM"},{"ID":"12030","标识":"IC4190","M标识":"IC4190","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h6m6.2s","赤经D(J2000)":"13.101722222222222","赤纬(J2000)":"+37h36m50s","赤纬D(J2000)":"37.61388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, considerably small, irregular figure, difficult","简略描述":"vF, cS, iF, diffic"},{"ID":"12031","标识":"IC4191","M标识":"IC4191","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"苍蝇座","星座(En)":"MUS","赤经(J2000)":"13h8m47.5s","赤经D(J2000)":"13.146527777777777","赤纬(J2000)":"-67h38m35s","赤纬D(J2000)":"-67.64305555555556","可见光星等V":"10.6","摄影(蓝光)星等B":"12","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.08","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"12032","标识":"IC4192","M标识":"IC4192","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h6m8.5s","赤经D(J2000)":"13.102361111111112","赤纬(J2000)":"+37h36m19s","赤纬D(J2000)":"37.60527777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure, very difficult","简略描述":"vF, S, iF, v diffic"},{"ID":"12033","标识":"IC4193","M标识":"IC4193","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h6m6.2s","赤经D(J2000)":"13.101722222222222","赤纬(J2000)":"+39h25m24s","赤纬D(J2000)":"39.42333333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"50","详细描述":"","简略描述":"pF, S, iF, N, eF * att np"},{"ID":"12034","标识":"IC4194","M标识":"IC4194","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h6m7.8s","赤经D(J2000)":"13.102166666666667","赤纬(J2000)":"+38h52m24s","赤纬D(J2000)":"38.873333333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"12035","标识":"IC4195","M标识":"IC4195","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h6m15.6s","赤经D(J2000)":"13.104333333333333","赤纬(J2000)":"+37h2m17s","赤纬D(J2000)":"37.03805555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, irregular figure","简略描述":"vF, S, iF"},{"ID":"12036","标识":"IC4196","M标识":"IC4196","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h7m33.6s","赤经D(J2000)":"13.126000000000001","赤纬(J2000)":"-24h0m32s","赤纬D(J2000)":"-24.00888888888889","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.8","短轴(分)":"1","方位角":"140","详细描述":"","简略描述":"eeF, eS, R, * 11 p 4', 2nd of 3"},{"ID":"12037","标识":"IC4197","M标识":"IC4197","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h8m4.3s","赤经D(J2000)":"13.134527777777777","赤纬(J2000)":"-23h47m49s","赤纬D(J2000)":"-23.796944444444446","可见光星等V":"12.4","摄影(蓝光)星等B":"13.5","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"163","详细描述":"","简略描述":"eeF, eS, R, 3rd of 3, * 8 f 37s"},{"ID":"12038","标识":"IC4198","M标识":"IC4198","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB?","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h7m42.8s","赤经D(J2000)":"13.128555555555556","赤纬(J2000)":"+24h48m40s","赤纬D(J2000)":"24.811111111111114","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.7","方位角":"100","详细描述":"","简略描述":"F, cS, R, III 346 nr"},{"ID":"12039","标识":"IC4199","M标识":"IC4199","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h7m32.7s","赤经D(J2000)":"13.12575","赤纬(J2000)":"+35h51m29s","赤纬D(J2000)":"35.85805555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"12040","标识":"IC4200","M标识":"IC4200","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h9m34.8s","赤经D(J2000)":"13.159666666666666","赤纬(J2000)":"-51h58m7s","赤纬D(J2000)":"-51.968611111111116","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"1","方位角":"152","详细描述":"faint, brighter middle, magnitude 14.5","简略描述":"F, bM, magn 14.5"},{"ID":"12041","标识":"IC4201","M标识":"IC4201","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h7m51.3s","赤经D(J2000)":"13.130916666666668","赤纬(J2000)":"+35h50m2s","赤纬D(J2000)":"35.83388888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, irregular figure, nuclear","简略描述":"F, S, iF, N"},{"ID":"12042","标识":"IC4202","M标识":"IC4202","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h8m31.6s","赤经D(J2000)":"13.142111111111111","赤纬(J2000)":"+24h42m3s","赤纬D(J2000)":"24.700833333333332","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.7","短轴(分)":"0.2","方位角":"143","详细描述":"faint, considerably small, extended, gradually brighter middle","简略描述":"F, cS, E, gbM"},{"ID":"12043","标识":"IC4203","M标识":"IC4203","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h8m18.9s","赤经D(J2000)":"13.138583333333333","赤纬(J2000)":"+40h25m40s","赤纬D(J2000)":"40.42777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, diffuse","简略描述":"eF, S, dif"},{"ID":"12044","标识":"IC4204","M标识":"IC4204","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h8m21.6s","赤经D(J2000)":"13.139333333333333","赤纬(J2000)":"+39h27m39s","赤纬D(J2000)":"39.46083333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.2","方位角":"43","详细描述":"faint, considerably small, possibly spiral","简略描述":"F, cS, ? spir"},{"ID":"12045","标识":"IC4205","M标识":"IC4205","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"大熊座","星座(En)":"UMA","赤经(J2000)":"13h8m41.6s","赤经D(J2000)":"13.144888888888888","赤纬(J2000)":"+52h46m28s","赤纬D(J2000)":"52.77444444444444","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"33","详细描述":"very faint, pretty large, round (= IC 853?)","简略描述":"vF, pL, R [? = I.C. 853]"},{"ID":"12046","标识":"IC4206","M标识":"IC4206","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h9m22s","赤经D(J2000)":"13.15611111111111","赤纬(J2000)":"+39h1m20s","赤纬D(J2000)":"39.02222222222222","可见光星等V":"99","摄影(蓝光)星等B":"14.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, irregular figure, nuclear","简略描述":"pF, S, iF, N"},{"ID":"12047","标识":"IC4207","M标识":"IC4207","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h9m27s","赤经D(J2000)":"13.1575","赤纬(J2000)":"+37h49m22s","赤纬D(J2000)":"37.82277777777778","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"0","详细描述":"very faint, considerably small, irregular figure","简略描述":"vF, cS, iF"},{"ID":"12048","标识":"IC4208","M标识":"IC4208","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h9m38s","赤经D(J2000)":"13.160555555555556","赤纬(J2000)":"+37h15m20s","赤纬D(J2000)":"37.25555555555555","可见光星等V":"99","摄影(蓝光)星等B":"14.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, considerably small, brighter middle, spiral","简略描述":"F, cS, bM, spir"},{"ID":"12049","标识":"IC4209","M标识":"IC4209","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h10m22.4s","赤经D(J2000)":"13.172888888888888","赤纬(J2000)":"-7h10m15s","赤纬D(J2000)":"-7.170833333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"102","详细描述":"extremely faint, extremely small, considerably extended 100°","简略描述":"eF, cS, cE 100°"},{"ID":"12050","标识":"IC4210","M标识":"IC4210","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h10m47.7s","赤经D(J2000)":"13.179916666666665","赤纬(J2000)":"+29h42m33s","赤纬D(J2000)":"29.709166666666665","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"0","详细描述":"extremely faint, small, diffuse","简略描述":"eF, S, dif"},{"ID":"12051","标识":"IC4211","M标识":"IC4211","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h10m56.4s","赤经D(J2000)":"13.182333333333332","赤纬(J2000)":"+37h10m37s","赤纬D(J2000)":"37.176944444444445","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, small, extended 315°, brighter middle","简略描述":"cF, S, E 315°, bM"},{"ID":"12052","标识":"IC4212","M标识":"IC4212","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h12m2.8s","赤经D(J2000)":"13.200777777777777","赤纬(J2000)":"-6h59m37s","赤纬D(J2000)":"-6.993611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"15.6","长轴(分)":"3.1","短轴(分)":"2.4","方位角":"54","详细描述":"extremely faint, extremely small, considerably extended 20°","简略描述":"eF, cS, cE 20°"},{"ID":"12053","标识":"IC4213","M标识":"IC4213","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h12m11.3s","赤经D(J2000)":"13.203138888888889","赤纬(J2000)":"+35h40m17s","赤纬D(J2000)":"35.671388888888885","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.5","短轴(分)":"0.5","方位角":"174","详细描述":"faint, large, very much extended north-south, gradually very little brighter middle","简略描述":"F, L, vmE ns, gvlbM"},{"ID":"12054","标识":"IC4214","M标识":"IC4214","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h17m42.7s","赤经D(J2000)":"13.295194444444444","赤纬(J2000)":"-32h6m5s","赤纬D(J2000)":"-32.10138888888889","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2.8","短轴(分)":"1.8","方位角":"0","详细描述":"pretty bright, pretty small, round, 9th magnitude star to southeast","简略描述":"pB, pS, R, * 9 sf"},{"ID":"12055","标识":"IC4215","M标识":"IC4215","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h16m16.6s","赤经D(J2000)":"13.271277777777778","赤纬(J2000)":"+25h24m17s","赤纬D(J2000)":"25.404722222222222","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.2","方位角":"45","详细描述":"faint, small, extended 210°","简略描述":"F, S, E 210°"},{"ID":"12056","标识":"IC4216","M标识":"IC4216","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h17m1.8s","赤经D(J2000)":"13.283833333333334","赤纬(J2000)":"-10h46m11s","赤纬D(J2000)":"-10.769722222222223","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"0.8","方位角":"55","详细描述":"very faint, considerably large, considerably extended 40°","简略描述":"vF, cL, cE 40°"},{"ID":"12057","标识":"IC4217","M标识":"IC4217","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h17m13.2s","赤经D(J2000)":"13.286999999999999","赤纬(J2000)":"-13h9m20s","赤纬D(J2000)":"-13.155555555555557","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"18","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"12058","标识":"IC4218","M标识":"IC4218","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h17m3.4s","赤经D(J2000)":"13.284277777777778","赤纬(J2000)":"-2h15m43s","赤纬D(J2000)":"-2.2619444444444445","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"158","详细描述":"extremely faint, extremely small, considerably extended 170°; suspected","简略描述":"eF, eS, cE 170°, susp"},{"ID":"12059","标识":"IC4219","M标识":"IC4219","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h18m29.8s","赤经D(J2000)":"13.308277777777779","赤纬(J2000)":"-31h37m52s","赤纬D(J2000)":"-31.63111111111111","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"1","方位角":"","详细描述":"most extremely faint, pretty large, round, 9th magnitude star to southwest","简略描述":"eeF, pL, R, * 9 sp"},{"ID":"12060","标识":"IC4220","M标识":"IC4220","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h17m54.4s","赤经D(J2000)":"13.298444444444444","赤纬(J2000)":"-13h36m20s","赤纬D(J2000)":"-13.605555555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"111","详细描述":"extremely faint, extremely small, considerably extended 130°","简略描述":"eF, eS, cE 130°"},{"ID":"12061","标识":"IC4221","M标识":"IC4221","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h18m30.4s","赤经D(J2000)":"13.308444444444445","赤纬(J2000)":"-14h36m34s","赤纬D(J2000)":"-14.609444444444444","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"165","详细描述":"considerably faint, small, much extended 165°, considerably brighter middle","简略描述":"cF, S, mE 165°, cbM"},{"ID":"12062","标识":"IC4222","M标识":"IC4222","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h19m40.3s","赤经D(J2000)":"13.32786111111111","赤纬(J2000)":"-27h25m45s","赤纬D(J2000)":"-27.429166666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"1.2","方位角":"64","详细描述":"most extremely faint, extremely small, round","简略描述":"eeF, eS, R"},{"ID":"12063","标识":"IC4223","M标识":"IC4223","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h18m55.2s","赤经D(J2000)":"13.315333333333333","赤纬(J2000)":"+7h47m43s","赤纬D(J2000)":"7.795277777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"160","详细描述":"extremely faint, small, mottled but not resolved","简略描述":"eF, S, r"},{"ID":"12064","标识":"IC4224","M标识":"IC4224","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h19m4.7s","赤经D(J2000)":"13.317972222222222","赤纬(J2000)":"-2h30m57s","赤纬D(J2000)":"-2.515833333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"105","详细描述":"extremely faint, small, considerably extended 110°, suspected","简略描述":"eF, S, cE 110°, susp"},{"ID":"12065","标识":"IC4225","M标识":"IC4225","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h20m0.9s","赤经D(J2000)":"13.333583333333333","赤纬(J2000)":"+31h58m55s","赤纬D(J2000)":"31.981944444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.3","方位角":"133","详细描述":"faint, considerably small, round","简略描述":"F, cS, R"},{"ID":"12066","标识":"IC4226","M标识":"IC4226","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h20m30.3s","赤经D(J2000)":"13.341750000000001","赤纬(J2000)":"+32h0m16s","赤纬D(J2000)":"32.004444444444445","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"135","详细描述":"faint, very small, stellar nucleus","简略描述":"F, vS, stell N"},{"ID":"12067","标识":"IC4227","M标识":"IC4227","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h20m53.4s","赤经D(J2000)":"13.348166666666668","赤纬(J2000)":"+32h11m28s","赤纬D(J2000)":"32.191111111111105","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"85","详细描述":"faint, small, gradually brighter middle, mottled but not resolved","简略描述":"F, S, gbM, r"},{"ID":"12068","标识":"IC4228","M标识":"IC4228","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h21m34.2s","赤经D(J2000)":"13.359499999999999","赤纬(J2000)":"+25h30m56s","赤纬D(J2000)":"25.515555555555554","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"70","详细描述":"faint, small, mottled but not resolved","简略描述":"F, S, r"},{"ID":"12069","标识":"IC4229","M标识":"IC4229","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h22m26.2s","赤经D(J2000)":"13.373944444444446","赤纬(J2000)":"-2h25m5s","赤纬D(J2000)":"-2.4180555555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.8","方位角":"115","详细描述":"extremely faint, extremely small, round, suspected","简略描述":"eF, eS, R, susp"},{"ID":"12070","标识":"IC4230","M标识":"IC4230","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h21m59.3s","赤经D(J2000)":"13.366472222222221","赤纬(J2000)":"+26h44m2s","赤纬D(J2000)":"26.733888888888888","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.2","方位角":"1","详细描述":"faint, small, round, nuclear","简略描述":"F, S, R, N"},{"ID":"12071","标识":"IC4231","M标识":"IC4231","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h23m13.2s","赤经D(J2000)":"13.386999999999999","赤纬(J2000)":"-26h18m1s","赤纬D(J2000)":"-26.30027777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"0.4","方位角":"32","详细描述":"pretty large, very much extended","简略描述":"pL, vmE"},{"ID":"12072","标识":"IC4232","M标识":"IC4232","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h23m22.2s","赤经D(J2000)":"13.3895","赤纬(J2000)":"-26h6m33s","赤纬D(J2000)":"-26.109166666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"2","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12073","标识":"IC4233","M标识":"IC4233","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E6","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h24m50.2s","赤经D(J2000)":"13.413944444444445","赤纬(J2000)":"-30h18m29s","赤纬D(J2000)":"-30.308055555555555","可见光星等V":"12.1","摄影(蓝光)星等B":"13.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.2","短轴(分)":"0.7","方位角":"9","详细描述":"most extremely faint, pretty small, round, 4 stars to southeast","简略描述":"eeF, pS, R, 4 st sf"},{"ID":"12074","标识":"IC4234","M标识":"IC4234","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h23m0s","赤经D(J2000)":"13.383333333333333","赤纬(J2000)":"+27h7m0s","赤纬D(J2000)":"27.116666666666667","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"27","详细描述":"faint, considerably small, round, nuclear, mottled but not resolved","简略描述":"F, cS, R, N, r"},{"ID":"12075","标识":"IC4235","M标识":"IC4235","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h23m52.9s","赤经D(J2000)":"13.398027777777777","赤纬(J2000)":"-12h44m34s","赤纬D(J2000)":"-12.742777777777777","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"80","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"12076","标识":"IC4236","M标识":"IC4236","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h23m27.4s","赤经D(J2000)":"13.390944444444443","赤纬(J2000)":"+6h23m34s","赤纬D(J2000)":"6.392777777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"100","详细描述":"most extremely faint, pretty small, much extended, very difficult","简略描述":"eeF, pS, mE, v diffic"},{"ID":"12077","标识":"IC4237","M标识":"IC4237","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h24m32.6s","赤经D(J2000)":"13.409055555555556","赤纬(J2000)":"-21h8m13s","赤纬D(J2000)":"-21.136944444444445","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.5","短轴(分)":"1.5","方位角":"140","详细描述":"very faint, small, little brighter middle, mottled but not resolved","简略描述":"vF, S, lbM, r"},{"ID":"12078","标识":"IC4238","M标识":"IC4238","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h23m59.9s","赤经D(J2000)":"13.399972222222221","赤纬(J2000)":"+30h55m57s","赤纬D(J2000)":"30.9325","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"25","详细描述":"faint, very small, diffuse, (NGC) 5131 to northwest","简略描述":"F, vS, dif, 5131 np"},{"ID":"12079","标识":"IC4239","M标识":"IC4239","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h24m25.4s","赤经D(J2000)":"13.407055555555555","赤纬(J2000)":"+30h57m33s","赤纬D(J2000)":"30.959166666666665","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"145","详细描述":"faint, considerably small, diffuse","简略描述":"F, cS, dif"},{"ID":"12080","标识":"IC4240","M标识":"IC4240","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h24m27.5s","赤经D(J2000)":"13.40763888888889","赤纬(J2000)":"+30h58m40s","赤纬D(J2000)":"30.977777777777778","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"35","详细描述":"faint, very small, diffuse","简略描述":"F, vS, dif"},{"ID":"12081","标识":"IC4241","M标识":"IC4241","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h24m46.5s","赤经D(J2000)":"13.412916666666668","赤纬(J2000)":"+26h44m19s","赤纬D(J2000)":"26.738611111111112","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, irregular figure, 12.5 magnitude star attached","简略描述":"F, S, iF, * 12.5 att"},{"ID":"12082","标识":"IC4242","M标识":"IC4242","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h24m41.1s","赤经D(J2000)":"13.411416666666668","赤纬(J2000)":"+31h1m34s","赤纬D(J2000)":"31.02611111111111","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"125","详细描述":"faint, small, round, nuclear","简略描述":"F, S, R, N"},{"ID":"12083","标识":"IC4243","M标识":"IC4243","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h25m51.2s","赤经D(J2000)":"13.430888888888889","赤纬(J2000)":"-27h37m36s","赤纬D(J2000)":"-27.62666666666667","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12084","标识":"IC4244","M标识":"IC4244","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h24m56.2s","赤经D(J2000)":"13.415611111111112","赤纬(J2000)":"+26h27m50s","赤纬D(J2000)":"26.46388888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.1","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"12085","标识":"IC4245","M标识":"IC4245","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h25m59s","赤经D(J2000)":"13.433055555555555","赤纬(J2000)":"-26h40m39s","赤纬D(J2000)":"-26.677500000000002","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.5","方位角":"107","详细描述":"one of 2 nebulae with a difference in right ascension of 0.3 arcmin","简略描述":"2 neb, Δα = 0'.3"},{"ID":"12086","标识":"IC4246","M标识":"IC4246","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h26m0.2s","赤经D(J2000)":"13.433388888888889","赤纬(J2000)":"-26h40m40s","赤纬D(J2000)":"-26.67777777777778","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"140","详细描述":"one of 2 nebulae with a difference in right ascension of 0.3 arcmin","简略描述":"2 neb, Δα = 0'.3"},{"ID":"12087","标识":"IC4247","M标识":"IC4247","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h26m44.4s","赤经D(J2000)":"13.445666666666668","赤纬(J2000)":"-30h21m43s","赤纬D(J2000)":"-30.361944444444447","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"153","详细描述":"small, extended, magnitude 14","简略描述":"S, E, magn 14"},{"ID":"12088","标识":"IC4248","M标识":"IC4248","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h26m47.1s","赤经D(J2000)":"13.446416666666666","赤纬(J2000)":"-29h52m51s","赤纬D(J2000)":"-29.880833333333335","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"103","详细描述":"faint, spiral, 13th magnitude star in middle","简略描述":"F, spir, * 13 in M"},{"ID":"12089","标识":"IC4249","M标识":"IC4249","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h27m6.3s","赤经D(J2000)":"13.451749999999999","赤纬(J2000)":"-27h57m24s","赤纬D(J2000)":"-27.956666666666667","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"107","详细描述":"very faint, brighter middle, magnitude 13, near bright star","简略描述":"vF, bM, magn 13, nr B *"},{"ID":"12090","标识":"IC4250","M标识":"IC4250","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S+C","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h26m9.1s","赤经D(J2000)":"13.43586111111111","赤纬(J2000)":"+26h28m38s","赤纬D(J2000)":"26.47722222222222","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"85","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"12091","标识":"IC4251","M标识":"IC4251","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h27m24.1s","赤经D(J2000)":"13.456694444444445","赤纬(J2000)":"-29h26m40s","赤纬D(J2000)":"-29.444444444444446","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"142","详细描述":"very faint, brighter middle, magnitude 14, h3507 to southeast","简略描述":"vF, bM, magn 14, h 3507 sf"},{"ID":"12092","标识":"IC4252","M标识":"IC4252","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h27m28s","赤经D(J2000)":"13.457777777777777","赤纬(J2000)":"-27h19m28s","赤纬D(J2000)":"-27.324444444444445","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"135","详细描述":"brighter middle, magnitude 13.5","简略描述":"bM, magn 13.5"},{"ID":"12093","标识":"IC4253","M标识":"IC4253","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h27m32.2s","赤经D(J2000)":"13.458944444444445","赤纬(J2000)":"-27h52m22s","赤纬D(J2000)":"-27.872777777777777","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"133","详细描述":"brighter middle, possibly spiral","简略描述":"bM, ? spir"},{"ID":"12094","标识":"IC4254","M标识":"IC4254","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h27m45.3s","赤经D(J2000)":"13.462583333333333","赤纬(J2000)":"-27h13m19s","赤纬D(J2000)":"-27.221944444444443","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"brighter middle, diffuse, magnitude 14.5","简略描述":"bM, dif, magn 14.5"},{"ID":"12095","标识":"IC4255","M标识":"IC4255","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h28m0.1s","赤经D(J2000)":"13.466694444444444","赤纬(J2000)":"-27h21m14s","赤纬D(J2000)":"-27.35388888888889","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"35","详细描述":"brighter middle, magnitude 13.5","简略描述":"bM, magn 13.5"},{"ID":"12096","标识":"IC4256","M标识":"IC4256","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h27m3.1s","赤经D(J2000)":"13.450861111111111","赤纬(J2000)":"+30h58m35s","赤纬D(J2000)":"30.976388888888888","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"45","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"12097","标识":"IC4257","M标识":"IC4257","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h27m20.5s","赤经D(J2000)":"13.455694444444443","赤纬(J2000)":"+46h52m6s","赤纬D(J2000)":"46.86833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, round, diffuse","简略描述":"eF, S, R, dif"},{"ID":"12098","标识":"IC4258","M标识":"IC4258","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h27m53.3s","赤经D(J2000)":"13.464805555555555","赤纬(J2000)":"+28h30m31s","赤纬D(J2000)":"28.50861111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"30","详细描述":"faint, small, gradually brighter middle and nucleus","简略描述":"F, S, gbMN"},{"ID":"12099","标识":"IC4259","M标识":"IC4259","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h29m28.2s","赤经D(J2000)":"13.491166666666667","赤纬(J2000)":"-30h8m3s","赤纬D(J2000)":"-30.134166666666665","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.5","方位角":"162","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12100","标识":"IC4260","M标识":"IC4260","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h29m40.4s","赤经D(J2000)":"13.494555555555555","赤纬(J2000)":"-28h15m58s","赤纬D(J2000)":"-28.266111111111112","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.2","方位角":"94","详细描述":"brighter middle, magnitude 14.5","简略描述":"bM, magn 14.5"},{"ID":"12101","标识":"IC4261","M标识":"IC4261","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h29m47.6s","赤经D(J2000)":"13.496555555555554","赤纬(J2000)":"-28h0m23s","赤纬D(J2000)":"-28.00638888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.7","方位角":"131","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12102","标识":"IC4262","M标识":"IC4262","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h30m23.1s","赤经D(J2000)":"13.506416666666667","赤纬(J2000)":"-28h16m14s","赤纬D(J2000)":"-28.270555555555553","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"62","详细描述":"brighter middle, wisps extending 0.1 arcmin","简略描述":"bM, wisps extend 0'.1"},{"ID":"12103","标识":"IC4263","M标识":"IC4263","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h28m33.4s","赤经D(J2000)":"13.475944444444444","赤纬(J2000)":"+46h55m37s","赤纬D(J2000)":"46.926944444444445","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"105","详细描述":"considerably faint, pretty large, much extended, much brighter middle","简略描述":"eF, pL, mE, mbM"},{"ID":"12104","标识":"IC4264","M标识":"IC4264","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h30m17.5s","赤经D(J2000)":"13.504861111111111","赤纬(J2000)":"-27h55m43s","赤纬D(J2000)":"-27.928611111111113","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.7","短轴(分)":"0.4","方位角":"103","详细描述":"brighter middle, magnitude 14.5","简略描述":"bM, magn 14.5"},{"ID":"12105","标识":"IC4265","M标识":"IC4265","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa?","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h30m22.9s","赤经D(J2000)":"13.506361111111111","赤纬(J2000)":"-25h45m56s","赤纬D(J2000)":"-25.765555555555554","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"178","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12106","标识":"IC4266","M标识":"IC4266","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h29m5.7s","赤经D(J2000)":"13.484916666666665","赤纬(J2000)":"+37h36m42s","赤纬D(J2000)":"37.611666666666665","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"10","详细描述":"faint, small, round, nuclear","简略描述":"F, S, R, N"},{"ID":"12107","标识":"IC4267","M标识":"IC4267","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h30m36s","赤经D(J2000)":"13.51","赤纬(J2000)":"-26h15m22s","赤纬D(J2000)":"-26.25611111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"137","详细描述":"wisp, 0.7 arcmin long","简略描述":"wisp, 0'.7 long"},{"ID":"12108","标识":"IC4268","M标识":"IC4268","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h29m12.2s","赤经D(J2000)":"13.486722222222221","赤纬(J2000)":"+37h39m40s","赤纬D(J2000)":"37.66111111111111","可见光星等V":"15.6","摄影(蓝光)星等B":"16.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, small, round, nuclear","简略描述":"F, S, R, N"},{"ID":"12109","标识":"IC4269","M标识":"IC4269","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h29m20.9s","赤经D(J2000)":"13.489138888888888","赤纬(J2000)":"+37h37m25s","赤纬D(J2000)":"37.62361111111111","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"111","详细描述":"faint, small, nuclear","简略描述":"F, S, N"},{"ID":"12110","标识":"IC4270","M标识":"IC4270","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h30m49.1s","赤经D(J2000)":"13.513638888888888","赤纬(J2000)":"-25h20m1s","赤纬D(J2000)":"-25.33361111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12111","标识":"IC4271","M标识":"IC4271","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h29m21.4s","赤经D(J2000)":"13.489277777777778","赤纬(J2000)":"+37h24m49s","赤纬D(J2000)":"37.41361111111111","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"9","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"12112","标识":"IC4272","M标识":"IC4272","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h31m16.4s","赤经D(J2000)":"13.521222222222223","赤纬(J2000)":"-29h57m24s","赤纬D(J2000)":"-29.956666666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.2","方位角":"121","详细描述":"brighter middle, magnitude 14, possibly double","简略描述":"bM, ? D, magn 14"},{"ID":"12113","标识":"IC4273","M标识":"IC4273","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h31m29.8s","赤经D(J2000)":"13.524944444444445","赤纬(J2000)":"-28h53m38s","赤纬D(J2000)":"-28.89388888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"33","详细描述":"brighter middle, magnitude 13","简略描述":"bM, magn 13"},{"ID":"12114","标识":"IC4274","M标识":"IC4274","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"PN","含重复类型":"Dup","形态":"PN","星座(Zh)":"苍蝇座","星座(En)":"MUS","赤经(J2000)":"13h33m32.9s","赤经D(J2000)":"13.55913888888889","赤纬(J2000)":"-65h58m25s","赤纬D(J2000)":"-65.97361111111111","可见光星等V":"99","摄影(蓝光)星等B":"10.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.33","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"12115","标识":"IC4275","M标识":"IC4275","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h31m51.1s","赤经D(J2000)":"13.530861111111111","赤纬(J2000)":"-29h43m56s","赤纬D(J2000)":"-29.73222222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"22","详细描述":"brighter middle, magnitude 12.5","简略描述":"bM, magn 12.5"},{"ID":"12116","标识":"IC4276","M标识":"IC4276","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h32m6.1s","赤经D(J2000)":"13.535027777777778","赤纬(J2000)":"-28h9m23s","赤纬D(J2000)":"-28.156388888888888","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.2","方位角":"62","详细描述":"brighter middle, wisps 0.2 arcmin each side","简略描述":"bM, wisps 0'.2 each side"},{"ID":"12117","标识":"IC4277","M标识":"IC4277","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h30m16.5s","赤经D(J2000)":"13.504583333333333","赤纬(J2000)":"+47h18m52s","赤纬D(J2000)":"47.31444444444444","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.1","方位角":"95","详细描述":"extremely faint, small, very much extended, northeast of M51","简略描述":"eF, S, vmE, nf M 51"},{"ID":"12118","标识":"IC4278","M标识":"IC4278","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h30m27.4s","赤经D(J2000)":"13.50761111111111","赤纬(J2000)":"+47h14m49s","赤纬D(J2000)":"47.246944444444445","可见光星等V":"15.4","摄影(蓝光)星等B":"16","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"170","详细描述":"extremely faint, very small, round, brighter middle, east of M51","简略描述":"eF, vS, R, bM, f M 51"},{"ID":"12119","标识":"IC4279","M标识":"IC4279","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h32m30.9s","赤经D(J2000)":"13.541916666666667","赤纬(J2000)":"-27h7m39s","赤纬D(J2000)":"-27.1275","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"51","详细描述":"brighter middle, possible wisps 0.3 arcmin long","简略描述":"bM, ? wisps 0'.3 l"},{"ID":"12120","标识":"IC4280","M标识":"IC4280","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h32m53.4s","赤经D(J2000)":"13.548166666666667","赤纬(J2000)":"-24h12m25s","赤纬D(J2000)":"-24.206944444444442","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"54","详细描述":"extremely faint, pretty small, round, star to northeast, very faint star to north","简略描述":"eF, pS, R, * nf, vF * n"},{"ID":"12121","标识":"IC4281","M标识":"IC4281","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h32m38.5s","赤经D(J2000)":"13.544027777777778","赤纬(J2000)":"-27h10m9s","赤纬D(J2000)":"-27.16916666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"94","详细描述":"brighter middle, magnitude 13.5","简略描述":"bM, magn 13.5"},{"ID":"12122","标识":"IC4282","M标识":"IC4282","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"dE?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h31m19.8s","赤经D(J2000)":"13.522166666666667","赤纬(J2000)":"+47h11m2s","赤纬D(J2000)":"47.18388888888889","可见光星等V":"17.4","摄影(蓝光)星等B":"18","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, small, round, diffuse","简略描述":"eF, S, R, dif"},{"ID":"12123","标识":"IC4283","M标识":"IC4283","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h32m10.7s","赤经D(J2000)":"13.536305555555556","赤纬(J2000)":"+28h23m20s","赤纬D(J2000)":"28.38888888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"70","详细描述":"faint, small, round, 14th magnitude star attached","简略描述":"F, S, R, * 14 att"},{"ID":"12124","标识":"IC4284","M标识":"IC4284","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h31m31.9s","赤经D(J2000)":"13.525527777777778","赤纬(J2000)":"+46h47m41s","赤纬D(J2000)":"46.79472222222222","可见光星等V":"16","摄影(蓝光)星等B":"17","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"12125","标识":"IC4285","M标识":"IC4285","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h31m45.5s","赤经D(J2000)":"13.529305555555556","赤纬(J2000)":"+46h49m19s","赤纬D(J2000)":"46.82194444444445","可见光星等V":"16.7","摄影(蓝光)星等B":"17.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"95","详细描述":"extremely faint, very small, a little extended","简略描述":"eF, vS, lE"},{"ID":"12126","标识":"IC4286","M标识":"IC4286","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h33m35.7s","赤经D(J2000)":"13.559916666666668","赤纬(J2000)":"-27h37m55s","赤纬D(J2000)":"-27.631944444444446","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12127","标识":"IC4287","M标识":"IC4287","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h32m38.8s","赤经D(J2000)":"13.54411111111111","赤纬(J2000)":"+25h26m29s","赤纬D(J2000)":"25.441388888888888","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"160","详细描述":"faint, small, round, gradually brighter middle, possibly another very near","简略描述":"F, S, R, gbM, ? another v nr"},{"ID":"12128","标识":"IC4288","M标识":"IC4288","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h34m30.3s","赤经D(J2000)":"13.575083333333334","赤纬(J2000)":"-27h18m16s","赤纬D(J2000)":"-27.304444444444446","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"112","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12129","标识":"IC4289","M标识":"IC4289","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h34m47.8s","赤经D(J2000)":"13.579944444444445","赤纬(J2000)":"-27h7m36s","赤纬D(J2000)":"-27.12666666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.8","方位角":"6","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12130","标识":"IC4290","M标识":"IC4290","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h35m19.6s","赤经D(J2000)":"13.588777777777779","赤纬(J2000)":"-28h1m19s","赤纬D(J2000)":"-28.021944444444443","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"98","详细描述":"annular, faint, pretty large, stellar nucleus","简略描述":"Annular, F, pL, stell N"},{"ID":"12131","标识":"IC4291","M标识":"IC4291","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II2p","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h36m56.3s","赤经D(J2000)":"13.615638888888888","赤纬(J2000)":"-62h5m35s","赤纬D(J2000)":"-62.09305555555556","可见光星等V":"9.7","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"4","短轴(分)":"","方位角":"","详细描述":"pretty small, round, brighter middle","简略描述":"pS, R, bM"},{"ID":"12132","标识":"IC4292","M标识":"IC4292","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h35m46.7s","赤经D(J2000)":"13.596305555555556","赤纬(J2000)":"-27h40m30s","赤纬D(J2000)":"-27.675","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"29","详细描述":"brighter middle, magnitude 13.5","简略描述":"bM, magn 13.5"},{"ID":"12133","标识":"IC4293","M标识":"IC4293","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h36m2.2s","赤经D(J2000)":"13.60061111111111","赤纬(J2000)":"-25h52m56s","赤纬D(J2000)":"-25.88222222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"177","详细描述":"brighter middle, magnitude 13","简略描述":"bM, magn 13"},{"ID":"12134","标识":"IC4294","M标识":"IC4294","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h36m31.1s","赤经D(J2000)":"13.608638888888889","赤纬(J2000)":"-28h46m53s","赤纬D(J2000)":"-28.781388888888888","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"26","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12135","标识":"IC4295","M标识":"IC4295","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h36m34.4s","赤经D(J2000)":"13.609555555555556","赤纬(J2000)":"-29h5m20s","赤纬D(J2000)":"-29.08888888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.4","方位角":"114","详细描述":"small, a little extended, magnitude 14","简略描述":"S, lE, magn 14"},{"ID":"12136","标识":"IC4296","M标识":"IC4296","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h36m38.8s","赤经D(J2000)":"13.610777777777777","赤纬(J2000)":"-33h57m57s","赤纬D(J2000)":"-33.965833333333336","可见光星等V":"10.6","摄影(蓝光)星等B":"11.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.8","短轴(分)":"2.8","方位角":"","详细描述":"pretty faint, pretty small, round","简略描述":"pF, pS, R"},{"ID":"12137","标识":"IC4297","M标识":"IC4297","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"后发座","星座(En)":"COM","赤经(J2000)":"13h35m19.2s","赤经D(J2000)":"13.588666666666667","赤纬(J2000)":"+26h25m31s","赤纬D(J2000)":"26.42527777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"65","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"12138","标识":"IC4298","M标识":"IC4298","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h36m34.7s","赤经D(J2000)":"13.609638888888888","赤纬(J2000)":"-26h33m15s","赤纬D(J2000)":"-26.554166666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"177","详细描述":"brighter middle, possibly spiral","简略描述":"bM, ? spiral"},{"ID":"12139","标识":"IC4299","M标识":"IC4299","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h36m47.5s","赤经D(J2000)":"13.613194444444444","赤纬(J2000)":"-34h3m57s","赤纬D(J2000)":"-34.06583333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"13.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"58","详细描述":"most extremely faint, extremely small, faint star attached","简略描述":"eeF, eS, F * att"},{"ID":"12140","标识":"IC4300","M标识":"IC4300","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h35m25.1s","赤经D(J2000)":"13.590305555555556","赤纬(J2000)":"+33h25m11s","赤纬D(J2000)":"33.41972222222222","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.2","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, diffuse","简略描述":"F, vS, dif"},{"ID":"12141","标识":"IC4301","M标识":"IC4301","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h35m35.8s","赤经D(J2000)":"13.593277777777779","赤纬(J2000)":"+33h22m28s","赤纬D(J2000)":"33.37444444444444","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"130","详细描述":"faint, very small, diffuse, nuclear","简略描述":"F, S, dif, N"},{"ID":"12142","标识":"IC4302","M标识":"IC4302","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h35m35.9s","赤经D(J2000)":"13.593305555555556","赤纬(J2000)":"+33h28m46s","赤纬D(J2000)":"33.47944444444445","可见光星等V":"14.9","摄影(蓝光)星等B":"15.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.3","短轴(分)":"0.1","方位角":"126","详细描述":"very faint, considerably small, diffuse","简略描述":"vF, cS, dif"},{"ID":"12143","标识":"IC4303","M标识":"IC4303","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h37m18.2s","赤经D(J2000)":"13.621722222222223","赤纬(J2000)":"-28h39m28s","赤纬D(J2000)":"-28.657777777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.5","方位角":"65","详细描述":"brighter middle, magnitude 13.5","简略描述":"bM, magn 13.5"},{"ID":"12144","标识":"IC4304","M标识":"IC4304","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h35m57.9s","赤经D(J2000)":"13.599416666666666","赤纬(J2000)":"+33h25m47s","赤纬D(J2000)":"33.42972222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"42","详细描述":"pretty bright, pretty small, round, gradually brighter middle, mottled but not resolved","简略描述":"pB, pS, R, gbM, r"},{"ID":"12145","标识":"IC4305","M标识":"IC4305","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h35m58.3s","赤经D(J2000)":"13.599527777777778","赤纬(J2000)":"+33h28m28s","赤纬D(J2000)":"33.474444444444444","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"171","详细描述":"pretty bright, considerably small, a little extended north-south, brighter middle and nucleus","简略描述":"pB, cS, lE ns, bMN"},{"ID":"12146","标识":"IC4306","M标识":"IC4306","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h36m19.6s","赤经D(J2000)":"13.605444444444444","赤纬(J2000)":"+33h25m27s","赤纬D(J2000)":"33.424166666666665","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"87","详细描述":"faint, very small, gradually brighter middle, 13th magnitude star near","简略描述":"F, vS, gbM, * 13 nr"},{"ID":"12147","标识":"IC4307","M标识":"IC4307","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h36m36.1s","赤经D(J2000)":"13.610027777777777","赤纬(J2000)":"+27h14m34s","赤纬D(J2000)":"27.24277777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, extended east-west, 11th magnitude star 6 seconds of time to the west","简略描述":"F, S, E pf, * 11 p 6s"},{"ID":"12148","标识":"IC4308","M标识":"IC4308","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h36m52.4s","赤经D(J2000)":"13.614555555555555","赤纬(J2000)":"+32h44m0s","赤纬D(J2000)":"32.733333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, diffuse, very little brighter middle","简略描述":"F, S, dif, vlbM"},{"ID":"12149","标识":"IC4309","M标识":"IC4309","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h38m50s","赤经D(J2000)":"13.647222222222222","赤纬(J2000)":"-29h39m47s","赤纬D(J2000)":"-29.663055555555555","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"127","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12150","标识":"IC4310","M标识":"IC4310","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0\/P","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h38m57s","赤经D(J2000)":"13.649166666666666","赤纬(J2000)":"-25h50m44s","赤纬D(J2000)":"-25.845555555555553","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.2","短轴(分)":"0.8","方位角":"73","详细描述":"very faint, brighter middle, wisps 0.3 arcmin long","简略描述":"vF, bM, wisps 0'.3 l"},{"ID":"12151","标识":"IC4311","M标识":"IC4311","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h40m8s","赤经D(J2000)":"13.668888888888889","赤纬(J2000)":"-51h2m11s","赤纬D(J2000)":"-51.03638888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"148","详细描述":"very faint, possibly spiral","简略描述":"vF, ? spiral"},{"ID":"12152","标识":"IC4312","M标识":"IC4312","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h40m30.8s","赤经D(J2000)":"13.67522222222222","赤纬(J2000)":"-51h4m17s","赤纬D(J2000)":"-51.07138888888889","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"30","详细描述":"most extremely faint, brighter middle","简略描述":"eeF, bM"},{"ID":"12153","标识":"IC4313","M标识":"IC4313","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h38m20.6s","赤经D(J2000)":"13.639055555555554","赤纬(J2000)":"+26h45m37s","赤纬D(J2000)":"26.760277777777777","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round, stellar","简略描述":"F, vS, R, stell"},{"ID":"12154","标识":"IC4314","M标识":"IC4314","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h38m25s","赤经D(J2000)":"13.640277777777778","赤纬(J2000)":"+26h44m35s","赤纬D(J2000)":"26.743055555555557","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, very small, nuclear, stellar","简略描述":"F, vS, N, stell"},{"ID":"12155","标识":"IC4315","M标识":"IC4315","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h40m3.1s","赤经D(J2000)":"13.667527777777778","赤纬(J2000)":"-25h28m30s","赤纬D(J2000)":"-25.474999999999998","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"132","详细描述":"wisp 1.3 arcmin long","简略描述":"Wisp 1'.3 l"},{"ID":"12156","标识":"IC4316","M标识":"IC4316","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm\/P","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h40m18.5s","赤经D(J2000)":"13.671805555555554","赤纬(J2000)":"-28h53m31s","赤纬D(J2000)":"-28.891944444444444","可见光星等V":"14.4","摄影(蓝光)星等B":"15","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1","短轴(分)":"0.7","方位角":"45","详细描述":"brighter middle, magnitude 14.5","简略描述":"bM, magn 14.5"},{"ID":"12157","标识":"IC4317","M标识":"IC4317","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h41m45.8s","赤经D(J2000)":"13.696055555555557","赤纬(J2000)":"+27h6m23s","赤纬D(J2000)":"27.10638888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"15","详细描述":"faint, small, round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"12158","标识":"IC4318","M标识":"IC4318","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h43m22.7s","赤经D(J2000)":"13.722972222222221","赤纬(J2000)":"-28h58m7s","赤纬D(J2000)":"-28.96861111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"1","方位角":"44","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12159","标识":"IC4319","M标识":"IC4319","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h43m26.4s","赤经D(J2000)":"13.724","赤纬(J2000)":"-29h48m12s","赤纬D(J2000)":"-29.803333333333335","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"70","详细描述":"considerably large, extended, brighter middle, magnitude 13.5","简略描述":"cL, E, bM, magn 13.5"},{"ID":"12160","标识":"IC4320","M标识":"IC4320","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h44m3.7s","赤经D(J2000)":"13.73436111111111","赤纬(J2000)":"-27h13m54s","赤纬D(J2000)":"-27.231666666666666","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"brighter middle, magnitude 13.5","简略描述":"bM, magn 13.5"},{"ID":"12161","标识":"IC4321","M标识":"IC4321","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"贝壳星系","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h44m31.1s","赤经D(J2000)":"13.741972222222222","赤纬(J2000)":"-30h8m23s","赤纬D(J2000)":"-30.139722222222222","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"26","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"12162","标识":"IC4322","M标识":"IC4322","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h43m44.1s","赤经D(J2000)":"13.728916666666667","赤纬(J2000)":"+25h23m34s","赤纬D(J2000)":"25.392777777777777","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1","短轴(分)":"0.8","方位角":"","详细描述":"faint, small,,round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"12163","标识":"IC4323","M标识":"IC4323","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h45m6.6s","赤经D(J2000)":"13.751833333333334","赤纬(J2000)":"-28h39m6s","赤纬D(J2000)":"-28.651666666666664","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"0.1","方位角":"60","详细描述":"considerably small, with wisp, much extended","简略描述":"cS, wisp, mE"},{"ID":"12164","标识":"IC4324","M标识":"IC4324","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h45m27.2s","赤经D(J2000)":"13.757555555555555","赤纬(J2000)":"-30h13m38s","赤纬D(J2000)":"-30.22722222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"133","详细描述":"brighter middle, magnitude 13.5","简略描述":"bM, magn 13.5"},{"ID":"12165","标识":"IC4325","M标识":"IC4325","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h47m39.5s","赤经D(J2000)":"13.794305555555555","赤纬(J2000)":"-29h26m4s","赤纬D(J2000)":"-29.434444444444445","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"102","详细描述":"round, possibly planetary, magnitude 14","简略描述":"R, planet. ?, magn 14"},{"ID":"12166","标识":"IC4326","M标识":"IC4326","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h48m21.5s","赤经D(J2000)":"13.805972222222223","赤纬(J2000)":"-29h37m35s","赤纬D(J2000)":"-29.62638888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"168","详细描述":"round, possibly planetary, magnitude 14","简略描述":"R, planet. ?, magn 14"},{"ID":"12167","标识":"IC4327","M标识":"IC4327","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h48m43.9s","赤经D(J2000)":"13.812194444444446","赤纬(J2000)":"-30h13m5s","赤纬D(J2000)":"-30.218055555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.5","方位角":"56","详细描述":"brighter middle, magnitude 12.5","简略描述":"bM, magn 12.5"},{"ID":"12168","标识":"IC4328","M标识":"IC4328","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h49m2.8s","赤经D(J2000)":"13.817444444444444","赤纬(J2000)":"-29h56m14s","赤纬D(J2000)":"-29.93722222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"172","详细描述":"round, little brighter middle, magnitude 14","简略描述":"R, lbM, magn 14"},{"ID":"12169","标识":"IC4329","M标识":"IC4329","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h49m5.3s","赤经D(J2000)":"13.818138888888889","赤纬(J2000)":"-30h17m46s","赤纬D(J2000)":"-30.296111111111113","可见光星等V":"11.3","摄影(蓝光)星等B":"12.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"3.2","短轴(分)":"1.9","方位角":"63","详细描述":"faint, considerably small, brighter middle","简略描述":"F, cS, bM"},{"ID":"12170","标识":"IC4330","M标识":"IC4330","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h47m14.9s","赤经D(J2000)":"13.787472222222222","赤纬(J2000)":"-28h19m55s","赤纬D(J2000)":"-28.331944444444446","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"94","详细描述":"pretty large, extended, magnitude 13.5","简略描述":"pL, E, magn 13.5"},{"ID":"12171","标识":"IC4331","M标识":"IC4331","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h49m24.7s","赤经D(J2000)":"13.823527777777777","赤纬(J2000)":"+25h9m15s","赤纬D(J2000)":"25.154166666666665","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"45","详细描述":"pretty faint, small, round, diffuse","简略描述":"pF, S, R, dif"},{"ID":"12172","标识":"IC4332","M标识":"IC4332","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h49m52.4s","赤经D(J2000)":"13.831222222222221","赤纬(J2000)":"+25h11m24s","赤纬D(J2000)":"25.19","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"12173","标识":"IC4333","M标识":"IC4333","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"南极座","星座(En)":"OCT","赤经(J2000)":"14h5m19.5s","赤经D(J2000)":"14.088750000000001","赤纬(J2000)":"-84h16m23s","赤纬D(J2000)":"-84.27305555555556","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"65","详细描述":"extremely faint, very small, extremely extended 40°, suspected","简略描述":"eF, vS, eE 40°, susp"},{"ID":"12174","标识":"IC4334","M标识":"IC4334","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0 R","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h49m48.2s","赤经D(J2000)":"13.830055555555555","赤纬(J2000)":"+29h41m38s","赤纬D(J2000)":"29.69388888888889","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, very small, round, nuclear","简略描述":"F, vS, R, N"},{"ID":"12175","标识":"IC4335","M标识":"IC4335","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h49m45.2s","赤经D(J2000)":"13.829222222222223","赤纬(J2000)":"+33h40m24s","赤纬D(J2000)":"33.67333333333333","可见光星等V":"99","摄影(蓝光)星等B":"13.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, stellar, possibly nebulous; 13th magnitude star 2.5 arcmin to north northeast","简略描述":"vF, stell, ? neb, * 13 nnf 2'.5"},{"ID":"12176","标识":"IC4336","M标识":"IC4336","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h50m43.1s","赤经D(J2000)":"13.845305555555557","赤纬(J2000)":"+39h42m25s","赤纬D(J2000)":"39.706944444444446","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"158","详细描述":"extremely faint, pretty large, diffuse, a little brighter middle, mottled but not resolved","简略描述":"eF, pL, dif, lbM, r"},{"ID":"12177","标识":"IC4337","M标识":"IC4337","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h52m19.2s","赤经D(J2000)":"13.872","赤纬(J2000)":"+14h16m21s","赤纬D(J2000)":"14.2725","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"100","详细描述":"most extremely faint, pretty large, round, very difficult, 3rd of 4","简略描述":"eeF, pL, R, v diffic, 3rd of 4"},{"ID":"12178","标识":"IC4338","M标识":"IC4338","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h52m54.5s","赤经D(J2000)":"13.881805555555555","赤纬(J2000)":"-1h6m49s","赤纬D(J2000)":"-1.113611111111111","可见光星等V":"11.3","摄影(蓝光)星等B":"12","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"4.2","短轴(分)":"3","方位角":"21","详细描述":"extremely faint, very large, considerably extended north-south, faint star near each end","简略描述":"eF, vL, cE ns, F * nr each end"},{"ID":"12179","标识":"IC4339","M标识":"IC4339","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h53m34.3s","赤经D(J2000)":"13.892861111111111","赤纬(J2000)":"+37h31m19s","赤纬D(J2000)":"37.52194444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, round, mottled but not resolved","简略描述":"F, S, R, r"},{"ID":"12180","标识":"IC4340","M标识":"IC4340","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h53m33.6s","赤经D(J2000)":"13.892666666666667","赤纬(J2000)":"+37h23m12s","赤纬D(J2000)":"37.38666666666666","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.7","方位角":"45","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"12181","标识":"IC4341","M标识":"IC4341","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h53m34.3s","赤经D(J2000)":"13.892861111111111","赤纬(J2000)":"+37h31m19s","赤纬D(J2000)":"37.52194444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, small, round, mottled but not resolved","简略描述":"F, S, R, r, * 12 nr"},{"ID":"12182","标识":"IC4342","M标识":"IC4342","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h54m22s","赤经D(J2000)":"13.90611111111111","赤纬(J2000)":"+25h9m9s","赤纬D(J2000)":"25.1525","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"50","详细描述":"faint, small, round, a little brighter middle, mottled but not resolved","简略描述":"F, S, R, lbM, r"},{"ID":"12183","标识":"IC4343","M标识":"IC4343","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h54m55.7s","赤经D(J2000)":"13.915472222222222","赤纬(J2000)":"+25h7m21s","赤纬D(J2000)":"25.1225","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.5","方位角":"108","详细描述":"faint, small, round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"12184","标识":"IC4344","M标识":"IC4344","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h55m12.7s","赤经D(J2000)":"13.920194444444444","赤纬(J2000)":"+25h1m17s","赤纬D(J2000)":"25.02138888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"66","详细描述":"faint, very small, nuclear, stellar","简略描述":"F, vS, N, stell"},{"ID":"12185","标识":"IC4345","M标识":"IC4345","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h55m13.5s","赤经D(J2000)":"13.920416666666666","赤纬(J2000)":"+25h3m6s","赤纬D(J2000)":"25.051666666666666","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"considerably faint, very small, round, nuclear, stellar","简略描述":"cF, vS, R, N, stell"},{"ID":"12186","标识":"IC4346","M标识":"IC4346","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h55m40.4s","赤经D(J2000)":"13.927888888888889","赤纬(J2000)":"+25h9m10s","赤纬D(J2000)":"25.152777777777775","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"0","详细描述":"faint, small, round, gradually brighter middle and nucleus","简略描述":"F, S, R, gbMN"},{"ID":"12187","标识":"IC4347","M标识":"IC4347","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Dup","形态":"RN","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h57m43.8s","赤经D(J2000)":"13.962166666666667","赤纬(J2000)":"-39h58m42s","赤纬D(J2000)":"-39.97833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2","短轴(分)":"2","方位角":"","详细描述":"9th magnitude star in a most extremely faint nebula","简略描述":"* 9 in eeF neb"},{"ID":"12188","标识":"IC4348","M标识":"IC4348","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h55m45s","赤经D(J2000)":"13.929166666666665","赤纬(J2000)":"+25h12m13s","赤纬D(J2000)":"25.203611111111112","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, nuclear","简略描述":"F, S, R, N"},{"ID":"12189","标识":"IC4349","M标识":"IC4349","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"13h55m46.2s","赤经D(J2000)":"13.929499999999999","赤纬(J2000)":"+25h9m7s","赤纬D(J2000)":"25.151944444444442","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"125","详细描述":"faint, small, brighter middle","简略描述":"F, S, bM"},{"ID":"12190","标识":"IC4350","M标识":"IC4350","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h57m13.9s","赤经D(J2000)":"13.953861111111111","赤纬(J2000)":"-25h14m45s","赤纬D(J2000)":"-25.245833333333334","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"136","详细描述":"most extremely faint, extremely small, faint star close to south","简略描述":"eeF, eS, F * close s"},{"ID":"12191","标识":"IC4351","M标识":"IC4351","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"13h57m53.8s","赤经D(J2000)":"13.964944444444443","赤纬(J2000)":"-29h18m56s","赤纬D(J2000)":"-29.315555555555555","可见光星等V":"11.7","摄影(蓝光)星等B":"12.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"5.9","短轴(分)":"0.9","方位角":"17","详细描述":"small, a little extended","简略描述":"S, lE"},{"ID":"12192","标识":"IC4352","M标识":"IC4352","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"13h58m25.1s","赤经D(J2000)":"13.973638888888889","赤纬(J2000)":"-34h31m3s","赤纬D(J2000)":"-34.5175","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"88","详细描述":"several extremely faint stars in most extremely faint nebula, 2 stars 8 north","简略描述":"sev eF st in eeF neb, 2 st 8 n"},{"ID":"12193","标识":"IC4353","M标识":"IC4353","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h56m56.9s","赤经D(J2000)":"13.94913888888889","赤纬(J2000)":"+37h44m25s","赤纬D(J2000)":"37.74027777777778","可见光星等V":"99","摄影(蓝光)星等B":"14.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, perhaps very faint star and nebula, 8.4 magnitude star 3 arcmin to northeast","简略描述":"eF, ? vF st & neb, * 8.4 nf 3'"},{"ID":"12194","标识":"IC4354","M标识":"IC4354","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"13h58m30.8s","赤经D(J2000)":"13.975222222222222","赤纬(J2000)":"-12h36m18s","赤纬D(J2000)":"-12.605","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"108","详细描述":"extremely faint, very small, extremely extended 110°","简略描述":"eF, vS, eE 110°"},{"ID":"12195","标识":"IC4355","M标识":"IC4355","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h58m6s","赤经D(J2000)":"13.968333333333334","赤纬(J2000)":"+28h25m20s","赤纬D(J2000)":"28.422222222222224","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"0","详细描述":"faint, small, round, gradually a little brighter middle","简略描述":"F, S, R, glbM"},{"ID":"12196","标识":"IC4356","M标识":"IC4356","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"13h58m45s","赤经D(J2000)":"13.979166666666666","赤纬(J2000)":"+37h29m28s","赤纬D(J2000)":"37.49111111111111","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, stellar nucleus equivalent to 15th magnitude star","简略描述":"F, vS, stell N = * 15"},{"ID":"12197","标识":"IC4357","M标识":"IC4357","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"14h0m43.7s","赤经D(J2000)":"14.012138888888888","赤纬(J2000)":"+31h53m39s","赤纬D(J2000)":"31.894166666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"70","详细描述":"faint, small, round, gradually very little brighter middle","简略描述":"F, S, R, gvlbM"},{"ID":"12198","标识":"IC4358","M标识":"IC4358","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h3m34.1s","赤经D(J2000)":"14.059472222222222","赤纬(J2000)":"-10h9m2s","赤纬D(J2000)":"-10.150555555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"114","详细描述":"pretty large, much extended 120°; spiral nebula to east (IC 971)","简略描述":"pL, mE 120°, spir neb f (I.C. 971)"},{"ID":"12199","标识":"IC4359","M标识":"IC4359","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h5m23.3s","赤经D(J2000)":"14.089805555555555","赤纬(J2000)":"-45h16m12s","赤纬D(J2000)":"-45.269999999999996","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"17","详细描述":"extremely faint, very small, extended 170°, between 2 faint stars","简略描述":"eF, vS, E 170°, bet 2 F st"},{"ID":"12200","标识":"IC4360","M标识":"IC4360","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB\/P","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h4m21.3s","赤经D(J2000)":"14.072583333333332","赤纬(J2000)":"-11h25m28s","赤纬D(J2000)":"-11.424444444444443","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"35","详细描述":"extremely faint, extremely small, extended 35°","简略描述":"eF, eS, E 35°"},{"ID":"12201","标识":"IC4361","M标识":"IC4361","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h4m7.5s","赤经D(J2000)":"14.06875","赤纬(J2000)":"-9h46m4s","赤纬D(J2000)":"-9.767777777777779","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"168","详细描述":"extremely faint, very small, considerably extended 150°","简略描述":"eF, vS, cE 150°"},{"ID":"12202","标识":"IC4362","M标识":"IC4362","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h5m22.1s","赤经D(J2000)":"14.089472222222224","赤纬(J2000)":"-41h49m9s","赤纬D(J2000)":"-41.81916666666667","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.7","短轴(分)":"0.7","方位角":"146","详细描述":"very faint, small, very extended 175°","简略描述":"vF, S, vE 175°"},{"ID":"12203","标识":"IC4363","M标识":"IC4363","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBR","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h4m12.3s","赤经D(J2000)":"14.070083333333333","赤纬(J2000)":"-9h38m29s","赤纬D(J2000)":"-9.641388888888889","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"10","详细描述":"extremely faint, very small, considerably extended 150°","简略描述":"eF, vS, cE 150°"},{"ID":"12204","标识":"IC4364","M标识":"IC4364","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h4m19.8s","赤经D(J2000)":"14.072166666666666","赤纬(J2000)":"-9h59m34s","赤纬D(J2000)":"-9.992777777777777","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"75","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"12205","标识":"IC4365","M标识":"IC4365","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h3m47.3s","赤经D(J2000)":"14.06313888888889","赤纬(J2000)":"+9h31m25s","赤纬D(J2000)":"9.523611111111112","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"0","详细描述":"13th magnitude star in very faint, small nebula [perhaps = (NGC) 5438]","简略描述":"* 13 in vF, S neb [perhaps 5438]"},{"ID":"12206","标识":"IC4366","M标识":"IC4366","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h5m11.3s","赤经D(J2000)":"14.086472222222223","赤纬(J2000)":"-33h45m39s","赤纬D(J2000)":"-33.76083333333333","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"140","详细描述":"very faint, very small, considerably extended 170°","简略描述":"vF, vS, cE 170°"},{"ID":"12207","标识":"IC4367","M标识":"IC4367","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h5m36.4s","赤经D(J2000)":"14.093444444444446","赤纬(J2000)":"-39h12m11s","赤纬D(J2000)":"-39.20305555555556","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"14","详细描述":"most extremely faint, pretty small, round, between 2 stars","简略描述":"eeF, pS, R, bet 2 st"},{"ID":"12208","标识":"IC4368","M标识":"IC4368","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h4m46.3s","赤经D(J2000)":"14.079527777777777","赤纬(J2000)":"-9h57m42s","赤纬D(J2000)":"-9.961666666666666","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"35","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"12209","标识":"IC4369","M标识":"IC4369","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"14h4m5.8s","赤经D(J2000)":"14.068277777777778","赤纬(J2000)":"+33h19m17s","赤纬D(J2000)":"33.32138888888889","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"20","详细描述":"very faint, small, round, diffuse","简略描述":"vF, S, R, dif"},{"ID":"12210","标识":"IC4370","M标识":"IC4370","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"14h4m9.9s","赤经D(J2000)":"14.069416666666667","赤纬(J2000)":"+33h20m48s","赤纬D(J2000)":"33.34666666666667","可见光星等V":"15.2","摄影(蓝光)星等B":"16.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"110","详细描述":"faint, small, irregular figure, gradually brighter middle, 14th magnitude star near","简略描述":"F, S, iF, gbM, * 14 nr"},{"ID":"12211","标识":"IC4371","M标识":"IC4371","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"猎犬座","星座(En)":"CVN","赤经(J2000)":"14h4m10.9s","赤经D(J2000)":"14.069694444444444","赤纬(J2000)":"+33h18m29s","赤纬D(J2000)":"33.308055555555555","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"42","详细描述":"faint, small, round, very little brighter middle","简略描述":"F, S, R, vlbM"},{"ID":"12212","标识":"IC4372","M标识":"IC4372","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h5m46s","赤经D(J2000)":"14.096111111111112","赤纬(J2000)":"-10h53m59s","赤纬D(J2000)":"-10.899722222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"75","详细描述":"extremely faint, considerably small, extended 75°","简略描述":"eF, eS, E 75°"},{"ID":"12213","标识":"IC4373","M标识":"IC4373","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h5m43.1s","赤经D(J2000)":"14.095305555555557","赤纬(J2000)":"+25h13m55s","赤纬D(J2000)":"25.231944444444444","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"12214","标识":"IC4374","M标识":"IC4374","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"14h7m29.8s","赤经D(J2000)":"14.124944444444445","赤纬(J2000)":"-27h1m5s","赤纬D(J2000)":"-27.018055555555556","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"113","详细描述":"most extremely faint, pretty small, round","简略描述":"eeF, pS, R"},{"ID":"12215","标识":"IC4375","M标识":"IC4375","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h8m2.9s","赤经D(J2000)":"14.134138888888888","赤纬(J2000)":"-33h18m53s","赤纬D(J2000)":"-33.31472222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.4","短轴(分)":"1","方位角":"22","详细描述":"extremely faint, extremely small, extremely extended 15°, stellar nucleus, star to southwest","简略描述":"eF, eS, eE 15°, stell N, * sp"},{"ID":"12216","标识":"IC4376","M标识":"IC4376","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h10m50.5s","赤经D(J2000)":"14.180694444444445","赤纬(J2000)":"-30h47m35s","赤纬D(J2000)":"-30.793055555555558","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, extremely extended 40°","简略描述":"F, S, eE 40°"},{"ID":"12217","标识":"IC4377","M标识":"IC4377","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"14h16m58.6s","赤经D(J2000)":"14.282944444444444","赤纬(J2000)":"-75h38m47s","赤纬D(J2000)":"-75.6463888888889","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.7","短轴(分)":"0.6","方位角":"94","详细描述":"most extremely faint, very small, much extended 180°, very much brighter middle","简略描述":"eeF, vS, mE 180°, vmbM"},{"ID":"12218","标识":"IC4378","M标识":"IC4378","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h12m9.5s","赤经D(J2000)":"14.202638888888888","赤纬(J2000)":"-34h15m54s","赤纬D(J2000)":"-34.265","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"155","详细描述":"very faint, very small, extended 150°","简略描述":"vF, vS, E 150°"},{"ID":"12219","标识":"IC4379","M标识":"IC4379","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h12m10.1s","赤经D(J2000)":"14.202805555555555","赤纬(J2000)":"-34h16m16s","赤纬D(J2000)":"-34.27111111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.2","方位角":"90","详细描述":"very faint, very small, extended 90°","简略描述":"vF, vS, E 90°"},{"ID":"12220","标识":"IC4380","M标识":"IC4380","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h10m2.1s","赤经D(J2000)":"14.16725","赤纬(J2000)":"+37h33m2s","赤纬D(J2000)":"37.550555555555555","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"12221","标识":"IC4381","M标识":"IC4381","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h10m57s","赤经D(J2000)":"14.1825","赤纬(J2000)":"+25h29m47s","赤纬D(J2000)":"25.49638888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"1","方位角":"150","详细描述":"faint, considerably small, round, binuclear","简略描述":"F, cS, R, biN"},{"ID":"12222","标识":"IC4382","M标识":"IC4382","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h11m2.3s","赤经D(J2000)":"14.183972222222222","赤纬(J2000)":"+25h31m9s","赤纬D(J2000)":"25.519166666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.6","短轴(分)":"0.1","方位角":"3","详细描述":"faint, small, round, gradually brighter middle, (NGC) 5498 11 arcmin to north","简略描述":"F, S, R, gbM, 5498 n 11'"},{"ID":"12223","标识":"IC4383","M标识":"IC4383","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h12m12.6s","赤经D(J2000)":"14.2035","赤纬(J2000)":"+15h52m8s","赤纬D(J2000)":"15.86888888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"100","详细描述":"1.7 arcmin northwest of (NGC) 5504 (no description)","简略描述":"1'.7 np 5504 (no descr)"},{"ID":"12224","标识":"IC4384","M标识":"IC4384","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h11m55.9s","赤经D(J2000)":"14.19886111111111","赤纬(J2000)":"+27h6m52s","赤纬D(J2000)":"27.114444444444445","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"164","详细描述":"faint, small, round, brighter middle and nucleus, mottled but not resolved","简略描述":"F, S, R, bMN, r"},{"ID":"12225","标识":"IC4385","M标识":"IC4385","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h14m31.7s","赤经D(J2000)":"14.242138888888888","赤纬(J2000)":"-42h19m25s","赤纬D(J2000)":"-42.32361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very small, round, a little brighter middle","简略描述":"vS, R, lbM"},{"ID":"12226","标识":"IC4386","M标识":"IC4386","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h15m2.3s","赤经D(J2000)":"14.250638888888888","赤纬(J2000)":"-43h57m41s","赤纬D(J2000)":"-43.96138888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"3","短轴(分)":"1.5","方位角":"147","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"12227","标识":"IC4387","M标识":"IC4387","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h15m1.5s","赤经D(J2000)":"14.250416666666666","赤纬(J2000)":"-43h59m25s","赤纬D(J2000)":"-43.99027777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"70","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"12228","标识":"IC4388","M标识":"IC4388","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h16m3.5s","赤经D(J2000)":"14.26763888888889","赤纬(J2000)":"-31h45m12s","赤纬D(J2000)":"-31.753333333333334","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"1","方位角":"66","详细描述":"very faint, very small, round, suddenly brighter middle","简略描述":"vF, vS, R, sbM"},{"ID":"12229","标识":"IC4389","M标识":"IC4389","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h16m46.2s","赤经D(J2000)":"14.2795","赤纬(J2000)":"-40h33m11s","赤纬D(J2000)":"-40.55305555555555","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"93","详细描述":"very faint, very small, round, diffuse","简略描述":"vF, vS, R, dif"},{"ID":"12230","标识":"IC4390","M标识":"IC4390","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h16m59.3s","赤经D(J2000)":"14.283138888888889","赤纬(J2000)":"-44h58m42s","赤纬D(J2000)":"-44.97833333333333","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"11","详细描述":"extremely faint, very small, much extended 5°, stellar nucleus","简略描述":"eF, vS, mE 5°, stell N"},{"ID":"12231","标识":"IC4391","M标识":"IC4391","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h16m27s","赤经D(J2000)":"14.274166666666668","赤纬(J2000)":"-31h41m6s","赤纬D(J2000)":"-31.685","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"57","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"12232","标识":"IC4392","M标识":"IC4392","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h15m53.2s","赤经D(J2000)":"14.264777777777777","赤纬(J2000)":"-13h3m4s","赤纬D(J2000)":"-13.051111111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, much extended 80°, faint star to southeast, suspected","简略描述":"eF, vS, mE 80°, F * sf, susp"},{"ID":"12233","标识":"IC4393","M标识":"IC4393","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h17m49.2s","赤经D(J2000)":"14.297","赤纬(J2000)":"-31h20m54s","赤纬D(J2000)":"-31.348333333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.4","短轴(分)":"0.3","方位角":"77","详细描述":"considerably faint, small, extremely extended 75°","简略描述":"cF, S, eE 75°"},{"ID":"12234","标识":"IC4394","M标识":"IC4394","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h16m31.3s","赤经D(J2000)":"14.275361111111112","赤纬(J2000)":"+39h41m51s","赤纬D(J2000)":"39.6975","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"12235","标识":"IC4395","M标识":"IC4395","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h17m20.8s","赤经D(J2000)":"14.289111111111112","赤纬(J2000)":"+26h51m27s","赤纬D(J2000)":"26.8575","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.9","方位角":"21","详细描述":"faint, small, round, nuclear, stellar","简略描述":"F, S, R, N, stell"},{"ID":"12236","标识":"IC4396","M标识":"IC4396","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h17m30.3s","赤经D(J2000)":"14.29175","赤纬(J2000)":"+28h48m0s","赤纬D(J2000)":"28.8","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"25","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"12237","标识":"IC4397","M标识":"IC4397","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h17m58.7s","赤经D(J2000)":"14.29963888888889","赤纬(J2000)":"+26h24m46s","赤纬D(J2000)":"26.412777777777777","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"165","详细描述":"faint, considerably small, round, brighter middle, mottled but not resolved","简略描述":"F, cS, R, bM, r"},{"ID":"12238","标识":"IC4398","M标识":"IC4398","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h18m3.3s","赤经D(J2000)":"14.300916666666668","赤纬(J2000)":"+28h51m58s","赤纬D(J2000)":"28.866111111111113","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"12239","标识":"IC4399","M标识":"IC4399","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h18m24s","赤经D(J2000)":"14.306666666666667","赤纬(J2000)":"+26h23m10s","赤纬D(J2000)":"26.38611111111111","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"140","详细描述":"faint, considerably small, round, nuclear, mottled but not resolved","简略描述":"F, cS, R, N, r"},{"ID":"12240","标识":"IC4400","M标识":"IC4400","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h22m14s","赤经D(J2000)":"14.370555555555557","赤纬(J2000)":"-60h34m9s","赤纬D(J2000)":"-60.56916666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, extended","简略描述":"F, S, E"},{"ID":"12241","标识":"IC4401","M标识":"IC4401","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h19m25.1s","赤经D(J2000)":"14.323638888888889","赤纬(J2000)":"-4h29m24s","赤纬D(J2000)":"-4.49","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"21","详细描述":"very faint, small, much extended 200°, near IC 997","简略描述":"vF, S, mE 200°, nr I.C. 997"},{"ID":"12242","标识":"IC4402","M标识":"IC4402","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"14h21m12.9s","赤经D(J2000)":"14.353583333333333","赤纬(J2000)":"-46h17m54s","赤纬D(J2000)":"-46.29833333333333","可见光星等V":"11.6","摄影(蓝光)星等B":"12","B-V":"0.4","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"4.2","短轴(分)":"0.9","方位角":"127","详细描述":"large, extremely extended 125°, pointed ends","简略描述":"L, eE 125°, pointed ends"},{"ID":"12243","标识":"IC4403","M标识":"IC4403","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h18m16.9s","赤经D(J2000)":"14.304694444444445","赤纬(J2000)":"+31h39m14s","赤纬D(J2000)":"31.653888888888886","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"132","详细描述":"faint, small, round, gradually brighter middle, 14th magnitude star to north","简略描述":"F, S, R, gbM, * 14 n"},{"ID":"12244","标识":"IC4404","M标识":"IC4404","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"14h10m49.2s","赤经D(J2000)":"14.180333333333333","赤纬(J2000)":"+78h37m42s","赤纬D(J2000)":"78.62833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"12245","标识":"IC4405","M标识":"IC4405","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h19m16.4s","赤经D(J2000)":"14.321222222222222","赤纬(J2000)":"+26h17m54s","赤纬D(J2000)":"26.298333333333336","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"120","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"12246","标识":"IC4406","M标识":"IC4406","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"视网膜星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"14h22m26.4s","赤经D(J2000)":"14.374","赤纬(J2000)":"-44h9m2s","赤纬D(J2000)":"-44.150555555555556","可见光星等V":"10.2","摄影(蓝光)星等B":"10.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.77","短轴(分)":"","方位角":"","详细描述":"planetary, stellar, 10th magnitude, extended 80°","简略描述":"Planetary, stellar, 10 mag, E 80°"},{"ID":"12247","标识":"IC4407","M标识":"IC4407","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h21m20.8s","赤经D(J2000)":"14.355777777777778","赤纬(J2000)":"-5h59m35s","赤纬D(J2000)":"-5.993055555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"no description","简略描述":"No description"},{"ID":"12248","标识":"IC4408","M标识":"IC4408","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h21m13.1s","赤经D(J2000)":"14.353638888888888","赤纬(J2000)":"+29h59m38s","赤纬D(J2000)":"29.99388888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.4","方位角":"131","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"12249","标识":"IC4409","M标识":"IC4409","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h21m33.4s","赤经D(J2000)":"14.359277777777777","赤纬(J2000)":"+31h35m8s","赤纬D(J2000)":"31.585555555555555","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"36","详细描述":"faint, small, round, 13.5 magnitude star close","简略描述":"F, S, R, * 13.5 close"},{"ID":"12250","标识":"IC4410","M标识":"IC4410","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h22m14s","赤经D(J2000)":"14.370555555555557","赤纬(J2000)":"+17h23m52s","赤纬D(J2000)":"17.397777777777776","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"55","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"12251","标识":"IC4411","M标识":"IC4411","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h25m0s","赤经D(J2000)":"14.416666666666666","赤纬(J2000)":"-35h1m12s","赤纬D(J2000)":"-35.019999999999996","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, extremely extended 45°","简略描述":"F, S, eE 45°"},{"ID":"12252","标识":"IC4412","M标识":"IC4412","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h23m10.2s","赤经D(J2000)":"14.386166666666666","赤纬(J2000)":"+26h15m59s","赤纬D(J2000)":"26.26638888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"144","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"12253","标识":"IC4413","M标识":"IC4413","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h22m57.2s","赤经D(J2000)":"14.382555555555555","赤纬(J2000)":"+37h31m41s","赤纬D(J2000)":"37.528055555555554","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"12254","标识":"IC4414","M标识":"IC4414","拓展名":"A","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"P","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h23m42.6s","赤经D(J2000)":"14.395166666666666","赤纬(J2000)":"+28h20m50s","赤纬D(J2000)":"28.34722222222222","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"0","详细描述":"pretty bright, considerably small, gradually brighter middle and nucleus, mottled but not resolved","简略描述":"pB, cS, gbMN, r"},{"ID":"12255","标识":"IC4415","M标识":"IC4415","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h24m26.7s","赤经D(J2000)":"14.407416666666666","赤纬(J2000)":"+16h38m24s","赤纬D(J2000)":"16.64","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"135","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"12256","标识":"IC4416","M标识":"IC4416","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h24m17.4s","赤经D(J2000)":"14.404833333333334","赤纬(J2000)":"+29h38m10s","赤纬D(J2000)":"29.63611111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, round, nuclear","简略描述":"F, S, R, N"},{"ID":"12257","标识":"IC4417","M标识":"IC4417","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h24m53.6s","赤经D(J2000)":"14.414888888888889","赤纬(J2000)":"+17h2m18s","赤纬D(J2000)":"17.038333333333334","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"156","详细描述":"very faint, very small, round, a little brighter middle","简略描述":"vF, vS, R, lbM"},{"ID":"12258","标识":"IC4418","M标识":"IC4418","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h25m27.2s","赤经D(J2000)":"14.424222222222221","赤纬(J2000)":"+25h31m37s","赤纬D(J2000)":"25.526944444444442","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"96","详细描述":"pretty bright, small, round, gradually brighter middle and nucleus","简略描述":"pB, S, R, gbMN"},{"ID":"12259","标识":"IC4419","M标识":"IC4419","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h25m54.6s","赤经D(J2000)":"14.431833333333334","赤纬(J2000)":"+16h37m55s","赤纬D(J2000)":"16.631944444444446","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"12260","标识":"IC4420","M标识":"IC4420","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h25m39.3s","赤经D(J2000)":"14.427583333333333","赤纬(J2000)":"+25h22m44s","赤纬D(J2000)":"25.378888888888888","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"10","详细描述":"faint, small, extended 220°, nuclear","简略描述":"F, S, E 220°, N"},{"ID":"12261","标识":"IC4421","M标识":"IC4421","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h28m31.2s","赤经D(J2000)":"14.475333333333333","赤纬(J2000)":"-37h35m1s","赤纬D(J2000)":"-37.58361111111111","可见光星等V":"12.3","摄影(蓝光)星等B":"13.4","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"164","详细描述":"most extremely faint, very small, round, faint star to east","简略描述":"eef, vS, R, F * f"},{"ID":"12262","标识":"IC4422","M标识":"IC4422","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h25m59.1s","赤经D(J2000)":"14.433083333333332","赤纬(J2000)":"+30h28m26s","赤纬D(J2000)":"30.473888888888887","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"96","详细描述":"faint, considerably small, mottled but not resolved","简略描述":"F, cS, r"},{"ID":"12263","标识":"IC4423","M标识":"IC4423","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h26m17.6s","赤经D(J2000)":"14.438222222222223","赤纬(J2000)":"+26h14m44s","赤纬D(J2000)":"26.245555555555555","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"73","详细描述":"very faint, small, round, diffuse","简略描述":"vF, S, R, dif"},{"ID":"12264","标识":"IC4424","M标识":"IC4424","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"室女座","星座(En)":"VIR","赤经(J2000)":"14h27m32.3s","赤经D(J2000)":"14.458972222222222","赤纬(J2000)":"+4h49m17s","赤纬D(J2000)":"4.8213888888888885","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"111","详细描述":"extremely faint, small, stellar","简略描述":"eF, S, stellar"},{"ID":"12265","标识":"IC4425","M标识":"IC4425","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb R","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h26m44.3s","赤经D(J2000)":"14.445638888888888","赤纬(J2000)":"+27h11m23s","赤纬D(J2000)":"27.189722222222223","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"12266","标识":"IC4426","M标识":"IC4426","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h27m17s","赤经D(J2000)":"14.454722222222221","赤纬(J2000)":"+16h49m54s","赤纬D(J2000)":"16.831666666666667","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"12267","标识":"IC4427","M标识":"IC4427","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h26m59.6s","赤经D(J2000)":"14.44988888888889","赤纬(J2000)":"+26h51m50s","赤纬D(J2000)":"26.86388888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"120","详细描述":"faint, considerably small, diffuse, mottled but not resolved","简略描述":"F, cS, dif, r"},{"ID":"12268","标识":"IC4428","M标识":"IC4428","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h27m25.6s","赤经D(J2000)":"14.45711111111111","赤纬(J2000)":"+16h11m27s","赤纬D(J2000)":"16.190833333333334","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"45","详细描述":"faint, extremely small, round, a little brighter middle","简略描述":"F, eS, R, lbM"},{"ID":"12269","标识":"IC4429","M标识":"IC4429","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h27m37.3s","赤经D(J2000)":"14.46036111111111","赤纬(J2000)":"+16h54m1s","赤纬D(J2000)":"16.900277777777777","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"12270","标识":"IC4430","M标识":"IC4430","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h29m19.3s","赤经D(J2000)":"14.488694444444443","赤纬(J2000)":"-33h27m18s","赤纬D(J2000)":"-33.455000000000005","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.3","短轴(分)":"1.3","方位角":"15","详细描述":"considerably faint, considerably small, indistinct","简略描述":"cF, cS, indistinct"},{"ID":"12271","标识":"IC4431","M标识":"IC4431","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h27m9.5s","赤经D(J2000)":"14.452638888888888","赤纬(J2000)":"+30h56m54s","赤纬D(J2000)":"30.948333333333334","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"105","详细描述":"faint, considerably small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, cS, R gbM, r"},{"ID":"12272","标识":"IC4432","M标识":"IC4432","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h28m49.7s","赤经D(J2000)":"14.480472222222222","赤纬(J2000)":"-39h33m7s","赤纬D(J2000)":"-39.551944444444445","可见光星等V":"15.6","摄影(蓝光)星等B":"16.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"50","详细描述":"very faint, very small, much extended 85°","简略描述":"vF, vS, mE 85°"},{"ID":"12273","标识":"IC4433","M标识":"IC4433","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h27m53.3s","赤经D(J2000)":"14.464805555555555","赤纬(J2000)":"+16h11m43s","赤纬D(J2000)":"16.19527777777778","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"","详细描述":"faint, very small, round, much brighter middle","简略描述":"F, vS, R, mbM"},{"ID":"12274","标识":"IC4434","M标识":"IC4434","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h27m54.7s","赤经D(J2000)":"14.465194444444444","赤纬(J2000)":"+16h12m28s","赤纬D(J2000)":"16.20777777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1","短轴(分)":"0.7","方位角":"","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"12275","标识":"IC4435","M标识":"IC4435","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h27m24.1s","赤经D(J2000)":"14.456694444444445","赤纬(J2000)":"+37h28m19s","赤纬D(J2000)":"37.471944444444446","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"45","详细描述":"faint, round, suddenly brighter middle equivalent to 13.5 magnitude star","简略描述":"F, R, sbM * 13.5"},{"ID":"12276","标识":"IC4436","M标识":"IC4436","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h27m58.2s","赤经D(J2000)":"14.466166666666666","赤纬(J2000)":"+26h30m15s","赤纬D(J2000)":"26.504166666666666","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1","短轴(分)":"0.9","方位角":"","详细描述":"pretty bright, small, round, gradually brighter middle, mottled but not resolved","简略描述":"pB, S, R, gbM, r"},{"ID":"12277","标识":"IC4437","M标识":"IC4437","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h27m25.5s","赤经D(J2000)":"14.457083333333333","赤纬(J2000)":"+41h29m14s","赤纬D(J2000)":"41.48722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"no description, 8th magnitude star to northeast","简略描述":"No descr., * 8 mag nf"},{"ID":"12278","标识":"IC4438","M标识":"IC4438","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h28m34.5s","赤经D(J2000)":"14.47625","赤纬(J2000)":"+17h20m3s","赤纬D(J2000)":"17.334166666666665","可见光星等V":"15.8","摄影(蓝光)星等B":"16.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"84","详细描述":"faint, very small, round, diffuse","简略描述":"F, vS, R, dif"},{"ID":"12279","标识":"IC4439","M标识":"IC4439","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h28m40s","赤经D(J2000)":"14.477777777777778","赤纬(J2000)":"+17h1m29s","赤纬D(J2000)":"17.02472222222222","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"75","详细描述":"faint, small, round, much brighter middle","简略描述":"F, S, R, mbM"},{"ID":"12280","标识":"IC4440","M标识":"IC4440","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h28m59.2s","赤经D(J2000)":"14.48311111111111","赤纬(J2000)":"+17h19m15s","赤纬D(J2000)":"17.320833333333333","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"12281","标识":"IC4441","M标识":"IC4441","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"14h31m38.8s","赤经D(J2000)":"14.527444444444445","赤纬(J2000)":"-43h25m6s","赤纬D(J2000)":"-43.41833333333333","可见光星等V":"11.4","摄影(蓝光)星等B":"12","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"90","详细描述":"pretty faint, pretty small, round","简略描述":"pF, pS, R"},{"ID":"12282","标识":"IC4442","M标识":"IC4442","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h28m45.2s","赤经D(J2000)":"14.479222222222223","赤纬(J2000)":"+28h57m53s","赤纬D(J2000)":"28.96472222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.6","方位角":"13","详细描述":"faint, small, round, nuclear","简略描述":"F, S, R, N"},{"ID":"12283","标识":"IC4443","M标识":"IC4443","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h29m17.4s","赤经D(J2000)":"14.488166666666666","赤纬(J2000)":"+16h10m53s","赤纬D(J2000)":"16.18138888888889","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"10","详细描述":"very small, very little extended, a little brighter middle","简略描述":"vS, vlE, lbM"},{"ID":"12284","标识":"IC4444","M标识":"IC4444","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBbc","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"14h31m38.8s","赤经D(J2000)":"14.527444444444445","赤纬(J2000)":"-43h25m6s","赤纬D(J2000)":"-43.41833333333333","可见光星等V":"11.4","摄影(蓝光)星等B":"12","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"90","详细描述":"pretty faint, pretty small, round","简略描述":"vF, vS, * M, spir or annular"},{"ID":"12285","标识":"IC4445","M标识":"IC4445","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"14h31m54.3s","赤经D(J2000)":"14.53175","赤纬(J2000)":"-46h2m7s","赤纬D(J2000)":"-46.03527777777778","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"153","详细描述":"faint, considerably small, extended 160°","简略描述":"F, cS, E 160°"},{"ID":"12286","标识":"IC4446","M标识":"IC4446","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h29m1.4s","赤经D(J2000)":"14.483722222222221","赤纬(J2000)":"+37h27m49s","赤纬D(J2000)":"37.46361111111111","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"114","详细描述":"faint, considerably small, round, diffuse","简略描述":"F, cS, R, dif"},{"ID":"12287","标识":"IC4447","M标识":"IC4447","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h29m17.9s","赤经D(J2000)":"14.488305555555554","赤纬(J2000)":"+30h49m57s","赤纬D(J2000)":"30.8325","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"175","详细描述":"faint, small, round, gradually brighter middle and nucleus, mottled but not resolved","简略描述":"F, S, R, gbMN, r"},{"ID":"12288","标识":"IC4448","M标识":"IC4448","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"14h40m27.5s","赤经D(J2000)":"14.674305555555556","赤纬(J2000)":"-78h48m33s","赤纬D(J2000)":"-78.80916666666667","可见光星等V":"13.5","摄影(蓝光)星等B":"14.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.8","方位角":"168","详细描述":"very remarkable, faint, very small, annular, star in middle","简略描述":"!! F, vS, annul, * in M"},{"ID":"12289","标识":"IC4449","M标识":"IC4449","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h31m21.6s","赤经D(J2000)":"14.522666666666668","赤纬(J2000)":"+15h14m26s","赤纬D(J2000)":"15.240555555555554","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"100","详细描述":"very faint, very small, round, diffuse","简略描述":"vF, vS, R, dif"},{"ID":"12290","标识":"IC4450","M标识":"IC4450","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h32m12.4s","赤经D(J2000)":"14.536777777777777","赤纬(J2000)":"+28h33m26s","赤纬D(J2000)":"28.557222222222222","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"48","详细描述":"faint, considerably small, diffuse, 10.5 magnitude star to northeast","简略描述":"F, cS, dif, * 10.5 nf"},{"ID":"12291","标识":"IC4451","M标识":"IC4451","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h34m37s","赤经D(J2000)":"14.576944444444445","赤纬(J2000)":"-36h17m10s","赤纬D(J2000)":"-36.28611111111111","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"89","详细描述":"very faint, very small, round, star 0.5 arcmin to north","简略描述":"vF, vS, R, * n 0'.5"},{"ID":"12292","标识":"IC4452","M标识":"IC4452","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h32m27.4s","赤经D(J2000)":"14.540944444444444","赤纬(J2000)":"+27h25m38s","赤纬D(J2000)":"27.427222222222223","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"12293","标识":"IC4453","M标识":"IC4453","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"长蛇座","星座(En)":"HYA","赤经(J2000)":"14h34m28.6s","赤经D(J2000)":"14.57461111111111","赤纬(J2000)":"-27h31m5s","赤纬D(J2000)":"-27.518055555555556","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.2","短轴(分)":"1","方位角":"160","详细描述":"pretty bright, extremely small, round, faint star close","简略描述":"pB, eS, R, F * close"},{"ID":"12294","标识":"IC4454","M标识":"IC4454","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h33m16.6s","赤经D(J2000)":"14.554611111111111","赤纬(J2000)":"+17h42m44s","赤纬D(J2000)":"17.71222222222222","可见光星等V":"16.6","摄影(蓝光)星等B":"17.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"0","详细描述":"faint, extremely small, round, a little brighter middle","简略描述":"F, eS, R, lbM"},{"ID":"12295","标识":"IC4455","M标识":"IC4455","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h33m43.7s","赤经D(J2000)":"14.562138888888889","赤纬(J2000)":"-14h37m10s","赤纬D(J2000)":"-14.619444444444445","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"30","详细描述":"extremely faint, considerably small, considerably extended 30°","简略描述":"eF, cS, cE 30°"},{"ID":"12296","标识":"IC4456","M标识":"IC4456","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h34m9.1s","赤经D(J2000)":"14.569194444444443","赤纬(J2000)":"+16h11m3s","赤纬D(J2000)":"16.184166666666666","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"135","详细描述":"faint, small, round, diffuse","简略描述":"F, S, R, dif"},{"ID":"12297","标识":"IC4457","M标识":"IC4457","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h34m28.9s","赤经D(J2000)":"14.574694444444445","赤纬(J2000)":"+18h13m28s","赤纬D(J2000)":"18.224444444444444","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"75","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"12298","标识":"IC4458","M标识":"IC4458","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h38m5s","赤经D(J2000)":"14.634722222222221","赤纬(J2000)":"-39h28m25s","赤纬D(J2000)":"-39.47361111111111","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, extended 100°","简略描述":"eF, eS, E 100°"},{"ID":"12299","标识":"IC4459","M标识":"IC4459","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h34m32.2s","赤经D(J2000)":"14.575611111111112","赤纬(J2000)":"+30h58m26s","赤纬D(J2000)":"30.973888888888887","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"10","详细描述":"faint, pretty large, extended north-south, gradually a little brighter middle, mottled but not resolved","简略描述":"F, pL, E ns, glbM, r"},{"ID":"12300","标识":"IC4460","M标识":"IC4460","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h34m36.5s","赤经D(J2000)":"14.576805555555556","赤纬(J2000)":"+30h16m45s","赤纬D(J2000)":"30.279166666666665","可见光星等V":"14.9","摄影(蓝光)星等B":"15.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"171","详细描述":"faint, small, diffuse, gradually a little brighter middle","简略描述":"F, S, dif, glbM"},{"ID":"12301","标识":"IC4461","M标识":"IC4461","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h35m0.4s","赤经D(J2000)":"14.583444444444446","赤纬(J2000)":"+26h31m55s","赤纬D(J2000)":"26.531944444444445","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"45","详细描述":"faint, very small, round, nuclear, mottled but not resolved","简略描述":"F, vS, R, N, r"},{"ID":"12302","标识":"IC4462","M标识":"IC4462","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h35m1.9s","赤经D(J2000)":"14.583861111111112","赤纬(J2000)":"+26h32m38s","赤纬D(J2000)":"26.54388888888889","可见光星等V":"15.8","摄影(蓝光)星等B":"16.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"12303","标识":"IC4463","M标识":"IC4463","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h35m49s","赤经D(J2000)":"14.596944444444444","赤纬(J2000)":"+16h1m10s","赤纬D(J2000)":"16.019444444444442","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"12304","标识":"IC4464","M标识":"IC4464","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h37m48.9s","赤经D(J2000)":"14.63025","赤纬(J2000)":"-36h52m43s","赤纬D(J2000)":"-36.87861111111111","可见光星等V":"11.8","摄影(蓝光)星等B":"12.8","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"61","详细描述":"very faint, small, round, nuclear, wisp at 45°","简略描述":"vF, S, R, N, wisp at 45°"},{"ID":"12305","标识":"IC4465","M标识":"IC4465","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h35m51.1s","赤经D(J2000)":"14.597527777777778","赤纬(J2000)":"+15h34m23s","赤纬D(J2000)":"15.573055555555555","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.1","方位角":"80","详细描述":"very faint, very small, a little extended 180°","简略描述":"vF, vS, lE 180°"},{"ID":"12306","标识":"IC4466","M标识":"IC4466","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h36m47.9s","赤经D(J2000)":"14.613305555555556","赤纬(J2000)":"+18h20m35s","赤纬D(J2000)":"18.343055555555555","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"1","短轴(分)":"0.9","方位角":"10","详细描述":"faint, very small, a little extended","简略描述":"F, vS, lE"},{"ID":"12307","标识":"IC4467","M标识":"IC4467","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h36m53.6s","赤经D(J2000)":"14.614888888888888","赤纬(J2000)":"+18h22m16s","赤纬D(J2000)":"18.371111111111112","可见光星等V":"15.6","摄影(蓝光)星等B":"16.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"12308","标识":"IC4468","M标识":"IC4468","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h38m26.8s","赤经D(J2000)":"14.640777777777778","赤纬(J2000)":"-22h22m2s","赤纬D(J2000)":"-22.36722222222222","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.2","短轴(分)":"0.7","方位角":"155","详细描述":"faint, pretty large, considerably extended 160°, considerably brighter middle","简略描述":"F, pL, cE 160°, cbM"},{"ID":"12309","标识":"IC4469","M标识":"IC4469","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h37m20.6s","赤经D(J2000)":"14.622388888888889","赤纬(J2000)":"+18h14m56s","赤纬D(J2000)":"18.24888888888889","可见光星等V":"14.9","摄影(蓝光)星等B":"15.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"0.2","方位角":"110","详细描述":"faint, pretty large, extremely extended 110°","简略描述":"F, pL, eE 110°"},{"ID":"12310","标识":"IC4470","M标识":"IC4470","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"14h28m22.8s","赤经D(J2000)":"14.473","赤纬(J2000)":"+78h53m10s","赤纬D(J2000)":"78.88611111111112","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.2","方位角":"85","详细描述":"cluster, extremely faint, small, possibly nebulous","简略描述":"Cl, eF, S, ? neb"},{"ID":"12311","标识":"IC4471","M标识":"IC4471","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h36m32s","赤经D(J2000)":"14.608888888888888","赤纬(J2000)":"+41h41m7s","赤纬D(J2000)":"41.68527777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"21","详细描述":"nova","简略描述":"No description"},{"ID":"12312","标识":"IC4472","M标识":"IC4472","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"14h40m10.5s","赤经D(J2000)":"14.669583333333332","赤纬(J2000)":"-44h18m56s","赤纬D(J2000)":"-44.315555555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.2","短轴(分)":"0.5","方位角":"0","详细描述":"large, extremely extended 180°, between 2 stars north and south, doubtful","简略描述":"L, eE 180°, bet 2 st ns, doubtful"},{"ID":"12313","标识":"IC4473","M标识":"IC4473","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h37m54s","赤经D(J2000)":"14.631666666666668","赤纬(J2000)":"+15h51m49s","赤纬D(J2000)":"15.86361111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"5","详细描述":"very small, cometic (like a comet), 170°","简略描述":"vS, com, 170°"},{"ID":"12314","标识":"IC4474","M标识":"IC4474","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m22.4s","赤经D(J2000)":"14.639555555555555","赤纬(J2000)":"+23h25m44s","赤纬D(J2000)":"23.42888888888889","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"50","详细描述":"faint, very small, round, nuclear","简略描述":"F, vS, R, N"},{"ID":"12315","标识":"IC4475","M标识":"IC4475","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m23.2s","赤经D(J2000)":"14.639777777777777","赤纬(J2000)":"+23h20m3s","赤纬D(J2000)":"23.334166666666665","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"174","详细描述":"faint, very small, nuclear, stellar","简略描述":"F, vS, N, stell"},{"ID":"12316","标识":"IC4476","M标识":"IC4476","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h39m51.8s","赤经D(J2000)":"14.664388888888888","赤纬(J2000)":"-16h14m41s","赤纬D(J2000)":"-16.244722222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"170","详细描述":"nebula, 7th magnitude star 5 arcmin to northeast","简略描述":"Neb, * 7 nf 5'"},{"ID":"12317","标识":"IC4477","M标识":"IC4477","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m35.3s","赤经D(J2000)":"14.643138888888888","赤纬(J2000)":"+28h27m32s","赤纬D(J2000)":"28.45888888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"10","详细描述":"faint, very small, diffuse, 12th magnitude star 2 seconds west, 15 arcsec north","简略描述":"F, vS, dif, * 12 p 2s, 15\" n"},{"ID":"12318","标识":"IC4478","M标识":"IC4478","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h39m12.6s","赤经D(J2000)":"14.653500000000001","赤纬(J2000)":"+15h52m41s","赤纬D(J2000)":"15.878055555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"24","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"12319","标识":"IC4479","M标识":"IC4479","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h38m45.9s","赤经D(J2000)":"14.646083333333333","赤纬(J2000)":"+28h30m21s","赤纬D(J2000)":"28.50583333333333","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"faint, considerably small, nuclear, diffuse","简略描述":"F, cS, N, dif"},{"ID":"12320","标识":"IC4480","M标识":"IC4480","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h39m45.6s","赤经D(J2000)":"14.662666666666667","赤纬(J2000)":"+18h29m32s","赤纬D(J2000)":"18.492222222222225","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, diffuse, star in middle","简略描述":"F, S, R, dif, * in M"},{"ID":"12321","标识":"IC4481","M标识":"IC4481","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h40m10.1s","赤经D(J2000)":"14.669472222222222","赤纬(J2000)":"+16h8m30s","赤纬D(J2000)":"16.141666666666666","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"85","详细描述":"considerably faint, very small, round, diffuse","简略描述":"eF, vS, R, dif"},{"ID":"12322","标识":"IC4482","M标识":"IC4482","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"D","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h40m12.4s","赤经D(J2000)":"14.67011111111111","赤纬(J2000)":"+18h56m37s","赤纬D(J2000)":"18.94361111111111","可见光星等V":"15.1","摄影(蓝光)星等B":"16.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"9","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"12323","标识":"IC4483","M标识":"IC4483","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h40m19.4s","赤经D(J2000)":"14.672055555555556","赤纬(J2000)":"+16h41m6s","赤纬D(J2000)":"16.685","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"26","详细描述":"extended 200°, a little brighter middle","简略描述":"E 200°, lbM"},{"ID":"12324","标识":"IC4484","M标识":"IC4484","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"14h47m44.9s","赤经D(J2000)":"14.795805555555555","赤纬(J2000)":"-73h18m25s","赤纬D(J2000)":"-73.30694444444444","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.6","短轴(分)":"0.3","方位角":"132","详细描述":"extremely faint, extremely extended 140°, suspected","简略描述":"eF, eE 140°, susp"},{"ID":"12325","标识":"IC4485","M标识":"IC4485","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h40m31.4s","赤经D(J2000)":"14.675388888888888","赤纬(J2000)":"+28h40m10s","赤纬D(J2000)":"28.669444444444444","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, diffuse","简略描述":"F, S, dif"},{"ID":"12326","标识":"IC4486","M标识":"IC4486","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h41m40.7s","赤经D(J2000)":"14.694638888888889","赤纬(J2000)":"+18h33m27s","赤纬D(J2000)":"18.5575","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"145","详细描述":"very faint, very small, round, diffuse","简略描述":"vF, vS, R, dif"},{"ID":"12327","标识":"IC4487","M标识":"IC4487","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h41m52.2s","赤经D(J2000)":"14.697833333333334","赤纬(J2000)":"+18h34m37s","赤纬D(J2000)":"18.576944444444443","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, extremely small, round, a little brighter middle","简略描述":"F, eS, R, lbM"},{"ID":"12328","标识":"IC4488","M标识":"IC4488","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h42m52.6s","赤经D(J2000)":"14.714611111111111","赤纬(J2000)":"+18h37m14s","赤纬D(J2000)":"18.620555555555555","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"5","详细描述":"very faint, extremely small, round, a little brighter middle","简略描述":"vF, eS, R, lbM"},{"ID":"12329","标识":"IC4489","M标识":"IC4489","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h43m16s","赤经D(J2000)":"14.721111111111112","赤纬(J2000)":"+18h31m43s","赤纬D(J2000)":"18.52861111111111","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"90","详细描述":"very faint, considerably small, round, a little brighter middle","简略描述":"vF, eS, R, lbM"},{"ID":"12330","标识":"IC4490","M标识":"IC4490","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h45m21.5s","赤经D(J2000)":"14.755972222222223","赤纬(J2000)":"-36h10m23s","赤纬D(J2000)":"-36.17305555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"oval, around 2 stars of magnitude 9.5 and 10","简略描述":"Oval, around 2 st 9.5 and 10"},{"ID":"12331","标识":"IC4491","M标识":"IC4491","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h44m28.2s","赤经D(J2000)":"14.741166666666667","赤纬(J2000)":"-13h43m30s","赤纬D(J2000)":"-13.725","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, extremely extended 0°","简略描述":"F, S, eE 0°"},{"ID":"12332","标识":"IC4492","M标识":"IC4492","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h42m33.8s","赤经D(J2000)":"14.709388888888888","赤纬(J2000)":"+37h27m10s","赤纬D(J2000)":"37.45277777777778","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"11.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, round, nuclear, stellar","简略描述":"F, vS, R, N, stell"},{"ID":"12333","标识":"IC4493","M标识":"IC4493","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h44m20.7s","赤经D(J2000)":"14.739083333333333","赤纬(J2000)":"+12h7m55s","赤纬D(J2000)":"12.131944444444445","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, small, round, diffuse, middle mottled but not resolved","简略描述":"eF, S, R, dif, rM"},{"ID":"12334","标识":"IC4494","M标识":"IC4494","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h44m27.1s","赤经D(J2000)":"14.74086111111111","赤纬(J2000)":"+15h28m52s","赤纬D(J2000)":"15.481111111111112","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"160","详细描述":"very faint, very small, round, diffuse","简略描述":"vF, vS, R, dif"},{"ID":"12335","标识":"IC4495","M标识":"IC4495","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h44m14.5s","赤经D(J2000)":"14.73736111111111","赤纬(J2000)":"+23h33m31s","赤纬D(J2000)":"23.558611111111112","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"20","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"12336","标识":"IC4496","M标识":"IC4496","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h43m54.5s","赤经D(J2000)":"14.731805555555555","赤纬(J2000)":"+33h24m26s","赤纬D(J2000)":"33.407222222222224","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.8","方位角":"36","详细描述":"faint, small, round, nuclear","简略描述":"F, S, R, N"},{"ID":"12337","标识":"IC4497","M标识":"IC4497","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h44m20.7s","赤经D(J2000)":"14.739083333333333","赤纬(J2000)":"+28h33m4s","赤纬D(J2000)":"28.551111111111112","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, nuclear, mottled but not resolved, 12.5 magnitude star 5 seconds to east","简略描述":"F, S, R, N, r, * 12.5 f 5s"},{"ID":"12338","标识":"IC4498","M标识":"IC4498","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h45m0.8s","赤经D(J2000)":"14.750222222222222","赤纬(J2000)":"+26h18m0s","赤纬D(J2000)":"26.3","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"12339","标识":"IC4499","M标识":"IC4499","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"GCL","含重复类型":"GCL","形态":"XI","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"15h0m19.1s","赤经D(J2000)":"15.005305555555555","赤纬(J2000)":"-82h12m46s","赤纬D(J2000)":"-82.21277777777777","可见光星等V":"10.1","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"8","短轴(分)":"","方位角":"","详细描述":"cluster, very faint, 4 arcmin diameter; 3 faint stars in nebulosity?","简略描述":"Cl, vF, 4' diam, 3 F st in neb ?"},{"ID":"12340","标识":"IC4500","M标识":"IC4500","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h44m35.5s","赤经D(J2000)":"14.743194444444443","赤纬(J2000)":"+37h28m58s","赤纬D(J2000)":"37.48277777777778","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"84","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"12341","标识":"IC4501","M标识":"IC4501","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa?","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h47m25.4s","赤经D(J2000)":"14.790388888888888","赤纬(J2000)":"-22h24m21s","赤纬D(J2000)":"-22.40583333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.7","方位角":"63","详细描述":"very faint, small, indistinct","简略描述":"vF, S, indistinct"},{"ID":"12342","标识":"IC4502","M标识":"IC4502","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h45m15.7s","赤经D(J2000)":"14.75436111111111","赤纬(J2000)":"+37h17m59s","赤纬D(J2000)":"37.29972222222222","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"105","详细描述":"faint, small, diffuse, mottled but not resolved, 14th magnitude star very near","简略描述":"F, S, dif r, * 14 v nr"},{"ID":"12343","标识":"IC4503","M标识":"IC4503","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h46m39.6s","赤经D(J2000)":"14.777666666666667","赤纬(J2000)":"+16h8m47s","赤纬D(J2000)":"16.14638888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"0","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"12344","标识":"IC4504","M标识":"IC4504","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h46m36.9s","赤经D(J2000)":"14.776916666666667","赤纬(J2000)":"+31h41m59s","赤纬D(J2000)":"31.699722222222224","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"11.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"95","详细描述":"faint, small, round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"12345","标识":"IC4505","M标识":"IC4505","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h46m33.3s","赤经D(J2000)":"14.775916666666667","赤纬(J2000)":"+33h24m33s","赤纬D(J2000)":"33.409166666666664","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"1","方位角":"174","详细描述":"faint, small, round, nuclear","简略描述":"F, S, R, N"},{"ID":"12346","标识":"IC4506","M标识":"IC4506","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h46m39.8s","赤经D(J2000)":"14.777722222222224","赤纬(J2000)":"+33h24m6s","赤纬D(J2000)":"33.401666666666664","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, nuclear","简略描述":"vF, vS, N"},{"ID":"12347","标识":"IC4507","M标识":"IC4507","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h47m42.1s","赤经D(J2000)":"14.795027777777777","赤纬(J2000)":"+18h27m21s","赤纬D(J2000)":"18.45583333333333","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"160","详细描述":"very faint, extremely small, round","简略描述":"vF, eS, R"},{"ID":"12348","标识":"IC4508","M标识":"IC4508","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h47m50.7s","赤经D(J2000)":"14.797416666666667","赤纬(J2000)":"+31h45m55s","赤纬D(J2000)":"31.76527777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, round, suddenly brighter middle equivalent to 14th magnitude star","简略描述":"F, S, R, sbM * 14"},{"ID":"12349","标识":"IC4509","M标识":"IC4509","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h48m27s","赤经D(J2000)":"14.807500000000001","赤纬(J2000)":"+31h47m29s","赤纬D(J2000)":"31.79138888888889","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"46","详细描述":"faint, considerably small, irregular figure, mottled but not resolved","简略描述":"F, cS, iF, r"},{"ID":"12350","标识":"IC4510","M标识":"IC4510","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h50m40s","赤经D(J2000)":"14.844444444444445","赤纬(J2000)":"-20h43m54s","赤纬D(J2000)":"-20.731666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, irregularly round, suspected","简略描述":"vF, vS, iR, susp"},{"ID":"12351","标识":"IC4511","M标识":"IC4511","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"半人马座","星座(En)":"CEN","赤经(J2000)":"14h52m5s","赤经D(J2000)":"14.868055555555555","赤纬(J2000)":"-40h29m42s","赤纬D(J2000)":"-40.495","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably small, round, a little brighter middle, diffuse","简略描述":"cS, R, lbM, dif"},{"ID":"12352","标识":"IC4512","M标识":"IC4512","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h49m54.3s","赤经D(J2000)":"14.83175","赤纬(J2000)":"+27h42m1s","赤纬D(J2000)":"27.700277777777778","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"12353","标识":"IC4513","M标识":"IC4513","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"14h52m16s","赤经D(J2000)":"14.871111111111112","赤纬(J2000)":"-20h43m42s","赤纬D(J2000)":"-20.72833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, very extended 80°","简略描述":"F, S, vE 80°"},{"ID":"12354","标识":"IC4514","M标识":"IC4514","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h50m55.5s","赤经D(J2000)":"14.84875","赤纬(J2000)":"+27h34m43s","赤纬D(J2000)":"27.578611111111112","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"125","详细描述":"faint, small, round, nuclear, 13th magnitude star very near","简略描述":"F, S, R, N, * 13 v nr"},{"ID":"12355","标识":"IC4515","M标识":"IC4515","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h51m6.6s","赤经D(J2000)":"14.851833333333333","赤纬(J2000)":"+37h29m43s","赤纬D(J2000)":"37.49527777777778","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"60","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"12356","标识":"IC4516","M标识":"IC4516","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h54m23.4s","赤经D(J2000)":"14.906500000000001","赤纬(J2000)":"+16h21m21s","赤纬D(J2000)":"16.355833333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.7","方位角":"162","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"12357","标识":"IC4517","M标识":"IC4517","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h54m35.1s","赤经D(J2000)":"14.90975","赤纬(J2000)":"+23h38m35s","赤纬D(J2000)":"23.643055555555556","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"160","详细描述":"faint, small, nuclear, diffuse","简略描述":"F, S, N dif"},{"ID":"12358","标识":"IC4518","M标识":"IC4518","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"14h57m45.2s","赤经D(J2000)":"14.962555555555555","赤纬(J2000)":"-43h7m52s","赤纬D(J2000)":"-43.13111111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.2","短轴(分)":"0.6","方位角":"108","详细描述":"extremely small, round, also one pretty large, extremely extended 100°","简略描述":"eS, R, also one pL, eE 100°"},{"ID":"12359","标识":"IC4519","M标识":"IC4519","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h54m44.4s","赤经D(J2000)":"14.912333333333335","赤纬(J2000)":"+37h24m47s","赤纬D(J2000)":"37.41305555555555","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"135","详细描述":"faint, small, diffuse, 14th magnitude star to southwest","简略描述":"F, S, dif, * 14 sp"},{"ID":"12360","标识":"IC4520","M标识":"IC4520","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h55m7s","赤经D(J2000)":"14.91861111111111","赤纬(J2000)":"+33h43m28s","赤纬D(J2000)":"33.724444444444444","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round, nuclear, mottled but not resolved","简略描述":"F, vS, R, N, r"},{"ID":"12361","标识":"IC4521","M标识":"IC4521","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"14h59m27.3s","赤经D(J2000)":"14.990916666666665","赤纬(J2000)":"+25h35m0s","赤纬D(J2000)":"25.583333333333332","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"100","详细描述":"faint, considerably small, extended east-west, gradually brighter middle","简略描述":"F, cS, E pf, gbM"},{"ID":"12362","标识":"IC4522","M标识":"IC4522","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"15h11m29.7s","赤经D(J2000)":"15.191583333333334","赤纬(J2000)":"-75h51m32s","赤纬D(J2000)":"-75.85888888888888","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"2","短轴(分)":"0.5","方位角":"115","详细描述":"very faint, very small, considerably brighter middle, star involved","简略描述":"vF, vS, cbM, st inv"},{"ID":"12363","标识":"IC4523","M标识":"IC4523","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"15h5m10.5s","赤经D(J2000)":"15.08625","赤纬(J2000)":"-43h30m35s","赤纬D(J2000)":"-43.50972222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2","短轴(分)":"1.4","方位角":"0","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12364","标识":"IC4524","M标识":"IC4524","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h2m6.2s","赤经D(J2000)":"15.035055555555555","赤纬(J2000)":"+25h36m2s","赤纬D(J2000)":"25.600555555555555","可见光星等V":"14.9","摄影(蓝光)星等B":"15.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, irregular figure, gradually brighter middle, mottled but not resolved","简略描述":"F, S, iF, gbM, r"},{"ID":"12365","标识":"IC4525","M标识":"IC4525","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h2m24.7s","赤经D(J2000)":"15.040194444444444","赤纬(J2000)":"+25h38m16s","赤纬D(J2000)":"25.637777777777778","可见光星等V":"15.1","摄影(蓝光)星等B":"15.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, considerably small, diffuse","简略描述":"vF, cS, dif"},{"ID":"12366","标识":"IC4526","M标识":"IC4526","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h2m38.3s","赤经D(J2000)":"15.043972222222223","赤纬(J2000)":"+23h21m4s","赤纬D(J2000)":"23.351111111111113","可见光星等V":"15.8","摄影(蓝光)星等B":"16.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"10","详细描述":"very faint, very small, nuclear","简略描述":"vF, vS, N"},{"ID":"12367","标识":"IC4527","M标识":"IC4527","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"15h5m41s","赤经D(J2000)":"15.094722222222222","赤纬(J2000)":"-42h26m56s","赤纬D(J2000)":"-42.44888888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"46","详细描述":"considerably small, extended 225°, brighter middle","简略描述":"cS, E 225°, bM"},{"ID":"12368","标识":"IC4528","M标识":"IC4528","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h1m33.5s","赤经D(J2000)":"15.025972222222222","赤纬(J2000)":"+49h6m47s","赤纬D(J2000)":"49.113055555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"160","详细描述":"extremely faint, pretty small, diffuse, mottled but not resolved","简略描述":"eF, pS, dif, r"},{"ID":"12369","标识":"IC4529","M标识":"IC4529","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"豺狼座","星座(En)":"LUP","赤经(J2000)":"15h6m25.7s","赤经D(J2000)":"15.107138888888889","赤纬(J2000)":"-43h14m0s","赤纬D(J2000)":"-43.233333333333334","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"","详细描述":"nucleus","简略描述":"bM, magn 14"},{"ID":"12370","标识":"IC4530","M标识":"IC4530","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h3m45.4s","赤经D(J2000)":"15.062611111111112","赤纬(J2000)":"+26h6m0s","赤纬D(J2000)":"26.1","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.2","方位角":"19","详细描述":"faint, small, diffuse, 13.5 magnitude star to northeast","简略描述":"F, S, dif, * 13.5 nf"},{"ID":"12371","标识":"IC4531","M标识":"IC4531","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h4m26.4s","赤经D(J2000)":"15.074","赤纬(J2000)":"+23h24m56s","赤纬D(J2000)":"23.415555555555553","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"10","详细描述":"faint, very small, round, nuclear","简略描述":"F, vS, R, N"},{"ID":"12372","标识":"IC4532","M标识":"IC4532","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h4m53.7s","赤经D(J2000)":"15.081583333333333","赤纬(J2000)":"+23h15m23s","赤纬D(J2000)":"23.25638888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"90","详细描述":"very faint, nuclear, stellar","简略描述":"vF, N, stellar"},{"ID":"12373","标识":"IC4533","M标识":"IC4533","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h4m30.3s","赤经D(J2000)":"15.075083333333334","赤纬(J2000)":"+27h47m36s","赤纬D(J2000)":"27.793333333333337","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.7","方位角":"160","详细描述":"faint, small, irregular figure, 10.5 magnitude star to east","简略描述":"F, S, iF, * 10.5 f"},{"ID":"12374","标识":"IC4534","M标识":"IC4534","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h6m41.7s","赤经D(J2000)":"15.111583333333334","赤纬(J2000)":"+23h38m30s","赤纬D(J2000)":"23.641666666666666","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"160","详细描述":"pretty bright, small, extended north-south, nuclear","简略描述":"pB, S, E ns, N"},{"ID":"12375","标识":"IC4535","M标识":"IC4535","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h8m41.6s","赤经D(J2000)":"15.144888888888888","赤纬(J2000)":"+37h34m13s","赤纬D(J2000)":"37.57027777777778","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"165","详细描述":"faint, small, diffuse, 14th magnitude star to southwest","简略描述":"F, S, dif, * 14 sp"},{"ID":"12376","标识":"IC4536","M标识":"IC4536","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBdm","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h13m17.3s","赤经D(J2000)":"15.221472222222223","赤纬(J2000)":"-18h8m15s","赤纬D(J2000)":"-18.1375","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2.2","短轴(分)":"1.8","方位角":"10","详细描述":"very faint, large, round, faint star attached on northwest, faint star near to southeast","简略描述":"vF, L, R, F * att np, F * nr sf"},{"ID":"12377","标识":"IC4537","M标识":"IC4537","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h17m32.3s","赤经D(J2000)":"15.292305555555556","赤纬(J2000)":"+2h2m52s","赤纬D(J2000)":"2.0477777777777777","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"11.2","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"30","详细描述":"extremely faint, very small, round, brighter middle","简略描述":"eF, vS, R, bM"},{"ID":"12378","标识":"IC4538","M标识":"IC4538","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天秤座","星座(En)":"LIB","赤经(J2000)":"15h21m11.6s","赤经D(J2000)":"15.353222222222222","赤纬(J2000)":"-23h39m30s","赤纬D(J2000)":"-23.65833333333333","可见光星等V":"12.1","摄影(蓝光)星等B":"12.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.6","短轴(分)":"2","方位角":"32","详细描述":"most extremely faint, very large","简略描述":"eeF, vL"},{"ID":"12379","标识":"IC4539","M标识":"IC4539","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h18m31s","赤经D(J2000)":"15.308611111111112","赤纬(J2000)":"+32h23m34s","赤纬D(J2000)":"32.39277777777778","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"faint, small, round, very little brighter middle","简略描述":"F, S, R, vlbM"},{"ID":"12380","标识":"IC4540","M标识":"IC4540","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h20m3s","赤经D(J2000)":"15.334166666666667","赤纬(J2000)":"+1h47m0s","赤纬D(J2000)":"1.7833333333333332","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, much extended, bright star near","简略描述":"vF, pS, mE, B * nr"},{"ID":"12381","标识":"IC4541","M标识":"IC4541","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"15h29m55.7s","赤经D(J2000)":"15.498805555555554","赤纬(J2000)":"-70h35m2s","赤纬D(J2000)":"-70.58388888888888","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.3","短轴(分)":"0.6","方位角":"151","详细描述":"extremely faint, very small, much extended 150°, suspected","简略描述":"eF, vS, mE 150°, susp"},{"ID":"12382","标识":"IC4542","M标识":"IC4542","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h22m5.5s","赤经D(J2000)":"15.368194444444445","赤纬(J2000)":"+33h8m55s","赤纬D(J2000)":"33.14861111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"123","详细描述":"faint, small, round, nuclear, 12th magnitude star to southwest","简略描述":"F, S, R, N, * 12 sp"},{"ID":"12383","标识":"IC4543","M标识":"IC4543","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h24m59.4s","赤经D(J2000)":"15.416500000000001","赤纬(J2000)":"+13h26m44s","赤纬D(J2000)":"13.445555555555556","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.6","方位角":"84","详细描述":"extremely faint, pretty small, very faint star near to northwest","简略描述":"eF, pS, vF * nr np"},{"ID":"12384","标识":"IC4544","M标识":"IC4544","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"矩尺座","星座(En)":"NOR","赤经(J2000)":"15h29m25s","赤经D(J2000)":"15.490277777777777","赤纬(J2000)":"-50h34m48s","赤纬D(J2000)":"-50.580000000000005","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"12385","标识":"IC4545","M标识":"IC4545","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"15h41m28.6s","赤经D(J2000)":"15.691277777777778","赤纬(J2000)":"-81h37m35s","赤纬D(J2000)":"-81.62638888888888","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"0.9","方位角":"158","详细描述":"most extremely faint, extremely small, much extended 145°, between 2 very faint stars, suspected","简略描述":"eeF, eS, mE 145°, bet 2 vF st, susp"},{"ID":"12386","标识":"IC4546","M标识":"IC4546","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h26m58.4s","赤经D(J2000)":"15.449555555555555","赤纬(J2000)":"+28h51m7s","赤纬D(J2000)":"28.851944444444445","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"120","详细描述":"faint, very small, round, 13th magnitude star attached","简略描述":"F, vS, R, * 13 att"},{"ID":"12387","标识":"IC4547","M标识":"IC4547","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h27m15s","赤经D(J2000)":"15.454166666666666","赤纬(J2000)":"+28h47m22s","赤纬D(J2000)":"28.789444444444445","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"150","详细描述":"faint, small, round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"12388","标识":"IC4548","M标识":"IC4548","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h27m23.9s","赤经D(J2000)":"15.456638888888888","赤纬(J2000)":"+28h51m1s","赤纬D(J2000)":"28.85027777777778","可见光星等V":"15.6","摄影(蓝光)星等B":"16.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, small, irregular figure, mottled but not resolved","简略描述":"vF, S, iF, r"},{"ID":"12389","标识":"IC4549","M标识":"IC4549","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h29m14.7s","赤经D(J2000)":"15.487416666666666","赤纬(J2000)":"+32h49m33s","赤纬D(J2000)":"32.825833333333335","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.5","短轴(分)":"0.2","方位角":"99","详细描述":"faint, considerably small, extended east-west","简略描述":"F, cS, E pf"},{"ID":"12390","标识":"IC4550","M标识":"IC4550","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"GCL","含重复类型":"Dup","形态":"IX","星座(Zh)":"矩尺座","星座(En)":"NOR","赤经(J2000)":"15h35m28.5s","赤经D(J2000)":"15.59125","赤纬(J2000)":"-50h39m32s","赤纬D(J2000)":"-50.65888888888889","可见光星等V":"8.4","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"","方位角":"","详细描述":"bright, pretty small, a little extended","简略描述":"B, pS, lE"},{"ID":"12391","标识":"IC4551","M标识":"IC4551","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBcd","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h37m36.2s","赤经D(J2000)":"15.626722222222222","赤纬(J2000)":"+5h58m25s","赤纬D(J2000)":"5.973611111111111","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"4.1","短轴(分)":"3.3","方位角":"145","详细描述":"most extremely faint, large, round, very diffuse","简略描述":"eeF, L, R, v dif"},{"ID":"12392","标识":"IC4552","M标识":"IC4552","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h34m58.3s","赤经D(J2000)":"15.58286111111111","赤纬(J2000)":"+4h41m57s","赤纬D(J2000)":"4.699166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty small, round","简略描述":"eF, pS, R"},{"ID":"12393","标识":"IC4553","M标识":"IC4553","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sd","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h34m57.2s","赤经D(J2000)":"15.582555555555555","赤纬(J2000)":"+23h30m9s","赤纬D(J2000)":"23.5025","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"1.7","方位角":"144","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"12394","标识":"IC4554","M标识":"IC4554","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h35m4.7s","赤经D(J2000)":"15.58463888888889","赤纬(J2000)":"+23h28m47s","赤纬D(J2000)":"23.47972222222222","可见光星等V":"15.9","摄影(蓝光)星等B":"16.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"135","详细描述":"very faint, very small, nuclear, stellar","简略描述":"vF, vS, N, stell"},{"ID":"12395","标识":"IC4555","M标识":"IC4555","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"15h48m14.8s","赤经D(J2000)":"15.804111111111112","赤纬(J2000)":"-78h10m46s","赤纬D(J2000)":"-78.17944444444444","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.9","短轴(分)":"0.5","方位角":"61","详细描述":"very faint, very small, extremely extended 55°, brighter middle","简略描述":"vF, vS, eE 55°, bM"},{"ID":"12396","标识":"IC4556","M标识":"IC4556","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h35m22.4s","赤经D(J2000)":"15.589555555555556","赤纬(J2000)":"+25h17m52s","赤纬D(J2000)":"25.297777777777778","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"171","详细描述":"faint, small, round, nuclear","简略描述":"F, S, R, N"},{"ID":"12397","标识":"IC4557","M标识":"IC4557","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h34m36.9s","赤经D(J2000)":"15.576916666666666","赤纬(J2000)":"+39h43m46s","赤纬D(J2000)":"39.72944444444445","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"135","详细描述":"faint, very small, nuclear","简略描述":"F, vS, N"},{"ID":"12398","标识":"IC4558","M标识":"IC4558","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h35m46.2s","赤经D(J2000)":"15.596166666666667","赤纬(J2000)":"+25h20m43s","赤纬D(J2000)":"25.345277777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"160","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"12399","标识":"IC4559","M标识":"IC4559","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h35m53.4s","赤经D(J2000)":"15.598166666666668","赤纬(J2000)":"+25h20m30s","赤纬D(J2000)":"25.341666666666665","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"80","详细描述":"faint, very small, round, nuclear","简略描述":"F, vS, R, N"},{"ID":"12400","标识":"IC4560","M标识":"IC4560","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h35m54s","赤经D(J2000)":"15.598333333333334","赤纬(J2000)":"+39h48m53s","赤纬D(J2000)":"39.81472222222222","可见光星等V":"15.7","摄影(蓝光)星等B":"16.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"105","详细描述":"very faint, very small; (NGC) 5966 to southeast","简略描述":"vF, vS, 5966 sf"},{"ID":"12401","标识":"IC4561","M标识":"IC4561","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h36m47s","赤经D(J2000)":"15.613055555555555","赤纬(J2000)":"+25h24m59s","赤纬D(J2000)":"25.41638888888889","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"135","详细描述":"faint, very small, round, nuclear","简略描述":"F, vS, R, N"},{"ID":"12402","标识":"IC4562","M标识":"IC4562","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h35m57.1s","赤经D(J2000)":"15.599194444444445","赤纬(J2000)":"+43h29m35s","赤纬D(J2000)":"43.49305555555556","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"pretty bright, small, round, much brighter middle, faint star or nebula 1 arcmin to northeast","简略描述":"pB, S, R, mbM, F * or neb 1' nf"},{"ID":"12403","标识":"IC4563","M标识":"IC4563","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h36m3.5s","赤经D(J2000)":"15.600972222222222","赤纬(J2000)":"+39h49m54s","赤纬D(J2000)":"39.83166666666667","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"165","详细描述":"very faint, very small, nuclear","简略描述":"vF, vS, N"},{"ID":"12404","标识":"IC4564","M标识":"IC4564","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h36m26.9s","赤经D(J2000)":"15.607472222222222","赤纬(J2000)":"+43h31m7s","赤纬D(J2000)":"43.51861111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"70","详细描述":"pretty faint, round, gradually brighter middle","简略描述":"pF, R, gbM"},{"ID":"12405","标识":"IC4565","M标识":"IC4565","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h36m35.2s","赤经D(J2000)":"15.609777777777778","赤纬(J2000)":"+43h25m31s","赤纬D(J2000)":"43.42527777777777","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"8","详细描述":"faint, round, gradually brighter middle","简略描述":"F, R, gbM"},{"ID":"12406","标识":"IC4566","M标识":"IC4566","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h36m42.2s","赤经D(J2000)":"15.611722222222221","赤纬(J2000)":"+43h32m23s","赤纬D(J2000)":"43.53972222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"1","方位角":"165","详细描述":"pretty faint, round, gradually brighter middle","简略描述":"pF, R, gbM"},{"ID":"12407","标识":"IC4567","M标识":"IC4567","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"牧夫座","星座(En)":"BOO","赤经(J2000)":"15h37m13.3s","赤经D(J2000)":"15.620361111111112","赤纬(J2000)":"+43h17m52s","赤纬D(J2000)":"43.297777777777775","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"1","方位角":"125","详细描述":"pretty faint, round, gradually brighter middle","简略描述":"pF, R, gbM"},{"ID":"12408","标识":"IC4568","M标识":"IC4568","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h40m7.6s","赤经D(J2000)":"15.668777777777777","赤纬(J2000)":"+28h9m7s","赤纬D(J2000)":"28.151944444444442","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"30","详细描述":"faint, small, round, nuclear","简略描述":"F, S, R, N"},{"ID":"12409","标识":"IC4569","M标识":"IC4569","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h40m48.3s","赤经D(J2000)":"15.680083333333332","赤纬(J2000)":"+28h17m33s","赤纬D(J2000)":"28.2925","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"132","详细描述":"pretty bright, double star of 13th magnitude in small nebula","简略描述":"pB, D * 13 in S neb"},{"ID":"12410","标识":"IC4570","M标识":"IC4570","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h41m22.5s","赤经D(J2000)":"15.689583333333333","赤纬(J2000)":"+28h13m45s","赤纬D(J2000)":"28.229166666666664","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"63","详细描述":"faint, considerably small, round","简略描述":"F, cS, R"},{"ID":"12411","标识":"IC4571","M标识":"IC4571","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"南三角座","星座(En)":"TRA","赤经(J2000)":"15h48m51.6s","赤经D(J2000)":"15.814333333333334","赤纬(J2000)":"-67h19m25s","赤纬D(J2000)":"-67.3236111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"142","详细描述":"considerably faint, extremely small, much extended 155°","简略描述":"cF, cS, mE 155°"},{"ID":"12412","标识":"IC4572","M标识":"IC4572","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h41m54.2s","赤经D(J2000)":"15.69838888888889","赤纬(J2000)":"+28h8m1s","赤纬D(J2000)":"28.13361111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.7","方位角":"69","详细描述":"pretty bright, considerably small, gradually brighter middle, diffuse, mottled but not resolved","简略描述":"pB, cS, gbM, dif, r"},{"ID":"12413","标识":"IC4573","M标识":"IC4573","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h42m12.2s","赤经D(J2000)":"15.703388888888888","赤纬(J2000)":"+23h48m1s","赤纬D(J2000)":"23.80027777777778","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"135","详细描述":"faint, very small, diffuse, mottled but not resolved","简略描述":"F, vS, dif, r"},{"ID":"12414","标识":"IC4574","M标识":"IC4574","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h41m59.2s","赤经D(J2000)":"15.699777777777777","赤纬(J2000)":"+28h14m24s","赤纬D(J2000)":"28.240000000000002","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"10.8","长轴(分)":"0.3","短轴(分)":"0.1","方位角":"20","详细描述":"pretty faint, small, round","简略描述":"pF, S, R"},{"ID":"12415","标识":"IC4575","M标识":"IC4575","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h42m19.6s","赤经D(J2000)":"15.705444444444444","赤纬(J2000)":"+23h48m29s","赤纬D(J2000)":"23.808055555555555","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"85","详细描述":"faint, small, diffuse, mottled but not resolved, 15th magnitude star attached","简略描述":"F, S, dif, r, * 15 att"},{"ID":"12416","标识":"IC4576","M标识":"IC4576","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h42m35.4s","赤经D(J2000)":"15.709833333333332","赤纬(J2000)":"+23h40m14s","赤纬D(J2000)":"23.670555555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.6","方位角":"63","详细描述":"faint, very small, round, nuclear, 14th magnitude star to northwest","简略描述":"F, vS, R, N, * 14 np"},{"ID":"12417","标识":"IC4577","M标识":"IC4577","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h42m45.5s","赤经D(J2000)":"15.712638888888888","赤纬(J2000)":"+23h47m35s","赤纬D(J2000)":"23.793055555555558","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"12418","标识":"IC4578","M标识":"IC4578","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"15h53m11.6s","赤经D(J2000)":"15.886555555555555","赤纬(J2000)":"-74h49m32s","赤纬D(J2000)":"-74.82555555555555","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"133","详细描述":"extremely faint, extremely small, considerably extended 140°, between two very faint stars","简略描述":"eF, eS, cE 140°, bet 2 vF st"},{"ID":"12419","标识":"IC4579","M标识":"IC4579","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h42m51.4s","赤经D(J2000)":"15.714277777777777","赤纬(J2000)":"+23h46m25s","赤纬D(J2000)":"23.77361111111111","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"66","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"12420","标识":"IC4580","M标识":"IC4580","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h43m14.3s","赤经D(J2000)":"15.720638888888889","赤纬(J2000)":"+28h21m23s","赤纬D(J2000)":"28.35638888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"170","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"12421","标识":"IC4581","M标识":"IC4581","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h44m1.4s","赤经D(J2000)":"15.733722222222221","赤纬(J2000)":"+28h16m36s","赤纬D(J2000)":"28.276666666666667","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"","详细描述":"faint, small, irregular figure, 12.5 magnitude star near","简略描述":"F, S, iF, * 12.5 nr"},{"ID":"12422","标识":"IC4582","M标识":"IC4582","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h45m39.4s","赤经D(J2000)":"15.760944444444444","赤纬(J2000)":"+28h5m19s","赤纬D(J2000)":"28.08861111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"171","详细描述":"faint, small, extended east-west, gradually brighter middle, 12.5 magnitude star 6.5 seconds of time to east","简略描述":"F, S, E pf, gbM, * 12.5 f 6s.5"},{"ID":"12423","标识":"IC4583","M标识":"IC4583","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h46m21.9s","赤经D(J2000)":"15.77275","赤纬(J2000)":"+23h48m32s","赤纬D(J2000)":"23.80888888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.3","方位角":"36","详细描述":"faint, very small, extended, nuclear, mottled but not resolved","简略描述":"F, vS, E, N, r"},{"ID":"12424","标识":"IC4584","M标识":"IC4584","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"南三角座","星座(En)":"TRA","赤经(J2000)":"16h0m12.5s","赤经D(J2000)":"16.00347222222222","赤纬(J2000)":"-66h22m57s","赤纬D(J2000)":"-66.3825","可见光星等V":"15.1","摄影(蓝光)星等B":"15.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"15.9","长轴(分)":"1.8","短轴(分)":"1.5","方位角":"96","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"12425","标识":"IC4585","M标识":"IC4585","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"南三角座","星座(En)":"TRA","赤经(J2000)":"16h0m17.1s","赤经D(J2000)":"16.00475","赤纬(J2000)":"-66h19m21s","赤纬D(J2000)":"-66.32249999999999","可见光星等V":"12.3","摄影(蓝光)星等B":"13","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"2.6","短轴(分)":"0.8","方位角":"54","详细描述":"extremely faint, small, irregular figure","简略描述":"eF, S, iF"},{"ID":"12426","标识":"IC4586","M标识":"IC4586","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"15h55m57.5s","赤经D(J2000)":"15.932638888888889","赤纬(J2000)":"+5h55m54s","赤纬D(J2000)":"5.931666666666667","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"171","详细描述":"extremely faint, small, round, between 8th magnitude star to east and curve of stars to west","简略描述":"eF, S, R, bet * 8 f & curve of st p"},{"ID":"12427","标识":"IC4587","M标识":"IC4587","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"15h59m51.5s","赤经D(J2000)":"15.997638888888888","赤纬(J2000)":"+25h56m28s","赤纬D(J2000)":"25.941111111111113","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, extremely small, T Coronae to southwest","简略描述":"eF, eS, T Coronae sp"},{"ID":"12428","标识":"IC4588","M标识":"IC4588","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"16h5m4.2s","赤经D(J2000)":"16.0845","赤纬(J2000)":"+23h55m0s","赤纬D(J2000)":"23.916666666666668","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, round, stellar, (NGC) 5051 to west","简略描述":"vF, vS, R, stell, 5051 p"},{"ID":"12429","标识":"IC4589","M标识":"IC4589","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"16h7m24.7s","赤经D(J2000)":"16.123527777777777","赤纬(J2000)":"-6h23m8s","赤纬D(J2000)":"-6.385555555555556","可见光星等V":"99","摄影(蓝光)星等B":"15.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"13th magnitude star, perhaps in extremely faint nebula","简略描述":"* 13, in eF neb ?"},{"ID":"12430","标识":"IC4590","M标识":"IC4590","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E+C?","星座(Zh)":"北冕座","星座(En)":"CRB","赤经(J2000)":"16h8m21.1s","赤经D(J2000)":"16.139194444444446","赤纬(J2000)":"+28h28m43s","赤纬D(J2000)":"28.47861111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, gradually brighter middle, diffuse","简略描述":"F, S, gbM, dif"},{"ID":"12431","标识":"IC4591","M标识":"IC4591","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN+*","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h12m18s","赤经D(J2000)":"16.205","赤纬(J2000)":"-27h55m40s","赤纬D(J2000)":"-27.92777777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"12","短轴(分)":"10","方位角":"","详细描述":"5.6 magnitude star in faint nebula","简略描述":"* 5.6 in F neb"},{"ID":"12432","标识":"IC4592","M标识":"IC4592","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"蓝马头星云","类型":"Nb","含重复类型":"Nb","形态":"RN+*","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h11m59.6s","赤经D(J2000)":"16.19988888888889","赤纬(J2000)":"-19h27m35s","赤纬D(J2000)":"-19.459722222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"150","短轴(分)":"60","方位角":"","详细描述":"very large, extended, ν2 Scorpii involved","简略描述":"vL, E, ν2 Scorpii inv"},{"ID":"12433","标识":"IC4593","M标识":"IC4593","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"白眼豌豆星云","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h11m44.5s","赤经D(J2000)":"16.195694444444445","赤纬(J2000)":"+12h4m19s","赤纬D(J2000)":"12.071944444444444","可见光星等V":"10.7","摄影(蓝光)星等B":"10.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.7","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"12434","标识":"IC4594","M标识":"IC4594","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h11m22.6s","赤经D(J2000)":"16.189611111111113","赤纬(J2000)":"+23h57m54s","赤纬D(J2000)":"23.965","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"90","详细描述":"faint, small, round, nuclear, mottled but not resolved","简略描述":"F, S, R, N, r"},{"ID":"12435","标识":"IC4595","M标识":"IC4595","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"南三角座","星座(En)":"TRA","赤经(J2000)":"16h20m43.8s","赤经D(J2000)":"16.345499999999998","赤纬(J2000)":"-70h8m33s","赤纬D(J2000)":"-70.14250000000001","可见光星等V":"12","摄影(蓝光)星等B":"12.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"2.7","短轴(分)":"0.5","方位角":"63","详细描述":"faint, small, extremely extended 55°","简略描述":"F, S, eE 55°"},{"ID":"12436","标识":"IC4596","M标识":"IC4596","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h16m3.6s","赤经D(J2000)":"16.267666666666667","赤纬(J2000)":"-22h37m29s","赤纬D(J2000)":"-22.62472222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"54","详细描述":"faint, small, much extended 40°, much brighter middle and nucleus, probably spiral","简略描述":"F, S, mE 40°, mbMN, prob spir"},{"ID":"12437","标识":"IC4597","M标识":"IC4597","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h17m39.7s","赤经D(J2000)":"16.29436111111111","赤纬(J2000)":"-34h21m58s","赤纬D(J2000)":"-34.36611111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.2","短轴(分)":"1","方位角":"120","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12438","标识":"IC4598","M标识":"IC4598","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h18m13.2s","赤经D(J2000)":"16.30366666666667","赤纬(J2000)":"-31h26m29s","赤纬D(J2000)":"-31.441388888888888","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"175","详细描述":"nebulous streak of faint stars, 1 arcmin north-south","简略描述":"Neb streak of F st, 1' ns"},{"ID":"12439","标识":"IC4599","M标识":"IC4599","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h19m23.2s","赤经D(J2000)":"16.32311111111111","赤纬(J2000)":"-42h15m34s","赤纬D(J2000)":"-42.25944444444445","可见光星等V":"99","摄影(蓝光)星等B":"12.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.25","短轴(分)":"","方位角":"","详细描述":"planetary, 15th magnitude","简略描述":"Planetary, 15 mag"},{"ID":"12440","标识":"IC4600","M标识":"IC4600","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h16m5.3s","赤经D(J2000)":"16.26813888888889","赤纬(J2000)":"-22h46m59s","赤纬D(J2000)":"-22.783055555555556","可见光星等V":"15.5","摄影(蓝光)星等B":"16.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"12441","标识":"IC4601","M标识":"IC4601","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN+*","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h20m18s","赤经D(J2000)":"16.33833333333333","赤纬(J2000)":"-20h4m54s","赤纬D(J2000)":"-20.081666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"20","短轴(分)":"10","方位角":"","详细描述":"2 stars of 8th magnitude in extremely large diffuse nebula, a little extended northwest-southeast","简略描述":"2 st 8 in eL, dif neb, lE npsf"},{"ID":"12442","标识":"IC4602","M标识":"IC4602","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sab","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h23m38.7s","赤经D(J2000)":"16.394083333333334","赤纬(J2000)":"+11h47m12s","赤纬D(J2000)":"11.786666666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"127","详细描述":"most extremely faint, a little extended, extremely difficult, faint star to east","简略描述":"eeF, lE, e diffic, F * f"},{"ID":"12443","标识":"IC4603","M标识":"IC4603","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN+*","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"16h25m24s","赤经D(J2000)":"16.423333333333336","赤纬(J2000)":"-24h28m0s","赤纬D(J2000)":"-24.466666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"35","短轴(分)":"20","方位角":"","详细描述":"extremely faint, very large, diffuse, star involved","简略描述":"eF, vL, dif, st inv"},{"ID":"12444","标识":"IC4604","M标识":"IC4604","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"心宿增四星云","类型":"Nb","含重复类型":"Nb","形态":"RN+*","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"16h25m33s","赤经D(J2000)":"16.425833333333333","赤纬(J2000)":"-23h26m36s","赤纬D(J2000)":"-23.443333333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"60","短轴(分)":"50","方位角":"","详细描述":"ρ Ophiuchi in extremely large nebula","简略描述":"ρ Ophiuchi in eL neb"},{"ID":"12445","标识":"IC4605","M标识":"IC4605","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN+*","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h30m12.5s","赤经D(J2000)":"16.50347222222222","赤纬(J2000)":"-25h6m53s","赤纬D(J2000)":"-25.114722222222223","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"30","短轴(分)":"30","方位角":"","详细描述":"7th magnitude star in extremely faint, very large nebula","简略描述":"* 7 in eF, vL neb"},{"ID":"12446","标识":"IC4606","M标识":"IC4606","拓展名":"","组件":"","Class":"","业余排名":"14","中文名":"心宿二反射星云","类型":"GCL","含重复类型":"Dup","形态":"XI","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h27m14.1s","赤经D(J2000)":"16.453916666666665","赤纬(J2000)":"-26h1m27s","赤纬D(J2000)":"-26.024166666666666","可见光星等V":"9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7.4","短轴(分)":"","方位角":"","详细描述":"nebula; faint star 4.5 seconds of time to west, 0.5 arcmin to north","简略描述":"Neb, F * p 4s.5, 0'.5 n"},{"ID":"12447","标识":"IC4607","M标识":"IC4607","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h30m15.8s","赤经D(J2000)":"16.50438888888889","赤纬(J2000)":"+24h34m28s","赤纬D(J2000)":"24.574444444444445","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"0","详细描述":"faint, considerably small, diffuse","简略描述":"F, cS, dif"},{"ID":"12448","标识":"IC4608","M标识":"IC4608","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"16h46m54.1s","赤经D(J2000)":"16.781694444444444","赤纬(J2000)":"-77h29m21s","赤纬D(J2000)":"-77.48916666666666","可见光星等V":"13.7","摄影(蓝光)星等B":"14.2","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"80","详细描述":"very faint, very small, considerably extended 85°, brighter middle","简略描述":"vF, vS, cE 85°, bM"},{"ID":"12449","标识":"IC4609","M标识":"IC4609","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h33m1.5s","赤经D(J2000)":"16.550416666666667","赤纬(J2000)":"+22h47m53s","赤纬D(J2000)":"22.798055555555557","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, very small, round, gradually brighter middle and nucleus","简略描述":"F, vS, R, gbMN"},{"ID":"12450","标识":"IC4610","M标识":"IC4610","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h33m39.2s","赤经D(J2000)":"16.56088888888889","赤纬(J2000)":"+39h15m27s","赤纬D(J2000)":"39.2575","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"40","详细描述":"faint, extremely small, round, gradually brighter middle","简略描述":"F, eS, R, gbM"},{"ID":"12451","标识":"IC4611","M标识":"IC4611","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h33m42.1s","赤经D(J2000)":"16.561694444444445","赤纬(J2000)":"+39h11m8s","赤纬D(J2000)":"39.18555555555555","可见光星等V":"15","摄影(蓝光)星等B":"16","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, very small, irregular figure","简略描述":"F, vS, iF"},{"ID":"12452","标识":"IC4612","M标识":"IC4612","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h33m49.7s","赤经D(J2000)":"16.563805555555557","赤纬(J2000)":"+39h15m48s","赤纬D(J2000)":"39.263333333333335","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"faint, extremely small, round, gradually brighter middle","简略描述":"F, eS, R, gbM"},{"ID":"12453","标识":"IC4613","M标识":"IC4613","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h37m10s","赤经D(J2000)":"16.619444444444444","赤纬(J2000)":"+36h7m48s","赤纬D(J2000)":"36.13","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, diffuse [perhaps = (NGC) 6196]","简略描述":"eF, dif [? = 6196]"},{"ID":"12454","标识":"IC4614","M标识":"IC4614","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h37m47.2s","赤经D(J2000)":"16.62977777777778","赤纬(J2000)":"+36h6m53s","赤纬D(J2000)":"36.11472222222223","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"83","详细描述":"extremely faint, stellar","简略描述":"eF, stellar"},{"ID":"12455","标识":"IC4615","M标识":"IC4615","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h37m53.8s","赤经D(J2000)":"16.631611111111113","赤纬(J2000)":"+36h4m23s","赤纬D(J2000)":"36.073055555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2","短轴(分)":"1.2","方位角":"140","详细描述":"extremely faint, diffuse [perhaps = (NGC) 6196]","简略描述":"* 13 in S neb"},{"ID":"12456","标识":"IC4616","M标识":"IC4616","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0-a","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h37m59.8s","赤经D(J2000)":"16.633277777777778","赤纬(J2000)":"+35h59m45s","赤纬D(J2000)":"35.99583333333334","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"37","详细描述":"extremely faint, small, diffuse, mottled but not resolved; 12th magnitude star 2 arcmin to southeast","简略描述":"eF, S, dif, r, * 12 sf 2'"},{"ID":"12457","标识":"IC4617","M标识":"IC4617","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h42m8.1s","赤经D(J2000)":"16.70225","赤纬(J2000)":"+36h41m3s","赤纬D(J2000)":"36.68416666666666","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"32","详细描述":"small, extended 29°, brighter middle","简略描述":"S, E 29°, bM"},{"ID":"12458","标识":"IC4618","M标识":"IC4618","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"16h57m50s","赤经D(J2000)":"16.96388888888889","赤纬(J2000)":"-76h59m33s","赤纬D(J2000)":"-76.9925","可见光星等V":"12","摄影(蓝光)星等B":"12.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"118","详细描述":"very remarkable object, extremely faint, extremely small, 2 branch spiral","简略描述":"!! eF, eS, 2 branch spiral"},{"ID":"12459","标识":"IC4619","M标识":"IC4619","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h44m11.1s","赤经D(J2000)":"16.736416666666667","赤纬(J2000)":"+17h45m32s","赤纬D(J2000)":"17.75888888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, round","简略描述":"F, R"},{"ID":"12460","标识":"IC4620","M标识":"IC4620","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h48m30s","赤经D(J2000)":"16.808333333333334","赤纬(J2000)":"+19h18m20s","赤纬D(J2000)":"19.305555555555557","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"100","详细描述":"very faint, round","简略描述":"vF, R"},{"ID":"12461","标识":"IC4621","M标识":"IC4621","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h50m51.1s","赤经D(J2000)":"16.847527777777778","赤纬(J2000)":"+8h47m3s","赤纬D(J2000)":"8.784166666666666","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"122","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"12462","标识":"IC4622","M标识":"IC4622","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"16h52m8.3s","赤经D(J2000)":"16.868972222222222","赤纬(J2000)":"-16h14m9s","赤纬D(J2000)":"-16.235833333333336","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably faint, small, irregular figure, double","简略描述":"cF, S, iF, D"},{"ID":"12463","标识":"IC4623","M标识":"IC4623","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h51m5.4s","赤经D(J2000)":"16.8515","赤纬(J2000)":"+22h31m39s","赤纬D(J2000)":"22.5275","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"120","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"12464","标识":"IC4624","M标识":"IC4624","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"D","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h51m33.5s","赤经D(J2000)":"16.859305555555558","赤纬(J2000)":"+17h26m56s","赤纬D(J2000)":"17.448888888888888","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"very faint, round","简略描述":"vF, R"},{"ID":"12465","标识":"IC4625","M标识":"IC4625","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E?","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"16h52m58.8s","赤经D(J2000)":"16.883","赤纬(J2000)":"+2h24m11s","赤纬D(J2000)":"2.4030555555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.1","短轴(分)":"1","方位角":"20","详细描述":"nebula; 10th magnitude star close to northeast [perhaps = (NGC) 6240]","简略描述":"Neb, * 10 close nf [? = 6240]"},{"ID":"12466","标识":"IC4626","M标识":"IC4626","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"16h53m20.7s","赤经D(J2000)":"16.889083333333332","赤纬(J2000)":"+2h20m16s","赤纬D(J2000)":"2.3377777777777777","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"12467","标识":"IC4627","M标识":"IC4627","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"16h54m8.6s","赤经D(J2000)":"16.902388888888886","赤纬(J2000)":"-7h38m9s","赤纬D(J2000)":"-7.635833333333333","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"50","详细描述":"extremely faint, extremely small, diffuse, 12th magnitude star 12 arcsec to south","简略描述":"eF, eS, dif, * 12 s 12\""},{"ID":"12468","标识":"IC4628","M标识":"IC4628","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"斑节虾星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"16h57m0s","赤经D(J2000)":"16.95","赤纬(J2000)":"-40h27m24s","赤纬D(J2000)":"-40.45666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"90","短轴(分)":"60","方位角":"","详细描述":"faint, extremely large, extended east-west, diffuse","简略描述":"F, eL, E pf, dif"},{"ID":"12469","标识":"IC4629","M标识":"IC4629","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"16h56m9s","赤经D(J2000)":"16.935833333333335","赤纬(J2000)":"-16h42m36s","赤纬D(J2000)":"-16.71","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, extremely extended 75°, suspected","简略描述":"vF, vS, eE 75°, susp"},{"ID":"12470","标识":"IC4630","M标识":"IC4630","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h55m9.5s","赤经D(J2000)":"16.919305555555557","赤纬(J2000)":"+26h39m48s","赤纬D(J2000)":"26.66333333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"6","详细描述":"faint, small, round, stellar nucleus","简略描述":"F, S, R, stell N"},{"ID":"12471","标识":"IC4631","M标识":"IC4631","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"17h10m59s","赤经D(J2000)":"17.18305555555556","赤纬(J2000)":"-77h36m0s","赤纬D(J2000)":"-77.6","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, most extremely small, possibly annular, suspected","简略描述":"eF, eeS, ann ?, susp"},{"ID":"12472","标识":"IC4632","M标识":"IC4632","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h58m32s","赤经D(J2000)":"16.975555555555555","赤纬(J2000)":"+22h54m56s","赤纬D(J2000)":"22.915555555555553","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, possibly nebulous","简略描述":"eF, ? neb"},{"ID":"12473","标识":"IC4633","M标识":"IC4633","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"17h13m47.1s","赤经D(J2000)":"17.22975","赤纬(J2000)":"-77h32m9s","赤纬D(J2000)":"-77.53583333333333","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"15.5","长轴(分)":"4","短轴(分)":"3","方位角":"145","详细描述":"very faint, considerably large, considerably brighter middle, possibly spiral","简略描述":"vF, cL, cbM, ? spir"},{"ID":"12474","标识":"IC4634","M标识":"IC4634","拓展名":"","组件":"","Class":"","业余排名":"5","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h1m33.6s","赤经D(J2000)":"17.026","赤纬(J2000)":"-21h49m32s","赤纬D(J2000)":"-21.825555555555557","可见光星等V":"10.9","摄影(蓝光)星等B":"10.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.4","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"12475","标识":"IC4635","M标识":"IC4635","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"17h15m40.4s","赤经D(J2000)":"17.261222222222223","赤纬(J2000)":"-77h29m21s","赤纬D(J2000)":"-77.48916666666666","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"3","短轴(分)":"0.7","方位角":"165","详细描述":"very faint, extremely small, considerably brighter middle","简略描述":"vF, eS, cbM"},{"ID":"12476","标识":"IC4636","M标识":"IC4636","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"16h59m6.8s","赤经D(J2000)":"16.985222222222223","赤纬(J2000)":"+47h11m44s","赤纬D(J2000)":"47.19555555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, fainter than (NGC) 6279","简略描述":"vF, fainter than 6279"},{"ID":"12477","标识":"IC4637","M标识":"IC4637","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h5m10.4s","赤经D(J2000)":"17.086222222222222","赤纬(J2000)":"-40h53m5s","赤纬D(J2000)":"-40.88472222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.37","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"12478","标识":"IC4638","M标识":"IC4638","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h1m13.6s","赤经D(J2000)":"17.020444444444443","赤纬(J2000)":"+33h30m50s","赤纬D(J2000)":"33.513888888888886","可见光星等V":"14.9","摄影(蓝光)星等B":"15.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"no description; 9th magnitude star 2.5 arcmin to southeast","简略描述":"No descr, * 9 sf 2'.5"},{"ID":"12479","标识":"IC4639","M标识":"IC4639","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h2m54.7s","赤经D(J2000)":"17.048527777777778","赤纬(J2000)":"+22h55m50s","赤纬D(J2000)":"22.930555555555557","可见光星等V":"15.5","摄影(蓝光)星等B":"16.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"170","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"12480","标识":"IC4640","M标识":"IC4640","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"17h23m57.8s","赤经D(J2000)":"17.39938888888889","赤纬(J2000)":"-80h3m48s","赤纬D(J2000)":"-80.06333333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"90","详细描述":"very faint, extremely small, considerably brighter middle","简略描述":"vF, eS, cbM"},{"ID":"12481","标识":"IC4641","M标识":"IC4641","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"17h24m10.7s","赤经D(J2000)":"17.40297222222222","赤纬(J2000)":"-80h8m50s","赤纬D(J2000)":"-80.14722222222223","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"extremely faint, very small, brighter middle","简略描述":"eF, vS, bM"},{"ID":"12482","标识":"IC4642","M标识":"IC4642","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"17h11m45.3s","赤经D(J2000)":"17.195916666666665","赤纬(J2000)":"-55h23m58s","赤纬D(J2000)":"-55.39944444444444","可见光星等V":"99","摄影(蓝光)星等B":"13.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.4","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"12483","标识":"IC4643","M标识":"IC4643","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h8m32.7s","赤经D(J2000)":"17.142416666666666","赤纬(J2000)":"+42h20m21s","赤纬D(J2000)":"42.33916666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"115","详细描述":"faint, 12th magnitude star involved","简略描述":"F, * 12 inv"},{"ID":"12484","标识":"IC4644","M标识":"IC4644","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"17h24m35.8s","赤经D(J2000)":"17.40994444444444","赤纬(J2000)":"-73h56m19s","赤纬D(J2000)":"-73.93861111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"134","详细描述":"extremely faint, very small, much extended 135°","简略描述":"eF, vS, mE 135°"},{"ID":"12485","标识":"IC4645","M标识":"IC4645","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"D","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h14m43s","赤经D(J2000)":"17.24527777777778","赤纬(J2000)":"+43h6m15s","赤纬D(J2000)":"43.10416666666667","可见光星等V":"15.1","摄影(蓝光)星等B":"15.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.4","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, pretty small, 13.5 magnitude star 80 arcsec to east","简略描述":"eF, pS, * 13.5 f 80\""},{"ID":"12486","标识":"IC4646","M标识":"IC4646","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"17h23m53.4s","赤经D(J2000)":"17.398166666666665","赤纬(J2000)":"-60h0m1s","赤纬D(J2000)":"-60.000277777777775","可见光星等V":"11.9","摄影(蓝光)星等B":"12.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.8","短轴(分)":"1.7","方位角":"0","详细描述":"faint, pretty large, spiral","简略描述":"F, pL, spir"},{"ID":"12487","标识":"IC4647","M标识":"IC4647","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"17h26m4.2s","赤经D(J2000)":"17.4345","赤纬(J2000)":"-80h11m42s","赤纬D(J2000)":"-80.19500000000001","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"3","详细描述":"brighter middle","简略描述":"bM"},{"ID":"12488","标识":"IC4648","M标识":"IC4648","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"17h16m10.3s","赤经D(J2000)":"17.26952777777778","赤纬(J2000)":"+43h51m45s","赤纬D(J2000)":"43.862500000000004","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"cluster, very small, nebulous, very faint double star involved","简略描述":"Cl, vS, neb, vF D * inv"},{"ID":"12489","标识":"IC4649","M标识":"IC4649","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sab","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h15m50s","赤经D(J2000)":"17.26388888888889","赤纬(J2000)":"+57h22m1s","赤纬D(J2000)":"57.36694444444444","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.2","方位角":"142","详细描述":"extremely faint, pretty small, very diffuse, 12.5 magnitude star 0.5 arcmin to east","简略描述":"eF, pS, v dif, * 12.5 f 0'.5"},{"ID":"12490","标识":"IC4650","M标识":"IC4650","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h15m47.4s","赤经D(J2000)":"17.263166666666667","赤纬(J2000)":"+57h18m7s","赤纬D(J2000)":"57.301944444444445","可见光星等V":"14.8","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.2","方位角":"60","详细描述":"extremely faint, stars and nebula","简略描述":"eF, st and neb"},{"ID":"12491","标识":"IC4651","M标识":"IC4651","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"II3m","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"17h24m52s","赤经D(J2000)":"17.41444444444444","赤纬(J2000)":"-49h56m36s","赤纬D(J2000)":"-49.94333333333333","可见光星等V":"6.9","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"","方位角":"","详细描述":"cluster, pretty compressed","简略描述":"Cl, pC"},{"ID":"12492","标识":"IC4652","M标识":"IC4652","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"17h26m26.5s","赤经D(J2000)":"17.440694444444446","赤纬(J2000)":"-59h43m42s","赤纬D(J2000)":"-59.72833333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"10","详细描述":"faint, planetary, 15th magnitude","简略描述":"F, planetary, 15 magn"},{"ID":"12493","标识":"IC4653","M标识":"IC4653","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"17h27m7s","赤经D(J2000)":"17.451944444444443","赤纬(J2000)":"-60h52m45s","赤纬D(J2000)":"-60.87916666666667","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"52","详细描述":"most extremely faint, extremely small, brighter middle, extremely faint star very near, suspected","简略描述":"eeF, eS, bM, eF, * v nr, susp"},{"ID":"12494","标识":"IC4654","M标识":"IC4654","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"17h37m7.9s","赤经D(J2000)":"17.618861111111112","赤纬(J2000)":"-74h22m52s","赤纬D(J2000)":"-74.38111111111111","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"102","详细描述":"extremely faint, extremely small, round, very much brighter middle","简略描述":"eF, eS, R, vmbM"},{"ID":"12495","标识":"IC4655","M标识":"IC4655","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"17h34m35.8s","赤经D(J2000)":"17.57661111111111","赤纬(J2000)":"-60h43m17s","赤纬D(J2000)":"-60.72138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.6","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, much extended 170°","简略描述":"eF, eS, mE 170°"},{"ID":"12496","标识":"IC4656","M标识":"IC4656","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"17h37m44.1s","赤经D(J2000)":"17.62891666666667","赤纬(J2000)":"-63h43m47s","赤纬D(J2000)":"-63.72972222222222","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.3","短轴(分)":"0.6","方位角":"90","详细描述":"most extremely faint, very small, extremely extended 90°, considerably brighter middle","简略描述":"eeF, vS, eE 90°, cbM"},{"ID":"12497","标识":"IC4657","M标识":"IC4657","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h32m42s","赤经D(J2000)":"17.545","赤纬(J2000)":"-17h31m30s","赤纬D(J2000)":"-17.525","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, 11th magnitude star 2 arcmin northwest","简略描述":"vF, * 11 np 2'"},{"ID":"12498","标识":"IC4658","M标识":"IC4658","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天坛座","星座(En)":"ARA","赤经(J2000)":"17h36m10s","赤经D(J2000)":"17.602777777777778","赤纬(J2000)":"-59h35m6s","赤纬D(J2000)":"-59.585","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, planetary, 15th magnitude","简略描述":"F, planetary, 15 magn"},{"ID":"12499","标识":"IC4659","M标识":"IC4659","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h34m12s","赤经D(J2000)":"17.57","赤纬(J2000)":"-17h55m42s","赤纬D(J2000)":"-17.928333333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, small, 8th magnitude star 21 seconds of time to east, 3 arcmin to north","简略描述":"pF, S, * 8 f 21s, 3' n"},{"ID":"12500","标识":"IC4660","M标识":"IC4660","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"小熊座","星座(En)":"UMI","赤经(J2000)":"17h21m45s","赤经D(J2000)":"17.3625","赤纬(J2000)":"+75h50m55s","赤纬D(J2000)":"75.84861111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"170","详细描述":"pretty large, extended north-south, 9.2 magnitude star 30 arcsec southwest","简略描述":"pL, E ns, * 9.2 sp 30\""},{"ID":"12501","标识":"IC4661","M标识":"IC4661","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"天燕座","星座(En)":"APS","赤经(J2000)":"17h51m2.4s","赤经D(J2000)":"17.85066666666667","赤纬(J2000)":"-74h1m58s","赤纬D(J2000)":"-74.03277777777778","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"31","详细描述":"extremely faint, very small, round, considerably brighter middle","简略描述":"eF, vS, R, cbM"},{"ID":"12502","标识":"IC4662","M标识":"IC4662","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"17h47m8.5s","赤经D(J2000)":"17.785694444444445","赤纬(J2000)":"-64h38m31s","赤纬D(J2000)":"-64.64194444444445","可见光星等V":"11.3","摄影(蓝光)星等B":"11.7","B-V":"0.4","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.2","短轴(分)":"1.9","方位角":"105","详细描述":"faint, pretty small, a little extended","简略描述":"F, pS, lE"},{"ID":"12503","标识":"IC4663","M标识":"IC4663","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天蝎座","星座(En)":"SCO","赤经(J2000)":"17h45m28.7s","赤经D(J2000)":"17.75797222222222","赤纬(J2000)":"-44h54m16s","赤纬D(J2000)":"-44.904444444444444","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.33","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stell"},{"ID":"12504","标识":"IC4664","M标识":"IC4664","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"17h48m58.8s","赤经D(J2000)":"17.816333333333333","赤纬(J2000)":"-63h15m14s","赤纬D(J2000)":"-63.25388888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.8","短轴(分)":"1","方位角":"114","详细描述":"extremely faint, very small, considerably extended, considerably brighter middle","简略描述":"eF, vS, cE, cbM"},{"ID":"12505","标识":"IC4665","M标识":"IC4665","拓展名":"","组件":"","Class":"","业余排名":"8","中文名":"夏季蜂巢星团","类型":"OCL","含重复类型":"OCL","形态":"III2p","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"17h46m12s","赤经D(J2000)":"17.77","赤纬(J2000)":"+5h43m0s","赤纬D(J2000)":"5.716666666666667","可见光星等V":"4.2","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"70","短轴(分)":"","方位角":"","详细描述":"cluster, coarse","简略描述":"Cl, co"},{"ID":"12506","标识":"IC4666","M标识":"IC4666","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h46m2.3s","赤经D(J2000)":"17.767305555555556","赤纬(J2000)":"+55h46m33s","赤纬D(J2000)":"55.77583333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint star, slightly nebulous","简略描述":"eF *, slightly nebs"},{"ID":"12507","标识":"IC4667","M标识":"IC4667","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h46m19s","赤经D(J2000)":"17.771944444444443","赤纬(J2000)":"+55h52m32s","赤纬D(J2000)":"55.87555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"2 suspected stellar nebulae","简略描述":"2 stell neb susp"},{"ID":"12508","标识":"IC4668","M标识":"IC4668","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h46m59s","赤经D(J2000)":"17.783055555555556","赤纬(J2000)":"+57h24m0s","赤纬D(J2000)":"57.4","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, star 3 arcmin north","简略描述":"eF, * 3' n"},{"ID":"12509","标识":"IC4669","M标识":"IC4669","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h47m12.8s","赤经D(J2000)":"17.78688888888889","赤纬(J2000)":"+61h26m2s","赤纬D(J2000)":"61.43388888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"94","详细描述":"extremely faint, small, perhaps extremely faint star involved","简略描述":"eF, S, ? eF st inv"},{"ID":"12510","标识":"IC4670","M标识":"IC4670","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"17h55m7s","赤经D(J2000)":"17.91861111111111","赤纬(J2000)":"-21h44m39s","赤纬D(J2000)":"-21.74416666666667","可见光星等V":"12","摄影(蓝光)星等B":"13.1","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.08","短轴(分)":"","方位角":"","详细描述":"stellar, 12.5 magnitude","简略描述":"stellar, 12.5 magn"},{"ID":"12511","标识":"IC4671","M标识":"IC4671","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"17h55m7s","赤经D(J2000)":"17.91861111111111","赤纬(J2000)":"-10h17m12s","赤纬D(J2000)":"-10.286666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"Spiral? (edge of plate)","简略描述":"Spiral ? (edge of plate)"},{"ID":"12512","标识":"IC4672","M标识":"IC4672","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h2m14.8s","赤经D(J2000)":"18.037444444444446","赤纬(J2000)":"-62h49m56s","赤纬D(J2000)":"-62.83222222222223","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"43","详细描述":"most extremely faint, extremely small, very extended 45°, considerably brighter middle","简略描述":"eeF, eS, vE 45°, cbM"},{"ID":"12513","标识":"IC4673","M标识":"IC4673","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h3m18.4s","赤经D(J2000)":"18.055111111111113","赤纬(J2000)":"-27h6m22s","赤纬D(J2000)":"-27.10611111111111","可见光星等V":"13","摄影(蓝光)星等B":"12.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.25","短轴(分)":"","方位角":"","详细描述":"planetary, 13th magnitude, 13th magnitude star 33 arcsec northeast","简略描述":"Planetary, 13 mag, * 13 nf 33\""},{"ID":"12514","标识":"IC4674","M标识":"IC4674","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h8m13.3s","赤经D(J2000)":"18.137027777777778","赤纬(J2000)":"-62h23m42s","赤纬D(J2000)":"-62.394999999999996","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"89","详细描述":"extremely faint, very small, extremely extended 80°, considerably brighter middle, stellar nucleus","简略描述":"eF, vS, eE 80°, cbM stell N"},{"ID":"12515","标识":"IC4675","M标识":"IC4675","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"18h3m10s","赤经D(J2000)":"18.052777777777777","赤纬(J2000)":"-9h15m36s","赤纬D(J2000)":"-9.26","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"doubtful, not seen a second time","简略描述":"Doubtful, not seen a second time"},{"ID":"12516","标识":"IC4676","M标识":"IC4676","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"18h2m53s","赤经D(J2000)":"18.048055555555557","赤纬(J2000)":"+11h49m23s","赤纬D(J2000)":"11.823055555555555","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"12517","标识":"IC4677","M标识":"IC4677","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"17h58m15.7s","赤经D(J2000)":"17.971027777777778","赤纬(J2000)":"+66h38m2s","赤纬D(J2000)":"66.63388888888889","可见光星等V":"99","摄影(蓝光)星等B":"15.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"60","详细描述":"very faint, small, IV.37 is 16.5 seconds of time to east","简略描述":"vF, S, IV. 37 f 16s.5"},{"ID":"12518","标识":"IC4678","M标识":"IC4678","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+*","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h6m33.4s","赤经D(J2000)":"18.10927777777778","赤纬(J2000)":"-23h57m16s","赤纬D(J2000)":"-23.954444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"bright, small, extended","简略描述":"B, S, E"},{"ID":"12519","标识":"IC4679","M标识":"IC4679","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"18h11m24.2s","赤经D(J2000)":"18.190055555555556","赤纬(J2000)":"-56h15m13s","赤纬D(J2000)":"-56.25361111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"2.2","短轴(分)":"0.9","方位角":"99","详细描述":"considerably faint, small, round, very much brighter middle; suspected","简略描述":"cF, S, R, vmbM, susp"},{"ID":"12520","标识":"IC4680","M标识":"IC4680","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h13m29.5s","赤经D(J2000)":"18.22486111111111","赤纬(J2000)":"-64h28m34s","赤纬D(J2000)":"-64.47611111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"75","详细描述":"extremely faint, very small, extremely extended 85°, considerably brighter middle","简略描述":"eF, vS, eE 85°, cbM"},{"ID":"12521","标识":"IC4681","M标识":"IC4681","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h8m20s","赤经D(J2000)":"18.13888888888889","赤纬(J2000)":"-23h25m55s","赤纬D(J2000)":"-23.431944444444447","可见光星等V":"99","摄影(蓝光)星等B":"9.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"small nebula or nebulous star","简略描述":"S neb or neb *"},{"ID":"12522","标识":"IC4682","M标识":"IC4682","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h16m25.9s","赤经D(J2000)":"18.27386111111111","赤纬(J2000)":"-71h34m55s","赤纬D(J2000)":"-71.58194444444445","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.3","短轴(分)":"1.6","方位角":"144","详细描述":"very faint, considerably small, considerably extended 140°, stellar nucleus","简略描述":"vF, cS, cE 140°, stell N"},{"ID":"12523","标识":"IC4683","M标识":"IC4683","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Cloud","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h9m0s","赤经D(J2000)":"18.15","赤纬(J2000)":"-26h14m0s","赤纬D(J2000)":"-26.233333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, most extremely large","简略描述":"vF, eeL"},{"ID":"12524","标识":"IC4684","M标识":"IC4684","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN+*","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h9m8.6s","赤经D(J2000)":"18.152388888888886","赤纬(J2000)":"-23h26m9s","赤纬D(J2000)":"-23.435833333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"2","方位角":"","详细描述":"small nebula or nebulous star","简略描述":"S neb or neb *"},{"ID":"12525","标识":"IC4685","M标识":"IC4685","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"IV3pn","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h9m17.4s","赤经D(J2000)":"18.154833333333332","赤纬(J2000)":"-23h59m14s","赤纬D(J2000)":"-23.987222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"15","短轴(分)":"10","方位角":"","详细描述":"7.5 magnitude star in a large, diffuse nebula","简略描述":"* 7.5 in L, dif neb"},{"ID":"12526","标识":"IC4686","M标识":"IC4686","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h13m38.7s","赤经D(J2000)":"18.227416666666667","赤纬(J2000)":"-57h43m56s","赤纬D(J2000)":"-57.73222222222223","可见光星等V":"14.2","摄影(蓝光)星等B":"14.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"125","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12527","标识":"IC4687","M标识":"IC4687","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h13m39.4s","赤经D(J2000)":"18.22761111111111","赤纬(J2000)":"-57h43m32s","赤纬D(J2000)":"-57.72555555555556","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"54","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12528","标识":"IC4688","M标识":"IC4688","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"18h8m11.9s","赤经D(J2000)":"18.13663888888889","赤纬(J2000)":"+11h42m43s","赤纬D(J2000)":"11.711944444444443","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"164","详细描述":"very faint, pretty small, diffuse, 12th magnitude star close to east","简略描述":"vF, pS, dif, * 12 close f"},{"ID":"12529","标识":"IC4689","M标识":"IC4689","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h13m40.3s","赤经D(J2000)":"18.22786111111111","赤纬(J2000)":"-57h44m54s","赤纬D(J2000)":"-57.748333333333335","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"143","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12530","标识":"IC4690","M标识":"IC4690","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Dup","形态":"RN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h16m51.7s","赤经D(J2000)":"18.281027777777776","赤纬(J2000)":"-19h46m41s","赤纬D(J2000)":"-19.778055555555554","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"3","方位角":"","详细描述":"9.5 magnitude star in a nebula, extended southwest-northeast","简略描述":"* 9.5 in neb, E spnf"},{"ID":"12531","标识":"IC4691","M标识":"IC4691","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"蛇夫座","星座(En)":"OPH","赤经(J2000)":"18h8m45.6s","赤经D(J2000)":"18.146","赤纬(J2000)":"+11h49m44s","赤纬D(J2000)":"11.828888888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"170","详细描述":"faint, small, irregular figure, 1 or 2 faint stars involved","简略描述":"F, S, iF, 1 or 2 F st inv"},{"ID":"12532","标识":"IC4692","M标识":"IC4692","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h14m50s","赤经D(J2000)":"18.247222222222224","赤纬(J2000)":"-58h41m39s","赤纬D(J2000)":"-58.69416666666666","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"0.9","方位角":"0","详细描述":"faint, small, irregular figure, suspected","简略描述":"F, S, iF, susp"},{"ID":"12533","标识":"IC4693","M标识":"IC4693","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h9m10.8s","赤经D(J2000)":"18.153","赤纬(J2000)":"+17h20m52s","赤纬D(J2000)":"17.347777777777775","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, brighter middle, several extremely faint stars involved","简略描述":"eF, S, bM, sev eF st inv"},{"ID":"12534","标识":"IC4694","M标识":"IC4694","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h15m27.2s","赤经D(J2000)":"18.257555555555555","赤纬(J2000)":"-58h12m30s","赤纬D(J2000)":"-58.208333333333336","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.3","短轴(分)":"0.9","方位角":"18","详细描述":"faint, small, extremely extended 20°, a little brighter middle","简略描述":"F, S, eE 20°, lbM"},{"ID":"12535","标识":"IC4695","M标识":"IC4695","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h17m23.8s","赤经D(J2000)":"18.289944444444448","赤纬(J2000)":"-58h55m32s","赤纬D(J2000)":"-58.925555555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, round, brighter middle, several stars near; suspected","简略描述":"eF, vS, R, bM, sev st nr, susp"},{"ID":"12536","标识":"IC4696","M标识":"IC4696","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h20m18s","赤经D(J2000)":"18.33833333333333","赤纬(J2000)":"-64h43m58s","赤纬D(J2000)":"-64.73277777777778","可见光星等V":"12.4","摄影(蓝光)星等B":"13.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.4","短轴(分)":"0.9","方位角":"77","详细描述":"nebula, suspected","简略描述":"neb, susp"},{"ID":"12537","标识":"IC4697","M标识":"IC4697","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h12m27s","赤经D(J2000)":"18.2075","赤纬(J2000)":"+25h25m38s","赤纬D(J2000)":"25.427222222222223","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"0","详细描述":"faint, small, irregular figure, mottled but not resolved","简略描述":"F, S, iF, r"},{"ID":"12538","标识":"IC4698","M标识":"IC4698","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h21m0s","赤经D(J2000)":"18.35","赤纬(J2000)":"-63h20m51s","赤纬D(J2000)":"-63.347500000000004","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"39","详细描述":"extremely faint, very small, extremely extended 45°, stellar nucleus","简略描述":"eF, vS, eE 45°, stell N"},{"ID":"12539","标识":"IC4699","M标识":"IC4699","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"18h18m32s","赤经D(J2000)":"18.30888888888889","赤纬(J2000)":"-45h59m0s","赤纬D(J2000)":"-45.983333333333334","可见光星等V":"13","摄影(蓝光)星等B":"11.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.23","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"12540","标识":"IC4700","M标识":"IC4700","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Dup","形态":"EN+OCL","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h17m4.8s","赤经D(J2000)":"18.28466666666667","赤纬(J2000)":"-19h51m58s","赤纬D(J2000)":"-19.866111111111113","可见光星等V":"99","摄影(蓝光)星等B":"7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"11","短轴(分)":"","方位角":"","详细描述":"9.4 magnitude star in a dense nebula","简略描述":"* 9.4 in dense neb"},{"ID":"12541","标识":"IC4701","M标识":"IC4701","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h16m0s","赤经D(J2000)":"18.266666666666666","赤纬(J2000)":"-16h38m0s","赤纬D(J2000)":"-16.633333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"60","短轴(分)":"40","方位角":"","详细描述":"extremely large, connected with cloud IC 4715","简略描述":"eL, conn with cloud I.C. 4715"},{"ID":"12542","标识":"IC4702","M标识":"IC4702","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h23m3.9s","赤经D(J2000)":"18.384416666666667","赤纬(J2000)":"-59h14m20s","赤纬D(J2000)":"-59.23888888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1","方位角":"151","详细描述":"extremely faint, extremely small, star in disc, ring suspected","简略描述":"eF, eS, * in disc, ring susp"},{"ID":"12543","标识":"IC4703","M标识":"IC4703","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"18h18m0s","赤经D(J2000)":"18.3","赤纬(J2000)":"-13h50m0s","赤纬D(J2000)":"-13.833333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"35","短轴(分)":"28","方位角":"","详细描述":"bright, extremely large, cluster M16 involved","简略描述":"B, eL, Cl M. 16 inv"},{"ID":"12544","标识":"IC4704","M标识":"IC4704","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h27m53.7s","赤经D(J2000)":"18.464916666666667","赤纬(J2000)":"-71h36m33s","赤纬D(J2000)":"-71.60916666666667","可见光星等V":"12.1","摄影(蓝光)星等B":"13.2","B-V":"1.1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.5","短轴(分)":"1.2","方位角":"165","详细描述":"considerably bright, brighter middle","简略描述":"cB, bM"},{"ID":"12545","标识":"IC4705","M标识":"IC4705","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h28m10.4s","赤经D(J2000)":"18.469555555555555","赤纬(J2000)":"-71h41m35s","赤纬D(J2000)":"-71.69305555555556","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"48","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"12546","标识":"IC4706","M标识":"IC4706","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h19m36s","赤经D(J2000)":"18.326666666666668","赤纬(J2000)":"-16h1m54s","赤纬D(J2000)":"-16.031666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"5","方位角":"","详细描述":"9.2 magnitude star in small nebula (both this and IC 4707 are connected with M17)","简略描述":"* 9.2 in S neb, conn with M 17"},{"ID":"12547","标识":"IC4707","M标识":"IC4707","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h19m54s","赤经D(J2000)":"18.331666666666667","赤纬(J2000)":"-16h0m6s","赤纬D(J2000)":"-16.001666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3.5","短轴(分)":"3.5","方位角":"","详细描述":"9.4 magnitude star in small nebula (both this and IC 4706 are connected with M17)","简略描述":"* 9.4 in S neb, conn with M 17"},{"ID":"12548","标识":"IC4708","M标识":"IC4708","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h13m46.1s","赤经D(J2000)":"18.22947222222222","赤纬(J2000)":"+61h9m25s","赤纬D(J2000)":"61.15694444444444","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, extremely small, very difficult, (NGC) 6617 near","简略描述":"eF, eS, v diffic, 6617 nr"},{"ID":"12549","标识":"IC4709","M标识":"IC4709","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"18h24m19.4s","赤经D(J2000)":"18.405388888888886","赤纬(J2000)":"-56h22m7s","赤纬D(J2000)":"-56.368611111111115","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"4","详细描述":"extremely faint, very small, very extended 0°, stellar nucleus; suspected","简略描述":"eF, vS, vE 0°, stell N, susp"},{"ID":"12550","标识":"IC4710","M标识":"IC4710","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h28m38.8s","赤经D(J2000)":"18.477444444444444","赤纬(J2000)":"-66h58m59s","赤纬D(J2000)":"-66.98305555555555","可见光星等V":"11.9","摄影(蓝光)星等B":"12.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"3.6","短轴(分)":"2.8","方位角":"5","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"12551","标识":"IC4711","M标识":"IC4711","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h28m6.7s","赤经D(J2000)":"18.468527777777776","赤纬(J2000)":"-64h56m40s","赤纬D(J2000)":"-64.94444444444444","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, extremely small, extremely extended 125°, stellar nucleus","简略描述":"eF, eS, eE 125°, stell N"},{"ID":"12552","标识":"IC4712","M标识":"IC4712","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h31m6.7s","赤经D(J2000)":"18.518527777777777","赤纬(J2000)":"-71h41m38s","赤纬D(J2000)":"-71.69388888888889","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.3","短轴(分)":"1.2","方位角":"60","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"12553","标识":"IC4713","M标识":"IC4713","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h29m58.9s","赤经D(J2000)":"18.499694444444444","赤纬(J2000)":"-67h13m28s","赤纬D(J2000)":"-67.22444444444444","可见光星等V":"13.5","摄影(蓝光)星等B":"14.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"105","详细描述":"very faint","简略描述":"vF"},{"ID":"12554","标识":"IC4714","M标识":"IC4714","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h30m55.7s","赤经D(J2000)":"18.515472222222222","赤纬(J2000)":"-66h39m10s","赤纬D(J2000)":"-66.65277777777779","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"176","详细描述":"very faint","简略描述":"vF"},{"ID":"12555","标识":"IC4715","M标识":"M24","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"*Cloud","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h18m48s","赤经D(J2000)":"18.313333333333333","赤纬(J2000)":"-18h33m0s","赤纬D(J2000)":"-18.55","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely large cloud of stars and nebulae","简略描述":"eeL cloud of st and neb"},{"ID":"12556","标识":"IC4716","M标识":"IC4716","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h32m45s","赤经D(J2000)":"18.545833333333334","赤纬(J2000)":"-56h57m43s","赤纬D(J2000)":"-56.96194444444445","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"97","详细描述":"most extremely faint, extremely small, a little extended 90°, suspected","简略描述":"eeF, eS, lE 90°, susp"},{"ID":"12557","标识":"IC4717","M标识":"IC4717","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h33m17.1s","赤经D(J2000)":"18.554750000000002","赤纬(J2000)":"-57h58m30s","赤纬D(J2000)":"-57.975","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"93","详细描述":"faint, small, extremely extended 95°, stellar nucleus","简略描述":"F, S, eE 95°, stell N"},{"ID":"12558","标识":"IC4718","M标识":"IC4718","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h33m50s","赤经D(J2000)":"18.56388888888889","赤纬(J2000)":"-60h7m43s","赤纬D(J2000)":"-60.12861111111111","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"116","详细描述":"considerably bright, small, extended 125°, bright stellar nucleus","简略描述":"cB, S, E 125°, B stell N"},{"ID":"12559","标识":"IC4719","M标识":"IC4719","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"18h33m11.7s","赤经D(J2000)":"18.553250000000002","赤纬(J2000)":"-56h43m58s","赤纬D(J2000)":"-56.73277777777778","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1","方位角":"116","详细描述":"extremely faint, very small, 2 patches, suspected","简略描述":"eF, vS, 2 patches, susp"},{"ID":"12560","标识":"IC4720","M标识":"IC4720","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h33m32.7s","赤经D(J2000)":"18.559083333333334","赤纬(J2000)":"-58h24m17s","赤纬D(J2000)":"-58.40472222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.6","短轴(分)":"0.9","方位角":"163","详细描述":"considerably faint, small, extremely extended 165°, considerably brighter middle","简略描述":"cF, S, eE 165°, cbM"},{"ID":"12561","标识":"IC4721","M标识":"IC4721","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h34m24.7s","赤经D(J2000)":"18.573527777777777","赤纬(J2000)":"-58h29m50s","赤纬D(J2000)":"-58.49722222222222","可见光星等V":"11.6","摄影(蓝光)星等B":"12.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"5.2","短轴(分)":"1.5","方位角":"146","详细描述":"faint, considerably large, extended 150°","简略描述":"F, cL, E 150°"},{"ID":"12562","标识":"IC4722","M标识":"IC4722","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h34m31.3s","赤经D(J2000)":"18.57536111111111","赤纬(J2000)":"-57h47m36s","赤纬D(J2000)":"-57.79333333333333","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"55","详细描述":"faint, very small, 2 branch spiral","简略描述":"F, vS, 2 branch spir"},{"ID":"12563","标识":"IC4723","M标识":"IC4723","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h35m56.2s","赤经D(J2000)":"18.59894444444444","赤纬(J2000)":"-63h22m36s","赤纬D(J2000)":"-63.376666666666665","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"12564","标识":"IC4724","M标识":"IC4724","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h38m40.3s","赤经D(J2000)":"18.64452777777778","赤纬(J2000)":"-70h7m32s","赤纬D(J2000)":"-70.12555555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"159","详细描述":"extremely faint, extremely small, considerably extended 170°","简略描述":"eF, eS, cE 170°"},{"ID":"12565","标识":"IC4725","M标识":"M25","拓展名":"","组件":"","Class":"","业余排名":"1","中文名":"","类型":"OCL","含重复类型":"OCL","形态":"I2p","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h31m45s","赤经D(J2000)":"18.529166666666665","赤纬(J2000)":"-19h7m12s","赤纬D(J2000)":"-19.12","可见光星等V":"4.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"26","短轴(分)":"","方位角":"","详细描述":"cluster, pretty compressed","简略描述":"Cl, pC"},{"ID":"12566","标识":"IC4726","M标识":"IC4726","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h36m58.5s","赤经D(J2000)":"18.61625","赤纬(J2000)":"-62h51m15s","赤纬D(J2000)":"-62.85416666666667","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"23","详细描述":"extremely faint, very small, round, considerably faint star 0.5 arcmin northeast","简略描述":"eF, vS, R, eF * 0'.5 nf"},{"ID":"12567","标识":"IC4727","M标识":"IC4727","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h37m55.8s","赤经D(J2000)":"18.632166666666667","赤纬(J2000)":"-62h42m1s","赤纬D(J2000)":"-62.70027777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"1.1","方位角":"","详细描述":"very faint, extremely small, round","简略描述":"vF, eS, R"},{"ID":"12568","标识":"IC4728","M标识":"IC4728","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h37m57s","赤经D(J2000)":"18.6325","赤纬(J2000)":"-62h31m51s","赤纬D(J2000)":"-62.530833333333334","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2","短轴(分)":"0.7","方位角":"173","详细描述":"extremely faint, small, considerably extended 170°, stellar nucleus","简略描述":"eF, S, cE 170°, stell N"},{"ID":"12569","标识":"IC4729","M标识":"IC4729","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h39m56.3s","赤经D(J2000)":"18.66563888888889","赤纬(J2000)":"-67h25m34s","赤纬D(J2000)":"-67.42611111111111","可见光星等V":"12.6","摄影(蓝光)星等B":"13.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"150","详细描述":"very faint, small, round, stellar nucleus","简略描述":"vF, S, R, stell N"},{"ID":"12570","标识":"IC4730","M标识":"IC4730","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h38m50.3s","赤经D(J2000)":"18.647305555555555","赤纬(J2000)":"-63h21m1s","赤纬D(J2000)":"-63.35027777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"152","详细描述":"most extremely faint, extremely small, extremely extended 0°, 9th magnitude star 2 arcmin south","简略描述":"eeF, eS, eE 0°, * 9 s 2'"},{"ID":"12571","标识":"IC4731","M标识":"IC4731","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h38m42.7s","赤经D(J2000)":"18.645194444444446","赤纬(J2000)":"-62h56m36s","赤纬D(J2000)":"-62.94333333333333","可见光星等V":"11.4","摄影(蓝光)星等B":"12.5","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"82","详细描述":"very faint, very small, extremely extended 88°, stellar nucleus","简略描述":"vF, vS, eE 88°, stell N"},{"ID":"12572","标识":"IC4732","M标识":"IC4732","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h33m54.6s","赤经D(J2000)":"18.565166666666666","赤纬(J2000)":"-22h38m39s","赤纬D(J2000)":"-22.644166666666667","可见光星等V":"12.1","摄影(蓝光)星等B":"13.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.22","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"12573","标识":"IC4733","M标识":"IC4733","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h26m38.2s","赤经D(J2000)":"18.443944444444444","赤纬(J2000)":"+64h58m1s","赤纬D(J2000)":"64.96694444444445","可见光星等V":"99","摄影(蓝光)星等B":"14.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, stellar","简略描述":"vF, stellar"},{"ID":"12574","标识":"IC4734","M标识":"IC4734","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h38m25.4s","赤经D(J2000)":"18.64038888888889","赤纬(J2000)":"-57h29m26s","赤纬D(J2000)":"-57.49055555555556","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"94","详细描述":"very faint, very small, a little extended 130°","简略描述":"vF, vS, lE 130°"},{"ID":"12575","标识":"IC4735","M标识":"IC4735","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h39m50s","赤经D(J2000)":"18.663888888888888","赤纬(J2000)":"-62h57m21s","赤纬D(J2000)":"-62.95583333333334","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"39","详细描述":"extremely faint, very small, brighter middle","简略描述":"eF, vS, bM"},{"ID":"12576","标识":"IC4736","M标识":"IC4736","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h38m39.8s","赤经D(J2000)":"18.644388888888887","赤纬(J2000)":"-57h53m35s","赤纬D(J2000)":"-57.893055555555556","可见光星等V":"13.9","摄影(蓝光)星等B":"14.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.9","方位角":"117","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"12577","标识":"IC4737","M标识":"IC4737","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h39m58.4s","赤经D(J2000)":"18.66622222222222","赤纬(J2000)":"-62h35m50s","赤纬D(J2000)":"-62.59722222222222","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"108","详细描述":"extremely faint, very small, considerably extended 10°, between 2 faint stars","简略描述":"eF, vS, cE 10°, bet 2 F st"},{"ID":"12578","标识":"IC4738","M标识":"IC4738","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h40m27.3s","赤经D(J2000)":"18.67425","赤纬(J2000)":"-61h54m6s","赤纬D(J2000)":"-61.901666666666664","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"150","详细描述":"most extremely faint, extremely small, extremely faint star 0.5 arcmin southeast","简略描述":"eeF, eS, eF * sf 0'.5"},{"ID":"12579","标识":"IC4739","M标识":"IC4739","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h40m51.7s","赤经D(J2000)":"18.68102777777778","赤纬(J2000)":"-61h54m4s","赤纬D(J2000)":"-61.901111111111106","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1","短轴(分)":"0.8","方位角":"85","详细描述":"most extremely faint, extremely small, extremely faint star involved","简略描述":"eeF, eS, eF * inv"},{"ID":"12580","标识":"IC4740","M标识":"IC4740","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h43m0.5s","赤经D(J2000)":"18.716805555555553","赤纬(J2000)":"-68h21m36s","赤纬D(J2000)":"-68.36","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"most extremely faint, very small, round, a little brighter middle, 2 extremely faint stars near","简略描述":"eeF, vS, R, lbM, 2 eF st nr"},{"ID":"12581","标识":"IC4741","M标识":"IC4741","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h41m43.6s","赤经D(J2000)":"18.695444444444444","赤纬(J2000)":"-63h56m51s","赤纬D(J2000)":"-63.9475","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"35","详细描述":"considerably faint, very small, a little extended 20°, stellar nucleus, 4 faint stars involved","简略描述":"vF, vS, lE 20°, stell N, 4 F st inv"},{"ID":"12582","标识":"IC4742","M标识":"IC4742","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h41m52.2s","赤经D(J2000)":"18.697833333333335","赤纬(J2000)":"-63h51m42s","赤纬D(J2000)":"-63.861666666666665","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.7","短轴(分)":"1.4","方位角":"20","详细描述":"considerably faint, very small, round, brighter middle, faint star involved","简略描述":"cF, vS, R, bM, F * inv"},{"ID":"12583","标识":"IC4743","M标识":"IC4743","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h41m29.3s","赤经D(J2000)":"18.691472222222224","赤纬(J2000)":"-61h46m19s","赤纬D(J2000)":"-61.77194444444444","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"97","详细描述":"very faint, brighter middle","简略描述":"vF, bM"},{"ID":"12584","标识":"IC4744","M标识":"IC4744","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h41m55.1s","赤经D(J2000)":"18.69863888888889","赤纬(J2000)":"-63h13m24s","赤纬D(J2000)":"-63.223333333333336","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"85","详细描述":"most extremely faint, extremely small, round, extremely faint star involved","简略描述":"eeF, eS, R, eF * inv"},{"ID":"12585","标识":"IC4745","M标识":"IC4745","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h42m35.7s","赤经D(J2000)":"18.709916666666665","赤纬(J2000)":"-64h56m35s","赤纬D(J2000)":"-64.94305555555556","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2.2","短轴(分)":"0.9","方位角":"179","详细描述":"extremely faint, very small, very faint star 0.4 arcmin west","简略描述":"eF, vS, vF * p 0'.4"},{"ID":"12586","标识":"IC4746","M标识":"IC4746","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h45m55s","赤经D(J2000)":"18.76527777777778","赤纬(J2000)":"-72h40m16s","赤纬D(J2000)":"-72.67111111111112","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"12587","标识":"IC4747","M标识":"IC4747","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h45m57.7s","赤经D(J2000)":"18.76602777777778","赤纬(J2000)":"-72h37m47s","赤纬D(J2000)":"-72.62972222222221","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"72","详细描述":"very faint, extremely small, considerably extended 75°","简略描述":"vF, eS, cE 75°"},{"ID":"12588","标识":"IC4748","M标识":"IC4748","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h42m45.9s","赤经D(J2000)":"18.71275","赤纬(J2000)":"-64h4m20s","赤纬D(J2000)":"-64.07222222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, very small, round, faint star 1 arcmin southeast","简略描述":"eF, vS, R, F * sf 1'"},{"ID":"12589","标识":"IC4749","M标识":"IC4749","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h42m49.4s","赤经D(J2000)":"18.71372222222222","赤纬(J2000)":"-63h12m32s","赤纬D(J2000)":"-63.20888888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"most extremely faint, extremely small, 3 faint stars near","简略描述":"eeF, eS, 3 F st nr"},{"ID":"12590","标识":"IC4750","M标识":"IC4750","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h43m2.4s","赤经D(J2000)":"18.717333333333332","赤纬(J2000)":"-62h58m16s","赤纬D(J2000)":"-62.971111111111114","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"112","详细描述":"most extremely faint, extremely small, round, 11th magnitude star 0.5 arcmin to northwest","简略描述":"eeF, eS, R, * 11 np 0'.5"},{"ID":"12591","标识":"IC4751","M标识":"IC4751","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h43m19.5s","赤经D(J2000)":"18.72208333333333","赤纬(J2000)":"-62h6m42s","赤纬D(J2000)":"-62.111666666666665","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.7","方位角":"3","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"12592","标识":"IC4752","M标识":"IC4752","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa? ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h43m47.7s","赤经D(J2000)":"18.729916666666664","赤纬(J2000)":"-64h4m54s","赤纬D(J2000)":"-64.08166666666666","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, very small, round, very faint star 1 arcmin southeast","简略描述":"eF, vS, R, vF * sf 1'"},{"ID":"12593","标识":"IC4753","M标识":"IC4753","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h43m33s","赤经D(J2000)":"18.72583333333333","赤纬(J2000)":"-62h6m28s","赤纬D(J2000)":"-62.10777777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"5","详细描述":"very faint, very small, round, brighter middle","简略描述":"vF, vS, R, bM"},{"ID":"12594","标识":"IC4754","M标识":"IC4754","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h44m0.4s","赤经D(J2000)":"18.733444444444444","赤纬(J2000)":"-61h59m21s","赤纬D(J2000)":"-61.98916666666667","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"122","详细描述":"extremely faint, pretty small, round, stellar nucleus, perhaps ring","简略描述":"eF, pS, R, stell N, ? ring"},{"ID":"12595","标识":"IC4755","M标识":"IC4755","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h45m0.9s","赤经D(J2000)":"18.75025","赤纬(J2000)":"-63h41m30s","赤纬D(J2000)":"-63.69166666666666","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"95","详细描述":"very faint, very small, extremely extended 90°, stellar nucleus","简略描述":"vF, vS, eE 90°, stell N"},{"ID":"12596","标识":"IC4756","M标识":"IC4756","拓展名":"","组件":"","Class":"","业余排名":"7","中文名":"格拉夫星团","类型":"OCL","含重复类型":"OCL","形态":"III2m","星座(Zh)":"巨蛇座","星座(En)":"SER","赤经(J2000)":"18h38m54s","赤经D(J2000)":"18.648333333333333","赤纬(J2000)":"+5h26m0s","赤纬D(J2000)":"5.433333333333334","可见光星等V":"4.6","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"40","短轴(分)":"","方位角":"","详细描述":"cluster, compressed","简略描述":"Cl, C"},{"ID":"12597","标识":"IC4757","M标识":"IC4757","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h43m56s","赤经D(J2000)":"18.73222222222222","赤纬(J2000)":"-57h10m3s","赤纬D(J2000)":"-57.1675","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"57","详细描述":"extremely faint, extremely small, considerably extended 50°","简略描述":"eF, eS, cE 50°"},{"ID":"12598","标识":"IC4758","M标识":"IC4758","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h46m18s","赤经D(J2000)":"18.771666666666665","赤纬(J2000)":"-65h45m24s","赤纬D(J2000)":"-65.75666666666666","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"140","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"12599","标识":"IC4759","M标识":"IC4759","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h45m41.2s","赤经D(J2000)":"18.761444444444443","赤纬(J2000)":"-63h5m11s","赤纬D(J2000)":"-63.08638888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"10","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"12600","标识":"IC4760","M标识":"IC4760","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h45m45.9s","赤经D(J2000)":"18.76275","赤纬(J2000)":"-62h57m29s","赤纬D(J2000)":"-62.95805555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"extremely faint, very small, round, faint star 1 arcmin northwest","简略描述":"eF, vS, R, F * np 1'"},{"ID":"12601","标识":"IC4761","M标识":"IC4761","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"18h43m55.5s","赤经D(J2000)":"18.732083333333332","赤纬(J2000)":"-52h51m12s","赤纬D(J2000)":"-52.85333333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.6","短轴(分)":"1.3","方位角":"115","详细描述":"very faint, brighter middle, doubtful","简略描述":"vF, bM, doubtful"},{"ID":"12602","标识":"IC4762","M标识":"IC4762","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h32m28.7s","赤经D(J2000)":"18.541305555555557","赤纬(J2000)":"+67h51m30s","赤纬D(J2000)":"67.85833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, extremely small, cluster or a star with nebulosity","简略描述":"vF, eS, Cl or * with neb"},{"ID":"12603","标识":"IC4763","M标识":"IC4763","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"C","星座(Zh)":"天龙座","星座(En)":"DRA","赤经(J2000)":"18h33m30.4s","赤经D(J2000)":"18.558444444444444","赤纬(J2000)":"+67h8m13s","赤纬D(J2000)":"67.13694444444445","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"10.6","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"90","详细描述":"very faint, perhaps nebulous star; (NGC) 6677 near","简略描述":"vF, ? neb *, 6677 nr"},{"ID":"12604","标识":"IC4764","M标识":"IC4764","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h47m7.6s","赤经D(J2000)":"18.785444444444447","赤纬(J2000)":"-63h29m4s","赤纬D(J2000)":"-63.48444444444444","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"127","详细描述":"most extremely faint, extremely small, brighter middle","简略描述":"eeF, eS, bM"},{"ID":"12605","标识":"IC4765","M标识":"IC4765","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h47m18.1s","赤经D(J2000)":"18.78836111111111","赤纬(J2000)":"-63h19m52s","赤纬D(J2000)":"-63.33111111111111","可见光星等V":"11.2","摄影(蓝光)星等B":"12.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.5","短轴(分)":"1.9","方位角":"115","详细描述":"very faint, small, round, brighter middle","简略描述":"vF, S, R, bM"},{"ID":"12606","标识":"IC4766","M标识":"IC4766","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h47m35.6s","赤经D(J2000)":"18.793222222222223","赤纬(J2000)":"-63h17m32s","赤纬D(J2000)":"-63.29222222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"110","详细描述":"extremely faint, extremely small, brighter middle","简略描述":"eF, eS, bM"},{"ID":"12607","标识":"IC4767","M标识":"IC4767","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h47m41.8s","赤经D(J2000)":"18.794944444444447","赤纬(J2000)":"-63h24m19s","赤纬D(J2000)":"-63.405277777777776","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"30","详细描述":"extremely faint, extremely small, much extended 25°, considerably brighter middle","简略描述":"eF, eS, mE 25°, cbM"},{"ID":"12608","标识":"IC4768","M标识":"IC4768","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"盾牌座","星座(En)":"SCT","赤经(J2000)":"18h41m45s","赤经D(J2000)":"18.695833333333333","赤纬(J2000)":"-5h31m24s","赤纬D(J2000)":"-5.523333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"cluster, double, stars scattered","简略描述":"Cl, D, st sc"},{"ID":"12609","标识":"IC4769","M标识":"IC4769","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h47m44s","赤经D(J2000)":"18.795555555555556","赤纬(J2000)":"-63h9m26s","赤纬D(J2000)":"-63.157222222222224","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.9","短轴(分)":"1.2","方位角":"130","详细描述":"extremely faint, very small, much extended 170°, considerably brighter middle","简略描述":"eF, vS, mE 170°, cbM"},{"ID":"12610","标识":"IC4770","M标识":"IC4770","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h48m10.3s","赤经D(J2000)":"18.802861111111113","赤纬(J2000)":"-63h23m1s","赤纬D(J2000)":"-63.38361111111111","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"65","详细描述":"most extremely faint, extremely small, brighter middle","简略描述":"eeF, eS, bM"},{"ID":"12611","标识":"IC4771","M标识":"IC4771","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h48m23.8s","赤经D(J2000)":"18.806611111111113","赤纬(J2000)":"-63h14m52s","赤纬D(J2000)":"-63.24777777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"178","详细描述":"extremely faint, extremely small, round, brighter middle","简略描述":"eF, eS, R, bM"},{"ID":"12612","标识":"IC4772","M标识":"IC4772","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"天琴座","星座(En)":"LYR","赤经(J2000)":"18h39m56.4s","赤经D(J2000)":"18.665666666666667","赤纬(J2000)":"+40h1m37s","赤纬D(J2000)":"40.026944444444446","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"0","详细描述":"extremely faint, extremely small; (NGC) 6685 two seconds of time east, 2.7 arcmin south","简略描述":"eF, eS, 6685 f 2s, 2'.7 s"},{"ID":"12613","标识":"IC4773","M标识":"IC4773","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h51m21.5s","赤经D(J2000)":"18.855972222222224","赤纬(J2000)":"-69h55m34s","赤纬D(J2000)":"-69.92611111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"137","详细描述":"extremely faint, difficult","简略描述":"eF, dif"},{"ID":"12614","标识":"IC4774","M标识":"IC4774","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h48m10.4s","赤经D(J2000)":"18.80288888888889","赤纬(J2000)":"-57h56m8s","赤纬D(J2000)":"-57.93555555555555","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"1","方位角":"114","详细描述":"extremely faint, small, irregular figure, much brighter middle","简略描述":"eF, S, iF, mbM"},{"ID":"12615","标识":"IC4775","M标识":"IC4775","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h48m26.3s","赤经D(J2000)":"18.807305555555555","赤纬(J2000)":"-57h11m1s","赤纬D(J2000)":"-57.183611111111105","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"17","详细描述":"extremely faint, extremely small, much extended 15°, suspected","简略描述":"eF, eS, mE 15°, susp"},{"ID":"12616","标识":"IC4776","M标识":"IC4776","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h45m50.7s","赤经D(J2000)":"18.764083333333332","赤纬(J2000)":"-33h20m32s","赤纬D(J2000)":"-33.342222222222226","可见光星等V":"10.8","摄影(蓝光)星等B":"11.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.3","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"12617","标识":"IC4777","M标识":"IC4777","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"18h48m11.1s","赤经D(J2000)":"18.803083333333333","赤纬(J2000)":"-53h8m49s","赤纬D(J2000)":"-53.14694444444444","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"128","详细描述":"very faint, planetary, a little extended","简略描述":"vF, planet., lE"},{"ID":"12618","标识":"IC4778","M标识":"IC4778","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h50m0.4s","赤经D(J2000)":"18.833444444444442","赤纬(J2000)":"-61h43m9s","赤纬D(J2000)":"-61.719166666666666","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"37","详细描述":"considerably faint, very small, considerably extended 35°","简略描述":"cF, vS, cE 35°"},{"ID":"12619","标识":"IC4779","M标识":"IC4779","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h50m30.4s","赤经D(J2000)":"18.841777777777775","赤纬(J2000)":"-63h0m47s","赤纬D(J2000)":"-63.01305555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"121","详细描述":"most extremely faint, extremely small, extremely faint star 0.3 arcmin to west","简略描述":"eeF, eS, eF * p 0'.3"},{"ID":"12620","标识":"IC4780","M标识":"IC4780","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h49m56.5s","赤经D(J2000)":"18.832361111111112","赤纬(J2000)":"-59h15m13s","赤纬D(J2000)":"-59.25361111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"99","详细描述":"extremely faint, very small, a little extended 120°","简略描述":"eF, vS, lE 120°"},{"ID":"12621","标识":"IC4781","M标识":"IC4781","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h51m37.7s","赤经D(J2000)":"18.860472222222224","赤纬(J2000)":"-62h47m34s","赤纬D(J2000)":"-62.79277777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"2","详细描述":"3 most extremely faint stars in nebulosity","简略描述":"3 eeF st in neb"},{"ID":"12622","标识":"IC4782","M标识":"IC4782","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"18h50m54.4s","赤经D(J2000)":"18.848444444444443","赤纬(J2000)":"-55h29m28s","赤纬D(J2000)":"-55.49111111111111","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.4","短轴(分)":"0.2","方位角":"99","详细描述":"most extremely faint, extremely small, suspected","简略描述":"eeF, eS, susp"},{"ID":"12623","标识":"IC4783","M标识":"IC4783","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h51m33.5s","赤经D(J2000)":"18.859305555555558","赤纬(J2000)":"-58h48m48s","赤纬D(J2000)":"-58.81333333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"1","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"12624","标识":"IC4784","M标识":"IC4784","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h52m48s","赤经D(J2000)":"18.88","赤纬(J2000)":"-63h15m34s","赤纬D(J2000)":"-63.25944444444445","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"90","详细描述":"considerably faint, small, round, brighter middle","简略描述":"cF, S, R, bM"},{"ID":"12625","标识":"IC4785","M标识":"IC4785","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h52m55.2s","赤经D(J2000)":"18.882","赤纬(J2000)":"-59h15m18s","赤纬D(J2000)":"-59.255","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"3.1","短轴(分)":"1.4","方位角":"140","详细描述":"extremely faint, very small, irregular figure, stellar nucleus","简略描述":"eF, vS, iF, stell N"},{"ID":"12626","标识":"IC4786","M标识":"IC4786","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"18h52m44.8s","赤经D(J2000)":"18.87911111111111","赤纬(J2000)":"-56h41m42s","赤纬D(J2000)":"-56.69499999999999","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"178","详细描述":"most extremely faint, extremely small, much extended 0°","简略描述":"eeF, eS, mE 0°"},{"ID":"12627","标识":"IC4787","M标识":"IC4787","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h56m3.9s","赤经D(J2000)":"18.934416666666667","赤纬(J2000)":"-68h40m57s","赤纬D(J2000)":"-68.6825","可见光星等V":"14","摄影(蓝光)星等B":"14.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"167","详细描述":"extremely faint, diffuse","简略描述":"eF, dif"},{"ID":"12628","标识":"IC4788","M标识":"IC4788","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h54m40.9s","赤经D(J2000)":"18.91136111111111","赤纬(J2000)":"-63h27m9s","赤纬D(J2000)":"-63.4525","可见光星等V":"15.3","摄影(蓝光)星等B":"16","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.6","短轴(分)":"0.2","方位角":"12","详细描述":"most extremely faint, extremely small, extremely extended 35°","简略描述":"eeF, eS, eE 35°"},{"ID":"12629","标识":"IC4789","M标识":"IC4789","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h56m18.4s","赤经D(J2000)":"18.938444444444446","赤纬(J2000)":"-68h34m2s","赤纬D(J2000)":"-68.56722222222221","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"174","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"12630","标识":"IC4790","M标识":"IC4790","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h56m32.2s","赤经D(J2000)":"18.94227777777778","赤纬(J2000)":"-64h55m42s","赤纬D(J2000)":"-64.92833333333334","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"57","详细描述":"considerably bright, small, round, brighter middle","简略描述":"cB, S, R, bM"},{"ID":"12631","标识":"IC4791","M标识":"IC4791","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"武仙座","星座(En)":"HER","赤经(J2000)":"18h49m1.2s","赤经D(J2000)":"18.817","赤纬(J2000)":"+19h19m54s","赤纬D(J2000)":"19.331666666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"nebula; 6th magnitude star 2 arcmin to east","简略描述":"Neb, * 6 f 2'"},{"ID":"12632","标识":"IC4792","M标识":"IC4792","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa? ","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"18h55m42s","赤经D(J2000)":"18.928333333333335","赤纬(J2000)":"-56h24m14s","赤纬D(J2000)":"-56.403888888888886","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"156","详细描述":"most extremely faint, extremely small, much extended 160°, between 2 stars, suspected","简略描述":"eeF, eS, mE 160°, bet 2 st, susp"},{"ID":"12633","标识":"IC4793","M标识":"IC4793","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h56m55.7s","赤经D(J2000)":"18.948805555555555","赤纬(J2000)":"-61h23m59s","赤纬D(J2000)":"-61.39972222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"120","详细描述":"extremely faint, very small, considerably extended 130°","简略描述":"eF, vS, cE 130°"},{"ID":"12634","标识":"IC4794","M标识":"IC4794","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h57m9.7s","赤经D(J2000)":"18.952694444444443","赤纬(J2000)":"-62h5m25s","赤纬D(J2000)":"-62.09027777777778","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"25","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"12635","标识":"IC4795","M标识":"IC4795","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h57m16.7s","赤经D(J2000)":"18.954638888888887","赤纬(J2000)":"-61h36m32s","赤纬D(J2000)":"-61.60888888888889","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"70","详细描述":"most extremely faint, extremely small, extremely extended 40°","简略描述":"eeF, eS, eE 40°"},{"ID":"12636","标识":"IC4796","M标识":"IC4796","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"18h56m27.9s","赤经D(J2000)":"18.941083333333335","赤纬(J2000)":"-54h12m48s","赤纬D(J2000)":"-54.21333333333334","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.6","短轴(分)":"1","方位角":"140","详细描述":"14th magnitude, brighter middle, near edge of plate","简略描述":"14 magn, bM, near edge of plate"},{"ID":"12637","标识":"IC4797","M标识":"IC4797","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"18h56m29.8s","赤经D(J2000)":"18.94161111111111","赤纬(J2000)":"-54h18m17s","赤纬D(J2000)":"-54.30472222222222","可见光星等V":"11.3","摄影(蓝光)星等B":"12.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.1","短轴(分)":"1.1","方位角":"146","详细描述":"14th magnitude, brighter middle, near edge of plate","简略描述":"14 magn, bM, near edge of plate"},{"ID":"12638","标识":"IC4798","M标识":"IC4798","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h58m21s","赤经D(J2000)":"18.972499999999997","赤纬(J2000)":"-62h7m4s","赤纬D(J2000)":"-62.117777777777775","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"108","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"12639","标识":"IC4799","M标识":"IC4799","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h58m56.9s","赤经D(J2000)":"18.98247222222222","赤纬(J2000)":"-63h55m50s","赤纬D(J2000)":"-63.93055555555555","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"30","详细描述":"very faint, small, round, stellar nucleus, ring, 2 wisps","简略描述":"vF, S, R, stell N, ring 2 wisps"},{"ID":"12640","标识":"IC4800","M标识":"IC4800","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h58m43.5s","赤经D(J2000)":"18.978749999999998","赤纬(J2000)":"-63h8m21s","赤纬D(J2000)":"-63.13916666666667","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.8","短轴(分)":"1","方位角":"164","详细描述":"very faint, small, stellar nucleus, oval ring, 2 wisps","简略描述":"vF, S, stell N, oval ring, 2 wisps"},{"ID":"12641","标识":"IC4801","M标识":"IC4801","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"18h59m38.3s","赤经D(J2000)":"18.993972222222222","赤纬(J2000)":"-64h40m29s","赤纬D(J2000)":"-64.67472222222223","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"1","方位角":"90","详细描述":"considerably faint, small, round, brighter middle","简略描述":"cF, S, R, bM"},{"ID":"12642","标识":"IC4802","M标识":"IC4802","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*Grp","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"18h55m7.2s","赤经D(J2000)":"18.918666666666667","赤纬(J2000)":"-22h41m51s","赤纬D(J2000)":"-22.6975","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebulous 13th magnitude star, 15 arcsec northeast of III 143","简略描述":"Neb * 13, 15\" nf III 143"},{"ID":"12643","标识":"IC4803","M标识":"IC4803","拓展名":"","组件":"3","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h0m39.5s","赤经D(J2000)":"19.01097222222222","赤纬(J2000)":"-62h3m54s","赤纬D(J2000)":"-62.065","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"5","详细描述":"most extremely faint, extremely small, round","简略描述":"eeF, eS, R"},{"ID":"12644","标识":"IC4804","M标识":"IC4804","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h1m7.5s","赤经D(J2000)":"19.01875","赤纬(J2000)":"-61h49m59s","赤纬D(J2000)":"-61.83305555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.2","短轴(分)":"1","方位角":"147","详细描述":"most extremely faint, extremely small, considerably extended","简略描述":"eeF, eS, cE"},{"ID":"12645","标识":"IC4805","M标识":"IC4805","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa? ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h2m1.4s","赤经D(J2000)":"19.033722222222224","赤纬(J2000)":"-63h2m51s","赤纬D(J2000)":"-63.0475","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"21","详细描述":"extremely faint, very small, extremely extended 25°, brighter middle","简略描述":"eF, vS, eE 25°, bM"},{"ID":"12646","标识":"IC4806","M标识":"IC4806","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h1m30.7s","赤经D(J2000)":"19.025194444444445","赤纬(J2000)":"-57h31m57s","赤纬D(J2000)":"-57.5325","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2.3","短轴(分)":"0.6","方位角":"9","详细描述":"most extremely faint, extremely small, extremely extended 10°, 2 stars very near, suspected","简略描述":"eeF, eS, eE 10°, 2 st v nr, susp"},{"ID":"12647","标识":"IC4807","M标识":"IC4807","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h2m17.8s","赤经D(J2000)":"19.03827777777778","赤纬(J2000)":"-56h55m48s","赤纬D(J2000)":"-56.93","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.6","方位角":"7","详细描述":"very faint, very small, a little extended, planetary?, suspected","简略描述":"vF, vS, lE, planetary ?, susp"},{"ID":"12648","标识":"IC4808","M标识":"IC4808","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"南冕座","星座(En)":"CRA","赤经(J2000)":"19h1m7.5s","赤经D(J2000)":"19.01875","赤纬(J2000)":"-45h18m51s","赤纬D(J2000)":"-45.314166666666665","可见光星等V":"12.3","摄影(蓝光)星等B":"12.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2","短轴(分)":"0.8","方位角":"45","详细描述":"very faint, considerably large, considerably extended 45°, a little brighter middle, suspected","简略描述":"vF, cL, cE 45°, lbM, susp"},{"ID":"12649","标识":"IC4809","M标识":"IC4809","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"D","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h4m5.3s","赤经D(J2000)":"19.06813888888889","赤纬(J2000)":"-62h11m39s","赤纬D(J2000)":"-62.19416666666666","可见光星等V":"14.1","摄影(蓝光)星等B":"14.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.6","方位角":"14","详细描述":"extremely faint, very small, a little extended 20°","简略描述":"eF, vS, lE 20°"},{"ID":"12650","标识":"IC4810","M标识":"IC4810","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h3m0.1s","赤经D(J2000)":"19.05002777777778","赤纬(J2000)":"-56h9m37s","赤纬D(J2000)":"-56.16027777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13.1","B-V":"0.5","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"3.5","短轴(分)":"0.4","方位角":"136","详细描述":"extremely faint, small, extremely extended 140°, a little brighter middle, suspected","简略描述":"eF, S, eE 140°, lbM, susp"},{"ID":"12651","标识":"IC4811","M标识":"IC4811","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h5m44.5s","赤经D(J2000)":"19.095694444444444","赤纬(J2000)":"-67h8m3s","赤纬D(J2000)":"-67.13416666666667","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"most extremely faint, extremely small, round, almost stellar","简略描述":"eeF, eS, R, alm stell"},{"ID":"12652","标识":"IC4812","M标识":"IC4812","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN+*","星座(Zh)":"南冕座","星座(En)":"CRA","赤经(J2000)":"19h1m3.5s","赤经D(J2000)":"19.01763888888889","赤纬(J2000)":"-37h3m37s","赤纬D(J2000)":"-37.06027777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"7","方位角":"","详细描述":"7th magnitude star involved in an extremely large nebula","简略描述":"* 7 inv in eL neb"},{"ID":"12653","标识":"IC4813","M标识":"IC4813","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"D","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h5m41.8s","赤经D(J2000)":"19.094944444444444","赤纬(J2000)":"-66h31m22s","赤纬D(J2000)":"-66.52277777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"35","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"12654","标识":"IC4814","M标识":"IC4814","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h4m59.4s","赤经D(J2000)":"19.083166666666667","赤纬(J2000)":"-58h34m47s","赤纬D(J2000)":"-58.57972222222222","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"93","详细描述":"most extremely faint, considerably small, considerably extended 100°, suspected","简略描述":"eeF, cS, cE 100°, susp"},{"ID":"12655","标识":"IC4815","M标识":"IC4815","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h6m50.8s","赤经D(J2000)":"19.11411111111111","赤纬(J2000)":"-61h42m4s","赤纬D(J2000)":"-61.70111111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"162","详细描述":"considerably faint, very small, round, brighter middle","简略描述":"cF, vS, R, bM"},{"ID":"12656","标识":"IC4816","M标识":"IC4816","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h1m44.4s","赤经D(J2000)":"19.029","赤纬(J2000)":"-13h8m50s","赤纬D(J2000)":"-13.147222222222222","可见光星等V":"16.2","摄影(蓝光)星等B":"17","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.2","短轴(分)":"0.1","方位角":"60","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"12657","标识":"IC4817","M标识":"IC4817","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h6m12.6s","赤经D(J2000)":"19.1035","赤纬(J2000)":"-56h9m33s","赤纬D(J2000)":"-56.159166666666664","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"0.5","方位角":"12","详细描述":"extremely faint, very small, considerably extended 0°","简略描述":"eF, vS, cE 0°"},{"ID":"12658","标识":"IC4818","M标识":"IC4818","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h6m2.9s","赤经D(J2000)":"19.100805555555556","赤纬(J2000)":"-55h8m10s","赤纬D(J2000)":"-55.13611111111111","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"0.3","方位角":"78","详细描述":"extremely faint, extremely small, considerably extended 90°","简略描述":"eF, eS, cE 90°"},{"ID":"12659","标识":"IC4819","M标识":"IC4819","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h7m7.5s","赤经D(J2000)":"19.118750000000002","赤纬(J2000)":"-59h28m2s","赤纬D(J2000)":"-59.467222222222226","可见光星等V":"13.4","摄影(蓝光)星等B":"14.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"2.9","短轴(分)":"0.3","方位角":"125","详细描述":"very faint, small, extremely extended 130°","简略描述":"vF, S, eE 130°"},{"ID":"12660","标识":"IC4820","M标识":"IC4820","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h9m13.5s","赤经D(J2000)":"19.15375","赤纬(J2000)":"-63h27m56s","赤纬D(J2000)":"-63.46555555555556","可见光星等V":"14.6","摄影(蓝光)星等B":"15.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.8","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"110","详细描述":"most extremely faint, extremely small","简略描述":"eeF, eS"},{"ID":"12661","标识":"IC4821","M标识":"IC4821","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h9m32.2s","赤经D(J2000)":"19.158944444444444","赤纬(J2000)":"-55h0m59s","赤纬D(J2000)":"-55.01638888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"0.7","方位角":"4","详细描述":"very faint, very small, extremely extended 10°","简略描述":"vF, vS, eE 10°"},{"ID":"12662","标识":"IC4822","M标识":"IC4822","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h14m45.6s","赤经D(J2000)":"19.246000000000002","赤纬(J2000)":"-72h26m28s","赤纬D(J2000)":"-72.44111111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"75","详细描述":"faint, small, round","简略描述":"F, S, R"},{"ID":"12663","标识":"IC4823","M标识":"IC4823","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h12m16s","赤经D(J2000)":"19.204444444444444","赤纬(J2000)":"-63h58m33s","赤纬D(J2000)":"-63.975833333333334","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"20","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"12664","标识":"IC4824","M标识":"IC4824","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h13m14.1s","赤经D(J2000)":"19.22058333333333","赤纬(J2000)":"-62h5m19s","赤纬D(J2000)":"-62.08861111111111","可见光星等V":"16.2","摄影(蓝光)星等B":"16.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"16.6","长轴(分)":"1.7","短轴(分)":"1","方位角":"103","详细描述":"extremely faint, extremely small, double nebula","简略描述":"eF, eS, D neb"},{"ID":"12665","标识":"IC4825","M标识":"IC4825","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h17m15.7s","赤经D(J2000)":"19.287694444444448","赤纬(J2000)":"-72h44m56s","赤纬D(J2000)":"-72.74888888888889","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"12666","标识":"IC4826","M标识":"IC4826","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h12m21.3s","赤经D(J2000)":"19.205916666666667","赤纬(J2000)":"-57h12m9s","赤纬D(J2000)":"-57.2025","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"0.8","方位角":"45","详细描述":"extremely faint, most extremely small, round","简略描述":"eF, eeS, R"},{"ID":"12667","标识":"IC4827","M标识":"IC4827","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h13m21.1s","赤经D(J2000)":"19.222527777777778","赤纬(J2000)":"-60h51m34s","赤纬D(J2000)":"-60.85944444444445","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"2.8","短轴(分)":"0.5","方位角":"166","详细描述":"faint, considerably small, considerably extended 170°, stellar nucleus","简略描述":"F, cS, eE 170°, stell N"},{"ID":"12668","标识":"IC4828","M标识":"IC4828","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S? ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h13m40.6s","赤经D(J2000)":"19.227944444444443","赤纬(J2000)":"-62h4m56s","赤纬D(J2000)":"-62.08222222222223","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"68","详细描述":"very faint, very small, considerably extended 60°","简略描述":"vF, vS, cE 60°"},{"ID":"12669","标识":"IC4829","M标识":"IC4829","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h12m33.7s","赤经D(J2000)":"19.20936111111111","赤纬(J2000)":"-56h32m24s","赤纬D(J2000)":"-56.54","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"23","详细描述":"most extremely faint, extremely small, much extended 20°","简略描述":"eeF, eS, mE 20°"},{"ID":"12670","标识":"IC4830","M标识":"IC4830","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h13m48.4s","赤经D(J2000)":"19.23011111111111","赤纬(J2000)":"-59h17m40s","赤纬D(J2000)":"-59.294444444444444","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"28","详细描述":"extremely faint, extremely small, round, a little brighter middle","简略描述":"eF, eS, R, lbM"},{"ID":"12671","标识":"IC4831","M标识":"IC4831","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h14m44.1s","赤经D(J2000)":"19.245583333333336","赤纬(J2000)":"-62h16m19s","赤纬D(J2000)":"-62.27194444444444","可见光星等V":"11.3","摄影(蓝光)星等B":"12.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.5","短轴(分)":"0.9","方位角":"111","详细描述":"a remarkable object, considerably faint, very small, extremely extended 150°, 2 branch spiral","简略描述":"! cF, vS, eE 150°, 2 br spir"},{"ID":"12672","标识":"IC4832","M标识":"IC4832","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h14m3.9s","赤经D(J2000)":"19.234416666666668","赤纬(J2000)":"-56h36m35s","赤纬D(J2000)":"-56.609722222222224","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.2","短轴(分)":"0.5","方位角":"144","详细描述":"very faint, very small, extremely extended 145°, stellar nucleus","简略描述":"vF, vS, eE 145°, stell N"},{"ID":"12673","标识":"IC4833","M标识":"IC4833","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h15m41.4s","赤经D(J2000)":"19.2615","赤纬(J2000)":"-62h19m45s","赤纬D(J2000)":"-62.32916666666667","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"99","详细描述":"most extremely faint, extremely small, round, brighter middle","简略描述":"eeF, eS, R, bM"},{"ID":"12674","标识":"IC4834","M标识":"IC4834","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa? ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h16m31.1s","赤经D(J2000)":"19.275305555555555","赤纬(J2000)":"-64h0m23s","赤纬D(J2000)":"-64.00638888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"125","详细描述":"extremely faint, very small, a little extended 140°","简略描述":"eF, vS, lE 140°"},{"ID":"12675","标识":"IC4835","M标识":"IC4835","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h15m27.4s","赤经D(J2000)":"19.25761111111111","赤纬(J2000)":"-58h14m15s","赤纬D(J2000)":"-58.237500000000004","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"166","详细描述":"extremely faint, extremely small, considerably extended 0°","简略描述":"eF, eS, cE 0°"},{"ID":"12676","标识":"IC4836","M标识":"IC4836","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h16m18.1s","赤经D(J2000)":"19.271694444444442","赤纬(J2000)":"-60h12m0s","赤纬D(J2000)":"-60.2","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.5","短轴(分)":"1.4","方位角":"12","详细描述":"faint, considerably large, irregular figure, 2 stars involved","简略描述":"F, cL, iF, 2 st inv"},{"ID":"12677","标识":"IC4837","M标识":"IC4837","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc\/P","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h15m14.2s","赤经D(J2000)":"19.253944444444443","赤纬(J2000)":"-54h39m43s","赤纬D(J2000)":"-54.661944444444444","可见光星等V":"12.5","摄影(蓝光)星等B":"13","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.1","短轴(分)":"1","方位角":"8","详细描述":"faint, considerably small, round, brighter middle","简略描述":"F, cS, R, bM"},{"ID":"12678","标识":"IC4838","M标识":"IC4838","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h16m46.3s","赤经D(J2000)":"19.279527777777776","赤纬(J2000)":"-61h36m50s","赤纬D(J2000)":"-61.61388888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"64","详细描述":"considerably faint, small, extremely extended 45°","简略描述":"cF, S, eE 45°"},{"ID":"12679","标识":"IC4839","M标识":"IC4839","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc\/P","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h15m33.9s","赤经D(J2000)":"19.259416666666667","赤纬(J2000)":"-54h37m35s","赤纬D(J2000)":"-54.62638888888889","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.2","短轴(分)":"1.6","方位角":"147","详细描述":"faint, nebulous star","简略描述":"F, neb *"},{"ID":"12680","标识":"IC4840","M标识":"IC4840","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h15m51.8s","赤经D(J2000)":"19.264388888888888","赤纬(J2000)":"-56h12m31s","赤纬D(J2000)":"-56.20861111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"131","详细描述":"considerably faint, very small","简略描述":"cF, vS"},{"ID":"12681","标识":"IC4841","M标识":"IC4841","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h20m42.8s","赤经D(J2000)":"19.345222222222223","赤纬(J2000)":"-72h13m35s","赤纬D(J2000)":"-72.22638888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.7","方位角":"130","详细描述":"extremely faint, small, round, considerably brighter middle","简略描述":"eF, S, R, cbM"},{"ID":"12682","标识":"IC4842","M标识":"IC4842","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h19m24.5s","赤经D(J2000)":"19.32347222222222","赤纬(J2000)":"-60h38m39s","赤纬D(J2000)":"-60.64416666666666","可见光星等V":"12.4","摄影(蓝光)星等B":"13.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"20","详细描述":"considerably faint, very small, round","简略描述":"vF, vS, R"},{"ID":"12683","标识":"IC4843","M标识":"IC4843","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h19m21.6s","赤经D(J2000)":"19.322666666666667","赤纬(J2000)":"-59h18m33s","赤纬D(J2000)":"-59.30916666666666","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"0.2","方位角":"89","详细描述":"extremely faint, extremely small, considerably extended 90°","简略描述":"eF, eS, cE 90°"},{"ID":"12684","标识":"IC4844","M标识":"IC4844","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h19m2.7s","赤经D(J2000)":"19.317416666666666","赤纬(J2000)":"-56h1m37s","赤纬D(J2000)":"-56.026944444444446","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1","方位角":"164","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"12685","标识":"IC4845","M标识":"IC4845","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h20m22.1s","赤经D(J2000)":"19.33947222222222","赤纬(J2000)":"-60h23m20s","赤纬D(J2000)":"-60.388888888888886","可见光星等V":"11.6","摄影(蓝光)星等B":"12.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.5","短轴(分)":"1","方位角":"87","详细描述":"considerably faint, brighter middle, 11th magnitude star 0.4 arcmin to southwest","简略描述":"cF, bM, * 11 sp 0'.4"},{"ID":"12686","标识":"IC4846","M标识":"IC4846","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h16m28.3s","赤经D(J2000)":"19.274527777777777","赤纬(J2000)":"-9h2m35s","赤纬D(J2000)":"-9.043055555555556","可见光星等V":"11.9","摄影(蓝光)星等B":"12.7","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.18","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"12687","标识":"IC4847","M标识":"IC4847","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h23m31.7s","赤经D(J2000)":"19.392138888888887","赤纬(J2000)":"-65h30m23s","赤纬D(J2000)":"-65.50638888888889","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"159","详细描述":"very faint, extremely small, round, 8.9 magnitude star 4 arcmin to southeast","简略描述":"vF, eS, R, * 8.9 sf 4'"},{"ID":"12688","标识":"IC4848","M标识":"IC4848","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h22m54.5s","赤经D(J2000)":"19.381805555555555","赤纬(J2000)":"-56h46m50s","赤纬D(J2000)":"-56.78055555555555","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"32","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"12689","标识":"IC4849","M标识":"IC4849","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h25m35.8s","赤经D(J2000)":"19.42661111111111","赤纬(J2000)":"-62h55m58s","赤纬D(J2000)":"-62.93277777777777","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"116","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"12690","标识":"IC4850","M标识":"IC4850","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"Nova","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"19h20m24s","赤经D(J2000)":"19.34","赤纬(J2000)":"-0h8m0s","赤纬D(J2000)":"-0.13333333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"12691","标识":"IC4851","M标识":"IC4851","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h25m29.4s","赤经D(J2000)":"19.424833333333336","赤纬(J2000)":"-57h40m15s","赤纬D(J2000)":"-57.670833333333334","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"13","详细描述":"considerably faint, very small, extremely extended 15°, very much brighter middle, suspected","简略描述":"vF, vS, eE 15°, vmbM, susp"},{"ID":"12692","标识":"IC4852","M标识":"IC4852","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h26m25.7s","赤经D(J2000)":"19.440472222222223","赤纬(J2000)":"-60h20m10s","赤纬D(J2000)":"-60.336111111111116","可见光星等V":"13","摄影(蓝光)星等B":"13.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"178","详细描述":"considerably faint, brighter middle","简略描述":"cF, bM"},{"ID":"12693","标识":"IC4853","M标识":"IC4853","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h30m47.2s","赤经D(J2000)":"19.51311111111111","赤纬(J2000)":"-71h4m13s","赤纬D(J2000)":"-71.07027777777778","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"169","详细描述":"most extremely faint, extremely small, a little extended 170°","简略描述":"eeF, eS, lE 170°"},{"ID":"12694","标识":"IC4854","M标识":"IC4854","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h27m21.2s","赤经D(J2000)":"19.45588888888889","赤纬(J2000)":"-59h18m54s","赤纬D(J2000)":"-59.315","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"28","详细描述":"very faint, considerably small, round","简略描述":"vF, cS, R"},{"ID":"12695","标识":"IC4855","M标识":"IC4855","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Scd","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h27m21.2s","赤经D(J2000)":"19.45588888888889","赤纬(J2000)":"-59h18m54s","赤纬D(J2000)":"-59.315","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"1.2","方位角":"28","详细描述":"very faint, considerably small, round","简略描述":"eF, vS, R, susp"},{"ID":"12696","标识":"IC4856","M标识":"IC4856","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h27m30.5s","赤经D(J2000)":"19.458472222222223","赤纬(J2000)":"-54h54m31s","赤纬D(J2000)":"-54.90861111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"33","详细描述":"extremely faint, extremely small, double nebula, suspected","简略描述":"eF, eS, D neb, susp"},{"ID":"12697","标识":"IC4857","M标识":"IC4857","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h28m39.1s","赤经D(J2000)":"19.477527777777777","赤纬(J2000)":"-58h46m5s","赤纬D(J2000)":"-58.768055555555556","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"35","详细描述":"very faint, considerably short, round","简略描述":"vF, cS, R"},{"ID":"12698","标识":"IC4858","M标识":"IC4858","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h28m39.1s","赤经D(J2000)":"19.477527777777777","赤纬(J2000)":"-58h46m5s","赤纬D(J2000)":"-58.768055555555556","可见光星等V":"13","摄影(蓝光)星等B":"13.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"35","详细描述":"very faint, considerably short, round","简略描述":"eeF, eS, prob spir, susp"},{"ID":"12699","标识":"IC4859","M标识":"IC4859","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h30m46.7s","赤经D(J2000)":"19.51297222222222","赤纬(J2000)":"-66h18m49s","赤纬D(J2000)":"-66.31361111111111","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.6","方位角":"35","详细描述":"extremely faint, small, considerably brighter middle, almost stellar nucleus","简略描述":"eF, S, cbM, alm stell N"},{"ID":"12700","标识":"IC4860","M标识":"IC4860","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h31m27.2s","赤经D(J2000)":"19.52422222222222","赤纬(J2000)":"-67h22m5s","赤纬D(J2000)":"-67.36805555555554","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.8","方位角":"141","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"12701","标识":"IC4861","M标识":"IC4861","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h29m16.6s","赤经D(J2000)":"19.487944444444445","赤纬(J2000)":"-57h34m34s","赤纬D(J2000)":"-57.57611111111112","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"29","详细描述":"very faint, extremely small, considerably extended 25°, suspected","简略描述":"vF, eS, cE 25°, susp"},{"ID":"12702","标识":"IC4862","M标识":"IC4862","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h31m40.1s","赤经D(J2000)":"19.527805555555556","赤纬(J2000)":"-67h19m22s","赤纬D(J2000)":"-67.32277777777777","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"3","详细描述":"extremely faint, small, considerably brighter middle, a little extended 0°","简略描述":"eF, S, cbM, lE 0°"},{"ID":"12703","标识":"IC4863","M标识":"IC4863","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h27m51.5s","赤经D(J2000)":"19.464305555555555","赤纬(J2000)":"-36h13m2s","赤纬D(J2000)":"-36.217222222222226","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"close double star, nebulous? (Howe says not)","简略描述":"close D *, nebulous ? (Ho. says not)"},{"ID":"12704","标识":"IC4864","M标识":"IC4864","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"南极座","星座(En)":"OCT","赤经(J2000)":"19h40m6s","赤经D(J2000)":"19.668333333333333","赤纬(J2000)":"-77h33m26s","赤纬D(J2000)":"-77.55722222222222","可见光星等V":"13.5","摄影(蓝光)星等B":"14.8","B-V":"1.3","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"176","详细描述":"extremely faint, very small, extremely extended 70°, very faint star 1 arcmin to southwest","简略描述":"eF, vS, eE 70°, vF * sp 1'"},{"ID":"12705","标识":"IC4865","M标识":"IC4865","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h30m50.3s","赤经D(J2000)":"19.513972222222222","赤纬(J2000)":"-46h41m54s","赤纬D(J2000)":"-46.69833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, perhaps stellar nucleus; magnitude 9.5 star attached on southeast","简略描述":"F, perh stell N, * 9.5 att sf"},{"ID":"12706","标识":"IC4866","M标识":"IC4866","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h34m34.8s","赤经D(J2000)":"19.576333333333334","赤纬(J2000)":"-61h8m45s","赤纬D(J2000)":"-61.145833333333336","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"1.1","方位角":"163","详细描述":"considerably faint, small, round, brighter middle","简略描述":"cF, S, R, bM"},{"ID":"12707","标识":"IC4867","M标识":"IC4867","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0-a","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"19h26m31.9s","赤经D(J2000)":"19.442194444444446","赤纬(J2000)":"+50h7m33s","赤纬D(J2000)":"50.12583333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"17","详细描述":"small; two 7th magnitude stars 3 arcmin to northeast (= IC 1301?)","简略描述":"S, 2 st 7 nf 3' [? = I.C. 1301]"},{"ID":"12708","标识":"IC4868","M标识":"IC4868","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h33m33.4s","赤经D(J2000)":"19.55927777777778","赤纬(J2000)":"-45h53m32s","赤纬D(J2000)":"-45.89222222222222","可见光星等V":"99","摄影(蓝光)星等B":"9.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely small, a little extended, magnitude 9.4","简略描述":"eS, lE, magn 9.4"},{"ID":"12709","标识":"IC4869","M标识":"IC4869","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h36m2.4s","赤经D(J2000)":"19.60066666666667","赤纬(J2000)":"-61h1m41s","赤纬D(J2000)":"-61.028055555555554","可见光星等V":"13","摄影(蓝光)星等B":"13.6","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"1","方位角":"76","详细描述":"faint, small, round, brighter middle, faint star 1 arcmin to southwest","简略描述":"F, S, R, bM, F * sp 1'"},{"ID":"12710","标识":"IC4870","M标识":"IC4870","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IBm\/P","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h37m37.7s","赤经D(J2000)":"19.62713888888889","赤纬(J2000)":"-65h48m40s","赤纬D(J2000)":"-65.8111111111111","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"136","详细描述":"very faint, small, faint star involved","简略描述":"vF, S, F * inv"},{"ID":"12711","标识":"IC4871","M标识":"IC4871","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h35m42.2s","赤经D(J2000)":"19.595055555555554","赤纬(J2000)":"-57h31m8s","赤纬D(J2000)":"-57.51888888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.5","短轴(分)":"0.4","方位角":"6","详细描述":"very faint, small, extremely extended 15°","简略描述":"vF, S, eE 15°"},{"ID":"12712","标识":"IC4872","M标识":"IC4872","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBcd","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h35m42.2s","赤经D(J2000)":"19.595055555555554","赤纬(J2000)":"-57h31m8s","赤纬D(J2000)":"-57.51888888888889","可见光星等V":"13.1","摄影(蓝光)星等B":"13.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"3.5","短轴(分)":"0.4","方位角":"6","详细描述":"very faint, small, extremely extended 15°","简略描述":"vF, S, eE 5° "},{"ID":"12713","标识":"IC4873","M标识":"IC4873","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h34m54.6s","赤经D(J2000)":"19.581833333333332","赤纬(J2000)":"-46h8m10s","赤纬D(J2000)":"-46.13611111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"25","详细描述":"faint, small, round, faint star in middle","简略描述":"F, S, R, F * M"},{"ID":"12714","标识":"IC4874","M标识":"IC4874","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h36m21.4s","赤经D(J2000)":"19.605944444444447","赤纬(J2000)":"-47h15m57s","赤纬D(J2000)":"-47.26583333333333","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"60","详细描述":"faint, small, round, faint star in middle","简略描述":"F, S, R, F * M"},{"ID":"12715","标识":"IC4875","M标识":"IC4875","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im\/P","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h37m38.7s","赤经D(J2000)":"19.62741666666667","赤纬(J2000)":"-52h4m31s","赤纬D(J2000)":"-52.07527777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"73","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"12716","标识":"IC4876","M标识":"IC4876","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h37m42.5s","赤经D(J2000)":"19.62847222222222","赤纬(J2000)":"-52h50m35s","赤纬D(J2000)":"-52.84305555555556","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"120","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"12717","标识":"IC4877","M标识":"IC4877","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h37m55.8s","赤经D(J2000)":"19.632166666666667","赤纬(J2000)":"-51h59m29s","赤纬D(J2000)":"-51.99138888888889","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.3","短轴(分)":"0.2","方位角":"82","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"12718","标识":"IC4878","M标识":"IC4878","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h38m49.8s","赤经D(J2000)":"19.647166666666667","赤纬(J2000)":"-58h13m38s","赤纬D(J2000)":"-58.227222222222224","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"41","详细描述":"extremely faint, extremely small, much extended 40°","简略描述":"eF, eS, mE 40°"},{"ID":"12719","标识":"IC4879","M标识":"IC4879","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa? ","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h39m36.8s","赤经D(J2000)":"19.66022222222222","赤纬(J2000)":"-52h22m8s","赤纬D(J2000)":"-52.36888888888889","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"80","详细描述":"faint, small, round, a little brighter middle","简略描述":"F, S, R, lbM"},{"ID":"12720","标识":"IC4880","M标识":"IC4880","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h40m30.8s","赤经D(J2000)":"19.675222222222224","赤纬(J2000)":"-56h24m35s","赤纬D(J2000)":"-56.40972222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.7","短轴(分)":"0.4","方位角":"116","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"12721","标识":"IC4881","M标识":"IC4881","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h40m26.1s","赤经D(J2000)":"19.673916666666667","赤纬(J2000)":"-55h51m27s","赤纬D(J2000)":"-55.8575","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"156","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"12722","标识":"IC4882","M标识":"IC4882","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h40m23.3s","赤经D(J2000)":"19.67313888888889","赤纬(J2000)":"-55h11m47s","赤纬D(J2000)":"-55.19638888888888","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.8","方位角":"165","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"12723","标识":"IC4883","M标识":"IC4883","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h42m0.6s","赤经D(J2000)":"19.700166666666664","赤纬(J2000)":"-55h32m43s","赤纬D(J2000)":"-55.54527777777778","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"163","详细描述":"very faint, very small, much extended 170°","简略描述":"vF, vS, mE 170°"},{"ID":"12724","标识":"IC4884","M标识":"IC4884","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h42m41.2s","赤经D(J2000)":"19.711444444444442","赤纬(J2000)":"-58h7m43s","赤纬D(J2000)":"-58.12861111111111","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"166","详细描述":"extremely faint, extremely small, considerably extended 170°","简略描述":"eF, eS, cE 170°"},{"ID":"12725","标识":"IC4885","M标识":"IC4885","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h43m51.8s","赤经D(J2000)":"19.731055555555553","赤纬(J2000)":"-60h39m5s","赤纬D(J2000)":"-60.65138888888889","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"113","详细描述":"very faint, extremely small, extremely extended 85°, stellar nucleus","简略描述":"vF, eS, eE 85°, stell N"},{"ID":"12726","标识":"IC4886","M标识":"IC4886","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h43m14.5s","赤经D(J2000)":"19.720694444444444","赤纬(J2000)":"-51h48m26s","赤纬D(J2000)":"-51.80722222222222","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"107","详细描述":"faint, small, round, much brighter middle","简略描述":"F, S, R, mbM"},{"ID":"12727","标识":"IC4887","M标识":"IC4887","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h48m21s","赤经D(J2000)":"19.805833333333332","赤纬(J2000)":"-69h35m13s","赤纬D(J2000)":"-69.58694444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.8","方位角":"95","详细描述":"considerably bright, small, round, brighter middle","简略描述":"cB, S, R, bM"},{"ID":"12728","标识":"IC4888","M标识":"IC4888","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h44m52.2s","赤经D(J2000)":"19.747833333333336","赤纬(J2000)":"-54h27m23s","赤纬D(J2000)":"-54.45638888888889","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.7","方位角":"93","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"12729","标识":"IC4889","M标识":"IC4889","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E5","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h45m15s","赤经D(J2000)":"19.754166666666666","赤纬(J2000)":"-54h20m37s","赤纬D(J2000)":"-54.343611111111116","可见光星等V":"11.1","摄影(蓝光)星等B":"12.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.2","短轴(分)":"1.5","方位角":"0","详细描述":"brighter middle, magnitude 10","简略描述":"bM, magn 10"},{"ID":"12730","标识":"IC4890","M标识":"IC4890","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h45m35.4s","赤经D(J2000)":"19.759833333333333","赤纬(J2000)":"-56h32m41s","赤纬D(J2000)":"-56.54472222222222","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"75","详细描述":"most extremely faint, extremely small, round, faint star 1 arcmin to south","简略描述":"eeF, eS, R, F * s 1'"},{"ID":"12731","标识":"IC4891","M标识":"IC4891","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h45m15s","赤经D(J2000)":"19.754166666666666","赤纬(J2000)":"-54h20m37s","赤纬D(J2000)":"-54.343611111111116","可见光星等V":"11.1","摄影(蓝光)星等B":"12.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.2","短轴(分)":"1.5","方位角":"0","详细描述":"brighter middle, magnitude 10","简略描述":"cB, S, R, bM"},{"ID":"12732","标识":"IC4892","M标识":"IC4892","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h49m31.6s","赤经D(J2000)":"19.825444444444443","赤纬(J2000)":"-70h13m40s","赤纬D(J2000)":"-70.22777777777777","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"3","详细描述":"extremely faint, small, extremely extended 10°","简略描述":"eF, S, eE 10°"},{"ID":"12733","标识":"IC4893","M标识":"IC4893","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h50m32.9s","赤经D(J2000)":"19.84247222222222","赤纬(J2000)":"-72h30m36s","赤纬D(J2000)":"-72.51","可见光星等V":"15.2","摄影(蓝光)星等B":"16.2","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, very small, round, brighter middle","简略描述":"eF, vS, R, bM"},{"ID":"12734","标识":"IC4894","M标识":"IC4894","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h46m58.8s","赤经D(J2000)":"19.782999999999998","赤纬(J2000)":"-51h50m48s","赤纬D(J2000)":"-51.84666666666667","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"175","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"12735","标识":"IC4895","M标识":"IC4895","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"IBm","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h44m56.6s","赤经D(J2000)":"19.749055555555557","赤纬(J2000)":"-14h48m23s","赤纬D(J2000)":"-14.80638888888889","可见光星等V":"8.7","摄影(蓝光)星等B":"9.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.4","长轴(分)":"15.4","短轴(分)":"14.2","方位角":"5","详细描述":"group of nebulae, 25 arcmin diameter","简略描述":"Group of neb, 25' diam"},{"ID":"12736","标识":"IC4896","M标识":"IC4896","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h49m5s","赤经D(J2000)":"19.818055555555556","赤纬(J2000)":"-58h58m53s","赤纬D(J2000)":"-58.981388888888894","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"7","详细描述":"most extremely faint, extremely small, round, between 2 extremely faint stars","简略描述":"eeF, eS, R, bet 2 eF st"},{"ID":"12737","标识":"IC4897","M标识":"IC4897","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h49m19.6s","赤经D(J2000)":"19.82211111111111","赤纬(J2000)":"-51h52m4s","赤纬D(J2000)":"-51.867777777777775","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"117","详细描述":"brighter middle, magnitude 16","简略描述":"bM, magn 16"},{"ID":"12738","标识":"IC4898","M标识":"IC4898","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h47m46s","赤经D(J2000)":"19.796111111111113","赤纬(J2000)":"-33h19m0s","赤纬D(J2000)":"-33.31666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, extremely small, extremely dif, several faint stars near","简略描述":"eeF, eS, e dif, sev F st nr"},{"ID":"12739","标识":"IC4899","M标识":"IC4899","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S? ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h54m26.3s","赤经D(J2000)":"19.907305555555553","赤纬(J2000)":"-70h35m23s","赤纬D(J2000)":"-70.58972222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.7","方位角":"9","详细描述":"most extremely faint, extremely small, very faint star 1 arcmin to southwest","简略描述":"eeF, eS, vF * sp 1'"},{"ID":"12740","标识":"IC4900","M标识":"IC4900","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h50m22s","赤经D(J2000)":"19.839444444444442","赤纬(J2000)":"-51h20m45s","赤纬D(J2000)":"-51.34583333333334","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"177","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"12741","标识":"IC4901","M标识":"IC4901","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h54m23.5s","赤经D(J2000)":"19.906527777777775","赤纬(J2000)":"-58h42m48s","赤纬D(J2000)":"-58.71333333333334","可见光星等V":"11.5","摄影(蓝光)星等B":"12.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"3.8","短轴(分)":"2.7","方位角":"126","详细描述":"considerably faint, small, very little extended 135°","简略描述":"cF, S, vlE 135°"},{"ID":"12742","标识":"IC4902","M标识":"IC4902","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h54m24.1s","赤经D(J2000)":"19.906694444444444","赤纬(J2000)":"-56h22m46s","赤纬D(J2000)":"-56.379444444444445","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"16","详细描述":"most extremely faint, extremely small, considerably extended 0°; suspected","简略描述":"eeF, eS, cE 0°, susp"},{"ID":"12743","标识":"IC4903","M标识":"IC4903","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h58m13.4s","赤经D(J2000)":"19.970388888888888","赤纬(J2000)":"-70h27m12s","赤纬D(J2000)":"-70.45333333333333","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"177","详细描述":"extremely faint, very small, between 2 faint stars","简略描述":"eF, vS, bet 2 F st"},{"ID":"12744","标识":"IC4904","M标识":"IC4904","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa? ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h58m39s","赤经D(J2000)":"19.9775","赤纬(J2000)":"-70h11m4s","赤纬D(J2000)":"-70.18444444444445","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"0.8","方位角":"62","详细描述":"very faint, small, round","简略描述":"vF, S, R"},{"ID":"12745","标识":"IC4905","M标识":"IC4905","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa? ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h56m6.2s","赤经D(J2000)":"19.935055555555557","赤纬(J2000)":"-61h13m15s","赤纬D(J2000)":"-61.22083333333334","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.4","短轴(分)":"0.3","方位角":"117","详细描述":"most extremely faint, extremely small, much extended 130°, near 2 extremely faint stars","简略描述":"eeF, eS, mE 130°, nr 2 eF st"},{"ID":"12746","标识":"IC4906","M标识":"IC4906","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h56m47.7s","赤经D(J2000)":"19.946583333333333","赤纬(J2000)":"-60h28m7s","赤纬D(J2000)":"-60.468611111111116","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"69","详细描述":"faint, small, round, brighter middle, 4 stars around","简略描述":"F, S, R, bM, 4 st around"},{"ID":"12747","标识":"IC4907","M标识":"IC4907","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h56m13.1s","赤经D(J2000)":"19.936972222222224","赤纬(J2000)":"-52h27m13s","赤纬D(J2000)":"-52.453611111111115","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"brighter middle, magnitude 16","简略描述":"bM, magn 16"},{"ID":"12748","标识":"IC4908","M标识":"IC4908","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S? ","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h56m56.6s","赤经D(J2000)":"19.949055555555557","赤纬(J2000)":"-55h47m28s","赤纬D(J2000)":"-55.79111111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, extremely small, round, suspected","简略描述":"eF, eS, R, susp"},{"ID":"12749","标识":"IC4909","M标识":"IC4909","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h56m45.4s","赤经D(J2000)":"19.945944444444443","赤纬(J2000)":"-50h3m19s","赤纬D(J2000)":"-50.055277777777775","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"83","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"12750","标识":"IC4910","M标识":"IC4910","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"19h57m47.2s","赤经D(J2000)":"19.96311111111111","赤纬(J2000)":"-56h51m48s","赤纬D(J2000)":"-56.86333333333334","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"125","详细描述":"extremely faint, extremely small, considerably extended 130°, among stars; suspected","简略描述":"eF, eS, cE 130°, am st, susp"},{"ID":"12751","标识":"IC4911","M标识":"IC4911","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h57m41.7s","赤经D(J2000)":"19.961583333333333","赤纬(J2000)":"-51h59m11s","赤纬D(J2000)":"-51.98638888888889","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"135","详细描述":"brighter middle, magnitude 16","简略描述":"bM, magn 16"},{"ID":"12752","标识":"IC4912","M标识":"IC4912","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"南极座","星座(En)":"OCT","赤经(J2000)":"20h6m49.7s","赤经D(J2000)":"20.113805555555558","赤纬(J2000)":"-77h21m27s","赤纬D(J2000)":"-77.35749999999999","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"41","详细描述":"extremely faint, very small, faint star 1 arcmin to northwest; suspected","简略描述":"eF, vS, F * np 1', susp"},{"ID":"12753","标识":"IC4913","M标识":"IC4913","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h56m47.5s","赤经D(J2000)":"19.946527777777778","赤纬(J2000)":"-37h19m43s","赤纬D(J2000)":"-37.328611111111115","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"130","详细描述":"most extremely faint, pretty small, extremely difficult, three 10th magnitude stars 8 arcmin to south","简略描述":"eeF, pS, e diffic, 3 st 10 s 8'"},{"ID":"12754","标识":"IC4914","M标识":"IC4914","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h57m56.5s","赤经D(J2000)":"19.965694444444445","赤纬(J2000)":"-50h7m52s","赤纬D(J2000)":"-50.13111111111111","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"12755","标识":"IC4915","M标识":"IC4915","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h58m31.9s","赤经D(J2000)":"19.975527777777778","赤纬(J2000)":"-52h38m33s","赤纬D(J2000)":"-52.6425","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.7","方位角":"103","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"12756","标识":"IC4916","M标识":"IC4916","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h58m19.2s","赤经D(J2000)":"19.971999999999998","赤纬(J2000)":"-50h16m19s","赤纬D(J2000)":"-50.27194444444444","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"7","详细描述":"faint, small, round, faint star in middle","简略描述":"F, S, R, F * M"},{"ID":"12757","标识":"IC4917","M标识":"IC4917","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h58m54.8s","赤经D(J2000)":"19.981888888888886","赤纬(J2000)":"-52h16m23s","赤纬D(J2000)":"-52.27305555555555","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"","详细描述":"brighter middle, magnitude 16","简略描述":"bM, magn 16"},{"ID":"12758","标识":"IC4918","M标识":"IC4918","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0?","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"19h59m13.2s","赤经D(J2000)":"19.987000000000002","赤纬(J2000)":"-52h16m30s","赤纬D(J2000)":"-52.275","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"110","详细描述":"brighter middle, magnitude 16","简略描述":"bM, magn 16"},{"ID":"12759","标识":"IC4919","M标识":"IC4919","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h0m9.1s","赤经D(J2000)":"20.00252777777778","赤纬(J2000)":"-55h22m26s","赤纬D(J2000)":"-55.37388888888889","可见光星等V":"14.3","摄影(蓝光)星等B":"14.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"31","详细描述":"most extremely faint, extremely small, round, faint star 1 arcmin to east; suspected","简略描述":"eeF, eS, R, * f 1', susp"},{"ID":"12760","标识":"IC4920","M标识":"IC4920","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h0m8.7s","赤经D(J2000)":"20.002416666666665","赤纬(J2000)":"-53h23m3s","赤纬D(J2000)":"-53.384166666666665","可见光星等V":"15.8","摄影(蓝光)星等B":"16.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"38","详细描述":"very faint, very little extended, little brighter middle","简略描述":"vF, vLE, lbM"},{"ID":"12761","标识":"IC4921","M标识":"IC4921","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h3m19.3s","赤经D(J2000)":"20.05536111111111","赤纬(J2000)":"-67h49m33s","赤纬D(J2000)":"-67.82583333333334","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"134","详细描述":"very faint, small, round, considerably brighter middle","简略描述":"vF, S, R, cbM"},{"ID":"12762","标识":"IC4922","M标识":"IC4922","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h59m30s","赤经D(J2000)":"19.991666666666667","赤纬(J2000)":"-40h21m48s","赤纬D(J2000)":"-40.36333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very small, round, suspected","简略描述":"vF, vS, R, susp"},{"ID":"12763","标识":"IC4923","M标识":"IC4923","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h0m57.2s","赤经D(J2000)":"20.015888888888888","赤纬(J2000)":"-52h37m55s","赤纬D(J2000)":"-52.63194444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.9","方位角":"87","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12764","标识":"IC4924","M标识":"IC4924","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"19h59m51s","赤经D(J2000)":"19.997500000000002","赤纬(J2000)":"-41h32m48s","赤纬D(J2000)":"-41.54666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"diffuse (perhaps a defect?)","简略描述":"dif (? defect)"},{"ID":"12765","标识":"IC4925","M标识":"IC4925","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h1m9.9s","赤经D(J2000)":"20.019416666666665","赤纬(J2000)":"-52h52m0s","赤纬D(J2000)":"-52.86666666666667","可见光星等V":"15.6","摄影(蓝光)星等B":"16.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"165","详细描述":"faint, small, very much extended 170°","简略描述":"F, S, vmE 170°"},{"ID":"12766","标识":"IC4926","M标识":"IC4926","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"20h0m12.2s","赤经D(J2000)":"20.00338888888889","赤纬(J2000)":"-38h34m41s","赤纬D(J2000)":"-38.57805555555556","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"1","方位角":"40","详细描述":"most extremely faint, small, a little extended, very difficult, western of 2","简略描述":"eeF, S, lE, v diffic, p of 2"},{"ID":"12767","标识":"IC4927","M标识":"IC4927","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h1m49.4s","赤经D(J2000)":"20.030388888888886","赤纬(J2000)":"-53h55m6s","赤纬D(J2000)":"-53.91833333333333","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"165","详细描述":"faint, small, extended 170°","简略描述":"F, S, E 170°"},{"ID":"12768","标识":"IC4928","M标识":"IC4928","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"南极座","星座(En)":"OCT","赤经(J2000)":"20h10m11.9s","赤经D(J2000)":"20.169972222222224","赤纬(J2000)":"-77h18m33s","赤纬D(J2000)":"-77.30916666666667","可见光星等V":"15.7","摄影(蓝光)星等B":"16.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"24","详细描述":"extremely faint, very small, extremely extended 25°, extremely faint star 1 arcmin to north; suspected","简略描述":"eF, vS, eE 25°, eF * n 1', susp"},{"ID":"12769","标识":"IC4929","M标识":"IC4929","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h6m42.6s","赤经D(J2000)":"20.111833333333333","赤纬(J2000)":"-71h40m52s","赤纬D(J2000)":"-71.68111111111112","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.4","短轴(分)":"0.4","方位角":"19","详细描述":"faint, small, considerably extended 15°","简略描述":"F, S, cE 15°"},{"ID":"12770","标识":"IC4930","M标识":"IC4930","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h2m26s","赤经D(J2000)":"20.040555555555557","赤纬(J2000)":"-54h18m30s","赤纬D(J2000)":"-54.30833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"considerably bright, small, much extended 45°, suspected","简略描述":"cB, S, mE 45°, susp"},{"ID":"12771","标识":"IC4931","M标识":"IC4931","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"20h0m50.1s","赤经D(J2000)":"20.013916666666667","赤纬(J2000)":"-38h34m30s","赤纬D(J2000)":"-38.575","可见光星等V":"11.8","摄影(蓝光)星等B":"13","B-V":"1.2","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2.4","短轴(分)":"2","方位角":"127","详细描述":"most extremely faint, pretty small, round, 8th magnitude star 20 seconds to east, eastern of 2","简略描述":"eeF, pS, R, * 8 f 20s, f of 2"},{"ID":"12772","标识":"IC4932","M标识":"IC4932","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h2m15.5s","赤经D(J2000)":"20.03763888888889","赤纬(J2000)":"-52h50m48s","赤纬D(J2000)":"-52.84666666666667","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"5","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"12773","标识":"IC4933","M标识":"IC4933","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h3m28.8s","赤经D(J2000)":"20.058","赤纬(J2000)":"-54h58m48s","赤纬D(J2000)":"-54.980000000000004","可见光星等V":"12.3","摄影(蓝光)星等B":"12.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.9","短轴(分)":"1.7","方位角":"0","详细描述":"extremely faint, extremely small, 2 branch spiral","简略描述":"eF, eS, 2 branch spir"},{"ID":"12774","标识":"IC4934","M标识":"IC4934","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h7m14.6s","赤经D(J2000)":"20.120722222222224","赤纬(J2000)":"-69h28m49s","赤纬D(J2000)":"-69.48027777777779","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"30","详细描述":"very faint, very small, considerably extended 15°, a little brighter middle; suspected","简略描述":"vF, vS, cE 15°, lbM, susp"},{"ID":"12775","标识":"IC4935","M标识":"IC4935","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h4m34s","赤经D(J2000)":"20.07611111111111","赤纬(J2000)":"-57h35m55s","赤纬D(J2000)":"-57.59861111111111","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.7","短轴(分)":"0.4","方位角":"177","详细描述":"very faint, very small, much extended 5°, star 1 arcmin to southwest; suspected","简略描述":"vF, vS, mE 5°, * 1' sp, susp"},{"ID":"12776","标识":"IC4936","M标识":"IC4936","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h5m52.3s","赤经D(J2000)":"20.09786111111111","赤纬(J2000)":"-61h25m42s","赤纬D(J2000)":"-61.42833333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"10","详细描述":"extremely faint, very small, extremely extended 20°, 2 faint stars to northwest","简略描述":"eF, vS, eE 20°, 2 F st np"},{"ID":"12777","标识":"IC4937","M标识":"IC4937","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h5m17.4s","赤经D(J2000)":"20.088166666666666","赤纬(J2000)":"-56h15m22s","赤纬D(J2000)":"-56.25611111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"3","详细描述":"extremely faint, very small, extremely extended 0°, nuclear; suspected","简略描述":"eF, vS, eE 0°, N, susp"},{"ID":"12778","标识":"IC4938","M标识":"IC4938","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h6m11.6s","赤经D(J2000)":"20.103222222222225","赤纬(J2000)":"-60h12m40s","赤纬D(J2000)":"-60.211111111111116","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"29","详细描述":"a remarkable object, very faint, pretty small, annular, stellar nucleus, very faint star to southeast","简略描述":"! vF, pS, annul, stell N, vF * sf"},{"ID":"12779","标识":"IC4939","M标识":"IC4939","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h7m11.1s","赤经D(J2000)":"20.11975","赤纬(J2000)":"-60h44m18s","赤纬D(J2000)":"-60.73833333333334","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"158","详细描述":"most extremely faint, extremely small, considerably extended 150°, faint star 2 arcmin to south","简略描述":"eeF, eS, cE 150°, F * s 2'"},{"ID":"12780","标识":"IC4940","M标识":"IC4940","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"20h5m43.4s","赤经D(J2000)":"20.095388888888888","赤纬(J2000)":"-44h42m29s","赤纬D(J2000)":"-44.70805555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, extended 100°","简略描述":"F, S, E 100°"},{"ID":"12781","标识":"IC4941","M标识":"IC4941","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h6m58.5s","赤经D(J2000)":"20.11625","赤纬(J2000)":"-53h39m10s","赤纬D(J2000)":"-53.65277777777778","可见光星等V":"15.1","摄影(蓝光)星等B":"15.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"0","详细描述":"faint, small, round, a little brighter middle, very diffuse","简略描述":"F, S, R, lbM, v dif"},{"ID":"12782","标识":"IC4942","M标识":"IC4942","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h6m49.3s","赤经D(J2000)":"20.113694444444445","赤纬(J2000)":"-52h36m37s","赤纬D(J2000)":"-52.61027777777778","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"130","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"12783","标识":"IC4943","M标识":"IC4943","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h6m28.2s","赤经D(J2000)":"20.107833333333335","赤纬(J2000)":"-48h22m33s","赤纬D(J2000)":"-48.37583333333333","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"38","详细描述":"most extremely faint, pretty small, round, faint star to north, very difficult","简略描述":"eeF, pS, R, F * n, v diffic"},{"ID":"12784","标识":"IC4944","M标识":"IC4944","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h7m9.1s","赤经D(J2000)":"20.119194444444446","赤纬(J2000)":"-54h26m48s","赤纬D(J2000)":"-54.446666666666665","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1","短轴(分)":"0.4","方位角":"6","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12785","标识":"IC4945","M标识":"IC4945","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h11m17.1s","赤经D(J2000)":"20.188083333333335","赤纬(J2000)":"-71h0m46s","赤纬D(J2000)":"-71.01277777777777","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"178","详细描述":"faint, small, extended 5°, considerably brighter middle","简略描述":"F, S, E 5°, cbM"},{"ID":"12786","标识":"IC4946","M标识":"IC4946","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"夏普利-艾姆斯5","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"20h23m58s","赤经D(J2000)":"20.399444444444445","赤纬(J2000)":"-43h59m43s","赤纬D(J2000)":"-43.99527777777778","可见光星等V":"11.8","摄影(蓝光)星等B":"12.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.4","短轴(分)":"1","方位角":"68","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"12787","标识":"IC4947","M标识":"IC4947","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h7m31.8s","赤经D(J2000)":"20.1255","赤纬(J2000)":"-53h8m34s","赤纬D(J2000)":"-53.14277777777778","可见光星等V":"13.9","摄影(蓝光)星等B":"15","B-V":"1.1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"84","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"12788","标识":"IC4948","M标识":"IC4948","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBa","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"20h24m27.9s","赤经D(J2000)":"20.40775","赤纬(J2000)":"-43h39m11s","赤纬D(J2000)":"-43.653055555555554","可见光星等V":"10.9","摄影(蓝光)星等B":"11.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"5.6","短轴(分)":"3.9","方位角":"153","详细描述":"very faint, pretty small, round, 2 stars to east, star to northwest","简略描述":"vF, pS, R, 2 st f, * np"},{"ID":"12789","标识":"IC4949","M标识":"IC4949","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h7m19.4s","赤经D(J2000)":"20.122055555555555","赤纬(J2000)":"-48h22m10s","赤纬D(J2000)":"-48.36944444444445","可见光星等V":"11.1","摄影(蓝光)星等B":"12.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3","短轴(分)":"2","方位角":"140","详细描述":"bright, very small, considerably extended","简略描述":"B, vS, cE"},{"ID":"12790","标识":"IC4950","M标识":"IC4950","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h8m27.3s","赤经D(J2000)":"20.140916666666666","赤纬(J2000)":"-56h9m43s","赤纬D(J2000)":"-56.161944444444444","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"39","详细描述":"extremely faint, very small, extremely extended 35°, a little brighter middle","简略描述":"eF, vS, eE 35°, lbM"},{"ID":"12791","标识":"IC4951","M标识":"IC4951","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h9m31.7s","赤经D(J2000)":"20.158805555555553","赤纬(J2000)":"-61h51m1s","赤纬D(J2000)":"-61.85027777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.7","短轴(分)":"0.5","方位角":"176","详细描述":"very faint, very small, extremely extended 170°, very much brighter middle","简略描述":"vF, vS, eE 170°, vmbM"},{"ID":"12792","标识":"IC4952","M标识":"IC4952","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h8m37.6s","赤经D(J2000)":"20.14377777777778","赤纬(J2000)":"-55h27m12s","赤纬D(J2000)":"-55.45333333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"8","详细描述":"faint, very small, considerably extended 10°","简略描述":"F, vS, cE 10°"},{"ID":"12793","标识":"IC4953","M标识":"IC4953","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h10m0s","赤经D(J2000)":"20.166666666666668","赤纬(J2000)":"-62h47m31s","赤纬D(J2000)":"-62.79194444444444","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"69","详细描述":"extremely faint, extremely small, considerably extended 60°, between 2 extremely faint stars","简略描述":"eF, eS, cE 60°, bet 2 eF st"},{"ID":"12794","标识":"IC4954","M标识":"IC4954","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"20h4m45s","赤经D(J2000)":"20.079166666666666","赤纬(J2000)":"+29h15m12s","赤纬D(J2000)":"29.253333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"3","短轴(分)":"3","方位角":"","详细描述":"double nebulous star, irregular figure, 11th magnitude star close","简略描述":"D neb *, iF, * 11 close"},{"ID":"12795","标识":"IC4955","M标识":"IC4955","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"狐狸座","星座(En)":"VUL","赤经(J2000)":"20h4m53s","赤经D(J2000)":"20.08138888888889","赤纬(J2000)":"+29h11m24s","赤纬D(J2000)":"29.19","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"5","短轴(分)":"5","方位角":"","详细描述":"fine nebulous 12th magnitude star","简略描述":"Fine neb * 12"},{"ID":"12796","标识":"IC4956","M标识":"IC4956","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h11m31.1s","赤经D(J2000)":"20.191972222222223","赤纬(J2000)":"-45h35m35s","赤纬D(J2000)":"-45.59305555555556","可见光星等V":"12.4","摄影(蓝光)星等B":"13.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.7","短轴(分)":"1.6","方位角":"14","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"12797","标识":"IC4957","M标识":"IC4957","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h9m35.7s","赤经D(J2000)":"20.159916666666664","赤纬(J2000)":"-55h42m32s","赤纬D(J2000)":"-55.70888888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"1","详细描述":"brighter middle, magnitude 14","简略描述":"bM, mag 14"},{"ID":"12798","标识":"IC4958","M标识":"IC4958","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h15m35.2s","赤经D(J2000)":"20.259777777777778","赤纬(J2000)":"-72h42m41s","赤纬D(J2000)":"-72.71138888888889","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, brighter middle","简略描述":"eF, bM"},{"ID":"12799","标识":"IC4959","M标识":"IC4959","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h10m57s","赤经D(J2000)":"20.1825","赤纬(J2000)":"-53h5m24s","赤纬D(J2000)":"-53.09","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"hazy star","简略描述":"Hazy star"},{"ID":"12800","标识":"IC4960","M标识":"IC4960","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h15m24s","赤经D(J2000)":"20.256666666666668","赤纬(J2000)":"-70h32m13s","赤纬D(J2000)":"-70.53694444444444","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"166","详细描述":"extremely faint, extremely small, brighter middle","简略描述":"eF, eS, bM"},{"ID":"12801","标识":"IC4961","M标识":"IC4961","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h11m28.7s","赤经D(J2000)":"20.191305555555555","赤纬(J2000)":"-53h7m32s","赤纬D(J2000)":"-53.12555555555556","可见光星等V":"14.2","摄影(蓝光)星等B":"14.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"90","详细描述":"faint, pretty small, much extended 90°, diffuse","简略描述":"F, pS, mE 90°, dif"},{"ID":"12802","标识":"IC4962","M标识":"IC4962","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h16m42.1s","赤经D(J2000)":"20.27836111111111","赤纬(J2000)":"-71h7m48s","赤纬D(J2000)":"-71.13","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"155","详细描述":"faint, small, extremely extended 160°, very much brighter middle","简略描述":"F, S, eE 160°, vmbM"},{"ID":"12803","标识":"IC4963","M标识":"IC4963","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h12m5.5s","赤经D(J2000)":"20.201527777777777","赤纬(J2000)":"-55h14m44s","赤纬D(J2000)":"-55.245555555555555","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.5","方位角":"160","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"12804","标识":"IC4964","M标识":"IC4964","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h17m23.9s","赤经D(J2000)":"20.289972222222225","赤纬(J2000)":"-73h53m7s","赤纬D(J2000)":"-73.88527777777779","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"162","详细描述":"faint, small, considerably brighter middle","简略描述":"F, S, cbM"},{"ID":"12805","标识":"IC4965","M标识":"IC4965","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h12m27.3s","赤经D(J2000)":"20.207583333333332","赤纬(J2000)":"-56h49m34s","赤纬D(J2000)":"-56.82611111111112","可见光星等V":"13.7","摄影(蓝光)星等B":"14.8","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"12806","标识":"IC4966","M标识":"IC4966","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h12m16.4s","赤经D(J2000)":"20.204555555555554","赤纬(J2000)":"-53h37m11s","赤纬D(J2000)":"-53.61972222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, very small, extended 40°","简略描述":"F, vS, E 40°"},{"ID":"12807","标识":"IC4967","M标识":"IC4967","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h16m23s","赤经D(J2000)":"20.273055555555555","赤纬(J2000)":"-70h33m51s","赤纬D(J2000)":"-70.56416666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"90","详细描述":"very faint, brighter middle","简略描述":"vF, bM"},{"ID":"12808","标识":"IC4968","M标识":"IC4968","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h14m50s","赤经D(J2000)":"20.247222222222224","赤纬(J2000)":"-64h47m54s","赤纬D(J2000)":"-64.79833333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"44","详细描述":"very faint, small, bright star 3 arcmin to southeast","简略描述":"vF, S, B * sf 3'"},{"ID":"12809","标识":"IC4969","M标识":"IC4969","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h12m56.1s","赤经D(J2000)":"20.21558333333333","赤纬(J2000)":"-53h55m14s","赤纬D(J2000)":"-53.92055555555555","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"12810","标识":"IC4970","M标识":"IC4970","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h16m57.4s","赤经D(J2000)":"20.28261111111111","赤纬(J2000)":"-70h44m58s","赤纬D(J2000)":"-70.74944444444445","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.7","短轴(分)":"0.2","方位角":"6","详细描述":"brighter middle, near (NGC) 6872","简略描述":"bM, nr 6872"},{"ID":"12811","标识":"IC4971","M标识":"IC4971","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h17m3s","赤经D(J2000)":"20.284166666666668","赤纬(J2000)":"-70h37m13s","赤纬D(J2000)":"-70.62027777777777","可见光星等V":"15.3","摄影(蓝光)星等B":"16.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"4","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"12812","标识":"IC4972","M标识":"IC4972","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h17m43s","赤经D(J2000)":"20.29527777777778","赤纬(J2000)":"-70h54m49s","赤纬D(J2000)":"-70.91361111111112","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.2","方位角":"15","详细描述":"extremely faint, very small, extremely extended 15°","简略描述":"eF, vS, eE 15°"},{"ID":"12813","标识":"IC4973","M标识":"IC4973","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h14m34.1s","赤经D(J2000)":"20.242805555555556","赤纬(J2000)":"-58h22m18s","赤纬D(J2000)":"-58.37166666666667","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"107","详细描述":"most extremely faint, very small, round","简略描述":"eeF, vS, R"},{"ID":"12814","标识":"IC4974","M标识":"IC4974","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h15m26.2s","赤经D(J2000)":"20.257277777777777","赤纬(J2000)":"-61h51m26s","赤纬D(J2000)":"-61.85722222222223","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, extremely small, round, brighter middle, star 1 arcmin to southwest","简略描述":"eF, eS, R, bM, * sp 1'"},{"ID":"12815","标识":"IC4975","M标识":"IC4975","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h14m2.9s","赤经D(J2000)":"20.23413888888889","赤纬(J2000)":"-52h43m20s","赤纬D(J2000)":"-52.72222222222222","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"1","方位角":"","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"12816","标识":"IC4976","M标识":"IC4976","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h15m41.3s","赤经D(J2000)":"20.26147222222222","赤纬(J2000)":"-61h52m30s","赤纬D(J2000)":"-61.875","可见光星等V":"14.7","摄影(蓝光)星等B":"15.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"64","详细描述":"extremely faint, extremely small, round, brighter middle, star 3 arcmin to northwest","简略描述":"eF, eS, R, bM, * 3' np"},{"ID":"12817","标识":"IC4977","M标识":"IC4977","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h11m53.8s","赤经D(J2000)":"20.19827777777778","赤纬(J2000)":"-21h38m15s","赤纬D(J2000)":"-21.6375","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"stellar, close to 13th magnitude star","简略描述":"Stellar, close to * 13"},{"ID":"12818","标识":"IC4978","M标识":"IC4978","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h14m37.8s","赤经D(J2000)":"20.243833333333335","赤纬(J2000)":"-54h25m18s","赤纬D(J2000)":"-54.42166666666667","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"89","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"12819","标识":"IC4979","M标识":"IC4979","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h14m41.9s","赤经D(J2000)":"20.244972222222223","赤纬(J2000)":"-53h27m31s","赤纬D(J2000)":"-53.45861111111111","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"4","详细描述":"very faint, small, round, diffuse","简略描述":"vF, S, R, dif"},{"ID":"12820","标识":"IC4980","M标识":"IC4980","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h15m28.9s","赤经D(J2000)":"20.258027777777777","赤纬(J2000)":"-57h54m45s","赤纬D(J2000)":"-57.9125","可见光星等V":"13.1","摄影(蓝光)星等B":"14","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"122","详细描述":"very faint, small, a little extended 130°, star 2 arcmin to south","简略描述":"vF, S, lE 130°, * 2' s"},{"ID":"12821","标识":"IC4981","M标识":"IC4981","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"I\/P","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h19m39.1s","赤经D(J2000)":"20.327527777777778","赤纬(J2000)":"-70h50m54s","赤纬D(J2000)":"-70.84833333333333","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"11.6","长轴(分)":"1","短轴(分)":"0.3","方位角":"135","详细描述":"extremely faint, extremely small, star near","简略描述":"eF, eS, * nr"},{"ID":"12822","标识":"IC4982","M标识":"IC4982","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"P","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h20m21s","赤经D(J2000)":"20.339166666666664","赤纬(J2000)":"-71h0m25s","赤纬D(J2000)":"-71.00694444444444","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"49","详细描述":"very faint, brighter middle","简略描述":"vF, bM"},{"ID":"12823","标识":"IC4983","M标识":"IC4983","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h16m5.5s","赤经D(J2000)":"20.268194444444443","赤纬(J2000)":"-52h5m14s","赤纬D(J2000)":"-52.08722222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.9","方位角":"42","详细描述":"very faint, considerably small, round, a little brighter middle, diffuse","简略描述":"vF, cS, R, lbM, dif"},{"ID":"12824","标识":"IC4984","M标识":"IC4984","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h16m17.5s","赤经D(J2000)":"20.271527777777777","赤纬(J2000)":"-52h42m12s","赤纬D(J2000)":"-52.70333333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"116","详细描述":"very faint, small, round, diffuse, (NGC) 6887 to east","简略描述":"vF, S, R, dif, 6887 f"},{"ID":"12825","标识":"IC4985","M标识":"IC4985","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h20m44.1s","赤经D(J2000)":"20.345583333333334","赤纬(J2000)":"-70h59m12s","赤纬D(J2000)":"-70.98666666666666","可见光星等V":"13.9","摄影(蓝光)星等B":"14.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"66","详细描述":"very faint, brighter middle","简略描述":"vF, bM"},{"ID":"12826","标识":"IC4986","M标识":"IC4986","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h17m11.4s","赤经D(J2000)":"20.2865","赤纬(J2000)":"-55h2m9s","赤纬D(J2000)":"-55.03583333333333","可见光星等V":"13.6","摄影(蓝光)星等B":"14.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2","短轴(分)":"0.9","方位角":"20","详细描述":"most extremely faint, small, considerably extended 0°, between 2 faint stars","简略描述":"eeF, S, cE 0°, bet 2 F st"},{"ID":"12827","标识":"IC4987","M标识":"IC4987","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h17m19.3s","赤经D(J2000)":"20.288694444444445","赤纬(J2000)":"-52h16m46s","赤纬D(J2000)":"-52.279444444444444","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1","短轴(分)":"0.8","方位角":"57","详细描述":"faint, very small, round, a little brighter middle","简略描述":"F, vS, R, lbM"},{"ID":"12828","标识":"IC4988","M标识":"IC4988","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h21m46s","赤经D(J2000)":"20.36277777777778","赤纬(J2000)":"-69h23m27s","赤纬D(J2000)":"-69.39083333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"hazy patch, perhaps a star?; suspected","简略描述":"Hazy patch, st ?, susp"},{"ID":"12829","标识":"IC4989","M标识":"IC4989","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h19m23.7s","赤经D(J2000)":"20.323249999999998","赤纬(J2000)":"-58h33m6s","赤纬D(J2000)":"-58.55166666666666","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"154","详细描述":"considerably small, much extended 175°, spiral, faint star in middle","简略描述":"cS, mE 175°, spir, F * M"},{"ID":"12830","标识":"IC4990","M标识":"IC4990","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h21m25.4s","赤经D(J2000)":"20.357055555555558","赤纬(J2000)":"-66h53m26s","赤纬D(J2000)":"-66.89055555555557","可见光星等V":"15","摄影(蓝光)星等B":"15.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"23","详细描述":"extremely faint, extremely small, considerably extended 15°, brighter middle, suspected","简略描述":"eF, eS, cE 15°, bM, susp"},{"ID":"12831","标识":"IC4991","M标识":"IC4991","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"20h17m45.7s","赤经D(J2000)":"20.29602777777778","赤纬(J2000)":"-41h34m55s","赤纬D(J2000)":"-41.581944444444446","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, considerably small, round","简略描述":"vF, cS, R"},{"ID":"12832","标识":"IC4992","M标识":"IC4992","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h23m27s","赤经D(J2000)":"20.390833333333333","赤纬(J2000)":"-71h33m55s","赤纬D(J2000)":"-71.56527777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.3","短轴(分)":"0.2","方位角":"58","详细描述":"very faint, small, extremely extended 65°, 9th magnitude star 2 arcmin to northeast","简略描述":"vF, S, eE 65°, * 9 nf 2'"},{"ID":"12833","标识":"IC4993","M标识":"IC4993","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h21m56.3s","赤经D(J2000)":"20.365638888888892","赤纬(J2000)":"-66h59m7s","赤纬D(J2000)":"-66.98527777777778","可见光星等V":"15.1","摄影(蓝光)星等B":"15.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, very small, round, brighter middle, suspected","简略描述":"eF, vS, R, bM, susp"},{"ID":"12834","标识":"IC4994","M标识":"IC4994","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h19m44.3s","赤经D(J2000)":"20.328972222222223","赤纬(J2000)":"-53h26m49s","赤纬D(J2000)":"-53.44694444444444","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"12835","标识":"IC4995","M标识":"IC4995","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h19m59s","赤经D(J2000)":"20.333055555555557","赤纬(J2000)":"-52h37m18s","赤纬D(J2000)":"-52.62166666666667","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"153","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12836","标识":"IC4996","M标识":"IC4996","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"天鹅座P星团","类型":"OCL","含重复类型":"OCL","形态":"II3p","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h16m31.7s","赤经D(J2000)":"20.27547222222222","赤纬(J2000)":"+37h38m35s","赤纬D(J2000)":"37.643055555555556","可见光星等V":"7.3","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"","方位角":"","详细描述":"cluster, with stars from 8th to 13th magnitude","简略描述":"Cl, st 8...13 (M.N., lxiv.)"},{"ID":"12837","标识":"IC4997","M标识":"IC4997","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天箭座","星座(En)":"SGE","赤经(J2000)":"20h20m8.8s","赤经D(J2000)":"20.335777777777775","赤纬(J2000)":"+16h43m56s","赤纬D(J2000)":"16.73222222222222","可见光星等V":"10.5","摄影(蓝光)星等B":"11.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.22","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"12838","标识":"IC4998","M标识":"IC4998","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"20h22m10.6s","赤经D(J2000)":"20.369611111111112","赤纬(J2000)":"-38h18m31s","赤纬D(J2000)":"-38.308611111111105","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"105","详细描述":"extremely faint, pretty small, round, between two 8.5 magnitude stars to southwest and northeast","简略描述":"eF, pS, R, bet 2 st 8.5 sp, nf"},{"ID":"12839","标识":"IC4999","M标识":"IC4999","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h23m56.3s","赤经D(J2000)":"20.398972222222223","赤纬(J2000)":"-26h0m53s","赤纬D(J2000)":"-26.014722222222222","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"95","详细描述":"very faint, pretty large, round, among stars","简略描述":"vF, pL, R, am st"},{"ID":"12840","标识":"IC5000","M标识":"IC5000","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h22m21.6s","赤经D(J2000)":"20.372666666666667","赤纬(J2000)":"+6h25m47s","赤纬D(J2000)":"6.429722222222223","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"63","详细描述":"pretty small, extremely faint star involved","简略描述":"pS, eF st inv"},{"ID":"12841","标识":"IC5001","M标识":"IC5001","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h26m20.2s","赤经D(J2000)":"20.438944444444445","赤纬(J2000)":"-54h46m28s","赤纬D(J2000)":"-54.77444444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"15.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"5","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"12842","标识":"IC5002","M标识":"IC5002","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"望远镜座","星座(En)":"TEL","赤经(J2000)":"20h26m40s","赤经D(J2000)":"20.444444444444446","赤纬(J2000)":"-54h47m57s","赤纬D(J2000)":"-54.799166666666665","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"92","详细描述":"brighter middle, magnitude 13","简略描述":"bM, magn 13"},{"ID":"12843","标识":"IC5003","M标识":"IC5003","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h43m14s","赤经D(J2000)":"20.720555555555553","赤纬(J2000)":"-29h51m7s","赤纬D(J2000)":"-29.851944444444445","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.1","短轴(分)":"0.6","方位角":"156","详细描述":"very faint, considerably small, round, in line with 2 stars to southeast","简略描述":"vF, cS, R, 2 st sf in line"},{"ID":"12844","标识":"IC5004","M标识":"IC5004","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBb","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h31m39s","赤经D(J2000)":"20.5275","赤纬(J2000)":"-30h49m55s","赤纬D(J2000)":"-30.831944444444446","可见光星等V":"12","摄影(蓝光)星等B":"12.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.6","短轴(分)":"1.3","方位角":"78","详细描述":"extremely faint, pretty small, a little extended, 2 stars to south","简略描述":"eF, pS, lE, 2 st s"},{"ID":"12845","标识":"IC5005","M标识":"IC5005","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"20h25m20s","赤经D(J2000)":"20.422222222222224","赤纬(J2000)":"-25h49m44s","赤纬D(J2000)":"-25.828888888888887","可见光星等V":"12.7","摄影(蓝光)星等B":"13.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.9","短轴(分)":"1.6","方位角":"67","详细描述":"pretty small, round, very gradually brighter middle, faint star close to northwest","简略描述":"pS, R, vgbM, F * close np"},{"ID":"12846","标识":"IC5006","M标识":"IC5006","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"天鹰座","星座(En)":"AQL","赤经(J2000)":"20h23m47s","赤经D(J2000)":"20.39638888888889","赤纬(J2000)":"+6h26m56s","赤纬D(J2000)":"6.448888888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"14th magnitude star in faint, very small, round nebula","简略描述":"* 14 in F, vS, R neb"},{"ID":"12847","标识":"IC5007","M标识":"IC5007","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBcd","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h43m34.3s","赤经D(J2000)":"20.72619444444444","赤纬(J2000)":"-29h42m11s","赤纬D(J2000)":"-29.703055555555554","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"31","详细描述":"most extremely faint, considerably large, round","简略描述":"eeF, cL, R"},{"ID":"12848","标识":"IC5008","M标识":"IC5008","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h32m44.7s","赤经D(J2000)":"20.54575","赤纬(J2000)":"-72h41m40s","赤纬D(J2000)":"-72.69444444444444","可见光星等V":"14.9","摄影(蓝光)星等B":"15.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"79","详细描述":"extremely faint, very small, a little extended 90°, a little brighter middle","简略描述":"eF, vS, lE 90°, lbM"},{"ID":"12849","标识":"IC5009","M标识":"IC5009","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h32m34.4s","赤经D(J2000)":"20.54288888888889","赤纬(J2000)":"-72h10m3s","赤纬D(J2000)":"-72.1675","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"90","详细描述":"very faint, very small, brighter middle","简略描述":"vF, vS, bM"},{"ID":"12850","标识":"IC5010","M标识":"IC5010","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h30m26.5s","赤经D(J2000)":"20.507361111111113","赤纬(J2000)":"-66h5m51s","赤纬D(J2000)":"-66.0975","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"0","详细描述":"very faint, very small, considerably extended 20°, much brighter middle","简略描述":"vF, vS, cE 20°, mbM"},{"ID":"12851","标识":"IC5011","M标识":"IC5011","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h28m33.8s","赤经D(J2000)":"20.476055555555554","赤纬(J2000)":"-36h1m38s","赤纬D(J2000)":"-36.02722222222222","可见光星等V":"11.7","摄影(蓝光)星等B":"12.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"2.4","短轴(分)":"1.3","方位角":"19","详细描述":"pretty bright, very small, very much extended","简略描述":"pB, vS, vmE"},{"ID":"12852","标识":"IC5012","M标识":"IC5012","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h29m32s","赤经D(J2000)":"20.492222222222225","赤纬(J2000)":"-56h44m36s","赤纬D(J2000)":"-56.74333333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"70","详细描述":"pretty small, extended 225°, a little brighter middle","简略描述":"pS, E 225°, lbM"},{"ID":"12853","标识":"IC5013","M标识":"IC5013","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E1","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h28m34.9s","赤经D(J2000)":"20.47636111111111","赤纬(J2000)":"-36h2m33s","赤纬D(J2000)":"-36.0425","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"172","详细描述":"pretty bright, very small, very much extended","简略描述":"eS, vmE ns"},{"ID":"12854","标识":"IC5014","M标识":"IC5014","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h35m15.6s","赤经D(J2000)":"20.587666666666667","赤纬(J2000)":"-73h27m9s","赤纬D(J2000)":"-73.4525","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, brighter middle, between 2 faint stars","简略描述":"F, S, bM, bet 2 F st"},{"ID":"12855","标识":"IC5015","M标识":"IC5015","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h28m34.5s","赤经D(J2000)":"20.476249999999997","赤纬(J2000)":"-31h42m5s","赤纬D(J2000)":"-31.70138888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty small, round, nearly between 2 stars","简略描述":"pB, pS, R, nearly bet 2 st"},{"ID":"12856","标识":"IC5016","M标识":"IC5016","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB?","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h35m37.3s","赤经D(J2000)":"20.593694444444445","赤纬(J2000)":"-72h54m41s","赤纬D(J2000)":"-72.9113888888889","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"most extremely faint, extremely small, 11th magnitude star 1 arcmin to southwest","简略描述":"eeF, eS, * 11 sp 1'"},{"ID":"12857","标识":"IC5017","M标识":"IC5017","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0 R","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h32m3.9s","赤经D(J2000)":"20.53441666666667","赤纬(J2000)":"-57h35m14s","赤纬D(J2000)":"-57.58722222222222","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1","短轴(分)":"0.6","方位角":"5","详细描述":"brighter middle, magnitude 14.5","简略描述":"bM, magn 14.5"},{"ID":"12858","标识":"IC5018","M标识":"IC5018","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"人马座","星座(En)":"SGR","赤经(J2000)":"20h22m10.6s","赤经D(J2000)":"20.369611111111112","赤纬(J2000)":"-38h18m31s","赤纬D(J2000)":"-38.308611111111105","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"105","详细描述":"extremely faint, pretty small, round, between two 8.5 magnitude stars to southwest and northeast","简略描述":"eF, pS, R, bet 2 st 8.5 sp, nf"},{"ID":"12859","标识":"IC5019","M标识":"IC5019","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h30m52s","赤经D(J2000)":"20.514444444444443","赤纬(J2000)":"-36h19m18s","赤纬D(J2000)":"-36.32166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, considerably small, round","简略描述":"vF, cS, R"},{"ID":"12860","标识":"IC5020","M标识":"IC5020","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h30m38.4s","赤经D(J2000)":"20.510666666666665","赤纬(J2000)":"-33h29m8s","赤纬D(J2000)":"-33.48555555555556","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"2.9","短轴(分)":"2","方位角":"153","详细描述":"pretty faint, pretty small, a little extended","简略描述":"pF, pS, iE"},{"ID":"12861","标识":"IC5021","M标识":"IC5021","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S\/P","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h33m34.3s","赤经D(J2000)":"20.559527777777777","赤纬(J2000)":"-54h31m17s","赤纬D(J2000)":"-54.521388888888886","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"2","详细描述":"very small, round disc, magnitude 14","简略描述":"vS, R disc, magn 14"},{"ID":"12862","标识":"IC5022","M标识":"IC5022","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBR","星座(Zh)":"南极座","星座(En)":"OCT","赤经(J2000)":"20h41m6.3s","赤经D(J2000)":"20.685083333333335","赤纬(J2000)":"-76h26m59s","赤纬D(J2000)":"-76.44972222222222","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"142","详细描述":"extremely faint, small, round, considerably brighter middle, suspected","简略描述":"eF, S, R, cbM, susp"},{"ID":"12863","标识":"IC5023","M标识":"IC5023","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h38m10s","赤经D(J2000)":"20.63611111111111","赤纬(J2000)":"-67h11m4s","赤纬D(J2000)":"-67.18444444444445","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"118","详细描述":"faint, small, considerably extended 130°","简略描述":"F, S, cE 130°"},{"ID":"12864","标识":"IC5024","M标识":"IC5024","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h40m9.5s","赤经D(J2000)":"20.669305555555557","赤纬(J2000)":"-71h6m30s","赤纬D(J2000)":"-71.10833333333333","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.8","方位角":"101","详细描述":"extremely faint, small, much extended 15°","简略描述":"eF, S, mE 15°"},{"ID":"12865","标识":"IC5025","M标识":"IC5025","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"南极座","星座(En)":"OCT","赤经(J2000)":"20h44m59.6s","赤经D(J2000)":"20.74988888888889","赤纬(J2000)":"-76h59m4s","赤纬D(J2000)":"-76.98444444444445","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.5","短轴(分)":"0.3","方位角":"108","详细描述":"very faint, very small, considerably extended 125°, brighter middle, suspected","简略描述":"vF, vS, cE 125°, bM, susp"},{"ID":"12866","标识":"IC5026","M标识":"IC5026","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Scd","星座(Zh)":"南极座","星座(En)":"OCT","赤经(J2000)":"20h48m27.6s","赤经D(J2000)":"20.807666666666666","赤纬(J2000)":"-78h4m8s","赤纬D(J2000)":"-78.06888888888888","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"2.3","短轴(分)":"0.3","方位角":"76","详细描述":"extremely faint, very small, much extended 70°, a little brighter middle, suspected","简略描述":"eF, vS, mE 70°, lbM, susp"},{"ID":"12867","标识":"IC5027","M标识":"IC5027","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h41m8.9s","赤经D(J2000)":"20.685805555555557","赤纬(J2000)":"-55h28m21s","赤纬D(J2000)":"-55.472500000000004","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"round, magnitude 15","简略描述":"R, magn 15"},{"ID":"12868","标识":"IC5028","M标识":"IC5028","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IB","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h43m22.2s","赤经D(J2000)":"20.72283333333333","赤纬(J2000)":"-65h38m49s","赤纬D(J2000)":"-65.64694444444446","可见光星等V":"14.6","摄影(蓝光)星等B":"15.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.6","长轴(分)":"1.2","短轴(分)":"1","方位角":"","详细描述":"very faint, diffuse, 10th magnitude star 2 arcmin to south, suspected","简略描述":"vF, dif, * 10 s 2', susp"},{"ID":"12869","标识":"IC5029","M标识":"IC5029","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h43m14s","赤经D(J2000)":"20.720555555555553","赤纬(J2000)":"-29h51m7s","赤纬D(J2000)":"-29.851944444444445","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.1","短轴(分)":"0.6","方位角":"156","详细描述":"very faint, considerably small, round, in line with 2 stars to southeast","简略描述":"eeF, eS, mE, F * sf, np of 2"},{"ID":"12870","标识":"IC5030","M标识":"IC5030","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h43m34.3s","赤经D(J2000)":"20.72619444444444","赤纬(J2000)":"-29h42m11s","赤纬D(J2000)":"-29.703055555555554","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"31","详细描述":"most extremely faint, considerably large, round","简略描述":"eeF, vS, mE, v dif, sf of 2"},{"ID":"12871","标识":"IC5031","M标识":"IC5031","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h45m20.2s","赤经D(J2000)":"20.75561111111111","赤纬(J2000)":"-67h32m21s","赤纬D(J2000)":"-67.53916666666666","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"31","详细描述":"extremely faint, extremely small, round, suspected","简略描述":"eF, eS, R, susp"},{"ID":"12872","标识":"IC5032","M标识":"IC5032","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h45m22.1s","赤经D(J2000)":"20.756138888888888","赤纬(J2000)":"-67h33m5s","赤纬D(J2000)":"-67.55138888888888","可见光星等V":"12.9","摄影(蓝光)星等B":"13.4","B-V":"0.5","表面亮度(mag\/arcmin2)":"11.4","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"156","详细描述":"extremely faint, extremely small, round, suspected","简略描述":"eF, eS, R, susp"},{"ID":"12873","标识":"IC5033","M标识":"IC5033","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h43m55.1s","赤经D(J2000)":"20.731972222222222","赤纬(J2000)":"-57h20m4s","赤纬D(J2000)":"-57.33444444444444","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.5","方位角":"45","详细描述":"very small, round, a little brighter middle, magnitude 15","简略描述":"vS, R, lbM, magn 15"},{"ID":"12874","标识":"IC5034","M标识":"IC5034","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h43m41.7s","赤经D(J2000)":"20.72825","赤纬(J2000)":"-57h1m48s","赤纬D(J2000)":"-57.03","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.5","短轴(分)":"0.7","方位角":"22","详细描述":"brighter middle, magnitude 14.5","简略描述":"bM, magn 14.5"},{"ID":"12875","标识":"IC5035","M标识":"IC5035","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h44m14.5s","赤经D(J2000)":"20.737361111111113","赤纬(J2000)":"-57h7m39s","赤纬D(J2000)":"-57.1275","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"128","详细描述":"very small, round, a little brighter middle, magnitude 15","简略描述":"vS, R, lbM, magn 15"},{"ID":"12876","标识":"IC5036","M标识":"IC5036","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h44m37.4s","赤经D(J2000)":"20.743722222222225","赤纬(J2000)":"-57h37m35s","赤纬D(J2000)":"-57.62638888888889","可见光星等V":"15.5","摄影(蓝光)星等B":"16.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"118","详细描述":"faint, pretty small, much extended 125°","简略描述":"F, pS, mE 125°"},{"ID":"12877","标识":"IC5037","M标识":"IC5037","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h45m39.3s","赤经D(J2000)":"20.760916666666667","赤纬(J2000)":"-58h26m59s","赤纬D(J2000)":"-58.44972222222222","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.2","方位角":"159","详细描述":"faint, pretty small, much extended 170°","简略描述":"F, pS, mE 170°"},{"ID":"12878","标识":"IC5038","M标识":"IC5038","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h46m51.3s","赤经D(J2000)":"20.780916666666666","赤纬(J2000)":"-65h1m0s","赤纬D(J2000)":"-65.01666666666667","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"0.7","方位角":"75","详细描述":"very faint, very small, round, almost stellar","简略描述":"vF, vS, R, alm stell"},{"ID":"12879","标识":"IC5039","M标识":"IC5039","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h43m14s","赤经D(J2000)":"20.720555555555553","赤纬(J2000)":"-29h51m7s","赤纬D(J2000)":"-29.851944444444445","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.1","短轴(分)":"0.6","方位角":"156","详细描述":"very faint, considerably small, round, in line with 2 stars to southeast","简略描述":"eeF, pS, vmE, sp of 2"},{"ID":"12880","标识":"IC5040","M标识":"IC5040","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"南极座","星座(En)":"OCT","赤经(J2000)":"20h52m19.5s","赤经D(J2000)":"20.872083333333332","赤纬(J2000)":"-76h41m11s","赤纬D(J2000)":"-76.6863888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"6","详细描述":"considerably bright, small, round, suspected","简略描述":"cB, S, R, susp"},{"ID":"12881","标识":"IC5041","M标识":"IC5041","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBcd","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h43m34.3s","赤经D(J2000)":"20.72619444444444","赤纬(J2000)":"-29h42m11s","赤纬D(J2000)":"-29.703055555555554","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"31","详细描述":"most extremely faint, considerably large, round","简略描述":"eeF, pS, mE, v diffic, nf of 2"},{"ID":"12882","标识":"IC5042","M标识":"IC5042","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h47m46.1s","赤经D(J2000)":"20.79613888888889","赤纬(J2000)":"-65h5m1s","赤纬D(J2000)":"-65.08361111111111","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"43","详细描述":"very faint, very small, round, almost stellar","简略描述":"vF, vS, R, alm stell"},{"ID":"12883","标识":"IC5043","M标识":"IC5043","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h46m38.4s","赤经D(J2000)":"20.77733333333333","赤纬(J2000)":"-56h59m1s","赤纬D(J2000)":"-56.98361111111111","可见光星等V":"15.6","摄影(蓝光)星等B":"16.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"20","详细描述":"faint, small, extended 210°","简略描述":"F, S, E 210°"},{"ID":"12884","标识":"IC5044","M标识":"IC5044","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h50m41.4s","赤经D(J2000)":"20.844833333333334","赤纬(J2000)":"-71h53m56s","赤纬D(J2000)":"-71.89888888888889","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"90","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"12885","标识":"IC5045","M标识":"IC5045","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h50m50.2s","赤经D(J2000)":"20.847277777777776","赤纬(J2000)":"-71h54m35s","赤纬D(J2000)":"-71.90972222222223","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"75","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"12886","标识":"IC5046","M标识":"IC5046","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h43m14s","赤经D(J2000)":"20.720555555555553","赤纬(J2000)":"-29h51m7s","赤纬D(J2000)":"-29.851944444444445","可见光星等V":"12.7","摄影(蓝光)星等B":"13.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.1","短轴(分)":"0.6","方位角":"156","详细描述":"very faint, considerably small, round, in line with 2 stars to southeast","简略描述":"eF, pS, mE, 2 vF st sf, sp of 2"},{"ID":"12887","标识":"IC5047","M标识":"IC5047","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h43m34.3s","赤经D(J2000)":"20.72619444444444","赤纬(J2000)":"-29h42m11s","赤纬D(J2000)":"-29.703055555555554","可见光星等V":"12.5","摄影(蓝光)星等B":"13.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.7","短轴(分)":"1.2","方位角":"31","详细描述":"most extremely faint, considerably large, round","简略描述":"eeF, pS, mE, v diffic, nf of 2"},{"ID":"12888","标识":"IC5048","M标识":"IC5048","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h51m40.6s","赤经D(J2000)":"20.86127777777778","赤纬(J2000)":"-71h48m2s","赤纬D(J2000)":"-71.80055555555555","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"12889","标识":"IC5049","M标识":"IC5049","拓展名":"A","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h47m23.8s","赤经D(J2000)":"20.789944444444448","赤纬(J2000)":"-38h25m5s","赤纬D(J2000)":"-38.418055555555554","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.8","方位角":"","详细描述":"most extremely faint, pretty small, round","简略描述":"eeF, pS, R"},{"ID":"12890","标识":"IC5050","M标识":"IC5050","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h45m15s","赤经D(J2000)":"20.754166666666666","赤纬(J2000)":"-5h37m23s","赤纬D(J2000)":"-5.623055555555556","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"75","详细描述":"faint, considerably small, diffuse, very small elongated nucleus","简略描述":"F, cS, dif, vS E N"},{"ID":"12891","标识":"IC5051","M标识":"IC5051","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h52m22.9s","赤经D(J2000)":"20.87302777777778","赤纬(J2000)":"-71h47m20s","赤纬D(J2000)":"-71.78888888888889","可见光星等V":"14.9","摄影(蓝光)星等B":"15.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"45","详细描述":"extremely faint, very small","简略描述":"eF, vS"},{"ID":"12892","标识":"IC5052","M标识":"IC5052","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h52m7.1s","赤经D(J2000)":"20.86863888888889","赤纬(J2000)":"-69h12m19s","赤纬D(J2000)":"-69.20527777777778","可见光星等V":"10.5","摄影(蓝光)星等B":"11.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"5.9","短轴(分)":"0.9","方位角":"143","详细描述":"faint, large, extremely extended 140°, 4 arcmin long","简略描述":"F, L, eE 140°, 4' l"},{"ID":"12893","标识":"IC5053","M标识":"IC5053","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h53m36s","赤经D(J2000)":"20.893333333333334","赤纬(J2000)":"-71h8m30s","赤纬D(J2000)":"-71.14166666666668","可见光星等V":"12.7","摄影(蓝光)星等B":"13.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.6","短轴(分)":"0.6","方位角":"55","详细描述":"considerably faint, very small, brighter middle, 11th magnitude star 2 arcmin north","简略描述":"cF, vS, bM, * 11 n 2'"},{"ID":"12894","标识":"IC5054","M标识":"IC5054","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h53m45.2s","赤经D(J2000)":"20.895888888888887","赤纬(J2000)":"-71h1m29s","赤纬D(J2000)":"-71.02472222222222","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2","短轴(分)":"0.4","方位角":"5","详细描述":"considerably faint, very small, between 2 faint stars","简略描述":"cF, vS, bet 2 F st"},{"ID":"12895","标识":"IC5055","M标识":"IC5055","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h52m57.6s","赤经D(J2000)":"20.882666666666665","赤纬(J2000)":"-68h26m41s","赤纬D(J2000)":"-68.44472222222223","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"20","详细描述":"very faint, brighter middle, suspected","简略描述":"vF, bM, susp"},{"ID":"12896","标识":"IC5056","M标识":"IC5056","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h49m0s","赤经D(J2000)":"20.816666666666666","赤纬(J2000)":"-39h10m54s","赤纬D(J2000)":"-39.181666666666665","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, considerably large, extremely extended 150°","简略描述":"F, cL, eE 150°"},{"ID":"12897","标识":"IC5057","M标识":"IC5057","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h47m13.5s","赤经D(J2000)":"20.787083333333335","赤纬(J2000)":"+0h19m20s","赤纬D(J2000)":"0.3222222222222222","可见光星等V":"99","摄影(蓝光)星等B":"14.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, nebulous star or extremely small nebula","简略描述":"cF, neb * or eS neb"},{"ID":"12898","标识":"IC5058","M标识":"IC5058","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h47m20.5s","赤经D(J2000)":"20.78902777777778","赤纬(J2000)":"+0h29m3s","赤纬D(J2000)":"0.4841666666666667","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.4","方位角":"66","详细描述":"extremely faint, distinct from (NGC) 6963","简略描述":"eF, distinct from 6963"},{"ID":"12899","标识":"IC5059","M标识":"IC5059","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h51m13.5s","赤经D(J2000)":"20.85375","赤纬(J2000)":"-57h41m19s","赤纬D(J2000)":"-57.68861111111111","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"13","详细描述":"very faint, small, round, diffuse","简略描述":"vF, S, R, dif"},{"ID":"12900","标识":"IC5060","M标识":"IC5060","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h54m46.2s","赤经D(J2000)":"20.91283333333333","赤纬(J2000)":"-71h38m14s","赤纬D(J2000)":"-71.63722222222223","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"0.2","方位角":"80","详细描述":"extremely faint, extremely small, between 2 faint stars","简略描述":"eF, eS, bet 2 F st"},{"ID":"12901","标识":"IC5061","M标识":"IC5061","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h47m37.2s","赤经D(J2000)":"20.793666666666667","赤纬(J2000)":"+0h20m12s","赤纬D(J2000)":"0.33666666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small cluster, perhaps nebulous","简略描述":"eF, vS Cl, ? neb"},{"ID":"12902","标识":"IC5062","M标识":"IC5062","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"20h48m10.3s","赤经D(J2000)":"20.802861111111113","赤纬(J2000)":"-8h21m32s","赤纬D(J2000)":"-8.358888888888888","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"13.5 magnitude star with extremely faint star and nebula, 13th magnitude star 1 arcmin west","简略描述":"* 13.5 with eF st & neb, * 13 p 1'"},{"ID":"12903","标识":"IC5063","M标识":"IC5063","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h52m2s","赤经D(J2000)":"20.86722222222222","赤纬(J2000)":"-57h4m10s","赤纬D(J2000)":"-57.06944444444445","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"2.1","短轴(分)":"1.4","方位角":"116","详细描述":"brighter middle, magnitude 13","简略描述":"bM, magn 13"},{"ID":"12904","标识":"IC5064","M标识":"IC5064","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"20h52m38.1s","赤经D(J2000)":"20.87725","赤纬(J2000)":"-57h13m57s","赤纬D(J2000)":"-57.2325","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1","短轴(分)":"0.7","方位角":"57","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"12905","标识":"IC5065","M标识":"IC5065","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"20h51m45.8s","赤经D(J2000)":"20.862722222222224","赤纬(J2000)":"-29h50m50s","赤纬D(J2000)":"-29.84722222222222","可见光星等V":"13.7","摄影(蓝光)星等B":"14.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"148","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"12906","标识":"IC5066","M标识":"IC5066","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa? ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"20h57m3.1s","赤经D(J2000)":"20.95086111111111","赤纬(J2000)":"-73h8m51s","赤纬D(J2000)":"-73.14750000000001","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, very small, brighter middle","简略描述":"vF, vS, bM"},{"ID":"12907","标识":"IC5067","M标识":"IC5067","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"鹈鹕星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h47m50s","赤经D(J2000)":"20.797222222222224","赤纬(J2000)":"+44h22m0s","赤纬D(J2000)":"44.36666666666667","可见光星等V":"99","摄影(蓝光)星等B":"8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"25","短轴(分)":"10","方位角":"","详细描述":"faint","简略描述":"F"},{"ID":"12908","标识":"IC5068","M标识":"IC5068","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h50m30s","赤经D(J2000)":"20.841666666666665","赤纬(J2000)":"+42h28m42s","赤纬D(J2000)":"42.47833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"40","短轴(分)":"30","方位角":"","详细描述":"very faint","简略描述":"vF"},{"ID":"12909","标识":"IC5069","M标识":"IC5069","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h0m10.3s","赤经D(J2000)":"21.002861111111113","赤纬(J2000)":"-71h48m38s","赤纬D(J2000)":"-71.81055555555555","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"12910","标识":"IC5070","M标识":"IC5070","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"鹈鹕星云","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h51m0s","赤经D(J2000)":"20.85","赤纬(J2000)":"+44h24m6s","赤纬D(J2000)":"44.401666666666664","可见光星等V":"99","摄影(蓝光)星等B":"8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"60","短轴(分)":"50","方位角":"","详细描述":"faint, diffuse","简略描述":"F, dif"},{"ID":"12911","标识":"IC5071","M标识":"IC5071","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h1m19.9s","赤经D(J2000)":"21.022194444444445","赤纬(J2000)":"-72h38m35s","赤纬D(J2000)":"-72.64305555555556","可见光星等V":"12.5","摄影(蓝光)星等B":"13.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"3.4","短轴(分)":"0.8","方位角":"15","详细描述":"considerably bright, small, extremely extended 20°, stellar nucleus","简略描述":"cB, S, eE 20°, stell N"},{"ID":"12912","标识":"IC5072","M标识":"IC5072","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h1m56.5s","赤经D(J2000)":"21.03236111111111","赤纬(J2000)":"-72h59m17s","赤纬D(J2000)":"-72.98805555555556","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"104","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"12913","标识":"IC5073","M标识":"IC5073","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h3m19.7s","赤经D(J2000)":"21.055472222222225","赤纬(J2000)":"-72h41m16s","赤纬D(J2000)":"-72.68777777777778","可见光星等V":"14","摄影(蓝光)星等B":"14.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"1","方位角":"20","详细描述":"extremely faint, small, round","简略描述":"eF, S, R"},{"ID":"12914","标识":"IC5074","M标识":"IC5074","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h1m0.6s","赤经D(J2000)":"21.01683333333333","赤纬(J2000)":"-63h9m12s","赤纬D(J2000)":"-63.15333333333333","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"166","详细描述":"round, planetary, magnitude 14","简略描述":"R, planet., magn 14"},{"ID":"12915","标识":"IC5075","M标识":"IC5075","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h4m37.5s","赤经D(J2000)":"21.077083333333334","赤纬(J2000)":"-71h52m5s","赤纬D(J2000)":"-71.86805555555554","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"149","详细描述":"very faint, small, considerably bright middle","简略描述":"vF, S, cbM"},{"ID":"12916","标识":"IC5076","M标识":"IC5076","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"RN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"20h55m33s","赤经D(J2000)":"20.925833333333333","赤纬(J2000)":"+47h23m42s","赤纬D(J2000)":"47.394999999999996","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"9","短轴(分)":"7","方位角":"","详细描述":"very faint, very large, a little extended north-south, stars involved","简略描述":"vF, vL, lE ns, st inv"},{"ID":"12917","标识":"IC5077","M标识":"IC5077","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h8m54s","赤经D(J2000)":"21.148333333333333","赤纬(J2000)":"-73h38m26s","赤纬D(J2000)":"-73.64055555555557","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"extremely faint, extremely small, 10th magnitude star 2 arcmin northwest","简略描述":"eF, eS, * 10 np 2'"},{"ID":"12918","标识":"IC5078","M标识":"IC5078","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h2m31.2s","赤经D(J2000)":"21.042","赤纬(J2000)":"-16h49m6s","赤纬D(J2000)":"-16.81833333333333","可见光星等V":"12.7","摄影(蓝光)星等B":"13.6","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"4.1","短轴(分)":"0.8","方位角":"85","详细描述":"extremely extended, near 2nd star of 3; suspected","简略描述":"eE, nr 2nd * of 3, susp"},{"ID":"12919","标识":"IC5079","M标识":"IC5079","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h5m30s","赤经D(J2000)":"21.091666666666665","赤纬(J2000)":"-56h14m54s","赤纬D(J2000)":"-56.248333333333335","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, extended, perhaps a very small cluster or ring nebula","简略描述":"F, S, E, ? vS Cl or ring neb"},{"ID":"12920","标识":"IC5080","M标识":"IC5080","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"21h2m33s","赤经D(J2000)":"21.0425","赤纬(J2000)":"+19h12m51s","赤纬D(J2000)":"19.214166666666667","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"45","详细描述":"faint, very small, round, stellar nucleus","简略描述":"F, vS, R, stell N"},{"ID":"12921","标识":"IC5081","M标识":"IC5081","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"海豚座","星座(En)":"DEL","赤经(J2000)":"21h3m1.2s","赤经D(J2000)":"21.050333333333334","赤纬(J2000)":"+19h11m21s","赤纬D(J2000)":"19.189166666666665","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"80","详细描述":"very faint, very small, round, stellar nucleus","简略描述":"vF, vS, R, stell N"},{"ID":"12922","标识":"IC5082","M标识":"IC5082","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E5","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h4m39.4s","赤经D(J2000)":"21.07761111111111","赤纬(J2000)":"-12h20m16s","赤纬D(J2000)":"-12.337777777777779","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.9","短轴(分)":"1","方位角":"36","详细描述":"extremely faint, small","简略描述":"eF, S"},{"ID":"12923","标识":"IC5083","M标识":"IC5083","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"小马座","星座(En)":"EQU","赤经(J2000)":"21h3m51.5s","赤经D(J2000)":"21.064305555555556","赤纬(J2000)":"+11h45m50s","赤纬D(J2000)":"11.76388888888889","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"most extremely faint, very small, very difficult; 8th magnitude star 13 seconds of time to east","简略描述":"eeF, vS, v diffic, * 8 f 13s"},{"ID":"12924","标识":"IC5084","M标识":"IC5084","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h9m14.4s","赤经D(J2000)":"21.154","赤纬(J2000)":"-63h17m23s","赤纬D(J2000)":"-63.28972222222222","可见光星等V":"12","摄影(蓝光)星等B":"12.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.6","短轴(分)":"1","方位角":"137","详细描述":"faint, pretty small, extremely extended 155°, considerably brighter middle","简略描述":"F, pS, eE 155°, cbM"},{"ID":"12925","标识":"IC5085","M标识":"IC5085","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa? ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h13m27.6s","赤经D(J2000)":"21.22433333333333","赤纬(J2000)":"-74h6m11s","赤纬D(J2000)":"-74.10305555555556","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"12926","标识":"IC5086","M标识":"IC5086","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"21h8m32s","赤经D(J2000)":"21.142222222222223","赤纬(J2000)":"-29h46m8s","赤纬D(J2000)":"-29.76888888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"most extremely faint, pretty small, round, faint star to east","简略描述":"eeF, pS, R, F * f"},{"ID":"12927","标识":"IC5087","M标识":"IC5087","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h14m21.8s","赤经D(J2000)":"21.23938888888889","赤纬(J2000)":"-73h46m25s","赤纬D(J2000)":"-73.77361111111111","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"104","详细描述":"very faint, very small, 11th magnitude star 3 arcmin northwest","简略描述":"vF, vS, * 11 np 3'"},{"ID":"12928","标识":"IC5088","M标识":"IC5088","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h9m26.7s","赤经D(J2000)":"21.157416666666666","赤纬(J2000)":"-22h52m41s","赤纬D(J2000)":"-22.878055555555555","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"","详细描述":"extremely faint, very small, difficult","简略描述":"eF, vS, diffic"},{"ID":"12929","标识":"IC5089","M标识":"IC5089","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h10m54.4s","赤经D(J2000)":"21.18177777777778","赤纬(J2000)":"-3h51m44s","赤纬D(J2000)":"-3.8622222222222224","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"35","详细描述":"extremely faint, very small, brighter middle, faint star 30 arcsec southwest","简略描述":"eF, vS, bM, F * 30\" sp"},{"ID":"12930","标识":"IC5090","M标识":"IC5090","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h11m30.6s","赤经D(J2000)":"21.191833333333335","赤纬(J2000)":"-2h1m55s","赤纬D(J2000)":"-2.0319444444444446","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"26","详细描述":"very faint, small, round, suddenly brighter middle","简略描述":"vF, S, R, sbM"},{"ID":"12931","标识":"IC5091","M标识":"IC5091","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h17m37.1s","赤经D(J2000)":"21.29363888888889","赤纬(J2000)":"-70h39m10s","赤纬D(J2000)":"-70.65277777777779","可见光星等V":"15.2","摄影(蓝光)星等B":"15.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"12932","标识":"IC5092","M标识":"IC5092","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h16m14.2s","赤经D(J2000)":"21.27061111111111","赤纬(J2000)":"-64h27m54s","赤纬D(J2000)":"-64.465","可见光星等V":"12","摄影(蓝光)星等B":"12.7","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.9","短轴(分)":"2.3","方位角":"8","详细描述":"pretty large, extended, much brighter middle","简略描述":"pL, E, mbM"},{"ID":"12933","标识":"IC5093","M标识":"IC5093","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h18m46.4s","赤经D(J2000)":"21.31288888888889","赤纬(J2000)":"-70h37m20s","赤纬D(J2000)":"-70.62222222222222","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"125","详细描述":"most extremely faint, very small, round, suspected","简略描述":"eeF, vS, R, susp"},{"ID":"12934","标识":"IC5094","M标识":"IC5094","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h17m49.4s","赤经D(J2000)":"21.297055555555556","赤纬(J2000)":"-66h25m40s","赤纬D(J2000)":"-66.42777777777778","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.6","方位角":"148","详细描述":"very faint, very small, round, star 0.5 arcmin northwest","简略描述":"vF, vS, R, * np 0'.5"},{"ID":"12935","标识":"IC5095","M标识":"IC5095","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h17m22s","赤经D(J2000)":"21.289444444444445","赤纬(J2000)":"-59h56m51s","赤纬D(J2000)":"-59.9475","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.4","方位角":"70","详细描述":"pretty large, extended","简略描述":"pL, E"},{"ID":"12936","标识":"IC5096","M标识":"IC5096","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h18m21.5s","赤经D(J2000)":"21.305972222222223","赤纬(J2000)":"-63h45m39s","赤纬D(J2000)":"-63.76083333333333","可见光星等V":"12.3","摄影(蓝光)星等B":"13.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"3.2","短轴(分)":"0.5","方位角":"148","详细描述":"faint, pretty large, extremely extended 145°, stellar nucleus","简略描述":"F, pL, eE 145°, stell N"},{"ID":"12937","标识":"IC5097","M标识":"IC5097","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"小马座","星座(En)":"EQU","赤经(J2000)":"21h14m58s","赤经D(J2000)":"21.249444444444446","赤纬(J2000)":"+4h28m0s","赤纬D(J2000)":"4.466666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, stellar, 3 arcmin southeast of (NGC) 7045","简略描述":"eF, stell, 3' sf 7045"},{"ID":"12938","标识":"IC5098","M标识":"IC5098","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"小马座","星座(En)":"EQU","赤经(J2000)":"21h15m1.3s","赤经D(J2000)":"21.25036111111111","赤纬(J2000)":"+4h29m39s","赤纬D(J2000)":"4.494166666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, 2.5 arcmin east southeast of (NGC) 7045","简略描述":"eF, 2'.5 sff 7045"},{"ID":"12939","标识":"IC5099","M标识":"IC5099","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h21m49.1s","赤经D(J2000)":"21.36363888888889","赤纬(J2000)":"-70h58m58s","赤纬D(J2000)":"-70.98277777777778","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"7","详细描述":"very faint, small, a little extended 10°","简略描述":"vF, S, lE 10°"},{"ID":"12940","标识":"IC5100","M标识":"IC5100","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h21m43.4s","赤经D(J2000)":"21.362055555555557","赤纬(J2000)":"-65h55m59s","赤纬D(J2000)":"-65.93305555555555","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.9","短轴(分)":"0.4","方位角":"114","详细描述":"faint small, considerably extended 110°","简略描述":"F, S, cE 110°"},{"ID":"12941","标识":"IC5101","M标识":"IC5101","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h21m55.9s","赤经D(J2000)":"21.36552777777778","赤纬(J2000)":"-65h50m9s","赤纬D(J2000)":"-65.83583333333333","可见光星等V":"13.3","摄影(蓝光)星等B":"13.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.9","方位角":"0","详细描述":"considerably faint, small, star in nebulosity","简略描述":"cF, S, * in neb"},{"ID":"12942","标识":"IC5102","M标识":"IC5102","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h26m13.4s","赤经D(J2000)":"21.437055555555556","赤纬(J2000)":"-73h18m36s","赤纬D(J2000)":"-73.31","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"124","详细描述":"extremely faint, extremely small, brighter middle","简略描述":"eF, eS, bM"},{"ID":"12943","标识":"IC5103","M标识":"IC5103","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h29m13.4s","赤经D(J2000)":"21.487055555555557","赤纬(J2000)":"-74h4m10s","赤纬D(J2000)":"-74.06944444444444","可见光星等V":"14.1","摄影(蓝光)星等B":"14.8","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"33","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"12944","标识":"IC5104","M标识":"IC5104","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h21m29.3s","赤经D(J2000)":"21.35813888888889","赤纬(J2000)":"+21h14m29s","赤纬D(J2000)":"21.24138888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"173","详细描述":"faint, very small, extended north-south, diffuse, 14th magnitude star near","简略描述":"F, vS, E ns, dif, * 14 nr"},{"ID":"12945","标识":"IC5105","M标识":"IC5105","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"显微镜座","星座(En)":"MIC","赤经(J2000)":"21h24m21.9s","赤经D(J2000)":"21.40608333333333","赤纬(J2000)":"-40h32m18s","赤纬D(J2000)":"-40.538333333333334","可见光星等V":"11.6","摄影(蓝光)星等B":"12.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.9","短轴(分)":"1.3","方位角":"40","详细描述":"very faint, very small, round, stars to north and south","简略描述":"vF, vS, R, st n & s"},{"ID":"12946","标识":"IC5106","M标识":"IC5106","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h28m37.9s","赤经D(J2000)":"21.477194444444443","赤纬(J2000)":"-70h50m5s","赤纬D(J2000)":"-70.83472222222221","可见光星等V":"12.9","摄影(蓝光)星等B":"13.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"143","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"12947","标识":"IC5107","M标识":"IC5107","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"孔雀座","星座(En)":"PAV","赤经(J2000)":"21h28m14.8s","赤经D(J2000)":"21.470777777777776","赤纬(J2000)":"-65h44m7s","赤纬D(J2000)":"-65.73527777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.4","方位角":"5","详细描述":"extremely faint, very small, considerably extended 10°","简略描述":"eF, vS, cE 10°"},{"ID":"12948","标识":"IC5108","M标识":"IC5108","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h32m51.1s","赤经D(J2000)":"21.54752777777778","赤纬(J2000)":"-72h39m33s","赤纬D(J2000)":"-72.65916666666668","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"101","详细描述":"extremely faint, very small, considerably brighter middle","简略描述":"eF, vS, cbM"},{"ID":"12949","标识":"IC5109","M标识":"IC5109","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h33m42.7s","赤经D(J2000)":"21.561861111111114","赤纬(J2000)":"-74h6m42s","赤纬D(J2000)":"-74.11166666666666","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.9","短轴(分)":"0.7","方位角":"174","详细描述":"very faint, brighter middle","简略描述":"vF, bM"},{"ID":"12950","标识":"IC5110","M标识":"IC5110","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h30m43.5s","赤经D(J2000)":"21.512083333333333","赤纬(J2000)":"-60h0m7s","赤纬D(J2000)":"-60.00194444444445","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"1.1","方位角":"49","详细描述":"very faint, very little extended","简略描述":"vF, vlE"},{"ID":"12951","标识":"IC5111","M标识":"IC5111","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h28m10.9s","赤经D(J2000)":"21.469694444444443","赤纬(J2000)":"+2h28m28s","赤纬D(J2000)":"2.4744444444444444","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"27","详细描述":"faint, small, irregular figure","简略描述":"F, S, iF"},{"ID":"12952","标识":"IC5112","M标识":"IC5112","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h29m30s","赤经D(J2000)":"21.491666666666667","赤纬(J2000)":"+6h46m50s","赤纬D(J2000)":"6.780555555555556","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"cluster, extremely faint, extremely small","简略描述":"Cl, eF, eS"},{"ID":"12953","标识":"IC5113","M标识":"IC5113","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*4","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h29m45s","赤经D(J2000)":"21.495833333333334","赤纬(J2000)":"+6h49m6s","赤纬D(J2000)":"6.818333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"cluster, extremely faint, small, perhaps nebulous","简略描述":"Cl, eF, S, ? nebs"},{"ID":"12954","标识":"IC5114","M标识":"IC5114","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBd","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h34m7.7s","赤经D(J2000)":"21.568805555555556","赤纬(J2000)":"-36h39m14s","赤纬D(J2000)":"-36.653888888888886","可见光星等V":"12.6","摄影(蓝光)星等B":"13.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.1","短轴(分)":"1.7","方位角":"78","详细描述":"extremely faint, pretty small, round, 2 stars 30 seconds of time to the east","简略描述":"eF, pS, R, 2 st f 30s "},{"ID":"12955","标识":"IC5115","M标识":"IC5115","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h30m57.1s","赤经D(J2000)":"21.51586111111111","赤纬(J2000)":"+11h45m49s","赤纬D(J2000)":"11.76361111111111","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"90","详细描述":"most extremely faint, very small, faint star to east","简略描述":"eeF, vS, F * f"},{"ID":"12956","标识":"IC5116","M标识":"IC5116","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h37m5.2s","赤经D(J2000)":"21.618111111111112","赤纬(J2000)":"-70h58m59s","赤纬D(J2000)":"-70.98305555555555","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"15","详细描述":"considerably faint, small, round, stellar nucleus","简略描述":"cF, S, R, stell N"},{"ID":"12957","标识":"IC5117","M标识":"IC5117","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h32m31s","赤经D(J2000)":"21.541944444444447","赤纬(J2000)":"+44h35m50s","赤纬D(J2000)":"44.59722222222222","可见光星等V":"11.5","摄影(蓝光)星等B":"13.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.2","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"12958","标识":"IC5118","M标识":"IC5118","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h42m13.9s","赤经D(J2000)":"21.70386111111111","赤纬(J2000)":"-71h22m56s","赤纬D(J2000)":"-71.38222222222221","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"48","详细描述":"very faint, small, considerably extended 35°, 10th magnitude star 2 arcmin to southwest","简略描述":"vF, S, cE 35°, * 10 sp 2'"},{"ID":"12959","标识":"IC5119","M标识":"IC5119","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h33m55.9s","赤经D(J2000)":"21.565527777777778","赤纬(J2000)":"+21h50m15s","赤纬D(J2000)":"21.8375","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"150","详细描述":"faint, very small, diffuse, 15th magnitude star attached, 13th magnitude star to north","简略描述":"F, vS, dif, * 15 att, * 13 n"},{"ID":"12960","标识":"IC5120","M标识":"IC5120","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h38m48.2s","赤经D(J2000)":"21.646722222222223","赤纬(J2000)":"-64h21m1s","赤纬D(J2000)":"-64.35027777777778","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"2","短轴(分)":"0.6","方位角":"102","详细描述":"faint, almost round","简略描述":"F, alm R"},{"ID":"12961","标识":"IC5121","M标识":"IC5121","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h41m19.1s","赤经D(J2000)":"21.68863888888889","赤纬(J2000)":"-63h54m30s","赤纬D(J2000)":"-63.90833333333333","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.8","短轴(分)":"1.6","方位角":"130","详细描述":"planetary, stellar, 13th magnitude","简略描述":"Planetary, stellar, 13 magn"},{"ID":"12962","标识":"IC5122","M标识":"IC5122","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h39m45.8s","赤经D(J2000)":"21.66272222222222","赤纬(J2000)":"-22h24m22s","赤纬D(J2000)":"-22.40611111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"45","详细描述":"extremely faint, very small; (NGC) 7103 and 7104 and IC 1393 near","简略描述":"eF, vS, 7103-04, I.C. 1393 nr"},{"ID":"12963","标识":"IC5123","M标识":"IC5123","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h44m49.3s","赤经D(J2000)":"21.747027777777777","赤纬(J2000)":"-72h25m14s","赤纬D(J2000)":"-72.42055555555557","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"18","详细描述":"considerably faint, very small, considerably extended 15°, 12th magnitude star 1 arcmin to west","简略描述":"cF, vS, cE 15°, * 12 p 1'"},{"ID":"12964","标识":"IC5124","M标识":"IC5124","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"摩羯座","星座(En)":"CAP","赤经(J2000)":"21h39m55.2s","赤经D(J2000)":"21.665333333333333","赤纬(J2000)":"-22h25m36s","赤纬D(J2000)":"-22.42666666666667","可见光星等V":"15.5","摄影(蓝光)星等B":"16.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.1","方位角":"129","详细描述":"most extremely faint, small, difficult; another suspected 1 arcmin to south","简略描述":"eeF, S, diffic, another susp 1' s"},{"ID":"12965","标识":"IC5125","M标识":"IC5125","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h41m50.3s","赤经D(J2000)":"21.697305555555555","赤纬(J2000)":"-52h46m24s","赤纬D(J2000)":"-52.77333333333333","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"faint, extremely small, round, brighter middle","简略描述":"F, eS, R, bM"},{"ID":"12966","标识":"IC5126","M标识":"IC5126","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"21h40m28.6s","赤经D(J2000)":"21.674611111111112","赤纬(J2000)":"-6h20m45s","赤纬D(J2000)":"-6.345833333333333","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, very small, round, between two 14th magnitude stars","简略描述":"vF, vS, R, bet 2 st 14"},{"ID":"12967","标识":"IC5127","M标识":"IC5127","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h39m51s","赤经D(J2000)":"21.664166666666667","赤纬(J2000)":"+6h14m6s","赤纬D(J2000)":"6.235","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, pretty large, several extremely faint stars and nebulosity","简略描述":"eF, pL, sev eF st & neb"},{"ID":"12968","标识":"IC5128","M标识":"IC5128","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h43m11.7s","赤经D(J2000)":"21.719916666666666","赤纬(J2000)":"-38h58m5s","赤纬D(J2000)":"-38.96805555555556","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"135","详细描述":"most extremely faint, very small, round, diffuse, star to southwest","简略描述":"eeF, vS, R, dif, st sp"},{"ID":"12969","标识":"IC5129","M标识":"IC5129","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h47m46.5s","赤经D(J2000)":"21.79625","赤纬(J2000)":"-65h23m15s","赤纬D(J2000)":"-65.3875","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"","详细描述":"no description","简略描述":"No descr"},{"ID":"12970","标识":"IC5130","M标识":"IC5130","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h50m24.7s","赤经D(J2000)":"21.840194444444442","赤纬(J2000)":"-73h59m51s","赤纬D(J2000)":"-73.9975","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.9","短轴(分)":"0.6","方位角":"109","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"12971","标识":"IC5131","M标识":"IC5131","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"21h47m25.3s","赤经D(J2000)":"21.790361111111114","赤纬(J2000)":"-34h53m4s","赤纬D(J2000)":"-34.88444444444444","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1","短轴(分)":"1","方位角":"","详细描述":"very faint, very small, round","简略描述":"vF, vS, R"},{"ID":"12972","标识":"IC5132","M标识":"IC5132","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"21h42m40.1s","赤经D(J2000)":"21.71113888888889","赤纬(J2000)":"+66h10m6s","赤纬D(J2000)":"66.16833333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"(one of) two 13th magnitude stars in very faint nebulosity","简略描述":"2 st 13 magn in vF neb"},{"ID":"12973","标识":"IC5133","M标识":"IC5133","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Nb","形态":"EN","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"21h42m47.1s","赤经D(J2000)":"21.713083333333334","赤纬(J2000)":"+66h10m52s","赤纬D(J2000)":"66.18111111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"(one of) two 13th magnitude stars in very faint nebulosity","简略描述":"2 st 13 magn in vF neb"},{"ID":"12974","标识":"IC5134","M标识":"IC5134","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Nb","含重复类型":"Dup","形态":"EN+OCL","星座(Zh)":"仙王座","星座(En)":"CEP","赤经(J2000)":"21h42m58.9s","赤经D(J2000)":"21.71636111111111","赤纬(J2000)":"+66h6m47s","赤纬D(J2000)":"66.11305555555555","可见光星等V":"99","摄影(蓝光)星等B":"11.5","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"7","短轴(分)":"7","方位角":"","详细描述":"a 9.5 magnitude star in nebulosity; IV 75 close","简略描述":"* 9.5 in neb, IV 75 close"},{"ID":"12975","标识":"IC5135","M标识":"IC5135","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"21h48m19.3s","赤经D(J2000)":"21.80536111111111","赤纬(J2000)":"-34h57m10s","赤纬D(J2000)":"-34.95277777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.6","短轴(分)":"1.5","方位角":"105","详细描述":"very faint, pretty large, round","简略描述":"vF, pL, R"},{"ID":"12976","标识":"IC5136","M标识":"IC5136","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"21h48m50.4s","赤经D(J2000)":"21.814","赤纬(J2000)":"-33h39m9s","赤纬D(J2000)":"-33.652499999999996","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, small, round","简略描述":"eeF, S, R"},{"ID":"12977","标识":"IC5137","M标识":"IC5137","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h51m37.9s","赤经D(J2000)":"21.86052777777778","赤纬(J2000)":"-65h34m59s","赤纬D(J2000)":"-65.58305555555555","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, round, stellar nucleus, spiral?; suspected","简略描述":"eF, S, R, stell N, spir ?, susp"},{"ID":"12978","标识":"IC5138","M标识":"IC5138","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h53m21.5s","赤经D(J2000)":"21.889305555555556","赤纬(J2000)":"-68h57m10s","赤纬D(J2000)":"-68.95277777777778","可见光星等V":"13.2","摄影(蓝光)星等B":"14","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"128","详细描述":"extremely faint, extremely small, round, suspected","简略描述":"eF, eS, R, susp"},{"ID":"12979","标识":"IC5139","M标识":"IC5139","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E\/SB0","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"21h50m25.6s","赤经D(J2000)":"21.840444444444444","赤纬(J2000)":"-30h59m42s","赤纬D(J2000)":"-30.995","可见光星等V":"12.3","摄影(蓝光)星等B":"13.3","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.1","短轴(分)":"1","方位角":"27","详细描述":"very faint, small, a little extended","简略描述":"vF, S, lE"},{"ID":"12980","标识":"IC5140","M标识":"IC5140","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h54m15.8s","赤经D(J2000)":"21.90438888888889","赤纬(J2000)":"-67h19m52s","赤纬D(J2000)":"-67.33111111111111","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2","短轴(分)":"0.3","方位角":"136","详细描述":"extremely faint, very small, much extended 135°","简略描述":"eF, vS, mE 135°"},{"ID":"12981","标识":"IC5141","M标识":"IC5141","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h53m17.1s","赤经D(J2000)":"21.888083333333334","赤纬(J2000)":"-59h29m35s","赤纬D(J2000)":"-59.49305555555556","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"1.3","方位角":"30","详细描述":"planetary, stellar, 15th magnitude","简略描述":"Planet., stell, 15 mag"},{"ID":"12982","标识":"IC5142","M标识":"IC5142","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h55m20.1s","赤经D(J2000)":"21.922250000000002","赤纬(J2000)":"-65h30m37s","赤纬D(J2000)":"-65.51027777777777","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"72","详细描述":"extremely faint, very small, round, between 2 stars, suspected","简略描述":"eF, vS, R, bet 2 st, susp"},{"ID":"12983","标识":"IC5143","M标识":"IC5143","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h56m9.8s","赤经D(J2000)":"21.936055555555555","赤纬(J2000)":"-49h31m19s","赤纬D(J2000)":"-49.52194444444444","可见光星等V":"12.2","摄影(蓝光)星等B":"13.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"2.3","短轴(分)":"2","方位角":"4","详细描述":"most extremely faint, pretty small, round","简略描述":"eeF, pS, R"},{"ID":"12984","标识":"IC5144","M标识":"IC5144","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h54m9.4s","赤经D(J2000)":"21.90261111111111","赤纬(J2000)":"+15h2m14s","赤纬D(J2000)":"15.037222222222223","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, several faint stars close to the east","简略描述":"F, S, sev F st close f"},{"ID":"12985","标识":"IC5145","M标识":"IC5145","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h54m22.9s","赤经D(J2000)":"21.90636111111111","赤纬(J2000)":"+15h9m23s","赤纬D(J2000)":"15.15638888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.6","短轴(分)":"0.9","方位角":"170","详细描述":"no description","简略描述":"No descr"},{"ID":"12986","标识":"IC5146","M标识":"IC5146","拓展名":"","组件":"","Class":"","业余排名":"2","中文名":"茧星云","类型":"Nb","含重复类型":"Nb","形态":"EN+OCL","星座(Zh)":"天鹅座","星座(En)":"CYG","赤经(J2000)":"21h53m24s","赤经D(J2000)":"21.89","赤纬(J2000)":"+47h16m0s","赤纬D(J2000)":"47.266666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"10","短轴(分)":"10","方位角":"","详细描述":"pretty bright, very large, irregular figure, 9.5 magnitude star in middle","简略描述":"pB, vL, iF, * 9.5 in M"},{"ID":"12987","标识":"IC5147","M标识":"IC5147","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"21h59m26.2s","赤经D(J2000)":"21.99061111111111","赤纬(J2000)":"-65h26m59s","赤纬D(J2000)":"-65.44972222222222","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"0.6","方位角":"30","详细描述":"extremely faint, extremely small, round, faint star 2 arcmin to east","简略描述":"eF, eS, R, F * f 2'"},{"ID":"12988","标识":"IC5148","M标识":"IC5148","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"备胎星云","类型":"PN","含重复类型":"Dup","形态":"PN","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h59m35.1s","赤经D(J2000)":"21.993083333333335","赤纬(J2000)":"-39h23m6s","赤纬D(J2000)":"-39.385","可见光星等V":"11","摄影(蓝光)星等B":"12.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.2","短轴(分)":"","方位角":"","详细描述":"very faint, large, a little extended, star attached","简略描述":"vF, L, lE, * att"},{"ID":"12989","标识":"IC5149","M标识":"IC5149","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"21h58m58.9s","赤经D(J2000)":"21.983027777777775","赤纬(J2000)":"-27h24m52s","赤纬D(J2000)":"-27.41444444444444","可见光星等V":"13.6","摄影(蓝光)星等B":"14.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.2","短轴(分)":"0.5","方位角":"32","详细描述":"extremely faint, small, round, 6.5 magnitude star 63 seconds of time to east on parallel (of declination)","简略描述":"eF, S, R, * 6.5 f 63s on par"},{"ID":"12990","标识":"IC5150","M标识":"IC5150","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"21h59m35.1s","赤经D(J2000)":"21.993083333333335","赤纬(J2000)":"-39h23m6s","赤纬D(J2000)":"-39.385","可见光星等V":"11","摄影(蓝光)星等B":"12.9","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"2.2","短轴(分)":"","方位角":"","详细描述":"pretty bright, pretty large, annular","简略描述":"pB, pL, annular"},{"ID":"12991","标识":"IC5151","M标识":"IC5151","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C+C","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"21h58m52.8s","赤经D(J2000)":"21.981333333333332","赤纬(J2000)":"+3h45m46s","赤纬D(J2000)":"3.762777777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"10","详细描述":"faint, very small, round, gradually brighter middle and nucleus, mottled but not resolved","简略描述":"F, vS, R, gbMN, r"},{"ID":"12992","标识":"IC5152","M标识":"IC5152","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Im","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h2m41.9s","赤经D(J2000)":"22.044972222222224","赤纬(J2000)":"-51h17m46s","赤纬D(J2000)":"-51.29611111111111","可见光星等V":"10.5","摄影(蓝光)星等B":"11.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"5","短轴(分)":"3.2","方位角":"100","详细描述":"faint, considerably large, considerably extended 150°, considerably brighter middle","简略描述":"F, cL, cE 150°, cbM"},{"ID":"12993","标识":"IC5153","M标识":"IC5153","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h0m23.6s","赤经D(J2000)":"22.006555555555554","赤纬(J2000)":"+17h51m49s","赤纬D(J2000)":"17.863611111111112","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, perhaps a star; 9.5 magnitude star 1.4 arcmin to southeast","简略描述":"eF, ? st, * 9.5 sf 1'.4"},{"ID":"12994","标识":"IC5154","M标识":"IC5154","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h4m29.6s","赤经D(J2000)":"22.07488888888889","赤纬(J2000)":"-66h6m51s","赤纬D(J2000)":"-66.11416666666666","可见光星等V":"14.4","摄影(蓝光)星等B":"15","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"175","详细描述":"very faint, brighter middle","简略描述":"vF, bM"},{"ID":"12995","标识":"IC5155","M标识":"IC5155","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h2m6.2s","赤经D(J2000)":"22.03505555555556","赤纬(J2000)":"+0h29m18s","赤纬D(J2000)":"0.48833333333333334","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, small, suddenly much brighter middle, 13th magnitude star 1.5 arcmin to east","简略描述":"eF, S, smbM, * 13 f 1'.5"},{"ID":"12996","标识":"IC5156","M标识":"IC5156","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h3m14.5s","赤经D(J2000)":"22.05402777777778","赤纬(J2000)":"-33h50m13s","赤纬D(J2000)":"-33.83694444444445","可见光星等V":"12.2","摄影(蓝光)星等B":"13","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.2","短轴(分)":"0.8","方位角":"175","详细描述":"pretty faint, pretty small, round","简略描述":"pF, pS, R"},{"ID":"12997","标识":"IC5157","M标识":"IC5157","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h3m27s","赤经D(J2000)":"22.0575","赤纬(J2000)":"-34h56m29s","赤纬D(J2000)":"-34.94138888888889","可见光星等V":"12","摄影(蓝光)星等B":"13","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"pretty bright, pretty small, round, 3 stars in line to northeast","简略描述":"pB, pS, R, 3 st in line nf"},{"ID":"12998","标识":"IC5158","M标识":"IC5158","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBm","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h6m24.9s","赤经D(J2000)":"22.106916666666667","赤纬(J2000)":"-67h31m3s","赤纬D(J2000)":"-67.5175","可见光星等V":"14.6","摄影(蓝光)星等B":"15.2","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"54","详细描述":"most extremely faint, extremely small, brighter middle","简略描述":"eeF, eS, bM"},{"ID":"12999","标识":"IC5159","M标识":"IC5159","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h2m40s","赤经D(J2000)":"22.044444444444448","赤纬(J2000)":"+0h19m10s","赤纬D(J2000)":"0.3194444444444444","可见光星等V":"99","摄影(蓝光)星等B":"14.8","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, very small, stellar, 11.5 magnitude star 1.5 arcmin to east northeast","简略描述":"eF, vS, stell, * 11.5 nff 1'.5"},{"ID":"13000","标识":"IC5160","M标识":"IC5160","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h3m4.8s","赤经D(J2000)":"22.051333333333336","赤纬(J2000)":"+10h55m31s","赤纬D(J2000)":"10.925277777777778","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"14.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"22","详细描述":"faint, very small, round","简略描述":"F, vS, R"},{"ID":"13001","标识":"IC5161","M标识":"IC5161","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h5m38.9s","赤经D(J2000)":"22.09413888888889","赤纬(J2000)":"+9h38m26s","赤纬D(J2000)":"9.640555555555554","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"10","详细描述":"faint, round, stellar, mottled but not resolved","简略描述":"F, R, stell, r"},{"ID":"13002","标识":"IC5162","M标识":"IC5162","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h8m2.9s","赤经D(J2000)":"22.134138888888888","赤纬(J2000)":"-52h42m49s","赤纬D(J2000)":"-52.71361111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"114","详细描述":"extremely faint, extremely small, very extended 95°","简略描述":"eF, eS, vE 95°"},{"ID":"13003","标识":"IC5163","M标识":"IC5163","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h5m46.4s","赤经D(J2000)":"22.09622222222222","赤纬(J2000)":"+27h5m0s","赤纬D(J2000)":"27.083333333333332","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, two 13th magnitude stars near","简略描述":"eF, 2 st 13 nr"},{"ID":"13004","标识":"IC5164","M标识":"IC5164","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h5m50.4s","赤经D(J2000)":"22.09733333333333","赤纬(J2000)":"+27h2m27s","赤纬D(J2000)":"27.040833333333335","可见光星等V":"99","摄影(蓝光)星等B":"13.4","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, stellar","简略描述":"eF, stell"},{"ID":"13005","标识":"IC5165","M标识":"IC5165","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h10m6.9s","赤经D(J2000)":"22.168583333333334","赤纬(J2000)":"-64h34m42s","赤纬D(J2000)":"-64.57833333333333","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"45","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"13006","标识":"IC5166","M标识":"IC5166","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h5m58.3s","赤经D(J2000)":"22.099527777777777","赤纬(J2000)":"+27h2m51s","赤纬D(J2000)":"27.047500000000003","可见光星等V":"99","摄影(蓝光)星等B":"14.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint, stellar nucleus or very small cluster","简略描述":"eF, stell N, or vS Cl"},{"ID":"13007","标识":"IC5167","M标识":"IC5167","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h7m31.6s","赤经D(J2000)":"22.125444444444444","赤纬(J2000)":"-8h7m21s","赤纬D(J2000)":"-8.1225","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, perhaps nebulous","简略描述":"vF, neb ?"},{"ID":"13008","标识":"IC5168","M标识":"IC5168","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h8m45.5s","赤经D(J2000)":"22.145972222222223","赤纬(J2000)":"-27h51m24s","赤纬D(J2000)":"-27.85666666666667","可见光星等V":"14.8","摄影(蓝光)星等B":"15.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"144","详细描述":"most extremely faint, very small, much extended, in a triangle with 2 faint stars","简略描述":"eeF, vS, mE, Δ 2 F st"},{"ID":"13009","标识":"IC5169","M标识":"IC5169","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h10m10s","赤经D(J2000)":"22.169444444444444","赤纬(J2000)":"-36h5m20s","赤纬D(J2000)":"-36.08888888888889","可见光星等V":"12.9","摄影(蓝光)星等B":"13.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.9","短轴(分)":"0.5","方位角":"22","详细描述":"extremely faint, extremely small, stellar nucleus, spiral or oval","简略描述":"eF, eS, stell N, spir or oval"},{"ID":"13010","标识":"IC5170","M标识":"IC5170","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h12m29.6s","赤经D(J2000)":"22.208222222222222","赤纬(J2000)":"-47h13m17s","赤纬D(J2000)":"-47.22138888888889","可见光星等V":"12.5","摄影(蓝光)星等B":"13.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.8","短轴(分)":"0.8","方位角":"26","详细描述":"new","简略描述":"No descr"},{"ID":"13011","标识":"IC5171","M标识":"IC5171","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h10m56.6s","赤经D(J2000)":"22.18238888888889","赤纬(J2000)":"-46h4m55s","赤纬D(J2000)":"-46.081944444444446","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.1","短轴(分)":"0.5","方位角":"158","详细描述":"no description","简略描述":"No descr"},{"ID":"13012","标识":"IC5172","M标识":"IC5172","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h9m55.4s","赤经D(J2000)":"22.165388888888888","赤纬(J2000)":"+12h49m4s","赤纬D(J2000)":"12.817777777777778","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"90","详细描述":"very faint, very small, stellar, 14th magnitude star attached","简略描述":"vF, vS, stell, * 14 att"},{"ID":"13013","标识":"IC5173","M标识":"IC5173","拓展名":"A","组件":"","Class":"","业余排名":"14","中文名":"南积分号星系","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h14m44.5s","赤经D(J2000)":"22.245694444444446","赤纬(J2000)":"-69h21m57s","赤纬D(J2000)":"-69.36583333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"0.3","方位角":"73","详细描述":"extremely faint, small, much extended 75°","简略描述":"eF, S, mE 75°"},{"ID":"13014","标识":"IC5174","M标识":"IC5174","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h12m44.5s","赤经D(J2000)":"22.21236111111111","赤纬(J2000)":"-38h10m18s","赤纬D(J2000)":"-38.17166666666667","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"2.1","短轴(分)":"1.1","方位角":"1","详细描述":"extremely faint, extremely small, considerably extended 150°","简略描述":"eF, eS, cE 150°"},{"ID":"13015","标识":"IC5175","M标识":"IC5175","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h12m48.2s","赤经D(J2000)":"22.21338888888889","赤纬(J2000)":"-38h7m38s","赤纬D(J2000)":"-38.12722222222222","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"94","详细描述":"extremely faint, extremely small, round, brighter middle","简略描述":"eF, eS, R, bM"},{"ID":"13016","标识":"IC5176","M标识":"IC5176","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h14m55s","赤经D(J2000)":"22.248611111111114","赤纬(J2000)":"-66h51m0s","赤纬D(J2000)":"-66.85","可见光星等V":"12.7","摄影(蓝光)星等B":"13.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"4.4","短轴(分)":"0.5","方位角":"28","详细描述":"very faint, small, extremely extended 30°, star to north","简略描述":"vF, S, eE 30°, * n"},{"ID":"13017","标识":"IC5177","M标识":"IC5177","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h11m34.3s","赤经D(J2000)":"22.19286111111111","赤纬(J2000)":"+11h47m43s","赤纬D(J2000)":"11.795277777777777","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.6","短轴(分)":"0.8","方位角":"25","详细描述":"faint, small, extended north-south, gradually a little brighter middle","简略描述":"F, S, E ns, glbM"},{"ID":"13018","标识":"IC5178","M标识":"IC5178","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB+C?","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h12m33.2s","赤经D(J2000)":"22.20922222222222","赤纬(J2000)":"-22h57m16s","赤纬D(J2000)":"-22.954444444444444","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"88","详细描述":"extremely faint, very small, (NGC) 7220 is 63 seconds of time to the west","简略描述":"eF, vS, 7220 p 63s"},{"ID":"13019","标识":"IC5179","M标识":"IC5179","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h16m9s","赤经D(J2000)":"22.269166666666667","赤纬(J2000)":"-36h50m41s","赤纬D(J2000)":"-36.844722222222224","可见光星等V":"11.8","摄影(蓝光)星等B":"12.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.4","短轴(分)":"1.2","方位角":"57","详细描述":"very faint, large, round, star near to south, bright star to southwest","简略描述":"vF, L, R, * nr s, B * sp"},{"ID":"13020","标识":"IC5180","M标识":"IC5180","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h11m12s","赤经D(J2000)":"22.186666666666667","赤纬(J2000)":"+38h55m36s","赤纬D(J2000)":"38.92666666666666","可见光星等V":"13.3","摄影(蓝光)星等B":"14.3","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.8","方位角":"120","详细描述":"very faint, small, suddenly brighter middle","简略描述":"vF, S, sbM"},{"ID":"13021","标识":"IC5181","M标识":"IC5181","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h13m21.6s","赤经D(J2000)":"22.222666666666665","赤纬(J2000)":"-46h1m5s","赤纬D(J2000)":"-46.018055555555556","可见光星等V":"11.5","摄影(蓝光)星等B":"12.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"2.5","短轴(分)":"0.9","方位角":"74","详细描述":"no description","简略描述":"No descr"},{"ID":"13022","标识":"IC5182","M标识":"IC5182","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h16m5s","赤经D(J2000)":"22.268055555555556","赤纬(J2000)":"-65h27m17s","赤纬D(J2000)":"-65.45472222222223","可见光星等V":"14.7","摄影(蓝光)星等B":"15.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"140","详细描述":"extremely faint, extremely small, brighter middle","简略描述":"eF, eS, bM"},{"ID":"13023","标识":"IC5183","M标识":"IC5183","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sbc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h16m9s","赤经D(J2000)":"22.269166666666667","赤纬(J2000)":"-36h50m41s","赤纬D(J2000)":"-36.844722222222224","可见光星等V":"11.8","摄影(蓝光)星等B":"12.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.4","短轴(分)":"1.2","方位角":"57","详细描述":"very faint, large, round, star near to south, bright star to southwest","简略描述":"pB, cS, F * att sf"},{"ID":"13024","标识":"IC5184","M标识":"IC5184","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h16m9s","赤经D(J2000)":"22.269166666666667","赤纬(J2000)":"-36h50m41s","赤纬D(J2000)":"-36.844722222222224","可见光星等V":"11.8","摄影(蓝光)星等B":"12.4","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"2.4","短轴(分)":"1.2","方位角":"57","详细描述":"very faint, large, round, star near to south, bright star to southwest","简略描述":"pF, pS, lE, bet 2 st ns"},{"ID":"13025","标识":"IC5185","M标识":"IC5185","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h17m43.8s","赤经D(J2000)":"22.2955","赤纬(J2000)":"-65h51m27s","赤纬D(J2000)":"-65.85749999999999","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"68","详细描述":"extremely faint, very small, brighter middle","简略描述":"eF, vS, bM"},{"ID":"13026","标识":"IC5186","M标识":"IC5186","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h18m46.5s","赤经D(J2000)":"22.312916666666666","赤纬(J2000)":"-36h48m6s","赤纬D(J2000)":"-36.80166666666666","可见光星等V":"11.9","摄影(蓝光)星等B":"12.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.8","短轴(分)":"1.2","方位角":"106","详细描述":"most extremely faint, small, round, faint star near to west","简略描述":"eeF, S, R, F * nr p"},{"ID":"13027","标识":"IC5187","M标识":"IC5187","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h18m18s","赤经D(J2000)":"22.305","赤纬(J2000)":"-59h36m26s","赤纬D(J2000)":"-59.60722222222223","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very small, round, disc, magnitude 14.5","简略描述":"vS, R, disc, magn 14.5"},{"ID":"13028","标识":"IC5188","M标识":"IC5188","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h18m26.2s","赤经D(J2000)":"22.307277777777777","赤纬(J2000)":"-59h38m26s","赤纬D(J2000)":"-59.64055555555556","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"1.1","方位角":"65","详细描述":"faint, considerably small, round, considerably brighter middle","简略描述":"F, cS, R, cbM"},{"ID":"13029","标识":"IC5189","M标识":"IC5189","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h16m14.2s","赤经D(J2000)":"22.27061111111111","赤纬(J2000)":"-5h0m17s","赤纬D(J2000)":"-5.004722222222222","可见光星等V":"99","摄影(蓝光)星等B":"15.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint star, perhaps nebulous","简略描述":"eF *, ? nebs"},{"ID":"13030","标识":"IC5190","M标识":"IC5190","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h19m0.9s","赤经D(J2000)":"22.316916666666668","赤纬(J2000)":"-59h52m58s","赤纬D(J2000)":"-59.882777777777775","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.2","短轴(分)":"0.7","方位角":"138","详细描述":"very faint, 2 broad spiral arms, 15th magnitude in middle","简略描述":"vF, 2 br spir, * 15 in M"},{"ID":"13031","标识":"IC5191","M标识":"IC5191","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h15m2.4s","赤经D(J2000)":"22.250666666666667","赤纬(J2000)":"+37h18m1s","赤纬D(J2000)":"37.30027777777777","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"65","详细描述":"(part of a) Group of 6 nebulae (sketched), including NGC 7240, 7242 and B.449","简略描述":"Group of 6 neb (sketched), incl N.G.C. 7240, 7242 and B. 449"},{"ID":"13032","标识":"IC5192","M标识":"IC5192","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h15m14.1s","赤经D(J2000)":"22.253916666666665","赤纬(J2000)":"+37h16m15s","赤纬D(J2000)":"37.270833333333336","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"(part of a) Group of 6 nebulae (sketched), including NGC 7240, 7242 and B.449","简略描述":"Group of 6 neb (sketched), incl N.G.C. 7240, 7242 and B. 449"},{"ID":"13033","标识":"IC5193","M标识":"IC5193","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h15m43.5s","赤经D(J2000)":"22.262083333333333","赤纬(J2000)":"+37h14m36s","赤纬D(J2000)":"37.24333333333333","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"(part of a) Group of 6 nebulae (sketched), including NGC 7240, 7242 and B.449","简略描述":"Group of 6 neb (sketched), incl N.G.C. 7240, 7242 and B. 449"},{"ID":"13034","标识":"IC5194","M标识":"IC5194","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h17m8s","赤经D(J2000)":"22.285555555555558","赤纬(J2000)":"-15h56m45s","赤纬D(J2000)":"-15.945833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint (not found again)","简略描述":"eF (not found again)"},{"ID":"13035","标识":"IC5195","M标识":"IC5195","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h15m41.5s","赤经D(J2000)":"22.26152777777778","赤纬(J2000)":"+37h18m10s","赤纬D(J2000)":"37.30277777777778","可见光星等V":"15.4","摄影(蓝光)星等B":"16.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, small, 0.5 arcmin south of (NGC) 7242","简略描述":"eF, S, 0'.5 s of 7242"},{"ID":"13036","标识":"IC5196","M标识":"IC5196","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h20m11.3s","赤经D(J2000)":"22.33647222222222","赤纬(J2000)":"-65h24m17s","赤纬D(J2000)":"-65.40472222222223","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"1.3","短轴(分)":"0.1","方位角":"100","详细描述":"extremely faint, most extremely small, extremely extended 105°, stellar nucleus","简略描述":"eF, eeS, eE 105°, stell N"},{"ID":"13037","标识":"IC5197","M标识":"IC5197","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h19m49.4s","赤经D(J2000)":"22.330388888888887","赤纬(J2000)":"-60h8m11s","赤纬D(J2000)":"-60.13638888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"30","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"13038","标识":"IC5198","M标识":"IC5198","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h17m42.6s","赤经D(J2000)":"22.295166666666667","赤纬(J2000)":"-15h34m12s","赤纬D(J2000)":"-15.57","可见光星等V":"14.5","摄影(蓝光)星等B":"15.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"162","详细描述":"extremely faint, pretty large, round, brighter middle, mottled but not resolved","简略描述":"eF, pL, R, bM, r"},{"ID":"13039","标识":"IC5199","M标识":"IC5199","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h19m32.9s","赤经D(J2000)":"22.325805555555554","赤纬(J2000)":"-37h32m3s","赤纬D(J2000)":"-37.534166666666664","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1.5","短轴(分)":"0.2","方位角":"155","详细描述":"extremely faint, extremely small, considerably extended 160°","简略描述":"eF, eS, cE 160°"},{"ID":"13040","标识":"IC5200","M标识":"IC5200","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h22m15.6s","赤经D(J2000)":"22.371000000000002","赤纬(J2000)":"-65h45m59s","赤纬D(J2000)":"-65.76638888888888","可见光星等V":"15.3","摄影(蓝光)星等B":"16","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"125","详细描述":"most extremely faint, extremely small, round, faint star 1 arcmin to northwest","简略描述":"eeF, eS, R, F * np 1'"},{"ID":"13041","标识":"IC5201","M标识":"IC5201","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h20m57.5s","赤经D(J2000)":"22.349305555555553","赤纬(J2000)":"-46h2m5s","赤纬D(J2000)":"-46.03472222222222","可见光星等V":"10.8","摄影(蓝光)星等B":"11.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.5","长轴(分)":"8.5","短轴(分)":"3.9","方位角":"33","详细描述":"no description","简略描述":"No descr"},{"ID":"13042","标识":"IC5202","M标识":"IC5202","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h22m55.3s","赤经D(J2000)":"22.38202777777778","赤纬(J2000)":"-65h48m9s","赤纬D(J2000)":"-65.8025","可见光星等V":"13.8","摄影(蓝光)星等B":"14.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.3","短轴(分)":"0.6","方位角":"127","详细描述":"a remarkable object, extremely faint, very small, stellar nucleus, spiral","简略描述":"! eF, vS, stell N, spir"},{"ID":"13043","标识":"IC5203","M标识":"IC5203","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h22m34.3s","赤经D(J2000)":"22.376194444444444","赤纬(J2000)":"-59h46m24s","赤纬D(J2000)":"-59.77333333333333","可见光星等V":"14.2","摄影(蓝光)星等B":"14.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.3","短轴(分)":"0.7","方位角":"42","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"13044","标识":"IC5204","M标识":"IC5204","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h20m42s","赤经D(J2000)":"22.345","赤纬(J2000)":"-14h24m0s","赤纬D(J2000)":"-14.4","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, very much extended","简略描述":"vF, vmE"},{"ID":"13045","标识":"IC5205","M标识":"IC5205","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h22m47.7s","赤经D(J2000)":"22.379916666666666","赤纬(J2000)":"-59h47m12s","赤纬D(J2000)":"-59.78666666666666","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"0","详细描述":"brighter middle, magnitude 16","简略描述":"bM, magn 16"},{"ID":"13046","标识":"IC5206","M标识":"IC5206","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h24m4.5s","赤经D(J2000)":"22.401249999999997","赤纬(J2000)":"-66h51m28s","赤纬D(J2000)":"-66.85777777777777","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"20","详细描述":"extremely faint, very small, round, stellar nucleus","简略描述":"eF, vS, R, stell N"},{"ID":"13047","标识":"IC5207","M标识":"IC5207","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h23m29.2s","赤经D(J2000)":"22.391444444444446","赤纬(J2000)":"-60h33m56s","赤纬D(J2000)":"-60.565555555555555","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"14.7","长轴(分)":"1.5","短轴(分)":"0.9","方位角":"0","详细描述":"brighter middle, magnitude 16","简略描述":"bM, magn 16"},{"ID":"13048","标识":"IC5208","M标识":"IC5208","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h24m34.1s","赤经D(J2000)":"22.40947222222222","赤纬(J2000)":"-65h13m39s","赤纬D(J2000)":"-65.2275","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.6","短轴(分)":"0.2","方位角":"64","详细描述":"most extremely faint, extremely small, extremely extended 65°, stellar nucleus","简略描述":"eeF, eS, eE 65°, stell N"},{"ID":"13049","标识":"IC5209","M标识":"IC5209","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h23m9.1s","赤经D(J2000)":"22.38586111111111","赤纬(J2000)":"-37h59m37s","赤纬D(J2000)":"-37.993611111111115","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"125","详细描述":"faint, extremely small, round, 2 stars to northwest","简略描述":"F, eS, R, 2 st np"},{"ID":"13050","标识":"IC5210","M标识":"IC5210","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h22m31.1s","赤经D(J2000)":"22.375305555555556","赤纬(J2000)":"-18h52m9s","赤纬D(J2000)":"-18.86916666666667","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"1.1","方位角":"","详细描述":"most extremely faint, very small, round, preceding (western) of 2","简略描述":"eeF, vS, R, p of 2"},{"ID":"13051","标识":"IC5211","M标识":"IC5211","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h22m42.9s","赤经D(J2000)":"22.378583333333335","赤纬(J2000)":"-18h52m47s","赤纬D(J2000)":"-18.879722222222224","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.6","方位角":"160","详细描述":"extremely faint, small, following (eastern) of 2","简略描述":"eF, S, f of 2"},{"ID":"13052","标识":"IC5212","M标识":"IC5212","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h23m30.2s","赤经D(J2000)":"22.39172222222222","赤纬(J2000)":"-38h2m16s","赤纬D(J2000)":"-38.03777777777778","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.7","方位角":"42","详细描述":"extremely faint, extremely small, considerably extended 40°","简略描述":"eF, eS, cE 40°"},{"ID":"13053","标识":"IC5213","M标识":"IC5213","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h25m4.9s","赤经D(J2000)":"22.41802777777778","赤纬(J2000)":"-60h28m34s","赤纬D(J2000)":"-60.476111111111116","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"","详细描述":"brighter middle, magnitude 16","简略描述":"bM, magn 16"},{"ID":"13054","标识":"IC5214","M标识":"IC5214","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h22m43.4s","赤经D(J2000)":"22.378722222222223","赤纬(J2000)":"-27h21m20s","赤纬D(J2000)":"-27.355555555555558","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.2","方位角":"55","详细描述":"extremely faint, pretty small, round, 8th magnitude star to west","简略描述":"eF, pS, R, * 8 p"},{"ID":"13055","标识":"IC5215","M标识":"IC5215","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h26m58s","赤经D(J2000)":"22.449444444444445","赤纬(J2000)":"-65h58m58s","赤纬D(J2000)":"-65.98277777777778","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"10","详细描述":"extremely faint, very small, round, star 2 arcmin to northeast; suspected","简略描述":"eF, vS, R, * 2' nf, susp"},{"ID":"13056","标识":"IC5216","M标识":"IC5216","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h24m44s","赤经D(J2000)":"22.41222222222222","赤纬(J2000)":"-18h5m18s","赤纬D(J2000)":"-18.08833333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, round, nuclear","简略描述":"vF, S, R, N"},{"ID":"13057","标识":"IC5217","M标识":"IC5217","拓展名":"","组件":"","Class":"","业余排名":"12","中文名":"","类型":"PN","含重复类型":"PN","形态":"PN","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h23m55.7s","赤经D(J2000)":"22.398805555555555","赤纬(J2000)":"+50h58m3s","赤纬D(J2000)":"50.9675","可见光星等V":"11.3","摄影(蓝光)星等B":"12.6","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"0.25","短轴(分)":"","方位角":"","详细描述":"planetary, stellar","简略描述":"Planetary, stellar"},{"ID":"13058","标识":"IC5218","M标识":"IC5218","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h28m5.8s","赤经D(J2000)":"22.468277777777775","赤纬(J2000)":"-60h23m41s","赤纬D(J2000)":"-60.39472222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.3","短轴(分)":"0.5","方位角":"22","详细描述":"faint, pretty small, extended 195°","简略描述":"F, pS, E 195°"},{"ID":"13059","标识":"IC5219","M标识":"IC5219","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h28m44.1s","赤经D(J2000)":"22.478916666666667","赤纬(J2000)":"-65h53m37s","赤纬D(J2000)":"-65.89361111111111","可见光星等V":"15.1","摄影(蓝光)星等B":"15.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"14","长轴(分)":"0.8","短轴(分)":"0.5","方位角":"20","详细描述":"extremely faint, extremely small, considerably extended 15°, suspected","简略描述":"eF, eS, cE 15°, susp"},{"ID":"13060","标识":"IC5220","M标识":"IC5220","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h28m2.4s","赤经D(J2000)":"22.467333333333332","赤纬(J2000)":"-59h43m22s","赤纬D(J2000)":"-59.72277777777778","可见光星等V":"14.3","摄影(蓝光)星等B":"15","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.1","短轴(分)":"0.3","方位角":"111","详细描述":"faint, pretty small, extended 105°","简略描述":"F, pS, E 105°"},{"ID":"13061","标识":"IC5221","M标识":"IC5221","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h28m57.9s","赤经D(J2000)":"22.48275","赤纬(J2000)":"-65h54m15s","赤纬D(J2000)":"-65.90416666666667","可见光星等V":"14.9","摄影(蓝光)星等B":"15.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"","详细描述":"extremely faint, brighter middle, suspected","简略描述":"eF, bM, susp"},{"ID":"13062","标识":"IC5222","M标识":"IC5222","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h29m54.7s","赤经D(J2000)":"22.498527777777777","赤纬(J2000)":"-65h39m41s","赤纬D(J2000)":"-65.6613888888889","可见光星等V":"12.8","摄影(蓝光)星等B":"13.5","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1.9","短轴(分)":"1.3","方位角":"93","详细描述":"a remarkable object, extremely faint, pretty small, stellar nucleus, suspected","简略描述":"! eF, pS, stell N, susp"},{"ID":"13063","标识":"IC5223","M标识":"IC5223","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"3S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h29m44.7s","赤经D(J2000)":"22.49575","赤纬(J2000)":"+7h59m21s","赤纬D(J2000)":"7.989166666666667","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.3","方位角":"0","详细描述":"faint, very small, diffuse, mottled but not resolved","简略描述":"F, vS, dif, r"},{"ID":"13064","标识":"IC5224","M标识":"IC5224","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h30m30s","赤经D(J2000)":"22.508333333333333","赤纬(J2000)":"-45h59m45s","赤纬D(J2000)":"-45.99583333333334","可见光星等V":"13.6","摄影(蓝光)星等B":"14.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.5","短轴(分)":"0.4","方位角":"167","详细描述":"no description","简略描述":"No descr"},{"ID":"13065","标识":"IC5225","M标识":"IC5225","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h32m7.8s","赤经D(J2000)":"22.535500000000003","赤纬(J2000)":"-25h23m53s","赤纬D(J2000)":"-25.398055555555555","可见光星等V":"12.5","摄影(蓝光)星等B":"13.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"1.2","方位角":"47","详细描述":"most extremely faint, pretty small, round, between 2 stars","简略描述":"eeF, pS, R, bet 2 st"},{"ID":"13066","标识":"IC5226","M标识":"IC5226","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h32m30s","赤经D(J2000)":"22.541666666666668","赤纬(J2000)":"-25h39m44s","赤纬D(J2000)":"-25.66222222222222","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"2.6","短轴(分)":"2.4","方位角":"9","详细描述":"most extremely faint, pretty large, round","简略描述":"eeF, pL, R"},{"ID":"13067","标识":"IC5227","M标识":"IC5227","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBab","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h34m3.6s","赤经D(J2000)":"22.567666666666668","赤纬(J2000)":"-64h41m52s","赤纬D(J2000)":"-64.69777777777779","可见光星等V":"13.1","摄影(蓝光)星等B":"13.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.4","短轴(分)":"1","方位角":"177","详细描述":"faint, small, stellar nucleus","简略描述":"F, S, stell N"},{"ID":"13068","标识":"IC5228","M标识":"IC5228","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h32m23.9s","赤经D(J2000)":"22.539972222222225","赤纬(J2000)":"-14h7m15s","赤纬D(J2000)":"-14.120833333333334","可见光星等V":"12.3","摄影(蓝光)星等B":"13.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.8","短轴(分)":"1.1","方位角":"97","详细描述":"pretty bright, pretty small, round, bright star to south","简略描述":"pB, pS, R, B * s"},{"ID":"13069","标识":"IC5229","M标识":"IC5229","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h34m50.3s","赤经D(J2000)":"22.58063888888889","赤纬(J2000)":"-61h22m52s","赤纬D(J2000)":"-61.38111111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.1","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"brighter middle, magnitude 15","简略描述":"bM, magn 15"},{"ID":"13070","标识":"IC5230","M标识":"IC5230","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h35m40.2s","赤经D(J2000)":"22.5945","赤纬(J2000)":"-61h32m50s","赤纬D(J2000)":"-61.54722222222222","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.4","方位角":"41","详细描述":"extremely faint, extremely small, considerably extended 35°, considerably brighter middle","简略描述":"eF, eS, cE 35°, cbM"},{"ID":"13071","标识":"IC5231","M标识":"IC5231","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h34m0.6s","赤经D(J2000)":"22.56683333333333","赤纬(J2000)":"+23h20m21s","赤纬D(J2000)":"23.339166666666664","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1","短轴(分)":"0.9","方位角":"69","详细描述":"faint, small, round, gradually brighter middle and nucleus","简略描述":"F, S, R, gbMN"},{"ID":"13072","标识":"IC5232","M标识":"IC5232","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h37m38.3s","赤经D(J2000)":"22.627305555555555","赤纬(J2000)":"-68h52m17s","赤纬D(J2000)":"-68.87138888888889","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"3","详细描述":"extremely faint, most extremely small, brighter middle","简略描述":"eF, eeS, bM"},{"ID":"13073","标识":"IC5233","M标识":"IC5233","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h36m33s","赤经D(J2000)":"22.609166666666667","赤纬(J2000)":"+25h45m49s","赤纬D(J2000)":"25.76361111111111","可见光星等V":"13.8","摄影(蓝光)星等B":"14.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.8","方位角":"19","详细描述":"faint, very small, diffuse, 12.5 magnitude star very close","简略描述":"F, vS, dif, * 12.5 v close"},{"ID":"13074","标识":"IC5234","M标识":"IC5234","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h40m11.4s","赤经D(J2000)":"22.669833333333333","赤纬(J2000)":"-65h49m29s","赤纬D(J2000)":"-65.82472222222222","可见光星等V":"14.4","摄影(蓝光)星等B":"15.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.4","方位角":"147","详细描述":"extremely faint, most extremely small, considerably extended 165°, considerably brighter middle","简略描述":"eF, eeS, cE 165°, cbM"},{"ID":"13075","标识":"IC5235","M标识":"IC5235","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h41m25.6s","赤经D(J2000)":"22.690444444444445","赤纬(J2000)":"-66h34m49s","赤纬D(J2000)":"-66.58027777777778","可见光星等V":"12.6","摄影(蓝光)星等B":"13.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"10.7","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"90","详细描述":"most extremely faint, brighter middle","简略描述":"eeF, bM"},{"ID":"13076","标识":"IC5236","M标识":"IC5236","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h41m30.4s","赤经D(J2000)":"22.691777777777776","赤纬(J2000)":"-66h37m4s","赤纬D(J2000)":"-66.61777777777777","可见光星等V":"14.4","摄影(蓝光)星等B":"15.4","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"63","详细描述":"extremely faint, most extremely small, considerably extended 60°, brighter middle","简略描述":"eF, eeS, cE 60°, bM"},{"ID":"13077","标识":"IC5237","M标识":"IC5237","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h42m17.9s","赤经D(J2000)":"22.70497222222222","赤纬(J2000)":"-30h3m27s","赤纬D(J2000)":"-30.0575","可见光星等V":"12.3","摄影(蓝光)星等B":"12.7","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"3.9","短轴(分)":"1","方位角":"4","详细描述":"most extremely faint, extremely small, extremely extended, 8th magnitude star to northwest","简略描述":"eeF, eS, eE, * 8 np"},{"ID":"13078","标识":"IC5238","M标识":"IC5238","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h41m29.9s","赤经D(J2000)":"22.69163888888889","赤纬(J2000)":"-60h45m28s","赤纬D(J2000)":"-60.757777777777775","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"60","详细描述":"faint, very small, very little extended","简略描述":"F, vS, vlE"},{"ID":"13079","标识":"IC5239","M标识":"IC5239","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h40m45s","赤经D(J2000)":"22.679166666666667","赤纬(J2000)":"-38h2m36s","赤纬D(J2000)":"-38.04333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, pretty small, round","简略描述":"vF, pS, R"},{"ID":"13080","标识":"IC5240","M标识":"IC5240","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBa","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h41m52.1s","赤经D(J2000)":"22.697805555555554","赤纬(J2000)":"-44h46m1s","赤纬D(J2000)":"-44.76694444444444","可见光星等V":"11.9","摄影(蓝光)星等B":"12.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.8","短轴(分)":"1.8","方位角":"100","详细描述":"pretty faint, pretty large, round, faint star to southeast","简略描述":"pF, pL, R, F * sf"},{"ID":"13081","标识":"IC5241","M标识":"IC5241","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h41m38.5s","赤经D(J2000)":"22.694027777777777","赤纬(J2000)":"+2h38m23s","赤纬D(J2000)":"2.6397222222222223","可见光星等V":"13.9","摄影(蓝光)星等B":"14.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1","短轴(分)":"0.8","方位角":"21","详细描述":"pretty bright, considerably small, round, gradually brighter middle, mottled but not resolved","简略描述":"pB, cS, R, gbM, r"},{"ID":"13082","标识":"IC5242","M标识":"IC5242","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h41m15.1s","赤经D(J2000)":"22.687527777777778","赤纬(J2000)":"+23h24m25s","赤纬D(J2000)":"23.40694444444444","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, small, round, gradually brighter middle, 13th magnitude star to northeast","简略描述":"F, S, R, gbM, * 13 nf"},{"ID":"13083","标识":"IC5243","M标识":"IC5243","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h41m24.5s","赤经D(J2000)":"22.69013888888889","赤纬(J2000)":"+23h22m32s","赤纬D(J2000)":"23.375555555555557","可见光星等V":"14.5","摄影(蓝光)星等B":"14.8","B-V":"0.3","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"30","详细描述":"faint, considerably small, irregular figure, diffuse","简略描述":"F, cS, iF, dif"},{"ID":"13084","标识":"IC5244","M标识":"IC5244","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h44m13.5s","赤经D(J2000)":"22.737083333333334","赤纬(J2000)":"-64h2m35s","赤纬D(J2000)":"-64.04305555555555","可见光星等V":"12.6","摄影(蓝光)星等B":"13.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"3","短轴(分)":"0.4","方位角":"178","详细描述":"extremely faint, pretty small, extremely extended 0°, stellar nucleus","简略描述":"eF, pS, eE 0°, stell N"},{"ID":"13085","标识":"IC5245","M标识":"IC5245","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h44m56.6s","赤经D(J2000)":"22.749055555555557","赤纬(J2000)":"-65h21m27s","赤纬D(J2000)":"-65.35749999999999","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"","详细描述":"extremely faint, extremely small, round, faint star 0.5 arcmin to northwest","简略描述":"eF, eS, R, F * np 0'.5"},{"ID":"13086","标识":"IC5246","M标识":"IC5246","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h46m39.5s","赤经D(J2000)":"22.777638888888887","赤纬(J2000)":"-64h53m52s","赤纬D(J2000)":"-64.89777777777779","可见光星等V":"13.8","摄影(蓝光)星等B":"14.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.6","方位角":"151","详细描述":"extremely faint, extremely small","简略描述":"eF, eS"},{"ID":"13087","标识":"IC5247","M标识":"IC5247","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc ","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h46m49.9s","赤经D(J2000)":"22.780527777777777","赤纬(J2000)":"-65h16m25s","赤纬D(J2000)":"-65.27361111111111","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.4","方位角":"124","详细描述":"very faint, very small, much extended 125°, much brighter middle","简略描述":"vF, vS, mE 125°, mbM"},{"ID":"13088","标识":"IC5248","M标识":"IC5248","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h44m42.7s","赤经D(J2000)":"22.745194444444447","赤纬(J2000)":"-0h20m32s","赤纬D(J2000)":"-0.3422222222222222","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"suspected (13.5 magnitude)","简略描述":"Susp (13.5 magn)"},{"ID":"13089","标识":"IC5249","M标识":"IC5249","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h47m6.4s","赤经D(J2000)":"22.785111111111114","赤纬(J2000)":"-64h49m50s","赤纬D(J2000)":"-64.83055555555555","可见光星等V":"13.6","摄影(蓝光)星等B":"14.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"3.6","短轴(分)":"0.4","方位角":"14","详细描述":"extremely faint, very small, extremely extended 15°, very little brighter middle","简略描述":"eF, vS, eE 15°, vlbM"},{"ID":"13090","标识":"IC5250","M标识":"IC5250","拓展名":"A","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h47m17.2s","赤经D(J2000)":"22.788111111111114","赤纬(J2000)":"-65h3m38s","赤纬D(J2000)":"-65.06055555555555","可见光星等V":"11.1","摄影(蓝光)星等B":"12.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"3.1","短轴(分)":"3","方位角":"","详细描述":"considerably bright, small, round, faint star 0.5 arcmin to east","简略描述":"cB, S, R, F * f 0'.5"},{"ID":"13091","标识":"IC5251","M标识":"IC5251","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h45m10.7s","赤经D(J2000)":"22.752972222222223","赤纬(J2000)":"+11h9m30s","赤纬D(J2000)":"11.158333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint","简略描述":"eF"},{"ID":"13092","标识":"IC5252","M标识":"IC5252","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h48m8.8s","赤经D(J2000)":"22.802444444444443","赤纬(J2000)":"-68h54m10s","赤纬D(J2000)":"-68.90277777777779","可见光星等V":"12.9","摄影(蓝光)星等B":"13.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"172","详细描述":"faint, small, round, considerably brighter middle","简略描述":"F, S, R, cbM"},{"ID":"13093","标识":"IC5253","M标识":"IC5253","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h45m29s","赤经D(J2000)":"22.758055555555554","赤纬(J2000)":"+21h48m29s","赤纬D(J2000)":"21.808055555555555","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.9","短轴(分)":"0.3","方位角":"163","详细描述":"faint, small, extended north-south, 13.5 magnitude star near","简略描述":"F, S, E ns, * 13.5 nr"},{"ID":"13094","标识":"IC5254","M标识":"IC5254","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h46m0.6s","赤经D(J2000)":"22.76683333333333","赤纬(J2000)":"+21h7m32s","赤纬D(J2000)":"21.125555555555557","可见光星等V":"14.9","摄影(蓝光)星等B":"15.6","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"85","详细描述":"faint, very small, round, mottled but not resolved, 14th magnitude star attached on southeast, (NGC) 7375 to east","简略描述":"F, vS, R, r, * 14 att sf, 7375 f"},{"ID":"13095","标识":"IC5255","M标识":"IC5255","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h45m46.5s","赤经D(J2000)":"22.762916666666666","赤纬(J2000)":"+36h13m38s","赤纬D(J2000)":"36.227222222222224","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, gradually brighter middle","简略描述":"F, S, R, gbM"},{"ID":"13096","标识":"IC5256","M标识":"IC5256","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBd","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h49m45.6s","赤经D(J2000)":"22.829333333333334","赤纬(J2000)":"-68h41m25s","赤纬D(J2000)":"-68.69027777777778","可见光星等V":"13.9","摄影(蓝光)星等B":"14.5","B-V":"0.6","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"19","详细描述":"very faint, very small, considerably extended 25°, considerably brighter middle","简略描述":"vF, vS, cE 25°, cbM"},{"ID":"13097","标识":"IC5257","M标识":"IC5257","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h52m16.4s","赤经D(J2000)":"22.871222222222222","赤纬(J2000)":"-67h25m9s","赤纬D(J2000)":"-67.41916666666667","可见光星等V":"14.5","摄影(蓝光)星等B":"15.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"13","详细描述":"extremely faint, most extremely small, stellar nucleus","简略描述":"eF, eeS, stell N"},{"ID":"13098","标识":"IC5258","M标识":"IC5258","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h51m31.5s","赤经D(J2000)":"22.85875","赤纬(J2000)":"+23h4m52s","赤纬D(J2000)":"23.08111111111111","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1.2","短轴(分)":"0.9","方位角":"105","详细描述":"faint, very small, round, much brighter middle, mottled but not resolved","简略描述":"F, vS, R, mbM, r"},{"ID":"13099","标识":"IC5259","M标识":"IC5259","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h52m45.6s","赤经D(J2000)":"22.879333333333335","赤纬(J2000)":"+36h42m40s","赤纬D(J2000)":"36.711111111111116","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"nebula; 9.5 magnitude double star 2 arcmin to east","简略描述":"Neb, D * 9.5 f 2'"},{"ID":"13100","标识":"IC5260","M标识":"IC5260","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E\/SB0","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h54m18.6s","赤经D(J2000)":"22.905166666666666","赤纬(J2000)":"-39h18m53s","赤纬D(J2000)":"-39.31472222222222","可见光星等V":"12.8","摄影(蓝光)星等B":"13.7","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.8","方位角":"2","详细描述":"most extremely faint, pretty small, round, 9th magnitude star to southwest, very difficult","简略描述":"eeF, pS, R, * 9 sp, v diffic"},{"ID":"13101","标识":"IC5261","M标识":"IC5261","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"22h54m25.2s","赤经D(J2000)":"22.907","赤纬(J2000)":"-20h21m48s","赤纬D(J2000)":"-20.363333333333333","可见光星等V":"13.2","摄影(蓝光)星等B":"13.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"1.5","短轴(分)":"1.3","方位角":"59","详细描述":"most extremely faint, pretty large, round, very difficult, 9th magnitude star 22 seconds of time to west","简略描述":"eeF, pL, R, v diffic, * 9 p 22s"},{"ID":"13102","标识":"IC5262","M标识":"IC5262","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h55m20.5s","赤经D(J2000)":"22.922361111111112","赤纬(J2000)":"-33h53m17s","赤纬D(J2000)":"-33.88805555555555","可见光星等V":"13.4","摄影(蓝光)星等B":"14.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"130","详细描述":"most extremely faint, pretty small, round, very difficult","简略描述":"eeF, pS, R, v diffic"},{"ID":"13103","标识":"IC5263","M标识":"IC5263","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"22h58m13.6s","赤经D(J2000)":"22.970444444444443","赤纬(J2000)":"-69h3m6s","赤纬D(J2000)":"-69.05166666666666","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.4","短轴(分)":"0.3","方位角":"146","详细描述":"considerably faint, small, round, star in nebulosity","简略描述":"cF, S, R, * in neb"},{"ID":"13104","标识":"IC5264","M标识":"IC5264","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h56m52.7s","赤经D(J2000)":"22.947972222222223","赤纬(J2000)":"-36h33m16s","赤纬D(J2000)":"-36.55444444444444","可见光星等V":"12.5","摄影(蓝光)星等B":"13.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"2.4","短轴(分)":"0.5","方位角":"82","详细描述":"very faint, small, very much extended, southwestern of 2","简略描述":"vF, S, vmE, sp of 2"},{"ID":"13105","标识":"IC5265","M标识":"IC5265","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E3","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h57m10.4s","赤经D(J2000)":"22.95288888888889","赤纬(J2000)":"-36h27m45s","赤纬D(J2000)":"-36.462500000000006","可见光星等V":"10","摄影(蓝光)星等B":"11","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"5.2","短轴(分)":"1.8","方位角":"40","详细描述":"bright, considerably large, round, between 2 stars to east and west, northeastern of 2 (the other being IC 5264), [perhaps = (NGC) 7418?]","简略描述":"B, cL, R, bet 2 st pf, nf of 2 [? 7418]"},{"ID":"13106","标识":"IC5266","M标识":"IC5266","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h58m21s","赤经D(J2000)":"22.972499999999997","赤纬(J2000)":"-65h7m45s","赤纬D(J2000)":"-65.12916666666666","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1.6","短轴(分)":"0.4","方位角":"33","详细描述":"extremely faint, very small, extremely extended, stellar nucleus","简略描述":"eF, vS, eE, stell N"},{"ID":"13107","标识":"IC5267","M标识":"IC5267","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h57m13.7s","赤经D(J2000)":"22.953805555555554","赤纬(J2000)":"-43h23m45s","赤纬D(J2000)":"-43.395833333333336","可见光星等V":"10.5","摄影(蓝光)星等B":"11.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"5.2","短轴(分)":"3.9","方位角":"140","详细描述":"pretty bright, small, round, much brighter middle","简略描述":"pB, S, R, mbM"},{"ID":"13108","标识":"IC5268","M标识":"IC5268","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"蝎虎座","星座(En)":"LAC","赤经(J2000)":"22h56m12s","赤经D(J2000)":"22.936666666666667","赤纬(J2000)":"+36h35m48s","赤纬D(J2000)":"36.59666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"bright, small","简略描述":"B, S"},{"ID":"13109","标识":"IC5269","M标识":"IC5269","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h57m43.4s","赤经D(J2000)":"22.962055555555555","赤纬(J2000)":"-36h1m36s","赤纬D(J2000)":"-36.026666666666664","可见光星等V":"12.2","摄影(蓝光)星等B":"13.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1.7","短轴(分)":"0.8","方位角":"51","详细描述":"very faint, pretty small, round, northwestern of 2","简略描述":"vF, pS, R, np of 2"},{"ID":"13110","标识":"IC5270","M标识":"IC5270","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h57m55s","赤经D(J2000)":"22.96527777777778","赤纬(J2000)":"-35h51m28s","赤纬D(J2000)":"-35.85777777777778","可见光星等V":"12.2","摄影(蓝光)星等B":"12.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"3.2","短轴(分)":"0.6","方位角":"103","详细描述":"very faint, pretty small, much extended, southeastern of 2","简略描述":"vF, pS, mE, sf of 2"},{"ID":"13111","标识":"IC5271","M标识":"IC5271","拓展名":"","组件":"","Class":"","业余排名":"9","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"南鱼座","星座(En)":"PSA","赤经(J2000)":"22h58m1.6s","赤经D(J2000)":"22.96711111111111","赤纬(J2000)":"-33h44m32s","赤纬D(J2000)":"-33.742222222222225","可见光星等V":"10.8","摄影(蓝光)星等B":"11.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"2.6","短轴(分)":"0.9","方位角":"138","详细描述":"pretty faint, pretty small, much extended 145°, considerably brighter middle","简略描述":"pF, pS, mE 145°, cbM"},{"ID":"13112","标识":"IC5272","M标识":"IC5272","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sm","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"22h59m31.2s","赤经D(J2000)":"22.992","赤纬(J2000)":"-65h11m34s","赤纬D(J2000)":"-65.19277777777778","可见光星等V":"14.1","摄影(蓝光)星等B":"14.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.2","短轴(分)":"0.8","方位角":"33","详细描述":"extremely faint, very small, round","简略描述":"eF, vS, R"},{"ID":"13113","标识":"IC5273","M标识":"IC5273","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"22h59m26.7s","赤经D(J2000)":"22.990750000000002","赤纬(J2000)":"-37h42m19s","赤纬D(J2000)":"-37.70527777777778","可见光星等V":"11.4","摄影(蓝光)星等B":"11.8","B-V":"0.4","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"2.6","短轴(分)":"1.7","方位角":"56","详细描述":"very faint, considerably large, a little extended, 4 stars to west","简略描述":"vF, cL, lE, 4 st p"},{"ID":"13114","标识":"IC5274","M标识":"IC5274","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h58m27.6s","赤经D(J2000)":"22.97433333333333","赤纬(J2000)":"+18h55m9s","赤纬D(J2000)":"18.91916666666667","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"0.8","短轴(分)":"0.8","方位角":"","详细描述":"faint, considerably small, round, gradually brighter middle and nucleus","简略描述":"F, cS, R, gbMN"},{"ID":"13115","标识":"IC5275","M标识":"IC5275","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h58m39.2s","赤经D(J2000)":"22.977555555555554","赤纬(J2000)":"+18h51m45s","赤纬D(J2000)":"18.8625","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty faint, very small, diffuse","简略描述":"pF, vS, dif"},{"ID":"13116","标识":"IC5276","M标识":"IC5276","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"22h58m39.8s","赤经D(J2000)":"22.97772222222222","赤纬(J2000)":"+18h49m12s","赤纬D(J2000)":"18.82","可见光星等V":"14.2","摄影(蓝光)星等B":"15.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"45","详细描述":"faint, small, extended 135°, gradually brighter middle, mottled but not resolved, between 2 faint stars","简略描述":"F, S, E 135°, gbM, r, bet 2 F st"},{"ID":"13117","标识":"IC5277","M标识":"IC5277","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h1m59.4s","赤经D(J2000)":"23.033166666666666","赤纬(J2000)":"-65h11m53s","赤纬D(J2000)":"-65.19805555555556","可见光星等V":"14.3","摄影(蓝光)星等B":"15.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"very faint, small, round, almost a star; suspected","简略描述":"vF, S, R, alm. a *, susp"},{"ID":"13118","标识":"IC5278","M标识":"IC5278","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h0m15.9s","赤经D(J2000)":"23.004416666666668","赤纬(J2000)":"-8h10m43s","赤纬D(J2000)":"-8.17861111111111","可见光星等V":"15.2","摄影(蓝光)星等B":"15.8","B-V":"0.6","表面亮度(mag\/arcmin2)":"14.3","长轴(分)":"1.2","短轴(分)":"0.4","方位角":"85","详细描述":"extremely faint (not verified)","简略描述":"eF (not verified)"},{"ID":"13119","标识":"IC5279","M标识":"IC5279","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"23h3m2.6s","赤经D(J2000)":"23.050722222222223","赤纬(J2000)":"-69h12m36s","赤纬D(J2000)":"-69.21000000000001","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"27","详细描述":"very faint, very small, considerably extended 40°, stellar nucleus","简略描述":"vF, vS, cE 40°, stell N"},{"ID":"13120","标识":"IC5280","M标识":"IC5280","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h3m50s","赤经D(J2000)":"23.06388888888889","赤纬(J2000)":"-65h12m27s","赤纬D(J2000)":"-65.2075","可见光星等V":"14","摄影(蓝光)星等B":"14.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"0.5","方位角":"4","详细描述":"extremely faint, very small, extremely extended 5°, stellar nucleus, between 2 stars; suspected","简略描述":"eF, vS, eE 5°, stell N, bet 2 st, susp"},{"ID":"13121","标识":"IC5281","M标识":"IC5281","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h2m3.4s","赤经D(J2000)":"23.03427777777778","赤纬(J2000)":"+27h3m11s","赤纬D(J2000)":"27.053055555555556","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.5","短轴(分)":"0.5","方位角":"26","详细描述":"extremely faint, stellar, 13th magnitude star 2.5 arcmin east southeast","简略描述":"eF, stell, * 13 sff 2'.5"},{"ID":"13122","标识":"IC5282","M标识":"IC5282","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sd","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h2m48.2s","赤经D(J2000)":"23.046722222222225","赤纬(J2000)":"+21h52m28s","赤纬D(J2000)":"21.874444444444446","可见光星等V":"14.3","摄影(蓝光)星等B":"14.9","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"173","详细描述":"faint, considerably small, irregular figure, very little brighter middle","简略描述":"F, cS, iF, vlbM"},{"ID":"13123","标识":"IC5283","M标识":"IC5283","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc\/P","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h3m17.7s","赤经D(J2000)":"23.054916666666667","赤纬(J2000)":"+8h53m38s","赤纬D(J2000)":"8.893888888888888","可见光星等V":"13.8","摄影(蓝光)星等B":"14.8","B-V":"1","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"135","详细描述":"faint, small, round, (WH) III 230 two seconds of time to west and one arcmin to south","简略描述":"F, S, R, II 230 p 2s, 1' s"},{"ID":"13124","标识":"IC5284","M标识":"IC5284","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h6m46.3s","赤经D(J2000)":"23.112861111111112","赤纬(J2000)":"+19h7m17s","赤纬D(J2000)":"19.12138888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.8","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"1","短轴(分)":"0.2","方位角":"141","详细描述":"faint, considerably small, round, nuclear","简略描述":"F, cS, R, N"},{"ID":"13125","标识":"IC5285","M标识":"IC5285","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h6m58.9s","赤经D(J2000)":"23.11636111111111","赤纬(J2000)":"+22h56m13s","赤纬D(J2000)":"22.936944444444446","可见光星等V":"12.6","摄影(蓝光)星等B":"13.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.6","短轴(分)":"1.2","方位角":"100","详细描述":"faint, very small, round, 9.4 magnitude star 1.5 arcmin to south","简略描述":"F, vS, R, * 9.4 s 1'.5"},{"ID":"13126","标识":"IC5286","M标识":"IC5286","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"23h9m56s","赤经D(J2000)":"23.165555555555553","赤纬(J2000)":"-68h15m12s","赤纬D(J2000)":"-68.25333333333333","可见光星等V":"15.4","摄影(蓝光)星等B":"16.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"114","详细描述":"most extremely faint, extremely small, much extended 130°, 2 stars to south, suspected","简略描述":"eeF, eS, mE 130°, 2 st s, susp"},{"ID":"13127","标识":"IC5287","M标识":"IC5287","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h9m20.3s","赤经D(J2000)":"23.155638888888888","赤纬(J2000)":"+0h45m25s","赤纬D(J2000)":"0.7569444444444444","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"1","方位角":"138","详细描述":"faint, very small, round, very little brighter middle","简略描述":"F, vS, R, vlbM"},{"ID":"13128","标识":"IC5288","M标识":"IC5288","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"23h11m44.3s","赤经D(J2000)":"23.19563888888889","赤纬(J2000)":"-68h5m39s","赤纬D(J2000)":"-68.09416666666667","可见光星等V":"13.7","摄影(蓝光)星等B":"14.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"60","详细描述":"extremely faint, extremely small, almost stellar, suspected","简略描述":"eF, eS, alm *, susp"},{"ID":"13129","标识":"IC5289","M标识":"IC5289","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"RN2","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h11m17.2s","赤经D(J2000)":"23.188111111111112","赤纬(J2000)":"-32h27m5s","赤纬D(J2000)":"-32.45138888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.1","短轴(分)":"0.8","方位角":"23","详细描述":"small cluster, stars extremely faint, in nebulosity","简略描述":"S Cl, st eF, in neb"},{"ID":"13130","标识":"IC5290","M标识":"IC5290","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h12m53.1s","赤经D(J2000)":"23.21475","赤纬(J2000)":"-23h28m8s","赤纬D(J2000)":"-23.468888888888888","可见光星等V":"13.2","摄影(蓝光)星等B":"14.1","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"66","详细描述":"very faint, small, stellar nucleus","简略描述":"vF, S, stell N"},{"ID":"13131","标识":"IC5291","M标识":"IC5291","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h13m39.6s","赤经D(J2000)":"23.227666666666664","赤纬(J2000)":"+9h14m30s","赤纬D(J2000)":"9.241666666666665","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, very small, round, nuclear, stellar","简略描述":"F, vS, R, N, stell"},{"ID":"13132","标识":"IC5292","M标识":"IC5292","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h13m47.1s","赤经D(J2000)":"23.22975","赤纬(J2000)":"+13h41m13s","赤纬D(J2000)":"13.686944444444444","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.6","短轴(分)":"0.6","方位角":"","详细描述":"very faint, small, suddenly a little brighter middle","简略描述":"vF, S, slbM"},{"ID":"13133","标识":"IC5293","M标识":"IC5293","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h14m44.6s","赤经D(J2000)":"23.245722222222224","赤纬(J2000)":"+25h8m28s","赤纬D(J2000)":"25.141111111111112","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"175","详细描述":"faint, small, like a double star in nebulosity","简略描述":"F, S, like D * in neb"},{"ID":"13134","标识":"IC5294","M标识":"IC5294","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBab","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"23h16m10.6s","赤经D(J2000)":"23.26961111111111","赤纬(J2000)":"-42h35m5s","赤纬D(J2000)":"-42.584722222222226","可见光星等V":"10.6","摄影(蓝光)星等B":"11.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"3.4","短轴(分)":"2.7","方位角":"1","详细描述":"pretty bright, pretty small, round, 8th magnitude star to west","简略描述":"pB, pS, R, * 8 p"},{"ID":"13135","标识":"IC5295","M标识":"IC5295","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h15m29.1s","赤经D(J2000)":"23.25808333333333","赤纬(J2000)":"+25h7m16s","赤纬D(J2000)":"25.121111111111112","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"","详细描述":"faint, very small, round, nuclear","简略描述":"F, vS, R, N"},{"ID":"13136","标识":"IC5296","M标识":"IC5296","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h15m43.7s","赤经D(J2000)":"23.262138888888888","赤纬(J2000)":"+25h5m39s","赤纬D(J2000)":"25.094166666666666","可见光星等V":"14.6","摄影(蓝光)星等B":"15.4","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"25","详细描述":"faint, small, round, 15th magnitude star attached","简略描述":"F, S, R, * 15 att"},{"ID":"13137","标识":"IC5297","M标识":"IC5297","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h15m58.4s","赤经D(J2000)":"23.266222222222222","赤纬(J2000)":"+25h1m33s","赤纬D(J2000)":"25.02583333333333","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"11.8","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"faint, small, round, nuclear","简略描述":"F, S, R, N"},{"ID":"13138","标识":"IC5298","M标识":"IC5298","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h16m0.6s","赤经D(J2000)":"23.26683333333333","赤纬(J2000)":"+25h33m26s","赤纬D(J2000)":"25.557222222222222","可见光星等V":"14","摄影(蓝光)星等B":"14.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"108","详细描述":"very faint, very small, diffuse","简略描述":"vF, vS, dif"},{"ID":"13139","标识":"IC5299","M标识":"IC5299","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h16m19.1s","赤经D(J2000)":"23.27197222222222","赤纬(J2000)":"+20h51m21s","赤纬D(J2000)":"20.855833333333333","可见光星等V":"15","摄影(蓝光)星等B":"15.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"10","详细描述":"faint, extremely small, 13th magnitude close to south","简略描述":"F, eS, * 13 close s"},{"ID":"13140","标识":"IC5300","M标识":"IC5300","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h16m34.1s","赤经D(J2000)":"23.276138888888887","赤纬(J2000)":"+20h49m43s","赤纬D(J2000)":"20.828611111111112","可见光星等V":"14.9","摄影(蓝光)星等B":"15.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"130","详细描述":"","简略描述":"F, S, R, neb * 15"},{"ID":"13141","标识":"IC5301","M标识":"IC5301","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"印地安座","星座(En)":"IND","赤经(J2000)":"23h18m58.8s","赤经D(J2000)":"23.316333333333333","赤纬(J2000)":"-69h33m45s","赤纬D(J2000)":"-69.5625","可见光星等V":"14.6","摄影(蓝光)星等B":"15.5","B-V":"0.9","表面亮度(mag\/arcmin2)":"14.2","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"87","详细描述":"","简略描述":"eeF, eS, vF * f 1', susp"},{"ID":"13142","标识":"IC5302","M标识":"IC5302","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h19m36.6s","赤经D(J2000)":"23.326833333333333","赤纬(J2000)":"-64h34m8s","赤纬D(J2000)":"-64.56888888888888","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"1.2","短轴(分)":"0.3","方位角":"23","详细描述":"very faint, very small, 2 stars near, suspected","简略描述":"vF, vS, 2 st nr, susp"},{"ID":"13143","标识":"IC5303","M标识":"IC5303","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*2","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h17m54.8s","赤经D(J2000)":"23.298555555555556","赤纬(J2000)":"+0h15m53s","赤纬D(J2000)":"0.26472222222222225","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"vF, S, sbM (? D * in M)"},{"ID":"13144","标识":"IC5304","M标识":"IC5304","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h18m52.5s","赤经D(J2000)":"23.314583333333335","赤纬(J2000)":"-10h15m32s","赤纬D(J2000)":"-10.258888888888889","可见光星等V":"13.4","摄影(蓝光)星等B":"14.4","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.4","短轴(分)":"0.9","方位角":"12","详细描述":"","简略描述":"eF, S, R, 3 or 4 F st sp"},{"ID":"13145","标识":"IC5305","M标识":"IC5305","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h18m6.1s","赤经D(J2000)":"23.301694444444447","赤纬(J2000)":"+10h18m1s","赤纬D(J2000)":"10.300277777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"141","详细描述":"","简略描述":"pF, vS, 7594 nr"},{"ID":"13146","标识":"IC5306","M标识":"IC5306","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h18m11.3s","赤经D(J2000)":"23.30313888888889","赤纬(J2000)":"+10h14m45s","赤纬D(J2000)":"10.245833333333332","可见光星等V":"14.8","摄影(蓝光)星等B":"15.6","B-V":"0.8","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.7","短轴(分)":"0.3","方位角":"80","详细描述":"very faint, small","简略描述":"vF, S"},{"ID":"13147","标识":"IC5307","M标识":"IC5307","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h18m21.9s","赤经D(J2000)":"23.306083333333333","赤纬(J2000)":"+10h14m11s","赤纬D(J2000)":"10.236388888888888","可见光星等V":"16.1","摄影(蓝光)星等B":"17.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.9","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"60","详细描述":"very faint, very small","简略描述":"vF, vS"},{"ID":"13148","标识":"IC5308","M标识":"IC5308","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SBc","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"23h19m20.8s","赤经D(J2000)":"23.322444444444443","赤纬(J2000)":"-42h15m29s","赤纬D(J2000)":"-42.25805555555556","可见光星等V":"11.5","摄影(蓝光)星等B":"12.1","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"4.4","短轴(分)":"1.4","方位角":"57","详细描述":"","简略描述":"eeF, S, cE, f 7599"},{"ID":"13149","标识":"IC5309","M标识":"IC5309","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h19m11.7s","赤经D(J2000)":"23.319916666666668","赤纬(J2000)":"+8h6m36s","赤纬D(J2000)":"8.11","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.4","短轴(分)":"0.6","方位角":"23","详细描述":"","简略描述":"F, S, fan-shaped, * att s"},{"ID":"13150","标识":"IC5310","M标识":"IC5310","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h20m47.7s","赤经D(J2000)":"23.34658333333333","赤纬(J2000)":"-22h8m56s","赤纬D(J2000)":"-22.148888888888887","可见光星等V":"14.8","摄影(蓝光)星等B":"15.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"","简略描述":"eF, eS, alm stell, * 9.5 n 5'"},{"ID":"13151","标识":"IC5311","M标识":"IC5311","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h20m33.8s","赤经D(J2000)":"23.34272222222222","赤纬(J2000)":"+17h15m55s","赤纬D(J2000)":"17.26527777777778","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, susp, 2'.5 nff II 250"},{"ID":"13152","标识":"IC5312","M标识":"IC5312","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h20m58.2s","赤经D(J2000)":"23.3495","赤纬(J2000)":"+19h19m7s","赤纬D(J2000)":"19.31861111111111","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"11.9","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"99","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"13153","标识":"IC5313","M标识":"IC5313","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"SB0","星座(Zh)":"天鹤座","星座(En)":"GRU","赤经(J2000)":"23h22m0.9s","赤经D(J2000)":"23.36691666666667","赤纬(J2000)":"-42h28m49s","赤纬D(J2000)":"-42.48027777777778","可见光星等V":"12.1","摄影(蓝光)星等B":"13","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.4","短轴(分)":"1.2","方位角":"92","详细描述":"most extremely faint, pretty large, round, 10th magnitude star to southwest","简略描述":"eeF, pL, R, * 10 sp"},{"ID":"13154","标识":"IC5314","M标识":"IC5314","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"C","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h21m8.5s","赤经D(J2000)":"23.35236111111111","赤纬(J2000)":"+19h18m43s","赤纬D(J2000)":"19.311944444444446","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, small, round, gradually brighter middle, mottled but not resolved","简略描述":"F, S, R, gbM, r"},{"ID":"13155","标识":"IC5315","M标识":"IC5315","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h21m18.2s","赤经D(J2000)":"23.355055555555555","赤纬(J2000)":"+25h23m9s","赤纬D(J2000)":"25.385833333333334","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"138","详细描述":"","简略描述":"F, vS, like neb D * 15"},{"ID":"13156","标识":"IC5316","M标识":"IC5316","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h21m54s","赤经D(J2000)":"23.365000000000002","赤纬(J2000)":"+21h12m11s","赤纬D(J2000)":"21.203055555555554","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"very faint, very small, round, nuclear, stellar","简略描述":"vF, vS, R, N, stell"},{"ID":"13157","标识":"IC5317","M标识":"IC5317","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h23m28.7s","赤经D(J2000)":"23.391305555555554","赤纬(J2000)":"+21h9m48s","赤纬D(J2000)":"21.16333333333333","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"1","短轴(分)":"0.7","方位角":"21","详细描述":"faint, small, round, gradually brighter middle and nucleus, mottled but not resolved","简略描述":"F, S, R, gbMN, r"},{"ID":"13158","标识":"IC5318","M标识":"IC5318","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h24m6.9s","赤经D(J2000)":"23.401916666666665","赤纬(J2000)":"-11h51m37s","赤纬D(J2000)":"-11.860277777777778","可见光星等V":"13.3","摄影(蓝光)星等B":"14","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.6","方位角":"135","详细描述":"","简略描述":"vF, vS, * 9.5 p 1s"},{"ID":"13159","标识":"IC5319","M标识":"IC5319","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h24m48.9s","赤经D(J2000)":"23.41358333333333","赤纬(J2000)":"+13h59m49s","赤纬D(J2000)":"13.996944444444443","可见光星等V":"15.1","摄影(蓝光)星等B":"16.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"","简略描述":"eF, eS, * 9.5 f, 7651 nr"},{"ID":"13160","标识":"IC5320","M标识":"IC5320","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h28m21.8s","赤经D(J2000)":"23.47272222222222","赤纬(J2000)":"-67h45m36s","赤纬D(J2000)":"-67.76","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.6","短轴(分)":"0.5","方位角":"135","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"13161","标识":"IC5321","M标识":"IC5321","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sa","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h26m20s","赤经D(J2000)":"23.43888888888889","赤纬(J2000)":"-17h57m24s","赤纬D(J2000)":"-17.956666666666667","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.8","方位角":"43","详细描述":"extremely faint, very small, round, 10th magnitude star 1 arcmin to northwest","简略描述":"eF, vS, R, * 10 np 1'"},{"ID":"13162","标识":"IC5322","M标识":"IC5322","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h28m30.8s","赤经D(J2000)":"23.47522222222222","赤纬(J2000)":"-67h45m38s","赤纬D(J2000)":"-67.76055555555556","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.7","短轴(分)":"0.5","方位角":"83","详细描述":"brighter middle, magnitude 14","简略描述":"bM, magn 14"},{"ID":"13163","标识":"IC5323","M标识":"IC5323","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SB0-a","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h27m37.1s","赤经D(J2000)":"23.460305555555554","赤纬(J2000)":"-67h48m55s","赤纬D(J2000)":"-67.81527777777778","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.6","短轴(分)":"1.1","方位角":"160","详细描述":"faint, small, brighter middle","简略描述":"F, S, bM"},{"ID":"13164","标识":"IC5324","M标识":"IC5324","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h28m17.6s","赤经D(J2000)":"23.471555555555554","赤纬(J2000)":"-67h49m16s","赤纬D(J2000)":"-67.82111111111111","可见光星等V":"13","摄影(蓝光)星等B":"14","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"1","方位角":"37","详细描述":"faint, small, brighter middle","简略描述":"F, S, bM"},{"ID":"13165","标识":"IC5325","M标识":"IC5325","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBbc","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"23h28m43.1s","赤经D(J2000)":"23.478638888888888","赤纬(J2000)":"-41h20m1s","赤纬D(J2000)":"-41.33361111111111","可见光星等V":"11.3","摄影(蓝光)星等B":"11.8","B-V":"0.5","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.8","短轴(分)":"2.5","方位角":"8","详细描述":"faint, small, round, gradually brighter middle, star 1 arcmin to southwest","简略描述":"F, S, R, gbM, * sp 1'"},{"ID":"13166","标识":"IC5326","M标识":"IC5326","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h29m35.2s","赤经D(J2000)":"23.493111111111112","赤纬(J2000)":"-28h49m53s","赤纬D(J2000)":"-28.83138888888889","可见光星等V":"13.9","摄影(蓝光)星等B":"14.7","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.4","方位角":"117","详细描述":"most extremely faint, small, much extended, 8th magnitude star to west","简略描述":"eeF, S, mE, * 8 p"},{"ID":"13167","标识":"IC5327","M标识":"IC5327","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sb","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h30m47.5s","赤经D(J2000)":"23.513194444444444","赤纬(J2000)":"-13h29m7s","赤纬D(J2000)":"-13.485277777777776","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1.4","短轴(分)":"1","方位角":"170","详细描述":"","简略描述":"pF, pS, * 11 f 1'"},{"ID":"13168","标识":"IC5328","M标识":"IC5328","拓展名":"","组件":"","Class":"","业余排名":"13","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E4","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"23h33m16.3s","赤经D(J2000)":"23.55452777777778","赤纬(J2000)":"-45h0m56s","赤纬D(J2000)":"-45.01555555555556","可见光星等V":"11.4","摄影(蓝光)星等B":"12.3","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"2.4","短轴(分)":"1.5","方位角":"40","详细描述":"very faint, small, round, between 2 stars","简略描述":"vF, S, R, bet 2 st"},{"ID":"13169","标识":"IC5329","M标识":"IC5329","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h33m9.7s","赤经D(J2000)":"23.552694444444445","赤纬(J2000)":"+21h14m13s","赤纬D(J2000)":"21.236944444444447","可见光星等V":"14.7","摄影(蓝光)星等B":"15.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.7","短轴(分)":"0.2","方位角":"111","详细描述":"","简略描述":"vF, S, E 250°"},{"ID":"13170","标识":"IC5330","M标识":"IC5330","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Star(s)","含重复类型":"Star(s)","形态":"*","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h33m26.5s","赤经D(J2000)":"23.557361111111113","赤纬(J2000)":"-2h53m0s","赤纬D(J2000)":"-2.8833333333333333","可见光星等V":"99","摄影(蓝光)星等B":"15.3","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, small, brighter middle, others near","简略描述":"vF, S, bM, others nr"},{"ID":"13171","标识":"IC5331","M标识":"IC5331","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h33m24.9s","赤经D(J2000)":"23.556916666666666","赤纬(J2000)":"+21h7m48s","赤纬D(J2000)":"21.13","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"1","短轴(分)":"0.3","方位角":"18","详细描述":"","简略描述":"F, S, fan, gbM"},{"ID":"13172","标识":"IC5332","M标识":"IC5332","拓展名":"","组件":"","Class":"","业余排名":"10","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBcd","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h34m27.4s","赤经D(J2000)":"23.574277777777777","赤纬(J2000)":"-36h6m5s","赤纬D(J2000)":"-36.10138888888889","可见光星等V":"10.5","摄影(蓝光)星等B":"11.2","B-V":"0.7","表面亮度(mag\/arcmin2)":"15","长轴(分)":"8.9","短轴(分)":"8.2","方位角":"159","详细描述":"","简略描述":"eeF, vL, bet 2 st, D * p 45s"},{"ID":"13173","标识":"IC5333","M标识":"IC5333","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h34m52.3s","赤经D(J2000)":"23.581194444444446","赤纬(J2000)":"-65h23m46s","赤纬D(J2000)":"-65.39611111111111","可见光星等V":"13.5","摄影(蓝光)星等B":"14.3","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"1.6","短轴(分)":"0.3","方位角":"87","详细描述":"considerably bright, small, diffuse, suspected","简略描述":"cB, S, dif, susp"},{"ID":"13174","标识":"IC5334","M标识":"IC5334","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h34m36.4s","赤经D(J2000)":"23.576777777777778","赤纬(J2000)":"-4h32m2s","赤纬D(J2000)":"-4.533888888888889","可见光星等V":"13.3","摄影(蓝光)星等B":"14.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.8","短轴(分)":"0.6","方位角":"127","详细描述":"","简略描述":"Neb * 10.5 (? close D *)"},{"ID":"13175","标识":"IC5335","M标识":"IC5335","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h35m47.2s","赤经D(J2000)":"23.596444444444444","赤纬(J2000)":"-67h23m47s","赤纬D(J2000)":"-67.3963888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"15.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.1","短轴(分)":"0.5","方位角":"135","详细描述":"faint, small, suspected","简略描述":"F, S, susp"},{"ID":"13176","标识":"IC5336","M标识":"IC5336","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S?","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h36m18.7s","赤经D(J2000)":"23.605194444444447","赤纬(J2000)":"+21h5m58s","赤纬D(J2000)":"21.099444444444444","可见光星等V":"15.2","摄影(蓝光)星等B":"16","B-V":"0.8","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"45","详细描述":"faint, small, extended north-south, very little brighter middle","简略描述":"F, S, E ns, vlbM"},{"ID":"13177","标识":"IC5337","M标识":"IC5337","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h36m25.1s","赤经D(J2000)":"23.606972222222225","赤纬(J2000)":"+21h9m1s","赤纬D(J2000)":"21.150277777777777","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"11.7","长轴(分)":"0.8","短轴(分)":"0.1","方位角":"3","详细描述":"faint, small, round, gradually brighter middle and nucleus","简略描述":"F, S, R, gbMN"},{"ID":"13178","标识":"IC5338","M标识":"IC5338","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h36m30.4s","赤经D(J2000)":"23.608444444444444","赤纬(J2000)":"+21h8m43s","赤纬D(J2000)":"21.14527777777778","可见光星等V":"13.7","摄影(蓝光)星等B":"15","B-V":"1.3","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"1","短轴(分)":"0.7","方位角":"30","详细描述":"faint, small, a little extended north-south, gradually brighter middle and nucleus","简略描述":"F, S, lE ns, gbMN"},{"ID":"13179","标识":"IC5339","M标识":"IC5339","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"23h38m5.3s","赤经D(J2000)":"23.634805555555555","赤纬(J2000)":"-68h26m30s","赤纬D(J2000)":"-68.44166666666668","可见光星等V":"13.5","摄影(蓝光)星等B":"14.5","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1","短轴(分)":"0.9","方位角":"114","详细描述":"brighter middle","简略描述":"bM"},{"ID":"13180","标识":"IC5340","M标识":"IC5340","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h38m32s","赤经D(J2000)":"23.642222222222223","赤纬(J2000)":"-4h51m18s","赤纬D(J2000)":"-4.8549999999999995","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eF, * 13 n 1'.5"},{"ID":"13181","标识":"IC5341","M标识":"IC5341","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h38m26.7s","赤经D(J2000)":"23.64075","赤纬(J2000)":"+26h59m8s","赤纬D(J2000)":"26.985555555555557","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"","简略描述":"eF, eS, 7720 nr"},{"ID":"13182","标识":"IC5342","M标识":"IC5342","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h38m38.7s","赤经D(J2000)":"23.644083333333334","赤纬(J2000)":"+27h0m43s","赤纬D(J2000)":"27.011944444444445","可见光星等V":"14.6","摄影(蓝光)星等B":"15.6","B-V":"1","表面亮度(mag\/arcmin2)":"12.1","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"extremely faint, extremely small, others near","简略描述":"eF, eS, others nr"},{"ID":"13183","标识":"IC5343","M标识":"IC5343","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Irr","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h39m22.4s","赤经D(J2000)":"23.656222222222222","赤纬(J2000)":"-22h29m50s","赤纬D(J2000)":"-22.497222222222224","可见光星等V":"13.6","摄影(蓝光)星等B":"14","B-V":"0.4","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"","详细描述":"","简略描述":"eF, pS, * 7.5 sf 19s"},{"ID":"13184","标识":"IC5344","M标识":"IC5344","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h39m16s","赤经D(J2000)":"23.654444444444444","赤纬(J2000)":"-4h58m0s","赤纬D(J2000)":"-4.966666666666667","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"very faint, large, others near","简略描述":"vF, L, others nr"},{"ID":"13185","标识":"IC5345","M标识":"IC5345","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h39m32.3s","赤经D(J2000)":"23.65897222222222","赤纬(J2000)":"-22h24m48s","赤纬D(J2000)":"-22.41333333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.8","长轴(分)":"0.8","短轴(分)":"0.6","方位角":"153","详细描述":"","简略描述":"vF, vS, R, 6' n of Sw. XI."},{"ID":"13186","标识":"IC5346","M标识":"IC5346","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h41m6.3s","赤经D(J2000)":"23.685083333333335","赤纬(J2000)":"+24h57m1s","赤纬D(J2000)":"24.950277777777778","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.3","方位角":"90","详细描述":"faint, considerably small, round, gradually a very little brighter middle","简略描述":"F, cS, R, gvlbM"},{"ID":"13187","标识":"IC5347","M标识":"IC5347","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E3","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h41m36.6s","赤经D(J2000)":"23.6935","赤纬(J2000)":"+24h53m11s","赤纬D(J2000)":"24.886388888888888","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"11.5","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"135","详细描述":"very faint, very small, round, suddenly brighter middle equal to 15th magnitude star","简略描述":"vF, vS, R, sbM * 15"},{"ID":"13188","标识":"IC5348","M标识":"IC5348","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E\/SB0","星座(Zh)":"凤凰座","星座(En)":"PHE","赤经(J2000)":"23h44m59.2s","赤经D(J2000)":"23.74977777777778","赤纬(J2000)":"-42h54m36s","赤纬D(J2000)":"-42.91","可见光星等V":"11.9","摄影(蓝光)星等B":"12.9","B-V":"1","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"2.2","短轴(分)":"1.8","方位角":"105","详细描述":"extremely faint, extremely small, round","简略描述":"eF, eS, R"},{"ID":"13189","标识":"IC5349","M标识":"IC5349","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h46m22.8s","赤经D(J2000)":"23.773","赤纬(J2000)":"-28h0m18s","赤纬D(J2000)":"-28.005","可见光星等V":"14.2","摄影(蓝光)星等B":"15.2","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.9","短轴(分)":"0.2","方位角":"20","详细描述":"","简略描述":"vF, vS, vmE 200°, ? neb D *"},{"ID":"13190","标识":"IC5350","M标识":"IC5350","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h47m14.7s","赤经D(J2000)":"23.78741666666667","赤纬(J2000)":"-27h57m29s","赤纬D(J2000)":"-27.958055555555553","可见光星等V":"13.5","摄影(蓝光)星等B":"14.4","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.9","短轴(分)":"0.9","方位角":"","详细描述":"","简略描述":"eeF, eS, R, * 9 nr f"},{"ID":"13191","标识":"IC5351","M标识":"IC5351","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h47m18.9s","赤经D(J2000)":"23.788583333333335","赤纬(J2000)":"-2h18m50s","赤纬D(J2000)":"-2.3138888888888887","可见光星等V":"13.6","摄影(蓝光)星等B":"14.7","B-V":"1.1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.5","短轴(分)":"0.4","方位角":"177","详细描述":"","简略描述":"cF, vS, bM, * 10 sf 5\" ±"},{"ID":"13192","标识":"IC5352","M标识":"IC5352","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h47m19.8s","赤经D(J2000)":"23.788833333333336","赤纬(J2000)":"-2h16m52s","赤纬D(J2000)":"-2.281111111111111","可见光星等V":"15.6","摄影(蓝光)星等B":"16.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.3","短轴(分)":"0.3","方位角":"","详细描述":"pretty faint, pretty small, gradually brighter middle","简略描述":"pF, pS, gbM"},{"ID":"13193","标识":"IC5353","M标识":"IC5353","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h47m28.6s","赤经D(J2000)":"23.79127777777778","赤纬(J2000)":"-28h6m32s","赤纬D(J2000)":"-28.10888888888889","可见光星等V":"13","摄影(蓝光)星等B":"13.9","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.5","短轴(分)":"1","方位角":"137","详细描述":"","简略描述":"eF, S, R, * 6 f"},{"ID":"13194","标识":"IC5354","M标识":"IC5354","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E5","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h47m28.4s","赤经D(J2000)":"23.791222222222224","赤纬(J2000)":"-28h8m9s","赤纬D(J2000)":"-28.135833333333334","可见光星等V":"14","摄影(蓝光)星等B":"15","B-V":"1","表面亮度(mag\/arcmin2)":"12.2","长轴(分)":"0.6","短轴(分)":"0.3","方位角":"71","详细描述":"most extremely faint, small, round","简略描述":"eeF, S, R"},{"ID":"13195","标识":"IC5355","M标识":"IC5355","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"SBc","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"23h47m15.2s","赤经D(J2000)":"23.787555555555556","赤纬(J2000)":"+32h46m57s","赤纬D(J2000)":"32.7825","可见光星等V":"13.7","摄影(蓝光)星等B":"14.4","B-V":"0.7","表面亮度(mag\/arcmin2)":"13","长轴(分)":"1","短轴(分)":"0.6","方位角":"10","详细描述":"faint, pretty large, extended north-south, gradually brighter middle","简略描述":"F, pL, E ns, gbM"},{"ID":"13196","标识":"IC5356","M标识":"IC5356","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h47m23.9s","赤经D(J2000)":"23.789972222222225","赤纬(J2000)":"-2h21m4s","赤纬D(J2000)":"-2.3511111111111114","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.7","长轴(分)":"0.7","短轴(分)":"0.4","方位角":"33","详细描述":"pretty faint, round, much brighter middle","简略描述":"pF, R, mbM"},{"ID":"13197","标识":"IC5357","M标识":"IC5357","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E-S0","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h47m23s","赤经D(J2000)":"23.789722222222224","赤纬(J2000)":"-2h18m2s","赤纬D(J2000)":"-2.3005555555555555","可见光星等V":"12.9","摄影(蓝光)星等B":"14","B-V":"1.1","表面亮度(mag\/arcmin2)":"12","长轴(分)":"0.9","短轴(分)":"0.5","方位角":"150","详细描述":"pretty bright, round, much brighter middle","简略描述":"pB, R, mbM"},{"ID":"13198","标识":"IC5358","M标识":"IC5358","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E6","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h47m45.1s","赤经D(J2000)":"23.795861111111112","赤纬(J2000)":"-28h8m29s","赤纬D(J2000)":"-28.141388888888887","可见光星等V":"12.5","摄影(蓝光)星等B":"13.6","B-V":"1.1","表面亮度(mag\/arcmin2)":"13.6","长轴(分)":"2.6","短轴(分)":"1.1","方位角":"131","详细描述":"","简略描述":"eF, pS, bi-N 20\""},{"ID":"13199","标识":"IC5359","M标识":"IC5359","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h47m37.8s","赤经D(J2000)":"23.793833333333335","赤纬(J2000)":"-2h19m2s","赤纬D(J2000)":"-2.317222222222222","可见光星等V":"15.1","摄影(蓝光)星等B":"15.7","B-V":"0.6","表面亮度(mag\/arcmin2)":"13.2","长轴(分)":"1.1","短轴(分)":"0.2","方位角":"135","详细描述":"","简略描述":"F, pS, gbM, * 9.5 p 2'"},{"ID":"13200","标识":"IC5360","M标识":"IC5360","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h47m54.1s","赤经D(J2000)":"23.798361111111113","赤纬(J2000)":"-37h3m33s","赤纬D(J2000)":"-37.05916666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"most extremely faint, considerably small, round","简略描述":"eeF, cS, R"},{"ID":"13201","标识":"IC5361","M标识":"IC5361","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"宝瓶座","星座(En)":"AQR","赤经(J2000)":"23h51m28.8s","赤经D(J2000)":"23.858","赤纬(J2000)":"-13h22m52s","赤纬D(J2000)":"-13.381111111111112","可见光星等V":"13.1","摄影(蓝光)星等B":"14.1","B-V":"1","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"1.2","短轴(分)":"1.2","方位角":"","详细描述":"very faint, very small, brighter middle, stellar","简略描述":"vF, vS, bM, stellar"},{"ID":"13202","标识":"IC5362","M标识":"IC5362","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h51m36.8s","赤经D(J2000)":"23.860222222222223","赤纬(J2000)":"-28h21m55s","赤纬D(J2000)":"-28.36527777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"most extremely faint, pretty small, 8th magnitude star to southeast","简略描述":"eeF, pS, * 8 sf"},{"ID":"13203","标识":"IC5363","M标识":"IC5363","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"S0","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h51m36.8s","赤经D(J2000)":"23.860222222222223","赤纬(J2000)":"-28h21m55s","赤纬D(J2000)":"-28.36527777777778","可见光星等V":"12.8","摄影(蓝光)星等B":"13.8","B-V":"1","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"1.3","短轴(分)":"1.3","方位角":"","详细描述":"","简略描述":"vF, eS, R, 3 st in line p"},{"ID":"13204","标识":"IC5364","M标识":"IC5364","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h56m25.2s","赤经D(J2000)":"23.940333333333335","赤纬(J2000)":"-29h1m25s","赤纬D(J2000)":"-29.02361111111111","可见光星等V":"13.3","摄影(蓝光)星等B":"14.2","B-V":"0.9","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.7","方位角":"","详细描述":"very faint, pretty small, round, 8th magnitude star to southeast","简略描述":"vF, pS, R, * 8 sf"},{"ID":"13205","标识":"IC5365","M标识":"IC5365","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"玉夫座","星座(En)":"SCL","赤经(J2000)":"23h57m34s","赤经D(J2000)":"23.959444444444443","赤纬(J2000)":"-37h1m30s","赤纬D(J2000)":"-37.025","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"pretty bright, considerably small, very much extended, star to southeast","简略描述":"pB, cS, vmE, * sf"},{"ID":"13206","标识":"IC5366","M标识":"IC5366","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"仙后座","星座(En)":"CAS","赤经(J2000)":"23h57m42s","赤经D(J2000)":"23.961666666666666","赤纬(J2000)":"+52h47m0s","赤纬D(J2000)":"52.78333333333333","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"","简略描述":"eL, mE (30' by 10')"},{"ID":"13207","标识":"IC5367","M标识":"IC5367","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"23h58m38.8s","赤经D(J2000)":"23.977444444444444","赤纬(J2000)":"+22h26m59s","赤纬D(J2000)":"22.449722222222224","可见光星等V":"16","摄影(蓝光)星等B":"16.8","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.5","短轴(分)":"0.3","方位角":"45","详细描述":"faint, a little extended 120°, gradually brighter middle and nucleus, mottled but not resolved","简略描述":"F, lE 120°, gbMN, r"},{"ID":"13208","标识":"IC5368","M标识":"IC5368","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E3","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"23h59m6.5s","赤经D(J2000)":"23.98513888888889","赤纬(J2000)":"+6h52m25s","赤纬D(J2000)":"6.873611111111112","可见光星等V":"15.3","摄影(蓝光)星等B":"16.3","B-V":"1","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.3","短轴(分)":"0.2","方位角":"10","详细描述":"","简略描述":"eF, vS, lbM, 3' p or f from ω Pscium"},{"ID":"13209","标识":"IC5369","M标识":"IC5369","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"23h59m50.6s","赤经D(J2000)":"23.99738888888889","赤纬(J2000)":"+32h42m9s","赤纬D(J2000)":"32.7025","可见光星等V":"14.4","摄影(蓝光)星等B":"15.2","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.5","长轴(分)":"1","短轴(分)":"0.5","方位角":"85","详细描述":"faint, small, round, with a nucleus","简略描述":"F, S, R, N"},{"ID":"13210","标识":"IC5370","M标识":"IC5370","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0-a","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h0m9.1s","赤经D(J2000)":"0.0025277777777777777","赤纬(J2000)":"+32h44m20s","赤纬D(J2000)":"32.73888888888889","可见光星等V":"14.1","摄影(蓝光)星等B":"15","B-V":"0.9","表面亮度(mag\/arcmin2)":"13.4","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"117","详细描述":"pretty bright, small, round, stellar nucleus","简略描述":"pB, S, R, stell N"},{"ID":"13211","标识":"IC5371","M标识":"IC5371","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h0m14.8s","赤经D(J2000)":"0.004111111111111111","赤纬(J2000)":"+32h49m56s","赤纬D(J2000)":"32.83222222222223","可见光星等V":"14.7","摄影(蓝光)星等B":"15.7","B-V":"1","表面亮度(mag\/arcmin2)":"13.1","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, very small, 15th-magnitude star attached","简略描述":"F, vS, * 15 att"},{"ID":"13212","标识":"IC5372","M标识":"IC5372","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"S0","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h0m16.3s","赤经D(J2000)":"0.004527777777777778","赤纬(J2000)":"+32h47m35s","赤纬D(J2000)":"32.793055555555554","可见光星等V":"14.5","摄影(蓝光)星等B":"15.5","B-V":"1","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"0.5","短轴(分)":"0.5","方位角":"","详细描述":"faint, very small, round, with a nucleus","简略描述":"F, vS, R N"},{"ID":"13213","标识":"IC5373","M标识":"IC5373","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h0m29.3s","赤经D(J2000)":"0.00813888888888889","赤纬(J2000)":"+32h46m55s","赤纬D(J2000)":"32.78194444444444","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.6","长轴(分)":"0.8","短轴(分)":"0.2","方位角":"150","详细描述":"pretty bright, small, round, with a stellar nucleus","简略描述":"pB, S, R, stell N"},{"ID":"13214","标识":"IC5374","M标识":"IC5374","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h1m4.6s","赤经D(J2000)":"0.017944444444444443","赤纬(J2000)":"+4h30m0s","赤纬D(J2000)":"4.5","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"0.7","短轴(分)":"0.6","方位角":"18","详细描述":"faint, small, extended north-south, gradually brighter middle, mottled but not resolved","简略描述":"F, S, E ns, gbM, r"},{"ID":"13215","标识":"IC5375","M标识":"IC5375","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sbc","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h1m4.9s","赤经D(J2000)":"0.018027777777777778","赤纬(J2000)":"+4h32m31s","赤纬D(J2000)":"4.541944444444444","可见光星等V":"14.3","摄影(蓝光)星等B":"15.1","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.4","长轴(分)":"1","短轴(分)":"0.2","方位角":"0","详细描述":"considerably faint, extended north-south, gradually brighter middle and nucleus, mottled but not resolved","简略描述":"cF, E ns, gbMN, r"},{"ID":"13216","标识":"IC5376","M标识":"IC5376","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"仙女座","星座(En)":"AND","赤经(J2000)":"0h1m19.9s","赤经D(J2000)":"0.022194444444444444","赤纬(J2000)":"+34h31m33s","赤纬D(J2000)":"34.52583333333333","可见光星等V":"13.7","摄影(蓝光)星等B":"14.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"2","短轴(分)":"0.3","方位角":"4","详细描述":"faint, small, extended north-south, gradually brighter middle","简略描述":"F, S, E ns, gbM"},{"ID":"13217","标识":"IC5377","M标识":"IC5377","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"IB","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h2m5.5s","赤经D(J2000)":"0.034861111111111114","赤纬(J2000)":"+16h35m26s","赤纬D(J2000)":"16.590555555555554","可见光星等V":"14.7","摄影(蓝光)星等B":"15.3","B-V":"0.6","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1","短轴(分)":"0.6","方位角":"175","详细描述":"very faint, small, round, diffuse","简略描述":"vF, S, R, dif"},{"ID":"13218","标识":"IC5378","M标识":"IC5378","拓展名":"","组件":"1","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"E2","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h2m37.8s","赤经D(J2000)":"0.043833333333333335","赤纬(J2000)":"+16h38m39s","赤纬D(J2000)":"16.644166666666667","可见光星等V":"13.6","摄影(蓝光)星等B":"14.6","B-V":"1","表面亮度(mag\/arcmin2)":"13.7","长轴(分)":"1.1","短轴(分)":"0.9","方位角":"","详细描述":"faint, pretty small, extended north-south, 15th magnitude star involved","简略描述":"F, pS, E ns, * 15 inv"},{"ID":"13219","标识":"IC5379","M标识":"IC5379","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h2m40.8s","赤经D(J2000)":"0.04466666666666667","赤纬(J2000)":"+16h36m3s","赤纬D(J2000)":"16.600833333333334","可见光星等V":"15.2","摄影(蓝光)星等B":"15.9","B-V":"0.7","表面亮度(mag\/arcmin2)":"12.3","长轴(分)":"0.4","短轴(分)":"0.2","方位角":"70","详细描述":"","简略描述":"F, S, lE pf, lbM, * 17 close p"},{"ID":"13220","标识":"IC5380","M标识":"IC5380","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h2m49.5s","赤经D(J2000)":"0.04708333333333333","赤纬(J2000)":"-66h11m12s","赤纬D(J2000)":"-66.18666666666667","可见光星等V":"14.7","摄影(蓝光)星等B":"15.5","B-V":"0.8","表面亮度(mag\/arcmin2)":"13.3","长轴(分)":"0.8","短轴(分)":"0.4","方位角":"134","详细描述":"very little extended","简略描述":"vlE"},{"ID":"13221","标识":"IC5381","M标识":"IC5381","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sab","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h3m11.1s","赤经D(J2000)":"0.05308333333333334","赤纬(J2000)":"+15h57m55s","赤纬D(J2000)":"15.965277777777777","可见光星等V":"14.1","摄影(蓝光)星等B":"14.9","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.9","长轴(分)":"1.3","短轴(分)":"0.3","方位角":"54","详细描述":"","简略描述":"pF, S, lE spnf, bM, * 13 nr"},{"ID":"13222","标识":"IC5382","M标识":"IC5382","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Gxy","形态":"Sc","星座(Zh)":"杜鹃座","星座(En)":"TUC","赤经(J2000)":"0h3m26.3s","赤经D(J2000)":"0.05730555555555556","赤纬(J2000)":"-65h11m48s","赤纬D(J2000)":"-65.19666666666667","可见光星等V":"14.6","摄影(蓝光)星等B":"15.3","B-V":"0.7","表面亮度(mag\/arcmin2)":"13.8","长轴(分)":"0.8","短轴(分)":"0.7","方位角":"","详细描述":"almost round, a little brighter middle","简略描述":"alm R, lbM"},{"ID":"13223","标识":"IC5383","M标识":"IC5383","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"飞马座","星座(En)":"PEG","赤经(J2000)":"0h3m48.8s","赤经D(J2000)":"0.06355555555555556","赤纬(J2000)":"+16h0m50s","赤纬D(J2000)":"16.01388888888889","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"faint, small, round, brighter middle","简略描述":"F, S, R, bM"},{"ID":"13224","标识":"IC5384","M标识":"IC5384","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"Sb","星座(Zh)":"鲸鱼座","星座(En)":"CET","赤经(J2000)":"0h4m9.2s","赤经D(J2000)":"0.06922222222222223","赤纬(J2000)":"-11h59m2s","赤纬D(J2000)":"-11.983888888888888","可见光星等V":"14.2","摄影(蓝光)星等B":"15","B-V":"0.8","表面亮度(mag\/arcmin2)":"12.5","长轴(分)":"0.8","短轴(分)":"0.3","方位角":"158","详细描述":"extremely faint, very small, extended 160°; ? = 7813 (meaning, NGC 7813)","简略描述":"eF, vS, E 160°, ? = 7813"},{"ID":"13225","标识":"IC5385","M标识":"IC5385","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"NF","含重复类型":"NF","形态":"NF","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h6m23s","赤经D(J2000)":"0.1063888888888889","赤纬(J2000)":"-0h4m36s","赤纬D(J2000)":"-0.07666666666666666","可见光星等V":"99","摄影(蓝光)星等B":"99","B-V":"99","表面亮度(mag\/arcmin2)":"99","长轴(分)":"","短轴(分)":"","方位角":"","详细描述":"extremely faint (not verified)","简略描述":"eF (not verified)"},{"ID":"13226","标识":"IC5386","M标识":"IC5386","拓展名":"","组件":"","Class":"","业余排名":"20","中文名":"","类型":"Gxy","含重复类型":"Dup","形态":"E5","星座(Zh)":"双鱼座","星座(En)":"PSC","赤经(J2000)":"0h6m28.4s","赤经D(J2000)":"0.1078888888888889","赤纬(J2000)":"-3h43m0s","赤纬D(J2000)":"-3.716666666666667","可见光星等V":"13.2","摄影(蓝光)星等B":"14.2","B-V":"1","表面亮度(mag\/arcmin2)":"14","长轴(分)":"1.9","短轴(分)":"1","方位角":"25","详细描述":"pretty bright, pretty small, much extended","简略描述":"pB, pS, mE "}] \ No newline at end of file diff --git a/doc/platesolver/astap.md b/doc/platesolver/astap.md new file mode 100644 index 00000000..55cff192 --- /dev/null +++ b/doc/platesolver/astap.md @@ -0,0 +1,237 @@ +# ASTAP 命令行 + +该程序可以通过命令行选项执行以解决图像的天文测量问题。例如: + +```bash +ASTAP -f home/test/2.fits -r 30 +``` + +可以输入 FITS、TIFF、PNG、JPG、BMP 和未压缩的 XISF 文件。 + +## ASTAP 命令行 + +**FOV、RA、DEC 选项**适用于非 FITS 文件。对于在头文件中包含这些值的 FITS 文件,这些选项不是必需的。 + +### 命令 + +| 参数 | 单位 | 备注 | +| ----- | ---- | -------- | +| -h | | 帮助信息 | +| -help | | 帮助信息 | + +### 求解器选项 + +| 命令 | 参数 | 单位 | 备注 | +| ------- | ----------------- | --------- | ----------------------------------------------------------------------------------------------------------------------- | +| -f | 文件名 | | 需要解析的文件。 | +| -r | 搜索半径 | 度 | 将在起始位置周围的方形螺旋中搜索,直到此半径 \* | +| -fov | 图像高度 | 度 | 可选。通常从 FITS 头文件中计算。使用值 0 进行自动计算。如果指定 0,求解后找到的 fov 将保存以供下次使用。(学习模式) \* | +| -ra | 中心赤经 | 小时 | 可选起始值。通常从 FITS 头文件中计算。 | +| -spd | 南极距离 (dec+90) | 度 | 通常从 FITS 头文件中计算 \* 赤纬以南极距离给出,因此总是正值。 | +| -z | 降采样因子 | 0,1,2,3,4 | 求解前降采样。也称为分箱。值 "0" 将导致自动选择降采样。 \* | +| -s | 最大星数 | | 限制用于求解的星数。典型值 500。 \* | +| -t | 容差 | | 用于比较四边形的容差。典型值 0.007。 \* | +| -m | 最小星大小 | 角秒 | 可用于过滤掉热点像素。 | +| -check | 应用 | y/n | 求解前应用检查模式过滤器。仅在分箱为 1x1 时用于原始 OSC 图像 \* | +| -d | 路径 | | 指定星数据库的路径 | +| -D | 缩写 | | 指定星数据库 [d80, d50, ..] | +| -o | 文件 | | 使用此基本路径和文件名命名输出文件 | +| -sip | 添加 | y/n | 添加 SIP(简单图像多项式)系数。注意,该参数仅在需要停用 SIP 时才需要。 | +| -speed | 模式 | 慢 / 自动 | "慢" 模式强制从星数据库中读取更大区域(更多重叠)以提高检测率。 \* | +| -wcs | | | WCS 文件 以类似 Astrometry.net 的格式写入。否则为文本样式 | +| -update | | | 使用找到的解决方案更新 fits/tiff 头文件。Jpeg、png 将写为 fits。 | +| -log | | | 将求解器日志写入扩展名为 .log 的文件 | + +### 分析选项 + +| 命令 | 参数 | 单位 | 备注 | +| --------- | ---------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| -analyse | 最小信噪比 | | 仅分析并报告 HFD。Windows:errorlevel 是中值 HFD \* 100M + 使用的星数。因此 HFD 是 trunc(errorlevel/1M)/100。对于 Linux 和 macOS,信息仅发送到 stdout。 | +| -extract | 最小信噪比 | | 如分析选项,但另外将所有可检测星的信息导出到 .csv 文件。小数分隔符始终为点。 | +| -extract2 | 最小信噪比 | | 求解图像并将所有可检测星的信息导出到 .csv 文件,包括每次检测的 α, δ。将使用 SIP 多项式以获得高精度位置。小数分隔符始终为点。 | + +### 额外选项(仅适用于标准 GUI 版本) + +| 命令 | 参数 | 单位 | 备注 | +| --------- | ---- | ------- | ------------------------------------------------------------------------------ | +| -annotate | | | 生成一个带有深空注释的 jpeg 文件,文件名与输入文件相同,扩展名为 \_annotated。 | +| -debug | | | 显示 GUI 并在求解前停止 | +| -tofits | 分箱 | 1,2,3,4 | 从输入的 png/jpg 生成分箱的 FITS 文件 | + +### 作为分析器/堆栈器 + +| 命令 | 参数 | 单位 | 备注 | +| ------- | ----------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------------------------------------------- | +| -sqm | 基座 | | 测量相对于星的天空背景值,单位为 magn/arcsec2。基座是暗场的平均值。还将写入 centalt 和 airmass 到头文件。 | +| -focus1 | file1.fits -focus2 file2.fits -focus3 file3.fits ................ | | 使用曲线拟合为四个或更多图像找到最佳焦点。Windows:errorlevel 是 focuspos*1E4 + rem.error*1E3。Linux:查看 stdout | +| -stack | | | 启动 ASTAP 并显示可见的实时堆栈标签和选定的路径。 | + +### 命令行参数优先级 + +命令行参数优先于 fits 头文件值。前端程序应提供对 -z 和 -r 选项的访问。-z 的默认值应为 0(自动)。 + +### 典型命令行 + +```bash +astap.exe -f image.fits -r 50 +astap.exe -f c:\images\image.png -ra 23.000 -spd 179.000 -fov 1.3 -r 50 +``` + +对于大多数 FITS 文件,命令行可以很短,因为望远镜位置和视场可以从 FITS 头文件中检索。如果没有 FITS 文件,首选是非无损图像格式,如 .PNG 或 .TIFF 或 RAW 格式,如 .CR2。如果可能,使用 16 位或原始 12 位格式。不要拉伸或饱和,尽可能原始。对于非 FITS 格式,应添加 RA、DEC 位置和 -fov(图像高度,单位为度!!)。 + +如果在 RAW、PNG、TIFF 文件的命令行中未指定 FOV(图像高度,单位为度),ASTAP 将使用程序、堆栈菜单、对齐标签中设置的 FOV。此设置可以通过参数 -fov 0 自动学习和更新。ASTAP 将尝试所有 FOV 在 10 度和 0.3 度之间。例如: + +```bash +astap.exe -f c:\images\image.png -ra 23.000 -spd 179.000 -r 30 -fov 0 +``` + +成功求解后,正确的 FOV 将存储在 ASTAP 设置中。对于下次使用相同来源的图像求解,可以省略 -fov 0 参数,求解将更快。 + +### 调试选项 + +调试选项允许在 GUI(图形用户界面)中设置一些求解参数并测试命令行。在调试模式下,所有命令行参数都已设置,指定的图像显示在查看器中。只需手动给出求解命令: + +```bash +astap.exe -f c:\images\image.png -ra 23.000 -spd 179.000 -r 30 -debug +``` + +或 + +```bash +astap.exe -debug +``` + +### 命令行,输出文件 + +在命令行模式下,程序在与输入图像相同的位置生成两个输出文件。如果找到解决方案,它将写入一个 .wcs 文件 1),仅包含已解决的 FITS 头文件。在任何情况下,它将使用标准 FITS 关键字写入一个 INI 文件。 + +#### 成功求解后的 INI 输出文件示例 + +```ini +PLTSOLVD=T // T=true, F=false +CRPIX1= 1.1645000000000000E+003 // 参考和中心像素的 X +CRPIX2= 8.8050000000000000E+002 // 参考和中心像素的 Y +CRVAL1= 1.5463033992314939E+002 // 参考像素的 RA (J2000) [度] +CRVAL2= 2.2039358425145043E+001 // 参考像素的 DEC (J2000) [度] +CDELT1=-7.4798001762187193E-004 // X 像素大小 [度] +CDELT2= 7.4845252983311850E-004 // Y 像素大小 [度] +CROTA1=-1.1668387329628058E+000 // X 轴图像扭曲 [度] +CROTA2=-1.1900321176194073E+000 // Y 轴图像扭曲 [度] +CD1_1=-7.4781868711882519E-004 // CD 矩阵将 (x,y) 转换为 (Ra, Dec) +CD1_2= 1.5241315209850368E-005 // CD 矩阵将 (x,y) 转换为 (Ra, Dec) +CD2_1= 1.5534412042060001E-005 // CD 矩阵将 (x,y) 转换为 (Ra, Dec) +CD2_2= 7.4829732842251226E-004 // CD 矩阵将 (x,y) 转换为 (Ra, Dec) +CMDLINE=...... // 包含使用的命令行的文本消息 +WARNING=...... // 包含警告的文本消息 +``` + +#### 求解失败时的 INI 输出文件示例 + +```ini +PLTSOLVD=F // T=true, F=false +CMDLINE=...... // 包含使用的命令行的文本消息 +ERROR= ..... // 包含任何错误的文本消息。与退出代码错误相同 +WARNING= ..... // 包含任何警告的文本消息 +``` + +.wcs 文件包含原始 FITS 头文件,并添加了解决方案。没有数据,只有头文件。任何警告都使用关键字 WARNING 添加到 .wcs 文件中。此警告可以向用户显示以供信息。 + +1. 注意 wcs 文件默认写为文本文件,每行使用回车和换行,不符合 FITS 标准。要使 .wcs 文件符合 FITS 标准,请添加命令行选项 -wcs。 + +### 命令行,错误代码 + +在命令行模式下,错误通过错误代码 / errorlevel {%errorlevel%} 报告。这与失败时在 .ini 文件中报告的错误相同。 + +| 错误代码 | 描述 | +| -------- | ------------------ | +| 0 | 无错误 | +| 1 | 无解决方案 | +| 2 | 检测到的星数不足 | +| 16 | 读取图像文件时出错 | +| 32 | 未找到星数据库 | +| 33 | 读取星数据库时出错 | +| 34 | 更新输入文件时出错 | + +### 分析 FITS 文件 + +要分析 FITS 文件,可以在 Windows 批处理文件中执行以下操作: + +```bash +c:\astap.fpc\astap.exe -f c:\astap.fpc\test_files\command_line_test\m16.fit -analyse 30 +echo Exit Code is %errorlevel% +pause +``` + +你将得到 + +```bash +Exit Code is 326000666 +``` + +其中 HFD 为 3.26,使用 666 颗星 + +对于 Linux 和 Mac,stdout 报告如下: + +```bash +HFD_MEDIAN=3.3 +STARS=666 +``` + +### -analyse 功能 + +| 程序 | Windows | Linux | macOS | +| --------- | ----------------- | ------ | ------ | +| astap | 退出代码 | stdout | stdout | +| astap_cli | 退出代码 & stdout | stdout | stdout | + +### 基于四个或更多输入图像找到最佳焦点 + +```bash +c:\astap.fpc\astap -focus1 D:\temp\FocusSample\FOCUS04689.fit -focus2 D:\temp\FocusSample\FOCUS05039.fit -focus3 D:\temp\FocusSample\FOCUS05389.fit -focus4 D:\temp\FocusSample\FOCUS05739.fit -focus5 D:\temp\FocusSample\FOCUS06089.fit -focus6 D:\temp\FocusSample\FOCUS06439.fit -focus7 D:\temp\FocusSample\FOCUS06789.fit -focus8 D:\temp\FocusSample\FOCUS07139.fit +echo Exit Code is %errorlevel% +pause +``` + +或使用 -debug 选项 + +```bash +astap.exe -debug -focus1 D:\temp\FocusSample\FOCUS04689.fit -focus2 D:\temp\FocusSample\FOCUS05039.fit -focus3 D:\temp\FocusSample\FOCUS05389.fit -focus4 D:\temp\FocusSample\FOCUS05739.fit -focus5 D:\temp\FocusSample\FOCUS06089.fit -focus6 D:\temp\FocusSample\FOCUS06439.fit -focus7 D:\temp\FocusSample\FOCUS06789.fit -focus8 D:\temp\FocusSample\FOCUS07139.fit +``` + +然后选择 "inspector" 标签并点击 "hyperbola curve fitting button" 以测试功能。 + +以下是命令行输出的示例: + +此选项不适用于 astap_cli 版本。 + +### 命令行弹出通知器 + +如果 ASTAP 在 MS-Windows 中通过命令行执行,它将显示在状态栏右侧的小 ASTAP 托盘图标。如果将鼠标移到 ASTAP 托盘图标上,提示将显示搜索半径。要刷新值,请将鼠标移开再移回。 + +如果搜索螺旋已从起始位置达到 2 度以上的距离,则弹出通知器将显示实际搜索距离和求解器设置: + +第一行指示从起始位置的搜索螺旋距离(8º)和最大搜索半径(90º) +图像高度,单位为度。 +降采样设置和输入图像的尺寸以进行求解。 +起始位置的 α 和 δ。 +速度正常(▶▶)或小步(▶) + +查看解决求解失败所需的条件。或测试图像是否可求解。 +在最新的 Win10 版本中,托盘图标默认关闭。要设置 ASTAP 托盘图标,请通过成像程序启动求解,转到 Windows "设置","任务栏","打开或关闭系统图标",并将 ASTAP 托盘图标永久设置为 "打开",如下所示: + +### 盲求解性能 + +90 度偏移的盲求解性能: + +ASTAP 盲求解器性能,90 度偏移。 + +求解曝光 50 秒的 M16 单色图像,2328x1760 像素,覆盖 1.75 x 1.32° 的视场,起始位置偏北 90 度。使用的数据库为 D50 + +| 最大星数 | 天文测量求解时间 | +| -------- | ---------------- | +| 500 | 23.8 秒 | +| 300 | 9.8 秒 | +| 200 | 6.7 秒 | +| 100 | 4.8 秒 | + +减少 "最大星数" 将导致求解更快,但也会增加求解失败的风险。 diff --git a/doc/server/oatpp_coroutine.md b/doc/server/oatpp_coroutine.md new file mode 100644 index 00000000..a367ed6d --- /dev/null +++ b/doc/server/oatpp_coroutine.md @@ -0,0 +1,235 @@ +# Oat++ 中的协程 + +Oat++ 中的协程不是普通的协程。 +Oat++ 实现了自定义的无状态协程,并带有调度功能。调度提供了优化的空间,并更好地利用了 CPU 资源。 + +Oat++ 中的协程通过 [oatpp::async::Executor](/api/latest/oatpp/core/async/Executor/) 执行。在每次迭代中,协程返回一个 [oatpp::async::Action](/api/latest/oatpp/core/async/Coroutine/#action),告诉执行器下一步该做什么。 +根据 Action,Oat++ 异步处理器将协程重新调度到相应的 worker。 + +## 异步执行器 + +[oatpp::async::Executor](/api/latest/oatpp/core/async/Executor/) 分配了三组 worker,每组指定数量的线程。 + +```cpp +oatpp::async::Executor executor( + 1 /* 数据处理 worker */, + 1 /* I/O worker */, + 1 /* 定时器 worker */ +); +``` + +所有协程最初都被放置在“数据处理” worker 组中,并可能根据协程迭代中返回的 [oatpp::async::Action](/api/latest/oatpp/core/async/Coroutine/#action) 重新调度到 I/O 或定时器 worker。 + + + +::: tip +尽管 Oat++ 异步处理器可能会将协程重新调度到不同的线程,但协程保证会在创建它的同一线程上被销毁。 +::: + +### I/O Worker + +对于 I/O,`oatpp::async::Executor` 使用基于事件的 I/O 实现 [IOEventWorker](/api/latest/oatpp/core/async/worker/IOEventWorker/): + +- kqueue 实现 - 适用于 Mac/BSD 系统。 +- epoll 实现 - 适用于 Linux 系统。 + +当协程返回类型为 [TYPE_IO_WAIT](/api/latest/oatpp/core/async/Coroutine/#action-type-io-wait) 的 Action 时,它将被重新调度到 I/O worker,并将文件描述符提供的 Action 放置到 kqueue/epoll 中。 +**因此,oatpp 协程不会浪费 CPU 资源来旋转和轮询长时间等待的连接。** + +## API + +在 oatpp 中,协程是从 [oatpp::async::Coroutine](/api/latest/oatpp/core/async/Coroutine/#coroutine) 或 [oatpp::async::CoroutineWithResult](/api/latest/oatpp/core/async/Coroutine/#coroutinewithresult) 扩展的类。 +协程在 [oatpp::async::Executor](/api/latest/oatpp/core/async/Executor/) 中处理。 + +```cpp +class MyCoroutine : public oatpp::async::Coroutine { +public: + + /* + * act() - 协程的入口点 + * 返回 Action - 下一步该做什么 + */ + Action act() override { + OATPP_LOGD("MyCoroutine", "act()"); + return yieldTo(&MyCoroutine::step2); + } + + Action step2() { + OATPP_LOGD("MyCoroutine", "step2"); + return yieldTo(&MyCoroutine::step3); + } + + Action step3() { + OATPP_LOGD("MyCoroutine", "step3"); + return finish(); + } + +}; + +oatpp::async::Executor executor(); + +executor.execute(); + +executor.waitTasksFinished(); +executor.stop(); +executor.join(); +``` + +输出: + +``` +MyCoroutine:act() +MyCoroutine:step2 +MyCoroutine:step3 +``` + +## 从协程调用协程 + +```cpp +class OtherCoroutine : public oatpp::async::Coroutine { +public: + Action act() override { + OATPP_LOGD("OtherCoroutine", "act()"); + return finish(); + } +}; + +class MyCoroutine : public oatpp::async::Coroutine { +public: + + Action act() override { + OATPP_LOGD("MyCoroutine", "act()"); + return OtherCoroutine::start().next(finish()); /* 在 OtherCoroutine 完成后执行的 Action */); + } + +}; + +oatpp::async::Executor executor(); + +executor.execute(); + +executor.waitTasksFinished(); +executor.stop(); +executor.join(); +``` + +输出: + +``` +MyCoroutine:act() +OtherCoroutine:act() +``` + +## 调用协程并返回结果 + +```cpp +class CoroutineWithResult : public oatpp::async::CoroutineWithResult { +public: + Action act() override { + OATPP_LOGD("CoroutineWithResult", "act()"); + return _return(""); + } +}; + +class MyCoroutine : public oatpp::async::Coroutine { +public: + + Action act() override { + OATPP_LOGD("MyCoroutine", "act()"); + return CoroutineWithResult::startForResult().callbackTo(&MyCoroutine::onResult); + } + + Action onResult(const char* result) { + OATPP_LOGD("MyCoroutine", "result='%s'", result); + return finish(); + } + +}; + +oatpp::async::Executor executor(); + +executor.execute(); + +executor.waitTasksFinished(); +executor.stop(); +executor.join(); +``` + +输出: + +``` +MyCoroutine:act() +CoroutineWithResult:act() +MyCoroutine:result='' +``` + +## 计数器 + +```cpp +class MyCoroutineCounter : public oatpp::async::Coroutine { +private: + const char* m_name; + v_int32 m_counter = 0; +public: + + MyCoroutineCounter(const char* name) : m_name(name) {} + + Action act() override { + OATPP_LOGD(m_name, "counter=%d", m_counter); + if(m_counter < 10) { + m_counter ++; + return repeat(); + } + return finish(); + } + +}; + +oatpp::async::Executor executor(); + +executor.execute("A"); +executor.execute("B"); +executor.execute("C"); + +executor.waitTasksFinished(); +executor.stop(); +executor.join(); +``` + +可能的输出: + +``` +A:counter=0 +B:counter=0 +C:counter=0 +A:counter=1 +B:counter=1 +C:counter=1 +A:counter=2 +B:counter=2 +C:counter=2 +A:counter=3 +B:counter=3 +C:counter=3 +A:counter=4 +B:counter=4 +C:counter=4 +A:counter=5 +B:counter=5 +C:counter=5 +A:counter=6 +B:counter=6 +C:counter=6 +A:counter=7 +B:counter=7 +C:counter=7 +A:counter=8 +B:counter=8 +C:counter=8 +A:counter=9 +B:counter=9 +C:counter=9 +A:counter=10 +B:counter=10 +C:counter=10 +``` diff --git a/example/atom/algorithm/CMakeLists.txt b/example/atom/algorithm/CMakeLists.txt deleted file mode 100644 index 6d3af3bc..00000000 --- a/example/atom/algorithm/CMakeLists.txt +++ /dev/null @@ -1,51 +0,0 @@ -cmake_minimum_required(VERSION 3.10) - -# 项目名称 -project(AutoTargets VERSION 1.0 LANGUAGES CXX) - -# 设置目标源文件路径 -set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) - -# 递归查找当前目录及其子目录下的所有 .cpp 文件 -file(GLOB_RECURSE cpp_files "${SOURCE_DIR}/*.cpp") - -# 设置编译选项 -set(CMAKE_CXX_STANDARD 17) # 设置C++标准 -set(CMAKE_CXX_STANDARD_REQUIRED True) -set(CMAKE_CXX_EXTENSIONS OFF) - -# 创建一个用于存放所有目标的输出目录 -set(OUTPUT_DIR ${CMAKE_BINARY_DIR}/bin) - -# 创建一个包含目录,用于存储头文件 -include_directories(${SOURCE_DIR}/include) - -# 遍历所有的cpp文件,为每个生成一个可执行文件目标 -foreach(cpp_file ${cpp_files}) - # 获取文件名(不带路径和后缀) - get_filename_component(target_name ${cpp_file} NAME_WE) - - # 为每个 .cpp 文件生成一个可执行文件目标 - add_executable(${target_name} ${cpp_file}) - - # 设置每个目标的输出目录 - set_target_properties(${target_name} PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_DIR} - ) - - # 为每个目标设置不同的编译选项 - target_compile_options(${target_name} PRIVATE - $<$:-g> # Debug 模式下的编译选项 - $<$:-O3> # Release 模式下的编译选项 - -Wall -Wextra # 所有模式的编译警告 - ) - - # 如果需要链接一些外部库,可以通过 target_link_libraries - # target_link_libraries(${target_name} PRIVATE some_library) - - # 打印每个目标的生成情况 - message(STATUS "Added target: ${target_name} from source: ${cpp_file}") -endforeach() - -# 打印输出目录信息 -message(STATUS "All binaries will be output to: ${OUTPUT_DIR}") diff --git a/example/atom/algorithm/algorithm.cpp b/example/atom/algorithm/algorithm.cpp deleted file mode 100644 index b1d0cb7d..00000000 --- a/example/atom/algorithm/algorithm.cpp +++ /dev/null @@ -1,69 +0,0 @@ -#include "atom/algorithm/algorithm.hpp" - -#include - -int main() { - // Example 1: Using the KMP algorithm - std::string text = "ababcabcababcabc"; - std::string pattern = "abc"; - - // Create a KMP object with the pattern - atom::algorithm::KMP kmp(pattern); - - // Search for the pattern in the text - std::vector kmpResults = kmp.search(text); - - std::cout << "KMP search results for pattern \"" << pattern - << "\" in text \"" << text << "\":" << std::endl; - for (int position : kmpResults) { - std::cout << "Pattern found at position: " << position << std::endl; - } - - // Example 2: Using the Boyer-Moore algorithm - std::string bmText = "HERE IS A SIMPLE EXAMPLE"; - std::string bmPattern = "EXAMPLE"; - - // Create a BoyerMoore object with the pattern - atom::algorithm::BoyerMoore boyerMoore(bmPattern); - - // Search for the pattern in the text - std::vector bmResults = boyerMoore.search(bmText); - - std::cout << "Boyer-Moore search results for pattern \"" << bmPattern - << "\" in text \"" << bmText << "\":" << std::endl; - for (int position : bmResults) { - std::cout << "Pattern found at position: " << position << std::endl; - } - - // Example 3: Using the Bloom Filter - const std::size_t BLOOM_FILTER_SIZE = 100; - const std::size_t NUM_HASH_FUNCTIONS = 3; - - // Create a BloomFilter object with specified size and number of hash - // functions - atom::algorithm::BloomFilter bloomFilter( - NUM_HASH_FUNCTIONS); - - // Insert elements into the Bloom filter - bloomFilter.insert("apple"); - bloomFilter.insert("banana"); - bloomFilter.insert("cherry"); - - // Check for the presence of elements - std::string element1 = "apple"; - std::string element2 = "grape"; - - std::cout << "Checking presence of \"" << element1 - << "\" in the Bloom filter: " - << (bloomFilter.contains(element1) ? "Possibly present" - : "Definitely not present") - << std::endl; - - std::cout << "Checking presence of \"" << element2 - << "\" in the Bloom filter: " - << (bloomFilter.contains(element2) ? "Possibly present" - : "Definitely not present") - << std::endl; - - return 0; -} diff --git a/example/atom/algorithm/base.cpp b/example/atom/algorithm/base.cpp deleted file mode 100644 index 6b85db69..00000000 --- a/example/atom/algorithm/base.cpp +++ /dev/null @@ -1,67 +0,0 @@ -#include "atom/algorithm/base.hpp" - -#include - -int main() { - { - std::string originalText = "Hello, World!"; - std::string encodedText = atom::algorithm::base64Encode(originalText); - - std::cout << "Original: " << originalText << std::endl; - std::cout << "Encoded: " << encodedText << std::endl; - } - { - std::string encodedText = "SGVsbG8sIFdvcmxkIQ=="; - std::string decodedText = atom::algorithm::base64Decode(encodedText); - - std::cout << "Encoded: " << encodedText << std::endl; - std::cout << "Decoded: " << decodedText << std::endl; - } - { - std::vector data = {'H', 'e', 'l', 'l', 'o'}; - std::string encodedText = atom::algorithm::fbase64Encode(data); - - std::cout << "Encoded: " << encodedText << std::endl; - } - { - std::string encodedText = "SGVsbG8="; - std::vector decodedData = - atom::algorithm::fbase64Decode(encodedText); - - std::cout << "Decoded: "; - for (unsigned char c : decodedData) { - std::cout << c; - } - std::cout << std::endl; - } - { - std::string plaintext = "EncryptMe"; - uint8_t key = 0xAA; - std::string encryptedText = atom::algorithm::xorEncrypt(plaintext, key); - - std::cout << "Plaintext: " << plaintext << std::endl; - std::cout << "Encrypted: " << encryptedText << std::endl; - } - { - std::string encryptedText = "EncryptedStringHere"; - uint8_t key = 0xAA; - std::string decryptedText = - atom::algorithm::xorDecrypt(encryptedText, key); - - std::cout << "Encrypted: " << encryptedText << std::endl; - std::cout << "Decrypted: " << decryptedText << std::endl; - } - { - constexpr StaticString<5> INPUT = "Hello"; - constexpr auto ENCODED = atom::algorithm::cbase64Encode(INPUT); - - std::cout << "Compile-time Encoded: " << ENCODED.cStr() << std::endl; - } - { - constexpr StaticString<8> INPUT = "SGVsbG8="; - constexpr auto DECODED = atom::algorithm::cbase64Decode(INPUT); - - std::cout << "Compile-time Decoded: " << DECODED.cStr() << std::endl; - } - return 0; -} diff --git a/example/atom/algorithm/bignumber.cpp b/example/atom/algorithm/bignumber.cpp deleted file mode 100644 index b0408654..00000000 --- a/example/atom/algorithm/bignumber.cpp +++ /dev/null @@ -1,101 +0,0 @@ -#include "atom/algorithm/bignumber.hpp" - -#include - -int main() { - { - atom::algorithm::BigNumber num1("12345678901234567890"); - atom::algorithm::BigNumber num2(9876543210LL); - - std::cout << "num1: " << num1 << std::endl; - std::cout << "num2: " << num2 << std::endl; - } - - { - atom::algorithm::BigNumber num1("12345678901234567890"); - atom::algorithm::BigNumber num2("98765432109876543210"); - - atom::algorithm::BigNumber sum = num1 + num2; - atom::algorithm::BigNumber difference = num2 - num1; - - std::cout << "Sum: " << sum << std::endl; - std::cout << "Difference: " << difference << std::endl; - } - - { - atom::algorithm::BigNumber num1("123456789"); - atom::algorithm::BigNumber num2("1000"); - - atom::algorithm::BigNumber product = num1 * num2; - atom::algorithm::BigNumber quotient = num1 / num2; - - std::cout << "Product: " << product << std::endl; - std::cout << "Quotient: " << quotient << std::endl; - } - - { - atom::algorithm::BigNumber base("2"); - - atom::algorithm::BigNumber result = base ^ 10; - - std::cout << "2^10: " << result << std::endl; - } - - { - atom::algorithm::BigNumber num1("123456789"); - atom::algorithm::BigNumber num2("123456789"); - atom::algorithm::BigNumber num3("987654321"); - - std::cout << std::boolalpha; - std::cout << "num1 == num2: " << (num1 == num2) << std::endl; - std::cout << "num1 != num3: " << (num1 != num3) << std::endl; - } - - { - atom::algorithm::BigNumber num1("123456789"); - atom::algorithm::BigNumber num2("987654321"); - - std::cout << std::boolalpha; - std::cout << "num1 < num2: " << (num1 < num2) << std::endl; - std::cout << "num2 > num1: " << (num2 > num1) << std::endl; - } - - { - atom::algorithm::BigNumber num1("123456789"); - - atom::algorithm::BigNumber negated = num1.negate(); - - std::cout << "Negated: " << negated << std::endl; - } - - { - atom::algorithm::BigNumber num1("999"); - - std::cout << "Before increment: " << num1 << std::endl; - ++num1; - std::cout << "After increment: " << num1 << std::endl; - - --num1; - std::cout << "After decrement: " << num1 << std::endl; - } - - { - atom::algorithm::BigNumber num1("123456789"); - atom::algorithm::BigNumber num2("123456788"); - - std::cout << "num1 is odd: " << std::boolalpha << num1.isOdd() - << std::endl; - std::cout << "num2 is even: " << std::boolalpha << num2.isEven() - << std::endl; - } - - { - atom::algorithm::BigNumber num1("0000123456789"); - - std::cout << "Before trimming: " << num1 << std::endl; - num1 = num1.trimLeadingZeros(); - std::cout << "After trimming: " << num1 << std::endl; - } - - return 0; -} diff --git a/example/atom/algorithm/convolve.cpp b/example/atom/algorithm/convolve.cpp deleted file mode 100644 index ac8ef3e8..00000000 --- a/example/atom/algorithm/convolve.cpp +++ /dev/null @@ -1,144 +0,0 @@ -#include "atom/algorithm/convolve.hpp" - -#include - -int main() { - { - std::vector signal = {1, 2, 3, 4, 5}; - std::vector kernel = {0.2, 0.5, 0.2}; - - std::vector result = atom::algorithm::convolve(signal, kernel); - - std::cout << "1D Convolution result: "; - for (double val : result) { - std::cout << val << " "; - } - std::cout << std::endl; - } - - { - std::vector signal = {0.2, 0.9, 2.0, 3.1, 2.8, 1.0}; - std::vector kernel = {0.2, 0.5, 0.2}; - - std::vector result = - atom::algorithm::deconvolve(signal, kernel); - - std::cout << "1D Deconvolution result: "; - for (double val : result) { - std::cout << val << " "; - } - std::cout << std::endl; - } - - { - std::vector> image = { - {1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; - std::vector> kernel = { - {1, 0, -1}, {1, 0, -1}, {1, 0, -1}}; - - std::vector> result = - atom::algorithm::convolve2D(image, kernel); - - std::cout << "2D Convolution result:" << std::endl; - for (const auto& row : result) { - for (double val : row) { - std::cout << val << " "; - } - std::cout << std::endl; - } - } - - { - std::vector> image = { - {1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; - std::vector> kernel = { - {1, 0, -1}, {1, 0, -1}, {1, 0, -1}}; - - std::vector> result = - atom::algorithm::deconvolve2D(image, kernel); - - std::cout << "2D Deconvolution result:" << std::endl; - for (const auto& row : result) { - for (double val : row) { - std::cout << val << " "; - } - std::cout << std::endl; - } - } - - { - std::vector> image = { - {1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; - - std::vector>> result = - atom::algorithm::dfT2D(image); - - std::cout << "2D DFT result:" << std::endl; - for (const auto& row : result) { - for (const auto& val : row) { - std::cout << val << " "; - } - std::cout << std::endl; - } - } - - { - std::vector>> spectrum = { - {std::complex(45, 0), - std::complex(-4.5, 2.598076211353316)}, - {std::complex(-13.5, 7.794228634059948), - std::complex(0, 0)}, - {std::complex(-13.5, -7.794228634059948), - std::complex(-4.5, -2.598076211353316)}}; - - std::vector> result = - atom::algorithm::idfT2D(spectrum); - - std::cout << "2D IDFT result:" << std::endl; - for (const auto& row : result) { - for (double val : row) { - std::cout << val << " "; - } - std::cout << std::endl; - } - } - - { - int size = 5; - double sigma = 1.0; - - std::vector> kernel = - atom::algorithm::generateGaussianKernel(size, sigma); - - std::cout << "Gaussian Kernel:" << std::endl; - for (const auto& row : kernel) { - for (double val : row) { - std::cout << val << " "; - } - std::cout << std::endl; - } - } - - { - std::vector> image = { - {1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; - - int size = 3; - double sigma = 1.0; - std::vector> kernel = - atom::algorithm::generateGaussianKernel(size, sigma); - - std::vector> result = - atom::algorithm::applyGaussianFilter(image, kernel); - - std::cout << "Gaussian Filter result:" << std::endl; - for (const auto& row : result) { - for (double val : row) { - std::cout << val << " "; - } - std::cout << std::endl; - } - } - - return 0; -} diff --git a/example/atom/algorithm/fnmatch.cpp b/example/atom/algorithm/fnmatch.cpp deleted file mode 100644 index 6a1b1eca..00000000 --- a/example/atom/algorithm/fnmatch.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include "atom/algorithm/fnmatch.hpp" - -#include - -int main() { - { - std::string pattern = "*.cpp"; - std::string filename = "main.cpp"; - - bool match = atom::algorithm::fnmatch(pattern, filename); - if (match) { - std::cout << filename << " matches the pattern " << pattern - << std::endl; - } else { - std::cout << filename << " does not match the pattern " << pattern - << std::endl; - } - } - - { - std::vector filenames = {"main.cpp", "README.md", - "fnmatch.hpp"}; - std::string pattern = "*.hpp"; - - [[maybe_unused]] auto matches = - atom::algorithm::filter(filenames, pattern); - - std::cout << "Files matching pattern:\n"; - } - - { - std::vector filenames = {"main.cpp", "README.md", - "fnmatch.hpp", "CMakeLists.txt"}; - std::vector patterns = {"*.cpp", "*.hpp"}; - - std::vector matches = - atom::algorithm::filter(filenames, patterns); - - std::cout << "Files matching patterns:\n"; - for (const auto& file : matches) { - std::cout << file << std::endl; - } - } - - return 0; -} diff --git a/example/atom/algorithm/fraction.cpp b/example/atom/algorithm/fraction.cpp deleted file mode 100644 index b25d9a34..00000000 --- a/example/atom/algorithm/fraction.cpp +++ /dev/null @@ -1,97 +0,0 @@ -#include "atom/algorithm/fraction.hpp" - -#include -#include - -int main() { - { - // Default constructor - atom::algorithm::Fraction f1; // Represents 0/1 - - // Parameterized constructor - atom::algorithm::Fraction f2(3, 4); // Represents 3/4 - - // Printing fractions - std::cout << "Fraction f1: " << f1.toString() - << std::endl; // Output: "0/1" - std::cout << "Fraction f2: " << f2.toString() - << std::endl; // Output: "3/4" - } - - { - atom::algorithm::Fraction f1(1, 2); // Represents 1/2 - atom::algorithm::Fraction f2(3, 4); // Represents 3/4 - - // Addition - auto resultAdd = f1 + f2; // 1/2 + 3/4 = 5/4 - std::cout << "Addition result: " << resultAdd.toString() - << std::endl; // Output: "5/4" - - // Subtraction - auto resultSub = f1 - f2; // 1/2 - 3/4 = -1/4 - std::cout << "Subtraction result: " << resultSub.toString() - << std::endl; // Output: "-1/4" - - // Multiplication - auto resultMul = f1 * f2; // 1/2 * 3/4 = 3/8 - std::cout << "Multiplication result: " << resultMul.toString() - << std::endl; // Output: "3/8" - - // Division - auto resultDiv = f1 / f2; // 1/2 / 3/4 = 2/3 - std::cout << "Division result: " << resultDiv.toString() - << std::endl; // Output: "2/3" - } - - { - atom::algorithm::Fraction f1(1, 2); // Represents 1/2 - atom::algorithm::Fraction f2(3, 4); // Represents 3/4 - - f1 += f2; // f1 now represents 5/4 - std::cout << "After addition assignment: " << f1.toString() - << std::endl; // Output: "5/4" - - f1 -= f2; // f1 now represents 1/2 - std::cout << "After subtraction assignment: " << f1.toString() - << std::endl; // Output: "1/2" - - f1 *= f2; // f1 now represents 3/8 - std::cout << "After multiplication assignment: " << f1.toString() - << std::endl; // Output: "3/8" - - f1 /= f2; // f1 now represents 1/2 - std::cout << "After division assignment: " << f1.toString() - << std::endl; // Output: "1/2" - } - - { - atom::algorithm::Fraction f(3, 4); // Represents 3/4 - - double d = static_cast(f); // Converts to double - std::cout << "Fraction as double: " << d << std::endl; // Output: 0.75 - - float fl = static_cast(f); // Converts to float - std::cout << "Fraction as float: " << fl << std::endl; // Output: 0.75 - - int i = static_cast(f); // Converts to int (truncates to 0) - std::cout << "Fraction as int: " << i << std::endl; // Output: 0 - } - - { - // Output to stream - atom::algorithm::Fraction f(5, 6); // Represents 5/6 - std::ostringstream oss; - oss << f; - std::cout << "Fraction as stream output: " << oss.str() - << std::endl; // Output: "5/6" - - // Input from stream - atom::algorithm::Fraction fInput; - std::istringstream iss("7 8"); // Represents 7/8 - iss >> fInput; - std::cout << "Fraction after input: " << fInput.toString() - << std::endl; // Output: "7/8" - } - - return 0; -} diff --git a/example/atom/algorithm/hash.cpp b/example/atom/algorithm/hash.cpp deleted file mode 100644 index c267b0d1..00000000 --- a/example/atom/algorithm/hash.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include "atom/algorithm/hash.hpp" - -#include - -int main() { - { - int number = 42; - std::size_t numberHash = atom::algorithm::computeHash(number); - - std::cout << "Hash of integer 42: " << numberHash << std::endl; - } - - { - std::string text = "Hello, World!"; - std::size_t textHash = atom::algorithm::computeHash(text); - - std::cout << "Hash of string \"Hello, World!\": " << textHash - << std::endl; - } - - { - std::vector values = {1, 2, 3, 4, 5}; - std::size_t vectorHash = atom::algorithm::computeHash(values); - - std::cout << "Hash of vector {1, 2, 3, 4, 5}: " << vectorHash - << std::endl; - } - - { - auto myTuple = std::make_tuple(1, 2.5, "text"); - std::size_t tupleHash = atom::algorithm::computeHash(myTuple); - - std::cout << "Hash of tuple (1, 2.5, \"text\"): " << tupleHash - << std::endl; - } - - { - std::array myArray = {10, 20, 30}; - std::size_t arrayHash = atom::algorithm::computeHash(myArray); - - std::cout << "Hash of array {10, 20, 30}: " << arrayHash << std::endl; - } - - { - const char* cstr = "example"; - unsigned int hashValue = hash(cstr); - - std::cout << "Hash of C-string \"example\": " << hashValue << std::endl; - } - - { - constexpr unsigned int literalHash = "example"_hash; - - std::cout << "Hash of string literal \"example\": " << literalHash - << std::endl; - } - - return 0; -} diff --git a/example/atom/algorithm/huffman.cpp b/example/atom/algorithm/huffman.cpp deleted file mode 100644 index 3e1545c1..00000000 --- a/example/atom/algorithm/huffman.cpp +++ /dev/null @@ -1,91 +0,0 @@ -#include "atom/algorithm/huffman.hpp" - -#include -#include - -int main() { - { - // Frequency map for characters - std::unordered_map frequencies = { - {'a', 5}, {'b', 9}, {'c', 12}, {'d', 13}, {'e', 16}, {'f', 45}}; - - // Create Huffman Tree - auto huffmanTree = atom::algorithm::createHuffmanTree(frequencies); - - if (huffmanTree) { - std::cout << "Huffman tree created successfully." << std::endl; - } - } - - { - // Example frequency map - std::unordered_map frequencies = { - {'a', 5}, {'b', 9}, {'c', 12}, {'d', 13}, {'e', 16}, {'f', 45}}; - - // Create Huffman Tree - auto huffmanTree = atom::algorithm::createHuffmanTree(frequencies); - - // Generate Huffman Codes - std::unordered_map huffmanCodes; - atom::algorithm::generateHuffmanCodes(huffmanTree.get(), "", - huffmanCodes); - - // Print Huffman Codes - for (const auto& pair : huffmanCodes) { - std::cout << "Character: " << pair.first - << ", Code: " << pair.second << std::endl; - } - } - - { - // Example frequency map - std::unordered_map frequencies = { - {'a', 5}, {'b', 9}, {'c', 12}, {'d', 13}, {'e', 16}, {'f', 45}}; - - // Create Huffman Tree - auto huffmanTree = atom::algorithm::createHuffmanTree(frequencies); - - // Generate Huffman Codes - std::unordered_map huffmanCodes; - atom::algorithm::generateHuffmanCodes(huffmanTree.get(), "", - huffmanCodes); - - // Example text - std::string text = "abcdef"; - - // Compress Text - std::string compressedText = - atom::algorithm::compressText(text, huffmanCodes); - - std::cout << "Compressed Text: " << compressedText << std::endl; - } - - { - // Example frequency map - std::unordered_map frequencies = { - {'a', 5}, {'b', 9}, {'c', 12}, {'d', 13}, {'e', 16}, {'f', 45}}; - - // Create Huffman Tree - auto huffmanTree = atom::algorithm::createHuffmanTree(frequencies); - - // Generate Huffman Codes - std::unordered_map huffmanCodes; - atom::algorithm::generateHuffmanCodes(huffmanTree.get(), "", - huffmanCodes); - - // Example text - std::string text = "abcdef"; - - // Compress Text - std::string compressedText = - atom::algorithm::compressText(text, huffmanCodes); - - // Decompress Text - std::string decompressedText = - atom::algorithm::decompressText(compressedText, huffmanTree.get()); - - std::cout << "Decompressed Text: " << decompressedText << std::endl; - } - - return 0; -} diff --git a/example/atom/algorithm/math.cpp b/example/atom/algorithm/math.cpp deleted file mode 100644 index 2a2fd15d..00000000 --- a/example/atom/algorithm/math.cpp +++ /dev/null @@ -1,95 +0,0 @@ -#include "atom/algorithm/math.hpp" - -#include - -int main() { - { - uint64_t a = 100000000000ULL; - uint64_t b = 200000000000ULL; - uint64_t result = atom::algorithm::safeAdd(a, b); - - std::cout << "Safe Addition Result: " << result << std::endl; - } - - { - uint64_t a = 300000000000ULL; - uint64_t b = 100000000000ULL; - uint64_t result = atom::algorithm::safeSub(a, b); - - std::cout << "Safe Subtraction Result: " << result << std::endl; - } - - { - uint64_t a = 300000ULL; - uint64_t b = 100000ULL; - uint64_t result = atom::algorithm::safeMul(a, b); - - std::cout << "Safe Multiplication Result: " << result << std::endl; - } - - { - uint64_t a = 100ULL; - uint64_t b = 4ULL; - uint64_t result = atom::algorithm::safeDiv(a, b); - - std::cout << "Safe Division Result: " << result << std::endl; - } - - { - uint64_t operant = 10; - uint64_t multiplier = 20; - uint64_t divider = 5; - - uint64_t result = - atom::algorithm::mulDiv64(operant, multiplier, divider); - - std::cout << "Result of (10 * 20) / 5: " << result << std::endl; - } - - { - uint64_t n = 0x1234567890ABCDEF; - unsigned int c = 8; // Rotate left by 8 bits - - uint64_t result = atom::algorithm::rotl64(n, c); - - std::cout << "Rotate Left Result: " << std::hex << result << std::endl; - } - - { - uint64_t n = 0x1234567890ABCDEF; - unsigned int c = 8; // Rotate right by 8 bits - - uint64_t result = atom::algorithm::rotr64(n, c); - - std::cout << "Rotate Right Result: " << std::hex << result << std::endl; - } - - { - uint64_t x = 0x00F0; - - int leadingZeros = atom::algorithm::clz64(x); - - std::cout << "Leading Zeros in 0x00F0: " << leadingZeros << std::endl; - } - - { - uint64_t a = 48; - uint64_t b = 180; - - uint64_t gcdResult = atom::algorithm::gcd64(a, b); - uint64_t lcmResult = atom::algorithm::lcm64(a, b); - - std::cout << "GCD of 48 and 180: " << gcdResult << std::endl; - std::cout << "LCM of 48 and 180: " << lcmResult << std::endl; - } - - { - uint64_t n = 16; // Power of two - bool result = atom::algorithm::isPowerOfTwo(n); - - std::cout << n << " is a power of two: " << (result ? "true" : "false") - << std::endl; - } - - return 0; -} diff --git a/example/atom/algorithm/md5.cpp b/example/atom/algorithm/md5.cpp deleted file mode 100644 index da08fad8..00000000 --- a/example/atom/algorithm/md5.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "atom/algorithm/md5.hpp" - -#include - -int main() { - { - // Example strings to hash - std::string test1 = "Hello, World!"; - std::string test2 = "The quick brown fox jumps over the lazy dog"; - std::string test3 = "MD5 Hash Example"; - - // Call the encrypt method and output the result - std::string hash1 = atom::algorithm::MD5::encrypt(test1); - std::string hash2 = atom::algorithm::MD5::encrypt(test2); - std::string hash3 = atom::algorithm::MD5::encrypt(test3); - - // Output the results - std::cout << "MD5(\"" << test1 << "\") = " << hash1 << std::endl; - std::cout << "MD5(\"" << test2 << "\") = " << hash2 << std::endl; - std::cout << "MD5(\"" << test3 << "\") = " << hash3 << std::endl; - } - - return 0; -} diff --git a/example/atom/algorithm/mhash.cpp b/example/atom/algorithm/mhash.cpp deleted file mode 100644 index afaf9ed3..00000000 --- a/example/atom/algorithm/mhash.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include -#include - -#include "atom/algorithm/mhash.hpp" - -int main() { - // Create some example sets for which we want to compute MinHash signatures. - std::set set1 = {"apple", "banana", "cherry"}; - std::set set2 = {"banana", "cherry", "date", "fig"}; - - // Specify the number of hash functions to use - size_t numHashes = 100; - - // Create MinHash instance - atom::algorithm::MinHash minHash(numHashes); - - // Compute MinHash signatures for both sets - auto signature1 = minHash.computeSignature(set1); - auto signature2 = minHash.computeSignature(set2); - - // Output the MinHash signatures - std::cout << "MinHash Signature for Set 1: "; - for (const auto& hash : signature1) { - std::cout << hash << " "; - } - std::cout << std::endl; - - std::cout << "MinHash Signature for Set 2: "; - for (const auto& hash : signature2) { - std::cout << hash << " "; - } - std::cout << std::endl; - - // Compute the Jaccard index between the two sets - double jaccardIdx = - atom::algorithm::MinHash::jaccardIndex(signature1, signature2); - std::cout << "Estimated Jaccard Index between Set 1 and Set 2: " - << jaccardIdx << std::endl; - - return 0; -} diff --git a/example/atom/algorithm/perlin.cpp b/example/atom/algorithm/perlin.cpp deleted file mode 100644 index 592ecdfb..00000000 --- a/example/atom/algorithm/perlin.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include -#include - -#include "atom/algorithm/perlin.hpp" - -int main() { - // Create a PerlinNoise object with a default seed - atom::algorithm::PerlinNoise perlin; - - // Generate a noise value at a specific point (x, y, z) - double x = 10.5, y = 20.5, z = 30.5; - double noiseValue = perlin.noise(x, y, z); - std::cout << "Noise Value at (" << x << ", " << y << ", " << z - << "): " << noiseValue << std::endl; - - // Generate a noise map - int width = 100; // Width of the noise map - int height = 100; // Height of the noise map - double scale = 50.0; // Scale for the noise - int octaves = 4; // Number of octaves for the noise - double persistence = 0.5; // Persistence for the noise - - auto noiseMap = perlin.generateNoiseMap(width, height, scale, octaves, - persistence, 0.5); - - // Output the first row of the noise map as an example - std::cout << "Noise Map (first row):" << std::endl; - for (const auto& value : noiseMap[0]) { - std::cout << value << " "; - } - std::cout << std::endl; - - return 0; -} diff --git a/example/atom/algorithm/weight.cpp b/example/atom/algorithm/weight.cpp deleted file mode 100644 index aca52747..00000000 --- a/example/atom/algorithm/weight.cpp +++ /dev/null @@ -1,70 +0,0 @@ -#include "atom/algorithm/weight.hpp" - -#include -#include -#include -#include - -int main() { - // Sample weights - std::vector weights = {1.0, 2.0, 3.0, 4.0, 5.0}; - - // Create a WeightSelector instance with default selection strategy - atom::algorithm::WeightSelector selector(weights); - - // Select a single weight based on the defined strategy - size_t selectedIndex = selector.select(); - std::cout << "Selected index (default strategy): " << selectedIndex - << " with weight: " << weights[selectedIndex] << std::endl; - - // Select multiple weights - size_t n = 3; // Number of selections - auto chosenIndices = selector.selectMultiple(n); - std::cout << "Selected indices for " << n << " selections: "; - for (size_t index : chosenIndices) { - std::cout << index << " (weight: " << weights[index] << "), "; - } - std::cout << std::endl; - - // Update a weight - size_t updateIndex = 2; // Change weight at index 2 - selector.updateWeight(updateIndex, 10.0); - std::cout << "Updated weight at index " << updateIndex << " to 10.0." - << std::endl; - - // Print current weights - std::cout << "Current weights: "; - selector.printWeights(std::cout); - - // Normalize weights - selector.normalizeWeights(); - std::cout << "Normalized weights: "; - selector.printWeights(std::cout); - - // Use TopHeavySelectionStrategy - selector.setSelectionStrategy( - std::make_unique>()); - size_t heavySelectedIndex = selector.select(); - std::cout << "Selected index (TopHeavy strategy): " << heavySelectedIndex - << " with weight: " << weights[heavySelectedIndex] << std::endl; - - // Add a new weight - selector.addWeight(6.0); - std::cout << "Added weight 6.0. New weights: "; - selector.printWeights(std::cout); - - // Remove weight - selector.removeWeight(0); // remove the weight at index 0 - std::cout << "Removed weight at index 0. New weights: "; - selector.printWeights(std::cout); - - // Get max and min weight indices - size_t maxWeightIndex = selector.getMaxWeightIndex(); - size_t minWeightIndex = selector.getMinWeightIndex(); - std::cout << "Max weight index: " << maxWeightIndex - << " (weight: " << weights[maxWeightIndex] << "), " - << "Min weight index: " << minWeightIndex - << " (weight: " << weights[minWeightIndex] << ")" << std::endl; - - return 0; -} diff --git a/example/atom/argsview.cpp b/example/atom/argsview.cpp deleted file mode 100644 index 99bbc492..00000000 --- a/example/atom/argsview.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include -#include - -#include "atom/type/argsview.hpp" - -int main() { - // Example 1: Creating an ArgsView and accessing elements - ArgsView argsView(42, 3.14, "Hello, World!"); - std::cout << "First element: " << argsView.get<0>() << "\n"; - std::cout << "Second element: " << argsView.get<1>() << "\n"; - std::cout << "Third element: " << argsView.get<2>() << "\n"; - - // Example 2: Using forEach to print all elements - std::cout << "All elements: "; - argsView.forEach([](const auto& arg) { std::cout << arg << " "; }); - std::cout << "\n"; - - // Example 3: Transforming elements - auto transformedView = argsView.transform([](const auto& arg) { - if constexpr (std::is_same_v) { - return arg * 2; - } else if constexpr (std::is_same_v) { - return arg + 1.0; - } else if constexpr (std::is_same_v) { - return arg + "!!!"; - } - }); - - std::cout << "Transformed elements: "; - transformedView.forEach([](const auto& arg) { std::cout << arg << " "; }); - std::cout << "\n"; - - // Example 4: Accumulating elements - int sum = argsView.accumulate( - [](int acc, const auto& arg) { - if constexpr (std::is_arithmetic_v) { - return acc + arg; - } else { - return acc; - } - }, - 0); - std::cout << "Sum of numeric elements: " << sum << "\n"; - - // Example 5: Using apply to call a function with all elements - auto concatenated = std::apply( - [](const auto&... args) { return (std::to_string(args) + ...); }, - argsView.toTuple()); - std::cout << "Concatenated elements: " << concatenated << "\n"; - - // Example 6: Using makeArgsView to create an ArgsView - auto argsView2 = makeArgsView(1, 2.5, "Test"); - std::cout << "ArgsView2 elements: "; - argsView2.forEach([](const auto& arg) { std::cout << arg << " "; }); - std::cout << "\n"; - - // Example 7: Using sum and concat helper functions - int total = sum(1, 2, 3, 4, 5); - std::cout << "Sum of 1, 2, 3, 4, 5: " << total << "\n"; - - std::string concatenatedStr = concat("Hello", " ", "ArgsView", "!"); - std::cout << "Concatenated string: " << concatenatedStr << "\n"; - - return 0; -} diff --git a/example/atom/async/async.cpp b/example/atom/async/async.cpp deleted file mode 100644 index fa70a114..00000000 --- a/example/atom/async/async.cpp +++ /dev/null @@ -1,83 +0,0 @@ -#include -#include -#include -#include - -#include "atom/async/async.hpp" - -// Sample function to be run asynchronously -int sampleTask(int duration) { - std::this_thread::sleep_for(std::chrono::seconds(duration)); - return duration; // Return the duration as result -} - -int main() { - // Create an AsyncWorker object for managing asynchronous tasks - atom::async::AsyncWorker worker; - - // Start an asynchronous task - worker.startAsync(sampleTask, 3); // This will sleep for 3 seconds - - // Set a callback to handle the result when the task is done - worker.setCallback([](int result) { - std::cout << "Task completed with result: " << result << std::endl; - }); - - // Set a timeout of 5 seconds - worker.setTimeout(std::chrono::seconds(5)); - - // Wait for completion - std::cout << "Waiting for task completion...\n"; - worker.waitForCompletion(); - - // Get the result (this will work since we know the task completed) - try { - int result = worker.getResult(); - std::cout << "Result retrieved successfully: " << result << std::endl; - } catch (const std::exception &e) { - std::cerr << "Error retrieving result: " << e.what() << std::endl; - } - - // Using AsyncWorkerManager to manage multiple workers - atom::async::AsyncWorkerManager manager; - - // Create multiple async workers - manager.createWorker(sampleTask, 1); // 1 second task - manager.createWorker(sampleTask, 2); // 2 seconds task - manager.createWorker(sampleTask, 3); // 3 seconds task - - // Wait for all created tasks to complete - std::cout << "Waiting for all tasks to complete...\n"; - manager.waitForAll(); - - // Check if all tasks are done - if (manager.allDone()) { - std::cout << "All tasks have completed successfully.\n"; - } else { - std::cout << "Some tasks are still running.\n"; - } - - // Retry logic using asyncRetry for a task that may fail - auto retryExample = [](int x) { - static int attempt = 0; - attempt++; - if (attempt < 3) { - std::cerr << "Attempt " << attempt << " failed, retrying...\n"; - throw std::runtime_error("Simulated failure"); - } - return x * 2; // Successful result - }; - - // Execute with retry - std::future futureResult = atom::async::asyncRetry( - retryExample, 3, std::chrono::milliseconds(500), 5); - try { - int finalResult = futureResult.get(); - std::cout << "Final result after retrying: " << finalResult - << std::endl; - } catch (const std::exception &e) { - std::cerr << "Error after retries: " << e.what() << std::endl; - } - - return 0; -} diff --git a/example/atom/async/daemon.cpp b/example/atom/async/daemon.cpp deleted file mode 100644 index 7abefd90..00000000 --- a/example/atom/async/daemon.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include -#include -#include - -#include "atom/async/daemon.hpp" - -int mainCallback(int argc, char **argv) { - std::cout << "Daemon process running...\n"; - - // Simulate some work in the daemon - for (int i = 0; i < 10; ++i) { - std::cout << "Daemon is working: " << i + 1 << "/10" << std::endl; - std::this_thread::sleep_for(std::chrono::seconds(1)); - } - - return 0; // Indicate success -} - -int main(int argc, char **argv) { - atom::async::DaemonGuard daemonGuard; - - // Set up signal handling - signal(SIGTERM, atom::async::signalHandler); - signal(SIGINT, atom::async::signalHandler); - - // Start the daemon - daemonGuard.startDaemon(argc, argv, mainCallback, true); - - return 0; -} diff --git a/example/atom/async/eventloop.c b/example/atom/async/eventloop.c deleted file mode 100644 index e98ee791..00000000 --- a/example/atom/async/eventloop.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "atom/async/eventloop.h" - -#include - -// Example callback function for file descriptors -void onFdReady(int fd, void *userData) { - printf("File descriptor %d is ready. User Data: %s\n", fd, (char *)userData); -} - -// Example work procedure -void workProc(void *userData) { - printf("Executing work procedure. User Data: %s\n", (char *)userData); -} - -// Example timer callback function -void onTimer(void *userData) { - printf("Timer fired. User Data: %s\n", (char *)userData); -} - -int main() { - // Starting the event loop - printf("Starting Event Loop\n"); - - // Adding file descriptor callback example - int fd_example = /* Assume you have a valid file descriptor */; - int callbackId = addCallback(fd_example, onFdReady, "File Descriptor User Data"); - - // Adding a work procedure - int workProcId = addWorkProc(workProc, "Work Procedure User Data"); - - // Adding a one-shot timer - int timerId = addTimer(1000 /* ms */, onTimer, "One-Shot Timer"); - - // Adding a periodic timer - int periodicTimerId = addPeriodicTimer(2000 /* ms */, onTimer, "Periodic Timer"); - - // Run the event loop - eventLoop(); - - // Cleanup - rmCallback(callbackId); - rmWorkProc(workProcId); - rmTimer(timerId); - rmTimer(periodicTimerId); - - printf("Ending Event Loop\n"); - return 0; -} diff --git a/example/atom/async/eventstack.cpp b/example/atom/async/eventstack.cpp deleted file mode 100644 index 4b6121eb..00000000 --- a/example/atom/async/eventstack.cpp +++ /dev/null @@ -1,84 +0,0 @@ -#include -#include - -#include "atom/async/eventstack.hpp" - -// Define a simple event type (in this case, a string) -using EventType = std::string; - -void exampleUsage() { - // Create an EventStack for managing string events - atom::async::EventStack eventStack; - - // Push some events onto the stack - eventStack.pushEvent("Event 1: Start processing data"); - eventStack.pushEvent("Event 2: Load configuration"); - eventStack.pushEvent("Event 3: Connect to database"); - eventStack.pushEvent("Event 4: Process user input"); - - // Print size of the stack - std::cout << "Current stack size: " << eventStack.size() << std::endl; - - // Peek at the top event - auto topEvent = eventStack.peekTopEvent(); - if (topEvent) { - std::cout << "Top event: " << *topEvent << std::endl; - } else { - std::cout << "Stack is empty!" << std::endl; - } - - // Pop an event from the stack - auto poppedEvent = eventStack.popEvent(); - if (poppedEvent) { - std::cout << "Popped event: " << *poppedEvent << std::endl; - } else { - std::cout << "Stack is empty!" << std::endl; - } - - // Filter events that contain the word "data" - eventStack.filterEvents([](const EventType& event) { - return event.find("data") != std::string::npos; - }); - - std::cout << "After filtering, stack size: " << eventStack.size() - << std::endl; - -#if ENABLE_DEBUG - // Print remaining events - eventStack.printEvents(); -#endif - - // Serialize the stack to a string - std::string serializedData = eventStack.serializeStack(); - std::cout << "Serialized stack: " << serializedData << std::endl; - - // Clear the stack, and then deserialize the serialized data back into the - // stack - eventStack.clearEvents(); - std::cout << "Stack cleared." << std::endl; - - eventStack.deserializeStack(serializedData); - std::cout << "Deserialized stack size: " << eventStack.size() << std::endl; - - // Remove duplicates (if any) - eventStack.removeDuplicates(); - - // Sort events in the stack (lexicographical order) - eventStack.sortEvents( - [](const EventType& a, const EventType& b) { return a < b; }); - std::cout << "Sorted stack size: " << eventStack.size() << std::endl; - - // Check if any event contains the word "input" - bool hasInputEvent = eventStack.anyEvent([](const EventType& event) { - return event.find("input") != std::string::npos; - }); - - std::cout << (hasInputEvent ? "There is an event containing 'input'.\n" - : "No events contain 'input'.\n"); -} - -int main() { - // Run the event stack example - exampleUsage(); - return 0; -} diff --git a/example/atom/async/limiter.cpp b/example/atom/async/limiter.cpp deleted file mode 100644 index 743a6c8c..00000000 --- a/example/atom/async/limiter.cpp +++ /dev/null @@ -1,72 +0,0 @@ -#include -#include -#include - -#include "atom/async/limiter.hpp" - -// Function to be rate limited -void criticalFunction() { - std::cout << "Critical function executed at " - << std::chrono::steady_clock::now().time_since_epoch().count() - << std::endl; -} - -// Function to demonstrate debouncing -void debouncedFunction() { - std::cout << "Debounced function executed at " - << std::chrono::steady_clock::now().time_since_epoch().count() - << std::endl; -} - -// Function to demonstrate throttling -void throttledFunction() { - std::cout << "Throttled function executed at " - << std::chrono::steady_clock::now().time_since_epoch().count() - << std::endl; -} - -int main() { - // Rate Limiter Example - atom::async::RateLimiter rateLimiter; - rateLimiter.setFunctionLimit("criticalFunction", 3, - std::chrono::seconds(5)); - - // Simulate requests to the critical function - for (int i = 0; i < 5; ++i) { - auto awaiter = rateLimiter.acquire("criticalFunction"); - awaiter.await_suspend({}); - criticalFunction(); - std::this_thread::sleep_for( - std::chrono::seconds(1)); // Simulate time between function calls - } - - // Debounce Example - atom::async::Debounce debouncer(debouncedFunction, - std::chrono::milliseconds(500), true); - - // Simulate rapid calls - for (int i = 0; i < 5; ++i) { - debouncer(); // Calls will be debounced - std::this_thread::sleep_for( - std::chrono::milliseconds(200)); // Calls within the debounce delay - } - - std::this_thread::sleep_for( - std::chrono::milliseconds(600)); // Wait for debounced call to execute - - // Throttle Example - atom::async::Throttle throttler(throttledFunction, - std::chrono::milliseconds(1000), true); - - // Simulate rapid throttled calls - for (int i = 0; i < 5; ++i) { - throttler(); // Throttled function calls - std::this_thread::sleep_for( - std::chrono::milliseconds(300)); // Calls within the throttle time - } - - std::this_thread::sleep_for( - std::chrono::milliseconds(2000)); // Wait to ensure throttling works - - return 0; -} diff --git a/example/atom/async/lock.cpp b/example/atom/async/lock.cpp deleted file mode 100644 index 4df2f31b..00000000 --- a/example/atom/async/lock.cpp +++ /dev/null @@ -1,90 +0,0 @@ -#include -#include -#include - -#include "atom/async/lock.hpp" - -// Global shared variable -int sharedCounter = 0; -const int NUM_INCREMENTS = 1000; - -// Example using Spinlock -atom::async::Spinlock spinlock; - -void incrementCounterWithSpinlock() { - for (int i = 0; i < NUM_INCREMENTS; ++i) { - spinlock.lock(); - ++sharedCounter; // Critical section - spinlock.unlock(); - } -} - -// Example using TicketSpinlock -atom::async::TicketSpinlock ticketSpinlock; - -void incrementCounterWithTicketSpinlock() { - for (int i = 0; i < NUM_INCREMENTS; ++i) { - ticketSpinlock.lock(); - ++sharedCounter; // Critical section - ticketSpinlock.unlock( - 0); // Unlock with ticket 0 (not optimal for brevity) - } -} - -// Example using UnfairSpinlock -atom::async::UnfairSpinlock unfairSpinlock; - -void incrementCounterWithUnfairSpinlock() { - for (int i = 0; i < NUM_INCREMENTS; ++i) { - unfairSpinlock.lock(); - ++sharedCounter; // Critical section - unfairSpinlock.unlock(); - } -} - -int main() { - sharedCounter = 0; // Reset shared counter - - // Using Spinlock - std::vector threads; - std::cout << "Using Spinlock:\n"; - for (int i = 0; i < 5; ++i) { - threads.emplace_back(incrementCounterWithSpinlock); - } - for (auto &t : threads) { - t.join(); - } - std::cout << "Final counter value (Spinlock): " << sharedCounter << "\n"; - - // Reset shared counter for next demo - sharedCounter = 0; - threads.clear(); - - // Using TicketSpinlock - std::cout << "Using TicketSpinlock:\n"; - for (int i = 0; i < 5; ++i) { - threads.emplace_back(incrementCounterWithTicketSpinlock); - } - for (auto &t : threads) { - t.join(); - } - std::cout << "Final counter value (TicketSpinlock): " << sharedCounter - << "\n"; - - // Reset shared counter for next demo - sharedCounter = 0; - threads.clear(); - - // Using UnfairSpinlock - std::cout << "Using UnfairSpinlock:\n"; - for (int i = 0; i < 5; ++i) { - threads.emplace_back(incrementCounterWithUnfairSpinlock); - } - for (auto &t : threads) { - t.join(); - } - std::cout << "Final counter value (UnfairSpinlock): " << sharedCounter - << "\n"; - - return 0; -} diff --git a/example/atom/async/message_bus.cpp b/example/atom/async/message_bus.cpp deleted file mode 100644 index f3d7eb7c..00000000 --- a/example/atom/async/message_bus.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#include -#include -#include - -#include "atom/async/message_bus.hpp" - -// Message structure -struct MyMessage { - std::string content; -}; - -void subscriberFunction(const MyMessage &msg) { - std::cout << "Received message: " << msg.content << std::endl; -} - -void globalSubscriberFunction(const MyMessage &msg) { - std::cout << "Global subscriber received: " << msg.content << std::endl; -} - -int main() { - // Create a MessageBus instance - auto bus = atom::async::MessageBus::createShared(); - - // Subscribe to a specific topic - bus->subscribe("my_topic", subscriberFunction); - - // Subscribe to a global topic - bus->globalSubscribe(globalSubscriberFunction); - - // Publish messages to the topic - for (int i = 0; i < 5; ++i) { - MyMessage msg{"Hello World " + std::to_string(i)}; - bus->publish("my_topic", msg); - std::this_thread::sleep_for(std::chrono::milliseconds( - 200)); // Simulate some delay between messages - } - - // Publish a message after a delay - std::this_thread::sleep_for(std::chrono::seconds(1)); - MyMessage globalMsg{"This is a global message!"}; - bus->publish("global_topic", globalMsg); - - // Delay to allow global subscribers to process messages - std::this_thread::sleep_for(std::chrono::seconds(2)); - - // Unsubscribe from the topic - bus->unsubscribe("my_topic", subscriberFunction); - - // Publish another message to see if the subscriber still receives it - MyMessage msg{"This should NOT be received by the local subscriber!"}; - bus->publish("my_topic", msg); - - // Wait for a moment to observe potential output - std::this_thread::sleep_for(std::chrono::seconds(1)); - - // Stop all processing threads if any (not implemented here, just caution) - // bus->stopAllProcessingThreads(); - - return 0; -} diff --git a/example/atom/async/message_queue.cpp b/example/atom/async/message_queue.cpp deleted file mode 100644 index 4380dee0..00000000 --- a/example/atom/async/message_queue.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include "atom/async/message_queue.hpp" - -#include -#include -#include - -// Message structure -struct MyMessage { - std::string content; -}; - -// Subscriber function to handle incoming messages -void messageHandler(const MyMessage &msg) { - std::cout << "Received message: " << msg.content << std::endl; -} - -int main() { - // Create a MessageQueue instance for MyMessage - atom::async::MessageQueue messageQueue; - - // Subscribe to the message queue - messageQueue.subscribe(messageHandler, "MessageHandler"); - - // Start the processing thread - messageQueue.startProcessingThread(); - - // Publish some messages to the queue - for (int i = 0; i < 5; ++i) { - MyMessage msg{"Hello World " + std::to_string(i)}; - messageQueue.publish(msg); - std::this_thread::sleep_for(std::chrono::milliseconds( - 200)); // Simulate some delay between messages - } - - // Allow some time for processing before stopping - std::this_thread::sleep_for(std::chrono::seconds(1)); - - // Stop the processing thread - messageQueue.stopProcessingThread(); - - return 0; -} diff --git a/example/atom/async/pool.cpp b/example/atom/async/pool.cpp deleted file mode 100644 index 892d96b2..00000000 --- a/example/atom/async/pool.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include -#include -#include - -#include "atom/async/pool.hpp" - -// A sample task function that simulates work -void sampleTask(int id) { - std::cout << "Task " << id << " is starting on thread " - << std::this_thread::get_id() << std::endl; - std::this_thread::sleep_for(std::chrono::seconds(1)); // Simulate work - std::cout << "Task " << id << " completed on thread " - << std::this_thread::get_id() << std::endl; -} - -int main() { - const unsigned int numThreads = 4; // Number of threads in the pool - atom::async::ThreadPool<> threadPool( - numThreads); // Create ThreadPool instance - - std::vector> - futures; // To hold futures for result checking - - // Enqueue multiple tasks into the thread pool - for (int i = 0; i < 10; ++i) { - futures.push_back(threadPool.enqueue(sampleTask, i)); - } - - // Wait for all tasks to complete - for (auto &future : futures) { - future.wait(); - } - - std::cout << "All tasks completed." << std::endl; - - return 0; -} diff --git a/example/atom/async/queue.cpp b/example/atom/async/queue.cpp deleted file mode 100644 index 9a71c9dd..00000000 --- a/example/atom/async/queue.cpp +++ /dev/null @@ -1,47 +0,0 @@ -#include -#include -#include -#include - -#include "atom/async/queue.hpp" - -// Function to simulate a producer that adds messages to the queue -void producer(atom::async::ThreadSafeQueue &queue) { - for (int i = 0; i < 10; ++i) { - std::string message = "Message " + std::to_string(i); - queue.put(message); - std::cout << "Produced: " << message << std::endl; - std::this_thread::sleep_for( - std::chrono::milliseconds(200)); // Simulate work - } -} - -// Function to simulate a consumer that takes messages from the queue -void consumer(atom::async::ThreadSafeQueue &queue) { - for (int i = 0; i < 10; ++i) { - auto message = queue.take(); - if (message) { - std::cout << "Consumed: " << *message << std::endl; - } else { - std::cout << "No message taken!" << std::endl; - } - std::this_thread::sleep_for( - std::chrono::milliseconds(300)); // Simulate processing delay - } -} - -int main() { - atom::async::ThreadSafeQueue messageQueue; - - // Create producer and consumer threads - std::thread producerThread(producer, std::ref(messageQueue)); - std::thread consumerThread(consumer, std::ref(messageQueue)); - - // Wait for both threads to finish - producerThread.join(); - consumerThread.join(); - - std::cout << "Processing complete." << std::endl; - - return 0; -} diff --git a/example/atom/async/safetype.cpp b/example/atom/async/safetype.cpp deleted file mode 100644 index 0d344c30..00000000 --- a/example/atom/async/safetype.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include -#include -#include -#include - -#include "atom/async/safetype.hpp" - -// Function to simulate pushing elements to the stack -template -void pushToStack(atom::async::LockFreeStack& stack, T value) { - stack.push(value); - std::cout << "Pushed: " << value << std::endl; -} - -// Function to simulate popping elements from the stack -template -void popFromStack(atom::async::LockFreeStack& stack) { - auto value = stack.pop(); - if (value) { - std::cout << "Popped: " << *value << std::endl; - } else { - std::cout << "Stack is empty." << std::endl; - } -} - -int main() { - // Create a LockFreeStack for integers - atom::async::LockFreeStack stack; - - // Create a vector for threads - std::vector threads; - - // Start threads to push elements onto the stack - for (int i = 0; i < 10; ++i) { - threads.emplace_back(pushToStack, std::ref(stack), i); - } - - // Allow some time for all pushes to complete - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - - // Start threads to pop elements from the stack - for (int i = 0; i < 5; ++i) { - threads.emplace_back(popFromStack, std::ref(stack)); - } - - // Wait for all threads to finish - for (auto& thread : threads) { - thread.join(); - } - - // Final stack state checks - if (stack.empty()) { - std::cout << "The stack is empty at the end." << std::endl; - } else { - std::cout << "The stack is not empty at the end." << std::endl; - } - - return 0; -} diff --git a/example/atom/async/slot.cpp b/example/atom/async/slot.cpp deleted file mode 100644 index 3fbc415c..00000000 --- a/example/atom/async/slot.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include -#include -#include - -#include "atom/async/limiter.hpp" -#include "atom/async/slot.hpp" - -// Example function to be called on signal emission -void exampleHandler(int value) { - std::cout << "Signal received with value: " << value << " on thread " - << std::this_thread::get_id() << std::endl; -} - -void exampleAsyncHandler(int value) { - std::cout << "Async signal received with value: " << value << " on thread " - << std::this_thread::get_id() << std::endl; -} - -int main() { - // Create a signal instance - atom::async::Signal mySignal; - - // Subscribe to the signal with a handler - mySignal.connect(exampleHandler); - - // Emit some signals - for (int i = 0; i < 5; ++i) { - mySignal.emit(i); - std::this_thread::sleep_for(std::chrono::milliseconds(200)); - } - - // Create an AsyncSignal instance - atom::async::AsyncSignal myAsyncSignal; - - // Subscribe to the async signal - myAsyncSignal.connect(exampleAsyncHandler); - - // Emit some async signals - for (int i = 5; i < 10; ++i) { - myAsyncSignal.emit(i); - std::this_thread::sleep_for(std::chrono::milliseconds(200)); - } - - // Demonstrating Debounce - atom::async::Debounce debouncedSignal( - []() { std::cout << "Debounced function executed.\n"; }, - std::chrono::milliseconds(500), false); - - // Simulating rapid calls to the debounced function - std::cout << "Simulating rapid calls to debounced function...\n"; - for (int i = 0; i < 10; ++i) { - debouncedSignal(); - std::this_thread::sleep_for(std::chrono::milliseconds(200)); - } - - // Give some time for the debounced function to execute - std::this_thread::sleep_for(std::chrono::milliseconds(700)); - - // Demonstrating Throttle - atom::async::Throttle throttledSignal( - []() { std::cout << "Throttled function executed.\n"; }, - std::chrono::milliseconds(1000), true); - - // Simulating rapid calls to the throttled function - std::cout << "Simulating rapid calls to throttled function...\n"; - for (int i = 0; i < 5; ++i) { - throttledSignal(); - std::this_thread::sleep_for(std::chrono::milliseconds(300)); - } - - // Wait some time to ensure throttled function executes - std::this_thread::sleep_for(std::chrono::milliseconds(1500)); - - return 0; -} diff --git a/example/atom/async/thread_wrapper.cpp b/example/atom/async/thread_wrapper.cpp deleted file mode 100644 index d71827e8..00000000 --- a/example/atom/async/thread_wrapper.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include -#include - -#include "atom/async/thread_wrapper.hpp" - -// A sample function to be executed in a thread -void threadFunction(int id, std::chrono::milliseconds duration) { - std::cout << "Thread " << id << " started. Sleeping for " - << duration.count() << "ms.\n"; - std::this_thread::sleep_for(duration); - std::cout << "Thread " << id << " finished processing!\n"; -} - -// A sample function that supports stopping -void stoppableThreadFunction(std::stop_token stopToken) { - for (int i = 0; i < 5; ++i) { - if (stopToken.stop_requested()) { - std::cout << "Thread is stopping early!\n"; - return; - } - std::cout << "Working... " << i + 1 << "\n"; - std::this_thread::sleep_for( - std::chrono::milliseconds(500)); // Simulate work - } -} - -int main() { - // Create a Thread for normal execution - atom::async::Thread normalThread; - normalThread.start(threadFunction, 1, std::chrono::milliseconds(2000)); - normalThread.join(); // Wait for it to finish - - // Create a Thread that can be stopped - atom::async::Thread stoppableThread; - stoppableThread.start(stoppableThreadFunction); // Start a stoppable thread - - // Give it some time to work - std::this_thread::sleep_for(std::chrono::seconds(1)); - std::cout << "Requesting the stoppable thread to stop...\n"; - stoppableThread.requestStop(); // Request it to stop - - stoppableThread.join(); // Wait for it to finish - - return 0; -} diff --git a/example/atom/async/threadlocal.cpp b/example/atom/async/threadlocal.cpp deleted file mode 100644 index ed369ef9..00000000 --- a/example/atom/async/threadlocal.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "atom/async/threadlocal.hpp" - -#include -#include - -void threadFunction(atom::async::ThreadLocal& threadLocal) { - // Initialize thread-local value - threadLocal.reset(42); - std::cout << "Thread ID: " << std::this_thread::get_id() - << ", Value: " << *threadLocal << std::endl; -} - -int initialize() { - return 100; // Example initialization value -} - -int main() { - { - atom::async::ThreadLocal threadLocal; // No initializer - - std::thread t1(threadFunction, std::ref(threadLocal)); - std::thread t2(threadFunction, std::ref(threadLocal)); - - t1.join(); - t2.join(); - } - - { - atom::async::ThreadLocal threadLocal( - initialize); // With initializer - - std::thread t1(threadFunction, std::ref(threadLocal)); - std::thread t2(threadFunction, std::ref(threadLocal)); - - t1.join(); - t2.join(); - } - return 0; -} diff --git a/example/atom/async/timer.cpp b/example/atom/async/timer.cpp deleted file mode 100644 index 47b62617..00000000 --- a/example/atom/async/timer.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include "atom/async/timer.hpp" - -#include -#include - -void task1() { std::cout << "Task 1 executed!" << std::endl; } - -void task2(int value) { - std::cout << "Task 2 executed with value: " << value << std::endl; -} - -int main() { - // 创建一个Timer对象 - atom::async::Timer timer; - - // 设置一个延迟执行的任务(一次性任务) - auto future1 = timer.setTimeout(task1, 2000); // 2秒后执行task1 - future1.get(); // 获取任务的结果(等待执行完成) - - // 设置一个定时重复任务(每3秒执行一次,重复5次) - timer.setInterval(task2, 3000, 5, 1, 42); // 任务优先级为1,参数为42 - - // 设置一个匿名函数任务(lambda表达式) - auto future2 = timer.setTimeout( - []() { - std::cout << "Lambda task executed after 1 second!" << std::endl; - }, - 1000); // 1秒后执行 - - future2.get(); // 获取lambda任务的结果(等待执行完成) - - // 模拟暂停定时器 - std::this_thread::sleep_for(std::chrono::seconds(5)); - std::cout << "Pausing timer..." << std::endl; - timer.pause(); - - // 暂停2秒 - std::this_thread::sleep_for(std::chrono::seconds(2)); - - // 恢复定时器 - std::cout << "Resuming timer..." << std::endl; - timer.resume(); - - // 等待一段时间后取消所有任务 - std::this_thread::sleep_for(std::chrono::seconds(10)); - std::cout << "Cancelling all tasks..." << std::endl; - timer.cancelAllTasks(); - - // 停止定时器 - timer.stop(); - - return 0; -} diff --git a/example/atom/async/trigger.cpp b/example/atom/async/trigger.cpp deleted file mode 100644 index 0b588362..00000000 --- a/example/atom/async/trigger.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include - -#include "atom/async/trigger.hpp" - -int main() { - atom::async::Trigger trigger; - - // Registering callbacks - trigger.registerCallback( - "onEvent", [](int x) { std::cout << "Callback 1: " << x << std::endl; }, - atom::async::Trigger::CallbackPriority::High); - trigger.registerCallback("onEvent", [](int x) { - std::cout << "Callback 2: " << x << std::endl; - }); - - // Triggering event - trigger.trigger("onEvent", 42); - - // Scheduling a delayed trigger - trigger.scheduleTrigger("onEvent", 84, std::chrono::milliseconds(500)); - - // Scheduling async trigger - auto future = trigger.scheduleAsyncTrigger("onEvent", 126); - future.get(); // Waiting for async trigger to complete - - // Cancel an event - trigger.cancelTrigger("onEvent"); - - // Cancel all events - trigger.cancelAllTriggers(); -} diff --git a/example/atom/connection/fifoclient.cpp b/example/atom/connection/fifoclient.cpp deleted file mode 100644 index f24b1123..00000000 --- a/example/atom/connection/fifoclient.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include -#include -#include - -#include "atom/connection/fifoclient.hpp" - -#if __linux -#include -#endif - -// Function to simulate the FIFO server -void fifoServer(const std::string& fifoPath) { - // Open the FIFO for writing. If it does not exist, create it. - mkfifo(fifoPath.c_str(), - 0666); // Create the named pipe if it doesn't exist - - // Simulate a server writing to the FIFO - atom::connection::FifoClient fifoClient(fifoPath); - if (!fifoClient.isOpen()) { - std::cerr << "Failed to open FIFO for writing." << std::endl; - return; - } - - std::string message = "Hello from FIFO Server!"; - fifoClient.write(message, - std::chrono::milliseconds(1000)); // Write with timeout - std::cout << "Server wrote: " << message << std::endl; - - fifoClient.close(); // Close FIFO after writing -} - -// Function to simulate the FIFO client -void fifoClient(const std::string& fifoPath) { - // Create a FifoClient to read from the FIFO - atom::connection::FifoClient fifoClient(fifoPath); - if (!fifoClient.isOpen()) { - std::cerr << "Failed to open FIFO for reading." << std::endl; - return; - } - - // Read from FIFO with a timeout - auto data = fifoClient.read(std::chrono::milliseconds(5000)); - if (data) { - std::cout << "Client read: " << *data << std::endl; - } else { - std::cerr << "Client failed to read data from FIFO." << std::endl; - } - - fifoClient.close(); // Close FIFO after reading -} - -int main() { - const std::string fifoPath = "/tmp/myfifo"; // FIFO path - - // Create threads to simulate server and client - std::thread serverThread(fifoServer, fifoPath); - std::this_thread::sleep_for(std::chrono::milliseconds( - 100)); // Small delay to ensure server starts first - std::thread clientThread(fifoClient, fifoPath); - - // Wait for both threads to finish - serverThread.join(); - clientThread.join(); - - return 0; -} diff --git a/example/atom/connection/fifoserver.cpp b/example/atom/connection/fifoserver.cpp deleted file mode 100644 index 58c85ff2..00000000 --- a/example/atom/connection/fifoserver.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include -#include -#include -#include - -#include "atom/connection/fifoserver.hpp" - -// Function to run the FIFO server -void runFifoServer(const std::string& fifoPath) { - atom::connection::FIFOServer server(fifoPath); - - // Start the server - server.start(); - std::cout << "FIFO Server started." << std::endl; - - // Simulate sending messages - for (int i = 0; i < 5; ++i) { - std::string message = "Message " + std::to_string(i); - server.sendMessage(message); - std::cout << "Sent: " << message << std::endl; - - // Sleep for a while to simulate some processing time - std::this_thread::sleep_for(std::chrono::seconds(1)); - } - - // Stop the server - server.stop(); - std::cout << "FIFO Server stopped." << std::endl; -} - -int main() { - const std::string fifoPath = "/tmp/my_fifo"; // Path for the FIFO - - // Create a thread to run the FIFO server - std::thread serverThread(runFifoServer, fifoPath); - - // Wait for the server thread to finish - serverThread.join(); - - return 0; -} diff --git a/example/atom/connection/sockethub.cpp b/example/atom/connection/sockethub.cpp deleted file mode 100644 index 048e5581..00000000 --- a/example/atom/connection/sockethub.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include - -#include "atom/connection/sockethub.hpp" - -// Function to handle incoming messages -void messageHandler(std::string message) { - std::cout << "Received message: " << message << std::endl; -} - -// Function to run the socket server -void runSocketServer(int port) { - atom::connection::SocketHub socketHub; - - // Add a custom message handler - socketHub.addHandler(messageHandler); - - // Start the socket server - socketHub.start(port); - std::cout << "Socket server running on port " << port << std::endl; - - // Run for a specific duration and then stop the server - std::this_thread::sleep_for(std::chrono::seconds(30)); - socketHub.stop(); - std::cout << "Socket server stopped." << std::endl; -} - -int main() { - const int port = 8080; // Define the port to listen on - - // Start the socket server in a separate thread - std::thread serverThread(runSocketServer, port); - - // Wait for the server thread to finish - serverThread.join(); - - return 0; -} diff --git a/example/atom/connection/sshserver.cpp b/example/atom/connection/sshserver.cpp deleted file mode 100644 index 984ab0b3..00000000 --- a/example/atom/connection/sshserver.cpp +++ /dev/null @@ -1,47 +0,0 @@ -#include "atom/connection/sshserver.hpp" - -#include -#include -#include - -// Function to run the SSH server -void runSshServer(const std::filesystem::path& configFile) { - atom::connection::SshServer sshServer(configFile); - - // Configure the SSH server - sshServer.setPort(22); // Set port for SSH - sshServer.setListenAddress("0.0.0.0"); // Listen on all interfaces - sshServer.setHostKey("/etc/ssh/ssh_host_rsa_key"); // Set the host key file - - // Allow password authentication - sshServer.setPasswordAuthentication(true); - - // Allow root login (not recommended in production) - sshServer.allowRootLogin(true); - - // Start the SSH server - sshServer.start(); - std::cout << "SSH Server started on port " << sshServer.getPort() - << std::endl; - - // Keep the server running for a while - std::this_thread::sleep_for(std::chrono::seconds(60)); - - // Stop the SSH server - sshServer.stop(); - std::cout << "SSH Server stopped." << std::endl; -} - -int main() { - const std::filesystem::path configFile = - "/path/to/your/sshconfig.file"; // Update this path to your - // configuration file - - // Start the SSH server in a separate thread - std::thread serverThread(runSshServer, configFile); - - // Wait for the server thread to finish - serverThread.join(); - - return 0; -} diff --git a/example/atom/connection/tcpclient.cpp b/example/atom/connection/tcpclient.cpp deleted file mode 100644 index 6ce6f095..00000000 --- a/example/atom/connection/tcpclient.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include -#include -#include - -#include "atom/connection/tcpclient.hpp" - -// Function to handle connection success -void onConnected() { - std::cout << "Successfully connected to the server." << std::endl; -} - -// Function to handle disconnection -void onDisconnected() { - std::cout << "Disconnected from the server." << std::endl; -} - -// Function to handle incoming data -void onDataReceived(const std::vector& data) { - std::string received(data.begin(), data.end()); - std::cout << "Received data: " << received << std::endl; -} - -// Function to handle errors -void onError(const std::string& errorMessage) { - std::cerr << "Error: " << errorMessage << std::endl; -} - -// Function to run the TCP client -void runTcpClient(const std::string& host, int port) { - atom::connection::TcpClient tcpClient; - - // Set callbacks for various events - tcpClient.setOnConnectedCallback(onConnected); - tcpClient.setOnDisconnectedCallback(onDisconnected); - tcpClient.setOnDataReceivedCallback(onDataReceived); - tcpClient.setOnErrorCallback(onError); - - // Try to connect to the server - if (!tcpClient.connect(host, port, std::chrono::milliseconds(5000))) { - std::cerr << "Failed to connect to the server." << std::endl; - return; - } - - // Sending a message to the server - std::string message = "Hello, Server!"; - if (tcpClient.send(std::vector(message.begin(), message.end()))) { - std::cout << "Sent message: " << message << std::endl; - } else { - std::cerr << "Failed to send message." << std::endl; - } - - // Start receiving data in a separate thread - tcpClient.startReceiving( - 1024); // Start receiving with buffer size of 1024 bytes - - // Wait for some time to receive data from server - std::this_thread::sleep_for(std::chrono::seconds(10)); - - // Stop receiving before disconnecting - tcpClient.stopReceiving(); - - // Disconnect from the server - tcpClient.disconnect(); -} - -int main() { - const std::string host = - "127.0.0.1"; // Replace with the server's IP address or hostname - const int port = 8080; // Replace with the server's port - - // Run the TCP client - runTcpClient(host, port); - - return 0; -} diff --git a/example/atom/connection/ttybase.cpp b/example/atom/connection/ttybase.cpp deleted file mode 100644 index 4ad60d44..00000000 --- a/example/atom/connection/ttybase.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include -#include -#include - -#include "atom/connection/ttybase.hpp" - -// Derived class implementation for demonstration purposes -class MyTtyClient : public TTYBase { -public: - explicit MyTtyClient(std::string_view driverName) : TTYBase(driverName) {} - - // Example of connecting to a TTY device - void exampleConnect(const std::string& device) { - uint32_t baudRate = 9600; // Set baud rate - uint8_t wordSize = 8; // 8 data bits - uint8_t parity = 0; // No parity - uint8_t stopBits = 1; // 1 stop bit - - auto response = connect(device, baudRate, wordSize, parity, stopBits); - if (response == TTYResponse::OK) { - std::cout << "Connected to " << device << " successfully." - << std::endl; - } else { - std::cerr << "Failed to connect: " << getErrorMessage(response) - << std::endl; - } - } - - // Example of sending data - void exampleSendData(const std::string& data) { - uint32_t nbytesWritten = 0; - auto response = writeString(data, nbytesWritten); - if (response == TTYResponse::OK) { - std::cout << "Sent: " << data << " (" << nbytesWritten << " bytes)" - << std::endl; - } else { - std::cerr << "Failed to send data: " << getErrorMessage(response) - << std::endl; - } - } - - // Example of receiving data - void exampleReceiveData(size_t size) { - std::vector buffer(size); - uint32_t nbytesRead = 0; - auto response = read(buffer.data(), size, 5, nbytesRead); - if (response == TTYResponse::OK) { - std::string receivedData(buffer.begin(), - buffer.begin() + nbytesRead); - std::cout << "Received: " << receivedData << " (" << nbytesRead - << " bytes)" << std::endl; - } else { - std::cerr << "Failed to receive data: " << getErrorMessage(response) - << std::endl; - } - } -}; - -int main() { - // Create an instance of the TTY client - MyTtyClient ttyClient("MyTTYDriver"); - - // Example device name (update it to your actual device) - const std::string device = "/dev/ttyUSB0"; - - // Connect to the TTY device - ttyClient.exampleConnect(device); - - // Send some data - ttyClient.exampleSendData("Hello TTY!"); - - // Receive some data - ttyClient.exampleReceiveData(100); - - // Disconnect from the device if needed - ttyClient.disconnect(); - - return 0; -} diff --git a/example/atom/connection/udp_server.cpp b/example/atom/connection/udp_server.cpp deleted file mode 100644 index 9c6003bf..00000000 --- a/example/atom/connection/udp_server.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include "atom/connection/udp_server.hpp" - -#include -#include - -// Function to handle incoming messages -void onMessageReceived(const std::string& message, const std::string& senderIp, - int senderPort) { - std::cout << "Received message: " << message << " from " << senderIp << ":" - << senderPort << std::endl; -} - -// Function to run the UDP server -void runUdpServer(int port) { - atom::connection::UdpSocketHub udpServer; - - // Add message handler - udpServer.addMessageHandler(onMessageReceived); - - // Start the UDP server - udpServer.start(port); - std::cout << "UDP server started on port " << port << std::endl; - - // Keep the server running for a while to receive messages - std::this_thread::sleep_for(std::chrono::seconds(30)); - - // Stop the UDP server - udpServer.stop(); - std::cout << "UDP server stopped." << std::endl; -} - -int main() { - const int port = 8080; // Port to listen for incoming messages - - // Run the UDP server in a thread - std::thread serverThread(runUdpServer, port); - - // Wait for the server thread to finish - serverThread.join(); - - return 0; -} diff --git a/example/atom/connection/updclient.cpp b/example/atom/connection/updclient.cpp deleted file mode 100644 index 310f84ce..00000000 --- a/example/atom/connection/updclient.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/* - * main.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-10-01 - -Description: Example usage of the UdpClient class. - -**************************************************/ - -#include -#include - -#include "atom/connection/udpclient.hpp" - -// Function to handle incoming data -void onDataReceived(const std::vector& data, const std::string& senderIp, - int senderPort) { - std::string receivedData(data.begin(), data.end()); - std::cout << "Received data: '" << receivedData << "' from " << senderIp - << ":" << senderPort << std::endl; -} - -// Function to handle errors -void onError(const std::string& errorMessage) { - std::cerr << "Error: " << errorMessage << std::endl; -} - -// Function to run the UDP client -void runUdpClient(const std::string& host, int port) { - atom::connection::UdpClient udpClient; - - // Set up callbacks - udpClient.setOnDataReceivedCallback(onDataReceived); - udpClient.setOnErrorCallback(onError); - - // Bind to a port for receiving - if (!udpClient.bind(8080)) { // Using port 8080 for receiving - std::cerr << "Failed to bind UDP client to port 8080." << std::endl; - return; - } - - // Start receiving data - udpClient.startReceiving( - 1024); // Start receiving with a buffer size of 1024 - - // Simulate sending a message to the server - std::string message = "Hello, UDP Server!"; - if (udpClient.send(host, port, - std::vector(message.begin(), message.end()))) { - std::cout << "Sent message: " << message << std::endl; - } else { - std::cerr << "Failed to send message." << std::endl; - } - - // Let it run for some time to receive responses - std::this_thread::sleep_for(std::chrono::seconds(10)); - - // Stop receiving data - udpClient.stopReceiving(); -} - -int main() { - const std::string host = - "127.0.0.1"; // Replace with the server's IP address or hostname - const int port = 8080; // Replace with the server's port - - // Run the UDP client - runUdpClient(host, port); - - return 0; -} diff --git a/example/atom/error/eventstack.cpp b/example/atom/error/eventstack.cpp deleted file mode 100644 index a54cf838..00000000 --- a/example/atom/error/eventstack.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include - -#include "atom/error/error_stack.hpp" - -// Function to simulate error insertion -void simulateErrors(atom::error::ErrorStack& errorStack) { - errorStack.insertError("Failed to connect to the database", - "DatabaseModule", "connect", 25, "database.cpp"); - errorStack.insertError("Invalid user input", "UserInputModule", - "validateInput", 42, "user_input.cpp"); - errorStack.insertError("Connection timeout", "NetworkModule", "sendRequest", - 15, "network.cpp"); - errorStack.insertError("Failed to read configuration file", "ConfigModule", - "loadConfig", 33, "config.cpp"); -} - -// Function to demonstrate error filtering and printing -void demonstrateErrorStack() { - // Create an instance of ErrorStack - atom::error::ErrorStack errorStack; - - // Simulate error occurrences - simulateErrors(errorStack); - - // Set modules to filter out (e.g., filter out errors from the - // DatabaseModule) - errorStack.setFilteredModules({"DatabaseModule"}); - - // Print the filtered error stack - std::cout << "Filtered error stack (excluding DatabaseModule):" - << std::endl; - errorStack.printFilteredErrorStack(); - - // Clear the filtered modules for future prints - errorStack.clearFilteredModules(); - - // Print all errors - std::cout << "\nAll errors in the stack:" << std::endl; - errorStack.printFilteredErrorStack(); -} - -int main() { - demonstrateErrorStack(); - return 0; -} diff --git a/example/atom/function/abi.cpp b/example/atom/function/abi.cpp deleted file mode 100644 index 98dc415f..00000000 --- a/example/atom/function/abi.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include -#include - -#include "atom/function/abi.hpp" - -// Example structures and classes to test demangling -struct MyStruct { - int a; - double b; -}; - -class MyClass { -public: - void myMethod(int x) {} -}; - -int main() { - // Demangle a simple type - std::cout << "Demangled type for int: " - << atom::meta::DemangleHelper::demangleType() << std::endl; - - // Demangle a struct - std::cout << "Demangled type for MyStruct: " - << atom::meta::DemangleHelper::demangleType() - << std::endl; - - // Demangle a class - std::cout << "Demangled type for MyClass: " - << atom::meta::DemangleHelper::demangleType() - << std::endl; - - // Use an instance to demangle - MyClass myClassInstance; - std::cout << "Demangled type for instance of MyClass: " - << atom::meta::DemangleHelper::demangleType(myClassInstance) - << std::endl; - - // Demangle multiple types - std::vector typesToDemangle = { - "std::vector", "std::map>", - "MyClass::myMethod(int)"}; - - auto demangledTypes = - atom::meta::DemangleHelper::demangleMany(typesToDemangle); - std::cout << "Demangled multiple types:\n"; - for (const auto& type : demangledTypes) { - std::cout << " - " << type << std::endl; - } - return 0; -} diff --git a/example/atom/function/any.cpp b/example/atom/function/any.cpp deleted file mode 100644 index 62ecc47d..00000000 --- a/example/atom/function/any.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include - -#include "atom/function/any.hpp" - -int main() { - // Create a BoxedValue containing an integer - atom::meta::BoxedValue intValue = atom::meta::makeBoxedValue(42); - std::cout << "Boxed integer: " << intValue.debugString() << std::endl; - - // Create a BoxedValue containing a string - std::string testString = "Hello, BoxedValue!"; - atom::meta::BoxedValue stringValue = atom::meta::makeBoxedValue(testString); - std::cout << "Boxed string: " << stringValue.debugString() << std::endl; - - // Create a BoxedValue containing a vector - std::vector numbers{1, 2, 3, 4, 5}; - atom::meta::BoxedValue vectorValue = atom::meta::makeBoxedValue(numbers); - std::cout << "Boxed vector: " << vectorValue.debugString() << std::endl; - - // Demonstrate type casting - if (auto intPtr = intValue.tryCast()) { - std::cout << "Casted integer value: " << *intPtr << std::endl; - } else { - std::cout << "Failed to cast to integer." << std::endl; - } - - if (auto stringPtr = stringValue.tryCast()) { - std::cout << "Casted string value: " << *stringPtr << std::endl; - } else { - std::cout << "Failed to cast to string." << std::endl; - } - - // Attempt to cast to an incorrect type - if (auto doublePtr = intValue.tryCast()) { - std::cout << "Casted double value: " << *doublePtr << std::endl; - } else { - std::cout << "Failed to cast integer to double." << std::endl; - } - - // Set an attribute - stringValue.setAttr("greeting", atom::meta::makeBoxedValue("Hi there!")); - if (auto greeting = stringValue.getAttr("greeting"); !greeting.isNull()) { - std::cout << "Retrieved greeting: " << greeting.debugString() - << std::endl; - } - - // List all attributes - auto attributes = stringValue.listAttrs(); - std::cout << "Attributes in stringValue:" << std::endl; - for (const auto& attr : attributes) { - std::cout << " - " << attr << std::endl; - } - - // Remove the attribute - stringValue.removeAttr("greeting"); - std::cout << "Removed 'greeting' attribute." << std::endl; - - // Checking if the attribute still exists - if (!stringValue.hasAttr("greeting")) { - std::cout << "Attribute 'greeting' no longer exists." << std::endl; - } - return 0; -} diff --git a/example/atom/function/anymeta.cpp b/example/atom/function/anymeta.cpp deleted file mode 100644 index d3fafad6..00000000 --- a/example/atom/function/anymeta.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include - -#include "atom/function/anymeta.hpp" - -// Sample class to demonstrate the functionality -class Sample { -public: - Sample(int initialValue) : value(initialValue) {} - - int getValue() const { return value; } - - void setValue(int newValue) { value = newValue; } - - void display() const { - std::cout << "Current value: " << value << std::endl; - } - -private: - int value; -}; - -// Register the Sample class in the TypeRegistry -void registerSampleType() { - atom::meta::TypeMetadata metadata; - - // Adding methods - metadata.addMethod( - "display", - [](std::vector args) -> atom::meta::BoxedValue { - auto& obj = std::any_cast(args[0].get()); - obj.display(); - return {}; - }); - - // Adding properties - metadata.addProperty( - "value", - [](const atom::meta::BoxedValue& obj) -> atom::meta::BoxedValue { - const Sample& sample = std::any_cast(obj.get()); - return atom::meta::makeBoxedValue(sample.getValue()); - }, - [](atom::meta::BoxedValue& obj, const atom::meta::BoxedValue& value) { - Sample& sample = std::any_cast(obj.get()); - sample.setValue(std::any_cast(value.get())); - }); - - // Registering the type - atom::meta::TypeRegistry::instance().registerType("Sample", metadata); -} - -int main() { - // Register the Sample type with its metadata - registerSampleType(); - - // Create an instance of Sample and box it - Sample sampleObj(10); - atom::meta::BoxedValue boxedSample = atom::meta::makeBoxedValue(sampleObj); - - // Call the display method dynamically - callMethod(boxedSample, "display", {}); - - // Get the value property - auto value = getProperty(boxedSample, "value"); - std::cout << "Value from property: " << std::any_cast(value.get()) - << std::endl; - - // Set a new value using the setter property - setProperty(boxedSample, "value", atom::meta::makeBoxedValue(42)); - std::cout << "Updated value." << std::endl; - - // Call the display method again to show updated value - callMethod(boxedSample, "display", {}); - - return 0; -} diff --git a/example/atom/function/bind_first.cpp b/example/atom/function/bind_first.cpp deleted file mode 100644 index f4ce96d0..00000000 --- a/example/atom/function/bind_first.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* - * main.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-10-01 - -Description: Example usage of the bindFirst function. - -**************************************************/ - -#include "atom/function/bind_first.hpp" - -#include - -// A simple example class -class MyClass { -public: - void display(int x, const std::string& message) { - std::cout << "MyClass::display called with x: " << x - << " and message: " << message << std::endl; - } - - int add(int a, int b) { return a + b; } -}; - -// A simple free function -void printMessage(float number, const std::string& message) { - std::cout << "Message: " << message << " with number: " << number - << std::endl; -} - -int main() { - MyClass myObj; - - // Bind a member function of MyClass - auto boundDisplay = atom::meta::bindFirst(&MyClass::display, myObj); - - // Call the bound function - boundDisplay(10, "Hello, World!"); - - // Bind a free function - auto boundPrintMessage = atom::meta::bindFirst(printMessage, 3.14f); - - // Call the bound free function - boundPrintMessage("This is a test message"); - - // Binding with a member function that returns a value - auto boundAdd = atom::meta::bindFirst(&MyClass::add, myObj); - - // Call the bound add function and get the result - int result = boundAdd(5, 7); - std::cout << "Result of add: " << result << std::endl; - - return 0; -} diff --git a/example/atom/function/constructor.cpp b/example/atom/function/constructor.cpp deleted file mode 100644 index eb289a92..00000000 --- a/example/atom/function/constructor.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include "atom/function/constructor.hpp" -#include -#include -#include - -class Example { -public: - Example() { std::cout << "Default constructor called." << std::endl; } - - Example(int a, double b, const std::string& c) : a_(a), b_(b), c_(c) { - std::cout << "Parameterized constructor called: " << a_ << ", " << b_ - << ", " << c_ << std::endl; - } - - Example(const Example& other) : a_(other.a_), b_(other.b_), c_(other.c_) { - std::cout << "Copy constructor called." << std::endl; - } - - void print() const { - std::cout << "Values: " << a_ << ", " << b_ << ", " << c_ << std::endl; - } - -private: - int a_ = 0; - double b_ = 0.0; - std::string c_ = "default"; -}; - -int main() { - // 使用默认构造函数 - auto default_constructor = atom::meta::defaultConstructor(); - Example example1 = default_constructor(); - - // 使用带参数的构造函数 - auto param_constructor = - atom::meta::constructorWithArgs(); - std::shared_ptr example2 = - param_constructor(42, 3.14, "Hello, world!"); - - example2->print(); - - /* - // 使用复制构造函数 - auto copy_constructor = atom::meta::constructor(); - Example example3 = copy_constructor(*example2); - - example3.print(); - */ - - return 0; -} diff --git a/example/atom/function/conversion.cpp b/example/atom/function/conversion.cpp deleted file mode 100644 index 003a2afc..00000000 --- a/example/atom/function/conversion.cpp +++ /dev/null @@ -1,105 +0,0 @@ -#include -#include -#include -#include -#include - -#include "atom/function/conversion.hpp" // Include your conversion header file - -// Define some sample classes and types -class Base { -public: - virtual ~Base() = default; - virtual void print() const { std::cout << "Base class\n"; } -}; - -class Derived : public Base { -public: - void print() const override { std::cout << "Derived class\n"; } -}; - -class AnotherBase { -public: - virtual ~AnotherBase() = default; - virtual void print() const { std::cout << "AnotherBase class\n"; } -}; - -class AnotherDerived : public AnotherBase { -public: - void print() const override { std::cout << "AnotherDerived class\n"; } -}; - -// Define some sample conversion functions -void setupConversions() { - // Create a shared instance of TypeConversions - auto typeConversions = atom::meta::TypeConversions::createShared(); - - // Add base and derived class conversions - typeConversions->addBaseClass(); - typeConversions->addBaseClass(); - - // Add vector conversions - typeConversions->addVectorConversion(); - - // Add map conversions (for demonstration purposes) - typeConversions->addMapConversion, std::string, - std::shared_ptr>(); - - // Add sequence conversions - typeConversions->addSequenceConversion(); -} - -void conversionExamples() { - // Create the conversions setup - setupConversions(); - - // Create a TypeConversions instance - auto typeConversions = atom::meta::TypeConversions::createShared(); - - // Sample objects for conversion - std::shared_ptr derived = std::make_shared(); - std::shared_ptr base; - - // Perform conversions - try { - // Convert from Derived* to Base* - base = std::any_cast>( - typeConversions->convert, - std::shared_ptr>(derived)); - base->print(); // Should output: Derived class - - // Convert a vector of Derived to vector of Base - std::vector> derivedVec = {derived}; - std::vector> baseVec = - std::any_cast>>( - typeConversions->convert>, - std::vector>>( - derivedVec)); - for (const auto& b : baseVec) { - b->print(); // Should output: Derived class - } - - // Convert a map from > to > - std::unordered_map> baseMap; - baseMap["key"] = derived; - auto convertedMap = std::any_cast< - std::unordered_map>>( - typeConversions->convert< - std::unordered_map>, - std::unordered_map>>( - baseMap)); - for (const auto& [key, value] : convertedMap) { - value->print(); // Should output: Derived class - } - - } catch (const atom::meta::BadConversionException& e) { - std::cerr << "Conversion error: " << e.what() << std::endl; - } -} - -int main() { - conversionExamples(); - return 0; -} diff --git a/example/atom/function/decorate.cpp b/example/atom/function/decorate.cpp deleted file mode 100644 index 287c3f5d..00000000 --- a/example/atom/function/decorate.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/*! - * \file decorate_examples.cpp - * \brief Examples of using the decorate functionality. - * \author Max Qian - * \date 2024-08-23 - * \copyright Copyright (C) 2023-2024 Max Qian - */ - -#include "atom/function/decorate.hpp" - -#include -#include - -// Example function to be decorated -int add(int a, int b) { return a + b; } - -void printHello() { std::cout << "Hello!" << std::endl; } - -void printGoodbye() { std::cout << "Goodbye!" << std::endl; } - -std::string greet(const std::string& name) { return "Hello, " + name + "!"; } - -// Main function showcasing different decorators -int main() { - // Example 1: Basic decorator usage - auto decoratedAdd = atom::meta::makeDecorator([](int a, int b) -> int { - std::cout << "Before addition" << std::endl; - int result = add(a, b); - std::cout << "After addition: " << result << std::endl; - return result; - }); - - // Usage of the basic decorator - int result = decoratedAdd(3, 4); - std::cout << "Result: " << result << std::endl; - - // Example 2: LoopDecorator usage - auto loopedAdd = atom::meta::makeLoopDecorator( - [](int a, int b) -> int { return a + b; }); - - int loopCount = 5; - int loopedResult = loopedAdd(loopCount, 1, 2); - std::cout << "Looped result: " << loopedResult << std::endl; - - // Example 3: ConditionCheckDecorator usage - auto conditionCheckedGreet = atom::meta::makeConditionCheckDecorator( - [](const std::string& name) -> std::string { - return "Hello, " + name + "!"; - }); - - bool condition = true; - std::string greeting = - conditionCheckedGreet([condition]() { return condition; }, "Alice"); - std::cout << greeting << std::endl; - - // Example 4: Using DecorateStepper to combine decorators - auto stepper = atom::meta::makeDecorateStepper( - [](int a, int b) -> int { return a + b; }); - - // Adding decorators - stepper.addDecorator( - atom::meta::makeDecorator([](auto&& func, int a, int b) -> int { - std::cout << "Before call" << std::endl; - int result = func(a, b); - std::cout << "After call: " << result << std::endl; - return result; - })); - - stepper.addDecorator(atom::meta::makeLoopDecorator( - [](int a, int b) -> int { return a + b; })); - - // Executing the decorated function - int stepperResult = stepper.execute(5, 3); - std::cout << "Stepper result: " << stepperResult << std::endl; - - return 0; -} diff --git a/example/atom/function/enum.cpp b/example/atom/function/enum.cpp deleted file mode 100644 index c081d452..00000000 --- a/example/atom/function/enum.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/*! - * \file enum_examples.cpp - * \brief Examples of using enum utilities. - * \author Max Qian - * \date 2024-08-23 - * \copyright Copyright (C) 2023-2024 Max Qian - */ - -#include "atom/function/enum.hpp" - -#include -#include -#include - -// Define an enum for demonstration -enum class Color { Red, Green, Blue, Yellow }; - -// Specialize EnumTraits for Color -template <> -struct EnumTraits { - static constexpr std::array values = {Color::Red, Color::Green, - Color::Blue, Color::Yellow}; - static constexpr std::array names = {"Red", "Green", - "Blue", "Yellow"}; -}; - -// Define another enum for demonstration -enum class Direction { North, East, South, West }; - -// Specialize EnumTraits for Direction -template <> -struct EnumTraits { - static constexpr std::array values = { - Direction::North, Direction::East, Direction::South, Direction::West}; - static constexpr std::array names = {"North", "East", - "South", "West"}; -}; - -// Specialize EnumAliasTraits for Direction -template <> -struct EnumAliasTraits { - static constexpr std::array ALIASES = {"N", "E", "S", - "W"}; -}; - -// Example usage of the utility functions -int main() { - // Example 1: Enum to String and String to Enum - Color color = Color::Green; - std::string_view colorName = enum_name(color); - std::cout << "Color: " << colorName << std::endl; - - std::optional colorFromString = enum_cast("Blue"); - if (colorFromString) { - std::cout << "Color from string: " << enum_name(*colorFromString) - << std::endl; - } else { - std::cout << "Color not found" << std::endl; - } - - // Example 2: Integer to Enum and Enum to Integer - auto colorInt = enum_to_integer(Color::Yellow); - std::cout << "Color Yellow as integer: " << colorInt << std::endl; - - std::optional colorFromInt = integer_to_enum(2); - if (colorFromInt) { - std::cout << "Enum from integer 2: " << enum_name(*colorFromInt) - << std::endl; - } else { - std::cout << "Enum not found for integer 2" << std::endl; - } - - // Example 3: Enum contains check - if (enum_contains(Color::Red)) { - std::cout << "Color Red is a valid enum value" << std::endl; - } else { - std::cout << "Color Red is not a valid enum value" << std::endl; - } - - // Example 4: Get all enum entries - auto entries = enum_entries(); - std::cout << "Color enum entries:" << std::endl; - for (const auto& [value, name] : entries) { - std::cout << " " << name << " (" << enum_to_integer(value) << ")" - << std::endl; - } - - // Example 5: Sorted by name and value - auto sortedByName = enum_sorted_by_name(); - std::cout << "Color enum sorted by name:" << std::endl; - for (const auto& [value, name] : sortedByName) { - std::cout << " " << name << " (" << enum_to_integer(value) << ")" - << std::endl; - } - - auto sortedByValue = enum_sorted_by_value(); - std::cout << "Color enum sorted by value:" << std::endl; - for (const auto& [value, name] : sortedByValue) { - std::cout << " " << name << " (" << enum_to_integer(value) << ")" - << std::endl; - } - - // Example 6: Fuzzy match enum - auto directionFromFuzzyName = enum_cast_fuzzy("E"); - if (directionFromFuzzyName) { - std::cout << "Direction from fuzzy name 'E': " - << enum_name(*directionFromFuzzyName) << std::endl; - } else { - std::cout << "Direction not found from fuzzy name 'E'" << std::endl; - } - - // Example 7: Enum with aliases - auto directionFromAlias = enum_cast_with_alias("S"); - if (directionFromAlias) { - std::cout << "Direction from alias 'S': " - << enum_name(*directionFromAlias) << std::endl; - } else { - std::cout << "Direction not found from alias 'S'" << std::endl; - } - - return 0; -} diff --git a/example/atom/function/ffi.cpp b/example/atom/function/ffi.cpp deleted file mode 100644 index 70b6771d..00000000 --- a/example/atom/function/ffi.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/*! - * \file ffi_examples.cpp - * \brief Examples of using FFI functionality. - * \author Max Qian - * \date 2024-08-23 - * \copyright Copyright (C) 2023-2024 Max Qian - */ - -#include "atom/function/ffi.hpp" - -#include -#include -#include - -// Example library with a simple function signature -extern "C" { -int add(int a, int b); -const char* greet(const char* name); -} - -// Implementation of the example functions (for testing purposes) -int add(int a, int b) { return a + b; } - -const char* greet(const char* name) { - static std::string greeting; - greeting = "Hello, " + std::string(name) + "!"; - return greeting.c_str(); -} - -// Function to demonstrate FFIWrapper -void demoFFIWrapper() { - using namespace atom::meta; - - FFIWrapper ffiAddWrapper; - - // Simulate a function pointer to `add` - void* addFuncPtr = reinterpret_cast(&add); - - // Call `add` function using FFIWrapper - int result = ffiAddWrapper.call(addFuncPtr, 3, 4); - std::cout << "Result of add(3, 4): " << result << std::endl; -} - -// Function to demonstrate DynamicLibrary usage -void demoDynamicLibrary() { - using namespace atom::meta; - - // Create a dynamic library object (assuming the library has been built) - DynamicLibrary library("./example_library.so"); - - // Add functions to the library's function map - library.addFunction("add"); - library.addFunction("greet"); - - // Call functions using the dynamic library - auto addResult = library.callFunction("add", 5, 7); - if (addResult) { - std::cout << "Result of add(5, 7): " << *addResult << std::endl; - } else { - std::cout << "Failed to call add function." << std::endl; - } - - auto greetResult = - library.callFunction("greet", "World"); - if (greetResult) { - std::cout << "Greeting: " << *greetResult << std::endl; - } else { - std::cout << "Failed to call greet function." << std::endl; - } -} - -// Function to demonstrate LibraryObject usage -void demoLibraryObject() { - using namespace atom::meta; - - // Create a dynamic library object - DynamicLibrary library("./example_library.so"); - - // Create a LibraryObject for a factory function - LibraryObject obj(library, "create_int"); - - // Use the object - int value = *obj; - std::cout << "Value from LibraryObject: " << value << std::endl; -} - -int main() { - std::cout << "Demonstrating FFI Wrapper:" << std::endl; - demoFFIWrapper(); - - std::cout << "\nDemonstrating Dynamic Library:" << std::endl; - demoDynamicLibrary(); - - std::cout << "\nDemonstrating Library Object:" << std::endl; - demoLibraryObject(); - - return 0; -} diff --git a/example/atom/function/field_count.cpp b/example/atom/function/field_count.cpp deleted file mode 100644 index 5eacc58c..00000000 --- a/example/atom/function/field_count.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/*! - * \file field_count_examples.cpp - * \brief Examples of using Field Count functionality. - * \author Max Qian - * \date 2024-08-23 - * \copyright Copyright (C) 2023-2024 Max Qian - */ - -#include "atom/function/field_count.hpp" - -#include -#include - -// Define some example structs with varying numbers of fields -struct EmptyStruct {}; - -struct SingleField { - int a; -}; - -struct MultipleFields { - int a; - double b; - std::string c; -}; - -// Define a type trait to provide field count for structs -template <> -struct atom::meta::TypeInfo { - static constexpr std::size_t count = 3; -}; - -// Define an array for testing -constexpr std::array intArray = {1, 2, 3, 4, 5}; - -// Define a non-aggregate type for testing -class NonAggregate { -public: - NonAggregate() = default; - void method() {} -}; - -// Function to demonstrate field count for different types -void demoFieldCount() { - using namespace atom::meta; - - // Field count for an empty struct - constexpr auto emptyCount = fieldCountOf(); - std::cout << "Field count of EmptyStruct: " << emptyCount << std::endl; - - // Field count for a struct with a single field - constexpr auto singleFieldCount = fieldCountOf(); - std::cout << "Field count of SingleField: " << singleFieldCount - << std::endl; - - // Field count for a struct with multiple fields - constexpr auto multipleFieldsCount = fieldCountOf(); - std::cout << "Field count of MultipleFields: " << multipleFieldsCount - << std::endl; - - // Field count for an array - constexpr auto arrayFieldCount = fieldCountOf(); - std::cout << "Field count of intArray: " << arrayFieldCount << std::endl; - - // Field count for a non-aggregate type (should be 0) - constexpr auto nonAggregateCount = fieldCountOf(); - std::cout << "Field count of NonAggregate: " << nonAggregateCount - << std::endl; -} - -int main() { - demoFieldCount(); - return 0; -} diff --git a/example/atom/function/func_traits.cpp b/example/atom/function/func_traits.cpp deleted file mode 100644 index 1b680340..00000000 --- a/example/atom/function/func_traits.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/*! - * \file func_traits_examples.cpp - * \brief Examples of using Function Traits functionality. - * \author Max Qian - * \date 2024-08-23 - * \copyright Copyright (C) 2023-2024 Max Qian - */ - -#include "atom/function/func_traits.hpp" - -#include -#include -#include -#include - -// Regular function -int regularFunction(int, double) { return 42; } - -// Member function -class MyClass { -public: - double memberFunction(int x, double y) const { return x + y; } - void noexceptMemberFunction(int x) noexcept {} - int volatileMemberFunction(int x) volatile { return x; } -}; - -// Lambda function -auto lambdaFunction = [](int x, double y) -> double { return x * y; }; - -// Function object -struct Functor { - double operator()(int x, double y) const { return x - y; } -}; - -void printFunctionInfo(const std::string& name, auto&& func) { -#if ENABLE_DEBUG - atom::meta::print_function_info(name, std::forward(func)); -#else - std::cout << "Function: " << name << "\n"; - std::cout << " Return type: " << typeid(decltype(func)).name() << "\n"; - std::cout << " Is member function: " << std::boolalpha - << atom::meta::is_member_function_v << "\n"; - std::cout << " Is const member function: " << std::boolalpha - << atom::meta::is_const_member_function_v << "\n"; - std::cout - << " Is volatile member function: " << std::boolalpha - << atom::meta::is_volatile_member_function_v << "\n"; - std::cout << " Is lvalue reference member function: " << std::boolalpha - << atom::meta::is_lvalue_reference_member_function_v< - decltype(func)> << "\n"; - std::cout << " Is rvalue reference member function: " << std::boolalpha - << atom::meta::is_rvalue_reference_member_function_v< - decltype(func)> << "\n"; - std::cout << " Is noexcept: " << std::boolalpha - << atom::meta::is_noexcept_v << "\n"; - std::cout << " Is variadic: " << std::boolalpha - << atom::meta::is_variadic_v << "\n"; -#endif -} - -int main() { - using namespace atom::meta; - - // Regular function - printFunctionInfo("regularFunction", regularFunction); - - // Member function - MyClass obj; - printFunctionInfo("MyClass::memberFunction", &MyClass::memberFunction); - printFunctionInfo("MyClass::noexceptMemberFunction", - &MyClass::noexceptMemberFunction); - printFunctionInfo("MyClass::volatileMemberFunction", - &MyClass::volatileMemberFunction); - - // Lambda function - printFunctionInfo("lambdaFunction", lambdaFunction); - - // Function object - printFunctionInfo("Functor::operator()", Functor{}); - - return 0; -} diff --git a/example/atom/function/god.cpp b/example/atom/function/god.cpp deleted file mode 100644 index feb0e4af..00000000 --- a/example/atom/function/god.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/*! - * \file god.cpp - * \brief Examples demonstrating the use of functions and type traits from - * god.hpp \author Max Qian \date 2024-08-23 \copyright Copyright - * (C) 2023-2024 Max Qian - */ - -#include "atom/function/god.hpp" - -#include -#include -#include - -using namespace atom::meta; - -// Function to demonstrate alignment functions -void demonstrateAlignment() { - constexpr std::size_t alignment = 16; - - std::size_t value = 15; - std::cout << "Original value: " << value << "\n"; - std::cout << "Align up to " << alignment << ": " - << alignUp(value) << "\n"; - std::cout << "Align down to " << alignment << ": " - << alignDown(value) << "\n"; - - // Align pointers - int array[10]; - int* ptr = array; - std::cout << "Original pointer: " << static_cast(ptr) << "\n"; - std::cout << "Aligned up pointer: " - << static_cast(alignUp(ptr)) << "\n"; - std::cout << "Aligned down pointer: " - << static_cast(alignDown(ptr)) << "\n"; -} - -// Function to demonstrate arithmetic operations -void demonstrateArithmeticOperations() { - int value = 10; - std::cout << "Original value: " << value << "\n"; - std::cout << "After fetchAdd(5): " << fetchAdd(&value, 5) << "\n"; - std::cout << "After fetchSub(3): " << fetchSub(&value, 3) << "\n"; - std::cout << "After fetchAnd(6): " << fetchAnd(&value, 6) << "\n"; - std::cout << "After fetchOr(4): " << fetchOr(&value, 4) << "\n"; - std::cout << "After fetchXor(2): " << fetchXor(&value, 2) << "\n"; -} - -// Function to demonstrate type traits -void demonstrateTypeTraits() { - std::cout << "isSame: " << std::boolalpha << isSame() - << "\n"; - std::cout << "isSame: " << std::boolalpha - << isSame() << "\n"; - - std::cout << "isRef: " << std::boolalpha << isRef() << "\n"; - std::cout << "isRef: " << std::boolalpha << isRef() << "\n"; - - std::cout << "isArray: " << std::boolalpha << isArray() - << "\n"; - std::cout << "isArray: " << std::boolalpha << isArray() << "\n"; - - std::cout << "isClass>: " << std::boolalpha - << isClass>() << "\n"; - std::cout << "isClass: " << std::boolalpha << isClass() << "\n"; - - std::cout << "isScalar: " << std::boolalpha << isScalar() << "\n"; - std::cout << "isScalar>: " << std::boolalpha - << isScalar>() << "\n"; - - std::cout << "isTriviallyCopyable: " << std::boolalpha - << isTriviallyCopyable() << "\n"; - std::cout << "isTriviallyCopyable>: " << std::boolalpha - << isTriviallyCopyable>() << "\n"; - - std::cout << "isTriviallyDestructible: " << std::boolalpha - << isTriviallyDestructible() << "\n"; - std::cout << "isTriviallyDestructible>: " << std::boolalpha - << isTriviallyDestructible>() << "\n"; - - std::cout << "isBaseOf, std::allocator>: " - << std::boolalpha - << isBaseOf, std::vector>() << "\n"; - std::cout << "isBaseOf, std::vector>: " - << std::boolalpha - << isBaseOf, std::vector>() << "\n"; - - std::cout << "hasVirtualDestructor>: " << std::boolalpha - << hasVirtualDestructor>() << "\n"; -} - -int main() { - std::cout << "Demonstrating Alignment Functions:\n"; - demonstrateAlignment(); - - std::cout << "\nDemonstrating Arithmetic Operations:\n"; - demonstrateArithmeticOperations(); - - std::cout << "\nDemonstrating Type Traits:\n"; - demonstrateTypeTraits(); - - return 0; -} diff --git a/example/atom/function/invoke.cpp b/example/atom/function/invoke.cpp deleted file mode 100644 index 94e572ee..00000000 --- a/example/atom/function/invoke.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/*! - * \file invoke.cpp - * \brief Examples demonstrating the use of invoke functions from invoke.hpp - * \author Max Qian - * \date 2024-08-23 - * \copyright Copyright (C) 2023-2024 Max Qian - */ - -#include "atom/function/invoke.hpp" - -#include -#include -#include -#include -#include - -// Example function to be used with delayInvoke -int add(int a, int b) { return a + b; } - -// Member function of a class -class Calculator { -public: - int multiply(int a, int b) const { return a * b; } - - int divide(int a, int b) { - if (b == 0) - throw std::runtime_error("Division by zero"); - return a / b; - } - - // Member variable - int value = 42; -}; - -// Example function to demonstrate delayInvoke -void demonstrateDelayInvoke() { - auto delayedAdd = delayInvoke(add, 3, 4); - std::cout << "Result of delayed add: " << delayedAdd() << "\n"; -} - -// Example function to demonstrate delayMemInvoke -void demonstrateDelayMemInvoke() { - Calculator calc; - auto delayedMultiply = delayMemInvoke(&Calculator::multiply, &calc); - std::cout << "Result of delayed multiply: " << delayedMultiply(5, 6) - << "\n"; -} - -// Example function to demonstrate delayCmemInvoke -void demonstrateDelayCmemInvoke() { - Calculator calc; - auto delayedDivide = delayMemInvoke(&Calculator::multiply, &calc); - std::cout << "Result of delayed divide: " << delayedDivide(8, 2) << "\n"; -} - -// Example function to demonstrate delayStaticMemInvoke -void demonstrateDelayStaticMemInvoke() { - // Static member functions are not supported in this context, so this - // example is not valid. -} - -// Example function to demonstrate delayMemberVarInvoke -void demonstrateDelayMemberVarInvoke() { - Calculator calc; - auto getValue = delayMemberVarInvoke(&Calculator::value, &calc); - std::cout << "Value from member variable: " << getValue() << "\n"; -} - -// Example function to demonstrate safeCall -void demonstrateSafeCall() { - auto safeDivide = [](int a, int b) -> int { - if (b == 0) - throw std::runtime_error("Division by zero"); - return a / b; - }; - - std::cout << "Safe divide result: " << safeCall(safeDivide, 10, 2) << "\n"; - std::cout << "Safe divide result (with exception): " - << safeCall(safeDivide, 10, 0) - << "\n"; // Default-constructed int (0) -} - -// Example function to demonstrate safeTryCatch -void demonstrateSafeTryCatch() { - auto riskyFunction = []() -> int { - throw std::runtime_error("An error occurred"); - return 42; - }; - - auto result = safeTryCatch(riskyFunction); - if (std::holds_alternative(result)) { - std::cout << "Result: " << std::get(result) << "\n"; - } else { - std::cout << "Exception caught\n"; - } -} - -// Example function to demonstrate safeTryCatchOrDefault -void demonstrateSafeTryCatchOrDefault() { - auto riskyFunction = []() -> int { - throw std::runtime_error("An error occurred"); - return 42; - }; - - int defaultValue = -1; - std::cout << "Result: " - << safeTryCatchOrDefault(riskyFunction, defaultValue) << "\n"; -} - -// Example function to demonstrate safeTryCatchWithCustomHandler -void demonstrateSafeTryCatchWithCustomHandler() { - auto riskyFunction = []() -> int { - throw std::runtime_error("An error occurred"); - return 42; - }; - - auto handler = [](std::exception_ptr e) { - try { - if (e) - std::rethrow_exception(e); - } catch (const std::exception& ex) { - std::cout << "Custom handler caught exception: " << ex.what() - << "\n"; - } - }; - - std::cout << "Result: " - << safeTryCatchWithCustomHandler(riskyFunction, handler) << "\n"; -} - -int main() { - std::cout << "Demonstrating Delay Invoke:\n"; - demonstrateDelayInvoke(); - - std::cout << "\nDemonstrating Delay Mem Invoke:\n"; - demonstrateDelayMemInvoke(); - - std::cout << "\nDemonstrating Delay Cmem Invoke:\n"; - demonstrateDelayCmemInvoke(); - - std::cout << "\nDemonstrating Delay Member Var Invoke:\n"; - demonstrateDelayMemberVarInvoke(); - - std::cout << "\nDemonstrating Safe Call:\n"; - demonstrateSafeCall(); - - std::cout << "\nDemonstrating Safe Try Catch:\n"; - demonstrateSafeTryCatch(); - - std::cout << "\nDemonstrating Safe Try Catch Or Default:\n"; - demonstrateSafeTryCatchOrDefault(); - - std::cout << "\nDemonstrating Safe Try Catch With Custom Handler:\n"; - demonstrateSafeTryCatchWithCustomHandler(); - - return 0; -} diff --git a/example/atom/function/overload.cpp b/example/atom/function/overload.cpp deleted file mode 100644 index f85ab74e..00000000 --- a/example/atom/function/overload.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/*! - * \file overload_examples.cpp - * \brief Examples demonstrating the use of OverloadCast from overload.hpp - * \author Max Qian - * \date 2024-08-23 - * \copyright Copyright (C) 2023-2024 Max Qian - */ - -#include "atom/function/overload.hpp" - -#include - -// Example free functions with different signatures -int add(int a, int b) { return a + b; } - -int multiply(int a, int b) { return a * b; } - -// Example class with various member functions -class Calculator { -public: - int add(int a, int b) { return a + b; } - - int subtract(int a, int b) const { return a - b; } - - int multiply(int a, int b) volatile { return a * b; } - - int divide(int a, int b) const volatile { - if (b == 0) - throw std::runtime_error("Division by zero"); - return a / b; - } - - int getValue() const { return value; } - - // Member variable - int value = 42; -}; - -// Test OverloadCast with free functions -void testFreeFunctionOverloadCast() { - using namespace atom::meta; - - auto addFunc = overload_cast{}(add); - auto multiplyFunc = overload_cast{}(multiply); - - std::cout << "Add result: " << addFunc(5, 3) << "\n"; - std::cout << "Multiply result: " << multiplyFunc(5, 3) << "\n"; -} - -// Test OverloadCast with member functions -void testMemberFunctionOverloadCast() { - using namespace atom::meta; - - Calculator calc; - - // Non-const member function - auto addMemFunc = overload_cast{}(&Calculator::add); - std::cout << "Member add result: " << (calc.*addMemFunc)(10, 5) << "\n"; - - // Const member function - auto subtractMemFunc = overload_cast{}(&Calculator::subtract); - std::cout << "Member subtract result: " - << (static_cast(calc).*subtractMemFunc)(10, 5) - << "\n"; - - // Volatile member function - auto multiplyMemFunc = overload_cast{}(&Calculator::multiply); - std::cout << "Member multiply result: " - << (static_cast(calc).*multiplyMemFunc)(10, - 5) - << "\n"; - - // Const volatile member function - auto divideMemFunc = overload_cast{}(&Calculator::divide); - try { - std::cout << "Member divide result: " - << (static_cast(calc).* - divideMemFunc)(10, 2) - << "\n"; - } catch (const std::exception& e) { - std::cout << "Exception: " << e.what() << "\n"; - } -} - -// Test OverloadCast with member variables -void testMemberVariableOverloadCast() { - using namespace atom::meta; - - Calculator calc; - - // Member variable - auto valueMemVar = overload_cast{}(&Calculator::value); - std::cout << "Member value: " << (calc.*valueMemVar) << "\n"; -} - -int main() { - std::cout << "Testing Free Function OverloadCast:\n"; - testFreeFunctionOverloadCast(); - - std::cout << "\nTesting Member Function OverloadCast:\n"; - testMemberFunctionOverloadCast(); - - std::cout << "\nTesting Member Variable OverloadCast:\n"; - testMemberVariableOverloadCast(); - - return 0; -} diff --git a/example/atom/function/property.cpp b/example/atom/function/property.cpp deleted file mode 100644 index 1ccea246..00000000 --- a/example/atom/function/property.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/*! - * \file property_examples.cpp - * \brief Examples demonstrating the use of Property class and macros from - * property.hpp \author Max Qian \date 2024-08-23 \copyright - * Copyright (C) 2023-2024 Max Qian - */ - -#include "atom/function/property.hpp" - -#include -#include - -// Example class using the Property class and macros -class Example { -private: - // Define a read-write property - DEFINE_RW_PROPERTY(int, age); - - // Define a read-only property - DEFINE_RO_PROPERTY(std::string, name); - - // Define a write-only property - DEFINE_WO_PROPERTY(double, salary); - -public: - Example(int age, std::string name, double salary) - : age_(age), name_(std::move(name)), salary_(salary) {} - - // Optional: You can define additional methods or properties here -}; - -int main() { - // Create an instance of Example - Example example(30, "Alice", 50000.0); - - // Access read-write property - std::cout << "Initial age: " << example.age() << "\n"; - example.age() = 31; - std::cout << "Updated age: " << example.age() << "\n"; - - // Access read-only property - std::cout << "Name: " << example.name() << "\n"; - - // Access write-only property (only setting the value is possible) - example.salary() = 55000.0; - std::cout << "Salary updated successfully.\n"; - - // Attempt to access the write-only property (will cause a compilation - // error) std::cout << "Salary: " << example.salary() << "\n"; - - // Set an onChange callback for the read-write property - example.age().setOnChange([](const int& newValue) { - std::cout << "Age changed to: " << newValue << "\n"; - }); - - // Change the age to trigger the onChange callback - example.age() = 32; - - return 0; -} diff --git a/example/atom/function/proxy_params.cpp b/example/atom/function/proxy_params.cpp deleted file mode 100644 index a46d65ad..00000000 --- a/example/atom/function/proxy_params.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/*! - * \file proxy_params_examples.cpp - * \brief Examples demonstrating the use of FunctionParams class from - * proxy_params.hpp \author Max Qian \date 2024-08-23 \copyright - * Copyright (C) 2023-2024 Max Qian - */ - -#include "atom/function/proxy_params.hpp" - -#include -#include -#include -#include - -// Function to demonstrate various operations on FunctionParams -void demonstrateFunctionParams() { - // Constructing FunctionParams with different methods - - // Using a single std::any value - FunctionParams fp1(std::any(42)); - - // Using an initializer list - FunctionParams fp2{42, std::string("Hello"), 3.14}; - - // Using a vector of std::any - std::vector vec = {42, std::string("World"), 2.71}; - FunctionParams fp3(vec); - - // Accessing elements - std::cout << "fp2[0]: " << std::any_cast(fp2[0]) << "\n"; - std::cout << "fp2[1]: " << std::any_cast(fp2[1]) << "\n"; - std::cout << "fp2[2]: " << std::any_cast(fp2[2]) << "\n"; - - // Using get method to safely access elements - auto value1 = fp2.get(0); - auto value2 = fp2.get(1); - auto value3 = fp2.get(2); - - std::cout << "fp2.get(0): " - << (value1 ? std::to_string(*value1) : "nullopt") << "\n"; - std::cout << "fp2.get(1): " << (value2 ? *value2 : "nullopt") - << "\n"; - std::cout << "fp2.get(2): " - << (value3 ? std::to_string(*value3) : "nullopt") << "\n"; - - // Slicing - auto slice = fp2.slice(1, 3); - std::cout << "Sliced params:\n"; - for (std::size_t i = 0; i < slice.size(); ++i) { - if (i == 0) - std::cout << "slice[0]: " << std::any_cast(slice[i]) - << "\n"; - if (i == 1) - std::cout << "slice[1]: " << std::any_cast(slice[i]) - << "\n"; - } - - // Filtering - auto filtered = fp2.filter([](const std::any& a) { - return a.type() == typeid(int) && std::any_cast(a) > 40; - }); - std::cout << "Filtered params (int > 40):\n"; - for (const auto& elem : filtered) { - std::cout << std::any_cast(elem) << "\n"; - } - - // Modifying elements - fp2.set(0, 99); - std::cout << "Modified fp2[0]: " << std::any_cast(fp2[0]) << "\n"; - - // Attempt to access an out-of-range index - try { - std::cout << "Out of range access: " << std::any_cast(fp2[10]) - << "\n"; - } catch (const std::out_of_range& e) { - std::cout << "Caught exception: " << e.what() << "\n"; - } -} - -int main() { - demonstrateFunctionParams(); - return 0; -} diff --git a/example/atom/function/raw_name.cpp b/example/atom/function/raw_name.cpp deleted file mode 100644 index 627603df..00000000 --- a/example/atom/function/raw_name.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/*! - * \file raw_name_examples.cpp - * \brief Examples demonstrating the use of raw_name functions from raw_name.hpp - * \author Max Qian - * \date 2024-08-23 - * \copyright Copyright (C) 2023-2024 Max Qian - */ - -#include "atom/function/raw_name.hpp" - -#include -#include - -// Example enum -enum class MyEnum { - Value1, - Value2 -}; - -// Example class template -template -class MyClass { -public: - T value; -}; - -// Example class with a member function -class MyClassWithMember { -public: - void myFunction() {} -}; - -// Example using raw_name_of with type -void example_raw_name_of() { - std::cout << "Type name of int: " << atom::meta::raw_name_of() << "\n"; - std::cout << "Type name of MyClass: " << atom::meta::raw_name_of>() << "\n"; -} - -// Example using raw_name_of_template with class template -void example_raw_name_of_template() { - std::cout << "Template name of MyClass: " << atom::meta::raw_name_of_template>() << "\n"; -} - -// Example using raw_name_of with enumerator value -void example_raw_name_of_enum() { - std::cout << "Enum name of MyEnum::Value1: " << atom::meta::raw_name_of_enum() << "\n"; -} - -// Example using raw_name_of_member with class member -void example_raw_name_of_member() { -#ifdef ATOM_CPP_20_SUPPORT - std::cout << "Member name of MyClassWithMember::myFunction: " - << atom::meta::raw_name_of_member>() << "\n"; -#else - std::cout << "raw_name_of_member requires C++20 support\n"; -#endif -} - -int main() { - example_raw_name_of(); - example_raw_name_of_template(); - example_raw_name_of_enum(); - example_raw_name_of_member(); - return 0; -} diff --git a/example/atom/function/refl.cpp b/example/atom/function/refl.cpp deleted file mode 100644 index cace02c5..00000000 --- a/example/atom/function/refl.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/*! - * \file refl_examples.cpp - * \brief Examples demonstrating the use of static reflection from refl.hpp - * \author Max Qian - * \date 2024-08-23 - * \copyright Copyright (C) 2023-2024 Max Qian - */ - -#include "atom/function/refl.hpp" - -#include -#include - -// Define a class with reflection metadata -struct MyClass { - int x; - double y; - std::string z; - - void print() const { - std::cout << "x: " << x << ", y: " << y << ", z: " << z << '\n'; - } -}; - -// Define reflection metadata for MyClass -ATOM_META_TYPEINFO(MyClass, ATOM_META_FIELD("x", &MyClass::x), - ATOM_META_FIELD("y", &MyClass::y), - ATOM_META_FIELD("z", &MyClass::z)) - -// Define a class with a base class -struct Base { - int baseField; -}; - -struct Derived : Base { - double derivedField; -}; - -// Define reflection metadata for Base -ATOM_META_TYPEINFO(Base, ATOM_META_FIELD("baseField", &Base::baseField)) - -// Define reflection metadata for Derived -ATOM_META_TYPEINFO(Derived, - ATOM_META_FIELD("derivedField", &Derived::derivedField)) - -// Function to print the field names and values -template -void printFields(const T& obj) { - using TypeInfo = atom::meta::TypeInfo; - TypeInfo::ForEachVarOf(obj, [](const auto& field, const auto& value) { - std::cout << "Field name: " << field.name << ", Value: " << value - << '\n'; - }); -} - -// Function to find and print the field value by name -template -void printFieldByName(const T& obj, const std::string& name) { - using TypeInfo = atom::meta::TypeInfo; - const auto& field = TypeInfo::fields.Find(TSTR(name)); - if constexpr (std::is_same_v) { - std::cout << "Field not found: " << name << '\n'; - } else { - std::cout << "Field name: " << field.name - << ", Value: " << obj.*field.value << '\n'; - } -} - -int main() { - MyClass myObject{10, 3.14, "example"}; - - // Print all fields of MyClass - std::cout << "MyClass fields:\n"; - printFields(myObject); - - // Print specific fields by name - std::cout << "\nPrinting fields by name:\n"; - printFieldByName(myObject, "x"); - printFieldByName(myObject, "y"); - printFieldByName(myObject, "z"); - printFieldByName(myObject, "nonexistent"); - - // Example with Derived class - Derived derivedObject{42, 2.718}; - - std::cout << "\nDerived class fields:\n"; - printFields(derivedObject); - - std::cout << "\nPrinting fields by name for Derived:\n"; - printFieldByName(derivedObject, "derivedField"); - printFieldByName(derivedObject, "baseField"); - - return 0; -} diff --git a/example/atom/image/fits_example.cpp b/example/atom/image/fits_example.cpp deleted file mode 100644 index bd9ef14f..00000000 --- a/example/atom/image/fits_example.cpp +++ /dev/null @@ -1,98 +0,0 @@ -#include -#include -#include "atom/image/fits_file.hpp" - -int main() { - try { - FITSFile fitsFile; - - // 创建一个简单的 10x10 彩色图像 - auto imageHDU = std::make_unique(); - imageHDU->setImageSize(10, 10, 3); // 3 channels for RGB - imageHDU->setHeaderKeyword("SIMPLE", "T"); - imageHDU->setHeaderKeyword("BITPIX", "16"); - imageHDU->setHeaderKeyword("NAXIS", "3"); - imageHDU->setHeaderKeyword("EXTEND", "T"); - - // 用渐变填充图像 - for (int y = 0; y < 10; ++y) { - for (int x = 0; x < 10; ++x) { - imageHDU->setPixel(x, y, - static_cast(x * 1000 / 9), - 0); // Red channel - imageHDU->setPixel(x, y, - static_cast(y * 1000 / 9), - 1); // Green channel - imageHDU->setPixel( - x, y, static_cast((x + y) * 500 / 9), - 2); // Blue channel - } - } - - fitsFile.addHDU(std::move(imageHDU)); - - // 写入文件 - fitsFile.writeFITS("test_color.fits"); - - // 读取文件 - FITSFile readFile; - readFile.readFITS("test_color.fits"); - - // 验证图像内容 - const auto& readHDU = dynamic_cast(readFile.getHDU(0)); - auto [width, height, channels] = readHDU.getImageSize(); - std::cout << "Image size: " << width << "x" << height << "x" << channels - << std::endl; - - // 显示每个通道的第一行 - for (int c = 0; c < channels; ++c) { - std::cout << "Channel " << c << ", first row:" << std::endl; - for (int x = 0; x < width; ++x) { - std::cout << std::setw(5) << readHDU.getPixel(x, 0, c) - << " "; - } - std::cout << std::endl; - } - - // 计算每个通道的图像统计信息 - for (int c = 0; c < channels; ++c) { - auto stats = readHDU.computeImageStats(c); - std::cout << "\nImage statistics for channel " << c << ":" - << std::endl; - std::cout << "Min: " << stats.min << std::endl; - std::cout << "Max: " << stats.max << std::endl; - std::cout << "Mean: " << stats.mean << std::endl; - std::cout << "StdDev: " << stats.stddev << std::endl; - } - - // 应用高斯模糊滤波器到绿色通道 - std::vector> gaussianKernel = { - {1 / 16.0, 1 / 8.0, 1 / 16.0}, - {1 / 8.0, 1 / 4.0, 1 / 8.0}, - {1 / 16.0, 1 / 8.0, 1 / 16.0}}; - - auto& editableHDU = dynamic_cast(readFile.getHDU(0)); - editableHDU.applyFilter(gaussianKernel, - 1); // Apply to green channel only - - std::cout << "\nAfter applying Gaussian blur to green channel:" - << std::endl; - for (int c = 0; c < channels; ++c) { - std::cout << "Channel " << c << ", first row:" << std::endl; - for (int x = 0; x < width; ++x) { - std::cout << std::setw(5) - << editableHDU.getPixel(x, 0, c) << " "; - } - std::cout << std::endl; - } - - // 将修改后的图像保存到新文件 - readFile.writeFITS("test_color_blurred.fits"); - - } catch (const std::exception& e) { - std::cerr << "Error: " << e.what() << std::endl; - return 1; - } - - return 0; -} diff --git a/example/atom/io/asyncio.cpp b/example/atom/io/asyncio.cpp deleted file mode 100644 index cf247053..00000000 --- a/example/atom/io/asyncio.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include -#include -#include -#include "atom/io/asyncio.hpp" // 假设 asyncio.hpp 是头文件的名称 - -// 定义一个简单的协程函数来演示异步文件操作 -atom::io::FileWriter example_async_operations() { - std::string filename = "example.txt"; - std::string data_to_write = "Hello, World!"; - std::string read_data; - std::size_t read_size = 1024; - - // 异步写入文件 - co_await atom::io::async_write(filename, data_to_write); - std::cout << "Data written to file: " << filename << std::endl; - - // 异步读取文件 - co_await atom::io::async_read(filename, read_data, read_size); - std::cout << "Data read from file: " << read_data << std::endl; - - // 异步复制文件 - std::string copy_filename = "example_copy.txt"; - co_await atom::io::async_copy(filename, copy_filename); - std::cout << "File copied to: " << copy_filename << std::endl; - - // 异步删除文件 - co_await atom::io::async_delete(filename); - std::cout << "File deleted: " << filename << std::endl; - - // 异步删除复制的文件 - co_await atom::io::async_delete(copy_filename); - std::cout << "Copied file deleted: " << copy_filename << std::endl; -} - -int main() { - // 启动协程 - example_async_operations(); - return 0; -} diff --git a/example/atom/io/compress.cpp b/example/atom/io/compress.cpp deleted file mode 100644 index 055cc193..00000000 --- a/example/atom/io/compress.cpp +++ /dev/null @@ -1,78 +0,0 @@ -#include -#include - -#include "atom/io/compress.hpp" - -// Creates a sample text file to compress -void createSampleFile(const std::string& fileName) { - std::ofstream outFile(fileName); - if (outFile) { - outFile << "This is a sample text file for compression testing."; - outFile.close(); - std::cout << "Created sample file: " << fileName << std::endl; - } else { - std::cerr << "Failed to create file: " << fileName << std::endl; - } -} - -int main() { - const std::string sampleFile = "testfile.txt"; - const std::string outputFolder = "."; // Use current directory - const std::string zipFile = "testarchive.zip"; - - // Step 1: Create a sample file - createSampleFile(sampleFile); - - // Step 2: Compress the sample file using Gzip - if (atom::io::compressFile(sampleFile, outputFolder)) { - std::cout << "Successfully compressed " << sampleFile << std::endl; - } else { - std::cerr << "Failed to compress " << sampleFile << std::endl; - } - - // Step 3: Create a ZIP file containing the sample file - if (atom::io::createZip(outputFolder, zipFile)) { - std::cout << "Successfully created ZIP file: " << zipFile << std::endl; - } else { - std::cerr << "Failed to create ZIP file: " << zipFile << std::endl; - } - - // Step 4: List files in the ZIP file - auto filesInZip = atom::io::listFilesInZip(zipFile); - std::cout << "Files in ZIP archive (" << zipFile << "):" << std::endl; - for (const auto& file : filesInZip) { - std::cout << " - " << file << std::endl; - } - - // Step 5: Check if the sample file exists in the ZIP - if (atom::io::fileExistsInZip(zipFile, sampleFile)) { - std::cout << sampleFile << " exists in " << zipFile << std::endl; - } else { - std::cout << sampleFile << " does not exist in " << zipFile - << std::endl; - } - - // Step 6: Get the size of the file in the ZIP - size_t fileSize = atom::io::getZipFileSize(zipFile); - std::cout << "Size of file in ZIP: " << fileSize << " bytes" << std::endl; - - // Step 7: Remove the file from the ZIP - if (atom::io::removeFileFromZip(zipFile, sampleFile)) { - std::cout << "Removed " << sampleFile << " from " << zipFile - << std::endl; - } else { - std::cerr << "Failed to remove " << sampleFile << " from " << zipFile - << std::endl; - } - - // Step 8: Extract the ZIP file (not shown here for brevity) - // Uncomment the following to extract: - // if (atom::io::extractZip(zipFile, outputFolder)) { - // std::cout << "Successfully extracted " << zipFile << " to " << - // outputFolder << std::endl; - // } else { - // std::cerr << "Failed to extract " << zipFile << std::endl; - // } - - return 0; -} diff --git a/example/atom/io/glob.cpp b/example/atom/io/glob.cpp deleted file mode 100644 index 8d6df2ad..00000000 --- a/example/atom/io/glob.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include -#include -#include - -#include "atom/io/glob.hpp" - -namespace fs = std::filesystem; - -void demonstrateGlobFunctions() { - // Specify a directory to search in (Make sure this folder exists) - const std::string testDirectory = - "."; // Using current directory for testing - - // Create some test files for demonstration purposes - fs::create_directory("test_dir"); - std::ofstream("test_dir/file1.txt"); // Create file1.txt - std::ofstream("test_dir/file2.cpp"); // Create file2.cpp - std::ofstream("test_dir/file3.md"); // Create file3.md - std::ofstream("test_dir/file4.txt"); // Create another text file - std::ofstream("test_dir/file5.doc"); // Create a non-matching doc file - - // Example: Using glob - std::cout << "Using glob to find .txt files:\n"; - auto txtFiles = glob::glob("test_dir/*.txt"); - for (const auto& file : txtFiles) { - std::cout << " - " << file << '\n'; - } - - // Example: Using rglob (recursive glob) - std::cout << "Using rglob to find .cpp files:\n"; - auto cppFiles = glob::rglob("test_dir/**/*.cpp"); - for (const auto& file : cppFiles) { - std::cout << " - " << file << '\n'; - } - - // Example: Using glob with multiple patterns - std::cout << "Using glob with multiple file patterns:\n"; - std::vector patterns = {"test_dir/*.txt", "test_dir/*.md"}; - auto matchedFiles = glob::glob(patterns); - for (const auto& file : matchedFiles) { - std::cout << " - " << file << '\n'; - } - - // Clean up: Remove the test directory and its contents - fs::remove_all("test_dir"); -} - -int main() { - demonstrateGlobFunctions(); - return 0; -} diff --git a/example/atom/io/io.cpp b/example/atom/io/io.cpp deleted file mode 100644 index 14381e68..00000000 --- a/example/atom/io/io.cpp +++ /dev/null @@ -1,80 +0,0 @@ -#include "atom/io/io.hpp" -#include -#include -#include -#include - -namespace fs = std::filesystem; - -// Function to create a sample file -void createSampleFiles(const std::string& baseDir) { - fs::create_directory(baseDir); - - std::ofstream outFile(baseDir + "/file1.txt"); - outFile << "Contents of file 1." << std::endl; - outFile.close(); - - outFile.open(baseDir + "/file2.txt"); - outFile << "Contents of file 2." << std::endl; - outFile.close(); - - outFile.open(baseDir + "/file3.txt"); - outFile << "Contents of file 3." << std::endl; - outFile.close(); -} - -// Function to demonstrate file operations -void demonstrateFileOperations() { - const std::string directory = "sample_dir"; // Directory for test files - createSampleFiles(directory); - - // Check if folder exists - if (atom::io::isFolderExists(directory)) { - std::cout << "Folder '" << directory << "' exists." << std::endl; - } - - // Check if files exist - std::vector filenames = { - "sample_dir/file1.txt", "sample_dir/file2.txt", "sample_dir/file3.txt"}; - - for (const auto& filename : filenames) { - if (atom::io::isFileExists(filename)) { - std::cout << "File '" << filename << "' exists." << std::endl; - } - } - - // Get file sizes - for (const auto& filename : filenames) { - std::size_t size = atom::io::fileSize(filename); - std::cout << "Size of " << filename << ": " << size << " bytes." - << std::endl; - } - - // Split a file - const std::string fileToSplit = "sample_dir/file1.txt"; - const std::size_t chunkSize = 10; // Split into chunks of 10 bytes - atom::io::splitFile(fileToSplit, chunkSize, "part_"); - - // Check split files - for (size_t i = 0; i < 3; ++i) { // Assuming 3 parts created from file1.txt - std::string partName = "part_" + std::to_string(i) + ".txt"; - if (atom::io::isFileExists(partName)) { - std::cout << "Split file '" << partName << "' exists." << std::endl; - } - } - - // Merge split files - std::vector partFiles = {"part_0.txt", "part_1.txt", - "part_2.txt"}; - atom::io::mergeFiles("merged_file1.txt", partFiles); - std::cout << "Merged files into 'merged_file1.txt'" << std::endl; - - // Clean up by removing sample directory - fs::remove_all(directory); - std::cout << "Removed sample directory and its contents." << std::endl; -} - -int main() { - demonstrateFileOperations(); - return 0; -} diff --git a/example/atom/io/pushd.cpp b/example/atom/io/pushd.cpp deleted file mode 100644 index ba0b5bea..00000000 --- a/example/atom/io/pushd.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include "atom/io/pushd.hpp" - -#include - -int main() { - // 创建一个 DirectoryStack 实例 - DirectoryStack dirStack; - - // 显示当前目录 - std::cout << "当前目录: "; - dirStack.show_current_directory(); - - // 将当前目录压入堆栈并切换到新目录 - std::filesystem::path newDir = "/path/to/new/directory"; - dirStack.pushd(newDir); - std::cout << "切换到新目录: "; - dirStack.show_current_directory(); - - // 查看堆栈顶部的目录 - std::cout << "堆栈顶部的目录: "; - dirStack.peek(); - - // 显示当前的目录堆栈 - std::cout << "当前的目录堆栈: "; - dirStack.dirs(); - - // 从堆栈中弹出目录并切换回去 - dirStack.popd(); - std::cout << "切换回原目录: "; - dirStack.show_current_directory(); - - // 将目录堆栈保存到文件 - std::string filename = "dir_stack.txt"; - dirStack.save_stack_to_file(filename); - std::cout << "目录堆栈已保存到文件: " << filename << std::endl; - - // 清空目录堆栈 - dirStack.clear(); - std::cout << "目录堆栈已清空" << std::endl; - - // 从文件加载目录堆栈 - dirStack.load_stack_from_file(filename); - std::cout << "目录堆栈已从文件加载: " << filename << std::endl; - - // 显示加载后的目录堆栈 - std::cout << "加载后的目录堆栈: "; - dirStack.dirs(); - - // 获取目录堆栈的大小 - size_t stackSize = dirStack.size(); - std::cout << "目录堆栈的大小: " << stackSize << std::endl; - - // 检查目录堆栈是否为空 - bool isEmpty = dirStack.is_empty(); - std::cout << "目录堆栈是否为空: " << (isEmpty ? "是" : "否") << std::endl; - - return 0; -} diff --git a/example/atom/log/atomlog.cpp b/example/atom/log/atomlog.cpp deleted file mode 100644 index 7645b30d..00000000 --- a/example/atom/log/atomlog.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include "atom/log/atomlog.hpp" -#include - -int main() { - // 创建一个 Logger 实例 - atom::log::Logger logger("logfile.log", atom::log::LogLevel::DEBUG); - - // 设置日志级别 - logger.setLevel(atom::log::LogLevel::INFO); - - // 设置日志模式 - logger.setPattern("[%Y-%m-%d %H:%M:%S] [%l] %v"); - - // 设置线程名称 - logger.setThreadName("MainThread"); - - // 记录不同级别的日志 - logger.trace("This is a trace message: {}", 1); - logger.debug("This is a debug message: {}", 2); - logger.info("This is an info message: {}", 3); - logger.warn("This is a warning message: {}", 4); - logger.error("This is an error message: {}", 5); - logger.critical("This is a critical message: {}", 6); - - // 启用系统日志记录 - logger.enableSystemLogging(true); - - // 注册一个新的日志接收器 - auto another_logger = - std::make_shared("another_logfile.log"); - logger.registerSink(another_logger); - - // 移除日志接收器 - logger.removeSink(another_logger); - - // 清除所有日志接收器 - logger.clearSinks(); - - return 0; -} diff --git a/example/atom/log/logger.cpp b/example/atom/log/logger.cpp deleted file mode 100644 index e246270f..00000000 --- a/example/atom/log/logger.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include "atom/log/logger.hpp" - -#include - -int main() { - // 创建一个 LoggerManager 实例 - lithium::LoggerManager loggerManager; - - // 假设 LoggerManager 有一个方法来添加日志条目 - lithium::LogEntry entry; - entry.fileName = "example.cpp"; - entry.lineNumber = 42; - entry.message = "This is a log message"; - - // 添加日志条目 - loggerManager.addLogEntry(entry); - - // 假设 LoggerManager 有一个方法来扫描日志文件 - std::string logFilePath = "logfile.log"; - loggerManager.scanLogFile(logFilePath); - - // 假设 LoggerManager 有一个方法来分析日志文件 - loggerManager.analyzeLogs(); - - // 假设 LoggerManager 有一个方法来上传日志文件 - std::string serverUrl = "http://example.com/upload"; - loggerManager.uploadLogs(serverUrl); - - // 假设 LoggerManager 有一个方法来显示所有日志条目 - std::vector logEntries = loggerManager.getLogEntries(); - for (const auto& logEntry : logEntries) { - std::cout << "File: " << logEntry.fileName - << ", Line: " << logEntry.lineNumber - << ", Message: " << logEntry.message << std::endl; - } - - return 0; -} diff --git a/example/atom/memory/memory.cpp b/example/atom/memory/memory.cpp deleted file mode 100644 index c0c1697d..00000000 --- a/example/atom/memory/memory.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include "atom/memory/memory.hpp" - -int main() { - // 创建一个 MemoryPool 对象 - MemoryPool pool; - - // 分配内存 - int* p1 = pool.allocate(10); // 分配 10 个 int 的内存 - int* p2 = pool.allocate(5); // 分配 5 个 int 的内存 - - // 使用分配的内存存储一些整数值 - for (int i = 0; i < 10; ++i) { - p1[i] = i * 10; - } - for (int i = 0; i < 5; ++i) { - p2[i] = i * 20; - } - - // 打印存储的整数值 - std::cout << "p1 values: "; - for (int i = 0; i < 10; ++i) { - std::cout << p1[i] << " "; - } - std::cout << std::endl; - - std::cout << "p2 values: "; - for (int i = 0; i < 5; ++i) { - std::cout << p2[i] << " "; - } - std::cout << std::endl; - - // 释放内存 - pool.deallocate(p1, 10); - pool.deallocate(p2, 5); - - return 0; -} diff --git a/example/atom/memory/object.cpp b/example/atom/memory/object.cpp deleted file mode 100644 index 00b43029..00000000 --- a/example/atom/memory/object.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include - -#include "atom/memory/object.hpp" - -// 定义一个简单的对象类 -class MyObject { -public: - MyObject(int id) : id(id) { - std::cout << "MyObject " << id << " created." << std::endl; - } - - ~MyObject() { - std::cout << "MyObject " << id << " destroyed." << std::endl; - } - - void doSomething() { - std::cout << "MyObject " << id << " is doing something." << std::endl; - } - - void reset() { std::cout << "MyObject " << id << " reset." << std::endl; } - -private: - int id; -}; - -int main() { - // 创建一个 ObjectPool 对象 - ObjectPool pool(5); // 假设池的大小为 5 - - // 从对象池中获取对象并使用 - auto obj1 = pool.acquire(); - obj1->doSomething(); - - auto obj2 = pool.acquire(); - obj2->doSomething(); - - // 将对象归还到对象池中 - pool.release(std::move(obj1)); - pool.release(std::move(obj2)); - - // 再次从对象池中获取对象并使用 - auto obj3 = pool.acquire(); - obj3->doSomething(); - - // 将对象归还到对象池中 - pool.release(std::move(obj3)); - - return 0; -} diff --git a/example/atom/memory/ring.cpp b/example/atom/memory/ring.cpp deleted file mode 100644 index 5979591d..00000000 --- a/example/atom/memory/ring.cpp +++ /dev/null @@ -1,57 +0,0 @@ -#include - -#include "atom/memory/ring.hpp" - -int main() { - // 创建一个容量为 5 的 RingBuffer 对象 - RingBuffer ring(5); - - // 向缓冲区中添加元素 - ring.push(1); - ring.push(2); - ring.push(3); - ring.push(4); - ring.push(5); - - // 尝试添加第 6 个元素,应该返回 false 因为缓冲区已满 - if (!ring.push(6)) { - std::cout << "Buffer is full, cannot push 6" << std::endl; - } - - // 打印缓冲区中的元素 - std::cout << "Buffer contents: "; - for (const auto& item : ring.view()) { - std::cout << item << " "; - } - std::cout << std::endl; - - // 从缓冲区中弹出元素 - auto item = ring.pop(); - if (item) { - std::cout << "Popped item: " << *item << std::endl; - } - - // 使用 pushOverwrite 方法添加元素,覆盖最旧的元素 - ring.pushOverwrite(6); - - // 打印缓冲区中的元素 - std::cout << "Buffer contents after pushOverwrite: "; - for (const auto& item : ring.view()) { - std::cout << item << " "; - } - std::cout << std::endl; - - // 检查缓冲区是否包含某个元素 - if (ring.contains(3)) { - std::cout << "Buffer contains 3" << std::endl; - } else { - std::cout << "Buffer does not contain 3" << std::endl; - } - - // 清空缓冲区 - ring.clear(); - std::cout << "Buffer cleared. Is empty: " << (ring.empty() ? "Yes" : "No") - << std::endl; - - return 0; -} diff --git a/example/atom/memory/shared.cpp b/example/atom/memory/shared.cpp deleted file mode 100644 index bca74ea9..00000000 --- a/example/atom/memory/shared.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include - -#include "atom/memory/shared.hpp" - -int main() { - try { - // 创建一个 SharedMemory 对象 - atom::connection::SharedMemory sharedMemory("MySharedMemory"); - - // 写入数据到共享内存 - int dataToWrite = 42; - sharedMemory.write(dataToWrite); - std::cout << "Data written to shared memory: " << dataToWrite - << std::endl; - - // 从共享内存读取数据 - int dataRead = sharedMemory.read(); - std::cout << "Data read from shared memory: " << dataRead << std::endl; - - // 检查共享内存是否被占用 - bool occupied = sharedMemory.isOccupied(); - std::cout << "Is shared memory occupied? " << (occupied ? "Yes" : "No") - << std::endl; - - // 清空共享内存 - sharedMemory.clear(); - std::cout << "Shared memory cleared." << std::endl; - - } catch (const std::exception& e) { - std::cerr << "Exception: " << e.what() << std::endl; - } - - return 0; -} diff --git a/example/atom/memory/short_alloc.cpp b/example/atom/memory/short_alloc.cpp deleted file mode 100644 index 0d44afa3..00000000 --- a/example/atom/memory/short_alloc.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include "atom/memory/short_alloc.hpp" - -#include -#include - - -int main() { - // 创建一个 Arena 对象,大小为 1024 字节 - atom::memory::Arena<1024> arena; - - // 创建一个 ShortAlloc 对象,使用上面的 Arena - atom::memory::ShortAlloc allocator(arena); - - // 使用 ShortAlloc 创建一个 vector - std::vector> vec(allocator); - - // 向 vector 中添加元素 - for (int i = 0; i < 10; ++i) { - vec.push_back(i); - } - - // 打印 vector 中的元素 - std::cout << "Vector contents: "; - for (const auto& item : vec) { - std::cout << item << " "; - } - std::cout << std::endl; - - // 使用 allocateUnique 分配一个 int - auto uniqueInt = atom::memory::allocateUnique(allocator, 42); - std::cout << "Unique int: " << *uniqueInt << std::endl; - - return 0; -} diff --git a/example/component_test/package.json b/example/component_test/package.json deleted file mode 100644 index 20bc9701..00000000 --- a/example/component_test/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "atom-config", - "version": "1.0.0", - "type": "shared", - "description": "Atom driver for Touptek Camera", - "license": "LGPL-3.0-or-later", - "author": "Max Qian", - "repository": { - "type": "git", - "url": "https://github.com/ElementAstro/Atom-Touptek" - }, - "bugs": { - "url": "https://github.com/ElementAstro/Atom-Touptek/issues" - }, - "homepage": "https://github.com/ElementAstro/Atom-Touptek", - "keywords": [ - "asi", - "camera", - "filter wheel" - ], - "scripts": { - "build": "cmake --build-type=Release -- -j 4", - "foramt": "clang-format -i src/*.cpp src/*.h", - "lint": "clang-tidy src/*.cpp src/*.h", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "dependencies": { - "asi-sdk": "^1.34" - }, - "modules": { - "main": { - "func": "getInstance", - "check": true - } - } -} diff --git a/libs b/libs index 627a05a3..31e8c07e 160000 --- a/libs +++ b/libs @@ -1 +1 @@ -Subproject commit 627a05a30a9fc1e8d1fe02a090037f4331ab0236 +Subproject commit 31e8c07ea8157f8de04e75c56b808105893ad498 diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index ae44a476..88cfad8b 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -12,7 +12,7 @@ project(lithium.builtin C CXX) function(add_subdirectories_recursively start_dir) file(GLOB entries "${start_dir}/*") foreach(entry ${entries}) - if(IS_DIRECTORY ${entry} AND EXISTS "${entry}/CMakeLists.txt" AND EXISTS "${entry}/package.json") + if(IS_DIRECTORY ${entry} AND EXISTS "${entry}/CMakeLists.txt" AND (EXISTS "${entry}/package.json" OR EXISTS "${entry}/package.yaml")) message(STATUS "Adding module subdirectory: ${entry}") add_subdirectory(${entry}) endif() diff --git a/modules/atom.algorithm/CMakeLists.txt b/modules/atom.algorithm/CMakeLists.txt new file mode 100644 index 00000000..7a278861 --- /dev/null +++ b/modules/atom.algorithm/CMakeLists.txt @@ -0,0 +1,64 @@ +# CMakeLists.txt for Atom-Algorithm-Builtin +# This project is licensed under the terms of the GPL3 license. +# +# Project Name: Atom-Algorithm-Builtin +# Description: A builtin module for Atom-Algorithm +# Author: Max Qian +# License: GPL3 + +cmake_minimum_required(VERSION 3.20) +project(atom_algorithm C CXX) + +set(CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_MAJOR 1) +set(CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_MINOR 0) +set(CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_RELEASE 0) + +set(ATOM_ALGORITHM_BUILTIN_SOVERSION ${CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_MAJOR}) +set(CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_STRING "${CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_MAJOR}.${CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_MINOR}.${CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_RELEASE}") +set(ATOM_ALGORITHM_BUILTIN_VERSION ${CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_MAJOR}.${CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_MINOR}.${CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_RELEASE}) + +# Sources +set(${PROJECT_NAME}_SOURCES + component.cpp +) + +set(${PROJECT_NAME}_LIBS + loguru + atom-component + atom-error + atom-algorithm + ${ZLIB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} +) + +# Build Object Library +add_library(${PROJECT_NAME}_OBJECT OBJECT) +set_property(TARGET ${PROJECT_NAME}_OBJECT PROPERTY POSITION_INDEPENDENT_CODE 1) + +target_sources(${PROJECT_NAME}_OBJECT + PRIVATE + ${${PROJECT_NAME}_SOURCES} +) + +target_link_libraries(${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) + +add_library(${PROJECT_NAME} SHARED) + +target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) +target_include_directories(${PROJECT_NAME} PUBLIC .) + +set_target_properties(${PROJECT_NAME} PROPERTIES + VERSION ${CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_STRING} + SOVERSION ${ATOM_ALGORITHM_BUILTIN_SOVERSION} + OUTPUT_NAME atom_ioio +) + +install(TARGETS ${PROJECT_NAME} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +) + +find_package(Python COMPONENTS Interpreter Development) +find_package(pybind11 CONFIG) + +pybind11_add_module(${PROJECT_NAME}_py pymodule.cpp) +target_link_libraries(${PROJECT_NAME}_py PRIVATE atom-algorithm atom-error) diff --git a/pysrc/__init__.py b/modules/atom.algorithm/component.cpp similarity index 100% rename from pysrc/__init__.py rename to modules/atom.algorithm/component.cpp diff --git a/modules/atom.algorithm/package.yaml b/modules/atom.algorithm/package.yaml new file mode 100644 index 00000000..1079e630 --- /dev/null +++ b/modules/atom.algorithm/package.yaml @@ -0,0 +1,28 @@ +name: atom.algorithm +version: 1.0.0 +description: Atom Algorithm Module +license: GPL-3.0-or-later +author: Max Qian +repository: + type: git + url: https://github.com/ElementAstro/Lithium +bugs: + url: https://github.com/ElementAstro/Lithium/issues +homepage: https://github.com/ElementAstro/Lithium +keywords: + - atom + - algorithm + - python + - cpp +platforms: + - windows + - linux + - macos +scripts: + build: cmake --build . --config Release -- -j 4 + lint: clang-format -i src/*.cpp src/*.h +modules: + - name: algorithm + entry: getInstance +pymodule: + - name: atom_algorithm_py diff --git a/modules/atom.algorithm/pymodule.cpp b/modules/atom.algorithm/pymodule.cpp new file mode 100644 index 00000000..3cdc6c7f --- /dev/null +++ b/modules/atom.algorithm/pymodule.cpp @@ -0,0 +1,463 @@ +#include +#include +#include + +#include "atom/algorithm/algorithm.hpp" +#include "atom/algorithm/annealing.hpp" +#include "atom/algorithm/base.hpp" +#include "atom/algorithm/bignumber.hpp" +#include "atom/algorithm/convolve.hpp" +#include "atom/algorithm/error_calibration.hpp" +#include "atom/algorithm/fnmatch.hpp" +#include "atom/algorithm/hash.hpp" +#include "atom/algorithm/huffman.hpp" +#include "atom/algorithm/math.hpp" +#include "atom/algorithm/matrix_compress.hpp" +#include "atom/algorithm/mhash.hpp" +#include "atom/algorithm/perlin.hpp" +#include "atom/algorithm/snowflake.hpp" +#include "atom/algorithm/tea.hpp" +#include "atom/algorithm/weight.hpp" + +namespace py = pybind11; +using namespace atom::algorithm; + +template +void bind_advanced_error_calibration(py::module &m, const std::string &name) { + py::class_>(m, name.c_str()) + .def(py::init<>()) + .def("linear_calibrate", &AdvancedErrorCalibration::linearCalibrate) + .def("polynomial_calibrate", + &AdvancedErrorCalibration::polynomialCalibrate) + .def("apply", &AdvancedErrorCalibration::apply) + .def("print_parameters", &AdvancedErrorCalibration::printParameters) + .def("get_residuals", &AdvancedErrorCalibration::getResiduals) + .def("plot_residuals", &AdvancedErrorCalibration::plotResiduals) + .def("bootstrap_confidence_interval", + &AdvancedErrorCalibration::bootstrapConfidenceInterval) + .def("outlier_detection", + &AdvancedErrorCalibration::outlierDetection) + .def("cross_validation", &AdvancedErrorCalibration::crossValidation) + .def("get_slope", &AdvancedErrorCalibration::getSlope) + .def("get_intercept", &AdvancedErrorCalibration::getIntercept) + .def("get_r_squared", &AdvancedErrorCalibration::getRSquared) + .def("get_mse", &AdvancedErrorCalibration::getMse) + .def("get_mae", &AdvancedErrorCalibration::getMae); +} + +template +void bind_weight_selector(py::module &m, const std::string &name) { + py::class_>(m, name.c_str()) + .def(py::init, + std::unique_ptr< + typename WeightSelector::SelectionStrategy>>(), + py::arg("input_weights"), + py::arg("custom_strategy") = std::make_unique< + typename WeightSelector::DefaultSelectionStrategy>()) + .def("set_selection_strategy", &WeightSelector::setSelectionStrategy) + .def("select", &WeightSelector::select) + .def("select_multiple", &WeightSelector::selectMultiple) + .def("update_weight", &WeightSelector::updateWeight) + .def("add_weight", &WeightSelector::addWeight) + .def("remove_weight", &WeightSelector::removeWeight) + .def("normalize_weights", &WeightSelector::normalizeWeights) + // .def("apply_function_to_weights", + // &WeightSelector::applyFunctionToWeights) + .def("batch_update_weights", &WeightSelector::batchUpdateWeights) + .def("get_weight", &WeightSelector::getWeight) + .def("get_max_weight_index", &WeightSelector::getMaxWeightIndex) + .def("get_min_weight_index", &WeightSelector::getMinWeightIndex) + .def("size", &WeightSelector::size) + .def("get_weights", &WeightSelector::getWeights) + .def("get_total_weight", &WeightSelector::getTotalWeight) + .def("reset_weights", &WeightSelector::resetWeights) + .def("scale_weights", &WeightSelector::scaleWeights) + .def("get_average_weight", &WeightSelector::getAverageWeight) + .def("print_weights", &WeightSelector::printWeights); + + py::class_::SelectionStrategy, + std::shared_ptr::SelectionStrategy>>( + m, (name + "SelectionStrategy").c_str()) + .def("select", &WeightSelector::SelectionStrategy::select); + + py::class_< + typename WeightSelector::DefaultSelectionStrategy, + typename WeightSelector::SelectionStrategy, + std::shared_ptr::DefaultSelectionStrategy>>( + m, (name + "DefaultSelectionStrategy").c_str()) + .def(py::init<>()); + + py::class_::BottomHeavySelectionStrategy, + typename WeightSelector::SelectionStrategy, + std::shared_ptr< + typename WeightSelector::BottomHeavySelectionStrategy>>( + m, (name + "BottomHeavySelectionStrategy").c_str()) + .def(py::init<>()); + + py::class_< + typename WeightSelector::RandomSelectionStrategy, + typename WeightSelector::SelectionStrategy, + std::shared_ptr::RandomSelectionStrategy>>( + m, (name + "RandomSelectionStrategy").c_str()) + .def(py::init()); + + py::class_::WeightedRandomSampler>( + m, (name + "WeightedRandomSampler").c_str()) + .def(py::init<>()) + .def("sample", &WeightSelector::WeightedRandomSampler::sample); + + py::class_, + typename WeightSelector::SelectionStrategy, + std::shared_ptr>>( + m, (name + "TopHeavySelectionStrategy").c_str()) + .def(py::init<>()); +} + +PYBIND11_MODULE(algorithm, m) { + py::class_(m, "KMP") + .def(py::init()) + .def("search", &KMP::search) + .def("set_pattern", &KMP::setPattern); + + py::class_(m, "BoyerMoore") + .def(py::init()) + .def("search", &BoyerMoore::search) + .def("set_pattern", &BoyerMoore::setPattern); + + py::class_>(m, "BloomFilter") + .def(py::init()) + .def("insert", &BloomFilter<1024>::insert) + .def("contains", &BloomFilter<1024>::contains); + + py::enum_(m, "AnnealingStrategy") + .value("LINEAR", AnnealingStrategy::LINEAR) + .value("EXPONENTIAL", AnnealingStrategy::EXPONENTIAL) + .value("LOGARITHMIC", AnnealingStrategy::LOGARITHMIC) + .export_values(); + + py::class_(m, "TSP") + .def(py::init> &>()) + .def("energy", &TSP::energy) + .def("neighbor", &TSP::neighbor) + .def("random_solution", &TSP::randomSolution); + + /* + py::class_>>(m, + "SimulatedAnnealing") + .def(py::init()) + .def("set_cooling_schedule", + &SimulatedAnnealing>::setCoolingSchedule) + .def("set_progress_callback", + &SimulatedAnnealing>::setProgressCallback) .def("set_stop_condition", + &SimulatedAnnealing>::setStopCondition) + .def("optimize", &SimulatedAnnealing>::optimize) .def("get_best_energy", + &SimulatedAnnealing>::getBestEnergy); + */ + + m.def("base64_encode", &base64Encode, "Base64 encoding function"); + m.def("base64_decode", &base64Decode, "Base64 decoding function"); + m.def("xor_encrypt", &xorEncrypt, "Encrypt string using XOR algorithm"); + m.def("xor_decrypt", &xorDecrypt, "Decrypt string using XOR algorithm"); + + py::class_(m, "BigNumber") + .def(py::init()) + .def(py::init()) + .def("add", &BigNumber::add) + .def("subtract", &BigNumber::subtract) + .def("multiply", &BigNumber::multiply) + .def("divide", &BigNumber::divide) + .def("pow", &BigNumber::pow) + .def("get_string", &BigNumber::getString) + .def("set_string", &BigNumber::setString) + .def("negate", &BigNumber::negate) + .def("trim_leading_zeros", &BigNumber::trimLeadingZeros) + .def("equals", py::overload_cast(&BigNumber::equals, + py::const_)) + .def("equals", py::overload_cast(&BigNumber::equals, + py::const_)) + .def("equals", py::overload_cast( + &BigNumber::equals, py::const_)) + .def("digits", &BigNumber::digits) + .def("is_negative", &BigNumber::isNegative) + .def("is_positive", &BigNumber::isPositive) + .def("is_even", &BigNumber::isEven) + .def("is_odd", &BigNumber::isOdd) + .def("abs", &BigNumber::abs) + .def("__str__", &BigNumber::getString) + .def(py::self + py::self) + .def(py::self - py::self) + .def(py::self * py::self) + .def(py::self / py::self) + .def(py::self == py::self) + .def(py::self > py::self) + .def(py::self < py::self) + .def(py::self >= py::self) + .def(py::self <= py::self) + .def("__iadd__", &BigNumber::operator+=) + .def("__isub__", &BigNumber::operator-=) + .def("__imul__", &BigNumber::operator*=) + .def("__idiv__", &BigNumber::operator/=) + .def("__neg__", &BigNumber::negate) + .def("__abs__", &BigNumber::abs) + .def("__len__", &BigNumber::digits) + .def("__getitem__", &BigNumber::operator[]) + .def( + "__iter__", + [](const BigNumber &bn) { + return py::make_iterator(bn.getString().begin(), + bn.getString().end()); + }, + py::keep_alive<0, 1>()); + + m.def("convolve", &convolve, "Perform 1D convolution operation", + py::arg("input"), py::arg("kernel")); + m.def("deconvolve", &deconvolve, "Perform 1D deconvolution operation", + py::arg("input"), py::arg("kernel")); + m.def("convolve2d", &convolve2D, "Perform 2D convolution operation", + py::arg("input"), py::arg("kernel"), py::arg("num_threads") = 1); + m.def("deconvolve2d", &deconvolve2D, "Perform 2D deconvolution operation", + py::arg("signal"), py::arg("kernel"), py::arg("num_threads") = 1); + m.def("dft2d", &dfT2D, "Perform 2D discrete Fourier transform", + py::arg("signal"), py::arg("num_threads") = 1); + m.def("idft2d", &idfT2D, "Perform 2D inverse discrete Fourier transform", + py::arg("spectrum"), py::arg("num_threads") = 1); + m.def("generate_gaussian_kernel", &generateGaussianKernel, + "Generate 2D Gaussian kernel", py::arg("size"), py::arg("sigma")); + m.def("apply_gaussian_filter", &applyGaussianFilter, + "Apply Gaussian filter", py::arg("image"), py::arg("kernel")); + + bind_advanced_error_calibration(m, "AdvancedErrorCalibrationFloat"); + bind_advanced_error_calibration(m, + "AdvancedErrorCalibrationDouble"); + + m.def("fnmatch", &fnmatch, "Match string with specified pattern", + py::arg("pattern"), py::arg("string"), py::arg("flags") = 0); + m.def("filter", + py::overload_cast &, std::string_view, + int>(&filter), + "Filter vector of strings based on specified pattern", + py::arg("names"), py::arg("pattern"), py::arg("flags") = 0); + m.def("filter", + py::overload_cast &, + const std::vector &, int>(&filter), + "Filter vector of strings based on multiple specified patterns", + py::arg("names"), py::arg("patterns"), py::arg("flags") = 0); + m.def("translate", &translate, + "Translate pattern to different representation", py::arg("pattern"), + py::arg("result"), py::arg("flags") = 0); + + m.def("compute_hash", + py::overload_cast(&computeHash), + "Compute hash value of a single hashable value"); + m.def("compute_hash", + py::overload_cast &>( + &computeHash), + "Compute hash value of a vector of strings"); + m.def("compute_hash", + py::overload_cast &>( + &computeHash), + "Compute hash value of a tuple of strings"); + m.def("compute_hash", + py::overload_cast &>( + &computeHash), + "Compute hash value of an array of strings"); + // m.def("compute_hash", py::overload_cast(&computeHash), + // "Compute hash value of std::any"); + m.def("hash", &hash, + "Compute hash value of a string using FNV-1a algorithm", + py::arg("str"), py::arg("basis") = 2166136261U); + m.def( + "operator" + "_hash", + &operator""_hash, "Compute hash value of a string literal"); + + py::class_>(m, "HuffmanNode") + .def(py::init()) + .def_readwrite("data", &HuffmanNode::data) + .def_readwrite("frequency", &HuffmanNode::frequency) + .def_readwrite("left", &HuffmanNode::left) + .def_readwrite("right", &HuffmanNode::right); + + m.def("create_huffman_tree", &createHuffmanTree, "Create Huffman tree", + py::arg("frequencies")); + + m.def("generate_huffman_codes", &generateHuffmanCodes, + "Generate Huffman codes", py::arg("root"), py::arg("code"), + py::arg("huffman_codes")); + + m.def("compress_data", &compressData, "Compress text", py::arg("text"), + py::arg("huffman_codes")); + + m.def("decompress_data", &decompressData, "Decompress text", + py::arg("compressed_text"), py::arg("root")); + + m.def("mul_div64", &mulDiv64, + "Perform 64-bit multiplication and division operation", + py::arg("operant"), py::arg("multiplier"), py::arg("divider")); + m.def("safe_add", &safeAdd, "Perform safe addition operation", py::arg("a"), + py::arg("b")); + m.def("safe_mul", &safeMul, "Perform safe multiplication operation", + py::arg("a"), py::arg("b")); + m.def("rotl64", &rotl64, "Perform 64-bit integer left rotation operation", + py::arg("n"), py::arg("c")); + m.def("rotr64", &rotr64, "Perform 64-bit integer right rotation operation", + py::arg("n"), py::arg("c")); + m.def("clz64", &clz64, "Count leading zeros of a 64-bit integer", + py::arg("x")); + m.def("normalize", &normalize, "Normalize a 64-bit integer", py::arg("x")); + m.def("safe_sub", &safeSub, "Perform safe subtraction operation", + py::arg("a"), py::arg("b")); + m.def("safe_div", &safeDiv, "Perform safe division operation", py::arg("a"), + py::arg("b")); + m.def("bit_reverse64", &bitReverse64, + "Compute bitwise reversal of a 64-bit integer", py::arg("n")); + m.def("approximate_sqrt", &approximateSqrt, + "Approximate square root of a 64-bit integer", py::arg("n")); + m.def("gcd64", &gcd64, + "Compute greatest common divisor of two 64-bit integers", + py::arg("a"), py::arg("b")); + m.def("lcm64", &lcm64, + "Compute least common multiple of two 64-bit integers", py::arg("a"), + py::arg("b")); + m.def("is_power_of_two", &isPowerOfTwo, + "Check if a 64-bit integer is a power of two", py::arg("n")); + m.def("next_power_of_two", &nextPowerOfTwo, + "Compute the next power of two of a 64-bit integer", py::arg("n")); + + py::class_(m, "MatrixCompressor") + .def_static("compress", &MatrixCompressor::compress, "Compress matrix", + py::arg("matrix")) + .def_static("decompress", &MatrixCompressor::decompress, + "Decompress data to matrix", py::arg("compressed"), + py::arg("rows"), py::arg("cols")) + .def_static("print_matrix", &MatrixCompressor::printMatrix, + "Print matrix", py::arg("matrix")) + .def_static("generate_random_matrix", + &MatrixCompressor::generateRandomMatrix, + "Generate random matrix", py::arg("rows"), py::arg("cols"), + py::arg("charset") = "ABCD") + .def_static("save_compressed_to_file", + &MatrixCompressor::saveCompressedToFile, + "Save compressed data to file", py::arg("compressed"), + py::arg("filename")) + .def_static("load_compressed_from_file", + &MatrixCompressor::loadCompressedFromFile, + "Load compressed data from file", py::arg("filename")) + .def_static("calculate_compression_ratio", + &MatrixCompressor::calculateCompressionRatio, + "Calculate compression ratio", py::arg("original"), + py::arg("compressed")) + .def_static("downsample", &MatrixCompressor::downsample, + "Downsample matrix", py::arg("matrix"), py::arg("factor")) + .def_static("upsample", &MatrixCompressor::upsample, "Upsample matrix", + py::arg("matrix"), py::arg("factor")) + .def_static("calculate_mse", &MatrixCompressor::calculateMSE, + "Calculate mean squared error between two matrices", + py::arg("matrix1"), py::arg("matrix2")); + +#if ATOM_ENABLE_DEBUG + m.def("performance_test", &performanceTest, + "Run performance test for matrix compression and decompression", + py::arg("rows"), py::arg("cols")); +#endif + + m.def("hexstring_from_data", &hexstringFromData, + "Convert string to hexadecimal string representation", + py::arg("data")); + m.def("data_from_hexstring", &dataFromHexstring, + "Convert hexadecimal string representation to binary data", + py::arg("data")); + + py::class_(m, "MinHash") + .def(py::init(), "Construct a MinHash object", + py::arg("num_hashes")) + .def( + "compute_signature", + [](const MinHash &self, const std::vector &set) { + return self.computeSignature(set); + }, + "Compute MinHash signature for a given set", py::arg("set")) + .def_static("jaccard_index", &MinHash::jaccardIndex, + "Compute Jaccard index between two sets", py::arg("sig1"), + py::arg("sig2")); + + m.def( + "keccak256", + [](const std::string &input) { + auto hash = keccak256( + reinterpret_cast(input.data()), input.size()); + return std::vector(hash.begin(), hash.end()); + }, + "Compute Keccak-256 hash value of input data", py::arg("input")); + + py::class_(m, "PerlinNoise") + .def(py::init(), "Construct a PerlinNoise object", + py::arg("seed") = std::default_random_engine::default_seed) + .def("noise", &PerlinNoise::noise, "Generate Perlin noise", + py::arg("x"), py::arg("y"), py::arg("z")) + .def("octave_noise", &PerlinNoise::octaveNoise, + "Generate octave Perlin noise", py::arg("x"), py::arg("y"), + py::arg("z"), py::arg("octaves"), py::arg("persistence")) + .def("generate_noise_map", &PerlinNoise::generateNoiseMap, + "Generate noise map", py::arg("width"), py::arg("height"), + py::arg("scale"), py::arg("octaves"), py::arg("persistence"), + py::arg("lacunarity"), + py::arg("seed") = std::default_random_engine::default_seed); + + constexpr uint64_t TWEPOCH = 1580504900000; + using SnowflakeType = Snowflake; + + py::class_(m, "Snowflake") + .def(py::init<>(), + "Constructs a new Snowflake instance with a random secret key.") + .def("init", &SnowflakeType::init, py::arg("worker_id"), + py::arg("datacenter_id"), + "Initializes the Snowflake generator with worker and datacenter " + "IDs.") + .def("nextid", &SnowflakeType::nextid, "Generates the next unique ID.") + .def( + "parse_id", + [](const SnowflakeType &self, uint64_t encrypted_id) { + uint64_t timestamp; + uint64_t datacenterId; + uint64_t workerId; + uint64_t sequence; + self.parseId(encrypted_id, timestamp, datacenterId, workerId, + sequence); + return py::make_tuple(timestamp, datacenterId, workerId, + sequence); + }, + py::arg("encrypted_id"), + "Parses an encrypted ID into its components: timestamp, datacenter " + "ID, worker ID, and sequence."); + + m.def("tea_encrypt", &teaEncrypt, + "Encrypt two 32-bit values using TEA algorithm", py::arg("value0"), + py::arg("value1"), py::arg("key")); + m.def("tea_decrypt", &teaDecrypt, + "Decrypt two 32-bit values using TEA algorithm", py::arg("value0"), + py::arg("value1"), py::arg("key")); + m.def("xxtea_encrypt", &xxteaEncrypt, + "Encrypt vector of 32-bit values using XXTEA algorithm", + py::arg("input_data"), py::arg("input_key")); + m.def("xxtea_decrypt", &xxteaDecrypt, + "Decrypt vector of 32-bit values using XXTEA algorithm", + py::arg("input_data"), py::arg("input_key")); + m.def("xtea_encrypt", &xteaEncrypt, + "Encrypt two 32-bit values using XTEA algorithm", py::arg("value0"), + py::arg("value1"), py::arg("key")); + m.def("xtea_decrypt", &xteaDecrypt, + "Decrypt two 32-bit values using XTEA algorithm", py::arg("value0"), + py::arg("value1"), py::arg("key")); + m.def("to_uint32_vector", &toUint32Vector, + "Convert byte array to vector of 32-bit unsigned integers", + py::arg("data")); + m.def("to_byte_array", &toByteArray, + "Convert vector of 32-bit unsigned integers back to byte array", + py::arg("data")); + + // TODO: Uncomment this after fixing the issue with std::span + // bind_weight_selector(m, "WeightSelectorDouble"); +} diff --git a/modules/atom.async/CMakeLists.txt b/modules/atom.async/CMakeLists.txt new file mode 100644 index 00000000..21c5f41e --- /dev/null +++ b/modules/atom.async/CMakeLists.txt @@ -0,0 +1,64 @@ +# CMakeLists.txt for Atom-Algorithm-Builtin +# This project is licensed under the terms of the GPL3 license. +# +# Project Name: Atom-Algorithm-Builtin +# Description: A builtin module for Atom-Algorithm +# Author: Max Qian +# License: GPL3 + +cmake_minimum_required(VERSION 3.20) +project(atom_async C CXX) + +set(CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_MAJOR 1) +set(CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_MINOR 0) +set(CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_RELEASE 0) + +set(ATOM_ALGORITHM_BUILTIN_SOVERSION ${CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_MAJOR}) +set(CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_STRING "${CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_MAJOR}.${CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_MINOR}.${CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_RELEASE}") +set(ATOM_ALGORITHM_BUILTIN_VERSION ${CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_MAJOR}.${CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_MINOR}.${CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_RELEASE}) + +# Sources +set(${PROJECT_NAME}_SOURCES + component.cpp +) + +set(${PROJECT_NAME}_LIBS + loguru + atom-component + atom-error + atom-async + ${ZLIB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} +) + +# Build Object Library +add_library(${PROJECT_NAME}_OBJECT OBJECT) +set_property(TARGET ${PROJECT_NAME}_OBJECT PROPERTY POSITION_INDEPENDENT_CODE 1) + +target_sources(${PROJECT_NAME}_OBJECT + PRIVATE + ${${PROJECT_NAME}_SOURCES} +) + +target_link_libraries(${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) + +add_library(${PROJECT_NAME} SHARED) + +target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) +target_include_directories(${PROJECT_NAME} PUBLIC .) + +set_target_properties(${PROJECT_NAME} PROPERTIES + VERSION ${CMAKE_ATOM_ALGORITHM_BUILTIN_VERSION_STRING} + SOVERSION ${ATOM_ALGORITHM_BUILTIN_SOVERSION} + OUTPUT_NAME atom_ioio +) + +install(TARGETS ${PROJECT_NAME} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +) + +find_package(Python COMPONENTS Interpreter Development) +find_package(pybind11 CONFIG) + +pybind11_add_module(${PROJECT_NAME}_py pymodule.cpp) +target_link_libraries(${PROJECT_NAME}_py PRIVATE atom-async atom-error) diff --git a/pysrc/addon/__init__.py b/modules/atom.async/component.cpp similarity index 100% rename from pysrc/addon/__init__.py rename to modules/atom.async/component.cpp diff --git a/modules/atom.async/package.yaml b/modules/atom.async/package.yaml new file mode 100644 index 00000000..7386d7af --- /dev/null +++ b/modules/atom.async/package.yaml @@ -0,0 +1,28 @@ +name: atom.async +version: 1.0.0 +description: Atom Async Module +license: GPL-3.0-or-later +author: Max Qian +repository: + type: git + url: https://github.com/ElementAstro/Lithium +bugs: + url: https://github.com/ElementAstro/Lithium/issues +homepage: https://github.com/ElementAstro/Lithium +keywords: + - atom + - async + - python + - cpp +platforms: + - windows + - linux + - macos +scripts: + build: cmake --build . --config Release -- -j 4 + lint: clang-format -i src/*.cpp src/*.h +modules: + - name: async + entry: getInstance +pymodule: + - name: atom_async_py diff --git a/modules/atom.async/pymodule.cpp b/modules/atom.async/pymodule.cpp new file mode 100644 index 00000000..9af31c65 --- /dev/null +++ b/modules/atom.async/pymodule.cpp @@ -0,0 +1,333 @@ +#include +#include +#include +#include + +#include "atom/async/limiter.hpp" +#include "atom/async/message_bus.hpp" +#include "atom/async/message_queue.hpp" +#include "atom/async/pool.hpp" +#include "atom/async/safetype.hpp" +#include "atom/async/timer.hpp" +#include "atom/async/trigger.hpp" + +namespace py = pybind11; +using namespace atom::async; + +template +void bind_message_queue(py::module &m, const std::string &name) { + py::class_>(m, name.c_str()) + .def(py::init(), "Constructor", + py::arg("io_context")) + // TODO: Implement MessageQueue::subscribe + //.def("subscribe", &MessageQueue::subscribe, + // "Subscribe to messages with a callback and optional filter and " + // "timeout", + // py::arg("callback"), py::arg("subscriber_name"), + // py::arg("priority") = 0, py::arg("filter") = nullptr, + // py::arg("timeout") = std::chrono::milliseconds::zero()) + .def("unsubscribe", &MessageQueue::unsubscribe, + "Unsubscribe from messages using the given callback", + py::arg("callback")) + .def("publish", &MessageQueue::publish, + "Publish a message to the queue, with an optional priority", + py::arg("message"), py::arg("priority") = 0) + .def("start_processing", &MessageQueue::startProcessing, + "Start processing messages in the queue") + .def("stop_processing", &MessageQueue::stopProcessing, + "Stop processing messages in the queue") + .def("get_message_count", &MessageQueue::getMessageCount, + "Get the number of messages currently in the queue") + .def("get_subscriber_count", &MessageQueue::getSubscriberCount, + "Get the number of subscribers currently subscribed to the queue") + .def("cancel_messages", &MessageQueue::cancelMessages, + "Cancel specific messages that meet a given condition", + py::arg("cancel_condition")); +} + +template +void bind_trigger(py::module &m, const std::string &name) { + using TriggerType = Trigger; + py::class_(m, name.c_str()) + .def(py::init<>()) + .def("registerCallback", &TriggerType::registerCallback, + py::arg("event"), py::arg("callback"), + py::arg("priority") = TriggerType::CallbackPriority::Normal) + .def("unregisterCallback", &TriggerType::unregisterCallback, + py::arg("event"), py::arg("callback")) + .def("trigger", &TriggerType::trigger, py::arg("event"), + py::arg("param")) + .def("scheduleTrigger", &TriggerType::scheduleTrigger, py::arg("event"), + py::arg("param"), py::arg("delay")) + .def("scheduleAsyncTrigger", &TriggerType::scheduleAsyncTrigger, + py::arg("event"), py::arg("param")) + .def("cancelTrigger", &TriggerType::cancelTrigger, py::arg("event")) + .def("cancelAllTriggers", &TriggerType::cancelAllTriggers); + + py::enum_( + m, (name + "CallbackPriority").c_str()) + .value("High", TriggerType::CallbackPriority::High) + .value("Normal", TriggerType::CallbackPriority::Normal) + .value("Low", TriggerType::CallbackPriority::Low); +} + +template +void bind_safe_type(py::module &m, const std::string &name) { + py::class_>(m, + std::format("LockFreeStack{}", name).c_str()) + .def(py::init<>()) + .def("push", + (void(LockFreeStack::*)(const T &)) & LockFreeStack::push) + .def("push", (void(LockFreeStack::*)(T &&)) & LockFreeStack::push) + .def("pop", &LockFreeStack::pop) + .def("top", &LockFreeStack::top) + .def("empty", &LockFreeStack::empty) + .def("size", &LockFreeStack::size); + + py::class_>( + m, std::format("ThreadSafeVector{}", name).c_str()) + .def(py::init()) + .def("pushBack", (void(ThreadSafeVector::*)(const T &)) & + ThreadSafeVector::pushBack) + .def("pushBack", (void(ThreadSafeVector::*)(T &&)) & + ThreadSafeVector::pushBack) + .def("popBack", &ThreadSafeVector::popBack) + .def("at", &ThreadSafeVector::at) + .def("empty", &ThreadSafeVector::empty) + .def("getSize", &ThreadSafeVector::getSize) + .def("getCapacity", &ThreadSafeVector::getCapacity) + .def("clear", &ThreadSafeVector::clear) + .def("shrinkToFit", &ThreadSafeVector::shrinkToFit) + .def("front", &ThreadSafeVector::front) + .def("back", &ThreadSafeVector::back) + .def("__getitem__", &ThreadSafeVector::operator[]); + + py::class_>(m, std::format("LockFreeList{}", name).c_str()) + .def(py::init<>()) + .def("pushFront", &LockFreeList::pushFront) + .def("popFront", &LockFreeList::popFront) + .def("empty", &LockFreeList::empty); +} + +PYBIND11_MODULE(async, m) { + py::class_>(m, "MessageBus") + .def(py::init(), "Constructor", + py::arg("io_context")) + .def_static("create_shared", &MessageBus::createShared, + "Create a shared instance of MessageBus", + py::arg("io_context")) + .def( + "publish", + [](MessageBus &self, const std::string &name, + const py::object &message, + std::optional delay) { + if (py::isinstance(message)) { + self.publish(name, message.cast(), delay); + } else if (py::isinstance(message)) { + self.publish(name, message.cast(), delay); + } else if (py::isinstance(message)) { + self.publish(name, message.cast(), delay); + } else { + throw std::runtime_error("Unsupported message type"); + } + }, + "Publish a message to the bus", py::arg("name"), py::arg("message"), + py::arg("delay") = std::nullopt) + .def( + "publish_global", + [](MessageBus &self, const py::object &message) { + if (py::isinstance(message)) { + self.publishGlobal(message.cast()); + } else if (py::isinstance(message)) { + self.publishGlobal(message.cast()); + } else if (py::isinstance(message)) { + self.publishGlobal(message.cast()); + } else { + throw std::runtime_error("Unsupported message type"); + } + }, + "Publish a message to all subscribers globally", py::arg("message")) + .def( + "subscribe", + [](MessageBus &self, const std::string &name, py::function handler, + bool async, bool once, py::function filter) { + if (handler.is_none()) { + throw std::runtime_error("Handler function cannot be None"); + } + if (filter.is_none()) { + filter = py::cpp_function( + [](const py::object &) { return true; }); + } + return self.subscribe( + name, + [handler](const std::string &msg) { + py::gil_scoped_acquire acquire; + handler(msg); + }, + async, once, + [filter](const std::string &msg) { + py::gil_scoped_acquire acquire; + return filter(msg).cast(); + }); + }, + "Subscribe to a message", py::arg("name"), py::arg("handler"), + py::arg("async") = true, py::arg("once") = false, + py::arg("filter") = py::none()) + .def("unsubscribe", &MessageBus::unsubscribe, + "Unsubscribe from a message using the given token", + py::arg("token")) + .def("unsubscribe_all", &MessageBus::unsubscribeAll, + "Unsubscribe all handlers for a given message name or namespace", + py::arg("name")) + .def("get_subscriber_count", + &MessageBus::getSubscriberCount, + "Get the number of subscribers for a given message name or " + "namespace", + py::arg("name")) + .def("has_subscriber", &MessageBus::hasSubscriber, + "Check if there are any subscribers for a given message name or " + "namespace", + py::arg("name")) + .def("clear_all_subscribers", &MessageBus::clearAllSubscribers, + "Clear all subscribers") + .def("get_active_namespaces", &MessageBus::getActiveNamespaces, + "Get the list of active namespaces") + .def("get_message_history", &MessageBus::getMessageHistory, + "Get the message history for a given message name", + py::arg("name"), + py::arg("count") = MessageBus::K_MAX_HISTORY_SIZE); + + bind_message_queue(m, "StringMessageQueue"); + bind_message_queue(m, "IntMessageQueue"); + bind_message_queue(m, "DoubleMessageQueue"); + + py::class_>>(m, "ThreadSafeQueue") + .def(py::init<>()) + .def("push_back", &ThreadSafeQueue>::pushBack, + "Push a task to the back of the queue", py::arg("value")) + .def("push_front", &ThreadSafeQueue>::pushFront, + "Push a task to the front of the queue", py::arg("value")) + .def("empty", &ThreadSafeQueue>::empty, + "Check if the queue is empty") + .def("size", &ThreadSafeQueue>::size, + "Get the size of the queue") + .def("pop_front", &ThreadSafeQueue>::popFront, + "Pop a task from the front of the queue") + .def("pop_back", &ThreadSafeQueue>::popBack, + "Pop a task from the back of the queue") + .def("steal", &ThreadSafeQueue>::steal, + "Steal a task from the back of the queue") + // TODO: Implement rotateToFront + // .def("rotate_to_front", + // &ThreadSafeQueue>::rotateToFront, + // "Rotate a task to the front of the queue", py::arg("item")) + .def("copy_front_and_rotate_to_back", + &ThreadSafeQueue>::copyFrontAndRotateToBack, + "Copy the front task and rotate it to the back of the queue") + .def("clear", &ThreadSafeQueue>::clear, + "Clear the queue"); + + py::class_>(m, "ThreadPool") + .def(py::init(), "Constructor", + py::arg("number_of_threads") = std::thread::hardware_concurrency()) + .def( + "enqueue", + [](ThreadPool<> &self, py::function func) { + return self.enqueue([func]() { + py::gil_scoped_acquire acquire; + func(); + }); + }, + "Enqueue a task and return a future") + .def( + "enqueue_detach", + [](ThreadPool<> &self, py::function func) { + self.enqueueDetach([func]() { + py::gil_scoped_acquire acquire; + func(); + }); + }, + "Enqueue a task and detach it") + .def("size", &ThreadPool<>::size, + "Get the number of threads in the pool") + .def("wait_for_tasks", &ThreadPool<>::waitForTasks, + "Wait for all tasks to complete"); + + py::class_(m, "TimerTask") + .def(py::init, unsigned int, int, int>(), + py::arg("func"), py::arg("delay"), py::arg("repeatCount"), + py::arg("priority")) + .def("run", &TimerTask::run) + .def("getNextExecutionTime", &TimerTask::getNextExecutionTime) + .def("__lt__", &TimerTask::operator<) + .def_readwrite("m_func", &TimerTask::m_func) + .def_readwrite("m_delay", &TimerTask::m_delay) + .def_readwrite("m_repeatCount", &TimerTask::m_repeatCount) + .def_readwrite("m_priority", &TimerTask::m_priority) + .def_readwrite("m_nextExecutionTime", &TimerTask::m_nextExecutionTime); + + py::class_(m, "Timer") + .def(py::init<>()) + // TODO: Implement setTimeout and setInterval + // .def("setTimeout", &Timer::setTimeout>, + // py::arg("func"), py::arg("delay")) + // .def("setInterval", &Timer::setInterval>, + // py::arg("func"), py::arg("interval"), py::arg("repeatCount"), + // py::arg("priority")) + .def("now", &Timer::now) + .def("cancelAllTasks", &Timer::cancelAllTasks) + .def("pause", &Timer::pause) + .def("resume", &Timer::resume) + .def("stop", &Timer::stop) + .def("setCallback", &Timer::setCallback>, + py::arg("func")) + .def("getTaskCount", &Timer::getTaskCount); + + bind_trigger(m, "TriggerInt"); + bind_trigger(m, "TriggerString"); + bind_trigger(m, "TriggerDouble"); + bind_trigger>(m, "TriggerFunction"); + + // TODO: Implement SafeType + // bind_safe_type(m, "Int"); + // bind_safe_type(m, "String"); + // bind_safe_type(m, "Double"); + // bind_safe_type(m, "Float"); + + py::class_(m, "RateLimiterSettings") + .def(py::init(), + py::arg("max_requests") = 5, + py::arg("time_window") = std::chrono::seconds(1)) + .def_readwrite("maxRequests", &RateLimiter::Settings::maxRequests) + .def_readwrite("timeWindow", &RateLimiter::Settings::timeWindow); + + py::class_(m, "RateLimiter") + .def(py::init<>()) + .def("acquire", &RateLimiter::acquire) + .def("setFunctionLimit", &RateLimiter::setFunctionLimit) + .def("pause", &RateLimiter::pause) + .def("resume", &RateLimiter::resume) + .def("printLog", &RateLimiter::printLog) + .def("getRejectedRequests", &RateLimiter::getRejectedRequests); + + py::class_(m, "Debounce") + .def(py::init, std::chrono::milliseconds, bool, + std::optional>(), + py::arg("func"), py::arg("delay"), py::arg("leading") = false, + py::arg("maxWait") = std::nullopt) + .def("__call__", &Debounce::operator()) + .def("cancel", &Debounce::cancel) + .def("flush", &Debounce::flush) + .def("reset", &Debounce::reset) + .def("callCount", &Debounce::callCount); + + py::class_(m, "Throttle") + .def(py::init, std::chrono::milliseconds, bool, + std::optional>(), + py::arg("func"), py::arg("interval"), py::arg("leading") = false, + py::arg("maxWait") = std::nullopt) + .def("__call__", &Throttle::operator()) + .def("cancel", &Throttle::cancel) + .def("reset", &Throttle::reset) + .def("callCount", &Throttle::callCount); +} diff --git a/modules/atom.connection/CMakeLists.txt b/modules/atom.connection/CMakeLists.txt new file mode 100644 index 00000000..88045b77 --- /dev/null +++ b/modules/atom.connection/CMakeLists.txt @@ -0,0 +1,64 @@ +# CMakeLists.txt for Atom-Algorithm-Builtin +# This project is licensed under the terms of the GPL3 license. +# +# Project Name: Atom-Algorithm-Builtin +# Description: A builtin module for Atom-Algorithm +# Author: Max Qian +# License: GPL3 + +cmake_minimum_required(VERSION 3.20) +project(atom_connection C CXX) + +set(CMAKE_ATOM_CONNECTION_BUILTIN_VERSION_MAJOR 1) +set(CMAKE_ATOM_CONNECTION_BUILTIN_VERSION_MINOR 0) +set(CMAKE_ATOM_CONNECTION_BUILTIN_VERSION_RELEASE 0) + +set(ATOM_CONNECTION_BUILTIN_SOVERSION ${CMAKE_ATOM_CONNECTION_BUILTIN_VERSION_MAJOR}) +set(CMAKE_ATOM_CONNECTION_BUILTIN_VERSION_STRING "${CMAKE_ATOM_CONNECTION_BUILTIN_VERSION_MAJOR}.${CMAKE_ATOM_CONNECTION_BUILTIN_VERSION_MINOR}.${CMAKE_ATOM_CONNECTION_BUILTIN_VERSION_RELEASE}") +set(ATOM_CONNECTION_BUILTIN_VERSION ${CMAKE_ATOM_CONNECTION_BUILTIN_VERSION_MAJOR}.${CMAKE_ATOM_CONNECTION_BUILTIN_VERSION_MINOR}.${CMAKE_ATOM_CONNECTION_BUILTIN_VERSION_RELEASE}) + +# Sources +set(${PROJECT_NAME}_SOURCES + component.cpp +) + +set(${PROJECT_NAME}_LIBS + loguru + atom-component + atom-error + atom-connection + ${ZLIB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} +) + +# Build Object Library +add_library(${PROJECT_NAME}_OBJECT OBJECT) +set_property(TARGET ${PROJECT_NAME}_OBJECT PROPERTY POSITION_INDEPENDENT_CODE 1) + +target_sources(${PROJECT_NAME}_OBJECT + PRIVATE + ${${PROJECT_NAME}_SOURCES} +) + +target_link_libraries(${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) + +add_library(${PROJECT_NAME} SHARED) + +target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) +target_include_directories(${PROJECT_NAME} PUBLIC .) + +set_target_properties(${PROJECT_NAME} PROPERTIES + VERSION ${CMAKE_ATOM_CONNECTION_BUILTIN_VERSION_STRING} + SOVERSION ${ATOM_CONNECTION_BUILTIN_SOVERSION} + OUTPUT_NAME atom_ioio +) + +install(TARGETS ${PROJECT_NAME} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +) + +find_package(Python COMPONENTS Interpreter Development) +find_package(pybind11 CONFIG) + +pybind11_add_module(${PROJECT_NAME}_py pymodule.cpp) +target_link_libraries(${PROJECT_NAME}_py PRIVATE atom-connection atom-error) diff --git a/pysrc/app/__init__.py b/modules/atom.connection/component.cpp similarity index 100% rename from pysrc/app/__init__.py rename to modules/atom.connection/component.cpp diff --git a/modules/atom.connection/package.yaml b/modules/atom.connection/package.yaml new file mode 100644 index 00000000..70d0994b --- /dev/null +++ b/modules/atom.connection/package.yaml @@ -0,0 +1,28 @@ +name: atom.connection +version: 1.0.0 +description: Atom Connection Module for Lithium +license: GPL-3.0-or-later +author: Max Qian +repository: + type: git + url: https://github.com/ElementAstro/Lithium +bugs: + url: https://github.com/ElementAstro/Lithium/issues +homepage: https://github.com/ElementAstro/Lithium +keywords: + - atom + - connection + - python + - cpp +platforms: + - windows + - linux + - macos +scripts: + build: cmake --build . --config Release -- -j 4 + lint: clang-format -i src/*.cpp src/*.h +modules: + - name: connection + entry: getInstance +pymodule: + - name: atom_connection_py diff --git a/modules/atom.connection/pymodule.cpp b/modules/atom.connection/pymodule.cpp new file mode 100644 index 00000000..46505ab9 --- /dev/null +++ b/modules/atom.connection/pymodule.cpp @@ -0,0 +1,354 @@ +#include +#include +#include +#include + +#include "atom/connection/async_fifoclient.hpp" +#include "atom/connection/async_fifoserver.hpp" +#include "atom/connection/async_sockethub.hpp" +#include "atom/connection/async_udpclient.hpp" +#include "atom/connection/async_udpserver.hpp" + +#include "atom/connection/fifoclient.hpp" +#include "atom/connection/fifoserver.hpp" +#include "atom/connection/sockethub.hpp" +#if __has_include() +#include "atom/connection/sshclient.hpp" +#endif +#include "atom/connection/sshserver.hpp" +#include "atom/connection/tcpclient.hpp" +#include "atom/connection/ttybase.hpp" +#include "atom/connection/udpclient.hpp" +#include "atom/connection/udpserver.hpp" + +namespace py = pybind11; +using namespace atom::connection; + +PYBIND11_MODULE(connection, m) { + m.doc() = "Atom Connection Module"; + + py::class_(m, "FifoClient") + .def(py::init(), py::arg("fifo_path")) + .def("write", &atom::async::connection::FifoClient::write, + py::arg("data"), py::arg("timeout") = std::nullopt, + "Writes data to the FIFO with an optional timeout.") + .def("read", &atom::async::connection::FifoClient::read, + py::arg("timeout") = std::nullopt, + "Reads data from the FIFO with an optional timeout.") + .def("is_open", &atom::async::connection::FifoClient::isOpen, + "Checks if the FIFO is currently open.") + .def("close", &atom::async::connection::FifoClient::close, + "Closes the FIFO."); + + py::class_(m, "FifoServer") + .def(py::init(), py::arg("fifo_path")) + .def("start", &atom::async::connection::FifoServer::start, + "Starts the server to listen for messages.") + .def("stop", &atom::async::connection::FifoServer::stop, + "Stops the server.") + .def("is_running", &atom::async::connection::FifoServer::isRunning, + "Checks if the server is running."); + + py::class_(m, "SocketHub") + .def(py::init(), py::arg("use_ssl") = false) + .def("start", &atom::async::connection::SocketHub::start, + py::arg("port"), "Starts the socket hub on the specified port.") + .def("stop", &atom::async::connection::SocketHub::stop, + "Stops the socket hub.") + .def("add_handler", &atom::async::connection::SocketHub::addHandler, + py::arg("handler"), + "Adds a message handler for incoming messages.") + .def("add_connect_handler", + &atom::async::connection::SocketHub::addConnectHandler, + py::arg("handler"), "Adds a handler for new connections.") + .def("add_disconnect_handler", + &atom::async::connection::SocketHub::addDisconnectHandler, + py::arg("handler"), "Adds a handler for disconnections.") + .def("broadcast_message", + &atom::async::connection::SocketHub::broadcastMessage, + py::arg("message"), + "Broadcasts a message to all connected clients.") + .def("send_message_to_client", + &atom::async::connection::SocketHub::sendMessageToClient, + py::arg("client_id"), py::arg("message"), + "Sends a message to a specific client.") + .def("is_running", &atom::async::connection::SocketHub::isRunning, + "Checks if the socket hub is currently running."); + + py::class_(m, "UdpClient") + .def(py::init<>()) + .def("bind", &atom::async::connection::UdpClient::bind, py::arg("port"), + "Binds the client to a specific port for receiving data.") + .def("send", &atom::async::connection::UdpClient::send, py::arg("host"), + py::arg("port"), py::arg("data"), + "Sends data to a specified host and port.") + .def("receive", &atom::async::connection::UdpClient::receive, + py::arg("size"), py::arg("remoteHost"), py::arg("remotePort"), + py::arg("timeout") = std::chrono::milliseconds::zero(), + "Receives data from a remote host.") + .def("set_on_data_received_callback", + &atom::async::connection::UdpClient::setOnDataReceivedCallback, + py::arg("callback"), + "Sets the callback function to be called when data is received.") + .def("set_on_error_callback", + &atom::async::connection::UdpClient::setOnErrorCallback, + py::arg("callback"), + "Sets the callback function to be called when an error occurs.") + .def("start_receiving", + &atom::async::connection::UdpClient::startReceiving, + py::arg("bufferSize"), "Starts receiving data asynchronously.") + .def("stop_receiving", + &atom::async::connection::UdpClient::stopReceiving, + "Stops receiving data."); + + py::class_(m, "UdpSocketHub") + .def(py::init<>()) + .def("start", &atom::async::connection::UdpSocketHub::start, + py::arg("port"), + "Starts the UDP socket hub and binds it to the specified port.") + .def("stop", &atom::async::connection::UdpSocketHub::stop, + "Stops the UDP socket hub.") + .def("is_running", &atom::async::connection::UdpSocketHub::isRunning, + "Checks if the UDP socket hub is currently running.") + .def("add_message_handler", + &atom::async::connection::UdpSocketHub::addMessageHandler, + py::arg("handler"), + "Adds a message handler function to the UDP socket hub.") + .def("remove_message_handler", + &atom::async::connection::UdpSocketHub::removeMessageHandler, + py::arg("handler"), + "Removes a message handler function from the UDP socket hub.") + .def("send_to", &atom::async::connection::UdpSocketHub::sendTo, + py::arg("message"), py::arg("ip"), py::arg("port"), + "Sends a message to the specified IP address and port."); + + py::class_(m, "FifoClient") + .def(py::init(), py::arg("fifo_path")) + .def("write", &FifoClient::write, py::arg("data"), + py::arg("timeout") = std::nullopt, + "Writes data to the FIFO with an optional timeout.") + .def("read", &FifoClient::read, py::arg("timeout") = std::nullopt, + "Reads data from the FIFO with an optional timeout.") + .def("is_open", &FifoClient::isOpen, + "Checks if the FIFO is currently open.") + .def("close", &FifoClient::close, "Closes the FIFO."); + + py::class_(m, "FIFOServer") + .def(py::init(), py::arg("fifo_path")) + .def("send_message", &FIFOServer::sendMessage, py::arg("message"), + "Sends a message through the FIFO pipe.") + .def("start", &FIFOServer::start, "Starts the FIFO server.") + .def("stop", &FIFOServer::stop, "Stops the FIFO server.") + .def("is_running", &FIFOServer::isRunning, + "Checks if the FIFO server is running."); + + py::class_(m, "SocketHub") + .def(py::init<>()) + .def("start", &SocketHub::start, py::arg("port"), + "Starts the socket service on the specified port.") + .def("stop", &SocketHub::stop, "Stops the socket service.") + .def("add_handler", &SocketHub::addHandler, py::arg("handler"), + "Adds a message handler for incoming messages.") + .def("is_running", &SocketHub::isRunning, + "Checks if the socket service is running."); + +#if __has_include() + py::class_(m, "SSHClient") + .def(py::init(), py::arg("host"), + py::arg("port") = DEFAULT_SSH_PORT) + .def("connect", &SSHClient::connect, py::arg("username"), + py::arg("password"), py::arg("timeout") = DEFAULT_TIMEOUT, + "Connects to the SSH server with the specified username and " + "password.") + .def("is_connected", &SSHClient::isConnected, + "Checks if the SSH client is connected to the server.") + .def("disconnect", &SSHClient::disconnect, + "Disconnects from the SSH server.") + .def("execute_command", &SSHClient::executeCommand, py::arg("command"), + py::arg("output"), "Executes a single command on the SSH server.") + .def("execute_commands", &SSHClient::executeCommands, + py::arg("commands"), py::arg("output"), + "Executes multiple commands on the SSH server.") + .def("file_exists", &SSHClient::fileExists, py::arg("remote_path"), + "Checks if a file exists on the remote server.") + .def("create_directory", &SSHClient::createDirectory, + py::arg("remote_path"), py::arg("mode") = DEFAULT_MODE, + "Creates a directory on the remote server.") + .def("remove_file", &SSHClient::removeFile, py::arg("remote_path"), + "Removes a file from the remote server.") + .def("remove_directory", &SSHClient::removeDirectory, + py::arg("remote_path"), + "Removes a directory from the remote server.") + .def("list_directory", &SSHClient::listDirectory, + py::arg("remote_path"), + "Lists the contents of a directory on the remote server.") + .def("rename", &SSHClient::rename, py::arg("old_path"), + py::arg("new_path"), + "Renames a file or directory on the remote server.") + .def("get_file_info", &SSHClient::getFileInfo, py::arg("remote_path"), + py::arg("attrs"), "Retrieves file information for a remote file.") + .def("download_file", &SSHClient::downloadFile, py::arg("remote_path"), + py::arg("local_path"), "Downloads a file from the remote server.") + .def("upload_file", &SSHClient::uploadFile, py::arg("local_path"), + py::arg("remote_path"), "Uploads a file to the remote server.") + .def("upload_directory", &SSHClient::uploadDirectory, + py::arg("local_path"), py::arg("remote_path"), + "Uploads a directory to the remote server."); +#endif + + py::class_(m, "SshServer") + .def(py::init(), py::arg("config_file")) + .def("start", &SshServer::start, "Starts the SSH server.") + .def("stop", &SshServer::stop, "Stops the SSH server.") + .def("is_running", &SshServer::isRunning, + "Checks if the SSH server is running.") + .def("set_port", &SshServer::setPort, py::arg("port"), + "Sets the port on which the SSH server listens for connections.") + .def("get_port", &SshServer::getPort, + "Gets the port on which the SSH server is listening.") + .def( + "set_listen_address", &SshServer::setListenAddress, + py::arg("address"), + "Sets the address on which the SSH server listens for connections.") + .def("get_listen_address", &SshServer::getListenAddress, + "Gets the address on which the SSH server is listening.") + .def("set_host_key", &SshServer::setHostKey, py::arg("key_file"), + "Sets the host key file used for SSH connections.") + .def("get_host_key", &SshServer::getHostKey, + "Gets the path to the host key file.") + .def("set_authorized_keys", &SshServer::setAuthorizedKeys, + py::arg("key_files"), + "Sets the list of authorized public key files for user " + "authentication.") + .def("get_authorized_keys", &SshServer::getAuthorizedKeys, + "Gets the list of authorized public key files.") + .def("allow_root_login", &SshServer::allowRootLogin, py::arg("allow"), + "Enables or disables root login to the SSH server.") + .def("is_root_login_allowed", &SshServer::isRootLoginAllowed, + "Checks if root login is allowed.") + .def("set_password_authentication", + &SshServer::setPasswordAuthentication, py::arg("enable"), + "Enables or disables password authentication for the SSH server.") + .def("is_password_authentication_enabled", + &SshServer::isPasswordAuthenticationEnabled, + "Checks if password authentication is enabled.") + .def("set_subsystem", &SshServer::setSubsystem, py::arg("name"), + py::arg("command"), + "Sets a subsystem for handling a specific command.") + .def("remove_subsystem", &SshServer::removeSubsystem, py::arg("name"), + "Removes a previously set subsystem by name.") + .def("get_subsystem", &SshServer::getSubsystem, py::arg("name"), + "Gets the command associated with a subsystem by name."); + + py::class_(m, "TcpClient") + .def(py::init<>()) + .def("connect", &TcpClient::connect, py::arg("host"), py::arg("port"), + py::arg("timeout") = std::chrono::milliseconds::zero(), + "Connects to a TCP server.") + .def("disconnect", &TcpClient::disconnect, + "Disconnects from the server.") + .def("send", &TcpClient::send, py::arg("data"), + "Sends data to the server.") + .def("receive", &TcpClient::receive, py::arg("size"), + py::arg("timeout") = std::chrono::milliseconds::zero(), + "Receives data from the server.") + .def("is_connected", &TcpClient::isConnected, + "Checks if the client is connected to the server.") + .def("get_error_message", &TcpClient::getErrorMessage, + "Gets the error message in case of any error.") + .def("set_on_connected_callback", &TcpClient::setOnConnectedCallback, + py::arg("callback"), + "Sets the callback function to be called when connected to the " + "server.") + .def("set_on_disconnected_callback", + &TcpClient::setOnDisconnectedCallback, py::arg("callback"), + "Sets the callback function to be called when disconnected from " + "the server.") + .def("set_on_data_received_callback", + &TcpClient::setOnDataReceivedCallback, py::arg("callback"), + "Sets the callback function to be called when data is received " + "from the server.") + .def("set_on_error_callback", &TcpClient::setOnErrorCallback, + py::arg("callback"), + "Sets the callback function to be called when an error occurs.") + .def("start_receiving", &TcpClient::startReceiving, + py::arg("buffer_size"), "Starts receiving data from the server.") + .def("stop_receiving", &TcpClient::stopReceiving, + "Stops receiving data from the server."); + + py::class_(m, "TTYBase") + .def(py::init(), py::arg("driver_name")) + .def("read", &TTYBase::read, py::arg("buffer"), py::arg("nbytes"), + py::arg("timeout"), py::arg("nbytes_read"), + "Reads data from the TTY device.") + .def("read_section", &TTYBase::readSection, py::arg("buffer"), + py::arg("nsize"), py::arg("stop_byte"), py::arg("timeout"), + py::arg("nbytes_read"), + "Reads a section of data from the TTY until a stop byte is " + "encountered.") + .def("write", &TTYBase::write, py::arg("buffer"), py::arg("nbytes"), + py::arg("nbytes_written"), "Writes data to the TTY device.") + .def("write_string", &TTYBase::writeString, py::arg("string"), + py::arg("nbytes_written"), "Writes a string to the TTY device.") + .def("connect", &TTYBase::connect, py::arg("device"), + py::arg("bit_rate"), py::arg("word_size"), py::arg("parity"), + py::arg("stop_bits"), "Connects to the specified TTY device.") + .def("disconnect", &TTYBase::disconnect, + "Disconnects from the TTY device.") + .def("set_debug", &TTYBase::setDebug, py::arg("enabled"), + "Enables or disables debugging information.") + .def("get_error_message", &TTYBase::getErrorMessage, py::arg("code"), + "Retrieves an error message corresponding to a given TTYResponse " + "code.") + .def("get_port_fd", &TTYBase::getPortFD, + "Gets the file descriptor for the TTY port."); + + py::enum_(m, "TTYResponse") + .value("OK", TTYBase::TTYResponse::OK) + .value("ReadError", TTYBase::TTYResponse::ReadError) + .value("WriteError", TTYBase::TTYResponse::WriteError) + .value("SelectError", TTYBase::TTYResponse::SelectError) + .value("Timeout", TTYBase::TTYResponse::Timeout) + .value("PortFailure", TTYBase::TTYResponse::PortFailure) + .value("ParamError", TTYBase::TTYResponse::ParamError) + .value("Errno", TTYBase::TTYResponse::Errno) + .value("Overflow", TTYBase::TTYResponse::Overflow); + + py::class_(m, "UdpClient") + .def(py::init<>()) + .def("bind", &UdpClient::bind, py::arg("port"), + "Binds the client to a specific port for receiving data.") + .def("send", &UdpClient::send, py::arg("host"), py::arg("port"), + py::arg("data"), "Sends data to a specified host and port.") + .def("receive", &UdpClient::receive, py::arg("size"), + py::arg("remote_host"), py::arg("remote_port"), + py::arg("timeout") = std::chrono::milliseconds::zero(), + "Receives data from a remote host.") + .def("set_on_data_received_callback", + &UdpClient::setOnDataReceivedCallback, py::arg("callback"), + "Sets the callback function to be called when data is received.") + .def("set_on_error_callback", &UdpClient::setOnErrorCallback, + py::arg("callback"), + "Sets the callback function to be called when an error occurs.") + .def("start_receiving", &UdpClient::startReceiving, + py::arg("buffer_size"), "Starts receiving data asynchronously.") + .def("stop_receiving", &UdpClient::stopReceiving, + "Stops receiving data."); + + py::class_(m, "UdpSocketHub") + .def(py::init<>()) + .def("start", &UdpSocketHub::start, py::arg("port"), + "Starts the UDP socket hub and binds it to the specified port.") + .def("stop", &UdpSocketHub::stop, "Stops the UDP socket hub.") + .def("is_running", &UdpSocketHub::isRunning, + "Checks if the UDP socket hub is currently running.") + .def("add_message_handler", &UdpSocketHub::addMessageHandler, + py::arg("handler"), + "Adds a message handler function to the UDP socket hub.") + .def("remove_message_handler", &UdpSocketHub::removeMessageHandler, + py::arg("handler"), + "Removes a message handler function from the UDP socket hub.") + .def("send_to", &UdpSocketHub::sendTo, py::arg("message"), + py::arg("ip"), py::arg("port"), + "Sends a message to the specified IP address and port."); +} diff --git a/modules/atom.error/CMakeLists.txt b/modules/atom.error/CMakeLists.txt index 21d25a82..0b09c00b 100644 --- a/modules/atom.error/CMakeLists.txt +++ b/modules/atom.error/CMakeLists.txt @@ -56,3 +56,8 @@ set_target_properties(${PROJECT_NAME} PROPERTIES install(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) + +find_package(Python COMPONENTS Interpreter Development) +find_package(pybind11 CONFIG) + +pybind11_add_module(${PROJECT_NAME}_py pymodule.cpp) diff --git a/modules/atom.error/pymodule.cpp b/modules/atom.error/pymodule.cpp index f8b1eef2..85c3c32d 100644 --- a/modules/atom.error/pymodule.cpp +++ b/modules/atom.error/pymodule.cpp @@ -1,38 +1,223 @@ #include -#include #include "atom/error/error_code.hpp" +#include "atom/error/exception.hpp" namespace py = pybind11; -using namespace atom::error; -PYBIND11_MODULE(atom_io, m) { +void bind_exceptions(py::module &m) { + py::register_exception(m, "Exception"); + py::register_exception( + m, "SystemErrorException"); + py::register_exception(m, "RuntimeError"); + py::register_exception(m, "LogicError"); + py::register_exception(m, + "UnlawfulOperation"); + py::register_exception(m, "OutOfRange"); + py::register_exception(m, + "OverflowException"); + py::register_exception( + m, "UnderflowException"); + py::register_exception(m, "Unkown"); + py::register_exception( + m, "ObjectAlreadyExist"); + py::register_exception( + m, "ObjectAlreadyInitialized"); + py::register_exception(m, "ObjectNotExist"); + py::register_exception( + m, "ObjectUninitialized"); + py::register_exception(m, "SystemCollapse"); + py::register_exception(m, "NullPointer"); + py::register_exception(m, "NotFound"); + py::register_exception(m, "WrongArgument"); + py::register_exception(m, "InvalidArgument"); + py::register_exception(m, "MissingArgument"); + py::register_exception(m, "FileNotFound"); + py::register_exception(m, "FileNotReadable"); + py::register_exception(m, "FileNotWritable"); + py::register_exception(m, "FailToOpenFile"); + py::register_exception(m, "FailToCloseFile"); + py::register_exception(m, + "FailToCreateFile"); + py::register_exception(m, + "FailToDeleteFile"); + py::register_exception(m, "FailToCopyFile"); + py::register_exception(m, "FailToMoveFile"); + py::register_exception(m, "FailToReadFile"); + py::register_exception(m, "FailToWriteFile"); + py::register_exception(m, "FailToLoadDll"); + py::register_exception(m, "FailToUnloadDll"); + py::register_exception(m, + "FailToLoadSymbol"); + py::register_exception( + m, "FailToCreateProcess"); + py::register_exception( + m, "FailToTerminateProcess"); + py::register_exception(m, "JsonParseError"); + py::register_exception(m, "JsonValueError"); + py::register_exception( + m, "CurlInitializationError"); + py::register_exception(m, + "CurlRuntimeError"); +} + +PYBIND11_MODULE(error, m) { py::enum_(m, "ErrorCodeBase") .value("Success", ErrorCodeBase::Success) .value("Failed", ErrorCodeBase::Failed) - .value("Cancelled", ErrorCodeBase::Cancelled) - .export_values(); + .value("Cancelled", ErrorCodeBase::Cancelled); + + py::enum_(m, "FileError") + .value("None", FileError::None) + .value("NotFound", FileError::NotFound) + .value("OpenError", FileError::OpenError) + .value("AccessDenied", FileError::AccessDenied) + .value("ReadError", FileError::ReadError) + .value("WriteError", FileError::WriteError) + .value("PermissionDenied", FileError::PermissionDenied) + .value("ParseError", FileError::ParseError) + .value("InvalidPath", FileError::InvalidPath) + .value("FileExists", FileError::FileExists) + .value("DirectoryNotEmpty", FileError::DirectoryNotEmpty) + .value("TooManyOpenFiles", FileError::TooManyOpenFiles) + .value("DiskFull", FileError::DiskFull) + .value("LoadError", FileError::LoadError) + .value("UnLoadError", FileError::UnLoadError) + .value("LockError", FileError::LockError) + .value("FormatError", FileError::FormatError) + .value("PathTooLong", FileError::PathTooLong) + .value("FileCorrupted", FileError::FileCorrupted) + .value("UnsupportedFormat", FileError::UnsupportedFormat); py::enum_(m, "DeviceError") .value("None", DeviceError::None) - .value("NotConnected", DeviceError::NotConnected) - .value("NotFound", DeviceError::NotFound) .value("NotSpecific", DeviceError::NotSpecific) + .value("NotFound", DeviceError::NotFound) .value("NotSupported", DeviceError::NotSupported) - .value("InvalidValue", DeviceError::InvalidValue) + .value("NotConnected", DeviceError::NotConnected) .value("MissingValue", DeviceError::MissingValue) - .value("InitializationError", DeviceError::InitializationError) - .value("ResourceExhausted", DeviceError::ResourceExhausted) - .value("GotoError", DeviceError::GotoError) - .value("HomeError", DeviceError::HomeError) - .value("ParkError", DeviceError::ParkError) - .value("UnParkError", DeviceError::UnParkError) - .value("ParkedError", DeviceError::ParkedError) + .value("InvalidValue", DeviceError::InvalidValue) + .value("Busy", DeviceError::Busy) .value("ExposureError", DeviceError::ExposureError) .value("GainError", DeviceError::GainError) - .value("ISOError", DeviceError::ISOError) .value("OffsetError", DeviceError::OffsetError) + .value("ISOError", DeviceError::ISOError) .value("CoolingError", DeviceError::CoolingError) - .value("Busy", DeviceError::Busy) - .export_values(); + .value("GotoError", DeviceError::GotoError) + .value("ParkError", DeviceError::ParkError) + .value("UnParkError", DeviceError::UnParkError) + .value("ParkedError", DeviceError::ParkedError) + .value("HomeError", DeviceError::HomeError) + .value("InitializationError", DeviceError::InitializationError) + .value("ResourceExhausted", DeviceError::ResourceExhausted) + .value("FirmwareUpdateFailed", DeviceError::FirmwareUpdateFailed) + .value("CalibrationError", DeviceError::CalibrationError) + .value("Overheating", DeviceError::Overheating) + .value("PowerFailure", DeviceError::PowerFailure); + + py::enum_(m, "NetworkError") + .value("None", NetworkError::None) + .value("ConnectionLost", NetworkError::ConnectionLost) + .value("ConnectionRefused", NetworkError::ConnectionRefused) + .value("DNSLookupFailed", NetworkError::DNSLookupFailed) + .value("ProtocolError", NetworkError::ProtocolError) + .value("SSLHandshakeFailed", NetworkError::SSLHandshakeFailed) + .value("AddressInUse", NetworkError::AddressInUse) + .value("AddressNotAvailable", NetworkError::AddressNotAvailable) + .value("NetworkDown", NetworkError::NetworkDown) + .value("HostUnreachable", NetworkError::HostUnreachable) + .value("MessageTooLarge", NetworkError::MessageTooLarge) + .value("BufferOverflow", NetworkError::BufferOverflow) + .value("TimeoutError", NetworkError::TimeoutError) + .value("BandwidthExceeded", NetworkError::BandwidthExceeded) + .value("NetworkCongested", NetworkError::NetworkCongested); + + py::enum_(m, "DatabaseError") + .value("None", DatabaseError::None) + .value("ConnectionFailed", DatabaseError::ConnectionFailed) + .value("QueryFailed", DatabaseError::QueryFailed) + .value("TransactionFailed", DatabaseError::TransactionFailed) + .value("IntegrityConstraintViolation", + DatabaseError::IntegrityConstraintViolation) + .value("NoSuchTable", DatabaseError::NoSuchTable) + .value("DuplicateEntry", DatabaseError::DuplicateEntry) + .value("DataTooLong", DatabaseError::DataTooLong) + .value("DataTruncated", DatabaseError::DataTruncated) + .value("Deadlock", DatabaseError::Deadlock) + .value("LockTimeout", DatabaseError::LockTimeout) + .value("IndexOutOfBounds", DatabaseError::IndexOutOfBounds) + .value("ConnectionTimeout", DatabaseError::ConnectionTimeout) + .value("InvalidQuery", DatabaseError::InvalidQuery); + + py::enum_(m, "MemoryError") + .value("None", MemoryError::None) + .value("AllocationFailed", MemoryError::AllocationFailed) + .value("OutOfMemory", MemoryError::OutOfMemory) + .value("AccessViolation", MemoryError::AccessViolation) + .value("BufferOverflow", MemoryError::BufferOverflow) + .value("DoubleFree", MemoryError::DoubleFree) + .value("InvalidPointer", MemoryError::InvalidPointer) + .value("MemoryLeak", MemoryError::MemoryLeak) + .value("StackOverflow", MemoryError::StackOverflow) + .value("CorruptedHeap", MemoryError::CorruptedHeap); + + py::enum_(m, "UserInputError") + .value("None", UserInputError::None) + .value("InvalidInput", UserInputError::InvalidInput) + .value("OutOfRange", UserInputError::OutOfRange) + .value("MissingInput", UserInputError::MissingInput) + .value("FormatError", UserInputError::FormatError) + .value("UnsupportedType", UserInputError::UnsupportedType) + .value("InputTooLong", UserInputError::InputTooLong) + .value("InputTooShort", UserInputError::InputTooShort) + .value("InvalidCharacter", UserInputError::InvalidCharacter); + + py::enum_(m, "ConfigError") + .value("None", ConfigError::None) + .value("MissingConfig", ConfigError::MissingConfig) + .value("InvalidConfig", ConfigError::InvalidConfig) + .value("ConfigParseError", ConfigError::ConfigParseError) + .value("UnsupportedConfig", ConfigError::UnsupportedConfig) + .value("ConfigConflict", ConfigError::ConfigConflict) + .value("InvalidOption", ConfigError::InvalidOption) + .value("ConfigNotSaved", ConfigError::ConfigNotSaved) + .value("ConfigLocked", ConfigError::ConfigLocked); + + py::enum_(m, "ProcessError") + .value("None", ProcessError::None) + .value("ProcessNotFound", ProcessError::ProcessNotFound) + .value("ProcessFailed", ProcessError::ProcessFailed) + .value("ThreadCreationFailed", ProcessError::ThreadCreationFailed) + .value("ThreadJoinFailed", ProcessError::ThreadJoinFailed) + .value("ThreadTimeout", ProcessError::ThreadTimeout) + .value("DeadlockDetected", ProcessError::DeadlockDetected) + .value("ProcessTerminated", ProcessError::ProcessTerminated) + .value("InvalidProcessState", ProcessError::InvalidProcessState) + .value("InsufficientResources", ProcessError::InsufficientResources) + .value("InvalidThreadPriority", ProcessError::InvalidThreadPriority); + + py::enum_(m, "ServerError") + .value("None", ServerError::None) + .value("InvalidParameters", ServerError::InvalidParameters) + .value("InvalidFormat", ServerError::InvalidFormat) + .value("MissingParameters", ServerError::MissingParameters) + .value("RunFailed", ServerError::RunFailed) + .value("UnknownError", ServerError::UnknownError) + .value("UnknownCommand", ServerError::UnknownCommand) + .value("UnknownDevice", ServerError::UnknownDevice) + .value("UnknownDeviceType", ServerError::UnknownDeviceType) + .value("UnknownDeviceName", ServerError::UnknownDeviceName) + .value("UnknownDeviceID", ServerError::UnknownDeviceID) + .value("NetworkError", ServerError::NetworkError) + .value("TimeoutError", ServerError::TimeoutError) + .value("AuthenticationError", ServerError::AuthenticationError) + .value("PermissionDenied", ServerError::PermissionDenied) + .value("ServerOverload", ServerError::ServerOverload) + .value("MaintenanceMode", ServerError::MaintenanceMode); + + bind_exceptions(m); + + py::class_(m, "StackTrace") + .def(py::init<>()) + .def("toString", &atom::error::StackTrace::toString); } diff --git a/modules/atom.extra/CMakeLists.txt b/modules/atom.extra/CMakeLists.txt new file mode 100644 index 00000000..b96a3a07 --- /dev/null +++ b/modules/atom.extra/CMakeLists.txt @@ -0,0 +1,63 @@ +# CMakeLists.txt for Atom-Algorithm-Builtin +# This project is licensed under the terms of the GPL3 license. +# +# Project Name: Atom-Algorithm-Builtin +# Description: A builtin module for Atom-Algorithm +# Author: Max Qian +# License: GPL3 + +cmake_minimum_required(VERSION 3.20) +project(atom_extra C CXX) + +set(CMAKE_ATOM_EXTRA_BUILTIN_VERSION_MAJOR 1) +set(CMAKE_ATOM_EXTRA_BUILTIN_VERSION_MINOR 0) +set(CMAKE_ATOM_EXTRA_BUILTIN_VERSION_RELEASE 0) + +set(ATOM_EXTRA_BUILTIN_SOVERSION ${CMAKE_ATOM_EXTRA_BUILTIN_VERSION_MAJOR}) +set(CMAKE_ATOM_EXTRA_BUILTIN_VERSION_STRING "${CMAKE_ATOM_EXTRA_BUILTIN_VERSION_MAJOR}.${CMAKE_ATOM_EXTRA_BUILTIN_VERSION_MINOR}.${CMAKE_ATOM_EXTRA_BUILTIN_VERSION_RELEASE}") +set(ATOM_EXTRA_BUILTIN_VERSION ${CMAKE_ATOM_EXTRA_BUILTIN_VERSION_MAJOR}.${CMAKE_ATOM_EXTRA_BUILTIN_VERSION_MINOR}.${CMAKE_ATOM_EXTRA_BUILTIN_VERSION_RELEASE}) + +# Sources +set(${PROJECT_NAME}_SOURCES + component.cpp +) + +set(${PROJECT_NAME}_LIBS + loguru + atom-component + atom-error + ${ZLIB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} +) + +# Build Object Library +add_library(${PROJECT_NAME}_OBJECT OBJECT) +set_property(TARGET ${PROJECT_NAME}_OBJECT PROPERTY POSITION_INDEPENDENT_CODE 1) + +target_sources(${PROJECT_NAME}_OBJECT + PRIVATE + ${${PROJECT_NAME}_SOURCES} +) + +target_link_libraries(${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) + +add_library(${PROJECT_NAME} SHARED) + +target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) +target_include_directories(${PROJECT_NAME} PUBLIC .) + +set_target_properties(${PROJECT_NAME} PROPERTIES + VERSION ${CMAKE_ATOM_EXTRA_BUILTIN_VERSION_STRING} + SOVERSION ${ATOM_EXTRA_BUILTIN_SOVERSION} + OUTPUT_NAME atom_ioio +) + +install(TARGETS ${PROJECT_NAME} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +) + +find_package(Python COMPONENTS Interpreter Development) +find_package(pybind11 CONFIG) + +pybind11_add_module(${PROJECT_NAME}_py pymodule.cpp) +target_link_libraries(${PROJECT_NAME}_py PRIVATE atom-error) diff --git a/pysrc/config/__init__.py b/modules/atom.extra/component.cpp similarity index 100% rename from pysrc/config/__init__.py rename to modules/atom.extra/component.cpp diff --git a/modules/atom.extra/package.yaml b/modules/atom.extra/package.yaml new file mode 100644 index 00000000..ca482b4f --- /dev/null +++ b/modules/atom.extra/package.yaml @@ -0,0 +1,32 @@ +name: atom.extra +version: 1.0.0 +description: Atom Extra Module for Lithium +license: GPL-3.0-or-later +author: Max Qian +repository: + type: git + url: https://github.com/ElementAstro/Lithium +bugs: + url: https://github.com/ElementAstro/Lithium/issues +homepage: https://github.com/ElementAstro/Lithium +keywords: + - atom + - extra + - python + - cpp + - boost + - beast + - websocket + - http +platforms: + - windows + - linux + - macos +scripts: + build: cmake --build . --config Release -- -j 4 + lint: clang-format -i src/*.cpp src/*.h +modules: + - name: extra + entry: getInstance +pymodule: + - name: atom_extra_py diff --git a/modules/atom.extra/pymodule.cpp b/modules/atom.extra/pymodule.cpp new file mode 100644 index 00000000..b6ee8ffc --- /dev/null +++ b/modules/atom.extra/pymodule.cpp @@ -0,0 +1,819 @@ +#include +#include +#include + +#include "atom/extra/beast/http.hpp" +#include "atom/extra/beast/ws.hpp" + +#if __has_include() +#include "atom/extra/boost/charconv.hpp" +#endif +#include "atom/extra/boost/locale.hpp" +#include "atom/extra/boost/math.hpp" +#include "atom/extra/boost/regex.hpp" +#include "atom/extra/boost/system.hpp" +#include "atom/extra/boost/uuid.hpp" + +#include "atom/extra/inicpp/inicpp.hpp" + +namespace py = pybind11; +using namespace boost::numeric::ublas; +using namespace boost::system; + +PYBIND11_MODULE(extra, m) { + m.doc() = "Python bindings for Atom Extra Module"; + + + +/* + py::class_(m, "ErrorCategory") + .def("name", &error_category::name) + .def("default_error_condition", + &error_category::default_error_condition) + .def("equivalent", py::overload_cast( + &error_category::equivalent, py::const_)) + .def("equivalent", py::overload_cast( + &error_category::equivalent, py::const_)) + .def("message", + py::overload_cast(&error_category::message, py::const_)) + .def("message", py::overload_cast( + &error_category::message, py::const_)) + .def("failed", &error_category::failed); + + py::class_(m, "ErrorCondition") + .def(py::init<>()) + .def(py::init()) + .def("assign", &error_condition::assign) + .def("clear", &error_condition::clear) + .def("value", &error_condition::value) + .def("category", &error_condition::category) + .def("message", + py::overload_cast<>(&error_condition::message, py::const_)) + .def("message", py::overload_cast( + &error_condition::message, py::const_)) + .def("failed", &error_condition::failed); + + py::class_(m, "ErrorCode") + .def(py::init<>()) + .def(py::init()) + .def("assign", &error_code::assign) + .def("clear", &error_code::clear) + .def("value", &error_code::value) + .def("category", &error_code::category) + .def("default_error_condition", &error_code::default_error_condition) + .def("message", py::overload_cast<>(&error_code::message, py::const_)) + .def("message", py::overload_cast( + &error_code::message, py::const_)) + .def("failed", &error_code::failed); + + py::class_(m, "HttpClient") + .def(py::init(), py::arg("ioc"), + "Constructs an HttpClient with the given I/O context") + .def("set_default_header", &HttpClient::setDefaultHeader, + py::arg("key"), py::arg("value"), + "Sets a default header for all requests") + .def("set_timeout", &HttpClient::setTimeout, py::arg("timeout"), + "Sets the timeout duration for the HTTP operations") + .def( + "request", &HttpClient::request, + py::arg("method"), py::arg("host"), py::arg("port"), + py::arg("target"), py::arg("version") = 11, + py::arg("content_type") = "", py::arg("body") = "", + py::arg("headers") = std::unordered_map(), + "Sends a synchronous HTTP request") + .def( + "async_request", + &HttpClient::asyncRequest< + http::string_body, + std::function)>>, + py::arg("method"), py::arg("host"), py::arg("port"), + py::arg("target"), py::arg("handler"), py::arg("version") = 11, + py::arg("content_type") = "", py::arg("body") = "", + py::arg("headers") = std::unordered_map(), + "Sends an asynchronous HTTP request") + .def( + "json_request", &HttpClient::jsonRequest, py::arg("method"), + py::arg("host"), py::arg("port"), py::arg("target"), + py::arg("json_body") = json(), + py::arg("headers") = std::unordered_map(), + "Sends a synchronous HTTP request with a JSON body and returns a " + "JSON response") + .def( + "async_json_request", + &HttpClient::asyncJsonRequest< + std::function>, + py::arg("method"), py::arg("host"), py::arg("port"), + py::arg("target"), py::arg("handler"), + py::arg("json_body") = json(), + py::arg("headers") = std::unordered_map(), + "Sends an asynchronous HTTP request with a JSON body and returns a " + "JSON response") + .def("upload_file", &HttpClient::uploadFile, py::arg("host"), + py::arg("port"), py::arg("target"), py::arg("filepath"), + py::arg("field_name") = "file", "Uploads a file to the server") + .def("download_file", &HttpClient::downloadFile, py::arg("host"), + py::arg("port"), py::arg("target"), py::arg("filepath"), + "Downloads a file from the server") + .def( + "request_with_retry", + &HttpClient::requestWithRetry, py::arg("method"), + py::arg("host"), py::arg("port"), py::arg("target"), + py::arg("retry_count") = 3, py::arg("version") = 11, + py::arg("content_type") = "", py::arg("body") = "", + py::arg("headers") = std::unordered_map(), + "Sends a synchronous HTTP request with retry logic") + .def( + "batch_request", &HttpClient::batchRequest, + py::arg("requests"), + py::arg("headers") = std::unordered_map(), + "Sends multiple synchronous HTTP requests in a batch") + .def( + "async_batch_request", + &HttpClient::asyncBatchRequest>)>>, + py::arg("requests"), py::arg("handler"), + py::arg("headers") = std::unordered_map(), + "Sends multiple asynchronous HTTP requests in a batch") + .def("run_with_thread_pool", &HttpClient::runWithThreadPool, + py::arg("num_threads"), "Runs the I/O context with a thread pool") + .def("async_download_file", + &HttpClient::asyncDownloadFile< + std::function>, + py::arg("host"), py::arg("port"), py::arg("target"), + py::arg("filepath"), py::arg("handler"), + "Asynchronously downloads a file from the server"); + + py::class_(m, "WSClient") + .def(py::init(), py::arg("ioc"), + "Constructs a WSClient with the given I/O context") + .def("set_timeout", &WSClient::setTimeout, py::arg("timeout"), + "Sets the timeout duration for the WebSocket operations") + .def("set_reconnect_options", &WSClient::setReconnectOptions, + py::arg("retries"), py::arg("interval"), + "Sets the reconnection options") + .def("set_ping_interval", &WSClient::setPingInterval, + py::arg("interval"), "Sets the interval for sending ping messages") + .def("connect", &WSClient::connect, py::arg("host"), py::arg("port"), + "Connects to the WebSocket server") + .def("send", &WSClient::send, py::arg("message"), + "Sends a message to the WebSocket server") + .def("receive", &WSClient::receive, + "Receives a message from the WebSocket server") + .def("close", &WSClient::close, "Closes the WebSocket connection") + // TODO: Implement async_connect + //.def("async_connect", + // &WSClient::asyncConnect>, + // py::arg("host"), py::arg("port"), py::arg("handler"), + // "Asynchronously connects to the WebSocket server") + .def("async_send", + &WSClient::asyncSend< + std::function>, + py::arg("message"), py::arg("handler"), + "Asynchronously sends a message to the WebSocket server") + .def("async_receive", + &WSClient::asyncReceive< + std::function>, + py::arg("handler"), + "Asynchronously receives a message from the WebSocket server") + .def("async_close", + &WSClient::asyncClose>, + py::arg("handler"), + "Asynchronously closes the WebSocket connection") + .def("async_send_json", &WSClient::asyncSendJson, py::arg("jdata"), + py::arg("handler"), + "Asynchronously sends a JSON object to the WebSocket server") + .def("async_receive_json", + &WSClient::asyncReceiveJson< + std::function>, + py::arg("handler"), + "Asynchronously receives a JSON object from the WebSocket server"); + +*/ + +#if __has_include() + py::enum_(m, "NumberFormat") + .value("GENERAL", atom::extra::boost::NumberFormat::GENERAL) + .value("SCIENTIFIC", atom::extra::boost::NumberFormat::SCIENTIFIC) + .value("FIXED", atom::extra::boost::NumberFormat::FIXED) + .value("HEX", atom::extra::boost::NumberFormat::HEX); + + py::class_(m, "FormatOptions") + .def(py::init<>()) + .def_readwrite("format", &atom::extra::boost::FormatOptions::format) + .def_readwrite("precision", + &atom::extra::boost::FormatOptions::precision) + .def_readwrite("uppercase", + &atom::extra::boost::FormatOptions::uppercase) + .def_readwrite("thousands_separator", + &atom::extra::boost::FormatOptions::thousandsSeparator); + + py::class_(m, "BoostCharConv") + .def_static("int_to_string", + &atom::extra::boost::BoostCharConv::intToString, + "Convert an integer to a string", py::arg("value"), + py::arg("base") = atom::extra::boost::DEFAULT_BASE, + py::arg("options") = atom::extra::boost::FormatOptions()) + .def_static("float_to_string", + &atom::extra::boost::BoostCharConv::floatToString, + "Convert a floating-point number to a string", + py::arg("value"), + py::arg("options") = atom::extra::boost::FormatOptions()) + .def_static("string_to_int", + &atom::extra::boost::BoostCharConv::stringToInt, + "Convert a string to an integer", py::arg("str"), + py::arg("base") = atom::extra::boost::DEFAULT_BASE) + .def_static("string_to_float", + &atom::extra::boost::BoostCharConv::stringToFloat, + "Convert a string to a floating-point number", + py::arg("str")) + .def_static("to_string", + &atom::extra::boost::BoostCharConv::toString, + "Convert a value to a string", py::arg("value"), + py::arg("options") = atom::extra::boost::FormatOptions()) + .def_static("from_string", + &atom::extra::boost::BoostCharConv::fromString, + "Convert a string to a value", py::arg("str"), + py::arg("base") = atom::extra::boost::DEFAULT_BASE) + .def_static( + "special_value_to_string", + &atom::extra::boost::BoostCharConv::specialValueToString, + "Convert special floating-point values (NaN, Inf) to strings", + py::arg("value")); +#endif + + py::class_(m, "LocaleWrapper") + .def(py::init(), py::arg("locale_name") = "", + "Constructs a LocaleWrapper object with the specified locale") + .def_static("to_utf8", &atom::extra::boost::LocaleWrapper::toUtf8, + py::arg("str"), py::arg("from_charset"), + "Converts a string to UTF-8 encoding") + .def_static("from_utf8", &atom::extra::boost::LocaleWrapper::fromUtf8, + py::arg("str"), py::arg("to_charset"), + "Converts a UTF-8 encoded string to another character set") + .def_static("normalize", &atom::extra::boost::LocaleWrapper::normalize, + py::arg("str"), + py::arg("norm") = ::boost::locale::norm_default, + "Normalizes a Unicode string") + .def_static("tokenize", &atom::extra::boost::LocaleWrapper::tokenize, + py::arg("str"), py::arg("locale_name") = "", + "Tokenizes a string into words") + .def_static("translate", &atom::extra::boost::LocaleWrapper::translate, + py::arg("str"), py::arg("domain"), + py::arg("locale_name") = "", + "Translates a string to the specified locale") + .def("to_upper", &atom::extra::boost::LocaleWrapper::toUpper, + py::arg("str"), "Converts a string to uppercase") + .def("to_lower", &atom::extra::boost::LocaleWrapper::toLower, + py::arg("str"), "Converts a string to lowercase") + .def("to_title", &atom::extra::boost::LocaleWrapper::toTitle, + py::arg("str"), "Converts a string to title case") + .def("compare", &atom::extra::boost::LocaleWrapper::compare, + py::arg("str1"), py::arg("str2"), + "Compares two strings using locale-specific collation rules") + .def_static("format_date", + &atom::extra::boost::LocaleWrapper::formatDate, + py::arg("date_time"), py::arg("format"), + "Formats a date and time according to the specified format") + .def_static("format_number", + &atom::extra::boost::LocaleWrapper::formatNumber, + py::arg("number"), py::arg("precision") = 2, + "Formats a number with the specified precision") + .def_static("format_currency", + &atom::extra::boost::LocaleWrapper::formatCurrency, + py::arg("amount"), py::arg("currency"), + "Formats a currency amount"); + // TODO: Implement regex_replace + //.def_static("regex_replace", + // &atom::extra::boost::LocaleWrapper::regexReplace, + // py::arg("str"), py::arg("regex"), py::arg("format"), + // "Replaces occurrences of a regex pattern in a string with + // " "a format string") + //.def("format", &atom::extra::boost::LocaleWrapper::format, + // py::arg("format_string"), py::kwargs(), + // "Formats a string with named arguments"); + + /* + TODO: Uncomment this after fixing the Boost.Python issue + py::class_>>(m, + "UnboundedArrayInt") + .def(py::init<>()) + .def(py::init()) + .def(py::init()) + .def("resize", + (void(unbounded_array>::*)(size_t)) & + unbounded_array>::resize) + .def("resize", + (void(unbounded_array>::*)(size_t, + int)) & unbounded_array>::resize) .def("size", + &unbounded_array>::size) .def("__getitem__", + [](const unbounded_array> &a, size_t + i) { if (i >= a.size()) throw py::index_error(); return a[i]; + }) + .def("__setitem__", + [](unbounded_array> &a, size_t i, int + v) { if (i >= a.size()) throw py::index_error(); a[i] = v; + }) + .def("__len__", &unbounded_array>::size); + + py::class_>>(m, + "Matrix") .def(py::init<>()) .def(py::init()) + .def(py::init()) + .def("size1", + &matrix>::size1) + .def("size2", + &matrix>::size2) + .def("resize", + &matrix>::resize) + .def("clear", + &matrix>::clear) + .def( + "insert_element", + &matrix>::insert_element) .def("erase_element", + &matrix>::erase_element) .def("__getitem__", + [](const matrix> &m, + std::pair index) { + return m(index.first, index.second); + }) + .def("__setitem__", + [](matrix> &m, + std::pair index, + double value) { m(index.first, index.second) = value; }); + + py::class_>>(m, "Vector") + .def(py::init<>()) + .def(py::init>::size_type>()) + .def(py::init< + vector>::size_type, + const vector>::value_type &>()) + .def("size", &vector>::size) + .def("resize", &vector>::resize) + .def("clear", &vector>::clear) + .def("__getitem__", + [](const vector> &v, + vector>::size_type i) { + if (i >= v.size()) + throw py::index_error(); + return v[i]; + }) + .def("__setitem__", + [](vector> &v, + vector>::size_type i, + double val) { + if (i >= v.size()) + throw py::index_error(); + v[i] = val; + }) + .def("__len__", &vector>::size) + .def("__repr__", [](const vector> + &v) { std::ostringstream oss; oss << "Vector(["; for (size_t i = 0; i < + v.size(); ++i) { if (i > 0) oss << ", "; oss << v[i]; + } + oss << "])"; + return oss.str(); + }); + + */ + + py::class_>(m, + "SpecialFunctions") + .def_static("beta", &atom::extra::boost::SpecialFunctions::beta, + "Compute the beta function") + .def_static("gamma", + &atom::extra::boost::SpecialFunctions::gamma, + "Compute the gamma function") + .def_static("digamma", + &atom::extra::boost::SpecialFunctions::digamma, + "Compute the digamma function") + .def_static("erf", &atom::extra::boost::SpecialFunctions::erf, + "Compute the error function") + .def_static("bessel_j", + &atom::extra::boost::SpecialFunctions::besselJ, + "Compute the Bessel function of the first kind") + .def_static("legendre_p", + &atom::extra::boost::SpecialFunctions::legendreP, + "Compute the Legendre polynomial"); + + py::class_>(m, "Statistics") + .def_static("mean", &atom::extra::boost::Statistics::mean, + "Compute the mean of a dataset") + .def_static("variance", + &atom::extra::boost::Statistics::variance, + "Compute the variance of a dataset") + .def_static("skewness", + &atom::extra::boost::Statistics::skewness, + "Compute the skewness of a dataset") + .def_static("kurtosis", + &atom::extra::boost::Statistics::kurtosis, + "Compute the kurtosis of a dataset"); + + py::class_::NormalDistribution>( + m, "NormalDistribution") + .def(py::init(), py::arg("mean"), py::arg("stddev")) + .def( + "pdf", + &atom::extra::boost::Distributions::NormalDistribution::pdf, + "Compute the probability density function (PDF)") + .def( + "cdf", + &atom::extra::boost::Distributions::NormalDistribution::cdf, + "Compute the cumulative distribution function (CDF)") + .def("quantile", + &atom::extra::boost::Distributions< + double>::NormalDistribution::quantile, + "Compute the quantile (inverse CDF)"); + + py::class_::StudentTDistribution>( + m, "StudentTDistribution") + .def(py::init(), py::arg("degrees_of_freedom")) + .def("pdf", + &atom::extra::boost::Distributions< + double>::StudentTDistribution::pdf, + "Compute the probability density function (PDF)") + .def("cdf", + &atom::extra::boost::Distributions< + double>::StudentTDistribution::cdf, + "Compute the cumulative distribution function (CDF)") + .def("quantile", + &atom::extra::boost::Distributions< + double>::StudentTDistribution::quantile, + "Compute the quantile (inverse CDF)"); + + py::class_::PoissonDistribution>( + m, "PoissonDistribution") + .def(py::init(), py::arg("mean")) + .def("pdf", + &atom::extra::boost::Distributions< + double>::PoissonDistribution::pdf, + "Compute the probability density function (PDF)") + .def("cdf", + &atom::extra::boost::Distributions< + double>::PoissonDistribution::cdf, + "Compute the cumulative distribution function (CDF)"); + + py::class_< + atom::extra::boost::Distributions::ExponentialDistribution>( + m, "ExponentialDistribution") + .def(py::init(), py::arg("lambda")) + .def("pdf", + &atom::extra::boost::Distributions< + double>::ExponentialDistribution::pdf, + "Compute the probability density function (PDF)") + .def("cdf", + &atom::extra::boost::Distributions< + double>::ExponentialDistribution::cdf, + "Compute the cumulative distribution function (CDF)"); + + py::class_>( + m, "NumericalIntegration") + .def_static( + "trapezoidal", + &atom::extra::boost::NumericalIntegration::trapezoidal, + "Compute the integral of a function using the trapezoidal rule"); + + m.def("factorial", &atom::extra::boost::factorial, + "Compute the factorial of a number"); + + py::class_>(m, "Optimization") + .def_static( + "golden_section_search", + &atom::extra::boost::Optimization::goldenSectionSearch, + "Perform one-dimensional golden section search to find the minimum " + "of a function") + .def_static( + "newton_raphson", + &atom::extra::boost::Optimization::newtonRaphson, + "Perform Newton-Raphson method to find the root of a function"); + + /* + py::class_>(m, "LinearAlgebra") + .def_static( + "solve_linear_system", + &atom::extra::boost::LinearAlgebra::solveLinearSystem, + "Solve a linear system of equations Ax = b") + .def_static("determinant", + &atom::extra::boost::LinearAlgebra::determinant, + "Compute the determinant of a matrix") + .def_static("multiply", + &atom::extra::boost::LinearAlgebra::multiply, + "Multiply two matrices") + .def_static("transpose", + &atom::extra::boost::LinearAlgebra::transpose, + "Compute the transpose of a matrix"); + + */ + + py::class_>(m, "ODESolver") + .def_static("runge_kutta4", + &atom::extra::boost::ODESolver::rungeKutta4, + "Solve an ODE using the 4th order Runge-Kutta method"); + + py::class_>(m, "FinancialMath") + .def_static( + "black_scholes_call", + &atom::extra::boost::FinancialMath::blackScholesCall, + "Compute the price of a European call option using the " + "Black-Scholes formula") + .def_static( + "modified_duration", + &atom::extra::boost::FinancialMath::modifiedDuration, + "Compute the modified duration of a bond") + .def_static("bond_price", + &atom::extra::boost::FinancialMath::bondPrice, + "Compute the price of a bond") + .def_static( + "implied_volatility", + &atom::extra::boost::FinancialMath::impliedVolatility, + "Compute the implied volatility of an option"); + + py::class_(m, "RegexWrapper") + .def(py::init(), + py::arg("pattern"), + py::arg("flags") = ::boost::regex_constants::normal) + .def("match", &atom::extra::boost::RegexWrapper::match, + "Match the given string against the regex pattern", py::arg("str")) + .def("search", &atom::extra::boost::RegexWrapper::search, + "Search the given string for the first match of the regex pattern", + py::arg("str")) + .def("search_all", + &atom::extra::boost::RegexWrapper::searchAll, + "Search the given string for all matches of the regex pattern", + py::arg("str")) + .def("replace", + &atom::extra::boost::RegexWrapper::replace, + "Replace all matches of the regex pattern in the given string " + "with the replacement string", + py::arg("str"), py::arg("replacement")) + .def("split", &atom::extra::boost::RegexWrapper::split, + "Split the given string by the regex pattern", py::arg("str")) + // TODO: Uncomment this after fixing the issue + // .def("match_groups", + // &atom::extra::boost::RegexWrapper::matchGroups, + // "Match the given string and return the groups of each match", + // py::arg("str")) + //.def("for_each_match", + // &atom::extra::boost::RegexWrapper::forEachMatch< + // std::string, std::function>, + // "Apply a function to each match of the regex pattern in the given " + // "string", + // py::arg("str"), py::arg("func")) + .def("get_pattern", &atom::extra::boost::RegexWrapper::getPattern, + "Get the regex pattern as a string") + .def("set_pattern", &atom::extra::boost::RegexWrapper::setPattern, + "Set a new regex pattern with optional flags", py::arg("pattern"), + py::arg("flags") = ::boost::regex_constants::normal) + .def("named_captures", + &atom::extra::boost::RegexWrapper::namedCaptures, + "Match the given string and return the named captures", + py::arg("str")) + .def("is_valid", + &atom::extra::boost::RegexWrapper::isValid, + "Check if the given string is a valid match for the regex pattern", + py::arg("str")) + .def("replace_callback", + &atom::extra::boost::RegexWrapper::replaceCallback, + "Replace all matches of the regex pattern in the given string " + "using a callback function", + py::arg("str"), py::arg("callback")) + .def_static("escape_string", + &atom::extra::boost::RegexWrapper::escapeString, + "Escape special characters in the given string for use in " + "a regex pattern", + py::arg("str")) + .def("benchmark_match", + &atom::extra::boost::RegexWrapper::benchmarkMatch, + "Benchmark the match operation for the given string over a number " + "of iterations", + py::arg("str"), py::arg("iterations") = 1000) + .def_static( + "is_valid_regex", &atom::extra::boost::RegexWrapper::isValidRegex, + "Check if the given regex pattern is valid", py::arg("pattern")); + + py::class_(m, "Error") + .def(py::init<>(), "Default constructor") + .def(py::init(), + py::arg("error_code"), + "Constructs an Error from a Boost.System error code") + .def(py::init(), + py::arg("error_value"), py::arg("error_category"), + "Constructs an Error from an error value and category") + .def("value", &atom::extra::boost::Error::value, "Gets the error value") + .def("category", &atom::extra::boost::Error::category, + "Gets the error category") + .def("message", &atom::extra::boost::Error::message, + "Gets the error message") + .def("__bool__", &atom::extra::boost::Error::operator bool, + "Checks if the error code is valid") + .def("to_boost_error_code", + &atom::extra::boost::Error::toBoostErrorCode, + "Converts to a Boost.System error code") + .def("__eq__", &atom::extra::boost::Error::operator==, + "Equality operator") + .def("__ne__", &atom::extra::boost::Error::operator!=, + "Inequality operator"); + + py::class_(m, "Exception") + .def(py::init(), py::arg("error"), + "Constructs an Exception from an Error") + .def("error", &atom::extra::boost::Exception::error, + "Gets the associated Error"); + + /* + py::class_>(m, "ResultVoid") + .def(py::init<>(), "Default constructor") + .def(py::init(), py::arg("error"), + "Constructs a Result with an Error") .def("has_value", + &atom::extra::boost::Result::hasValue, "Checks if the Result has a + value") .def("error", + py::overload_cast<>(&atom::extra::boost::Result::error, + py::const_), "Gets the associated Error") .def("__bool__", + &atom::extra::boost::Result::operator bool, "Checks if the Result + has a value"); + + py::class_>(m, "ResultString") + .def(py::init(), py::arg("value"), "Constructs a Result + with a value") .def(py::init(), + py::arg("error"), "Constructs a Result with an Error") .def("has_value", + &atom::extra::boost::Result::hasValue, "Checks if the Result + has a value") .def("value", + py::overload_cast<>(&atom::extra::boost::Result::value, + py::const_), "Gets the result value") .def("error", + py::overload_cast<>(&atom::extra::boost::Result::error, + py::const_), "Gets the associated Error") .def("__bool__", + &atom::extra::boost::Result::operator bool, "Checks if the + Result has a value"); + + m.def("make_result", [](const std::function& func) { + return atom::extra::boost::makeResult(func); + }, "Creates a Result from a function"); + */ + + py::class_(m, "UUID") + .def(py::init<>(), + "Default constructor that generates a random UUID (v4)") + .def(py::init(), py::arg("str"), + "Constructs a UUID from a string representation") + .def(py::init(), py::arg("uuid"), + "Constructs a UUID from a Boost.UUID object") + .def("to_string", &atom::extra::boost::UUID::toString, + "Converts the UUID to a string representation") + .def("is_nil", &atom::extra::boost::UUID::isNil, + "Checks if the UUID is nil (all zeros)") + .def("__eq__", &atom::extra::boost::UUID::operator==, + "Checks if this UUID is equal to another UUID") + .def( + "__lt__", + [](const atom::extra::boost::UUID &self, + const atom::extra::boost::UUID &other) { return self < other; }, + "Less than comparison for UUIDs") + .def( + "__le__", + [](const atom::extra::boost::UUID &self, + const atom::extra::boost::UUID &other) { return self <= other; }, + "Less than or equal comparison for UUIDs") + .def( + "__gt__", + [](const atom::extra::boost::UUID &self, + const atom::extra::boost::UUID &other) { return self > other; }, + "Greater than comparison for UUIDs") + .def( + "__ge__", + [](const atom::extra::boost::UUID &self, + const atom::extra::boost::UUID &other) { return self >= other; }, + "Greater than or equal comparison for UUIDs") + .def("format", &atom::extra::boost::UUID::format, + "Formats the UUID as a string enclosed in curly braces") + .def("to_bytes", &atom::extra::boost::UUID::toBytes, + "Converts the UUID to a vector of bytes") + .def_static("from_bytes", &atom::extra::boost::UUID::fromBytes, + py::arg("bytes"), "Constructs a UUID from a span of bytes") + .def("to_uint64", &atom::extra::boost::UUID::toUint64, + "Converts the UUID to a 64-bit unsigned integer") + .def_static("namespace_dns", &atom::extra::boost::UUID::namespaceDNS, + "Gets the DNS namespace UUID") + .def_static("namespace_url", &atom::extra::boost::UUID::namespaceURL, + "Gets the URL namespace UUID") + .def_static("namespace_oid", &atom::extra::boost::UUID::namespaceOID, + "Gets the OID namespace UUID") + .def_static("v3", &atom::extra::boost::UUID::v3, + py::arg("namespace_uuid"), py::arg("name"), + "Generates a version 3 (MD5) UUID based on a namespace " + "UUID and a name") + .def_static("v5", &atom::extra::boost::UUID::v5, + py::arg("namespace_uuid"), py::arg("name"), + "Generates a version 5 (SHA-1) UUID based on a namespace " + "UUID and a name") + .def("version", &atom::extra::boost::UUID::version, + "Gets the version of the UUID") + .def("variant", &atom::extra::boost::UUID::variant, + "Gets the variant of the UUID") + .def_static("v1", &atom::extra::boost::UUID::v1, + "Generates a version 1 (timestamp-based) UUID") + .def_static("v4", &atom::extra::boost::UUID::v4, + "Generates a version 4 (random) UUID") + .def("to_base64", &atom::extra::boost::UUID::toBase64, + "Converts the UUID to a Base64 string representation") + .def("get_timestamp", &atom::extra::boost::UUID::getTimestamp, + "Gets the timestamp from a version 1 UUID") + .def( + "__hash__", + [](const atom::extra::boost::UUID &self) { + return std::hash()(self); + }, + "Hash function for UUIDs"); + + py::class_>>(m, "IniFile") + .def(py::init<>(), "Default constructor") + .def(py::init(), py::arg("filename"), + "Constructs an IniFileBase from a file") + .def(py::init(), py::arg("iss"), + "Constructs an IniFileBase from an input stream") + .def("set_field_sep", &inicpp::IniFileBase>::setFieldSep, + py::arg("sep"), "Sets the field separator character") + .def("set_comment_prefixes", + &inicpp::IniFileBase>::setCommentPrefixes, + py::arg("comment_prefixes"), "Sets the comment prefixes") + .def("set_escape_char", + &inicpp::IniFileBase>::setEscapeChar, py::arg("esc"), + "Sets the escape character") + .def("set_multi_line_values", + &inicpp::IniFileBase>::setMultiLineValues, + py::arg("enable"), "Enables or disables multi-line values") + .def("allow_overwrite_duplicate_fields", + &inicpp::IniFileBase>::allowOverwriteDuplicateFields, + py::arg("allowed"), + "Allows or disallows overwriting duplicate fields") + .def("decode", + py::overload_cast( + &inicpp::IniFileBase>::decode), + py::arg("iss"), "Decodes an INI file from an input stream") + .def("decode", + py::overload_cast( + &inicpp::IniFileBase>::decode), + py::arg("content"), "Decodes an INI file from a string") + .def("load", &inicpp::IniFileBase>::load, + py::arg("file_name"), + "Loads and decodes an INI file from a file path") + // .def("encode", py::overload_cast(&inicpp::IniFileBase>::encode, py::const_), + // py::arg("oss"), "Encodes the INI file to an output stream") + .def("encode", + py::overload_cast<>(&inicpp::IniFileBase>::encode, + py::const_), + "Encodes the INI file to a string and returns it") + .def("save", &inicpp::IniFileBase>::save, + py::arg("file_name"), "Saves the INI file to a given file path"); + + py::class_>( + m, "IniFileCaseInsensitive") + .def(py::init<>(), "Default constructor") + .def(py::init(), py::arg("filename"), + "Constructs an IniFileBase from a file") + .def(py::init(), py::arg("iss"), + "Constructs an IniFileBase from an input stream") + .def("set_field_sep", + &inicpp::IniFileBase::setFieldSep, + py::arg("sep"), "Sets the field separator character") + .def("set_comment_prefixes", + &inicpp::IniFileBase< + inicpp::StringInsensitiveLess>::setCommentPrefixes, + py::arg("comment_prefixes"), "Sets the comment prefixes") + .def("set_escape_char", + &inicpp::IniFileBase::setEscapeChar, + py::arg("esc"), "Sets the escape character") + .def("set_multi_line_values", + &inicpp::IniFileBase< + inicpp::StringInsensitiveLess>::setMultiLineValues, + py::arg("enable"), "Enables or disables multi-line values") + .def("allow_overwrite_duplicate_fields", + &inicpp::IniFileBase< + inicpp::StringInsensitiveLess>::allowOverwriteDuplicateFields, + py::arg("allowed"), + "Allows or disallows overwriting duplicate fields") + .def("decode", + py::overload_cast( + &inicpp::IniFileBase::decode), + py::arg("iss"), "Decodes an INI file from an input stream") + .def("decode", + py::overload_cast( + &inicpp::IniFileBase::decode), + py::arg("content"), "Decodes an INI file from a string") + .def("load", &inicpp::IniFileBase::load, + py::arg("file_name"), + "Loads and decodes an INI file from a file path") + // .def("encode", py::overload_cast(&inicpp::IniFileBase::encode, + // py::const_), py::arg("oss"), "Encodes the INI file to an output + // stream") + .def("encode", + py::overload_cast<>( + &inicpp::IniFileBase::encode, + py::const_), + "Encodes the INI file to a string and returns it") + .def("save", &inicpp::IniFileBase::save, + py::arg("file_name"), "Saves the INI file to a given file path"); +} diff --git a/modules/atom.io/CMakeLists.txt b/modules/atom.io/CMakeLists.txt index 3ef8ce76..0d7bce4a 100644 --- a/modules/atom.io/CMakeLists.txt +++ b/modules/atom.io/CMakeLists.txt @@ -7,7 +7,7 @@ # License: GPL3 cmake_minimum_required(VERSION 3.20) -project(atom.io C CXX) +project(atom_ioio C CXX) set(CMAKE_ATOM_IO_BUILTIN_VERSION_MAJOR 1) set(CMAKE_ATOM_IO_BUILTIN_VERSION_MINOR 0) @@ -50,9 +50,14 @@ target_include_directories(${PROJECT_NAME} PUBLIC .) set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${CMAKE_ATOM_IO_BUILTIN_VERSION_STRING} SOVERSION ${ATOM_IO_BUILTIN_SOVERSION} - OUTPUT_NAME atom.io + OUTPUT_NAME atom_ioio ) install(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) + +find_package(Python COMPONENTS Interpreter Development) +find_package(pybind11 CONFIG) + +pybind11_add_module(${PROJECT_NAME}_py pymodule.cpp) diff --git a/modules/atom.io/component.cpp b/modules/atom.io/component.cpp index d87685b2..ba154630 100644 --- a/modules/atom.io/component.cpp +++ b/modules/atom.io/component.cpp @@ -14,53 +14,71 @@ using namespace atom::io; ATOM_MODULE(atom_io, [](Component &component) { DLOG_F(INFO, "Loading module {}", component.getName()); - component.def("compress", &compressFile, "Compress a file"); - component.def("decompress", &decompressFile, "Decompress a file"); - component.def("create_zip", &createZip, "Create a zip file"); - component.def("extract_zip", &extractZip, "Extract a zip file"); - component.def("compress_folder", &compressFolder, "Compress a folder"); + component.def("compress", &compressFile, "compression", "Compress a file"); + component.def("decompress", &decompressFile, "compression", + "Decompress a file"); + component.def("create_zip", &createZip, "compression", "Create a zip file"); + component.def("extract_zip", &extractZip, "compression", + "Extract a zip file"); + component.def("compress_folder", &compressFolder, "compression", + "Compress a folder"); - component.def("translate", &translate, "Translate a pattern"); - component.def("compile_pattern", &compilePattern, "Compile a pattern"); - component.def("fnmatch", &fnmatch, "Check if a name matches a pattern"); - component.def("filter", &filter, "Filter a list of names"); - component.def("expand_tilde", &expandTilde, "Expand a tilde"); - component.def("has_magic", &hasMagic, "Check if a pattern has magic"); - component.def("is_hidden", &isHidden, "Check if a path is hidden"); - component.def("is_recursive", &isRecursive, + component.def("translate", &translate, "pattern_matching", + "Translate a pattern"); + component.def("compile_pattern", &compilePattern, "pattern_matching", + "Compile a pattern"); + component.def("fnmatch", &fnmatch, "pattern_matching", + "Check if a name matches a pattern"); + component.def("filter", &filter, "pattern_matching", + "Filter a list of names"); + component.def("expand_tilde", &expandTilde, "path_operations", + "Expand a tilde"); + component.def("has_magic", &hasMagic, "pattern_matching", + "Check if a pattern has magic"); + component.def("is_hidden", &isHidden, "path_operations", + "Check if a path is hidden"); + component.def("is_recursive", &isRecursive, "pattern_matching", "Check if a pattern is recursive"); - component.def("iter_dir", &iterDirectory, "Iterate a directory"); - component.def("rlistdir", &rlistdir, "Recursively list a directory"); + component.def("iter_dir", &iterDirectory, "directory_operations", + "Iterate a directory"); + component.def("rlistdir", &rlistdir, "directory_operations", + "Recursively list a directory"); component.def("glob_s", atom::meta::overload_cast(glob), - "Glob a list of files"); + "pattern_matching", "Glob a list of files"); component.def( "glob_v", atom::meta::overload_cast &>(glob), - "Glob a list of files"); - component.def("rglob", &rglob, + "pattern_matching", "Glob a list of files"); + component.def("rglob", &rglob, "pattern_matching", "Recursively glob a list of files"); - component.def("glob0", &glob0, "Glob0 a list of files"); - component.def("glob1", &glob1, "Glob1 a list of files"); - component.def("glob2", &glob2, "Glob2 a list of files"); + component.def("glob0", &glob0, "pattern_matching", "Glob0 a list of files"); + component.def("glob1", &glob1, "pattern_matching", "Glob1 a list of files"); + component.def("glob2", &glob2, "pattern_matching", "Glob2 a list of files"); component.def( "mkdir", [](const std::string &path) -> bool { return createDirectory(path); }, - "Create a directory"); + "directory_operations", "Create a directory"); component.def("mkdir_r", &createDirectoriesRecursive, - "Create a directory recursively"); - component.def("rmdir", &removeDirectory, "Remove a directory"); + "directory_operations", "Create a directory recursively"); + component.def("rmdir", &removeDirectory, "directory_operations", + "Remove a directory"); component.def("rmdir_r", &removeDirectoriesRecursive, - "Remove a directory recursively"); - component.def("move", &moveDirectory, "Move a directory"); - component.def("rename", &renameDirectory, "Rename a directory"); - component.def("copy", ©File, "Copy a file"); - component.def("move_file", &moveFile, "Move a file"); - component.def("rename_file", &renameFile, "Rename a file"); - component.def("remove", &removeFile, "Remove a file"); - component.def("mksymlink", &createSymlink, "Create a symbolic link"); - component.def("rmsymlink", &removeSymlink, "Remove a symbolic link"); + "directory_operations", "Remove a directory recursively"); + component.def("move", &moveDirectory, "directory_operations", + "Move a directory"); + component.def("rename", &renameDirectory, "directory_operations", + "Rename a directory"); + component.def("copy", ©File, "file_operations", "Copy a file"); + component.def("move_file", &moveFile, "file_operations", "Move a file"); + component.def("rename_file", &renameFile, "file_operations", + "Rename a file"); + component.def("remove", &removeFile, "file_operations", "Remove a file"); + component.def("mksymlink", &createSymlink, "file_operations", + "Create a symbolic link"); + component.def("rmsymlink", &removeSymlink, "file_operations", + "Remove a symbolic link"); DLOG_F(INFO, "Loaded module {}", component.getName()); }); diff --git a/modules/atom.io/package.json b/modules/atom.io/package.json index fc0abc8d..e0b6eb68 100644 --- a/modules/atom.io/package.json +++ b/modules/atom.io/package.json @@ -1,7 +1,6 @@ { "name": "atom.io", "version": "1.0.0", - "type": "shared", "description": "Atom IO Module", "license": "GPL-3.0-or-later", "author": "Max Qian", @@ -10,19 +9,15 @@ "url": "https://github.com/ElementAstro/Lithium" }, "bugs": { - "type": "git", "url": "https://github.com/ElementAstro/Lithium/issues" }, - "homepage": { - "type": "git", - "url": "https://github.com/ElementAstro/Lithium" - }, + "homepage": "https://github.com/ElementAstro/Lithium", "keywords": [ "lithium", "config" ], "scripts": { - "build": "cmake --build-type=Release -- -j 4", + "build": "cmake --build . --config Release -- -j 4", "lint": "clang-format -i src/*.cpp src/*.h" }, "modules": [ diff --git a/modules/atom.io/pymodule.cpp b/modules/atom.io/pymodule.cpp index e4dd4421..1d96c12e 100644 --- a/modules/atom.io/pymodule.cpp +++ b/modules/atom.io/pymodule.cpp @@ -1,54 +1,461 @@ #include +#include +#include "atom/io/async_compress.hpp" +#include "atom/io/async_glob.hpp" +#include "atom/io/async_io.hpp" #include "atom/io/compress.hpp" #include "atom/io/glob.hpp" #include "atom/io/io.hpp" +#include "atom/io/pushd.hpp" namespace py = pybind11; -using namespace atom::io; - -PYBIND11_MODULE(atom_io, m) { - m.def("compress", &compressFile, "Compress a file"); - m.def("decompress", &decompressFile, "Decompress a file"); - m.def("create_zip", &createZip, "Create a zip file"); - m.def("extract_zip", &extractZip, "Extract a zip file"); - m.def("compress_folder", &compressFolder, "Compress a folder"); - - m.def("translate", &translate, "Translate a pattern"); - m.def("compile_pattern", &compilePattern, "Compile a pattern"); - m.def("fnmatch", &fnmatch, "Check if a name matches a pattern"); - m.def("filter", &filter, "Filter a list of names"); - m.def("expand_tilde", &expandTilde, "Expand a tilde"); - m.def("has_magic", &hasMagic, "Check if a pattern has magic"); - m.def("is_hidden", &isHidden, "Check if a path is hidden"); - m.def("is_recursive", &isRecursive, "Check if a pattern is recursive"); - m.def("iter_dir", &iterDirectory, "Iterate a directory"); - m.def("rlistdir", &rlistdir, "Recursively list a directory"); - m.def("glob_s", atom::meta::overload_cast(glob), - "Glob a list of files"); - m.def("glob_v", - atom::meta::overload_cast &>(glob), - "Glob a list of files"); - m.def("rglob", &rglob, "Recursively glob a list of files"); - m.def("glob0", &glob0, "Glob0 a list of files"); - m.def("glob1", &glob1, "Glob1 a list of files"); - m.def("glob2", &glob2, "Glob2 a list of files"); - - m.def( - "mkdir", - [](const std::string &path) -> bool { return createDirectory(path); }, - "Create a directory"); - m.def("mkdir_r", &createDirectoriesRecursive, - "Create a directory recursively"); - m.def("rmdir", &removeDirectory, "Remove a directory"); - m.def("rmdir_r", &removeDirectoriesRecursive, - "Remove a directory recursively"); - m.def("move", &moveDirectory, "Move a directory"); - m.def("rename", &renameDirectory, "Rename a directory"); - m.def("copy", ©File, "Copy a file"); - m.def("move_file", &moveFile, "Move a file"); - m.def("rename_file", &renameFile, "Rename a file"); - m.def("remove", &removeFile, "Remove a file"); - m.def("mksymlink", &createSymlink, "Create a symbolic link"); - m.def("rmsymlink", &removeSymlink, "Remove a symbolic link"); + +PYBIND11_MODULE(io, m) { + m.doc() = "Python bindings for Atom IO Module"; + + py::enum_(m, "path_type") + .value("NOT_EXISTS", atom::io::PathType::NOT_EXISTS) + .value("REGULAR_FILE", atom::io::PathType::REGULAR_FILE) + .value("DIRECTORY", atom::io::PathType::DIRECTORY) + .value("SYMLINK", atom::io::PathType::SYMLINK) + .value("OTHER", atom::io::PathType::OTHER); + + py::class_(m, + "create_directories_options") + .def(py::init<>()) + .def_readwrite("verbose", &atom::io::CreateDirectoriesOptions::verbose) + .def_readwrite("dry_run", &atom::io::CreateDirectoriesOptions::dryRun) + .def_readwrite("delay", &atom::io::CreateDirectoriesOptions::delay) + .def_readwrite("filter", &atom::io::CreateDirectoriesOptions::filter) + .def_readwrite("on_create", + &atom::io::CreateDirectoriesOptions::onCreate) + .def_readwrite("on_delete", + &atom::io::CreateDirectoriesOptions::onDelete); + + // TODO: Implement the following functions + // m.def("create_directory", + // py::overload_cast(&atom::io::createDirectory), + // "Create a directory", py::arg("path"), py::arg("root_dir") = ""); + + m.def("create_directories_recursive", &atom::io::createDirectoriesRecursive, + "Create directories recursively", py::arg("base_path"), + py::arg("subdirs"), py::arg("options")); + + m.def("remove_directory", &atom::io::removeDirectory, "Remove a directory", + py::arg("path")); + + m.def("remove_directories_recursive", &atom::io::removeDirectoriesRecursive, + "Remove directories recursively", py::arg("base_path"), + py::arg("subdirs"), + py::arg("options") = atom::io::CreateDirectoriesOptions()); + + m.def("rename_directory", &atom::io::renameDirectory, "Rename a directory", + py::arg("old_path"), py::arg("new_path")); + + m.def("move_directory", &atom::io::moveDirectory, "Move a directory", + py::arg("old_path"), py::arg("new_path")); + + m.def("copy_file", &atom::io::copyFile, "Copy a file", py::arg("src_path"), + py::arg("dst_path")); + + m.def("move_file", &atom::io::moveFile, "Move a file", py::arg("src_path"), + py::arg("dst_path")); + + m.def("rename_file", &atom::io::renameFile, "Rename a file", + py::arg("old_path"), py::arg("new_path")); + + m.def("remove_file", &atom::io::removeFile, "Remove a file", + py::arg("path")); + + m.def("create_symlink", &atom::io::createSymlink, "Create a symbolic link", + py::arg("target_path"), py::arg("symlink_path")); + + m.def("remove_symlink", &atom::io::removeSymlink, "Remove a symbolic link", + py::arg("path")); + + m.def("file_size", &atom::io::fileSize, "Get the size of a file", + py::arg("path")); + + m.def("truncate_file", &atom::io::truncateFile, "Truncate a file", + py::arg("path"), py::arg("size")); + + m.def("jwalk", &atom::io::jwalk, "Recursively walk through a directory", + py::arg("root")); + + m.def("fwalk", &atom::io::fwalk, "Recursively walk through a directory", + py::arg("root"), py::arg("callback")); + + m.def("convert_to_linux_path", &atom::io::convertToLinuxPath, + "Convert Windows path to Linux path", py::arg("windows_path")); + + m.def("convert_to_windows_path", &atom::io::convertToWindowsPath, + "Convert Linux path to Windows path", py::arg("linux_path")); + + m.def("norm_path", &atom::io::normPath, "Normalize a path", + py::arg("raw_path")); + + m.def("is_folder_name_valid", &atom::io::isFolderNameValid, + "Check if the folder name is valid", py::arg("folder_name")); + + m.def("is_file_name_valid", &atom::io::isFileNameValid, + "Check if the file name is valid", py::arg("file_name")); + + m.def("is_folder_exists", &atom::io::isFolderExists, + "Check if the folder exists", py::arg("folder_name")); + + m.def("is_file_exists", &atom::io::isFileExists, "Check if the file exists", + py::arg("file_name")); + + m.def("is_folder_empty", &atom::io::isFolderEmpty, + "Check if the folder is empty", py::arg("folder_name")); + + m.def("is_absolute_path", &atom::io::isAbsolutePath, + "Check if the path is an absolute path", py::arg("path")); + + m.def("change_working_directory", &atom::io::changeWorkingDirectory, + "Change the working directory", py::arg("directory_path")); + + m.def("get_file_times", &atom::io::getFileTimes, "Get the file times", + py::arg("file_path")); + + py::enum_(m, "file_option") + .value("PATH", atom::io::FileOption::PATH) + .value("NAME", atom::io::FileOption::NAME); + + m.def("check_file_type_in_folder", &atom::io::checkFileTypeInFolder, + "Check the file type in the folder", py::arg("folder_path"), + py::arg("file_types"), py::arg("file_option")); + + m.def("is_executable_file", &atom::io::isExecutableFile, + "Check whether the specified file exists", py::arg("file_name"), + py::arg("file_ext")); + + m.def("get_file_size", &atom::io::getFileSize, "Get the file size", + py::arg("file_path")); + + m.def("calculate_chunk_size", &atom::io::calculateChunkSize, + "Calculate the chunk size", py::arg("file_size"), + py::arg("num_chunks")); + + m.def("split_file", &atom::io::splitFile, + "Split a file into multiple parts", py::arg("file_path"), + py::arg("chunk_size"), py::arg("output_pattern") = ""); + + m.def("merge_files", &atom::io::mergeFiles, + "Merge multiple parts into a single file", + py::arg("output_file_path"), py::arg("part_files")); + + m.def("quick_split", &atom::io::quickSplit, + "Quickly split a file into multiple parts", py::arg("file_path"), + py::arg("num_chunks"), py::arg("output_pattern") = ""); + + m.def("quick_merge", &atom::io::quickMerge, + "Quickly merge multiple parts into a single file", + py::arg("output_file_path"), py::arg("part_pattern"), + py::arg("num_chunks")); + + m.def("get_executable_name_from_path", &atom::io::getExecutableNameFromPath, + "Get the executable name from the path", py::arg("path")); + + m.def("check_path_type", &atom::io::checkPathType, "Get the file type", + py::arg("path")); + + m.def("count_lines_in_file", &atom::io::countLinesInFile, + "Count lines in a file", py::arg("file_path")); + + m.def("search_executable_files", &atom::io::searchExecutableFiles, + "Search executable files", py::arg("dir"), py::arg("search_str")); + + m.def("compress_file", &atom::io::compressFile, "Compress a single file", + py::arg("file_name"), py::arg("output_folder")); + + m.def("decompress_file", &atom::io::decompressFile, + "Decompress a single file", py::arg("file_name"), + py::arg("output_folder")); + + m.def("compress_folder", &atom::io::compressFolder, + "Compress all files in a specified directory", + py::arg("folder_name")); + + m.def("extract_zip", &atom::io::extractZip, "Extract a single ZIP file", + py::arg("zip_file"), py::arg("destination_folder")); + + m.def("create_zip", &atom::io::createZip, "Create a ZIP file", + py::arg("source_folder"), py::arg("zip_file"), + py::arg("compression_level") = -1); + + m.def("list_files_in_zip", &atom::io::listFilesInZip, + "List files in a ZIP file", py::arg("zip_file")); + + m.def("file_exists_in_zip", &atom::io::fileExistsInZip, + "Check if a specified file exists in a ZIP file", py::arg("zip_file"), + py::arg("file_name")); + + m.def("remove_file_from_zip", &atom::io::removeFileFromZip, + "Remove a specified file from a ZIP file", py::arg("zip_file"), + py::arg("file_name")); + + m.def("get_zip_file_size", &atom::io::getZipFileSize, + "Get the size of a file in a ZIP file", py::arg("zip_file")); + + py::class_(m, "DirectoryStack") + .def(py::init(), py::arg("io_context")) + .def("async_pushd", &atom::io::DirectoryStack::asyncPushd, + "Push the current directory onto the stack and change to the " + "specified directory asynchronously", + py::arg("new_dir"), py::arg("handler")) + .def("async_popd", &atom::io::DirectoryStack::asyncPopd, + "Pop the directory from the stack and change back to it " + "asynchronously", + py::arg("handler")) + .def("peek", &atom::io::DirectoryStack::peek, + "View the top directory in the stack without changing to it") + .def("dirs", &atom::io::DirectoryStack::dirs, + "Display the current stack of directories") + .def("clear", &atom::io::DirectoryStack::clear, + "Clear the directory stack") + .def("swap", &atom::io::DirectoryStack::swap, + "Swap two directories in the stack given their indices", + py::arg("index1"), py::arg("index2")) + .def("remove", &atom::io::DirectoryStack::remove, + "Remove a directory from the stack at the specified index", + py::arg("index")) + .def("async_goto_index", &atom::io::DirectoryStack::asyncGotoIndex, + "Change to the directory at the specified index in the stack " + "asynchronously", + py::arg("index"), py::arg("handler")) + .def("async_save_stack_to_file", + &atom::io::DirectoryStack::asyncSaveStackToFile, + "Save the directory stack to a file asynchronously", + py::arg("filename"), py::arg("handler")) + .def("async_load_stack_from_file", + &atom::io::DirectoryStack::asyncLoadStackFromFile, + "Load the directory stack from a file asynchronously", + py::arg("filename"), py::arg("handler")) + .def("size", &atom::io::DirectoryStack::size, + "Get the size of the directory stack") + .def("is_empty", &atom::io::DirectoryStack::isEmpty, + "Check if the directory stack is empty") + .def("async_get_current_directory", + &atom::io::DirectoryStack::asyncGetCurrentDirectory, + "Get the current directory path asynchronously", + py::arg("handler")); + + m.def("string_replace", &atom::io::stringReplace, + "Replace a substring in a string", py::arg("str"), py::arg("from"), + py::arg("to_str")); + + m.def("translate", &atom::io::translate, + "Translate a pattern to a regex string", py::arg("pattern")); + + m.def("compile_pattern", &atom::io::compilePattern, + "Compile a pattern to a regex", py::arg("pattern")); + + m.def("fnmatch", &atom::io::fnmatch, "Match a filename against a pattern", + py::arg("name"), py::arg("pattern")); + + m.def("filter", &atom::io::filter, + "Filter a list of names against a pattern", py::arg("names"), + py::arg("pattern")); + + m.def("expand_tilde", &atom::io::expandTilde, "Expand tilde in a path", + py::arg("path")); + + m.def("has_magic", &atom::io::hasMagic, + "Check if a pathname contains any magic characters", + py::arg("pathname")); + + m.def("is_hidden", &atom::io::isHidden, "Check if a pathname is hidden", + py::arg("pathname")); + + m.def("is_recursive", &atom::io::isRecursive, + "Check if a pattern is recursive", py::arg("pattern")); + + m.def("iter_directory", &atom::io::iterDirectory, + "Iterate over a directory", py::arg("dirname"), py::arg("dironly")); + + m.def("rlistdir", &atom::io::rlistdir, "Recursively list a directory", + py::arg("dirname"), py::arg("dironly")); + + m.def("glob2", &atom::io::glob2, "Recursive glob", py::arg("dirname"), + py::arg("pattern"), py::arg("dironly")); + + m.def("glob1", &atom::io::glob1, "Non-recursive glob", py::arg("dirname"), + py::arg("pattern"), py::arg("dironly")); + + m.def("glob0", &atom::io::glob0, "Glob with no magic", py::arg("dirname"), + py::arg("basename"), py::arg("dironly")); + + m.def("glob", + py::overload_cast(&atom::io::glob), + "Glob with pathname", py::arg("pathname"), + py::arg("recursive") = false, py::arg("dironly") = false); + + m.def("glob", + py::overload_cast &>(&atom::io::glob), + "Glob with pathnames", py::arg("pathnames")); + + m.def("rglob", py::overload_cast(&atom::io::rglob), + "Recursive glob with pathname", py::arg("pathname")); + + m.def("rglob", + py::overload_cast &>(&atom::io::rglob), + "Recursive glob with pathnames", py::arg("pathnames")); + + m.def("glob", + py::overload_cast &>( + &atom::io::glob), + "Glob with initializer list", py::arg("pathnames")); + + m.def("rglob", + py::overload_cast &>( + &atom::io::rglob), + "Recursive glob with initializer list", py::arg("pathnames")); + + py::class_(m, "BaseCompressor") + .def("start", &atom::async::io::BaseCompressor::start, + "Start the compression process"); + + py::class_(m, "SingleFileCompressor") + .def(py::init(), + py::arg("io_context"), py::arg("input_file"), + py::arg("output_file")) + .def("start", &atom::async::io::SingleFileCompressor::start, + "Start the compression process"); + + py::class_(m, "DirectoryCompressor") + .def(py::init(), + py::arg("io_context"), py::arg("input_dir"), + py::arg("output_file")) + .def("start", &atom::async::io::DirectoryCompressor::start, + "Start the compression process"); + + py::class_(m, "BaseDecompressor") + .def("start", &atom::async::io::BaseDecompressor::start, + "Start the decompression process"); + + py::class_(m, "SingleFileDecompressor") + .def(py::init(), + py::arg("io_context"), py::arg("input_file"), + py::arg("output_folder")) + .def("start", &atom::async::io::SingleFileDecompressor::start, + "Start the decompression process"); + + py::class_(m, "DirectoryDecompressor") + .def(py::init(), + py::arg("io_context"), py::arg("input_dir"), + py::arg("output_folder")) + .def("start", &atom::async::io::DirectoryDecompressor::start, + "Start the decompression process"); + + py::class_(m, "ZipOperation") + .def("start", &atom::async::io::ZipOperation::start, + "Start the ZIP operation"); + + py::class_( + m, "ListFilesInZip") + .def(py::init(), + py::arg("io_context"), py::arg("zip_file")) + .def("start", &atom::async::io::ListFilesInZip::start, + "Start the ZIP operation") + .def("get_file_list", &atom::async::io::ListFilesInZip::getFileList, + "Get the list of files in the ZIP archive"); + + py::class_( + m, "FileExistsInZip") + .def(py::init(), + py::arg("io_context"), py::arg("zip_file"), py::arg("file_name")) + .def("start", &atom::async::io::FileExistsInZip::start, + "Start the ZIP operation") + .def("found", &atom::async::io::FileExistsInZip::found, + "Check if the file was found in the ZIP archive"); + + py::class_(m, "RemoveFileFromZip") + .def(py::init(), + py::arg("io_context"), py::arg("zip_file"), py::arg("file_name")) + .def("start", &atom::async::io::RemoveFileFromZip::start, + "Start the ZIP operation") + .def("is_successful", &atom::async::io::RemoveFileFromZip::isSuccessful, + "Check if the file removal was successful"); + + py::class_( + m, "GetZipFileSize") + .def(py::init(), + py::arg("io_context"), py::arg("zip_file")) + .def("start", &atom::async::io::GetZipFileSize::start, + "Start the ZIP operation") + .def("get_size_value", &atom::async::io::GetZipFileSize::getSizeValue, + "Get the size of the ZIP file"); + + py::class_(m, "AsyncGlob") + .def(py::init(), py::arg("io_context")) + .def("glob", &atom::io::AsyncGlob::glob, + "Perform a glob operation to match files", py::arg("pathname"), + py::arg("callback"), py::arg("recursive") = false, + py::arg("dironly") = false); + + py::class_(m, "AsyncFile") + .def(py::init(), py::arg("io_context")) + .def("async_read", &atom::async::io::AsyncFile::asyncRead, + "Asynchronously read the content of a file", py::arg("filename"), + py::arg("callback")) + .def("async_write", &atom::async::io::AsyncFile::asyncWrite, + "Asynchronously write content to a file", py::arg("filename"), + py::arg("content"), py::arg("callback")) + .def("async_delete", &atom::async::io::AsyncFile::asyncDelete, + "Asynchronously delete a file", py::arg("filename"), + py::arg("callback")) + .def("async_copy", &atom::async::io::AsyncFile::asyncCopy, + "Asynchronously copy a file", py::arg("src"), py::arg("dest"), + py::arg("callback")) + .def("async_read_with_timeout", + &atom::async::io::AsyncFile::asyncReadWithTimeout, + "Asynchronously read the content of a file with a timeout", + py::arg("filename"), py::arg("timeoutMs"), py::arg("callback")) + .def("async_batch_read", &atom::async::io::AsyncFile::asyncBatchRead, + "Asynchronously read the content of multiple files", + py::arg("files"), py::arg("callback")) + .def("async_stat", &atom::async::io::AsyncFile::asyncStat, + "Asynchronously retrieve the status of a file", + py::arg("filename"), py::arg("callback")) + .def("async_move", &atom::async::io::AsyncFile::asyncMove, + "Asynchronously move a file", py::arg("src"), py::arg("dest"), + py::arg("callback")) + .def("async_change_permissions", + &atom::async::io::AsyncFile::asyncChangePermissions, + "Asynchronously change the permissions of a file", + py::arg("filename"), py::arg("perms"), py::arg("callback")) + .def("async_create_directory", + &atom::async::io::AsyncFile::asyncCreateDirectory, + "Asynchronously create a directory", py::arg("path"), + py::arg("callback")) + .def("async_exists", &atom::async::io::AsyncFile::asyncExists, + "Asynchronously check if a file exists", py::arg("filename"), + py::arg("callback")); + + py::class_(m, "AsyncDirectory") + .def(py::init(), py::arg("io_context")) + .def("async_create", &atom::async::io::AsyncDirectory::asyncCreate, + "Asynchronously create a directory", py::arg("path"), + py::arg("callback")) + .def("async_remove", &atom::async::io::AsyncDirectory::asyncRemove, + "Asynchronously remove a directory", py::arg("path"), + py::arg("callback")) + .def("async_list_contents", + &atom::async::io::AsyncDirectory::asyncListContents, + "Asynchronously list the contents of a directory", py::arg("path"), + py::arg("callback")) + .def("async_exists", &atom::async::io::AsyncDirectory::asyncExists, + "Asynchronously check if a directory exists", py::arg("path"), + py::arg("callback")); } diff --git a/modules/atom.search/pymodule.cpp b/modules/atom.search/pymodule.cpp new file mode 100644 index 00000000..8882a4df --- /dev/null +++ b/modules/atom.search/pymodule.cpp @@ -0,0 +1,177 @@ +#include +#include + +#include "atom/search/cache.hpp" +#include "atom/search/lru.hpp" +#include "atom/search/search.hpp" + +namespace py = pybind11; +using namespace atom::search; + +template +void bind_resource_cache(py::module &m, const std::string &name) { + py::class_>(m, name.c_str()) + .def(py::init(), "Constructor", py::arg("max_size")) + .def("insert", &ResourceCache::insert, + "Insert a resource into the cache with an expiration time", + py::arg("key"), py::arg("value"), py::arg("expiration_time")) + .def("contains", &ResourceCache::contains, + "Check if the cache contains a resource with the specified key", + py::arg("key")) + .def("get", &ResourceCache::get, + "Retrieve a resource from the cache", py::arg("key")) + .def("remove", &ResourceCache::remove, + "Remove a resource from the cache", py::arg("key")) + .def("async_get", &ResourceCache::asyncGet, + "Asynchronously retrieve a resource from the cache", + py::arg("key")) + .def("async_insert", &ResourceCache::asyncInsert, + "Asynchronously insert a resource into the cache with an " + "expiration time", + py::arg("key"), py::arg("value"), py::arg("expiration_time")) + .def("clear", &ResourceCache::clear, + "Clear all resources from the cache") + .def("size", &ResourceCache::size, + "Get the number of resources in the cache") + .def("empty", &ResourceCache::empty, "Check if the cache is empty") + .def("evict_oldest", &ResourceCache::evictOldest, + "Evict the oldest resource from the cache") + .def("is_expired", &ResourceCache::isExpired, + "Check if a resource with the specified key is expired", + py::arg("key")) + .def("async_load", &ResourceCache::asyncLoad, + "Asynchronously load a resource into the cache using a provided " + "function", + py::arg("key"), py::arg("load_data_function")) + .def("set_max_size", &ResourceCache::setMaxSize, + "Set the maximum size of the cache", py::arg("max_size")) + .def("set_expiration_time", &ResourceCache::setExpirationTime, + "Set the expiration time for a resource in the cache", + py::arg("key"), py::arg("expiration_time")) + .def("read_from_file", &ResourceCache::readFromFile, + "Read resources from a file and insert them into the cache", + py::arg("file_path"), py::arg("deserializer")) + .def("write_to_file", &ResourceCache::writeToFile, + "Write the resources in the cache to a file", py::arg("file_path"), + py::arg("serializer")) + .def("remove_expired", &ResourceCache::removeExpired, + "Remove expired resources from the cache") + .def("read_from_json_file", &ResourceCache::readFromJsonFile, + "Read resources from a JSON file and insert them into the cache", + py::arg("file_path"), py::arg("from_json")) + .def("write_to_json_file", &ResourceCache::writeToJsonFile, + "Write the resources in the cache to a JSON file", + py::arg("file_path"), py::arg("to_json")) + .def("insert_batch", &ResourceCache::insertBatch, + "Insert multiple resources into the cache with an expiration time", + py::arg("items"), py::arg("expiration_time")) + .def("remove_batch", &ResourceCache::removeBatch, + "Remove multiple resources from the cache", py::arg("keys")) + .def("on_insert", &ResourceCache::onInsert, + "Register a callback to be called on insertion", + py::arg("callback")) + .def("on_remove", &ResourceCache::onRemove, + "Register a callback to be called on removal", py::arg("callback")) + .def("get_statistics", &ResourceCache::getStatistics, + "Retrieve cache statistics"); +} + +template +void bind_thread_safe_lru_cache(py::module &m, const std::string &name) { + py::class_>(m, name.c_str()) + .def(py::init(), "Constructor", py::arg("max_size")) + .def("get", &ThreadSafeLRUCache::get, + "Retrieve a value from the cache", py::arg("key")) + .def("put", &ThreadSafeLRUCache::put, + "Insert or update a value in the cache", py::arg("key"), + py::arg("value"), py::arg("ttl") = std::nullopt) + .def("erase", &ThreadSafeLRUCache::erase, + "Erase an item from the cache", py::arg("key")) + .def("clear", &ThreadSafeLRUCache::clear, + "Clear all items from the cache") + .def("keys", &ThreadSafeLRUCache::keys, + "Retrieve all keys in the cache") + .def("pop_lru", &ThreadSafeLRUCache::popLru, + "Remove and return the least recently used item") + .def("resize", &ThreadSafeLRUCache::resize, + "Resize the cache to a new maximum size", py::arg("new_max_size")) + .def("size", &ThreadSafeLRUCache::size, + "Get the current size of the cache") + .def("load_factor", &ThreadSafeLRUCache::loadFactor, + "Get the current load factor of the cache") + .def("set_insert_callback", + &ThreadSafeLRUCache::setInsertCallback, + "Set the callback function to be called when a new item is " + "inserted", + py::arg("callback")) + .def("set_erase_callback", + &ThreadSafeLRUCache::setEraseCallback, + "Set the callback function to be called when an item is erased", + py::arg("callback")) + .def("set_clear_callback", + &ThreadSafeLRUCache::setClearCallback, + "Set the callback function to be called when the cache is cleared", + py::arg("callback")) + .def("hit_rate", &ThreadSafeLRUCache::hitRate, + "Get the hit rate of the cache") + .def("save_to_file", &ThreadSafeLRUCache::saveToFile, + "Save the cache contents to a file", py::arg("filename")) + .def("load_from_file", &ThreadSafeLRUCache::loadFromFile, + "Load cache contents from a file", py::arg("filename")); +} + +PYBIND11_MODULE(search, m) { + m.doc() = "Search engine module"; + + bind_resource_cache(m, "StringResourceCache"); + bind_resource_cache(m, "IntResourceCache"); + bind_resource_cache(m, "DoubleResourceCache"); + + bind_thread_safe_lru_cache(m, "StringLRUCache"); + bind_thread_safe_lru_cache(m, "IntLRUCache"); + bind_thread_safe_lru_cache(m, "IntDoubleLRUCache"); + bind_thread_safe_lru_cache(m, "IntStringLRUCache"); + bind_thread_safe_lru_cache(m, "StringIntLRUCache"); + bind_thread_safe_lru_cache(m, "StringDoubleLRUCache"); + + py::register_exception( + m, "DocumentNotFoundException"); + + py::class_(m, "Document") + .def(py::init>(), + py::arg("id"), py::arg("content"), py::arg("tags")) + .def_readwrite("id", &Document::id) + .def_readwrite("content", &Document::content) + .def_readwrite("tags", &Document::tags) + .def_readwrite("click_count", &Document::clickCount); + + py::class_(m, "SearchEngine") + .def(py::init<>()) + .def("add_document", &SearchEngine::addDocument, + "Add a document to the search engine", py::arg("doc")) + .def("remove_document", &SearchEngine::removeDocument, + "Remove a document from the search engine", py::arg("doc_id")) + .def("update_document", &SearchEngine::updateDocument, + "Update an existing document in the search engine", py::arg("doc")) + .def("search_by_tag", &SearchEngine::searchByTag, + "Search for documents by a specific tag", py::arg("tag")) + .def("fuzzy_search_by_tag", &SearchEngine::fuzzySearchByTag, + "Perform a fuzzy search for documents by a tag with a specified " + "tolerance", + py::arg("tag"), py::arg("tolerance")) + .def("search_by_tags", &SearchEngine::searchByTags, + "Search for documents by multiple tags", py::arg("tags")) + .def("search_by_content", &SearchEngine::searchByContent, + "Search for documents by content", py::arg("query")) + .def("boolean_search", &SearchEngine::booleanSearch, + "Perform a boolean search for documents by a query", + py::arg("query")) + .def("auto_complete", &SearchEngine::autoComplete, + "Provide autocomplete suggestions for a given prefix", + py::arg("prefix")) + .def("save_index", &SearchEngine::saveIndex, + "Save the current index to a file", py::arg("filename")) + .def("load_index", &SearchEngine::loadIndex, + "Load the index from a file", py::arg("filename")); +} diff --git a/modules/atom.sysinfo/CMakeLists.txt b/modules/atom.sysinfo/CMakeLists.txt index 3e839543..135d11f1 100644 --- a/modules/atom.sysinfo/CMakeLists.txt +++ b/modules/atom.sysinfo/CMakeLists.txt @@ -1,14 +1,11 @@ -# CMakeLists.txt for atom.sysinfo +# CMakeLists.txt for atom_iosysinfo # This project is licensed under the terms of the GPL3 license. # # Author: Max Qian # License: GPL3 cmake_minimum_required(VERSION 3.20) -project(atom.sysinfo) - -# Set the C++ standard -set(CMAKE_CXX_STANDARD 20) +project(atom_iosysinfo) # Add source files set(SOURCE_FILES @@ -24,8 +21,8 @@ set(${PROJECT_NAME}_LIBS ) # Create the module library -add_library(atom.sysinfo SHARED ${SOURCE_FILES}) +add_library(atom_iosysinfo SHARED ${SOURCE_FILES}) -target_link_libraries(atom.sysinfo ${${PROJECT_NAME}_LIBS}) +target_link_libraries(atom_iosysinfo ${${PROJECT_NAME}_LIBS}) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) diff --git a/modules/atom.sysinfo/component.cpp b/modules/atom.sysinfo/component.cpp index 36e9beed..9752d6ff 100644 --- a/modules/atom.sysinfo/component.cpp +++ b/modules/atom.sysinfo/component.cpp @@ -63,11 +63,11 @@ ATOM_MODULE(atom_io, [](Component &component) { component.defType("memory_info"); component.defType("memory_slot"); - component.def_v("memory_slot_type", &MemoryInfo::MemorySlot::type, + component.def("memory_slot_type", &MemoryInfo::MemorySlot::type, "memory_slot", "Get memory slot type"); - component.def_v("memory_slot_capacity", &MemoryInfo::MemorySlot::capacity, + component.def("memory_slot_capacity", &MemoryInfo::MemorySlot::capacity, "memory_slot", "Get memory slot capacity"); - component.def_v("memory_slot_clock_speed", + component.def("memory_slot_clock_speed", &MemoryInfo::MemorySlot::clockSpeed, "memory_slot", "Get memory slot clock speed"); diff --git a/modules/atom.sysinfo/pymodule.cpp b/modules/atom.sysinfo/pymodule.cpp index 66eeafbc..667ab960 100644 --- a/modules/atom.sysinfo/pymodule.cpp +++ b/modules/atom.sysinfo/pymodule.cpp @@ -1,13 +1,16 @@ #include #include "atom/sysinfo/battery.hpp" +#include "atom/sysinfo/bios.hpp" #include "atom/sysinfo/cpu.hpp" #include "atom/sysinfo/disk.hpp" #include "atom/sysinfo/gpu.hpp" +#include "atom/sysinfo/locale.hpp" #include "atom/sysinfo/memory.hpp" #include "atom/sysinfo/os.hpp" #include "atom/sysinfo/sn.hpp" #include "atom/sysinfo/wifi.hpp" +#include "atom/sysinfo/wm.hpp" namespace py = pybind11; using namespace atom::system; @@ -15,25 +18,35 @@ using namespace atom::system; PYBIND11_MODULE(atom_io, m) { // CPU m.def("cpu_usage", &getCurrentCpuUsage, "Get current CPU usage percentage"); - m.def("cpu_temperature", &getCurrentCpuTemperature, "Get current CPU temperature"); + m.def("cpu_temperature", &getCurrentCpuTemperature, + "Get current CPU temperature"); m.def("cpu_model", &getCPUModel, "Get CPU model name"); m.def("cpu_identifier", &getProcessorIdentifier, "Get CPU identifier"); m.def("cpu_frequency", &getProcessorFrequency, "Get current CPU frequency"); - m.def("physical_packages", &getNumberOfPhysicalPackages, "Get number of physical CPU packages"); - m.def("logical_cpus", &getNumberOfPhysicalCPUs, "Get number of logical CPUs"); + m.def("physical_packages", &getNumberOfPhysicalPackages, + "Get number of physical CPU packages"); + m.def("logical_cpus", &getNumberOfPhysicalCPUs, + "Get number of logical CPUs"); m.def("cache_sizes", &getCacheSizes, "Get CPU cache sizes"); // Memory - m.def("memory_usage", &getMemoryUsage, "Get current memory usage percentage"); + m.def("memory_usage", &getMemoryUsage, + "Get current memory usage percentage"); m.def("total_memory", &getTotalMemorySize, "Get total memory size"); - m.def("available_memory", &getAvailableMemorySize, "Get available memory size"); - m.def("physical_memory_info", &getPhysicalMemoryInfo, "Get physical memory slot info"); - m.def("virtual_memory_max", &getVirtualMemoryMax, "Get virtual memory max size"); - m.def("virtual_memory_used", &getVirtualMemoryUsed, "Get virtual memory used size"); - m.def("swap_memory_total", &getSwapMemoryTotal, "Get swap memory total size"); + m.def("available_memory", &getAvailableMemorySize, + "Get available memory size"); + m.def("physical_memory_info", &getPhysicalMemoryInfo, + "Get physical memory slot info"); + m.def("virtual_memory_max", &getVirtualMemoryMax, + "Get virtual memory max size"); + m.def("virtual_memory_used", &getVirtualMemoryUsed, + "Get virtual memory used size"); + m.def("swap_memory_total", &getSwapMemoryTotal, + "Get swap memory total size"); m.def("swap_memory_used", &getSwapMemoryUsed, "Get swap memory used size"); m.def("committed_memory", &getCommittedMemory, "Get committed memory"); - m.def("uncommitted_memory", &getUncommittedMemory, "Get uncommitted memory"); + m.def("uncommitted_memory", &getUncommittedMemory, + "Get uncommitted memory"); py::class_(m, "MemoryInfo"); py::class_(m, "MemorySlot") @@ -48,25 +61,35 @@ PYBIND11_MODULE(atom_io, m) { // Disk m.def("disk_usage", &getDiskUsage, "Get current disk usage percentage"); m.def("get_drive_model", &getDriveModel, "Get drive model"); - m.def("storage_device_models", &getStorageDeviceModels, "Get storage device models"); + m.def("storage_device_models", &getStorageDeviceModels, + "Get storage device models"); m.def("available_drives", &getAvailableDrives, "Get available drives"); - m.def("calculate_disk_usage_percentage", &calculateDiskUsagePercentage, "Calculate disk usage percentage"); + m.def("calculate_disk_usage_percentage", &calculateDiskUsagePercentage, + "Calculate disk usage percentage"); m.def("file_system_type", &getFileSystemType, "Get file system type"); // OS - m.def("get_os_info", &getOperatingSystemInfo, "Get operating system information"); + m.def("get_os_info", &getOperatingSystemInfo, + "Get operating system information"); m.def("is_wsl", &isWsl, "Check if running in WSL"); py::class_(m, "OperatingSystemInfo"); // SN - m.def("get_bios_serial_number", &HardwareInfo::getBiosSerialNumber, "Get bios serial number"); - m.def("get_motherboard_serial_number", &HardwareInfo::getMotherboardSerialNumber, "Get motherboard serial number"); - m.def("get_cpu_serial_number", &HardwareInfo::getCpuSerialNumber, "Get cpu serial number"); - m.def("get_disk_serial_numbers", &HardwareInfo::getDiskSerialNumbers, "Get disk serial numbers"); + m.def("get_bios_serial_number", &HardwareInfo::getBiosSerialNumber, + "Get bios serial number"); + m.def("get_motherboard_serial_number", + &HardwareInfo::getMotherboardSerialNumber, + "Get motherboard serial number"); + m.def("get_cpu_serial_number", &HardwareInfo::getCpuSerialNumber, + "Get cpu serial number"); + m.def("get_disk_serial_numbers", &HardwareInfo::getDiskSerialNumbers, + "Get disk serial numbers"); // Wifi - m.def("is_hotspot_connected", &isHotspotConnected, "Check if the hotspot is connected"); - m.def("wired_network", &getCurrentWiredNetwork, "Get current wired network"); + m.def("is_hotspot_connected", &isHotspotConnected, + "Check if the hotspot is connected"); + m.def("wired_network", &getCurrentWiredNetwork, + "Get current wired network"); m.def("wifi_name", &getCurrentWifi, "Get current wifi name"); m.def("current_ip", &getHostIPs, "Get current IP address"); m.def("ipv4_addresses", &getIPv4Addresses, "Get IPv4 addresses"); @@ -74,5 +97,55 @@ PYBIND11_MODULE(atom_io, m) { m.def("interface_names", &getInterfaceNames, "Get interface names"); // GPU - m.def("gpu_info", &getGPUInfo, "Get GPU info"); + m.def("get_gpu_info", &getGPUInfo, "Get GPU information"); + + py::class_(m, "MonitorInfo") + .def(py::init<>()) + .def_readwrite("model", &MonitorInfo::model) + .def_readwrite("identifier", &MonitorInfo::identifier) + .def_readwrite("width", &MonitorInfo::width) + .def_readwrite("height", &MonitorInfo::height) + .def_readwrite("refresh_rate", &MonitorInfo::refreshRate); + + m.def("get_all_monitors_info", &getAllMonitorsInfo, + "Get all monitors information"); + + py::class_(m, "SystemInfo") + .def(py::init<>()) + .def_readwrite("desktop_environment", &SystemInfo::desktopEnvironment) + .def_readwrite("window_manager", &SystemInfo::windowManager) + .def_readwrite("wm_theme", &SystemInfo::wmTheme) + .def_readwrite("icons", &SystemInfo::icons) + .def_readwrite("font", &SystemInfo::font) + .def_readwrite("cursor", &SystemInfo::cursor); + + m.def("get_system_info", &getSystemInfo, "Get system information"); + + py::class_(m, "BiosInfoData") + .def(py::init<>()) + .def_readwrite("version", &BiosInfoData::version) + .def_readwrite("manufacturer", &BiosInfoData::manufacturer) + .def_readwrite("release_date", &BiosInfoData::releaseDate); + + m.def("get_bios_info", &getBiosInfo, "Get BIOS information"); + + py::class_(m, "LocaleInfo") + .def(py::init<>()) + .def_readwrite("language_code", &LocaleInfo::languageCode) + .def_readwrite("country_code", &LocaleInfo::countryCode) + .def_readwrite("locale_name", &LocaleInfo::localeName) + .def_readwrite("language_display_name", + &LocaleInfo::languageDisplayName) + .def_readwrite("country_display_name", &LocaleInfo::countryDisplayName) + .def_readwrite("currency_symbol", &LocaleInfo::currencySymbol) + .def_readwrite("decimal_symbol", &LocaleInfo::decimalSymbol) + .def_readwrite("thousand_separator", &LocaleInfo::thousandSeparator) + .def_readwrite("date_format", &LocaleInfo::dateFormat) + .def_readwrite("time_format", &LocaleInfo::timeFormat) + .def_readwrite("character_encoding", &LocaleInfo::characterEncoding); + + m.def("get_system_language_info", &getSystemLanguageInfo, + "Get system language information"); + m.def("print_locale_info", &printLocaleInfo, "Print locale information", + py::arg("info")); } diff --git a/modules/atom.system/CMakeLists.txt b/modules/atom.system/CMakeLists.txt index cb69732e..360dd148 100644 --- a/modules/atom.system/CMakeLists.txt +++ b/modules/atom.system/CMakeLists.txt @@ -7,7 +7,7 @@ # License: GPL3 cmake_minimum_required(VERSION 3.20) -project(atom.system C CXX) +project(atom_iosystem C CXX) set(CMAKE_ATOM_SYSTEM_BUILTIN_VERSION_MAJOR 1) set(CMAKE_ATOM_SYSTEM_BUILTIN_VERSION_MINOR 0) diff --git a/modules/atom.system/pymodule.cpp b/modules/atom.system/pymodule.cpp new file mode 100644 index 00000000..d6363de2 --- /dev/null +++ b/modules/atom.system/pymodule.cpp @@ -0,0 +1,542 @@ +#include +#include + +#include "atom/system/command.hpp" +#include "atom/system/crash.hpp" +#include "atom/system/crash_quotes.hpp" +#include "atom/system/device.hpp" +#include "atom/system/env.hpp" +#include "atom/system/lregistry.hpp" +#include "atom/system/network_manager.hpp" +#include "atom/system/pidwatcher.hpp" +#include "atom/system/power.hpp" +#include "atom/system/priority.hpp" +#include "atom/system/process_info.hpp" +#include "atom/system/process_manager.hpp" +#include "atom/system/software.hpp" +#include "atom/system/stat.hpp" +#include "atom/system/user.hpp" +#include "atom/system/wregistry.hpp" + +namespace py = pybind11; +using namespace atom::system; +using namespace atom::utils; + +PYBIND11_MODULE(system, m) { + m.def("execute_command", &executeCommand, py::arg("command"), + py::arg("openTerminal") = false, + py::arg("processLine") = py::cpp_function([](const std::string &) {}), + "Execute a command and return the command output as a string."); + + m.def("execute_command_with_input", &executeCommandWithInput, + py::arg("command"), py::arg("input"), + py::arg("processLine") = nullptr, + "Execute a command with input and return the command output as a " + "string."); + + m.def( + "execute_command_stream", &executeCommandStream, py::arg("command"), + py::arg("openTerminal"), py::arg("processLine"), py::arg("status"), + py::arg("terminateCondition") = py::cpp_function([] { return false; }), + "Execute a command and return the command output as a string."); + + m.def("execute_commands", &executeCommands, py::arg("commands"), + "Execute a list of commands."); + + m.def("kill_process_by_name", &killProcessByName, py::arg("processName"), + py::arg("signal"), "Kill a process by its name."); + + m.def("kill_process_by_pid", &killProcessByPID, py::arg("pid"), + py::arg("signal"), "Kill a process by its PID."); + + m.def("execute_command_with_env", &executeCommandWithEnv, + py::arg("command"), py::arg("envVars"), + "Execute a command with environment variables and return the command " + "output as a string."); + + m.def("execute_command_with_status", &executeCommandWithStatus, + py::arg("command"), + "Execute a command and return the command output along with the exit " + "status."); + + m.def("execute_command_simple", &executeCommandSimple, py::arg("command"), + "Execute a command and return a boolean indicating whether the " + "command was successful."); + + m.def("start_process", &startProcess, py::arg("command"), + "Start a process and return the process ID and handle."); + + py::class_(m, "Quote") + .def(py::init(), py::arg("text"), + py::arg("author")) + .def("get_text", &Quote::getText) + .def("get_author", &Quote::getAuthor) + .def("__repr__", [](const Quote &q) { + return ""; + }); + + py::class_(m, "QuoteManager") + .def(py::init<>()) + .def("add_quote", &QuoteManager::addQuote) + .def("remove_quote", &QuoteManager::removeQuote) +#ifdef DEBUG + .def("display_quotes", &QuoteManager::displayQuotes) +#endif + .def("shuffle_quotes", &QuoteManager::shuffleQuotes) + .def("clear_quotes", &QuoteManager::clearQuotes) + .def("load_quotes_from_json", &QuoteManager::loadQuotesFromJson) + .def("save_quotes_to_json", &QuoteManager::saveQuotesToJson) + .def("search_quotes", &QuoteManager::searchQuotes) + .def("filter_quotes_by_author", &QuoteManager::filterQuotesByAuthor) + .def("get_random_quote", &QuoteManager::getRandomQuote); + + m.def("save_crash_log", &saveCrashLog, py::arg("error_msg"), + "Save the crash log with the specified error message."); + + py::class_(m, "DeviceInfo") + .def(py::init<>()) + .def_readwrite("description", &DeviceInfo::description) + .def_readwrite("address", &DeviceInfo::address) + .def("__repr__", [](const DeviceInfo &d) { + return ""; + }); + + m.def("enumerate_usb_devices", &enumerateUsbDevices, + "Enumerate USB devices and return a list of DeviceInfo objects."); + + m.def("enumerate_serial_ports", &enumerateSerialPorts, + "Enumerate serial ports and return a list of DeviceInfo objects."); + + m.def( + "enumerate_bluetooth_devices", &enumerateBluetoothDevices, + "Enumerate Bluetooth devices and return a list of DeviceInfo objects."); + + py::class_>(m, "Env") + .def(py::init<>()) + .def(py::init(), py::arg("argc"), py::arg("argv")) + .def_static("create_shared", &Env::createShared, py::arg("argc"), + py::arg("argv")) + .def_static("environ", &Env::Environ) + .def("add", &Env::add, py::arg("key"), py::arg("val")) + .def("has", &Env::has, py::arg("key")) + .def("del", &Env::del, py::arg("key")) + .def("get", &Env::get, py::arg("key"), py::arg("default_value") = "") + .def("set_env", &Env::setEnv, py::arg("key"), py::arg("val")) + .def("get_env", &Env::getEnv, py::arg("key"), + py::arg("default_value") = "") + .def("unset_env", &Env::unsetEnv, py::arg("name")) + .def_static("list_variables", &Env::listVariables) +#if ATOM_ENABLE_DEBUG + .def_static("print_all_variables", &Env::printAllVariables) +#endif + .def("__repr__", [](const Env & /*e*/) { return ""; }); + + py::class_(m, "Registry") + .def(py::init<>()) + .def("load_registry_from_file", &Registry::loadRegistryFromFile) + .def("create_key", &Registry::createKey, py::arg("keyName")) + .def("delete_key", &Registry::deleteKey, py::arg("keyName")) + .def("set_value", &Registry::setValue, py::arg("keyName"), + py::arg("valueName"), py::arg("data")) + .def("get_value", &Registry::getValue, py::arg("keyName"), + py::arg("valueName")) + .def("delete_value", &Registry::deleteValue, py::arg("keyName"), + py::arg("valueName")) + .def("backup_registry_data", &Registry::backupRegistryData) + .def("restore_registry_data", &Registry::restoreRegistryData, + py::arg("backupFile")) + .def("key_exists", &Registry::keyExists, py::arg("keyName")) + .def("value_exists", &Registry::valueExists, py::arg("keyName"), + py::arg("valueName")) + .def("get_value_names", &Registry::getValueNames, py::arg("keyName")) + .def("__repr__", [](const Registry &r) { return ""; }); + + py::class_(m, "NetworkConnection") + .def(py::init<>()) + .def_readwrite("protocol", &NetworkConnection::protocol) + .def_readwrite("localAddress", &NetworkConnection::localAddress) + .def_readwrite("remoteAddress", &NetworkConnection::remoteAddress) + .def_readwrite("localPort", &NetworkConnection::localPort) + .def_readwrite("remotePort", &NetworkConnection::remotePort) + .def("__repr__", [](const NetworkConnection &nc) { + return ""; + }); + + py::class_>( + m, "NetworkInterface") + .def(py::init, std::string, + bool>(), + py::arg("name"), py::arg("addresses"), py::arg("mac"), + py::arg("isUp")) + .def("get_name", &NetworkInterface::getName) + .def("get_addresses", + py::overload_cast<>(&NetworkInterface::getAddresses, py::const_)) + .def("get_mac", &NetworkInterface::getMac) + .def("is_up", &NetworkInterface::isUp) + .def("__repr__", [](const NetworkInterface &ni) { + return ""; + }); + + py::class_(m, "NetworkManager") + .def(py::init<>()) + .def("get_network_interfaces", &NetworkManager::getNetworkInterfaces) + .def_static("enable_interface", &NetworkManager::enableInterface) + .def_static("disable_interface", &NetworkManager::disableInterface) + .def_static("resolve_dns", &NetworkManager::resolveDNS) + .def("monitor_connection_status", + &NetworkManager::monitorConnectionStatus) + .def("get_interface_status", &NetworkManager::getInterfaceStatus) + .def_static("get_dns_servers", &NetworkManager::getDNSServers) + .def_static("set_dns_servers", &NetworkManager::setDNSServers) + .def_static("add_dns_server", &NetworkManager::addDNSServer) + .def_static("remove_dns_server", &NetworkManager::removeDNSServer) + .def("__repr__", + [](const NetworkManager &nm) { return ""; }); + + m.def("get_network_connections", &getNetworkConnections, py::arg("pid"), + "Gets the network connections of a process by its PID."); + + py::class_(m, "PidWatcher") + .def(py::init<>()) + .def("set_exit_callback", &PidWatcher::setExitCallback, + py::arg("callback")) + .def("set_monitor_function", &PidWatcher::setMonitorFunction, + py::arg("callback"), py::arg("interval")) + .def("get_pid_by_name", &PidWatcher::getPidByName, py::arg("name")) + .def("start", &PidWatcher::start, py::arg("name")) + .def("stop", &PidWatcher::stop) + .def("switch", &PidWatcher::Switch, py::arg("name")) + .def("__repr__", [](const PidWatcher &pw) { return ""; }); + + m.def("shutdown", &shutdown, "Shutdown the system."); + m.def("reboot", &reboot, "Reboot the system."); + m.def("hibernate", &hibernate, "Hibernate the system."); + m.def("logout", &logout, "Logout the current user."); + m.def("lock_screen", &lockScreen, "Lock the screen."); + m.def("set_screen_brightness", &setScreenBrightness, py::arg("level"), + "Set the screen brightness level."); + + py::class_(m, "PriorityManager") + .def_static("set_process_priority", + &PriorityManager::setProcessPriority, py::arg("level"), + py::arg("pid") = 0) + .def_static("get_process_priority", + &PriorityManager::getProcessPriority, py::arg("pid") = 0) + .def_static("set_thread_priority", &PriorityManager::setThreadPriority, + py::arg("level"), py::arg("thread") = 0) + .def_static("get_thread_priority", &PriorityManager::getThreadPriority, + py::arg("thread") = 0) + .def_static("set_thread_scheduling_policy", + &PriorityManager::setThreadSchedulingPolicy, + py::arg("policy"), py::arg("thread") = 0) + .def_static("set_process_affinity", + &PriorityManager::setProcessAffinity, py::arg("cpus"), + py::arg("pid") = 0) + .def_static("get_process_affinity", + &PriorityManager::getProcessAffinity, py::arg("pid") = 0) + .def_static("start_priority_monitor", + &PriorityManager::startPriorityMonitor, py::arg("pid"), + py::arg("callback"), + py::arg("interval") = std::chrono::seconds(1)); + + py::enum_(m, "PriorityLevel") + .value("LOWEST", PriorityManager::PriorityLevel::LOWEST) + .value("BELOW_NORMAL", PriorityManager::PriorityLevel::BELOW_NORMAL) + .value("NORMAL", PriorityManager::PriorityLevel::NORMAL) + .value("ABOVE_NORMAL", PriorityManager::PriorityLevel::ABOVE_NORMAL) + .value("HIGHEST", PriorityManager::PriorityLevel::HIGHEST) + .value("REALTIME", PriorityManager::PriorityLevel::REALTIME) + .export_values(); + + py::enum_(m, "SchedulingPolicy") + .value("NORMAL", PriorityManager::SchedulingPolicy::NORMAL) + .value("FIFO", PriorityManager::SchedulingPolicy::FIFO) + .value("ROUND_ROBIN", PriorityManager::SchedulingPolicy::ROUND_ROBIN) + .export_values(); + + py::class_(m, "Process") + .def(py::init<>()) + .def_readwrite("pid", &Process::pid) + .def_readwrite("name", &Process::name) + .def_readwrite("command", &Process::command) + .def_readwrite("output", &Process::output) + .def_readwrite("path", &Process::path) + .def_readwrite("status", &Process::status) +#if defined(_WIN32) + .def_readwrite("handle", &Process::handle) +#endif + .def_readwrite("is_background", &Process::isBackground) + .def("__repr__", [](const Process &p) { + return ""; + }); + + py::class_(m, "PrivilegesInfo") + .def(py::init<>()) + .def_readwrite("username", &PrivilegesInfo::username) + .def_readwrite("groupname", &PrivilegesInfo::groupname) + .def_readwrite("privileges", &PrivilegesInfo::privileges) + .def_readwrite("is_admin", &PrivilegesInfo::isAdmin) + .def("__repr__", [](const PrivilegesInfo &pi) { + return ""; + }); + + py::class_(m, "ProcessException") + .def(py::init()) + .def("__str__", &ProcessException::what); + + py::class_>( + m, "ProcessManager") + .def(py::init(), py::arg("maxProcess") = 20) + .def_static("create_shared", &ProcessManager::createShared, + py::arg("maxProcess") = 20) + .def("create_process", &ProcessManager::createProcess, + py::arg("command"), py::arg("identifier"), + py::arg("isBackground") = false) + .def("terminate_process", &ProcessManager::terminateProcess, + py::arg("pid"), py::arg("signal") = 15) + .def("terminate_process_by_name", + &ProcessManager::terminateProcessByName, py::arg("name"), + py::arg("signal") = 15) + .def("has_process", &ProcessManager::hasProcess, py::arg("identifier")) + .def("get_running_processes", &ProcessManager::getRunningProcesses) + .def("get_process_output", &ProcessManager::getProcessOutput, + py::arg("identifier")) + .def("wait_for_completion", &ProcessManager::waitForCompletion) + .def("run_script", &ProcessManager::runScript, py::arg("script"), + py::arg("identifier"), py::arg("isBackground") = false) + .def("monitor_processes", &ProcessManager::monitorProcesses) + .def("get_process_info", &ProcessManager::getProcessInfo, + py::arg("pid")) +#ifdef _WIN32 + .def("get_process_handle", &ProcessManager::getProcessHandle, + py::arg("pid")) +#else + .def_static("get_proc_file_path", &ProcessManager::getProcFilePath, py::arg("pid"), py::arg("file")) +#endif + .def("__repr__", + [](const ProcessManager &pm) { return ""; }); + + py::class_(m, "Process") + .def(py::init<>()) + .def_readwrite("pid", &Process::pid) + .def_readwrite("name", &Process::name) + .def_readwrite("command", &Process::command) + .def_readwrite("output", &Process::output) + .def_readwrite("path", &Process::path) + .def_readwrite("status", &Process::status) +#if defined(_WIN32) + .def_readwrite("handle", &Process::handle) +#endif + .def_readwrite("is_background", &Process::isBackground) + .def("__repr__", [](const Process &p) { + return ""; + }); + + py::class_(m, "PrivilegesInfo") + .def(py::init<>()) + .def_readwrite("username", &PrivilegesInfo::username) + .def_readwrite("groupname", &PrivilegesInfo::groupname) + .def_readwrite("privileges", &PrivilegesInfo::privileges) + .def_readwrite("is_admin", &PrivilegesInfo::isAdmin) + .def("__repr__", [](const PrivilegesInfo &pi) { + return ""; + }); + + m.def("check_software_installed", &checkSoftwareInstalled, + py::arg("software_name"), + "Check whether the specified software is installed."); + m.def("get_app_version", &getAppVersion, py::arg("app_path"), + "Get the version of the specified application."); + m.def("get_app_path", &getAppPath, py::arg("software_name"), + "Get the path to the specified application."); + m.def("get_app_permissions", &getAppPermissions, py::arg("app_path"), + "Get the permissions of the specified application."); + + py::class_(m, "Stat") + .def(py::init(), py::arg("path")) + .def("update", &Stat::update, "Updates the file statistics.") + .def("type", &Stat::type, "Gets the type of the file.") + .def("size", &Stat::size, "Gets the size of the file.") + .def("atime", &Stat::atime, "Gets the last access time of the file.") + .def("mtime", &Stat::mtime, + "Gets the last modification time of the file.") + .def("ctime", &Stat::ctime, "Gets the creation time of the file.") + .def("mode", &Stat::mode, "Gets the file mode/permissions.") + .def("uid", &Stat::uid, "Gets the user ID of the file owner.") + .def("gid", &Stat::gid, "Gets the group ID of the file owner.") + .def("path", &Stat::path, "Gets the path of the file.") + .def("__repr__", [](const Stat &s) { + return ""; + }); + + py::enum_(m, "FileType") + .value("none", std::filesystem::file_type::none) + .value("not_found", std::filesystem::file_type::not_found) + .value("regular", std::filesystem::file_type::regular) + .value("directory", std::filesystem::file_type::directory) + .value("symlink", std::filesystem::file_type::symlink) + .value("block", std::filesystem::file_type::block) + .value("character", std::filesystem::file_type::character) + .value("fifo", std::filesystem::file_type::fifo) + .value("socket", std::filesystem::file_type::socket) + .value("unknown", std::filesystem::file_type::unknown) + .export_values(); + + m.def("get_user_groups", &getUserGroups, "Get user groups."); + m.def("get_username", &getUsername, "Get user name."); + m.def("get_hostname", &getHostname, "Get host name."); + m.def("get_user_id", &getUserId, "Get user ID."); + m.def("get_group_id", &getGroupId, "Get group ID."); + m.def("get_home_directory", &getHomeDirectory, + "Get user profile directory."); + m.def("get_current_working_directory", &getCurrentWorkingDirectory, + "Get current working directory."); + m.def("get_login_shell", &getLoginShell, "Get login shell."); + m.def("get_login", &getLogin, "Retrieve the login name of the user."); + m.def("is_root", &isRoot, + "Check if the current user has root/administrator privileges."); + +#ifdef _WIN32 + m.def("get_user_profile_directory", &getUserProfileDirectory, + "Get user profile directory (Windows only)."); +#endif + +// Expose HKEY constants if on Windows +#ifdef _WIN32 + py::enum_(m, "HKEY") + .value("HKEY_CLASSES_ROOT", HKEY_CLASSES_ROOT) + .value("HKEY_CURRENT_USER", HKEY_CURRENT_USER) + .value("HKEY_LOCAL_MACHINE", HKEY_LOCAL_MACHINE) + .value("HKEY_USERS", HKEY_USERS) + .value("HKEY_CURRENT_CONFIG", HKEY_CURRENT_CONFIG) + .export_values(); +#endif +#ifdef _WIN32 + // Binding for getRegistrySubKeys + m.def( + "get_registry_sub_keys", + [](HKEY hRootKey, + const std::string &subKey) -> std::vector { + std::vector subKeys; + bool success = getRegistrySubKeys(hRootKey, subKey, subKeys); + if (!success) { + throw std::runtime_error("Failed to get registry sub keys."); + } + return subKeys; + }, + py::arg("hRootKey"), py::arg("subKey"), + "Get all subkey names under the specified registry key."); + + // Binding for getRegistryValues + m.def( + "get_registry_values", + [](HKEY hRootKey, const std::string &subKey) + -> std::vector> { + std::vector> values; + bool success = getRegistryValues(hRootKey, subKey, values); + if (!success) { + throw std::runtime_error("Failed to get registry values."); + } + return values; + }, + py::arg("hRootKey"), py::arg("subKey"), + "Get all value names and data under the specified registry key."); + + // Binding for modifyRegistryValue + m.def( + "modify_registry_value", + [](HKEY hRootKey, const std::string &subKey, + const std::string &valueName, const std::string &newValue) -> bool { + bool success = + modifyRegistryValue(hRootKey, subKey, valueName, newValue); + if (!success) { + throw std::runtime_error("Failed to modify registry value."); + } + return success; + }, + py::arg("hRootKey"), py::arg("subKey"), py::arg("valueName"), + py::arg("newValue"), "Modify the data of a specified registry value."); + + // Binding for deleteRegistrySubKey + m.def( + "delete_registry_sub_key", + [](HKEY hRootKey, const std::string &subKey) -> bool { + bool success = deleteRegistrySubKey(hRootKey, subKey); + if (!success) { + throw std::runtime_error("Failed to delete registry subkey."); + } + return success; + }, + py::arg("hRootKey"), py::arg("subKey"), + "Delete a specified registry subkey and all its subkeys."); + + // Binding for deleteRegistryValue + m.def( + "delete_registry_value", + [](HKEY hRootKey, const std::string &subKey, + const std::string &valueName) -> bool { + bool success = deleteRegistryValue(hRootKey, subKey, valueName); + if (!success) { + throw std::runtime_error("Failed to delete registry value."); + } + return success; + }, + py::arg("hRootKey"), py::arg("subKey"), py::arg("valueName"), + "Delete a specified registry value under the given subkey."); + + // Binding for recursivelyEnumerateRegistrySubKeys + m.def( + "recursively_enumerate_registry_sub_keys", + [](HKEY hRootKey, const std::string &subKey) { + recursivelyEnumerateRegistrySubKeys(hRootKey, subKey); + }, + py::arg("hRootKey"), py::arg("subKey"), + "Recursively enumerate all subkeys and values under the specified " + "registry key."); + + // Binding for backupRegistry + m.def( + "backup_registry", + [](HKEY hRootKey, const std::string &subKey, + const std::string &backupFilePath) -> bool { + bool success = backupRegistry(hRootKey, subKey, backupFilePath); + if (!success) { + throw std::runtime_error("Failed to backup registry."); + } + return success; + }, + py::arg("hRootKey"), py::arg("subKey"), py::arg("backupFilePath"), + "Backup the specified registry key and all its subkeys and values to a " + "REG file."); + + // Binding for findRegistryKey + m.def( + "find_registry_key", + [](HKEY hRootKey, const std::string &subKey, + const std::string &searchKey) { + findRegistryKey(hRootKey, subKey, searchKey); + }, + py::arg("hRootKey"), py::arg("subKey"), py::arg("searchKey"), + "Recursively find subkeys containing the specified string."); + + // Binding for findRegistryValue + m.def( + "find_registry_value", + [](HKEY hRootKey, const std::string &subKey, + const std::string &searchValue) { + findRegistryValue(hRootKey, subKey, searchValue); + }, + py::arg("hRootKey"), py::arg("subKey"), py::arg("searchValue"), + "Recursively find values containing the specified string."); +#endif +} diff --git a/modules/atom.utils/CMakeLists.txt b/modules/atom.utils/CMakeLists.txt index 51befc6e..88ed41d4 100644 --- a/modules/atom.utils/CMakeLists.txt +++ b/modules/atom.utils/CMakeLists.txt @@ -7,7 +7,7 @@ # License: GPL3 cmake_minimum_required(VERSION 3.20) -project(atom.utils C CXX) +project(atom_ioutils C CXX) set(CMAKE_ATOM_UTILS_BUILTIN_VERSION_MAJOR 1) set(CMAKE_ATOM_UTILS_BUILTIN_VERSION_MINOR 0) diff --git a/modules/atom.utils/pymodule.cpp b/modules/atom.utils/pymodule.cpp new file mode 100644 index 00000000..3aec55e4 --- /dev/null +++ b/modules/atom.utils/pymodule.cpp @@ -0,0 +1,471 @@ +#include +#include +#include + +#include "atom/utils/aes.hpp" +#include "atom/utils/argsview.hpp" +#include "atom/utils/bit.hpp" +#include "atom/utils/difflib.hpp" +#include "atom/utils/error_stack.hpp" +#include "atom/utils/lcg.hpp" +#include "atom/utils/qdatetime.hpp" +#include "atom/utils/qprocess.hpp" +#include "atom/utils/qtimer.hpp" +#include "atom/utils/qtimezone.hpp" +#include "atom/utils/random.hpp" +#include "atom/utils/time.hpp" +#include "atom/utils/uuid.hpp" +#include "atom/utils/xml.hpp" + +namespace py = pybind11; +using namespace atom::utils; + +template +void bind_random(py::module &m, const std::string &name) { + using RandomType = Random; + py::class_(m, name.c_str()) + .def(py::init(), + py::arg("min"), py::arg("max")) + .def(py::init(), + py::arg("seed"), py::arg("params")) + .def("seed", &RandomType::seed, + py::arg("value") = std::random_device{}()) + .def("__call__", py::overload_cast<>(&RandomType::operator())) + //.def("__call__", + // py::overload_cast( + // &RandomType::operator(), py::const_)) + .def("generate", &RandomType::template generate::iterator>) + .def("vector", &RandomType::vector) + .def("param", &RandomType::param) + .def("engine", &RandomType::engine, + py::return_value_policy::reference_internal) + .def("distribution", &RandomType::distribution, + py::return_value_policy::reference_internal); +} + +PYBIND11_MODULE(diff, m) { + m.def("encryptAES", &encryptAES, py::arg("plaintext"), py::arg("key"), + py::arg("iv"), py::arg("tag"), + "Encrypts the input plaintext using the AES algorithm."); + m.def("decryptAES", &decryptAES, py::arg("ciphertext"), py::arg("key"), + py::arg("iv"), py::arg("tag"), + "Decrypts the input ciphertext using the AES algorithm."); + m.def("compress", &compress, py::arg("data"), + "Compresses the input data using the Zlib library."); + m.def("decompress", &decompress, py::arg("data"), + "Decompresses the input data using the Zlib library."); + m.def("calculateSha256", &calculateSha256, py::arg("filename"), + "Calculates the SHA-256 hash of a file."); + m.def("calculateSha224", &calculateSha224, py::arg("data"), + "Calculates the SHA-224 hash of a string."); + m.def("calculateSha384", &calculateSha384, py::arg("data"), + "Calculates the SHA-384 hash of a string."); + m.def("calculateSha512", &calculateSha512, py::arg("data"), + "Calculates the SHA-512 hash of a string."); + + py::class_(m, "ArgumentParser") + .def(py::init<>()) + .def(py::init()) + .def("set_description", &atom::utils::ArgumentParser::setDescription) + .def("set_epilog", &atom::utils::ArgumentParser::setEpilog) + .def("add_argument", &atom::utils::ArgumentParser::addArgument, + py::arg("name"), + py::arg("type") = atom::utils::ArgumentParser::ArgType::AUTO, + py::arg("required") = false, py::arg("default_value") = std::any(), + py::arg("help") = "", + py::arg("aliases") = std::vector(), + py::arg("is_positional") = false, + py::arg("nargs") = atom::utils::ArgumentParser::Nargs()) + .def("add_flag", &atom::utils::ArgumentParser::addFlag, py::arg("name"), + py::arg("help") = "", + py::arg("aliases") = std::vector()) + .def("add_subcommand", &atom::utils::ArgumentParser::addSubcommand) + .def("add_mutually_exclusive_group", + &atom::utils::ArgumentParser::addMutuallyExclusiveGroup) + .def("add_argument_from_file", + &atom::utils::ArgumentParser::addArgumentFromFile) + .def("set_file_delimiter", + &atom::utils::ArgumentParser::setFileDelimiter) + .def("parse", &atom::utils::ArgumentParser::parse) + .def("get_flag", &atom::utils::ArgumentParser::getFlag) + .def("get_subcommand_parser", + &atom::utils::ArgumentParser::getSubcommandParser) + .def("print_help", &atom::utils::ArgumentParser::printHelp); + + py::enum_(m, "ArgType") + .value("STRING", atom::utils::ArgumentParser::ArgType::STRING) + .value("INTEGER", atom::utils::ArgumentParser::ArgType::INTEGER) + .value("UNSIGNED_INTEGER", + atom::utils::ArgumentParser::ArgType::UNSIGNED_INTEGER) + .value("LONG", atom::utils::ArgumentParser::ArgType::LONG) + .value("UNSIGNED_LONG", + atom::utils::ArgumentParser::ArgType::UNSIGNED_LONG) + .value("FLOAT", atom::utils::ArgumentParser::ArgType::FLOAT) + .value("DOUBLE", atom::utils::ArgumentParser::ArgType::DOUBLE) + .value("BOOLEAN", atom::utils::ArgumentParser::ArgType::BOOLEAN) + .value("FILEPATH", atom::utils::ArgumentParser::ArgType::FILEPATH) + .value("AUTO", atom::utils::ArgumentParser::ArgType::AUTO) + .export_values(); + + py::enum_(m, "NargsType") + .value("NONE", atom::utils::ArgumentParser::NargsType::NONE) + .value("OPTIONAL", atom::utils::ArgumentParser::NargsType::OPTIONAL) + .value("ZERO_OR_MORE", + atom::utils::ArgumentParser::NargsType::ZERO_OR_MORE) + .value("ONE_OR_MORE", + atom::utils::ArgumentParser::NargsType::ONE_OR_MORE) + .value("CONSTANT", atom::utils::ArgumentParser::NargsType::CONSTANT) + .export_values(); + + py::class_(m, "Nargs") + .def(py::init<>()) + .def(py::init(), + py::arg("type"), py::arg("count") = 1) + .def_readwrite("type", &atom::utils::ArgumentParser::Nargs::type) + .def_readwrite("count", &atom::utils::ArgumentParser::Nargs::count); + + m.def("create_mask", &createMask, py::arg("bits"), + "Creates a bitmask with the specified number of bits set to 1."); + m.def("count_bytes", &countBytes, py::arg("value"), + "Counts the number of set bits (1s) in the given value."); + m.def("reverse_bits", &reverseBits, py::arg("value"), + "Reverses the bits in the given value."); + m.def("rotate_left", &rotateLeft, py::arg("value"), + py::arg("shift"), + "Performs a left rotation on the bits of the given value."); + m.def("rotate_right", &rotateRight, py::arg("value"), + py::arg("shift"), + "Performs a right rotation on the bits of the given value."); + m.def("merge_masks", &mergeMasks, py::arg("mask1"), + py::arg("mask2"), "Merges two bitmasks into one."); + m.def("split_mask", &splitMask, py::arg("mask"), + py::arg("position"), "Splits a bitmask into two parts."); + + py::class_(m, "SequenceMatcher") + .def(py::init()) + .def("set_seqs", &SequenceMatcher::setSeqs) + .def("ratio", &SequenceMatcher::ratio) + .def("get_matching_blocks", &SequenceMatcher::getMatchingBlocks) + .def("get_opcodes", &SequenceMatcher::getOpcodes); + + py::class_(m, "Differ") + .def_static("compare", &Differ::compare) + .def_static("unified_diff", &Differ::unifiedDiff); + + py::class_(m, "HtmlDiff") + .def_static("make_file", &HtmlDiff::makeFile) + .def_static("make_table", &HtmlDiff::makeTable); + + m.def("get_close_matches", &getCloseMatches); + + py::class_(m, "ErrorInfo") + .def(py::init<>()) + .def_readwrite("errorMessage", &atom::error::ErrorInfo::errorMessage) + .def_readwrite("moduleName", &atom::error::ErrorInfo::moduleName) + .def_readwrite("functionName", &atom::error::ErrorInfo::functionName) + .def_readwrite("line", &atom::error::ErrorInfo::line) + .def_readwrite("fileName", &atom::error::ErrorInfo::fileName) + .def_readwrite("timestamp", &atom::error::ErrorInfo::timestamp) + .def_readwrite("uuid", &atom::error::ErrorInfo::uuid) + .def("__repr__", [](const atom::error::ErrorInfo &e) { + return ""; + }); + + py::class_>(m, "ErrorStack") + .def(py::init<>()) + .def_static("create_shared", &atom::error::ErrorStack::createShared) + .def_static("create_unique", &atom::error::ErrorStack::createUnique) + .def("insert_error", &atom::error::ErrorStack::insertError) + .def("set_filtered_modules", + &atom::error::ErrorStack::setFilteredModules) + .def("clear_filtered_modules", + &atom::error::ErrorStack::clearFilteredModules) + .def("print_filtered_error_stack", + &atom::error::ErrorStack::printFilteredErrorStack) + .def("get_filtered_errors_by_module", + &atom::error::ErrorStack::getFilteredErrorsByModule) + .def("get_compressed_errors", + &atom::error::ErrorStack::getCompressedErrors); + + py::class_(m, "LCG") + .def(py::init(), + py::arg("seed") = static_cast( + std::chrono::steady_clock::now().time_since_epoch().count())) + .def("next", &LCG::next, + "Generates the next random number in the sequence.") + .def("seed", &LCG::seed, py::arg("new_seed"), + "Seeds the generator with a new seed value.") + .def("save_state", &LCG::saveState, py::arg("filename"), + "Saves the current state of the generator to a file.") + .def("load_state", &LCG::loadState, py::arg("filename"), + "Loads the state of the generator from a file.") + .def("next_int", &LCG::nextInt, py::arg("min") = 0, + py::arg("max") = std::numeric_limits::max(), + "Generates a random integer within a specified range.") + .def("next_double", &LCG::nextDouble, py::arg("min") = 0.0, + py::arg("max") = 1.0, + "Generates a random double within a specified range.") + .def("next_bernoulli", &LCG::nextBernoulli, + py::arg("probability") = 0.5, + "Generates a random boolean value based on a specified " + "probability.") + .def("next_gaussian", &LCG::nextGaussian, py::arg("mean") = 0.0, + py::arg("stddev") = 1.0, + "Generates a random number following a Gaussian (normal) " + "distribution.") + .def("next_poisson", &LCG::nextPoisson, py::arg("lambda") = 1.0, + "Generates a random number following a Poisson distribution.") + .def("next_exponential", &LCG::nextExponential, py::arg("lambda") = 1.0, + "Generates a random number following an Exponential distribution.") + .def("next_geometric", &LCG::nextGeometric, + py::arg("probability") = 0.5, + "Generates a random number following a Geometric distribution.") + .def("next_gamma", &LCG::nextGamma, py::arg("shape"), + py::arg("scale") = 1.0, + "Generates a random number following a Gamma distribution.") + .def("next_beta", &LCG::nextBeta, py::arg("alpha"), py::arg("beta"), + "Generates a random number following a Beta distribution.") + .def("next_chi_squared", &LCG::nextChiSquared, + py::arg("degrees_of_freedom"), + "Generates a random number following a Chi-Squared distribution.") + .def("next_hypergeometric", &LCG::nextHypergeometric, py::arg("total"), + py::arg("success"), py::arg("draws"), + "Generates a random number following a Hypergeometric " + "distribution.") + .def("next_discrete", &LCG::nextDiscrete, py::arg("weights"), + "Generates a random index based on a discrete distribution.") + .def("next_multinomial", &LCG::nextMultinomial, py::arg("trials"), + py::arg("probabilities"), "Generates a multinomial distribution.") + .def("shuffle", &LCG::shuffle, py::arg("data"), + "Shuffles a vector of data.") + .def("sample", &LCG::sample, py::arg("data"), + py::arg("sample_size"), "Samples a subset of data from a vector.") + .def_static("min", &LCG::min, + "Returns the minimum value that can be generated.") + .def_static("max", &LCG::max, + "Returns the maximum value that can be generated."); + + py::class_(m, "QDateTime") + .def(py::init<>(), "Default constructor for QDateTime.") + .def( + py::init(), + py::arg("dateTimeString"), py::arg("format"), + "Constructs a QDateTime object from a date-time string and format.") + .def_static("currentDateTime", + py::overload_cast<>(&QDateTime::currentDateTime), + "Returns the current date and time.") + .def_static( + "fromString", + py::overload_cast( + &QDateTime::fromString), + py::arg("dateTimeString"), py::arg("format"), + "Constructs a QDateTime object from a date-time string and format.") + .def("toString", + py::overload_cast(&QDateTime::toString, + py::const_), + py::arg("format"), + "Converts the QDateTime object to a string in the specified " + "format.") + .def("toTimeT", &QDateTime::toTimeT, + "Converts the QDateTime object to a std::time_t value.") + .def("isValid", &QDateTime::isValid, + "Checks if the QDateTime object is valid.") + .def("addDays", &QDateTime::addDays, py::arg("days"), + "Adds a number of days to the QDateTime object.") + .def("addSecs", &QDateTime::addSecs, py::arg("seconds"), + "Adds a number of seconds to the QDateTime object.") + .def("daysTo", &QDateTime::daysTo, py::arg("other"), + "Computes the number of days between the current QDateTime object " + "and another QDateTime object.") + .def("secsTo", &QDateTime::secsTo, py::arg("other"), + "Computes the number of seconds between the current QDateTime " + "object and another QDateTime object.") + .def(py::self < py::self) + .def(py::self <= py::self) + .def(py::self > py::self) + .def(py::self >= py::self) + .def(py::self == py::self) + .def(py::self != py::self); + + py::class_(m, "QProcess") + .def(py::init<>(), "Default constructor for QProcess.") + .def("set_working_directory", &QProcess::setWorkingDirectory, + py::arg("dir"), "Sets the working directory for the process.") + .def("set_environment", &QProcess::setEnvironment, py::arg("env"), + "Sets the environment variables for the process.") + .def( + "start", &QProcess::start, py::arg("program"), py::arg("args"), + "Starts the external process with the given program and arguments.") + .def("wait_for_started", &QProcess::waitForStarted, + py::arg("timeoutMs") = -1, "Waits for the process to start.") + .def("wait_for_finished", &QProcess::waitForFinished, + py::arg("timeoutMs") = -1, "Waits for the process to finish.") + .def("is_running", &QProcess::isRunning, + "Checks if the process is currently running.") + .def("write", &QProcess::write, py::arg("data"), + "Writes data to the process's standard input.") + .def("read_all_standard_output", &QProcess::readAllStandardOutput, + "Reads all available data from the process's standard output.") + .def("read_all_standard_error", &QProcess::readAllStandardError, + "Reads all available data from the process's standard error.") + .def("terminate", &QProcess::terminate, "Terminates the process."); + + py::class_(m, "ElapsedTimer") + .def(py::init<>(), "Default constructor.") + .def("start", &ElapsedTimer::start, "Start or restart the timer.") + .def("invalidate", &ElapsedTimer::invalidate, "Invalidate the timer.") + .def("is_valid", &ElapsedTimer::isValid, + "Check if the timer has been started and is valid.") + .def("elapsed_ns", &ElapsedTimer::elapsedNs, + "Get elapsed time in nanoseconds.") + .def("elapsed_us", &ElapsedTimer::elapsedUs, + "Get elapsed time in microseconds.") + .def("elapsed_ms", &ElapsedTimer::elapsedMs, + "Get elapsed time in milliseconds.") + .def("elapsed_sec", &ElapsedTimer::elapsedSec, + "Get elapsed time in seconds.") + .def("elapsed_min", &ElapsedTimer::elapsedMin, + "Get elapsed time in minutes.") + .def("elapsed_hrs", &ElapsedTimer::elapsedHrs, + "Get elapsed time in hours.") + .def("elapsed", &ElapsedTimer::elapsed, + "Get elapsed time in milliseconds (same as elapsedMs).") + .def("has_expired", &ElapsedTimer::hasExpired, py::arg("ms"), + "Check if a specified duration (in milliseconds) has passed.") + .def("remaining_time_ms", &ElapsedTimer::remainingTimeMs, py::arg("ms"), + "Get the remaining time until the specified duration (in " + "milliseconds) has passed.") + .def_static( + "current_time_ms", &ElapsedTimer::currentTimeMs, + "Get the current absolute time in milliseconds since epoch.") + .def(py::self < py::self) + .def(py::self > py::self) + .def(py::self <= py::self) + .def(py::self >= py::self) + .def(py::self == py::self) + .def(py::self != py::self); + + py::class_(m, "ElapsedTimer") + .def(py::init<>(), "Default constructor.") + .def("start", &ElapsedTimer::start, "Start or restart the timer.") + .def("invalidate", &ElapsedTimer::invalidate, "Invalidate the timer.") + .def("is_valid", &ElapsedTimer::isValid, + "Check if the timer has been started and is valid.") + .def("elapsed_ns", &ElapsedTimer::elapsedNs, + "Get elapsed time in nanoseconds.") + .def("elapsed_us", &ElapsedTimer::elapsedUs, + "Get elapsed time in microseconds.") + .def("elapsed_ms", &ElapsedTimer::elapsedMs, + "Get elapsed time in milliseconds.") + .def("elapsed_sec", &ElapsedTimer::elapsedSec, + "Get elapsed time in seconds.") + .def("elapsed_min", &ElapsedTimer::elapsedMin, + "Get elapsed time in minutes.") + .def("elapsed_hrs", &ElapsedTimer::elapsedHrs, + "Get elapsed time in hours.") + .def("elapsed", &ElapsedTimer::elapsed, + "Get elapsed time in milliseconds (same as elapsedMs).") + .def("has_expired", &ElapsedTimer::hasExpired, py::arg("ms"), + "Check if a specified duration (in milliseconds) has passed.") + .def("remaining_time_ms", &ElapsedTimer::remainingTimeMs, py::arg("ms"), + "Get the remaining time until the specified duration (in " + "milliseconds) has passed.") + .def_static( + "current_time_ms", &ElapsedTimer::currentTimeMs, + "Get the current absolute time in milliseconds since epoch.") + .def(py::self < py::self) + .def(py::self > py::self) + .def(py::self <= py::self) + .def(py::self >= py::self) + .def(py::self == py::self) + .def(py::self != py::self); + + bind_random>(m, + "RandomInt"); + bind_random>( + m, "RandomDouble"); + + m.def("get_timestamp_string", &getTimestampString, + "Retrieves the current timestamp as a formatted string."); + m.def("convert_to_china_time", &convertToChinaTime, py::arg("utcTimeStr"), + "Converts a UTC time string to China Standard Time (CST, UTC+8)."); + m.def("get_china_timestamp_string", &getChinaTimestampString, + "Retrieves the current China Standard Time (CST) as a formatted " + "timestamp string."); + m.def("timestamp_to_string", &timeStampToString, py::arg("timestamp"), + "Converts a timestamp to a formatted string."); + m.def("to_string", &toString, py::arg("tm"), py::arg("format"), + "Converts a `tm` structure to a formatted string."); + m.def("get_utc_time", &getUtcTime, + "Retrieves the current UTC time as a formatted string."); + m.def("timestamp_to_time", ×tampToTime, py::arg("timestamp"), + "Converts a timestamp to a `tm` structure."); + + py::class_(m, "UUID") + .def(py::init<>(), "Constructs a new UUID with a random value.") + .def(py::init &>(), py::arg("data"), + "Constructs a UUID from a given 16-byte array.") + .def("to_string", &UUID::toString, + "Converts the UUID to a string representation.") + .def_static("from_string", &UUID::fromString, py::arg("str"), + "Creates a UUID from a string representation.") + .def("get_data", &UUID::getData, + "Retrieves the underlying data of the UUID.") + .def("version", &UUID::version, "Gets the version of the UUID.") + .def("variant", &UUID::variant, "Gets the variant of the UUID.") + .def_static( + "generate_v3", &UUID::generateV3, py::arg("namespace_uuid"), + py::arg("name"), + "Generates a version 3 UUID using the MD5 hashing algorithm.") + .def_static( + "generate_v5", &UUID::generateV5, py::arg("namespace_uuid"), + py::arg("name"), + "Generates a version 5 UUID using the SHA-1 hashing algorithm.") + .def_static("generate_v1", &UUID::generateV1, + "Generates a version 1, time-based UUID.") + .def_static("generate_v4", &UUID::generateV4, + "Generates a version 4, random UUID.") + .def(py::self == py::self) + .def(py::self != py::self) + .def(py::self < py::self) + .def(py::self > py::self) + .def(py::self <= py::self) + .def(py::self >= py::self) + .def("__str__", &UUID::toString); + + m.def("generate_unique_uuid", &generateUniqueUUID, + "Generates a unique UUID and returns it as a string."); + + py::class_(m, "XMLReader") + .def(py::init()) + .def("get_child_element_names", + &atom::utils::XMLReader::getChildElementNames) + .def("get_element_text", &atom::utils::XMLReader::getElementText) + .def("get_attribute_value", &atom::utils::XMLReader::getAttributeValue) + .def("get_root_element_names", + &atom::utils::XMLReader::getRootElementNames) + .def("has_child_element", &atom::utils::XMLReader::hasChildElement) + .def("get_child_element_text", + &atom::utils::XMLReader::getChildElementText) + .def("get_child_element_attribute_value", + &atom::utils::XMLReader::getChildElementAttributeValue) + .def("get_value_by_path", &atom::utils::XMLReader::getValueByPath) + .def("get_attribute_value_by_path", + &atom::utils::XMLReader::getAttributeValueByPath) + .def("has_child_element_by_path", + &atom::utils::XMLReader::hasChildElementByPath) + .def("get_child_element_text_by_path", + &atom::utils::XMLReader::getChildElementTextByPath) + .def("get_child_element_attribute_value_by_path", + &atom::utils::XMLReader::getChildElementAttributeValueByPath) + .def("save_to_file", &atom::utils::XMLReader::saveToFile); +} diff --git a/modules/atom.web/pymodule.cpp b/modules/atom.web/pymodule.cpp new file mode 100644 index 00000000..92858350 --- /dev/null +++ b/modules/atom.web/pymodule.cpp @@ -0,0 +1,261 @@ +#include +#include + +#include "atom/web/address.hpp" +#include "atom/web/curl.hpp" +#include "atom/web/downloader.hpp" +#include "atom/web/httpparser.hpp" +#include "atom/web/minetype.hpp" +#include "atom/web/time.hpp" +#include "atom/web/utils.hpp" + +namespace py = pybind11; +using namespace atom::web; + +PYBIND11_MODULE(web, m) { + py::class_>(m, "Address") + .def("parse", &Address::parse, "Parse address string", + py::arg("address")) + .def("print_address_type", &Address::printAddressType, + "Print address type") + .def("is_in_range", &Address::isInRange, "Check if address is in range", + py::arg("start"), py::arg("end")) + .def("to_binary", &Address::toBinary, + "Convert address to binary representation") + .def("get_address", &Address::getAddress, "Get address string") + .def("is_equal", &Address::isEqual, "Check if two addresses are equal", + py::arg("other")) + .def("get_type", &Address::getType, "Get address type") + .def("get_network_address", &Address::getNetworkAddress, + "Get network address", py::arg("mask")) + .def("get_broadcast_address", &Address::getBroadcastAddress, + "Get broadcast address", py::arg("mask")) + .def("is_same_subnet", &Address::isSameSubnet, + "Check if two addresses are in the same subnet", py::arg("other"), + py::arg("mask")) + .def("to_hex", &Address::toHex, + "Convert address to hexadecimal representation"); + + py::class_>(m, "IPv4") + .def(py::init<>()) + .def(py::init(), py::arg("address")) + .def("parse", &IPv4::parse, "Parse IPv4 address", py::arg("address")) + .def("print_address_type", &IPv4::printAddressType, + "Print IPv4 address type") + .def("is_in_range", &IPv4::isInRange, + "Check if IPv4 address is in range", py::arg("start"), + py::arg("end")) + .def("to_binary", &IPv4::toBinary, + "Convert IPv4 address to binary representation") + .def("is_equal", &IPv4::isEqual, + "Check if two IPv4 addresses are equal", py::arg("other")) + .def("get_type", &IPv4::getType, "Get IPv4 address type") + .def("get_network_address", &IPv4::getNetworkAddress, + "Get IPv4 network address", py::arg("mask")) + .def("get_broadcast_address", &IPv4::getBroadcastAddress, + "Get IPv4 broadcast address", py::arg("mask")) + .def("is_same_subnet", &IPv4::isSameSubnet, + "Check if two IPv4 addresses are in the same subnet", + py::arg("other"), py::arg("mask")) + .def("to_hex", &IPv4::toHex, + "Convert IPv4 address to hexadecimal representation") + .def("parse_cidr", &IPv4::parseCIDR, + "Parse CIDR formatted IPv4 address", py::arg("cidr")); + + py::class_>(m, "IPv6") + .def(py::init<>()) + .def(py::init(), py::arg("address")) + .def("parse", &IPv6::parse, "Parse IPv6 address", py::arg("address")) + .def("print_address_type", &IPv6::printAddressType, + "Print IPv6 address type") + .def("is_in_range", &IPv6::isInRange, + "Check if IPv6 address is in range", py::arg("start"), + py::arg("end")) + .def("to_binary", &IPv6::toBinary, + "Convert IPv6 address to binary representation") + .def("is_equal", &IPv6::isEqual, + "Check if two IPv6 addresses are equal", py::arg("other")) + .def("get_type", &IPv6::getType, "Get IPv6 address type") + .def("get_network_address", &IPv6::getNetworkAddress, + "Get IPv6 network address", py::arg("mask")) + .def("get_broadcast_address", &IPv6::getBroadcastAddress, + "Get IPv6 broadcast address", py::arg("mask")) + .def("is_same_subnet", &IPv6::isSameSubnet, + "Check if two IPv6 addresses are in the same subnet", + py::arg("other"), py::arg("mask")) + .def("to_hex", &IPv6::toHex, + "Convert IPv6 address to hexadecimal representation") + .def("parse_cidr", &IPv6::parseCIDR, + "Parse CIDR formatted IPv6 address", py::arg("cidr")); + + py::class_>(m, + "UnixDomain") + .def(py::init<>()) + .def(py::init(), py::arg("path")) + .def("parse", &UnixDomain::parse, "Parse Unix domain socket address", + py::arg("path")) + .def("print_address_type", &UnixDomain::printAddressType, + "Print Unix domain socket address type") + .def("is_in_range", &UnixDomain::isInRange, + "Check if Unix domain socket address is in range", + py::arg("start"), py::arg("end")) + .def("to_binary", &UnixDomain::toBinary, + "Convert Unix domain socket address to binary representation") + .def("is_equal", &UnixDomain::isEqual, + "Check if two Unix domain socket addresses are equal", + py::arg("other")) + .def("get_type", &UnixDomain::getType, + "Get Unix domain socket address type") + .def("get_network_address", &UnixDomain::getNetworkAddress, + "Get Unix domain socket network address", py::arg("mask")) + .def("get_broadcast_address", &UnixDomain::getBroadcastAddress, + "Get Unix domain socket broadcast address", py::arg("mask")) + .def("is_same_subnet", &UnixDomain::isSameSubnet, + "Check if two Unix domain socket addresses are in the same subnet", + py::arg("other"), py::arg("mask")) + .def( + "to_hex", &UnixDomain::toHex, + "Convert Unix domain socket address to hexadecimal representation"); + + py::class_(m, "CurlWrapper") + .def(py::init<>()) + .def("set_url", &CurlWrapper::setUrl, "Set the URL for the request", + py::arg("url")) + .def("set_request_method", &CurlWrapper::setRequestMethod, + "Set the HTTP request method", py::arg("method")) + .def("add_header", &CurlWrapper::addHeader, + "Add a header to the request", py::arg("key"), py::arg("value")) + .def("on_error", &CurlWrapper::onError, "Set the error callback", + py::arg("callback")) + .def("on_response", &CurlWrapper::onResponse, + "Set the response callback", py::arg("callback")) + .def("set_timeout", &CurlWrapper::setTimeout, "Set the request timeout", + py::arg("timeout")) + .def("set_follow_location", &CurlWrapper::setFollowLocation, + "Set whether to follow redirects", py::arg("follow")) + .def("set_request_body", &CurlWrapper::setRequestBody, + "Set the request body", py::arg("data")) + .def("set_upload_file", &CurlWrapper::setUploadFile, + "Set the file to upload", py::arg("file_path")) + .def("set_proxy", &CurlWrapper::setProxy, + "Set the proxy for the request", py::arg("proxy")) + .def("set_ssl_options", &CurlWrapper::setSSLOptions, "Set SSL options", + py::arg("verify_peer"), py::arg("verify_host")) + .def("perform", &CurlWrapper::perform, "Perform the HTTP request") + .def("perform_async", &CurlWrapper::performAsync, + "Perform the HTTP request asynchronously") + .def("wait_all", &CurlWrapper::waitAll, + "Wait for all asynchronous requests to complete") + .def("set_max_download_speed", &CurlWrapper::setMaxDownloadSpeed, + "Set the maximum download speed", py::arg("speed")); + + py::class_(m, "DownloadManager") + .def(py::init(), "Constructor", + py::arg("task_file")) + .def("add_task", &DownloadManager::addTask, "Add a download task", + py::arg("url"), py::arg("filepath"), py::arg("priority") = 0) + .def("remove_task", &DownloadManager::removeTask, + "Remove a download task", py::arg("index")) + .def("start", &DownloadManager::start, "Start download tasks", + py::arg("thread_count") = std::thread::hardware_concurrency(), + py::arg("download_speed") = 0) + .def("pause_task", &DownloadManager::pauseTask, "Pause a download task", + py::arg("index")) + .def("resume_task", &DownloadManager::resumeTask, + "Resume a paused download task", py::arg("index")) + .def("get_downloaded_bytes", &DownloadManager::getDownloadedBytes, + "Get the number of bytes downloaded for a task", py::arg("index")) + .def("cancel_task", &DownloadManager::cancelTask, + "Cancel a download task", py::arg("index")) + .def("set_thread_count", &DownloadManager::setThreadCount, + "Set the number of download threads", py::arg("thread_count")) + .def("set_max_retries", &DownloadManager::setMaxRetries, + "Set the maximum number of retries for download errors", + py::arg("retries")) + .def("on_download_complete", &DownloadManager::onDownloadComplete, + "Register a callback for when a download completes", + py::arg("callback")) + .def("on_progress_update", &DownloadManager::onProgressUpdate, + "Register a callback for when download progress updates", + py::arg("callback")); + + py::class_(m, "HttpHeaderParser") + .def(py::init<>()) + .def("parse_headers", &HttpHeaderParser::parseHeaders, + "Parse raw HTTP headers", py::arg("raw_headers")) + .def("set_header_value", &HttpHeaderParser::setHeaderValue, + "Set the value of a specific header field", py::arg("key"), + py::arg("value")) + .def("set_headers", &HttpHeaderParser::setHeaders, + "Set multiple header fields at once", py::arg("headers")) + .def("add_header_value", &HttpHeaderParser::addHeaderValue, + "Add a new value to an existing header field", py::arg("key"), + py::arg("value")) + .def("get_header_values", &HttpHeaderParser::getHeaderValues, + "Retrieve the values of a specific header field", py::arg("key")) + .def("remove_header", &HttpHeaderParser::removeHeader, + "Remove a specific header field", py::arg("key")) + .def("get_all_headers", &HttpHeaderParser::getAllHeaders, + "Retrieve all the parsed headers") + .def("has_header", &HttpHeaderParser::hasHeader, + "Check if a specific header field exists", py::arg("key")) + .def("clear_headers", &HttpHeaderParser::clearHeaders, + "Clear all the parsed headers"); + + py::class_(m, "MimeTypes") + .def(py::init&, bool>(), + py::arg("knownFiles"), py::arg("lenient") = false) + .def("read_json", &MimeTypes::readJson) + .def("guess_type", &MimeTypes::guessType) + .def("guess_all_extensions", &MimeTypes::guessAllExtensions) + .def("guess_extension", &MimeTypes::guessExtension) + .def("add_type", &MimeTypes::addType) + .def("list_all_types", &MimeTypes::listAllTypes) + .def("guess_type_by_content", &MimeTypes::guessTypeByContent); + + py::class_(m, "TimeManager") + .def(py::init<>()) + .def("get_system_time", &TimeManager::getSystemTime, + "Get the current system time") + .def("set_system_time", &TimeManager::setSystemTime, + "Set the system time", py::arg("year"), py::arg("month"), + py::arg("day"), py::arg("hour"), py::arg("minute"), + py::arg("second")) + .def("set_system_timezone", &TimeManager::setSystemTimezone, + "Set the system timezone", py::arg("timezone")) + .def("sync_time_from_rtc", &TimeManager::syncTimeFromRTC, + "Synchronize the system time from the Real-Time Clock (RTC)") + .def("get_ntp_time", &TimeManager::getNtpTime, + "Get the Network Time Protocol (NTP) time from a specified " + "hostname", + py::arg("hostname")); + + m.def("is_port_in_use", &isPortInUse, "Check if a port is in use", + py::arg("port")); + m.def("check_and_kill_program_on_port", &checkAndKillProgramOnPort, + "Check if there is any program running on the specified port and " + "kill it if found", + py::arg("port")); + +#if defined(__linux__) || defined(__APPLE__) + m.def("dump_addr_info", &dumpAddrInfo, + "Dump address information from source to destination", py::arg("dst"), + py::arg("src")); + m.def("addr_info_to_string", &addrInfoToString, + "Convert address information to string", py::arg("addr_info"), + py::arg("json_format") = false); + m.def("get_addr_info", &getAddrInfo, + "Get address information for a given hostname and service", + py::arg("hostname"), py::arg("service")); + m.def("free_addr_info", &freeAddrInfo, "Free address information", + py::arg("addr_info")); + m.def("compare_addr_info", &compareAddrInfo, + "Compare two address information structures", py::arg("addr_info1"), + py::arg("addr_info2")); + m.def("filter_addr_info", &filterAddrInfo, + "Filter address information by family", py::arg("addr_info"), + py::arg("family")); + m.def("sort_addr_info", &sortAddrInfo, "Sort address information by family", + py::arg("addr_info")); +#endif +} diff --git a/modules/lithium.addon/pymodule.cpp b/modules/lithium.addon/pymodule.cpp new file mode 100644 index 00000000..6a959db2 --- /dev/null +++ b/modules/lithium.addon/pymodule.cpp @@ -0,0 +1,344 @@ +#include +#include + +#include "addon/addons.hpp" +#include "addon/build_manager.hpp" +#include "addon/compile_command_generator.hpp" +#include "addon/compiler.hpp" +#include "addon/compiler_output_parser.hpp" +#include "addon/dependency.hpp" +#include "addon/generator.hpp" +#include "addon/loader.hpp" +#include "addon/manager.hpp" +#include "addon/sandbox.hpp" +#include "addon/system_dependency.hpp" +#include "addon/toolchain.hpp" +#include "addon/tracker.hpp" + +namespace py = pybind11; +using namespace lithium; + +PYBIND11_MODULE(lithium_bindings, m) { + py::class_>(m, "AddonManager") + .def(py::init<>()) + .def_static("createShared", &AddonManager::createShared) + .def("addModule", &AddonManager::addModule) + .def("removeModule", &AddonManager::removeModule) + .def("getModule", &AddonManager::getModule) + .def("resolveDependencies", &AddonManager::resolveDependencies); + + py::enum_(m, "BuildSystemType") + .value("CMake", Project::BuildSystemType::CMake) + .value("Meson", Project::BuildSystemType::Meson) + .value("XMake", Project::BuildSystemType::XMake) + .value("Unknown", Project::BuildSystemType::Unknown) + .export_values(); + + py::class_(m, "Project") + .def(py::init(), + py::arg("sourceDir"), py::arg("buildDir"), + py::arg("type") = Project::BuildSystemType::Unknown) + .def("detectBuildSystem", &Project::detectBuildSystem) + .def("getSourceDir", &Project::getSourceDir) + .def("getBuildDir", &Project::getBuildDir) + .def("getBuildSystemType", &Project::getBuildSystemType); + + py::class_(m, "BuildManager") + .def(py::init<>()) + .def("scanForProjects", &BuildManager::scanForProjects) + .def("addProject", &BuildManager::addProject) + .def("getProjects", &BuildManager::getProjects) + .def("configureProject", &BuildManager::configureProject, + py::arg("project"), py::arg("buildType"), + py::arg("options") = std::vector{}, + py::arg("envVars") = std::map{}) + .def("buildProject", &BuildManager::buildProject, py::arg("project"), + py::arg("jobs") = std::nullopt) + .def("cleanProject", &BuildManager::cleanProject) + .def("installProject", &BuildManager::installProject) + .def("runTests", &BuildManager::runTests) + .def("generateDocs", &BuildManager::generateDocs); + + py::class_(m, "CompileCommandGenerator") + .def(py::init<>()) + .def("setOption", &CompileCommandGenerator::setOption, + py::return_value_policy::reference) + .def("addTarget", &CompileCommandGenerator::addTarget, + py::return_value_policy::reference) + .def("setTargetOption", &CompileCommandGenerator::setTargetOption, + py::return_value_policy::reference) + .def("addConditionalOption", + &CompileCommandGenerator::addConditionalOption, + py::return_value_policy::reference) + .def("addDefine", &CompileCommandGenerator::addDefine, + py::return_value_policy::reference) + .def("addFlag", &CompileCommandGenerator::addFlag, + py::return_value_policy::reference) + .def("addLibrary", &CompileCommandGenerator::addLibrary, + py::return_value_policy::reference) + .def("setCommandTemplate", &CompileCommandGenerator::setCommandTemplate, + py::return_value_policy::reference) + .def("setCompiler", &CompileCommandGenerator::setCompiler, + py::return_value_policy::reference) + .def("loadConfigFromFile", &CompileCommandGenerator::loadConfigFromFile) + .def("generate", &CompileCommandGenerator::generate); + + py::enum_(m, "MessageType") + .value("ERROR", MessageType::ERROR) + .value("WARNING", MessageType::WARNING) + .value("NOTE", MessageType::NOTE) + .value("UNKNOWN", MessageType::UNKNOWN) + .export_values(); + + py::class_(m, "Message") + .def(py::init(), + py::arg("type"), py::arg("file"), py::arg("line"), + py::arg("column"), py::arg("errorCode"), py::arg("functionName"), + py::arg("message"), py::arg("context")) + .def_readwrite("type", &Message::type) + .def_readwrite("file", &Message::file) + .def_readwrite("line", &Message::line) + .def_readwrite("column", &Message::column) + .def_readwrite("errorCode", &Message::errorCode) + .def_readwrite("functionName", &Message::functionName) + .def_readwrite("message", &Message::message) + .def_readwrite("context", &Message::context) + .def_readwrite("relatedNotes", &Message::relatedNotes); + + py::class_(m, "CompilerOutputParser") + .def(py::init<>()) + .def("parseLine", &CompilerOutputParser::parseLine) + .def("parseFile", &CompilerOutputParser::parseFile) + .def("parseFileMultiThreaded", + &CompilerOutputParser::parseFileMultiThreaded) + .def("getReport", &CompilerOutputParser::getReport, + py::arg("detailed") = true) + .def("generateHtmlReport", &CompilerOutputParser::generateHtmlReport) + .def("generateJsonReport", &CompilerOutputParser::generateJsonReport) + .def("setCustomRegexPattern", + &CompilerOutputParser::setCustomRegexPattern); + + py::class_(m, "Compiler") + .def(py::init<>()) + .def("compileToSharedLibrary", &Compiler::compileToSharedLibrary, + py::arg("code"), py::arg("moduleName"), py::arg("functionName"), + py::arg("optionsFile") = "compile_options.json") + .def("addCompileOptions", &Compiler::addCompileOptions) + .def("getAvailableCompilers", &Compiler::getAvailableCompilers) + .def("generateCompileCommands", &Compiler::generateCompileCommands); + + py::class_(m, "DependencyGraph") + .def(py::init<>()) + .def("addNode", &DependencyGraph::addNode) + .def("addDependency", &DependencyGraph::addDependency) + .def("removeNode", &DependencyGraph::removeNode) + .def("removeDependency", &DependencyGraph::removeDependency) + .def("getDependencies", &DependencyGraph::getDependencies) + .def("getDependents", &DependencyGraph::getDependents) + .def("hasCycle", &DependencyGraph::hasCycle) + .def("topologicalSort", &DependencyGraph::topologicalSort) + .def("getAllDependencies", &DependencyGraph::getAllDependencies) + .def("loadNodesInParallel", &DependencyGraph::loadNodesInParallel) + .def("resolveDependencies", &DependencyGraph::resolveDependencies); + + py::class_(m, "CppMemberGenerator") + .def_static("generate", &CppMemberGenerator::generate); + + py::class_(m, "CppConstructorGenerator") + .def_static("generate", &CppConstructorGenerator::generate); + + py::class_(m, "CppDestructorGenerator") + .def_static("generate", &CppDestructorGenerator::generate); + + py::class_(m, "CppCopyMoveGenerator") + .def_static("generate", &CppCopyMoveGenerator::generate); + + py::class_(m, "CppMethodGenerator") + .def_static("generate", &CppMethodGenerator::generate); + + py::class_(m, "CppAccessorGenerator") + .def_static("generate", &CppAccessorGenerator::generate); + + py::class_(m, "CppMutatorGenerator") + .def_static("generate", &CppMutatorGenerator::generate); + + py::class_(m, "CppFriendFunctionGenerator") + .def_static("generate", &CppFriendFunctionGenerator::generate); + + py::class_(m, "CppFriendClassGenerator") + .def_static("generate", &CppFriendClassGenerator::generate); + + py::class_(m, "CppOperatorOverloadGenerator") + .def_static("generate", &CppOperatorOverloadGenerator::generate); + + py::class_(m, "CppCodeGenerator") + .def_static("generate", &CppCodeGenerator::generate); + + py::class_>(m, "ModuleLoader") + .def(py::init()) + .def_static("createShared", + py::overload_cast<>(&ModuleLoader::createShared)) + .def_static("createShared", + py::overload_cast(&ModuleLoader::createShared)) + .def("loadModule", &ModuleLoader::loadModule) + .def("unloadModule", &ModuleLoader::unloadModule) + .def("unloadAllModules", &ModuleLoader::unloadAllModules) + .def("hasModule", &ModuleLoader::hasModule) + .def("getModule", &ModuleLoader::getModule) + .def("enableModule", &ModuleLoader::enableModule) + .def("disableModule", &ModuleLoader::disableModule) + .def("isModuleEnabled", &ModuleLoader::isModuleEnabled) + .def("getAllExistedModules", &ModuleLoader::getAllExistedModules) + .def("hasFunction", &ModuleLoader::hasFunction); + + py::class_>( + m, "ComponentManager") + .def(py::init<>()) + .def("initialize", &ComponentManager::initialize) + .def("destroy", &ComponentManager::destroy) + .def_static("createShared", &ComponentManager::createShared) + .def("loadComponent", &ComponentManager::loadComponent) + .def("unloadComponent", &ComponentManager::unloadComponent) + .def("reloadComponent", &ComponentManager::reloadComponent) + .def("reloadAllComponents", &ComponentManager::reloadAllComponents) + .def("scanComponents", &ComponentManager::scanComponents) + .def("getComponent", &ComponentManager::getComponent) + .def("getComponentInfo", &ComponentManager::getComponentInfo) + .def("getComponentList", &ComponentManager::getComponentList) + .def("getComponentDoc", &ComponentManager::getComponentDoc) + .def("hasComponent", &ComponentManager::hasComponent) + .def("savePackageLock", &ComponentManager::savePackageLock) + // .def("printDependencyTree", &ComponentManager::printDependencyTree) + .def("compileAndLoadComponent", + &ComponentManager::compileAndLoadComponent); + + py::class_(m, "Sandbox") + .def(py::init<>()) + .def("setTimeLimit", &Sandbox::setTimeLimit) + .def("setMemoryLimit", &Sandbox::setMemoryLimit) + .def("setRootDirectory", &Sandbox::setRootDirectory) + .def("setUserId", &Sandbox::setUserId) + .def("setProgramPath", &Sandbox::setProgramPath) + .def("setProgramArgs", &Sandbox::setProgramArgs) + .def("run", &Sandbox::run) + .def("getTimeUsed", &Sandbox::getTimeUsed) + .def("getMemoryUsed", &Sandbox::getMemoryUsed); + + py::class_(m, "MultiSandbox") + .def(py::init<>()) + .def("createSandbox", &MultiSandbox::createSandbox) + .def("removeSandbox", &MultiSandbox::removeSandbox) + .def("runAll", &MultiSandbox::runAll) + .def("getSandboxTimeUsed", &MultiSandbox::getSandboxTimeUsed) + .def("getSandboxMemoryUsed", &MultiSandbox::getSandboxMemoryUsed); + + py::enum_(m, "LogLevel") + .value("INFO", LogLevel::INFO) + .value("WARNING", LogLevel::WARNING) + .value("ERROR", LogLevel::ERROR) + .export_values(); + + py::class_(m, "DependencyException") + .def(py::init()) + .def("what", &DependencyException::what); + + py::class_(m, "DependencyInfo") + .def(py::init<>()) + .def_readwrite("name", &DependencyInfo::name) + .def_readwrite("version", &DependencyInfo::version); + + py::class_(m, "DependencyManager") + .def(py::init>()) + .def("setLogCallback", &DependencyManager::setLogCallback) + .def("checkAndInstallDependencies", + &DependencyManager::checkAndInstallDependencies) + .def("setCustomInstallCommand", + &DependencyManager::setCustomInstallCommand) + .def("generateDependencyReport", + &DependencyManager::generateDependencyReport) + .def("uninstallDependency", &DependencyManager::uninstallDependency) + .def("getCurrentPlatform", &DependencyManager::getCurrentPlatform) + .def("installDependencyAsync", + &DependencyManager::installDependencyAsync) + .def("cancelInstallation", &DependencyManager::cancelInstallation); + + py::enum_(m, "ToolchainType") + .value("Compiler", Toolchain::Type::Compiler) + .value("BuildTool", Toolchain::Type::BuildTool) + .value("Unknown", Toolchain::Type::Unknown) + .export_values(); + + py::class_(m, "Toolchain") + .def(py::init(), + py::arg("name"), py::arg("compiler"), py::arg("buildTool"), + py::arg("version"), py::arg("path"), + py::arg("type") = Toolchain::Type::Unknown) + .def("displayInfo", &Toolchain::displayInfo) + .def("getName", &Toolchain::getName) + .def("getCompiler", &Toolchain::getCompiler) + .def("getBuildTool", &Toolchain::getBuildTool) + .def("getVersion", &Toolchain::getVersion) + .def("getPath", &Toolchain::getPath) + .def("getType", &Toolchain::getType) + .def("setVersion", &Toolchain::setVersion) + .def("setPath", &Toolchain::setPath) + .def("setType", &Toolchain::setType) + .def("isCompatibleWith", &Toolchain::isCompatibleWith); + + py::class_(m, "ToolchainManager") + .def(py::init<>()) + .def("scanForToolchains", &ToolchainManager::scanForToolchains) + .def("listToolchains", &ToolchainManager::listToolchains) + .def("selectToolchain", &ToolchainManager::selectToolchain) + .def("saveConfig", &ToolchainManager::saveConfig) + .def("loadConfig", &ToolchainManager::loadConfig) + .def("getToolchains", &ToolchainManager::getToolchains) + .def("getAvailableCompilers", &ToolchainManager::getAvailableCompilers) + .def("getAvailableBuildTools", + &ToolchainManager::getAvailableBuildTools) + .def("addToolchain", &ToolchainManager::addToolchain) + .def("removeToolchain", &ToolchainManager::removeToolchain) + .def("updateToolchain", &ToolchainManager::updateToolchain) + .def("findToolchain", &ToolchainManager::findToolchain) + .def("findToolchains", &ToolchainManager::findToolchains) + .def("suggestCompatibleToolchains", + &ToolchainManager::suggestCompatibleToolchains) + .def("registerCustomToolchain", + &ToolchainManager::registerCustomToolchain) + .def("setDefaultToolchain", &ToolchainManager::setDefaultToolchain) + .def("getDefaultToolchain", &ToolchainManager::getDefaultToolchain) + .def("addSearchPath", &ToolchainManager::addSearchPath) + .def("removeSearchPath", &ToolchainManager::removeSearchPath) + .def("getSearchPaths", &ToolchainManager::getSearchPaths) + .def("setToolchainAlias", &ToolchainManager::setToolchainAlias) + .def("getToolchainByAlias", &ToolchainManager::getToolchainByAlias); + + py::class_(m, "FileTracker") + .def(py::init, bool>(), + py::arg("directory"), py::arg("jsonFilePath"), + py::arg("fileTypes"), py::arg("recursive") = false) + .def("scan", &FileTracker::scan) + .def("compare", &FileTracker::compare) + .def("logDifferences", &FileTracker::logDifferences) + .def("recover", &FileTracker::recover) + .def("asyncScan", &FileTracker::asyncScan) + .def("asyncCompare", &FileTracker::asyncCompare) + .def("getDifferences", &FileTracker::getDifferences) + .def("getTrackedFileTypes", &FileTracker::getTrackedFileTypes) + /* + TODO: Implement this in the future + .def("forEachFile", + [](FileTracker& self, py::function func) { + self.forEachFile( + [&func](const fs::path& path) { func(path.string()); }); + }) + */ + .def("getFileInfo", &FileTracker::getFileInfo) + .def("addFileType", &FileTracker::addFileType) + .def("removeFileType", &FileTracker::removeFileType) + .def("setEncryptionKey", &FileTracker::setEncryptionKey); +} diff --git a/modules/lithium.config/CMakeLists.txt b/modules/lithium.config/CMakeLists.txt index 768ba743..c34f0187 100644 --- a/modules/lithium.config/CMakeLists.txt +++ b/modules/lithium.config/CMakeLists.txt @@ -19,6 +19,8 @@ set(${PROJECT_NAME}_LIBS atom-component atom-error lithium-config + lithium-script + lithium-addon loguru ${CMAKE_THREAD_LIBS_INIT} ) @@ -49,12 +51,3 @@ set_target_properties(${PROJECT_NAME} PROPERTIES install(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) - -add_executable(${PROJECT_NAME}_TEST _test.cpp) -target_link_libraries(${PROJECT_NAME}_TEST ${PROJECT_NAME}) -if(CMAKE_BUILD_TYPE STREQUAL "Debug") - target_compile_definitions(${PROJECT_NAME}_TEST PRIVATE _DEBUG) -endif() -set_target_properties(${PROJECT_NAME}_TEST PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} -) diff --git a/modules/lithium.config/_test.cpp b/modules/lithium.config/_test.cpp deleted file mode 100644 index bebf504c..00000000 --- a/modules/lithium.config/_test.cpp +++ /dev/null @@ -1,35 +0,0 @@ -/* - * _test.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-4-13 - -Description: Test Script - -**************************************************/ - -#include "_component.hpp" - -#include "atom/type/json.hpp" -using json = nlohmann::json; - -#include - -int main(int argc, char* argv[]) { - auto config = std::make_shared("lithium.config"); - json test_value = {{"key", "value"}}; - auto result = - config->dispatch("getConfig", std::string("config/server/host")); - try { - std::cout << std::any_cast>(result).value().dump() - << std::endl; - } catch (const std::bad_any_cast& e) { - std::cout << "Error: " << e.what() << std::endl; - } - std::cout << "Hello, World!" << std::endl; - return 0; -} diff --git a/modules/lithium.config/component.cpp b/modules/lithium.config/component.cpp index 76bd9989..9856f0fa 100644 --- a/modules/lithium.config/component.cpp +++ b/modules/lithium.config/component.cpp @@ -17,6 +17,7 @@ Description: Config Component for Atom Addon #include "config/configor.hpp" +#include "atom/function/overload.hpp" #include "atom/log/loguru.hpp" #include "atom/tests/test.hpp" #include "atom/type/json.hpp" @@ -27,7 +28,10 @@ ATOM_MODULE(lithium_config, [](Component& com) { DLOG_F(INFO, "Loading module {}", com.getName()); com.def("getConfig", &lithium::ConfigManager::getValue, mConfigManager); - com.def("setConfig", &lithium::ConfigManager::setValue, mConfigManager); + com.def("setConfig", + atom::meta::overload_cast( + &lithium::ConfigManager::setValue), + mConfigManager); com.def("hasConfig", &lithium::ConfigManager::hasValue, mConfigManager); com.def("deleteConfig", &lithium::ConfigManager::deleteValue, mConfigManager); diff --git a/modules/lithium.config/pymodule.cpp b/modules/lithium.config/pymodule.cpp index ba052e36..9aef2d71 100644 --- a/modules/lithium.config/pymodule.cpp +++ b/modules/lithium.config/pymodule.cpp @@ -1,26 +1,56 @@ +#include #include #include +#include #include "config/configor.hpp" namespace py = pybind11; +using namespace lithium; -static auto mConfigManager = lithium::ConfigManager::createShared(); - -PYBIND11_MODULE(lithium_config, m) { - py::class_>( - m, "ConfigManager") - .def("getConfig", &lithium::ConfigManager::getValue) - .def("setConfig", &lithium::ConfigManager::setValue) - .def("hasConfig", &lithium::ConfigManager::hasValue) - .def("deleteConfig", &lithium::ConfigManager::deleteValue) - .def("loadConfig", &lithium::ConfigManager::loadFromFile) - .def("loadConfigs", &lithium::ConfigManager::loadFromDir) - .def("saveConfig", &lithium::ConfigManager::saveToFile) - .def("tidyConfig", &lithium::ConfigManager::tidyConfig) - .def("clearConfig", &lithium::ConfigManager::clearConfig) - .def("asyncLoadConfig", &lithium::ConfigManager::asyncLoadFromFile) - .def("asyncSaveConfig", &lithium::ConfigManager::asyncSaveToFile); - - m.attr("config_instance") = mConfigManager; +PYBIND11_MODULE(configor, m) { + py::class_>(m, + "ConfigManager") + .def(py::init<>()) + .def_static("create_shared", &ConfigManager::createShared, + "Creates a shared pointer instance of ConfigManager.") + .def_static("create_unique", &ConfigManager::createUnique, + "Creates a unique pointer instance of ConfigManager.") + .def("get_value", &ConfigManager::getValue, py::arg("key_path"), + "Retrieves the value associated with the given key path.") + .def("set_value", &ConfigManager::setValue, py::arg("key_path"), + py::arg("value"), "Sets the value for the specified key path.") + .def("append_value", &ConfigManager::appendValue, py::arg("key_path"), + py::arg("value"), + "Appends a value to an array at the specified key path.") + .def("delete_value", &ConfigManager::deleteValue, py::arg("key_path"), + "Deletes the value associated with the given key path.") + .def("has_value", &ConfigManager::hasValue, py::arg("key_path"), + "Checks if a value exists for the given key path.") + .def("get_keys", &ConfigManager::getKeys, + "Retrieves all keys in the configuration.") + .def("list_paths", &ConfigManager::listPaths, + "Lists all configuration files in specified directory.") + .def("load_from_file", &ConfigManager::loadFromFile, py::arg("path"), + "Loads configuration data from a file.") + .def("load_from_dir", &ConfigManager::loadFromDir, py::arg("dir_path"), + py::arg("recursive") = false, + "Loads configuration data from a directory.") + .def("save_to_file", &ConfigManager::saveToFile, py::arg("file_path"), + "Saves the current configuration to a file.") + .def("tidy_config", &ConfigManager::tidyConfig, + "Cleans up the configuration by removing unused entries or " + "optimizing data.") + .def("clear_config", &ConfigManager::clearConfig, + "Clears all configuration data.") + .def("merge_config", + py::overload_cast(&ConfigManager::mergeConfig), + py::arg("src"), + "Merges the current configuration with the provided JSON data.") + .def("async_load_from_file", &ConfigManager::asyncLoadFromFile, + py::arg("path"), py::arg("callback"), + "Asynchronously loads configuration data from a file.") + .def("async_save_to_file", &ConfigManager::asyncSaveToFile, + py::arg("file_path"), py::arg("callback"), + "Asynchronously saves the current configuration to a file."); } diff --git a/modules/lithium.cxxtools/CMakeLists.txt b/modules/lithium.cxxtools/CMakeLists.txt index 0d4cf457..4aea0346 100644 --- a/modules/lithium.cxxtools/CMakeLists.txt +++ b/modules/lithium.cxxtools/CMakeLists.txt @@ -1,22 +1,5 @@ -# CMakeLists.txt for lithium.cxxtools -# This project is licensed under the terms of the GPL3 license. -# -# Author: Max Qian -# License: GPL3 - cmake_minimum_required(VERSION 3.20) -project(lithium.cxxtools) - -set(CMAKE_LITHIUM_CXXTOOLS_VERSION_MAJOR 1) -set(CMAKE_LITHIUM_CXXTOOLS_VERSION_MINOR 0) -set(CMAKE_LITHIUM_CXXTOOLS_VERSION_RELEASE 0) - -set(LITHIUM_CXXTOOLS_SOVERSION ${CMAKE_LITHIUM_CXXTOOLS_VERSION_MAJOR}) -set(CMAKE_LITHIUM_CXXTOOLS_VERSION_STRING "${CMAKE_LITHIUM_CXXTOOLS_VERSION_MAJOR}.${CMAKE_LITHIUM_CXXTOOLS_VERSION_MINOR}.${CMAKE_LITHIUM_CXXTOOLS_VERSION_RELEASE}") -set(LITHIUM_CXXTOOLS_VERSION ${CMAKE_LITHIUM_CXXTOOLS_VERSION_MAJOR}.${CMAKE_LITHIUM_CXXTOOLS_VERSION_MINOR}.${CMAKE_LITHIUM_CXXTOOLS_VERSION_RELEASE}) - -# Set the C++ standard -set(CMAKE_CXX_STANDARD 20) +project(lithium.cxxtools VERSION 1.0.0) # Add source files set(SOURCE_FILES @@ -26,12 +9,11 @@ set(SOURCE_FILES src/json2xml.cpp src/xml2json.cpp src/pci_generator.cpp - - _component.cpp - _main.cpp + component.cpp ) -set(${PROJECT_NAME}_LIBS +# Libraries to link +set(LIBS atom-component atom-utils atom-error @@ -41,10 +23,10 @@ set(${PROJECT_NAME}_LIBS ) # Create the module library -add_library(lithium.cxxtools SHARED ${SOURCE_FILES}) -target_link_libraries(lithium.cxxtools ${${PROJECT_NAME}_LIBS}) +add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES}) +target_link_libraries(${PROJECT_NAME} ${LIBS}) # Include directories -target_include_directories(lithium.cxxtools PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) +target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) -add_subdirectory(tests) +add_subdirectory(tests) \ No newline at end of file diff --git a/modules/lithium.cxxtools/_component.cpp b/modules/lithium.cxxtools/_component.cpp deleted file mode 100644 index 1bdefd37..00000000 --- a/modules/lithium.cxxtools/_component.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/* - * _component.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-05-26 - -Description: Some useful tools written in c++ - -**************************************************/ - -#include "_component.hpp" - -#include "atom/log/loguru.hpp" - -#include "csv2json.hpp" -#include "ini2json.hpp" -#include "json2ini.hpp" -#include "json2xml.hpp" -#include "pci_generator.hpp" -#include "xml2json.hpp" - -using namespace lithium::cxxtools; - -ToolsComponent::ToolsComponent(const std::string& name) : Component(name) { - LOG_F(INFO, "ToolsComponent Constructed"); - - def("csv_to_json", &csvToJson, "lithium.cxxtools", "Convert csv to json"); - def("ini_to_json", &iniToJson, "lithium.cxxtools", "Convert ini to json"); - def("json_to_ini", &jsonToIni, "lithium.cxxtools", "Convert json to ini"); - def("json_to_xml", &jsonToXml, "lithium.cxxtools", "Convert json to xml"); - def("xml_to_json", &xmlToJson, "lithium.cxxtools", "Convert xml to json"); - def("pci_generator", &parseAndGeneratePCIInfo, "lithium.cxxtools", - "Generate pci id"); -} - -ToolsComponent::~ToolsComponent() { LOG_F(INFO, "ToolsComponent Destructed"); } - -auto ToolsComponent::initialize() -> bool { - LOG_F(INFO, "ToolsComponent Initialized"); - return true; -} - -auto ToolsComponent::destroy() -> bool { - LOG_F(INFO, "ToolsComponent Destroyed"); - return true; -} diff --git a/modules/lithium.cxxtools/_component.hpp b/modules/lithium.cxxtools/_component.hpp deleted file mode 100644 index 3b8ff34f..00000000 --- a/modules/lithium.cxxtools/_component.hpp +++ /dev/null @@ -1,29 +0,0 @@ - -/* - * _component.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-05-26 - -Description: Some useful tools written in c++ - -**************************************************/ - -#ifndef LITHIUM_CXXTOOLS_COMPONENT_HPP -#define LITHIUM_CXXTOOLS_COMPONENT_HPP - -#include "atom/components/component.hpp" - -class ToolsComponent : public Component { -public: - explicit ToolsComponent(const std::string& name); - ~ToolsComponent() override; - - auto initialize() -> bool override; - auto destroy() -> bool override; -}; -#endif diff --git a/modules/lithium.cxxtools/_main.cpp b/modules/lithium.cxxtools/_main.cpp deleted file mode 100644 index 9db57884..00000000 --- a/modules/lithium.cxxtools/_main.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* - * _main.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-05-26 - -Description: Main Entry - -**************************************************/ - -#include "_component.hpp" - -#include "atom/type/json.hpp" -#include "atom/macro.hpp" -using json = nlohmann::json; - -ATOM_C { -auto getInstance(ATOM_UNUSED const json ¶ms) -> std::shared_ptr { - if (params.contains("name") && params["name"].is_string()) { - return std::make_shared( - params["name"].get()); - } - return std::make_shared("lithium.cxxtools"); -} -} diff --git a/modules/lithium.cxxtools/component.cpp b/modules/lithium.cxxtools/component.cpp new file mode 100644 index 00000000..cefb809c --- /dev/null +++ b/modules/lithium.cxxtools/component.cpp @@ -0,0 +1,56 @@ +/* + * _component.cpp + * + * Copyright (C) 2023-2024 Max Qian + */ + +/************************************************* + +Date: 2024-05-26 + +Description: Some useful tools written in c++ + +**************************************************/ + +#include "atom/components/component.hpp" +#include "atom/components/registry.hpp" + +#include "atom/log/loguru.hpp" + +#include "csv2json.hpp" +#include "ini2json.hpp" +#include "json2csv.hpp" +#include "json2ini.hpp" +#include "json2xml.hpp" +#include "json2yaml.hpp" +#include "pci_generator.hpp" +#include "xml2json.hpp" +#include "yaml2json.hpp" + +using namespace lithium::cxxtools::detail; +using namespace lithium::cxxtools::converters; + +ATOM_MODULE(lithium_image, [](Component& com) { + LOG_F(INFO, "Lithium Image Component Constructed"); + + com.def("csv2json", &Csv2Json::convert, "utils", + "Convert a CSV file to JSON format"); + com.def("json2csv", &JsonToCsvConverter::convert, "utils", + "Convert a JSON file to CSV format"); + com.def("ini2json", &Ini2Json::convert, "utils", + "Convert an INI file to JSON format"); + com.def("json2ini", &JsonToIniConverter::convert, "utils", + "Convert a JSON file to INI format"); + com.def("json2xml", &JsonToXmlConverter::convert, "utils", + "Convert a JSON file to XML format"); + com.def("xml2json", &Xml2Json::convert, "utils", + "Convert an XML file to JSON format"); + com.def("yaml2json", &Yaml2Json::convert, "utils", + "Convert a YAML file to JSON format"); + com.def("json2yaml", &JsonToYamlConverter::convert, "utils", + + "Convert a JSON file to YAML format"); + + com.def("generate_pci", &parseAndGeneratePCIInfo, "utils", + "Generate PCI device ID"); +}); \ No newline at end of file diff --git a/modules/lithium.cxxtools/docs/nc.md b/modules/lithium.cxxtools/docs/nc.md new file mode 100644 index 00000000..42073986 --- /dev/null +++ b/modules/lithium.cxxtools/docs/nc.md @@ -0,0 +1,112 @@ +# Network Client Application Documentation + +## Overview + +The `Network Client Application` is a tool designed to send files or messages over TCP or UDP protocols. It uses the `ASIO` library for network communication and `loguru` for logging. The application supports both TCP and UDP modes, allowing users to specify a timeout for TCP connections and optionally send a file. + +## Dependencies + +- **ASIO**: A cross-platform C++ library for network and low-level I/O programming. +- **loguru**: A logging library used for logging operations. + +## Constants + +- **MAX_LENGTH**: The maximum length of the buffer used for reading and sending data. +- **ARG_COUNT_MIN**: The minimum number of command-line arguments required. +- **ARG_COUNT_MAX**: The maximum number of command-line arguments allowed. +- **DEFAULT_TIMEOUT_SECONDS**: The default timeout in seconds for TCP connections. + +## Functions + +### `sendFileTcp(tcp::socket& socket, const std::string& filename)` + +Sends a file over a TCP connection. + +- **Parameters:** + + - `socket`: The TCP socket to send the file through. + - `filename`: The name of the file to send. + +- **Example:** + ```cpp + asio::io_context ioContext; + tcp::resolver resolver(ioContext); + auto endpoints = resolver.resolve("localhost", "12345"); + tcp::socket socket(ioContext); + asio::connect(socket, endpoints); + sendFileTcp(socket, "example.txt"); + ``` + +### `sendFileUdp(udp::socket& socket, const udp::endpoint& endpoint, const std::string& filename)` + +Sends a file over a UDP connection. + +- **Parameters:** + + - `socket`: The UDP socket to send the file through. + - `endpoint`: The endpoint to send the file to. + - `filename`: The name of the file to send. + +- **Example:** + ```cpp + asio::io_context ioContext; + udp::resolver resolver(ioContext); + udp::resolver::results_type endpoints = resolver.resolve(udp::v4(), "localhost", "12345"); + udp::socket socket(ioContext); + socket.open(udp::v4()); + sendFileUdp(socket, *endpoints.begin(), "example.txt"); + ``` + +### `runTcpClient(const std::string& host, const std::string& port, int timeoutSeconds, const std::optional& filename = std::nullopt)` + +Runs the TCP client mode. + +- **Parameters:** + + - `host`: The host to connect to. + - `port`: The port to connect to. + - `timeoutSeconds`: The timeout in seconds for the TCP connection. + - `filename`: An optional filename to send over the TCP connection. + +- **Example:** + ```cpp + runTcpClient("localhost", "12345", 10, "example.txt"); + ``` + +### `runUdpClient(const std::string& host, const std::string& port, const std::optional& filename = std::nullopt)` + +Runs the UDP client mode. + +- **Parameters:** + + - `host`: The host to connect to. + - `port`: The port to connect to. + - `filename`: An optional filename to send over the UDP connection. + +- **Example:** + ```cpp + runUdpClient("localhost", "12345", "example.txt"); + ``` + +### `main(int argc, char* argv[]) -> int` + +The main function that initializes the application, parses command-line arguments, and starts the appropriate client mode. + +- **Parameters:** + + - `argc`: The number of command-line arguments. + - `argv`: The array of command-line arguments. + +- **Returns:** An integer representing the exit status. + +- **Example:** + ```bash + ./nc tcp localhost 12345 10 example.txt + ``` + +## Notes + +- The application supports both TCP and UDP protocols. +- Users can specify a timeout for TCP connections. +- The application can optionally send a file over the network. +- Logging is used extensively to provide detailed information about the operations being performed. diff --git a/modules/lithium.cxxtools/docs/proxy.md b/modules/lithium.cxxtools/docs/proxy.md new file mode 100644 index 00000000..67f1707e --- /dev/null +++ b/modules/lithium.cxxtools/docs/proxy.md @@ -0,0 +1,212 @@ +# NetworkProxy Class Documentation + +## Overview + +The `NetworkProxy` class is designed to manage network proxy settings on both Windows and Linux operating systems. It provides functionalities to set, disable, and retrieve proxy settings, install and uninstall certificates, and manage the hosts file. The class is part of the `lithium::cxxtools` namespace and leverages platform-specific implementations to handle proxy-related operations. + +## Class Methods + +### `setProxy(const std::string& proxy, NetworkProxy::ProxyMode mode, const std::string& listenIP, const std::string& dns) -> bool` + +Sets the network proxy with the specified parameters. + +- **Parameters:** + + - `proxy`: The proxy server address. + - `mode`: The proxy mode (e.g., Hosts, PAC, System). + - `listenIP`: The IP address to listen on. + - `dns`: The DNS server address. + +- **Returns:** `true` if the proxy was set successfully, `false` otherwise. + +### `disableProxy() const -> bool` + +Disables the network proxy. + +- **Returns:** `true` if the proxy was disabled successfully, `false` otherwise. + +### `getCurrentProxy() -> std::string` + +Retrieves the current proxy settings. + +- **Returns:** A string representing the current proxy server address. + +### `installCertificate(const std::string& certPath) const -> bool` + +Installs a certificate from the specified path. + +- **Parameters:** + + - `certPath`: The path to the certificate file. + +- **Returns:** `true` if the certificate was installed successfully, `false` otherwise. + +### `uninstallCertificate(const std::string& certName) const -> bool` + +Uninstalls a certificate by its name. + +- **Parameters:** + + - `certName`: The name of the certificate to uninstall. + +- **Returns:** `true` if the certificate was uninstalled successfully, `false` otherwise. + +### `viewCertificateInfo(const std::string& certName) const -> std::string` + +Retrieves information about a certificate by its name. + +- **Parameters:** + + - `certName`: The name of the certificate. + +- **Returns:** A string containing the certificate information. + +### `editHostsFile(const std::vector>& hostsEntries)` + +Edits the hosts file with the specified entries. + +- **Parameters:** + - `hostsEntries`: A vector of pairs where each pair represents an IP address and a hostname. + +### `resetHostsFile()` + +Resets the hosts file to its default state. + +### `enableHttpToHttpsRedirect(bool enable)` + +Enables or disables HTTP to HTTPS redirection. + +- **Parameters:** + - `enable`: `true` to enable redirection, `false` to disable. + +### `setCustomDoH(const std::string& dohUrl)` + +Sets a custom DNS-over-HTTPS (DoH) URL. + +- **Parameters:** + - `dohUrl`: The DoH URL to set. + +### `getProxyModeName(ProxyMode mode) -> std::string` + +Returns the name of the specified proxy mode. + +- **Parameters:** + + - `mode`: The proxy mode. + +- **Returns:** A string representing the name of the proxy mode. + +## Platform-Specific Implementations + +### Windows + +#### `setWindowsProxy(const std::string& proxy) const -> bool` + +Sets the proxy settings on a Windows system using the Windows Registry. + +#### `disableWindowsProxy() const -> bool` + +Disables the proxy settings on a Windows system using the Windows Registry. + +#### `getWindowsCurrentProxy() const -> std::string` + +Retrieves the current proxy settings from the Windows Registry. + +#### `installWindowsCertificate(const std::string& certPath) const -> bool` + +Installs a certificate on a Windows system using the `certutil` command. + +#### `uninstallWindowsCertificate(const std::string& certName) const -> bool` + +Uninstalls a certificate on a Windows system using the `certutil` command. + +#### `viewWindowsCertificateInfo(const std::string& certName) const -> std::string` + +Retrieves information about a certificate on a Windows system using the `certutil` command. + +#### `editWindowsHostsFile(const std::vector>& hostsEntries) const` + +Edits the Windows hosts file with the specified entries. + +#### `resetWindowsHostsFile() const` + +Resets the Windows hosts file to its default state. + +### Linux + +#### `setLinuxProxy(const std::string& proxy) const -> bool` + +Sets the proxy settings on a Linux system using environment variables. + +#### `disableLinuxProxy() -> bool` + +Disables the proxy settings on a Linux system by unsetting environment variables. + +#### `getLinuxCurrentProxy() -> std::string` + +Retrieves the current proxy settings from the Linux environment variables. + +#### `installLinuxCertificate(const std::string& certPath) -> bool` + +Installs a certificate on a Linux system using the `update-ca-certificates` command. + +#### `uninstallLinuxCertificate(const std::string& certName) -> bool` + +Uninstalls a certificate on a Linux system using the `update-ca-certificates` command. + +#### `viewLinuxCertificateInfo(const std::string& certName) -> std::string` + +Retrieves information about a certificate on a Linux system using the `openssl` command. + +#### `editLinuxHostsFile(const std::vector>& hostsEntries) const` + +Edits the Linux hosts file with the specified entries. + +#### `resetLinuxHostsFile() const` + +Resets the Linux hosts file to its default state. + +## Dependencies + +- **loguru**: A logging library used for logging operations. +- **atom/system/command.hpp**: A utility for executing system commands. + +## Usage Example + +```cpp +#include "proxy.hpp" + +int main() { + lithium::cxxtools::NetworkProxy proxy; + + // Set proxy + proxy.setProxy("http://proxy.example.com:8080", lithium::cxxtools::NetworkProxy::ProxyMode::System, "0.0.0.0", "8.8.8.8"); + + // Disable proxy + proxy.disableProxy(); + + // Install certificate + proxy.installCertificate("path/to/certificate.crt"); + + // Uninstall certificate + proxy.uninstallCertificate("certificate.crt"); + + // Edit hosts file + std::vector> hostsEntries = { + {"127.0.0.1", "localhost"}, + {"192.168.1.1", "example.com"} + }; + proxy.editHostsFile(hostsEntries); + + // Reset hosts file + proxy.resetHostsFile(); + + return 0; +} +``` + +## Notes + +- The class uses platform-specific code to handle proxy settings, certificate management, and hosts file operations. +- Logging is used extensively to provide detailed information about the operations being performed. +- The class is designed to be cross-platform, with separate implementations for Windows and Linux. diff --git a/modules/lithium.cxxtools/docs/symbol.md b/modules/lithium.cxxtools/docs/symbol.md new file mode 100644 index 00000000..93233c11 --- /dev/null +++ b/modules/lithium.cxxtools/docs/symbol.md @@ -0,0 +1,307 @@ +# Symbol Analyzer Documentation + +## Overview + +The `Symbol Analyzer` is a tool designed to analyze the symbols within a shared library or executable. It uses the `readelf` command to extract symbol information and provides functionalities to parse, filter, and export these symbols in various formats such as CSV, JSON, and YAML. The tool is designed to be highly efficient, leveraging multithreading for parsing large outputs. + +## Dependencies + +- **loguru**: A logging library used for logging operations. +- **atom/error/exception.hpp**: Custom exception handling. +- **atom/function/abi.hpp**: ABI-related functionalities. +- **atom/type/json.hpp**: JSON handling using `nlohmann::json`. +- **yaml-cpp/yaml.h**: YAML handling using `yaml-cpp`. + +## Constants + +- **BUFFER_SIZE**: Size of the buffer used for reading command output. +- **MATCH_SIZE**: Number of matches expected in the symbol regex. +- **MATCH_INDEX**: Index of the symbol name in the regex match. + +## Functions + +### `exec(const std::string& cmd) -> std::string` + +Executes a system command and returns its output as a string. + +- **Parameters:** + + - `cmd`: The command to execute. + +- **Returns:** The output of the command as a string. + +- **Example:** + ```cpp + std::string output = exec("ls -l"); + std::cout << "Command output: " << output << std::endl; + ``` + +### `parseReadelfOutput(const std::string_view output) -> std::vector` + +Parses the output of the `readelf` command and extracts symbols. + +- **Parameters:** + + - `output`: The output of the `readelf` command. + +- **Returns:** A vector of `Symbol` objects. + +- **Example:** + ```cpp + std::string readelfOutput = exec("readelf -Ws /path/to/library"); + std::vector symbols = parseReadelfOutput(readelfOutput); + ``` + +### `parseSymbolsInParallel(const std::string& output, int threadCount) -> std::vector` + +Parses symbols in parallel using multiple threads. + +- **Parameters:** + + - `output`: The output of the `readelf` command. + - `threadCount`: The number of threads to use for parsing. + +- **Returns:** A vector of `Symbol` objects. + +- **Example:** + ```cpp + std::string readelfOutput = exec("readelf -Ws /path/to/library"); + std::vector symbols = parseSymbolsInParallel(readelfOutput, 4); + ``` + +### `filterSymbolsByType(const std::vector& symbols, const std::string& type) -> std::vector` + +Filters symbols by their type. + +- **Parameters:** + + - `symbols`: The vector of symbols to filter. + - `type`: The type of symbols to filter by. + +- **Returns:** A vector of filtered `Symbol` objects. + +- **Example:** + ```cpp + std::vector functionSymbols = filterSymbolsByType(symbols, "FUNC"); + ``` + +### `filterSymbolsByVisibility(const std::vector& symbols, const std::string& visibility) -> std::vector` + +Filters symbols by their visibility. + +- **Parameters:** + + - `symbols`: The vector of symbols to filter. + - `visibility`: The visibility of symbols to filter by. + +- **Returns:** A vector of filtered `Symbol` objects. + +- **Example:** + ```cpp + std::vector globalSymbols = filterSymbolsByVisibility(symbols, "GLOBAL"); + ``` + +### `filterSymbolsByBind(const std::vector& symbols, const std::string& bind) -> std::vector` + +Filters symbols by their bind type. + +- **Parameters:** + + - `symbols`: The vector of symbols to filter. + - `bind`: The bind type of symbols to filter by. + +- **Returns:** A vector of filtered `Symbol` objects. + +- **Example:** + ```cpp + std::vector weakSymbols = filterSymbolsByBind(symbols, "WEAK"); + ``` + +### `filterSymbolsByCondition(const std::vector& symbols, const std::function& condition) -> std::vector` + +Filters symbols based on a custom condition. + +- **Parameters:** + + - `symbols`: The vector of symbols to filter. + - `condition`: A function that returns `true` for symbols that should be included. + +- **Returns:** A vector of filtered `Symbol` objects. + +- **Example:** + ```cpp + auto isGlobalFunction = [](const Symbol& symbol) { + return symbol.type == "FUNC" && symbol.visibility == "GLOBAL"; + }; + std::vector globalFunctions = filterSymbolsByCondition(symbols, isGlobalFunction); + ``` + +### `printSymbolStatistics(const std::vector& symbols)` + +Prints statistics about the symbols, such as the count of each symbol type. + +- **Parameters:** + + - `symbols`: The vector of symbols to analyze. + +- **Example:** + ```cpp + printSymbolStatistics(symbols); + ``` + +### `exportSymbolsToFile(const std::vector& symbols, const std::string& filename)` + +Exports symbols to a CSV file. + +- **Parameters:** + + - `symbols`: The vector of symbols to export. + - `filename`: The name of the CSV file to create. + +- **Example:** + ```cpp + exportSymbolsToFile(symbols, "symbols.csv"); + ``` + +### `exportSymbolsToJson(const std::vector& symbols, const std::string& filename)` + +Exports symbols to a JSON file. + +- **Parameters:** + + - `symbols`: The vector of symbols to export. + - `filename`: The name of the JSON file to create. + +- **Example:** + ```cpp + exportSymbolsToJson(symbols, "symbols.json"); + ``` + +### `exportSymbolsToYaml(const std::vector& symbols, const std::string& filename)` + +Exports symbols to a YAML file. + +- **Parameters:** + + - `symbols`: The vector of symbols to export. + - `filename`: The name of the YAML file to create. + +- **Example:** + ```cpp + exportSymbolsToYaml(symbols, "symbols.yaml"); + ``` + +### `analyzeLibrary(const std::string& libraryPath, const std::string& outputFormat, int threadCount)` + +Analyzes the library and exports the symbols to the specified format. + +- **Parameters:** + + - `libraryPath`: The path to the library file. + - `outputFormat`: The format to export the symbols (csv, json, yaml). + - `threadCount`: The number of threads to use for parsing. + +- **Example:** + ```cpp + analyzeLibrary("/path/to/library", "json", 4); + ``` + +### `main(int argc, char* argv[]) -> int` + +The main function that initializes the application, parses command-line arguments, and starts the library analysis. + +- **Parameters:** + + - `argc`: The number of command-line arguments. + - `argv`: The array of command-line arguments. + +- **Returns:** An integer representing the exit status. + +- **Example:** + ```bash + ./symbol_analyzer /path/to/library json 4 + ``` + +## Usage Example + +```cpp +#include "symbol.hpp" + +int main(int argc, char* argv[]) { + loguru::init(argc, argv); + LOG_F(INFO, "Symbol Analyzer application started."); + + if (argc < 3 || argc > 4) { + LOG_F(ERROR, "Invalid number of arguments."); + LOG_F(ERROR, + "Usage: {} " + "[thread_count]", + argv[0]); + std::cerr << "Usage: " << argv[0] + << " " + "[thread_count]" + << std::endl; + return EXIT_FAILURE; + } + + std::string libraryPath = argv[1]; + std::string outputFormat = argv[2]; + int threadCount = static_cast( + std::thread::hardware_concurrency()); // Default to system's thread + // count + + if (argc == 4) { + try { + threadCount = std::stoi(argv[3]); + if (threadCount <= 0) { + LOG_F(ERROR, "Thread count must be a positive integer."); + std::cerr << "Error: Thread count must be a positive integer." + << std::endl; + return EXIT_FAILURE; + } + LOG_F(INFO, "Using user-specified thread count: {}", threadCount); + } catch (const std::invalid_argument& e) { + LOG_F(ERROR, "Invalid thread count provided: {}", argv[3]); + std::cerr + << "Error: Invalid thread count provided. Must be an integer." + << std::endl; + return EXIT_FAILURE; + } catch (const std::out_of_range& e) { + LOG_F(ERROR, "Thread count out of range: {}", argv[3]); + std::cerr << "Error: Thread count out of range." << std::endl; + return EXIT_FAILURE; + } + } + + LOG_F(INFO, "Library Path: {}", libraryPath); + LOG_F(INFO, "Output Format: {}", outputFormat); + LOG_F(INFO, "Thread Count: {}", threadCount); + + try { + analyzeLibrary(libraryPath, outputFormat, threadCount); + } catch (const atom::error::Exception& e) { + LOG_F(ERROR, "Atom Exception: {}", e.what()); + std::cerr << "Atom Exception: " << e.what() << std::endl; + return EXIT_FAILURE; + } catch (const std::exception& e) { + LOG_F(ERROR, "Standard Exception: {}", e.what()); + std::cerr << "Standard Exception: " << e.what() << std::endl; + return EXIT_FAILURE; + } catch (...) { + LOG_F(ERROR, "Unknown exception occurred."); + std::cerr << "Error: Unknown exception occurred." << std::endl; + return EXIT_FAILURE; + } + + LOG_F(INFO, "Symbol Analyzer application terminated successfully."); + return EXIT_SUCCESS; +} +``` + +## Notes + +- The tool uses multithreading to improve performance, especially when dealing with large libraries. +- The `readelf` command is used to extract symbol information, which is then parsed and processed. +- Symbols can be filtered by type, visibility, bind, or a custom condition. +- The tool supports exporting symbols to CSV, JSON, and YAML formats. +- Logging is used extensively to provide detailed information about the operations being performed. diff --git a/modules/lithium.cxxtools/include/converter.hpp b/modules/lithium.cxxtools/include/converter.hpp new file mode 100644 index 00000000..53335ac5 --- /dev/null +++ b/modules/lithium.cxxtools/include/converter.hpp @@ -0,0 +1,57 @@ +// converter.hpp +#ifndef CONVERTER_HPP +#define CONVERTER_HPP + +#include +#include "atom/type/json.hpp" + +namespace lithium::cxxtools { + +/** + * @brief Base class template for file format converters using static + * polymorphism. + * + * This class provides a common interface for converting files to JSON format + * and saving JSON data to files. Derived classes must implement the + * `convertImpl` and `saveToFileImpl` methods to provide specific conversion + * logic. + * + * @tparam Derived The derived converter class. + */ +template +class Converter { +public: + /** + * @brief Converts the input file to JSON format. + * + * This method delegates the conversion to the derived class by calling + * its `convertImpl` method. + * + * @param inputFilePath The path to the input file to be converted. + * @return nlohmann::json The converted JSON data. + */ + nlohmann::json convert(std::string_view inputFilePath) { + return static_cast(this)->convertImpl(inputFilePath); + } + + /** + * @brief Saves the JSON data to the specified output file. + * + * This method delegates the saving operation to the derived class by + * calling its `saveToFileImpl` method. + * + * @param jsonData The JSON data to be saved. + * @param outputFilePath The path to the output file where the JSON data + * will be saved. + * @return bool True if the data was successfully saved, false otherwise. + */ + bool saveToFile(const nlohmann::json& jsonData, + std::string_view outputFilePath) { + return static_cast(this)->saveToFileImpl(jsonData, + outputFilePath); + } +}; + +} // namespace lithium::cxxtools + +#endif // CONVERTER_HPP \ No newline at end of file diff --git a/modules/lithium.cxxtools/include/csv2json.hpp b/modules/lithium.cxxtools/include/csv2json.hpp index 267e4720..cd7d9d66 100644 --- a/modules/lithium.cxxtools/include/csv2json.hpp +++ b/modules/lithium.cxxtools/include/csv2json.hpp @@ -1,34 +1,43 @@ -#ifndef LITHIUM_CXXTOOLS_CSV2JSON_HPP -#define LITHIUM_CXXTOOLS_CSV2JSON_HPP +// csv2json.hpp +#ifndef CSV2JSON_HPP +#define CSV2JSON_HPP -#include +#include "converter.hpp" -#include "atom/type/json_fwd.hpp" -using json = nlohmann::json; +namespace lithium::cxxtools::detail { -namespace lithium::cxxtools { -namespace detail { /** - * @brief Convert a CSV file to a JSON object - * @param csvFilePath The path to the CSV file - * @return The JSON object + * @brief Class for converting CSV files to JSON format. + * + * This class provides functionality to convert CSV files to JSON format + * and save the resulting JSON data to a file. It inherits from the + * `Converter` base class template. */ -auto csvToJson(std::string_view csvFilePath) -> json; +class Csv2Json : public Converter { +public: + /** + * @brief Converts a CSV file to JSON format. + * + * This method reads the specified CSV file and converts its contents + * to JSON format. + * + * @param csvFilePath The path to the CSV file to be converted. + * @return nlohmann::json The converted JSON data. + */ + auto convertImpl(std::string_view csvFilePath) -> nlohmann::json; -/** - * @brief Save a JSON object to a file - * @param jsonData The JSON object - * @param jsonFilePath The path to the JSON file - */ -void saveJsonToFile(const json &jsonData, std::string_view jsonFilePath); -} // namespace detail -/** - * @brief Convert a CSV file to a JSON file - * @param csv_file The path to the CSV file - * @param json_file The path to the JSON file - * @return true if the conversion was successful - */ -auto csvToJson(std::string_view csv_file, std::string_view json_file) -> bool; -} // namespace lithium::cxxtools + /** + * @brief Saves JSON data to a specified file. + * + * This method saves the provided JSON data to the specified file path. + * + * @param jsonData The JSON data to be saved. + * @param jsonFilePath The path to the file where the JSON data will be saved. + * @return bool True if the data was successfully saved, false otherwise. + */ + bool saveToFileImpl(const nlohmann::json& jsonData, std::string_view jsonFilePath); +}; + +} // namespace lithium::cxxtools::detail -#endif +#endif // CSV2JSON_HPP \ No newline at end of file diff --git a/modules/lithium.cxxtools/include/ini2json.hpp b/modules/lithium.cxxtools/include/ini2json.hpp index 90b0b23a..c16a4b8c 100644 --- a/modules/lithium.cxxtools/include/ini2json.hpp +++ b/modules/lithium.cxxtools/include/ini2json.hpp @@ -1,17 +1,45 @@ -/* - * ini2json.hpp +// ini2json.hpp +#ifndef INI2JSON_HPP +#define INI2JSON_HPP + +#include "converter.hpp" + +namespace lithium::cxxtools::detail { + +/** + * @brief Class for converting INI files to JSON format. * - * Copyright (C) 2023-2024 Max Qian + * This class provides functionality to convert INI files to JSON format + * and save the resulting JSON data to a file. It inherits from the + * `Converter` base class template. */ +class Ini2Json : public Converter { +public: + /** + * @brief Converts an INI file to JSON format. + * + * This method reads the specified INI file and converts its contents + * to JSON format. + * + * @param iniFilePath The path to the INI file to be converted. + * @return nlohmann::json The converted JSON data. + */ + nlohmann::json convertImpl(std::string_view iniFilePath); -#ifndef LITHIUM_CXXTOOLS_INI2JSON_HPP -#define LITHIUM_CXXTOOLS_INI2JSON_HPP - -#include + /** + * @brief Saves JSON data to a specified file. + * + * This method saves the provided JSON data to the specified file path. + * + * @param jsonData The JSON data to be saved. + * @param jsonFilePath The path to the file where the JSON data will be + * saved. + * @return bool True if the data was successfully saved, false otherwise. + */ + bool saveToFileImpl(const nlohmann::json& jsonData, + std::string_view jsonFilePath); +}; -namespace lithium::cxxtools { -auto iniToJson(std::string_view iniFilePath, - std::string_view jsonFilePath) -> bool; -} +} // namespace lithium::cxxtools::detail -#endif // LITHIUM_CXXTOOLS_INI2JSON_HPP +#endif // INI2JSON_HPP \ No newline at end of file diff --git a/modules/lithium.cxxtools/include/json2csv.hpp b/modules/lithium.cxxtools/include/json2csv.hpp new file mode 100644 index 00000000..88fc185f --- /dev/null +++ b/modules/lithium.cxxtools/include/json2csv.hpp @@ -0,0 +1,27 @@ +#ifndef JSON2CSV_HPP +#define JSON2CSV_HPP + +#include "json_converter.hpp" + +#include + +namespace lithium::cxxtools::converters { + +/** + * @brief Converter class for converting JSON to CSV format. + */ +class JsonToCsvConverter : public JsonConverter { +public: + /** + * @brief Implements the conversion from JSON to CSV. + * + * @param jsonData The JSON data to convert. + * @param outputPath The path to the output CSV file. + * @return true if conversion is successful, false otherwise. + */ + bool convertImpl(const nlohmann::json& jsonData, const std::filesystem::path& outputPath); +}; + +} // namespace lithium::cxxtools::converters + +#endif // JSON2CSV_HPP \ No newline at end of file diff --git a/modules/lithium.cxxtools/include/json2ini.hpp b/modules/lithium.cxxtools/include/json2ini.hpp index be244fde..bb4d7f8e 100644 --- a/modules/lithium.cxxtools/include/json2ini.hpp +++ b/modules/lithium.cxxtools/include/json2ini.hpp @@ -1,17 +1,28 @@ -/* - * json2ini.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ +#ifndef JSON2INI_HPP +#define JSON2INI_HPP + +#include "json_converter.hpp" -#ifndef LITHIUM_CXXTOOLS_JSON2INI_HPP -#define LITHIUM_CXXTOOLS_JSON2INI_HPP +#include +#include -#include +namespace lithium::cxxtools::converters { + +/** + * @brief Converter class for converting JSON to INI format. + */ +class JsonToIniConverter : public JsonConverter { +public: + /** + * @brief Implements the conversion from JSON to INI. + * + * @param jsonData The JSON data to convert. + * @param outputPath The path to the output INI file. + * @return true if conversion is successful, false otherwise. + */ + bool convertImpl(const nlohmann::json& jsonData, const std::filesystem::path& outputPath); +}; -namespace lithium::cxxtools { -auto jsonToIni(std::string_view jsonFilePath, - std::string_view iniFilePath) -> bool; -} +} // namespace lithium::cxxtools::converters -#endif // LITHIUM_CXXTOOLS_JSON2INI_HPP +#endif // JSON2INI_HPP \ No newline at end of file diff --git a/modules/lithium.cxxtools/include/json2xml.hpp b/modules/lithium.cxxtools/include/json2xml.hpp index 395f8b72..8350b24b 100644 --- a/modules/lithium.cxxtools/include/json2xml.hpp +++ b/modules/lithium.cxxtools/include/json2xml.hpp @@ -1,20 +1,28 @@ -/* - * json2xml.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - #ifndef JSON2XML_HPP #define JSON2XML_HPP -#include +#include "json_converter.hpp" + +#include +#include + +namespace lithium::cxxtools::converters { + +/** + * @brief Converter class for converting JSON to XML format. + */ +class JsonToXmlConverter : public JsonConverter { +public: + /** + * @brief Implements the conversion from JSON to XML. + * + * @param jsonData The JSON data to convert. + * @param outputPath The path to the output XML file. + * @return true if conversion is successful, false otherwise. + */ + bool convertImpl(const nlohmann::json& jsonData, const std::filesystem::path& outputPath); +}; -namespace lithium::cxxtools { -namespace detail { -auto convertJsonToXml(std::string_view jsonFilePath, - std::string_view xmlFilePath) -> bool; -} // namespace detail -auto jsonToXml(std::string_view json_file, std::string_view xml_file) -> bool; -} // namespace lithium::cxxtools +} // namespace lithium::cxxtools::converters -#endif // JSON2XML_HPP +#endif // JSON2XML_HPP \ No newline at end of file diff --git a/modules/lithium.cxxtools/include/json2yaml.hpp b/modules/lithium.cxxtools/include/json2yaml.hpp new file mode 100644 index 00000000..d287c9dd --- /dev/null +++ b/modules/lithium.cxxtools/include/json2yaml.hpp @@ -0,0 +1,27 @@ +#ifndef JSON2YAML_HPP +#define JSON2YAML_HPP + +#include "json_converter.hpp" + +#include + +namespace lithium::cxxtools::converters { + +/** + * @brief Converter class for converting JSON to YAML format. + */ +class JsonToYamlConverter : public JsonConverter { +public: + /** + * @brief Implements the conversion from JSON to YAML. + * + * @param jsonData The JSON data to convert. + * @param outputPath The path to the output YAML file. + * @return true if conversion is successful, false otherwise. + */ + bool convertImpl(const nlohmann::json& jsonData, const std::filesystem::path& outputPath); +}; + +} // namespace lithium::cxxtools::converters + +#endif // JSON2YAML_HPP \ No newline at end of file diff --git a/modules/lithium.cxxtools/include/json_converter.hpp b/modules/lithium.cxxtools/include/json_converter.hpp new file mode 100644 index 00000000..61a95df7 --- /dev/null +++ b/modules/lithium.cxxtools/include/json_converter.hpp @@ -0,0 +1,29 @@ +#ifndef JSON_CONVERTER_HPP +#define JSON_CONVERTER_HPP + +#include + +#include "atom/type/json_fwd.hpp" + +/** + * @brief Base class template for JSON converters using static polymorphism. + * + * @tparam Derived The derived converter class. + */ +template +class JsonConverter { +public: + /** + * @brief Converts JSON data to the desired format. + * + * @param jsonData The JSON data to convert. + * @param outputPath The path to the output file. + * @return true if conversion is successful, false otherwise. + */ + bool convert(const nlohmann::json& jsonData, + const std::filesystem::path& outputPath) { + return static_cast(this)->convertImpl(jsonData, outputPath); + } +}; + +#endif // JSON_CONVERTER_HPP \ No newline at end of file diff --git a/modules/lithium.cxxtools/include/library.hpp b/modules/lithium.cxxtools/include/library.hpp new file mode 100644 index 00000000..7a0bb66e --- /dev/null +++ b/modules/lithium.cxxtools/include/library.hpp @@ -0,0 +1,19 @@ +// library.hpp +#ifndef LIBRARY_HPP +#define LIBRARY_HPP + +#include "ini2json.hpp" +#include "csv2json.hpp" +#include "yaml2json.hpp" +#include "xml2json.hpp" + +namespace lithium::cxxtools { + +using Ini2Json = detail::Ini2Json; +using Csv2Json = detail::Csv2Json; +using Yaml2Json = detail::Yaml2Json; +using Xml2Json = detail::Xml2Json; + +} // namespace lithium::cxxtools + +#endif // LIBRARY_HPP \ No newline at end of file diff --git a/modules/lithium.cxxtools/include/proxy.hpp b/modules/lithium.cxxtools/include/proxy.hpp index e3a21703..01f41bd7 100644 --- a/modules/lithium.cxxtools/include/proxy.hpp +++ b/modules/lithium.cxxtools/include/proxy.hpp @@ -12,87 +12,260 @@ #endif namespace lithium::cxxtools { + +/** + * @brief Class for managing network proxy settings and certificates. + * + * This class provides functionality to set and disable proxy settings, + * install and uninstall certificates, edit the hosts file, and manage + * HTTP to HTTPS redirection and custom DNS over HTTPS (DoH) settings. + */ class NetworkProxy { public: + /** + * @brief Enumeration for proxy modes. + */ enum class ProxyMode { Hosts, PAC, System }; + /** + * @brief Default constructor. + */ NetworkProxy() = default; + /** + * @brief Sets the network proxy. + * + * @param proxy The proxy address to set. + * @param mode The proxy mode to use (default is System). + * @param listenIP The IP address to listen on (default is "0.0.0.0"). + * @param dns The custom DNS to use (optional). + * @return bool True if the proxy was successfully set, false otherwise. + */ auto setProxy(const std::string& proxy, ProxyMode mode = ProxyMode::System, const std::string& listenIP = "0.0.0.0", const std::string& dns = "") -> bool; + /** + * @brief Disables the network proxy. + * + * @return bool True if the proxy was successfully disabled, false + * otherwise. + */ [[nodiscard]] auto disableProxy() const -> bool; + /** + * @brief Retrieves the current proxy settings. + * + * @return std::string The current proxy settings. + */ [[nodiscard]] static auto getCurrentProxy() -> std::string; + /** + * @brief Installs a certificate. + * + * @param certPath The path to the certificate file. + * @return bool True if the certificate was successfully installed, false + * otherwise. + */ [[nodiscard]] auto installCertificate(const std::string& certPath) const -> bool; + /** + * @brief Uninstalls a certificate. + * + * @param certName The name of the certificate to uninstall. + * @return bool True if the certificate was successfully uninstalled, false + * otherwise. + */ [[nodiscard]] auto uninstallCertificate(const std::string& certName) const -> bool; + /** + * @brief Views information about a certificate. + * + * @param certName The name of the certificate to view. + * @return std::string The certificate information. + */ [[nodiscard]] auto viewCertificateInfo(const std::string& certName) const -> std::string; + /** + * @brief Edits the hosts file with the specified entries. + * + * @param hostsEntries A vector of pairs representing the hosts entries to + * add. + */ void editHostsFile( const std::vector>& hostsEntries); + /** + * @brief Resets the hosts file to its default state. + */ void resetHostsFile(); + /** + * @brief Enables or disables HTTP to HTTPS redirection. + * + * @param enable True to enable redirection, false to disable. + */ void enableHttpToHttpsRedirect(bool enable); + /** + * @brief Sets a custom DNS over HTTPS (DoH) URL. + * + * @param dohUrl The DoH URL to set. + */ void setCustomDoH(const std::string& dohUrl); private: - ProxyMode proxyMode_ = ProxyMode::System; - std::string listenIP_ = "0.0.0.0"; - std::string dns_; - std::string dohUrl_; - bool httpToHttpsRedirect_ = false; - + ProxyMode proxyMode_ = ProxyMode::System; ///< The current proxy mode. + std::string listenIP_ = "0.0.0.0"; ///< The IP address to listen on. + std::string dns_; ///< The custom DNS to use. + std::string dohUrl_; ///< The custom DoH URL. + bool httpToHttpsRedirect_ = + false; ///< Flag to enable/disable HTTP to HTTPS redirection. + + /** + * @brief Gets the name of the proxy mode. + * + * @param mode The proxy mode. + * @return std::string The name of the proxy mode. + */ static auto getProxyModeName(ProxyMode mode) -> std::string; #ifdef _WIN32 + /** + * @brief Sets the Windows proxy settings. + * + * @param proxy The proxy address to set. + * @return bool True if the proxy was successfully set, false otherwise. + */ bool setWindowsProxy(const std::string& proxy) const; + /** + * @brief Disables the Windows proxy settings. + * + * @return bool True if the proxy was successfully disabled, false + * otherwise. + */ bool disableWindowsProxy() const; + /** + * @brief Retrieves the current Windows proxy settings. + * + * @return std::string The current Windows proxy settings. + */ std::string getWindowsCurrentProxy() const; + /** + * @brief Installs a Windows certificate. + * + * @param certPath The path to the certificate file. + * @return bool True if the certificate was successfully installed, false + * otherwise. + */ bool installWindowsCertificate(const std::string& certPath) const; + /** + * @brief Uninstalls a Windows certificate. + * + * @param certName The name of the certificate to uninstall. + * @return bool True if the certificate was successfully uninstalled, false + * otherwise. + */ bool uninstallWindowsCertificate(const std::string& certName) const; + /** + * @brief Views information about a Windows certificate. + * + * @param certName The name of the certificate to view. + * @return std::string The certificate information. + */ std::string viewWindowsCertificateInfo(const std::string& certName) const; + /** + * @brief Edits the Windows hosts file with the specified entries. + * + * @param hostsEntries A vector of pairs representing the hosts entries to + * add. + */ void editWindowsHostsFile( const std::vector>& hostsEntries) const; + /** + * @brief Resets the Windows hosts file to its default state. + */ void resetWindowsHostsFile() const; #else + /** + * @brief Sets the Linux proxy settings. + * + * @param proxy The proxy address to set. + * @return bool True if the proxy was successfully set, false otherwise. + */ [[nodiscard]] auto setLinuxProxy(const std::string& proxy) const -> bool; + /** + * @brief Disables the Linux proxy settings. + * + * @return bool True if the proxy was successfully disabled, false + * otherwise. + */ static auto disableLinuxProxy() -> bool; + /** + * @brief Retrieves the current Linux proxy settings. + * + * @return std::string The current Linux proxy settings. + */ static auto getLinuxCurrentProxy() -> std::string; + /** + * @brief Installs a Linux certificate. + * + * @param certPath The path to the certificate file. + * @return bool True if the certificate was successfully installed, false + * otherwise. + */ static auto installLinuxCertificate(const std::string& certPath) -> bool; + /** + * @brief Uninstalls a Linux certificate. + * + * @param certName The name of the certificate to uninstall. + * @return bool True if the certificate was successfully uninstalled, false + * otherwise. + */ static auto uninstallLinuxCertificate(const std::string& certName) -> bool; + /** + * @brief Views information about a Linux certificate. + * + * @param certName The name of the certificate to view. + * @return std::string The certificate information. + */ static auto viewLinuxCertificateInfo(const std::string& certName) -> std::string; + /** + * @brief Edits the Linux hosts file with the specified entries. + * + * @param hostsEntries A vector of pairs representing the hosts entries to + * add. + */ void editLinuxHostsFile( const std::vector>& hostsEntries) const; + /** + * @brief Resets the Linux hosts file to its default state. + */ void resetLinuxHostsFile() const; #endif }; + } // namespace lithium::cxxtools -#endif +#endif // LITHIUM_CXXTOOLS_PROXY_HPP \ No newline at end of file diff --git a/modules/lithium.cxxtools/include/symbol.hpp b/modules/lithium.cxxtools/include/symbol.hpp new file mode 100644 index 00000000..3d394fed --- /dev/null +++ b/modules/lithium.cxxtools/include/symbol.hpp @@ -0,0 +1,147 @@ +#ifndef SYMBOL_HPP +#define SYMBOL_HPP + +#include +#include +#include + +#include "atom/macro.hpp" + +/** + * @brief Structure representing a symbol in a binary file. + */ +struct Symbol { + std::string address; ///< The address of the symbol. + std::string type; ///< The type of the symbol. + std::string bind; ///< The binding of the symbol. + std::string visibility; ///< The visibility of the symbol. + std::string name; ///< The name of the symbol. + std::string demangledName; ///< The demangled name of the symbol. +} ATOM_ALIGNAS(128); + +/** + * @brief Executes a system command and returns its output as a string. + * + * @param cmd The command to execute. + * @return std::string The output of the command. + */ +auto exec(const char* cmd) -> std::string; + +/** + * @brief Parses the output of the readelf command and extracts symbols. + * + * @param output The output of the readelf command. + * @return std::vector A vector of extracted symbols. + */ +auto parseReadelfOutput(const std::string& output) -> std::vector; + +/** + * @brief Parses symbols in parallel from the readelf output. + * + * @param output The output of the readelf command. + * @param threadCount The number of threads to use for parsing. + * @return std::vector A vector of parsed symbols. + */ +auto parseSymbolsInParallel(const std::string& output, + int threadCount) -> std::vector; + +/** + * @brief Filters symbols by type. + * + * @param symbols The vector of symbols to filter. + * @param type The type to filter by. + * @return std::vector A vector of symbols that match the specified + * type. + */ +auto filterSymbolsByType(const std::vector& symbols, + const std::string& type) -> std::vector; + +/** + * @brief Filters symbols by visibility. + * + * @param symbols The vector of symbols to filter. + * @param visibility The visibility to filter by. + * @return std::vector A vector of symbols that match the specified + * visibility. + */ +auto filterSymbolsByVisibility(const std::vector& symbols, + const std::string& visibility) + -> std::vector; + +/** + * @brief Filters symbols by bind. + * + * @param symbols The vector of symbols to filter. + * @param bind The bind to filter by. + * @return std::vector A vector of symbols that match the specified + * bind. + */ +auto filterSymbolsByBind(const std::vector& symbols, + const std::string& bind) -> std::vector; + +/** + * @brief Prints statistics about the types of symbols. + * + * @param symbols The vector of symbols to analyze. + */ +void printSymbolStatistics(const std::vector& symbols); + +/** + * @brief Exports symbols to a CSV file. + * + * @param symbols The vector of symbols to export. + * @param filename The name of the CSV file to export to. + */ +void exportSymbolsToFile(const std::vector& symbols, + const std::string& filename); + +/** + * @brief Exports symbols to a JSON file. + * + * @param symbols The vector of symbols to export. + * @param filename The name of the JSON file to export to. + */ +void exportSymbolsToJson(const std::vector& symbols, + const std::string& filename); + +/** + * @brief Exports symbols to a YAML file. + * + * @param symbols The vector of symbols to export. + * @param filename The name of the YAML file to export to. + */ +void exportSymbolsToYaml(const std::vector& symbols, + const std::string& filename); + +/** + * @brief Filters symbols based on a custom condition. + * + * @param symbols The vector of symbols to filter. + * @param condition The custom condition to filter by. + * @return std::vector A vector of symbols that match the custom + * condition. + */ +auto filterSymbolsByCondition( + const std::vector& symbols, + const std::function& condition) -> std::vector; + +/** + * @brief Analyzes a library and exports symbols in the specified format. + * + * @param libraryPath The path to the library to analyze. + * @param outputFormat The format to export the symbols (csv, json, yaml). + * @param threadCount The number of threads to use for parsing. + */ +void analyzeLibrary(const std::string& libraryPath, + const std::string& outputFormat, int threadCount); + +/** + * @brief Main function for the Symbol Analyzer application. + * + * @param argc The number of command-line arguments. + * @param argv The array of command-line arguments. + * @return int The exit code of the application. + */ +auto main(int argc, char* argv[]) -> int; + +#endif // SYMBOL_HPP \ No newline at end of file diff --git a/modules/lithium.cxxtools/include/tcp_proxy.hpp b/modules/lithium.cxxtools/include/tcp_proxy.hpp new file mode 100644 index 00000000..0b2c74d0 --- /dev/null +++ b/modules/lithium.cxxtools/include/tcp_proxy.hpp @@ -0,0 +1,42 @@ +#ifndef TCP_PROXY_HPP +#define TCP_PROXY_HPP + +#include + +/** + * @brief Forwards data from the source socket to the destination socket. + * + * This function reads data from the source socket and writes it to the + * destination socket. It continues to forward data until the source socket is + * closed or an error occurs. + * + * @param srcSockfd The file descriptor of the source socket. + * @param dstSockfd The file descriptor of the destination socket. + */ +void forwardData(int srcSockfd, int dstSockfd); + +/** + * @brief Starts the TCP proxy server. + * + * This function starts a TCP proxy server that listens on the specified source + * IP and port, and forwards traffic to the specified destination IP and port. + * + * @param srcIp The source IP address to listen on. + * @param srcPort The source port to listen on. + * @param dstIp The destination IP address to forward traffic to. + * @param dstPort The destination port to forward traffic to. + */ +void startProxyServer(const std::string &srcIp, int srcPort, + const std::string &dstIp, int dstPort); + +/** + * @brief Signal handler for gracefully shutting down the proxy server. + * + * This function handles signals such as SIGINT and SIGTERM to gracefully shut + * down the proxy server. + * + * @param signal The signal number received. + */ +void signalHandler(int signal); + +#endif // TCP_PROXY_HPP \ No newline at end of file diff --git a/modules/lithium.cxxtools/include/xml2json.hpp b/modules/lithium.cxxtools/include/xml2json.hpp index f83de86a..6d6f4a28 100644 --- a/modules/lithium.cxxtools/include/xml2json.hpp +++ b/modules/lithium.cxxtools/include/xml2json.hpp @@ -1,36 +1,26 @@ -/* - * xml2json.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ +// xml2json.hpp +#ifndef XML2JSON_HPP +#define XML2JSON_HPP -#ifndef LITHIUM_CXXTOOLS_XML2JSON_HPP -#define LITHIUM_CXXTOOLS_XML2JSON_HPP +#include "converter.hpp" +#include +#include +#include +#include "tinyxml2.h" -#include +namespace lithium::cxxtools::detail { +using json = nlohmann::json; +class Xml2Json : public Converter { +public: + nlohmann::json convertImpl(std::string_view xmlFilePath); -namespace lithium::cxxtools { -namespace detail { -/** - * @brief Convert XML file to JSON file - * - * @param xmlFilePath Path to the XML file - * @param jsonFilePath Path to the JSON file - * @return true if conversion was successful - * @return false if conversion failed - */ -auto convertXmlToJson(std::string_view xmlFilePath, - std::string_view jsonFilePath) -> bool; -} // namespace detail -/** - * @brief Convert XML file to JSON file - * - * @param xml_file Path to the XML file - * @param json_file Path to the JSON file - * @return true if conversion was successful - * @return false if conversion failed - */ -auto xmlToJson(std::string_view xml_file, std::string_view json_file) -> bool; -} // namespace lithium::cxxtools + bool saveToFileImpl(const nlohmann::json& jsonData, std::string_view jsonFilePath); -#endif // LITHIUM_CXXTOOLS_XML2JSON_HPP +private: + void xmlToJson(const tinyxml2::XMLElement* xmlElement, json& jsonData); + bool convertXmlToJson(const std::string& xmlFilePath, json& jsonData); +}; + +} // namespace lithium::cxxtools::detail + +#endif // XML2JSON_HPP \ No newline at end of file diff --git a/modules/lithium.cxxtools/include/yaml2json.hpp b/modules/lithium.cxxtools/include/yaml2json.hpp new file mode 100644 index 00000000..4c83e378 --- /dev/null +++ b/modules/lithium.cxxtools/include/yaml2json.hpp @@ -0,0 +1,22 @@ +// yaml2json.hpp +#ifndef YAML2JSON_HPP +#define YAML2JSON_HPP + +#include "converter.hpp" +#include +#include +#include +#include + +namespace lithium::cxxtools::detail { + +class Yaml2Json : public Converter { +public: + nlohmann::json convertImpl(std::string_view yamlFilePath); + + bool saveToFileImpl(const nlohmann::json& jsonData, std::string_view jsonFilePath); +}; + +} // namespace lithium::cxxtools::detail + +#endif // YAML2JSON_HPP \ No newline at end of file diff --git a/modules/lithium.cxxtools/src/csv2json.cpp b/modules/lithium.cxxtools/src/csv2json.cpp index 6c782eab..d4114a71 100644 --- a/modules/lithium.cxxtools/src/csv2json.cpp +++ b/modules/lithium.cxxtools/src/csv2json.cpp @@ -1,124 +1,90 @@ -/* - * csv2json.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - +// csv2json.cpp #include "csv2json.hpp" -#include -#include - #include "atom/error/exception.hpp" #include "atom/log/loguru.hpp" -#include "atom/type/json.hpp" #include "atom/utils/string.hpp" +#include "atom/utils/to_string.hpp" + +#include + +using json = nlohmann::json; namespace lithium::cxxtools::detail { -auto csvToJson(std::string_view csvFilePath, char delimiter = ',') -> json { + +json Csv2Json::convertImpl(std::string_view csvFilePath) { LOG_F(INFO, "Converting CSV file to JSON: {}", csvFilePath); std::ifstream csvFile(csvFilePath.data()); if (!csvFile.is_open()) { - THROW_RUNTIME_ERROR("Failed to open CSV file: ", csvFilePath); + LOG_F(ERROR, "Failed to open CSV file: {}", csvFilePath); + THROW_RUNTIME_ERROR("Failed to open CSV file: {}", csvFilePath); } std::vector headers; - std::vector data; - + json data = json::array(); std::string line; bool isFirstLine = true; + while (std::getline(csvFile, line)) { if (line.empty()) { - continue; // Skip empty lines + LOG_F(WARNING, "Skipping empty line in CSV file."); + continue; } - auto fields = atom::utils::splitString(line, delimiter); + auto fields = atom::utils::splitString(line, ','); if (isFirstLine) { headers = fields; isFirstLine = false; + LOG_F(INFO, "Parsed CSV headers: {}", + atom::utils::toString(headers)); } else { + if (fields.size() != headers.size()) { + LOG_F(WARNING, + "Mismatch between number of fields and headers. Line: {}", + line); + continue; + } + json row; for (size_t i = 0; i < fields.size(); ++i) { row[headers[i]] = fields[i]; } data.push_back(std::move(row)); + LOG_F(INFO, "Parsed CSV row: {}", row.dump()); } } - return json{data}; + if (csvFile.bad()) { + LOG_F(ERROR, "Error occurred while reading CSV file: {}", csvFilePath); + THROW_RUNTIME_ERROR("Error occurred while reading CSV file: {}", + csvFilePath); + } + + LOG_F(INFO, "Successfully converted CSV to JSON. Total rows: {}", + data.size()); + return data; } -void saveJsonToFile(const json &jsonData, std::string_view jsonFilePath) { +bool Csv2Json::saveToFileImpl(const json& jsonData, + std::string_view jsonFilePath) { LOG_F(INFO, "Saving JSON data to file: {}", jsonFilePath); std::ofstream jsonFile(jsonFilePath.data()); if (!jsonFile.is_open() || !jsonFile.good()) { - THROW_RUNTIME_ERROR("Failed to open JSON file: ", jsonFilePath); + LOG_F(ERROR, "Failed to open JSON file for writing: {}", jsonFilePath); + THROW_FAIL_TO_OPEN_FILE("Failed to open JSON file for writing: {}", + jsonFilePath); } - jsonFile << jsonData.dump(4); -} -} // namespace lithium::cxxtools::detail - -#if ATOM_STANDALONE_COMPONENT_ENABLED -#include "argparse/argparse.hpp" -int main(int argc, char *argv[]) { - loguru::init(argc, argv); - loguru::add_file("conversion_log.txt", loguru::Append, - loguru::Verbosity_INFO); - - argparse::ArgumentParser program("csv2json"); - program.add_argument("-i", "--input") - .required() - .help("path to input CSV file"); - program.add_argument("-o", "--output") - .required() - .help("path to output JSON file"); - program.add_argument("-d", "--delimiter") - .default_value(',') - .help("delimiter used in the CSV file"); - - try { - program.parse_args(argc, argv); - } catch (const std::runtime_error &err) { - LOG_F(ERROR, "Error parsing arguments: {}", err.what()); - return 1; + jsonFile << std::setw(4) << jsonData << std::endl; + if (!jsonFile) { + LOG_F(ERROR, "Failed to write JSON data to file: {}", jsonFilePath); + THROW_FILE_NOT_WRITABLE("Failed to write JSON data to file: {}", + jsonFilePath); } - std::string csvFilePath = program.get("--input"); - std::string jsonFilePath = program.get("--output"); - char delimiter = program.get("--delimiter"); - - try { - LOG_F(INFO, "Converting CSV to JSON..."); - auto jsonData = - lithium::cxxtools::detail::csvToJson(csvFilePath, delimiter); - lithium::cxxtools::detail::saveJsonToFile(jsonData, jsonFilePath); - LOG_F(INFO, "CSV to JSON conversion succeeded."); - } catch (const std::exception &ex) { - LOG_F(ERROR, "CSV to JSON conversion failed: {}", ex.what()); - return 1; - } - - return 0; -} -#else -namespace lithium::cxxtools { -auto csvToJson(std::string_view csv_file, std::string_view json_file, - char delimiter = ',') -> bool { - if (csv_file.empty() || json_file.empty()) { - LOG_F(ERROR, "CSV to JSON conversion failed: invalid input file path"); - return false; - } - try { - auto csvData = detail::csvToJson(csv_file, delimiter); - detail::saveJsonToFile(csvData, json_file); - return true; - } catch (const std::exception &e) { - LOG_F(ERROR, "CSV to JSON conversion failed: {}", e.what()); - } - return false; + LOG_F(INFO, "Successfully saved JSON data to file: {}", jsonFilePath); + return true; } -} // namespace lithium::cxxtools -#endif +} // namespace lithium::cxxtools::detail \ No newline at end of file diff --git a/modules/lithium.cxxtools/src/ini2json.cpp b/modules/lithium.cxxtools/src/ini2json.cpp index b69b8888..e436f86e 100644 --- a/modules/lithium.cxxtools/src/ini2json.cpp +++ b/modules/lithium.cxxtools/src/ini2json.cpp @@ -1,53 +1,42 @@ -/* - * ini2json.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - +// ini2json.cpp #include "ini2json.hpp" -#include -#include -#include -#include -#include -#include -#include - #include "atom/error/exception.hpp" #include "atom/log/loguru.hpp" #include "atom/utils/string.hpp" +#include + namespace fs = std::filesystem; +using json = nlohmann::json; namespace lithium::cxxtools::detail { -auto tab(unsigned level) -> std::string { +std::string tab(unsigned level) { return std::string(static_cast(level * 4), ' '); } -auto iniToJson(std::string_view iniFilePath, std::string_view jsonFilePath, - char commentChar = ';') -> bool { +json Ini2Json::convertImpl(std::string_view iniFilePath) { LOG_F(INFO, "Converting INI file to JSON: {}", iniFilePath); if (!fs::exists(iniFilePath) || !fs::is_regular_file(iniFilePath)) { - THROW_FILE_NOT_FOUND("File not found: ", iniFilePath); + LOG_F(ERROR, "File not found or is not a regular file: {}", + iniFilePath); + THROW_FILE_NOT_FOUND("File not found or is not a regular file: {}", + iniFilePath); } std::ifstream in(iniFilePath.data()); - std::ofstream out(jsonFilePath.data()); - if (!out.is_open()) { - LOG_F(ERROR, "Can't create file: {}", jsonFilePath); - return false; + if (!in.is_open()) { + LOG_F(ERROR, "Cannot open INI file: {}", iniFilePath); + THROW_FILE_NOT_FOUND("Cannot open INI file: {}", iniFilePath); } - out << "{" << std::endl; - + json jsonData; std::string line; - bool sectionOpened = false; - bool hasAttributes = false; + std::string currentSection; while (std::getline(in, line)) { - auto commentPos = line.find(commentChar); + auto commentPos = line.find(';'); if (commentPos != std::string::npos) { line = line.substr(0, commentPos); } @@ -55,133 +44,57 @@ auto iniToJson(std::string_view iniFilePath, std::string_view jsonFilePath, line = atom::utils::trim(line); if (line.empty()) { + LOG_F(INFO, "Skipping empty line or comment."); continue; } - if (line.front() == '[') { - line = atom::utils::trim(line, "[]"); - - if (hasAttributes) { - hasAttributes = false; - out << std::endl; - } - - if (sectionOpened) { - out << tab(1) << "}," << std::endl; - } else { - sectionOpened = true; - } - - out << tab(1) << std::format("\"{}\": {{", line) << std::endl; + if (line.front() == '[' && line.back() == ']') { + currentSection = atom::utils::trim(line, "[]"); + jsonData[currentSection] = json::object(); + LOG_F(INFO, "Parsed section: [{}]", currentSection); } else { auto pos = line.find('='); if (pos == std::string::npos) { + LOG_F(WARNING, "Skipping line without '=': {}", line); continue; } - auto attribute = atom::utils::trim(line.substr(0, pos)); + auto key = atom::utils::trim(line.substr(0, pos)); auto value = atom::utils::trim(line.substr(pos + 1)); - - if (hasAttributes) { - out << "," << std::endl; - } else { - hasAttributes = true; - } - - out << tab(2) << std::format("\"{}\": ", attribute); - if (value.find(':') != std::string::npos) { - out << "{" << std::endl; - for (const auto& item : atom::utils::explode(value, ',')) { - auto kv = atom::utils::explode(item, ':'); - if (kv.size() == 2) { - out << tab(3) - << std::format(R"("{}": "{}",)", - atom::utils::trim(kv[0]), - atom::utils::trim(kv[1])) - << std::endl; - } - } - out.seekp(-2, std::ofstream::cur); // Remove the last comma - out << std::endl << tab(2) << "}"; - } else if (value.find(',') != std::string::npos) { - out << "[" << std::endl; - for (const auto& item : atom::utils::explode(value, ',')) { - out << tab(3) - << std::format("\"{}\",", atom::utils::trim(item)) - << std::endl; - } - out.seekp(-2, std::ofstream::cur); // Remove the last comma - out << std::endl << tab(2) << "]"; - } else { - out << std::format("\"{}\"", value); - } + jsonData[currentSection][key] = value; + LOG_F(INFO, "Parsed key-value pair: {}={}", key, value); } } - if (hasAttributes) { - out << std::endl; + if (in.bad()) { + LOG_F(ERROR, "Error occurred while reading INI file: {}", iniFilePath); + THROW_RUNTIME_ERROR("Error occurred while reading INI file: {}", + iniFilePath); } - if (sectionOpened) { - out << tab(1) << "}" << std::endl; - } - - out << "}" << std::endl; - return true; + LOG_F(INFO, "Successfully converted INI to JSON. Sections: {}", + jsonData.size()); + return jsonData; } -} // namespace lithium::cxxtools::detail - -#if ATOM_STANDALONE_COMPONENT_ENABLED -#include -int main(int argc, char** argv) { - loguru::init(argc, argv); - loguru::add_file("conversion_log.txt", loguru::Append, - loguru::Verbosity_INFO); - - argparse::ArgumentParser program("ini2json"); - program.add_argument("-i", "--input") - .required() - .help("path to input INI file"); - program.add_argument("-o", "--output") - .required() - .help("path to output JSON file"); - program.add_argument("-c", "--comment") - .default_value(';') - .help("comment character used in the INI file"); - - try { - program.parse_args(argc, argv); - } catch (const std::runtime_error& err) { - LOG_F(ERROR, "Error parsing arguments: {}", err.what()); - return 1; - } - std::string iniFilePath = program.get("--input"); - std::string jsonFilePath = program.get("--output"); - char commentChar = program.get("--comment"); +bool Ini2Json::saveToFileImpl(const json& jsonData, + std::string_view jsonFilePath) { + LOG_F(INFO, "Saving JSON data to file: {}", jsonFilePath); + std::ofstream out(jsonFilePath.data()); + if (!out.is_open()) { + LOG_F(ERROR, "Can't create file: {}", jsonFilePath); + THROW_FAIL_TO_OPEN_FILE("Can't create file: {}", jsonFilePath); + } - try { - LOG_F(INFO, "Converting INI to JSON..."); - if (!lithium::cxxtools::detail::iniToJson(iniFilePath, jsonFilePath, - commentChar)) { - LOG_F(ERROR, "Conversion failed."); - return 1; - } - LOG_F(INFO, "Conversion completed. Result has been saved to {}", - jsonFilePath); - } catch (const std::exception& ex) { - LOG_F(ERROR, "Conversion failed: {}", ex.what()); - return 1; + out << std::setw(4) << jsonData << std::endl; + if (!out) { + LOG_F(ERROR, "Failed to write JSON data to file: {}", jsonFilePath); + THROW_FILE_NOT_WRITABLE("Failed to write JSON data to file: {}", + jsonFilePath); } - return 0; -} -#else -namespace lithium::cxxtools { -auto iniToJson(std::string_view ini_file, std::string_view json_file, - char commentChar = ';') -> bool { - return detail::iniToJson(ini_file, json_file, commentChar); + LOG_F(INFO, "Successfully saved JSON data to file: {}", jsonFilePath); + return true; } -} // namespace lithium::cxxtools -#endif +} // namespace lithium::cxxtools::detail \ No newline at end of file diff --git a/modules/lithium.cxxtools/src/json2csv.cpp b/modules/lithium.cxxtools/src/json2csv.cpp new file mode 100644 index 00000000..ee6f7812 --- /dev/null +++ b/modules/lithium.cxxtools/src/json2csv.cpp @@ -0,0 +1,116 @@ +#include "json2csv.hpp" + +#include +#include +#include + +#include "atom/error/exception.hpp" +#include "atom/log/loguru.hpp" +#include "atom/type/json.hpp" + +namespace lithium::cxxtools::converters { + +/** + * @brief Flattens JSON objects into a single-level map for CSV compatibility. + * + * @param jsonData The JSON data to flatten. + * @param parentKey The prefix for keys (used in recursion). + * @param flatMap The resulting flattened map. + */ +void flattenJson(const nlohmann::json& jsonData, const std::string& parentKey, + std::unordered_map& flatMap) { + if (jsonData.is_object()) { + for (auto it = jsonData.begin(); it != jsonData.end(); ++it) { + std::string newKey = + parentKey.empty() ? it.key() : parentKey + "_" + it.key(); + flattenJson(it.value(), newKey, flatMap); + } + } else if (jsonData.is_array()) { + int index = 0; + for (const auto& item : jsonData) { + std::string newKey = parentKey + "_" + std::to_string(index++); + flattenJson(item, newKey, flatMap); + } + } else { + flatMap[parentKey] = jsonData.dump(); + } +} + +bool JsonToCsvConverter::convertImpl(const nlohmann::json& jsonData, + const std::filesystem::path& outputPath) { + LOG_F(INFO, "Starting JSON to CSV conversion."); + + if (!jsonData.is_array()) { + LOG_F( + ERROR, + "JSON data is not an array. CSV conversion requires a JSON array."); + THROW_RUNTIME_ERROR( + "JSON data is not an array. CSV conversion requires a JSON array."); + } + + std::ofstream csvFile(outputPath); + if (!csvFile.is_open()) { + LOG_F(ERROR, "Failed to open CSV file for writing: {}", + outputPath.string()); + THROW_FAIL_TO_OPEN_FILE("Failed to open CSV file for writing: {}", + outputPath.string()); + } + + // Determine headers + std::vector headers; + std::vector> flatData; + std::unordered_set headerSet; + for (const auto& item : jsonData) { + std::unordered_map flatMap; + flattenJson(item, "", flatMap); + for (const auto& [key, _] : flatMap) { + if (headerSet.insert(key).second) { + headers.push_back(key); + } + } + flatData.push_back(flatMap); + } + + // Write headers + for (size_t i = 0; i < headers.size(); ++i) { + csvFile << "\"" << headers[i] << "\""; + if (i != headers.size() - 1) { + csvFile << ","; + } + } + csvFile << "\n"; + + // Write data rows + for (const auto& flatMap : flatData) { + for (size_t i = 0; i < headers.size(); ++i) { + auto it = flatMap.find(headers[i]); + if (it != flatMap.end()) { + std::string value = it->second; + // Escape quotes by doubling them + size_t pos = 0; + while ((pos = value.find('"', pos)) != std::string::npos) { + value.insert(pos, 1, '"'); + pos += 2; + } + csvFile << "\"" << value << "\""; + } else { + csvFile << "\"\""; + } + if (i != headers.size() - 1) { + csvFile << ","; + } + } + csvFile << "\n"; + } + + if (!csvFile) { + LOG_F(ERROR, "Failed to write to CSV file: {}", outputPath.string()); + THROW_FILE_NOT_WRITABLE("Failed to write to CSV file: {}", + outputPath.string()); + } + + LOG_F(INFO, "Successfully converted JSON to CSV: {}", outputPath.string()); + return true; +} + +} // namespace lithium::cxxtools::converters \ No newline at end of file diff --git a/modules/lithium.cxxtools/src/json2ini.cpp b/modules/lithium.cxxtools/src/json2ini.cpp index 1de9b2c6..a6a2a80b 100644 --- a/modules/lithium.cxxtools/src/json2ini.cpp +++ b/modules/lithium.cxxtools/src/json2ini.cpp @@ -1,137 +1,69 @@ -/* - * json2ini.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-7-29 - -Description: JSON to INI - -**************************************************/ - #include "json2ini.hpp" -#include #include #include +#include "atom/error/exception.hpp" #include "atom/log/loguru.hpp" #include "atom/type/json.hpp" -#include "exception.hpp" -using json = nlohmann::json; -namespace fs = std::filesystem; +namespace lithium::cxxtools::converters { -namespace lithium::cxxtools::detail { - -void writeIniSection(std::ofstream &iniFile, std::string_view sectionName, - const json &jsonObject) { +/** + * @brief Writes a section to the INI file. + * + * @param iniFile The output INI file stream. + * @param sectionName The name of the INI section. + * @param jsonObject The JSON object containing key-value pairs. + */ +void writeIniSection(std::ofstream& iniFile, std::string_view sectionName, + const nlohmann::json& jsonObject) { iniFile << "[" << sectionName << "]" << std::endl; for (auto it = jsonObject.begin(); it != jsonObject.end(); ++it) { if (it->is_string()) { - iniFile << std::format("{}={}", it.key(), it->get()) - << std::endl; + iniFile << std::format("{}={}\n", it.key(), it->get()); } else if (it->is_number()) { - iniFile << std::format("{}={}", it.key(), it->get()) - << std::endl; + iniFile << std::format("{}={}\n", it.key(), it->get()); } else if (it->is_boolean()) { - iniFile << std::format("{}={}", it.key(), - it->get() ? "true" : "false") - << std::endl; + iniFile << std::format("{}={}\n", it.key(), + it->get() ? "true" : "false"); + } else { + LOG_F(WARNING, "Unsupported JSON type for key '{}'", it.key()); + iniFile << std::format("{}={}\n", it.key(), "null"); } } iniFile << std::endl; } -void jsonToIni(std::string_view jsonFilePath, std::string_view iniFilePath) { - if (!fs::exists(jsonFilePath) || !fs::is_regular_file(jsonFilePath)) { - THROW_FILE_NOT_FOUND("JSON file not found: ", jsonFilePath); - } - - std::ifstream jsonFile(jsonFilePath.data()); - if (!jsonFile.is_open()) { - THROW_FILE_NOT_READABLE("Failed to open JSON file: ", jsonFilePath); - } +bool JsonToIniConverter::convertImpl(const nlohmann::json& jsonData, + const std::filesystem::path& outputPath) { + LOG_F(INFO, "Starting JSON to INI conversion."); - json jsonData; - try { - jsonFile >> jsonData; - } catch (const std::exception &e) { - THROW_RUNTIME_ERROR("Failed to parse JSON file: ", jsonFilePath, - ". Error: ", e.what()); - } - - std::ofstream iniFile(iniFilePath.data()); + std::ofstream iniFile(outputPath); if (!iniFile.is_open()) { - THROW_RUNTIME_ERROR("Failed to create INI file: ", iniFilePath); + LOG_F(ERROR, "Failed to open INI file for writing: {}", + outputPath.string()); + THROW_FAIL_TO_OPEN_FILE("Failed to open INI file for writing: {}", + outputPath.string()); } for (auto it = jsonData.begin(); it != jsonData.end(); ++it) { if (it->is_object()) { writeIniSection(iniFile, it.key(), *it); + } else { + LOG_F(WARNING, "Skipping non-object JSON element with key '{}'", + it.key()); } } if (!iniFile) { - THROW_FILE_NOT_WRITABLE("Failed to save INI file: ", iniFilePath); - } - LOG_F(INFO, "INI file is saved: {}", iniFilePath); -} -} // namespace lithium::cxxtools::detail - -#if ATOM_STANDALONE_COMPONENT_ENABLED -#include -int main(int argc, char *argv[]) { - loguru::init(argc, argv); - loguru::add_file("conversion_log.txt", loguru::Append, - loguru::Verbosity_INFO); - - argparse::ArgumentParser program("json2ini"); - program.add_argument("-i", "--input") - .required() - .help("path to input JSON file"); - program.add_argument("-o", "--output") - .required() - .help("path to output INI file"); - - try { - program.parse_args(argc, argv); - } catch (const std::runtime_error &err) { - LOG_F(ERROR, "Error parsing arguments: {}", err.what()); - return 1; - } - - std::string jsonFilePath = program.get("--input"); - std::string iniFilePath = program.get("--output"); - - try { - LOG_F(INFO, "Converting JSON to INI..."); - lithium::cxxtools::detail::jsonToIni(jsonFilePath, iniFilePath); - LOG_F(INFO, "JSON to INI conversion completed."); - } catch (const std::exception &ex) { - LOG_F(ERROR, "JSON to INI conversion failed: {}", ex.what()); - return 1; + LOG_F(ERROR, "Failed to write to INI file: {}", outputPath.string()); + THROW_FILE_NOT_WRITABLE("Failed to write to INI file: {}", + outputPath.string()); } - return 0; -} -#else -namespace lithium::cxxtools { -auto jsonToIni(std::string_view jsonFilePath, - std::string_view iniFilePath) -> bool { - try { - LOG_F(INFO, "Converting JSON to INI..."); - detail::jsonToIni(jsonFilePath, iniFilePath); - LOG_F(INFO, "JSON to INI conversion completed."); - return true; - } catch (const std::exception &e) { - LOG_F(ERROR, "JSON to INI conversion failed: {}", e.what()); - } - return false; + LOG_F(INFO, "Successfully converted JSON to INI: {}", outputPath.string()); + return true; } -} // namespace lithium::cxxtools -#endif +} // namespace lithium::cxxtools::converters \ No newline at end of file diff --git a/modules/lithium.cxxtools/src/json2xml.cpp b/modules/lithium.cxxtools/src/json2xml.cpp index 20f816c4..ed4eab70 100644 --- a/modules/lithium.cxxtools/src/json2xml.cpp +++ b/modules/lithium.cxxtools/src/json2xml.cpp @@ -1,160 +1,85 @@ -/* - * json2xml.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-12-7 - -Description: JSON to XML conversion - -**************************************************/ - #include "json2xml.hpp" -#include -#include -#include - +#include "atom/error/exception.hpp" #include "atom/log/loguru.hpp" #include "atom/type/json.hpp" -#include "tinyxml2/tinyxml2.h" - -using json = nlohmann::json; -namespace fs = std::filesystem; -namespace lithium::cxxtools::detail { +namespace lithium::cxxtools::converters { -void jsonToXml(const json &jsonData, tinyxml2::XMLElement *xmlElement) { - tinyxml2::XMLDocument *xmlDoc = xmlElement->GetDocument(); +/** + * @brief Recursively converts JSON data to XML elements. + * + * @param jsonData The JSON data. + * @param xmlElement The current XML element. + */ +void jsonToXml(const nlohmann::json& jsonData, + tinyxml2::XMLElement* xmlElement) { + tinyxml2::XMLDocument* xmlDoc = xmlElement->GetDocument(); - for (const auto &item : jsonData.items()) { + for (const auto& item : jsonData.items()) { if (item.value().is_object()) { - tinyxml2::XMLElement *childXmlElement = + tinyxml2::XMLElement* childXmlElement = xmlDoc->NewElement(item.key().c_str()); xmlElement->InsertEndChild(childXmlElement); jsonToXml(item.value(), childXmlElement); } else if (item.value().is_array()) { - for (const auto &arrayItem : item.value()) { - tinyxml2::XMLElement *childXmlElement = + for (const auto& arrayItem : item.value()) { + tinyxml2::XMLElement* childXmlElement = xmlDoc->NewElement(item.key().c_str()); xmlElement->InsertEndChild(childXmlElement); jsonToXml(arrayItem, childXmlElement); } } else if (item.value().is_string()) { - tinyxml2::XMLElement *childXmlElement = + tinyxml2::XMLElement* childXmlElement = xmlDoc->NewElement(item.key().c_str()); childXmlElement->SetText(item.value().get().c_str()); xmlElement->InsertEndChild(childXmlElement); } else if (item.value().is_number()) { - tinyxml2::XMLElement *childXmlElement = + tinyxml2::XMLElement* childXmlElement = xmlDoc->NewElement(item.key().c_str()); childXmlElement->SetText( std::to_string(item.value().get()).c_str()); xmlElement->InsertEndChild(childXmlElement); } else if (item.value().is_boolean()) { - tinyxml2::XMLElement *childXmlElement = + tinyxml2::XMLElement* childXmlElement = xmlDoc->NewElement(item.key().c_str()); childXmlElement->SetText(item.value().get() ? "true" : "false"); xmlElement->InsertEndChild(childXmlElement); + } else { + LOG_F(WARNING, "Unsupported JSON type for key '{}'", item.key()); + tinyxml2::XMLElement* childXmlElement = + xmlDoc->NewElement(item.key().c_str()); + childXmlElement->SetText("null"); + xmlElement->InsertEndChild(childXmlElement); } } } -auto convertJsonToXml(std::string_view jsonFilePath, - std::string_view xmlFilePath) -> bool { - DLOG_F(INFO, "Reading JSON file: {}", jsonFilePath); - if (!fs::exists(jsonFilePath) || !fs::is_regular_file(jsonFilePath)) { - LOG_F(ERROR, "JSON file does not exist or is not a regular file: {}", - jsonFilePath); - return false; - } - - std::ifstream jsonFile(jsonFilePath.data()); - if (!jsonFile.is_open()) { - LOG_F(ERROR, "Failed to open JSON file: {}", jsonFilePath); - return false; - } - - json jsonData; - try { - jsonFile >> jsonData; - } catch (const std::exception &e) { - LOG_F(ERROR, "Failed to parse JSON file: {}. Error: {}", jsonFilePath, - e.what()); - return false; - } - jsonFile.close(); +bool JsonToXmlConverter::convertImpl(const nlohmann::json& jsonData, + const std::filesystem::path& outputPath) { + LOG_F(INFO, "Starting JSON to XML conversion."); tinyxml2::XMLDocument xmlDoc; - tinyxml2::XMLElement *rootElement = xmlDoc.NewElement("root"); + tinyxml2::XMLElement* rootElement = xmlDoc.NewElement("root"); xmlDoc.InsertFirstChild(rootElement); - jsonToXml(jsonData, rootElement); - - if (xmlDoc.SaveFile(xmlFilePath.data()) != tinyxml2::XML_SUCCESS) { - LOG_F(ERROR, "Failed to save XML file: {}", xmlFilePath); - return false; - } - - DLOG_F(INFO, "JSON to XML conversion succeeded."); - return true; -} -} // namespace lithium::cxxtools::detail - -#if ATOM_STANDALONE_COMPONENT_ENABLED -#include -int main(int argc, const char **argv) { - loguru::init(argc, argv); - loguru::add_file("conversion_log.txt", loguru::Append, - loguru::Verbosity_INFO); - - argparse::ArgumentParser program("json-to-xml"); - - program.add_argument("-i", "--input") - .required() - .help("path to input JSON file"); - - program.add_argument("-o", "--output") - .required() - .help("path to output XML file"); - try { - program.parse_args(argc, argv); - } catch (const std::runtime_error &err) { - std::cout << err.what() << std::endl; - std::cout << program; - return 1; + jsonToXml(jsonData, rootElement); + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception during JSON to XML conversion: {}", e.what()); + THROW_RUNTIME_ERROR("Exception during JSON to XML conversion: {}", + e.what()); } - std::string jsonFilePath = program.get("--input"); - std::string xmlFilePath = program.get("--output"); - - if (lithium::cxxtools::detail::convertJsonToXml(jsonFilePath, - xmlFilePath)) { - DLOG_F(INFO, "JSON to XML conversion succeeded."); - } else { - DLOG_F(INFO, "JSON to XML conversion failed."); + tinyxml2::XMLError eResult = xmlDoc.SaveFile(outputPath.string().c_str()); + if (eResult != tinyxml2::XML_SUCCESS) { + LOG_F(ERROR, "Failed to save XML file: {}", outputPath.string()); + THROW_RUNTIME_ERROR("Failed to save XML file: {}", outputPath.string()); } - return 0; -} -#else -namespace lithium::cxxtools { -auto jsonToXml(std::string_view json_file, std::string_view xml_file) -> bool { - if (json_file.empty() || xml_file.empty()) { - DLOG_F(ERROR, "Invalid input file path."); - return false; - } - if (!fs::exists(json_file) || !fs::is_regular_file(json_file)) { - DLOG_F(ERROR, "JSON file does not exist or is not a regular file."); - return false; - } - return detail::convertJsonToXml(json_file, xml_file); + LOG_F(INFO, "Successfully converted JSON to XML: {}", outputPath.string()); + return true; } -} // namespace lithium::cxxtools -#endif +} // namespace lithium::cxxtools::converters \ No newline at end of file diff --git a/modules/lithium.cxxtools/src/json2yaml.cpp b/modules/lithium.cxxtools/src/json2yaml.cpp new file mode 100644 index 00000000..b5e345f8 --- /dev/null +++ b/modules/lithium.cxxtools/src/json2yaml.cpp @@ -0,0 +1,76 @@ +#include "json2yaml.hpp" + +#include +#include + +#include "atom/error/exception.hpp" +#include "atom/log/loguru.hpp" +#include "atom/type/json.hpp" + +namespace lithium::cxxtools::converters { + +/** + * @brief Recursively converts JSON data to YAML node. + * + * @param out The YAML emitter. + * @param jsonData The JSON data. + */ +void jsonToYaml(YAML::Emitter& out, const nlohmann::json& jsonData) { + if (jsonData.is_object()) { + for (auto it = jsonData.begin(); it != jsonData.end(); ++it) { + out << YAML::Key << it.key() << YAML::Value; + jsonToYaml(out, *it); + } + } else if (jsonData.is_array()) { + out << YAML::BeginSeq; + for (const auto& item : jsonData) { + jsonToYaml(out, item); + } + out << YAML::EndSeq; + } else if (jsonData.is_string()) { + out << jsonData.get(); + } else if (jsonData.is_number()) { + out << jsonData.get(); + } else if (jsonData.is_boolean()) { + out << (jsonData.get() ? "true" : "false"); + } else { + LOG_F(WARNING, "Encountered unsupported JSON type during conversion."); + out << "null"; + } +} + +bool JsonToYamlConverter::convertImpl(const nlohmann::json& jsonData, + const std::filesystem::path& outputPath) { + LOG_F(INFO, "Starting JSON to YAML conversion."); + + YAML::Emitter out; + out << YAML::BeginMap; + try { + jsonToYaml(out, jsonData); + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception during JSON to YAML conversion: {}", e.what()); + THROW_RUNTIME_ERROR("Exception during JSON to YAML conversion: {}", + e.what()); + } + out << YAML::EndMap; + + std::ofstream yamlFile(outputPath); + if (!yamlFile.is_open()) { + LOG_F(ERROR, "Failed to open YAML file for writing: {}", + outputPath.string()); + THROW_FAIL_TO_OPEN_FILE("Failed to open YAML file for writing: {}", + outputPath.string()); + } + + yamlFile << out.c_str(); + if (!yamlFile) { + LOG_F(ERROR, "Failed to write to YAML file: {}", outputPath.string()); + THROW_FILE_NOT_WRITABLE("Failed to write to YAML file: {}", + outputPath.string()); + } + + LOG_F(INFO, "Successfully converted JSON to YAML: {}", outputPath.string()); + return true; +} + +} // namespace lithium::cxxtools::converters \ No newline at end of file diff --git a/modules/lithium.cxxtools/src/mock.cpp b/modules/lithium.cxxtools/src/mock.cpp index d06d7803..2a4a0465 100644 --- a/modules/lithium.cxxtools/src/mock.cpp +++ b/modules/lithium.cxxtools/src/mock.cpp @@ -1,26 +1,33 @@ +// mock.cpp #include #include +#include #include #include #include #include -#include +#include #include #include #include +#include "atom/log/loguru.hpp" +#include "atom/type/json.hpp" + using asio::ip::tcp; using json = nlohmann::json; namespace fs = std::filesystem; class MockServer : public std::enable_shared_from_this { public: - MockServer(asio::io_context& ioContext, short port, - const std::string& configFile) - : acceptor_(ioContext, tcp::endpoint(tcp::v4(), port)) { + MockServer(asio::io_context& ioContext, unsigned short port, + const fs::path& configFile) + : acceptor_(ioContext, tcp::endpoint(tcp::v4(), port)), + sslContext_(asio::ssl::context::tlsv12_server) { loadConfig(configFile); configureSSL(); - accept(); + startAccept(); + LOG_F(INFO, "MockServer initialized on port {}", port); } private: @@ -28,194 +35,421 @@ class MockServer : public std::enable_shared_from_this { std::string method; int code; std::string body; - int delay; + int delay_ms; // milliseconds std::unordered_map headers; }; - void loadConfig(const std::string& configFile) { + struct Response { + std::string text; + int delay_ms; // milliseconds + }; + + void loadConfig(const fs::path& configFile) { std::ifstream file(configFile); if (!file) { - std::cerr << "Failed to open configuration file: " << configFile - << std::endl; - return; + LOG_F(ERROR, "Failed to open configuration file: {}", + configFile.string()); + throw std::runtime_error("Failed to open configuration file"); } json configJson; - file >> configJson; - - for (const auto& endpoint : configJson["endpoints"]) { - std::string path = endpoint["path"]; - std::string method = endpoint["request_method"]; - int code = endpoint["response_code"]; - std::string body = endpoint["response_body"]; - int delay = endpoint.value("response_delay_ms", 0); - std::unordered_map headers; - - if (endpoint.contains("headers")) { - headers = - endpoint["headers"] - .get>(); + try { + file >> configJson; + } catch (const json::parse_error& e) { + LOG_F(ERROR, "JSON parse error in configuration file {}: {}", + configFile.string(), e.what()); + throw; + } + + if (!configJson.contains("endpoints") || + !configJson["endpoints"].is_array()) { + LOG_F(ERROR, + "Invalid configuration file: 'endpoints' array missing or " + "not an array"); + throw std::runtime_error("Invalid configuration file structure"); + } + + for (const auto& endpointJson : configJson["endpoints"]) { + if (!endpointJson.contains("path") || + !endpointJson.contains("request_method") || + !endpointJson.contains("response_code") || + !endpointJson.contains("response_body")) { + LOG_F(WARNING, "Endpoint missing required fields: {}", + endpointJson.dump()); + continue; // Skip invalid endpoint } - endpoints_[path] = {method, code, body, delay, headers}; + Endpoint endpoint; + endpoint.method = endpointJson["request_method"].get(); + endpoint.code = endpointJson["response_code"].get(); + endpoint.body = endpointJson["response_body"].get(); + endpoint.delay_ms = endpointJson.value("response_delay_ms", 0); + + if (endpointJson.contains("headers") && + endpointJson["headers"].is_object()) { + for (auto& [key, value] : endpointJson["headers"].items()) { + if (value.is_string()) { + endpoint.headers.emplace(key, value.get()); + } + } + } + + std::string path = endpointJson["path"].get(); + endpoints_.emplace(std::move(path), std::move(endpoint)); + LOG_F(INFO, "Loaded endpoint: {} {}", endpoint.method, path); } } void configureSSL() { - sslContext_.set_options(asio::ssl::context::default_workarounds | - asio::ssl::context::no_sslv2 | - asio::ssl::context::single_dh_use); - - // Use a self-signed certificate and private key for demonstration - // purposes - sslContext_.use_certificate_chain_file("server.crt"); - sslContext_.use_private_key_file("server.key", asio::ssl::context::pem); + try { + sslContext_.set_options(asio::ssl::context::default_workarounds | + asio::ssl::context::no_sslv2 | + asio::ssl::context::single_dh_use); + + // Use a self-signed certificate and private key for demonstration + // purposes + sslContext_.use_certificate_chain_file("server.crt"); + sslContext_.use_private_key_file("server.key", + asio::ssl::context::pem); + + LOG_F(INFO, "SSL context configured successfully."); + } catch (const std::exception& e) { + LOG_F(ERROR, "Failed to configure SSL context: {}", e.what()); + throw; + } } - void accept() { - sslSocket_ = std::make_shared>( + void startAccept() { + auto sslSocket = std::make_shared>( acceptor_.get_executor().context(), sslContext_); + acceptor_.async_accept( - sslSocket_->lowest_layer(), [this](std::error_code errorCode) { - if (!errorCode) { - sslSocket_->async_handshake( + sslSocket->lowest_layer(), [this, sslSocket](std::error_code ec) { + if (!ec) { + try { + auto remoteEndpoint = + sslSocket->lowest_layer().remote_endpoint(); + LOG_F(INFO, "Accepted connection from {}", + remoteEndpoint); + } catch (const std::exception& e) { + LOG_F(WARNING, "Failed to get remote endpoint: {}", + e.what()); + } + + sslSocket->async_handshake( asio::ssl::stream_base::server, - [this](const std::error_code& error) { - if (!error) { - handleClient(sslSocket_); + [this, sslSocket](const std::error_code& handshake_ec) { + if (!handshake_ec) { + try { + auto remoteEndpoint = + sslSocket->lowest_layer() + .remote_endpoint(); + LOG_F(INFO, + "SSL handshake successful with {}", + remoteEndpoint); + } catch (const std::exception& e) { + LOG_F(WARNING, + "Failed to get remote endpoint after " + "handshake: {}", + e.what()); + } + handleClient(sslSocket); + } else { + LOG_F(ERROR, "SSL handshake failed: {}", + handshake_ec.message()); } }); + } else { + LOG_F(ERROR, "Accept error: {}", ec.message()); } - accept(); + // Continue accepting new connections + startAccept(); }); } void handleClient( std::shared_ptr> sslSocket) { - auto self(shared_from_this()); + auto self = shared_from_this(); + auto buffer = std::make_shared(); + asio::async_read_until( - *sslSocket, asio::dynamic_buffer(request_), "\r\n\r\n", - [this, self, sslSocket](std::error_code errorCode, - std::size_t /*length*/) { - if (!errorCode) { - std::istringstream requestStream(request_); - std::string method; - std::string path; - std::string protocol; - requestStream >> method >> path >> protocol; - logRequest(method, path); - - auto response = handleRequest(method, path, requestStream); - std::this_thread::sleep_for( - std::chrono::milliseconds(response.delay)); + *sslSocket, *buffer, "\r\n\r\n", + [this, self, sslSocket, buffer](std::error_code ec, + std::size_t bytes_transferred) { + if (!ec) { + std::istream requestStream(buffer.get()); + std::string requestLine; + std::getline(requestStream, requestLine); + if (!requestStream) { + LOG_F(WARNING, "Failed to read request line."); + return; + } + + // Remove possible '\r' at the end of request line + if (!requestLine.empty() && requestLine.back() == '\r') { + requestLine.pop_back(); + } + + std::istringstream requestLineStream(requestLine); + std::string method, path, protocol; + requestLineStream >> method >> path >> protocol; + LOG_F(INFO, + "Received request: Method={}, Path={}, Protocol={}", + method, path, protocol); + + // Consume remaining headers + std::string header; + while (std::getline(requestStream, header) && + header != "\r") { + // Log each header + LOG_F(INFO, "Header: {}", header); + } + + auto response = handleRequest(method, path); + LOG_F(INFO, "Prepared response for {} {}", method, path); + + if (response.delay_ms > 0) { + LOG_F(INFO, "Delaying response by {} ms", + response.delay_ms); + std::this_thread::sleep_for( + std::chrono::milliseconds(response.delay_ms)); + } asio::async_write( *sslSocket, asio::buffer(response.text), - [sslSocket](std::error_code ec, std::size_t) { - if (!ec) { - sslSocket->shutdown(); + [sslSocket, self](std::error_code write_ec, + std::size_t bytes_written) { + if (!write_ec) { + try { + auto remoteEndpoint = + sslSocket->lowest_layer() + .remote_endpoint(); + LOG_F(INFO, + "Sent {} bytes in response to {}", + bytes_written, remoteEndpoint); + } catch (const std::exception& e) { + LOG_F(WARNING, + "Failed to get remote endpoint after " + "write: {}", + e.what()); + } + } else { + LOG_F(ERROR, "Failed to send response: {}", + write_ec.message()); } + + // Gracefully shutdown the connection + sslSocket->async_shutdown( + [sslSocket, + self](const std::error_code& shutdown_ec) { + if (!shutdown_ec) { + try { + auto remoteEndpoint = + sslSocket->lowest_layer() + .remote_endpoint(); + LOG_F(INFO, + "Connection with {} closed " + "gracefully.", + remoteEndpoint); + } catch (const std::exception& e) { + LOG_F(WARNING, + "Failed to get remote " + "endpoint after shutdown: {}", + e.what()); + } + } else { + LOG_F(ERROR, "Shutdown failed: {}", + shutdown_ec.message()); + } + }); }); + } else { + LOG_F(ERROR, "Error reading request: {}", ec.message()); } }); } - struct Response { - std::string text; - int delay; - }; - - auto handleRequest(const std::string& method, const std::string& path, - std::istringstream& /*requestStream*/) -> Response { - auto endpointIterator = endpoints_.find(path); + Response handleRequest(const std::string& method, + const std::string& path) const { + auto it = endpoints_.find(path); + if (it != endpoints_.end() && it->second.method == method) { + LOG_F(INFO, "Handling configured endpoint: {} {}", method, path); + return generateResponse(it->second); + } - if (endpointIterator != endpoints_.end() && - endpointIterator->second.method == method) { - return generateResponse(endpointIterator->second); + // Serve static files by default + fs::path staticFileDir = "static"; + fs::path requestedPath = path.starts_with('/') + ? path.substr(1) + : path; // Remove leading '/' if present + fs::path filePath = fs::canonical(staticFileDir) / requestedPath; + + // Prevent path traversal + try { + fs::path canonicalStaticDir = fs::canonical(staticFileDir); + fs::path canonicalFilePath = fs::canonical(filePath); + + if (canonicalFilePath.string().find(canonicalStaticDir.string()) != + 0) { + LOG_F(WARNING, "Path traversal attempt detected: {}", path); + std::string forbiddenBody = "403 Forbidden"; + std::ostringstream forbiddenResponse; + forbiddenResponse << "HTTP/1.1 403 Forbidden\r\n" + << "Content-Type: text/plain\r\n" + << "Content-Length: " << forbiddenBody.size() + << "\r\n\r\n" + << forbiddenBody; + return {forbiddenResponse.str(), 0}; + } + } catch (const fs::filesystem_error& e) { + LOG_F(ERROR, "Filesystem error while resolving path: {}", e.what()); + // Return 500 Internal Server Error + std::string serverErrorBody = "500 Internal Server Error"; + std::ostringstream serverErrorResponse; + serverErrorResponse << "HTTP/1.1 500 Internal Server Error\r\n" + << "Content-Type: text/plain\r\n" + << "Content-Length: " << serverErrorBody.size() + << "\r\n\r\n" + << serverErrorBody; + return {serverErrorResponse.str(), 0}; } - // Serve static files default path - std::string staticFileDir = "static"; - if (fs::exists(staticFileDir + path) && - fs::is_regular_file(staticFileDir + path)) { - return serveStaticFile(staticFileDir + path); + if (fs::exists(filePath) && fs::is_regular_file(filePath)) { + LOG_F(INFO, "Serving static file: {}", filePath.string()); + return serveStaticFile(filePath); } - // Default 404 response - return { - "HTTP/1.1 404 Not Found\r\nContent-Type: " - "text/plain\r\nContent-Length: 0\r\n\r\n", - 0}; + // Default 404 Not Found response + LOG_F(INFO, "Endpoint not found: {} {}, returning 404", method, path); + std::string notFoundBody = "404 Not Found"; + std::ostringstream notFoundResponse; + notFoundResponse << "HTTP/1.1 404 Not Found\r\n" + << "Content-Type: text/plain\r\n" + << "Content-Length: " << notFoundBody.size() + << "\r\n\r\n" + << notFoundBody; + return {notFoundResponse.str(), 0}; } - static auto generateResponse(const Endpoint& endpoint) -> Response { + Response generateResponse(const Endpoint& endpoint) const { std::ostringstream response; + response << "HTTP/1.1 " << endpoint.code << " "; + + // Map of common HTTP status codes and reasons + static const std::unordered_map statusReasons = { + {200, "OK"}, + {201, "Created"}, + {400, "Bad Request"}, + {401, "Unauthorized"}, + {403, "Forbidden"}, + {404, "Not Found"}, + {500, "Internal Server Error"} + // Add more as needed + }; + + auto reason_it = statusReasons.find(endpoint.code); + if (reason_it != statusReasons.end()) { + response << reason_it->second; + } else { + response << "Status"; + } - response << "HTTP/1.1 " << endpoint.code << " OK\r\n"; - for (const auto& header : endpoint.headers) { - response << header.first << ": " << header.second << "\r\n"; + response << "\r\n"; + + for (const auto& [key, value] : endpoint.headers) { + response << key << ": " << value << "\r\n"; } - response << "Content-Length: " << endpoint.body.size() << "\r\n\r\n"; - response << endpoint.body; - return {response.str(), endpoint.delay}; + response << "Content-Length: " << endpoint.body.size() << "\r\n\r\n" + << endpoint.body; + + LOG_F(INFO, "Generated response: {}", response.str()); + + return {response.str(), endpoint.delay_ms}; } - static auto serveStaticFile(const std::string& filePath) -> Response { + Response serveStaticFile(const fs::path& filePath) const { std::ifstream file(filePath, std::ios::binary); - if (!file) { - return { - "HTTP/1.1 500 Internal Server Error\r\nContent-Type: " - "text/plain\r\nContent-Length: 0\r\n\r\n", - 0}; + LOG_F(ERROR, "Failed to open static file: {}", filePath.string()); + + std::string serverErrorBody = "500 Internal Server Error"; + std::ostringstream serverErrorResponse; + serverErrorResponse << "HTTP/1.1 500 Internal Server Error\r\n" + << "Content-Type: text/plain\r\n" + << "Content-Length: " << serverErrorBody.size() + << "\r\n\r\n" + << serverErrorBody; + return {serverErrorResponse.str(), 0}; } - std::ostringstream body; - body << file.rdbuf(); - std::string content = body.str(); + std::ostringstream bodyStream; + bodyStream << file.rdbuf(); + std::string content = bodyStream.str(); std::ostringstream response; - response << "HTTP/1.1 200 OK\r\n"; - response << "Content-Type: application/octet-stream\r\n"; - response << "Content-Length: " << content.size() << "\r\n\r\n"; - response << content; - - return {response.str(), 0}; - } + response << "HTTP/1.1 200 OK\r\n" + << "Content-Type: application/octet-stream\r\n" + << "Content-Length: " << content.size() << "\r\n\r\n" + << content; - void logRequest(const std::string& method, const std::string& path) { - std::cout << "Received request: " << method << " " << path << std::endl; + LOG_F(INFO, "Serving static file response: {}", filePath.string()); - std::scoped_lock lock(logMutex_); - std::ofstream logFile("request_log.txt", std::ios::app); - logFile << method << " " << path << std::endl; + return {response.str(), 0}; } tcp::acceptor acceptor_; - asio::ssl::context sslContext_{asio::ssl::context::tlsv12}; - std::shared_ptr> sslSocket_; - std::string request_; + asio::ssl::context sslContext_; std::unordered_map endpoints_; - std::mutex logMutex_; + mutable std::mutex logMutex_; }; -auto main(int argc, char* argv[]) -> int { +int main(int argc, char* argv[]) { + loguru::init(argc, argv); + LOG_F(INFO, "MockServer application started."); + if (argc != 3) { + LOG_F(ERROR, "Invalid number of arguments."); std::cerr << "Usage: " << argv[0] << " " << std::endl; return 1; } try { + unsigned short port = 0; + try { + port = static_cast(std::stoul(argv[1])); + } catch (const std::exception& e) { + LOG_F(ERROR, "Invalid port number '{}': {}", argv[1], e.what()); + std::cerr << "Invalid port number: " << argv[1] << std::endl; + return 1; + } + + fs::path configFile = argv[2]; + if (!fs::exists(configFile)) { + LOG_F(ERROR, "Configuration file does not exist: {}", + configFile.string()); + std::cerr << "Configuration file does not exist: " << configFile + << std::endl; + return 1; + } + asio::io_context ioContext; - MockServer server(ioContext, - static_cast(std::strtol(argv[1], nullptr, 10)), - argv[2]); + + auto server = std::make_shared(ioContext, port, configFile); + LOG_F(INFO, "Starting IO context."); ioContext.run(); + LOG_F(INFO, "IO context stopped."); } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in main: {}", e.what()); std::cerr << "Exception: " << e.what() << std::endl; + return 1; + } catch (...) { + LOG_F(ERROR, "Unknown exception in main."); + std::cerr << "Unknown exception." << std::endl; + return 1; } + LOG_F(INFO, "MockServer application terminated gracefully."); return 0; -} +} \ No newline at end of file diff --git a/modules/lithium.cxxtools/src/nc.cpp b/modules/lithium.cxxtools/src/nc.cpp index 4f7c15b3..40759a05 100644 --- a/modules/lithium.cxxtools/src/nc.cpp +++ b/modules/lithium.cxxtools/src/nc.cpp @@ -1,9 +1,14 @@ +// nc.cpp #include #include #include +#include #include #include +#include +#include +#include "atom/log/loguru.hpp" using asio::ip::tcp; using asio::ip::udp; @@ -15,81 +20,89 @@ constexpr int DEFAULT_TIMEOUT_SECONDS = 10; // Function: Send file over TCP void sendFileTcp(tcp::socket& socket, const std::string& filename) { + LOG_F(INFO, "Attempting to send file over TCP: {}", filename); try { std::ifstream file(filename, std::ios::binary); if (!file) { - std::cerr << "Failed to open file: " << filename << std::endl; + LOG_F(ERROR, "Failed to open file: {}", filename); return; } std::array buffer; while (file.read(buffer.data(), buffer.size())) { - asio::write(socket, - asio::buffer(buffer, static_cast( - file.gcount()))); + asio::write(socket, asio::buffer(buffer, file.gcount())); + LOG_F(INFO, "Sent {} bytes over TCP", file.gcount()); } if (file.gcount() > 0) { - asio::write(socket, - asio::buffer(buffer, static_cast( - file.gcount()))); + asio::write(socket, asio::buffer(buffer, file.gcount())); + LOG_F(INFO, "Sent remaining {} bytes over TCP", file.gcount()); } - std::cout << "File sent: " << filename << std::endl; + LOG_F(INFO, "File successfully sent: {}", filename); } catch (const std::ios_base::failure& e) { - std::cerr << "File I/O error: " << e.what() << std::endl; + LOG_F(ERROR, "File I/O error while sending file over TCP: {}", + e.what()); } catch (const asio::system_error& e) { - std::cerr << "ASIO error: " << e.what() << std::endl; + LOG_F(ERROR, "ASIO system error while sending file over TCP: {}", + e.what()); } catch (const std::exception& e) { - std::cerr << "Error sending file over TCP: " << e.what() << std::endl; + LOG_F(ERROR, "Unexpected error while sending file over TCP: {}", + e.what()); } } // Function: Send file over UDP void sendFileUdp(udp::socket& socket, const udp::endpoint& endpoint, const std::string& filename) { + LOG_F(INFO, "Attempting to send file over UDP: {}", filename); try { std::ifstream file(filename, std::ios::binary); if (!file) { - std::cerr << "Failed to open file: " << filename << std::endl; + LOG_F(ERROR, "Failed to open file: {}", filename); return; } std::array buffer; while (file.read(buffer.data(), buffer.size())) { - socket.send_to(asio::buffer(buffer, static_cast( - file.gcount())), - endpoint); + socket.send_to(asio::buffer(buffer, file.gcount()), endpoint); + LOG_F(INFO, "Sent {} bytes over UDP", file.gcount()); } if (file.gcount() > 0) { - socket.send_to(asio::buffer(buffer, static_cast( - file.gcount())), - endpoint); + socket.send_to(asio::buffer(buffer, file.gcount()), endpoint); + LOG_F(INFO, "Sent remaining {} bytes over UDP", file.gcount()); } - std::cout << "File sent: " << filename << std::endl; + LOG_F(INFO, "File successfully sent: {}", filename); } catch (const std::ios_base::failure& e) { - std::cerr << "File I/O error: " << e.what() << std::endl; + LOG_F(ERROR, "File I/O error while sending file over UDP: {}", + e.what()); } catch (const asio::system_error& e) { - std::cerr << "ASIO error: " << e.what() << std::endl; + LOG_F(ERROR, "ASIO system error while sending file over UDP: {}", + e.what()); } catch (const std::exception& e) { - std::cerr << "Error sending file over UDP: " << e.what() << std::endl; + LOG_F(ERROR, "Unexpected error while sending file over UDP: {}", + e.what()); } } // TCP mode client void runTcpClient(const std::string& host, const std::string& port, - int timeoutSeconds, const std::string& filename = "") { + int timeoutSeconds, + const std::optional& filename = std::nullopt) { + LOG_F(INFO, "Running TCP client with host: {}, port: {}, timeout: {}", host, + port, timeoutSeconds); try { asio::io_context ioContext; tcp::resolver resolver(ioContext); auto endpoints = resolver.resolve(host, port); tcp::socket socket(ioContext); + LOG_F(INFO, "Attempting to connect to {}:{}", host, port); asio::connect(socket, endpoints); - std::cout << "Connected to " << host << ":" << port << std::endl; + LOG_F(INFO, "Connected to {}:{}", host, port); - if (!filename.empty()) { - sendFileTcp(socket, filename); + if (filename.has_value()) { + sendFileTcp(socket, filename.value()); } else { asio::steady_timer timer(ioContext); while (true) { @@ -97,19 +110,21 @@ void runTcpClient(const std::string& host, const std::string& port, std::getline(std::cin, message); if (message.empty()) { + LOG_F(INFO, + "Empty message received, terminating TCP client."); break; } timer.expires_after(std::chrono::seconds(timeoutSeconds)); timer.async_wait([&socket](const asio::error_code& errorCode) { - if (errorCode) { - std::cerr << "Timeout error: " << errorCode.message() - << std::endl; + if (!errorCode) { + LOG_F(ERROR, "Operation timed out. Closing socket."); socket.close(); } }); asio::write(socket, asio::buffer(message + "\n")); + LOG_F(INFO, "Sent message over TCP: {}", message); std::array reply; std::error_code error; @@ -117,27 +132,30 @@ void runTcpClient(const std::string& host, const std::string& port, asio::read(socket, asio::buffer(reply), error); if (error) { - std::cerr << "Read error: " << error.message() << std::endl; + LOG_F(ERROR, "Read error on TCP socket: {}", + error.message()); break; } - std::cout << "Reply: " << std::string(reply.data(), replyLength) - << std::endl; - timer.cancel(); // Cancel the timer + std::string replyStr(reply.data(), replyLength); + LOG_F(INFO, "Received reply over TCP: {}", replyStr); + std::cout << "Reply: " << replyStr << std::endl; + timer.cancel(); } } } catch (const asio::system_error& e) { - std::cerr << "ASIO error: " << e.what() << std::endl; + LOG_F(ERROR, "ASIO system error in TCP client: {}", e.what()); } catch (const std::exception& e) { - std::cerr << "Exception: " << e.what() << std::endl; + LOG_F(ERROR, "Exception in TCP client: {}", e.what()); } catch (...) { - std::cerr << "Unknown exception occurred in TCP client" << std::endl; + LOG_F(ERROR, "Unknown exception occurred in TCP client"); } } // UDP mode client void runUdpClient(const std::string& host, const std::string& port, - const std::string& filename = "") { + const std::optional& filename = std::nullopt) { + LOG_F(INFO, "Running UDP client with host: {}, port: {}", host, port); try { asio::io_context ioContext; udp::resolver resolver(ioContext); @@ -146,19 +164,23 @@ void runUdpClient(const std::string& host, const std::string& port, udp::socket socket(ioContext); socket.open(udp::v4()); + LOG_F(INFO, "UDP socket opened."); - if (!filename.empty()) { - sendFileUdp(socket, *endpoints.begin(), filename); + if (filename.has_value()) { + sendFileUdp(socket, *endpoints.begin(), filename.value()); } else { while (true) { std::string message; std::getline(std::cin, message); if (message.empty()) { + LOG_F(INFO, + "Empty message received, terminating UDP client."); break; } socket.send_to(asio::buffer(message), *endpoints.begin()); + LOG_F(INFO, "Sent message over UDP: {}", message); std::array reply; udp::endpoint senderEndpoint; @@ -167,28 +189,34 @@ void runUdpClient(const std::string& host, const std::string& port, asio::buffer(reply), senderEndpoint, 0, error); if (error && error != asio::error::message_size) { - std::cerr << "Receive error: " << error.message() - << std::endl; + LOG_F(ERROR, "Receive error on UDP socket: {}", + error.message()); break; } - std::cout << "Reply from " << senderEndpoint << ": " - << std::string(reply.data(), replyLength) + std::string replyStr(reply.data(), replyLength); + LOG_F(INFO, "Received reply from {}: {}", senderEndpoint, + replyStr); + std::cout << "Reply from " << senderEndpoint << ": " << replyStr << std::endl; } } } catch (const asio::system_error& e) { - std::cerr << "ASIO error: " << e.what() << std::endl; + LOG_F(ERROR, "ASIO system error in UDP client: {}", e.what()); } catch (const std::exception& e) { - std::cerr << "Exception: " << e.what() << std::endl; + LOG_F(ERROR, "Exception in UDP client: {}", e.what()); } catch (...) { - std::cerr << "Unknown exception occurred in UDP client" << std::endl; + LOG_F(ERROR, "Unknown exception occurred in UDP client"); } } -auto main(int argc, char* argv[]) -> int { +int main(int argc, char* argv[]) { + loguru::init(argc, argv); + LOG_F(INFO, "Application started."); + try { if (argc < ARG_COUNT_MIN || argc > ARG_COUNT_MAX) { + LOG_F(ERROR, "Invalid number of arguments."); std::cerr << "Usage: " << argv[0] << " [timeout_seconds] [file_to_send]" @@ -201,20 +229,40 @@ auto main(int argc, char* argv[]) -> int { std::string port = argv[3]; int timeoutSeconds = (argc >= 5) ? std::stoi(argv[4]) : DEFAULT_TIMEOUT_SECONDS; - std::string filename = (argc == 6) ? argv[5] : ""; + std::optional filename = + (argc == 6) ? std::make_optional(argv[5]) + : std::nullopt; + + LOG_F(INFO, "Protocol: {}, Host: {}, Port: {}, Timeout: {}, File: {}", + protocol, host, port, timeoutSeconds, filename.value_or("None")); if (protocol == "tcp") { runTcpClient(host, port, timeoutSeconds, filename); } else if (protocol == "udp") { runUdpClient(host, port, filename); } else { + LOG_F(ERROR, "Unknown protocol: {}", protocol); std::cerr << "Unknown protocol: " << protocol << std::endl; + return 1; } + } catch (const std::invalid_argument& e) { + LOG_F(ERROR, "Invalid argument: {}", e.what()); + std::cerr << "Invalid argument: " << e.what() << std::endl; + return 1; + } catch (const std::out_of_range& e) { + LOG_F(ERROR, "Argument out of range: {}", e.what()); + std::cerr << "Argument out of range: " << e.what() << std::endl; + return 1; } catch (const std::exception& e) { + LOG_F(ERROR, "Unhandled exception in main: {}", e.what()); std::cerr << "Unhandled exception in main: " << e.what() << std::endl; + return 1; } catch (...) { + LOG_F(ERROR, "Unknown exception in main"); std::cerr << "Unknown exception in main" << std::endl; + return 1; } + LOG_F(INFO, "Application terminated successfully."); return 0; -} +} \ No newline at end of file diff --git a/modules/lithium.cxxtools/src/pci_generator.cpp b/modules/lithium.cxxtools/src/pci_generator.cpp index a8631892..9ecb6e97 100644 --- a/modules/lithium.cxxtools/src/pci_generator.cpp +++ b/modules/lithium.cxxtools/src/pci_generator.cpp @@ -19,17 +19,17 @@ Description: PCI info generator #include #include #include +#include #include #include +#include #include -#include "atom/error/exception.hpp" -#include "atom/log/loguru.hpp" - -#include "atom/macro.hpp" +#include "loguru.hpp" namespace fs = std::filesystem; +// Alignas is retained if necessary for specific memory alignment requirements struct Vendor { uint64_t pciId; size_t nameIndex; @@ -41,105 +41,215 @@ struct Device { size_t nameIndex; } ATOM_ALIGNAS(16); -void parseAndGeneratePCIInfo(std::string_view inputFilePath, - std::string_view outputFilePath) { - if (!fs::exists(inputFilePath) || !fs::is_regular_file(inputFilePath)) { - LOG_F(ERROR, "Input file does not exist or is not a regular file: {}", - inputFilePath); - THROW_FILE_NOT_READABLE( - "Input file does not exist or is not a regular file"); - } - - std::ifstream in(inputFilePath.data()); - if (!in.is_open()) { - LOG_F(ERROR, "Couldn't open input file: {}", inputFilePath); - THROW_FILE_NOT_READABLE("Couldn't open input file"); +class PCIInfoGenerator { +public: + PCIInfoGenerator(std::string_view inputFilePath, + std::string_view outputFilePath) + : inputPath_(inputFilePath), outputPath_(outputFilePath) {} + + void generate() { + validateFiles(); + parseInputFile(); + sortVendors(); + writeOutputFile(); } - std::ofstream out(outputFilePath.data()); - if (!out.is_open()) { - LOG_F(ERROR, "Couldn't open output file: {}", outputFilePath); - THROW_FILE_NOT_WRITABLE("Couldn't open output file"); - } +private: + fs::path inputPath_; + fs::path outputPath_; + std::vector vendors_; + std::vector devices_; + std::vector vendorDeviceNames_; + + void validateFiles() const { + if (!fs::exists(inputPath_) || !fs::is_regular_file(inputPath_)) { + LOG_F(ERROR, + "Input file does not exist or is not a regular file: {}", + inputPath_.string()); + throw std::runtime_error( + "Input file does not exist or is not a regular file"); + } - std::vector vendors; - std::vector devices; - std::vector vendorDeviceNames; + LOG_F(INFO, "Input file validated: {}", inputPath_.string()); - for (std::string line; std::getline(in, line);) { - if (line.empty() || line[0] == 'C') { - break; + // Check if output directory exists + fs::path outputDir = outputPath_.parent_path(); + if (!outputDir.empty() && !fs::exists(outputDir)) { + LOG_F(ERROR, "Output directory does not exist: {}", + outputDir.string()); + throw std::runtime_error("Output directory does not exist"); } - const auto TABCOUNT = line.find_first_not_of('\t'); - if ((std::isxdigit(line[TABCOUNT]) == 0) || TABCOUNT >= 3) { - continue; - } + LOG_F(INFO, "Output directory validated: {}", outputDir.string()); + } - if (*line.rbegin() == '\r') { - line.erase(line.length() - 1); - } + void parseInputFile() { + LOG_F(INFO, "Opening input file: {}", inputPath_.string()); - char* currentName{}; - auto currentNumber = - std::strtoull(line.c_str() + TABCOUNT, ¤tName, 16); - while (std::isspace(*currentName) != 0) { - ++currentName; + std::ifstream inFile(inputPath_, std::ios::in); + if (!inFile.is_open()) { + LOG_F(ERROR, "Failed to open input file: {}", inputPath_.string()); + throw std::runtime_error("Failed to open input file"); } - if (TABCOUNT == 0) { - vendors.emplace_back( - Vendor{currentNumber, vendorDeviceNames.size(), {}}); - } else if (TABCOUNT == 1) { - vendors.back().devices.push_back(devices.size()); - devices.emplace_back( - Device{currentNumber, vendorDeviceNames.size()}); + std::string line; + size_t lineNumber = 0; + + while (std::getline(inFile, line)) { + ++lineNumber; + if (line.empty() || line.front() == 'C') { + LOG_F(INFO, "Skipping line {}: Empty or starts with 'C'", + lineNumber); + continue; + } + + size_t firstNonTab = line.find_first_not_of('\t'); + if (firstNonTab == std::string::npos || firstNonTab >= 3) { + LOG_F(INFO, "Skipping line {}: Invalid TAB count", lineNumber); + continue; + } + + // Remove potential carriage return at the end + if (!line.empty() && line.back() == '\r') { + line.pop_back(); + } + + const char* c_str = line.c_str() + firstNonTab; + char* endPtr = nullptr; + uint64_t pciId = std::strtoull(c_str, &endPtr, 16); + + if (c_str == endPtr) { + LOG_F(WARNING, "Line {}: No valid PCI ID found", lineNumber); + continue; + } + + // Skip any whitespace after the PCI ID + while (std::isspace(*endPtr)) { + ++endPtr; + } + + std::string_view name(endPtr); + name = trim(name); + + if (firstNonTab == 0) { + // Vendor line + vendors_.emplace_back( + Vendor{pciId, vendorDeviceNames_.size(), {}}); + LOG_F(INFO, "Parsed Vendor: PCI ID=0x{:X}, NameIndex={}", pciId, + vendors_.back().nameIndex); + } else if (firstNonTab == 1) { + // Device line + if (vendors_.empty()) { + LOG_F(WARNING, "Line {}: Device found before any vendor", + lineNumber); + continue; + } + vendors_.back().devices.emplace_back(devices_.size()); + devices_.emplace_back(Device{pciId, vendorDeviceNames_.size()}); + LOG_F(INFO, "Parsed Device: PCI ID=0x{:X}, NameIndex={}", pciId, + devices_.back().nameIndex); + } + + vendorDeviceNames_.emplace_back(std::string(name)); + LOG_F(INFO, "Parsed Name: {}", vendorDeviceNames_.back()); } - vendorDeviceNames.emplace_back(currentName); + inFile.close(); + LOG_F(INFO, "Completed parsing input file. Vendors: {}, Devices: {}", + vendors_.size(), devices_.size()); } - std::ranges::sort(vendors, {}, &Vendor::pciId); + void sortVendors() { + LOG_F(INFO, "Sorting vendors by PCI ID"); - out << std::hex << std::showbase; + std::ranges::sort(vendors_, {}, &Vendor::pciId); - out << "#define ATOM_SYSTEM_GENERATED_PCI_INDICES\n"; - for (size_t idx = 0; const auto& vendor : vendors) { - out << " \\\n\t{" << vendor.pciId << ", " << idx << "},"; - ++idx; + LOG_F(INFO, "Vendors sorted"); } - out << "\n\n\n#define ATOM_SYSTEM_GENERATED_PCI_VENDORS"; - for (const auto& vendor : vendors) { - out << " \\\n\t{" << vendor.pciId << ", R\"(" - << vendorDeviceNames[vendor.nameIndex] << ")\", {"; - for (auto i : vendor.devices) { - out << i << ", "; + void writeOutputFile() const { + LOG_F(INFO, "Opening output file: {}", outputPath_.string()); + + std::ofstream outFile(outputPath_, std::ios::out); + if (!outFile.is_open()) { + LOG_F(ERROR, "Failed to open output file: {}", + outputPath_.string()); + throw std::runtime_error("Failed to open output file"); + } + + outFile << std::hex << std::showbase; + + // Write PCI Indices + outFile << "#define ATOM_SYSTEM_GENERATED_PCI_INDICES \\\n"; + for (size_t idx = 0; idx < vendors_.size(); ++idx) { + outFile << "\t{" << vendors_[idx].pciId << ", " << idx << "},\\\n"; + } + + outFile << "\n\n#define ATOM_SYSTEM_GENERATED_PCI_VENDORS \\\n"; + for (const auto& vendor : vendors_) { + outFile << "\t{" << vendor.pciId << ", R\"(" + << vendorDeviceNames_[vendor.nameIndex] << ")\", {"; + for (const auto& deviceIdx : vendor.devices) { + outFile << deviceIdx << ", "; + } + outFile << "}},\\\n"; + } + + outFile << "\n\n#define ATOM_SYSTEM_GENERATED_PCI_DEVICES \\\n"; + for (const auto& device : devices_) { + outFile << "\t{" << device.pciId << ", R\"(" + << vendorDeviceNames_[device.nameIndex] << ")\"},\\\n"; } - out << "}},"; + + outFile << "\n\nnamespace {}\n"; + + outFile.close(); + LOG_F(INFO, "Output file written successfully: {}", + outputPath_.string()); } - out << "\n\n\n#define ATOM_SYSTEM_GENERATED_PCI_DEVICES"; - for (const auto& device : devices) { - out << " \\\n\t{" << device.pciId << ", R\"(" - << vendorDeviceNames[device.nameIndex] << ")\"},"; + // Helper function to trim whitespace from both ends + std::string_view trim(std::string_view sv) const { + auto start = sv.find_first_not_of(" \t\r\n"); + auto end = sv.find_last_not_of(" \t\r\n"); + if (start == std::string_view::npos) + return ""; + return sv.substr(start, end - start + 1); } +}; - out << "\n\n\nnamespace {}\n"; -} +int main(int argc, const char** argv) { + LOG_F(INFO, "PCIInfoGenerator application started."); -auto main(int argc, const char** argv) -> int { if (argc < 3) { - LOG_F(ERROR, "Usage: {} ", argv[0]); - return 1; + LOG_F( + ERROR, + "Invalid number of arguments. Usage: {} ", + argv[0]); + std::cerr << "Usage: " << argv[0] << " " + << std::endl; + return EXIT_FAILURE; } + std::string_view inputFilePath = argv[1]; + std::string_view outputFilePath = argv[2]; + + LOG_F(INFO, "Input File: {}", inputFilePath); + LOG_F(INFO, "Output File: {}", outputFilePath); + try { - parseAndGeneratePCIInfo(argv[1], argv[2]); + PCIInfoGenerator generator(inputFilePath, outputFilePath); + generator.generate(); } catch (const std::exception& e) { - std::cerr << e.what() << std::endl; - return 1; + LOG_F(ERROR, "Exception occurred: {}", e.what()); + std::cerr << "Error: " << e.what() << std::endl; + return EXIT_FAILURE; + } catch (...) { + LOG_F(ERROR, "Unknown exception occurred."); + std::cerr << "An unknown error occurred." << std::endl; + return EXIT_FAILURE; } - return 0; -} + LOG_F(INFO, "PCIInfoGenerator application terminated successfully."); + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/modules/lithium.cxxtools/src/proxy.cpp b/modules/lithium.cxxtools/src/proxy.cpp index 403233fb..058336d6 100644 --- a/modules/lithium.cxxtools/src/proxy.cpp +++ b/modules/lithium.cxxtools/src/proxy.cpp @@ -1,13 +1,10 @@ #include "proxy.hpp" -#include #include #include #include #include #include -#include -#include #ifdef _WIN32 #include @@ -18,8 +15,6 @@ #include "atom/log/loguru.hpp" #include "atom/system/command.hpp" -namespace fs = std::filesystem; - namespace lithium::cxxtools { auto NetworkProxy::setProxy(const std::string& proxy, @@ -32,89 +27,164 @@ auto NetworkProxy::setProxy(const std::string& proxy, this->listenIP_ = listenIP; this->dns_ = dns; + try { #ifdef _WIN32 - return setWindowsProxy(proxy); + if (!setWindowsProxy(proxy)) { + LOG_F(ERROR, "Failed to set Windows proxy."); + return false; + } #else - return setLinuxProxy(proxy); + if (!setLinuxProxy(proxy)) { + LOG_F(ERROR, "Failed to set Linux proxy."); + return false; + } #endif + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in setProxy: {}", e.what()); + return false; + } + + LOG_F(INFO, "Proxy has been set successfully."); + return true; } [[nodiscard]] auto NetworkProxy::disableProxy() const -> bool { LOG_F(INFO, "Disabling proxy"); + try { #ifdef _WIN32 - return disableWindowsProxy(); + if (!disableWindowsProxy()) { + LOG_F(ERROR, "Failed to disable Windows proxy."); + return false; + } #else - return disableLinuxProxy(); + if (!disableLinuxProxy()) { + LOG_F(ERROR, "Failed to disable Linux proxy."); + return false; + } #endif + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in disableProxy: {}", e.what()); + return false; + } + LOG_F(INFO, "Proxy has been disabled successfully."); + return true; } [[nodiscard]] auto NetworkProxy::getCurrentProxy() -> std::string { + LOG_F(INFO, "Retrieving current proxy settings."); + try { #ifdef _WIN32 - - return getWindowsCurrentProxy(); + return getWindowsCurrentProxy(); #else - return getLinuxCurrentProxy(); + return getLinuxCurrentProxy(); #endif + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in getCurrentProxy: {}", e.what()); + return ""; + } } [[nodiscard]] auto NetworkProxy::installCertificate( const std::string& certPath) const -> bool { LOG_F(INFO, "Installing certificate: {}", certPath); + try { #ifdef _WIN32 - return installWindowsCertificate(certPath); + if (!installWindowsCertificate(certPath)) { + LOG_F(ERROR, "Failed to install Windows certificate."); + return false; + } #else - return installLinuxCertificate(certPath); + if (!installLinuxCertificate(certPath)) { + LOG_F(ERROR, "Failed to install Linux certificate."); + return false; + } #endif + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in installCertificate: {}", e.what()); + return false; + } + LOG_F(INFO, "Certificate installed successfully."); + return true; } [[nodiscard]] auto NetworkProxy::uninstallCertificate( const std::string& certName) const -> bool { LOG_F(INFO, "Uninstalling certificate: {}", certName); + try { #ifdef _WIN32 - return uninstallWindowsCertificate(certName); + if (!uninstallWindowsCertificate(certName)) { + LOG_F(ERROR, "Failed to uninstall Windows certificate."); + return false; + } #else - return uninstallLinuxCertificate(certName); + if (!uninstallLinuxCertificate(certName)) { + LOG_F(ERROR, "Failed to uninstall Linux certificate."); + return false; + } #endif + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in uninstallCertificate: {}", e.what()); + return false; + } + LOG_F(INFO, "Certificate uninstalled successfully."); + return true; } [[nodiscard]] auto NetworkProxy::viewCertificateInfo( const std::string& certName) const -> std::string { LOG_F(INFO, "Viewing certificate info: {}", certName); + try { #ifdef _WIN32 - return viewWindowsCertificateInfo(certName); + return viewWindowsCertificateInfo(certName); #else - return viewLinuxCertificateInfo(certName); + return viewLinuxCertificateInfo(certName); #endif + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in viewCertificateInfo: {}", e.what()); + return ""; + } } void NetworkProxy::editHostsFile( const std::vector>& hostsEntries) { - LOG_F(INFO, "Editing Hosts file"); + LOG_F(INFO, "Editing Hosts file with {} entries.", hostsEntries.size()); + try { #ifdef _WIN32 - editWindowsHostsFile(hostsEntries); + editWindowsHostsFile(hostsEntries); #else - editLinuxHostsFile(hostsEntries); + editLinuxHostsFile(hostsEntries); #endif + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in editHostsFile: {}", e.what()); + } + LOG_F(INFO, "Hosts file has been edited successfully."); } void NetworkProxy::resetHostsFile() { - LOG_F(INFO, "Resetting Hosts file"); + LOG_F(INFO, "Resetting Hosts file."); + try { #ifdef _WIN32 - resetWindowsHostsFile(); + resetWindowsHostsFile(); #else - resetLinuxHostsFile(); + resetLinuxHostsFile(); #endif + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in resetHostsFile: {}", e.what()); + } + LOG_F(INFO, "Hosts file has been reset successfully."); } void NetworkProxy::enableHttpToHttpsRedirect(bool enable) { LOG_F(INFO, "Enabling HTTP to HTTPS redirect: {}", - std::string(enable ? "enabled" : "disabled")); + enable ? "enabled" : "disabled"); this->httpToHttpsRedirect_ = enable; + // Additional functionality can be implemented here if needed } void NetworkProxy::setCustomDoH(const std::string& dohUrl) { LOG_F(INFO, "Setting custom DoH: {}", dohUrl); this->dohUrl_ = dohUrl; + // Additional functionality can be implemented here if needed } auto NetworkProxy::getProxyModeName(ProxyMode mode) -> std::string { @@ -136,76 +206,91 @@ bool NetworkProxy::setWindowsProxy(const std::string& proxy) const { const char* regPath = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"; - // 打开注册表键 + LOG_F(INFO, "Opening registry key: {}", regPath); + // Open registry key if (RegOpenKeyEx(HKEY_CURRENT_USER, regPath, 0, KEY_SET_VALUE, &hKey) != ERROR_SUCCESS) { - LOG_F(ERROR, "Failed to open registry key."); + LOG_F(ERROR, "Failed to open registry key: {}", regPath); return false; } + LOG_F(INFO, "Registry key opened successfully."); - // 启用代理设置(ProxyEnable=1) + // Enable proxy settings (ProxyEnable=1) DWORD proxyEnable = 1; - if (RegSetValueEx(hKey, "ProxyEnable", 0, REG_DWORD, (BYTE*)&proxyEnable, + if (RegSetValueEx(hKey, "ProxyEnable", 0, REG_DWORD, + reinterpret_cast(&proxyEnable), sizeof(proxyEnable)) != ERROR_SUCCESS) { LOG_F(ERROR, "Failed to enable proxy."); RegCloseKey(hKey); return false; } + LOG_F(INFO, "Proxy enabled in registry."); - // 设置代理服务器地址 - if (RegSetValueEx(hKey, "ProxyServer", 0, REG_SZ, (BYTE*)proxy.c_str(), + // Set proxy server address + if (RegSetValueEx(hKey, "ProxyServer", 0, REG_SZ, + reinterpret_cast(proxy.c_str()), proxy.length() + 1) != ERROR_SUCCESS) { LOG_F(ERROR, "Failed to set proxy server."); RegCloseKey(hKey); return false; } + LOG_F(INFO, "Proxy server set to {}", proxy); - // 可选:设置代理例外(如不使用代理的本地地址) - std::string proxyOverride = ""; // 默认设置本地地址例外 + // Optional: Set proxy exceptions (e.g., local addresses) + std::string proxyOverride = + ""; // Default to local address exceptions if (RegSetValueEx(hKey, "ProxyOverride", 0, REG_SZ, - (BYTE*)proxyOverride.c_str(), + reinterpret_cast(proxyOverride.c_str()), proxyOverride.length() + 1) != ERROR_SUCCESS) { LOG_F(ERROR, "Failed to set proxy override."); RegCloseKey(hKey); return false; } + LOG_F(INFO, "Proxy override set to {}", proxyOverride); - // 如果指定了监听IP,则更新代理覆盖字段以包含此IP + // If a listenIP is specified, update the proxy override field to include + // this IP if (!listenIP_.empty() && listenIP_ != "0.0.0.0") { + LOG_F(INFO, "Updating proxy override with listen IP: {}", listenIP_); std::string currentOverride; DWORD size = 0; RegQueryValueEx(hKey, "ProxyOverride", NULL, NULL, NULL, - &size); // 获取当前大小 + &size); // Get current size currentOverride.resize(size); RegQueryValueEx(hKey, "ProxyOverride", NULL, NULL, - (BYTE*)¤tOverride[0], &size); + reinterpret_cast(¤tOverride[0]), &size); if (!currentOverride.empty() && currentOverride.back() != ';') { currentOverride += ";"; } currentOverride += listenIP_; - if (RegSetValueEx(hKey, "ProxyOverride", 0, REG_SZ, - (BYTE*)currentOverride.c_str(), - currentOverride.length() + 1) != ERROR_SUCCESS) { + if (RegSetValueEx( + hKey, "ProxyOverride", 0, REG_SZ, + reinterpret_cast(currentOverride.c_str()), + currentOverride.length() + 1) != ERROR_SUCCESS) { LOG_F(ERROR, "Failed to update proxy override with listen IP."); RegCloseKey(hKey); return false; } + LOG_F(INFO, "Proxy override updated with listen IP: {}", listenIP_); } - // 如果指定了自定义DNS,则通过 `netsh` 命令设置 + // If a custom DNS is specified, set it using the `netsh` command if (!dns_.empty()) { + LOG_F(INFO, "Setting custom DNS: {}", dns_); std::string dnsCommand = - "netsh interface ip set dns name=\"Local Area Connection\" " - " " + - dns_; + "netsh interface ip set dns name=\"Local Area Connection\" " + dns_; if (atom::system::executeCommandWithStatus(dnsCommand).second != 0) { LOG_F(ERROR, "Failed to set custom DNS."); + // Continue even if DNS setting fails + } else { + LOG_F(INFO, "Custom DNS set to {}", dns_); } } RegCloseKey(hKey); + LOG_F(INFO, "Windows proxy settings configured successfully."); return true; } @@ -214,21 +299,26 @@ bool NetworkProxy::disableWindowsProxy() const { const char* regPath = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"; + LOG_F(INFO, "Opening registry key: {}", regPath); if (RegOpenKeyEx(HKEY_CURRENT_USER, regPath, 0, KEY_SET_VALUE, &hKey) != ERROR_SUCCESS) { - LOG_F(ERROR, "Failed to open registry key."); + LOG_F(ERROR, "Failed to open registry key: {}", regPath); return false; } + LOG_F(INFO, "Registry key opened successfully."); DWORD proxyEnable = 0; - if (RegSetValueEx(hKey, "ProxyEnable", 0, REG_DWORD, (BYTE*)&proxyEnable, + if (RegSetValueEx(hKey, "ProxyEnable", 0, REG_DWORD, + reinterpret_cast(&proxyEnable), sizeof(proxyEnable)) != ERROR_SUCCESS) { LOG_F(ERROR, "Failed to disable proxy."); RegCloseKey(hKey); return false; } + LOG_F(INFO, "Proxy disabled in registry."); RegCloseKey(hKey); + LOG_F(INFO, "Windows proxy settings disabled successfully."); return true; } @@ -239,83 +329,121 @@ std::string NetworkProxy::getWindowsCurrentProxy() const { char buffer[256]; DWORD bufferSize = sizeof(buffer); + LOG_F(INFO, "Opening registry key to get current proxy: {}", regPath); if (RegOpenKeyEx(HKEY_CURRENT_USER, regPath, 0, KEY_QUERY_VALUE, &hKey) != ERROR_SUCCESS) { - LOG_F(ERROR, "Failed to open registry key."); + LOG_F(ERROR, "Failed to open registry key: {}", regPath); return ""; } + LOG_F(INFO, "Registry key opened successfully."); - if (RegQueryValueEx(hKey, "ProxyServer", NULL, NULL, (BYTE*)buffer, + if (RegQueryValueEx(hKey, "ProxyServer", NULL, NULL, + reinterpret_cast(buffer), &bufferSize) != ERROR_SUCCESS) { - LOG_F(ERROR, "Failed to query proxy."); + LOG_F(ERROR, "Failed to query proxy server."); RegCloseKey(hKey); return ""; } RegCloseKey(hKey); - return std::string(buffer); + std::string proxy(buffer); + LOG_F(INFO, "Current proxy server: {}", proxy); + return proxy; } -bool NetworkProxy::installWindowsCertificate(const std::string& certPath) const { +bool NetworkProxy::installWindowsCertificate( + const std::string& certPath) const { + LOG_F(INFO, "Installing Windows certificate from path: {}", certPath); std::string command = "certutil -addstore -f \"Root\" " + certPath; int result = system(command.c_str()); if (result != 0) { - LOG_F(ERROR, "Failed to install certificate."); + LOG_F(ERROR, "Failed to install Windows certificate from path: {}", + certPath); return false; } + LOG_F(INFO, "Windows certificate installed successfully from path: {}", + certPath); return true; } -bool NetworkProxy::uninstallWindowsCertificate(const std::string& certName) const { +bool NetworkProxy::uninstallWindowsCertificate( + const std::string& certName) const { + LOG_F(INFO, "Uninstalling Windows certificate: {}", certName); std::string command = "certutil -delstore \"Root\" " + certName; int result = system(command.c_str()); if (result != 0) { - LOG_F(ERROR, "Failed to uninstall certificate."); + LOG_F(ERROR, "Failed to uninstall Windows certificate: {}", certName); return false; } + LOG_F(INFO, "Windows certificate uninstalled successfully: {}", certName); return true; } -std::string NetworkProxy::viewWindowsCertificateInfo(const std::string& certName) const { +std::string NetworkProxy::viewWindowsCertificateInfo( + const std::string& certName) const { + LOG_F(INFO, "Viewing Windows certificate info: {}", certName); std::string command = "certutil -store \"Root\" " + certName; std::string result; char buffer[128]; FILE* pipe = _popen(command.c_str(), "r"); - if (!pipe) + if (!pipe) { + LOG_F(ERROR, "popen() failed while viewing certificate info."); throw std::runtime_error("popen() failed!"); + } try { while (fgets(buffer, sizeof(buffer), pipe) != NULL) { result += buffer; } } catch (...) { _pclose(pipe); + LOG_F(ERROR, "Exception occurred while reading certificate info."); throw; } _pclose(pipe); + LOG_F(INFO, "Certificate info retrieved successfully."); return result; } void NetworkProxy::editWindowsHostsFile( const std::vector>& hostsEntries) const { + LOG_F(INFO, "Editing Windows Hosts file with {} entries.", + hostsEntries.size()); std::string hostsPath = "C:\\Windows\\System32\\drivers\\etc\\hosts"; std::ofstream hostsFile(hostsPath, std::ios_base::app); + if (!hostsFile.is_open()) { + LOG_F(ERROR, "Failed to open Windows Hosts file for writing: {}", + hostsPath); + throw std::runtime_error( + "Failed to open Windows Hosts file for writing."); + } for (const auto& entry : hostsEntries) { hostsFile << entry.first << " " << entry.second << "\n"; } hostsFile.close(); + LOG_F(INFO, "Windows Hosts file edited successfully."); } void NetworkProxy::resetWindowsHostsFile() const { + LOG_F(INFO, "Resetting Windows Hosts file."); std::string hostsPath = "C:\\Windows\\System32\\drivers\\etc\\hosts"; std::ofstream hostsFile(hostsPath, std::ios_base::trunc); + if (!hostsFile.is_open()) { + LOG_F(ERROR, "Failed to open Windows Hosts file for resetting: {}", + hostsPath); + throw std::runtime_error( + "Failed to open Windows Hosts file for resetting."); + } + // Optionally, add default localhost entry + hostsFile << "127.0.0.1 localhost\n"; hostsFile.close(); - LOG_F(INFO, "Hosts file has been reset."); + LOG_F(INFO, "Windows Hosts file has been reset successfully."); } #else [[nodiscard]] auto NetworkProxy::setLinuxProxy(const std::string& proxy) const -> bool { + LOG_F(INFO, "Setting Linux proxy: {}", proxy); std::string httpProxy = "http_proxy=" + proxy; std::string httpsProxy = "https_proxy=" + proxy; std::string noProxy = @@ -327,8 +455,10 @@ void NetworkProxy::resetWindowsHostsFile() const { LOG_F(ERROR, "Failed to set proxy environment variables."); return false; } + LOG_F(INFO, "Proxy environment variables set successfully."); if (!dns_.empty()) { + LOG_F(INFO, "Setting custom DNS: {}", dns_); std::string resolvConfPath = "/etc/resolv.conf"; std::ofstream resolvConf(resolvConfPath, std::ios_base::trunc); if (!resolvConf.is_open()) { @@ -344,82 +474,103 @@ void NetworkProxy::resetWindowsHostsFile() const { } auto NetworkProxy::disableLinuxProxy() -> bool { + LOG_F(INFO, "Disabling Linux proxy settings."); if (unsetenv("http_proxy") != 0 || unsetenv("https_proxy") != 0 || unsetenv("no_proxy") != 0) { LOG_F(ERROR, "Failed to unset proxy environment variables."); return false; } - + LOG_F(INFO, "Proxy environment variables unset successfully."); return true; } auto NetworkProxy::getLinuxCurrentProxy() -> std::string { + LOG_F(INFO, "Retrieving current Linux proxy settings."); char* httpProxy = getenv("http_proxy"); if (httpProxy != nullptr) { + LOG_F(INFO, "Current http_proxy: {}", std::string(httpProxy)); return std::string(httpProxy); } - + LOG_F(INFO, "No http_proxy set."); return ""; } auto NetworkProxy::installLinuxCertificate(const std::string& certPath) -> bool { + LOG_F(INFO, "Installing Linux certificate from path: {}", certPath); std::string command = "sudo cp " + certPath + " /usr/local/share/ca-certificates/ && sudo update-ca-certificates"; int result = atom::system::executeCommandWithStatus(command).second; if (result != 0) { - LOG_F(ERROR, "Failed to install certificate."); + LOG_F(ERROR, "Failed to install Linux certificate from path: {}", + certPath); return false; } + LOG_F(INFO, "Linux certificate installed successfully from path: {}", + certPath); return true; } auto NetworkProxy::uninstallLinuxCertificate(const std::string& certName) -> bool { + LOG_F(INFO, "Uninstalling Linux certificate: {}", certName); std::string command = "sudo rm /usr/local/share/ca-certificates/" + certName + " && sudo update-ca-certificates --fresh"; int result = atom::system::executeCommandWithStatus(command).second; if (result != 0) { - LOG_F(ERROR, "Failed to uninstall certificate."); + LOG_F(ERROR, "Failed to uninstall Linux certificate: {}", certName); return false; } + LOG_F(INFO, "Linux certificate uninstalled successfully: {}", certName); return true; } auto NetworkProxy::viewLinuxCertificateInfo(const std::string& certName) -> std::string { + LOG_F(INFO, "Viewing Linux certificate info: {}", certName); std::string command = "openssl x509 -in /usr/local/share/ca-certificates/" + certName + " -text -noout"; - return atom::system::executeCommand(command); + std::string result = atom::system::executeCommand(command); + LOG_F(INFO, "Certificate info retrieved successfully."); + return result; } void NetworkProxy::editLinuxHostsFile( const std::vector>& hostsEntries) const { + LOG_F(INFO, "Editing Linux Hosts file with {} entries.", + hostsEntries.size()); std::string hostsPath = "/etc/hosts"; std::ofstream hostsFile(hostsPath, std::ios_base::app); if (!hostsFile.is_open()) { - LOG_F(ERROR, "Failed to open hosts file for writing."); - return; + LOG_F(ERROR, "Failed to open Linux Hosts file for writing: {}", + hostsPath); + throw std::runtime_error( + "Failed to open Linux Hosts file for writing."); } for (const auto& entry : hostsEntries) { hostsFile << entry.first << " " << entry.second << "\n"; } hostsFile.close(); - LOG_F(INFO, "Hosts file has been edited."); + LOG_F(INFO, "Linux Hosts file edited successfully."); } void NetworkProxy::resetLinuxHostsFile() const { + LOG_F(INFO, "Resetting Linux Hosts file."); std::string hostsPath = "/etc/hosts"; std::ofstream hostsFile(hostsPath, std::ios_base::trunc); if (!hostsFile.is_open()) { - LOG_F(ERROR, "Failed to open hosts file for writing."); - return; + LOG_F(ERROR, "Failed to open Linux Hosts file for resetting: {}", + hostsPath); + throw std::runtime_error( + "Failed to open Linux Hosts file for resetting."); } + // Optionally, add default localhost entry hostsFile << "127.0.0.1 localhost\n"; hostsFile.close(); - LOG_F(INFO, "Hosts file has been reset."); + LOG_F(INFO, "Linux Hosts file has been reset successfully."); } #endif -} // namespace lithium::cxxtools + +} // namespace lithium::cxxtools \ No newline at end of file diff --git a/modules/lithium.cxxtools/src/symbol.cpp b/modules/lithium.cxxtools/src/symbol.cpp index d2e6f8c7..5888dac6 100644 --- a/modules/lithium.cxxtools/src/symbol.cpp +++ b/modules/lithium.cxxtools/src/symbol.cpp @@ -1,5 +1,6 @@ +#include "symbol.hpp" + #include -#include #include #include #include @@ -15,65 +16,95 @@ #include "atom/function/abi.hpp" #include "atom/log/loguru.hpp" #include "atom/type/json.hpp" -#include "atom/macro.hpp" #include "yaml-cpp/yaml.h" using json = nlohmann::json; -// 执行系统命令并返回输出 -std::string exec(const char* cmd) { - std::array buffer; +constexpr size_t BUFFER_SIZE = 256; +constexpr int MATCH_SIZE = 6; +constexpr int MATCH_INDEX = 5; + +// Execute a system command and return its output as a string +auto exec(const std::string& cmd) -> std::string { + LOG_F(INFO, "Executing command: {}", cmd); + std::array buffer{}; std::string result; - std::unique_ptr pipe(popen(cmd, "r"), pclose); + std::unique_ptr pipe(popen(cmd.c_str(), "r"), + pclose); + if (!pipe) { + LOG_F(ERROR, "popen() failed for command: {}", cmd); throw std::runtime_error("popen() failed!"); } + while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) { result += buffer.data(); } + + LOG_F(INFO, "Command output: {}", result); return result; } -// 符号结构体 -struct Symbol { - std::string address; - std::string type; - std::string bind; - std::string visibility; - std::string name; - std::string demangledName; -} ATOM_ALIGNAS(128); - -auto parseReadelfOutput(const std::string& output) -> std::vector { +// Parse readelf output and extract symbols +auto parseReadelfOutput(const std::string_view output) -> std::vector { std::vector symbols; - std::regex symbolRegex( + const std::regex SYMBOL_REGEX( R"(\s*\d+:\s+(\S+)\s+\d+\s+(\S+)\s+(\S+)\s+(\S+)\s+\S+\s+(\S+))"); - std::smatch match; - std::string::const_iterator searchStart(output.cbegin()); - - while (std::regex_search(searchStart, output.cend(), match, symbolRegex)) { - symbols.push_back( - Symbol{match[1], match[2], match[3], match[4], match[5], ""}); - searchStart = match.suffix().first; + std::string outputStr(output); + std::sregex_iterator begin(outputStr.begin(), outputStr.end(), + SYMBOL_REGEX); + auto end = std::sregex_iterator(); + + for (std::sregex_iterator it = begin; it != end; ++it) { + const auto& match = *it; + if (match.size() == MATCH_SIZE) { + symbols.emplace_back(Symbol{ + match[1].str(), match[2].str(), match[3].str(), match[4].str(), + match[MATCH_INDEX].str(), + "" // Demangled name will be filled later + }); + LOG_F(INFO, + "Parsed Symbol: Address={}, Type={}, Bind={}, Visibility={}, " + "Name={}", + match[1].str(), match[2].str(), match[3].str(), + match[4].str(), match[MATCH_INDEX].str()); + } } + LOG_F(INFO, "Total symbols parsed: {}", symbols.size()); return symbols; } -// 多线程解析符号 +// Multithreaded parsing of symbols auto parseSymbolsInParallel(const std::string& output, int threadCount) -> std::vector { + LOG_F(INFO, "Starting parallel parsing with {} threads", threadCount); std::vector>> futures; std::vector resultSymbols; - size_t chunkSize = output.size() / threadCount; + // Split the output into lines + std::vector lines; + std::istringstream stream(output); + std::string line; + while (std::getline(stream, line)) { + lines.emplace_back(line); + } + + size_t totalLines = lines.size(); + size_t chunkSize = (totalLines + threadCount - 1) / threadCount; + for (int i = 0; i < threadCount; ++i) { - futures.push_back(std::async([&, i] { - size_t start = i * chunkSize; - size_t end = - (i == threadCount - 1) ? output.size() : start + chunkSize; - return parseReadelfOutput(output.substr(start, end - start)); - })); + size_t start = i * chunkSize; + size_t end = std::min(start + chunkSize, totalLines); + + futures.emplace_back(std::async( + std::launch::async, [start, end, &lines]() -> std::vector { + std::string chunk; + for (size_t j = start; j < end; ++j) { + chunk += lines[j] + "\n"; + } + return parseReadelfOutput(chunk); + })); } for (auto& future : futures) { @@ -83,71 +114,96 @@ auto parseSymbolsInParallel(const std::string& output, std::make_move_iterator(symbols.end())); } + LOG_F(INFO, "Completed parallel parsing. Total symbols collected: {}", + resultSymbols.size()); return resultSymbols; } +// Filter symbols by type auto filterSymbolsByType(const std::vector& symbols, const std::string& type) -> std::vector { std::vector filtered; - for (const auto& symbol : symbols) { - if (symbol.type == type) { - filtered.push_back(symbol); - } - } + std::copy_if(symbols.begin(), symbols.end(), std::back_inserter(filtered), + [&](const Symbol& symbol) { return symbol.type == type; }); + LOG_F(INFO, "Filtered symbols by type '{}': {} symbols found", type, + filtered.size()); return filtered; } +// Filter symbols by visibility auto filterSymbolsByVisibility(const std::vector& symbols, const std::string& visibility) -> std::vector { std::vector filtered; - for (const auto& symbol : symbols) { - if (symbol.visibility == visibility) { - filtered.push_back(symbol); - } - } + std::copy_if( + symbols.begin(), symbols.end(), std::back_inserter(filtered), + [&](const Symbol& symbol) { return symbol.visibility == visibility; }); + LOG_F(INFO, "Filtered symbols by visibility '{}': {} symbols found", + visibility, filtered.size()); return filtered; } +// Filter symbols by bind auto filterSymbolsByBind(const std::vector& symbols, const std::string& bind) -> std::vector { std::vector filtered; - for (const auto& symbol : symbols) { - if (symbol.bind == bind) { - filtered.push_back(symbol); - } - } + std::copy_if(symbols.begin(), symbols.end(), std::back_inserter(filtered), + [&](const Symbol& symbol) { return symbol.bind == bind; }); + LOG_F(INFO, "Filtered symbols by bind '{}': {} symbols found", bind, + filtered.size()); + return filtered; +} + +// Generic filter function +auto filterSymbolsByCondition(const std::vector& symbols, + const std::function& + condition) -> std::vector { + std::vector filtered; + std::copy_if(symbols.begin(), symbols.end(), std::back_inserter(filtered), + condition); + LOG_F(INFO, "Filtered symbols by custom condition: {} symbols found", + filtered.size()); return filtered; } +// Print symbol statistics void printSymbolStatistics(const std::vector& symbols) { std::unordered_map typeCount; for (const auto& symbol : symbols) { typeCount[symbol.type]++; } + LOG_F(INFO, "Symbol type statistics:"); for (const auto& [type, count] : typeCount) { - LOG_F(INFO, "{} : {}", type, count); + LOG_F(INFO, "Type '{}' : {} occurrences", type, count); } } +// Export symbols to CSV file void exportSymbolsToFile(const std::vector& symbols, const std::string& filename) { + LOG_F(INFO, "Exporting symbols to CSV file: {}", filename); std::ofstream file(filename); if (!file) { + LOG_F(ERROR, "Failed to open CSV file for writing: {}", filename); THROW_FAIL_TO_OPEN_FILE("Failed to open file for writing"); } file << "Address,Type,Bind,Visibility,Name,Demangled Name\n"; for (const auto& symbol : symbols) { - file << symbol.address << ',' << symbol.type << ',' << symbol.bind - << ',' << symbol.visibility << ',' << symbol.name << ',' - << symbol.demangledName << '\n'; + file << '"' << symbol.address << "\"," << '"' << symbol.type << "\"," + << '"' << symbol.bind << "\"," << '"' << symbol.visibility << "\"," + << '"' << symbol.name << "\"," << '"' << symbol.demangledName + << "\"\n"; } + + LOG_F(INFO, "Successfully exported symbols to CSV file: {}", filename); } +// Export symbols to JSON file void exportSymbolsToJson(const std::vector& symbols, const std::string& filename) { + LOG_F(INFO, "Exporting symbols to JSON file: {}", filename); json j; for (const auto& symbol : symbols) { j.push_back({{"address", symbol.address}, @@ -160,13 +216,18 @@ void exportSymbolsToJson(const std::vector& symbols, std::ofstream file(filename); if (!file) { + LOG_F(ERROR, "Failed to open JSON file for writing: {}", filename); THROW_FAIL_TO_OPEN_FILE("Failed to open JSON file for writing"); } + file << j.dump(4); // Pretty print with 4 spaces + LOG_F(INFO, "Successfully exported symbols to JSON file: {}", filename); } +// Export symbols to YAML file void exportSymbolsToYaml(const std::vector& symbols, const std::string& filename) { + LOG_F(INFO, "Exporting symbols to YAML file: {}", filename); YAML::Emitter out; out << YAML::BeginSeq; for (const auto& symbol : symbols) { @@ -184,100 +245,138 @@ void exportSymbolsToYaml(const std::vector& symbols, std::ofstream file(filename); if (!file) { + LOG_F(ERROR, "Failed to open YAML file for writing: {}", filename); THROW_FAIL_TO_OPEN_FILE("Failed to open YAML file for writing"); } file << out.c_str(); + LOG_F(INFO, "Successfully exported symbols to YAML file: {}", filename); } -auto filterSymbolsByCondition(const std::vector& symbols, - const std::function& - condition) -> std::vector { - std::vector filtered; - for (const auto& symbol : symbols) { - if (condition(symbol)) { - filtered.push_back(symbol); - } - } - return filtered; -} - +// Analyze the library and export symbols void analyzeLibrary(const std::string& libraryPath, const std::string& outputFormat, int threadCount) { - LOG_F(INFO, "Analyzing library: {}", libraryPath); + LOG_F(INFO, "Starting analysis of library: {}", libraryPath); - // 使用 readelf 获取 ELF 特定信息 - std::string readelfCmd = "readelf -Ws " + libraryPath; - std::string readelfOutput = exec(readelfCmd.c_str()); - LOG_F(INFO, "Readelf output: {}", readelfOutput); + // Verify that the library file exists + if (!std::filesystem::exists(libraryPath)) { + LOG_F(ERROR, "Library file does not exist: {}", libraryPath); + THROW_INVALID_ARGUMENT("Library file does not exist"); + } + + // Use readelf to get symbol information + std::string readelfCmd = "readelf -Ws \"" + libraryPath + "\""; + LOG_F(INFO, "Executing readelf command: {}", readelfCmd); + + std::string readelfOutput; + try { + readelfOutput = exec(readelfCmd); + } catch (const std::exception& e) { + LOG_F(ERROR, "Failed to execute readelf: {}", e.what()); + throw; + } - // 解析 readelf 输出 (并行) + // Parse readelf output in parallel std::vector symbols = parseSymbolsInParallel(readelfOutput, threadCount); - LOG_F(INFO, "Parsing readelf output in parallel..."); - // 解码符号名 + // Demangle symbol names + LOG_F(INFO, "Demangling symbol names..."); for (auto& symbol : symbols) { - symbol.demangledName = - atom::meta::DemangleHelper::demangle(symbol.name); + try { + symbol.demangledName = + atom::meta::DemangleHelper::demangle(symbol.name); + } catch (const std::exception& e) { + LOG_F(WARNING, "Demangling failed for symbol '{}': {}", symbol.name, + e.what()); + symbol.demangledName = symbol.name; // Fallback to original name + } } - LOG_F(INFO, "Decoding symbol names..."); + LOG_F(INFO, "Completed demangling symbol names."); - // 符号统计 + // Print symbol statistics printSymbolStatistics(symbols); - // 导出符号到指定格式的文件 + // Export symbols to the specified format if (outputFormat == "csv") { exportSymbolsToFile(symbols, "symbols.csv"); - LOG_F(INFO, "Exported symbols to symbols.csv."); } else if (outputFormat == "json") { exportSymbolsToJson(symbols, "symbols.json"); - LOG_F(INFO, "Exported symbols to symbols.json."); } else if (outputFormat == "yaml") { exportSymbolsToYaml(symbols, "symbols.yaml"); - LOG_F(INFO, "Exported symbols to symbols.yaml."); } else { LOG_F(ERROR, "Unsupported output format: {}", outputFormat); THROW_INVALID_ARGUMENT("Unsupported output format"); } + + LOG_F(INFO, "Library analysis completed successfully."); } auto main(int argc, char* argv[]) -> int { loguru::init(argc, argv); + LOG_F(INFO, "Symbol Analyzer application started."); if (argc < 3 || argc > 4) { - LOG_F(ERROR, "Invalid number of arguments"); + LOG_F(ERROR, "Invalid number of arguments."); LOG_F(ERROR, "Usage: {} " "[thread_count]", argv[0]); - return 1; + std::cerr << "Usage: " << argv[0] + << " " + "[thread_count]" + << std::endl; + return EXIT_FAILURE; } std::string libraryPath = argv[1]; std::string outputFormat = argv[2]; - int threadCount = - std::thread::hardware_concurrency(); // 默认使用系统线程数 + int threadCount = static_cast( + std::thread::hardware_concurrency()); // Default to system's thread + // count if (argc == 4) { try { threadCount = std::stoi(argv[3]); + if (threadCount <= 0) { + LOG_F(ERROR, "Thread count must be a positive integer."); + std::cerr << "Error: Thread count must be a positive integer." + << std::endl; + return EXIT_FAILURE; + } + LOG_F(INFO, "Using user-specified thread count: {}", threadCount); } catch (const std::invalid_argument& e) { - LOG_F(ERROR, "Invalid thread count provided, must be an integer."); - return 1; - } - - if (threadCount <= 0) { - LOG_F(ERROR, "Thread count must be a positive integer."); - return 1; + LOG_F(ERROR, "Invalid thread count provided: {}", argv[3]); + std::cerr + << "Error: Invalid thread count provided. Must be an integer." + << std::endl; + return EXIT_FAILURE; + } catch (const std::out_of_range& e) { + LOG_F(ERROR, "Thread count out of range: {}", argv[3]); + std::cerr << "Error: Thread count out of range." << std::endl; + return EXIT_FAILURE; } } + LOG_F(INFO, "Library Path: {}", libraryPath); + LOG_F(INFO, "Output Format: {}", outputFormat); + LOG_F(INFO, "Thread Count: {}", threadCount); + try { analyzeLibrary(libraryPath, outputFormat, threadCount); - } catch (const std::exception& ex) { - LOG_F(ERROR, "Error: {}", ex.what()); - return 1; + } catch (const atom::error::Exception& e) { + LOG_F(ERROR, "Atom Exception: {}", e.what()); + std::cerr << "Atom Exception: " << e.what() << std::endl; + return EXIT_FAILURE; + } catch (const std::exception& e) { + LOG_F(ERROR, "Standard Exception: {}", e.what()); + std::cerr << "Standard Exception: " << e.what() << std::endl; + return EXIT_FAILURE; + } catch (...) { + LOG_F(ERROR, "Unknown exception occurred."); + std::cerr << "Error: Unknown exception occurred." << std::endl; + return EXIT_FAILURE; } - return 0; -} + LOG_F(INFO, "Symbol Analyzer application terminated successfully."); + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/modules/lithium.cxxtools/src/tcp_proxy.cpp b/modules/lithium.cxxtools/src/tcp_proxy.cpp index a7821cc8..27f8cb11 100644 --- a/modules/lithium.cxxtools/src/tcp_proxy.cpp +++ b/modules/lithium.cxxtools/src/tcp_proxy.cpp @@ -8,11 +8,14 @@ Date: 2023-6-1 -Description: Tcp proxy server +Description: Tcp proxy server enhanced with additional functionalities, + detailed logging, and improved exception handling. *************************************************/ #include +#include +#include #include #include #include @@ -36,21 +39,88 @@ Description: Tcp proxy server constexpr int BUFFER_SIZE = 4096; std::mutex mutex; +std::atomic running{true}; +/** + * @brief Function to handle data forwarding from srcSockfd to dstSockfd. + * + * @param srcSockfd Source socket file descriptor. + * @param dstSockfd Destination socket file descriptor. + */ void forwardData(int srcSockfd, int dstSockfd) { char buffer[BUFFER_SIZE]; - int numBytes; + ssize_t numBytes; + size_t totalBytes = 0; + + LOG_F(INFO, + "Starting data forwarding: source socket {} -> destination socket {}", + srcSockfd, dstSockfd); try { - while ((numBytes = recv(srcSockfd, buffer, BUFFER_SIZE, 0)) > 0) { - send(dstSockfd, buffer, numBytes, 0); + while (running.load()) { + numBytes = recv(srcSockfd, buffer, BUFFER_SIZE, 0); + if (numBytes > 0) { + ssize_t sentBytes = send(dstSockfd, buffer, numBytes, 0); + if (sentBytes == -1) { + LOG_F(ERROR, + "Failed to send data from socket {} to socket {}", + srcSockfd, dstSockfd); + break; + } + totalBytes += sentBytes; + LOG_F(INFO, "Forwarded {} bytes from socket {} to socket {}", + sentBytes, srcSockfd, dstSockfd); + } else if (numBytes == 0) { + LOG_F(INFO, "Source socket {} has closed the connection", + srcSockfd); + break; + } else { +#ifdef _WIN32 + int error = WSAGetLastError(); + if (error == WSAEWOULDBLOCK) { + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + continue; + } +#else + if (errno == EWOULDBLOCK || errno == EAGAIN) { + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + continue; + } +#endif + LOG_F(ERROR, "Failed to receive data from source socket {}", + srcSockfd); + break; + } } } catch (const std::exception &e) { - LOG_F(ERROR, "Failed to forward data: {}", e.what()); + LOG_F(ERROR, "Exception occurred while forwarding data: {}", e.what()); } + + LOG_F(INFO, + "Data forwarding ended: source socket {} -> destination socket {}, " + "total bytes forwarded {}", + srcSockfd, dstSockfd, totalBytes); + +#ifdef _WIN32 + closesocket(srcSockfd); + closesocket(dstSockfd); +#else + close(srcSockfd); + close(dstSockfd); +#endif } -void startProxyServer(const std::string &srcIp, int srcPort, const std::string &dstIp, int dstPort) { +/** + * @brief Starts the proxy server, listens on the source IP and port, and + * forwards traffic to the destination IP and port. + * + * @param srcIp Source IP address. + * @param srcPort Source port. + * @param dstIp Destination IP address. + * @param dstPort Destination port. + */ +void startProxyServer(const std::string &srcIp, int srcPort, + const std::string &dstIp, int dstPort) { #ifdef _WIN32 SOCKET srcSockfd = socket(AF_INET, SOCK_STREAM, 0); SOCKET dstSockfd = socket(AF_INET, SOCK_STREAM, 0); @@ -60,28 +130,114 @@ void startProxyServer(const std::string &srcIp, int srcPort, const std::string & #endif if (srcSockfd == -1 || dstSockfd == -1) { - THROW_RUNTIME_ERROR("Failed to create socket."); + LOG_F(ERROR, "Failed to create sockets"); + THROW_RUNTIME_ERROR("Failed to create sockets"); } + LOG_F( + INFO, + "Successfully created sockets: source socket {}, destination socket {}", + srcSockfd, dstSockfd); sockaddr_in srcAddr{}; srcAddr.sin_family = AF_INET; srcAddr.sin_addr.s_addr = inet_addr(srcIp.c_str()); srcAddr.sin_port = htons(srcPort); - if (bind(srcSockfd, reinterpret_cast(&srcAddr), sizeof(srcAddr)) == -1) { - THROW_RUNTIME_ERROR("Failed to bind source address."); + if (bind(srcSockfd, reinterpret_cast(&srcAddr), + sizeof(srcAddr)) == -1) { + LOG_F(ERROR, "Failed to bind source address: {}:{}", srcIp, srcPort); +#ifdef _WIN32 + closesocket(srcSockfd); + closesocket(dstSockfd); +#else + close(srcSockfd); + close(dstSockfd); +#endif + THROW_RUNTIME_ERROR("Failed to bind source address: {}:{}", srcIp, + srcPort); } + LOG_F(INFO, "Successfully bound source address: {}:{}", srcIp, srcPort); - sockaddr_in dstAddr{}; - dstAddr.sin_family = AF_INET; - dstAddr.sin_addr.s_addr = inet_addr(dstIp.c_str()); - dstAddr.sin_port = htons(dstPort); - - if (connect(dstSockfd, reinterpret_cast(&dstAddr), sizeof(dstAddr)) == -1) { - THROW_RUNTIME_ERROR("Failed to connect to destination address."); + if (listen(srcSockfd, SOMAXCONN) == -1) { + LOG_F(ERROR, "Failed to listen on source socket: {}:{}", srcIp, + srcPort); +#ifdef _WIN32 + closesocket(srcSockfd); + closesocket(dstSockfd); +#else + close(srcSockfd); + close(dstSockfd); +#endif + THROW_RUNTIME_ERROR("Failed to listen on source socket: {}:{}", srcIp, + srcPort); } + LOG_F(INFO, "Listening on source socket: {}:{}", srcIp, srcPort); + + while (running.load()) { + sockaddr_in clientAddr{}; +#ifdef _WIN32 + int addrLen = sizeof(clientAddr); +#else + socklen_t addrLen = sizeof(clientAddr); +#endif + int clientSockfd = accept( + srcSockfd, reinterpret_cast(&clientAddr), &addrLen); + if (clientSockfd == -1) { +#ifdef _WIN32 + int error = WSAGetLastError(); + if (error == WSAEINTR) { + LOG_F(INFO, + "Received interrupt signal, stopping accepting new " + "connections"); + break; + } +#else + if (errno == EINTR) { + LOG_F(INFO, + "Received interrupt signal, stopping accepting new " + "connections"); + break; + } +#endif + LOG_F(ERROR, "Failed to accept new connection"); + continue; + } + + char clientIP[INET_ADDRSTRLEN]; + inet_ntop(AF_INET, &(clientAddr.sin_addr), clientIP, INET_ADDRSTRLEN); + int clientPort = ntohs(clientAddr.sin_port); + LOG_F(INFO, "Accepted new connection: {}:{}, client socket {}", + clientIP, clientPort, clientSockfd); + + // Connect to the destination server + sockaddr_in dstAddr{}; + dstAddr.sin_family = AF_INET; + dstAddr.sin_addr.s_addr = inet_addr(dstIp.c_str()); + dstAddr.sin_port = htons(dstPort); + + if (connect(dstSockfd, reinterpret_cast(&dstAddr), + sizeof(dstAddr)) == -1) { + LOG_F(ERROR, "Failed to connect to destination address: {}:{}", + dstIp, dstPort); +#ifdef _WIN32 + closesocket(clientSockfd); + closesocket(dstSockfd); +#else + close(clientSockfd); + close(dstSockfd); +#endif + continue; + } + LOG_F(INFO, + "Successfully connected to destination address: {}:{}, " + "destination socket {}", + dstIp, dstPort, dstSockfd); - forwardData(srcSockfd, dstSockfd); + // Start data forwarding thread + std::thread([clientSockfd, dstSockfd]() { + forwardData(clientSockfd, dstSockfd); + }).detach(); + } #ifdef _WIN32 closesocket(srcSockfd); @@ -90,85 +246,91 @@ void startProxyServer(const std::string &srcIp, int srcPort, const std::string & close(srcSockfd); close(dstSockfd); #endif + + LOG_F(INFO, "Proxy server closed: {}:{} -> {}:{}", srcIp, srcPort, dstIp, + dstPort); } +/** + * @brief Signal handler to gracefully shut down the proxy server. + * + * @param signal The received signal number. + */ void signalHandler(int signal) { if (signal == SIGINT || signal == SIGTERM) { - LOG_F(INFO, "Interrupt signal received, shutting down..."); -#ifdef _WIN32 - WSACleanup(); -#endif - std::exit(0); + LOG_F(INFO, "Received interrupt signal, shutting down proxy server..."); + running.store(false); } } int main(int argc, char *argv[]) { - signal(SIGINT, signalHandler); - signal(SIGTERM, signalHandler); + // Initialize Loguru + loguru::init(argc, argv); + loguru::add_file("tcp_proxy.log", loguru::Append, loguru::Verbosity_MAX); + LOG_F(INFO, "Starting TCP proxy server"); + + // Set up signal handling + std::signal(SIGINT, signalHandler); + std::signal(SIGTERM, signalHandler); #ifdef _WIN32 WSADATA wsData; if (WSAStartup(MAKEWORD(2, 2), &wsData) != 0) { - LOG_F(ERROR, "Failed to initialize Winsock."); + LOG_F(ERROR, "Failed to initialize Winsock"); return -1; } + LOG_F(INFO, "Winsock initialized successfully"); #endif - std::string srcIp = "127.0.0.1"; + // Default configuration + std::string srcIp = "0.0.0.0"; int srcPort = 12345; std::string dstIp = "127.0.0.1"; int dstPort = 54321; + // Parse command-line arguments int option; - while ((option = getopt(argc, argv, "s:p:d:o:")) != -1) { + while ((option = getopt(argc, argv, "s:p:d:o:h")) != -1) { switch (option) { case 's': srcIp = optarg; + LOG_F(INFO, "Set source IP to: {}", srcIp); break; case 'p': srcPort = std::stoi(optarg); + LOG_F(INFO, "Set source port to: {}", srcPort); break; case 'd': dstIp = optarg; + LOG_F(INFO, "Set destination IP to: {}", dstIp); break; case 'o': dstPort = std::stoi(optarg); + LOG_F(INFO, "Set destination port to: {}", dstPort); break; + case 'h': default: - LOG_F(ERROR, "Usage: {} -s -p -d -o ", argv[0]); - return 1; + LOG_F(INFO, + "Usage: {} -s -p -d " + " -o ", + argv[0]); + return 0; } } -#if __cplusplus >= 202002L - std::vector threads; -#else - std::vector threads; -#endif + // Start the proxy server + std::thread proxyThread(startProxyServer, srcIp, srcPort, dstIp, dstPort); - try { - for (int i = 0; i < 5; ++i) { - threads.emplace_back(startProxyServer, srcIp, srcPort, dstIp, dstPort); - } - } catch (const std::exception &e) { - LOG_F(ERROR, "Exception caught while starting proxy server: {}", e.what()); - } + LOG_F(INFO, "Proxy server is running, waiting for interrupt signal..."); -#if __cplusplus >= 202002L - for (auto &thread : threads) { - thread.join(); - } -#else - for (auto &thread : threads) { - if (thread.joinable()) { - thread.join(); - } - } -#endif + // Wait for the proxy thread to finish + proxyThread.join(); #ifdef _WIN32 WSACleanup(); + LOG_F(INFO, "Winsock cleanup completed"); #endif + LOG_F(INFO, "TCP proxy server has been shut down"); return 0; -} +} \ No newline at end of file diff --git a/modules/lithium.cxxtools/src/xml2json.cpp b/modules/lithium.cxxtools/src/xml2json.cpp index 734826b6..2982c4d3 100644 --- a/modules/lithium.cxxtools/src/xml2json.cpp +++ b/modules/lithium.cxxtools/src/xml2json.cpp @@ -1,128 +1,64 @@ -/* - * xml2json.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-12-7 - -Description: XML to JSON conversion - -**************************************************/ - +// xml2json.cpp #include "xml2json.hpp" - -#include -#include - +#include "atom/error/exception.hpp" #include "atom/log/loguru.hpp" -#include "atom/type/json.hpp" -#include "tinyxml2/tinyxml2.h" using json = nlohmann::json; namespace lithium::cxxtools::detail { -void xmlToJson(const tinyxml2::XMLElement *xmlElement, json &jsonData) { - for (const tinyxml2::XMLNode *childNode = xmlElement->FirstChild(); - childNode != nullptr; childNode = childNode->NextSibling()) { + +void Xml2Json::xmlToJson(const tinyxml2::XMLElement* xmlElement, json& jsonData) { + for (const tinyxml2::XMLNode* childNode = xmlElement->FirstChild(); childNode != nullptr; childNode = childNode->NextSibling()) { if (childNode->ToElement() != nullptr) { - const std::string CHILD_NODE_NAME = childNode->Value(); - json &jsonChildValue = jsonData[CHILD_NODE_NAME]; - if (!jsonChildValue.is_null()) { - if (!jsonChildValue.is_array()) { - jsonChildValue = json::array({jsonChildValue}); + const std::string childName = childNode->Value(); + json& jsonChild = jsonData[childName]; + if (!jsonChild.is_null()) { + if (!jsonChild.is_array()) { + jsonChild = json::array({jsonChild}); } } else { - jsonChildValue = json::array(); + jsonChild = json::array(); } - json jsonItemValue; - xmlToJson(childNode->ToElement(), jsonItemValue); - jsonChildValue.push_back(jsonItemValue); + json jsonItem; + xmlToJson(childNode->ToElement(), jsonItem); + jsonChild.push_back(jsonItem); } else if (childNode->ToText() != nullptr) { jsonData = json(childNode->ToText()->Value()); } } } -auto convertXmlToJson(std::string_view xmlFilePath, - std::string_view jsonFilePath) -> bool { - DLOG_F(INFO, "Reading XML file: {}", xmlFilePath); +bool Xml2Json::convertXmlToJson(const std::string& xmlFilePath, json& jsonData) { + LOG_F(INFO, "Reading XML file: {}", xmlFilePath); tinyxml2::XMLDocument xmlDoc; - if (xmlDoc.LoadFile(xmlFilePath.data()) != tinyxml2::XML_SUCCESS) { - DLOG_F(ERROR, "Failed to load XML file: {}", xmlFilePath); + if (xmlDoc.LoadFile(xmlFilePath.c_str()) != tinyxml2::XML_SUCCESS) { + LOG_F(ERROR, "Failed to load XML file: {}", xmlFilePath); return false; } - json jsonData; - DLOG_F(INFO, "Converting XML to JSON"); + LOG_F(INFO, "Converting XML to JSON"); xmlToJson(xmlDoc.RootElement(), jsonData); + return true; +} + +json Xml2Json::convertImpl(std::string_view xmlFilePath) { + json jsonData; + if (!convertXmlToJson(std::string(xmlFilePath), jsonData)) { + THROW_RUNTIME_ERROR("XML to JSON conversion failed for file: ", xmlFilePath); + } + return jsonData; +} - DLOG_F(INFO, "Saving JSON file: {}", jsonFilePath); +bool Xml2Json::saveToFileImpl(const json& jsonData, std::string_view jsonFilePath) { + LOG_F(INFO, "Saving JSON data to file: {}", jsonFilePath); std::ofstream jsonFile(jsonFilePath.data()); if (!jsonFile.is_open()) { - DLOG_F(ERROR, "Failed to open JSON file: {}", jsonFilePath); + LOG_F(ERROR, "Failed to open JSON file: {}", jsonFilePath); return false; } - jsonFile << std::setw(4) << jsonData << std::endl; - jsonFile.close(); - - DLOG_F(INFO, "XML to JSON conversion succeeded."); return true; } -} // namespace lithium::cxxtools::detail - -#if ATOM_STANDALONE_COMPONENT_ENABLED -#include -int main(int argc, char *argv[]) { - loguru::init(argc, argv); - loguru::add_file("conversion_log.txt", loguru::Append, - loguru::Verbosity_INFO); - argparse::ArgumentParser program("xml-to-json"); - - program.add_argument("-i", "--input") - .required() - .help("path to input XML file"); - program.add_argument("-o", "--output") - .required() - .help("path to output JSON file"); - - try { - program.parse_args(argc, argv); - } catch (const std::runtime_error &err) { - std::cout << err.what() << std::endl; - std::cout << program; - return 1; - } - - std::string xmlFilePath = program.get("--input"); - std::string jsonFilePath = program.get("--output"); - - if (convertXmlToJson(xmlFilePath, jsonFilePath)) { - DLOG_F(INFO, "XML to JSON conversion succeeded."); - } else { - DLOG_F(INFO, "XML to JSON conversion failed."); - } - - return 0; -} -#else -namespace lithium::cxxtools { -auto xmlToJson(std::string_view xml_file, std::string_view json_file) -> bool { - try { - if (detail::convertXmlToJson(xml_file, json_file)) { - DLOG_F(INFO, "XML to JSON conversion succeeded."); - return true; - } - } catch (const std::exception &e) { - DLOG_F(ERROR, "Conversion failed: {}", e.what()); - } - DLOG_F(INFO, "XML to JSON conversion failed."); - return false; -} -} // namespace lithium::cxxtools -#endif +} // namespace lithium::cxxtools::detail \ No newline at end of file diff --git a/modules/lithium.cxxtools/src/yaml2json.cpp b/modules/lithium.cxxtools/src/yaml2json.cpp new file mode 100644 index 00000000..a7593bff --- /dev/null +++ b/modules/lithium.cxxtools/src/yaml2json.cpp @@ -0,0 +1,61 @@ +// yaml2json.cpp +#include "yaml2json.hpp" +#include "atom/error/exception.hpp" +#include "atom/log/loguru.hpp" + +using json = nlohmann::json; + +namespace lithium::cxxtools::detail { + +void yamlToJson(const YAML::Node& yamlNode, json& jsonData) { + switch (yamlNode.Type()) { + case YAML::NodeType::Null: + jsonData = nullptr; + break; + case YAML::NodeType::Scalar: + jsonData = yamlNode.as(); + break; + case YAML::NodeType::Sequence: + for (const auto& item : yamlNode) { + json jsonItem; + yamlToJson(item, jsonItem); + jsonData.push_back(jsonItem); + } + break; + case YAML::NodeType::Map: + for (const auto& item : yamlNode) { + json jsonItem; + yamlToJson(item.second, jsonItem); + jsonData[item.first.as()] = jsonItem; + } + break; + default: + throw std::runtime_error("Unknown YAML node type"); + } +} + +json Yaml2Json::convertImpl(std::string_view yamlFilePath) { + LOG_F(INFO, "Converting YAML file to JSON: {}", yamlFilePath); + std::ifstream yamlFile(yamlFilePath.data()); + if (!yamlFile.is_open()) { + THROW_RUNTIME_ERROR("Failed to open YAML file: ", yamlFilePath); + } + + YAML::Node yamlNode = YAML::Load(yamlFile); + json jsonData; + yamlToJson(yamlNode, jsonData); + return jsonData; +} + +bool Yaml2Json::saveToFileImpl(const json& jsonData, std::string_view jsonFilePath) { + LOG_F(INFO, "Saving JSON data to file: {}", jsonFilePath); + std::ofstream jsonFile(jsonFilePath.data()); + if (!jsonFile.is_open()) { + LOG_F(ERROR, "Failed to open JSON file: {}", jsonFilePath); + return false; + } + jsonFile << std::setw(4) << jsonData << std::endl; + return true; +} + +} // namespace lithium::cxxtools::detail \ No newline at end of file diff --git a/modules/lithium.cxxtools/tests/csv2json.cpp b/modules/lithium.cxxtools/tests/csv2json.cpp deleted file mode 100644 index 2d939b78..00000000 --- a/modules/lithium.cxxtools/tests/csv2json.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include "csv2json.hpp" - -#include -#include - -#include "atom/type/json.hpp" - -using namespace lithium::cxxtools; - -TEST(CSV2JSONTest, BasicConversion) { - std::string csvContent = - "name,age,city\nJohn,30,New York\nJane,25,Los Angeles\n"; - std::string csvFilePath = "test.csv"; - std::ofstream csvFile(csvFilePath); - csvFile << csvContent; - csvFile.close(); - - std::string jsonFilePath = "test.json"; - EXPECT_NO_THROW({ - auto jsonData = detail::csvToJson(csvFilePath); - detail::saveJsonToFile(jsonData, jsonFilePath); - }); - - std::ifstream jsonFile(jsonFilePath); - ASSERT_TRUE(jsonFile.is_open()); - - nlohmann::json expectedJson = R"([ - {"name": "John", "age": "30", "city": "New York"}, - {"name": "Jane", "age": "25", "city": "Los Angeles"} - ])"_json; - - nlohmann::json actualJson; - jsonFile >> actualJson; - EXPECT_EQ(expectedJson, actualJson); -} - -TEST(CSV2JSONTest, MissingCSVFile) { - EXPECT_THROW({ detail::csvToJson("nonexistent.csv"); }, std::runtime_error); -} - -TEST(CSV2JSONTest, InvalidCSVContent) { - std::string csvContent = "name,age,city\nJohn,30\nJane,25,Los Angeles\n"; - std::string csvFilePath = "invalid.csv"; - std::ofstream csvFile(csvFilePath); - csvFile << csvContent; - csvFile.close(); - - EXPECT_THROW( - { auto jsonData = detail::csvToJson(csvFilePath); }, std::exception); -} diff --git a/modules/lithium.cxxtools/tests/ini2json.cpp b/modules/lithium.cxxtools/tests/ini2json.cpp deleted file mode 100644 index 8301d337..00000000 --- a/modules/lithium.cxxtools/tests/ini2json.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#include "ini2json.hpp" - -#include -#include -#include "atom/macro.hpp" - -using namespace lithium::cxxtools; - -class INI2JSONTest : public ::testing::Test { -protected: - void SetUp() override { - // Create a sample INI file - std::ofstream iniFile("test.ini"); - iniFile << "[section1]\nkey1=value1\nkey2=value2\n" - << "[section2]\nkey3=value3\nkey4=value4\n"; - iniFile.close(); - } - - void TearDown() override { - // Clean up the created files - ATOM_UNREF_PARAM(std::remove("test.ini")); - ATOM_UNREF_PARAM(std::remove("test.json")); - } -}; - -TEST_F(INI2JSONTest, BasicConversion) { - EXPECT_TRUE(iniToJson("test.ini", "test.json")); - - std::ifstream jsonFile("test.json"); - ASSERT_TRUE(jsonFile.is_open()); - - std::string jsonContent((std::istreambuf_iterator(jsonFile)), - std::istreambuf_iterator()); - std::string expectedJson = R"({ - "section1": { - "key1": "value1", - "key2": "value2" - }, - "section2": { - "key3": "value3", - "key4": "value4" - } -})"; - EXPECT_EQ(jsonContent, expectedJson); -} - -TEST_F(INI2JSONTest, MissingINIFile) { - EXPECT_THROW( - { iniToJson("nonexistent.ini", "test.json"); }, std::runtime_error); -} - -TEST_F(INI2JSONTest, InvalidINIContent) { - std::ofstream iniFile("invalid.ini"); - iniFile << "[section1\nkey1=value1\nkey2=value2\n"; - iniFile.close(); - - EXPECT_THROW({ iniToJson("invalid.ini", "test.json"); }, std::exception); - - ATOM_UNREF_PARAM(std::remove("invalid.ini")); -} diff --git a/modules/lithium.cxxtools/tests/json2ini.cpp b/modules/lithium.cxxtools/tests/json2ini.cpp deleted file mode 100644 index 43de278c..00000000 --- a/modules/lithium.cxxtools/tests/json2ini.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "json2ini.hpp" - -#include -#include -#include "atom/macro.hpp" - -using namespace lithium::cxxtools; - -class JSON2INITest : public ::testing::Test { -protected: - void SetUp() override { - // Create a sample JSON file - std::ofstream jsonFile("test.json"); - jsonFile << R"({ - "section1": { - "key1": "value1", - "key2": "value2" - }, - "section2": { - "key3": "value3", - "key4": "value4" - } - })"; - jsonFile.close(); - } - - void TearDown() override { - // Clean up the created files - ATOM_UNUSED_RESULT(std::remove("test.json")); - ATOM_UNUSED_RESULT(std::remove("test.ini")); - } -}; - -TEST_F(JSON2INITest, BasicConversion) { - EXPECT_NO_THROW(jsonToIni("test.json", "test.ini")); - - std::ifstream iniFile("test.ini"); - ASSERT_TRUE(iniFile.is_open()); - - std::string iniContent((std::istreambuf_iterator(iniFile)), - std::istreambuf_iterator()); - std::string expectedIni = R"([section1] -key1=value1 -key2=value2 - -[section2] -key3=value3 -key4=value4 - -)"; - EXPECT_EQ(iniContent, expectedIni); -} - -TEST_F(JSON2INITest, MissingJSONFile) { - EXPECT_THROW(jsonToIni("nonexistent.json", "test.ini"), std::runtime_error); -} - -TEST_F(JSON2INITest, InvalidJSONContent) { - std::ofstream jsonFile("invalid.json"); - jsonFile << R"({ "section1": { "key1": "value1", "key2": "value2", )"; - jsonFile.close(); - - EXPECT_THROW(jsonToIni("invalid.json", "test.ini"), std::runtime_error); - - ATOM_UNUSED_RESULT(std::remove("invalid.json")); -} diff --git a/modules/lithium.cxxtools/tests/json2xml.cpp b/modules/lithium.cxxtools/tests/json2xml.cpp deleted file mode 100644 index ddb10ce7..00000000 --- a/modules/lithium.cxxtools/tests/json2xml.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "json2xml.hpp" -#include -#include -#include -#include "tinyxml2/tinyxml2.h" - -namespace fs = std::filesystem; -using namespace lithium::cxxtools; - -class JSON2XMLTest : public ::testing::Test { -protected: - void SetUp() override { - // Create a sample JSON file - std::ofstream jsonFile("test.json"); - jsonFile << R"({ - "title": "Example Title", - "owner": { - "name": "Tom Preston-Werner", - "dob": "1979-05-27T07:32:00Z" - }, - "database": { - "server": "192.168.1.1", - "ports": [ 8001, 8001, 8002 ], - "connection_max": 5000, - "enabled": true - } - })"; - jsonFile.close(); - } - - void TearDown() override { - // Clean up the created files - fs::remove("test.json"); - fs::remove("test.xml"); - } -}; - -TEST_F(JSON2XMLTest, BasicConversion) { - EXPECT_TRUE(detail::convertJsonToXml("test.json", "test.xml")); - - tinyxml2::XMLDocument xmlDoc; - ASSERT_EQ(xmlDoc.LoadFile("test.xml"), tinyxml2::XML_SUCCESS); - - tinyxml2::XMLElement *root = xmlDoc.RootElement(); - ASSERT_NE(root, nullptr); - EXPECT_STREQ(root->Name(), "root"); - - tinyxml2::XMLElement *title = root->FirstChildElement("title"); - ASSERT_NE(title, nullptr); - EXPECT_STREQ(title->GetText(), "Example Title"); -} - -TEST_F(JSON2XMLTest, MissingJSONFile) { - EXPECT_FALSE(detail::convertJsonToXml("nonexistent.json", "test.xml")); -} - -TEST_F(JSON2XMLTest, InvalidJSONContent) { - std::ofstream jsonFile("invalid.json"); - jsonFile << R"({ "title": "Example Title", "owner": { "name": "Tom" )"; - jsonFile.close(); - - EXPECT_FALSE(detail::convertJsonToXml("invalid.json", "test.xml")); - - fs::remove("invalid.json"); -} diff --git a/modules/lithium.cxxtools/tests/pci_generator.cpp b/modules/lithium.cxxtools/tests/pci_generator.cpp deleted file mode 100644 index c8ae38a1..00000000 --- a/modules/lithium.cxxtools/tests/pci_generator.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include "pci_generator.hpp" - -#include -#include -#include -#include -#include - -namespace fs = std::filesystem; - -class PCIGeneratorTest : public ::testing::Test { -protected: - void SetUp() override { - std::ofstream outfile("test_pci_data.txt"); - outfile << "1234 Vendor A\n" - << "\t5678 Device A1\n" - << "\t5679 Device A2\n" - << "1235 Vendor B\n" - << "\t6789 Device B1\n"; - outfile.close(); - } - - void TearDown() override { fs::remove("test_pci_data.txt"); } -}; - -TEST_F(PCIGeneratorTest, ParseAndGeneratePCIInfo) { - std::stringstream output; - std::streambuf* oldCoutBuf = std::cout.rdbuf(output.rdbuf()); - - EXPECT_NO_THROW(parseAndGeneratePCIInfo("test_pci_data.txt")); - - std::cout.rdbuf(oldCoutBuf); - - std::string expectedOutput = - "#define ATOM_SYSTEM_GENERATED_PCI_INDICES\n" - " \\\n\t{0x1234, 0}, \\\n\t{0x1235, 1}," - "\n\n\n#define ATOM_SYSTEM_GENERATED_PCI_VENDORS" - " \\\n\t{0x1234, R\"(Vendor A)\", {0, 1, }}, \\\n\t{0x1235, R\"(Vendor " - "B)\", {2, }}," - "\n\n\n#define ATOM_SYSTEM_GENERATED_PCI_DEVICES" - " \\\n\t{0x5678, R\"(Device A1)\"}, \\\n\t{0x5679, R\"(Device A2)\"}, " - "\\\n\t{0x6789, R\"(Device B1)\"}," - "\n\n\nnamespace {}\n"; - - EXPECT_EQ(output.str(), expectedOutput); -} - -TEST_F(PCIGeneratorTest, FileNotFound) { - std::stringstream errorOutput; - std::streambuf* oldCerrBuf = std::cerr.rdbuf(errorOutput.rdbuf()); - - EXPECT_THROW(parseAndGeneratePCIInfo("nonexistent.txt"), - std::runtime_error); - - std::cerr.rdbuf(oldCerrBuf); - - EXPECT_EQ(errorOutput.str(), "Couldn't open input file\n"); -} diff --git a/modules/lithium.cxxtools/tests/symbol.cpp b/modules/lithium.cxxtools/tests/symbol.cpp deleted file mode 100644 index f03a592f..00000000 --- a/modules/lithium.cxxtools/tests/symbol.cpp +++ /dev/null @@ -1,109 +0,0 @@ -#include -#include - - -#include "symbol.cpp" // Include the implementation file - -using ::testing::_; -using ::testing::Return; - -// Mock for exec function -std::string mock_exec(const char* cmd) { - return " 1: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND \n" - " 2: 0000000000000000 0 FUNC GLOBAL DEFAULT UND printf\n"; -} - -// Mock for demangle function -namespace atom { -namespace meta { -class DemangleHelper { -public: - static std::string demangle(const std::string& name) { - return "demangled_" + name; - } -}; -} // namespace meta -} // namespace atom - -class AnalyzeLibraryTest : public ::testing::Test { -protected: - void SetUp() override { - // Redirect exec to mock_exec - exec = mock_exec; - } - - void TearDown() override { - // Reset exec to original function if needed - } -}; - -TEST_F(AnalyzeLibraryTest, ValidInputCSV) { - std::string libraryPath = "dummy_path"; - std::string outputFormat = "csv"; - int threadCount = 2; - - analyzeLibrary(libraryPath, outputFormat, threadCount); - - std::ifstream file("symbols.csv"); - ASSERT_TRUE(file.is_open()); - - std::string line; - std::getline(file, line); // Skip header - std::getline(file, line); - EXPECT_EQ(line, "0000000000000000,NOTYPE,LOCAL,DEFAULT,UND,demangled_"); - - file.close(); -} - -TEST_F(AnalyzeLibraryTest, ValidInputJSON) { - std::string libraryPath = "dummy_path"; - std::string outputFormat = "json"; - int threadCount = 2; - - analyzeLibrary(libraryPath, outputFormat, threadCount); - - std::ifstream file("symbols.json"); - ASSERT_TRUE(file.is_open()); - - std::string content((std::istreambuf_iterator(file)), - std::istreambuf_iterator()); - EXPECT_NE(content.find("\"demangled_name\": \"demangled_\""), - std::string::npos); - - file.close(); -} - -TEST_F(AnalyzeLibraryTest, ValidInputYAML) { - std::string libraryPath = "dummy_path"; - std::string outputFormat = "yaml"; - int threadCount = 2; - - analyzeLibrary(libraryPath, outputFormat, threadCount); - - std::ifstream file("symbols.yaml"); - ASSERT_TRUE(file.is_open()); - - std::string content((std::istreambuf_iterator(file)), - std::istreambuf_iterator()); - EXPECT_NE(content.find("demangled_name: demangled_"), std::string::npos); - - file.close(); -} - -TEST_F(AnalyzeLibraryTest, InvalidThreadCount) { - std::string libraryPath = "dummy_path"; - std::string outputFormat = "csv"; - int threadCount = -1; - - EXPECT_THROW(analyzeLibrary(libraryPath, outputFormat, threadCount), - std::invalid_argument); -} - -TEST_F(AnalyzeLibraryTest, UnsupportedOutputFormat) { - std::string libraryPath = "dummy_path"; - std::string outputFormat = "xml"; - int threadCount = 2; - - EXPECT_THROW(analyzeLibrary(libraryPath, outputFormat, threadCount), - std::invalid_argument); -} diff --git a/modules/lithium.cxxtools/tests/tcp_proxy.cpp b/modules/lithium.cxxtools/tests/tcp_proxy.cpp deleted file mode 100644 index 0e062ead..00000000 --- a/modules/lithium.cxxtools/tests/tcp_proxy.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/* - * test_tcp_proxy.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-6-1 - -Description: Unit tests for Tcp proxy server - -*************************************************/ - -#include "tcp_proxy.cpp" -#include -#include - - -#ifdef _WIN32 -#include -#else -#include -#include -#include -#endif - -using ::testing::_; -using ::testing::Return; - -class TcpProxyTest : public ::testing::Test { -protected: - void SetUp() override { -#ifdef _WIN32 - WSADATA wsData; - WSAStartup(MAKEWORD(2, 2), &wsData); -#endif - } - - void TearDown() override { -#ifdef _WIN32 - WSACleanup(); -#endif - } -}; - -TEST_F(TcpProxyTest, TestMainFunctionWithDefaultArgs) { - char *argv[] = {const_cast("tcp_proxy"), nullptr}; - int argc = 1; - EXPECT_EQ(main(argc, argv), 0); -} - -TEST_F(TcpProxyTest, TestMainFunctionWithCustomArgs) { - char *argv[] = {const_cast("tcp_proxy"), const_cast("-s"), - const_cast("192.168.1.1"), const_cast("-p"), - const_cast("8080"), const_cast("-d"), - const_cast("192.168.1.2"), const_cast("-o"), - const_cast("9090"), nullptr}; - int argc = 9; - EXPECT_EQ(main(argc, argv), 0); -} - -TEST_F(TcpProxyTest, TestSignalHandling) { - signalHandler(SIGINT); - // Expect the program to exit, so we can't directly test it here. - // Instead, we can check if the log message is printed. -} - -TEST_F(TcpProxyTest, TestSocketCreationFailure) { - // Mock socket creation to fail - EXPECT_CALL(socket(_, _, _)).WillOnce(Return(-1)); - EXPECT_THROW(startProxyServer("127.0.0.1", 12345, "127.0.0.1", 54321), - std::runtime_error); -} - -TEST_F(TcpProxyTest, TestSocketConnectionFailure) { - // Mock socket connection to fail - EXPECT_CALL(connect(_, _, _)).WillOnce(Return(-1)); - EXPECT_THROW(startProxyServer("127.0.0.1", 12345, "127.0.0.1", 54321), - std::runtime_error); -} - -int main(int argc, char **argv) { - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/modules/lithium.cxxtools/tests/test_csv2json.cpp b/modules/lithium.cxxtools/tests/test_csv2json.cpp new file mode 100644 index 00000000..706e8dc3 --- /dev/null +++ b/modules/lithium.cxxtools/tests/test_csv2json.cpp @@ -0,0 +1,93 @@ +// test_csv2json.cpp +#include +#include +#include +#include +#include "csv2json.hpp" + +using json = nlohmann::json; +namespace fs = std::filesystem; +using namespace lithium::cxxtools::detail; + +class Csv2JsonTest : public ::testing::Test { +protected: + void SetUp() override { + // Create a temporary CSV file for testing + csvFilePath = fs::temp_directory_path() / "test.csv"; + std::ofstream csvFile(csvFilePath); + csvFile << "name,age,city\n"; + csvFile << "Alice,30,New York\n"; + csvFile << "Bob,25,Los Angeles\n"; + csvFile << "Charlie,35,Chicago\n"; + csvFile.close(); + } + + void TearDown() override { + // Remove the temporary CSV file + fs::remove(csvFilePath); + } + + fs::path csvFilePath; +}; + +TEST_F(Csv2JsonTest, ConvertImpl_ValidCsvFile_ReturnsJson) { + Csv2Json converter; + json result = converter.convertImpl(csvFilePath.string()); + + ASSERT_EQ(result.size(), 3); + EXPECT_EQ(result[0]["name"], "Alice"); + EXPECT_EQ(result[0]["age"], "30"); + EXPECT_EQ(result[0]["city"], "New York"); + EXPECT_EQ(result[1]["name"], "Bob"); + EXPECT_EQ(result[1]["age"], "25"); + EXPECT_EQ(result[1]["city"], "Los Angeles"); + EXPECT_EQ(result[2]["name"], "Charlie"); + EXPECT_EQ(result[2]["age"], "35"); + EXPECT_EQ(result[2]["city"], "Chicago"); +} + +TEST_F(Csv2JsonTest, ConvertImpl_InvalidCsvFile_ThrowsException) { + Csv2Json converter; + fs::path invalidCsvFilePath = fs::temp_directory_path() / "invalid.csv"; + + EXPECT_THROW(converter.convertImpl(invalidCsvFilePath.string()), + std::runtime_error); +} + +TEST_F(Csv2JsonTest, SaveToFileImpl_ValidJsonData_SavesToFile) { + Csv2Json converter; + json jsonData = json::array( + {{{"name", "Alice"}, {"age", "30"}, {"city", "New York"}}, + {{"name", "Bob"}, {"age", "25"}, {"city", "Los Angeles"}}, + {{"name", "Charlie"}, {"age", "35"}, {"city", "Chicago"}}}); + + fs::path jsonFilePath = fs::temp_directory_path() / "test.json"; + bool result = converter.saveToFileImpl(jsonData, jsonFilePath.string()); + + ASSERT_TRUE(result); + std::ifstream jsonFile(jsonFilePath); + ASSERT_TRUE(jsonFile.is_open()); + + json savedData; + jsonFile >> savedData; + jsonFile.close(); + + EXPECT_EQ(savedData, jsonData); + + // Clean up + fs::remove(jsonFilePath); +} + +TEST_F(Csv2JsonTest, SaveToFileImpl_InvalidFilePath_ThrowsException) { + Csv2Json converter; + json jsonData = json::array( + {{{"name", "Alice"}, {"age", "30"}, {"city", "New York"}}, + {{"name", "Bob"}, {"age", "25"}, {"city", "Los Angeles"}}, + {{"name", "Charlie"}, {"age", "35"}, {"city", "Chicago"}}}); + + fs::path invalidJsonFilePath = "/invalid/path/test.json"; + + EXPECT_THROW( + converter.saveToFileImpl(jsonData, invalidJsonFilePath.string()), + std::runtime_error); +} diff --git a/modules/lithium.cxxtools/tests/test_ini2json.cpp b/modules/lithium.cxxtools/tests/test_ini2json.cpp new file mode 100644 index 00000000..24fa1d21 --- /dev/null +++ b/modules/lithium.cxxtools/tests/test_ini2json.cpp @@ -0,0 +1,88 @@ +// test_ini2json.cpp +#include +#include +#include +#include +#include "ini2json.hpp" + +using json = nlohmann::json; +namespace fs = std::filesystem; +using namespace lithium::cxxtools::detail; + +class Ini2JsonTest : public ::testing::Test { +protected: + void SetUp() override { + // Create a temporary INI file for testing + iniFilePath = fs::temp_directory_path() / "test.ini"; + std::ofstream iniFile(iniFilePath); + iniFile << "[section1]\n"; + iniFile << "key1=value1\n"; + iniFile << "key2=value2\n"; + iniFile << "\n"; + iniFile << "[section2]\n"; + iniFile << "keyA=valueA\n"; + iniFile << "keyB=valueB\n"; + iniFile.close(); + } + + void TearDown() override { + // Remove the temporary INI file + fs::remove(iniFilePath); + } + + fs::path iniFilePath; +}; + +TEST_F(Ini2JsonTest, ConvertImpl_ValidIniFile_ReturnsJson) { + Ini2Json converter; + json result = converter.convertImpl(iniFilePath.string()); + + ASSERT_EQ(result.size(), 2); + EXPECT_EQ(result["section1"]["key1"], "value1"); + EXPECT_EQ(result["section1"]["key2"], "value2"); + EXPECT_EQ(result["section2"]["keyA"], "valueA"); + EXPECT_EQ(result["section2"]["keyB"], "valueB"); +} + +TEST_F(Ini2JsonTest, ConvertImpl_InvalidIniFile_ThrowsException) { + Ini2Json converter; + fs::path invalidIniFilePath = fs::temp_directory_path() / "invalid.ini"; + + EXPECT_THROW(converter.convertImpl(invalidIniFilePath.string()), std::runtime_error); +} + +TEST_F(Ini2JsonTest, SaveToFileImpl_ValidJsonData_SavesToFile) { + Ini2Json converter; + json jsonData = { + {"section1", {{"key1", "value1"}, {"key2", "value2"}}}, + {"section2", {{"keyA", "valueA"}, {"keyB", "valueB"}}} + }; + + fs::path jsonFilePath = fs::temp_directory_path() / "test.json"; + bool result = converter.saveToFileImpl(jsonData, jsonFilePath.string()); + + ASSERT_TRUE(result); + std::ifstream jsonFile(jsonFilePath); + ASSERT_TRUE(jsonFile.is_open()); + + json savedData; + jsonFile >> savedData; + jsonFile.close(); + + EXPECT_EQ(savedData, jsonData); + + // Clean up + fs::remove(jsonFilePath); +} + +TEST_F(Ini2JsonTest, SaveToFileImpl_InvalidFilePath_ThrowsException) { + Ini2Json converter; + json jsonData = { + {"section1", {{"key1", "value1"}, {"key2", "value2"}}}, + {"section2", {{"keyA", "valueA"}, {"keyB", "valueB"}}} + }; + + fs::path invalidJsonFilePath = "/invalid/path/test.json"; + + EXPECT_THROW(converter.saveToFileImpl(jsonData, invalidJsonFilePath.string()), std::runtime_error); +} diff --git a/modules/lithium.cxxtools/tests/test_json2csv.cpp b/modules/lithium.cxxtools/tests/test_json2csv.cpp new file mode 100644 index 00000000..70f1e742 --- /dev/null +++ b/modules/lithium.cxxtools/tests/test_json2csv.cpp @@ -0,0 +1,167 @@ +// test_json2csv.cpp +#include "json2csv.hpp" + +#include +#include +#include + +#include "atom/type/json.hpp" + +using json = nlohmann::json; +namespace fs = std::filesystem; +using namespace lithium::cxxtools::converters; + +class JsonToCsvConverterTest : public ::testing::Test { +protected: + void SetUp() override { + // Create a temporary JSON file for testing + jsonFilePath = fs::temp_directory_path() / "test.json"; + json jsonData = json::array( + {{{"name", "Alice"}, {"age", 30}, {"city", "New York"}}, + {{"name", "Bob"}, {"age", 25}, {"city", "Los Angeles"}}, + {{"name", "Charlie"}, {"age", 35}, {"city", "Chicago"}}}); + std::ofstream jsonFile(jsonFilePath); + jsonFile << std::setw(4) << jsonData; + jsonFile.close(); + } + + void TearDown() override { + // Remove the temporary JSON file + fs::remove(jsonFilePath); + } + + fs::path jsonFilePath; +}; + +TEST_F(JsonToCsvConverterTest, ConvertImpl_ValidJsonArray_ReturnsCsv) { + JsonToCsvConverter converter; + json jsonData = + json::array({{{"name", "Alice"}, {"age", 30}, {"city", "New York"}}, + {{"name", "Bob"}, {"age", 25}, {"city", "Los Angeles"}}, + {{"name", "Charlie"}, {"age", 35}, {"city", "Chicago"}}}); + + fs::path csvFilePath = fs::temp_directory_path() / "test.csv"; + bool result = converter.convertImpl(jsonData, csvFilePath); + + ASSERT_TRUE(result); + std::ifstream csvFile(csvFilePath); + ASSERT_TRUE(csvFile.is_open()); + + std::string line; + std::getline(csvFile, line); + EXPECT_EQ(line, "\"name\",\"age\",\"city\""); + + std::getline(csvFile, line); + EXPECT_EQ(line, "\"Alice\",\"30\",\"New York\""); + + std::getline(csvFile, line); + EXPECT_EQ(line, "\"Bob\",\"25\",\"Los Angeles\""); + + std::getline(csvFile, line); + EXPECT_EQ(line, "\"Charlie\",\"35\",\"Chicago\""); + + csvFile.close(); + + // Clean up + fs::remove(csvFilePath); +} + +TEST_F(JsonToCsvConverterTest, ConvertImpl_InvalidJsonData_ThrowsException) { + JsonToCsvConverter converter; + json invalidJsonData = { + {"name", "Alice"}, {"age", 30}, {"city", "New York"}}; + + fs::path csvFilePath = fs::temp_directory_path() / "test.csv"; + + EXPECT_THROW(converter.convertImpl(invalidJsonData, csvFilePath), + std::runtime_error); +} + +TEST_F(JsonToCsvConverterTest, ConvertImpl_EmptyJsonArray_ReturnsEmptyCsv) { + JsonToCsvConverter converter; + json emptyJsonData = json::array(); + + fs::path csvFilePath = fs::temp_directory_path() / "test.csv"; + bool result = converter.convertImpl(emptyJsonData, csvFilePath); + + ASSERT_TRUE(result); + std::ifstream csvFile(csvFilePath); + ASSERT_TRUE(csvFile.is_open()); + + std::string line; + std::getline(csvFile, line); + EXPECT_TRUE(line.empty()); + + csvFile.close(); + + // Clean up + fs::remove(csvFilePath); +} + +TEST_F(JsonToCsvConverterTest, + ConvertImpl_NestedJsonArray_ReturnsFlattenedCsv) { + JsonToCsvConverter converter; + json nestedJsonData = json::array( + {{{"name", "Alice"}, {"details", {{"age", 30}, {"city", "New York"}}}}, + {{"name", "Bob"}, {"details", {{"age", 25}, {"city", "Los Angeles"}}}}, + {{"name", "Charlie"}, + {"details", {{"age", 35}, {"city", "Chicago"}}}}}); + + fs::path csvFilePath = fs::temp_directory_path() / "test.csv"; + bool result = converter.convertImpl(nestedJsonData, csvFilePath); + + ASSERT_TRUE(result); + std::ifstream csvFile(csvFilePath); + ASSERT_TRUE(csvFile.is_open()); + + std::string line; + std::getline(csvFile, line); + EXPECT_EQ(line, "\"name\",\"details_age\",\"details_city\""); + + std::getline(csvFile, line); + EXPECT_EQ(line, "\"Alice\",\"30\",\"New York\""); + + std::getline(csvFile, line); + EXPECT_EQ(line, "\"Bob\",\"25\",\"Los Angeles\""); + + std::getline(csvFile, line); + EXPECT_EQ(line, "\"Charlie\",\"35\",\"Chicago\""); + + csvFile.close(); + + // Clean up + fs::remove(csvFilePath); +} + +TEST_F(JsonToCsvConverterTest, ConvertImpl_ArrayInJson_ReturnsFlattenedCsv) { + JsonToCsvConverter converter; + json arrayJsonData = json::array( + {{{"name", "Alice"}, {"hobbies", {"reading", "swimming"}}}, + {{"name", "Bob"}, {"hobbies", {"cycling", "hiking"}}}, + {{"name", "Charlie"}, {"hobbies", {"running", "gaming"}}}}); + + fs::path csvFilePath = fs::temp_directory_path() / "test.csv"; + bool result = converter.convertImpl(arrayJsonData, csvFilePath); + + ASSERT_TRUE(result); + std::ifstream csvFile(csvFilePath); + ASSERT_TRUE(csvFile.is_open()); + + std::string line; + std::getline(csvFile, line); + EXPECT_EQ(line, "\"name\",\"hobbies_0\",\"hobbies_1\""); + + std::getline(csvFile, line); + EXPECT_EQ(line, "\"Alice\",\"reading\",\"swimming\""); + + std::getline(csvFile, line); + EXPECT_EQ(line, "\"Bob\",\"cycling\",\"hiking\""); + + std::getline(csvFile, line); + EXPECT_EQ(line, "\"Charlie\",\"running\",\"gaming\""); + + csvFile.close(); + + // Clean up + fs::remove(csvFilePath); +} diff --git a/modules/lithium.cxxtools/tests/test_json2ini.cpp b/modules/lithium.cxxtools/tests/test_json2ini.cpp new file mode 100644 index 00000000..2a425732 --- /dev/null +++ b/modules/lithium.cxxtools/tests/test_json2ini.cpp @@ -0,0 +1,164 @@ +// test_json2ini.cpp +#include +#include +#include +#include +#include "json2ini.hpp" + +using json = nlohmann::json; +namespace fs = std::filesystem; +using namespace lithium::cxxtools::converters; + +class JsonToIniConverterTest : public ::testing::Test { +protected: + void SetUp() override { + // Create a temporary JSON file for testing + jsonFilePath = fs::temp_directory_path() / "test.json"; + json jsonData = { + {"section1", {{"key1", "value1"}, {"key2", "value2"}}}, + {"section2", {{"keyA", "valueA"}, {"keyB", "valueB"}}}}; + std::ofstream jsonFile(jsonFilePath); + jsonFile << std::setw(4) << jsonData; + jsonFile.close(); + } + + void TearDown() override { + // Remove the temporary JSON file + fs::remove(jsonFilePath); + } + + fs::path jsonFilePath; +}; + +TEST_F(JsonToIniConverterTest, ConvertImpl_ValidJsonData_ReturnsIni) { + JsonToIniConverter converter; + json jsonData = {{"section1", {{"key1", "value1"}, {"key2", "value2"}}}, + {"section2", {{"keyA", "valueA"}, {"keyB", "valueB"}}}}; + + fs::path iniFilePath = fs::temp_directory_path() / "test.ini"; + bool result = converter.convertImpl(jsonData, iniFilePath); + + ASSERT_TRUE(result); + std::ifstream iniFile(iniFilePath); + ASSERT_TRUE(iniFile.is_open()); + + std::string line; + std::getline(iniFile, line); + EXPECT_EQ(line, "[section1]"); + + std::getline(iniFile, line); + EXPECT_EQ(line, "key1=value1"); + + std::getline(iniFile, line); + EXPECT_EQ(line, "key2=value2"); + + std::getline(iniFile, line); + EXPECT_EQ(line, ""); + + std::getline(iniFile, line); + EXPECT_EQ(line, "[section2]"); + + std::getline(iniFile, line); + EXPECT_EQ(line, "keyA=valueA"); + + std::getline(iniFile, line); + EXPECT_EQ(line, "keyB=valueB"); + + iniFile.close(); + + // Clean up + fs::remove(iniFilePath); +} + +TEST_F(JsonToIniConverterTest, ConvertImpl_InvalidJsonData_ThrowsException) { + JsonToIniConverter converter; + json invalidJsonData = { + {"name", "Alice"}, {"age", 30}, {"city", "New York"}}; + + fs::path iniFilePath = fs::temp_directory_path() / "test.ini"; + + EXPECT_THROW(converter.convertImpl(invalidJsonData, iniFilePath), + std::runtime_error); +} + +TEST_F(JsonToIniConverterTest, ConvertImpl_EmptyJsonData_ReturnsEmptyIni) { + JsonToIniConverter converter; + json emptyJsonData = json::object(); + + fs::path iniFilePath = fs::temp_directory_path() / "test.ini"; + bool result = converter.convertImpl(emptyJsonData, iniFilePath); + + ASSERT_TRUE(result); + std::ifstream iniFile(iniFilePath); + ASSERT_TRUE(iniFile.is_open()); + + std::string line; + EXPECT_FALSE(std::getline(iniFile, line)); + + iniFile.close(); + + // Clean up + fs::remove(iniFilePath); +} + +TEST_F(JsonToIniConverterTest, ConvertImpl_NestedJsonData_ThrowsException) { + JsonToIniConverter converter; + json nestedJsonData = { + {"section1", {{"key1", "value1"}, {"nested", {{"key2", "value2"}}}}}}; + + fs::path iniFilePath = fs::temp_directory_path() / "test.ini"; + + EXPECT_THROW(converter.convertImpl(nestedJsonData, iniFilePath), + std::runtime_error); +} + +TEST_F(JsonToIniConverterTest, SaveToFileImpl_ValidJsonData_SavesToFile) { + JsonToIniConverter converter; + json jsonData = {{"section1", {{"key1", "value1"}, {"key2", "value2"}}}, + {"section2", {{"keyA", "valueA"}, {"keyB", "valueB"}}}}; + + fs::path iniFilePath = fs::temp_directory_path() / "test.ini"; + bool result = converter.convertImpl(jsonData, iniFilePath); + + ASSERT_TRUE(result); + std::ifstream iniFile(iniFilePath); + ASSERT_TRUE(iniFile.is_open()); + + std::string line; + std::getline(iniFile, line); + EXPECT_EQ(line, "[section1]"); + + std::getline(iniFile, line); + EXPECT_EQ(line, "key1=value1"); + + std::getline(iniFile, line); + EXPECT_EQ(line, "key2=value2"); + + std::getline(iniFile, line); + EXPECT_EQ(line, ""); + + std::getline(iniFile, line); + EXPECT_EQ(line, "[section2]"); + + std::getline(iniFile, line); + EXPECT_EQ(line, "keyA=valueA"); + + std::getline(iniFile, line); + EXPECT_EQ(line, "keyB=valueB"); + + iniFile.close(); + + // Clean up + fs::remove(iniFilePath); +} + +TEST_F(JsonToIniConverterTest, SaveToFileImpl_InvalidFilePath_ThrowsException) { + JsonToIniConverter converter; + json jsonData = {{"section1", {{"key1", "value1"}, {"key2", "value2"}}}, + {"section2", {{"keyA", "valueA"}, {"keyB", "valueB"}}}}; + + fs::path invalidIniFilePath = "/invalid/path/test.ini"; + + EXPECT_THROW(converter.convertImpl(jsonData, invalidIniFilePath), + std::runtime_error); +} diff --git a/modules/lithium.cxxtools/tests/test_json2xml.cpp b/modules/lithium.cxxtools/tests/test_json2xml.cpp new file mode 100644 index 00000000..250f6e9c --- /dev/null +++ b/modules/lithium.cxxtools/tests/test_json2xml.cpp @@ -0,0 +1,241 @@ +// test_json2xml.cpp +#include +#include +#include +#include +#include "atom/type/json.hpp" +#include "json2xml.hpp" + +using json = nlohmann::json; +namespace fs = std::filesystem; +using namespace lithium::cxxtools::converters; + +class JsonToXmlConverterTest : public ::testing::Test { +protected: + void SetUp() override { + // Create a temporary JSON file for testing + jsonFilePath = fs::temp_directory_path() / "test.json"; + json jsonData = { + {"name", "Alice"}, + {"age", 30}, + {"city", "New York"}, + {"details", + {{"hobbies", {"reading", "swimming"}}, {"married", false}}}}; + std::ofstream jsonFile(jsonFilePath); + jsonFile << std::setw(4) << jsonData; + jsonFile.close(); + } + + void TearDown() override { + // Remove the temporary JSON file + fs::remove(jsonFilePath); + } + + fs::path jsonFilePath; +}; + +TEST_F(JsonToXmlConverterTest, ConvertImpl_ValidJsonData_ReturnsXml) { + JsonToXmlConverter converter; + json jsonData = { + {"name", "Alice"}, + {"age", 30}, + {"city", "New York"}, + {"details", + {{"hobbies", {"reading", "swimming"}}, {"married", false}}}}; + + fs::path xmlFilePath = fs::temp_directory_path() / "test.xml"; + bool result = converter.convertImpl(jsonData, xmlFilePath); + + ASSERT_TRUE(result); + tinyxml2::XMLDocument xmlDoc; + tinyxml2::XMLError eResult = xmlDoc.LoadFile(xmlFilePath.string().c_str()); + ASSERT_EQ(eResult, tinyxml2::XML_SUCCESS); + + tinyxml2::XMLElement* root = xmlDoc.FirstChildElement("root"); + ASSERT_NE(root, nullptr); + + tinyxml2::XMLElement* nameElement = root->FirstChildElement("name"); + ASSERT_NE(nameElement, nullptr); + EXPECT_STREQ(nameElement->GetText(), "Alice"); + + tinyxml2::XMLElement* ageElement = root->FirstChildElement("age"); + ASSERT_NE(ageElement, nullptr); + EXPECT_STREQ(ageElement->GetText(), "30"); + + tinyxml2::XMLElement* cityElement = root->FirstChildElement("city"); + ASSERT_NE(cityElement, nullptr); + EXPECT_STREQ(cityElement->GetText(), "New York"); + + tinyxml2::XMLElement* detailsElement = root->FirstChildElement("details"); + ASSERT_NE(detailsElement, nullptr); + + tinyxml2::XMLElement* hobbiesElement = + detailsElement->FirstChildElement("hobbies"); + ASSERT_NE(hobbiesElement, nullptr); + tinyxml2::XMLElement* hobby1Element = + hobbiesElement->FirstChildElement("hobbies"); + ASSERT_NE(hobby1Element, nullptr); + EXPECT_STREQ(hobby1Element->GetText(), "reading"); + tinyxml2::XMLElement* hobby2Element = + hobby1Element->NextSiblingElement("hobbies"); + ASSERT_NE(hobby2Element, nullptr); + EXPECT_STREQ(hobby2Element->GetText(), "swimming"); + + tinyxml2::XMLElement* marriedElement = + detailsElement->FirstChildElement("married"); + ASSERT_NE(marriedElement, nullptr); + EXPECT_STREQ(marriedElement->GetText(), "false"); + + // Clean up + fs::remove(xmlFilePath); +} + +TEST_F(JsonToXmlConverterTest, ConvertImpl_InvalidJsonData_ThrowsException) { + JsonToXmlConverter converter; + json invalidJsonData = { + {"name", "Alice"}, {"age", 30}, {"city", "New York"}}; + + fs::path xmlFilePath = fs::temp_directory_path() / "test.xml"; + + EXPECT_THROW(converter.convertImpl(invalidJsonData, xmlFilePath), + std::runtime_error); +} + +TEST_F(JsonToXmlConverterTest, ConvertImpl_EmptyJsonData_ReturnsEmptyXml) { + JsonToXmlConverter converter; + json emptyJsonData = json::object(); + + fs::path xmlFilePath = fs::temp_directory_path() / "test.xml"; + bool result = converter.convertImpl(emptyJsonData, xmlFilePath); + + ASSERT_TRUE(result); + tinyxml2::XMLDocument xmlDoc; + tinyxml2::XMLError eResult = xmlDoc.LoadFile(xmlFilePath.string().c_str()); + ASSERT_EQ(eResult, tinyxml2::XML_SUCCESS); + + tinyxml2::XMLElement* root = xmlDoc.FirstChildElement("root"); + ASSERT_NE(root, nullptr); + EXPECT_EQ(root->FirstChild(), nullptr); + + // Clean up + fs::remove(xmlFilePath); +} + +TEST_F(JsonToXmlConverterTest, ConvertImpl_NestedJsonData_ReturnsNestedXml) { + JsonToXmlConverter converter; + json nestedJsonData = { + {"person", + {{"name", "Alice"}, + {"age", 30}, + {"address", {{"city", "New York"}, {"zip", "10001"}}}}}}; + + fs::path xmlFilePath = fs::temp_directory_path() / "test.xml"; + bool result = converter.convertImpl(nestedJsonData, xmlFilePath); + + ASSERT_TRUE(result); + tinyxml2::XMLDocument xmlDoc; + tinyxml2::XMLError eResult = xmlDoc.LoadFile(xmlFilePath.string().c_str()); + ASSERT_EQ(eResult, tinyxml2::XML_SUCCESS); + + tinyxml2::XMLElement* root = xmlDoc.FirstChildElement("root"); + ASSERT_NE(root, nullptr); + + tinyxml2::XMLElement* personElement = root->FirstChildElement("person"); + ASSERT_NE(personElement, nullptr); + + tinyxml2::XMLElement* nameElement = + personElement->FirstChildElement("name"); + ASSERT_NE(nameElement, nullptr); + EXPECT_STREQ(nameElement->GetText(), "Alice"); + + tinyxml2::XMLElement* ageElement = personElement->FirstChildElement("age"); + ASSERT_NE(ageElement, nullptr); + EXPECT_STREQ(ageElement->GetText(), "30"); + + tinyxml2::XMLElement* addressElement = + personElement->FirstChildElement("address"); + ASSERT_NE(addressElement, nullptr); + + tinyxml2::XMLElement* cityElement = + addressElement->FirstChildElement("city"); + ASSERT_NE(cityElement, nullptr); + EXPECT_STREQ(cityElement->GetText(), "New York"); + + tinyxml2::XMLElement* zipElement = addressElement->FirstChildElement("zip"); + ASSERT_NE(zipElement, nullptr); + EXPECT_STREQ(zipElement->GetText(), "10001"); + + // Clean up + fs::remove(xmlFilePath); +} + +TEST_F(JsonToXmlConverterTest, SaveToFileImpl_ValidJsonData_SavesToFile) { + JsonToXmlConverter converter; + json jsonData = { + {"name", "Alice"}, + {"age", 30}, + {"city", "New York"}, + {"details", + {{"hobbies", {"reading", "swimming"}}, {"married", false}}}}; + + fs::path xmlFilePath = fs::temp_directory_path() / "test.xml"; + bool result = converter.convertImpl(jsonData, xmlFilePath); + + ASSERT_TRUE(result); + tinyxml2::XMLDocument xmlDoc; + tinyxml2::XMLError eResult = xmlDoc.LoadFile(xmlFilePath.string().c_str()); + ASSERT_EQ(eResult, tinyxml2::XML_SUCCESS); + + tinyxml2::XMLElement* root = xmlDoc.FirstChildElement("root"); + ASSERT_NE(root, nullptr); + + tinyxml2::XMLElement* nameElement = root->FirstChildElement("name"); + ASSERT_NE(nameElement, nullptr); + EXPECT_STREQ(nameElement->GetText(), "Alice"); + + tinyxml2::XMLElement* ageElement = root->FirstChildElement("age"); + ASSERT_NE(ageElement, nullptr); + EXPECT_STREQ(ageElement->GetText(), "30"); + + tinyxml2::XMLElement* cityElement = root->FirstChildElement("city"); + ASSERT_NE(cityElement, nullptr); + EXPECT_STREQ(cityElement->GetText(), "New York"); + + tinyxml2::XMLElement* detailsElement = root->FirstChildElement("details"); + ASSERT_NE(detailsElement, nullptr); + + tinyxml2::XMLElement* hobbiesElement = + detailsElement->FirstChildElement("hobbies"); + ASSERT_NE(hobbiesElement, nullptr); + tinyxml2::XMLElement* hobby1Element = + hobbiesElement->FirstChildElement("hobbies"); + ASSERT_NE(hobby1Element, nullptr); + EXPECT_STREQ(hobby1Element->GetText(), "reading"); + tinyxml2::XMLElement* hobby2Element = + hobby1Element->NextSiblingElement("hobbies"); + ASSERT_NE(hobby2Element, nullptr); + EXPECT_STREQ(hobby2Element->GetText(), "swimming"); + + tinyxml2::XMLElement* marriedElement = + detailsElement->FirstChildElement("married"); + ASSERT_NE(marriedElement, nullptr); + EXPECT_STREQ(marriedElement->GetText(), "false"); + + // Clean up + fs::remove(xmlFilePath); +} + +TEST_F(JsonToXmlConverterTest, SaveToFileImpl_InvalidFilePath_ThrowsException) { + JsonToXmlConverter converter; + json jsonData = { + {"name", "Alice"}, + {"age", 30}, + {"city", "New York"}, + {"details", + {{"hobbies", {"reading", "swimming"}}, {"married", false}}}}; + + fs::path invalidXmlFilePath = "/invalid/path/test.xml"; + + EXPECT_THROW(converter.convertImpl(jsonData, invalidXmlFilePath), + std::runtime_error); +} diff --git a/modules/lithium.cxxtools/tests/test_json2yaml.cpp b/modules/lithium.cxxtools/tests/test_json2yaml.cpp new file mode 100644 index 00000000..1c4b6d50 --- /dev/null +++ b/modules/lithium.cxxtools/tests/test_json2yaml.cpp @@ -0,0 +1,163 @@ +// test_json2yaml.cpp +#include +#include +#include +#include +#include +#include "json2yaml.hpp" + +using json = nlohmann::json; +namespace fs = std::filesystem; +using namespace lithium::cxxtools::converters; + +class JsonToYamlConverterTest : public ::testing::Test { +protected: + void SetUp() override { + // Create a temporary JSON file for testing + jsonFilePath = fs::temp_directory_path() / "test.json"; + json jsonData = { + {"name", "Alice"}, + {"age", 30}, + {"city", "New York"}, + {"details", + {{"hobbies", {"reading", "swimming"}}, {"married", false}}}}; + std::ofstream jsonFile(jsonFilePath); + jsonFile << std::setw(4) << jsonData; + jsonFile.close(); + } + + void TearDown() override { + // Remove the temporary JSON file + fs::remove(jsonFilePath); + } + + fs::path jsonFilePath; +}; + +TEST_F(JsonToYamlConverterTest, ConvertImpl_ValidJsonData_ReturnsYaml) { + JsonToYamlConverter converter; + json jsonData = { + {"name", "Alice"}, + {"age", 30}, + {"city", "New York"}, + {"details", + {{"hobbies", {"reading", "swimming"}}, {"married", false}}}}; + + fs::path yamlFilePath = fs::temp_directory_path() / "test.yaml"; + bool result = converter.convertImpl(jsonData, yamlFilePath); + + ASSERT_TRUE(result); + std::ifstream yamlFile(yamlFilePath); + ASSERT_TRUE(yamlFile.is_open()); + + YAML::Node yamlNode = YAML::LoadFile(yamlFilePath.string()); + EXPECT_EQ(yamlNode["name"].as(), "Alice"); + EXPECT_EQ(yamlNode["age"].as(), 30); + EXPECT_EQ(yamlNode["city"].as(), "New York"); + EXPECT_EQ(yamlNode["details"]["hobbies"][0].as(), "reading"); + EXPECT_EQ(yamlNode["details"]["hobbies"][1].as(), "swimming"); + EXPECT_EQ(yamlNode["details"]["married"].as(), false); + + // Clean up + fs::remove(yamlFilePath); +} + +TEST_F(JsonToYamlConverterTest, ConvertImpl_InvalidJsonData_ThrowsException) { + JsonToYamlConverter converter; + json invalidJsonData = { + {"name", "Alice"}, {"age", 30}, {"city", "New York"}}; + + fs::path yamlFilePath = fs::temp_directory_path() / "test.yaml"; + + EXPECT_THROW(converter.convertImpl(invalidJsonData, yamlFilePath), + std::runtime_error); +} + +TEST_F(JsonToYamlConverterTest, ConvertImpl_EmptyJsonData_ReturnsEmptyYaml) { + JsonToYamlConverter converter; + json emptyJsonData = json::object(); + + fs::path yamlFilePath = fs::temp_directory_path() / "test.yaml"; + bool result = converter.convertImpl(emptyJsonData, yamlFilePath); + + ASSERT_TRUE(result); + std::ifstream yamlFile(yamlFilePath); + ASSERT_TRUE(yamlFile.is_open()); + + YAML::Node yamlNode = YAML::LoadFile(yamlFilePath.string()); + EXPECT_TRUE(yamlNode.IsMap()); + EXPECT_TRUE(yamlNode.size() == 0); + + // Clean up + fs::remove(yamlFilePath); +} + +TEST_F(JsonToYamlConverterTest, ConvertImpl_NestedJsonData_ReturnsNestedYaml) { + JsonToYamlConverter converter; + json nestedJsonData = { + {"person", + {{"name", "Alice"}, + {"age", 30}, + {"address", {{"city", "New York"}, {"zip", "10001"}}}}}}; + + fs::path yamlFilePath = fs::temp_directory_path() / "test.yaml"; + bool result = converter.convertImpl(nestedJsonData, yamlFilePath); + + ASSERT_TRUE(result); + std::ifstream yamlFile(yamlFilePath); + ASSERT_TRUE(yamlFile.is_open()); + + YAML::Node yamlNode = YAML::LoadFile(yamlFilePath.string()); + EXPECT_EQ(yamlNode["person"]["name"].as(), "Alice"); + EXPECT_EQ(yamlNode["person"]["age"].as(), 30); + EXPECT_EQ(yamlNode["person"]["address"]["city"].as(), + "New York"); + EXPECT_EQ(yamlNode["person"]["address"]["zip"].as(), "10001"); + + // Clean up + fs::remove(yamlFilePath); +} + +TEST_F(JsonToYamlConverterTest, SaveToFileImpl_ValidJsonData_SavesToFile) { + JsonToYamlConverter converter; + json jsonData = { + {"name", "Alice"}, + {"age", 30}, + {"city", "New York"}, + {"details", + {{"hobbies", {"reading", "swimming"}}, {"married", false}}}}; + + fs::path yamlFilePath = fs::temp_directory_path() / "test.yaml"; + bool result = converter.convertImpl(jsonData, yamlFilePath); + + ASSERT_TRUE(result); + std::ifstream yamlFile(yamlFilePath); + ASSERT_TRUE(yamlFile.is_open()); + + YAML::Node yamlNode = YAML::LoadFile(yamlFilePath.string()); + EXPECT_EQ(yamlNode["name"].as(), "Alice"); + EXPECT_EQ(yamlNode["age"].as(), 30); + EXPECT_EQ(yamlNode["city"].as(), "New York"); + EXPECT_EQ(yamlNode["details"]["hobbies"][0].as(), "reading"); + EXPECT_EQ(yamlNode["details"]["hobbies"][1].as(), "swimming"); + EXPECT_EQ(yamlNode["details"]["married"].as(), false); + + // Clean up + fs::remove(yamlFilePath); +} + +TEST_F(JsonToYamlConverterTest, + SaveToFileImpl_InvalidFilePath_ThrowsException) { + JsonToYamlConverter converter; + json jsonData = { + {"name", "Alice"}, + {"age", 30}, + {"city", "New York"}, + {"details", + {{"hobbies", {"reading", "swimming"}}, {"married", false}}}}; + + fs::path invalidYamlFilePath = "/invalid/path/test.yaml"; + + EXPECT_THROW(converter.convertImpl(jsonData, invalidYamlFilePath), + std::runtime_error); +} diff --git a/modules/lithium.cxxtools/tests/test_nc.cpp b/modules/lithium.cxxtools/tests/test_nc.cpp new file mode 100644 index 00000000..980591e9 --- /dev/null +++ b/modules/lithium.cxxtools/tests/test_nc.cpp @@ -0,0 +1,129 @@ +// test_nc.cpp +#include + +#include +#include +#include +#include + +#include "atom/log/loguru.hpp" + +using asio::ip::tcp; +using asio::ip::udp; + +constexpr std::size_t MAX_LENGTH = 1024; +constexpr int DEFAULT_TIMEOUT_SECONDS = 10; + +void runTcpClient(const std::string& host, const std::string& port, + int timeoutSeconds, + const std::optional& filename = std::nullopt); + +class TcpClientTest : public ::testing::Test { +protected: + void SetUp() override { + // Start a mock TCP server + serverThread = std::thread([this]() { + try { + asio::io_context ioContext; + tcp::acceptor acceptor(ioContext, + tcp::endpoint(tcp::v4(), 12345)); + tcp::socket socket(ioContext); + acceptor.accept(socket); + + std::array buffer; + asio::error_code error; + size_t length = socket.read_some(asio::buffer(buffer), error); + if (!error) { + std::string message(buffer.data(), length); + if (message == "Hello\n") { + asio::write(socket, asio::buffer("World\n")); + } + } + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in mock server: {}", e.what()); + } + }); + std::this_thread::sleep_for( + std::chrono::seconds(1)); // Give the server time to start + } + + void TearDown() override { + if (serverThread.joinable()) { + serverThread.join(); + } + } + + std::thread serverThread; +}; + +TEST_F(TcpClientTest, RunTcpClient_SendMessage_ReceiveReply) { + std::string host = "127.0.0.1"; + std::string port = "12345"; + int timeoutSeconds = DEFAULT_TIMEOUT_SECONDS; + + // Redirect std::cin to simulate user input + std::istringstream input("Hello\n"); + std::cin.rdbuf(input.rdbuf()); + + // Capture std::cout to verify output + std::ostringstream output; + std::streambuf* coutBuf = std::cout.rdbuf(); + std::cout.rdbuf(output.rdbuf()); + + runTcpClient(host, port, timeoutSeconds); + + std::cout.rdbuf(coutBuf); // Restore std::cout + + std::string expectedOutput = "Reply: World\n"; + EXPECT_EQ(output.str(), expectedOutput); +} + +TEST_F(TcpClientTest, RunTcpClient_SendFile_Success) { + std::string host = "127.0.0.1"; + std::string port = "12345"; + int timeoutSeconds = DEFAULT_TIMEOUT_SECONDS; + + // Create a temporary file to send + std::string filename = "testfile.txt"; + std::ofstream file(filename); + file << "Test file content"; + file.close(); + + runTcpClient(host, port, timeoutSeconds, filename); + + // Verify that the file was sent successfully (mock server should handle + // this) In a real test, you would have more checks here + + // Clean up + std::remove(filename.c_str()); +} + +TEST_F(TcpClientTest, RunTcpClient_InvalidHost_ThrowsException) { + std::string host = "invalid_host"; + std::string port = "12345"; + int timeoutSeconds = DEFAULT_TIMEOUT_SECONDS; + + EXPECT_THROW(runTcpClient(host, port, timeoutSeconds), std::exception); +} + +TEST_F(TcpClientTest, RunTcpClient_Timeout_ClosesSocket) { + std::string host = "127.0.0.1"; + std::string port = "12345"; + int timeoutSeconds = 1; // Set a short timeout + + // Redirect std::cin to simulate user input + std::istringstream input("Hello\n"); + std::cin.rdbuf(input.rdbuf()); + + // Capture std::cout to verify output + std::ostringstream output; + std::streambuf* coutBuf = std::cout.rdbuf(); + std::cout.rdbuf(output.rdbuf()); + + runTcpClient(host, port, timeoutSeconds); + + std::cout.rdbuf(coutBuf); // Restore std::cout + + std::string expectedOutput = "Reply: World\n"; + EXPECT_EQ(output.str(), expectedOutput); +} diff --git a/modules/lithium.cxxtools/tests/test_proxy.cpp b/modules/lithium.cxxtools/tests/test_proxy.cpp new file mode 100644 index 00000000..9f6edf2c --- /dev/null +++ b/modules/lithium.cxxtools/tests/test_proxy.cpp @@ -0,0 +1,171 @@ +// test_proxy.cpp +#include "proxy.hpp" + +#include +#include +#include +#include + +#include "atom/log/loguru.hpp" + +namespace fs = std::filesystem; +using namespace lithium::cxxtools; + +class NetworkProxyTest : public ::testing::Test { +protected: + NetworkProxy proxy; + + void SetUp() override {} + + void TearDown() override { + // Clean up any changes made to the system during tests + proxy.disableProxy(); + } +}; + +TEST_F(NetworkProxyTest, SetProxy_ValidProxy_ReturnsTrue) { + std::string proxyAddress = "http://127.0.0.1:8080"; + NetworkProxy::ProxyMode mode = NetworkProxy::ProxyMode::System; + std::string listenIP = "127.0.0.1"; + std::string dns = "8.8.8.8"; + + bool result = proxy.setProxy(proxyAddress, mode, listenIP, dns); + EXPECT_TRUE(result); +} + +TEST_F(NetworkProxyTest, SetProxy_InvalidProxy_ReturnsFalse) { + std::string proxyAddress = "invalid_proxy"; + NetworkProxy::ProxyMode mode = NetworkProxy::ProxyMode::System; + std::string listenIP = "127.0.0.1"; + std::string dns = "8.8.8.8"; + + bool result = proxy.setProxy(proxyAddress, mode, listenIP, dns); + EXPECT_FALSE(result); +} + +TEST_F(NetworkProxyTest, DisableProxy_ReturnsTrue) { + bool result = proxy.disableProxy(); + EXPECT_TRUE(result); +} + +TEST_F(NetworkProxyTest, GetCurrentProxy_ReturnsProxy) { + std::string proxyAddress = "http://127.0.0.1:8080"; + NetworkProxy::ProxyMode mode = NetworkProxy::ProxyMode::System; + std::string listenIP = "127.0.0.1"; + std::string dns = "8.8.8.8"; + + proxy.setProxy(proxyAddress, mode, listenIP, dns); + std::string currentProxy = proxy.getCurrentProxy(); + EXPECT_EQ(currentProxy, proxyAddress); +} + +TEST_F(NetworkProxyTest, InstallCertificate_ValidCert_ReturnsTrue) { + std::string certPath = "test_cert.pem"; + std::ofstream certFile(certPath); + certFile << "dummy certificate content"; + certFile.close(); + + bool result = proxy.installCertificate(certPath); + EXPECT_TRUE(result); + + fs::remove(certPath); +} + +TEST_F(NetworkProxyTest, InstallCertificate_InvalidCert_ReturnsFalse) { + std::string certPath = "/invalid/path/to/cert.pem"; + + bool result = proxy.installCertificate(certPath); + EXPECT_FALSE(result); +} + +TEST_F(NetworkProxyTest, UninstallCertificate_ValidCert_ReturnsTrue) { + std::string certName = "test_cert"; + + bool result = proxy.uninstallCertificate(certName); + EXPECT_TRUE(result); +} + +TEST_F(NetworkProxyTest, UninstallCertificate_InvalidCert_ReturnsFalse) { + std::string certName = "invalid_cert"; + + bool result = proxy.uninstallCertificate(certName); + EXPECT_FALSE(result); +} + +TEST_F(NetworkProxyTest, ViewCertificateInfo_ValidCert_ReturnsInfo) { + std::string certName = "test_cert"; + + std::string certInfo = proxy.viewCertificateInfo(certName); + EXPECT_FALSE(certInfo.empty()); +} + +TEST_F(NetworkProxyTest, ViewCertificateInfo_InvalidCert_ReturnsEmpty) { + std::string certName = "invalid_cert"; + + std::string certInfo = proxy.viewCertificateInfo(certName); + EXPECT_TRUE(certInfo.empty()); +} + +TEST_F(NetworkProxyTest, EditHostsFile_ValidEntries_Success) { + std::vector> hostsEntries = { + {"127.0.0.1", "test.local"}, {"127.0.0.1", "example.local"}}; + + proxy.editHostsFile(hostsEntries); + + // Verify the entries were added to the hosts file + std::ifstream hostsFile("/etc/hosts"); + std::string line; + bool foundTestLocal = false; + bool foundExampleLocal = false; + while (std::getline(hostsFile, line)) { + if (line.find("test.local") != std::string::npos) { + foundTestLocal = true; + } + if (line.find("example.local") != std::string::npos) { + foundExampleLocal = true; + } + } + hostsFile.close(); + + EXPECT_TRUE(foundTestLocal); + EXPECT_TRUE(foundExampleLocal); +} + +TEST_F(NetworkProxyTest, ResetHostsFile_Success) { + proxy.resetHostsFile(); + + // Verify the hosts file was reset + std::ifstream hostsFile("/etc/hosts"); + std::string line; + bool foundLocalhost = false; + while (std::getline(hostsFile, line)) { + if (line.find("127.0.0.1 localhost") != std::string::npos) { + foundLocalhost = true; + } + } + hostsFile.close(); + + EXPECT_TRUE(foundLocalhost); +} + +TEST_F(NetworkProxyTest, EnableHttpToHttpsRedirect_Enable) { + proxy.enableHttpToHttpsRedirect(true); + // Additional checks can be added here if needed +} + +TEST_F(NetworkProxyTest, EnableHttpToHttpsRedirect_Disable) { + proxy.enableHttpToHttpsRedirect(false); + // Additional checks can be added here if needed +} + +TEST_F(NetworkProxyTest, SetCustomDoH_ValidUrl) { + std::string dohUrl = "https://dns.google/dns-query"; + proxy.setCustomDoH(dohUrl); + // Additional checks can be added here if needed +} + +int main(int argc, char** argv) { + loguru::init(argc, argv); + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} \ No newline at end of file diff --git a/modules/lithium.cxxtools/tests/test_symbol.cpp b/modules/lithium.cxxtools/tests/test_symbol.cpp new file mode 100644 index 00000000..25b531e2 --- /dev/null +++ b/modules/lithium.cxxtools/tests/test_symbol.cpp @@ -0,0 +1,147 @@ +// test_symbol.cpp +#include "atom/type/json.hpp" +#include "symbol.hpp" + +#include +#include +#include +#include +#include + +#include "atom/log/loguru.hpp" +#include "yaml-cpp/yaml.h" + +namespace fs = std::filesystem; + +class SymbolAnalyzerTest : public ::testing::Test { +protected: + void SetUp() override { + // Create a temporary library file for testing + libraryPath = fs::temp_directory_path() / "test_library.so"; + std::ofstream libraryFile(libraryPath); + libraryFile << "dummy content"; + libraryFile.close(); + } + + void TearDown() override { + // Remove the temporary library file + fs::remove(libraryPath); + } + + fs::path libraryPath; +}; + +TEST_F(SymbolAnalyzerTest, AnalyzeLibrary_ValidLibrary_CsvOutput) { + std::string outputFormat = "csv"; + int threadCount = 2; + + analyzeLibrary(libraryPath.string(), outputFormat, threadCount); + + fs::path csvFilePath = "symbols.csv"; + ASSERT_TRUE(fs::exists(csvFilePath)); + + std::ifstream csvFile(csvFilePath); + ASSERT_TRUE(csvFile.is_open()); + + std::string line; + std::getline(csvFile, line); + EXPECT_EQ(line, "Address,Type,Bind,Visibility,Name,Demangled Name"); + + csvFile.close(); + fs::remove(csvFilePath); +} + +TEST_F(SymbolAnalyzerTest, AnalyzeLibrary_ValidLibrary_JsonOutput) { + std::string outputFormat = "json"; + int threadCount = 2; + + analyzeLibrary(libraryPath.string(), outputFormat, threadCount); + + fs::path jsonFilePath = "symbols.json"; + ASSERT_TRUE(fs::exists(jsonFilePath)); + + std::ifstream jsonFile(jsonFilePath); + ASSERT_TRUE(jsonFile.is_open()); + + nlohmann::json jsonData; + jsonFile >> jsonData; + EXPECT_TRUE(jsonData.is_array()); + + jsonFile.close(); + fs::remove(jsonFilePath); +} + +TEST_F(SymbolAnalyzerTest, AnalyzeLibrary_ValidLibrary_YamlOutput) { + std::string outputFormat = "yaml"; + int threadCount = 2; + + analyzeLibrary(libraryPath.string(), outputFormat, threadCount); + + fs::path yamlFilePath = "symbols.yaml"; + ASSERT_TRUE(fs::exists(yamlFilePath)); + + std::ifstream yamlFile(yamlFilePath); + ASSERT_TRUE(yamlFile.is_open()); + + YAML::Node yamlData = YAML::LoadFile(yamlFilePath.string()); + EXPECT_TRUE(yamlData.IsSequence()); + + yamlFile.close(); + fs::remove(yamlFilePath); +} + +TEST_F(SymbolAnalyzerTest, AnalyzeLibrary_InvalidLibraryPath_ThrowsException) { + std::string invalidLibraryPath = "/invalid/path/to/library.so"; + std::string outputFormat = "json"; + int threadCount = 2; + + EXPECT_THROW(analyzeLibrary(invalidLibraryPath, outputFormat, threadCount), + std::runtime_error); +} + +TEST_F(SymbolAnalyzerTest, + AnalyzeLibrary_UnsupportedOutputFormat_ThrowsException) { + std::string outputFormat = "unsupported_format"; + int threadCount = 2; + + EXPECT_THROW( + analyzeLibrary(libraryPath.string(), outputFormat, threadCount), + std::runtime_error); +} + +TEST_F(SymbolAnalyzerTest, Main_InvalidArguments_ReturnsFailure) { + int argc = 2; + const char* argv[] = {"symbol_analyzer", "arg1"}; + EXPECT_EQ(main(argc, const_cast(argv)), EXIT_FAILURE); +} + +TEST_F(SymbolAnalyzerTest, Main_ValidArguments_ReturnsSuccess) { + int argc = 4; + const char* argv[] = {"symbol_analyzer", libraryPath.string().c_str(), + "json", "2"}; + EXPECT_EQ(main(argc, const_cast(argv)), EXIT_SUCCESS); + + fs::path jsonFilePath = "symbols.json"; + ASSERT_TRUE(fs::exists(jsonFilePath)); + fs::remove(jsonFilePath); +} + +TEST_F(SymbolAnalyzerTest, Main_InvalidThreadCount_ReturnsFailure) { + int argc = 4; + const char* argv[] = {"symbol_analyzer", libraryPath.string().c_str(), + "json", "-1"}; + EXPECT_EQ(main(argc, const_cast(argv)), EXIT_FAILURE); +} + +TEST_F(SymbolAnalyzerTest, Main_UnsupportedOutputFormat_ReturnsFailure) { + int argc = 4; + const char* argv[] = {"symbol_analyzer", libraryPath.string().c_str(), + "unsupported_format", "2"}; + EXPECT_EQ(main(argc, const_cast(argv)), EXIT_FAILURE); +} + +int main(int argc, char** argv) { + loguru::init(argc, argv); + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} \ No newline at end of file diff --git a/modules/lithium.cxxtools/tests/test_xml2json.cpp b/modules/lithium.cxxtools/tests/test_xml2json.cpp new file mode 100644 index 00000000..cf897ee8 --- /dev/null +++ b/modules/lithium.cxxtools/tests/test_xml2json.cpp @@ -0,0 +1,151 @@ +// test_xml2json.cpp +#include +#include +#include +#include +#include +#include "xml2json.hpp" + +using json = nlohmann::json; +namespace fs = std::filesystem; +using namespace lithium::cxxtools::detail; + +class Xml2JsonTest : public ::testing::Test { +protected: + void SetUp() override { + // Create a temporary XML file for testing + xmlFilePath = fs::temp_directory_path() / "test.xml"; + std::ofstream xmlFile(xmlFilePath); + xmlFile << R"( + + Alice + 30 + New York +
+ reading + swimming + false +
+
+ )"; + xmlFile.close(); + } + + void TearDown() override { + // Remove the temporary XML file + fs::remove(xmlFilePath); + } + + fs::path xmlFilePath; +}; + +TEST_F(Xml2JsonTest, ConvertImpl_ValidXmlFile_ReturnsJson) { + Xml2Json converter; + json result = converter.convertImpl(xmlFilePath.string()); + + ASSERT_EQ(result.size(), 1); + EXPECT_EQ(result["root"]["name"], "Alice"); + EXPECT_EQ(result["root"]["age"], "30"); + EXPECT_EQ(result["root"]["city"], "New York"); + EXPECT_EQ(result["root"]["details"]["hobbies"][0], "reading"); + EXPECT_EQ(result["root"]["details"]["hobbies"][1], "swimming"); + EXPECT_EQ(result["root"]["details"]["married"], "false"); +} + +TEST_F(Xml2JsonTest, ConvertImpl_InvalidXmlFile_ThrowsException) { + Xml2Json converter; + fs::path invalidXmlFilePath = fs::temp_directory_path() / "invalid.xml"; + + EXPECT_THROW(converter.convertImpl(invalidXmlFilePath.string()), + std::runtime_error); +} + +TEST_F(Xml2JsonTest, ConvertImpl_EmptyXmlFile_ReturnsEmptyJson) { + Xml2Json converter; + fs::path emptyXmlFilePath = fs::temp_directory_path() / "empty.xml"; + std::ofstream emptyXmlFile(emptyXmlFilePath); + emptyXmlFile << R"()"; + emptyXmlFile.close(); + + json result = converter.convertImpl(emptyXmlFilePath.string()); + + ASSERT_EQ(result.size(), 1); + EXPECT_TRUE(result["root"].empty()); + + // Clean up + fs::remove(emptyXmlFilePath); +} + +TEST_F(Xml2JsonTest, ConvertImpl_NestedXmlFile_ReturnsNestedJson) { + Xml2Json converter; + fs::path nestedXmlFilePath = fs::temp_directory_path() / "nested.xml"; + std::ofstream nestedXmlFile(nestedXmlFilePath); + nestedXmlFile << R"( + + + Alice + 30 +
+ New York + 10001 +
+
+
+ )"; + nestedXmlFile.close(); + + json result = converter.convertImpl(nestedXmlFilePath.string()); + + ASSERT_EQ(result.size(), 1); + EXPECT_EQ(result["root"]["person"]["name"], "Alice"); + EXPECT_EQ(result["root"]["person"]["age"], "30"); + EXPECT_EQ(result["root"]["person"]["address"]["city"], "New York"); + EXPECT_EQ(result["root"]["person"]["address"]["zip"], "10001"); + + // Clean up + fs::remove(nestedXmlFilePath); +} + +TEST_F(Xml2JsonTest, SaveToFileImpl_ValidJsonData_SavesToFile) { + Xml2Json converter; + json jsonData = { + {"root", + {{"name", "Alice"}, + {"age", 30}, + {"city", "New York"}, + {"details", + {{"hobbies", {"reading", "swimming"}}, {"married", false}}}}}}; + + fs::path jsonFilePath = fs::temp_directory_path() / "test.json"; + bool result = converter.saveToFileImpl(jsonData, jsonFilePath.string()); + + ASSERT_TRUE(result); + std::ifstream jsonFile(jsonFilePath); + ASSERT_TRUE(jsonFile.is_open()); + + json savedData; + jsonFile >> savedData; + jsonFile.close(); + + EXPECT_EQ(savedData, jsonData); + + // Clean up + fs::remove(jsonFilePath); +} + +TEST_F(Xml2JsonTest, SaveToFileImpl_InvalidFilePath_ThrowsException) { + Xml2Json converter; + json jsonData = { + {"root", + {{"name", "Alice"}, + {"age", 30}, + {"city", "New York"}, + {"details", + {{"hobbies", {"reading", "swimming"}}, {"married", false}}}}}}; + + fs::path invalidJsonFilePath = "/invalid/path/test.json"; + + EXPECT_THROW( + converter.saveToFileImpl(jsonData, invalidJsonFilePath.string()), + std::runtime_error); +} diff --git a/modules/lithium.cxxtools/tests/test_yaml2json.cpp b/modules/lithium.cxxtools/tests/test_yaml2json.cpp new file mode 100644 index 00000000..b6bb1888 --- /dev/null +++ b/modules/lithium.cxxtools/tests/test_yaml2json.cpp @@ -0,0 +1,139 @@ +// test_yaml2json.cpp +#include +#include +#include +#include +#include +#include "yaml2json.hpp" + +using json = nlohmann::json; +namespace fs = std::filesystem; +using namespace lithium::cxxtools::detail; + +class Yaml2JsonTest : public ::testing::Test { +protected: + void SetUp() override { + // Create a temporary YAML file for testing + yamlFilePath = fs::temp_directory_path() / "test.yaml"; + std::ofstream yamlFile(yamlFilePath); + yamlFile << R"( + name: Alice + age: 30 + city: New York + details: + hobbies: + - reading + - swimming + married: false + )"; + yamlFile.close(); + } + + void TearDown() override { + // Remove the temporary YAML file + fs::remove(yamlFilePath); + } + + fs::path yamlFilePath; +}; + +TEST_F(Yaml2JsonTest, ConvertImpl_ValidYamlFile_ReturnsJson) { + Yaml2Json converter; + json result = converter.convertImpl(yamlFilePath.string()); + + ASSERT_EQ(result.size(), 4); + EXPECT_EQ(result["name"], "Alice"); + EXPECT_EQ(result["age"], "30"); + EXPECT_EQ(result["city"], "New York"); + EXPECT_EQ(result["details"]["hobbies"][0], "reading"); + EXPECT_EQ(result["details"]["hobbies"][1], "swimming"); + EXPECT_EQ(result["details"]["married"], "false"); +} + +TEST_F(Yaml2JsonTest, ConvertImpl_InvalidYamlFile_ThrowsException) { + Yaml2Json converter; + fs::path invalidYamlFilePath = fs::temp_directory_path() / "invalid.yaml"; + + EXPECT_THROW(converter.convertImpl(invalidYamlFilePath.string()), std::runtime_error); +} + +TEST_F(Yaml2JsonTest, ConvertImpl_EmptyYamlFile_ReturnsEmptyJson) { + Yaml2Json converter; + fs::path emptyYamlFilePath = fs::temp_directory_path() / "empty.yaml"; + std::ofstream emptyYamlFile(emptyYamlFilePath); + emptyYamlFile << R"()"; + emptyYamlFile.close(); + + json result = converter.convertImpl(emptyYamlFilePath.string()); + + ASSERT_TRUE(result.is_null()); + + // Clean up + fs::remove(emptyYamlFilePath); +} + +TEST_F(Yaml2JsonTest, ConvertImpl_NestedYamlFile_ReturnsNestedJson) { + Yaml2Json converter; + fs::path nestedYamlFilePath = fs::temp_directory_path() / "nested.yaml"; + std::ofstream nestedYamlFile(nestedYamlFilePath); + nestedYamlFile << R"( + person: + name: Alice + age: 30 + address: + city: New York + zip: 10001 + )"; + nestedYamlFile.close(); + + json result = converter.convertImpl(nestedYamlFilePath.string()); + + ASSERT_EQ(result.size(), 1); + EXPECT_EQ(result["person"]["name"], "Alice"); + EXPECT_EQ(result["person"]["age"], "30"); + EXPECT_EQ(result["person"]["address"]["city"], "New York"); + EXPECT_EQ(result["person"]["address"]["zip"], "10001"); + + // Clean up + fs::remove(nestedYamlFilePath); +} + +TEST_F(Yaml2JsonTest, SaveToFileImpl_ValidJsonData_SavesToFile) { + Yaml2Json converter; + json jsonData = { + {"name", "Alice"}, + {"age", 30}, + {"city", "New York"}, + {"details", {{"hobbies", {"reading", "swimming"}}, {"married", false}}} + }; + + fs::path jsonFilePath = fs::temp_directory_path() / "test.json"; + bool result = converter.saveToFileImpl(jsonData, jsonFilePath.string()); + + ASSERT_TRUE(result); + std::ifstream jsonFile(jsonFilePath); + ASSERT_TRUE(jsonFile.is_open()); + + json savedData; + jsonFile >> savedData; + jsonFile.close(); + + EXPECT_EQ(savedData, jsonData); + + // Clean up + fs::remove(jsonFilePath); +} + +TEST_F(Yaml2JsonTest, SaveToFileImpl_InvalidFilePath_ThrowsException) { + Yaml2Json converter; + json jsonData = { + {"name", "Alice"}, + {"age", 30}, + {"city", "New York"}, + {"details", {{"hobbies", {"reading", "swimming"}}, {"married", false}}} + }; + + fs::path invalidJsonFilePath = "/invalid/path/test.json"; + + EXPECT_THROW(converter.saveToFileImpl(jsonData, invalidJsonFilePath.string()), std::runtime_error); +} diff --git a/modules/lithium.cxxtools/tests/xml2json.cpp b/modules/lithium.cxxtools/tests/xml2json.cpp deleted file mode 100644 index 1d955357..00000000 --- a/modules/lithium.cxxtools/tests/xml2json.cpp +++ /dev/null @@ -1,70 +0,0 @@ -#include "xml2json.hpp" - -#include -#include -#include - -namespace fs = std::filesystem; -using namespace lithium::cxxtools; - -class XML2JSONTest : public ::testing::Test { -protected: - void SetUp() override { - std::ofstream xmlFile("test.xml"); - xmlFile << R"( - - Example Title - - Tom Preston-Werner - 1979-05-27T07:32:00Z - - - 192.168.1.1 - 8001,8001,8002 - 5000 - true - - - )"; - xmlFile.close(); - } - - void TearDown() override { - fs::remove("test.xml"); - fs::remove("test.json"); - } -}; - -TEST_F(XML2JSONTest, BasicConversion) { - EXPECT_TRUE(detail::convertXmlToJson("test.xml", "test.json")); - - std::ifstream jsonFile("test.json"); - ASSERT_TRUE(jsonFile.is_open()); - - std::string jsonContent((std::istreambuf_iterator(jsonFile)), - std::istreambuf_iterator()); - ASSERT_FALSE(jsonContent.empty()); -} - -TEST_F(XML2JSONTest, MissingXMLFile) { - EXPECT_FALSE(detail::convertXmlToJson("nonexistent.xml", "test.json")); -} - -TEST_F(XML2JSONTest, InvalidXMLContent) { - std::ofstream xmlFile("invalid.xml"); - xmlFile << R"( - - Example Title - - Tom Preston-Werner - 1979-05-27T07:32:00Z - - - 192.168.1.1 - )"; - xmlFile.close(); - - EXPECT_FALSE(detail::convertXmlToJson("invalid.xml", "test.json")); - - fs::remove("invalid.xml"); -} diff --git a/modules/lithium.image/CMakeLists.txt b/modules/lithium.image/CMakeLists.txt index a9ccbfe0..6159fbee 100644 --- a/modules/lithium.image/CMakeLists.txt +++ b/modules/lithium.image/CMakeLists.txt @@ -27,9 +27,6 @@ endif() # Sources set(${PROJECT_NAME}_SOURCES - _main.cpp - _component.cpp - src/base64.cpp src/convolve.cpp src/debayer.cpp @@ -40,6 +37,8 @@ set(${PROJECT_NAME}_SOURCES src/stack.cpp src/stretch.cpp src/imgutils.cpp + + component.cpp ) # Headers @@ -54,11 +53,6 @@ set(${PROJECT_NAME}_HEADERS include/imgutils.hpp ) -# Private Headers -set(${PROJECT_NAME}_PRIVATE_HEADERS - _component.hpp -) - set(${PROJECT_NAME}_LIBS atom-component atom-error @@ -77,7 +71,6 @@ target_sources(${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_HEADERS} PRIVATE ${${PROJECT_NAME}_SOURCES} - ${${PROJECT_NAME}_PRIVATE_HEADERS} ) add_library(${PROJECT_NAME} SHARED) @@ -98,3 +91,7 @@ set_target_properties(${PROJECT_NAME} PROPERTIES install(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) + +find_package(pybind11 REQUIRED) +pybind11_add_module(lithium.imagepy pymodule.cpp ${${PROJECT_NAME}_SOURCES}) +target_include_directories(lithium.imagepy PRIVATE ${OpenCV_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/include) diff --git a/modules/lithium.image/_component.cpp b/modules/lithium.image/_component.cpp deleted file mode 100644 index 1ba831b7..00000000 --- a/modules/lithium.image/_component.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/* - * _component.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-4-13 - -Description: Lithium Image Component for Atom Addon - -**************************************************/ - -#include "_component.hpp" - -#include "base64.hpp" -#include "convolve.hpp" -#include "debayer.hpp" -#include "fitsio.hpp" -#include "hfr.hpp" -#include "hist.hpp" -#include "imgutils.hpp" -#include "stack.hpp" -#include "stretch.hpp" - -#include "atom/log/loguru.hpp" - -ImageComponent::ImageComponent(const std::string& name) : Component(name) { - LOG_F(INFO, "Lithium Image Component Constructed"); - - def("base64_encode", &base64_encode, "utils", "Encode a string to base64"); - def("base64_decode", &base64_decode, "utils", - "Decode a string from base64"); - - def("cv_convolve", &convolve, "utils", "Convolve a cv::Mat with a kernel"); - def("cv_dft_convolve", &dftConvolve, "utils", - "Convolve a cv::Mat with a kernel using DFT"); - def("cv_deconvolve", &deconvolve, "utils", - "Deconvolve a cv::Mat with a kernel"); - - def("cv_debayer", &Debayer, "utils", "Debayer a cv::Mat"); - - def("check_fits_status", &checkFitsStatus, "utils", "Check FITS status"); - def("read_fits_to_mat", &readFitsToMat, "utils", - "Read a FITS file to a cv::Mat"); - def("write_mat_to_fits", &writeMatToFits, "utils", - "Write a cv::Mat to a FITS file"); - def("fits_to_base64", &fitsToBase64, "utils", - "Convert a FITS file to base64"); - def("mat_to_base64", &matToBase64, "utils", "Convert a cv::Mat to base64"); - - def("calc_hfr", &calcHfr, "utils", "Calculate HFR of a cv::Mat"); - def("detact_hfr", &StarDetectAndHfr, "utils", - "Detect stars and calculate HFR of a cv::Mat"); - - def("calc_hist", &CalHist, "utils", "Calculate histogram of a cv::Mat"); - def("calc_gray_hist", &CalGrayHist, "utils", - "Calculate gray histogram of a cv::Mat"); - - def("load_images", &loadImages, "utils", "Load images from a folder"); - - def("stack_image", &stackImages, "utils", "Stack images from a folder"); - - def("stretch_wb", &Stretch_WhiteBalance, "utils", - "Stretch white balance of a cv::Mat"); - def("stretch_gray", &StretchGray, "utils", "Stretch gray of a cv::Mat"); -} - -ImageComponent::~ImageComponent() { - LOG_F(INFO, "Lithium Image Component Destructed"); -} - -bool ImageComponent::initialize() { - LOG_F(INFO, "Lithium Image Component Initialized"); - return true; -} - -bool ImageComponent::destroy() { - LOG_F(INFO, "Lithium Image Component Destroyed"); - return true; -} diff --git a/modules/lithium.image/_component.hpp b/modules/lithium.image/_component.hpp deleted file mode 100644 index 8635ca5b..00000000 --- a/modules/lithium.image/_component.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - * _component.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-4-13 - -Description: Component of Atom-System - -**************************************************/ - -#ifndef LITHIUM_IMAGE_COMPONENT_HPP -#define LITHIUM_IMAGE_COMPONENT_HPP - -#include "atom/components/component.hpp" - -class ImageComponent : public Component { -public: - explicit ImageComponent(const std::string &name); - ~ImageComponent(); - - // ------------------------------------------------------------------- - // Common methods - // ------------------------------------------------------------------- - - bool initialize() override; - bool destroy() override; -}; - -#endif diff --git a/modules/lithium.image/_main.cpp b/modules/lithium.image/_main.cpp deleted file mode 100644 index af8c649f..00000000 --- a/modules/lithium.image/_main.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/* - * _main.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-4-13 - -Description: Main Entry - -**************************************************/ - -#include "_component.hpp" - -#include "atom/type/json.hpp" -using json = nlohmann::json; - -extern "C" { -std::shared_ptr getInstance([[maybe_unused]] const json ¶ms) { - if (params.contains("name") && params["name"].is_string()) { - return std::make_shared( - params["name"].get()); - } - return std::make_shared("lithium.image"); -} -} diff --git a/modules/lithium.image/component.cpp b/modules/lithium.image/component.cpp new file mode 100644 index 00000000..f75456af --- /dev/null +++ b/modules/lithium.image/component.cpp @@ -0,0 +1,108 @@ +/* + * _component.cpp + * + * Copyright (C) 2023-2024 Max Qian + */ + +/************************************************* + +Date: 2024-4-13 + +Description: Lithium Image Component for Atom Addon + +**************************************************/ + +#include "atom/components/component.hpp" +#include "atom/components/registry.hpp" + +#include + +#include "base64.hpp" +#include "binning.hpp" +#include "bmp.hpp" +#include "convolve.hpp" +#include "debayer.hpp" +#include "fitsio.hpp" +#include "hfr.hpp" +#include "hist.hpp" +#include "imgio.hpp" +#include "imgutils.hpp" +#include "stack.hpp" +#include "stretch.hpp" + +#include "atom/function/overload.hpp" +#include "atom/log/loguru.hpp" + +ATOM_MODULE(lithium_image, [](Component& com) { + LOG_F(INFO, "Lithium Image Component Constructed"); + + com.def("base64_encode", &base64Encode, "utils", + "Encode a string to base64"); + com.def("base64_decode", &base64Decode, "utils", + "Decode a string from base64"); + + com.def("merge_image_based_on_size", &mergeImageBasedOnSize, "utils", + "Merge image based on size"); + com.def("process_mat_with_bin_avg", &processMatWithBinAvg, "utils", + "Process a cv::Mat with bin average"); + com.def("process_with_average", &processWithAverage, "utils", + "Process with average"); + com.def("process_with_binning", &processWithBinning, "utils", + "Process with binning"); + com.def("calculate_average", &calculateAverage, "utils", + "Calculate average"); + + com.def("little_to_native", + atom::meta::overload_cast(&littleToNative), "utils", + "Little endian to native"); + com.def("little_to_native", + atom::meta::overload_cast(&littleToNative), "utils", + "Little endian to native"); + + com.def("read_endian_int", &readEndianInt, "utils", "Read endian int"); + com.def("read_endian_short", &readEndianShort, "utils", + "Read endian short"); + + com.def("load_bmp_image", &loadBMPImage, "utils", "Load BMP image"); + com.def("save_gray_image", &saveGrayImage, "utils", "Save gray image"); + + com.def("cv_convolve", &convolve, "utils", + "Convolve a cv::Mat with a kernel"); + com.def("cv_dft_convolve", &dftConvolve, "utils", + "Convolve a cv::Mat with a kernel using DFT"); + com.def("cv_deconvolve", &deconvolve, "utils", + "Deconvolve a cv::Mat with a kernel"); + + com.def("cv_debayer", &debayer, "utils", "Debayer a cv::Mat"); + + com.def("write_mat_to_fits", &writeMatToFits, "utils", + "Write a cv::Mat to a FITS file"); + com.def("fits_to_base64", &fitsToBase64, "utils", + "Convert a FITS file to base64"); + com.def("mat_to_base64", &matToBase64, "utils", + "Convert a cv::Mat to base64"); + + com.def("calc_hfr", &calcHfr, "utils", "Calculate HFR of a cv::Mat"); + com.def("detact_hfr", &starDetectAndHfr, "utils", + "Detect stars and calculate HFR of a cv::Mat"); + + com.def("calc_hist", &calculateHist, "utils", + "Calculate histogram of a cv::Mat"); + com.def("calc_gray_hist", &calculateGrayHist, "utils", + "Calculate gray histogram of a cv::Mat"); + com.def("calc_cdf", &calculateCDF, "utils", "Calculate CDF of a histogram"); + com.def("equalize_hist", &equalizeHistogram, "utils", + "Equalize histogram of a cv::Mat"); + com.def("draw_hist", &drawHistogram, "utils", + "Draw histogram of a cv::Mat"); + + com.def("load_images", &loadImages, "utils", "Load images from a folder"); + + com.def("stack_image", &stackImages, "utils", "Stack images from a folder"); + + com.def("stretch_wb", &stretchWhiteBalance, "utils", + "Stretch white balance of a cv::Mat"); + // TODO: How th handle reference argument? + // com.def("stretch_gray", &StretchGray, "utils", "Stretch gray of a + // cv::Mat"); +}); diff --git a/modules/lithium.image/include/base64.hpp b/modules/lithium.image/include/base64.hpp index 44115101..f6eda696 100644 --- a/modules/lithium.image/include/base64.hpp +++ b/modules/lithium.image/include/base64.hpp @@ -3,7 +3,9 @@ #include -std::string base64_encode(unsigned char const* bytes_to_encode, - unsigned int in_len); -std::string base64_decode(std::string const& encoded_string); +auto base64Encode(unsigned char const* bytes_to_encode, + unsigned int input_length) -> std::string; + +auto base64Decode(std::string const& encoded_string) -> std::string; + #endif diff --git a/modules/lithium.image/include/binning.hpp b/modules/lithium.image/include/binning.hpp new file mode 100644 index 00000000..d2f8ba0a --- /dev/null +++ b/modules/lithium.image/include/binning.hpp @@ -0,0 +1,30 @@ +#ifndef BINNING_H +#define BINNING_H + +#include +#include +#include + +struct CamBin { + uint32_t camxbin{1}; + uint32_t camybin{1}; +}; + +CamBin mergeImageBasedOnSize(const cv::Mat& image); + +cv::Mat processMatWithBinAvg(const cv::Mat& image, uint32_t camxbin, uint32_t camybin, bool isColor = false, bool isAVG = true); + +template +void parallel_process_bin(std::span srcData, cv::Mat& result, uint32_t width, uint32_t height, uint32_t camxbin, uint32_t camybin, uint32_t binArea); + +template +void process_mono_bin(std::span srcData, cv::Mat& result, uint32_t srcStride, uint32_t camxbin, uint32_t camybin); + +template +T calculateAverage(std::span values, size_t binSize); + +cv::Mat processWithAverage(std::span srcData, uint32_t width, uint32_t height, uint32_t depth, uint32_t newWidth, uint32_t newHeight, uint32_t camxbin, uint32_t camybin); + +cv::Mat processWithBinning(std::span srcData, uint32_t width, uint32_t height, uint32_t channels, uint32_t depth, uint32_t newWidth, uint32_t newHeight, uint32_t camxbin, uint32_t camybin, bool isColor); + +#endif // BINNING_H \ No newline at end of file diff --git a/modules/lithium.image/include/bmp.hpp b/modules/lithium.image/include/bmp.hpp new file mode 100644 index 00000000..6c2edc53 --- /dev/null +++ b/modules/lithium.image/include/bmp.hpp @@ -0,0 +1,34 @@ +#ifndef BMP_H +#define BMP_H + +#include +#include +#include +#include +#include + +union ByteUnion { + uint32_t value; + std::array bytes; +}; + +uint32_t littleToNative(uint32_t little); +uint16_t littleToNative(uint16_t little); + +struct alignas(64) Image { + std::vector data; + std::vector greyData; + uint32_t sizeX, sizeY; + + Image(); +}; + +uint32_t readEndianInt(std::ifstream& file); +uint16_t readEndianShort(std::ifstream& file); + +bool loadBMPImage(const std::string& filename, Image& image); +bool saveGrayImage(const std::string& filename, const Image& image); + +int main(int argc, char* argv[]); + +#endif // BMP_H \ No newline at end of file diff --git a/modules/lithium.image/include/centroid.hpp b/modules/lithium.image/include/centroid.hpp new file mode 100644 index 00000000..c5e39274 --- /dev/null +++ b/modules/lithium.image/include/centroid.hpp @@ -0,0 +1,36 @@ +#ifndef LITHIUM_IMAGE_CENTROID_HPP +#define LITHIUM_IMAGE_CENTROID_HPP + +#include +#include + +#include "atom/macro.hpp" + +constexpr float DEFAULT_EPSILON = 1e-6F; +constexpr int MAX_ITERATIONS_DEFAULT = 10; + +class StarCentroid { +public: + // 结构体32字节对齐 + struct CentroidResult { + cv::Point2f weightedCenter; + cv::Point2f subPixelCenter; + cv::Point2i roundedCenter; + } ATOM_ALIGNAS(32); + + static auto readFits(const std::string& filename) -> cv::Mat; + + static auto calcIntensityWeightedCenter(const cv::Mat& image) -> cv::Point2f ; + + static auto calcSubPixelCenter(const cv::Mat& roi, + cv::Point2f&& initCenter, + float epsilon = DEFAULT_EPSILON, + int maxIterations = MAX_ITERATIONS_DEFAULT) -> cv::Point2f; + + static auto findCentroid(const cv::Mat& image) -> CentroidResult; + + static void visualizeResults(const cv::Mat& image, + const CentroidResult& result); +}; + +#endif // LITHIUM_IMAGE_CENTROID_HPP \ No newline at end of file diff --git a/modules/lithium.image/include/convolve.hpp b/modules/lithium.image/include/convolve.hpp index d95d2c2b..ef835eca 100644 --- a/modules/lithium.image/include/convolve.hpp +++ b/modules/lithium.image/include/convolve.hpp @@ -6,5 +6,7 @@ void convolve(const cv::Mat& input, const cv::Mat& kernel, cv::Mat& output); void dftConvolve(const cv::Mat& input, const cv::Mat& kernel, cv::Mat& output); void deconvolve(const cv::Mat& input, const cv::Mat& kernel, cv::Mat& output); +void separableConvolve(const cv::Mat& input, const cv::Mat& kernelX, + const cv::Mat& kernelY, cv::Mat& output); #endif diff --git a/modules/lithium.image/include/debayer.hpp b/modules/lithium.image/include/debayer.hpp index fb9ce750..530a8442 100644 --- a/modules/lithium.image/include/debayer.hpp +++ b/modules/lithium.image/include/debayer.hpp @@ -1,14 +1,49 @@ -#ifndef LITHIUM_IMAGE_DEBAYER_HPP -#define LITHIUM_IMAGE_DEBAYER_HPP +#ifndef DEBAYER_HPP +#define DEBAYER_HPP #include #include +#include #include -#include -#include +#include "atom/macro.hpp" + +/** + * @brief Struct to hold the result of the Debayering process. + */ +struct DebayerResult { + cv::Mat debayeredImage; ///< The debayered image. + bool continueProcessing; ///< Flag indicating whether to continue + ///< processing. + std::map header; ///< FITS header information. +} ATOM_ALIGNAS(128); + +/** + * @brief Reads a FITS file and converts it to a cv::Mat. + * + * This is a placeholder function. For actual FITS file reading, consider using + * a library like CFITSIO. + * + * @param filepath The path to the FITS file. + * @param header A map to store FITS header information. + * @return cv::Mat The image data extracted from the FITS file. + */ +auto readFits(const std::filesystem::path& filepath, + std::map& header) -> cv::Mat; -std::tuple> Debayer( - const std::filesystem::path& filepath); +/** + * @brief Implements the Debayering process. + * + * This function reads an image file, determines if it's a FITS file or a + * regular image, applies the appropriate Debayering technique based on the + * Bayer pattern, and returns the processed image along with processing status + * and header information. + * + * @param filepath The path to the image file. + * @return DebayerResult A struct containing the debayered image, a boolean + * indicating whether to continue processing, and a map containing header + * information. + */ +auto debayer(const std::filesystem::path& filepath) -> DebayerResult; -#endif +#endif // DEBAYER_HPP \ No newline at end of file diff --git a/modules/lithium.image/include/fitsio.hpp b/modules/lithium.image/include/fitsio.hpp index bfc5f852..47fc3713 100644 --- a/modules/lithium.image/include/fitsio.hpp +++ b/modules/lithium.image/include/fitsio.hpp @@ -1,20 +1,71 @@ -#ifndef LITHIUM_IMAGE_FITSIO_HPP -#define LITHIUM_IMAGE_FITSIO_HPP +#ifndef FITSIO_HPP +#define FITSIO_HPP #include +#include #include +#include #include -void checkFitsStatus(int status, const std::string& errorMessage); -auto readFitsToMat(const std::filesystem::path& filepath) -> cv::Mat; +/** + * @brief Struct to hold the result of reading a FITS file. + */ +struct FitsResult { + cv::Mat image; ///< The image data extracted from the FITS file. + std::map header; ///< FITS header information. +}; + +/** + * @brief Reads a FITS file and converts it to a cv::Mat. + * + * 使用 CFITSIO 库读取 FITS 文件并转换为 OpenCV 的 cv::Mat 格式。 + * + * @param filepath FITS 文件的路径。 + * @return FitsResult 包含图像数据和 FITS 头信息的结构体。 + * @throws std::runtime_error 如果读取过程中发生错误。 + */ +FitsResult readFits(const std::filesystem::path& filepath); + +/** + * @brief 将 cv::Mat 图像数据写入 FITS 文件。 + * + * 使用 CFITSIO 库将 OpenCV 的 cv::Mat 图像数据写入 FITS 文件。 + * + * @param image 要写入的图像数据。 + * @param filepath 目标 FITS 文件的路径。 + * @throws std::runtime_error 如果写入过程中发生错误。 + */ void writeMatToFits(const cv::Mat& image, const std::filesystem::path& filepath); -auto matToBase64(const cv::Mat& image, - const std::string& imgFormat) -> std::string; -auto fitsToBase64(const std::filesystem::path& filepath) -> std::string; -auto readFitsHeadForDevName(const std::string& filename) - -> std::optional; -auto readFits(const std::string& fileName, cv::Mat& image) -> int; -auto readFits_(const std::string& fileName, cv::Mat& image) -> int; - -#endif + +/** + * @brief 将 cv::Mat 图像转换为 Base64 字符串。 + * + * @param image 要转换的图像数据。 + * @param imgFormat 图像编码格式(如 ".png", ".jpg")。 + * @return std::string Base64 编码的字符串。 + * @throws std::runtime_error 如果编码过程中发生错误。 + */ +std::string matToBase64(const cv::Mat& image, const std::string& imgFormat); + +/** + * @brief 将 FITS 文件转换为 Base64 字符串。 + * + * @param filepath FITS 文件的路径。 + * @return std::string Base64 编码的字符串。 + * @throws std::runtime_error 如果转换过程中发生错误。 + */ +std::string fitsToBase64(const std::filesystem::path& filepath); + +/** + * @brief 从 FITS 文件读取设备名称。 + * + * @param filepath FITS 文件的路径。 + * @return std::optional 如果存在设备名称则返回,否则返回 + * std::nullopt。 + * @throws std::runtime_error 如果读取过程中发生错误。 + */ +std::optional readFitsDeviceName( + const std::filesystem::path& filepath); + +#endif // FITSIO_HPP \ No newline at end of file diff --git a/modules/lithium.image/include/fitskeyword.hpp b/modules/lithium.image/include/fitskeyword.hpp index 70444b89..67e2121b 100644 --- a/modules/lithium.image/include/fitskeyword.hpp +++ b/modules/lithium.image/include/fitskeyword.hpp @@ -1,23 +1,16 @@ -/* - * fitskeyword.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-3-29 - -Description: FITS Keyword - -**************************************************/ - #ifndef LITHIUM_IMAGE_FITSKEYWORD_HPP #define LITHIUM_IMAGE_FITSKEYWORD_HPP #include -#include +#include #include +#include +#include + +// Concepts for type constraints +template +concept FitsValueType = std::is_same_v || + std::is_same_v || std::is_same_v; class FITSRecord { public: @@ -26,38 +19,93 @@ class FITSRecord { COMMENT, STRING = TSTRING, LONGLONG = TLONGLONG, - // ULONGLONG = TULONGLONG, DOUBLE = TDOUBLE }; - FITSRecord(); - FITSRecord(const char *key, const char *value, - const char *comment = nullptr); - FITSRecord(const char *key, int64_t value, const char *comment = nullptr); - // FITSRecord(const char *key, uint64_t value, const char *comment = - // nullptr); - FITSRecord(const char *key, double value, int decimal = 6, - const char *comment = nullptr); - explicit FITSRecord(const char *comment); - Type type() const; - const std::string &key() const; - const std::string &valueString() const; - int64_t valueInt() const; - // uint64_t valueUInt() const; - double valueDouble() const; - const std::string &comment() const; - int decimal() const; + + // Constructors + constexpr FITSRecord() noexcept = default; + + FITSRecord(std::string_view key, std::string_view value, + std::string_view comment = {}) noexcept + : m_key(key), + m_value(std::string(value)), + m_comment(comment), + m_type(Type::STRING) {} + + FITSRecord(std::string_view key, int64_t value, + std::string_view comment = {}) noexcept + : m_key(key), + m_value(value), + m_comment(comment), + m_type(Type::LONGLONG) {} + + FITSRecord(std::string_view key, double value, int decimal = 6, + std::string_view comment = {}) noexcept + : m_key(key), + m_value(value), + m_comment(comment), + m_type(Type::DOUBLE), + m_decimal(decimal) {} + + explicit FITSRecord(std::string_view comment) noexcept + : m_comment(comment), m_type(Type::COMMENT) {} + + // Accessors + [[nodiscard]] constexpr Type type() const noexcept { return m_type; } + [[nodiscard]] const std::string& key() const& noexcept { return m_key; } + [[nodiscard]] const std::string& comment() const& noexcept { + return m_comment; + } + [[nodiscard]] constexpr int decimal() const noexcept { return m_decimal; } + + // Value accessors with type safety + [[nodiscard]] std::string valueString() const { + if (const auto* str = std::get_if(&m_value)) { + return *str; + } + throw std::runtime_error("Value is not a string"); + } + + [[nodiscard]] int64_t valueInt() const { + if (const auto* val = std::get_if(&m_value)) { + return *val; + } + throw std::runtime_error("Value is not an integer"); + } + + [[nodiscard]] double valueDouble() const { + if (const auto* val = std::get_if(&m_value)) { + return *val; + } + throw std::runtime_error("Value is not a double"); + } + + // Generic value setter with type constraints + template + void setValue(const T& value) { + m_value = value; + if constexpr (std::is_same_v) { + m_type = Type::STRING; + } else if constexpr (std::is_same_v) { + m_type = Type::LONGLONG; + } else if constexpr (std::is_same_v) { + m_type = Type::DOUBLE; + } + } private: - union { - int64_t val_int64; - uint64_t val_uint64; - double val_double; - }; - std::string val_str; std::string m_key; - Type m_type = Type::VOID; + std::variant m_value; std::string m_comment; - int m_decimal = 6; + Type m_type{Type::VOID}; + int m_decimal{6}; }; -#endif +inline namespace fits_literals { +[[nodiscard]] inline auto operator""_fits_comment(const char* str, + size_t) -> FITSRecord { + return FITSRecord(str); +} +} // namespace fits_literals + +#endif \ No newline at end of file diff --git a/modules/lithium.image/include/fwhm.hpp b/modules/lithium.image/include/fwhm.hpp new file mode 100644 index 00000000..2b5ff761 --- /dev/null +++ b/modules/lithium.image/include/fwhm.hpp @@ -0,0 +1,47 @@ +#pragma once + +#include + +#include +#include + +struct DataPoint { + double x; + double y; + DataPoint(double x = 0, double y = 0) : x(x), y(y) {} +}; + +struct GaussianParams { + double base; + double peak; + double center; + double width; +}; + +class GaussianFit { +public: + static std::optional fit( + const std::vector& points, double eps = 1e-6, + int maxIter = 100); + + static double evaluate(const GaussianParams& params, double x); + + static void visualize(const std::vector& points, + const GaussianParams& params); + +private: + static void computeResiduals(const cv::Mat& params, + const std::vector& points, + cv::Mat& err); + + static void computeJacobian(const cv::Mat& params, + const std::vector& points, + cv::Mat& jac); + + static std::pair getMinMax( + const std::vector& points); + + static double getMeanX(const std::vector& points); + + static double getEstimatedWidth(const std::vector& points); +}; \ No newline at end of file diff --git a/modules/lithium.image/include/hfr.hpp b/modules/lithium.image/include/hfr.hpp index 634cf752..be55419f 100644 --- a/modules/lithium.image/include/hfr.hpp +++ b/modules/lithium.image/include/hfr.hpp @@ -1,16 +1,29 @@ -#ifndef LITHIUM_IMAGE_HFR_HPP -#define LITHIUM_IMAGE_HFR_HPP +#ifndef HFR_HPP +#define HFR_HPP #include - +#include +#include #include "atom/type/json.hpp" -using json = nlohmann::json; -double calcHfr(const cv::Mat& inImage, float radius); +using json = nlohmann::json; +using namespace cv; +using namespace std; -std::tuple StarDetectAndHfr( - const cv::Mat& img, bool if_removehotpixel, bool if_noiseremoval, - bool do_star_mark = false, bool down_sample_mean_std = true, - cv::Mat mark_img = cv::Mat()); +auto calcHfr(const cv::Mat& inImage, float radius) -> double; +auto caldim(const cv::Mat& img) -> bool; +auto preprocessImage(const Mat& img, Mat& grayimg, Mat& rgbImg, + Mat& mark_img) -> void; +auto removeNoise(Mat& map, bool if_removehotpixel, + bool if_noiseremoval) -> void; +auto calculateMeanAndStd(const Mat& map, bool down_sample_mean_std, + double& medianVal, double& stdDev) -> void; +auto processContours(const Mat& grayimg, const Mat& rgbImg, Mat& mark_img, + const vector>& contours, bool do_star_mark) + -> tuple, vector>; +auto starDetectAndHfr(const Mat& img, bool if_removehotpixel, + bool if_noiseremoval, bool do_star_mark, + bool down_sample_mean_std, + Mat mark_img) -> tuple; -#endif +#endif // HFR_HPP \ No newline at end of file diff --git a/modules/lithium.image/include/hist.hpp b/modules/lithium.image/include/hist.hpp index abe3eac4..1654d72e 100644 --- a/modules/lithium.image/include/hist.hpp +++ b/modules/lithium.image/include/hist.hpp @@ -1,10 +1,23 @@ -#ifndef LITHIUM_IMAGE_HIST_HPP -#define LITHIUM_IMAGE_HIST_HPP +#ifndef HIST_HPP +#define HIST_HPP #include #include -std::vector CalHist(const cv::Mat& img); -cv::Mat CalGrayHist(const cv::Mat& img); +constexpr int DEFAULT_HIST_SIZE = 65535; +constexpr int DEFAULT_WIDTH = 512; +constexpr int DEFAULT_HEIGHT = 400; +constexpr int DEFAULT_LINE_TYPE = 8; +constexpr int DEFAULT_COLOR_VALUE = 255; -#endif +auto calculateHist(const cv::Mat& img, int histSize = DEFAULT_HIST_SIZE, + bool normalize = false) -> std::vector; +auto calculateGrayHist(const cv::Mat& img, int histSize = DEFAULT_HIST_SIZE, + bool normalize = false) -> cv::Mat; +auto calculateCDF(const cv::Mat& hist) -> cv::Mat; +auto equalizeHistogram(const cv::Mat& img) -> cv::Mat; +auto drawHistogram(const cv::Mat& hist, int histSize = DEFAULT_HIST_SIZE, + int width = DEFAULT_WIDTH, + int height = DEFAULT_HEIGHT) -> cv::Mat; + +#endif // HIST_HPP \ No newline at end of file diff --git a/modules/lithium.image/include/imgio.hpp b/modules/lithium.image/include/imgio.hpp new file mode 100644 index 00000000..065b118c --- /dev/null +++ b/modules/lithium.image/include/imgio.hpp @@ -0,0 +1,32 @@ +#ifndef LITHIUM_MODULE_IMAGE_IMGIO_HPP +#define LITHIUM_MODULE_IMAGE_IMGIO_HPP + +#include +#include + +namespace cv { +class Mat; +} +// 加载单张图像 +auto loadImage(const std::string& filename, int flags = 1) -> cv::Mat; + +// 从文件夹中读取所有图像 +auto loadImages(const std::string& folder, + const std::vector& filenames = {}, + int flags = 1) -> std::vector>; + +// 保存图像到文件 +auto saveImage(const std::string& filename, const cv::Mat& image) -> bool; + +auto saveMatTo8BitJpg( + const cv::Mat& image, + const std::string& output_path = "/dev/shm/MatTo8BitJPG.jpg") -> bool; + +auto saveMatTo16BitPng( + const cv::Mat& image, + const std::string& output_path = "/dev/shm/MatTo16BitPNG.png") -> bool; + +auto saveMatToFits(const cv::Mat& image, const std::string& output_path = + "/dev/shm/MatToFITS.fits") -> bool; + +#endif \ No newline at end of file diff --git a/modules/lithium.image/include/imgutils.hpp b/modules/lithium.image/include/imgutils.hpp index 0b050c47..1c174796 100644 --- a/modules/lithium.image/include/imgutils.hpp +++ b/modules/lithium.image/include/imgutils.hpp @@ -2,25 +2,30 @@ #define LITHIUM_IMAGE_UTILS_HPP #include -#include #include #include -std::vector loadImages(const std::string& folder, - const std::vector& filenames); -bool insideCircle(int x, int y, int centerX, int centerY, float radius); -bool checkElongated(int width, int height); -int checkWhitePixel(const cv::Mat& rect_contour, int x, int y); -int EightSymmetryCircleCheck(const cv::Mat& rect_contour, - const cv::Point& center, int x_p, int y_p); -int FourSymmetryCircleCheck(const cv::Mat& rect_contour, - const cv::Point& center, float radius); -std::tuple, std::vector> define_narrow_radius( - int min_area, double max_area, double area, double scale); -bool BresenHamCheckCircle(const cv::Mat& rect_contour, float radius, - float pixelratio, bool if_debug = false); -double Cal_Avgdev(double mid, const cv::Mat& norm_img); -cv::Mat MTF(double m, const cv::Mat& img); -double CalScale(const cv::Mat& img, int resize_size = 1552); -double Cal_Middev(double mid, const cv::Mat& img); -#endif + +auto insideCircle(int xCoord, int yCoord, int centerX, int centerY, + float radius) -> bool; +auto checkElongated(int width, int height) -> bool; +auto checkWhitePixel(const cv::Mat& rect_contour, int x_coord, + int y_coord) -> int; +auto checkEightSymmetryCircle(const cv::Mat& rect_contour, + const cv::Point& center, int x_p, int y_p) -> int; +auto checkFourSymmetryCircle(const cv::Mat& rect_contour, + const cv::Point& center, float radius) -> int; +auto defineNarrowRadius(int min_area, double max_area, double area, + double scale) + -> std::tuple, std::vector>; +auto checkBresenhamCircle(const cv::Mat& rect_contour, float radius, + float pixel_ratio, bool if_debug = false) -> bool; +auto calculateAverageDeviation(double mid, const cv::Mat& norm_img) -> double; +auto calculateMTF(double magnitude, const cv::Mat& img) -> cv::Mat; +auto calculateScale(const cv::Mat& img, int resize_size = 1552) -> double; +auto calculateMedianDeviation(double mid, const cv::Mat& img) -> double; +auto computeParamsOneChannel(const cv::Mat& img) + -> std::tuple; +auto autoWhiteBalance(const cv::Mat& img) -> cv::Mat; + +#endif // LITHIUM_IMAGE_UTILS_HPP \ No newline at end of file diff --git a/modules/lithium.image/include/ndarray_converter.hpp b/modules/lithium.image/include/ndarray_converter.hpp new file mode 100644 index 00000000..46e3916f --- /dev/null +++ b/modules/lithium.image/include/ndarray_converter.hpp @@ -0,0 +1,50 @@ +// NDArrayConverter.hpp +#ifndef NDARRAY_CONVERTER_HPP +#define NDARRAY_CONVERTER_HPP + +#include +#include +#include +#include +#include +#include + +class NDArrayConverter { +public: + // 初始化Numpy + static bool init_numpy(); + + // 转换PyObject到cv::Mat + static bool toMat(PyObject* o, cv::Mat& m); + + // 转换cv::Mat到PyObject + static PyObject* toNDArray(const cv::Mat& mat); + + // 额外功能:转换std::vector到PyObject列表 + static PyObject* toNDArrayList(const std::vector& mats); + + // 额外功能:从PyObject列表转换到std::vector + static bool toMatList(PyObject* o, std::vector& mats); +}; + +namespace pybind11 { +namespace detail { + +template <> +struct type_caster { +public: + PYBIND11_TYPE_CASTER(cv::Mat, _("numpy.ndarray")); + + bool load(handle src, bool /* convert */) { + return NDArrayConverter::toMat(src.ptr(), value); + } + + static handle cast(const cv::Mat& m, return_value_policy, handle defval) { + return {NDArrayConverter::toNDArray(m)}; + } +}; + +} // namespace detail +} // namespace pybind11 + +#endif // NDARRAY_CONVERTER_HPP \ No newline at end of file diff --git a/modules/lithium.image/include/solver.hpp b/modules/lithium.image/include/solver.hpp deleted file mode 100644 index d2b2cc25..00000000 --- a/modules/lithium.image/include/solver.hpp +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef LITHIUM_IAMGE_SOLVER_HPP -#define LITHIUM_IAMGE_SOLVER_HPP - -#include -#include - -#include "atom/macro.hpp" - -struct LoadFitsResult { - bool success{}; - FITSImage::Statistic imageStats{}; - uint8_t* imageBuffer{}; -} ATOM_ALIGNAS(128); - -#endif diff --git a/modules/lithium.image/include/stack.hpp b/modules/lithium.image/include/stack.hpp index de7ae391..7af73be5 100644 --- a/modules/lithium.image/include/stack.hpp +++ b/modules/lithium.image/include/stack.hpp @@ -14,7 +14,7 @@ enum StackMode { LIGHTEN }; -cv::Mat stackImages(const std::vector& images, StackMode mode, - float sigma = 2.0) ; +auto stackImages(const std::vector& images, StackMode mode, + float sigma, const std::vector& weights) -> cv::Mat; #endif diff --git a/modules/lithium.image/include/stretch.hpp b/modules/lithium.image/include/stretch.hpp index aee456fa..afcbbdb5 100644 --- a/modules/lithium.image/include/stretch.hpp +++ b/modules/lithium.image/include/stretch.hpp @@ -1,10 +1,134 @@ -#ifndef LITHIUM_IMAGE_STRETCH_HPP -#define LITHIUM_IMAGE_STRETCH_HPP +#ifndef STRETCH_HPP +#define STRETCH_HPP #include #include -cv::Mat Stretch_WhiteBalance(const std::vector& hists, - const std::vector& bgr_planes); -cv::Mat StretchGray(const cv::Mat& hist, cv::Mat& plane); -#endif +/** + * @file stretch.hpp + * @brief Image stretching and enhancement operations. + * @details Provides various functions for image contrast stretching and + * enhancement. + */ + +/** + * @brief Default minimum parameter for histogram stretching + */ +constexpr double DEFAULT_MIN_PARA = 0.0001; + +/** + * @brief Default maximum parameter for histogram stretching + */ +constexpr double DEFAULT_MAX_PARA = 0.0001; + +/** + * @brief Default black clip factor for gray stretching + */ +constexpr double DEFAULT_BLACK_CLIP = -1.25; + +/** + * @brief Default target background value + */ +constexpr double DEFAULT_TARGET_BKG = 0.1; + +/** + * @brief Small value to avoid division by zero + */ +constexpr double EPSILON = 1e-10; + +/** + * @brief Default kernel size for median blur operation + */ +constexpr int DEFAULT_MEDIAN_BLUR_SIZE = 3; + +/** + * @brief Parameters for image stretching operation + */ +struct StretchParams { + double shadows; /**< Shadow level (0.0 to 1.0) */ + double tones; /**< Midtone level (0.0 to 1.0) */ + double highlights; /**< Highlight level (0.0 to 1.0) */ +}; + +/** + * @brief Performs white balance stretching on an image + * @param hists Vector of histograms for each color channel + * @param bgrPlanes Vector of BGR color planes + * @return cv::Mat The white-balanced image + * @throws std::invalid_argument if input vectors don't contain exactly 3 + * channels + */ +auto stretchWhiteBalance(const std::vector& hists, + const std::vector& bgrPlanes) -> cv::Mat; + +/** + * @brief Stretches a grayscale image using its histogram + * @param hist Histogram of the grayscale image + * @param plane Input grayscale image plane + * @return cv::Mat The stretched grayscale image + * @throws std::invalid_argument if input histogram or plane is empty + */ +auto stretchGray(const cv::Mat& hist, cv::Mat& plane) -> cv::Mat; + +/** + * @brief Performs gray level stretching with configurable parameters + * @param img Input grayscale image + * @param blackClip Black clipping factor (default: DEFAULT_BLACK_CLIP) + * @param targetBkg Target background value (default: DEFAULT_TARGET_BKG) + * @return cv::Mat The stretched grayscale image + */ +auto grayStretch(const cv::Mat& img, double blackClip = DEFAULT_BLACK_CLIP, + double targetBkg = DEFAULT_TARGET_BKG) -> cv::Mat; + +/** + * @brief Stretches a single channel using provided parameters + * @param normalizedImg Normalized input image (0.0 to 1.0) + * @param params Stretching parameters + * @return cv::Mat The stretched channel + */ +auto stretchOneChannel(const cv::Mat& normalizedImg, + const StretchParams& params) -> cv::Mat; + +/** + * @brief Stretches all three channels of an image independently + * @param img Input BGR image + * @param shadows Shadow levels for each channel + * @param midtones Midtone levels for each channel + * @param highlights Highlight levels for each channel + * @param inputRange Input image range (e.g., 255 for 8-bit) + * @param doJpg Whether to output 8-bit (true) or 16-bit (false) + * @return cv::Mat The stretched color image + * @throws std::invalid_argument if input vectors don't match channel count + */ +auto stretchThreeChannels(const cv::Mat& img, + const std::vector& shadows, + const std::vector& midtones, + const std::vector& highlights, int inputRange, + bool doJpg = false) -> cv::Mat; + +/** + * @brief Calculates optimal stretch parameters for an image + * @param img Input image + * @return std::tuple Tuple of shadows, midtones, and + * highlights + */ +auto calculateStretchParameters(const cv::Mat& img) + -> std::tuple; + +/** + * @brief Performs automatic stretching based on image content + * @param img Input image (grayscale or color) + * @return cv::Mat The automatically stretched image + */ +auto autoStretch(const cv::Mat& img) -> cv::Mat; + +/** + * @brief Performs adaptive local stretching using block processing + * @param img Input image + * @param blockSize Size of local processing blocks (default: 16) + * @return cv::Mat The adaptively stretched image + * @throws std::invalid_argument if blockSize is less than 1 + */ +auto adaptiveStretch(const cv::Mat& img, int blockSize = 16) -> cv::Mat; + +#endif // STRETCH_HPP \ No newline at end of file diff --git a/modules/lithium.image/include/thumbhash.hpp b/modules/lithium.image/include/thumbhash.hpp index 72b04c87..15eb909a 100644 --- a/modules/lithium.image/include/thumbhash.hpp +++ b/modules/lithium.image/include/thumbhash.hpp @@ -1,10 +1,23 @@ #ifndef THUMBHASH_H #define THUMBHASH_H -#include #include #include +#include "atom/macro.hpp" + +struct YCbCr { + double y; + double cb; + double cr; +} ATOM_ALIGNAS(32); + +namespace cv { +template +class Vec; +class Mat; +} // namespace cv + /** * @brief Performs Discrete Cosine Transform (DCT) on the input image. * @@ -14,7 +27,7 @@ * @param input The input image matrix. * @param output The output matrix to store the DCT result. */ -void DCT(const cv::Mat& input, cv::Mat& output); +void dct(const cv::Mat& input, cv::Mat& output); /** * @brief Converts an RGB color to YCbCr color space. @@ -27,7 +40,7 @@ void DCT(const cv::Mat& input, cv::Mat& output); * @param Cb The output blue-difference chroma component. * @param Cr The output red-difference chroma component. */ -void RGBToYCbCr(const cv::Vec3b& rgb, double& Y, double& Cb, double& Cr); +auto rgbToYCbCr(const cv::Vec& rgb) -> YCbCr; /** * @brief Encodes an image into a ThumbHash. @@ -38,7 +51,7 @@ void RGBToYCbCr(const cv::Vec3b& rgb, double& Y, double& Cb, double& Cr); * @param image The input image to be encoded. * @return A vector of doubles representing the encoded ThumbHash. */ -std::vector encodeThumbHash(const cv::Mat& image); +auto encodeThumbHash(const cv::Mat& image) -> std::vector; /** * @brief Decodes a ThumbHash into an image. @@ -50,8 +63,8 @@ std::vector encodeThumbHash(const cv::Mat& image); * @param height The height of the output thumbnail image. * @return The decoded thumbnail image. */ -cv::Mat decodeThumbHash(const std::vector& thumbHash, int width, - int height); +auto decodeThumbHash(const std::vector& thumbHash, int width, + int height) -> cv::Mat; /** * @brief Encodes ThumbHash data into a Base64 string. @@ -62,6 +75,6 @@ cv::Mat decodeThumbHash(const std::vector& thumbHash, int width, * @param thumbHash The ThumbHash data to be encoded. * @return A Base64 encoded string representing the ThumbHash data. */ -std::string base64Encode(const std::vector& thumbHash); +auto base64Encode(const std::vector& thumbHash) -> std::string; #endif // THUMBHASH_H diff --git a/modules/lithium.image/pymodule.cpp b/modules/lithium.image/pymodule.cpp new file mode 100644 index 00000000..aa4d3fda --- /dev/null +++ b/modules/lithium.image/pymodule.cpp @@ -0,0 +1,1331 @@ +#include "base64.hpp" +#include "bmp.hpp" +#include "centroid.hpp" +#include "convolve.hpp" +#include "debayer.hpp" +#include "fitsio.hpp" +#include "fitskeyword.hpp" +#include "fwhm.hpp" +#include "hfr.hpp" +#include "hist.hpp" +#include "imgio.hpp" +#include "imgutils.hpp" +#include "ndarray_converter.hpp" +#include "stretch.hpp" +#include "thumbhash.hpp" + +#include +#include +#include + +namespace py = pybind11; + +/** + * @brief Convert std::vector to Python bytes object + * + * @param vec std::vector object + * @return py::bytes Python bytes object + */ +auto vectorToBytes(const std::vector& vec) -> py::bytes { + return {reinterpret_cast(vec.data()), vec.size()}; +} + +/** + * @brief Convert Python bytes object to std::vector + * + * @param bytes Python bytes object + * @return std::vector std::vector object + */ +auto bytesToVector(const py::bytes& bytes) -> std::vector { + std::string str = bytes; + return {reinterpret_cast(str.data()), + reinterpret_cast(str.data() + str.size())}; +} + +/** + * @brief Convert OpenCV cv::Mat to NumPy array + * + * @param mat OpenCV cv::Mat object + * @return py::array_t NumPy array + */ +auto matToNumpy(const cv::Mat& mat) -> py::array_t { + py::array_t array({mat.rows, mat.cols, mat.channels()}, mat.data); + return array; +} + +/** + * @brief Convert NumPy array to OpenCV cv::Mat + * + * @param array NumPy array + * @return cv::Mat OpenCV cv::Mat object + */ +auto numpyToMat(const py::array_t& array) -> cv::Mat { + py::buffer_info info = array.request(); + int height = info.shape[0]; + int width = info.shape[1]; + int channels = + (info.ndim == 2) ? 1 : info.shape[2]; // Support grayscale images + return {height, width, CV_8UC(channels), info.ptr}; +} + +cv::Mat numpyToCvMat(py::array_t& input) { + py::buffer_info buf = input.request(); + int rows = buf.shape[0]; + int cols = buf.shape[1]; + return cv::Mat(rows, cols, CV_8UC1, buf.ptr); +} + +py::tuple calcSubPixelCenterWrapper( + const py::array_t& roi, const std::pair& initCenter, + float epsilon = DEFAULT_EPSILON, + int maxIterations = MAX_ITERATIONS_DEFAULT) { + // Convert numpy.ndarray to cv::Mat + cv::Mat roiMat = numpyToCvMat(const_cast&>(roi)); + + // Convert Python tuple (x, y) to cv::Point2f + cv::Point2f center(initCenter.first, initCenter.second); + + // Call the actual C++ implementation + cv::Point2f result = StarCentroid::calcSubPixelCenter( + roiMat, std::move(center), epsilon, maxIterations); + + // Return as a Python tuple + return py::make_tuple(result.x, result.y); +} + +PYBIND11_MODULE(base64, m) { + m.doc() = "Base64 encoding and decoding module"; + + m.def( + "base64Encode", + [](const std::string& input) -> std::string { + return base64Encode( + reinterpret_cast(input.c_str()), + input.length()); + }, + py::arg("input"), "Encodes a string to Base64 format"); + + m.def("base64Decode", &base64Decode, py::arg("encoded_string"), + "Decodes a Base64 encoded string"); + + py::class_(m, "ByteUnion") + .def(py::init<>()) + .def_readwrite("value", &ByteUnion::value) + .def_readwrite("bytes", &ByteUnion::bytes); + + // Bind Image struct + py::class_(m, "Image") + .def(py::init<>()) + .def_readwrite("data", &Image::data) + .def_readwrite("greyData", &Image::greyData) + .def_readwrite("sizeX", &Image::sizeX) + .def_readwrite("sizeY", &Image::sizeY); + + // Bind littleToNative function + m.def("littleToNative", py::overload_cast(&littleToNative), + "Convert little-endian uint32_t to native-endian"); + m.def("littleToNative", py::overload_cast(&littleToNative), + "Convert little-endian uint16_t to native-endian"); + + // Bind readEndianInt function + m.def("readEndianInt", &readEndianInt, + "Read a little-endian uint32_t from a file"); + + // Bind readEndianShort function + m.def("readEndianShort", &readEndianShort, + "Read a little-endian uint16_t from a file"); + + // Bind loadBMPImage function + m.def("loadBMPImage", &loadBMPImage, "Load a BMP image from a file"); + + // Bind saveGrayImage function + m.def("saveGrayImage", &saveGrayImage, "Save a grayscale image to a file"); + + py::class_(m, "CentroidResult") + .def(py::init<>()) + .def_readwrite("weightedCenter", + &StarCentroid::CentroidResult::weightedCenter) + .def_readwrite("subPixelCenter", + &StarCentroid::CentroidResult::subPixelCenter) + .def_readwrite("roundedCenter", + &StarCentroid::CentroidResult::roundedCenter); + + // Bind StarCentroid class + py::class_(m, "StarCentroid") + .def_static( + "readFits", + [](const std::string& filename) { + return StarCentroid::readFits(filename); + }, + R"pbdoc( + Read a FITS file and return the image matrix + Parameters: + filename (str): Path to the FITS file + Returns: + numpy.ndarray: Image matrix + )pbdoc") + .def_static("calcIntensityWeightedCenter", + &StarCentroid::calcIntensityWeightedCenter, R"pbdoc( + Calculate the intensity-weighted center of the image + Parameters: + image (numpy.ndarray): Input image + Returns: + tuple: Coordinates of the intensity-weighted center (x, y) + )pbdoc") + .def_static("calcSubPixelCenter", &calcSubPixelCenterWrapper, + R"pbdoc( + Calculate the sub-pixel center + Parameters: + roi (numpy.ndarray): Region of interest + initCenter (tuple): Initial center coordinates (x, y) + epsilon (float): Threshold for stopping the iteration + maxIterations (int): Maximum number of iterations + Returns: + tuple: Coordinates of the sub-pixel center (x, y) + )pbdoc", + py::arg("roi"), py::arg("initCenter"), + py::arg("epsilon") = DEFAULT_EPSILON, + py::arg("maxIterations") = MAX_ITERATIONS_DEFAULT) + .def_static("findCentroid", &StarCentroid::findCentroid, R"pbdoc( + Find the centroid of the image + Parameters: + image (numpy.ndarray): Input image + Returns: + CentroidResult: Centroid result + )pbdoc", + py::arg("image")) + .def_static("visualizeResults", &StarCentroid::visualizeResults, + R"pbdoc( + Visualize the centroid results + Parameters: + image (numpy.ndarray): Input image + result (CentroidResult): Centroid result + )pbdoc"); + + m.def( + "convolve", + [](const py::array_t& input, + const py::array_t& kernel) { + cv::Mat inputMat = numpyToMat(input); + cv::Mat kernelMat = numpyToMat(kernel); + cv::Mat outputMat; + convolve(inputMat, kernelMat, outputMat); + return matToNumpy(outputMat); + }, + R"pbdoc( + Perform convolution on the input image + Parameters: + input (numpy.ndarray): Input image + kernel (numpy.ndarray): Convolution kernel + Returns: + numpy.ndarray: Convolved image + )pbdoc"); + + // Bind dftConvolve function + m.def( + "dftConvolve", + [](const py::array_t& input, + const py::array_t& kernel) { + cv::Mat inputMat = numpyToMat(input); + cv::Mat kernelMat = numpyToMat(kernel); + cv::Mat outputMat; + dftConvolve(inputMat, kernelMat, outputMat); + return matToNumpy(outputMat); + }, + R"pbdoc( + Perform convolution on the input image using Discrete Fourier Transform + Parameters: + input (numpy.ndarray): Input image + kernel (numpy.ndarray): Convolution kernel + Returns: + numpy.ndarray: Convolved image + )pbdoc"); + + // Bind deconvolve function + m.def( + "deconvolve", + [](const py::array_t& input, + const py::array_t& kernel) { + cv::Mat inputMat = numpyToMat(input); + cv::Mat kernelMat = numpyToMat(kernel); + cv::Mat outputMat; + deconvolve(inputMat, kernelMat, outputMat); + return matToNumpy(outputMat); + }, + R"pbdoc( + Perform deconvolution on the input image + Parameters: + input (numpy.ndarray): Input image + kernel (numpy.ndarray): Convolution kernel + Returns: + numpy.ndarray: Deconvolved image + )pbdoc"); + + // Bind separableConvolve function + m.def( + "separableConvolve", + [](const py::array_t& input, + const py::array_t& kernelX, + const py::array_t& kernelY) { + cv::Mat inputMat = numpyToMat(input); + cv::Mat kernelXMat = numpyToMat(kernelX); + cv::Mat kernelYMat = numpyToMat(kernelY); + cv::Mat outputMat; + separableConvolve(inputMat, kernelXMat, kernelYMat, outputMat); + return matToNumpy(outputMat); + }, + R"pbdoc( + Perform separable convolution on the input image + Parameters: + input (numpy.ndarray): Input image + kernelX (numpy.ndarray): Horizontal convolution kernel + kernelY (numpy.ndarray): Vertical convolution kernel + Returns: + numpy.ndarray: Convolved image + )pbdoc"); + + // Bind DebayerResult struct + py::class_(m, "DebayerResult") + .def(py::init<>()) + .def_readwrite("debayeredImage", &DebayerResult::debayeredImage) + .def_readwrite("continueProcessing", &DebayerResult::continueProcessing) + .def_readwrite("header", &DebayerResult::header); + + // Bind readFits function + m.def( + "readFits", + [](const std::string& filepath, + std::map& header) { + return matToNumpy(readFits(filepath, header)); + }, + R"pbdoc( + Read a FITS file and return the image matrix + Parameters: + filepath (str): Path to the FITS file + header (dict): Dictionary to store FITS header information + Returns: + numpy.ndarray: Image matrix + )pbdoc"); + + // Bind debayer function + m.def( + "debayer", + [](const std::string& filepath) { + DebayerResult result = debayer(filepath); + py::dict header; + for (const auto& [key, value] : result.header) { + header[py::str(key)] = py::str(value); + } + return py::make_tuple(matToNumpy(result.debayeredImage), + result.continueProcessing, header); + }, + R"pbdoc( + Perform debayering process + Parameters: + filepath (str): Path to the image file + Returns: + tuple: A tuple containing the debayered image, a boolean indicating whether to continue processing, and a dictionary of header information + )pbdoc"); + + // Bind FitsResult struct + py::class_(m, "FitsResult") + .def(py::init<>()) + .def_readwrite("image", &FitsResult::image) + .def_readwrite("header", &FitsResult::header); + + // Bind readFits function + m.def( + "readFits", + [](const std::string& filepath) { + FitsResult result = readFits(filepath); + py::dict header; + for (const auto& [key, value] : result.header) { + header[py::str(key)] = py::str(value); + } + return py::make_tuple(matToNumpy(result.image), header); + }, + R"pbdoc( + Read a FITS file and return the image matrix and header information + Parameters: + filepath (str): Path to the FITS file + Returns: + tuple: A tuple containing the image matrix (numpy.ndarray) and header information (dict) + )pbdoc"); + + // Bind writeMatToFits function + m.def( + "writeMatToFits", + [](py::array_t image, const std::string& filepath) { + cv::Mat mat = numpyToMat(image); + writeMatToFits(mat, filepath); + }, + R"pbdoc( + Write cv::Mat image data to a FITS file + Parameters: + image (numpy.ndarray): Image data to write + filepath (str): Path to the target FITS file + )pbdoc"); + + // Bind matToBase64 function + m.def( + "matToBase64", + [](py::array_t image, const std::string& imgFormat) { + cv::Mat mat = numpyToMat(image); + return matToBase64(mat, imgFormat); + }, + R"pbdoc( + Convert cv::Mat image data to a Base64 string + Parameters: + image (numpy.ndarray): Image data to convert + imgFormat (str): Image encoding format (e.g., ".png", ".jpg") + Returns: + str: Base64 encoded string + )pbdoc"); + + // Bind fitsToBase64 function + m.def("fitsToBase64", &fitsToBase64, R"pbdoc( + Convert a FITS file to a Base64 string + Parameters: + filepath (str): Path to the FITS file + Returns: + str: Base64 encoded string + )pbdoc"); + + // Bind readFitsDeviceName function + m.def("readFitsDeviceName", &readFitsDeviceName, R"pbdoc( + Read the device name from a FITS file + Parameters: + filepath (str): Path to the FITS file + Returns: + Optional[str]: Device name if present, otherwise None + )pbdoc"); + + // Bind DataPoint struct + py::class_(m, "DataPoint") + .def(py::init(), py::arg("x") = 0, py::arg("y") = 0) + .def_readwrite("x", &DataPoint::x) + .def_readwrite("y", &DataPoint::y); + + // Bind GaussianParams struct + py::class_(m, "GaussianParams") + .def(py::init<>()) + .def_readwrite("base", &GaussianParams::base) + .def_readwrite("peak", &GaussianParams::peak) + .def_readwrite("center", &GaussianParams::center) + .def_readwrite("width", &GaussianParams::width); + + // Bind GaussianFit class + py::class_(m, "GaussianFit") + .def_static("fit", &GaussianFit::fit, R"pbdoc( + Fit a Gaussian model to the given data points + Parameters: + points (List[DataPoint]): List of data points + eps (float): Convergence threshold + maxIter (int): Maximum number of iterations + Returns: + Optional[GaussianParams]: Fitted Gaussian parameters if successful, otherwise None + )pbdoc", + py::arg("points"), py::arg("eps") = 1e-6, + py::arg("maxIter") = 100) + .def_static("evaluate", &GaussianFit::evaluate, R"pbdoc( + Evaluate the Gaussian model at a given x value + Parameters: + params (GaussianParams): Gaussian parameters + x (float): x value + Returns: + float: Evaluated y value + )pbdoc", + py::arg("params"), py::arg("x")) + .def_static("visualize", &GaussianFit::visualize, R"pbdoc( + Visualize the Gaussian fit + Parameters: + points (List[DataPoint]): List of data points + params (GaussianParams): Gaussian parameters + )pbdoc", + py::arg("points"), py::arg("params")); + + // Bind FITSRecord::Type enum + py::enum_(m, "Type") + .value("VOID", FITSRecord::Type::VOID) + .value("COMMENT", FITSRecord::Type::COMMENT) + .value("STRING", FITSRecord::Type::STRING) + .value("LONGLONG", FITSRecord::Type::LONGLONG) + .value("DOUBLE", FITSRecord::Type::DOUBLE) + .export_values(); + + // Bind FITSRecord class + py::class_(m, "FITSRecord") + .def(py::init<>()) + .def(py::init(), + py::arg("key"), py::arg("value"), py::arg("comment") = "") + .def(py::init(), + py::arg("key"), py::arg("value"), py::arg("comment") = "") + .def(py::init(), + py::arg("key"), py::arg("value"), py::arg("decimal") = 6, + py::arg("comment") = "") + .def(py::init(), py::arg("comment")) + .def("type", &FITSRecord::type, R"pbdoc( + Get the type of the FITS record + Returns: + Type: The type of the FITS record + )pbdoc") + .def("key", &FITSRecord::key, R"pbdoc( + Get the key of the FITS record + Returns: + str: The key of the FITS record + )pbdoc") + .def("comment", &FITSRecord::comment, R"pbdoc( + Get the comment of the FITS record + Returns: + str: The comment of the FITS record + )pbdoc") + .def("decimal", &FITSRecord::decimal, R"pbdoc( + Get the decimal precision of the FITS record + Returns: + int: The decimal precision of the FITS record + )pbdoc") + .def("valueString", &FITSRecord::valueString, R"pbdoc( + Get the string value of the FITS record + Returns: + str: The string value of the FITS record + Raises: + RuntimeError: If the value is not a string + )pbdoc") + .def("valueInt", &FITSRecord::valueInt, R"pbdoc( + Get the integer value of the FITS record + Returns: + int: The integer value of the FITS record + Raises: + RuntimeError: If the value is not an integer + )pbdoc") + .def("valueDouble", &FITSRecord::valueDouble, R"pbdoc( + Get the double value of the FITS record + Returns: + float: The double value of the FITS record + Raises: + RuntimeError: If the value is not a double + )pbdoc") + .def( + "setValue", + [](FITSRecord& self, const std::string& value) { + self.setValue(value); + }, + R"pbdoc( + Set the value of the FITS record to a string + Parameters: + value (str): The string value to set + )pbdoc") + .def( + "setValue", + [](FITSRecord& self, int64_t value) { self.setValue(value); }, + R"pbdoc( + Set the value of the FITS record to an integer + Parameters: + value (int): The integer value to set + )pbdoc") + .def( + "setValue", + [](FITSRecord& self, double value) { self.setValue(value); }, + R"pbdoc( + Set the value of the FITS record to a double + Parameters: + value (float): The double value to set + )pbdoc"); + + // Bind fits_literals namespace + m.def( + "operator" + "_fits_comment", + [](const char* str, size_t) { return FITSRecord(str); }, R"pbdoc( + Create a FITSRecord with a comment + Parameters: + str (str): The comment string + Returns: + FITSRecord: The FITSRecord with the comment + )pbdoc"); + + // Bind calcHfr function + m.def( + "calcHfr", + [](const py::array_t& inImage, float radius) { + cv::Mat mat = numpyToMat(inImage); + return calcHfr(mat, radius); + }, + R"pbdoc( + Calculate the Half Flux Radius (HFR) of an image + Parameters: + inImage (numpy.ndarray): Input image + radius (float): Radius for HFR calculation + Returns: + float: Calculated HFR value + )pbdoc"); + + // Bind caldim function + m.def( + "caldim", + [](const py::array_t& img) { + cv::Mat mat = numpyToMat(img); + return caldim(mat); + }, + R"pbdoc( + Calculate the dimension of an image + Parameters: + img (numpy.ndarray): Input image + Returns: + bool: True if the calculation is successful, otherwise False + )pbdoc"); + + // Bind preprocessImage function + m.def( + "preprocessImage", + [](const py::array_t& img, py::array_t& grayimg, + py::array_t& rgbImg, py::array_t& mark_img) { + cv::Mat mat = numpyToMat(img); + cv::Mat grayMat; + cv::Mat rgbMat; + cv::Mat markMat; + preprocessImage(mat, grayMat, rgbMat, markMat); + grayimg = matToNumpy(grayMat); + rgbImg = matToNumpy(rgbMat); + mark_img = matToNumpy(markMat); + }, + R"pbdoc( + Preprocess the input image + Parameters: + img (numpy.ndarray): Input image + grayimg (numpy.ndarray): Output grayscale image + rgbImg (numpy.ndarray): Output RGB image + mark_img (numpy.ndarray): Output marked image + )pbdoc"); + + // Bind removeNoise function + m.def( + "removeNoise", + [](py::array_t& map, bool if_removehotpixel, + bool if_noiseremoval) { + cv::Mat mat = numpyToMat(map); + removeNoise(mat, if_removehotpixel, if_noiseremoval); + map = matToNumpy(mat); + }, + R"pbdoc( + Remove noise from the input image + Parameters: + map (numpy.ndarray): Input image + if_removehotpixel (bool): Flag to remove hot pixels + if_noiseremoval (bool): Flag to remove noise + )pbdoc"); + + // Bind calculateMeanAndStd function + m.def( + "calculateMeanAndStd", + [](const py::array_t& map, bool down_sample_mean_std) { + cv::Mat mat = numpyToMat(map); + double medianVal; + double stdDev; + calculateMeanAndStd(mat, down_sample_mean_std, medianVal, stdDev); + return py::make_tuple(medianVal, stdDev); + }, + R"pbdoc( + Calculate the mean and standard deviation of the input image + Parameters: + map (numpy.ndarray): Input image + down_sample_mean_std (bool): Flag to downsample for mean and std calculation + Returns: + tuple: A tuple containing the median value and standard deviation + )pbdoc"); + + // Bind processContours function + m.def( + "processContours", + [](const py::array_t& grayimg, + const py::array_t& rgbImg, py::array_t& mark_img, + const std::vector>& contours, + bool do_star_mark) { + cv::Mat grayMat = numpyToMat(grayimg); + cv::Mat rgbMat = numpyToMat(rgbImg); + cv::Mat markMat; + auto result = processContours(grayMat, rgbMat, markMat, contours, + do_star_mark); + mark_img = matToNumpy(markMat); + return result; + }, + R"pbdoc( + Process contours in the input image + Parameters: + grayimg (numpy.ndarray): Input grayscale image + rgbImg (numpy.ndarray): Input RGB image + mark_img (numpy.ndarray): Output marked image + contours (List[List[cv::Point]]): List of contours + do_star_mark (bool): Flag to mark stars + Returns: + tuple: A tuple containing the number of stars, HFR value, list of HFR values, and list of star sizes + )pbdoc"); + + // Bind starDetectAndHfr function + m.def( + "starDetectAndHfr", + [](const py::array_t& img, bool if_removehotpixel, + bool if_noiseremoval, bool do_star_mark, bool down_sample_mean_std, + py::array_t& mark_img) { + cv::Mat mat = numpyToMat(img); + cv::Mat markMat; + auto result = + starDetectAndHfr(mat, if_removehotpixel, if_noiseremoval, + do_star_mark, down_sample_mean_std, markMat); + mark_img = matToNumpy(std::get<0>(result)); + return py::make_tuple(mark_img, std::get<1>(result), + std::get<2>(result), std::get<3>(result)); + }, + R"pbdoc( + Detect stars and calculate HFR in the input image + Parameters: + img (numpy.ndarray): Input image + if_removehotpixel (bool): Flag to remove hot pixels + if_noiseremoval (bool): Flag to remove noise + do_star_mark (bool): Flag to mark stars + down_sample_mean_std (bool): Flag to downsample for mean and std calculation + mark_img (numpy.ndarray): Output marked image + Returns: + tuple: A tuple containing the marked image, number of stars, HFR value, and JSON object with additional information + )pbdoc"); + + // Bind calculateHist function + m.def( + "calculateHist", + [](const py::array_t& img, int histSize = DEFAULT_HIST_SIZE, + bool normalize = false) { + cv::Mat mat = numpyToMat(img); + std::vector hist = calculateHist(mat, histSize, normalize); + std::vector> result; + result.reserve(hist.size()); + for (const auto& h : hist) { + result.push_back(matToNumpy(h)); + } + return result; + }, + R"pbdoc( + Calculate the histogram of an image + Parameters: + img (numpy.ndarray): Input image + histSize (int): Size of the histogram + normalize (bool): Flag to normalize the histogram + Returns: + List[numpy.ndarray]: List of histograms for each channel + )pbdoc", + py::arg("img"), py::arg("histSize") = DEFAULT_HIST_SIZE, + py::arg("normalize") = false); + + // Bind calculateGrayHist function + m.def( + "calculateGrayHist", + [](const py::array_t& img, int histSize = DEFAULT_HIST_SIZE, + bool normalize = false) { + cv::Mat mat = numpyToMat(img); + cv::Mat hist = calculateGrayHist(mat, histSize, normalize); + return matToNumpy(hist); + }, + R"pbdoc( + Calculate the grayscale histogram of an image + Parameters: + img (numpy.ndarray): Input image + histSize (int): Size of the histogram + normalize (bool): Flag to normalize the histogram + Returns: + numpy.ndarray: Grayscale histogram + )pbdoc", + py::arg("img"), py::arg("histSize") = DEFAULT_HIST_SIZE, + py::arg("normalize") = false); + + // Bind calculateCDF function + m.def( + "calculateCDF", + [](const py::array_t& hist) { + cv::Mat mat = numpyToMat(hist); + cv::Mat cdf = calculateCDF(mat); + return matToNumpy(cdf); + }, + R"pbdoc( + Calculate the cumulative distribution function (CDF) of a histogram + Parameters: + hist (numpy.ndarray): Input histogram + Returns: + numpy.ndarray: CDF of the histogram + )pbdoc"); + + // Bind equalizeHistogram function + m.def( + "equalizeHistogram", + [](const py::array_t& img) { + cv::Mat mat = numpyToMat(img); + cv::Mat equalized = equalizeHistogram(mat); + return matToNumpy(equalized); + }, + R"pbdoc( + Equalize the histogram of an image + Parameters: + img (numpy.ndarray): Input image + Returns: + numpy.ndarray: Image with equalized histogram + )pbdoc"); + + // Bind drawHistogram function + m.def( + "drawHistogram", + [](const py::array_t& hist, int histSize = DEFAULT_HIST_SIZE, + int width = DEFAULT_WIDTH, int height = DEFAULT_HEIGHT) { + cv::Mat mat = numpyToMat(hist); + cv::Mat histImage = drawHistogram(mat, histSize, width, height); + return matToNumpy(histImage); + }, + R"pbdoc( + Draw the histogram of an image + Parameters: + hist (numpy.ndarray): Input histogram + histSize (int): Size of the histogram + width (int): Width of the histogram image + height (int): Height of the histogram image + Returns: + numpy.ndarray: Image of the histogram + )pbdoc", + py::arg("hist"), py::arg("histSize") = DEFAULT_HIST_SIZE, + py::arg("width") = DEFAULT_WIDTH, py::arg("height") = DEFAULT_HEIGHT); + + // Bind StretchParams struct + py::class_(m, "StretchParams") + .def(py::init<>()) + .def_readwrite("shadows", &StretchParams::shadows) + .def_readwrite("tones", &StretchParams::tones) + .def_readwrite("highlights", &StretchParams::highlights); + + // Bind stretchWhiteBalance function + m.def( + "stretchWhiteBalance", + [](const std::vector>& hists, + const std::vector>& bgrPlanes) { + std::vector histMats; + std::vector bgrMats; + histMats.reserve(hists.size()); + for (const auto& h : hists) { + histMats.push_back(numpyToMat(h)); + } + bgrMats.reserve(bgrPlanes.size()); + for (const auto& b : bgrPlanes) { + bgrMats.push_back(numpyToMat(b)); + } + cv::Mat result = stretchWhiteBalance(histMats, bgrMats); + return matToNumpy(result); + }, + R"pbdoc( + Perform white balance stretching on an image + Parameters: + hists (List[numpy.ndarray]): Vector of histograms for each color channel + bgrPlanes (List[numpy.ndarray]): Vector of BGR color planes + Returns: + numpy.ndarray: The white-balanced image + Raises: + ValueError: If input vectors don't contain exactly 3 channels + )pbdoc"); + + // Bind stretchGray function + m.def( + "stretchGray", + [](const py::array_t& hist, py::array_t& plane) { + cv::Mat histMat = numpyToMat(hist); + cv::Mat planeMat = numpyToMat(plane); + cv::Mat result = stretchGray(histMat, planeMat); + plane = matToNumpy(planeMat); + return matToNumpy(result); + }, + R"pbdoc( + Stretch a grayscale image using its histogram + Parameters: + hist (numpy.ndarray): Histogram of the grayscale image + plane (numpy.ndarray): Input grayscale image plane + Returns: + numpy.ndarray: The stretched grayscale image + Raises: + ValueError: If input histogram or plane is empty + )pbdoc"); + + // Bind grayStretch function + m.def( + "grayStretch", + [](const py::array_t& img, + double blackClip = DEFAULT_BLACK_CLIP, + double targetBkg = DEFAULT_TARGET_BKG) { + cv::Mat mat = numpyToMat(img); + cv::Mat result = grayStretch(mat, blackClip, targetBkg); + return matToNumpy(result); + }, + R"pbdoc( + Perform gray level stretching with configurable parameters + Parameters: + img (numpy.ndarray): Input grayscale image + blackClip (float): Black clipping factor + targetBkg (float): Target background value + Returns: + numpy.ndarray: The stretched grayscale image + )pbdoc", + py::arg("img"), py::arg("blackClip") = DEFAULT_BLACK_CLIP, + py::arg("targetBkg") = DEFAULT_TARGET_BKG); + + // Bind stretchOneChannel function + m.def( + "stretchOneChannel", + [](const py::array_t& normalizedImg, + const StretchParams& params) { + cv::Mat mat = numpyToMat(normalizedImg); + cv::Mat result = stretchOneChannel(mat, params); + return matToNumpy(result); + }, + R"pbdoc( + Stretch a single channel using provided parameters + Parameters: + normalizedImg (numpy.ndarray): Normalized input image (0.0 to 1.0) + params (StretchParams): Stretching parameters + Returns: + numpy.ndarray: The stretched channel + )pbdoc"); + + // Bind stretchThreeChannels function + m.def( + "stretchThreeChannels", + [](const py::array_t& img, const std::vector& shadows, + const std::vector& midtones, + const std::vector& highlights, int inputRange, + bool doJpg = false) { + cv::Mat mat = numpyToMat(img); + cv::Mat result = stretchThreeChannels( + mat, shadows, midtones, highlights, inputRange, doJpg); + return matToNumpy(result); + }, + R"pbdoc( + Stretch all three channels of an image independently + Parameters: + img (numpy.ndarray): Input BGR image + shadows (List[float]): Shadow levels for each channel + midtones (List[float]): Midtone levels for each channel + highlights (List[float]): Highlight levels for each channel + inputRange (int): Input image range (e.g., 255 for 8-bit) + doJpg (bool): Whether to output 8-bit (true) or 16-bit (false) + Returns: + numpy.ndarray: The stretched color image + Raises: + ValueError: If input vectors don't match channel count + )pbdoc", + py::arg("img"), py::arg("shadows"), py::arg("midtones"), + py::arg("highlights"), py::arg("inputRange"), py::arg("doJpg") = false); + + // Bind calculateStretchParameters function + m.def( + "calculateStretchParameters", + [](const py::array_t& img) { + cv::Mat mat = numpyToMat(img); + auto result = calculateStretchParameters(mat); + return py::make_tuple(std::get<0>(result), std::get<1>(result), + std::get<2>(result)); + }, + R"pbdoc( + Calculate optimal stretch parameters for an image + Parameters: + img (numpy.ndarray): Input image + Returns: + tuple: A tuple containing shadows, midtones, and highlights + )pbdoc"); + + // Bind autoStretch function + m.def( + "autoStretch", + [](const py::array_t& img) { + cv::Mat mat = numpyToMat(img); + cv::Mat result = autoStretch(mat); + return matToNumpy(result); + }, + R"pbdoc( + Perform automatic stretching based on image content + Parameters: + img (numpy.ndarray): Input image (grayscale or color) + Returns: + numpy.ndarray: The automatically stretched image + )pbdoc"); + + // Bind adaptiveStretch function + m.def( + "adaptiveStretch", + [](const py::array_t& img, int blockSize = 16) { + cv::Mat mat = numpyToMat(img); + cv::Mat result = adaptiveStretch(mat, blockSize); + return matToNumpy(result); + }, + R"pbdoc( + Perform adaptive local stretching using block processing + Parameters: + img (numpy.ndarray): Input image + blockSize (int): Size of local processing blocks + Returns: + numpy.ndarray: The adaptively stretched image + Raises: + ValueError: If blockSize is less than 1 + )pbdoc", + py::arg("img"), py::arg("blockSize") = 16); + + // Bind YCbCr struct + py::class_(m, "YCbCr") + .def(py::init<>()) + .def_readwrite("y", &YCbCr::y) + .def_readwrite("cb", &YCbCr::cb) + .def_readwrite("cr", &YCbCr::cr); + + // Bind dct function + m.def( + "dct", + [](const py::array_t& input, py::array_t& output) { + cv::Mat input_mat = numpyToMat(input); + cv::Mat output_mat; + dct(input_mat, output_mat); + output = matToNumpy(output_mat); + }, + R"pbdoc( + Perform Discrete Cosine Transform (DCT) on the input image + Parameters: + input (numpy.ndarray): Input image matrix + output (numpy.ndarray): Output matrix to store the DCT result + )pbdoc"); + + // Bind rgbToYCbCr function + m.def( + "rgbToYCbCr", + [](const py::array_t& rgb) { + cv::Vec rgb_vec = + *reinterpret_cast*>(rgb.data()); + return rgbToYCbCr(rgb_vec); + }, + R"pbdoc( + Convert an RGB color to YCbCr color space + Parameters: + rgb (numpy.ndarray): Input RGB color + Returns: + YCbCr: The YCbCr color space values + )pbdoc"); + + // Bind encodeThumbHash function + m.def( + "encodeThumbHash", + [](const py::array_t& image) { + cv::Mat mat = numpyToMat(image); + return encodeThumbHash(mat); + }, + R"pbdoc( + Encode an image into a ThumbHash + Parameters: + image (numpy.ndarray): Input image to be encoded + Returns: + List[float]: Encoded ThumbHash + )pbdoc"); + + // Bind decodeThumbHash function + m.def( + "decodeThumbHash", + [](const std::vector& thumbHash, int width, int height) { + cv::Mat result = decodeThumbHash(thumbHash, width, height); + return matToNumpy(result); + }, + R"pbdoc( + Decode a ThumbHash into an image + Parameters: + thumbHash (List[float]): Encoded ThumbHash data + width (int): Width of the output thumbnail image + height (int): Height of the output thumbnail image + Returns: + numpy.ndarray: Decoded thumbnail image + )pbdoc"); + + // Bind insideCircle function + m.def("insideCircle", &insideCircle, R"pbdoc( + Check if a point is inside a circle + Parameters: + xCoord (int): X coordinate of the point + yCoord (int): Y coordinate of the point + centerX (int): X coordinate of the circle center + centerY (int): Y coordinate of the circle center + radius (float): Radius of the circle + Returns: + bool: True if the point is inside the circle, otherwise False + )pbdoc"); + + // Bind checkElongated function + m.def("checkElongated", &checkElongated, R"pbdoc( + Check if a rectangle is elongated + Parameters: + width (int): Width of the rectangle + height (int): Height of the rectangle + Returns: + bool: True if the rectangle is elongated, otherwise False + )pbdoc"); + + // Bind checkWhitePixel function + m.def( + "checkWhitePixel", + [](const py::array_t& rect_contour, int x_coord, int y_coord) { + cv::Mat mat = numpyToMat(rect_contour); + return checkWhitePixel(mat, x_coord, y_coord); + }, + R"pbdoc( + Check if a pixel is white + Parameters: + rect_contour (numpy.ndarray): Input image + x_coord (int): X coordinate of the pixel + y_coord (int): Y coordinate of the pixel + Returns: + int: 1 if the pixel is white, otherwise 0 + )pbdoc"); + + // Bind checkEightSymmetryCircle function + m.def( + "checkEightSymmetryCircle", + [](const py::array_t& rect_contour, const cv::Point& center, + int x_p, int y_p) { + cv::Mat mat = numpyToMat(rect_contour); + return checkEightSymmetryCircle(mat, center, x_p, y_p); + }, + R"pbdoc( + Check eight symmetry of a circle + Parameters: + rect_contour (numpy.ndarray): Input image + center (cv::Point): Center of the circle + x_p (int): X coordinate of the point + y_p (int): Y coordinate of the point + Returns: + int: Symmetry score + )pbdoc"); + + // Bind checkFourSymmetryCircle function + m.def( + "checkFourSymmetryCircle", + [](const py::array_t& rect_contour, const cv::Point& center, + float radius) { + cv::Mat mat = numpyToMat(rect_contour); + return checkFourSymmetryCircle(mat, center, radius); + }, + R"pbdoc( + Check four symmetry of a circle + Parameters: + rect_contour (numpy.ndarray): Input image + center (cv::Point): Center of the circle + radius (float): Radius of the circle + Returns: + int: Symmetry score + )pbdoc"); + + // Bind defineNarrowRadius function + m.def("defineNarrowRadius", &defineNarrowRadius, R"pbdoc( + Define narrow radius + Parameters: + min_area (int): Minimum area + max_area (float): Maximum area + area (float): Area + scale (float): Scale + Returns: + tuple: A tuple containing the radius, a vector of radii, and a vector of scales + )pbdoc"); + + // Bind checkBresenhamCircle function + m.def( + "checkBresenhamCircle", + [](const py::array_t& rect_contour, float radius, + float pixel_ratio, bool if_debug = false) { + cv::Mat mat = numpyToMat(rect_contour); + return checkBresenhamCircle(mat, radius, pixel_ratio, if_debug); + }, + R"pbdoc( + Check Bresenham circle + Parameters: + rect_contour (numpy.ndarray): Input image + radius (float): Radius of the circle + pixel_ratio (float): Pixel ratio + if_debug (bool): Debug flag + Returns: + bool: True if the circle is valid, otherwise False + )pbdoc"); + + // Bind calculateAverageDeviation function + m.def( + "calculateAverageDeviation", + [](double mid, const py::array_t& norm_img) { + cv::Mat mat = numpyToMat(norm_img); + return calculateAverageDeviation(mid, mat); + }, + R"pbdoc( + Calculate average deviation + Parameters: + mid (float): Mid value + norm_img (numpy.ndarray): Normalized image + Returns: + float: Average deviation + )pbdoc"); + + // Bind calculateMTF function + m.def( + "calculateMTF", + [](double magnitude, const py::array_t& img) { + cv::Mat mat = numpyToMat(img); + cv::Mat result = calculateMTF(magnitude, mat); + return matToNumpy(result); + }, + R"pbdoc( + Calculate MTF + Parameters: + magnitude (float): Magnitude + img (numpy.ndarray): Input image + Returns: + numpy.ndarray: MTF image + )pbdoc"); + + // Bind calculateScale function + m.def( + "calculateScale", + [](const py::array_t& img, int resize_size = 1552) { + cv::Mat mat = numpyToMat(img); + return calculateScale(mat, resize_size); + }, + R"pbdoc( + Calculate scale + Parameters: + img (numpy.ndarray): Input image + resize_size (int): Resize size + Returns: + float: Scale + )pbdoc"); + + // Bind calculateMedianDeviation function + m.def( + "calculateMedianDeviation", + [](double mid, const py::array_t& img) { + cv::Mat mat = numpyToMat(img); + return calculateMedianDeviation(mid, mat); + }, + R"pbdoc( + Calculate median deviation + Parameters: + mid (float): Mid value + img (numpy.ndarray): Input image + Returns: + float: Median deviation + )pbdoc"); + + // Bind computeParamsOneChannel function + m.def( + "computeParamsOneChannel", + [](const py::array_t& img) { + cv::Mat mat = numpyToMat(img); + auto result = computeParamsOneChannel(mat); + return py::make_tuple(std::get<0>(result), std::get<1>(result), + std::get<2>(result)); + }, + R"pbdoc( + Compute parameters for one channel + Parameters: + img (numpy.ndarray): Input image + Returns: + tuple: A tuple containing the parameters + )pbdoc"); + + // Bind autoWhiteBalance function + m.def( + "autoWhiteBalance", + [](const py::array_t& img) { + cv::Mat mat = numpyToMat(img); + cv::Mat result = autoWhiteBalance(mat); + return matToNumpy(result); + }, + R"pbdoc( + Perform automatic white balance + Parameters: + img (numpy.ndarray): Input image + Returns: + numpy.ndarray: White-balanced image + )pbdoc"); + + // Bind loadImage function + m.def( + "loadImage", + [](const std::string& filename, int flags = 1) { + cv::Mat mat = loadImage(filename, flags); + return matToNumpy(mat); + }, + R"pbdoc( + Load a single image + Parameters: + filename (str): Path to the image file + flags (int): Flags for image loading + Returns: + numpy.ndarray: Loaded image + )pbdoc", + py::arg("filename"), py::arg("flags") = 1); + + // Bind loadImages function + m.def( + "loadImages", + [](const std::string& folder, + const std::vector& filenames = {}, int flags = 1) { + std::vector> images = + loadImages(folder, filenames, flags); + std::vector>> result; + result.reserve(images.size()); + for (const auto& [name, mat] : images) { + result.emplace_back(name, matToNumpy(mat)); + } + return result; + }, + R"pbdoc( + Load all images from a folder + Parameters: + folder (str): Path to the folder + filenames (List[str]): List of filenames to load + flags (int): Flags for image loading + Returns: + List[Tuple[str, numpy.ndarray]]: List of loaded images with their filenames + )pbdoc", + py::arg("folder"), py::arg("filenames") = std::vector{}, + py::arg("flags") = 1); + + // Bind saveImage function + m.def("saveImage", &saveImage, R"pbdoc( + Save an image to a file + Parameters: + filename (str): Path to the output file + image (numpy.ndarray): Image to save + Returns: + bool: True if the image was saved successfully, otherwise False + )pbdoc"); + + // Bind saveMatTo8BitJpg function + m.def("saveMatTo8BitJpg", &saveMatTo8BitJpg, R"pbdoc( + Save a cv::Mat image to an 8-bit JPG file + Parameters: + image (numpy.ndarray): Image to save + output_path (str): Path to the output file + Returns: + bool: True if the image was saved successfully, otherwise False + )pbdoc"); + + // Bind saveMatTo16BitPng function + m.def("saveMatTo16BitPng", &saveMatTo16BitPng, R"pbdoc( + Save a cv::Mat image to a 16-bit PNG file + Parameters: + image (numpy.ndarray): Image to save + output_path (str): Path to the output file + Returns: + bool: True if the image was saved successfully, otherwise False + )pbdoc"); + + // Bind saveMatToFits function + m.def("saveMatToFits", &saveMatToFits, R"pbdoc( + Save a cv::Mat image to a FITS file + Parameters: + image (numpy.ndarray): Image to save + output_path (str): Path to the output file + Returns: + bool: True if the image was saved successfully, otherwise False + )pbdoc"); +} \ No newline at end of file diff --git a/modules/lithium.image/src/base64.cpp b/modules/lithium.image/src/base64.cpp index f1cd1ea5..6ce5031f 100644 --- a/modules/lithium.image/src/base64.cpp +++ b/modules/lithium.image/src/base64.cpp @@ -1,93 +1,125 @@ #include "base64.hpp" -static const std::string base64_chars = +#include +#include + +constexpr std::string_view BASE64_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789+/"; -std::string base64_encode(unsigned char const* bytes_to_encode, - unsigned int in_len) { - std::string ret; - int i = 0; - int j = 0; - unsigned char char_array_3[3]; - unsigned char char_array_4[4]; - - while (in_len--) { - char_array_3[i++] = *(bytes_to_encode++); - if (i == 3) { - char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; - char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + - ((char_array_3[1] & 0xf0) >> 4); - char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + - ((char_array_3[2] & 0xc0) >> 6); - char_array_4[3] = char_array_3[2] & 0x3f; - - for (i = 0; (i < 4); i++) - ret += base64_chars[char_array_4[i]]; - i = 0; +constexpr unsigned char MASK_0X_FC = 0xFC; +constexpr unsigned char MASK_0X03 = 0x03; +constexpr unsigned char MASK_0X_F0 = 0xF0; +constexpr unsigned char MASK_0X0_F = 0x0F; +constexpr unsigned char MASK_0X_C0 = 0xC0; +constexpr unsigned char MASK_0X3_F = 0x3F; +constexpr unsigned char MASK_0X30 = 0x30; +constexpr unsigned char MASK_0X3_C = 0x3C; +constexpr int SHIFT_6 = 6; +constexpr int SHIFT_4 = 4; +constexpr int SHIFT_2 = 2; + +auto base64Encode(unsigned char const* bytes_to_encode, + unsigned int input_length) -> std::string { + std::string result; + int index3 = 0; + std::array charArray3; + std::array charArray4; + + while ((input_length--) != 0U) { + charArray3[index3++] = *(bytes_to_encode++); + if (index3 == 3) { + charArray4[0] = (charArray3[0] & MASK_0X_FC) >> SHIFT_2; + charArray4[1] = ((charArray3[0] & MASK_0X03) << SHIFT_4) + + ((charArray3[1] & MASK_0X_F0) >> SHIFT_4); + charArray4[2] = ((charArray3[1] & MASK_0X0_F) << SHIFT_2) + + ((charArray3[2] & MASK_0X_C0) >> SHIFT_6); + charArray4[3] = charArray3[2] & MASK_0X3_F; + + for (index3 = 0; index3 < 4; index3++) { + result += BASE64_CHARS[charArray4[index3]]; + } + index3 = 0; } } - if (i) { - for (j = i; j < 3; j++) - char_array_3[j] = '\0'; + if (index3 != 0) { + for (int j = index3; j < 3; j++) { + charArray3[j] = '\0'; + } - char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; - char_array_4[1] = - ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); - char_array_4[2] = - ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); - char_array_4[3] = char_array_3[2] & 0x3f; + charArray4[0] = (charArray3[0] & MASK_0X_FC) >> SHIFT_2; + charArray4[1] = ((charArray3[0] & MASK_0X03) << SHIFT_4) + + ((charArray3[1] & MASK_0X_F0) >> SHIFT_4); + charArray4[2] = ((charArray3[1] & MASK_0X0_F) << SHIFT_2) + + ((charArray3[2] & MASK_0X_C0) >> SHIFT_6); + charArray4[3] = charArray3[2] & MASK_0X3_F; - for (j = 0; (j < i + 1); j++) - ret += base64_chars[char_array_4[j]]; + for (int j = 0; j < index3 + 1; j++) { + result += BASE64_CHARS[charArray4[j]]; + } - while ((i++ < 3)) - ret += '='; + while (index3++ < 3) { + result += '='; + } } - return ret; + return result; } -static inline bool is_base64(unsigned char c) { - return (isalnum(c) || (c == '+') || (c == '/')); +static inline auto isBase64(unsigned char character) -> bool { + return ((isalnum(character) != 0) || (character == '+') || + (character == '/')); } -std::string base64_decode(std::string const& encoded_string) { - int in_len = encoded_string.size(); - int i = 0; - int j = 0; - int in_ = 0; - unsigned char char_array_4[4], char_array_3[3]; - std::string ret; - - while (in_len-- && (encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { - char_array_4[i++] = encoded_string[in_]; in_++; - if (i ==4) { - for (i = 0; i < 4; i++) - char_array_4[i] = base64_chars.find(char_array_4[i]); - - char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); - char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); - char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; - - for (i = 0; (i < 3); i++) - ret += char_array_3[i]; - i = 0; +auto base64Decode(std::string const& encoded_string) -> std::string { + std::size_t inputLength = encoded_string.size(); + int index3 = 0; + int inputIndex = 0; + std::array charArray4; + std::array charArray3; + std::string result; + + while (((inputLength--) != 0) && (encoded_string[inputIndex] != '=') && + isBase64(encoded_string[inputIndex])) { + charArray4[index3++] = encoded_string[inputIndex]; + inputIndex++; + if (index3 == 4) { + for (index3 = 0; index3 < 4; index3++) { + charArray4[index3] = BASE64_CHARS.find(charArray4[index3]); + } + + charArray3[0] = (charArray4[0] << SHIFT_2) + + ((charArray4[1] & MASK_0X30) >> SHIFT_4); + charArray3[1] = ((charArray4[1] & MASK_0X0_F) << SHIFT_4) + + ((charArray4[2] & MASK_0X3_C) >> SHIFT_2); + charArray3[2] = + ((charArray4[2] & MASK_0X03) << SHIFT_6) + charArray4[3]; + + for (index3 = 0; index3 < 3; index3++) { + result += charArray3[index3]; + } + index3 = 0; } } - if (i) { - for (j = 0; j < i; j++) - char_array_4[j] = base64_chars.find(char_array_4[j]); + if (index3 != 0) { + for (int j = 0; j < index3; j++) { + charArray4[j] = BASE64_CHARS.find(charArray4[j]); + } - char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); - char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); - char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + charArray3[0] = (charArray4[0] << SHIFT_2) + + ((charArray4[1] & MASK_0X30) >> SHIFT_4); + charArray3[1] = ((charArray4[1] & MASK_0X0_F) << SHIFT_4) + + ((charArray4[2] & MASK_0X3_C) >> SHIFT_2); + charArray3[2] = + ((charArray4[2] & MASK_0X03) << SHIFT_6) + charArray4[3]; - for (j = 0; (j < i - 1); j++) ret += char_array_3[j]; + for (int j = 0; j < index3 - 1; j++) { + result += charArray3[j]; + } } - return ret; -} + return result; +} \ No newline at end of file diff --git a/modules/lithium.image/src/binning.cpp b/modules/lithium.image/src/binning.cpp new file mode 100644 index 00000000..97af4e84 --- /dev/null +++ b/modules/lithium.image/src/binning.cpp @@ -0,0 +1,212 @@ +#include "binning.hpp" + +#include +#include + +constexpr int MAX_IMAGE_SIZE = 2000; + +CamBin mergeImageBasedOnSize(const cv::Mat& image) { + const int WIDTH = image.cols; + const int HEIGHT = image.rows; + + CamBin result; + + if (WIDTH > MAX_IMAGE_SIZE || HEIGHT > MAX_IMAGE_SIZE) { + constexpr std::array BIN_SIZES{2, 3, 4}; + for (const auto BIN : BIN_SIZES) { + if (WIDTH / BIN <= MAX_IMAGE_SIZE && + HEIGHT / BIN <= MAX_IMAGE_SIZE) { + result.camxbin = result.camybin = static_cast(BIN); + break; + } + } + } + + return result; +} + +cv::Mat processMatWithBinAvg(const cv::Mat& image, uint32_t camxbin, + uint32_t camybin, bool isColor, bool isAVG) { + CV_Assert(!image.empty() && camxbin > 0 && camybin > 0); + + const uint32_t WIDTH = image.cols; + const uint32_t HEIGHT = image.rows; + const uint32_t DEPTH = image.elemSize() * 8; + const uint32_t CHANNELS = image.channels(); + + std::span srcSpan{image.data, + image.total() * image.elemSize()}; + + const uint32_t NEW_WIDTH = WIDTH / camxbin; + const uint32_t NEW_HEIGHT = HEIGHT / camybin; + + cv::Mat result; + + if (isAVG) { + result = processWithAverage(srcSpan, WIDTH, HEIGHT, DEPTH, NEW_WIDTH, + NEW_HEIGHT, camxbin, camybin); + } else { + result = processWithBinning(srcSpan, WIDTH, HEIGHT, CHANNELS, DEPTH, + NEW_WIDTH, NEW_HEIGHT, camxbin, camybin, + isColor); + } + + return result; +} + +template +T calculateAverage(std::span values, size_t binSize) { + return std::reduce(values.begin(), values.end(), T{}) / binSize; +} + +cv::Mat processWithAverage(std::span srcData, uint32_t width, + uint32_t height, uint32_t depth, uint32_t newWidth, + uint32_t newHeight, uint32_t camxbin, + uint32_t camybin) { + cv::Mat result; + const uint32_t BIN_AREA = camxbin * camybin; + + switch (depth) { + case 8: { + result = cv::Mat::zeros(newHeight, newWidth, CV_8U); + parallel_process_bin(srcData, result, width, height, + camxbin, camybin, BIN_AREA); + break; + } + case 16: { + result = cv::Mat::zeros(newHeight, newWidth, CV_16U); + parallel_process_bin(srcData, result, width, height, + camxbin, camybin, BIN_AREA); + break; + } + case 32: { + result = cv::Mat::zeros(newHeight, newWidth, CV_32S); + parallel_process_bin(srcData, result, width, height, + camxbin, camybin, BIN_AREA); + break; + } + default: + throw std::runtime_error("Unsupported bit depth"); + } + + return result; +} + +template +void parallel_process_bin(std::span srcData, cv::Mat& result, + uint32_t width, uint32_t height, uint32_t camxbin, + uint32_t camybin, uint32_t binArea) { + const uint32_t NEW_WIDTH = width / camxbin; + const uint32_t NEW_HEIGHT = height / camybin; + + std::for_each( + boost::counting_iterator(0), + boost::counting_iterator(NEW_HEIGHT), [&](uint32_t y) { + for (uint32_t x = 0; x < NEW_WIDTH; ++x) { + T sum = 0; + for (uint32_t by = 0; by < camybin; ++by) { + for (uint32_t bx = 0; bx < camxbin; ++bx) { + const uint32_t SRC_X = x * camxbin + bx; + const uint32_t SRC_Y = y * camybin + by; + const auto* src = + reinterpret_cast(srcData.data()); + sum += src[SRC_Y * width + SRC_X]; + } + } + result.at(y, x) = static_cast(sum / binArea); + } + }); +} + +cv::Mat processWithBinning(std::span srcData, uint32_t width, + uint32_t height, uint32_t channels, uint32_t depth, + uint32_t newWidth, uint32_t newHeight, + uint32_t camxbin, uint32_t camybin, bool isColor) { + if (isColor) { + cv::Mat srcMat(height, width, depth == 8 ? CV_8UC3 : CV_16UC3, + const_cast(srcData.data())); + cv::Mat dstMat(newHeight, newWidth, srcMat.type()); + cv::resize(srcMat, dstMat, dstMat.size(), 0, 0, cv::INTER_AREA); + return dstMat; + } + + cv::Mat result; + const uint32_t elemSize = depth / 8; + + switch (depth) { + case 8: + result = cv::Mat::zeros(newHeight, newWidth, CV_8U); + process_mono_bin(srcData, result, width, camxbin, camybin); + break; + case 16: + result = cv::Mat::zeros(newHeight, newWidth, CV_16U); + process_mono_bin(srcData, result, width, camxbin, + camybin); + break; + case 32: + result = cv::Mat::zeros(newHeight, newWidth, CV_32S); + process_mono_bin(srcData, result, width, camxbin, + camybin); + break; + default: + throw std::runtime_error("Unsupported bit depth"); + } + + return result; +} + +template +void process_mono_bin(std::span srcData, cv::Mat& result, + uint32_t srcStride, uint32_t camxbin, uint32_t camybin) { + const uint32_t NEW_WIDTH = result.cols; + const uint32_t NEW_HEIGHT = result.rows; + + std::for_each( + boost::counting_iterator(0), + boost::counting_iterator(NEW_HEIGHT), [&](uint32_t y) { + for (uint32_t x = 0; x < NEW_WIDTH; ++x) { + T sum = 0; + const auto* src = reinterpret_cast(srcData.data()); + + for (uint32_t by = 0; by < camybin; ++by) { + for (uint32_t bx = 0; bx < camxbin; ++bx) { + const uint32_t SRC_X = x * camxbin + bx; + const uint32_t SRC_Y = y * camybin + by; + sum += src[SRC_Y * srcStride + SRC_X]; + } + } + + if constexpr (std::is_same_v) { + result.at(y, x) = sum; + } else { + result.at(y, x) = static_cast( + std::min(sum, std::numeric_limits::max())); + } + } + }); +} + +template void parallel_process_bin(std::span srcData, + cv::Mat& result, uint32_t width, + uint32_t height, uint32_t camxbin, + uint32_t camybin, uint32_t binArea); +template void parallel_process_bin(std::span srcData, + cv::Mat& result, uint32_t width, + uint32_t height, uint32_t camxbin, + uint32_t camybin, + uint32_t binArea); +template void parallel_process_bin(std::span srcData, + cv::Mat& result, uint32_t width, + uint32_t height, uint32_t camxbin, + uint32_t camybin, + uint32_t binArea); + +template void process_mono_bin(std::span srcData, + cv::Mat& result, uint32_t srcStride, + uint32_t camxbin, uint32_t camybin); +template void process_mono_bin(std::span srcData, + cv::Mat& result, uint32_t srcStride, + uint32_t camxbin, uint32_t camybin); +template void process_mono_bin(std::span srcData, + cv::Mat& result, uint32_t srcStride, + uint32_t camxbin, uint32_t camybin); \ No newline at end of file diff --git a/modules/lithium.image/src/bmp.cpp b/modules/lithium.image/src/bmp.cpp index b4671a76..df8177c0 100644 --- a/modules/lithium.image/src/bmp.cpp +++ b/modules/lithium.image/src/bmp.cpp @@ -1,104 +1,180 @@ -#include -#include -#include -#include -#include +#include "bmp.hpp" -union ByteUnion { - uint32_t value; - std::byte bytes[4]; -}; +#include +#include + +#include "atom/log/loguru.hpp" +// 转换小端到本地字节序 uint32_t littleToNative(uint32_t little) { - ByteUnion u; - u.value = little; + ByteUnion byteUnion; + byteUnion.value = little; #ifdef _WIN32 - return u.value; + return byteUnion.value; #else - return __builtin_bswap32(u.value); + return __builtin_bswap32(byteUnion.value); #endif } uint16_t littleToNative(uint16_t little) { - ByteUnion u; - u.value = little; + ByteUnion byteUnion; + byteUnion.value = little; #ifdef _WIN32 - return u.value >> 16; + return static_cast(byteUnion.value >> 16); #else - return __builtin_bswap16(u.value); + return __builtin_bswap16(static_cast(byteUnion.value)); #endif } -struct Image { - std::vector data; - std::vector greyData; - uint32_t sizeX, sizeY; -}; +Image::Image() : sizeX(0), sizeY(0) {} -bool loadBMPImage(const std::string& filename, Image& image) { - std::ifstream file(filename, std::ios::binary); +uint32_t readEndianInt(std::ifstream& file) { + uint32_t value; + file.read(reinterpret_cast(&value), sizeof(value)); if (!file) { - std::cerr << "Failed to open file: " << filename << std::endl; - return false; + LOG_F(ERROR, "Failed to read uint32_t from file."); + throw std::runtime_error("Failed to read uint32_t from file."); } + return littleToNative(value); +} - file.ignore(18); // Skip BMP header - - image.sizeX = readEndianInt(file); - image.sizeY = readEndianInt(file); - - uint16_t planes = readEndianShort(file); - if (planes != 1) { - std::cerr << "Planes from " << filename << " is not 1: " << planes - << std::endl; - return false; +uint16_t readEndianShort(std::ifstream& file) { + uint16_t value; + file.read(reinterpret_cast(&value), sizeof(value)); + if (!file) { + LOG_F(ERROR, "Failed to read uint16_t from file."); + throw std::runtime_error("Failed to read uint16_t from file."); } + return littleToNative(value); +} - uint16_t bpp = readEndianShort(file); - if (bpp != 24) { - std::cerr << "Bpp from " << filename << " is not 24: " << bpp - << std::endl; +bool loadBMPImage(const std::string& filename, Image& image) { + try { + LOG_F(INFO, "Loading BMP image: %s", filename.c_str()); + std::ifstream file(filename, std::ios::binary); + if (!file) { + LOG_F(ERROR, "Failed to open file: %s", filename.c_str()); + return false; + } + + constexpr int BMP_HEADER_SIZE = 18; + constexpr int BMP_HEADER_REST = 24; + constexpr int BPP_24 = 24; + file.ignore(BMP_HEADER_SIZE); // Skip BMP header + + image.sizeX = readEndianInt(file); + LOG_F(INFO, "Image width: %u", image.sizeX); + image.sizeY = readEndianInt(file); + LOG_F(INFO, "Image height: %u", image.sizeY); + + uint16_t planes = readEndianShort(file); + LOG_F(INFO, "Planes: %u", planes); + if (planes != 1) { + LOG_F(ERROR, "Planes from %s is not 1: %u", filename.c_str(), + planes); + return false; + } + + uint16_t bpp = readEndianShort(file); + LOG_F(INFO, "Bits per pixel: %u", bpp); + if (bpp != BPP_24) { + LOG_F(ERROR, "Bpp from %s is not 24: %u", filename.c_str(), bpp); + return false; + } + + file.ignore(BMP_HEADER_REST); // Skip the rest of the BMP header + + uint32_t size = image.sizeX * image.sizeY * 3; + image.data.resize(size); + if (!file.read(reinterpret_cast(image.data.data()), size)) { + LOG_F(ERROR, "Error reading image data from %s", filename.c_str()); + return false; + } + LOG_F(INFO, "Image data read successfully."); + + // Convert BGR to RGB + for (uint32_t i = 0; i < size; i += 3) { + std::swap(image.data[i], image.data[i + 2]); + } + LOG_F(INFO, "Converted BGR to RGB."); + + uint32_t greySize = image.sizeX * image.sizeY; + image.greyData.resize(greySize); + + // Convert to grayscale + constexpr int RED_WEIGHT = 299; + constexpr int GREEN_WEIGHT = 587; + constexpr int BLUE_WEIGHT = 114; + constexpr int ROUNDING_OFFSET = 500; + constexpr int SCALE = 1000; + + for (uint32_t i = 0; i < greySize; ++i) { + uint32_t offset = i * 3; + auto red = static_cast(image.data[offset + 2]); + auto green = static_cast(image.data[offset + 1]); + auto blue = static_cast(image.data[offset]); + uint8_t grey = (RED_WEIGHT * red + GREEN_WEIGHT * green + + BLUE_WEIGHT * blue + ROUNDING_OFFSET) / + SCALE; + image.greyData[i] = static_cast(grey); + } + LOG_F(INFO, "Converted image to grayscale."); + + return true; + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception occurred: %s", e.what()); return false; } +} - file.ignore(24); // Skip the rest of the BMP header - - uint32_t size = image.sizeX * image.sizeY * 3; - image.data.resize(size); - if (!file.read(reinterpret_cast(image.data.data()), size)) { - std::cerr << "Error reading image data from " << filename << std::endl; +bool saveGrayImage(const std::string& filename, const Image& image) { + try { + LOG_F(INFO, "Saving grayscale image to: %s", filename.c_str()); + std::ofstream outFile(filename, std::ios::binary); + if (!outFile) { + LOG_F(ERROR, "Failed to open file for writing: %s", + filename.c_str()); + return false; + } + + // 简单的灰度图保存为原始数据 + outFile.write(reinterpret_cast(image.greyData.data()), + image.greyData.size()); + if (!outFile) { + LOG_F(ERROR, "Failed to write grayscale data to: %s", + filename.c_str()); + return false; + } + + LOG_F(INFO, "Grayscale image saved successfully."); + return true; + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception while saving grayscale image: %s", e.what()); return false; } +} - // Convert BGR to RGB - for (uint32_t i = 0; i < size; i += 3) { - std::swap(image.data[i], image.data[i + 2]); +int main(int argc, char* argv[]) { + loguru::init(argc, argv); + if (argc < 3) { + LOG_F(ERROR, "Usage: %s ", + argv[0]); + return 1; } - uint32_t greySize = image.sizeX * image.sizeY; - image.greyData.resize(greySize); - - // Convert to grayscale - for (uint32_t i = 0; i < greySize; ++i) { - uint32_t offset = i * 3; - uint8_t r = static_cast(image.data[offset + 2]); - uint8_t g = static_cast(image.data[offset + 1]); - uint8_t b = static_cast(image.data[offset]); - uint8_t grey = (299 * r + 587 * g + 114 * b + 500) / 1000; - image.greyData[i] = static_cast(grey); + Image image; + if (loadBMPImage(argv[1], image)) { + LOG_F(INFO, "BMP image loaded successfully."); + if (saveGrayImage(argv[2], image)) { + LOG_F(INFO, "Grayscale image saved successfully."); + } else { + LOG_F(ERROR, "Failed to save grayscale image."); + return 1; + } + } else { + LOG_F(ERROR, "Failed to load BMP image."); + return 1; } - return true; -} - -uint32_t readEndianInt(std::ifstream& file) { - uint32_t value; - file.read(reinterpret_cast(&value), sizeof(value)); - return littleToNative(value); -} - -uint16_t readEndianShort(std::ifstream& file) { - uint16_t value; - file.read(reinterpret_cast(&value), sizeof(value)); - return littleToNative(value); -} + return 0; +} \ No newline at end of file diff --git a/modules/lithium.image/src/centroid.cpp b/modules/lithium.image/src/centroid.cpp new file mode 100644 index 00000000..88ec5570 --- /dev/null +++ b/modules/lithium.image/src/centroid.cpp @@ -0,0 +1,167 @@ +#include "centroid.hpp" + +#include "atom/error/exception.hpp" +#include "atom/log/loguru.hpp" + +// 命名常量定义 +constexpr double EPSILON_TOLERANCE = 1e-10; +constexpr float SUBPIXEL_WEIGHT = 4.0F; +constexpr int CIRCLE_RADIUS = 3; +constexpr int CIRCLE_THICKNESS = 1; +constexpr int NORMALIZE_MIN = 0; +constexpr int NORMALIZE_MAX = 255; +constexpr int ROI_SIZE = 3; +constexpr float ROI_CENTER = 1.0F; +constexpr float ROI_OFFSET = 1.0F; + +auto StarCentroid::readFits(const std::string& filename) -> cv::Mat { + LOG_F(INFO, "Reading FITS file: {}", filename); + try { + cv::Mat image = cv::imread(filename, cv::IMREAD_ANYDEPTH); + if (image.empty()) { + LOG_F(ERROR, "Failed to read image file: {}", filename); + THROW_RUNTIME_ERROR("Image reading failed"); + } + image.convertTo(image, CV_32F); + LOG_F(INFO, "Successfully read and converted image file: {}", filename); + return image; + } catch (const cv::Exception& e) { + LOG_F(ERROR, "OpenCV exception while reading image: {}", e.what()); + throw; + } +} + +auto StarCentroid::calcIntensityWeightedCenter(const cv::Mat& image) + -> cv::Point2f { + LOG_F(INFO, "Calculating intensity-weighted center"); + CV_Assert(image.type() == CV_32F); + + cv::Mat moments; + cv::moments(image, true); + + double m00 = moments.at(0, 0); + double m10 = moments.at(1, 0); + double m01 = moments.at(0, 1); + + LOG_F(INFO, "Moments calculated: m00={}, m10={}, m01={}", m00, m10, m01); + + if (std::abs(m00) < EPSILON_TOLERANCE) { + LOG_F(WARNING, "Zero or very small total intensity"); + return {0.0F, 0.0F}; + } + + cv::Point2f center = {static_cast(m10 / m00), + static_cast(m01 / m00)}; + LOG_F(INFO, "Intensity-weighted center: ({}, {})", center.x, center.y); + return center; +} + +auto StarCentroid::calcSubPixelCenter(const cv::Mat& roi, + cv::Point2f&& initCenter, float epsilon, + int maxIterations) -> cv::Point2f { + LOG_F(INFO, "Calculating sub-pixel center"); + CV_Assert(roi.type() == CV_32F); + CV_Assert(roi.rows == ROI_SIZE && roi.cols == ROI_SIZE); + + cv::Point2f center = std::move(initCenter); + +#pragma unroll + for (int iter = 0; iter < maxIterations; ++iter) { + float centerVal = roi.at(1, 1); + float centerValDouble = 2.0F * centerVal; + + std::array subPixels{ + (roi.at(1, 0) + roi.at(0, 1) + centerValDouble) / + SUBPIXEL_WEIGHT, + (roi.at(1, 2) + roi.at(0, 1) + centerValDouble) / + SUBPIXEL_WEIGHT, + (roi.at(1, 2) + roi.at(2, 1) + centerValDouble) / + SUBPIXEL_WEIGHT, + (roi.at(1, 0) + roi.at(2, 1) + centerValDouble) / + SUBPIXEL_WEIGHT}; + + auto* maxElement = std::max_element(subPixels.begin(), subPixels.end()); + auto maxIndex = + static_cast(std::distance(subPixels.begin(), maxElement)); + + auto shiftAmount = static_cast(std::pow(2.0, -(iter + 1))); + + const std::array K_DIRECTIONS{ + {{-shiftAmount, -shiftAmount}, + {shiftAmount, -shiftAmount}, + {shiftAmount, shiftAmount}, + {-shiftAmount, shiftAmount}}}; + + cv::Point2f oldCenter = center; + center += K_DIRECTIONS[maxIndex]; + + LOG_F(INFO, "Iteration {}: center moved to ({}, {})", iter, center.x, + center.y); + + if (cv::norm(center - oldCenter) < epsilon) { + LOG_F(INFO, "Sub-pixel convergence reached at iteration {}", iter); + break; + } + } + + LOG_F(INFO, "Final sub-pixel center: ({}, {})", center.x, center.y); + return center; +} + +auto StarCentroid::findCentroid(const cv::Mat& image) -> CentroidResult { + LOG_F(INFO, "Finding centroid"); + CentroidResult result; + + result.weightedCenter = calcIntensityWeightedCenter(image); + result.roundedCenter = cv::Point2i(cvRound(result.weightedCenter.x), + cvRound(result.weightedCenter.y)); + + LOG_F(INFO, "Weighted center: ({}, {}), Rounded center: ({}, {})", + result.weightedCenter.x, result.weightedCenter.y, + result.roundedCenter.x, result.roundedCenter.y); + + cv::Rect roi(result.roundedCenter.x - 1, result.roundedCenter.y - 1, + ROI_SIZE, ROI_SIZE); + roi &= cv::Rect(0, 0, image.cols, image.rows); + + if (roi.width != ROI_SIZE || roi.height != ROI_SIZE) { + LOG_F(ERROR, "Unable to extract 3x3 ROI - too close to image edge"); + result.subPixelCenter = result.weightedCenter; + return result; + } + + cv::Mat roiMat = image(roi); + cv::Point2f localCenter{ROI_CENTER, ROI_CENTER}; + cv::Point2f refinedLocal = + calcSubPixelCenter(roiMat, std::move(localCenter)); + + result.subPixelCenter = {static_cast(result.roundedCenter.x) - + ROI_OFFSET + refinedLocal.x, + static_cast(result.roundedCenter.y) - + ROI_OFFSET + refinedLocal.y}; + + LOG_F(INFO, "Sub-pixel center: ({}, {})", result.subPixelCenter.x, + result.subPixelCenter.y); + return result; +} + +void visualizeResults(const cv::Mat& image, + const StarCentroid::CentroidResult& result) { + LOG_F(INFO, "Visualizing results"); + cv::Mat display; + cv::normalize(image, display, NORMALIZE_MIN, NORMALIZE_MAX, + cv::NORM_MINMAX); + display.convertTo(display, CV_8U); + cv::cvtColor(display, display, cv::COLOR_GRAY2BGR); + + cv::circle(display, result.weightedCenter, CIRCLE_RADIUS, + cv::Scalar(0, NORMALIZE_MAX, 0), CIRCLE_THICKNESS); + cv::circle(display, result.subPixelCenter, CIRCLE_RADIUS, + cv::Scalar(0, 0, NORMALIZE_MAX), CIRCLE_THICKNESS); + cv::circle(display, result.roundedCenter, CIRCLE_RADIUS, + cv::Scalar(NORMALIZE_MAX, 0, 0), CIRCLE_THICKNESS); + + cv::imshow("Star Centroid", display); + cv::waitKey(0); + LOG_F(INFO, "Results visualized"); +} \ No newline at end of file diff --git a/modules/lithium.image/src/convert.cpp b/modules/lithium.image/src/convert.cpp deleted file mode 100644 index 8dfa6c15..00000000 --- a/modules/lithium.image/src/convert.cpp +++ /dev/null @@ -1,221 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "fitsio.hpp" - -#include - -void saveFitsAsJPG(const std::string& filename) { - cv::Mat image; - cv::Mat image16; - cv::Mat SendImage; - readFits(filename.c_str(), image); - - std::vector stars = Tools::FindStarsByStellarSolver(true, true); - - if (stars.size() != 0) { - FWHM = stars[0].HFR; - } else { - FWHM = -1; - } - - if (image16.depth() == 8) - image.convertTo(image16, CV_16UC1, 256, 0); // x256 MSB alignment - else - image.convertTo(image16, CV_16UC1, 1, 0); - - if (FWHM != -1) { - // Draw detection results on the original image - cv::Point center(stars[0].x, stars[0].y); - cv::circle(image16, center, static_cast(FWHM), cv::Scalar(0, 0, 255), 1); // Draw HFR circle - cv::circle(image16, center, 1, cv::Scalar(0, 255, 0), -1); // Draw center point - // Display HFR value on the image - std::string hfrText = cv::format("%.2f", stars[0].HFR); - cv::putText(image16, hfrText, cv::Point(stars[0].x - FWHM, stars[0].y - FWHM - 5), cv::FONT_HERSHEY_SIMPLEX, 0.4, cv::Scalar(0, 0, 255), 1); - } - - cv::Mat NewImage = image16; - - FWHMCalOver = true; - - // Scale the image to the range of 0-255 - cv::normalize(NewImage, SendImage, 0, 255, cv::NORM_MINMAX, CV_8U); - - // Generate a unique ID - uuid_t uuid; - uuid_generate(uuid); - char uniqueId[37]; - uuid_unparse(uuid, uniqueId); - - // List all files with "CaptureImage" prefix - std::filesystem::path directory(vueDirectoryPath); - std::vector fileList; - for (const auto& entry : std::filesystem::directory_iterator(directory)) { - if (entry.path().extension() == ".jpg" && entry.path().stem().string().find("CaptureImage") == 0) { - fileList.push_back(entry.path()); - } - } - - // Remove all matching files - for (const auto& filePath : fileList) { - std::filesystem::remove(filePath); - } - - // Remove the previous image file - if (PriorROIImage != "NULL") { - std::filesystem::remove(PriorROIImage); - } - - // Save the new image with a unique ID in the filename - std::string fileName = "CaptureImage_" + std::string(uniqueId) + ".jpg"; - std::string filePath = vueDirectoryPath + fileName; - - bool saved = cv::imwrite(filePath, SendImage); - - std::string Command = "ln -sf " + filePath + " " + vueImagePath + fileName; - system(Command.c_str()); - - PriorROIImage = vueImagePath + fileName; - - if (saved) { - // emit wsThread->sendMessageToClient("SaveJpgSuccess:" + QString::fromStdString(fileName)); - - if (FWHM != -1) { - dataPoints.emplace_back(CurrentPosition, FWHM); - - qDebug() << "dataPoints:" << CurrentPosition << "," << FWHM; - - float a, b, c; - Tools::fitQuadraticCurve(dataPoints, a, b, c); - - if (dataPoints.size() >= 5) { - std::vector LineData; - - for (float x = CurrentPosition - 3000; x <= CurrentPosition + 3000; x += 10) { - float y = a * x * x + b * x + c; - LineData.emplace_back(x, y); - } - - // Calculate the x-coordinate where the derivative is zero - float x_min = -b / (2 * a); - minPoint_X = x_min; - // Calculate the y-coordinate of the minimum point - float y_min = a * x_min * x_min + b * x_min + c; - - std::ostringstream dataString; - for (const auto& point : LineData) { - dataString << point.x() << "|" << point.y() << ":"; - } - - R2 = Tools::calculateRSquared(dataPoints, a, b, c); - qDebug() << "RSquared: " << R2; - - // emit wsThread->sendMessageToClient("fitQuadraticCurve:" + QString::fromStdString(dataString.str())); - // emit wsThread->sendMessageToClient("fitQuadraticCurve_minPoint:" + QString::number(x_min) + ":" + QString::number(y_min)); - } - } - } else { - qDebug() << "Save Image Failed..."; - } -} - -int saveFitsAsPNG(const std::string& fitsFileName) { - CaptureTestTimer.start(); - qDebug() << "\033[32m" << "Save image data start." << "\033[0m"; - - cv::Mat image; - int status = Tools::readFits(fitsFileName.c_str(), image); - - // std::vector stars = Tools::FindStarsByStellarSolver(false, true); - - if (status != 0) { - qDebug() << "Failed to read FITS file: " << fitsFileName; - return status; - } - - int width = image.cols; - int height = image.rows; - - qDebug() << "image size:" << width << "," << height; - qDebug() << "image depth:" << image.depth(); - qDebug() << "image channels:" << image.channels(); - - std::vector imageData; - imageData.assign(image.data, image.data + image.total() * image.channels() * 2); - qDebug() << "imageData Size:" << imageData.size() << "," << image.data + image.total() * image.channels(); - - // Generate a unique ID - uuid_t uuid; - uuid_generate(uuid); - char uniqueId[37]; - uuid_unparse(uuid, uniqueId); - - // List all files with "CaptureImage" prefix - std::filesystem::path directory(vueDirectoryPath); - std::vector fileList; - for (const auto& entry : std::filesystem::directory_iterator(directory)) { - if (entry.path().extension() == ".bin" && entry.path().stem().string().find("CaptureImage") == 0) { - fileList.push_back(entry.path()); - } - } - - // Remove all matching files - for (const auto& filePath : fileList) { - std::filesystem::remove(filePath); - } - - // Remove the previous image file - if (PriorCaptureImage != "NULL") { - std::filesystem::remove(PriorCaptureImage); - } - - std::string fileName_ = "CaptureImage_" + std::string(uniqueId) + ".bin"; - std::string filePath_ = vueDirectoryPath + fileName_; - - std::ofstream outFile(filePath_, std::ios::binary); - if (!outFile) { - throw std::runtime_error("Failed to open file for writing."); - } - - outFile.write(reinterpret_cast(imageData.data()), imageData.size()); - if (!outFile) { - throw std::runtime_error("Failed to write data to file."); - } - - outFile.close(); - if (!outFile) { - throw std::runtime_error("Failed to close the file properly."); - } - - CaptureTestTime = CaptureTestTimer.elapsed(); - qDebug() << "\033[32m" << "Save image Data completed:" << CaptureTestTime << "milliseconds" << "\033[0m"; - CaptureTestTimer.invalidate(); - - std::string Command = "ln -sf " + filePath_ + " " + vueImagePath + fileName_; - system(Command.c_str()); - - PriorCaptureImage = vueImagePath + fileName_; - - // emit wsThread->sendMessageToClient("SaveBinSuccess:" + QString::fromStdString(fileName_)); - isStagingImage = true; - SavedImage = QString::fromStdString(fileName_); - - std::vector stars = Tools::FindStarsByStellarSolver(false, true); - - std::ostringstream dataString; - for (const auto& star : stars) { - dataString << star.x << "|" << star.y << "|" << star.HFR << ":"; - } - // emit wsThread->sendMessageToClient("DetectedStars:" + QString::fromStdString(dataString.str())); - - return 0; -} diff --git a/modules/lithium.image/src/convolve.cpp b/modules/lithium.image/src/convolve.cpp index bda1383a..e86e1a3b 100644 --- a/modules/lithium.image/src/convolve.cpp +++ b/modules/lithium.image/src/convolve.cpp @@ -1,71 +1,181 @@ #include "convolve.hpp" - #include - -void convolve(const cv::Mat& input, const cv::Mat& kernel, cv::Mat& output) { - // Use filter2D to apply convolution - cv::filter2D(input, output, -1, kernel, cv::Point(-1, -1), 0, - cv::BORDER_DEFAULT); +#include +#include "atom/log/loguru.hpp" + +// Constants +constexpr double EPSILON = 1e-10; +constexpr int MIN_KERNEL_SIZE = 3; + +namespace { +// Helper function to validate inputs +void validateInputs(const cv::Mat& input, const cv::Mat& kernel) { + LOG_F(INFO, "Validating inputs - Image: {}x{}, Kernel: {}x{}", input.cols, + input.rows, kernel.cols, kernel.rows); + + if (input.empty()) { + LOG_F(ERROR, "Input image is empty"); + throw std::invalid_argument("Input image is empty"); + } + + if (kernel.empty()) { + LOG_F(ERROR, "Kernel is empty"); + throw std::invalid_argument("Kernel is empty"); + } + + if (kernel.cols < MIN_KERNEL_SIZE || kernel.rows < MIN_KERNEL_SIZE) { + LOG_F(ERROR, "Kernel size too small: {}x{}", kernel.cols, kernel.rows); + throw std::invalid_argument("Kernel size too small"); + } +} +} // namespace + +void convolve(const cv::Mat& input, const cv::Mat& kernel, cv::Mat& output, + int borderType) { + LOG_F(INFO, "Starting spatial domain convolution"); + try { + validateInputs(input, kernel); + + auto start = std::chrono::high_resolution_clock::now(); + cv::filter2D(input, output, -1, kernel, cv::Point(-1, -1), 0, + borderType); + auto end = std::chrono::high_resolution_clock::now(); + auto duration = + std::chrono::duration_cast(end - start); + + LOG_F(INFO, "Convolution completed in {}ms", duration.count()); + } catch (const cv::Exception& e) { + LOG_F(ERROR, "OpenCV error during convolution: {}", e.what()); + throw; + } } void dftConvolve(const cv::Mat& input, const cv::Mat& kernel, cv::Mat& output) { - cv::Mat padded; // add zero padding for convolution - int dftM = cv::getOptimalDFTSize(input.rows + kernel.rows - 1); - int dftN = cv::getOptimalDFTSize(input.cols + kernel.cols - 1); + LOG_F(INFO, "Starting frequency domain convolution"); + try { + validateInputs(input, kernel); - cv::copyMakeBorder(input, padded, 0, dftM - input.rows, 0, - dftN - input.cols, cv::BORDER_CONSTANT, - cv::Scalar::all(0)); + auto start = std::chrono::high_resolution_clock::now(); - cv::Mat kernelPadded; - cv::copyMakeBorder(kernel, kernelPadded, 0, dftM - kernel.rows, 0, - dftN - kernel.cols, cv::BORDER_CONSTANT, - cv::Scalar::all(0)); + cv::Mat padded, kernelPadded; + int dftM = cv::getOptimalDFTSize(input.rows + kernel.rows - 1); + int dftN = cv::getOptimalDFTSize(input.cols + kernel.cols - 1); - // Convert to 32F for DFT - padded.convertTo(padded, CV_32F); - kernelPadded.convertTo(kernelPadded, CV_32F); + LOG_F(INFO, "Optimal DFT size: {}x{}", dftM, dftN); - // DFT - cv::dft(padded, padded, cv::DFT_COMPLEX_OUTPUT); - cv::dft(kernelPadded, kernelPadded, cv::DFT_COMPLEX_OUTPUT); + cv::copyMakeBorder(input, padded, 0, dftM - input.rows, 0, + dftN - input.cols, cv::BORDER_CONSTANT, + cv::Scalar::all(0)); + cv::copyMakeBorder(kernel, kernelPadded, 0, dftM - kernel.rows, 0, + dftN - kernel.cols, cv::BORDER_CONSTANT, + cv::Scalar::all(0)); - // Multiply in frequency domain - cv::mulSpectrums(padded, kernelPadded, padded, 0); + padded.convertTo(padded, CV_32F); + kernelPadded.convertTo(kernelPadded, CV_32F); - // Inverse DFT - cv::dft(padded, padded, - cv::DFT_INVERSE + cv::DFT_SCALE + cv::DFT_REAL_OUTPUT); + cv::dft(padded, padded, cv::DFT_COMPLEX_OUTPUT); + cv::dft(kernelPadded, kernelPadded, cv::DFT_COMPLEX_OUTPUT); - // Crop the image to undo padding - output = padded(cv::Rect(0, 0, input.cols, input.rows)); + cv::mulSpectrums(padded, kernelPadded, padded, 0); + cv::dft(padded, padded, + cv::DFT_INVERSE + cv::DFT_SCALE + cv::DFT_REAL_OUTPUT); + + output = padded(cv::Rect(0, 0, input.cols, input.rows)); + + auto end = std::chrono::high_resolution_clock::now(); + auto duration = + std::chrono::duration_cast(end - start); + LOG_F(INFO, "DFT convolution completed in {}ms", duration.count()); + } catch (const cv::Exception& e) { + LOG_F(ERROR, "OpenCV error during DFT convolution: {}", e.what()); + throw; + } } -void deconvolve(const cv::Mat& input, const cv::Mat& kernel, cv::Mat& output) { - // First, compute the DFT of the input image and kernel - cv::Mat inputDFT, kernelDFT; - int dftM = cv::getOptimalDFTSize(input.rows + kernel.rows - 1); - int dftN = cv::getOptimalDFTSize(input.cols + kernel.cols - 1); - - cv::Mat tempA, tempB; - cv::copyMakeBorder(input, tempA, 0, dftM - input.rows, 0, dftN - input.cols, - cv::BORDER_CONSTANT, cv::Scalar::all(0)); - cv::copyMakeBorder(kernel, tempB, 0, dftM - kernel.rows, 0, - dftN - kernel.cols, cv::BORDER_CONSTANT, - cv::Scalar::all(0)); - - cv::dft(tempA, inputDFT, cv::DFT_COMPLEX_OUTPUT); - cv::dft(tempB, kernelDFT, cv::DFT_COMPLEX_OUTPUT); - - // Divide in frequency domain - cv::Mat divResult; - cv::mulSpectrums(inputDFT, kernelDFT, divResult, 0, - true); // true for conjugate multiplication - - // Inverse DFT to get the result - cv::Mat inverseDFT; - cv::dft(divResult, inverseDFT, - cv::DFT_INVERSE | cv::DFT_SCALE | cv::DFT_REAL_OUTPUT); - - output = inverseDFT(cv::Rect(0, 0, input.cols, input.rows)); +void deconvolve(const cv::Mat& input, const cv::Mat& kernel, cv::Mat& output, + double regularization = EPSILON) { + LOG_F(INFO, "Starting deconvolution with regularization = {}", + regularization); + try { + validateInputs(input, kernel); + + auto start = std::chrono::high_resolution_clock::now(); + + cv::Mat inputDFT, kernelDFT; + int dftM = cv::getOptimalDFTSize(input.rows + kernel.rows - 1); + int dftN = cv::getOptimalDFTSize(input.cols + kernel.cols - 1); + + LOG_F(INFO, "Optimal DFT size: {}x{}", dftM, dftN); + + cv::Mat tempA, tempB; + cv::copyMakeBorder(input, tempA, 0, dftM - input.rows, 0, + dftN - input.cols, cv::BORDER_CONSTANT, + cv::Scalar::all(0)); + cv::copyMakeBorder(kernel, tempB, 0, dftM - kernel.rows, 0, + dftN - kernel.cols, cv::BORDER_CONSTANT, + cv::Scalar::all(0)); + + tempA.convertTo(tempA, CV_32F); + tempB.convertTo(tempB, CV_32F); + + cv::dft(tempA, inputDFT, cv::DFT_COMPLEX_OUTPUT); + cv::dft(tempB, kernelDFT, cv::DFT_COMPLEX_OUTPUT); + + // Regularized division in frequency domain + cv::Mat complexI(inputDFT.size(), inputDFT.type()); + for (int i = 0; i < inputDFT.rows; i++) { + for (int j = 0; j < inputDFT.cols / 2; j++) { + float re = kernelDFT.at(i, j)[0]; + float im = kernelDFT.at(i, j)[1]; + float denom = re * re + im * im + regularization; + + complexI.at(i, j)[0] = + (inputDFT.at(i, j)[0] * re + + inputDFT.at(i, j)[1] * im) / + denom; + complexI.at(i, j)[1] = + (inputDFT.at(i, j)[1] * re - + inputDFT.at(i, j)[0] * im) / + denom; + } + } + + cv::dft(complexI, output, + cv::DFT_INVERSE | cv::DFT_SCALE | cv::DFT_REAL_OUTPUT); + output = output(cv::Rect(0, 0, input.cols, input.rows)); + + auto end = std::chrono::high_resolution_clock::now(); + auto duration = + std::chrono::duration_cast(end - start); + LOG_F(INFO, "Deconvolution completed in {}ms", duration.count()); + } catch (const cv::Exception& e) { + LOG_F(ERROR, "OpenCV error during deconvolution: {}", e.what()); + throw; + } } + +void separableConvolve(const cv::Mat& input, const cv::Mat& kernelX, + const cv::Mat& kernelY, cv::Mat& output) { + LOG_F(INFO, "Starting separable convolution"); + try { + if (input.empty() || kernelX.empty() || kernelY.empty()) { + LOG_F(ERROR, "Invalid inputs for separable convolution"); + throw std::invalid_argument( + "Invalid inputs for separable convolution"); + } + + auto start = std::chrono::high_resolution_clock::now(); + + cv::Mat temp; + cv::sepFilter2D(input, output, -1, kernelX, kernelY); + + auto end = std::chrono::high_resolution_clock::now(); + auto duration = + std::chrono::duration_cast(end - start); + LOG_F(INFO, "Separable convolution completed in {}ms", + duration.count()); + } catch (const cv::Exception& e) { + LOG_F(ERROR, "OpenCV error during separable convolution: {}", e.what()); + throw; + } +} \ No newline at end of file diff --git a/modules/lithium.image/src/debayer.cpp b/modules/lithium.image/src/debayer.cpp index 5cc24275..5431b476 100644 --- a/modules/lithium.image/src/debayer.cpp +++ b/modules/lithium.image/src/debayer.cpp @@ -3,42 +3,150 @@ #include #include -std::tuple> Debayer(const std::filesystem::path& filepath) { - cv::Mat img, fits_img; - bool continue_process = true; - std::map header; - - std::string fileExtension = filepath.extension().string(); - if (fileExtension == ".fits" || fileExtension == ".fit") { - // Suppose we have a readFits function to convert FITS file into cv::Mat - // As a placeholder, let's simulate loading an image for demonstration - img = cv::imread("path_to_a_simulated_fits_image_in_png_or_other_format", cv::IMREAD_UNCHANGED); - - // Simulate reading the bayer pattern from the FITS header - std::string bayerPat = "RGGB"; // This should be read from the header, simulated here - - if (bayerPat == "RGGB") { - cv::cvtColor(img, fits_img, cv::COLOR_BayerBG2BGR); - } else if (bayerPat == "GBRG") { - cv::cvtColor(img, fits_img, cv::COLOR_BayerGB2BGR); - } else if (bayerPat == "BGGR") { - cv::cvtColor(img, fits_img, cv::COLOR_BayerRG2BGR); - } else if (bayerPat == "GRBG") { - cv::cvtColor(img, fits_img, cv::COLOR_BayerGR2BGR); - } else { - cv::cvtColor(img, fits_img, cv::COLOR_BayerBG2BGR); - continue_process = false; - } - } else { - // Load non-FITS image using OpenCV - img = cv::imread(filepath.string(), cv::IMREAD_UNCHANGED); +#include +#include +#include +#include +#include +#include +#include + +#include "atom/error/exception.hpp" +#include "atom/log/loguru.hpp" + +auto debayer(const std::filesystem::path& filepath) -> DebayerResult { + DebayerResult result; + result.continueProcessing = true; + result.header = {}; + + cv::Mat img; + cv::Mat debayeredImg; + + LOG_F(INFO, "Starting Debayer process for file: {}", filepath.string()); + + try { + std::string fileExtension = filepath.extension().string(); + // Convert file extension to lower case + std::transform(fileExtension.begin(), fileExtension.end(), + fileExtension.begin(), + [](unsigned char c) { return std::tolower(c); }); + LOG_F(INFO, "File extension detected: {}", fileExtension); + + if (fileExtension == ".fits" || fileExtension == ".fit") { + LOG_F(INFO, "Detected FITS file. Processing as FITS."); + + img = readFits(filepath, result.header); + + if (result.header.find("BayerPattern") == result.header.end()) { + LOG_F(ERROR, "BayerPattern not found in FITS header."); + THROW_INVALID_ARGUMENT( + "BayerPattern not found in FITS header."); + } - if (img.channels() == 1) { - fits_img = img; + std::string bayerPat = result.header["BayerPattern"]; + LOG_F(INFO, "Bayer Pattern from header: {}", bayerPat); + + // Convert Bayer pattern to uppercase for consistency + std::transform(bayerPat.begin(), bayerPat.end(), bayerPat.begin(), + [](unsigned char c) { return std::toupper(c); }); + + if (bayerPat == "RGGB") { + cv::cvtColor(img, debayeredImg, cv::COLOR_BayerRG2BGR); + LOG_F(INFO, + "Applied COLOR_BayerRG2BGR for Bayer pattern RGGB."); + } else if (bayerPat == "GBRG") { + cv::cvtColor(img, debayeredImg, cv::COLOR_BayerGB2BGR); + LOG_F(INFO, + "Applied COLOR_BayerGB2BGR for Bayer pattern GBRG."); + } else if (bayerPat == "BGGR") { + cv::cvtColor(img, debayeredImg, cv::COLOR_BayerBG2BGR); + LOG_F(INFO, + "Applied COLOR_BayerBG2BGR for Bayer pattern BGGR."); + } else if (bayerPat == "GRBG") { + cv::cvtColor(img, debayeredImg, cv::COLOR_BayerGR2BGR); + LOG_F(INFO, + "Applied COLOR_BayerGR2BGR for Bayer pattern GRBG."); + } else { + LOG_F(WARNING, + "Unknown Bayer pattern: {}. Using default " + "COLOR_BayerBG2BGR.", + bayerPat); + cv::cvtColor(img, debayeredImg, cv::COLOR_BayerBG2BGR); + result.continueProcessing = false; + } } else { - continue_process = false; + LOG_F(INFO, "Detected non-FITS file. Processing as regular image."); + + img = cv::imread(filepath.string(), cv::IMREAD_UNCHANGED); + if (img.empty()) { + LOG_F(ERROR, "Failed to read image from path: {}", + filepath.string()); + THROW_INVALID_ARGUMENT("Failed to read image file."); + } + + LOG_F(INFO, "Image loaded successfully. Channels: {}", + img.channels()); + + if (img.channels() == 1) { + LOG_F(INFO, + "Single channel image detected. No Debayering needed."); + debayeredImg = img; + } else if (img.channels() == 3 || img.channels() == 4) { + LOG_F(INFO, + "Multi-channel image detected. Attempting Debayering."); + + // Attempt automatic Debayering by detecting Bayer pattern if + // possible For demonstration, assume RGGB + std::string assumedBayerPat = "RGGB"; + LOG_F(INFO, "Assuming Bayer pattern: {}", assumedBayerPat); + + // Convert Bayer pattern to uppercase for consistency + std::transform(assumedBayerPat.begin(), assumedBayerPat.end(), + assumedBayerPat.begin(), + [](unsigned char c) { return std::toupper(c); }); + + if (assumedBayerPat == "RGGB") { + cv::cvtColor(img, debayeredImg, cv::COLOR_BayerRG2BGR); + LOG_F(INFO, + "Applied COLOR_BayerRG2BGR for assumed Bayer pattern " + "RGGB."); + } else if (assumedBayerPat == "GBRG") { + cv::cvtColor(img, debayeredImg, cv::COLOR_BayerGB2BGR); + LOG_F(INFO, + "Applied COLOR_BayerGB2BGR for assumed Bayer pattern " + "GBRG."); + } else if (assumedBayerPat == "BGGR") { + cv::cvtColor(img, debayeredImg, cv::COLOR_BayerBG2BGR); + LOG_F(INFO, + "Applied COLOR_BayerBG2BGR for assumed Bayer pattern " + "BGGR."); + } else if (assumedBayerPat == "GRBG") { + cv::cvtColor(img, debayeredImg, cv::COLOR_BayerGR2BGR); + LOG_F(INFO, + "Applied COLOR_BayerGR2BGR for assumed Bayer pattern " + "GRBG."); + } else { + LOG_F(WARNING, + "Unknown or unsupported Bayer pattern. Skipping " + "Debayering."); + debayeredImg = img; + result.continueProcessing = false; + } + } else { + LOG_F(ERROR, "Unsupported number of channels: {}", + img.channels()); + THROW_INVALID_ARGUMENT("Unsupported number of image channels."); + } } + + LOG_F(INFO, "Debayer process completed successfully."); + result.debayeredImage = debayeredImg; + + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception during Debayer process for file {}: {}", + filepath.string(), e.what()); + THROW_RUNTIME_ERROR(""); // Re-throw the exception after logging } - return {fits_img, continue_process, header}; -} + return result; +} \ No newline at end of file diff --git a/modules/lithium.image/src/fitsio.cpp b/modules/lithium.image/src/fitsio.cpp index f7fe4977..ddc781c1 100644 --- a/modules/lithium.image/src/fitsio.cpp +++ b/modules/lithium.image/src/fitsio.cpp @@ -1,18 +1,30 @@ #include "fitsio.hpp" +#include "atom/log/loguru.hpp" #include "base64.hpp" #include -#include -#include -#include -#include #include #include -#include + +#include +#include +#include +#include +#include #include +#include #include -// Helper function to handle FITS errors +/** + * @brief Helper function to handle FITS errors. + * + * Logs the error message and throws an exception if CFITSIO returns an error + * status. + * + * @param status CFITSIO status code. + * @param errorMessage Custom error message. + * @throws std::runtime_error Exception containing detailed error information. + */ void checkFitsStatus(int status, const std::string& errorMessage) { if (status != 0) { fits_report_error(stderr, status); @@ -21,239 +33,305 @@ void checkFitsStatus(int status, const std::string& errorMessage) { } } -cv::Mat readFitsToMat(const std::filesystem::path& filepath) { +/** + * @brief Reads a FITS file and converts it to cv::Mat. + * + * Uses the CFITSIO library to read a FITS file and automatically selects the + * appropriate OpenCV type based on image dimensions and bit depth. + * + * @param filepath Path to the FITS file. + * @param header Map to store FITS header information. + * @return cv::Mat OpenCV matrix containing the image data. + * @throws std::runtime_error If an error occurs during reading or the image + * format is unsupported. + */ +auto readFitsToMat(const std::filesystem::path& filepath, + std::map& header) -> cv::Mat { fitsfile* fptr; // FITS file pointer - int status = 0; // CFITSIO status value MUST be initialized to zero + int status = 0; // CFITSIO status value, must be initialized to 0 int bitpix; int naxis; - long naxes[3] = {1, 1, 1}; + std::array naxes = {1, 1, 1}; - // Open the FITS file + LOG_F(INFO, "Opening FITS file: {}", filepath.string()); + + // Open FITS file if (fits_open_file(&fptr, filepath.string().c_str(), READONLY, &status)) { - checkFitsStatus(status, "Cannot open FITS file"); + checkFitsStatus(status, "Unable to open FITS file"); } - // Read the image dimensions and bit depth - if (fits_get_img_param(fptr, 3, &bitpix, &naxis, naxes, &status)) { - checkFitsStatus(status, "Cannot read FITS image parameters"); + // Read image parameters + if (fits_get_img_param(fptr, 3, &bitpix, &naxis, naxes.data(), &status)) { + checkFitsStatus(status, "Unable to read FITS image parameters"); } - // Determine the type of the image - int width = naxes[0]; - int height = naxes[1]; - int depth = (bitpix == USHORT_IMG || bitpix == SHORT_IMG) ? CV_16U : CV_8U; + // Read FITS header information + int nkeys; + std::array card; + if (fits_get_hdrspace(fptr, &nkeys, nullptr, &status)) { + checkFitsStatus(status, "Unable to get FITS header space"); + } - // Prepare to read the image data + for (int i = 1; i <= nkeys; ++i) { + if (fits_read_record(fptr, i, card.data(), &status)) { + checkFitsStatus(status, "Unable to read FITS header record"); + } + std::string line = card.data(); + size_t eqPos = line.find('='); + if (eqPos != std::string::npos) { + std::string key = line.substr(0, eqPos); + std::string value = line.substr(eqPos + 1); + // Clean up key and value + key.erase(std::remove_if(key.begin(), key.end(), ::isspace), + key.end()); + value.erase(std::remove_if(value.begin(), value.end(), ::isspace), + value.end()); + // Remove quotes + value.erase(std::remove(value.begin(), value.end(), '\''), + value.end()); + header[key] = value; + } + } + + // Determine image type + int width = static_cast(naxes[0]); + int height = static_cast(naxes[1]); + int depth; + if (bitpix == SHORT_IMG || bitpix == USHORT_IMG) { + depth = CV_16U; + } else if (bitpix == BYTE_IMG) { + depth = CV_8U; + } else if (bitpix == FLOAT_IMG) { + depth = CV_32F; + } else { + fits_close_file(fptr, &status); + throw std::runtime_error("Unsupported FITS bit depth"); + } + + // Prepare to read image data std::vector fpixel(naxis, 1); // First pixel to read long nelements = - static_cast(width * height); // Number of pixels to read + static_cast(width) * height; // Number of pixels to read - // Prepare the cv::Mat container cv::Mat image; - // Check if it's a single channel (grayscale) or three channels (RGB) image - // by naxis and bitpix + // Handle 2D images if (naxis == 2 || (naxis == 3 && naxes[2] == 1)) { // Grayscale image image = cv::Mat(height, width, CV_MAKETYPE(depth, 1)); - // Read the image data - if (fits_read_pix( - fptr, CV_MAKETYPE(depth, 1) == CV_16U ? TUSHORT : TBYTE, - &fpixel[0], nelements, nullptr, image.data, nullptr, &status)) { - checkFitsStatus(status, "Cannot read FITS image data"); + int datatype = (depth == CV_16U) ? TUSHORT : TBYTE; + if (fits_read_pix(fptr, datatype, fpixel.data(), nelements, nullptr, + image.data, nullptr, &status)) { + checkFitsStatus(status, "Unable to read FITS grayscale image data"); } - } else if (naxis == 3 && naxes[2] == 3) { // RGB image + } + // Handle 3D images (RGB) + else if (naxis == 3 && naxes[2] == 3) { // RGB image image = cv::Mat(height, width, CV_MAKETYPE(depth, 3)); std::vector channels(3); for (int i = 0; i < 3; ++i) { channels[i] = cv::Mat(height, width, CV_MAKETYPE(depth, 1)); fpixel[2] = i + 1; // Set the correct channel (plane) - if (fits_read_pix(fptr, - CV_MAKETYPE(depth, 1) == CV_16U ? TUSHORT : TBYTE, - &fpixel[0], nelements, nullptr, channels[i].data, - nullptr, &status)) { + if (fits_read_pix(fptr, (depth == CV_16U) ? TUSHORT : TBYTE, + fpixel.data(), nelements, nullptr, + channels[i].data, nullptr, &status)) { checkFitsStatus(status, - "Cannot read FITS image data for channel " + + "Unable to read FITS image data for channel " + std::to_string(i)); } } cv::merge(channels, image); } else { + fits_close_file(fptr, &status); throw std::runtime_error("Unsupported FITS image format"); } - // Close the FITS file + // Close FITS file if (fits_close_file(fptr, &status)) { - checkFitsStatus(status, "Cannot close FITS file"); + checkFitsStatus(status, "Unable to close FITS file"); } + LOG_F(INFO, "FITS file read successfully: {}x{}, depth: {}", width, height, + depth); return image; } -// Convert cv::Mat to FITS file +/** + * @brief Writes cv::Mat image data to a FITS file. + * + * Uses the CFITSIO library to write OpenCV cv::Mat image data to a FITS file, + * automatically selecting the appropriate FITS format based on the number of + * channels and bit depth. + * + * @param image Image data to write. + * @param filepath Path to the target FITS file. + * @throws std::runtime_error If an error occurs during writing or the image + * format is unsupported. + */ void writeMatToFits(const cv::Mat& image, const std::filesystem::path& filepath) { fitsfile* fptr; int status = 0; - long naxes[3] = {image.cols, image.rows, image.channels()}; - int bitpix = (image.depth() == CV_16U) ? USHORT_IMG : BYTE_IMG; + std::array naxes = {image.cols, image.rows, image.channels()}; + int bitpix; + + // Determine FITS bit depth + if (image.depth() == CV_16U) { + bitpix = USHORT_IMG; + } else if (image.depth() == CV_8U) { + bitpix = BYTE_IMG; + } else if (image.depth() == CV_32F) { + bitpix = FLOAT_IMG; + } else { + throw std::runtime_error("Unsupported cv::Mat bit depth"); + } + + LOG_F(INFO, "Creating FITS file: {}", filepath.string()); + // Create FITS file if (fits_create_file(&fptr, filepath.string().c_str(), &status)) { - checkFitsStatus(status, "Cannot create FITS file"); + checkFitsStatus(status, "Unable to create FITS file"); } - if (image.channels() == 1) { - fits_create_img(fptr, bitpix, 2, naxes, &status); - } else if (image.channels() == 3) { - fits_create_img(fptr, bitpix, 3, naxes, &status); - } else { - throw std::runtime_error("Unsupported number of channels in Mat"); + // Create image + int naxis = (image.channels() == 1) ? 2 : 3; + if (fits_create_img(fptr, bitpix, naxis, naxes.data(), &status)) { + checkFitsStatus(status, "Unable to create FITS image"); } - if (image.channels() == 1) { - if (fits_write_img(fptr, (image.depth() == CV_16U) ? TUSHORT : TBYTE, 1, - image.cols * image.rows, (void*)image.data, - &status)) { - checkFitsStatus(status, "Cannot write FITS image data"); + // Write image data + if (image.channels() == 1) { // Grayscale image + if (fits_write_img( + fptr, (image.depth() == CV_16U) ? TUSHORT : TBYTE, 1, + static_cast(image.cols) * image.rows, + const_cast(static_cast(image.data)), + &status)) { + checkFitsStatus(status, + "Unable to write FITS grayscale image data"); } - } else if (image.channels() == 3) { + } else if (image.channels() == 3) { // RGB image std::vector channels(3); cv::split(image, channels); for (int i = 0; i < 3; ++i) { - long fpixel[3] = {1, 1, i + 1}; + std::array fpixel = {1, 1, i + 1}; if (fits_write_pix(fptr, (image.depth() == CV_16U) ? TUSHORT : TBYTE, - fpixel, image.cols * image.rows, - (void*)channels[i].data, &status)) { + fpixel.data(), + static_cast(image.cols) * image.rows, + channels[i].data, &status)) { checkFitsStatus(status, - "Cannot write FITS image data for channel " + + "Unable to write FITS image data for channel " + std::to_string(i)); } } + } else { + fits_close_file(fptr, &status); + throw std::runtime_error("Unsupported cv::Mat number of channels"); } + // Close FITS file if (fits_close_file(fptr, &status)) { - checkFitsStatus(status, "Cannot close FITS file"); + checkFitsStatus(status, "Unable to close FITS file"); } + + LOG_F(INFO, "FITS file written successfully: {}", filepath.string()); } -// Convert cv::Mat to Base64 string +/** + * @brief Converts cv::Mat image data to a Base64 string. + * + * Uses OpenCV to encode the image and then converts the encoded bytes to + * Base64. + * + * @param image Image data to convert. + * @param imgFormat Image encoding format (e.g., ".png", ".jpg"). + * @return std::string Base64 encoded string. + * @throws std::runtime_error If an error occurs during encoding. + */ auto matToBase64(const cv::Mat& image, const std::string& imgFormat) -> std::string { std::vector buf; - cv::imencode(imgFormat, image, buf); - auto base64Encoded = base64_encode(buf.data(), buf.size()); - return base64Encoded; + LOG_F(INFO, "Starting to encode cv::Mat to image format: {}", imgFormat); + if (!cv::imencode(imgFormat, image, buf)) { + throw std::runtime_error("Image encoding failed"); + } + LOG_F(INFO, "Image encoded successfully, encoded length: {}", buf.size()); + return base64Encode(buf.data(), buf.size()); } -// Convert FITS file to Base64 string +/** + * @brief Converts a FITS file to a Base64 string. + * + * Reads a FITS file and converts it to a Base64 string in the specified image + * format. + * + * @param filepath Path to the FITS file. + * @return std::string Base64 encoded string. + * @throws std::runtime_error If an error occurs during conversion. + */ auto fitsToBase64(const std::filesystem::path& filepath) -> std::string { - cv::Mat image = readFitsToMat(filepath); - return matToBase64(image, ".png"); + LOG_F(INFO, "Starting to convert FITS file to Base64 string: {}", + filepath.string()); + std::map header; + cv::Mat image = readFitsToMat(filepath, header); + std::string base64Str = matToBase64(image, ".png"); + LOG_F(INFO, "FITS file converted to Base64 successfully"); + return base64Str; } -auto readFitsHeadForDevName(const std::string& filename) +/** + * @brief Reads the device name (INSTRUME) from a FITS file. + * + * @param filepath Path to the FITS file. + * @return std::optional Returns the device name if present, + * otherwise returns std::nullopt. + * @throws std::runtime_error If an error occurs during reading. + */ +auto readFitsDeviceName(const std::filesystem::path& filepath) -> std::optional { fitsfile* fptr; int status = 0; - char card[FLEN_CARD]; - - fits_open_file(&fptr, filename.c_str(), READONLY, &status); - if (status != 0) { - fits_report_error(stderr, status); - return std::nullopt; - } - - int nkeys; - fits_get_hdrspace(fptr, &nkeys, nullptr, &status); - std::optional devname; - - for (int i = 1; i <= nkeys; i++) { - fits_read_record(fptr, i, card, &status); - std::string s = card; - - if (s.find("INSTRUME") != std::string::npos) { - size_t a = s.find('\''); - size_t b = s.rfind('\''); - if (a != std::string::npos && b != std::string::npos && a != b) { - devname = s.substr(a + 1, b - a - 1); - } - } - } - - fits_close_file(fptr, &status); - if (status != 0) { - fits_report_error(stderr, status); - return std::nullopt; - } - - return devname; -} - -auto readFits(const std::string& fileName, cv::Mat& image) -> int { - fitsfile* fptr; - int status = 0; - int bitpix; - int naxis; - long naxes[2]; - std::unique_ptr array; + std::array card; + std::optional deviceName; - if (fits_open_file(&fptr, fileName.c_str(), READONLY, &status)) { - return status; - } - - if (fits_get_img_param(fptr, 2, &bitpix, &naxis, naxes, &status)) { - return status; - } - - if (naxis != 2) { - return -1; - } + LOG_F(INFO, "Starting to read device name from FITS file: {}", + filepath.string()); - long nelements = naxes[0] * naxes[1]; - array = std::make_unique(nelements); - if (fits_read_img(fptr, TUSHORT, 1, nelements, nullptr, array.get(), - nullptr, &status)) { - return status; + if (fits_open_file(&fptr, filepath.string().c_str(), READONLY, &status)) { + checkFitsStatus(status, "Unable to open FITS file to read device name"); } - if (bitpix == 16) { - image = cv::Mat(naxes[1], naxes[0], CV_16U, array.get()).clone(); - } else if (bitpix == 8) { - image = cv::Mat(naxes[1], naxes[0], CV_8U, array.get()).clone(); + int nkeys; + if (fits_get_hdrspace(fptr, &nkeys, nullptr, &status)) { + checkFitsStatus(status, + "Unable to get FITS header space to read device name"); } - fits_close_file(fptr, &status); - return status; -} - -auto readFits_(const std::string& fileName, cv::Mat& image) -> int { - fitsfile* fptr; - int status = 0; - - fits_open_file(&fptr, fileName.c_str(), READONLY, &status); - if (status != 0) { - fits_report_error(stderr, status); - return status; + for (int i = 1; i <= nkeys; ++i) { + if (fits_read_record(fptr, i, card.data(), &status)) { + checkFitsStatus( + status, + "Unable to read FITS header record to find device name"); + } + std::string line = card.data(); + if (line.find("INSTRUME") != std::string::npos) { + size_t startPos = line.find('\''); + size_t endPos = line.rfind('\''); + if (startPos != std::string::npos && endPos != std::string::npos && + startPos != endPos && endPos > startPos) { + deviceName = line.substr(startPos + 1, endPos - startPos - 1); + LOG_F(INFO, "Found device name: {}", *deviceName); + break; + } + } } - int bitpix; - int naxis; - long naxes[2] = {1, 1}; - fits_get_img_param(fptr, 2, &bitpix, &naxis, naxes, &status); - if (status != 0) { - fits_report_error(stderr, status); - return status; + if (!deviceName.has_value()) { + LOG_F(WARNING, "Device name (INSTRUME) not found in FITS file"); } - long fpixel[2] = {1, 1}; - image.create(naxes[1], naxes[0], CV_32F); - fits_read_pix(fptr, TFLOAT, fpixel, naxes[0] * naxes[1], nullptr, - image.data, nullptr, &status); - if (status != 0) { - fits_report_error(stderr, status); - return status; + if (fits_close_file(fptr, &status)) { + checkFitsStatus(status, "Unable to close FITS file"); } - fits_close_file(fptr, &status); - return status; -} + return deviceName; +} \ No newline at end of file diff --git a/modules/lithium.image/src/fitskeyword.cpp b/modules/lithium.image/src/fitskeyword.cpp deleted file mode 100644 index 721780c2..00000000 --- a/modules/lithium.image/src/fitskeyword.cpp +++ /dev/null @@ -1,80 +0,0 @@ -/* - * fitskeyword.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-3-29 - -Description: FITS Keyword - -**************************************************/ - -#include "fitskeyword.hpp" - -#include -#include - -FITSRecord::FITSRecord() : val_int64(0), m_type(Type::VOID) {} - -FITSRecord::FITSRecord(const char *key, const char *value, const char *comment) - : m_key(key), m_type(Type::STRING) { - if (value) - val_str = std::string(value); - - if (comment) - m_comment = std::string(comment); -} - -FITSRecord::FITSRecord(const char *key, int64_t value, const char *comment) - : val_int64(value), - val_str(std::to_string(value)), - m_key(key), - m_type(Type::LONGLONG) { - if (comment) - m_comment = std::string(comment); -} - -FITSRecord::FITSRecord(const char *key, double value, int decimal, - const char *comment) - : val_double(value), m_key(key), m_type(Type::DOUBLE), m_decimal(decimal) { - std::stringstream ss; - ss.precision(decimal); - ss << value; - val_str = ss.str(); - - if (comment) - m_comment = std::string(comment); -} - -FITSRecord::FITSRecord(const char *comment) - : m_key("COMMENT"), m_type(Type::COMMENT) { - if (comment) - m_comment = std::string(comment); -} - -FITSRecord::Type FITSRecord::type() const { return m_type; } - -const std::string &FITSRecord::key() const { return m_key; } - -const std::string &FITSRecord::valueString() const { return val_str; } - -int64_t FITSRecord::valueInt() const { - if (m_type == Type::LONGLONG) - return val_int64; - else - return 0; -} - -double FITSRecord::valueDouble() const { - if (m_type == Type::DOUBLE) - return val_double; - else - return NAN; -} - -const std::string &FITSRecord::comment() const { return m_comment; } - -int FITSRecord::decimal() const { return m_decimal; } diff --git a/modules/lithium.image/src/fwhm.cpp b/modules/lithium.image/src/fwhm.cpp new file mode 100644 index 00000000..a7b7ac74 --- /dev/null +++ b/modules/lithium.image/src/fwhm.cpp @@ -0,0 +1,170 @@ +#include "fwhm.hpp" +#include "atom/log/loguru.hpp" + +// 常量定义 +constexpr int PLOT_HEIGHT = 400; +constexpr int PLOT_WIDTH = 600; +constexpr int WHITE_COLOR = 255; +constexpr int RED_COLOR = 255; +constexpr double WIDTH_FACTOR = 10.0; +constexpr int CIRCLE_RADIUS = 3; +constexpr int CURVE_THICKNESS = 2; + +auto GaussianFit::fit(const std::vector& points, double epsilon, + int maxIterations) -> std::optional { + LOG_F(INFO, "Starting Gaussian fit."); + if (points.empty()) { + LOG_F(ERROR, "No data points provided."); + return std::nullopt; + } + + std::vector fitPoints; + fitPoints.reserve(points.size()); + for (const auto& point : points) { + fitPoints.emplace_back(point.x, point.y); + } + + auto [minY, maxY] = getMinMax(points); + double baseLevel = minY; + double peakLevel = maxY - baseLevel; + double centerPoint = getMeanX(points); + double widthValue = getEstimatedWidth(points); + + cv::Mat params = (cv::Mat_(4, 1) << baseLevel, peakLevel, + centerPoint, widthValue); + + try { + cv::Mat residuals; + double prevError = std::numeric_limits::max(); + + for (int iteration = 0; iteration < maxIterations; ++iteration) { + computeResiduals(params, points, residuals); + LOG_F(INFO, "Iteration %d, error: %f", iteration, + cv::norm(residuals)); + + if (cv::norm(residuals) >= prevError) { + LOG_F(WARNING, "Error did not decrease. Stopping iteration."); + break; + } + + cv::Mat jacobian; + computeJacobian(params, points, jacobian); + + cv::Mat delta; + if (!cv::solve(jacobian.t() * jacobian, -jacobian.t() * residuals, + delta, cv::DECOMP_SVD)) { + LOG_F(ERROR, "Failed to solve for delta."); + return std::nullopt; + } + + params += delta; + + double error = cv::norm(residuals); + if (std::abs(error - prevError) < epsilon) { + LOG_F(INFO, "Convergence reached."); + break; + } + prevError = error; + } + + GaussianParams result{params.at(0), params.at(1), + params.at(2), params.at(3)}; + LOG_F(INFO, "Gaussian fit successful."); + return result; + } catch (const cv::Exception& exception) { + LOG_F(ERROR, "OpenCV exception: {}", exception.what()); + return std::nullopt; + } +} + +double GaussianFit::evaluate(const GaussianParams& params, double x) { + double t = (x - params.center) / params.width; + return params.base + params.peak * std::exp(-0.5 * t * t); +} + +void GaussianFit::visualize(const std::vector& points, + const GaussianParams& params) { + LOG_F(INFO, "Visualizing Gaussian fit."); + cv::Mat plot(400, 600, CV_8UC3, cv::Scalar(255, 255, 255)); + + auto [minIt, maxIt] = std::minmax_element( + points.begin(), points.end(), + [](const DataPoint& a, const DataPoint& b) { return a.x < b.x; }); + double xMin = minIt->x, xMax = maxIt->x; + + std::vector curve; + for (int i = 0; i < plot.cols; ++i) { + double x = xMin + (xMax - xMin) * i / plot.cols; + double y = evaluate(params, x); + int py = plot.rows - static_cast((y - params.base) * plot.rows / + (params.peak + params.base)); + curve.emplace_back(i, py); + } + cv::polylines(plot, curve, false, cv::Scalar(0, 0, 255), 2); + + for (const auto& p : points) { + int px = static_cast((p.x - xMin) * plot.cols / (xMax - xMin)); + int py = plot.rows - static_cast((p.y - params.base) * plot.rows / + (params.peak + params.base)); + cv::circle(plot, cv::Point(px, py), 3, cv::Scalar(0, 0, 0), -1); + } + + cv::imshow("Gaussian Fit", plot); + cv::waitKey(0); +} + +void GaussianFit::computeResiduals(const cv::Mat& params, + const std::vector& points, + cv::Mat& err) { + err.create(points.size(), 1, CV_64F); + GaussianParams p{params.at(0), params.at(1), + params.at(2), params.at(3)}; + + for (size_t i = 0; i < points.size(); i++) { + err.at(i) = points[i].y - evaluate(p, points[i].x); + } +} + +void GaussianFit::computeJacobian(const cv::Mat& params, + const std::vector& points, + cv::Mat& jac) { + jac.create(points.size(), 4, CV_64F); + double base = params.at(0); + double peak = params.at(1); + double center = params.at(2); + double width = params.at(3); + + for (size_t i = 0; i < points.size(); i++) { + double x = points[i].x; + double t = (x - center) / width; + double expTerm = std::exp(-0.5 * t * t); + + jac.at(i, 0) = -1.0; + jac.at(i, 1) = -expTerm; + jac.at(i, 2) = -peak * expTerm * t / width; + jac.at(i, 3) = -peak * expTerm * t * t / width; + } +} + +std::pair GaussianFit::getMinMax( + const std::vector& points) { + auto [min, max] = std::minmax_element( + points.begin(), points.end(), + [](const DataPoint& a, const DataPoint& b) { return a.y < b.y; }); + return {min->y, max->y}; +} + +double GaussianFit::getMeanX(const std::vector& points) { + double sum = 0; + for (const auto& p : points) { + sum += p.x; + } + return sum / points.size(); +} + +double GaussianFit::getEstimatedWidth(const std::vector& points) { + auto [minX, maxX] = std::minmax_element( + points.begin(), points.end(), + [](const DataPoint& a, const DataPoint& b) { return a.x < b.x; }); + return (maxX->x - minX->x) / 10.0; +} \ No newline at end of file diff --git a/modules/lithium.image/src/hfr.cpp b/modules/lithium.image/src/hfr.cpp index 19e09582..3cd82149 100644 --- a/modules/lithium.image/src/hfr.cpp +++ b/modules/lithium.image/src/hfr.cpp @@ -1,194 +1,338 @@ #include "hfr.hpp" #include "imgutils.hpp" -#include -#include #include +#include +#include #include +#include + +#include "atom/log/loguru.hpp" +#include "atom/type/json.hpp" -double calcHfr(const cv::Mat& inImage, float radius) { - cv::Mat img; - inImage.convertTo(img, CV_32F); - img -= cv::mean(img)[0]; - img = cv::max(img, 0.0f); - - int centerX = std::ceil(img.cols / 2.0); - int centerY = std::ceil(img.rows / 2.0); - - double sum = 0.0, sumDist = 0.0; - for (int i = 0; i < img.rows; ++i) { - for (int j = 0; j < img.cols; ++j) { - double dist = std::sqrt((i - centerX) * (i - centerX) + (j - centerY) * (j - centerY)); - if (dist <= radius * 1.2) { - sum += img.at(i, j); - sumDist += img.at(i, j) * dist; +using json = nlohmann::json; +using namespace std; +using namespace cv; + +auto calcHfr(const cv::Mat& inImage, float radius) -> double { + try { + LOG_F(INFO, "Calculating HFR with radius: {}", radius); + cv::Mat img; + inImage.convertTo(img, CV_32F); + img -= cv::mean(img)[0]; + img = cv::max(img, 0.0F); + + int centerX = std::ceil(img.cols / 2.0); + int centerY = std::ceil(img.rows / 2.0); + + double sum = 0.0; + double sumDist = 0.0; + for (int i = 0; i < img.rows; ++i) { + for (int j = 0; j < img.cols; ++j) { + double dist = std::sqrt((i - centerX) * (i - centerX) + + (j - centerY) * (j - centerY)); + constexpr double K_MAGIC_NUMBER = 1.2; + if (dist <= radius * K_MAGIC_NUMBER) { + sum += img.at(i, j); + sumDist += img.at(i, j) * dist; + } } } - } - return sum > 0 ? sumDist / sum : std::sqrt(2.0) * radius * 1.2; + if (sum <= 0) { + LOG_F(WARNING, "Sum is non-positive, returning default HFR value."); + return std::sqrt(2.0) * radius * 1.2; + } + + double hfr = sumDist / sum; + LOG_F(INFO, "Calculated HFR: {}", hfr); + return hfr; + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in calcHfr: {}", e.what()); + throw; + } } -using namespace std; -using namespace cv; +auto caldim(const cv::Mat& img) -> bool { + try { + LOG_F(INFO, "Performing caldim check."); + cv::Mat gray; + if (img.channels() == 3) { + cvtColor(img, gray, COLOR_BGR2GRAY); + } else { + gray = img; + } + + double minVal; + double maxVal; + minMaxLoc(gray, &minVal, &maxVal); + + double threshold = minVal + (maxVal - minVal) * 0.5; + cv::Mat binary; + cv::threshold(gray, binary, threshold, 255, THRESH_BINARY); -tuple StarDetectAndHfr(const Mat& img, bool if_removehotpixel, bool if_noiseremoval, bool do_star_mark, bool down_sample_mean_std, Mat mark_img) { - Mat grayimg, rgb_img; + int nonZeroCount = countNonZero(binary); + double nonZeroRatio = + static_cast(nonZeroCount) / (binary.rows * binary.cols); + + LOG_F(INFO, "caldim check: non-zero ratio = %f", nonZeroRatio); + + constexpr double K_NON_ZERO_RATIO_THRESHOLD = 0.1; + return nonZeroRatio < K_NON_ZERO_RATIO_THRESHOLD; + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in caldim: %s", e.what()); + throw; + } +} + +auto preprocessImage(const Mat& img, Mat& grayimg, Mat& rgbImg, + Mat& mark_img) -> void { if (img.channels() == 3) { cvtColor(img, grayimg, COLOR_BGR2GRAY); - rgb_img = img.clone(); + rgbImg = img.clone(); + LOG_F(INFO, "Converted BGR to grayscale."); } else { grayimg = img; - cvtColor(grayimg, rgb_img, COLOR_GRAY2BGR); + cvtColor(grayimg, rgbImg, COLOR_GRAY2BGR); + LOG_F(INFO, "Converted grayscale to RGB."); } - if (!mark_img.data) { - mark_img = rgb_img.clone(); + if (mark_img.data == nullptr) { + mark_img = rgbImg.clone(); + LOG_F(INFO, "Initialized mark_img with cloned RGB image."); } else if (mark_img.channels() == 1) { cvtColor(mark_img, mark_img, COLOR_GRAY2BGR); + LOG_F(INFO, "Converted single-channel mark_img to BGR."); } +} - Size img_shps = grayimg.size(); - Mat map = grayimg.clone(); - +auto removeNoise(Mat& map, bool if_removehotpixel, + bool if_noiseremoval) -> void { if (if_removehotpixel) { + LOG_F(INFO, "Removing hot pixels using median blur."); medianBlur(map, map, 3); } if (if_noiseremoval) { + LOG_F(INFO, "Removing noise using Gaussian blur."); GaussianBlur(map, map, Size(3, 3), 1.0); } +} - double median, std; +auto calculateMeanAndStd(const Mat& map, bool down_sample_mean_std, + double& medianVal, double& stdDev) -> void { if (!down_sample_mean_std) { - median = mean(map)[0]; - Scalar mean, stddev; - meanStdDev(map, mean, stddev); - std = stddev[0]; + medianVal = mean(map)[0]; + Scalar meanVal; + Scalar stddev; + meanStdDev(map, meanVal, stddev); + stdDev = stddev[0]; + LOG_F(INFO, "Calculated mean and std without downsampling."); } else { - vector buffer_value; + LOG_F(INFO, "Calculating mean and std with downsampling."); + vector bufferValue; if (map.isContinuous()) { - buffer_value.assign(map.datastart, map.dataend); + bufferValue.assign(map.datastart, map.dataend); } else { for (int i = 0; i < map.rows; ++i) { - buffer_value.insert(buffer_value.end(), map.ptr(i), map.ptr(i) + map.cols); + bufferValue.insert(bufferValue.end(), map.ptr(i), + map.ptr(i) + map.cols); } } - int maxSamples = 500000; + constexpr int K_MAX_SAMPLES = 500000; int sampleBy = 1; - if (map.rows * map.cols > maxSamples) { - sampleBy = map.rows * map.cols / maxSamples; + if (map.rows * map.cols > K_MAX_SAMPLES) { + sampleBy = map.rows * map.cols / K_MAX_SAMPLES; + LOG_F(INFO, "Downsampling with step: {}", sampleBy); } - vector sample_value; - for (size_t i = 0; i < buffer_value.size(); i += sampleBy) { - sample_value.push_back(buffer_value[i]); + vector sampleValue; + for (size_t i = 0; i < bufferValue.size(); i += sampleBy) { + sampleValue.push_back(bufferValue[i]); } - median = std::accumulate(sample_value.begin(), sample_value.end(), 0.0) / sample_value.size(); + medianVal = + std::accumulate(sampleValue.begin(), sampleValue.end(), 0.0) / + sampleValue.size(); double sum = 0; - for (uchar val : sample_value) { - sum += (val - median) * (val - median); + for (uchar val : sampleValue) { + sum += (val - medianVal) * (val - medianVal); } - std = sqrt(sum / sample_value.size()); + stdDev = sqrt(sum / sampleValue.size()); + LOG_F(INFO, "Calculated downsampled mean: {} and std: {}", medianVal, + stdDev); } +} - double threshold = median + 3 * std; - Mat thres_map; - cv::threshold(map, thres_map, threshold, 255, THRESH_BINARY); - - Mat closekernel = getStructuringElement(MORPH_RECT, Size(3, 3)); - morphologyEx(thres_map, thres_map, MORPH_OPEN, closekernel); - - vector> contours; - vector hierarchy; - findContours(thres_map, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_NONE); - - double stand_size = 1552; - double sclsize = max(img_shps.width, img_shps.height); - double maximun_area = 1500 * (sclsize / stand_size); - double minimun_area = max(1.0, ceil(sclsize / stand_size)); - double bsh_scale = sclsize / 2048; - vector HfrList; +auto processContours(const Mat& grayimg, const Mat& rgbImg, Mat& mark_img, + const vector>& contours, double threshold, + bool do_star_mark) + -> tuple, vector> { + constexpr double K_STAND_SIZE = 1552; + Size imgShps = grayimg.size(); + double sclsize = max(imgShps.width, imgShps.height); + double maximunArea = 1500 * (sclsize / K_STAND_SIZE); + double minimunArea = max(1.0, ceil(sclsize / K_STAND_SIZE)); + double bshScale = sclsize / 2048; + vector hfrList; vector arelist; int starnum = 0; for (size_t i = 0; i < contours.size(); i++) { double area = contourArea(contours[i]); - if (area >= minimun_area && area < maximun_area) { + if (area >= minimunArea && area < maximunArea) { Point2f center; float radius; minEnclosingCircle(contours[i], center, radius); Rect boundingBox = boundingRect(contours[i]); - Point rect_center(boundingBox.x + boundingBox.width / 2, boundingBox.y + boundingBox.height / 2); + Point rectCenter(boundingBox.x + boundingBox.width / 2, + boundingBox.y + boundingBox.height / 2); if (checkElongated(boundingBox.width, boundingBox.height)) { + LOG_F(INFO, "Contour {} is elongated. Skipping.", i); continue; } - int bsh_num; - vector bsh_list; - vector bsh_thres_list; - tie(bsh_num, bsh_list, bsh_thres_list) = define_narrow_radius(static_cast(minimun_area), maximun_area, area, bsh_scale); - - bool bsh_check = false; - for (int bsh_index = 0; bsh_index < bsh_num; bsh_index++) { - int narrow_radius = bsh_list[bsh_index]; - double pixelthresh = bsh_thres_list[bsh_index]; - Rect expandedRect(boundingBox.x - 5, boundingBox.y - 5, boundingBox.width + 10, boundingBox.height + 10); - - if (expandedRect.x < 0 || expandedRect.y < 0 || expandedRect.x + expandedRect.width >= img.cols || expandedRect.y + expandedRect.height >= img.rows) { + int bshNum; + vector bshList; + vector bshThresList; + tie(bshNum, bshList, bshThresList) = defineNarrowRadius( + static_cast(minimunArea), maximunArea, area, bshScale); + + bool bshCheck = false; + for (int bshIndex = 0; bshIndex < bshNum; bshIndex++) { + int narrowRadius = bshList[bshIndex]; + double pixelthresh = bshThresList[bshIndex]; + Rect expandedRect(boundingBox.x - 5, boundingBox.y - 5, + boundingBox.width + 10, + boundingBox.height + 10); + + if (expandedRect.x < 0 || expandedRect.y < 0 || + expandedRect.x + expandedRect.width >= grayimg.cols || + expandedRect.y + expandedRect.height >= grayimg.rows) { + LOG_F( + WARNING, + "Expanded rectangle out of bounds. Skipping contour {}", + i); continue; } - Mat rect_thres_expand = thres_map(expandedRect); + Mat rectThresExpand = grayimg(expandedRect); - if (BresenHamCheckCircle(rect_thres_expand, radius - narrow_radius, pixelthresh, false)) { - bsh_check = true; + if (checkBresenhamCircle(rectThresExpand, radius - narrowRadius, + pixelthresh, false)) { + bshCheck = true; break; } } - if (!bsh_check) { + if (!bshCheck) { + LOG_F(INFO, "Contour {} failed BresenHam check. Skipping.", i); continue; } - Rect starRegion(static_cast(center.x - radius), static_cast(center.y - radius), static_cast(2 * radius), static_cast(2 * radius)); - if (starRegion.x < 0 || starRegion.y < 0 || starRegion.x + starRegion.width >= img.cols || starRegion.y + starRegion.height >= img.rows) { + Rect starRegion(static_cast(center.x - radius), + static_cast(center.y - radius), + static_cast(2 * radius), + static_cast(2 * radius)); + if (starRegion.x < 0 || starRegion.y < 0 || + starRegion.x + starRegion.width >= grayimg.cols || + starRegion.y + starRegion.height >= grayimg.rows) { + LOG_F(WARNING, + "Star region out of bounds for contour {}. Skipping.", i); continue; } - Mat rect_expand = rgb_img(starRegion); + Mat rectExpand = rgbImg(starRegion); - //if (caldim(rect_expand)) { - // continue; - //} + if (caldim(rectExpand)) { + LOG_F(INFO, "Contour {} failed caldim check. Skipping.", i); + continue; + } double hfr = calcHfr(grayimg(starRegion), radius); - if (hfr < 0.05) { + constexpr double K_HFR_THRESHOLD = 0.05; + if (hfr < K_HFR_THRESHOLD) { + LOG_F(INFO, "HFR below threshold for contour {}. Skipping.", i); continue; } - HfrList.push_back(hfr); + hfrList.push_back(hfr); starnum++; arelist.push_back(area); if (do_star_mark) { - circle(mark_img, rect_center, static_cast(radius) + 5, Scalar(0, 255, 0), 1); - putText(mark_img, to_string(hfr), rect_center, FONT_HERSHEY_SIMPLEX, 1.0, Scalar(0, 255, 0), 1, LINE_AA); + circle(mark_img, rectCenter, static_cast(radius) + 5, + Scalar(0, 255, 0), 1); + putText(mark_img, to_string(hfr), rectCenter, + FONT_HERSHEY_SIMPLEX, 1.0, Scalar(0, 255, 0), 1, + LINE_AA); + LOG_F(INFO, "Marked star at contour {} with HFR: {}", i, hfr); } } } - double avghfr = HfrList.empty() ? 0 : accumulate(HfrList.begin(), HfrList.end(), 0.0) / HfrList.size(); - double maxarea = arelist.empty() ? -1 : *max_element(arelist.begin(), arelist.end()); - double minarea = arelist.empty() ? -1 : *min_element(arelist.begin(), arelist.end()); - double avgarea = arelist.empty() ? -1 : accumulate(arelist.begin(), arelist.end(), 0.0) / arelist.size(); - - // Prepare the result as JSON - json result = { - {"max", maxarea}, - {"min", minarea}, - {"average", avgarea} - }; + return make_tuple( + starnum, + accumulate(hfrList.begin(), hfrList.end(), 0.0) / hfrList.size(), + hfrList, arelist); +} - return make_tuple(mark_img, starnum, avghfr, result); +auto starDetectAndHfr(const Mat& img, bool if_removehotpixel, + bool if_noiseremoval, bool do_star_mark, + bool down_sample_mean_std, + Mat mark_img) -> tuple { + try { + LOG_F(INFO, "Starting StarDetectAndHfr processing."); + Mat grayimg, rgbImg; + preprocessImage(img, grayimg, rgbImg, mark_img); + + Mat map = grayimg.clone(); + removeNoise(map, if_removehotpixel, if_noiseremoval); + + double medianVal, stdDev; + calculateMeanAndStd(map, down_sample_mean_std, medianVal, stdDev); + + double threshold = medianVal + 3 * stdDev; + LOG_F(INFO, "Applying threshold: {}", threshold); + Mat thresMap; + cv::threshold(map, thresMap, threshold, 255, THRESH_BINARY); + + Mat closekernel = getStructuringElement(MORPH_RECT, Size(3, 3)); + morphologyEx(thresMap, thresMap, MORPH_OPEN, closekernel); + LOG_F(INFO, "Performed morphological opening."); + + vector> contours; + vector hierarchy; + findContours(thresMap, contours, hierarchy, RETR_EXTERNAL, + CHAIN_APPROX_NONE); + LOG_F(INFO, "Found {} contours.", contours.size()); + + int starnum; + double avghfr; + vector hfrList; + vector arelist; + tie(starnum, avghfr, hfrList, arelist) = processContours( + grayimg, rgbImg, mark_img, contours, threshold, do_star_mark); + + double maxarea = + arelist.empty() ? -1 : *max_element(arelist.begin(), arelist.end()); + double minarea = + arelist.empty() ? -1 : *min_element(arelist.begin(), arelist.end()); + double avgarea = arelist.empty() + ? -1 + : accumulate(arelist.begin(), arelist.end(), 0.0) / + arelist.size(); + + LOG_F(INFO, "Processed {} stars.", starnum); + LOG_F(INFO, "Average HFR: {}, Max Area: {}, Min Area: {}, Avg Area: {}", + avghfr, maxarea, minarea, avgarea); + + // Prepare the result as JSON + json result = { + {"max", maxarea}, {"min", minarea}, {"average", avgarea}}; + + return make_tuple(mark_img, starnum, avghfr, result); + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in StarDetectAndHfr: {}", e.what()); + throw; + } } diff --git a/modules/lithium.image/src/hist.cpp b/modules/lithium.image/src/hist.cpp index 89b35f55..e331fd07 100644 --- a/modules/lithium.image/src/hist.cpp +++ b/modules/lithium.image/src/hist.cpp @@ -2,36 +2,143 @@ #include #include +#include -std::vector CalHist(const cv::Mat& img) { - std::vector bgr_planes; - cv::split(img, bgr_planes); +#include "atom/error/exception.hpp" +#include "atom/log/loguru.hpp" - int histSize = 65535; - float range[] = {0, 65535}; - const float* histRange = {range}; +auto calculateHist(const cv::Mat& img, int histSize, + bool normalize) -> std::vector { + LOG_F(INFO, "Calculating BGR histograms with histSize: {}", histSize); + if (img.empty()) { + LOG_F(ERROR, "Input image for calculateHist is empty."); + THROW_INVALID_ARGUMENT("Input image for calculateHist is empty."); + } + if (img.channels() != 3) { + LOG_F(ERROR, "Input image does not have 3 channels."); + THROW_INVALID_ARGUMENT("Input image does not have 3 channels."); + } + + std::vector bgrPlanes; + cv::split(img, bgrPlanes); + + std::array range = {0, static_cast(histSize)}; + const float* histRange = range.data(); bool accumulate = false; std::vector histograms; + histograms.reserve(3); + for (int i = 0; i < 3; ++i) { cv::Mat hist; - cv::calcHist(&bgr_planes[i], 1, 0, cv::Mat(), hist, 1, &histSize, &histRange, accumulate); + cv::calcHist(&bgrPlanes[i], 1, 0, cv::Mat(), hist, 1, &histSize, + &histRange, accumulate); cv::threshold(hist, hist, 4, 0, cv::THRESH_TOZERO); + if (normalize) { + cv::normalize(hist, hist, 0, 1, cv::NORM_MINMAX); + LOG_F(INFO, "Normalized histogram for channel {}", i); + } histograms.push_back(hist); + LOG_F(INFO, "Calculated histogram for channel {}", i); } + LOG_F(INFO, "Completed BGR histogram calculation."); return histograms; } -cv::Mat CalGrayHist(const cv::Mat& img) { - int histSize = 65535; - float range[] = {0, 65535}; - const float* histRange = {range}; +auto calculateGrayHist(const cv::Mat& img, int histSize, + bool normalize) -> cv::Mat { + LOG_F(INFO, "Calculating grayscale histogram with histSize: {}", histSize); + if (img.empty()) { + LOG_F(ERROR, "Input image for calculateGrayHist is empty."); + THROW_INVALID_ARGUMENT("Input image for calculateGrayHist is empty."); + } + if (img.channels() != 1) { + LOG_F(ERROR, "Input image is not grayscale."); + THROW_INVALID_ARGUMENT("Input image is not grayscale."); + } + + std::array range = {0, static_cast(histSize)}; + const float* histRange = range.data(); bool accumulate = false; - cv::Mat gray_hist; - cv::calcHist(&img, 1, 0, cv::Mat(), gray_hist, 1, &histSize, &histRange, accumulate); - cv::threshold(gray_hist, gray_hist, 1, 0, cv::THRESH_TOZERO); + cv::Mat grayHist; + cv::calcHist(&img, 1, 0, cv::Mat(), grayHist, 1, &histSize, &histRange, + accumulate); + cv::threshold(grayHist, grayHist, 1, 0, cv::THRESH_TOZERO); + + if (normalize) { + cv::normalize(grayHist, grayHist, 0, 1, cv::NORM_MINMAX); + LOG_F(INFO, "Normalized grayscale histogram."); + } - return gray_hist; + LOG_F(INFO, "Completed grayscale histogram calculation."); + return grayHist; } + +auto calculateCDF(const cv::Mat& hist) -> cv::Mat { + LOG_F(INFO, "Calculating CDF."); + if (hist.empty()) { + LOG_F(ERROR, "Input histogram for calculateCDF is empty."); + THROW_INVALID_ARGUMENT("Input histogram for calculateCDF is empty."); + } + + cv::Mat cdf; + hist.copyTo(cdf); + for (int i = 1; i < hist.rows; ++i) { + cdf.at(i) += cdf.at(i - 1); + } + cv::normalize(cdf, cdf, 0, 1, cv::NORM_MINMAX); + LOG_F(INFO, "Completed CDF calculation."); + return cdf; +} + +auto equalizeHistogram(const cv::Mat& img) -> cv::Mat { + LOG_F(INFO, "Starting histogram equalization."); + if (img.empty()) { + LOG_F(ERROR, "Input image for equalizeHistogram is empty."); + THROW_INVALID_ARGUMENT("Input image for equalizeHistogram is empty."); + } + + cv::Mat equalized; + if (img.channels() == 1) { + cv::equalizeHist(img, equalized); + } else { + std::vector bgrPlanes; + cv::split(img, bgrPlanes); + for (auto& plane : bgrPlanes) { + cv::equalizeHist(plane, plane); + } + cv::merge(bgrPlanes, equalized); + } + LOG_F(INFO, "Completed histogram equalization."); + return equalized; +} + +auto drawHistogram(const cv::Mat& hist, int histSize, int width, + int height) -> cv::Mat { + LOG_F(INFO, "Drawing histogram."); + if (hist.empty()) { + LOG_F(ERROR, "Input histogram for drawHistogram is empty."); + THROW_INVALID_ARGUMENT("Input histogram for drawHistogram is empty."); + } + cv::Mat histImage(height, width, CV_8UC3, cv::Scalar(0, 0, 0)); + + // Normalize the histogram to fit the image height + cv::Mat histNorm; + cv::normalize(hist, histNorm, 0, histImage.rows, cv::NORM_MINMAX); + + int binWidth = cvRound(static_cast(width) / histSize); + + for (int i = 1; i < histSize; ++i) { + cv::line( + histImage, + cv::Point(binWidth * (i - 1), + height - cvRound(histNorm.at(i - 1))), + cv::Point(binWidth * i, height - cvRound(histNorm.at(i))), + cv::Scalar(DEFAULT_COLOR_VALUE, 0, 0), 2, DEFAULT_LINE_TYPE, 0); + } + + LOG_F(INFO, "Completed drawing histogram."); + return histImage; +} \ No newline at end of file diff --git a/modules/lithium.image/src/imgio.cpp b/modules/lithium.image/src/imgio.cpp new file mode 100644 index 00000000..d149fb39 --- /dev/null +++ b/modules/lithium.image/src/imgio.cpp @@ -0,0 +1,302 @@ +#include "imgio.hpp" +#include + +#include +#include +#include +#include +#include +#include "atom/log/loguru.hpp" + +namespace fs = std::filesystem; + +auto loadImage(const std::string& filename, int flags) -> cv::Mat { + LOG_F(INFO, "Starting to load image '{}' with flags={}", filename, flags); + + if (!fs::exists(filename)) { + LOG_F(ERROR, "Image file does not exist: {}", filename); + return {}; + } + + auto start = std::chrono::high_resolution_clock::now(); + cv::Mat image = cv::imread(filename, flags); + auto end = std::chrono::high_resolution_clock::now(); + auto duration = + std::chrono::duration_cast(end - start); + + if (image.empty()) { + LOG_F(ERROR, "Failed to load image: {} (Load time: {}ms)", filename, + duration.count()); + return {}; + } + + LOG_F(INFO, "Successfully loaded image: {}", filename); + LOG_F(INFO, "Image properties: {}x{}, {} channels, type={}, depth={}", + image.cols, image.rows, image.channels(), image.type(), + image.depth()); + LOG_F(INFO, "Load time: {}ms", duration.count()); + + return image; +} + +auto loadImages(const std::string& folder, + const std::vector& filenames, + int flags) -> std::vector> { + LOG_F(INFO, "Starting batch image loading from folder: {}", folder); + LOG_F(INFO, "Target files count: {}", + filenames.empty() ? "all" : std::to_string(filenames.size())); + + if (!fs::exists(folder)) { + LOG_F(ERROR, "Folder does not exist: {}", folder); + return {}; + } + + std::vector> images; + auto startTotal = std::chrono::high_resolution_clock::now(); + int successCount = 0; + int failCount = 0; + + if (filenames.empty()) { + LOG_F(INFO, "Scanning directory for all image files..."); + for (const auto& entry : fs::directory_iterator(folder)) { + if (entry.is_regular_file()) { + std::string filepath = entry.path().string(); + auto start = std::chrono::high_resolution_clock::now(); + cv::Mat img = cv::imread(filepath, flags); + auto end = std::chrono::high_resolution_clock::now(); + auto duration = + std::chrono::duration_cast( + end - start); + + if (!img.empty()) { + images.emplace_back(filepath, img); + successCount++; + LOG_F(INFO, "Loaded image {}: {}x{}, {} channels ({}ms)", + filepath, img.cols, img.rows, img.channels(), + duration.count()); + } else { + failCount++; + LOG_F(ERROR, "Failed to load image: {} ({}ms)", filepath, + duration.count()); + } + } + } + } else { + LOG_F(INFO, "Loading {} specified image files...", filenames.size()); + for (const auto& filename : filenames) { + std::string filepath = folder + "/" + filename; + auto start = std::chrono::high_resolution_clock::now(); + cv::Mat img = cv::imread(filepath, flags); + auto end = std::chrono::high_resolution_clock::now(); + auto duration = + std::chrono::duration_cast(end - + start); + + if (!img.empty()) { + images.emplace_back(filepath, img); + successCount++; + LOG_F(INFO, "Loaded image {}: {}x{}, {} channels ({}ms)", + filepath, img.cols, img.rows, img.channels(), + duration.count()); + } else { + failCount++; + LOG_F(ERROR, "Failed to load image: {} ({}ms)", filepath, + duration.count()); + } + } + } + + auto endTotal = std::chrono::high_resolution_clock::now(); + auto totalDuration = std::chrono::duration_cast( + endTotal - startTotal); + + LOG_F(INFO, "Batch loading completed:"); + LOG_F(INFO, " Success: {} images", successCount); + LOG_F(INFO, " Failed: {} images", failCount); + LOG_F(INFO, " Total time: {}ms", totalDuration.count()); + LOG_F(INFO, " Average time per image: {}ms", + (successCount > 0) ? totalDuration.count() / successCount : 0); + + return images; +} + +auto saveImage(const std::string& filename, const cv::Mat& image) -> bool { + LOG_F(INFO, "Starting to save image: {}", filename); + LOG_F(INFO, "Image properties: {}x{}, {} channels, type={}", image.cols, + image.rows, image.channels(), image.type()); + + if (image.empty()) { + LOG_F(ERROR, "Cannot save empty image: {}", filename); + return false; + } + + auto start = std::chrono::high_resolution_clock::now(); + bool success = cv::imwrite(filename, image); + auto end = std::chrono::high_resolution_clock::now(); + auto duration = + std::chrono::duration_cast(end - start); + + if (success) { + LOG_F(INFO, "Image saved successfully: {} ({}ms)", filename, + duration.count()); + LOG_F(INFO, "File size: {} bytes", fs::file_size(filename)); + return true; + } + + LOG_F(ERROR, "Failed to save image: {} ({}ms)", filename, duration.count()); + return false; +} + +auto saveMatTo8BitJpg(const cv::Mat& image, + const std::string& output_path) -> bool { + LOG_F(INFO, "Starting 8-bit JPG conversion for image {}x{}", image.cols, + image.rows); + + if (image.empty()) { + LOG_F(ERROR, "Input image is empty"); + return false; + } + + LOG_F(INFO, "Input image: type={}, depth={}, channels={}", image.type(), + image.depth(), image.channels()); + + try { + cv::Mat image16; + cv::Mat outputImage; + + // Convert to 16-bit based on input depth + switch (image.depth()) { + case CV_8U: + LOG_F(INFO, "Converting 8-bit to 16-bit with MSB alignment"); + image.convertTo(image16, CV_16UC1, 256.0); + break; + case CV_16U: + LOG_F(INFO, "Maintaining 16-bit depth"); + image.convertTo(image16, CV_16UC1); + break; + default: + LOG_F(ERROR, "Unsupported image depth: {}", image.depth()); + return false; + } + + // Normalize to 8-bit range using modern OpenCV method + cv::normalize(image16, outputImage, 0, 255, cv::NORM_MINMAX, CV_8U); + + // Configure JPEG compression parameters + std::vector compressionParams; + compressionParams.push_back(cv::IMWRITE_JPEG_QUALITY); + compressionParams.push_back(95); // High quality JPEG + + return saveImage(output_path, + outputImage); // Using existing saveImage function + } catch (const cv::Exception& e) { + LOG_F(ERROR, "OpenCV error during 8-bit conversion: {}", e.what()); + return false; + } +} + +auto saveMatTo16BitPng(const cv::Mat& image, + const std::string& output_path) -> bool { + LOG_F(INFO, "Starting 16-bit PNG conversion for image {}x{}", image.cols, + image.rows); + + if (image.empty()) { + LOG_F(ERROR, "Input image is empty"); + return false; + } + + try { + cv::Mat outputImage; + + // Optimal 16-bit conversion + if (image.depth() == CV_8U) { + LOG_F(INFO, "Converting 8-bit to 16-bit"); + image.convertTo(outputImage, CV_16U, 256.0); + } else if (image.depth() == CV_16U) { + outputImage = image.clone(); + } else { + LOG_F(ERROR, "Unsupported image depth: {}", image.depth()); + return false; + } + + // Configure PNG compression parameters + std::vector compressionParams; + compressionParams.push_back(cv::IMWRITE_PNG_COMPRESSION); + compressionParams.push_back(9); // Maximum compression + + return saveImage(output_path, + outputImage); // Using existing saveImage function + } catch (const cv::Exception& e) { + LOG_F(ERROR, "OpenCV error during 16-bit conversion: {}", e.what()); + return false; + } +} + +auto saveMatToFits(const cv::Mat& image, + const std::string& output_path) -> bool { + LOG_F(INFO, "Starting FITS conversion for image {}x{}", image.cols, + image.rows); + + if (image.empty()) { + LOG_F(ERROR, "Input image is empty"); + return false; + } + + try { + // Ensure grayscale + cv::Mat grayImage; + if (image.channels() == 3) { + cv::cvtColor(image, grayImage, cv::COLOR_BGR2GRAY); + } else { + grayImage = image.clone(); + } + + // FITS specific parameters + const long NAXES[2] = {grayImage.cols, grayImage.rows}; + int status = 0; + fitsfile* fptr = nullptr; + + // Create FITS file with error handling + const std::string FITS_PATH = "!" + output_path; // Force overwrite + if (auto ret = fits_create_file(&fptr, FITS_PATH.c_str(), &status); + ret != 0) { + LOG_F(ERROR, "Failed to create FITS file: {}", output_path); + return false; + } + + // Create image + if (auto ret = fits_create_img(fptr, SHORT_IMG, 2, + const_cast(NAXES), &status); + ret != 0) { + LOG_F(ERROR, "Failed to create FITS image structure"); + fits_close_file(fptr, &status); + return false; + } + + // Write data + if (auto ret = fits_write_img(fptr, TSHORT, 1, grayImage.total(), + grayImage.ptr(), &status); + ret != 0) { + LOG_F(ERROR, "Failed to write FITS image data"); + fits_close_file(fptr, &status); + return false; + } + + // Close file + fits_close_file(fptr, &status); + + if (status != 0) { + char error_msg[80]; + fits_get_errstatus(status, error_msg); + LOG_F(ERROR, "FITS error: {}", error_msg); + return false; + } + + LOG_F(INFO, "Successfully saved FITS file: {}", output_path); + return true; + + } catch (const std::exception& e) { + LOG_F(ERROR, "Error during FITS conversion: {}", e.what()); + return false; + } +} diff --git a/modules/lithium.image/src/imgutils.cpp b/modules/lithium.image/src/imgutils.cpp index 575c82a5..e6b2b31b 100644 --- a/modules/lithium.image/src/imgutils.cpp +++ b/modules/lithium.image/src/imgutils.cpp @@ -6,160 +6,201 @@ #include #include #include -#include #include +#include "atom/error/exception.hpp" #include "atom/log/loguru.hpp" -cv::Mat loadImage(const std::string& filename, bool isGrayscale = false) { - int flags = isGrayscale ? cv::IMREAD_GRAYSCALE : cv::IMREAD_COLOR; - cv::Mat image = cv::imread(filename, flags); - if (image.empty()) { - LOG_F(ERROR, "Failed to load image: {}", filename); - return cv::Mat(); - } - return image; +constexpr double MIN_LONG_RATIO = 1.5; +constexpr int MAX_SAMPLES = 500000; +constexpr double MAGIC_1_4826 = 1.4826; +constexpr double MAGIC_2_8 = 2.8; +constexpr double BASE_RATIO = 0.25; // Renamed from B to BASE_RATIO + +auto insideCircle(int xCoord, int yCoord, int centerX, int centerY, + float radius) -> bool { + LOG_F(INFO, + "Checking if point ({}, {}) is inside circle with center ({}, {}) " + "and radius {}", + xCoord, yCoord, centerX, centerY, radius); + return std::sqrt((xCoord - centerX) * (xCoord - centerX) + + (yCoord - centerY) * (yCoord - centerY)) < radius; } -// 从文件夹中读取所有图像 -std::vector loadImages(const std::string& folder, - const std::vector& filenames) { - std::vector images; - for (const auto& filename : filenames) { - cv::Mat img = cv::imread(folder + "/" + filename, cv::IMREAD_COLOR); - if (!img.empty()) { - images.push_back(img); - } else { - LOG_F(ERROR, "Failed to load image: {}", filename); - } - } - return images; -} - -bool insideCircle(int x, int y, int centerX, int centerY, float radius) { - return std::sqrt((x - centerX) * (x - centerX) + - (y - centerY) * (y - centerY)) < radius; -} - -bool checkElongated(int width, int height) { - double minlongratio = 1.5; +auto checkElongated(int width, int height) -> bool { + LOG_F(INFO, "Checking elongation for width: {}, height: {}", width, height); double ratio = width > height ? static_cast(width) / height : static_cast(height) / width; - return ratio > minlongratio; + bool elongated = ratio > MIN_LONG_RATIO; + LOG_F(INFO, "Elongated: {}", elongated); + return elongated; } -int checkWhitePixel(const cv::Mat& rect_contour, int x, int y) { - if (x >= 0 && x < rect_contour.cols && y >= 0 && y < rect_contour.rows) { - return rect_contour.at(y, x) > 0 ? 1 : 0; +auto checkWhitePixel(const cv::Mat& rect_contour, int xCoord, + int yCoord) -> int { + LOG_F(INFO, "Checking white pixel at ({}, {})", xCoord, yCoord); + if (xCoord >= 0 && xCoord < rect_contour.cols && yCoord >= 0 && + yCoord < rect_contour.rows) { + try { + return rect_contour.at(yCoord, xCoord) > 0 ? 1 : 0; + } catch (const cv::Exception& e) { + LOG_F(ERROR, "Exception accessing pixel at ({}, {}): {}", xCoord, + yCoord, e.what()); + return 0; + } } + LOG_F(WARNING, "Pixel coordinates ({}, {}) out of bounds", xCoord, yCoord); return 0; } -int EightSymmetryCircleCheck(const cv::Mat& rect_contour, - const cv::Point& center, int x_p, int y_p) { - int whitepixel = 0; - whitepixel += checkWhitePixel(rect_contour, center.x + x_p, center.y + y_p); - whitepixel += checkWhitePixel(rect_contour, center.x - x_p, center.y + y_p); - whitepixel += checkWhitePixel(rect_contour, center.x + x_p, center.y - y_p); - whitepixel += checkWhitePixel(rect_contour, center.x - x_p, center.y - y_p); - whitepixel += checkWhitePixel(rect_contour, center.x + y_p, center.y + x_p); - whitepixel += checkWhitePixel(rect_contour, center.x + y_p, center.y - x_p); - whitepixel += checkWhitePixel(rect_contour, center.x - y_p, center.y + x_p); - whitepixel += checkWhitePixel(rect_contour, center.x - y_p, center.y - x_p); - return whitepixel; +auto eightSymmetryCircleCheck(const cv::Mat& rect_contour, + const cv::Point& center, int xCoord, + int yCoord) -> int { + LOG_F(INFO, + "Performing EightSymmetryCircleCheck with xCoord: {}, yCoord: {}", + xCoord, yCoord); + int whitePixelCount = 0; + whitePixelCount += + checkWhitePixel(rect_contour, center.x + xCoord, center.y + yCoord); + whitePixelCount += + checkWhitePixel(rect_contour, center.x - xCoord, center.y + yCoord); + whitePixelCount += + checkWhitePixel(rect_contour, center.x + xCoord, center.y - yCoord); + whitePixelCount += + checkWhitePixel(rect_contour, center.x - xCoord, center.y - yCoord); + whitePixelCount += + checkWhitePixel(rect_contour, center.x + yCoord, center.y + xCoord); + whitePixelCount += + checkWhitePixel(rect_contour, center.x + yCoord, center.y - xCoord); + whitePixelCount += + checkWhitePixel(rect_contour, center.x - yCoord, center.y + xCoord); + whitePixelCount += + checkWhitePixel(rect_contour, center.x - yCoord, center.y - xCoord); + LOG_F(INFO, "White pixel count after symmetry check: {}", whitePixelCount); + return whitePixelCount; } -int FourSymmetryCircleCheck(const cv::Mat& rect_contour, - const cv::Point& center, float radius) { - int whitepixel = 0; - whitepixel += checkWhitePixel(rect_contour, center.x, - center.y + static_cast(radius)); - whitepixel += checkWhitePixel(rect_contour, center.x, - center.y - static_cast(radius)); - whitepixel += checkWhitePixel( +auto fourSymmetryCircleCheck(const cv::Mat& rect_contour, + const cv::Point& center, float radius) -> int { + LOG_F(INFO, "Performing FourSymmetryCircleCheck with radius: {}", radius); + int whitePixelCount = 0; + whitePixelCount += checkWhitePixel(rect_contour, center.x, + center.y + static_cast(radius)); + whitePixelCount += checkWhitePixel(rect_contour, center.x, + center.y - static_cast(radius)); + whitePixelCount += checkWhitePixel( rect_contour, center.x - static_cast(radius), center.y); - whitepixel += checkWhitePixel( + whitePixelCount += checkWhitePixel( rect_contour, center.x + static_cast(radius), center.y); - return whitepixel; + LOG_F(INFO, "White pixel count after four symmetry check: {}", + whitePixelCount); + return whitePixelCount; } -std::tuple, std::vector> define_narrow_radius( - int min_area, double max_area, double area, double scale) { +auto defineNarrowRadius(int minArea, double maxArea, double area, double scale) + -> std::tuple, std::vector> { + LOG_F(INFO, + "Defining narrow radius with minArea: {}, maxArea: {}, area: {}, " + "scale: {}", + minArea, maxArea, area, scale); std::vector checklist; - std::vector threslist; - int checknum = 0; + std::vector thresholdList; + int checkNum = 0; - if (min_area <= area && area <= 500 * scale) { - checknum = 2; + constexpr int AREA_THRESHOLD_1 = 500; + constexpr int AREA_THRESHOLD_2 = 1000; + constexpr double THRESHOLD_1 = 0.5; + constexpr double THRESHOLD_2 = 0.65; + constexpr double THRESHOLD_3 = 0.75; + + if (minArea <= area && area <= AREA_THRESHOLD_1 * scale) { + checkNum = 2; checklist = {1, 2}; - threslist = {0.5, 0.65}; - } else if (500 * scale < area && area <= 1000 * scale) { - checknum = 3; + thresholdList = {THRESHOLD_1, THRESHOLD_2}; + } else if (AREA_THRESHOLD_1 * scale < area && + area <= AREA_THRESHOLD_2 * scale) { + checkNum = 3; checklist = {2, 3, 4}; - threslist = {0.5, 0.65, 0.75}; - } else if (1000 * scale < area && area <= max_area) { - checknum = 3; + thresholdList = {THRESHOLD_1, THRESHOLD_2, THRESHOLD_3}; + } else if (AREA_THRESHOLD_2 * scale < area && area <= maxArea) { + checkNum = 3; checklist = {2, 3, 4}; - threslist = {0.5, 0.65, 0.75}; + thresholdList = {THRESHOLD_1, THRESHOLD_2, THRESHOLD_3}; } else { - checknum = 0; + checkNum = 0; checklist = {}; - threslist = {}; + thresholdList = {}; + LOG_F(WARNING, "Area {} is out of defined thresholds.", area); } - return {checknum, checklist, threslist}; + LOG_F(INFO, + "defineNarrowRadius result - checkNum: {}, checklist size: {}, " + "thresholdList size: {}", + checkNum, checklist.size(), thresholdList.size()); + return {checkNum, checklist, thresholdList}; } -bool BresenHamCheckCircle(const cv::Mat& rect_contour, float radius, - float pixelratio, bool if_debug) { - cv::Mat rect_contour_rgb; - if (if_debug) { - cv::cvtColor(rect_contour, rect_contour_rgb, cv::COLOR_GRAY2BGR); +auto checkBresenhamCircle(const cv::Mat& rect_contour, float radius, + float pixelRatio, bool ifDebug) -> bool { + LOG_F(INFO, + "Starting BresenhamCircleCheck with radius: {}, pixelRatio: {}, " + "ifDebug: {}", + radius, pixelRatio, ifDebug); + cv::Mat rectContourRgb; + if (ifDebug) { + cv::cvtColor(rect_contour, rectContourRgb, cv::COLOR_GRAY2BGR); + LOG_F(INFO, "Converted rect_contour to RGB for debugging."); } - int totalpixel = 0; - int whitepixel = 0; + int totalPixelCount = 0; + int whitePixelCount = 0; - cv::Size shps = rect_contour.size(); - cv::Point center(shps.width / 2, shps.height / 2); + cv::Size shape = rect_contour.size(); + cv::Point center(shape.width / 2, shape.height / 2); int p = 1 - static_cast(radius); - int x_p = 0; - int y_p = static_cast(radius); - whitepixel += FourSymmetryCircleCheck(rect_contour, center, radius); - totalpixel += 4; + int xCoord = 0; + int yCoord = static_cast(radius); + whitePixelCount += fourSymmetryCircleCheck(rect_contour, center, radius); + totalPixelCount += 4; - while (x_p <= y_p) { - x_p += 1; + while (xCoord <= yCoord) { + xCoord += 1; if (p < 0) { - p += 2 * x_p + 1; + p += 2 * xCoord + 1; } else { - y_p -= 1; - p += 2 * (x_p - y_p) + 1; + yCoord -= 1; + p += 2 * (xCoord - yCoord) + 1; } - if (if_debug) { - int singlewhite = 0; - // std::tie(singlewhite, rect_contour_rgb) = - // EightSymmetryCircleCheck_forDebug(rect_contour, rect_contour_rgb, - // center, x_p, y_p); - whitepixel += singlewhite; + if (ifDebug) { + // Future implementation for debugging can be added here + LOG_F(INFO, "Debug mode: xCoord = {}, yCoord = {}", xCoord, yCoord); } else { - whitepixel += - EightSymmetryCircleCheck(rect_contour, center, x_p, y_p); + whitePixelCount += + eightSymmetryCircleCheck(rect_contour, center, xCoord, yCoord); } - totalpixel += 8; + totalPixelCount += 8; } - float ratio = static_cast(whitepixel) / totalpixel; - if (if_debug) { + float ratio = static_cast(whitePixelCount) / totalPixelCount; + LOG_F(INFO, "BresenhamCircleCheck ratio: {}", ratio); + + if (ifDebug) { std::cout << "ratio: " << ratio << std::endl; } - return ratio > pixelratio; + bool result = ratio > pixelRatio; + LOG_F(INFO, "BresenhamCircleCheck result: {}", result); + return result; } -double Cal_Avgdev(double mid, const cv::Mat& norm_img) { +auto calculateAverageDeviation(double mid, const cv::Mat& norm_img) -> double { + LOG_F(INFO, "Calculating average deviation with mid: {}", mid); + if (norm_img.empty()) { + LOG_F(ERROR, "normalize image is empty."); + THROW_INVALID_ARGUMENT("normalize image is empty."); + } int size = norm_img.rows * norm_img.cols; double sum = 0; for (int i = 0; i < norm_img.rows; i++) { @@ -167,108 +208,159 @@ double Cal_Avgdev(double mid, const cv::Mat& norm_img) { sum += std::abs(norm_img.at(i, j) - mid); } } - double avg_dev = sum / size; - return avg_dev; + double avgDev = sum / size; + LOG_F(INFO, "Average deviation: {}", avgDev); + return avgDev; } -cv::Mat MTF(double m, const cv::Mat& img) { +auto calculateMTF(double mean, const cv::Mat& img) -> cv::Mat { + LOG_F(INFO, "Calculating MTF with mean: {}", mean); + if (img.empty()) { + LOG_F(ERROR, "Input image for MTF is empty."); + THROW_INVALID_ARGUMENT("Input image for MTF is empty."); + } cv::Mat result = img.clone(); for (int i = 0; i < img.rows; i++) { for (int j = 0; j < img.cols; j++) { double value = img.at(i, j); - if (value != 0 && value != m && value != 1) { - result.at(i, j) = - (m - 1) * value / (((2 * m - 1) * value) - m); + if (value != 0 && value != mean && value != 1) { + double denominator = ((2 * mean - 1) * value) - mean; + if (denominator != 0) { + result.at(i, j) = (mean - 1) * value / denominator; + } else { + LOG_F(WARNING, + "Denominator is zero at ({}, {}), skipping MTF " + "calculation.", + i, j); + } } } } + LOG_F(INFO, "Completed MTF calculation."); return result; } -double CalScale(const cv::Mat& img, int resize_size) { - double scale = (img.rows > img.cols) ? (double)resize_size / img.rows - : (double)resize_size / img.cols; +auto calculateScale(const cv::Mat& img, int resize_size) -> double { + LOG_F(INFO, "Calculating scale with resize_size: {}", resize_size); + if (img.empty()) { + LOG_F(ERROR, "Input image for scale calculation is empty."); + THROW_INVALID_ARGUMENT("Input image for scale calculation is empty."); + } + double scale = (img.rows > img.cols) + ? static_cast(resize_size) / img.rows + : static_cast(resize_size) / img.cols; + LOG_F(INFO, "Calculated scale: {}", scale); return scale; } -double Cal_Middev(double mid, const cv::Mat& img) { +auto calculateMedianDeviation(double mid, const cv::Mat& img) -> double { + LOG_F(INFO, "Calculating median deviation with mid: {}", mid); + if (img.empty()) { + LOG_F(ERROR, "Input image for median deviation is empty."); + THROW_INVALID_ARGUMENT("Input image for median deviation is empty."); + } std::vector deviations; for (int i = 0; i < img.rows; i++) { for (int j = 0; j < img.cols; j++) { deviations.push_back(std::abs(img.at(i, j) - mid)); } } + if (deviations.empty()) { + LOG_F(WARNING, "No deviations found in image."); + return 0.0; + } std::nth_element(deviations.begin(), deviations.begin() + deviations.size() / 2, deviations.end()); - return deviations[deviations.size() / 2]; + double medianDeviation = deviations[deviations.size() / 2]; + LOG_F(INFO, "Median deviation: {}", medianDeviation); + return medianDeviation; } -std::tuple computeParamsOneChannel(const cv::Mat& img) { +auto computeParamsOneChannel(const cv::Mat& img) + -> std::tuple { + LOG_F(INFO, "Computing parameters for one channel."); + if (img.empty()) { + LOG_F(ERROR, "Input image for computeParamsOneChannel is empty."); + THROW_INVALID_ARGUMENT( + "Input image for computeParamsOneChannel is empty."); + } + // Flatten the image and sample it - std::vector buffer_value; + std::vector bufferValue; if (img.isContinuous()) { - buffer_value.assign(img.data, img.data + img.total()); + bufferValue.assign(img.data, img.data + img.total()); } else { for (int i = 0; i < img.rows; ++i) { - buffer_value.insert(buffer_value.end(), img.ptr(i), - img.ptr(i) + img.cols); + bufferValue.insert(bufferValue.end(), img.ptr(i), + img.ptr(i) + img.cols); } } - int maxSamples = 500000; - int sampleBy = (img.rows * img.cols < maxSamples) + int sampleBy = (img.rows * img.cols < MAX_SAMPLES) ? 1 - : (img.rows * img.cols / maxSamples); + : (img.rows * img.cols / MAX_SAMPLES); + + std::vector sampleValue; + for (size_t i = 0; i < bufferValue.size(); i += sampleBy) { + sampleValue.push_back(bufferValue[i]); + } - std::vector sample_value; - for (size_t i = 0; i < buffer_value.size(); i += sampleBy) { - sample_value.push_back(buffer_value[i]); + if (sampleValue.empty()) { + LOG_F(WARNING, "Sampled values are empty."); + return {0.0, 0.0, 0.0}; } // Compute median of sampled values - size_t n = sample_value.size() / 2; - std::nth_element(sample_value.begin(), sample_value.begin() + n, - sample_value.end()); - double medianSample = sample_value[n]; + size_t n = sampleValue.size() / 2; + std::nth_element(sampleValue.begin(), sampleValue.begin() + n, + sampleValue.end()); + double medianSample = sampleValue[n]; + LOG_F(INFO, "Median sample: {}", medianSample); // Compute Median Absolute Deviation (MAD) - std::vector abs_dev(sample_value.size()); + std::vector absDev(sampleValue.size()); std::transform( - sample_value.begin(), sample_value.end(), abs_dev.begin(), - [medianSample](uchar v) { return std::abs(v - medianSample); }); + sampleValue.begin(), sampleValue.end(), absDev.begin(), + [medianSample](uchar value) { + return std::abs(static_cast(value) - medianSample); + }); - std::nth_element(abs_dev.begin(), abs_dev.begin() + n, abs_dev.end()); - double medDev = abs_dev[n]; + std::nth_element(absDev.begin(), absDev.begin() + n, absDev.end()); + double medDev = absDev[n]; + LOG_F(INFO, "Median Absolute Deviation: {}", medDev); // Normalize double inputRange = img.depth() == CV_16U ? 65535.0 : 255.0; double normalizedMedian = medianSample / inputRange; - double MADN = 1.4826 * medDev / inputRange; + double MADN = MAGIC_1_4826 * medDev / inputRange; + LOG_F(INFO, "Normalized median: {}, MADN: {}", normalizedMedian, MADN); - const double B = 0.25; - bool upper_half = normalizedMedian > 0.5; - double shadows, highlights, midtones; + bool upperHalf = normalizedMedian > 0.5; + double shadows = 0.0; + double highlights = 0.0; + double midtones = 0.0; - if (upper_half || MADN == 0) { + if (upperHalf || MADN == 0) { shadows = 0.0; } else { - shadows = std::min(1.0, std::max(0.0, normalizedMedian + -2.8 * MADN)); + shadows = + std::min(1.0, std::max(0.0, normalizedMedian - MAGIC_2_8 * MADN)); } - if (!upper_half || MADN == 0) { + if (!upperHalf || MADN == 0) { highlights = 1.0; } else { highlights = - std::min(1.0, std::max(0.0, normalizedMedian - -2.8 * MADN)); + std::min(1.0, std::max(0.0, normalizedMedian + MAGIC_2_8 * MADN)); } - double X, M; - if (!upper_half) { + double X = 0.0, M = 0.0; + if (!upperHalf) { X = normalizedMedian - shadows; - M = B; + M = BASE_RATIO; } else { - X = B; + X = BASE_RATIO; M = highlights - normalizedMedian; } @@ -282,10 +374,22 @@ std::tuple computeParamsOneChannel(const cv::Mat& img) { midtones = ((M - 1) * X) / ((2 * M - 1) * X - M); } + LOG_F(INFO, "Computed shadows: {}, midtones: {}, highlights: {}", shadows, + midtones, highlights); return {shadows, midtones, highlights}; } -cv::Mat Auto_WhiteBalance(const cv::Mat& img) { +auto autoWhiteBalance(const cv::Mat& img) -> cv::Mat { + LOG_F(INFO, "Starting auto white balance."); + if (img.empty()) { + LOG_F(ERROR, "Input image for autoWhiteBalance is empty."); + THROW_INVALID_ARGUMENT("Input image for autoWhiteBalance is empty."); + } + if (img.channels() != 3) { + LOG_F(ERROR, "Input image does not have 3 channels."); + THROW_INVALID_ARGUMENT("Input image does not have 3 channels."); + } + std::vector channels(3); cv::split(img, channels); @@ -294,9 +398,13 @@ cv::Mat Auto_WhiteBalance(const cv::Mat& img) { double avgR = cv::mean(channels[2])[0]; double avg = (avgB + avgG + avgR) / 3; - double kb = avg / avgB; - double kg = avg / avgG; - double kr = avg / avgR; + LOG_F(INFO, "Averages - B: {}, G: {}, R: {}, Overall Avg: {}", avgB, avgG, + avgR, avg); + + // Prevent division by zero + double kb = (avgB != 0) ? avg / avgB : 1.0; + double kg = (avgG != 0) ? avg / avgG : 1.0; + double kr = (avgR != 0) ? avg / avgR : 1.0; channels[0] = channels[0] * kb; channels[1] = channels[1] * kg; @@ -304,31 +412,6 @@ cv::Mat Auto_WhiteBalance(const cv::Mat& img) { cv::Mat result; cv::merge(channels, result); + LOG_F(INFO, "Completed auto white balance."); return result; } - -void averageFilter(const cv::Mat& src, cv::Mat& dst, int kernelSize) { - cv::blur(src, dst, cv::Size(kernelSize, kernelSize)); -} - -void gaussianFilter(const cv::Mat& src, cv::Mat& dst, int kernelSize, - double sigmaX, double sigmaY = 0) { - cv::GaussianBlur(src, dst, cv::Size(kernelSize, kernelSize), sigmaX, - sigmaY); -} - -void medianFilter(const cv::Mat& src, cv::Mat& dst, int kernelSize) { - cv::medianBlur(src, dst, kernelSize); -} - -void bilateralFilter(const cv::Mat& src, cv::Mat& dst, int d, double sigmaColor, - double sigmaSpace) { - cv::bilateralFilter(src, dst, d, sigmaColor, sigmaSpace); -} - -void sharpen(const cv::Mat& src, cv::Mat& dst) { - // A simple sharpening kernel - cv::Mat kernel = (cv::Mat_(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0); - - cv::filter2D(src, dst, -1, kernel); -} diff --git a/modules/lithium.image/src/ndarray_converter.cpp b/modules/lithium.image/src/ndarray_converter.cpp new file mode 100644 index 00000000..8d084d51 --- /dev/null +++ b/modules/lithium.image/src/ndarray_converter.cpp @@ -0,0 +1,328 @@ +// NDArrayConverter.cpp +#include "ndarray_converter.hpp" + +#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION +#include +#include +#include +#include +#include + +#if PY_VERSION_HEX >= 0x03000000 +#define PyInt_Check PyLong_Check +#define PyInt_AsLong PyLong_AsLong +#endif + +struct Tmp { +public: + const char* name; + explicit Tmp(const char* name) : name(name) {} +}; + +Tmp info("return value"); + +auto NDArrayConverter::init_numpy() -> bool { + import_array1(false); + return true; +} + +static PyObject* opencv_error = nullptr; + +static auto failmsg(const char* fmt, ...) -> int { + constexpr size_t STR_SIZE = 1000; + char str[STR_SIZE]; + va_list args; + va_start(args, fmt); + vsnprintf(str, STR_SIZE, fmt, args); + va_end(args); + PyErr_SetString(PyExc_TypeError, str); + return 0; +} + +class PyAllowThreads { +public: + PyAllowThreads() : state_(PyEval_SaveThread()) {} + ~PyAllowThreads() { PyEval_RestoreThread(state_); } + +private: + PyThreadState* state_; +}; + +class PyEnsureGIL { +public: + PyEnsureGIL() : state_(PyGILState_Ensure()) {} + ~PyEnsureGIL() { PyGILState_Release(state_); } + +private: + PyGILState_STATE state_; +}; + +#define ERRWRAP2(expr) \ + try { \ + PyAllowThreads allowThreads; \ + expr; \ + } catch (const cv::Exception& e) { \ + PyErr_SetString(opencv_error, e.what()); \ + return 0; \ + } + +using namespace cv; + +class NumpyAllocator : public MatAllocator { +public: + NumpyAllocator() { stdAllocator = Mat::getStdAllocator(); } + ~NumpyAllocator() override = default; + + auto allocate(PyObject* obj, int dims, const int* sizes, int type, + size_t* step) const -> UMatData* { + auto* u = new UMatData(this); + u->data = u->origdata = static_cast( + PyArray_DATA(reinterpret_cast(obj))); + auto* strides = PyArray_STRIDES(reinterpret_cast(obj)); + for (int i = 0; i < dims - 1; i++) { + step[i] = static_cast(strides[i]); + } + step[dims - 1] = CV_ELEM_SIZE(type); + u->size = sizes[0] * step[0]; + u->userdata = obj; + return u; + } + +#if CV_MAJOR_VERSION < 4 + auto allocate(int dims0, const int* sizes, int type, void* data, + size_t* step, int flags, + UMatUsageFlags usageFlags) const -> UMatData* override +#else + auto allocate(int dims0, const int* sizes, int type, void* data, + size_t* step, AccessFlag flags, + UMatUsageFlags usageFlags) const -> UMatData* override +#endif + { + if (data != nullptr) { + CV_Error(Error::StsAssert, "The data should normally be NULL!"); + return stdAllocator->allocate(dims0, sizes, type, data, step, flags, + usageFlags); + } + PyEnsureGIL gil; + int depth = CV_MAT_DEPTH(type); + int cn = CV_MAT_CN(type); + int typenum = 0; + switch (depth) { + case CV_8U: + typenum = NPY_UBYTE; + break; + case CV_8S: + typenum = NPY_BYTE; + break; + case CV_16U: + typenum = NPY_USHORT; + break; + case CV_16S: + typenum = NPY_SHORT; + break; + case CV_32S: + typenum = NPY_INT; + break; + case CV_32F: + typenum = NPY_FLOAT; + break; + case CV_64F: + typenum = NPY_DOUBLE; + break; + default: + CV_Error(Error::StsUnsupportedFormat, "Unsupported data type"); + } + std::vector sizes_vec(dims0 + (cn > 1 ? 1 : 0)); + for (int i = 0; i < dims0; i++) { + sizes_vec[i] = sizes[i]; + } + if (cn > 1) { + sizes_vec[dims0] = cn; + } + + PyObject* obj = PyArray_SimpleNew(dims0 + (cn > 1 ? 1 : 0), + sizes_vec.data(), typenum); + if (!obj) { + CV_Error_( + Error::StsError, + ("Cannot create numpy array with type %d and %d dimensions", + typenum, dims0)); + } + + return allocate(obj, dims0, sizes, type, step); + } + +#if CV_MAJOR_VERSION < 4 + auto allocate(UMatData* u, int accessFlags, + UMatUsageFlags usageFlags) const -> bool override +#else + auto allocate(UMatData* u, AccessFlag accessFlags, + UMatUsageFlags usageFlags) const -> bool override +#endif + { + return stdAllocator->allocate(u, accessFlags, usageFlags); + } + + void deallocate(UMatData* u) const override { + if (!u) { + return; + } + PyEnsureGIL gil; + if (u->refcount == 0) { + PyObject* obj = reinterpret_cast(u->userdata); + Py_XDECREF(obj); + delete u; + } + } + + const MatAllocator* stdAllocator; +}; + +static NumpyAllocator g_numpyAllocator; + +auto NDArrayConverter::toMat(PyObject* obj, Mat& mat) -> bool { + if (!obj || obj == Py_None) { + if (!mat.data) { + mat.allocator = &g_numpyAllocator; + } + return true; + } + + if (PyInt_Check(obj)) { + double values[] = {static_cast(PyInt_AsLong(obj)), 0., 0., 0.}; + mat = Mat(4, 1, CV_64F, values).clone(); + return true; + } + if (PyFloat_Check(obj)) { + double values[] = {PyFloat_AsDouble(obj), 0., 0., 0.}; + mat = Mat(4, 1, CV_64F, values).clone(); + return true; + } + if (PyTuple_Check(obj)) { + int size = static_cast(PyTuple_Size(obj)); + mat = Mat(size, 1, CV_64F); + for (int i = 0; i < size; i++) { + PyObject* item = PyTuple_GetItem(obj, i); + if (PyInt_Check(item)) { + mat.at(i) = static_cast(PyInt_AsLong(item)); + } else if (PyFloat_Check(item)) { + mat.at(i) = PyFloat_AsDouble(item); + } else { + failmsg("%s is not a numerical tuple", info.name); + mat.release(); + return false; + } + } + return true; + } + + if (!PyArray_Check(obj)) { + failmsg("%s is not a numpy array, neither a scalar", info.name); + return false; + } + + PyArrayObject* arr = reinterpret_cast(obj); + int typenum = PyArray_TYPE(arr); + int type = 0; + switch (typenum) { + case NPY_UBYTE: + type = CV_8U; + break; + case NPY_BYTE: + type = CV_8S; + break; + case NPY_USHORT: + type = CV_16U; + break; + case NPY_SHORT: + type = CV_16S; + break; + case NPY_INT: + type = CV_32S; + break; + case NPY_FLOAT: + type = CV_32F; + break; + case NPY_DOUBLE: + type = CV_64F; + break; + default: + failmsg("%s data type = %d is not supported", info.name, typenum); + return false; + } + + int ndims = PyArray_NDIM(arr); + const npy_intp* sizes = PyArray_DIMS(arr); + const npy_intp* strides = PyArray_STRIDES(arr); + bool isMultichannel = (ndims == 3) && (sizes[2] <= CV_CN_MAX); + + int dims = isMultichannel ? ndims - 1 : ndims; + std::vector size(dims); + std::vector step(dims); + + size_t elemsize = CV_ELEM_SIZE1(type); + for (int i = dims - 1; i >= 0; --i) { + size[i] = static_cast(sizes[i]); + step[i] = static_cast(strides[i]) / elemsize; + } + + if (isMultichannel) { + type |= CV_MAKETYPE(0, sizes[2]); + } + + mat = Mat(dims, size.data(), type, PyArray_DATA(arr)); + mat.allocator = &g_numpyAllocator; + mat.u = + g_numpyAllocator.allocate(obj, dims, size.data(), type, step.data()); + + Py_INCREF(obj); + return true; +} + +auto NDArrayConverter::toNDArray(const cv::Mat& mat) -> PyObject* { + if (!mat.data) { + Py_RETURN_NONE; + } + Mat temp, *p = const_cast(&mat); + if (!p->u || p->allocator != &g_numpyAllocator) { + temp.allocator = &g_numpyAllocator; + ERRWRAP2(p->copyTo(temp)); + p = &temp; + } + PyObject* obj = reinterpret_cast(p->u->userdata); + Py_INCREF(obj); + return obj; +} + +auto NDArrayConverter::toNDArrayList(const std::vector& mats) + -> PyObject* { + PyObject* list = PyList_New(mats.size()); + if (!list) { + return nullptr; + } + for (size_t i = 0; i < mats.size(); ++i) { + PyObject* obj = toNDArray(mats[i]); + if (!obj) { + Py_DECREF(list); + return nullptr; + } + PyList_SET_ITEM(list, i, obj); + } + return list; +} + +auto NDArrayConverter::toMatList(PyObject* obj, + std::vector& mats) -> bool { + if (!PyList_Check(obj)) { + return false; + } + Py_ssize_t size = PyList_Size(obj); + mats.resize(size); + for (Py_ssize_t i = 0; i < size; ++i) { + PyObject* item = PyList_GetItem(obj, i); + if (!toMat(item, mats[i])) { + return false; + } + } + return true; +} \ No newline at end of file diff --git a/modules/lithium.image/src/solver.cpp b/modules/lithium.image/src/solver.cpp deleted file mode 100644 index 3f602c48..00000000 --- a/modules/lithium.image/src/solver.cpp +++ /dev/null @@ -1,107 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include "solver.hpp" - -#include - -auto findStarsByStellarSolver(bool AllStars, bool runHFR) -> std::vector { - Tools tempTool; - - LoadFitsResult result; - - std::vector stars; - - result = loadFits("/dev/shm/ccd_simulator.fits"); - - if (!result.success) { - std::cerr << "Error in loading FITS file" << std::endl; - return stars; - } - - FITSImage::Statistic imageStats = result.imageStats; - uint8_t* imageBuffer = result.imageBuffer; - stars = tempTool.FindStarsByStellarSolver_(AllStars, imageStats, imageBuffer, runHFR); - return stars; -} - -std::vector FindStarsByStellarSolver_(bool AllStars, const FITSImage::Statistic& imagestats, const uint8_t* imageBuffer, bool runHFR) { - StellarSolver solver(imagestats, imageBuffer); - // 配置solver参数 - SSolver::Parameters parameters; - - // 设置参数 - parameters.apertureShape = SSolver::SHAPE_CIRCLE; - parameters.autoDownsample = true; - parameters.clean = 1; - parameters.clean_param = 1; - parameters.convFilterType = SSolver::CONV_GAUSSIAN; - parameters.deblend_contrast = 0.004999999888241291; - parameters.deblend_thresh = 32; - parameters.description = "Default focus star-extraction."; - parameters.downsample = 1; - parameters.fwhm = 1; - parameters.inParallel = true; - parameters.initialKeep = 250; - parameters.keepNum = 100; - parameters.kron_fact = 2.5; - parameters.listName = "1-Focus-Default"; - parameters.logratio_tokeep = 20.72326583694641; - parameters.logratio_tosolve = 20.72326583694641; - parameters.logratio_totune = 13.815510557964274; - parameters.magzero = 20; - parameters.maxEllipse = 1.5; - parameters.maxSize = 10; - parameters.maxwidth = 180; - parameters.minSize = 0; - parameters.minarea = 20; - parameters.minwidth = 0.1; - parameters.multiAlgorithm = SSolver::MULTI_AUTO; - parameters.partition = true; - parameters.r_min = 5; - parameters.removeBrightest = 10; - parameters.removeDimmest = 20; - parameters.resort = true; - parameters.saturationLimit = 90; - parameters.search_parity = 15; - parameters.solverTimeLimit = 600; - parameters.subpix = 5; - - solver.setLogLevel(SSolver::LOG_ALL); - solver.setSSLogLevel(SSolver::LOG_NORMAL); - - solver.setProperty("ExtractorType", SSolver::EXTRACTOR_INTERNAL); - solver.setProperty("ProcessType", SSolver::EXTRACT); - solver.setParameterProfile(SSolver::Parameters::DEFAULT); - - solver.setParameters(parameters); - - if (AllStars) { - solver.setParameterProfile(SSolver::Parameters::ALL_STARS); - } - - // 进行星点检测 - bool success = solver.extract(runHFR); - if (!success) { - std::cerr << "Star extraction failed." << std::endl; - } - std::cout << "Success extract: " << success << std::endl; - - std::vector stars = solver.getStarList(); - - // 输出检测到的星点信息 - std::cout << "Detected " << stars.size() << " stars." << std::endl; - for (const auto& star : stars) { - std::cout << "Star at (" << star.x << ", " << star.y << ") with HFR: " << star.HFR << std::endl; - } - - return stars; -} - -void StellarSolverLogOutput(const std::string& text) { - std::cout << "StellarSolver LogOutput: " << text << std::endl; -} diff --git a/modules/lithium.image/src/stack.cpp b/modules/lithium.image/src/stack.cpp index c3f90235..52df57d4 100644 --- a/modules/lithium.image/src/stack.cpp +++ b/modules/lithium.image/src/stack.cpp @@ -2,155 +2,320 @@ #include #include -#include -#include -#include -#include #include +#include +#include -std::pair computeMeanAndStdDev( - const std::vector& images) { - cv::Mat mean, stdDev; - std::vector temp(images.size()); +#include "atom/error/exception.hpp" +#include "atom/log/loguru.hpp" - for (size_t i = 0; i < images.size(); ++i) { - images[i].convertTo(temp[i], CV_32F); +// Compute the mean and standard deviation of images +auto computeMeanAndStdDev(const std::vector& images) + -> std::pair { + if (images.empty()) { + LOG_F(ERROR, + "Input images are empty when computing mean and standard " + "deviation."); + THROW_RUNTIME_ERROR("Input images are empty"); + } + + LOG_F( + INFO, + "Starting to compute mean and standard deviation. Number of images: {}", + images.size()); + + // Initialize mean and standard deviation matrices + cv::Mat mean = cv::Mat::zeros(images[0].size(), CV_32F); + cv::Mat accumSquare = cv::Mat::zeros(images[0].size(), CV_32F); + + // Accumulate pixel values + for (const auto& img : images) { + if (img.size() != mean.size() || img.type() != mean.type()) { + LOG_F(ERROR, "All images must have the same size and type."); + THROW_RUNTIME_ERROR("Image size or type mismatch"); + } + + cv::Mat floatImg; + img.convertTo(floatImg, CV_32F); + mean += floatImg; + accumSquare += floatImg.mul(floatImg); } - cv::merge(temp, mean); - cv::meanStdDev(mean, mean, stdDev); + // Compute mean + mean /= static_cast(images.size()); + + // Compute standard deviation + cv::Mat stdDev; + cv::sqrt(accumSquare / static_cast(images.size()) - mean.mul(mean), + stdDev); + + LOG_F(INFO, "Mean and standard deviation computation completed."); return {mean, stdDev}; } -// Sigma剪裁叠加 -cv::Mat sigmaClippingStack(const std::vector& images, - float sigma = 2.0) { +// Sigma clipping stack +auto sigmaClippingStack(const std::vector& images, + float sigma) -> cv::Mat { if (images.empty()) { - std::cerr << "Error: No images to stack." << std::endl; - return cv::Mat(); + LOG_F(ERROR, "No input images for sigma clipping stack."); + THROW_RUNTIME_ERROR("No images to stack"); } - cv::Mat mean, stdDev; - std::tie(mean, stdDev) = computeMeanAndStdDev(images); + LOG_F(INFO, "Starting sigma clipping stack. Sigma value: %.2f", sigma); + + cv::Mat mean; + cv::Mat stdDev; + try { + std::tie(mean, stdDev) = computeMeanAndStdDev(images); + } catch (const std::exception& e) { + LOG_F(ERROR, "Failed to compute mean and standard deviation: {}", + e.what()); + throw; + } std::vector layers; - for (const auto& img : images) { + for (size_t i = 0; i < images.size(); ++i) { cv::Mat temp; - img.convertTo(temp, CV_32F); - cv::Mat mask = cv::abs(temp - mean) < sigma * stdDev; + images[i].convertTo(temp, CV_32F); + cv::Mat mask = cv::abs(temp - mean) < (sigma * stdDev); temp.setTo(0, ~mask); layers.push_back(temp); + LOG_F(INFO, "Processed image {}, applied sigma clipping mask.", i + 1); } cv::Mat sum = cv::Mat::zeros(images[0].size(), CV_32F); cv::Mat count = cv::Mat::zeros(images[0].size(), CV_32F); - for (const auto& layer : layers) { - cv::Mat mask = layer != 0; - sum += layer; + for (size_t i = 0; i < layers.size(); ++i) { + cv::Mat mask = layers[i] != 0; + sum += layers[i]; count += mask; + LOG_F(INFO, "Accumulated layer {}.", i + 1); } - cv::Mat result = sum / count; + // Prevent division by zero + cv::Mat nonZeroMask = count > 0; + cv::Mat result = cv::Mat::zeros(images[0].size(), CV_32F); + sum.copyTo(result, nonZeroMask); + result /= count; + + // Convert result back to 8-bit image result.convertTo(result, CV_8U); + + LOG_F(INFO, "Sigma clipping stack completed."); + return result; } -// 图像叠加函数 -cv::Mat stackImages(const std::vector& images, StackMode mode, - float sigma) { +// Compute the mode (most frequent value) of each pixel +auto computeMode(const std::vector& images) -> cv::Mat { if (images.empty()) { - std::cerr << "Error: No images to stack." << std::endl; - return cv::Mat(); + LOG_F(ERROR, "Input images are empty when computing mode."); + THROW_RUNTIME_ERROR("Input images are empty"); } - cv::Mat stackedImage; + LOG_F(INFO, "Starting to compute image mode. Number of images: {}", + images.size()); - switch (mode) { - case MEAN: { - images[0].convertTo(stackedImage, CV_32F); - for (size_t i = 1; i < images.size(); ++i) { - cv::Mat temp; - images[i].convertTo(temp, CV_32F); - stackedImage += temp; - } - stackedImage /= static_cast(images.size()); - stackedImage.convertTo(stackedImage, CV_8U); - break; - } - case MEDIAN: { - std::vector layers; + cv::Mat modeImage = cv::Mat::zeros(images[0].size(), images[0].type()); + + for (int row = 0; row < images[0].rows; ++row) { + for (int col = 0; col < images[0].cols; ++col) { + std::unordered_map frequency; for (const auto& img : images) { - cv::Mat temp; - img.convertTo(temp, CV_32F); - layers.push_back(temp); + uchar pixel = img.at(row, col); + frequency[pixel]++; } - cv::merge(layers, stackedImage); - cv::sort(stackedImage, stackedImage, cv::SORT_EVERY_COLUMN); + // Find the most frequent pixel value + int maxFreq = 0; + uchar modePixel = 0; + for (const auto& [pixel, freq] : frequency) { + if (freq > maxFreq) { + maxFreq = freq; + modePixel = pixel; + } + } - std::vector channels; - cv::split(stackedImage, channels); + modeImage.at(row, col) = modePixel; + } + } - for (auto& channel : channels) { - channel = channel.row(channel.rows / 2); - } + LOG_F(INFO, "Image mode computation completed."); + + return modeImage; +} + +auto stackImages(const std::vector& images, StackMode mode, + float sigma, const std::vector& weights) -> cv::Mat; + +// Stack images by layers +auto stackImagesByLayers(const std::vector& images, StackMode mode, + float sigma, + const std::vector& weights) -> cv::Mat { + if (images.empty()) { + LOG_F(ERROR, "No input images for stacking."); + THROW_RUNTIME_ERROR("No images to stack"); + } - cv::merge(channels, stackedImage); - stackedImage.convertTo(stackedImage, CV_8U); - break; + std::vector channels; + cv::split(images[0], channels); + + for (size_t i = 1; i < images.size(); ++i) { + std::vector tempChannels; + cv::split(images[i], tempChannels); + for (size_t j = 0; j < channels.size(); ++j) { + channels[j].push_back(tempChannels[j]); } - case MAXIMUM: { - stackedImage = images[0].clone(); - for (size_t i = 1; i < images.size(); ++i) { - stackedImage = cv::max(stackedImage, images[i]); + } + + std::vector stackedChannels; + stackedChannels.reserve(channels.size()); + for (auto& channel : channels) { + stackedChannels.push_back(stackImages(channel, mode, sigma, weights)); + } + + cv::Mat stackedImage; + cv::merge(stackedChannels, stackedImage); + + LOG_F(INFO, "Image stacking by layers completed."); + + return stackedImage; +} + +// Image stacking function +auto stackImages(const std::vector& images, StackMode mode, + float sigma, const std::vector& weights) -> cv::Mat { + if (images.empty()) { + LOG_F(ERROR, "No input images for stacking."); + THROW_RUNTIME_ERROR("No images to stack"); + } + + cv::Mat stackedImage; + + try { + switch (mode) { + case MEAN: { + LOG_F(INFO, "Selected stacking mode: Mean stack (MEAN)"); + // Compute mean + cv::Mat stdDev; // Declare stdDev variable + std::tie(stackedImage, stdDev) = computeMeanAndStdDev(images); + stackedImage.convertTo(stackedImage, CV_8U); + break; } - break; - } - case MINIMUM: { - stackedImage = images[0].clone(); - for (size_t i = 1; i < images.size(); ++i) { - stackedImage = cv::min(stackedImage, images[i]); + case MEDIAN: { + LOG_F(INFO, "Selected stacking mode: Median stack (MEDIAN)"); + std::vector sortedImages; + for (const auto& img : images) { + cv::Mat floatImg; + img.convertTo(floatImg, CV_32F); + sortedImages.push_back(floatImg); + } + + // Stack all images into a 4D matrix + cv::Mat stacked4D; + cv::merge(sortedImages, stacked4D); + + // Compute median + cv::Mat medianImg = cv::Mat::zeros(images[0].size(), CV_32F); + for (int row = 0; row < medianImg.rows; ++row) { + for (int col = 0; col < medianImg.cols; ++col) { + std::vector pixelValues; + pixelValues.reserve(sortedImages.size()); + for (const auto& sortedImg : sortedImages) { + pixelValues.push_back( + sortedImg.at(row, col)); + } + std::nth_element( + pixelValues.begin(), + pixelValues.begin() + static_cast( + pixelValues.size() / 2), + pixelValues.end()); + medianImg.at(row, col) = + pixelValues[pixelValues.size() / 2]; + } + } + medianImg.convertTo(stackedImage, CV_8U); + break; } - break; - } - case SIGMA_CLIPPING: { - stackedImage = sigmaClippingStack(images, sigma); - break; - } - case WEIGHTED_MEAN: { - std::vector weights = {0.1, 0.2, 0.3, 0.4}; // 自定义权重 - float totalWeight = - std::accumulate(weights.begin(), weights.end(), 0.0f); - - images[0].convertTo(stackedImage, CV_32F); - stackedImage *= weights[0]; - - for (size_t i = 1; i < images.size(); ++i) { - cv::Mat temp; - images[i].convertTo(temp, CV_32F); - temp *= weights[i]; - stackedImage += temp; + case MAXIMUM: { + LOG_F(INFO, "Selected stacking mode: Maximum stack (MAXIMUM)"); + stackedImage = images[0].clone(); + for (size_t i = 1; i < images.size(); ++i) { + cv::max(stackedImage, images[i], stackedImage); + LOG_F(INFO, "Applied maximum stack: Image {}", i + 1); + } + break; + } + case MINIMUM: { + LOG_F(INFO, "Selected stacking mode: Minimum stack (MINIMUM)"); + stackedImage = images[0].clone(); + for (size_t i = 1; i < images.size(); ++i) { + cv::min(stackedImage, images[i], stackedImage); + LOG_F(INFO, "Applied minimum stack: Image {}", i + 1); + } + break; } + case SIGMA_CLIPPING: { + LOG_F(INFO, + "Selected stacking mode: Sigma clipping stack " + "(SIGMA_CLIPPING)"); + stackedImage = sigmaClippingStack(images, sigma); + break; + } + case WEIGHTED_MEAN: { + LOG_F(INFO, + "Selected stacking mode: Weighted mean stack " + "(WEIGHTED_MEAN)"); + if (weights.empty()) { + LOG_F(ERROR, + "Weight vector is empty for weighted mean stack."); + THROW_RUNTIME_ERROR("Weight vector cannot be empty"); + } + if (weights.size() != images.size()) { + LOG_F(ERROR, + "Number of weights does not match number of images."); + THROW_RUNTIME_ERROR( + "Number of weights does not match number of images"); + } - stackedImage /= totalWeight; - stackedImage.convertTo(stackedImage, CV_8U); - break; - } - case LIGHTEN: { - stackedImage = images[0].clone(); - for (size_t i = 1; i < images.size(); ++i) { - cv::Mat mask = stackedImage < images[i]; - stackedImage.setTo(images[i], mask); + // Compute weighted sum + cv::Mat weightedSum = cv::Mat::zeros(images[0].size(), CV_32F); + float totalWeight = 0.0F; + for (size_t i = 0; i < images.size(); ++i) { + cv::Mat floatImg; + images[i].convertTo(floatImg, CV_32F); + weightedSum += floatImg * weights[i]; + totalWeight += weights[i]; + LOG_F(INFO, "Applied weight {}: %.2f", i + 1, weights[i]); + } + + // Compute weighted mean + weightedSum /= totalWeight; + weightedSum.convertTo(stackedImage, CV_8U); + break; + } + case LIGHTEN: { + LOG_F(INFO, "Selected stacking mode: Lighten stack (LIGHTEN)"); + stackedImage = images[0].clone(); + for (size_t i = 1; i < images.size(); ++i) { + cv::Mat mask = images[i] > stackedImage; + images[i].copyTo(stackedImage, mask); + LOG_F(INFO, "Applied lighten stack: Image {}", i + 1); + } + break; + } + default: { + THROW_INVALID_ARGUMENT("Unknown stacking mode"); } - break; - } - default: { - std::cerr << "Error: Unknown stacking mode." << std::endl; - return cv::Mat(); } + + LOG_F(INFO, "Image stacking completed."); + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception occurred during image stacking: {}", e.what()); + throw; } return stackedImage; -} +} \ No newline at end of file diff --git a/modules/lithium.image/src/stretch.cpp b/modules/lithium.image/src/stretch.cpp index 7acc880c..7e494edc 100644 --- a/modules/lithium.image/src/stretch.cpp +++ b/modules/lithium.image/src/stretch.cpp @@ -4,46 +4,96 @@ #include #include -#include #include #include #include -auto Stretch_WhiteBalance(const std::vector& hists, - const std::vector& bgr_planes) -> cv::Mat { +#include "atom/error/exception.hpp" +#include "atom/log/loguru.hpp" + +constexpr double BLACK_CLIP_FACTOR = -1.25; +constexpr double TARGET_BACKGROUND = 0.1; +constexpr int MAX_8BIT_VALUE = 255; +constexpr int MAX_16BIT_VALUE = 65535; + +auto stretchWhiteBalance(const std::vector& hists, + const std::vector& bgrPlanes) -> cv::Mat { + LOG_F(INFO, + "Starting white balance stretch for image {}x{} with {} channels", + bgrPlanes[0].cols, bgrPlanes[0].rows, bgrPlanes.size()); + + if (hists.size() != 3 || bgrPlanes.size() != 3) { + LOG_F(ERROR, "Invalid input dimensions: hists={}, planes={}", + hists.size(), bgrPlanes.size()); + THROW_INVALID_ARGUMENT( + "Both hists and bgrPlanes must contain 3 channels"); + } + std::vector planes; std::vector highs; - double maxPara = 0.0001; - double minPara = 0.0001; + + auto start = std::chrono::high_resolution_clock::now(); for (size_t i = 0; i < hists.size(); ++i) { + LOG_F(INFO, "Processing channel {} of {}", i + 1, hists.size()); + cv::Mat plane; - std::vector nonzeroIndices; - cv::findNonZero(hists[i], nonzeroIndices); - size_t nonezeroLen = nonzeroIndices.size(); - float minVal = nonzeroIndices[int(nonezeroLen * minPara)]; - float maxVal = nonzeroIndices[int(nonezeroLen * (1 - maxPara)) - 1]; + cv::Mat nonzeroLocations; + cv::findNonZero(hists[i], nonzeroLocations); + + if (nonzeroLocations.empty()) { + LOG_F(WARNING, "Channel {} has no non-zero values, skipping", i); + continue; + } - plane = bgr_planes[i].clone(); + size_t nonzeroLen = nonzeroLocations.total(); + LOG_F(INFO, "Channel {} has {} non-zero values", i, nonzeroLen); + + float minVal = + nonzeroLocations.at(int(nonzeroLen * DEFAULT_MIN_PARA)) + .y; + float maxVal = + nonzeroLocations + .at(int(nonzeroLen * (1 - DEFAULT_MAX_PARA)) - 1) + .y; + + LOG_F(INFO, "Channel {} value range: min={:.2f}, max={:.2f}", i, minVal, + maxVal); + + plane = bgrPlanes[i].clone(); plane.convertTo(plane, CV_32F); + + LOG_F(INFO, "Stretching channel {} values to 16-bit range", i); plane = (plane - minVal) / (maxVal - minVal) * 65535; + + LOG_F(INFO, "Applying thresholds to channel {}", i); cv::threshold(plane, plane, 65535, 65535, cv::THRESH_TRUNC); cv::threshold(plane, plane, 0, 0, cv::THRESH_TOZERO); plane.convertTo(plane, CV_16U); + double minHist, maxHist; + cv::minMaxLoc(hists[i], &minHist, &maxHist); + double high = (maxHist - minVal) / (maxVal - minVal) * 65535; + planes.push_back(plane); - // TODO: Use cv::minMaxLoc - // double high = (cv::minMaxLoc(hists[i]).maxVal - min_val) / - // (max_val - min_val) * 65535; - double high = 0; highs.push_back(high); + + LOG_F(INFO, + "Channel {} processing complete: min={:.2f}, max={:.2f}, " + "high={:.2f}", + i, minVal, maxVal, high); } double highMean = std::accumulate(highs.begin(), highs.end(), 0.0) / highs.size(); + LOG_F(INFO, "Calculated average high value: {:.2f}", highMean); + LOG_F(INFO, "Adjusting channel intensities..."); std::vector adjustedPlanes; for (size_t i = 0; i < planes.size(); ++i) { + LOG_F(INFO, "Adjusting channel {} with factor {:.3f}", i, + highMean / highs[i]); + cv::Mat temp; planes[i].convertTo(temp, CV_32F); temp *= (highMean / highs[i]); @@ -54,25 +104,33 @@ auto Stretch_WhiteBalance(const std::vector& hists, cv::Mat dst; cv::merge(adjustedPlanes, dst); + + auto end = std::chrono::high_resolution_clock::now(); + auto duration = + std::chrono::duration_cast(end - start); + + LOG_F(INFO, "White balance stretch completed in {} ms. Output size: {}x{}", + duration.count(), dst.cols, dst.rows); + return dst; } -auto StretchGray(const cv::Mat& hist, cv::Mat& plane) -> cv::Mat { - double maxPara = 0.01; - double minPara = 0.01; +auto stretchGray(const cv::Mat& hist, cv::Mat& plane) -> cv::Mat { + LOG_F(INFO, "Starting grayscale stretch"); + + if (hist.empty() || plane.empty()) { + LOG_F(ERROR, "Empty input histogram or plane"); + THROW_INVALID_ARGUMENT("Input histogram or plane is empty"); + } - // Corrected: Using cv::Mat to store non-zero locations cv::Mat nonzeroLocations; cv::findNonZero(hist, nonzeroLocations); - // Check if there are any nonzero elements if (nonzeroLocations.empty()) { - return plane; // or handle this condition appropriately + LOG_F(WARNING, "No non-zero values found in histogram"); + return plane; } - // Assuming hist is a histogram of intensities, we sort the locations to - // find min and max If hist is not structured as expected, you'll need to - // adjust this logic std::vector nonzeroValues; nonzeroValues.reserve(nonzeroLocations.rows); for (int i = 0; i < nonzeroLocations.rows; ++i) { @@ -82,93 +140,103 @@ auto StretchGray(const cv::Mat& hist, cv::Mat& plane) -> cv::Mat { std::sort(nonzeroValues.begin(), nonzeroValues.end()); size_t nonzeroLen = nonzeroValues.size(); - float minVal = nonzeroValues[int(nonzeroLen * minPara)]; - float maxVal = nonzeroValues[int(nonzeroLen * (1 - maxPara)) - 1]; + float minVal = nonzeroValues[int(nonzeroLen * DEFAULT_MIN_PARA)]; + float maxVal = nonzeroValues[int(nonzeroLen * (1 - DEFAULT_MAX_PARA)) - 1]; + + LOG_F(INFO, "Calculated stretch parameters: min={}, max={}", minVal, + maxVal); - cv::threshold(plane, plane, maxVal, 65535, cv::THRESH_TRUNC); - cv::threshold(plane, plane, minVal, 0, cv::THRESH_TOZERO); + cv::Mat stretched; + plane.convertTo(stretched, CV_32F); + stretched = (stretched - minVal) / (maxVal - minVal) * 65535; - plane.convertTo(plane, CV_32F); - plane = (plane - minVal) / (maxVal - minVal) * 65535; - cv::threshold(plane, plane, 65535, 65535, cv::THRESH_TRUNC); + cv::threshold(stretched, stretched, 65535, 65535, cv::THRESH_TRUNC); + cv::threshold(stretched, stretched, 0, 0, cv::THRESH_TOZERO); - // Corrected: Using cv::medianBlur correctly - cv::Mat blurred; - cv::medianBlur(plane, blurred, - 3); // Use a kernel size greater than 1 for actual blurring - // Assuming you need to use the median of the blurred image for further - // processing However, cv::medianBlur does not return a median value, so - // you'll need a different approach to calculate median + cv::Mat medianBlurred; + cv::medianBlur(stretched, medianBlurred, DEFAULT_MEDIAN_BLUR_SIZE); - // Assuming a step here to calculate `gradMed` as it's not clear how you - // intend to use medianBlur's result - double gradMed = 5000; // Placeholder value, calculate as needed + double medianValue; + cv::Scalar mean = cv::mean(medianBlurred); + medianValue = mean[0]; + double gradMed = medianValue; double mt = gradMed / 30000; - cv::pow(plane / 65535, 1 / mt, plane); - plane *= 65535; - cv::threshold(plane, plane, 65535, 65535, cv::THRESH_TRUNC); - plane.convertTo(plane, CV_16U); + cv::pow(stretched / 65535, 1 / mt, stretched); + stretched *= 65535; + + cv::threshold(stretched, stretched, 65535, 65535, cv::THRESH_TRUNC); + stretched.convertTo(stretched, CV_16U); + + LOG_F(INFO, "Grayscale stretch completed"); + return stretched; +} - return plane; +auto calculateAverageDeviation(double median, + const cv::Mat& normalizedImg) -> double { + double sum = 0.0; + for (int i = 0; i < normalizedImg.rows; i++) { + for (int j = 0; j < normalizedImg.cols; j++) { + sum += std::abs(normalizedImg.at(i, j) - median); + } + } + return sum / (normalizedImg.rows * normalizedImg.cols); } -auto GrayStretch(const cv::Mat& img) -> cv::Mat { - double blackClip = -1.25; - double targetBkg = 0.1; - cv::Mat normImg; - cv::normalize(img, normImg, 0, 1, cv::NORM_MINMAX); - - // double median = cv::median(norm_img); - double median = cv::mean(normImg).val[0]; - double avgbias = Cal_Avgdev(median, normImg); - double c0 = std::min(std::max(median + (blackClip * avgbias), 0.0), 1.0); - - double m = (median - c0) * (targetBkg - 1) / - ((((2 * targetBkg) - 1) * (median - c0)) - targetBkg); - - for (int i = 0; i < normImg.rows; i++) { - for (int j = 0; j < normImg.cols; j++) { - double value = normImg.at(i, j); - if (value < c0) { - normImg.at(i, j) = 0; +auto grayStretch(const cv::Mat& img) -> cv::Mat { + cv::Mat normalizedImg; + cv::normalize(img, normalizedImg, 0, 1, cv::NORM_MINMAX); + + double median = cv::mean(normalizedImg).val[0]; + double averageDeviation = calculateAverageDeviation(median, normalizedImg); + double clipLevel = std::min( + std::max(median + (BLACK_CLIP_FACTOR * averageDeviation), 0.0), 1.0); + + double multiplier = + (median - clipLevel) * (TARGET_BACKGROUND - 1) / + ((((2 * TARGET_BACKGROUND) - 1) * (median - clipLevel)) - + TARGET_BACKGROUND); + + for (int i = 0; i < normalizedImg.rows; i++) { + for (int j = 0; j < normalizedImg.cols; j++) { + double value = normalizedImg.at(i, j); + if (value < clipLevel) { + normalizedImg.at(i, j) = 0; } else { - value = (value - c0) / (1 - c0); - normImg.at(i, j) = value; + value = (value - clipLevel) / (1 - clipLevel); + normalizedImg.at(i, j) = value; } } } - normImg *= 65535; - cv::Mat dstImg; - normImg.convertTo(dstImg, CV_16U); - return dstImg; + normalizedImg *= MAX_16BIT_VALUE; + cv::Mat destImg; + normalizedImg.convertTo(destImg, CV_16U); + return destImg; } -auto Stretch_OneChannel(const cv::Mat& norm_img, double shadows, - double midtones, double highlights) -> cv::Mat { - cv::Mat result = norm_img.clone(); - double hsRangeFactor = 1.0; - if (highlights != shadows) { - hsRangeFactor = 1.0 / (highlights - shadows); - } - - double k1 = (midtones - 1) * hsRangeFactor; - double k2 = ((2 * midtones) - 1) * hsRangeFactor; +auto stretchOneChannel(const cv::Mat& normalizedImg, + const StretchParams& params) -> cv::Mat { + cv::Mat result = normalizedImg.clone(); + double rangeScale = (params.highlights != params.shadows) + ? 1.0 / (params.highlights - params.shadows) + : 1.0; - double epsilon = 1e-10; + double factorK1 = (params.tones - 1) * rangeScale; + double factorK2 = ((2 * params.tones) - 1) * rangeScale; - for (int i = 0; i < norm_img.rows; i++) { - for (int j = 0; j < norm_img.cols; j++) { - double value = norm_img.at(i, j); - if (value < shadows) { + for (int i = 0; i < normalizedImg.rows; i++) { + for (int j = 0; j < normalizedImg.cols; j++) { + double value = normalizedImg.at(i, j); + if (value < params.shadows) { result.at(i, j) = 0; - } else if (value > highlights) { + } else if (value > params.highlights) { result.at(i, j) = 1; } else { result.at(i, j) = - ((value - shadows) * k1 + epsilon) / - (((value - shadows) * k2) - midtones + epsilon); + ((value - params.shadows) * factorK1 + EPSILON) / + (((value - params.shadows) * factorK2) - params.tones + + EPSILON); } } } @@ -176,84 +244,126 @@ auto Stretch_OneChannel(const cv::Mat& norm_img, double shadows, } auto stretchThreeChannels(const cv::Mat& img, - const std::vector& shadows, - const std::vector& midtones, - const std::vector& highlights, int inputRange, - bool do_jpg) -> cv::Mat { - cv::Mat dstImg = cv::Mat::zeros(img.size(), img.type()); + const std::vector& channelParams, + int inputRange, bool useJpeg) -> cv::Mat { + LOG_F(INFO, + "Starting three channel stretch: size={}x{}, input_range={}, " + "jpeg_output={}", + img.cols, img.rows, inputRange, useJpeg); + + cv::Mat destImg = cv::Mat::zeros(img.size(), img.type()); std::vector bgrPlanes; cv::split(img, bgrPlanes); - cv::Mat& bPlane = bgrPlanes[0]; - cv::Mat& gPlane = bgrPlanes[1]; - cv::Mat& rPlane = bgrPlanes[2]; - int maxOutput = do_jpg ? 255 : 65535; + LOG_F(INFO, "Split image into {} channels", bgrPlanes.size()); + + int maxOutput = useJpeg ? MAX_8BIT_VALUE : MAX_16BIT_VALUE; double maxInput = inputRange - 1 > 0 ? inputRange - 1 : inputRange; - double hsRangeFactorR = - highlights[0] == shadows[0] ? 1.0 : 1.0 / (highlights[0] - shadows[0]); - double hsRangeFactorG = - highlights[1] == shadows[1] ? 1.0 : 1.0 / (highlights[1] - shadows[1]); - double hsRangeFactorB = - highlights[2] == shadows[2] ? 1.0 : 1.0 / (highlights[2] - shadows[2]); - - double nativeShadowsR = shadows[0] * maxInput; - double nativeShadowsG = shadows[1] * maxInput; - double nativeShadowsB = shadows[2] * maxInput; - double nativeHighlightsR = highlights[0] * maxInput; - double nativeHighlightsG = highlights[1] * maxInput; - double nativeHighlightsB = highlights[2] * maxInput; - - double k1R = (midtones[0] - 1) * hsRangeFactorR * maxOutput / maxInput; - double k1G = (midtones[1] - 1) * hsRangeFactorG * maxOutput / maxInput; - double k1B = (midtones[2] - 1) * hsRangeFactorB * maxOutput / maxInput; - - double k2R = ((2 * midtones[0]) - 1) * hsRangeFactorR / maxInput; - double k2G = ((2 * midtones[1]) - 1) * hsRangeFactorG / maxInput; - double k2B = ((2 * midtones[2]) - 1) * hsRangeFactorB / maxInput; - - double epsilon = 1e-10; - - for (int i = 0; i < bPlane.rows; i++) { - for (int j = 0; j < bPlane.cols; j++) { - // Process B channel - double bValue = bPlane.at(i, j); - if (bValue < nativeShadowsB) { - bPlane.at(i, j) = 0; - } else if (bValue > nativeHighlightsB) { - bPlane.at(i, j) = maxOutput; - } else { - bPlane.at(i, j) = static_cast(( - ((bValue - nativeShadowsB) * k1B + epsilon) / - ((bValue - nativeShadowsB) * k2B - midtones[2] + epsilon))); + LOG_F(INFO, "Output parameters: max_output={}, max_input={:.2f}", maxOutput, + maxInput); + + for (int channel = 0; channel < 3; ++channel) { + LOG_F(INFO, "Processing channel {}/3", channel + 1); + + const auto& params = channelParams[channel]; + LOG_F(INFO, + "Channel {} parameters: shadows={:.3f}, tones={:.3f}, " + "highlights={:.3f}", + channel, params.shadows, params.tones, params.highlights); + + double rangeScale = (params.highlights != params.shadows) + ? 1.0 / (params.highlights - params.shadows) + : 1.0; + + LOG_F(INFO, "Channel {} range scale: {:.3f}", channel, rangeScale); + + double nativeShadows = params.shadows * maxInput; + double nativeHighlights = params.highlights * maxInput; + double factorK1 = + (params.tones - 1) * rangeScale * maxOutput / maxInput; + double factorK2 = ((2 * params.tones) - 1) * rangeScale / maxInput; + + LOG_F(INFO, "Channel {} scaling factors: K1={:.3f}, K2={:.3f}", channel, + factorK1, factorK2); + + int pixelsProcessed = 0; + int totalPixels = bgrPlanes[channel].rows * bgrPlanes[channel].cols; + + for (int i = 0; i < bgrPlanes[channel].rows; i++) { + for (int j = 0; j < bgrPlanes[channel].cols; j++) { + double value = bgrPlanes[channel].at(i, j); + if (value < nativeShadows) { + bgrPlanes[channel].at(i, j) = 0; + } else if (value > nativeHighlights) { + bgrPlanes[channel].at(i, j) = maxOutput; + } else { + bgrPlanes[channel].at(i, j) = static_cast( + ((value - nativeShadows) * factorK1 + EPSILON) / + ((value - nativeShadows) * factorK2 - params.tones + + EPSILON)); + } + + pixelsProcessed++; + if (pixelsProcessed % (totalPixels / 10) == 0) { + LOG_F(INFO, "Channel {} progress: {:.1f}%", channel, + (pixelsProcessed * 100.0) / totalPixels); + } } + } - // Process G channel - double gValue = gPlane.at(i, j); - if (gValue < nativeShadowsG) { - gPlane.at(i, j) = 0; - } else if (gValue > nativeHighlightsG) { - gPlane.at(i, j) = maxOutput; - } else { - gPlane.at(i, j) = static_cast(( - ((gValue - nativeShadowsG) * k1G + epsilon) / - ((gValue - nativeShadowsG) * k2G - midtones[1] + epsilon))); - } + LOG_F(INFO, "Channel {} processing complete", channel); + } - // Process R channel - double rValue = rPlane.at(i, j); - if (rValue < nativeShadowsR) { - rPlane.at(i, j) = 0; - } else if (rValue > nativeHighlightsR) { - rPlane.at(i, j) = maxOutput; - } else { - rPlane.at(i, j) = static_cast(( - ((rValue - nativeShadowsR) * k1R + epsilon) / - ((rValue - nativeShadowsR) * k2R - midtones[0] + epsilon))); - } + cv::merge(bgrPlanes, destImg); + LOG_F(INFO, "Three channel stretch completed successfully"); + return destImg; +} + +auto autoStretch(const cv::Mat& img) -> cv::Mat { + LOG_F(INFO, "Starting auto stretch"); + + cv::Mat result; + if (img.channels() == 1) { + auto [shadows, tones, highlights] = calculateStretchParameters(img); + StretchParams params{shadows, tones, highlights}; + result = stretchOneChannel(img, params); + } else { + std::vector channels; + cv::split(img, channels); + std::vector stretched; + + for (const auto& channel : channels) { + auto [shadows, tones, highlights] = + calculateStretchParameters(channel); + StretchParams params{shadows, tones, highlights}; + stretched.push_back(stretchOneChannel(channel, params)); } + + cv::merge(stretched, result); } - cv::merge(bgrPlanes, dstImg); - return dstImg; + LOG_F(INFO, "Auto stretch completed"); + return result; } + +auto adaptiveStretch(const cv::Mat& img, int blockSize) -> cv::Mat { + LOG_F(INFO, "Starting adaptive stretch with block size {}", blockSize); + + cv::Mat result = img.clone(); + for (int rowIdx = 0; rowIdx < img.rows; rowIdx += blockSize) { + for (int colIdx = 0; colIdx < img.cols; colIdx += blockSize) { + cv::Rect roi(colIdx, rowIdx, std::min(blockSize, img.cols - colIdx), + std::min(blockSize, img.rows - rowIdx)); + cv::Mat block = img(roi); + auto [shadows, tones, highlights] = + calculateStretchParameters(block); + StretchParams params{shadows, tones, highlights}; + cv::Mat stretchedBlock = stretchOneChannel(block, params); + stretchedBlock.copyTo(result(roi)); + } + } + + LOG_F(INFO, "Adaptive stretch completed"); + return result; +} \ No newline at end of file diff --git a/modules/lithium.image/src/thumbhash.cpp b/modules/lithium.image/src/thumbhash.cpp index 9598eb8a..42b90e07 100644 --- a/modules/lithium.image/src/thumbhash.cpp +++ b/modules/lithium.image/src/thumbhash.cpp @@ -3,6 +3,12 @@ #include #include #include +#include + +#include + +#include "atom/error/exception.hpp" +#include "atom/log/loguru.hpp" const double RGB_MAX = 255.0; const double Y_COEFF_R = 0.299; @@ -16,126 +22,300 @@ const double CR_COEFF_G = -0.418688; const double CR_COEFF_B = -0.081312; const int THUMB_SIZE = 32; const int DCT_SIZE = 6; +const double MAGIC_1_402 = 1.402; +const double MAGIC_0_344136 = 0.344136; +const double MAGIC_0_714136 = 0.714136; +const double MAGIC_1_772 = 1.772; +const int MAGIC_255 = 255; -// 实现DCT(离散余弦变换) -void DCT(const cv::Mat& input, cv::Mat& output) { - int numRows = input.rows; - output = cv::Mat::zeros(input.size(), CV_64F); - - for (int rowIdx = 0; rowIdx < numRows; ++rowIdx) { - for (int colIdx = 0; colIdx < numRows; ++colIdx) { - double sum = 0.0; - for (int xIdx = 0; xIdx < numRows; ++xIdx) { - for (int yIdx = 0; yIdx < numRows; ++yIdx) { - sum += input.at(xIdx, yIdx) * - cos((2 * xIdx + 1) * rowIdx * M_PI / (2 * numRows)) * - cos((2 * yIdx + 1) * colIdx * M_PI / (2 * numRows)); - } - } - double alphaRow = - (rowIdx == 0) ? sqrt(1.0 / numRows) : sqrt(2.0 / numRows); - double alphaCol = - (colIdx == 0) ? sqrt(1.0 / numRows) : sqrt(2.0 / numRows); - output.at(rowIdx, colIdx) = alphaRow * alphaCol * sum; +/** + * @brief Implements the Discrete Cosine Transform (DCT). + * + * This function performs a 2D DCT on the input matrix and stores the result in + * the output matrix. + * + * @param input The input matrix (grayscale image) for DCT. + * @param output The output matrix where the DCT coefficients will be stored. + */ +void dct(const cv::Mat& input, cv::Mat& output) { + try { + LOG_F(INFO, "Starting DCT transformation."); + if (input.empty()) { + LOG_F(ERROR, "Input matrix for DCT is empty."); + THROW_INVALID_ARGUMENT("Input matrix for DCT is empty."); } + + // OpenCV provides a built-in function for DCT which is optimized and + // faster than manual implementation + cv::dct(input, output); + LOG_F(INFO, "DCT transformation completed successfully."); + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in DCT: {}", e.what()); + throw; } } -// RGB到YCbCr的颜色转换 -void RGBToYCbCr(const cv::Vec3b& rgb, double& yChannel, double& cbChannel, - double& crChannel) { - double red = rgb[2] / RGB_MAX; - double green = rgb[1] / RGB_MAX; - double blue = rgb[0] / RGB_MAX; +/** + * @brief Converts RGB color to YCbCr color space. + * + * This function takes an RGB pixel and converts it to its corresponding Y, Cb, + * and Cr components. + * + * @param rgb The RGB pixel as a cv::Vec3b. + * @param yChannel Reference to store the Y component. + * @param cbChannel Reference to store the Cb component. + * @param crChannel Reference to store the Cr component. + */ +auto rgbToYCbCr(const cv::Vec3b& rgb) -> YCbCr { + try { + LOG_F(INFO, "Converting RGB to YCbCr."); + double red = rgb[2] / RGB_MAX; + double green = rgb[1] / RGB_MAX; + double blue = rgb[0] / RGB_MAX; - yChannel = Y_COEFF_R * red + Y_COEFF_G * green + Y_COEFF_B * blue; - cbChannel = CB_COEFF_R * red + CB_COEFF_G * green + CB_COEFF_B * blue; - crChannel = CR_COEFF_R * red + CR_COEFF_G * green + CR_COEFF_B * blue; + YCbCr yCbCr{}; + yCbCr.y = Y_COEFF_R * red + Y_COEFF_G * green + Y_COEFF_B * blue; + yCbCr.cb = CB_COEFF_R * red + CB_COEFF_G * green + CB_COEFF_B * blue; + yCbCr.cr = CR_COEFF_R * red + CR_COEFF_G * green + CR_COEFF_B * blue; + LOG_F(INFO, "Conversion to YCbCr completed."); + return yCbCr; + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in RGBToYCbCr: {}", e.what()); + throw; + } } -// 实现 ThumbHash 编码 +/** + * @brief Implements ThumbHash encoding. + * + * This function encodes an image into its ThumbHash representation by + * converting it to YCbCr, performing DCT, and extracting the DCT coefficients. + * + * @param image The input image as a cv::Mat (expected to be in BGR format). + * @return A vector of doubles representing the ThumbHash. + */ auto encodeThumbHash(const cv::Mat& image) -> std::vector { - int width = THUMB_SIZE; - int height = THUMB_SIZE; - - cv::Mat yChannel = cv::Mat::zeros(height, width, CV_64F); - cv::Mat cbChannel = cv::Mat::zeros(height, width, CV_64F); - cv::Mat crChannel = cv::Mat::zeros(height, width, CV_64F); - - for (int rowIdx = 0; rowIdx < height; ++rowIdx) { - for (int colIdx = 0; colIdx < width; ++colIdx) { - const cv::Vec3b& rgb = image.at(rowIdx, colIdx); - double y, cb, cr; - RGBToYCbCr(rgb, y, cb, cr); - yChannel.at(rowIdx, colIdx) = y; - cbChannel.at(rowIdx, colIdx) = cb; - crChannel.at(rowIdx, colIdx) = cr; + try { + LOG_F(INFO, "Starting ThumbHash encoding."); + if (image.empty()) { + LOG_F(ERROR, "Input image for encoding is empty."); + THROW_INVALID_ARGUMENT("Input image for encoding is empty."); } - } - cv::Mat dctY, dctCb, dctCr; - DCT(yChannel, dctY); - DCT(cbChannel, dctCb); - DCT(crChannel, dctCr); - - std::vector thumbHash; - for (int i = 0; i < DCT_SIZE; ++i) { - for (int j = 0; j < DCT_SIZE; ++j) { - thumbHash.push_back(dctY.at(i, j)); - thumbHash.push_back(dctCb.at(i, j)); - thumbHash.push_back(dctCr.at(i, j)); + if (image.cols < THUMB_SIZE || image.rows < THUMB_SIZE) { + LOG_F(WARNING, + "Input image is smaller than THUMB_SIZE. Resizing may affect " + "quality."); } - } - return thumbHash; + int width = THUMB_SIZE; + int height = THUMB_SIZE; + + cv::Mat resizedImage; + cv::resize(image, resizedImage, cv::Size(width, height)); + LOG_F(INFO, "Image resized to {}x{} for ThumbHash.", width, height); + + cv::Mat yChannel = cv::Mat::zeros(height, width, CV_64F); + cv::Mat cbChannel = cv::Mat::zeros(height, width, CV_64F); + cv::Mat crChannel = cv::Mat::zeros(height, width, CV_64F); + + for (int rowIdx = 0; rowIdx < height; ++rowIdx) { + for (int colIdx = 0; colIdx < width; ++colIdx) { + const cv::Vec3b& rgb = + resizedImage.at(rowIdx, colIdx); + auto [yChannelValue, cbChannelValue, crChannelValue] = + rgbToYCbCr(rgb); + yChannel.at(rowIdx, colIdx) = yChannelValue; + cbChannel.at(rowIdx, colIdx) = cbChannelValue; + crChannel.at(rowIdx, colIdx) = crChannelValue; + } + } + LOG_F(INFO, "Converted image to YCbCr channels."); + + cv::Mat dctY; + cv::Mat dctCb; + cv::Mat dctCr; + dct(yChannel, dctY); + dct(cbChannel, dctCb); + dct(crChannel, dctCr); + LOG_F(INFO, "DCT applied to Y, Cb, and Cr channels."); + + std::vector thumbHash; + thumbHash.reserve( + static_cast::size_type>(DCT_SIZE) * DCT_SIZE * + 3); // Pre-allocate memory + + for (int i = 0; i < DCT_SIZE; ++i) { + for (int j = 0; j < DCT_SIZE; ++j) { + thumbHash.push_back(dctY.at(i, j)); + thumbHash.push_back(dctCb.at(i, j)); + thumbHash.push_back(dctCr.at(i, j)); + } + } + LOG_F(INFO, "ThumbHash encoding completed successfully."); + return thumbHash; + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in encodeThumbHash: {}", e.what()); + throw; + } } -// 实现 ThumbHash 解码 +/** + * @brief Implements ThumbHash decoding. + * + * This function decodes a ThumbHash back into an image by performing inverse + * DCT and converting YCbCr back to RGB. + * + * @param thumbHash The ThumbHash data as a vector of doubles. + * @param width The width of the decoded image. + * @param height The height of the decoded image. + * @return The decoded image as a cv::Mat in BGR format. + */ auto decodeThumbHash(const std::vector& thumbHash, int width, int height) -> cv::Mat { - cv::Mat yChannel = cv::Mat::zeros(height, width, CV_64F); - cv::Mat cbChannel = cv::Mat::zeros(height, width, CV_64F); - cv::Mat crChannel = cv::Mat::zeros(height, width, CV_64F); - - int index = 0; - for (int i = 0; i < DCT_SIZE; ++i) { - for (int j = 0; j < DCT_SIZE; ++j) { - yChannel.at(i, j) = thumbHash[index++]; - cbChannel.at(i, j) = thumbHash[index++]; - crChannel.at(i, j) = thumbHash[index++]; + try { + LOG_F(INFO, "Starting ThumbHash decoding."); + if (thumbHash.empty()) { + LOG_F(ERROR, "ThumbHash data is empty."); + THROW_INVALID_ARGUMENT("ThumbHash data is empty."); } - } - cv::Mat idctY, idctCb, idctCr; - DCT(yChannel, idctY); - DCT(cbChannel, idctCb); - DCT(crChannel, idctCr); - - cv::Mat decodedImage(height, width, CV_8UC3); - for (int rowIdx = 0; rowIdx < height; ++rowIdx) { - for (int colIdx = 0; colIdx < width; ++colIdx) { - double y = idctY.at(rowIdx, colIdx); - double cb = idctCb.at(rowIdx, colIdx); - double cr = idctCr.at(rowIdx, colIdx); - - int red = std::min(std::max(int(y + 1.402 * cr), 0), 255); - int green = std::min( - std::max(int(y - 0.344136 * cb - 0.714136 * cr), 0), 255); - int blue = std::min(std::max(int(y + 1.772 * cb), 0), 255); - - decodedImage.at(rowIdx, colIdx) = - cv::Vec3b(blue, green, red); + if (thumbHash.size() != DCT_SIZE * DCT_SIZE * 3) { + LOG_F(ERROR, "ThumbHash data size mismatch. Expected {} elements.", + DCT_SIZE * DCT_SIZE * 3); + THROW_INVALID_ARGUMENT("ThumbHash data size mismatch."); } - } - return decodedImage; + cv::Mat yChannel = cv::Mat::zeros(width, height, CV_64F); + cv::Mat cbChannel = cv::Mat::zeros(width, height, CV_64F); + cv::Mat crChannel = cv::Mat::zeros(width, height, CV_64F); + + int index = 0; + for (int i = 0; i < DCT_SIZE; ++i) { + for (int j = 0; j < DCT_SIZE; ++j) { + yChannel.at(i, j) = thumbHash[index++]; + cbChannel.at(i, j) = thumbHash[index++]; + crChannel.at(i, j) = thumbHash[index++]; + } + } + LOG_F(INFO, "Parsed ThumbHash data into YCbCr channels."); + + cv::Mat idctY; + cv::Mat idctCb; + cv::Mat idctCr; + dct(yChannel, idctY); // Assuming DCT is its own inverse for simplicity + dct(cbChannel, idctCb); + dct(crChannel, idctCr); + LOG_F(INFO, "Inverse DCT applied to Y, Cb, and Cr channels."); + + cv::Mat decodedImage(height, width, CV_8UC3); + + for (int rowIdx = 0; rowIdx < height; ++rowIdx) { + for (int colIdx = 0; colIdx < width; ++colIdx) { + double yChannelValue = idctY.at(rowIdx, colIdx); + double cbChannelValue = idctCb.at(rowIdx, colIdx); + double crChannelValue = idctCr.at(rowIdx, colIdx); + + int red = std::min( + std::max(static_cast(yChannelValue + + MAGIC_1_402 * crChannelValue * + RGB_MAX), + 0), + MAGIC_255); + int green = std::min( + std::max(static_cast( + yChannelValue - + MAGIC_0_344136 * cbChannelValue * RGB_MAX - + MAGIC_0_714136 * crChannelValue * RGB_MAX), + 0), + MAGIC_255); + int blue = std::min( + std::max(static_cast(yChannelValue + + MAGIC_1_772 * cbChannelValue * + RGB_MAX), + 0), + MAGIC_255); + + decodedImage.at(rowIdx, colIdx) = cv::Vec3b( + static_cast(blue), static_cast(green), + static_cast(red)); + } + } + LOG_F(INFO, + "Converted YCbCr back to RGB and assembled the decoded image."); + + LOG_F(INFO, "ThumbHash decoding completed successfully."); + return decodedImage; + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in decodeThumbHash: {}", e.what()); + throw; + } } -// 将 ThumbHash 数据编码为 Base64 +/** + * @brief Encodes ThumbHash data into a Base64 string. + * + * Note: This is a simplified version. For actual Base64 encoding, consider + * using a library. + * + * @param thumbHash The ThumbHash data as a vector of doubles. + * @return A Base64 encoded string representing the ThumbHash. + */ auto base64Encode(const std::vector& thumbHash) -> std::string { - std::stringstream stringStream; - for (const auto& value : thumbHash) { - stringStream << std::fixed << std::setprecision(2) << value; + try { + LOG_F(INFO, "Starting Base64 encoding of ThumbHash."); + if (thumbHash.empty()) { + LOG_F(ERROR, "ThumbHash data is empty. Cannot encode."); + THROW_INVALID_ARGUMENT("ThumbHash data is empty."); + } + + std::stringstream stringStream; + for (const auto& value : thumbHash) { + stringStream << std::fixed << std::setprecision(2) << value << ","; + } + std::string encoded = stringStream.str(); + if (!encoded.empty()) { + encoded.pop_back(); // Remove the trailing comma + } + LOG_F(INFO, "Base64 encoding completed successfully."); + return encoded; // Placeholder for actual Base64 encoding + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in base64Encode: {}", e.what()); + throw; } - return stringStream.str(); // 这里为了简化,实际上应该用 base64 编码工具 } + +/** + * @brief Decodes a Base64 string back into ThumbHash data. + * + * Note: This is a simplified version. For actual Base64 decoding, consider + * using a library. + * + * @param encoded The Base64 encoded string representing the ThumbHash. + * @return The ThumbHash data as a vector of doubles. + */ +auto base64Decode(const std::string& encoded) -> std::vector { + try { + LOG_F(INFO, "Starting Base64 decoding of ThumbHash."); + std::vector thumbHash; + std::stringstream stringStream(encoded); + std::string item; + + while (std::getline(stringStream, item, ',')) { + thumbHash.push_back(std::stod(item)); + } + + if (thumbHash.size() != DCT_SIZE * DCT_SIZE * 3) { + LOG_F(ERROR, + "Decoded ThumbHash size mismatch. Expected {} elements.", + DCT_SIZE * DCT_SIZE * 3); + THROW_INVALID_ARGUMENT("Decoded ThumbHash size mismatch."); + } + + LOG_F(INFO, "Base64 decoding completed successfully."); + return thumbHash; + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception in base64Decode: {}", e.what()); + throw; + } +} \ No newline at end of file diff --git a/modules/lithium.image/tests/test_base64.cpp b/modules/lithium.image/tests/test_base64.cpp new file mode 100644 index 00000000..f1ee567a --- /dev/null +++ b/modules/lithium.image/tests/test_base64.cpp @@ -0,0 +1,108 @@ +#include "base64.hpp" + +#include + +// Test case for decoding an empty string +TEST(Base64DecodeTest, EmptyString) { + std::string encoded; + std::string decoded = base64Decode(encoded); + EXPECT_EQ(decoded, ""); +} + +// Test case for decoding a simple string +TEST(Base64DecodeTest, SimpleString) { + std::string encoded = "SGVsbG8="; + std::string decoded = base64Decode(encoded); + EXPECT_EQ(decoded, "Hello"); +} + +// Test case for decoding a string with padding +TEST(Base64DecodeTest, StringWithPadding) { + std::string encoded = "SGVsbG8gd29ybGQ="; + std::string decoded = base64Decode(encoded); + EXPECT_EQ(decoded, "Hello world"); +} + +// Test case for decoding a string without padding +TEST(Base64DecodeTest, StringWithoutPadding) { + std::string encoded = "SGVsbG8gd29ybGQ"; + std::string decoded = base64Decode(encoded); + EXPECT_EQ(decoded, "Hello world"); +} + +// Test case for decoding a string with special characters +TEST(Base64DecodeTest, StringWithSpecialCharacters) { + std::string encoded = "U3BlY2lhbCBjaGFyYWN0ZXJzOiAhQCMkJV4mKigpXys9"; + std::string decoded = base64Decode(encoded); + EXPECT_EQ(decoded, "Special characters: !@#$%^&*()_+="); +} + +// Test case for decoding a string with numbers +TEST(Base64DecodeTest, StringWithNumbers) { + std::string encoded = "MTIzNDU2Nzg5MA=="; + std::string decoded = base64Decode(encoded); + EXPECT_EQ(decoded, "1234567890"); +} + +// Test case for decoding a string with mixed case +TEST(Base64DecodeTest, StringWithMixedCase) { + std::string encoded = "SGVsbG8gV29ybGQ="; + std::string decoded = base64Decode(encoded); + EXPECT_EQ(decoded, "Hello World"); +} + +// Test case for decoding a string with non-alphanumeric characters +TEST(Base64DecodeTest, StringWithNonAlphanumericCharacters) { + std::string encoded = "LyoqKiov"; + std::string decoded = base64Decode(encoded); + EXPECT_EQ(decoded, "/****/"); +} + +// Test case for decoding a string with newline characters +TEST(Base64DecodeTest, StringWithNewlineCharacters) { + std::string encoded = "SGVsbG8K"; + std::string decoded = base64Decode(encoded); + EXPECT_EQ(decoded, "Hello\n"); +} + +// Test case for decoding a string with whitespace characters +TEST(Base64DecodeTest, StringWithWhitespaceCharacters) { + std::string encoded = "SGVsbG8gV29ybGQgd2l0aCB3aGl0ZXNwYWNl"; + std::string decoded = base64Decode(encoded); + EXPECT_EQ(decoded, "Hello World with whitespace"); +} + +// Test case for decoding a malformed base64 string +TEST(Base64DecodeTest, MalformedBase64String) { + std::string encoded = "SGVsbG8gd29ybGQ@"; + std::string decoded = base64Decode(encoded); + EXPECT_EQ(decoded, ""); +} + +// Test case for decoding a string with invalid characters +TEST(Base64DecodeTest, StringWithInvalidCharacters) { + std::string encoded = "SGVsbG8gd29ybGQ$"; + std::string decoded = base64Decode(encoded); + EXPECT_EQ(decoded, ""); +} + +// Test case for decoding a string with URL-safe base64 encoding +TEST(Base64DecodeTest, URLSafeBase64String) { + std::string encoded = "SGVsbG8gd29ybGQ-"; + std::string decoded = base64Decode(encoded); + EXPECT_EQ(decoded, "Hello world"); +} + +// Test case for decoding a string with base64 encoding without padding +TEST(Base64DecodeTest, Base64WithoutPadding) { + std::string encoded = "SGVsbG8gd29ybGQ"; + std::string decoded = base64Decode(encoded); + EXPECT_EQ(decoded, "Hello world"); +} + +// Test case for decoding a string with base64 encoding with padding +TEST(Base64DecodeTest, Base64WithPadding) { + std::string encoded = "SGVsbG8gd29ybGQ="; + std::string decoded = base64Decode(encoded); + EXPECT_EQ(decoded, "Hello world"); +} diff --git a/modules/lithium.image/tests/test_binning.cpp b/modules/lithium.image/tests/test_binning.cpp new file mode 100644 index 00000000..26ce60bb --- /dev/null +++ b/modules/lithium.image/tests/test_binning.cpp @@ -0,0 +1,122 @@ +#include +#include +#include "src/binning.cpp" + +class BinningTest : public ::testing::Test { +protected: + void SetUp() override { + // Create test images + smallImage = cv::Mat::ones(100, 100, CV_8UC1) * 255; + largeImage = cv::Mat::ones(3000, 3000, CV_8UC1) * 255; + colorImage = cv::Mat::ones(100, 100, CV_8UC3); + for (int i = 0; i < 100; ++i) { + for (int j = 0; j < 100; ++j) { + colorImage.at(i, j) = cv::Vec3b(i, j, (i + j) % 256); + } + } + } + + cv::Mat smallImage; + cv::Mat largeImage; + cv::Mat colorImage; +}; + +// Test mergeImageBasedOnSize with small image +TEST_F(BinningTest, MergeImageBasedOnSizeSmallImage) { + CamBin result = Tools::mergeImageBasedOnSize(smallImage); + EXPECT_EQ(result.camxbin, 1); + EXPECT_EQ(result.camybin, 1); +} + +// Test mergeImageBasedOnSize with large image +TEST_F(BinningTest, MergeImageBasedOnSizeLargeImage) { + CamBin result = Tools::mergeImageBasedOnSize(largeImage); + EXPECT_EQ(result.camxbin, 2); + EXPECT_EQ(result.camybin, 2); +} + +// Test processMatWithBinAvg with small image and averaging +TEST_F(BinningTest, ProcessMatWithBinAvgSmallImageAvg) { + cv::Mat result = Tools::processMatWithBinAvg(smallImage, 2, 2, false, true); + EXPECT_EQ(result.rows, 50); + EXPECT_EQ(result.cols, 50); + EXPECT_EQ(result.at(0, 0), 255); +} + +// Test processMatWithBinAvg with large image and averaging +TEST_F(BinningTest, ProcessMatWithBinAvgLargeImageAvg) { + cv::Mat result = Tools::processMatWithBinAvg(largeImage, 2, 2, false, true); + EXPECT_EQ(result.rows, 1500); + EXPECT_EQ(result.cols, 1500); + EXPECT_EQ(result.at(0, 0), 255); +} + +// Test processMatWithBinAvg with color image and averaging +TEST_F(BinningTest, ProcessMatWithBinAvgColorImageAvg) { + cv::Mat result = Tools::processMatWithBinAvg(colorImage, 2, 2, true, true); + EXPECT_EQ(result.rows, 50); + EXPECT_EQ(result.cols, 50); + EXPECT_EQ(result.channels(), 3); +} + +// Test processMatWithBinAvg with small image and binning +TEST_F(BinningTest, ProcessMatWithBinAvgSmallImageBin) { + cv::Mat result = Tools::processMatWithBinAvg(smallImage, 2, 2, false, false); + EXPECT_EQ(result.rows, 50); + EXPECT_EQ(result.cols, 50); + EXPECT_EQ(result.at(0, 0), 255); +} + +// Test processMatWithBinAvg with large image and binning +TEST_F(BinningTest, ProcessMatWithBinAvgLargeImageBin) { + cv::Mat result = Tools::processMatWithBinAvg(largeImage, 2, 2, false, false); + EXPECT_EQ(result.rows, 1500); + EXPECT_EQ(result.cols, 1500); + EXPECT_EQ(result.at(0, 0), 255); +} + +// Test processMatWithBinAvg with color image and binning +TEST_F(BinningTest, ProcessMatWithBinAvgColorImageBin) { + cv::Mat result = Tools::processMatWithBinAvg(colorImage, 2, 2, true, false); + EXPECT_EQ(result.rows, 50); + EXPECT_EQ(result.cols, 50); + EXPECT_EQ(result.channels(), 3); +} + +// Test processMatWithBinAvg with invalid bin sizes +TEST_F(BinningTest, ProcessMatWithBinAvgInvalidBinSizes) { + EXPECT_THROW(Tools::processMatWithBinAvg(smallImage, 0, 2, false, true), cv::Exception); + EXPECT_THROW(Tools::processMatWithBinAvg(smallImage, 2, 0, false, true), cv::Exception); +} + +// Test processMatWithBinAvg with empty image +TEST_F(BinningTest, ProcessMatWithBinAvgEmptyImage) { + cv::Mat emptyImage; + EXPECT_THROW(Tools::processMatWithBinAvg(emptyImage, 2, 2, false, true), cv::Exception); +} + +// Test processMatWithBinAvg with non-divisible dimensions +TEST_F(BinningTest, ProcessMatWithBinAvgNonDivisibleDimensions) { + cv::Mat nonDivisibleImage = cv::Mat::ones(101, 101, CV_8UC1) * 255; + cv::Mat result = Tools::processMatWithBinAvg(nonDivisibleImage, 2, 2, false, true); + EXPECT_EQ(result.rows, 50); + EXPECT_EQ(result.cols, 50); + EXPECT_EQ(result.at(0, 0), 255); +} + +// Test processMatWithBinAvg with maximum possible image sizes +TEST_F(BinningTest, ProcessMatWithBinAvgMaxImageSize) { + cv::Mat maxImage = cv::Mat::ones(2000, 2000, CV_8UC1) * 255; + cv::Mat result = Tools::processMatWithBinAvg(maxImage, 2, 2, false, true); + EXPECT_EQ(result.rows, 1000); + EXPECT_EQ(result.cols, 1000); + EXPECT_EQ(result.at(0, 0), 255); +} + +// Test processMatWithBinAvg with minimum bin sizes +TEST_F(BinningTest, ProcessMatWithBinAvgMinBinSize) { + cv::Mat result = Tools::processMatWithBinAvg(smallImage, 1, 1, false, true); + EXPECT_EQ(result.rows, 100); + EXPECT_EQ(result.cols, 100); + EXPECT_EQ(result.at(0, 0), 255); +} \ No newline at end of file diff --git a/modules/lithium.image/tests/test_bmp.cpp b/modules/lithium.image/tests/test_bmp.cpp new file mode 100644 index 00000000..997d6a9b --- /dev/null +++ b/modules/lithium.image/tests/test_bmp.cpp @@ -0,0 +1,104 @@ +#ifndef TEST_BMP_HPP +#define TEST_BMP_HPP + +#include + +#include "bmp.hpp" + +#include "atom/type/uint.hpp" + +// Mock class to simulate file reading +class MockFile { +public: + MockFile(const std::vector& data) : data(data), pos(0) {} + + void read(char* buffer, std::streamsize size) { + if (pos + size > data.size()) { + throw std::runtime_error("Read beyond end of file"); + } + std::copy(data.begin() + pos, data.begin() + pos + size, buffer); + pos += size; + } + + void ignore(std::streamsize size) { + if (pos + size > data.size()) { + throw std::runtime_error("Ignore beyond end of file"); + } + pos += size; + } + + explicit operator bool() const { return pos < data.size(); } + +private: + std::vector data; + std::size_t pos; +}; + +TEST(BMPTest, LittleToNative32) { + EXPECT_EQ(littleToNative(0x12345678_u32), 0x78563412); +} + +TEST(BMPTest, LittleToNative16) { + EXPECT_EQ(littleToNative(static_cast(0x1234)), 0x3412); +} + +TEST(BMPTest, ReadEndianInt) { + const std::vector data = {0x78, 0x56, 0x34, 0x12}; + MockFile file(data); + EXPECT_EQ(readEndianInt(reinterpret_cast(file)), + 0x12345678); +} + +TEST(BMPTest, ReadEndianShort) { + const std::vector data = {0x34, 0x12}; + MockFile file(data); + EXPECT_EQ(readEndianShort(reinterpret_cast(file)), 0x1234); +} + +TEST(BMPTest, LoadBMPImage) { + // Mock BMP data + std::vector bmpData = { + // BMP header (18 bytes) + 0x42, 0x4D, 0x36, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, + 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + // Width (4 bytes) + 0x02, 0x00, 0x00, 0x00, + // Height (4 bytes) + 0x02, 0x00, 0x00, 0x00, + // Planes (2 bytes) + 0x01, 0x00, + // Bits per pixel (2 bytes) + 0x18, 0x00, + // Rest of BMP header (24 bytes) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Pixel data (2x2 pixels, 24 bits per pixel, BGR format) + 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF}; + + MockFile file(bmpData); + Image image; + EXPECT_TRUE(loadBMPImage("mock.bmp", image)); + EXPECT_EQ(image.sizeX, 2); + EXPECT_EQ(image.sizeY, 2); + EXPECT_EQ(image.data.size(), 12); + EXPECT_EQ(image.greyData.size(), 4); +} + +TEST(BMPTest, SaveGrayImage) { + Image image; + image.sizeX = 2; + image.sizeY = 2; + image.greyData = {std::byte{0x80}, std::byte{0x80}, std::byte{0x80}, + std::byte{0x80}}; + + std::ofstream outFile("test_gray_image.raw", std::ios::binary); + EXPECT_TRUE(saveGrayImage("test_gray_image.raw", image)); + outFile.close(); + + std::ifstream inFile("test_gray_image.raw", std::ios::binary); + std::vector readData((std::istreambuf_iterator(inFile)), + std::istreambuf_iterator()); + EXPECT_EQ(readData, image.greyData); +} + +#endif // TEST_BMP_HPP \ No newline at end of file diff --git a/modules/lithium.image/tests/test_centroid.cpp b/modules/lithium.image/tests/test_centroid.cpp new file mode 100644 index 00000000..fbbb5b1a --- /dev/null +++ b/modules/lithium.image/tests/test_centroid.cpp @@ -0,0 +1,82 @@ +#include +#include +#include "centroid.hpp" + +class StarCentroidTest : public ::testing::Test { +protected: + StarCentroid starCentroid; + + void SetUp() override { + // Setup code if needed + } + + void TearDown() override { + // Cleanup code if needed + } +}; + +// Test calcSubPixelCenter with a valid ROI and known sub-pixel center +TEST_F(StarCentroidTest, CalcSubPixelCenterValidROI) { + cv::Mat roi = + (cv::Mat_(3, 3) << 0.0, 1.0, 0.0, 1.0, 4.0, 1.0, 0.0, 1.0, 0.0); + cv::Point2f initCenter(1.0F, 1.0F); + float epsilon = 1e-3; + int maxIterations = 10; + + cv::Point2f result = starCentroid.calcSubPixelCenter( + roi, std::move(initCenter), epsilon, maxIterations); + + EXPECT_NEAR(result.x, 1.0F, epsilon); + EXPECT_NEAR(result.y, 1.0F, epsilon); +} + +// Test calcSubPixelCenter convergence within a few iterations +TEST_F(StarCentroidTest, CalcSubPixelCenterConvergence) { + cv::Mat roi = + (cv::Mat_(3, 3) << 0.0, 1.0, 0.0, 1.0, 4.0, 1.0, 0.0, 1.0, 0.0); + cv::Point2f initCenter(0.5F, 0.5F); + float epsilon = 1e-3; + int maxIterations = 10; + + cv::Point2f result = starCentroid.calcSubPixelCenter( + roi, std::move(initCenter), epsilon, maxIterations); + + EXPECT_NEAR(result.x, 1.0F, epsilon); + EXPECT_NEAR(result.y, 1.0F, epsilon); +} + +// Test calcSubPixelCenter with zero intensity ROI +TEST_F(StarCentroidTest, CalcSubPixelCenterZeroIntensity) { + cv::Mat roi = cv::Mat::zeros(3, 3, CV_32F); + cv::Point2f initCenter(1.0F, 1.0F); + float epsilon = 1e-3; + int maxIterations = 10; + + cv::Point2f result = starCentroid.calcSubPixelCenter( + roi, std::move(initCenter), epsilon, maxIterations); + + EXPECT_EQ(result.x, 1.0F); + EXPECT_EQ(result.y, 1.0F); +} + +// Test calcSubPixelCenter with non-square ROI (should assert) +TEST_F(StarCentroidTest, CalcSubPixelCenterNonSquareROI) { + cv::Mat roi = cv::Mat::ones(3, 4, CV_32F); // Non-square ROI + cv::Point2f initCenter(1.0F, 1.0F); + float epsilon = 1e-3; + int maxIterations = 10; + + EXPECT_ANY_THROW(starCentroid.calcSubPixelCenter(roi, std::move(initCenter), + epsilon, maxIterations)); +} + +// Test calcSubPixelCenter with invalid ROI size +TEST_F(StarCentroidTest, CalcSubPixelCenterInvalidROISize) { + cv::Mat roi = cv::Mat::ones(2, 2, CV_32F); // Invalid ROI size + cv::Point2f initCenter(1.0F, 1.0F); + float epsilon = 1e-3; + int maxIterations = 10; + + EXPECT_ANY_THROW(starCentroid.calcSubPixelCenter(roi, std::move(initCenter), + epsilon, maxIterations)); +} \ No newline at end of file diff --git a/modules/lithium.image/tests/test_debayer.cpp b/modules/lithium.image/tests/test_debayer.cpp new file mode 100644 index 00000000..b2413f17 --- /dev/null +++ b/modules/lithium.image/tests/test_debayer.cpp @@ -0,0 +1,126 @@ +#include +#include +#include + +#include "debayer.hpp" + +#include +#include + +namespace fs = std::filesystem; + +class DebayerTest : public ::testing::Test { +protected: + void SetUp() override { + // 创建测试目录 + fs::create_directories("test_images"); + + // 创建测试图像 + createTestImages(); + } + + void TearDown() override { + // 清理测试文件 + fs::remove_all("test_images"); + } + + void createTestImages() { + // 创建单通道测试图像 + cv::Mat mono(100, 100, CV_8UC1, cv::Scalar(128)); + cv::imwrite("test_images/mono.png", mono); + + // 创建RGB测试图像 + cv::Mat rgb(100, 100, CV_8UC3, cv::Scalar(64, 128, 192)); + cv::imwrite("test_images/rgb.png", rgb); + + // 创建测试FITS文件 + createTestFits("test_images/rggb.fits", "RGGB"); + createTestFits("test_images/bggr.fits", "BGGR"); + } + + void createTestFits(const std::string& filename, + const std::string& pattern) { + // 模拟创建FITS文件的实现 + cv::Mat raw(100, 100, CV_16UC1, cv::Scalar(4096)); + // 这里需要实现具体的FITS文件创建逻辑 + } +}; + +// 测试处理单通道图像 +TEST_F(DebayerTest, ProcessMonoImage) { + fs::path monoPath("test_images/mono.png"); + auto result = debayer(monoPath); + + EXPECT_TRUE(result.continueProcessing); + EXPECT_FALSE(result.debayeredImage.empty()); + EXPECT_EQ(result.debayeredImage.channels(), 1); +} + +// 测试处理RGB图像 +TEST_F(DebayerTest, ProcessRGBImage) { + fs::path rgbPath("test_images/rgb.png"); + auto result = debayer(rgbPath); + + EXPECT_TRUE(result.continueProcessing); + EXPECT_FALSE(result.debayeredImage.empty()); + EXPECT_EQ(result.debayeredImage.channels(), 3); +} + +// 测试RGGB FITS文件处理 +TEST_F(DebayerTest, ProcessRGGBFits) { + fs::path fitsPath("test_images/rggb.fits"); + auto result = debayer(fitsPath); + + EXPECT_TRUE(result.continueProcessing); + EXPECT_FALSE(result.debayeredImage.empty()); + EXPECT_EQ(result.debayeredImage.channels(), 3); + EXPECT_EQ(result.header["BayerPattern"], "RGGB"); +} + +// 测试无效文件路径 +TEST_F(DebayerTest, InvalidFilePath) { + fs::path invalidPath("non_existent.png"); + EXPECT_THROW(debayer(invalidPath), std::runtime_error); +} + +// 测试无效的Bayer模式 +TEST_F(DebayerTest, InvalidBayerPattern) { + fs::path fitsPath("test_images/invalid_pattern.fits"); + createTestFits(fitsPath.string(), "INVALID"); + + auto result = debayer(fitsPath); + EXPECT_FALSE(result.continueProcessing); +} + +// 测试空文件 +TEST_F(DebayerTest, EmptyFile) { + fs::path emptyPath("test_images/empty.png"); + std::ofstream ofs(emptyPath); + ofs.close(); + + EXPECT_THROW(debayer(emptyPath), std::runtime_error); +} + +// 测试不支持的通道数 +TEST_F(DebayerTest, UnsupportedChannels) { + cv::Mat unsupported(100, 100, CV_8UC4, cv::Scalar(0)); + cv::imwrite("test_images/unsupported.png", unsupported); + + fs::path unsupportedPath("test_images/unsupported.png"); + EXPECT_THROW(debayer(unsupportedPath), std::invalid_argument); +} + +// 测试文件扩展名处理 +TEST_F(DebayerTest, FileExtensionHandling) { + fs::path upperPath("test_images/TEST.FITS"); + fs::path lowerPath("test_images/test.fits"); + + createTestFits(upperPath.string(), "RGGB"); + createTestFits(lowerPath.string(), "RGGB"); + + auto resultUpper = debayer(upperPath); + auto resultLower = debayer(lowerPath); + + EXPECT_TRUE(resultUpper.continueProcessing); + EXPECT_TRUE(resultLower.continueProcessing); +} \ No newline at end of file diff --git a/modules/lithium.image/tests/test_fitsio.cpp b/modules/lithium.image/tests/test_fitsio.cpp new file mode 100644 index 00000000..f9d612af --- /dev/null +++ b/modules/lithium.image/tests/test_fitsio.cpp @@ -0,0 +1,164 @@ +#include "fitsio.hpp" + +#include +#include +#include +#include +#include + +class FitsIOTest : public ::testing::Test { +protected: + void SetUp() override { + testDir = std::filesystem::temp_directory_path() / "fits_test"; + std::filesystem::create_directories(testDir); + } + + void TearDown() override { + std::filesystem::remove_all(testDir); + } + + // Helper to create a test FITS file + void createTestFits(const std::string& filename, int width, int height, + int bitpix, int naxis, bool isRGB = false) { + fitsfile* fptr; + int status = 0; + std::array naxes = {width, height, isRGB ? 3 : 1}; + + std::filesystem::path filepath = testDir / filename; + fits_create_file(&fptr, filepath.string().c_str(), &status); + fits_create_img(fptr, bitpix, isRGB ? 3 : 2, naxes.data(), &status); + + // Add test header + fits_write_key(fptr, TSTRING, "INSTRUME", const_cast("TEST_CAMERA"), + "Test instrument", &status); + + // Write test data + std::vector data(width * height, 1000); + fits_write_img(fptr, TUSHORT, 1, width * height, data.data(), &status); + + fits_close_file(fptr, &status); + } + + std::filesystem::path testDir; +}; + +// Test reading non-existent file +TEST_F(FitsIOTest, NonExistentFile) { + std::map header; + EXPECT_THROW(readFitsToMat(testDir / "nonexistent.fits", header), + std::runtime_error); +} + +// Test reading 8-bit grayscale +TEST_F(FitsIOTest, Read8BitGrayscale) { + createTestFits("test8bit.fits", 100, 100, BYTE_IMG, 2); + std::map header; + + cv::Mat result = readFitsToMat(testDir / "test8bit.fits", header); + + EXPECT_EQ(result.type(), CV_8UC1); + EXPECT_EQ(result.size(), cv::Size(100, 100)); +} + +// Test reading 16-bit grayscale +TEST_F(FitsIOTest, Read16BitGrayscale) { + createTestFits("test16bit.fits", 100, 100, USHORT_IMG, 2); + std::map header; + + cv::Mat result = readFitsToMat(testDir / "test16bit.fits", header); + + EXPECT_EQ(result.type(), CV_16UC1); + EXPECT_EQ(result.size(), cv::Size(100, 100)); +} + +// Test reading 32-bit float +TEST_F(FitsIOTest, Read32BitFloat) { + createTestFits("test32bit.fits", 100, 100, FLOAT_IMG, 2); + std::map header; + + cv::Mat result = readFitsToMat(testDir / "test32bit.fits", header); + + EXPECT_EQ(result.type(), CV_32FC1); + EXPECT_EQ(result.size(), cv::Size(100, 100)); +} + +// Test reading RGB image +TEST_F(FitsIOTest, ReadRGBImage) { + createTestFits("testrgb.fits", 100, 100, USHORT_IMG, 3, true); + std::map header; + + cv::Mat result = readFitsToMat(testDir / "testrgb.fits", header); + + EXPECT_EQ(result.channels(), 3); + EXPECT_EQ(result.size(), cv::Size(100, 100)); +} + +// Test header extraction +TEST_F(FitsIOTest, HeaderExtraction) { + createTestFits("testheader.fits", 100, 100, USHORT_IMG, 2); + std::map header; + + readFitsToMat(testDir / "testheader.fits", header); + + EXPECT_FALSE(header.empty()); + EXPECT_EQ(header["INSTRUME"], "TEST_CAMERA"); +} + +// Test invalid FITS file +TEST_F(FitsIOTest, InvalidFitsFile) { + std::ofstream badFile(testDir / "bad.fits"); + badFile << "Not a FITS file"; + badFile.close(); + + std::map header; + EXPECT_THROW(readFitsToMat(testDir / "bad.fits", header), + std::runtime_error); +} + +// Test different image sizes +TEST_F(FitsIOTest, DifferentSizes) { + createTestFits("small.fits", 10, 10, USHORT_IMG, 2); + createTestFits("large.fits", 1000, 1000, USHORT_IMG, 2); + + std::map header; + + cv::Mat small = readFitsToMat(testDir / "small.fits", header); + cv::Mat large = readFitsToMat(testDir / "large.fits", header); + + EXPECT_EQ(small.size(), cv::Size(10, 10)); + EXPECT_EQ(large.size(), cv::Size(1000, 1000)); +} + +// Test unsupported bit depth +TEST_F(FitsIOTest, UnsupportedBitDepth) { + createTestFits("unsupported.fits", 100, 100, DOUBLE_IMG, 2); + std::map header; + + EXPECT_THROW(readFitsToMat(testDir / "unsupported.fits", header), + std::runtime_error); +} + +// Test empty header map +TEST_F(FitsIOTest, EmptyHeader) { + createTestFits("testempty.fits", 100, 100, USHORT_IMG, 2); + std::map header; + + cv::Mat result = readFitsToMat(testDir / "testempty.fits", header); + + EXPECT_FALSE(header.empty()); +} + +// Test invalid dimensions +TEST_F(FitsIOTest, InvalidDimensions) { + fitsfile* fptr; + int status = 0; + std::array naxes = {100, 100, 100, 100}; + + std::filesystem::path filepath = testDir / "invalid_dim.fits"; + fits_create_file(&fptr, filepath.string().c_str(), &status); + fits_create_img(fptr, USHORT_IMG, 4, naxes.data(), &status); + fits_close_file(fptr, &status); + + std::map header; + EXPECT_THROW(readFitsToMat(filepath, header), std::runtime_error); +} \ No newline at end of file diff --git a/modules/lithium.image/tests/test_fwhm.cpp b/modules/lithium.image/tests/test_fwhm.cpp new file mode 100644 index 00000000..efa015b3 --- /dev/null +++ b/modules/lithium.image/tests/test_fwhm.cpp @@ -0,0 +1,104 @@ +#include +#include +#include "fwhm.hpp" + +class GaussianFitTest : public ::testing::Test { +protected: + GaussianFit gaussianFit; + + void SetUp() override { + // Setup code if needed + } + + void TearDown() override { + // Cleanup code if needed + } +}; + +// Test GaussianFit::fit with valid data points +TEST_F(GaussianFitTest, FitValidDataPoints) { + std::vector points = { + {0.0, 1.0}, {1.0, 2.0}, {2.0, 3.0}, {3.0, 4.0}, {4.0, 3.0}, {5.0, 2.0}, {6.0, 1.0} + }; + double epsilon = 1e-6; + int maxIterations = 100; + + auto result = gaussianFit.fit(points, epsilon, maxIterations); + + ASSERT_TRUE(result.has_value()); + EXPECT_NEAR(result->base, 1.0, epsilon); + EXPECT_NEAR(result->peak, 3.0, epsilon); + EXPECT_NEAR(result->center, 3.0, epsilon); + EXPECT_NEAR(result->width, 2.0, epsilon); +} + +// Test GaussianFit::fit with empty data points +TEST_F(GaussianFitTest, FitEmptyDataPoints) { + std::vector points; + double epsilon = 1e-6; + int maxIterations = 100; + + auto result = gaussianFit.fit(points, epsilon, maxIterations); + + EXPECT_FALSE(result.has_value()); +} + +// Test GaussianFit::fit convergence within a few iterations +TEST_F(GaussianFitTest, FitConvergence) { + std::vector points = { + {0.0, 1.0}, {1.0, 2.0}, {2.0, 3.0}, {3.0, 4.0}, {4.0, 3.0}, {5.0, 2.0}, {6.0, 1.0} + }; + double epsilon = 1e-6; + int maxIterations = 10; + + auto result = gaussianFit.fit(points, epsilon, maxIterations); + + ASSERT_TRUE(result.has_value()); + EXPECT_NEAR(result->base, 1.0, epsilon); + EXPECT_NEAR(result->peak, 3.0, epsilon); + EXPECT_NEAR(result->center, 3.0, epsilon); + EXPECT_NEAR(result->width, 2.0, epsilon); +} + +// Test GaussianFit::fit with identical data points +TEST_F(GaussianFitTest, FitIdenticalDataPoints) { + std::vector points = { + {1.0, 2.0}, {1.0, 2.0}, {1.0, 2.0}, {1.0, 2.0}, {1.0, 2.0} + }; + double epsilon = 1e-6; + int maxIterations = 100; + + auto result = gaussianFit.fit(points, epsilon, maxIterations); + + EXPECT_FALSE(result.has_value()); +} + +// Test GaussianFit::fit with noisy data points +TEST_F(GaussianFitTest, FitNoisyDataPoints) { + std::vector points = { + {0.0, 1.1}, {1.0, 2.1}, {2.0, 3.0}, {3.0, 4.1}, {4.0, 3.0}, {5.0, 2.1}, {6.0, 1.1} + }; + double epsilon = 1e-6; + int maxIterations = 100; + + auto result = gaussianFit.fit(points, epsilon, maxIterations); + + ASSERT_TRUE(result.has_value()); + EXPECT_NEAR(result->base, 1.0, epsilon); + EXPECT_NEAR(result->peak, 3.0, epsilon); + EXPECT_NEAR(result->center, 3.0, epsilon); + EXPECT_NEAR(result->width, 2.0, epsilon); +} + +// Test GaussianFit::fit with a single data point +TEST_F(GaussianFitTest, FitSingleDataPoint) { + std::vector points = { + {1.0, 2.0} + }; + double epsilon = 1e-6; + int maxIterations = 100; + + auto result = gaussianFit.fit(points, epsilon, maxIterations); + + EXPECT_FALSE(result.has_value()); +} \ No newline at end of file diff --git a/modules/lithium.image/tests/test_hfr.cpp b/modules/lithium.image/tests/test_hfr.cpp new file mode 100644 index 00000000..8a708fe3 --- /dev/null +++ b/modules/lithium.image/tests/test_hfr.cpp @@ -0,0 +1,157 @@ +#include "hfr.hpp" +#include "imgutils.hpp" + +#include +#include +#include +#include + +using namespace cv; +using namespace std; + +// Helper function to create a synthetic image with contours +cv::Mat createSyntheticImageWithContours() { + cv::Mat img = cv::Mat::zeros(100, 100, CV_8UC1); + cv::circle(img, cv::Point(50, 50), 20, cv::Scalar(255), -1); + cv::rectangle(img, cv::Point(10, 10), cv::Point(30, 30), cv::Scalar(255), + -1); + return img; +} + +// Test case for processContours with an empty image +TEST(ProcessContoursTest, EmptyImage) { + cv::Mat grayImg = cv::Mat::zeros(100, 100, CV_8UC1); + cv::Mat rgbImg = cv::Mat::zeros(100, 100, CV_8UC3); + cv::Mat markImg; + std::vector> contours; + bool doStarMark = false; + + auto [starnum, avghfr, hfrList, arelist] = + processContours(grayImg, rgbImg, markImg, contours, doStarMark); + EXPECT_EQ(starnum, 0); + EXPECT_EQ(avghfr, 0.0); + EXPECT_TRUE(hfrList.empty()); + EXPECT_TRUE(arelist.empty()); +} + +// Test case for processContours with a synthetic image with contours +TEST(ProcessContoursTest, SyntheticImageWithContours) { + cv::Mat grayImg = createSyntheticImageWithContours(); + cv::Mat rgbImg; + cv::cvtColor(grayImg, rgbImg, cv::COLOR_GRAY2BGR); + cv::Mat markImg; + std::vector> contours; + cv::findContours(grayImg, contours, cv::RETR_EXTERNAL, + cv::CHAIN_APPROX_SIMPLE); + bool doStarMark = false; + + auto [starnum, avghfr, hfrList, arelist] = + processContours(grayImg, rgbImg, markImg, contours, doStarMark); + EXPECT_GT(starnum, 0); + EXPECT_GT(avghfr, 0.0); + EXPECT_FALSE(hfrList.empty()); + EXPECT_FALSE(arelist.empty()); +} + +// Test case for processContours with a synthetic image and star marking enabled +TEST(ProcessContoursTest, SyntheticImageWithContoursAndStarMarking) { + cv::Mat grayImg = createSyntheticImageWithContours(); + cv::Mat rgbImg; + cv::cvtColor(grayImg, rgbImg, cv::COLOR_GRAY2BGR); + cv::Mat markImg; + std::vector> contours; + cv::findContours(grayImg, contours, cv::RETR_EXTERNAL, + cv::CHAIN_APPROX_SIMPLE); + bool doStarMark = true; + + auto [starnum, avghfr, hfrList, arelist] = + processContours(grayImg, rgbImg, markImg, contours, doStarMark); + EXPECT_GT(starnum, 0); + EXPECT_GT(avghfr, 0.0); + EXPECT_FALSE(hfrList.empty()); + EXPECT_FALSE(arelist.empty()); + EXPECT_FALSE(markImg.empty()); +} + +// Test case for processContours with a single contour +TEST(ProcessContoursTest, SingleContour) { + cv::Mat grayImg = cv::Mat::zeros(100, 100, CV_8UC1); + cv::circle(grayImg, cv::Point(50, 50), 20, cv::Scalar(255), -1); + cv::Mat rgbImg; + cv::cvtColor(grayImg, rgbImg, cv::COLOR_GRAY2BGR); + cv::Mat markImg; + std::vector> contours; + cv::findContours(grayImg, contours, cv::RETR_EXTERNAL, + cv::CHAIN_APPROX_SIMPLE); + bool doStarMark = false; + + auto [starnum, avghfr, hfrList, arelist] = + processContours(grayImg, rgbImg, markImg, contours, doStarMark); + EXPECT_EQ(starnum, 1); + EXPECT_GT(avghfr, 0.0); + EXPECT_EQ(hfrList.size(), 1); + EXPECT_EQ(arelist.size(), 1); +} + +// Test case for processContours with multiple contours +TEST(ProcessContoursTest, MultipleContours) { + cv::Mat grayImg = cv::Mat::zeros(100, 100, CV_8UC1); + cv::circle(grayImg, cv::Point(50, 50), 20, cv::Scalar(255), -1); + cv::rectangle(grayImg, cv::Point(10, 10), cv::Point(30, 30), + cv::Scalar(255), -1); + cv::Mat rgbImg; + cv::cvtColor(grayImg, rgbImg, cv::COLOR_GRAY2BGR); + cv::Mat markImg; + std::vector> contours; + cv::findContours(grayImg, contours, cv::RETR_EXTERNAL, + cv::CHAIN_APPROX_SIMPLE); + bool doStarMark = false; + + auto [starnum, avghfr, hfrList, arelist] = + processContours(grayImg, rgbImg, markImg, contours, doStarMark); + EXPECT_EQ(starnum, 2); + EXPECT_GT(avghfr, 0.0); + EXPECT_EQ(hfrList.size(), 2); + EXPECT_EQ(arelist.size(), 2); +} + +// Test case for processContours with elongated contour +TEST(ProcessContoursTest, ElongatedContour) { + cv::Mat grayImg = cv::Mat::zeros(100, 100, CV_8UC1); + cv::rectangle(grayImg, cv::Point(10, 10), cv::Point(90, 20), + cv::Scalar(255), -1); + cv::Mat rgbImg; + cv::cvtColor(grayImg, rgbImg, cv::COLOR_GRAY2BGR); + cv::Mat markImg; + std::vector> contours; + cv::findContours(grayImg, contours, cv::RETR_EXTERNAL, + cv::CHAIN_APPROX_SIMPLE); + bool doStarMark = false; + + auto [starnum, avghfr, hfrList, arelist] = + processContours(grayImg, rgbImg, markImg, contours, doStarMark); + EXPECT_EQ(starnum, 0); + EXPECT_EQ(avghfr, 0.0); + EXPECT_TRUE(hfrList.empty()); + EXPECT_TRUE(arelist.empty()); +} + +// Test case for processContours with contour out of bounds +TEST(ProcessContoursTest, ContourOutOfBounds) { + cv::Mat grayImg = cv::Mat::zeros(100, 100, CV_8UC1); + cv::circle(grayImg, cv::Point(95, 95), 10, cv::Scalar(255), -1); + cv::Mat rgbImg; + cv::cvtColor(grayImg, rgbImg, cv::COLOR_GRAY2BGR); + cv::Mat markImg; + std::vector> contours; + cv::findContours(grayImg, contours, cv::RETR_EXTERNAL, + cv::CHAIN_APPROX_SIMPLE); + bool doStarMark = false; + + auto [starnum, avghfr, hfrList, arelist] = + processContours(grayImg, rgbImg, markImg, contours, doStarMark); + EXPECT_EQ(starnum, 0); + EXPECT_EQ(avghfr, 0.0); + EXPECT_TRUE(hfrList.empty()); + EXPECT_TRUE(arelist.empty()); +} diff --git a/modules/lithium.image/tests/test_hist.cpp b/modules/lithium.image/tests/test_hist.cpp new file mode 100644 index 00000000..27cc18b1 --- /dev/null +++ b/modules/lithium.image/tests/test_hist.cpp @@ -0,0 +1,122 @@ +#include "hist.hpp" + +#include +#include +#include +#include + +// Test case for calculateHist with an empty image +TEST(CalculateHistTest, EmptyImage) { + cv::Mat img; + EXPECT_THROW(calculateHist(img), std::invalid_argument); +} + +// Test case for calculateHist with a single channel image +TEST(CalculateHistTest, SingleChannelImage) { + cv::Mat img = cv::Mat::zeros(10, 10, CV_8U); + EXPECT_THROW(calculateHist(img), std::invalid_argument); +} + +// Test case for calculateHist with a 3-channel image +TEST(CalculateHistTest, ThreeChannelImage) { + cv::Mat img = cv::Mat::zeros(10, 10, CV_8UC3); + auto histograms = calculateHist(img); + EXPECT_EQ(histograms.size(), 3); + for (const auto& hist : histograms) { + EXPECT_EQ(hist.rows, 256); + EXPECT_EQ(hist.cols, 1); + } +} + +// Test case for calculateHist with a 3-channel image and normalization +TEST(CalculateHistTest, ThreeChannelImageWithNormalization) { + cv::Mat img = cv::Mat::zeros(10, 10, CV_8UC3); + auto histograms = calculateHist(img, 256, true); + EXPECT_EQ(histograms.size(), 3); + for (const auto& hist : histograms) { + EXPECT_EQ(hist.rows, 256); + EXPECT_EQ(hist.cols, 1); + double minVal, maxVal; + cv::minMaxLoc(hist, &minVal, &maxVal); + EXPECT_GE(minVal, 0.0); + EXPECT_LE(maxVal, 1.0); + } +} + +// Test case for calculateHist with a 3-channel image with random values +TEST(CalculateHistTest, ThreeChannelImageRandomValues) { + cv::Mat img = cv::Mat::zeros(10, 10, CV_8UC3); + cv::randu(img, cv::Scalar::all(0), cv::Scalar::all(255)); + auto histograms = calculateHist(img); + EXPECT_EQ(histograms.size(), 3); + for (const auto& hist : histograms) { + EXPECT_EQ(hist.rows, 256); + EXPECT_EQ(hist.cols, 1); + } +} + +// Test case for calculateHist with a 3-channel image with maximum values +TEST(CalculateHistTest, ThreeChannelImageMaxValues) { + cv::Mat img = cv::Mat::ones(10, 10, CV_8UC3) * 255; + auto histograms = calculateHist(img); + EXPECT_EQ(histograms.size(), 3); + for (const auto& hist : histograms) { + EXPECT_EQ(hist.rows, 256); + EXPECT_EQ(hist.cols, 1); + } +} + +// Test case for calculateHist with a 3-channel image with minimum values +TEST(CalculateHistTest, ThreeChannelImageMinValues) { + cv::Mat img = cv::Mat::zeros(10, 10, CV_8UC3); + auto histograms = calculateHist(img); + EXPECT_EQ(histograms.size(), 3); + for (const auto& hist : histograms) { + EXPECT_EQ(hist.rows, 256); + EXPECT_EQ(hist.cols, 1); + } +} + +// Test case for calculateHist with a 3-channel image with gradient values +TEST(CalculateHistTest, ThreeChannelImageGradientValues) { + cv::Mat img = cv::Mat::zeros(10, 10, CV_8UC3); + for (int i = 0; i < 10; ++i) { + for (int j = 0; j < 10; ++j) { + img.at(i, j) = cv::Vec3b(i * 25, j * 25, (i + j) * 12); + } + } + auto histograms = calculateHist(img); + EXPECT_EQ(histograms.size(), 3); + for (const auto& hist : histograms) { + EXPECT_EQ(hist.rows, 256); + EXPECT_EQ(hist.cols, 1); + } +} + +// Test case for calculateHist with a 3-channel image and different histogram +// size +TEST(CalculateHistTest, ThreeChannelImageDifferentHistSize) { + cv::Mat img = cv::Mat::zeros(10, 10, CV_8UC3); + auto histograms = calculateHist(img, 128); + EXPECT_EQ(histograms.size(), 3); + for (const auto& hist : histograms) { + EXPECT_EQ(hist.rows, 128); + EXPECT_EQ(hist.cols, 1); + } +} + +// Test case for calculateHist with a 3-channel image and normalization with +// different histogram size +TEST(CalculateHistTest, ThreeChannelImageNormalizationDifferentHistSize) { + cv::Mat img = cv::Mat::zeros(10, 10, CV_8UC3); + auto histograms = calculateHist(img, 128, true); + EXPECT_EQ(histograms.size(), 3); + for (const auto& hist : histograms) { + EXPECT_EQ(hist.rows, 128); + EXPECT_EQ(hist.cols, 1); + double minVal, maxVal; + cv::minMaxLoc(hist, &minVal, &maxVal); + EXPECT_GE(minVal, 0.0); + EXPECT_LE(maxVal, 1.0); + } +} \ No newline at end of file diff --git a/modules/lithium.image/tests/test_imgio.cpp b/modules/lithium.image/tests/test_imgio.cpp new file mode 100644 index 00000000..edbfb10b --- /dev/null +++ b/modules/lithium.image/tests/test_imgio.cpp @@ -0,0 +1,121 @@ +#include +#include +#include +#include +#include "imgio.hpp" + +namespace fs = std::filesystem; + +class LoadImagesTest : public ::testing::Test { +protected: + void SetUp() override { + // Create test directory and sample images + fs::create_directory(test_dir); + + // Create valid test images + cv::Mat img1(100, 100, CV_8UC3, cv::Scalar(255, 0, 0)); + cv::Mat img2(100, 100, CV_8UC3, cv::Scalar(0, 255, 0)); + cv::imwrite(test_dir + "/valid1.png", img1); + cv::imwrite(test_dir + "/valid2.png", img2); + + // Create invalid/corrupt file + std::ofstream corrupt_file(test_dir + "/corrupt.png"); + corrupt_file << "This is not a valid image file"; + corrupt_file.close(); + } + + void TearDown() override { fs::remove_all(test_dir); } + + const std::string test_dir = "test_images_temp"; +}; + +// Test empty folder path +TEST_F(LoadImagesTest, EmptyFolderPath) { + auto result = loadImages("", {}, cv::IMREAD_COLOR); + EXPECT_TRUE(result.empty()); +} + +// Test non-existent folder +TEST_F(LoadImagesTest, NonExistentFolder) { + auto result = loadImages("nonexistent_folder", {}, cv::IMREAD_COLOR); + EXPECT_TRUE(result.empty()); +} + +// Test empty folder +TEST_F(LoadImagesTest, EmptyFolder) { + fs::create_directory("empty_test_dir"); + auto result = loadImages("empty_test_dir", {}, cv::IMREAD_COLOR); + EXPECT_TRUE(result.empty()); + fs::remove("empty_test_dir"); +} + +// Test loading valid images with no specific filenames +TEST_F(LoadImagesTest, LoadAllValidImages) { + auto result = loadImages(test_dir, {}, cv::IMREAD_COLOR); + EXPECT_EQ(result.size(), 2); // Should find 2 valid images + + for (const auto& [filepath, img] : result) { + EXPECT_FALSE(img.empty()); + EXPECT_EQ(img.rows, 100); + EXPECT_EQ(img.cols, 100); + EXPECT_EQ(img.channels(), 3); + } +} + +// Test loading with specific filenames +TEST_F(LoadImagesTest, LoadSpecificFiles) { + std::vector filenames = {"valid1.png"}; + auto result = loadImages(test_dir, filenames, cv::IMREAD_COLOR); + EXPECT_EQ(result.size(), 1); + EXPECT_FALSE(result[0].second.empty()); +} + +// Test loading with invalid filenames +TEST_F(LoadImagesTest, LoadInvalidFiles) { + std::vector filenames = {"nonexistent.png"}; + auto result = loadImages(test_dir, filenames, cv::IMREAD_COLOR); + EXPECT_TRUE(result.empty()); +} + +// Test loading with mixed valid/invalid files +TEST_F(LoadImagesTest, LoadMixedFiles) { + std::vector filenames = {"valid1.png", "nonexistent.png", + "valid2.png"}; + auto result = loadImages(test_dir, filenames, cv::IMREAD_COLOR); + EXPECT_EQ(result.size(), 2); // Should only load the two valid images +} + +// Test loading with different flags +TEST_F(LoadImagesTest, LoadWithDifferentFlags) { + auto result = loadImages(test_dir, {}, cv::IMREAD_GRAYSCALE); + EXPECT_EQ(result.size(), 2); + + for (const auto& [filepath, img] : result) { + EXPECT_FALSE(img.empty()); + EXPECT_EQ(img.channels(), 1); // Should be grayscale + } +} + +// Test with corrupt image file +TEST_F(LoadImagesTest, LoadCorruptFile) { + std::vector filenames = {"corrupt.png"}; + auto result = loadImages(test_dir, filenames, cv::IMREAD_COLOR); + EXPECT_TRUE(result.empty()); +} + +// Test with large number of files +TEST_F(LoadImagesTest, LoadManyFiles) { + // Create many small test images + for (int i = 0; i < 100; i++) { + cv::Mat img(10, 10, CV_8UC3, cv::Scalar(i, i, i)); + cv::imwrite(test_dir + "/test" + std::to_string(i) + ".png", img); + } + + auto result = loadImages(test_dir, {}, cv::IMREAD_COLOR); + EXPECT_EQ(result.size(), 102); // 100 new files + 2 original test files + + // Cleanup additional files + for (int i = 0; i < 100; i++) { + fs::remove(test_dir + "/test" + std::to_string(i) + ".png"); + } +} \ No newline at end of file diff --git a/modules/lithium.image/tests/test_imgutils.cpp b/modules/lithium.image/tests/test_imgutils.cpp new file mode 100644 index 00000000..17b951f1 --- /dev/null +++ b/modules/lithium.image/tests/test_imgutils.cpp @@ -0,0 +1,97 @@ +#include "imgutils.hpp" + +#include +#include +#include +#include + +// Test case for computeParamsOneChannel with an empty image +TEST(ComputeParamsOneChannelTest, EmptyImage) { + cv::Mat img; + EXPECT_THROW(computeParamsOneChannel(img), std::invalid_argument); +} + +// Test case for computeParamsOneChannel with a single channel image +TEST(ComputeParamsOneChannelTest, SingleChannelImage) { + cv::Mat img = cv::Mat::zeros(10, 10, CV_8U); + auto [shadows, midtones, highlights] = computeParamsOneChannel(img); + EXPECT_DOUBLE_EQ(shadows, 0.0); + EXPECT_DOUBLE_EQ(midtones, 0.0); + EXPECT_DOUBLE_EQ(highlights, 1.0); +} + +// Test case for computeParamsOneChannel with a single channel image with non-zero values +TEST(ComputeParamsOneChannelTest, SingleChannelImageNonZero) { + cv::Mat img = cv::Mat::ones(10, 10, CV_8U) * 128; + auto [shadows, midtones, highlights] = computeParamsOneChannel(img); + EXPECT_DOUBLE_EQ(shadows, 0.0); + EXPECT_DOUBLE_EQ(midtones, 0.5); + EXPECT_DOUBLE_EQ(highlights, 1.0); +} + +// Test case for computeParamsOneChannel with a single channel image with mixed values +TEST(ComputeParamsOneChannelTest, SingleChannelImageMixedValues) { + cv::Mat img = cv::Mat::zeros(10, 10, CV_8U); + img.at(5, 5) = 255; + auto [shadows, midtones, highlights] = computeParamsOneChannel(img); + EXPECT_DOUBLE_EQ(shadows, 0.0); + EXPECT_DOUBLE_EQ(midtones, 0.0); + EXPECT_DOUBLE_EQ(highlights, 1.0); +} + +// Test case for computeParamsOneChannel with a 16-bit single channel image +TEST(ComputeParamsOneChannelTest, SingleChannel16BitImage) { + cv::Mat img = cv::Mat::ones(10, 10, CV_16U) * 32768; + auto [shadows, midtones, highlights] = computeParamsOneChannel(img); + EXPECT_DOUBLE_EQ(shadows, 0.0); + EXPECT_DOUBLE_EQ(midtones, 0.5); + EXPECT_DOUBLE_EQ(highlights, 1.0); +} + +// Test case for computeParamsOneChannel with a single channel image with random values +TEST(ComputeParamsOneChannelTest, SingleChannelImageRandomValues) { + cv::Mat img = cv::Mat::zeros(10, 10, CV_8U); + cv::randu(img, 0, 255); + auto [shadows, midtones, highlights] = computeParamsOneChannel(img); + EXPECT_GE(shadows, 0.0); + EXPECT_LE(shadows, 1.0); + EXPECT_GE(midtones, 0.0); + EXPECT_LE(midtones, 1.0); + EXPECT_GE(highlights, 0.0); + EXPECT_LE(highlights, 1.0); +} + +// Test case for computeParamsOneChannel with a single channel image with maximum values +TEST(ComputeParamsOneChannelTest, SingleChannelImageMaxValues) { + cv::Mat img = cv::Mat::ones(10, 10, CV_8U) * 255; + auto [shadows, midtones, highlights] = computeParamsOneChannel(img); + EXPECT_DOUBLE_EQ(shadows, 0.0); + EXPECT_DOUBLE_EQ(midtones, 0.0); + EXPECT_DOUBLE_EQ(highlights, 1.0); +} + +// Test case for computeParamsOneChannel with a single channel image with minimum values +TEST(ComputeParamsOneChannelTest, SingleChannelImageMinValues) { + cv::Mat img = cv::Mat::zeros(10, 10, CV_8U); + auto [shadows, midtones, highlights] = computeParamsOneChannel(img); + EXPECT_DOUBLE_EQ(shadows, 0.0); + EXPECT_DOUBLE_EQ(midtones, 0.0); + EXPECT_DOUBLE_EQ(highlights, 1.0); +} + +// Test case for computeParamsOneChannel with a single channel image with gradient values +TEST(ComputeParamsOneChannelTest, SingleChannelImageGradientValues) { + cv::Mat img = cv::Mat::zeros(10, 10, CV_8U); + for (int i = 0; i < 10; ++i) { + for (int j = 0; j < 10; ++j) { + img.at(i, j) = static_cast(i * 25 + j * 25); + } + } + auto [shadows, midtones, highlights] = computeParamsOneChannel(img); + EXPECT_GE(shadows, 0.0); + EXPECT_LE(shadows, 1.0); + EXPECT_GE(midtones, 0.0); + EXPECT_LE(midtones, 1.0); + EXPECT_GE(highlights, 0.0); + EXPECT_LE(highlights, 1.0); +} \ No newline at end of file diff --git a/modules/lithium.image/tests/test_stack.cpp b/modules/lithium.image/tests/test_stack.cpp new file mode 100644 index 00000000..327983c9 --- /dev/null +++ b/modules/lithium.image/tests/test_stack.cpp @@ -0,0 +1,140 @@ +#include "stack.hpp" +#include +#include + +// Helper function to create synthetic test images +cv::Mat createTestImage(int width, int height, uchar value) { + cv::Mat img(height, width, CV_8UC1, cv::Scalar(value)); + return img; +} + +// Helper function to create a set of test images +std::vector createTestImages(int width, int height, const std::vector& values) { + std::vector images; + for (auto value : values) { + images.push_back(createTestImage(width, height, value)); + } + return images; +} + +// Test empty input +TEST(StackImagesTest, EmptyInput) { + std::vector images; + std::vector weights; + EXPECT_THROW(stackImages(images, MEAN, 2.0f, weights), std::runtime_error); +} + +// Test mean stacking +TEST(StackImagesTest, MeanStack) { + std::vector images = createTestImages(10, 10, {100, 200}); + cv::Mat result = stackImages(images, MEAN, 2.0f, {}); + + EXPECT_EQ(result.type(), CV_8UC1); + EXPECT_EQ(result.size(), images[0].size()); + EXPECT_NEAR(cv::mean(result)[0], 150.0, 1.0); +} + +// Test median stacking +TEST(StackImagesTest, MedianStack) { + std::vector images = createTestImages(10, 10, {100, 150, 200}); + cv::Mat result = stackImages(images, MEDIAN, 2.0f, {}); + + EXPECT_EQ(result.type(), CV_8UC1); + EXPECT_EQ(result.size(), images[0].size()); + EXPECT_NEAR(cv::mean(result)[0], 150.0, 1.0); +} + +// Test maximum stacking +TEST(StackImagesTest, MaximumStack) { + std::vector images = createTestImages(10, 10, {100, 200}); + cv::Mat result = stackImages(images, MAXIMUM, 2.0f, {}); + + EXPECT_EQ(result.type(), CV_8UC1); + EXPECT_EQ(result.size(), images[0].size()); + EXPECT_NEAR(cv::mean(result)[0], 200.0, 1.0); +} + +// Test minimum stacking +TEST(StackImagesTest, MinimumStack) { + std::vector images = createTestImages(10, 10, {100, 200}); + cv::Mat result = stackImages(images, MINIMUM, 2.0f, {}); + + EXPECT_EQ(result.type(), CV_8UC1); + EXPECT_EQ(result.size(), images[0].size()); + EXPECT_NEAR(cv::mean(result)[0], 100.0, 1.0); +} + +// Test sigma clipping stack +TEST(StackImagesTest, SigmaClippingStack) { + std::vector images = createTestImages(10, 10, {100, 150, 200, 250}); + cv::Mat result = stackImages(images, SIGMA_CLIPPING, 2.0f, {}); + + EXPECT_EQ(result.type(), CV_8UC1); + EXPECT_EQ(result.size(), images[0].size()); + EXPECT_GT(cv::mean(result)[0], 100.0); + EXPECT_LT(cv::mean(result)[0], 250.0); +} + +// Test weighted mean stack +TEST(StackImagesTest, WeightedMeanStack) { + std::vector images = createTestImages(10, 10, {100, 200}); + std::vector weights = {1.0f, 2.0f}; + cv::Mat result = stackImages(images, WEIGHTED_MEAN, 2.0f, weights); + + EXPECT_EQ(result.type(), CV_8UC1); + EXPECT_EQ(result.size(), images[0].size()); + EXPECT_NEAR(cv::mean(result)[0], 166.67, 1.0); +} + +// Test weighted mean stack with invalid weights +TEST(StackImagesTest, WeightedMeanStackInvalidWeights) { + std::vector images = createTestImages(10, 10, {100, 200}); + std::vector weights = {1.0f}; // Wrong number of weights + EXPECT_THROW(stackImages(images, WEIGHTED_MEAN, 2.0f, weights), std::runtime_error); +} + +// Test lighten stack +TEST(StackImagesTest, LightenStack) { + std::vector images = createTestImages(10, 10, {100, 200}); + cv::Mat result = stackImages(images, LIGHTEN, 2.0f, {}); + + EXPECT_EQ(result.type(), CV_8UC1); + EXPECT_EQ(result.size(), images[0].size()); + EXPECT_NEAR(cv::mean(result)[0], 200.0, 1.0); +} + +// Test invalid stacking mode +TEST(StackImagesTest, InvalidStackingMode) { + std::vector images = createTestImages(10, 10, {100, 200}); + EXPECT_THROW(stackImages(images, static_cast(-1), 2.0f, {}), std::invalid_argument); +} + +// Test single image input +TEST(StackImagesTest, SingleImage) { + std::vector images = createTestImages(10, 10, {100}); + cv::Mat result = stackImages(images, MEAN, 2.0f, {}); + + EXPECT_EQ(result.type(), CV_8UC1); + EXPECT_EQ(result.size(), images[0].size()); + EXPECT_NEAR(cv::mean(result)[0], 100.0, 1.0); +} + +// Test large number of images +TEST(StackImagesTest, ManyImages) { + std::vector values(100, 100); + std::vector images = createTestImages(10, 10, values); + cv::Mat result = stackImages(images, MEAN, 2.0f, {}); + + EXPECT_EQ(result.type(), CV_8UC1); + EXPECT_EQ(result.size(), images[0].size()); + EXPECT_NEAR(cv::mean(result)[0], 100.0, 1.0); +} + +// Test different image sizes +TEST(StackImagesTest, DifferentImageSizes) { + std::vector images; + images.push_back(createTestImage(10, 10, 100)); + images.push_back(createTestImage(20, 20, 200)); + + EXPECT_THROW(stackImages(images, MEAN, 2.0f, {}), std::runtime_error); +} \ No newline at end of file diff --git a/modules/lithium.image/tests/test_stretch.cpp b/modules/lithium.image/tests/test_stretch.cpp new file mode 100644 index 00000000..c8a333b6 --- /dev/null +++ b/modules/lithium.image/tests/test_stretch.cpp @@ -0,0 +1,164 @@ +#include "stretch.hpp" +#include +#include + +namespace { + +// Helper function to create a synthetic histogram +cv::Mat createTestHistogram(float value, int size = 256) { + cv::Mat hist = cv::Mat::zeros(size, 1, CV_32F); + hist.at(static_cast(value)) = 1.0f; + return hist; +} + +// Helper function to create a test image plane +cv::Mat createTestPlane(int width, int height, uchar value) { + return cv::Mat(height, width, CV_8UC1, cv::Scalar(value)); +} + +// Helper to verify basic image properties +void validateImageProperties(const cv::Mat& img, cv::Size expectedSize, int expectedType) { + EXPECT_EQ(img.size(), expectedSize); + EXPECT_EQ(img.type(), expectedType); +} + +class StretchWhiteBalanceTest : public ::testing::Test { +protected: + void SetUp() override { + width = 100; + height = 100; + } + + int width; + int height; +}; + +// Test input validation +TEST_F(StretchWhiteBalanceTest, EmptyInputs) { + std::vector emptyHists; + std::vector emptyPlanes; + + EXPECT_THROW(stretchWhiteBalance(emptyHists, emptyPlanes), std::invalid_argument); +} + +TEST_F(StretchWhiteBalanceTest, WrongChannelCount) { + std::vector hists = {createTestHistogram(128)}; + std::vector planes = {createTestPlane(width, height, 128)}; + + EXPECT_THROW(stretchWhiteBalance(hists, planes), std::invalid_argument); +} + +// Test normal operation +TEST_F(StretchWhiteBalanceTest, NormalOperation) { + std::vector hists = { + createTestHistogram(100), + createTestHistogram(128), + createTestHistogram(150) + }; + + std::vector planes = { + createTestPlane(width, height, 100), + createTestPlane(width, height, 128), + createTestPlane(width, height, 150) + }; + + cv::Mat result = stretchWhiteBalance(hists, planes); + + validateImageProperties(result, cv::Size(width, height), CV_16UC3); + EXPECT_GT(cv::mean(result)[0], 0); +} + +// Test zero values +TEST_F(StretchWhiteBalanceTest, ZeroValues) { + std::vector hists = { + createTestHistogram(0), + createTestHistogram(0), + createTestHistogram(0) + }; + + std::vector planes = { + createTestPlane(width, height, 0), + createTestPlane(width, height, 0), + createTestPlane(width, height, 0) + }; + + cv::Mat result = stretchWhiteBalance(hists, planes); + validateImageProperties(result, cv::Size(width, height), CV_16UC3); +} + +// Test maximum values +TEST_F(StretchWhiteBalanceTest, MaxValues) { + std::vector hists = { + createTestHistogram(255), + createTestHistogram(255), + createTestHistogram(255) + }; + + std::vector planes = { + createTestPlane(width, height, 255), + createTestPlane(width, height, 255), + createTestPlane(width, height, 255) + }; + + cv::Mat result = stretchWhiteBalance(hists, planes); + validateImageProperties(result, cv::Size(width, height), CV_16UC3); + EXPECT_LE(cv::mean(result)[0], 65535); +} + +// Test color balance correction +TEST_F(StretchWhiteBalanceTest, ColorBalanceCorrection) { + // Create imbalanced color channels + std::vector hists = { + createTestHistogram(50), // Blue - dark + createTestHistogram(128), // Green - mid + createTestHistogram(200) // Red - bright + }; + + std::vector planes = { + createTestPlane(width, height, 50), + createTestPlane(width, height, 128), + createTestPlane(width, height, 200) + }; + + cv::Mat result = stretchWhiteBalance(hists, planes); + + // After white balance, channels should be more balanced + std::vector channels; + cv::split(result, channels); + + double meanB = cv::mean(channels[0])[0]; + double meanG = cv::mean(channels[1])[0]; + double meanR = cv::mean(channels[2])[0]; + + // Verify channels are more balanced after correction + double maxDiff = std::max({std::abs(meanB - meanG), + std::abs(meanG - meanR), + std::abs(meanB - meanR)}); + + EXPECT_LT(maxDiff / 65535.0, 0.2); // Channels should be within 20% of each other +} + +// Test output range +TEST_F(StretchWhiteBalanceTest, OutputRange) { + std::vector hists = { + createTestHistogram(128), + createTestHistogram(128), + createTestHistogram(128) + }; + + std::vector planes = { + createTestPlane(width, height, 128), + createTestPlane(width, height, 128), + createTestPlane(width, height, 128) + }; + + cv::Mat result = stretchWhiteBalance(hists, planes); + + double minVal, maxVal; + cv::minMaxLoc(result, &minVal, &maxVal); + + EXPECT_GE(minVal, 0); + EXPECT_LE(maxVal, 65535); +} + +} // namespace \ No newline at end of file diff --git a/modules/lithium.image/tests/test_thumbhash.cpp b/modules/lithium.image/tests/test_thumbhash.cpp new file mode 100644 index 00000000..af523def --- /dev/null +++ b/modules/lithium.image/tests/test_thumbhash.cpp @@ -0,0 +1,94 @@ +#include "thumbhash.hpp" + +#include +#include + +// Test case for converting black color (0, 0, 0) +TEST(RgbToYCbCrTest, BlackColor) { + cv::Vec3b rgb(0, 0, 0); + YCbCr yCbCr = rgbToYCbCr(rgb); + EXPECT_NEAR(yCbCr.y, 0.0, 1e-6); + EXPECT_NEAR(yCbCr.cb, 0.5, 1e-6); + EXPECT_NEAR(yCbCr.cr, 0.5, 1e-6); +} + +// Test case for converting white color (255, 255, 255) +TEST(RgbToYCbCrTest, WhiteColor) { + cv::Vec3b rgb(255, 255, 255); + YCbCr yCbCr = rgbToYCbCr(rgb); + EXPECT_NEAR(yCbCr.y, 1.0, 1e-6); + EXPECT_NEAR(yCbCr.cb, 0.0, 1e-6); + EXPECT_NEAR(yCbCr.cr, 0.0, 1e-6); +} + +// Test case for converting red color (255, 0, 0) +TEST(RgbToYCbCrTest, RedColor) { + cv::Vec3b rgb(0, 0, 255); + YCbCr yCbCr = rgbToYCbCr(rgb); + EXPECT_NEAR(yCbCr.y, 0.299, 1e-6); + EXPECT_NEAR(yCbCr.cb, 0.5, 1e-6); + EXPECT_NEAR(yCbCr.cr, 1.0, 1e-6); +} + +// Test case for converting green color (0, 255, 0) +TEST(RgbToYCbCrTest, GreenColor) { + cv::Vec3b rgb(0, 255, 0); + YCbCr yCbCr = rgbToYCbCr(rgb); + EXPECT_NEAR(yCbCr.y, 0.587, 1e-6); + EXPECT_NEAR(yCbCr.cb, -0.28886, 1e-6); + EXPECT_NEAR(yCbCr.cr, -0.51499, 1e-6); +} + +// Test case for converting blue color (0, 0, 255) +TEST(RgbToYCbCrTest, BlueColor) { + cv::Vec3b rgb(255, 0, 0); + YCbCr yCbCr = rgbToYCbCr(rgb); + EXPECT_NEAR(yCbCr.y, 0.114, 1e-6); + EXPECT_NEAR(yCbCr.cb, 0.436, 1e-6); + EXPECT_NEAR(yCbCr.cr, -0.10001, 1e-6); +} + +// Test case for converting gray color (128, 128, 128) +TEST(RgbToYCbCrTest, GrayColor) { + cv::Vec3b rgb(128, 128, 128); + YCbCr yCbCr = rgbToYCbCr(rgb); + EXPECT_NEAR(yCbCr.y, 0.5, 1e-6); + EXPECT_NEAR(yCbCr.cb, 0.0, 1e-6); + EXPECT_NEAR(yCbCr.cr, 0.0, 1e-6); +} + +// Test case for converting yellow color (255, 255, 0) +TEST(RgbToYCbCrTest, YellowColor) { + cv::Vec3b rgb(0, 255, 255); + YCbCr yCbCr = rgbToYCbCr(rgb); + EXPECT_NEAR(yCbCr.y, 0.886, 1e-6); + EXPECT_NEAR(yCbCr.cb, -0.34414, 1e-6); + EXPECT_NEAR(yCbCr.cr, 0.0, 1e-6); +} + +// Test case for converting cyan color (0, 255, 255) +TEST(RgbToYCbCrTest, CyanColor) { + cv::Vec3b rgb(255, 255, 0); + YCbCr yCbCr = rgbToYCbCr(rgb); + EXPECT_NEAR(yCbCr.y, 0.701, 1e-6); + EXPECT_NEAR(yCbCr.cb, 0.436, 1e-6); + EXPECT_NEAR(yCbCr.cr, -0.10001, 1e-6); +} + +// Test case for converting magenta color (255, 0, 255) +TEST(RgbToYCbCrTest, MagentaColor) { + cv::Vec3b rgb(255, 0, 255); + YCbCr yCbCr = rgbToYCbCr(rgb); + EXPECT_NEAR(yCbCr.y, 0.413, 1e-6); + EXPECT_NEAR(yCbCr.cb, 0.5, 1e-6); + EXPECT_NEAR(yCbCr.cr, 0.5, 1e-6); +} + +// Test case for converting a random color (123, 234, 45) +TEST(RgbToYCbCrTest, RandomColor) { + cv::Vec3b rgb(45, 234, 123); + YCbCr yCbCr = rgbToYCbCr(rgb); + EXPECT_NEAR(yCbCr.y, 0.678, 1e-6); + EXPECT_NEAR(yCbCr.cb, -0.253, 1e-6); + EXPECT_NEAR(yCbCr.cr, -0.168, 1e-6); +} diff --git a/modules/lithium.indiserver/CMakeLists.txt b/modules/lithium.indiserver/CMakeLists.txt index 7cd3f105..e7348e39 100644 --- a/modules/lithium.indiserver/CMakeLists.txt +++ b/modules/lithium.indiserver/CMakeLists.txt @@ -7,11 +7,6 @@ cmake_minimum_required(VERSION 3.20) project(lithium.indiserver) -# Set the C++ standard -set(CMAKE_CXX_STANDARD 20) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS OFF) - # Add source and header files in one place for better management set(SOURCE_FILES src/driverlist.cpp @@ -30,6 +25,12 @@ set(HEADER_FILES include/iconnector.hpp ) +set(TEST_FILES + tests/test_collection.cpp + tests/test_connector.cpp + tests/test_driverlist.cpp +) + # Specify the external libraries set(LIBS loguru @@ -39,6 +40,7 @@ set(LIBS atom-component atom-error atom-utils + atom-function ) if (WIN32) @@ -70,3 +72,9 @@ install(TARGETS lithium.indiserver # Install header files install(FILES ${HEADER_FILES} DESTINATION "${CMAKE_INSTALL_PREFIX}/include") + +find_package(GTest REQUIRED) + +# Add the test executable +add_executable(lithium.indiserver.test ${TEST_FILES}) +target_link_libraries(lithium.indiserver.test lithium.indiserver GTest::GTest GTest::Main) diff --git a/modules/lithium.indiserver/include/async_system_command.hpp b/modules/lithium.indiserver/include/async_system_command.hpp new file mode 100644 index 00000000..27293376 --- /dev/null +++ b/modules/lithium.indiserver/include/async_system_command.hpp @@ -0,0 +1,60 @@ +// async_system_command.hpp +#pragma once + +#include +#include +#include + +/** + * @class AsyncSystemCommand + * @brief A class to execute system commands asynchronously. + * + * This class provides functionality to run system commands asynchronously, + * check their running status, and terminate them if needed. + */ +class AsyncSystemCommand { +public: + /** + * @brief Constructs an AsyncSystemCommand with the given command. + * @param cmd The system command to be executed. + */ + explicit AsyncSystemCommand(const std::string& cmd); + + /** + * @brief Destructor for AsyncSystemCommand. + * + * Ensures that any running command is terminated before the object is + * destroyed. + */ + ~AsyncSystemCommand(); + + /** + * @brief Runs the system command asynchronously. + * + * If a command is already running, this function will log a warning and + * return. + */ + void run(); + + /** + * @brief Terminates the running system command. + * + * If no command is running, this function will log an informational message + * and return. + */ + void terminate(); + + /** + * @brief Checks if the system command is currently running. + * @return True if the command is running, false otherwise. + */ + bool isRunning() const; + +private: + std::string cmd_; ///< The system command to be executed. + std::atomic pid_; ///< The process ID of the running command. + std::atomic + running_; ///< Indicates whether the command is currently running. + mutable std::mutex + mutex_; ///< Mutex to protect access to shared resources. +}; \ No newline at end of file diff --git a/modules/lithium.indiserver/include/collection.hpp b/modules/lithium.indiserver/include/collection.hpp index 3b0a6ca8..678e53b9 100644 --- a/modules/lithium.indiserver/include/collection.hpp +++ b/modules/lithium.indiserver/include/collection.hpp @@ -10,24 +10,96 @@ #include "atom/type/json_fwd.hpp" using json = nlohmann::json; +namespace tinyxml2 { +class XMLElement; +} + +/** + * @class INDIDriverCollection + * @brief A class to manage and parse INDI driver collections. + * + * This class provides functionality to collect, parse, and manage INDI drivers + * from XML files and JSON configurations. + */ class INDIDriverCollection { public: + /** + * @brief Parses drivers from the specified path. + * @param path The directory path containing the driver XML files. + * @return True if drivers were successfully parsed, false otherwise. + */ auto parseDrivers(const std::string& path) -> bool; + + /** + * @brief Parses a single device from an XML element. + * @param device The XML element representing the device. + * @param family The family attribute of the device group. + * @return A shared pointer to the parsed INDIDeviceContainer, or nullptr on + * failure. + */ + auto parseDevice(tinyxml2::XMLElement* device, const char* family) + -> std::shared_ptr; + + /** + * @brief Collects XML files from the specified path. + * @param path The directory path to search for XML files. + * @return True if XML files were found, false otherwise. + */ + auto collectXMLFiles(const std::string& path) -> bool; + + /** + * @brief Parses custom drivers from a JSON configuration. + * @param drivers The JSON array containing custom driver configurations. + * @return True if custom drivers were successfully parsed, false otherwise. + */ auto parseCustomDrivers(const json& drivers) -> bool; + + /** + * @brief Clears all custom drivers from the collection. + */ void clearCustomDrivers(); + + /** + * @brief Gets a driver by its label. + * @param label The label of the driver to retrieve. + * @return A shared pointer to the INDIDeviceContainer with the specified + * label, or nullptr if not found. + */ auto getByLabel(const std::string& label) -> std::shared_ptr; + + /** + * @brief Gets a driver by its name. + * @param name The name of the driver to retrieve. + * @return A shared pointer to the INDIDeviceContainer with the specified + * name, or nullptr if not found. + */ auto getByName(const std::string& name) -> std::shared_ptr; + + /** + * @brief Gets a driver by its binary path. + * @param binary The binary path of the driver to retrieve. + * @return A shared pointer to the INDIDeviceContainer with the specified + * binary path, or nullptr if not found. + */ auto getByBinary(const std::string& binary) -> std::shared_ptr; + + /** + * @brief Gets all driver families and their associated driver labels. + * @return An unordered map where the key is the family name and the value + * is a vector of driver labels. + */ auto getFamilies() -> std::unordered_map>; private: - std::string path_; - std::vector files_; - std::vector> drivers_; + std::string + path_; ///< The path to the directory containing driver XML files. + std::vector files_; ///< A list of collected XML file paths. + std::vector> + drivers_; ///< A list of parsed drivers. }; -#endif // LITHIUM_INDISERVER_COLLECTION_HPP +#endif // LITHIUM_INDISERVER_COLLECTION_HPP \ No newline at end of file diff --git a/modules/lithium.indiserver/include/container.hpp b/modules/lithium.indiserver/include/container.hpp index ebf37c51..9d9a6c50 100644 --- a/modules/lithium.indiserver/include/container.hpp +++ b/modules/lithium.indiserver/include/container.hpp @@ -4,16 +4,34 @@ #include #include +/** + * @class INDIDeviceContainer + * @brief A container class for INDI device information. + * + * This class holds information about an INDI device, including its name, label, + * version, binary path, family, skeleton path, and whether it is a custom + * device. + */ class INDIDeviceContainer { public: - std::string name; - std::string label; - std::string version; - std::string binary; - std::string family; - std::string skeleton; - bool custom; + std::string name; ///< The name of the device. + std::string label; ///< The label of the device. + std::string version; ///< The version of the device. + std::string binary; ///< The binary path of the device. + std::string family; ///< The family to which the device belongs. + std::string skeleton; ///< The skeleton path of the device (optional). + bool custom; ///< Indicates whether the device is custom. + /** + * @brief Constructs an INDIDeviceContainer with the given parameters. + * @param name The name of the device. + * @param label The label of the device. + * @param version The version of the device. + * @param binary The binary path of the device. + * @param family The family to which the device belongs. + * @param skeleton The skeleton path of the device (optional). + * @param custom Indicates whether the device is custom (default is false). + */ INDIDeviceContainer(std::string name, std::string label, std::string version, std::string binary, std::string family, std::string skeleton = "", @@ -27,4 +45,4 @@ class INDIDeviceContainer { custom(custom) {} }; -#endif // LITHIUM_INDISERVER_CONTAINER_HPP +#endif // LITHIUM_INDISERVER_CONTAINER_HPP \ No newline at end of file diff --git a/modules/lithium.indiserver/include/database.hpp b/modules/lithium.indiserver/include/database.hpp new file mode 100644 index 00000000..3a651e2e --- /dev/null +++ b/modules/lithium.indiserver/include/database.hpp @@ -0,0 +1,135 @@ +// database.hpp +#pragma once + +#include +#include +#include +#include +#include "atom/type/json.hpp" + +using json = nlohmann::json; + +/** + * @class Database + * @brief A class to manage and store INDI profiles and drivers using JSON. + * + * This class provides functionality to manage profiles and drivers, including + * adding, deleting, updating, and retrieving profiles and drivers. The data is + * stored in a JSON file. + */ +class Database { +public: + /** + * @brief Constructs a Database object with the given filename. + * @param filename The path to the JSON file used for storing the database. + */ + explicit Database(const std::string& filename); + + /** + * @brief Gets the auto-start profile. + * @return The name of the auto-start profile, or std::nullopt if none is + * set. + */ + std::optional getAutoProfile() const; + + /** + * @brief Gets all profiles from the database. + * @return A vector of JSON objects representing the profiles. + */ + std::vector getProfiles() const; + + /** + * @brief Gets all custom drivers from the database. + * @return A vector of JSON objects representing the custom drivers. + */ + std::vector getCustomDrivers() const; + + /** + * @brief Gets all driver labels for a specific profile. + * @param name The name of the profile. + * @return A vector of strings representing the driver labels. + */ + std::vector getProfileDriversLabels( + const std::string& name) const; + + /** + * @brief Gets the remote drivers list for a specific profile. + * @param name The name of the profile. + * @return A string representing the remote drivers, or std::nullopt if not + * found. + */ + std::optional getProfileRemoteDrivers( + const std::string& name) const; + + /** + * @brief Deletes a profile from the database. + * @param name The name of the profile to delete. + */ + void deleteProfile(const std::string& name); + + /** + * @brief Adds a new profile to the database. + * @param name The name of the new profile. + * @return The ID of the newly added profile. + */ + int addProfile(const std::string& name); + + /** + * @brief Gets the information of a specific profile. + * @param name The name of the profile. + * @return A JSON object representing the profile, or std::nullopt if not + * found. + */ + std::optional getProfile(const std::string& name) const; + + /** + * @brief Updates the information of a specific profile. + * @param name The name of the profile. + * @param port The port number of the profile. + * @param autostart Whether the profile should auto-start. + * @param autoconnect Whether the profile should auto-connect. + */ + void updateProfile(const std::string& name, int port, + bool autostart = false, bool autoconnect = false); + + /** + * @brief Saves the drivers for a specific profile. + * @param name The name of the profile. + * @param drivers A vector of JSON objects representing the drivers. + */ + void saveProfileDrivers(const std::string& name, + const std::vector& drivers); + + /** + * @brief Saves a custom driver to the database. + * @param driver A JSON object representing the custom driver. + */ + void saveProfileCustomDriver(const json& driver); + +private: + /** + * @brief Updates the database schema if necessary. + */ + void update(); + + /** + * @brief Creates the initial database schema. + */ + void create(); + + /** + * @brief Saves the database to the JSON file. + */ + void save() const; + + /** + * @brief Loads the database from the JSON file. + */ + void load(); + + std::filesystem::path filepath_; ///< The path to the JSON file used for + ///< storing the database. + json db_; ///< The JSON object representing the database. + static constexpr const char* CURRENT_VERSION = + "0.1.6"; ///< The current version of the database schema. +}; \ No newline at end of file diff --git a/modules/lithium.indiserver/include/driverlist.hpp b/modules/lithium.indiserver/include/driverlist.hpp index 82e4b8f5..27b88aba 100644 --- a/modules/lithium.indiserver/include/driverlist.hpp +++ b/modules/lithium.indiserver/include/driverlist.hpp @@ -6,23 +6,69 @@ #include "atom/macro.hpp" +/** + * @struct Device + * @brief A structure to hold information about an INDI device. + * + * This structure contains details about an INDI device, including its label, + * manufacturer, driver name, and version. + */ struct Device { - std::string label; - std::string manufacturer; - std::string driverName; - std::string version; + std::string label; ///< The label of the device. + std::string manufacturer; ///< The manufacturer of the device. + std::string driverName; ///< The name of the driver. + std::string version; ///< The version of the device. } ATOM_ALIGNAS(128); +/** + * @struct DevGroup + * @brief A structure to hold a group of INDI devices. + * + * This structure contains a group name and a list of devices belonging to that + * group. + */ struct DevGroup { - std::string group; - std::vector devices; + std::string group; ///< The name of the device group. + std::vector devices; ///< A list of devices in the group. } ATOM_ALIGNAS(64); +/** + * @struct DriversList + * @brief A structure to hold a list of device groups. + * + * This structure contains a list of device groups, each containing multiple + * devices. + */ struct DriversList { - std::vector devGroups; + std::vector devGroups; ///< A list of device groups. } ATOM_ALIGNAS(32); +/** + * @brief Parses a drivers list from a file. + * @param filename The path to the file containing the drivers list. + * @return A vector of DevGroup structures parsed from the file. + */ +auto parseDriversList(const std::string& filename) -> std::vector; + +/** + * @brief Parses devices from a specified path. + * @param path The directory path to search for device files. + * @param devicesFrom A reference to a vector of Device structures to store the + * parsed devices. + * @return A vector of DevGroup structures parsed from the specified path. + */ +auto parseDevicesFromPath(const std::string& path, + std::vector& devicesFrom) + -> std::vector; + +/** + * @brief Reads a drivers list from files. + * @param filename The path to the file containing the drivers list. + * @param path The directory path to search for additional device files. + * @return A tuple containing a DriversList structure, a vector of DevGroup + * structures, and a vector of Device structures. + */ auto readDriversListFromFiles(std::string_view filename, std::string_view path) -> std::tuple, std::vector>; -#endif +#endif // LITHIUM_INDISERVER_DRIVERLIST_HPP \ No newline at end of file diff --git a/modules/lithium.indiserver/include/iconnector.hpp b/modules/lithium.indiserver/include/iconnector.hpp index dcc151b2..834115b2 100644 --- a/modules/lithium.indiserver/include/iconnector.hpp +++ b/modules/lithium.indiserver/include/iconnector.hpp @@ -7,43 +7,125 @@ #include "addon/template/connector.hpp" +/** + * @class INDIConnector + * @brief A class to manage the connection and interaction with an INDI server. + * + * This class provides functionality to start and stop the INDI server, manage drivers, + * and set or get properties of INDI devices. + */ class INDIConnector : public Connector { public: + /** + * @brief Constructs an INDIConnector with the given parameters. + * @param hst The hostname of the INDI server (default is "localhost"). + * @param prt The port number of the INDI server (default is 7624). + * @param cfg The path to the INDI configuration files (default is an empty string). + * @param dta The path to the INDI data files (default is "/usr/share/indi"). + * @param fif The path to the INDI FIFO file (default is "/tmp/indi.fifo"). + */ INDIConnector(const std::string& hst = "localhost", int prt = 7624, const std::string& cfg = "", const std::string& dta = "/usr/share/indi", const std::string& fif = "/tmp/indi.fifo"); + + /** + * @brief Destructor for INDIConnector. + */ ~INDIConnector() override = default; + + /** + * @brief Starts the INDI server. + * @return True if the server was started successfully, false otherwise. + */ auto startServer() -> bool override; + + /** + * @brief Stops the INDI server. + * @return True if the server was stopped successfully, false otherwise. + */ auto stopServer() -> bool override; + + /** + * @brief Checks if the INDI server is running. + * @return True if the server is running, false otherwise. + */ auto isRunning() -> bool override; + + /** + * @brief Checks if the INDI server software is installed. + * @return True if the software is installed, false otherwise. + */ auto isInstalled() -> bool; - auto startDriver(const std::shared_ptr& driver) - -> bool override; - auto stopDriver(const std::shared_ptr& driver) - -> bool override; - auto setProp(const std::string& dev, const std::string& prop, - const std::string& element, - const std::string& value) -> bool override; - auto getProp(const std::string& dev, const std::string& prop, - const std::string& element) -> std::string override; - auto getState(const std::string& dev, - const std::string& prop) -> std::string override; - auto getRunningDrivers() - -> std::unordered_map< - std::string, std::shared_ptr> override; + + /** + * @brief Starts an INDI driver. + * @param driver A shared pointer to the INDIDeviceContainer representing the driver. + * @return True if the driver was started successfully, false otherwise. + */ + auto startDriver(const std::shared_ptr& driver) -> bool override; + + /** + * @brief Stops an INDI driver. + * @param driver A shared pointer to the INDIDeviceContainer representing the driver. + * @return True if the driver was stopped successfully, false otherwise. + */ + auto stopDriver(const std::shared_ptr& driver) -> bool override; + + /** + * @brief Sets a property of an INDI device. + * @param dev The name of the device. + * @param prop The name of the property. + * @param element The name of the element. + * @param value The value to set. + * @return True if the property was set successfully, false otherwise. + */ + auto setProp(const std::string& dev, const std::string& prop, const std::string& element, const std::string& value) -> bool override; + + /** + * @brief Gets a property of an INDI device. + * @param dev The name of the device. + * @param prop The name of the property. + * @param element The name of the element. + * @return The value of the property. + */ + auto getProp(const std::string& dev, const std::string& prop, const std::string& element) -> std::string override; + + /** + * @brief Gets the state of an INDI device property. + * @param dev The name of the device. + * @param prop The name of the property. + * @return The state of the property. + */ + auto getState(const std::string& dev, const std::string& prop) -> std::string override; + + /** + * @brief Gets a list of running INDI drivers. + * @return An unordered map where the key is the driver label and the value is a shared pointer to the INDIDeviceContainer. + */ + auto getRunningDrivers() -> std::unordered_map> override; + + /** + * @brief Gets a list of INDI devices. + * @return A vector of unordered maps, each representing a device with its properties. + */ auto getDevices() -> std::vector> override; + private: - std::string host_; ///< INDI服务器的主机名 - int port_; ///< INDI服务器的端口号 - std::string config_path_; ///< INDI配置文件路径 - std::string data_path_; ///< INDI驱动程序路径 - std::string fifo_path_; ///< INDI FIFO路径 + /** + * @brief Validates the paths for configuration and data files. + */ + void validatePaths(); + + std::string host_; ///< The hostname of the INDI server. + int port_; ///< The port number of the INDI server. + std::string config_path_; ///< The path to the INDI configuration files. + std::string data_path_; ///< The path to the INDI data files. + std::string fifo_path_; ///< The path to the INDI FIFO file. + #if ENABLE_FASTHASH - emhash8::HashMap> - running_drivers_; + emhash8::HashMap> running_drivers_; #else - std::unordered_map> - running_drivers_; ///< 正在运行的驱动程序列表 + std::unordered_map> running_drivers_; ///< A list of running drivers. #endif }; -#endif // LITHIUM_INDISERVER_CONNECTOR_HPP +#endif // LITHIUM_INDISERVER_CONNECTOR_HPP \ No newline at end of file diff --git a/modules/lithium.indiserver/include/indihub_agent.hpp b/modules/lithium.indiserver/include/indihub_agent.hpp new file mode 100644 index 00000000..eff83288 --- /dev/null +++ b/modules/lithium.indiserver/include/indihub_agent.hpp @@ -0,0 +1,83 @@ +// indihub_agent.hpp +#pragma once + +#include +#include +#include + +class AsyncSystemCommand; + +static const std::string INDIHUB_AGENT_DEFAULT_MODE = "local"; +static const std::string INDIHUB_AGENT_CONFIG = "/tmp/indihub_agent.conf"; + +/** + * @class IndiHubAgent + * @brief A class to manage the INDIHub agent. + * + * This class provides functionality to start and stop the INDIHub agent, + * check its running status, and manage its configuration. + */ +class IndiHubAgent { +public: + /** + * @brief Constructs an IndiHubAgent with the given parameters. + * @param web_addr The web address of the INDIHub server. + * @param hostname The hostname of the INDIHub agent. + * @param port The port number of the INDIHub agent. + */ + IndiHubAgent(const std::string& web_addr, const std::string& hostname, + int port); + + /** + * @brief Destructor for IndiHubAgent. + */ + ~IndiHubAgent(); + + /** + * @brief Starts the INDIHub agent with the given profile and mode. + * @param profile The profile to use for the INDIHub agent. + * @param mode The mode to run the INDIHub agent in (default is "local"). + * @param conf The path to the configuration file (default is + * "/tmp/indihub_agent.conf"). + */ + void start(const std::string& profile, + const std::string& mode = INDIHUB_AGENT_DEFAULT_MODE, + const std::string& conf = INDIHUB_AGENT_CONFIG); + + /** + * @brief Stops the INDIHub agent. + */ + void stop(); + + /** + * @brief Checks if the INDIHub agent is currently running. + * @return True if the agent is running, false otherwise. + */ + bool isRunning() const; + + /** + * @brief Gets the current mode of the INDIHub agent. + * @return The current mode of the agent. + */ + std::string getMode() const; + +private: + /** + * @brief Runs the INDIHub agent with the given profile, mode, and + * configuration. + * @param profile The profile to use for the INDIHub agent. + * @param mode The mode to run the INDIHub agent in. + * @param conf The path to the configuration file. + */ + void run(const std::string& profile, const std::string& mode, + const std::string& conf); + + std::string web_addr_; ///< The web address of the INDIHub server. + std::string hostname_; ///< The hostname of the INDIHub agent. + int port_; ///< The port number of the INDIHub agent. + std::string mode_; ///< The current mode of the INDIHub agent. + std::unique_ptr + async_cmd_; ///< The asynchronous system command for running the agent. + std::unique_ptr + command_thread_; ///< The thread for running the asynchronous command. +}; \ No newline at end of file diff --git a/modules/lithium.indiserver/include/indiserver.hpp b/modules/lithium.indiserver/include/indiserver.hpp index 8b6310d1..f1a76c8a 100644 --- a/modules/lithium.indiserver/include/indiserver.hpp +++ b/modules/lithium.indiserver/include/indiserver.hpp @@ -1,27 +1,111 @@ #ifndef LITHIUM_INDISERVER_HPP #define LITHIUM_INDISERVER_HPP +#include +#include +#include #include "addon/template/connector.hpp" +/** + * @class INDIManager + * @brief A class to manage the INDI server and its drivers. + * + * This class provides functionality to start and stop the INDI server, manage + * drivers, and set or get properties of INDI devices. + */ class INDIManager { public: + /** + * @brief Constructs an INDIManager with the given connector. + * @param connector A unique pointer to a Connector object. + */ explicit INDIManager(std::unique_ptr connector); + /** + * @brief Destructor for INDIManager. + */ ~INDIManager(); + /** + * @brief Starts the INDI server. + * @return True if the server was started successfully, false otherwise. + */ bool startServer(); + + /** + * @brief Stops the INDI server. + * @return True if the server was stopped successfully, false otherwise. + */ bool stopServer(); + + /** + * @brief Checks if the INDI server is running. + * @return True if the server is running, false otherwise. + */ bool isRunning(); + + /** + * @brief Checks if the INDI server software is installed. + * @return True if the software is installed, false otherwise. + */ bool isInstalled(); + + /** + * @brief Starts an INDI driver. + * @param driver A shared pointer to the INDIDeviceContainer representing + * the driver. + * @return True if the driver was started successfully, false otherwise. + */ bool startDriver(const std::shared_ptr& driver); + + /** + * @brief Stops an INDI driver. + * @param driver A shared pointer to the INDIDeviceContainer representing + * the driver. + * @return True if the driver was stopped successfully, false otherwise. + */ bool stopDriver(const std::shared_ptr& driver); - bool setProp(const std::string& dev, const std::string& prop, const std::string& element, const std::string& value); - std::string getProp(const std::string& dev, const std::string& prop, const std::string& element); + + /** + * @brief Sets a property of an INDI device. + * @param dev The name of the device. + * @param prop The name of the property. + * @param element The name of the element. + * @param value The value to set. + * @return True if the property was set successfully, false otherwise. + */ + bool setProp(const std::string& dev, const std::string& prop, + const std::string& element, const std::string& value); + + /** + * @brief Gets a property of an INDI device. + * @param dev The name of the device. + * @param prop The name of the property. + * @param element The name of the element. + * @return The value of the property. + */ + std::string getProp(const std::string& dev, const std::string& prop, + const std::string& element); + + /** + * @brief Gets the state of an INDI device property. + * @param dev The name of the device. + * @param prop The name of the property. + * @return The state of the property. + */ std::string getState(const std::string& dev, const std::string& prop); - std::unordered_map> getRunningDrivers(); + + /** + * @brief Gets a list of running INDI drivers. + * @return An unordered map where the key is the driver label and the value + * is a shared pointer to the INDIDeviceContainer. + */ + std::unordered_map> + getRunningDrivers(); private: - std::unique_ptr connector; + std::unique_ptr connector; ///< The connector used to manage the + ///< INDI server and drivers. }; -#endif // LITHIUM_INDISERVER_HPP +#endif // LITHIUM_INDISERVER_HPP \ No newline at end of file diff --git a/modules/lithium.indiserver/src/async_system_command.cpp b/modules/lithium.indiserver/src/async_system_command.cpp new file mode 100644 index 00000000..ef2ce96a --- /dev/null +++ b/modules/lithium.indiserver/src/async_system_command.cpp @@ -0,0 +1,164 @@ +#include "async_system_command.hpp" +#include "atom/log/loguru.hpp" + +#ifdef _WIN32 +#include +#else +#include +#include +#include +#include +#include +#include +#endif + +AsyncSystemCommand::AsyncSystemCommand(const std::string& cmd) + : cmd_(cmd), pid_(0), running_(false) { + LOG_F(INFO, "AsyncSystemCommand created with command: {}", cmd); +} + +AsyncSystemCommand::~AsyncSystemCommand() { + LOG_F(INFO, "AsyncSystemCommand destructor called"); + terminate(); +} + +void AsyncSystemCommand::run() { + std::lock_guard lock(mutex_); + + if (running_) { + LOG_F(WARNING, "Command already running"); + return; + } + +#ifdef _WIN32 + STARTUPINFO si; + PROCESS_INFORMATION pi; + ZeroMemory(&si, sizeof(si)); + si.cb = sizeof(si); + ZeroMemory(&pi, sizeof(pi)); + + if (!CreateProcess(NULL, const_cast(cmd_.c_str()), NULL, NULL, FALSE, + 0, NULL, NULL, &si, &pi)) { + LOG_F(ERROR, "CreateProcess failed: {}", GetLastError()); + return; + } + + pid_ = pi.dwProcessId; + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); +#else + pid_ = fork(); + if (pid_ < 0) { + LOG_F(ERROR, "Fork failed: {}", strerror(errno)); + return; + } + + if (pid_ == 0) { // Child process + // Create new process group + setsid(); + + // Execute command + execl("/bin/sh", "sh", "-c", cmd_.c_str(), nullptr); + + // If execl fails + LOG_F(ERROR, "Exec failed: {}", strerror(errno)); + _exit(1); + } +#endif + + // Parent process + running_ = true; + LOG_F(INFO, "Started command with PID {}", pid_.load()); +} + +void AsyncSystemCommand::terminate() { + std::lock_guard lock(mutex_); + + if (!running_) { + LOG_F(INFO, "No running command to terminate"); + return; + } + + pid_t pid = pid_.load(); + if (pid <= 0) { + running_ = false; + LOG_F(WARNING, "Invalid PID: {}", pid); + return; + } + +#ifdef _WIN32 + HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, pid); + if (hProcess == NULL) { + LOG_F(ERROR, "OpenProcess failed: {}", GetLastError()); + return; + } + + if (!TerminateProcess(hProcess, 0)) { + LOG_F(ERROR, "TerminateProcess failed: {}", GetLastError()); + } else { + LOG_F(INFO, "Process {} terminated", pid); + } + + CloseHandle(hProcess); +#else + // Kill entire process group + if (kill(-pid, SIGTERM) == 0) { + int status; + waitpid(pid, &status, 0); + LOG_F(INFO, "Process {} terminated", pid); + } else { + LOG_F(ERROR, "Failed to terminate process {}: {}", pid, + strerror(errno)); + } +#endif + + pid_ = 0; + running_ = false; +} + +bool AsyncSystemCommand::isRunning() const { + std::lock_guard lock(mutex_); + + if (!running_) { + LOG_F(INFO, "No running command"); + return false; + } + + pid_t pid = pid_.load(); + if (pid <= 0) { + LOG_F(WARNING, "Invalid PID: {}", pid); + return false; + } + +#ifdef _WIN32 + HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid); + if (hProcess == NULL) { + LOG_F(ERROR, "OpenProcess failed: {}", GetLastError()); + return false; + } + + DWORD exitCode; + if (!GetExitCodeProcess(hProcess, &exitCode)) { + LOG_F(ERROR, "GetExitCodeProcess failed: {}", GetLastError()); + CloseHandle(hProcess); + return false; + } + + CloseHandle(hProcess); + if (exitCode == STILL_ACTIVE) { + LOG_F(INFO, "Process {} is still running", pid); + return true; + } +#else + // Check if process exists + if (kill(pid, 0) == 0) { + LOG_F(INFO, "Process {} is still running", pid); + return true; + } +#endif + + // Process no longer exists + const_cast(this)->running_ = false; + LOG_F(INFO, "Process {} is no longer running", pid); + return false; +} \ No newline at end of file diff --git a/modules/lithium.indiserver/src/collection.cpp b/modules/lithium.indiserver/src/collection.cpp index 91165400..d15a9bfb 100644 --- a/modules/lithium.indiserver/src/collection.cpp +++ b/modules/lithium.indiserver/src/collection.cpp @@ -5,64 +5,156 @@ #include +#include "atom/error/exception.hpp" #include "atom/log/loguru.hpp" #include "atom/type/json.hpp" namespace fs = std::filesystem; -auto INDIDriverCollection::parseDrivers(const std::string& path) -> bool { +// 收集XML文件 +auto INDIDriverCollection::collectXMLFiles(const std::string& path) -> bool { + LOG_F(INFO, "Collecting XML files from path: {}", path); if (!fs::exists(path) || !fs::is_directory(path)) { LOG_F(ERROR, "INDI driver path {} does not exist", path); return false; } + + files_.clear(); for (const auto& entry : fs::directory_iterator(path)) { const auto& fname = entry.path().filename().string(); if (fname.ends_with(".xml") && fname.find("_sk") == std::string::npos) { + LOG_F(INFO, "Found XML file: {}", fname); files_.push_back(entry.path().string()); } } + bool result = !files_.empty(); + LOG_F(INFO, "Collected {} XML files", files_.size()); + return result; +} + +// 解析单个设备 +auto INDIDriverCollection::parseDevice(tinyxml2::XMLElement* device, + const char* family) + -> std::shared_ptr { + if (!device || !family) { + LOG_F(ERROR, "Null device or family pointer"); + return nullptr; + } + try { + const char* label = device->Attribute("label"); + if (!label) { + LOG_F(ERROR, "Device missing required 'label' attribute"); + return nullptr; + } + + // 处理可选的skel属性 + const char* skel = device->Attribute("skel"); + std::string skelPath; + if (skel) { + skelPath = skel; + } + + auto* driverElement = device->FirstChildElement("driver"); + if (!driverElement) { + LOG_F(ERROR, "Device '{}' missing driver element", label); + return nullptr; + } + + const char* name = driverElement->Attribute("name"); + if (!name) { + LOG_F(ERROR, "Driver missing required 'name' attribute"); + return nullptr; + } + + const char* binary = driverElement->GetText(); + if (!binary) { + LOG_F(ERROR, "Driver missing binary path"); + return nullptr; + } + + // 获取版本,提供默认值 + const char* version = "0.0"; + auto* versionElement = device->FirstChildElement("version"); + if (versionElement && versionElement->GetText()) { + version = versionElement->GetText(); + } + + LOG_F(INFO, + "Parsed device: label={}, name={}, version={}, binary={}, " + "family={}, skelPath={}", + label, name, version, binary, family, skelPath); + + return std::make_shared(name, label, version, + binary, family, skelPath); + + } catch (const std::exception& e) { + LOG_F(ERROR, "Error parsing device: {}", e.what()); + return nullptr; + } +} + +auto INDIDriverCollection::parseDrivers(const std::string& path) -> bool { + LOG_F(INFO, "Parsing drivers from path: {}", path); + if (!collectXMLFiles(path)) { + LOG_F(INFO, "No XML files found in directory {}", path); + THROW_FILE_NOT_FOUND("No XML files found in directory: ", path); + } + + drivers_.clear(); for (const auto& fname : files_) { + LOG_F(INFO, "Loading XML file: {}", fname); tinyxml2::XMLDocument doc; if (doc.LoadFile(fname.c_str()) != tinyxml2::XML_SUCCESS) { - LOG_F(ERROR, "Error loading file {}", fname); + LOG_F(ERROR, "Error loading file {}: {}", fname, doc.ErrorStr()); continue; } auto* root = doc.FirstChildElement("root"); + if (!root) { + LOG_F(ERROR, "Missing root element in {}", fname); + continue; + } + for (auto* group = root->FirstChildElement("devGroup"); group != nullptr; group = group->NextSiblingElement("devGroup")) { - const auto& family = group->Attribute("group"); + const char* family = group->Attribute("group"); + if (!family) { + LOG_F(ERROR, "Device group missing 'group' attribute in {}", + fname); + continue; + } + for (auto* device = group->FirstChildElement("device"); device != nullptr; device = device->NextSiblingElement("device")) { - const auto& label = device->Attribute("label"); - const auto& skel = device->Attribute("skel"); - const auto& name = - device->FirstChildElement("driver")->Attribute("name"); - const auto& binary = - device->FirstChildElement("driver")->GetText(); - const auto& version = - device->FirstChildElement("version")->GetText(); - - drivers_.push_back(std::make_shared( - name, label, version, binary, family, skel)); + if (auto driver = parseDevice(device, family)) { + drivers_.push_back(driver); + } } } } + // 按label排序 std::sort(drivers_.begin(), drivers_.end(), [](const auto& a, const auto& b) { return a->label < b->label; }); - return true; + + LOG_F(INFO, "Parsed {} drivers", drivers_.size()); + return !drivers_.empty(); } auto INDIDriverCollection::parseCustomDrivers(const json& drivers) -> bool { + LOG_F(INFO, "Parsing custom drivers"); for (const auto& custom : drivers) { const auto& name = custom["name"].get(); const auto& label = custom["label"].get(); const auto& version = custom["version"].get(); const auto& binary = custom["exec"].get(); const auto& family = custom["family"].get(); + LOG_F(INFO, + "Parsed custom driver: name={}, label={}, version={}, binary={}, " + "family={}", + name, label, version, binary, family); drivers_.push_back(std::make_shared( name, label, version, binary, family, "", true)); } @@ -70,6 +162,7 @@ auto INDIDriverCollection::parseCustomDrivers(const json& drivers) -> bool { } void INDIDriverCollection::clearCustomDrivers() { + LOG_F(INFO, "Clearing custom drivers"); drivers_.erase( std::remove_if(drivers_.begin(), drivers_.end(), [](const auto& driver) { return driver->custom; }), @@ -78,19 +171,23 @@ void INDIDriverCollection::clearCustomDrivers() { auto INDIDriverCollection::getByLabel(const std::string& label) -> std::shared_ptr { + LOG_F(INFO, "Getting driver by label: {}", label); for (const auto& driver : drivers_) { if (driver->label == label) { + LOG_F(INFO, "Found driver with label: {}", label); return driver; } } - LOG_F(ERROR, "INDI device {} not found", label); + DLOG_F(INFO, "INDI device {} not found", label); return nullptr; } auto INDIDriverCollection::getByName(const std::string& name) -> std::shared_ptr { + LOG_F(INFO, "Getting driver by name: {}", name); for (const auto& driver : drivers_) { if (driver->name == name) { + LOG_F(INFO, "Found driver with name: {}", name); return driver; } } @@ -100,8 +197,10 @@ auto INDIDriverCollection::getByName(const std::string& name) auto INDIDriverCollection::getByBinary(const std::string& binary) -> std::shared_ptr { + LOG_F(INFO, "Getting driver by binary: {}", binary); for (const auto& driver : drivers_) { if (driver->binary == binary) { + LOG_F(INFO, "Found driver with binary: {}", binary); return driver; } } @@ -111,6 +210,7 @@ auto INDIDriverCollection::getByBinary(const std::string& binary) auto INDIDriverCollection::getFamilies() -> std::unordered_map> { + LOG_F(INFO, "Getting all families"); std::unordered_map> families; for (const auto& driver : drivers_) { families[driver->family].push_back(driver->label); @@ -121,4 +221,4 @@ auto INDIDriverCollection::getFamilies() LOG_F(ERROR, "No families found"); } return families; -} +} \ No newline at end of file diff --git a/modules/lithium.indiserver/src/database.cpp b/modules/lithium.indiserver/src/database.cpp new file mode 100644 index 00000000..05daeb41 --- /dev/null +++ b/modules/lithium.indiserver/src/database.cpp @@ -0,0 +1,225 @@ +#include "database.hpp" + +#include +#include + +#include "atom/log/loguru.hpp" + +Database::Database(const std::string& filename) : filepath_(filename) { + LOG_F(INFO, "Initializing Database with file: {}", filename); + auto dir = filepath_.parent_path(); + if (!std::filesystem::exists(dir)) { + std::filesystem::create_directories(dir); + LOG_F(INFO, "Created directory {}", dir.string()); + } + + if (std::filesystem::exists(filepath_)) { + LOG_F(INFO, "Loading existing database from file: {}", + filepath_.string()); + load(); + } else { + LOG_F(INFO, "Creating new database file: {}", filepath_.string()); + db_ = {{"version", CURRENT_VERSION}, + {"profiles", json::array()}, + {"custom_drivers", json::array()}, + {"remote_drivers", json::array()}}; + create(); + } + update(); +} + +void Database::load() { + try { + std::ifstream file(filepath_); + db_ = json::parse(file); + LOG_F(INFO, "Database loaded successfully from file: {}", + filepath_.string()); + } catch (const std::exception& e) { + LOG_F(ERROR, "Failed to load database: {}", e.what()); + throw; + } +} + +void Database::save() const { + try { + std::ofstream file(filepath_); + file << db_.dump(2); + LOG_F(INFO, "Database saved successfully to file: {}", + filepath_.string()); + } catch (const std::exception& e) { + LOG_F(ERROR, "Failed to save database: {}", e.what()); + throw; + } +} + +void Database::update() { + std::string version = db_["version"]; + if (version < CURRENT_VERSION) { + LOG_F(INFO, "Updating database from version {} to {}", version, + CURRENT_VERSION); + if (version < "0.1.6") { + LOG_F(INFO, "Updating profiles to add autoconnect field"); + for (auto& profile : db_["profiles"]) { + if (!profile.contains("autoconnect")) { + profile["autoconnect"] = false; + } + } + } + db_["version"] = CURRENT_VERSION; + save(); + } +} + +void Database::create() { + if (db_["profiles"].empty()) { + LOG_F(INFO, "Creating default simulator profile"); + json simulator = {{"name", "Simulators"}, + {"port", 7624}, + {"autostart", false}, + {"autoconnect", false}, + {"drivers", json::array({{"Telescope Simulator"}, + {"CCD Simulator"}, + {"Focuser Simulator"}})}}; + db_["profiles"].push_back(simulator); + save(); + } +} + +std::optional Database::getAutoProfile() const { + LOG_F(INFO, "Fetching auto-start profile"); + for (const auto& profile : db_["profiles"]) { + if (profile["autostart"].get()) { + LOG_F(INFO, "Auto-start profile found: {}", profile["name"]); + return profile["name"]; + } + } + LOG_F(INFO, "No auto-start profile found"); + return std::nullopt; +} + +std::vector Database::getProfiles() const { + LOG_F(INFO, "Fetching all profiles"); + std::vector profiles; + for (const auto& profile : db_["profiles"]) { + profiles.push_back(profile); + } + return profiles; +} + +std::vector Database::getCustomDrivers() const { + LOG_F(INFO, "Fetching all custom drivers"); + std::vector custom_drivers; + for (const auto& driver : db_["custom_drivers"]) { + custom_drivers.push_back(driver); + } + return custom_drivers; +} + +std::vector Database::getProfileDriversLabels( + const std::string& name) const { + LOG_F(INFO, "Fetching drivers labels for profile: {}", name); + std::vector labels; + for (const auto& profile : db_["profiles"]) { + if (profile["name"] == name) { + for (const auto& driver : profile["drivers"]) { + labels.push_back(driver); + } + break; + } + } + return labels; +} + +std::optional Database::getProfileRemoteDrivers( + const std::string& name) const { + LOG_F(INFO, "Fetching remote drivers for profile: {}", name); + for (const auto& remote : db_["remote_drivers"]) { + if (remote["profile"] == name) { + return remote["drivers"]; + } + } + return std::nullopt; +} + +void Database::deleteProfile(const std::string& name) { + LOG_F(INFO, "Deleting profile: {}", name); + auto& profiles = db_["profiles"]; + profiles.erase(std::remove_if(profiles.begin(), profiles.end(), + [&name](const json& profile) { + return profile["name"] == name; + }), + profiles.end()); + save(); +} + +int Database::addProfile(const std::string& name) { + LOG_F(INFO, "Adding new profile: {}", name); + json new_profile = {{"name", name}, + {"port", 7624}, + {"autostart", false}, + {"autoconnect", false}, + {"drivers", json::array()}}; + db_["profiles"].push_back(new_profile); + save(); + return db_["profiles"].size() - 1; +} + +std::optional Database::getProfile(const std::string& name) const { + LOG_F(INFO, "Fetching profile: {}", name); + for (const auto& profile : db_["profiles"]) { + if (profile["name"] == name) { + return profile; + } + } + return std::nullopt; +} + +void Database::updateProfile(const std::string& name, int port, bool autostart, + bool autoconnect) { + LOG_F(INFO, "Updating profile: {}", name); + for (auto& profile : db_["profiles"]) { + if (profile["name"] == name) { + profile["port"] = port; + profile["autostart"] = autostart; + profile["autoconnect"] = autoconnect; + if (autostart) { + LOG_F(INFO, + "Setting autostart for profile: {} and disabling for " + "others", + name); + for (auto& other_profile : db_["profiles"]) { + if (other_profile["name"] != name) { + other_profile["autostart"] = false; + } + } + } + save(); + return; + } + } +} + +void Database::saveProfileDrivers(const std::string& name, + const std::vector& drivers) { + LOG_F(INFO, "Saving drivers for profile: {}", name); + for (auto& profile : db_["profiles"]) { + if (profile["name"] == name) { + profile["drivers"] = drivers; + save(); + return; + } + } + json new_profile = {{"name", name}, + {"port", 7624}, + {"autostart", false}, + {"autoconnect", false}, + {"drivers", drivers}}; + db_["profiles"].push_back(new_profile); + save(); +} + +void Database::saveProfileCustomDriver(const json& driver) { + LOG_F(INFO, "Saving custom driver: {}", driver.dump()); + db_["custom_drivers"].push_back(driver); + save(); +} \ No newline at end of file diff --git a/modules/lithium.indiserver/src/driverlist.cpp b/modules/lithium.indiserver/src/driverlist.cpp index 4dc26734..b1b47606 100644 --- a/modules/lithium.indiserver/src/driverlist.cpp +++ b/modules/lithium.indiserver/src/driverlist.cpp @@ -61,20 +61,40 @@ auto parseDevicesFromPath(const std::string& path, } XMLElement* root = doc.RootElement(); + if (!root) { + LOG_F(ERROR, "No root element in XML file: {}", + entry.path().string()); + continue; + } + for (XMLElement* devGroupElem = root->FirstChildElement("devGroup"); devGroupElem != nullptr; devGroupElem = devGroupElem->NextSiblingElement("devGroup")) { DevGroup devGroup; - devGroup.group = devGroupElem->Attribute("group"); - LOG_F(INFO, "Found devGroup: {}", devGroup.group); + const char* groupAttr = devGroupElem->Attribute("group"); + if (groupAttr) { + devGroup.group = groupAttr; + LOG_F(INFO, "Found devGroup: {}", devGroup.group); + } else { + LOG_F(WARNING, + "devGroup element missing 'group' attribute"); + continue; + } for (XMLElement* deviceElem = devGroupElem->FirstChildElement("device"); deviceElem != nullptr; deviceElem = deviceElem->NextSiblingElement("device")) { Device device; - device.label = deviceElem->Attribute("label"); - LOG_F(INFO, "Found device: {}", device.label); + const char* labelAttr = deviceElem->Attribute("label"); + if (labelAttr) { + device.label = labelAttr; + LOG_F(INFO, "Found device: {}", device.label); + } else { + LOG_F(WARNING, + "device element missing 'label' attribute"); + continue; + } if (deviceElem->FindAttribute("manufacturer") != nullptr) { device.manufacturer = @@ -88,12 +108,24 @@ auto parseDevicesFromPath(const std::string& path, driverElem != nullptr; driverElem = driverElem->NextSiblingElement()) { if (std::string(driverElem->Name()) == "driver") { - device.driverName = driverElem->GetText(); - LOG_F(INFO, "Device driver: {}", device.driverName); + const char* driverText = driverElem->GetText(); + if (driverText) { + device.driverName = driverText; + LOG_F(INFO, "Device driver: {}", + device.driverName); + } else { + LOG_F(WARNING, "driver element is empty"); + } } else if (std::string(driverElem->Name()) == "version") { - device.version = driverElem->GetText(); - LOG_F(INFO, "Device version: {}", device.version); + const char* versionText = driverElem->GetText(); + if (versionText) { + device.version = versionText; + LOG_F(INFO, "Device version: {}", + device.version); + } else { + LOG_F(WARNING, "version element is empty"); + } } } devGroup.devices.push_back(device); diff --git a/modules/lithium.indiserver/src/iconnector.cpp b/modules/lithium.indiserver/src/iconnector.cpp index 45a529b4..562cfa90 100644 --- a/modules/lithium.indiserver/src/iconnector.cpp +++ b/modules/lithium.indiserver/src/iconnector.cpp @@ -24,98 +24,183 @@ Description: INDI Device Manager #include "atom/system/process.hpp" #include "atom/system/software.hpp" +namespace { +constexpr int MAX_BUFFER_SIZE = 4096; +constexpr int MAX_RETRY_COUNT = 3; + +std::mutex server_mutex; +std::mutex driver_mutex; +} // namespace + INDIConnector::INDIConnector(const std::string &hst, int prt, const std::string &cfg, const std::string &dta, const std::string &fif) - : host_(hst) { - host_ = hst; - port_ = prt; - config_path_ = cfg; - data_path_ = dta; - fifo_path_ = fif; + : host_(hst), + port_(prt), + config_path_(cfg), + data_path_(dta), + fifo_path_(fif) { + LOG_F(INFO, "Initializing INDI Connector - Host: {}, Port: {}", host_, + port_); + + if (port_ <= 0 || port_ > 65535) { + THROW_RUNTIME_ERROR("Invalid port number"); + } + + validatePaths(); +} + +void INDIConnector::validatePaths() { + if (!atom::io::isFolderExists(config_path_)) { + LOG_F(WARNING, "Config directory does not exist: {}", config_path_); + if (!atom::io::createDirectory(config_path_)) { + THROW_RUNTIME_ERROR("Failed to create config directory"); + } + } + + if (!atom::io::isFolderExists(data_path_)) { + LOG_F(WARNING, "Data directory does not exist: {}", data_path_); + if (!atom::io::createDirectory(data_path_)) { + THROW_RUNTIME_ERROR("Failed to create data directory"); + } + } } auto INDIConnector::startServer() -> bool { - // If there is an INDI server running, just kill it - // Surely, this is not the best way to do this, but it works. - // If there is no server running, start it. + std::lock_guard lock(server_mutex); + + LOG_F(INFO, "Starting INDI server on port {}", port_); + if (isRunning()) { - stopServer(); + LOG_F(INFO, "INDI server already running - stopping first"); + if (!stopServer()) { + LOG_F(ERROR, "Failed to stop existing server"); + return false; + } } - DLOG_F(INFO, "Deleting fifo pipe at: {}", fifo_path_); - if (!atom::io::removeFile(fifo_path_)) { - LOG_F(ERROR, "Failed to delete fifo pipe at: {}", fifo_path_); - return false; + + // Clean up old FIFO + if (atom::io::isFileExists(fifo_path_)) { + DLOG_F(INFO, "Removing existing FIFO pipe: {}", fifo_path_); + if (!atom::io::removeFile(fifo_path_)) { + LOG_F(ERROR, "Failed to remove existing FIFO pipe"); + return false; + } } - std::string cmd = "indiserver -p " + std::to_string(port_) + - " -m 100 -v -f " + fifo_path_ + - " > /tmp/indiserver.log 2>&1"; + + // Create server command with enhanced options + std::stringstream cmd; + cmd << "indiserver -p " << port_ << " -m 100" // Max clients + << " -v" // Verbose output + << " -f " << fifo_path_ << " > /tmp/indiserver.log 2>&1"; + try { - if (atom::system::executeCommand(cmd, false) != "") { - LOG_F(ERROR, "Failed to execute command: {}", cmd); - return false; + for (int retry = 0; retry < MAX_RETRY_COUNT; retry++) { + if (atom::system::executeCommand(cmd.str(), false).empty()) { + // Wait briefly to ensure server is up + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + if (isRunning()) { + LOG_F(INFO, "INDI server started successfully"); + return true; + } + } + LOG_F(WARNING, "Server start attempt {} failed, retrying...", + retry + 1); } } catch (const atom::error::RuntimeError &e) { - LOG_F(ERROR, "Failed to execute command: {} with {}", cmd, e.what()); + LOG_F(ERROR, "Failed to start INDI server: {}", e.what()); return false; } - // Just start the server without driver - DLOG_F(INFO, "Started INDI server on port {}", port_); - return true; + + LOG_F(ERROR, "Failed to start INDI server after {} attempts", + MAX_RETRY_COUNT); + return false; } auto INDIConnector::stopServer() -> bool { + std::lock_guard lock(server_mutex); + if (!isRunning()) { - DLOG_F(WARNING, "INDI server is not running"); + DLOG_F(INFO, "INDI server is not running"); return true; } - std::string cmd = "killall indiserver >/dev/null 2>&1"; - DLOG_F(INFO, "Terminating INDI server"); + + LOG_F(INFO, "Stopping INDI server"); + + const std::string cmd = "killall indiserver >/dev/null 2>&1"; + try { - if (atom::system::executeCommand(cmd, false) != "") { - LOG_F(ERROR, "Failed to execute command: {}", cmd); - return false; + if (atom::system::executeCommand(cmd, false).empty()) { + // Wait for server to fully stop + for (int i = 0; i < 10; i++) { + if (!isRunning()) { + LOG_F(INFO, "INDI server stopped successfully"); + return true; + } + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + } } } catch (const std::exception &e) { - LOG_F(ERROR, "Failed to execute command: {} with {}", cmd, e.what()); - return false; + LOG_F(ERROR, "Failed to stop INDI server: {}", e.what()); } - DLOG_F(INFO, "INDI server terminated successfully"); - return true; + + LOG_F(ERROR, "Failed to stop INDI server"); + return false; } auto INDIConnector::isRunning() -> bool { - // A little bit hacky, but it works. We need a dynamic way to check if the - // server is running Not stupid like this :P - std::string processName = "indiserver"; - return atom::system::isProcessRunning(processName); + try { + return atom::system::isProcessRunning("indiserver"); + } catch (const std::exception &e) { + LOG_F(ERROR, "Error checking server status: {}", e.what()); + return false; + } } auto INDIConnector::isInstalled() -> bool { - return atom::system::checkSoftwareInstalled("hydrogenserver"); + try { + return atom::system::checkSoftwareInstalled("hydrogenserver"); + } catch (const std::exception &e) { + LOG_F(ERROR, "Error checking installation: {}", e.what()); + return false; + } } auto INDIConnector::startDriver( const std::shared_ptr &driver) -> bool { - std::string cmd = "start " + driver->label; - if (driver->skeleton != "") { - cmd += " -s \"" + driver->skeleton + "\""; + std::lock_guard lock(driver_mutex); + + if (!driver) { + LOG_F(ERROR, "Invalid driver pointer"); + return false; } - cmd = std::regex_replace(cmd, std::regex("\""), "\\\""); - std::string fullCmd = "echo \"" + cmd + "\" > " + fifo_path_; - DLOG_F(INFO, "Cmd: {}", fullCmd); + + LOG_F(INFO, "Starting INDI driver: {}", driver->label); + + std::stringstream cmd; + cmd << "start " << driver->label; + + if (!driver->skeleton.empty()) { + cmd << " -s \"" << driver->skeleton << "\""; + } + + std::string escapedCmd = + std::regex_replace(cmd.str(), std::regex("\""), "\\\""); + std::string fullCmd = "echo \"" + escapedCmd + "\" > " + fifo_path_; + + DLOG_F(INFO, "Executing command: {}", fullCmd); + try { - if (atom::system::executeCommand(fullCmd, false) != "") { - LOG_F(ERROR, "Failed to execute command: {}", fullCmd); - return false; + if (atom::system::executeCommand(fullCmd, false).empty()) { + running_drivers_.emplace(driver->label, driver); + LOG_F(INFO, "Driver {} started successfully", driver->label); + return true; } } catch (const atom::error::RuntimeError &e) { - LOG_F(ERROR, "Failed to execute command: {} with {}", fullCmd, - e.what()); - return false; + LOG_F(ERROR, "Failed to start driver {}: {}", driver->label, e.what()); } - running_drivers_.emplace(driver->label, driver); - return true; + + return false; } auto INDIConnector::stopDriver( @@ -215,17 +300,8 @@ auto INDIConnector::getDevices() std::vector> devices; #endif std::string cmd = "indi_getprop *.CONNECTION.CONNECT"; - std::array buffer{}; - std::string result; - std::unique_ptr pipe(popen(cmd.c_str(), "r"), - pclose); - if (!pipe) { - LOG_F(ERROR, "Failed to execute command: {}", cmd); - THROW_RUNTIME_ERROR("popen() failed!"); - } - while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) { - result += buffer.data(); - } + + auto result = atom::system::executeCommand(cmd, false); std::vector lines = {"", ""}; for (char token : result) { if (token == '\n') { diff --git a/modules/lithium.indiserver/src/indihub_agent.cpp b/modules/lithium.indiserver/src/indihub_agent.cpp new file mode 100644 index 00000000..a8ccf715 --- /dev/null +++ b/modules/lithium.indiserver/src/indihub_agent.cpp @@ -0,0 +1,93 @@ +// indihub_agent.cpp +#include "indihub_agent.hpp" +#include "async_system_command.hpp" + +#include "atom/io/io.hpp" +#include "atom/log/loguru.hpp" +#include "atom/system/env.hpp" + +#include + +namespace { +constexpr const char* INDIHUB_AGENT_OFF = "off"; +constexpr const char* INDIHUB_AGENT_DEFAULT_MODE = "solo"; + +std::string getConfigPath() { + std::string configPath; + try { + atom::utils::Env env; + configPath = env.getEnv("HOME"); + configPath += "/.indihub"; + } catch (const std::exception&) { + configPath = "/tmp/indihub"; + } + + if (!atom::io::isFolderExists(configPath)) { + atom::io::createDirectory(configPath); + } + + return configPath + "/indihub.json"; +} + +const std::string INDIHUB_AGENT_CONFIG = getConfigPath(); +} // namespace + +IndiHubAgent::IndiHubAgent(const std::string& web_addr, + const std::string& hostname, int port) + : web_addr_(web_addr), + hostname_(hostname), + port_(port), + mode_(INDIHUB_AGENT_OFF), + async_cmd_(nullptr), + command_thread_(nullptr) {} + +IndiHubAgent::~IndiHubAgent() { stop(); } + +void IndiHubAgent::run(const std::string& profile, const std::string& mode, + const std::string& conf) { + std::stringstream cmd; + cmd << "indihub-agent" + << " -indi-server-manager=" << web_addr_ << " -indi-profile=" << profile + << " -mode=" << mode << " -conf=" << conf + << " -api-origins=" << hostname_ << ":" << port_ << "," << hostname_ + << ".local:" << port_ << " > /tmp/indihub-agent.log 2>&1 &"; + + LOG_F(INFO, "Running command: {}", cmd.str()); + + async_cmd_ = std::make_unique(cmd.str()); + command_thread_ = + std::make_unique([this]() { async_cmd_->run(); }); +} + +void IndiHubAgent::start(const std::string& profile, const std::string& mode, + const std::string& conf) { + if (isRunning()) { + stop(); + } + run(profile, mode, conf); + mode_ = mode; +} + +void IndiHubAgent::stop() { + if (!async_cmd_) { + LOG_F(INFO, "indihub_agent: not running"); + return; + } + + try { + async_cmd_->terminate(); + if (command_thread_ && command_thread_->joinable()) { + command_thread_->join(); + } + LOG_F(INFO, "indihub_agent: terminated successfully"); + } catch (const std::exception& e) { + LOG_F(WARNING, "indihub_agent: termination failed with error {}", + e.what()); + } +} + +bool IndiHubAgent::isRunning() const { + return async_cmd_ && async_cmd_->isRunning(); +} + +std::string IndiHubAgent::getMode() const { return mode_; } \ No newline at end of file diff --git a/modules/lithium.indiserver/src/indiserver.cpp b/modules/lithium.indiserver/src/indiserver.cpp index 0c33b3eb..bd40094e 100644 --- a/modules/lithium.indiserver/src/indiserver.cpp +++ b/modules/lithium.indiserver/src/indiserver.cpp @@ -14,7 +14,7 @@ auto INDIManager::stopServer() -> bool { return connector->stopServer(); } auto INDIManager::isRunning() -> bool { return connector->isRunning(); } auto INDIManager::isInstalled() -> bool { - return atom::system::checkSoftwareInstalled("hydrogenserver"); + return atom::system::checkSoftwareInstalled("indiserver"); } auto INDIManager::startDriver( diff --git a/modules/lithium.indiserver/tests/test_collection.cpp b/modules/lithium.indiserver/tests/test_collection.cpp new file mode 100644 index 00000000..6413d5f1 --- /dev/null +++ b/modules/lithium.indiserver/tests/test_collection.cpp @@ -0,0 +1,365 @@ +#include +#include +#include + +#include "collection.hpp" + +#include "tinyxml2.h" + +#include "atom/error/exception.hpp" + +namespace fs = std::filesystem; + +class INDIDriverCollectionTest : public ::testing::Test { +protected: + void SetUp() override { + testDir = fs::temp_directory_path() / "indi_test_drivers"; + fs::create_directories(testDir); + collection = std::make_unique(); + } + + void TearDown() override { fs::remove_all(testDir); } + + void createXMLFile(const std::string& filename, + const std::string& content) { + std::ofstream file(testDir / filename); + file << content; + } + + fs::path testDir; + std::unique_ptr collection; +}; + +TEST_F(INDIDriverCollectionTest, EmptyDirectory) { + EXPECT_THROW(collection->parseDrivers(testDir.string()), + atom::error::FileNotFound); + auto families = collection->getFamilies(); + EXPECT_TRUE(families.empty()); +} + +TEST_F(INDIDriverCollectionTest, InvalidDirectory) { + EXPECT_THROW(collection->parseDrivers("/nonexistent/path"), + atom::error::FileNotFound); +} + +TEST_F(INDIDriverCollectionTest, ValidXMLParsing) { + const char* validXML = R"( + + + + + indi_test_telescope + 1.0 + + + + )"; + + createXMLFile("telescope.xml", validXML); + EXPECT_TRUE(collection->parseDrivers(testDir.string())); + + auto device = collection->getByLabel("Test Scope"); + ASSERT_NE(device, nullptr); + EXPECT_EQ(device->name, "test_scope"); + EXPECT_EQ(device->binary, "indi_test_telescope"); + EXPECT_EQ(device->version, "1.0"); + EXPECT_EQ(device->family, "Telescopes"); +} + +TEST_F(INDIDriverCollectionTest, SkFileExclusion) { + const char* skXML = R"( + + + + + indi_ignored + 1.0 + + + + )"; + + createXMLFile("telescope_sk.xml", skXML); + EXPECT_TRUE(collection->parseDrivers(testDir.string())); + EXPECT_EQ(collection->getByLabel("Ignored Device"), nullptr); +} + +TEST_F(INDIDriverCollectionTest, MultipleDeviceGroups) { + const char* multiGroupXML = R"( + + + + + indi_scope1 + 1.0 + + + + + indi_camera1 + 2.0 + + + + )"; + + createXMLFile("devices.xml", multiGroupXML); + EXPECT_TRUE(collection->parseDrivers(testDir.string())); + + auto families = collection->getFamilies(); + EXPECT_EQ(families.size(), 2); + EXPECT_TRUE(families.contains("Telescopes")); + EXPECT_TRUE(families.contains("CCDs")); +} + +TEST_F(INDIDriverCollectionTest, MalformedXML) { + const char* malformedXML = R"( + + + + + Incomplete XML + + )"; + + createXMLFile("malformed.xml", malformedXML); + EXPECT_TRUE(collection->parseDrivers(testDir.string())); + EXPECT_EQ(collection->getByLabel("Bad Device"), nullptr); +} + +TEST_F(INDIDriverCollectionTest, SortingFunctionality) { + const char* multiDeviceXML = R"( + + + + + indi_scope_z + 1.0 + + + indi_scope_a + 1.0 + + + + )"; + + createXMLFile("sorted.xml", multiDeviceXML); + EXPECT_TRUE(collection->parseDrivers(testDir.string())); + + auto families = collection->getFamilies(); + auto& telescopes = families["Telescopes"]; + ASSERT_EQ(telescopes.size(), 2); + EXPECT_EQ(telescopes[0], "A Scope"); + EXPECT_EQ(telescopes[1], "Z Scope"); +} + +TEST_F(INDIDriverCollectionTest, MissingAttributes) { + const char* missingAttrXML = R"( + + + + + indi_test + 1.0 + + + + )"; + + createXMLFile("missing_attr.xml", missingAttrXML); + EXPECT_TRUE(collection->parseDrivers(testDir.string())); + + auto families = collection->getFamilies(); + EXPECT_TRUE(families.empty()); +} + +TEST_F(INDIDriverCollectionTest, MultipleFiles) { + const char* file1XML = R"( + + + + + indi_scope1 + 1.0 + + + + )"; + + const char* file2XML = R"( + + + + + indi_camera1 + 1.0 + + + + )"; + + createXMLFile("file1.xml", file1XML); + createXMLFile("file2.xml", file2XML); + + EXPECT_TRUE(collection->parseDrivers(testDir.string())); + + EXPECT_NE(collection->getByLabel("Scope 1"), nullptr); + EXPECT_NE(collection->getByLabel("Camera 1"), nullptr); +} + +TEST_F(INDIDriverCollectionTest, ParseDeviceValidComplete) { + const char* validXML = R"( + + + + + test_binary + 2.0 + + + + )"; + + tinyxml2::XMLDocument doc; + ASSERT_EQ(doc.Parse(validXML), tinyxml2::XML_SUCCESS); + + auto* device = doc.FirstChildElement("root") + ->FirstChildElement("devGroup") + ->FirstChildElement("device"); + + auto result = collection->parseDevice(device, "Telescopes"); + ASSERT_NE(result, nullptr); + EXPECT_EQ(result->label, "Test Device"); + EXPECT_EQ(result->name, "test_driver"); + EXPECT_EQ(result->binary, "test_binary"); + EXPECT_EQ(result->version, "2.0"); + EXPECT_EQ(result->family, "Telescopes"); + EXPECT_EQ(result->skeleton, "test.xml"); +} + +TEST_F(INDIDriverCollectionTest, ParseDeviceMissingLabel) { + const char* missingLabelXML = R"( + + test_binary + 1.0 + + )"; + + tinyxml2::XMLDocument doc; + ASSERT_EQ(doc.Parse(missingLabelXML), tinyxml2::XML_SUCCESS); + + auto result = + collection->parseDevice(doc.FirstChildElement("device"), "Telescopes"); + EXPECT_EQ(result, nullptr); +} + +TEST_F(INDIDriverCollectionTest, ParseDeviceMissingDriver) { + const char* missingDriverXML = R"( + + 1.0 + + )"; + + tinyxml2::XMLDocument doc; + ASSERT_EQ(doc.Parse(missingDriverXML), tinyxml2::XML_SUCCESS); + + auto result = + collection->parseDevice(doc.FirstChildElement("device"), "Telescopes"); + EXPECT_EQ(result, nullptr); +} + +TEST_F(INDIDriverCollectionTest, ParseDeviceMissingDriverName) { + const char* missingNameXML = R"( + + test_binary + 1.0 + + )"; + + tinyxml2::XMLDocument doc; + ASSERT_EQ(doc.Parse(missingNameXML), tinyxml2::XML_SUCCESS); + + auto result = + collection->parseDevice(doc.FirstChildElement("device"), "Telescopes"); + EXPECT_EQ(result, nullptr); +} + +TEST_F(INDIDriverCollectionTest, ParseDeviceMissingBinary) { + const char* missingBinaryXML = R"( + + + 1.0 + + )"; + + tinyxml2::XMLDocument doc; + ASSERT_EQ(doc.Parse(missingBinaryXML), tinyxml2::XML_SUCCESS); + + auto result = + collection->parseDevice(doc.FirstChildElement("device"), "Telescopes"); + EXPECT_EQ(result, nullptr); +} + +TEST_F(INDIDriverCollectionTest, ParseDeviceDefaultVersion) { + const char* noVersionXML = R"( + + test_binary + + )"; + + tinyxml2::XMLDocument doc; + ASSERT_EQ(doc.Parse(noVersionXML), tinyxml2::XML_SUCCESS); + + auto result = + collection->parseDevice(doc.FirstChildElement("device"), "Telescopes"); + ASSERT_NE(result, nullptr); + EXPECT_EQ(result->version, "0.0"); +} + +TEST_F(INDIDriverCollectionTest, ParseDeviceEmptyVersion) { + const char* emptyVersionXML = R"( + + test_binary + + + )"; + + tinyxml2::XMLDocument doc; + ASSERT_EQ(doc.Parse(emptyVersionXML), tinyxml2::XML_SUCCESS); + + auto result = + collection->parseDevice(doc.FirstChildElement("device"), "Telescopes"); + ASSERT_NE(result, nullptr); + EXPECT_EQ(result->version, "0.0"); +} + +TEST_F(INDIDriverCollectionTest, ParseDeviceNoSkeleton) { + const char* noSkelXML = R"( + + test_binary + 1.0 + + )"; + + tinyxml2::XMLDocument doc; + ASSERT_EQ(doc.Parse(noSkelXML), tinyxml2::XML_SUCCESS); + + auto result = + collection->parseDevice(doc.FirstChildElement("device"), "Telescopes"); + ASSERT_NE(result, nullptr); + EXPECT_TRUE(result->skeleton.empty()); +} + +TEST_F(INDIDriverCollectionTest, ParseDeviceNullArguments) { + auto result = collection->parseDevice(nullptr, "Telescopes"); + EXPECT_EQ(result, nullptr); + + const char* validXML = + "binary"; + tinyxml2::XMLDocument doc; + ASSERT_EQ(doc.Parse(validXML), tinyxml2::XML_SUCCESS); + + result = collection->parseDevice(doc.FirstChildElement("device"), nullptr); + EXPECT_EQ(result, nullptr); +} \ No newline at end of file diff --git a/modules/lithium.indiserver/tests/test_connector.cpp b/modules/lithium.indiserver/tests/test_connector.cpp new file mode 100644 index 00000000..46144bce --- /dev/null +++ b/modules/lithium.indiserver/tests/test_connector.cpp @@ -0,0 +1,144 @@ +#include +#include +#include "iconnector.hpp" + +#include +#include + +class INDIConnectorTest : public ::testing::Test { +protected: + void SetUp() override { + testConfigPath = + std::filesystem::temp_directory_path() / "indi_test_config"; + testDataPath = + std::filesystem::temp_directory_path() / "indi_test_data"; + testFifoPath = + std::filesystem::temp_directory_path() / "indi_test_fifo"; + + std::filesystem::create_directories(testConfigPath); + std::filesystem::create_directories(testDataPath); + + connector = std::make_unique( + "localhost", 7624, testConfigPath.string(), testDataPath.string(), + testFifoPath.string()); + } + + void TearDown() override { + if (connector && connector->isRunning()) { + connector->stopServer(); + } + std::filesystem::remove_all(testConfigPath); + std::filesystem::remove_all(testDataPath); + if (std::filesystem::exists(testFifoPath)) { + std::filesystem::remove(testFifoPath); + } + } + + std::unique_ptr connector; + std::filesystem::path testConfigPath; + std::filesystem::path testDataPath; + std::filesystem::path testFifoPath; +}; + +TEST_F(INDIConnectorTest, StartServerSuccess) { + ASSERT_FALSE(connector->isRunning()); + ASSERT_TRUE(connector->startServer()); + ASSERT_TRUE(connector->isRunning()); + + // Verify FIFO file was created + EXPECT_TRUE(std::filesystem::exists(testFifoPath)); + + // Cleanup + ASSERT_TRUE(connector->stopServer()); +} + +TEST_F(INDIConnectorTest, StartServerInvalidPort) { + auto invalidConnector = std::make_unique( + "localhost", + 70000, // Invalid port number + testConfigPath.string(), testDataPath.string(), testFifoPath.string()); + + ASSERT_FALSE(invalidConnector->startServer()); + ASSERT_FALSE(invalidConnector->isRunning()); +} + +TEST_F(INDIConnectorTest, StartServerAlreadyRunning) { + // Start server first time + ASSERT_TRUE(connector->startServer()); + ASSERT_TRUE(connector->isRunning()); + + // Try starting again + ASSERT_TRUE(connector->startServer()); + ASSERT_TRUE(connector->isRunning()); + + // Cleanup + ASSERT_TRUE(connector->stopServer()); +} + +TEST_F(INDIConnectorTest, StartServerFifoCleanup) { + // Create a dummy FIFO file + std::ofstream fifo(testFifoPath); + fifo << "test data" << std::endl; + fifo.close(); + + ASSERT_TRUE(std::filesystem::exists(testFifoPath)); + + // Starting server should clean up existing FIFO + ASSERT_TRUE(connector->startServer()); + + // Verify FIFO was recreated + ASSERT_TRUE(std::filesystem::exists(testFifoPath)); + + // Cleanup + ASSERT_TRUE(connector->stopServer()); +} + +TEST_F(INDIConnectorTest, StartServerRetryMechanism) { + // Create a temporary file that blocks the port + auto tempServer = std::make_unique( + "localhost", 7624, testConfigPath.string(), testDataPath.string(), + testFifoPath.string()); + + ASSERT_TRUE(tempServer->startServer()); + + // Try starting another server on same port + auto conflictingConnector = std::make_unique( + "localhost", 7624, testConfigPath.string(), testDataPath.string(), + (testFifoPath.string() + "_alt")); + + // Should fail after MAX_RETRY_COUNT attempts + ASSERT_FALSE(conflictingConnector->startServer()); + + // Cleanup + ASSERT_TRUE(tempServer->stopServer()); +} + +TEST_F(INDIConnectorTest, StartServerMultipleInstances) { + // Start first server + ASSERT_TRUE(connector->startServer()); + + // Try starting second server on different port + auto secondConnector = std::make_unique( + "localhost", 7625, testConfigPath.string(), testDataPath.string(), + (testFifoPath.string() + "_second")); + + ASSERT_TRUE(secondConnector->startServer()); + + // Verify both are running + ASSERT_TRUE(connector->isRunning()); + ASSERT_TRUE(secondConnector->isRunning()); + + // Cleanup + ASSERT_TRUE(connector->stopServer()); + ASSERT_TRUE(secondConnector->stopServer()); +} + +TEST_F(INDIConnectorTest, StartServerLogFileCreation) { + ASSERT_TRUE(connector->startServer()); + + // Verify log file was created + EXPECT_TRUE(std::filesystem::exists("/tmp/indiserver.log")); + + // Cleanup + ASSERT_TRUE(connector->stopServer()); +} \ No newline at end of file diff --git a/modules/lithium.indiserver/tests/test_database.cpp b/modules/lithium.indiserver/tests/test_database.cpp new file mode 100644 index 00000000..85eb05b7 --- /dev/null +++ b/modules/lithium.indiserver/tests/test_database.cpp @@ -0,0 +1,78 @@ +#include +#include +#include "database.hpp" + +class DatabaseTest : public ::testing::Test { +protected: + void SetUp() override { + // Create a temporary database file + db_filename = "test_database.json"; + std::ofstream(db_filename) << R"({ + "version": "0.1.6", + "profiles": [ + {"name": "Profile1", "port": 7624, "autostart": false, "autoconnect": false, "drivers": []}, + {"name": "Profile2", "port": 7625, "autostart": true, "autoconnect": false, "drivers": []} + ], + "custom_drivers": [], + "remote_drivers": [] + })"; + db = std::make_unique(db_filename); + } + + void TearDown() override { + // Remove the temporary database file + std::filesystem::remove(db_filename); + } + + std::string db_filename; + std::unique_ptr db; +}; + +TEST_F(DatabaseTest, UpdateExistingProfile) { + db->updateProfile("Profile1", 7626, true, true); + + auto profile = db->getProfile("Profile1"); + ASSERT_TRUE(profile.has_value()); + EXPECT_EQ(profile->at("port"), 7626); + EXPECT_TRUE(profile->at("autostart")); + EXPECT_TRUE(profile->at("autoconnect")); + + auto other_profile = db->getProfile("Profile2"); + ASSERT_TRUE(other_profile.has_value()); + EXPECT_FALSE(other_profile->at("autostart")); +} + +TEST_F(DatabaseTest, UpdateNonExistingProfile) { + db->updateProfile("NonExistingProfile", 7626, true, true); + + auto profile = db->getProfile("NonExistingProfile"); + EXPECT_FALSE(profile.has_value()); + + auto existing_profile = db->getProfile("Profile1"); + ASSERT_TRUE(existing_profile.has_value()); + EXPECT_EQ(existing_profile->at("port"), 7624); + EXPECT_FALSE(existing_profile->at("autostart")); + EXPECT_FALSE(existing_profile->at("autoconnect")); +} + +TEST_F(DatabaseTest, UpdateProfileAutostartAutoconnectCombinations) { + db->updateProfile("Profile1", 7626, false, true); + + auto profile = db->getProfile("Profile1"); + ASSERT_TRUE(profile.has_value()); + EXPECT_EQ(profile->at("port"), 7626); + EXPECT_FALSE(profile->at("autostart")); + EXPECT_TRUE(profile->at("autoconnect")); + + db->updateProfile("Profile1", 7627, true, false); + + profile = db->getProfile("Profile1"); + ASSERT_TRUE(profile.has_value()); + EXPECT_EQ(profile->at("port"), 7627); + EXPECT_TRUE(profile->at("autostart")); + EXPECT_FALSE(profile->at("autoconnect")); + + auto other_profile = db->getProfile("Profile2"); + ASSERT_TRUE(other_profile.has_value()); + EXPECT_FALSE(other_profile->at("autostart")); +} \ No newline at end of file diff --git a/modules/lithium.indiserver/tests/test_driverlist.cpp b/modules/lithium.indiserver/tests/test_driverlist.cpp new file mode 100644 index 00000000..cffd69ae --- /dev/null +++ b/modules/lithium.indiserver/tests/test_driverlist.cpp @@ -0,0 +1,159 @@ +#include +#include +#include +#include "driverlist.hpp" + +class DriverListTest : public ::testing::Test { +protected: + void SetUp() override { + testDir = std::filesystem::temp_directory_path() / "driver_test"; + std::filesystem::create_directory(testDir); + } + + void TearDown() override { std::filesystem::remove_all(testDir); } + + void createTestXMLFile(const std::string& filename, + const std::string& content) { + std::ofstream file(testDir / filename); + file << content; + } + + std::filesystem::path testDir; +}; + +TEST_F(DriverListTest, EmptyDirectory) { + std::vector devices; + auto result = parseDevicesFromPath(testDir.string(), devices); + + EXPECT_TRUE(result.empty()); + EXPECT_TRUE(devices.empty()); +} + +TEST_F(DriverListTest, ValidDeviceXML) { + const char* validXML = R"( + + + + + indi_test_telescope + 1.0 + + + + )"; + + createTestXMLFile("telescope.xml", validXML); + + std::vector devices; + auto groups = parseDevicesFromPath(testDir.string(), devices); + + ASSERT_EQ(groups.size(), 1); + ASSERT_EQ(groups[0].group, "Telescopes"); + ASSERT_EQ(groups[0].devices.size(), 1); + ASSERT_EQ(devices.size(), 1); + + const auto& device = groups[0].devices[0]; + EXPECT_EQ(device.label, "Test Scope"); + EXPECT_EQ(device.manufacturer, "Test Corp"); + EXPECT_EQ(device.driverName, "indi_test_telescope"); + EXPECT_EQ(device.version, "1.0"); +} + +TEST_F(DriverListTest, IgnoreSkXMLFile) { + const char* skXML = R"( + + + + + indi_ignored_driver + + + + )"; + + createTestXMLFile("devices_sk.xml", skXML); + + std::vector devices; + auto groups = parseDevicesFromPath(testDir.string(), devices); + + EXPECT_TRUE(groups.empty()); + EXPECT_TRUE(devices.empty()); +} + +TEST_F(DriverListTest, MultipleDeviceGroups) { + const char* multiGroupXML = R"( + + + + + indi_scope1 + + + + + indi_camera1 + + + + )"; + + createTestXMLFile("multi_group.xml", multiGroupXML); + + std::vector devices; + auto groups = parseDevicesFromPath(testDir.string(), devices); + + ASSERT_EQ(groups.size(), 2); + EXPECT_EQ(devices.size(), 2); +} + +TEST_F(DriverListTest, MalformedXML) { + const char* malformedXML = R"( + + + + devices; + auto groups = parseDevicesFromPath(testDir.string(), devices); + + EXPECT_TRUE(groups.empty()); + EXPECT_TRUE(devices.empty()); +} + +TEST_F(DriverListTest, MissingAttributes) { + const char* missingAttrXML = R"( + + + + + indi_test + + + + )"; + + createTestXMLFile("missing_attr.xml", missingAttrXML); + + std::vector devices; + auto groups = parseDevicesFromPath(testDir.string(), devices); + + ASSERT_EQ(groups.size(), 1); + EXPECT_TRUE(groups[0].group.empty()); + ASSERT_EQ(groups[0].devices.size(), 1); + EXPECT_TRUE(groups[0].devices[0].label.empty()); +} + +TEST_F(DriverListTest, NonXMLFiles) { + std::ofstream(testDir / "not_xml.txt") << "This is not XML"; + + std::vector devices; + auto groups = parseDevicesFromPath(testDir.string(), devices); + + EXPECT_TRUE(groups.empty()); + EXPECT_TRUE(devices.empty()); +} \ No newline at end of file diff --git a/modules/lithium.pydevice/zwoasi/example/camera_test.py b/modules/lithium.pydevice/zwoasi/example/camera_test.py new file mode 100644 index 00000000..47a04d92 --- /dev/null +++ b/modules/lithium.pydevice/zwoasi/example/camera_test.py @@ -0,0 +1,163 @@ +import ctypes +from asiccd import * +from loguru import logger + +class ASICameraController: + def __init__(self): + self.device_ids = [] + self.num_devices = 0 + + def get_device_count(self): + try: + self.num_devices = ASIGetNumOfConnectedCameras() + if self.num_devices <= 0: + logger.error("No devices found") + return False + logger.info(f"Found {self.num_devices} devices") + return True + except Exception as e: + logger.exception("Exception occurred while getting device count") + return False + + def get_device_ids(self): + if self.num_devices <= 0: + return False + try: + self.device_ids = [ASIGetCameraProperty(i) for i in range(self.num_devices)] + return True + except Exception as e: + logger.exception("Exception occurred while getting device IDs") + return False + + def open_device(self, device_id): + try: + result = ASIOpenCamera(device_id) + if result != ASI_SUCCESS: + logger.error(f"Failed to open device {device_id}") + return False + logger.info(f"Device {device_id} opened") + return True + except Exception as e: + logger.exception(f"Exception occurred while opening device {device_id}") + return False + + def get_device_property(self, device_id): + try: + camera_info = ASI_CAMERA_INFO() + result = ASIGetCameraProperty(ctypes.byref(camera_info), device_id) + if result != ASI_SUCCESS: + logger.error(f"Failed to get properties of device {device_id}") + return None + logger.info(f"Successfully got properties of device {device_id}") + return camera_info + except Exception as e: + logger.exception(f"Exception occurred while getting properties of device {device_id}") + return None + + def start_exposure(self, device_id): + try: + result = ASIStartExposure(device_id, ASI_FALSE) + if result != ASI_SUCCESS: + logger.error(f"Failed to start exposure on device {device_id}") + return False + logger.info(f"Exposure started on device {device_id}") + return True + except Exception as e: + logger.exception(f"Exception occurred while starting exposure on device {device_id}") + return False + + def stop_exposure(self, device_id): + try: + result = ASIStopExposure(device_id) + if result != ASI_SUCCESS: + logger.error(f"Failed to stop exposure on device {device_id}") + return False + logger.info(f"Exposure stopped on device {device_id}") + return True + except Exception as e: + logger.exception(f"Exception occurred while stopping exposure on device {device_id}") + return False + + def get_exposure_status(self, device_id): + try: + status = ASI_EXPOSURE_STATUS() + result = ASIGetExpStatus(device_id, ctypes.byref(status)) + if result != ASI_SUCCESS: + logger.error(f"Failed to get exposure status of device {device_id}") + return None + logger.info(f"Exposure status of device {device_id}: {status.value}") + return status.value + except Exception as e: + logger.exception(f"Exception occurred while getting exposure status of device {device_id}") + return None + + def get_image_data(self, device_id, width, height, bit_depth): + try: + buffer_size = width * height * (bit_depth // 8) + buffer = (ctypes.c_ubyte * buffer_size)() + result = ASIGetDataAfterExp(device_id, buffer, buffer_size) + if result != ASI_SUCCESS: + logger.error(f"Failed to get image data from device {device_id}") + return None + logger.info(f"Successfully got image data from device {device_id}") + return buffer + except Exception as e: + logger.exception(f"Exception occurred while getting image data from device {device_id}") + return None + + def close_device(self, device_id): + try: + result = ASICloseCamera(device_id) + if result != ASI_SUCCESS: + logger.error(f"Failed to close device {device_id}") + return False + logger.info(f"Device {device_id} closed") + return True + except Exception as e: + logger.exception(f"Exception occurred while closing device {device_id}") + return False + + +def main(): + controller = ASICameraController() + + if not controller.get_device_count(): + return + + if not controller.get_device_ids(): + return + + for i in range(controller.num_devices): + device_id = controller.device_ids[i].CameraID + logger.info(f"Device {i} ID: {device_id}") + + if not controller.open_device(device_id): + continue + + device_info = controller.get_device_property(device_id) + if device_info: + logger.info(f"Device {device_id} Name: {device_info.Name.decode()}") + logger.info(f"Device {device_id} Max Height: {device_info.MaxHeight}") + logger.info(f"Device {device_id} Max Width: {device_info.MaxWidth}") + + if controller.start_exposure(device_id): + logger.info(f"Exposure started on device {device_id}") + + status = controller.get_exposure_status(device_id) + if status is not None: + logger.info(f"Exposure status of device {device_id}: {status}") + + if controller.stop_exposure(device_id): + logger.info(f"Exposure stopped on device {device_id}") + + width, height, bit_depth = device_info.MaxWidth, device_info.MaxHeight, 16 + image_data = controller.get_image_data(device_id, width, height, bit_depth) + if image_data is not None: + logger.info(f"Successfully got image data from device {device_id}") + + if controller.close_device(device_id): + logger.info(f"Device {device_id} closed") + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/modules/lithium.pydevice/zwoasi/example/eaf_test.py b/modules/lithium.pydevice/zwoasi/example/eaf_test.py new file mode 100644 index 00000000..77913be4 --- /dev/null +++ b/modules/lithium.pydevice/zwoasi/example/eaf_test.py @@ -0,0 +1,537 @@ +#!/usr/bin/env python3 +import argparse +import configparser +import ctypes +from pathlib import Path +from typing import Optional, Union + +from loguru import logger +from rich.console import Console +from rich.syntax import Syntax + +from ..libs.eaf import * + +# Initialize Rich Console +console = Console() + +# Configure Loguru Logger +logger.add("eaf.log", format="{time} {level} {message}", + level="INFO", rotation="10 MB") + + +class ASIEAFController: + def __init__(self): + self.device_ids = [] + self.num_devices = 0 + + def get_device_count(self) -> bool: + try: + self.num_devices = EAFGetNum() + if self.num_devices <= 0: + logger.error("No devices found") + console.print("[red]No devices found.[/red]") + return False + logger.info(f"Found {self.num_devices} device(s)") + console.print(f"[green]Found {self.num_devices} device(s)[/green]") + return True + except Exception as e: + logger.exception("Exception occurred while getting device count") + console.print(f"[red]Exception: {e}[/red]") + return False + + def get_device_ids(self) -> bool: + if self.num_devices <= 0: + console.print("[red]No devices to retrieve IDs from.[/red]") + return False + try: + self.device_ids = (ctypes.c_int * self.num_devices)() + result = EAFGetProductIDs(self.device_ids) + if result != EAF_SUCCESS: + logger.error("Failed to get device IDs") + console.print("[red]Failed to get device IDs.[/red]") + return False + logger.info("Successfully retrieved device IDs") + console.print("[green]Successfully retrieved device IDs.[/green]") + return True + except Exception as e: + logger.exception("Exception occurred while getting device IDs") + console.print(f"[red]Exception: {e}[/red]") + return False + + def open_device(self, device_id: int) -> bool: + try: + result = EAFOpen(device_id) + if result != EAF_SUCCESS: + logger.error(f"Failed to open device {device_id}") + console.print(f"[red]Failed to open device {device_id}.[/red]") + return False + logger.info(f"Device {device_id} opened") + console.print(f"[green]Device {device_id} opened.[/green]") + return True + except Exception as e: + logger.exception( + f"Exception occurred while opening device {device_id}") + console.print(f"[red]Exception: {e}[/red]") + return False + + def get_device_property(self, device_id: int) -> Optional[EAF_INFO]: + try: + device_info = EAF_INFO() + result = EAFGetProperty(device_id, ctypes.byref(device_info)) + if result != EAF_SUCCESS: + logger.error(f"Failed to get properties of device {device_id}") + console.print( + f"[red]Failed to get properties of device {device_id}.[/red]") + return None + logger.info(f"Successfully got properties of device {device_id}") + console.print( + f"[green]Successfully got properties of device {device_id}.[/green]") + return device_info + except Exception as e: + logger.exception( + f"Exception occurred while getting properties of device {device_id}") + console.print(f"[red]Exception: {e}[/red]") + return None + + def move_device(self, device_id: int, position: int) -> bool: + try: + result = EAFMove(device_id, position) + if result != EAF_SUCCESS: + logger.error( + f"Failed to move device {device_id} to position {position}") + console.print( + f"[red]Failed to move device {device_id} to position {position}.[/red]") + return False + logger.info(f"Device {device_id} moved to position {position}") + console.print( + f"[green]Device {device_id} moved to position {position}.[/green]") + return True + except Exception as e: + logger.exception( + f"Exception occurred while moving device {device_id}") + console.print(f"[red]Exception: {e}[/red]") + return False + + def stop_device(self, device_id: int) -> bool: + try: + result = EAFStop(device_id) + if result != EAF_SUCCESS: + logger.error(f"Failed to stop device {device_id}") + console.print(f"[red]Failed to stop device {device_id}.[/red]") + return False + logger.info(f"Device {device_id} stopped") + console.print(f"[green]Device {device_id} stopped.[/green]") + return True + except Exception as e: + logger.exception( + f"Exception occurred while stopping device {device_id}") + console.print(f"[red]Exception: {e}[/red]") + return False + + def get_position(self, device_id: int) -> Optional[int]: + try: + position = ctypes.c_int() + result = EAFGetPosition(device_id, ctypes.byref(position)) + if result != EAF_SUCCESS: + logger.error(f"Failed to get position of device {device_id}") + console.print( + f"[red]Failed to get position of device {device_id}.[/red]") + return None + logger.info( + f"Current position of device {device_id}: {position.value}") + console.print( + f"[green]Current position of device {device_id}: {position.value}[/green]") + return position.value + except Exception as e: + logger.exception( + f"Exception occurred while getting position of device {device_id}") + console.print(f"[red]Exception: {e}[/red]") + return None + + def reset_position(self, device_id: int, position: int) -> bool: + try: + result = EAFResetPostion(device_id, position) + if result != EAF_SUCCESS: + logger.error( + f"Failed to reset position of device {device_id} to {position}") + console.print( + f"[red]Failed to reset position of device {device_id} to {position}.[/red]") + return False + logger.info(f"Position of device {device_id} reset to {position}") + console.print( + f"[green]Position of device {device_id} reset to {position}.[/green]") + return True + except Exception as e: + logger.exception( + f"Exception occurred while resetting position of device {device_id}") + console.print(f"[red]Exception: {e}[/red]") + return False + + def get_temperature(self, device_id: int) -> Optional[float]: + try: + temperature = ctypes.c_float() + result = EAFGetTemp(device_id, ctypes.byref(temperature)) + if result != EAF_SUCCESS: + logger.error( + f"Failed to get temperature of device {device_id}") + console.print( + f"[red]Failed to get temperature of device {device_id}.[/red]") + return None + logger.info( + f"Current temperature of device {device_id}: {temperature.value}°C") + console.print( + f"[green]Current temperature of device {device_id}: {temperature.value}°C[/green]") + return temperature.value + except Exception as e: + logger.exception( + f"Exception occurred while getting temperature of device {device_id}") + console.print(f"[red]Exception: {e}[/red]") + return None + + def set_max_step(self, device_id: int, max_step: int) -> bool: + try: + result = EAFSetMaxStep(device_id, max_step) + if result != EAF_SUCCESS: + logger.error( + f"Failed to set max step of device {device_id} to {max_step}") + console.print( + f"[red]Failed to set max step of device {device_id} to {max_step}.[/red]") + return False + logger.info(f"Max step of device {device_id} set to {max_step}") + console.print( + f"[green]Max step of device {device_id} set to {max_step}.[/green]") + return True + except Exception as e: + logger.exception( + f"Exception occurred while setting max step of device {device_id}") + console.print(f"[red]Exception: {e}[/red]") + return False + + def get_max_step(self, device_id: int) -> Optional[int]: + try: + max_step = ctypes.c_int() + result = EAFGetMaxStep(device_id, ctypes.byref(max_step)) + if result != EAF_SUCCESS: + logger.error(f"Failed to get max step of device {device_id}") + console.print( + f"[red]Failed to get max step of device {device_id}.[/red]") + return None + logger.info(f"Max step of device {device_id}: {max_step.value}") + console.print( + f"[green]Max step of device {device_id}: {max_step.value}[/green]") + return max_step.value + except Exception as e: + logger.exception( + f"Exception occurred while getting max step of device {device_id}") + console.print(f"[red]Exception: {e}[/red]") + return None + + def set_backlash(self, device_id: int, backlash: int) -> bool: + try: + result = EAFSetBacklash(device_id, backlash) + if result != EAF_SUCCESS: + logger.error( + f"Failed to set backlash of device {device_id} to {backlash}") + console.print( + f"[red]Failed to set backlash of device {device_id} to {backlash}.[/red]") + return False + logger.info(f"Backlash of device {device_id} set to {backlash}") + console.print( + f"[green]Backlash of device {device_id} set to {backlash}.[/green]") + return True + except Exception as e: + logger.exception( + f"Exception occurred while setting backlash of device {device_id}") + console.print(f"[red]Exception: {e}[/red]") + return False + + def get_backlash(self, device_id: int) -> Optional[int]: + try: + backlash = ctypes.c_int() + result = EAFGetBacklash(device_id, ctypes.byref(backlash)) + if result != EAF_SUCCESS: + logger.error(f"Failed to get backlash of device {device_id}") + console.print( + f"[red]Failed to get backlash of device {device_id}.[/red]") + return None + logger.info(f"Backlash of device {device_id}: {backlash.value}") + console.print( + f"[green]Backlash of device {device_id}: {backlash.value}[/green]") + return backlash.value + except Exception as e: + logger.exception( + f"Exception occurred while getting backlash of device {device_id}") + console.print(f"[red]Exception: {e}[/red]") + return None + + def close_device(self, device_id: int) -> bool: + try: + result = EAFClose(device_id) + if result != EAF_SUCCESS: + logger.error(f"Failed to close device {device_id}") + console.print( + f"[red]Failed to close device {device_id}.[/red]") + return False + logger.info(f"Device {device_id} closed") + console.print(f"[green]Device {device_id} closed.[/green]") + return True + except Exception as e: + logger.exception( + f"Exception occurred while closing device {device_id}") + console.print(f"[red]Exception: {e}[/red]") + return False + + +def list_devices(controller: ASIEAFController): + if controller.get_device_count() and controller.get_device_ids(): + for idx, device_id in enumerate(controller.device_ids, start=1): + console.print(f"Device {idx}: ID {device_id}") + else: + console.print("[red]No devices to list.[/red]") + + +def open_device(controller: ASIEAFController, device_id: int): + controller.open_device(device_id) + + +def get_property(controller: ASIEAFController, device_id: int): + device_info = controller.get_device_property(device_id) + if device_info: + pretty_print_ini(str(device_info)) + + +def move_device(controller: ASIEAFController, device_id: int, position: int): + controller.move_device(device_id, position) + + +def stop_device(controller: ASIEAFController, device_id: int): + controller.stop_device(device_id) + + +def get_position(controller: ASIEAFController, device_id: int): + controller.get_position(device_id) + + +def reset_position(controller: ASIEAFController, device_id: int, position: int): + controller.reset_position(device_id, position) + + +def get_temperature(controller: ASIEAFController, device_id: int): + controller.get_temperature(device_id) + + +def set_max_step(controller: ASIEAFController, device_id: int, max_step: int): + controller.set_max_step(device_id, max_step) + + +def get_max_step(controller: ASIEAFController, device_id: int): + controller.get_max_step(device_id) + + +def set_backlash(controller: ASIEAFController, device_id: int, backlash: int): + controller.set_backlash(device_id, backlash) + + +def get_backlash(controller: ASIEAFController, device_id: int): + controller.get_backlash(device_id) + + +def close_device(controller: ASIEAFController, device_id: int): + controller.close_device(device_id) + + +def main(): + parser = argparse.ArgumentParser( + description="ASIEAFController CLI Tool", + formatter_class=argparse.RawTextHelpFormatter, + epilog=""" +Examples: + List all connected devices: + eaf_cli.py list-devices + + Open a device with ID 1: + eaf_cli.py open-device 1 + + Get properties of device 1: + eaf_cli.py get-property 1 + + Move device 1 to position 1000: + eaf_cli.py move-device 1 1000 + + Stop device 1: + eaf_cli.py stop-device 1 + + Get current position of device 1: + eaf_cli.py get-position 1 + + Reset position of device 1 to 500: + eaf_cli.py reset-position 1 500 + + Get temperature of device 1: + eaf_cli.py get-temperature 1 + + Set max step of device 1 to 200: + eaf_cli.py set-max-step 1 200 + + Get max step of device 1: + eaf_cli.py get-max-step 1 + + Set backlash of device 1 to 50: + eaf_cli.py set-backlash 1 50 + + Get backlash of device 1: + eaf_cli.py get-backlash 1 + + Close device 1: + eaf_cli.py close-device 1 +""" + ) + + subparsers = parser.add_subparsers(title="Commands", dest="command") + subparsers.required = True + + # list-devices + subparsers.add_parser("list-devices", help="List all connected devices") + + # open-device + parser_open = subparsers.add_parser( + "open-device", help="Open a specific device") + parser_open.add_argument("device_id", type=int, + help="ID of the device to open") + + # get-property + parser_get_prop = subparsers.add_parser( + "get-property", help="Get properties of a device") + parser_get_prop.add_argument( + "device_id", type=int, help="ID of the device") + + # move-device + parser_move = subparsers.add_parser( + "move-device", help="Move a device to a specific position") + parser_move.add_argument("device_id", type=int, help="ID of the device") + parser_move.add_argument("position", type=int, + help="Position to move the device to") + + # stop-device + parser_stop = subparsers.add_parser("stop-device", help="Stop a device") + parser_stop.add_argument("device_id", type=int, help="ID of the device") + + # get-position + parser_get_pos = subparsers.add_parser( + "get-position", help="Get current position of a device") + parser_get_pos.add_argument("device_id", type=int, help="ID of the device") + + # reset-position + parser_reset_pos = subparsers.add_parser( + "reset-position", help="Reset position of a device") + parser_reset_pos.add_argument( + "device_id", type=int, help="ID of the device") + parser_reset_pos.add_argument( + "position", type=int, help="New position to reset to") + + # get-temperature + parser_get_temp = subparsers.add_parser( + "get-temperature", help="Get temperature of a device") + parser_get_temp.add_argument( + "device_id", type=int, help="ID of the device") + + # set-max-step + parser_set_max = subparsers.add_parser( + "set-max-step", help="Set max step of a device") + parser_set_max.add_argument("device_id", type=int, help="ID of the device") + parser_set_max.add_argument( + "max_step", type=int, help="Maximum step value") + + # get-max-step + parser_get_max = subparsers.add_parser( + "get-max-step", help="Get max step of a device") + parser_get_max.add_argument("device_id", type=int, help="ID of the device") + + # set-backlash + parser_set_backlash = subparsers.add_parser( + "set-backlash", help="Set backlash of a device") + parser_set_backlash.add_argument( + "device_id", type=int, help="ID of the device") + parser_set_backlash.add_argument( + "backlash", type=int, help="Backlash value to set") + + # get-backlash + parser_get_backlash = subparsers.add_parser( + "get-backlash", help="Get backlash of a device") + parser_get_backlash.add_argument( + "device_id", type=int, help="ID of the device") + + # close-device + parser_close = subparsers.add_parser("close-device", help="Close a device") + parser_close.add_argument("device_id", type=int, help="ID of the device") + + # Verbosity + parser.add_argument( + "--verbose", + action="store_true", + help="Enable verbose logging" + ) + + args = parser.parse_args() + + # Set logging level based on verbosity + if args.verbose: + logger.remove() + logger.add( + "eaf.log", format="{time} {level} {message}", level="DEBUG", rotation="10 MB") + logger.debug("Verbose mode enabled.") + + controller = ASIEAFController() + + if args.command == "list-devices": + list_devices(controller) + elif args.command == "open-device": + open_device(controller, args.device_id) + elif args.command == "get-property": + get_property(controller, args.device_id) + elif args.command == "move-device": + move_device(controller, args.device_id, args.position) + elif args.command == "stop-device": + stop_device(controller, args.device_id) + elif args.command == "get-position": + get_position(controller, args.device_id) + elif args.command == "reset-position": + reset_position(controller, args.device_id, args.position) + elif args.command == "get-temperature": + get_temperature(controller, args.device_id) + elif args.command == "set-max-step": + set_max_step(controller, args.device_id, args.max_step) + elif args.command == "get-max-step": + get_max_step(controller, args.device_id) + elif args.command == "set-backlash": + set_backlash(controller, args.device_id, args.backlash) + elif args.command == "get-backlash": + get_backlash(controller, args.device_id) + elif args.command == "close-device": + close_device(controller, args.device_id) + else: + parser.print_help() + + +def pretty_print_ini(data: str) -> None: + """ + Utility function to pretty print INI data using Rich. + """ + try: + config = configparser.ConfigParser() + config.read_string(data) + pretty_ini = "" + for section in config.sections(): + pretty_ini += f"[{section}]\n" + for key, value in config.items(section): + pretty_ini += f"{key} = {value}\n" + pretty_ini += "\n" + syntax = Syntax(pretty_ini, "ini", theme="monokai", line_numbers=True) + console.print(syntax) + except configparser.Error as e: + console.print(f"[red]INI Parse Error: {e}[/red]") + logger.error(f"INI Parse Error: {e}") + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pydevice/zwoasi/example/efw_test.py b/modules/lithium.pydevice/zwoasi/example/efw_test.py new file mode 100644 index 00000000..72a25fe7 --- /dev/null +++ b/modules/lithium.pydevice/zwoasi/example/efw_test.py @@ -0,0 +1,163 @@ +import ctypes +from libs.efw import * +from loguru import logger + + +class ASIEFWController: + def __init__(self): + self.device_ids = [] + self.num_devices = 0 + + def get_device_count(self): + try: + self.num_devices = EFWGetNum() + if self.num_devices <= 0: + logger.error("No devices found") + return False + logger.info(f"Found {self.num_devices} devices") + return True + except Exception as e: + logger.exception("Exception occurred while getting device count") + return False + + def get_device_ids(self): + if self.num_devices <= 0: + return False + try: + self.device_ids = (c_int * self.num_devices)() + result = EFWGetProductIDs(self.device_ids) + if result != EFW_SUCCESS: + logger.error("Failed to get device IDs") + return False + return True + except Exception as e: + logger.exception("Exception occurred while getting device IDs") + return False + + def open_device(self, device_id): + try: + result = EFWOpen(device_id) + if result != EFW_SUCCESS: + logger.error(f"Failed to open device {device_id}") + return False + logger.info(f"Device {device_id} opened") + return True + except Exception as e: + logger.exception( + f"Exception occurred while opening device {device_id}") + return False + + def get_device_property(self, device_id): + try: + device_info = EFW_INFO() + result = EFWGetProperty(device_id, ctypes.byref(device_info)) + if result != EFW_SUCCESS: + logger.error(f"Failed to get properties of device {device_id}") + return None + logger.info(f"Successfully got properties of device {device_id}") + return device_info + except Exception as e: + logger.exception( + f"Exception occurred while getting properties of device {device_id}") + return None + + def get_position(self, device_id): + try: + position = c_int() + result = EFWGetPosition(device_id, ctypes.byref(position)) + if result != EFW_SUCCESS: + logger.error( + f"Failed to get filter position of device {device_id}") + return None + logger.info( + f"Current filter position of device {device_id}: {position.value}") + return position.value + except Exception as e: + logger.exception( + f"Exception occurred while getting filter position of device {device_id}") + return None + + def set_position(self, device_id, new_position): + try: + result = EFWSetPosition(device_id, new_position) + if result != EFW_SUCCESS: + logger.error( + f"Failed to set filter position of device {device_id}") + return False + logger.info( + f"Filter position of device {device_id} set to: {new_position}") + return True + except Exception as e: + logger.exception( + f"Exception occurred while setting filter position of device {device_id}") + return False + + def calibrate_device(self, device_id): + try: + result = EFWCalibrate(device_id) + if result != EFW_SUCCESS: + logger.error(f"Failed to calibrate device {device_id}") + return False + logger.info(f"Device {device_id} calibrated successfully") + return True + except Exception as e: + logger.exception( + f"Exception occurred while calibrating device {device_id}") + return False + + def close_device(self, device_id): + try: + result = EFWClose(device_id) + if result != EFW_SUCCESS: + logger.error(f"Failed to close device {device_id}") + return False + logger.info(f"Device {device_id} closed") + return True + except Exception as e: + logger.exception( + f"Exception occurred while closing device {device_id}") + return False + + +def main(): + controller = ASIEFWController() + + if not controller.get_device_count(): + return + + if not controller.get_device_ids(): + return + + for i in range(controller.num_devices): + device_id = controller.device_ids[i] + logger.info(f"Device {i} ID: {device_id}") + + if not controller.open_device(device_id): + continue + + device_info = controller.get_device_property(device_id) + if device_info: + logger.info( + f"Device {device_id} Name: {device_info.Name.decode()}") + logger.info( + f"Device {device_id} Slot Number: {device_info.slotNum}") + + position = controller.get_position(device_id) + if position is not None: + logger.info( + f"Current filter position of device {device_id}: {position}") + + new_position = 0 + if controller.set_position(device_id, new_position): + logger.info( + f"Filter position of device {device_id} set to: {new_position}") + + if controller.calibrate_device(device_id): + logger.info(f"Device {device_id} calibrated successfully") + + if controller.close_device(device_id): + logger.info(f"Device {device_id} closed") + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pydevice/zwoasi/example/usb_test.py b/modules/lithium.pydevice/zwoasi/example/usb_test.py new file mode 100644 index 00000000..76e788f0 --- /dev/null +++ b/modules/lithium.pydevice/zwoasi/example/usb_test.py @@ -0,0 +1,21 @@ +import ctypes +from usb import USB2ST4Open, USB2ST4Close, USB2ST4GetNum, USB2ST4_ERROR_CODE, USB2ST4_SUCCESS + +# 获取连接的设备数量 +num_devices = USB2ST4GetNum() +print(f"Number of connected devices: {num_devices}") + +# 打开第一个设备 +device_index = 0 +result = USB2ST4Open(device_index) +if result == USB2ST4_SUCCESS: + print(f"Device {device_index} opened successfully.") +else: + print(f"Failed to open device {device_index}. Error code: {result}") + +# 关闭设备 +result = USB2ST4Close(device_index) +if result == USB2ST4_SUCCESS: + print(f"Device {device_index} closed successfully.") +else: + print(f"Failed to close device {device_index}. Error code: {result}") \ No newline at end of file diff --git a/modules/lithium.pydevice/zwoasi/interface/search.py b/modules/lithium.pydevice/zwoasi/interface/search.py new file mode 100644 index 00000000..55e57004 --- /dev/null +++ b/modules/lithium.pydevice/zwoasi/interface/search.py @@ -0,0 +1,332 @@ +import ctypes +from typing import List, Tuple, Dict, Optional +from loguru import logger +import argparse +from ..libs.camera import ( + ASI_CONTROL_CAPS, ASIGetNumOfConnectedCameras, ASIGetCameraProperty, ASI_CAMERA_INFO, + ASIOpenCamera, ASICloseCamera, ASI_SUCCESS, ASIGetControlCaps, ASIGetControlValue, + ASISetControlValue, ASIGetROIFormat, ASISetROIFormat, ASIGetStartPos, ASISetStartPos, ASIGetNumOfControls +) + + +def search_cameras() -> List[Dict[str, any]]: + """ + Search for connected cameras and retrieve their properties. + + Returns: + List[Dict[str, any]]: A list of dictionaries containing camera properties. + """ + num_cameras = ASIGetNumOfConnectedCameras() + logger.info(f"Number of connected cameras: {num_cameras}") + + cameras = [] + + for i in range(num_cameras): + camera_info = ASI_CAMERA_INFO() + result = ASIGetCameraProperty(ctypes.byref(camera_info), i) + if result == ASI_SUCCESS: + camera_details = { + "Name": camera_info.Name.decode(), + "CameraID": camera_info.CameraID, + "MaxHeight": camera_info.MaxHeight, + "MaxWidth": camera_info.MaxWidth, + "IsColorCam": camera_info.IsColorCam, + "BayerPattern": camera_info.BayerPattern, + "PixelSize": camera_info.PixelSize, + "MechanicalShutter": camera_info.MechanicalShutter, + "ST4Port": camera_info.ST4Port, + "IsCoolerCam": camera_info.IsCoolerCam, + "IsUSB3Host": camera_info.IsUSB3Host, + "IsUSB3Camera": camera_info.IsUSB3Camera, + "ElecPerADU": camera_info.ElecPerADU, + "BitDepth": camera_info.BitDepth, + "IsTriggerCam": camera_info.IsTriggerCam, + } + cameras.append(camera_details) + logger.info(f"Camera {i}: {camera_details}") + else: + logger.error( + f"Failed to get camera property for camera {i}. Error code: {result}") + + return cameras + + +def get_camera_controls(camera_id: int) -> List[Dict[str, any]]: + """ + Get the control capabilities of a specific camera. + + Args: + camera_id (int): The ID of the camera. + + Returns: + List[Dict[str, any]]: A list of dictionaries containing control capabilities. + """ + num_controls = ctypes.c_int() + result = ASIGetNumOfControls(camera_id, ctypes.byref(num_controls)) + if result != ASI_SUCCESS: + logger.error( + f"Failed to get number of controls for camera {camera_id}. Error code: {result}") + return [] + + controls = [] + for i in range(num_controls.value): + control_caps = ASI_CONTROL_CAPS() + result = ASIGetControlCaps(camera_id, i, ctypes.byref(control_caps)) + if result == ASI_SUCCESS: + control_details = { + "Name": control_caps.Name.decode(), + "Description": control_caps.Description.decode(), + "MaxValue": control_caps.MaxValue, + "MinValue": control_caps.MinValue, + "DefaultValue": control_caps.DefaultValue, + "IsAutoSupported": control_caps.IsAutoSupported, + "IsWritable": control_caps.IsWritable, + "ControlType": control_caps.ControlType, + } + controls.append(control_details) + logger.info(f"Control {i}: {control_details}") + else: + logger.error( + f"Failed to get control caps for control {i} of camera {camera_id}. Error code: {result}") + + return controls + + +def open_camera(camera_id: int) -> int: + """ + Open a specific camera. + + Args: + camera_id (int): The ID of the camera. + + Returns: + int: The result code of the operation. + """ + result = ASIOpenCamera(camera_id) + if result == ASI_SUCCESS: + logger.info(f"Camera {camera_id} opened successfully.") + else: + logger.error( + f"Failed to open camera {camera_id}. Error code: {result}") + return result + + +def close_camera(camera_id: int) -> int: + """ + Close a specific camera. + + Args: + camera_id (int): The ID of the camera. + + Returns: + int: The result code of the operation. + """ + result = ASICloseCamera(camera_id) + if result == ASI_SUCCESS: + logger.info(f"Camera {camera_id} closed successfully.") + else: + logger.error( + f"Failed to close camera {camera_id}. Error code: {result}") + return result + + +def get_control_value(camera_id: int, control_type: int) -> Tuple[Optional[int], Optional[int]]: + """ + Get the value of a specific control of a camera. + + Args: + camera_id (int): The ID of the camera. + control_type (int): The type of the control. + + Returns: + Tuple[Optional[int], Optional[int]]: The value and auto status of the control. + """ + value = ctypes.c_long() + is_auto = ctypes.c_int() + result = ASIGetControlValue( + camera_id, control_type, ctypes.byref(value), ctypes.byref(is_auto)) + if result == ASI_SUCCESS: + logger.info( + f"Control value for type {control_type} of camera {camera_id}: {value.value}, Auto: {is_auto.value}") + return value.value, is_auto.value + else: + logger.error( + f"Failed to get control value for type {control_type} of camera {camera_id}. Error code: {result}") + return None, None + + +def set_control_value(camera_id: int, control_type: int, value: int, is_auto: int) -> None: + """ + Set the value of a specific control of a camera. + + Args: + camera_id (int): The ID of the camera. + control_type (int): The type of the control. + value (int): The value to set. + is_auto (int): The auto status to set. + """ + result = ASISetControlValue(camera_id, control_type, value, is_auto) + if result == ASI_SUCCESS: + logger.info( + f"Set control value for type {control_type} of camera {camera_id} to {value}, Auto: {is_auto}") + else: + logger.error( + f"Failed to set control value for type {control_type} of camera {camera_id}. Error code: {result}") + + +def get_roi_format(camera_id: int) -> Tuple[Optional[int], Optional[int], Optional[int], Optional[int]]: + """ + Get the ROI format of a camera. + + Args: + camera_id (int): The ID of the camera. + + Returns: + Tuple[Optional[int], Optional[int], Optional[int], Optional[int]]: The width, height, binning, and image type of the ROI format. + """ + width = ctypes.c_int() + height = ctypes.c_int() + binning = ctypes.c_int() + image_type = ctypes.c_int() + result = ASIGetROIFormat(camera_id, ctypes.byref(width), ctypes.byref( + height), ctypes.byref(binning), ctypes.byref(image_type)) + if result == ASI_SUCCESS: + logger.info( + f"ROI format for camera {camera_id}: Width: {width.value}, Height: {height.value}, Binning: {binning.value}, Image Type: {image_type.value}") + return width.value, height.value, binning.value, image_type.value + else: + logger.error( + f"Failed to get ROI format for camera {camera_id}. Error code: {result}") + return None, None, None, None + + +def set_roi_format(camera_id: int, width: int, height: int, binning: int, image_type: int) -> None: + """ + Set the ROI format of a camera. + + Args: + camera_id (int): The ID of the camera. + width (int): The width to set. + height (int): The height to set. + binning (int): The binning to set. + image_type (int): The image type to set. + """ + result = ASISetROIFormat(camera_id, width, height, binning, image_type) + if result == ASI_SUCCESS: + logger.info( + f"Set ROI format for camera {camera_id} to Width: {width}, Height: {height}, Binning: {binning}, Image Type: {image_type}") + else: + logger.error( + f"Failed to set ROI format for camera {camera_id}. Error code: {result}") + + +def get_start_pos(camera_id: int) -> Tuple[Optional[int], Optional[int]]: + """ + Get the start position of a camera. + + Args: + camera_id (int): The ID of the camera. + + Returns: + Tuple[Optional[int], Optional[int]]: The X and Y start positions. + """ + start_x = ctypes.c_int() + start_y = ctypes.c_int() + result = ASIGetStartPos(camera_id, ctypes.byref( + start_x), ctypes.byref(start_y)) + if result == ASI_SUCCESS: + logger.info( + f"Start position for camera {camera_id}: X: {start_x.value}, Y: {start_y.value}") + return start_x.value, start_y.value + else: + logger.error( + f"Failed to get start position for camera {camera_id}. Error code: {result}") + return None, None + + +def set_start_pos(camera_id: int, start_x: int, start_y: int) -> None: + """ + Set the start position of a camera. + + Args: + camera_id (int): The ID of the camera. + start_x (int): The X start position to set. + start_y (int): The Y start position to set. + """ + result = ASISetStartPos(camera_id, start_x, start_y) + if result == ASI_SUCCESS: + logger.info( + f"Set start position for camera {camera_id} to X: {start_x}, Y: {start_y}") + else: + logger.error( + f"Failed to set start position for camera {camera_id}. Error code: {result}") + + +def main(): + parser = argparse.ArgumentParser(description="Camera control script") + parser.add_argument("--search", action="store_true", + help="Search for connected cameras") + parser.add_argument("--open", type=int, help="Open a camera by ID") + parser.add_argument("--close", type=int, help="Close a camera by ID") + parser.add_argument("--get-controls", type=int, + help="Get controls of a camera by ID") + parser.add_argument("--get-control-value", nargs=2, type=int, + help="Get control value of a camera by ID and control type") + parser.add_argument("--set-control-value", nargs=4, type=int, + help="Set control value of a camera by ID, control type, value, and auto status") + parser.add_argument("--get-roi", type=int, + help="Get ROI format of a camera by ID") + parser.add_argument("--set-roi", nargs=5, type=int, + help="Set ROI format of a camera by ID, width, height, binning, and image type") + parser.add_argument("--get-start-pos", type=int, + help="Get start position of a camera by ID") + parser.add_argument("--set-start-pos", nargs=3, type=int, + help="Set start position of a camera by ID, start X, and start Y") + + args = parser.parse_args() + + if args.search: + cameras = search_cameras() + for camera in cameras: + print(camera) + + if args.open is not None: + open_camera(args.open) + + if args.close is not None: + close_camera(args.close) + + if args.get_controls is not None: + controls = get_camera_controls(args.get_controls) + for control in controls: + print(control) + + if args.get_control_value is not None: + camera_id, control_type = args.get_control_value + value, is_auto = get_control_value(camera_id, control_type) + print(f"Value: {value}, Auto: {is_auto}") + + if args.set_control_value is not None: + camera_id, control_type, value, is_auto = args.set_control_value + set_control_value(camera_id, control_type, value, is_auto) + + if args.get_roi is not None: + width, height, binning, image_type = get_roi_format(args.get_roi) + print( + f"Width: {width}, Height: {height}, Binning: {binning}, Image Type: {image_type}") + + if args.set_roi is not None: + camera_id, width, height, binning, image_type = args.set_roi + set_roi_format(camera_id, width, height, binning, image_type) + + if args.get_start_pos is not None: + start_x, start_y = get_start_pos(args.get_start_pos) + print(f"Start X: {start_x}, Start Y: {start_y}") + + if args.set_start_pos is not None: + camera_id, start_x, start_y = args.set_start_pos + set_start_pos(camera_id, start_x, start_y) + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pydevice/zwoasi/libs/camera.py b/modules/lithium.pydevice/zwoasi/libs/camera.py new file mode 100644 index 00000000..7495312e --- /dev/null +++ b/modules/lithium.pydevice/zwoasi/libs/camera.py @@ -0,0 +1,1671 @@ +r"""Wrapper for ASICamera2.h + +Do not modify this file. +""" + +__docformat__ = "restructuredtext" + +# Begin preamble for Python + +import ctypes +import sys +from ctypes import * # noqa: F401, F403 + +_int_types = (ctypes.c_int16, ctypes.c_int32) +if hasattr(ctypes, "c_int64"): + # Some builds of ctypes apparently do not have ctypes.c_int64 + # defined; it's a pretty good bet that these builds do not + # have 64-bit pointers. + _int_types += (ctypes.c_int64,) +for t in _int_types: + if ctypes.sizeof(t) == ctypes.sizeof(ctypes.c_size_t): + c_ptrdiff_t = t +del t +del _int_types + + + +class UserString: + def __init__(self, seq): + if isinstance(seq, bytes): + self.data = seq + elif isinstance(seq, UserString): + self.data = seq.data[:] + else: + self.data = str(seq).encode() + + def __bytes__(self): + return self.data + + def __str__(self): + return self.data.decode() + + def __repr__(self): + return repr(self.data) + + def __int__(self): + return int(self.data.decode()) + + def __long__(self): + return int(self.data.decode()) + + def __float__(self): + return float(self.data.decode()) + + def __complex__(self): + return complex(self.data.decode()) + + def __hash__(self): + return hash(self.data) + + def __le__(self, string): + if isinstance(string, UserString): + return self.data <= string.data + else: + return self.data <= string + + def __lt__(self, string): + if isinstance(string, UserString): + return self.data < string.data + else: + return self.data < string + + def __ge__(self, string): + if isinstance(string, UserString): + return self.data >= string.data + else: + return self.data >= string + + def __gt__(self, string): + if isinstance(string, UserString): + return self.data > string.data + else: + return self.data > string + + def __eq__(self, string): + if isinstance(string, UserString): + return self.data == string.data + else: + return self.data == string + + def __ne__(self, string): + if isinstance(string, UserString): + return self.data != string.data + else: + return self.data != string + + def __contains__(self, char): + return char in self.data + + def __len__(self): + return len(self.data) + + def __getitem__(self, index): + return self.__class__(self.data[index]) + + def __getslice__(self, start, end): + start = max(start, 0) + end = max(end, 0) + return self.__class__(self.data[start:end]) + + def __add__(self, other): + if isinstance(other, UserString): + return self.__class__(self.data + other.data) + elif isinstance(other, bytes): + return self.__class__(self.data + other) + else: + return self.__class__(self.data + str(other).encode()) + + def __radd__(self, other): + if isinstance(other, bytes): + return self.__class__(other + self.data) + else: + return self.__class__(str(other).encode() + self.data) + + def __mul__(self, n): + return self.__class__(self.data * n) + + __rmul__ = __mul__ + + def __mod__(self, args): + return self.__class__(self.data % args) + + # the following methods are defined in alphabetical order: + def capitalize(self): + return self.__class__(self.data.capitalize()) + + def center(self, width, *args): + return self.__class__(self.data.center(width, *args)) + + def count(self, sub, start=0, end=sys.maxsize): + return self.data.count(sub, start, end) + + def decode(self, encoding=None, errors=None): # XXX improve this? + if encoding: + if errors: + return self.__class__(self.data.decode(encoding, errors)) + else: + return self.__class__(self.data.decode(encoding)) + else: + return self.__class__(self.data.decode()) + + def encode(self, encoding=None, errors=None): # XXX improve this? + if encoding: + if errors: + return self.__class__(self.data.encode(encoding, errors)) + else: + return self.__class__(self.data.encode(encoding)) + else: + return self.__class__(self.data.encode()) + + def endswith(self, suffix, start=0, end=sys.maxsize): + return self.data.endswith(suffix, start, end) + + def expandtabs(self, tabsize=8): + return self.__class__(self.data.expandtabs(tabsize)) + + def find(self, sub, start=0, end=sys.maxsize): + return self.data.find(sub, start, end) + + def index(self, sub, start=0, end=sys.maxsize): + return self.data.index(sub, start, end) + + def isalpha(self): + return self.data.isalpha() + + def isalnum(self): + return self.data.isalnum() + + def isdecimal(self): + return self.data.isdecimal() + + def isdigit(self): + return self.data.isdigit() + + def islower(self): + return self.data.islower() + + def isnumeric(self): + return self.data.isnumeric() + + def isspace(self): + return self.data.isspace() + + def istitle(self): + return self.data.istitle() + + def isupper(self): + return self.data.isupper() + + def join(self, seq): + return self.data.join(seq) + + def ljust(self, width, *args): + return self.__class__(self.data.ljust(width, *args)) + + def lower(self): + return self.__class__(self.data.lower()) + + def lstrip(self, chars=None): + return self.__class__(self.data.lstrip(chars)) + + def partition(self, sep): + return self.data.partition(sep) + + def replace(self, old, new, maxsplit=-1): + return self.__class__(self.data.replace(old, new, maxsplit)) + + def rfind(self, sub, start=0, end=sys.maxsize): + return self.data.rfind(sub, start, end) + + def rindex(self, sub, start=0, end=sys.maxsize): + return self.data.rindex(sub, start, end) + + def rjust(self, width, *args): + return self.__class__(self.data.rjust(width, *args)) + + def rpartition(self, sep): + return self.data.rpartition(sep) + + def rstrip(self, chars=None): + return self.__class__(self.data.rstrip(chars)) + + def split(self, sep=None, maxsplit=-1): + return self.data.split(sep, maxsplit) + + def rsplit(self, sep=None, maxsplit=-1): + return self.data.rsplit(sep, maxsplit) + + def splitlines(self, keepends=0): + return self.data.splitlines(keepends) + + def startswith(self, prefix, start=0, end=sys.maxsize): + return self.data.startswith(prefix, start, end) + + def strip(self, chars=None): + return self.__class__(self.data.strip(chars)) + + def swapcase(self): + return self.__class__(self.data.swapcase()) + + def title(self): + return self.__class__(self.data.title()) + + def translate(self, *args): + return self.__class__(self.data.translate(*args)) + + def upper(self): + return self.__class__(self.data.upper()) + + def zfill(self, width): + return self.__class__(self.data.zfill(width)) + + +class MutableString(UserString): + """mutable string objects + + Python strings are immutable objects. This has the advantage, that + strings may be used as dictionary keys. If this property isn't needed + and you insist on changing string values in place instead, you may cheat + and use MutableString. + + But the purpose of this class is an educational one: to prevent + people from inventing their own mutable string class derived + from UserString and than forget thereby to remove (override) the + __hash__ method inherited from UserString. This would lead to + errors that would be very hard to track down. + + A faster and better solution is to rewrite your program using lists.""" + + def __init__(self, string=""): + self.data = string + + def __hash__(self): + raise TypeError("unhashable type (it is mutable)") + + def __setitem__(self, index, sub): + if index < 0: + index += len(self.data) + if index < 0 or index >= len(self.data): + raise IndexError + self.data = self.data[:index] + sub + self.data[index + 1 :] + + def __delitem__(self, index): + if index < 0: + index += len(self.data) + if index < 0 or index >= len(self.data): + raise IndexError + self.data = self.data[:index] + self.data[index + 1 :] + + def __setslice__(self, start, end, sub): + start = max(start, 0) + end = max(end, 0) + if isinstance(sub, UserString): + self.data = self.data[:start] + sub.data + self.data[end:] + elif isinstance(sub, bytes): + self.data = self.data[:start] + sub + self.data[end:] + else: + self.data = self.data[:start] + str(sub).encode() + self.data[end:] + + def __delslice__(self, start, end): + start = max(start, 0) + end = max(end, 0) + self.data = self.data[:start] + self.data[end:] + + def immutable(self): + return UserString(self.data) + + def __iadd__(self, other): + if isinstance(other, UserString): + self.data += other.data + elif isinstance(other, bytes): + self.data += other + else: + self.data += str(other).encode() + return self + + def __imul__(self, n): + self.data *= n + return self + + +class String(MutableString, ctypes.Union): + + _fields_ = [("raw", ctypes.POINTER(ctypes.c_char)), ("data", ctypes.c_char_p)] + + def __init__(self, obj=b""): + if isinstance(obj, (bytes, UserString)): + self.data = bytes(obj) + else: + self.raw = obj + + def __len__(self): + return self.data and len(self.data) or 0 + + def from_param(cls, obj): + # Convert None or 0 + if obj is None or obj == 0: + return cls(ctypes.POINTER(ctypes.c_char)()) + + # Convert from String + elif isinstance(obj, String): + return obj + + # Convert from bytes + elif isinstance(obj, bytes): + return cls(obj) + + # Convert from str + elif isinstance(obj, str): + return cls(obj.encode()) + + # Convert from c_char_p + elif isinstance(obj, ctypes.c_char_p): + return obj + + # Convert from POINTER(ctypes.c_char) + elif isinstance(obj, ctypes.POINTER(ctypes.c_char)): + return obj + + # Convert from raw pointer + elif isinstance(obj, int): + return cls(ctypes.cast(obj, ctypes.POINTER(ctypes.c_char))) + + # Convert from ctypes.c_char array + elif isinstance(obj, ctypes.c_char * len(obj)): + return obj + + # Convert from object + else: + return String.from_param(obj._as_parameter_) + + from_param = classmethod(from_param) + + +def ReturnString(obj, func=None, arguments=None): + return String.from_param(obj) + + +# As of ctypes 1.0, ctypes does not support custom error-checking +# functions on callbacks, nor does it support custom datatypes on +# callbacks, so we must ensure that all callbacks return +# primitive datatypes. +# +# Non-primitive return values wrapped with UNCHECKED won't be +# typechecked, and will be converted to ctypes.c_void_p. +def UNCHECKED(type): + if hasattr(type, "_type_") and isinstance(type._type_, str) and type._type_ != "P": + return type + else: + return ctypes.c_void_p + + +# ctypes doesn't have direct support for variadic functions, so we have to write +# our own wrapper class +class _variadic_function(object): + def __init__(self, func, restype, argtypes, errcheck): + self.func = func + self.func.restype = restype + self.argtypes = argtypes + if errcheck: + self.func.errcheck = errcheck + + def _as_parameter_(self): + # So we can pass this variadic function as a function pointer + return self.func + + def __call__(self, *args): + fixed_args = [] + i = 0 + for argtype in self.argtypes: + # Typecheck what we can + fixed_args.append(argtype.from_param(args[i])) + i += 1 + return self.func(*fixed_args + list(args[i:])) + + +def ord_if_char(value): + """ + Simple helper used for casts to simple builtin types: if the argument is a + string type, it will be converted to it's ordinal value. + + This function will raise an exception if the argument is string with more + than one characters. + """ + return ord(value) if (isinstance(value, bytes) or isinstance(value, str)) else value + +# End preamble + +_libs = {} +_libdirs = [] + +# Begin loader + +""" +Load libraries - appropriately for all our supported platforms +""" +# ---------------------------------------------------------------------------- +# Copyright (c) 2008 David James +# Copyright (c) 2006-2008 Alex Holkner +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of pyglet nor the names of its +# contributors may be used to endorse or promote products +# derived from this software without specific prior written +# permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# ---------------------------------------------------------------------------- + +import ctypes +import ctypes.util +import glob +import os.path +import platform +import re +import sys + + +def _environ_path(name): + """Split an environment variable into a path-like list elements""" + if name in os.environ: + return os.environ[name].split(":") + return [] + + +class LibraryLoader: + """ + A base class For loading of libraries ;-) + Subclasses load libraries for specific platforms. + """ + + # library names formatted specifically for platforms + name_formats = ["%s"] + + class Lookup: + """Looking up calling conventions for a platform""" + + mode = ctypes.DEFAULT_MODE + + def __init__(self, path): + super(LibraryLoader.Lookup, self).__init__() + self.access = dict(cdecl=ctypes.CDLL(path, self.mode)) + + def get(self, name, calling_convention="cdecl"): + """Return the given name according to the selected calling convention""" + if calling_convention not in self.access: + raise LookupError( + "Unknown calling convention '{}' for function '{}'".format( + calling_convention, name + ) + ) + return getattr(self.access[calling_convention], name) + + def has(self, name, calling_convention="cdecl"): + """Return True if this given calling convention finds the given 'name'""" + if calling_convention not in self.access: + return False + return hasattr(self.access[calling_convention], name) + + def __getattr__(self, name): + return getattr(self.access["cdecl"], name) + + def __init__(self): + self.other_dirs = [] + + def __call__(self, libname): + """Given the name of a library, load it.""" + paths = self.getpaths(libname) + + for path in paths: + # noinspection PyBroadException + try: + return self.Lookup(path) + except Exception: # pylint: disable=broad-except + pass + + raise ImportError("Could not load %s." % libname) + + def getpaths(self, libname): + """Return a list of paths where the library might be found.""" + if os.path.isabs(libname): + yield libname + else: + # search through a prioritized series of locations for the library + + # we first search any specific directories identified by user + for dir_i in self.other_dirs: + for fmt in self.name_formats: + # dir_i should be absolute already + yield os.path.join(dir_i, fmt % libname) + + # check if this code is even stored in a physical file + try: + this_file = __file__ + except NameError: + this_file = None + + # then we search the directory where the generated python interface is stored + if this_file is not None: + for fmt in self.name_formats: + yield os.path.abspath(os.path.join(os.path.dirname(__file__), fmt % libname)) + + # now, use the ctypes tools to try to find the library + for fmt in self.name_formats: + path = ctypes.util.find_library(fmt % libname) + if path: + yield path + + # then we search all paths identified as platform-specific lib paths + for path in self.getplatformpaths(libname): + yield path + + # Finally, we'll try the users current working directory + for fmt in self.name_formats: + yield os.path.abspath(os.path.join(os.path.curdir, fmt % libname)) + + def getplatformpaths(self, _libname): # pylint: disable=no-self-use + """Return all the library paths available in this platform""" + return [] + + +# Darwin (Mac OS X) + + +class DarwinLibraryLoader(LibraryLoader): + """Library loader for MacOS""" + + name_formats = [ + "lib%s.dylib", + "lib%s.so", + "lib%s.bundle", + "%s.dylib", + "%s.so", + "%s.bundle", + "%s", + ] + + class Lookup(LibraryLoader.Lookup): + """ + Looking up library files for this platform (Darwin aka MacOS) + """ + + # Darwin requires dlopen to be called with mode RTLD_GLOBAL instead + # of the default RTLD_LOCAL. Without this, you end up with + # libraries not being loadable, resulting in "Symbol not found" + # errors + mode = ctypes.RTLD_GLOBAL + + def getplatformpaths(self, libname): + if os.path.pathsep in libname: + names = [libname] + else: + names = [fmt % libname for fmt in self.name_formats] + + for directory in self.getdirs(libname): + for name in names: + yield os.path.join(directory, name) + + @staticmethod + def getdirs(libname): + """Implements the dylib search as specified in Apple documentation: + + http://developer.apple.com/documentation/DeveloperTools/Conceptual/ + DynamicLibraries/Articles/DynamicLibraryUsageGuidelines.html + + Before commencing the standard search, the method first checks + the bundle's ``Frameworks`` directory if the application is running + within a bundle (OS X .app). + """ + + dyld_fallback_library_path = _environ_path("DYLD_FALLBACK_LIBRARY_PATH") + if not dyld_fallback_library_path: + dyld_fallback_library_path = [ + os.path.expanduser("~/lib"), + "/usr/local/lib", + "/usr/lib", + ] + + dirs = [] + + if "/" in libname: + dirs.extend(_environ_path("DYLD_LIBRARY_PATH")) + else: + dirs.extend(_environ_path("LD_LIBRARY_PATH")) + dirs.extend(_environ_path("DYLD_LIBRARY_PATH")) + dirs.extend(_environ_path("LD_RUN_PATH")) + + if hasattr(sys, "frozen") and getattr(sys, "frozen") == "macosx_app": + dirs.append(os.path.join(os.environ["RESOURCEPATH"], "..", "Frameworks")) + + dirs.extend(dyld_fallback_library_path) + + return dirs + + +# Posix + + +class PosixLibraryLoader(LibraryLoader): + """Library loader for POSIX-like systems (including Linux)""" + + _ld_so_cache = None + + _include = re.compile(r"^\s*include\s+(?P.*)") + + name_formats = ["lib%s.so", "%s.so", "%s"] + + class _Directories(dict): + """Deal with directories""" + + def __init__(self): + dict.__init__(self) + self.order = 0 + + def add(self, directory): + """Add a directory to our current set of directories""" + if len(directory) > 1: + directory = directory.rstrip(os.path.sep) + # only adds and updates order if exists and not already in set + if not os.path.exists(directory): + return + order = self.setdefault(directory, self.order) + if order == self.order: + self.order += 1 + + def extend(self, directories): + """Add a list of directories to our set""" + for a_dir in directories: + self.add(a_dir) + + def ordered(self): + """Sort the list of directories""" + return (i[0] for i in sorted(self.items(), key=lambda d: d[1])) + + def _get_ld_so_conf_dirs(self, conf, dirs): + """ + Recursive function to help parse all ld.so.conf files, including proper + handling of the `include` directive. + """ + + try: + with open(conf) as fileobj: + for dirname in fileobj: + dirname = dirname.strip() + if not dirname: + continue + + match = self._include.match(dirname) + if not match: + dirs.add(dirname) + else: + for dir2 in glob.glob(match.group("pattern")): + self._get_ld_so_conf_dirs(dir2, dirs) + except IOError: + pass + + def _create_ld_so_cache(self): + # Recreate search path followed by ld.so. This is going to be + # slow to build, and incorrect (ld.so uses ld.so.cache, which may + # not be up-to-date). Used only as fallback for distros without + # /sbin/ldconfig. + # + # We assume the DT_RPATH and DT_RUNPATH binary sections are omitted. + + directories = self._Directories() + for name in ( + "LD_LIBRARY_PATH", + "SHLIB_PATH", # HP-UX + "LIBPATH", # OS/2, AIX + "LIBRARY_PATH", # BE/OS + ): + if name in os.environ: + directories.extend(os.environ[name].split(os.pathsep)) + + self._get_ld_so_conf_dirs("/etc/ld.so.conf", directories) + + bitage = platform.architecture()[0] + + unix_lib_dirs_list = [] + if bitage.startswith("64"): + # prefer 64 bit if that is our arch + unix_lib_dirs_list += ["/lib64", "/usr/lib64"] + + # must include standard libs, since those paths are also used by 64 bit + # installs + unix_lib_dirs_list += ["/lib", "/usr/lib"] + if sys.platform.startswith("linux"): + # Try and support multiarch work in Ubuntu + # https://wiki.ubuntu.com/MultiarchSpec + if bitage.startswith("32"): + # Assume Intel/AMD x86 compat + unix_lib_dirs_list += ["/lib/i386-linux-gnu", "/usr/lib/i386-linux-gnu"] + elif bitage.startswith("64"): + # Assume Intel/AMD x86 compatible + unix_lib_dirs_list += [ + "/lib/x86_64-linux-gnu", + "/usr/lib/x86_64-linux-gnu", + ] + else: + # guess... + unix_lib_dirs_list += glob.glob("/lib/*linux-gnu") + directories.extend(unix_lib_dirs_list) + + cache = {} + lib_re = re.compile(r"lib(.*)\.s[ol]") + # ext_re = re.compile(r"\.s[ol]$") + for our_dir in directories.ordered(): + try: + for path in glob.glob("%s/*.s[ol]*" % our_dir): + file = os.path.basename(path) + + # Index by filename + cache_i = cache.setdefault(file, set()) + cache_i.add(path) + + # Index by library name + match = lib_re.match(file) + if match: + library = match.group(1) + cache_i = cache.setdefault(library, set()) + cache_i.add(path) + except OSError: + pass + + self._ld_so_cache = cache + + def getplatformpaths(self, libname): + if self._ld_so_cache is None: + self._create_ld_so_cache() + + result = self._ld_so_cache.get(libname, set()) + for i in result: + # we iterate through all found paths for library, since we may have + # actually found multiple architectures or other library types that + # may not load + yield i + + +# Windows + + +class WindowsLibraryLoader(LibraryLoader): + """Library loader for Microsoft Windows""" + + name_formats = ["%s.dll", "lib%s.dll", "%slib.dll", "%s"] + + class Lookup(LibraryLoader.Lookup): + """Lookup class for Windows libraries...""" + + def __init__(self, path): + super(WindowsLibraryLoader.Lookup, self).__init__(path) + self.access["stdcall"] = ctypes.windll.LoadLibrary(path) + + +# Platform switching + +# If your value of sys.platform does not appear in this dict, please contact +# the Ctypesgen maintainers. + +loaderclass = { + "darwin": DarwinLibraryLoader, + "cygwin": WindowsLibraryLoader, + "win32": WindowsLibraryLoader, + "msys": WindowsLibraryLoader, +} + +load_library = loaderclass.get(sys.platform, PosixLibraryLoader)() + + +def add_library_search_dirs(other_dirs): + """ + Add libraries to search paths. + If library paths are relative, convert them to absolute with respect to this + file's directory + """ + for path in other_dirs: + if not os.path.isabs(path): + path = os.path.abspath(path) + load_library.other_dirs.append(path) + + +del loaderclass + +# End loader + +add_library_search_dirs([]) + +# No libraries + +# No modules + +enum_ASI_BAYER_PATTERN = c_int# /usr/include/libasi/ASICamera2.h: 49 + +ASI_BAYER_RG = 0# /usr/include/libasi/ASICamera2.h: 49 + +ASI_BAYER_BG = (ASI_BAYER_RG + 1)# /usr/include/libasi/ASICamera2.h: 49 + +ASI_BAYER_GR = (ASI_BAYER_BG + 1)# /usr/include/libasi/ASICamera2.h: 49 + +ASI_BAYER_GB = (ASI_BAYER_GR + 1)# /usr/include/libasi/ASICamera2.h: 49 + +ASI_BAYER_PATTERN = enum_ASI_BAYER_PATTERN# /usr/include/libasi/ASICamera2.h: 49 + +enum_ASI_IMG_TYPE = c_int# /usr/include/libasi/ASICamera2.h: 58 + +ASI_IMG_RAW8 = 0# /usr/include/libasi/ASICamera2.h: 58 + +ASI_IMG_RGB24 = (ASI_IMG_RAW8 + 1)# /usr/include/libasi/ASICamera2.h: 58 + +ASI_IMG_RAW16 = (ASI_IMG_RGB24 + 1)# /usr/include/libasi/ASICamera2.h: 58 + +ASI_IMG_Y8 = (ASI_IMG_RAW16 + 1)# /usr/include/libasi/ASICamera2.h: 58 + +ASI_IMG_END = (-1)# /usr/include/libasi/ASICamera2.h: 58 + +ASI_IMG_TYPE = enum_ASI_IMG_TYPE# /usr/include/libasi/ASICamera2.h: 58 + +enum_ASI_GUIDE_DIRECTION = c_int# /usr/include/libasi/ASICamera2.h: 65 + +ASI_GUIDE_NORTH = 0# /usr/include/libasi/ASICamera2.h: 65 + +ASI_GUIDE_SOUTH = (ASI_GUIDE_NORTH + 1)# /usr/include/libasi/ASICamera2.h: 65 + +ASI_GUIDE_EAST = (ASI_GUIDE_SOUTH + 1)# /usr/include/libasi/ASICamera2.h: 65 + +ASI_GUIDE_WEST = (ASI_GUIDE_EAST + 1)# /usr/include/libasi/ASICamera2.h: 65 + +ASI_GUIDE_DIRECTION = enum_ASI_GUIDE_DIRECTION# /usr/include/libasi/ASICamera2.h: 65 + +enum_ASI_FLIP_STATUS = c_int# /usr/include/libasi/ASICamera2.h: 75 + +ASI_FLIP_NONE = 0# /usr/include/libasi/ASICamera2.h: 75 + +ASI_FLIP_HORIZ = (ASI_FLIP_NONE + 1)# /usr/include/libasi/ASICamera2.h: 75 + +ASI_FLIP_VERT = (ASI_FLIP_HORIZ + 1)# /usr/include/libasi/ASICamera2.h: 75 + +ASI_FLIP_BOTH = (ASI_FLIP_VERT + 1)# /usr/include/libasi/ASICamera2.h: 75 + +ASI_FLIP_STATUS = enum_ASI_FLIP_STATUS# /usr/include/libasi/ASICamera2.h: 75 + +enum_ASI_CAMERA_MODE = c_int# /usr/include/libasi/ASICamera2.h: 86 + +ASI_MODE_NORMAL = 0# /usr/include/libasi/ASICamera2.h: 86 + +ASI_MODE_TRIG_SOFT_EDGE = (ASI_MODE_NORMAL + 1)# /usr/include/libasi/ASICamera2.h: 86 + +ASI_MODE_TRIG_RISE_EDGE = (ASI_MODE_TRIG_SOFT_EDGE + 1)# /usr/include/libasi/ASICamera2.h: 86 + +ASI_MODE_TRIG_FALL_EDGE = (ASI_MODE_TRIG_RISE_EDGE + 1)# /usr/include/libasi/ASICamera2.h: 86 + +ASI_MODE_TRIG_SOFT_LEVEL = (ASI_MODE_TRIG_FALL_EDGE + 1)# /usr/include/libasi/ASICamera2.h: 86 + +ASI_MODE_TRIG_HIGH_LEVEL = (ASI_MODE_TRIG_SOFT_LEVEL + 1)# /usr/include/libasi/ASICamera2.h: 86 + +ASI_MODE_TRIG_LOW_LEVEL = (ASI_MODE_TRIG_HIGH_LEVEL + 1)# /usr/include/libasi/ASICamera2.h: 86 + +ASI_MODE_END = (-1)# /usr/include/libasi/ASICamera2.h: 86 + +ASI_CAMERA_MODE = enum_ASI_CAMERA_MODE# /usr/include/libasi/ASICamera2.h: 86 + +enum_ASI_TRIG_OUTPUT = c_int# /usr/include/libasi/ASICamera2.h: 92 + +ASI_TRIG_OUTPUT_PINA = 0# /usr/include/libasi/ASICamera2.h: 92 + +ASI_TRIG_OUTPUT_PINB = (ASI_TRIG_OUTPUT_PINA + 1)# /usr/include/libasi/ASICamera2.h: 92 + +ASI_TRIG_OUTPUT_NONE = (-1)# /usr/include/libasi/ASICamera2.h: 92 + +ASI_TRIG_OUTPUT_PIN = enum_ASI_TRIG_OUTPUT# /usr/include/libasi/ASICamera2.h: 92 + +enum_ASI_ERROR_CODE = c_int# /usr/include/libasi/ASICamera2.h: 119 + +ASI_SUCCESS = 0# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_INVALID_INDEX = (ASI_SUCCESS + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_INVALID_ID = (ASI_ERROR_INVALID_INDEX + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_INVALID_CONTROL_TYPE = (ASI_ERROR_INVALID_ID + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_CAMERA_CLOSED = (ASI_ERROR_INVALID_CONTROL_TYPE + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_CAMERA_REMOVED = (ASI_ERROR_CAMERA_CLOSED + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_INVALID_PATH = (ASI_ERROR_CAMERA_REMOVED + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_INVALID_FILEFORMAT = (ASI_ERROR_INVALID_PATH + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_INVALID_SIZE = (ASI_ERROR_INVALID_FILEFORMAT + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_INVALID_IMGTYPE = (ASI_ERROR_INVALID_SIZE + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_OUTOF_BOUNDARY = (ASI_ERROR_INVALID_IMGTYPE + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_TIMEOUT = (ASI_ERROR_OUTOF_BOUNDARY + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_INVALID_SEQUENCE = (ASI_ERROR_TIMEOUT + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_BUFFER_TOO_SMALL = (ASI_ERROR_INVALID_SEQUENCE + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_VIDEO_MODE_ACTIVE = (ASI_ERROR_BUFFER_TOO_SMALL + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_EXPOSURE_IN_PROGRESS = (ASI_ERROR_VIDEO_MODE_ACTIVE + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_GENERAL_ERROR = (ASI_ERROR_EXPOSURE_IN_PROGRESS + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_INVALID_MODE = (ASI_ERROR_GENERAL_ERROR + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_GPS_NOT_SUPPORTED = (ASI_ERROR_INVALID_MODE + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_GPS_VER_ERR = (ASI_ERROR_GPS_NOT_SUPPORTED + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_GPS_FPGA_ERR = (ASI_ERROR_GPS_VER_ERR + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_GPS_PARAM_OUT_OF_RANGE = (ASI_ERROR_GPS_FPGA_ERR + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_GPS_DATA_INVALID = (ASI_ERROR_GPS_PARAM_OUT_OF_RANGE + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_END = (ASI_ERROR_GPS_DATA_INVALID + 1)# /usr/include/libasi/ASICamera2.h: 119 + +ASI_ERROR_CODE = enum_ASI_ERROR_CODE# /usr/include/libasi/ASICamera2.h: 119 + +enum_ASI_BOOL = c_int# /usr/include/libasi/ASICamera2.h: 124 + +ASI_FALSE = 0# /usr/include/libasi/ASICamera2.h: 124 + +ASI_TRUE = (ASI_FALSE + 1)# /usr/include/libasi/ASICamera2.h: 124 + +ASI_BOOL = enum_ASI_BOOL# /usr/include/libasi/ASICamera2.h: 124 + +# /usr/include/libasi/ASICamera2.h: 150 +class struct__ASI_CAMERA_INFO(Structure): + pass + +struct__ASI_CAMERA_INFO.__slots__ = [ + 'Name', + 'CameraID', + 'MaxHeight', + 'MaxWidth', + 'IsColorCam', + 'BayerPattern', + 'SupportedBins', + 'SupportedVideoFormat', + 'PixelSize', + 'MechanicalShutter', + 'ST4Port', + 'IsCoolerCam', + 'IsUSB3Host', + 'IsUSB3Camera', + 'ElecPerADU', + 'BitDepth', + 'IsTriggerCam', + 'Unused', +] +struct__ASI_CAMERA_INFO._fields_ = [ + ('Name', c_char * int(64)), + ('CameraID', c_int), + ('MaxHeight', c_long), + ('MaxWidth', c_long), + ('IsColorCam', ASI_BOOL), + ('BayerPattern', ASI_BAYER_PATTERN), + ('SupportedBins', c_int * int(16)), + ('SupportedVideoFormat', ASI_IMG_TYPE * int(8)), + ('PixelSize', c_double), + ('MechanicalShutter', ASI_BOOL), + ('ST4Port', ASI_BOOL), + ('IsCoolerCam', ASI_BOOL), + ('IsUSB3Host', ASI_BOOL), + ('IsUSB3Camera', ASI_BOOL), + ('ElecPerADU', c_float), + ('BitDepth', c_int), + ('IsTriggerCam', ASI_BOOL), + ('Unused', c_char * int(16)), +] + +ASI_CAMERA_INFO = struct__ASI_CAMERA_INFO# /usr/include/libasi/ASICamera2.h: 150 + +enum_ASI_CONTROL_TYPE = c_int# /usr/include/libasi/ASICamera2.h: 185 + +ASI_GAIN = 0# /usr/include/libasi/ASICamera2.h: 185 + +ASI_EXPOSURE = (ASI_GAIN + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_GAMMA = (ASI_EXPOSURE + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_WB_R = (ASI_GAMMA + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_WB_B = (ASI_WB_R + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_OFFSET = (ASI_WB_B + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_BANDWIDTHOVERLOAD = (ASI_OFFSET + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_OVERCLOCK = (ASI_BANDWIDTHOVERLOAD + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_TEMPERATURE = (ASI_OVERCLOCK + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_FLIP = (ASI_TEMPERATURE + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_AUTO_MAX_GAIN = (ASI_FLIP + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_AUTO_MAX_EXP = (ASI_AUTO_MAX_GAIN + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_AUTO_TARGET_BRIGHTNESS = (ASI_AUTO_MAX_EXP + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_HARDWARE_BIN = (ASI_AUTO_TARGET_BRIGHTNESS + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_HIGH_SPEED_MODE = (ASI_HARDWARE_BIN + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_COOLER_POWER_PERC = (ASI_HIGH_SPEED_MODE + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_TARGET_TEMP = (ASI_COOLER_POWER_PERC + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_COOLER_ON = (ASI_TARGET_TEMP + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_MONO_BIN = (ASI_COOLER_ON + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_FAN_ON = (ASI_MONO_BIN + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_PATTERN_ADJUST = (ASI_FAN_ON + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_ANTI_DEW_HEATER = (ASI_PATTERN_ADJUST + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_FAN_ADJUST = (ASI_ANTI_DEW_HEATER + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_PWRLED_BRIGNT = (ASI_FAN_ADJUST + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_USBHUB_RESET = (ASI_PWRLED_BRIGNT + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_GPS_SUPPORT = (ASI_USBHUB_RESET + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_GPS_START_LINE = (ASI_GPS_SUPPORT + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_GPS_END_LINE = (ASI_GPS_START_LINE + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_ROLLING_INTERVAL = (ASI_GPS_END_LINE + 1)# /usr/include/libasi/ASICamera2.h: 185 + +ASI_CONTROL_TYPE = enum_ASI_CONTROL_TYPE# /usr/include/libasi/ASICamera2.h: 185 + +# /usr/include/libasi/ASICamera2.h: 198 +class struct__ASI_CONTROL_CAPS(Structure): + pass + +struct__ASI_CONTROL_CAPS.__slots__ = [ + 'Name', + 'Description', + 'MaxValue', + 'MinValue', + 'DefaultValue', + 'IsAutoSupported', + 'IsWritable', + 'ControlType', + 'Unused', +] +struct__ASI_CONTROL_CAPS._fields_ = [ + ('Name', c_char * int(64)), + ('Description', c_char * int(128)), + ('MaxValue', c_long), + ('MinValue', c_long), + ('DefaultValue', c_long), + ('IsAutoSupported', ASI_BOOL), + ('IsWritable', ASI_BOOL), + ('ControlType', ASI_CONTROL_TYPE), + ('Unused', c_char * int(32)), +] + +ASI_CONTROL_CAPS = struct__ASI_CONTROL_CAPS# /usr/include/libasi/ASICamera2.h: 198 + +enum_ASI_EXPOSURE_STATUS = c_int# /usr/include/libasi/ASICamera2.h: 206 + +ASI_EXP_IDLE = 0# /usr/include/libasi/ASICamera2.h: 206 + +ASI_EXP_WORKING = (ASI_EXP_IDLE + 1)# /usr/include/libasi/ASICamera2.h: 206 + +ASI_EXP_SUCCESS = (ASI_EXP_WORKING + 1)# /usr/include/libasi/ASICamera2.h: 206 + +ASI_EXP_FAILED = (ASI_EXP_SUCCESS + 1)# /usr/include/libasi/ASICamera2.h: 206 + +ASI_EXPOSURE_STATUS = enum_ASI_EXPOSURE_STATUS# /usr/include/libasi/ASICamera2.h: 206 + +# /usr/include/libasi/ASICamera2.h: 210 +class struct__ASI_ID(Structure): + pass + +struct__ASI_ID.__slots__ = [ + 'id', +] +struct__ASI_ID._fields_ = [ + ('id', c_ubyte * int(8)), +] + +ASI_ID = struct__ASI_ID# /usr/include/libasi/ASICamera2.h: 210 + +ASI_SN = ASI_ID# /usr/include/libasi/ASICamera2.h: 212 + +# /usr/include/libasi/ASICamera2.h: 216 +class struct__ASI_SUPPORTED_MODE(Structure): + pass + +struct__ASI_SUPPORTED_MODE.__slots__ = [ + 'SupportedCameraMode', +] +struct__ASI_SUPPORTED_MODE._fields_ = [ + ('SupportedCameraMode', ASI_CAMERA_MODE * int(16)), +] + +ASI_SUPPORTED_MODE = struct__ASI_SUPPORTED_MODE# /usr/include/libasi/ASICamera2.h: 216 + +# /usr/include/libasi/ASICamera2.h: 228 +class struct__ASI_DATE_TIME(Structure): + pass + +struct__ASI_DATE_TIME.__slots__ = [ + 'Year', + 'Month', + 'Day', + 'Hour', + 'Minute', + 'Second', + 'Msecond', + 'Usecond', + 'Unused', +] +struct__ASI_DATE_TIME._fields_ = [ + ('Year', c_int), + ('Month', c_int), + ('Day', c_int), + ('Hour', c_int), + ('Minute', c_int), + ('Second', c_int), + ('Msecond', c_int), + ('Usecond', c_int), + ('Unused', c_char * int(64)), +] + +ASI_DATE_TIME = struct__ASI_DATE_TIME# /usr/include/libasi/ASICamera2.h: 228 + +# /usr/include/libasi/ASICamera2.h: 237 +class struct__ASI_GPS_DATA(Structure): + pass + +struct__ASI_GPS_DATA.__slots__ = [ + 'Datetime', + 'Latitude', + 'Longitude', + 'Altitude', + 'SatelliteNum', + 'Unused', +] +struct__ASI_GPS_DATA._fields_ = [ + ('Datetime', ASI_DATE_TIME), + ('Latitude', c_double), + ('Longitude', c_double), + ('Altitude', c_int), + ('SatelliteNum', c_int), + ('Unused', c_char * int(64)), +] + +ASI_GPS_DATA = struct__ASI_GPS_DATA# /usr/include/libasi/ASICamera2.h: 237 + +# /usr/include/libasi/ASICamera2.h: 262 +for _lib in _libs.values(): + if not _lib.has("ASIGetNumOfConnectedCameras", "cdecl"): + continue + ASIGetNumOfConnectedCameras = _lib.get("ASIGetNumOfConnectedCameras", "cdecl") + ASIGetNumOfConnectedCameras.argtypes = [] + ASIGetNumOfConnectedCameras.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 275 +for _lib in _libs.values(): + if not _lib.has("ASIGetProductIDs", "cdecl"): + continue + ASIGetProductIDs = _lib.get("ASIGetProductIDs", "cdecl") + ASIGetProductIDs.argtypes = [POINTER(c_int)] + ASIGetProductIDs.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 287 +for _lib in _libs.values(): + if not _lib.has("ASICameraCheck", "cdecl"): + continue + ASICameraCheck = _lib.get("ASICameraCheck", "cdecl") + ASICameraCheck.argtypes = [c_int, c_int] + ASICameraCheck.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 312 +for _lib in _libs.values(): + if not _lib.has("ASIGetCameraProperty", "cdecl"): + continue + ASIGetCameraProperty = _lib.get("ASIGetCameraProperty", "cdecl") + ASIGetCameraProperty.argtypes = [POINTER(ASI_CAMERA_INFO), c_int] + ASIGetCameraProperty.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 330 +for _lib in _libs.values(): + if not _lib.has("ASIGetCameraPropertyByID", "cdecl"): + continue + ASIGetCameraPropertyByID = _lib.get("ASIGetCameraPropertyByID", "cdecl") + ASIGetCameraPropertyByID.argtypes = [c_int, POINTER(ASI_CAMERA_INFO)] + ASIGetCameraPropertyByID.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 347 +for _lib in _libs.values(): + if not _lib.has("ASIOpenCamera", "cdecl"): + continue + ASIOpenCamera = _lib.get("ASIOpenCamera", "cdecl") + ASIOpenCamera.argtypes = [c_int] + ASIOpenCamera.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 362 +for _lib in _libs.values(): + if not _lib.has("ASIInitCamera", "cdecl"): + continue + ASIInitCamera = _lib.get("ASIInitCamera", "cdecl") + ASIInitCamera.argtypes = [c_int] + ASIInitCamera.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 377 +for _lib in _libs.values(): + if not _lib.has("ASICloseCamera", "cdecl"): + continue + ASICloseCamera = _lib.get("ASICloseCamera", "cdecl") + ASICloseCamera.argtypes = [c_int] + ASICloseCamera.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 397 +for _lib in _libs.values(): + if not _lib.has("ASIGetNumOfControls", "cdecl"): + continue + ASIGetNumOfControls = _lib.get("ASIGetNumOfControls", "cdecl") + ASIGetNumOfControls.argtypes = [c_int, POINTER(c_int)] + ASIGetNumOfControls.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 418 +for _lib in _libs.values(): + if not _lib.has("ASIGetControlCaps", "cdecl"): + continue + ASIGetControlCaps = _lib.get("ASIGetControlCaps", "cdecl") + ASIGetControlCaps.argtypes = [c_int, c_int, POINTER(ASI_CONTROL_CAPS)] + ASIGetControlCaps.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 438 +for _lib in _libs.values(): + if not _lib.has("ASIGetControlValue", "cdecl"): + continue + ASIGetControlValue = _lib.get("ASIGetControlValue", "cdecl") + ASIGetControlValue.argtypes = [c_int, c_int, POINTER(c_long), POINTER(c_int)] + ASIGetControlValue.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 459 +for _lib in _libs.values(): + if not _lib.has("ASISetControlValue", "cdecl"): + continue + ASISetControlValue = _lib.get("ASISetControlValue", "cdecl") + ASISetControlValue.argtypes = [c_int, c_int, c_long, c_int] + ASISetControlValue.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 484 +for _lib in _libs.values(): + if not _lib.has("ASISetROIFormat", "cdecl"): + continue + ASISetROIFormat = _lib.get("ASISetROIFormat", "cdecl") + ASISetROIFormat.argtypes = [c_int, c_int, c_int, c_int, c_int] + ASISetROIFormat.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 504 +for _lib in _libs.values(): + if not _lib.has("ASIGetROIFormat", "cdecl"): + continue + ASIGetROIFormat = _lib.get("ASIGetROIFormat", "cdecl") + ASIGetROIFormat.argtypes = [c_int, POINTER(c_int), POINTER(c_int), POINTER(c_int), POINTER(c_int)] + ASIGetROIFormat.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 527 +for _lib in _libs.values(): + if not _lib.has("ASISetStartPos", "cdecl"): + continue + ASISetStartPos = _lib.get("ASISetStartPos", "cdecl") + ASISetStartPos.argtypes = [c_int, c_int, c_int] + ASISetStartPos.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 544 +for _lib in _libs.values(): + if not _lib.has("ASIGetStartPos", "cdecl"): + continue + ASIGetStartPos = _lib.get("ASIGetStartPos", "cdecl") + ASIGetStartPos.argtypes = [c_int, POINTER(c_int), POINTER(c_int)] + ASIGetStartPos.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 562 +for _lib in _libs.values(): + if not _lib.has("ASIGetDroppedFrames", "cdecl"): + continue + ASIGetDroppedFrames = _lib.get("ASIGetDroppedFrames", "cdecl") + ASIGetDroppedFrames.argtypes = [c_int, POINTER(c_int)] + ASIGetDroppedFrames.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 588 +for _lib in _libs.values(): + if not _lib.has("ASIEnableDarkSubtract", "cdecl"): + continue + ASIEnableDarkSubtract = _lib.get("ASIEnableDarkSubtract", "cdecl") + ASIEnableDarkSubtract.argtypes = [c_int, String] + ASIEnableDarkSubtract.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 605 +for _lib in _libs.values(): + if not _lib.has("ASIDisableDarkSubtract", "cdecl"): + continue + ASIDisableDarkSubtract = _lib.get("ASIDisableDarkSubtract", "cdecl") + ASIDisableDarkSubtract.argtypes = [c_int] + ASIDisableDarkSubtract.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 622 +for _lib in _libs.values(): + if not _lib.has("ASIStartVideoCapture", "cdecl"): + continue + ASIStartVideoCapture = _lib.get("ASIStartVideoCapture", "cdecl") + ASIStartVideoCapture.argtypes = [c_int] + ASIStartVideoCapture.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 638 +for _lib in _libs.values(): + if not _lib.has("ASIStopVideoCapture", "cdecl"): + continue + ASIStopVideoCapture = _lib.get("ASIStopVideoCapture", "cdecl") + ASIStopVideoCapture.argtypes = [c_int] + ASIStopVideoCapture.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 666 +for _lib in _libs.values(): + if not _lib.has("ASIGetVideoData", "cdecl"): + continue + ASIGetVideoData = _lib.get("ASIGetVideoData", "cdecl") + ASIGetVideoData.argtypes = [c_int, POINTER(c_ubyte), c_long, c_int] + ASIGetVideoData.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 698 +for _lib in _libs.values(): + if not _lib.has("ASIGetVideoDataGPS", "cdecl"): + continue + ASIGetVideoDataGPS = _lib.get("ASIGetVideoDataGPS", "cdecl") + ASIGetVideoDataGPS.argtypes = [c_int, POINTER(c_ubyte), c_long, c_int, POINTER(ASI_GPS_DATA)] + ASIGetVideoDataGPS.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 716 +for _lib in _libs.values(): + if not _lib.has("ASIPulseGuideOn", "cdecl"): + continue + ASIPulseGuideOn = _lib.get("ASIPulseGuideOn", "cdecl") + ASIPulseGuideOn.argtypes = [c_int, c_int] + ASIPulseGuideOn.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 733 +for _lib in _libs.values(): + if not _lib.has("ASIPulseGuideOff", "cdecl"): + continue + ASIPulseGuideOff = _lib.get("ASIPulseGuideOff", "cdecl") + ASIPulseGuideOff.argtypes = [c_int, c_int] + ASIPulseGuideOff.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 752 +for _lib in _libs.values(): + if not _lib.has("ASIStartExposure", "cdecl"): + continue + ASIStartExposure = _lib.get("ASIStartExposure", "cdecl") + ASIStartExposure.argtypes = [c_int, c_int] + ASIStartExposure.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 769 +for _lib in _libs.values(): + if not _lib.has("ASIStopExposure", "cdecl"): + continue + ASIStopExposure = _lib.get("ASIStopExposure", "cdecl") + ASIStopExposure.argtypes = [c_int] + ASIStopExposure.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 789 +for _lib in _libs.values(): + if not _lib.has("ASIGetExpStatus", "cdecl"): + continue + ASIGetExpStatus = _lib.get("ASIGetExpStatus", "cdecl") + ASIGetExpStatus.argtypes = [c_int, POINTER(ASI_EXPOSURE_STATUS)] + ASIGetExpStatus.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 813 +for _lib in _libs.values(): + if not _lib.has("ASIGetDataAfterExp", "cdecl"): + continue + ASIGetDataAfterExp = _lib.get("ASIGetDataAfterExp", "cdecl") + ASIGetDataAfterExp.argtypes = [c_int, POINTER(c_ubyte), c_long] + ASIGetDataAfterExp.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 840 +for _lib in _libs.values(): + if not _lib.has("ASIGetDataAfterExpGPS", "cdecl"): + continue + ASIGetDataAfterExpGPS = _lib.get("ASIGetDataAfterExpGPS", "cdecl") + ASIGetDataAfterExpGPS.argtypes = [c_int, POINTER(c_ubyte), c_long, POINTER(ASI_GPS_DATA)] + ASIGetDataAfterExpGPS.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 855 +for _lib in _libs.values(): + if not _lib.has("ASIGetID", "cdecl"): + continue + ASIGetID = _lib.get("ASIGetID", "cdecl") + ASIGetID.argtypes = [c_int, POINTER(ASI_ID)] + ASIGetID.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 870 +for _lib in _libs.values(): + if not _lib.has("ASISetID", "cdecl"): + continue + ASISetID = _lib.get("ASISetID", "cdecl") + ASISetID.argtypes = [c_int, ASI_ID] + ASISetID.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 886 +for _lib in _libs.values(): + if not _lib.has("ASIGetGainOffset", "cdecl"): + continue + ASIGetGainOffset = _lib.get("ASIGetGainOffset", "cdecl") + ASIGetGainOffset.argtypes = [c_int, POINTER(c_int), POINTER(c_int), POINTER(c_int), POINTER(c_int)] + ASIGetGainOffset.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 903 +for _lib in _libs.values(): + if not _lib.has("ASIGetLMHGainOffset", "cdecl"): + continue + ASIGetLMHGainOffset = _lib.get("ASIGetLMHGainOffset", "cdecl") + ASIGetLMHGainOffset.argtypes = [c_int, POINTER(c_int), POINTER(c_int), POINTER(c_int), POINTER(c_int)] + ASIGetLMHGainOffset.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 909 +for _lib in _libs.values(): + if not _lib.has("ASIGetSDKVersion", "cdecl"): + continue + ASIGetSDKVersion = _lib.get("ASIGetSDKVersion", "cdecl") + ASIGetSDKVersion.argtypes = [] + if sizeof(c_int) == sizeof(c_void_p): + ASIGetSDKVersion.restype = ReturnString + else: + ASIGetSDKVersion.restype = String + ASIGetSDKVersion.errcheck = ReturnString + break + +# /usr/include/libasi/ASICamera2.h: 923 +for _lib in _libs.values(): + if not _lib.has("ASIGetCameraSupportMode", "cdecl"): + continue + ASIGetCameraSupportMode = _lib.get("ASIGetCameraSupportMode", "cdecl") + ASIGetCameraSupportMode.argtypes = [c_int, POINTER(ASI_SUPPORTED_MODE)] + ASIGetCameraSupportMode.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 937 +for _lib in _libs.values(): + if not _lib.has("ASIGetCameraMode", "cdecl"): + continue + ASIGetCameraMode = _lib.get("ASIGetCameraMode", "cdecl") + ASIGetCameraMode.argtypes = [c_int, POINTER(ASI_CAMERA_MODE)] + ASIGetCameraMode.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 952 +for _lib in _libs.values(): + if not _lib.has("ASISetCameraMode", "cdecl"): + continue + ASISetCameraMode = _lib.get("ASISetCameraMode", "cdecl") + ASISetCameraMode.argtypes = [c_int, ASI_CAMERA_MODE] + ASISetCameraMode.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 968 +for _lib in _libs.values(): + if not _lib.has("ASISendSoftTrigger", "cdecl"): + continue + ASISendSoftTrigger = _lib.get("ASISendSoftTrigger", "cdecl") + ASISendSoftTrigger.argtypes = [c_int, c_int] + ASISendSoftTrigger.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 983 +for _lib in _libs.values(): + if not _lib.has("ASIGetSerialNumber", "cdecl"): + continue + ASIGetSerialNumber = _lib.get("ASIGetSerialNumber", "cdecl") + ASIGetSerialNumber.argtypes = [c_int, POINTER(ASI_SN)] + ASIGetSerialNumber.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 1005 +for _lib in _libs.values(): + if not _lib.has("ASISetTriggerOutputIOConf", "cdecl"): + continue + ASISetTriggerOutputIOConf = _lib.get("ASISetTriggerOutputIOConf", "cdecl") + ASISetTriggerOutputIOConf.argtypes = [c_int, ASI_TRIG_OUTPUT_PIN, c_int, c_long, c_long] + ASISetTriggerOutputIOConf.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 1024 +for _lib in _libs.values(): + if not _lib.has("ASIGetTriggerOutputIOConf", "cdecl"): + continue + ASIGetTriggerOutputIOConf = _lib.get("ASIGetTriggerOutputIOConf", "cdecl") + ASIGetTriggerOutputIOConf.argtypes = [c_int, ASI_TRIG_OUTPUT_PIN, POINTER(c_int), POINTER(c_long), POINTER(c_long)] + ASIGetTriggerOutputIOConf.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 1043 +for _lib in _libs.values(): + if not _lib.has("ASIGPSGetData", "cdecl"): + continue + ASIGPSGetData = _lib.get("ASIGPSGetData", "cdecl") + ASIGPSGetData.argtypes = [c_int, POINTER(ASI_GPS_DATA), POINTER(ASI_GPS_DATA)] + ASIGPSGetData.restype = c_int + break + +# /usr/include/libasi/ASICamera2.h: 42 +try: + ASICAMERA_ID_MAX = 256 +except: + pass + +# /usr/include/libasi/ASICamera2.h: 152 +try: + ASI_BRIGHTNESS = ASI_OFFSET +except: + pass + +# /usr/include/libasi/ASICamera2.h: 153 +try: + ASI_AUTO_MAX_BRIGHTNESS = ASI_AUTO_TARGET_BRIGHTNESS +except: + pass + +ASI_CONTROL_TYPE = c_int# /usr/include/libasi/ASICamera2.h: 240 + +ASI_BOOL = c_int# /usr/include/libasi/ASICamera2.h: 241 + +ASI_ERROR_CODE = c_int# /usr/include/libasi/ASICamera2.h: 242 + +ASI_FLIP_STATUS = c_int# /usr/include/libasi/ASICamera2.h: 243 + +ASI_IMG_TYPE = c_int# /usr/include/libasi/ASICamera2.h: 244 + +ASI_GUIDE_DIRECTION = c_int# /usr/include/libasi/ASICamera2.h: 245 + +ASI_BAYER_PATTERN = c_int# /usr/include/libasi/ASICamera2.h: 246 + +_ASI_CAMERA_INFO = struct__ASI_CAMERA_INFO# /usr/include/libasi/ASICamera2.h: 150 + +_ASI_CONTROL_CAPS = struct__ASI_CONTROL_CAPS# /usr/include/libasi/ASICamera2.h: 198 + +_ASI_ID = struct__ASI_ID# /usr/include/libasi/ASICamera2.h: 210 + +_ASI_SUPPORTED_MODE = struct__ASI_SUPPORTED_MODE# /usr/include/libasi/ASICamera2.h: 216 + +_ASI_DATE_TIME = struct__ASI_DATE_TIME# /usr/include/libasi/ASICamera2.h: 228 + +_ASI_GPS_DATA = struct__ASI_GPS_DATA# /usr/include/libasi/ASICamera2.h: 237 + +# No inserted files + +# No prefix-stripping + diff --git a/modules/lithium.pydevice/zwoasi/libs/eaf.py b/modules/lithium.pydevice/zwoasi/libs/eaf.py new file mode 100644 index 00000000..23bbd603 --- /dev/null +++ b/modules/lithium.pydevice/zwoasi/libs/eaf.py @@ -0,0 +1,1127 @@ +r"""Wrapper for EAF_focuser.h + +Do not modify this file. +""" + +__docformat__ = "restructuredtext" + +# Begin preamble for Python + +import ctypes +import sys +from ctypes import * # noqa: F401, F403 + +_int_types = (ctypes.c_int16, ctypes.c_int32) +if hasattr(ctypes, "c_int64"): + # Some builds of ctypes apparently do not have ctypes.c_int64 + # defined; it's a pretty good bet that these builds do not + # have 64-bit pointers. + _int_types += (ctypes.c_int64,) +for t in _int_types: + if ctypes.sizeof(t) == ctypes.sizeof(ctypes.c_size_t): + c_ptrdiff_t = t +del t +del _int_types + + + +class UserString: + def __init__(self, seq): + if isinstance(seq, bytes): + self.data = seq + elif isinstance(seq, UserString): + self.data = seq.data[:] + else: + self.data = str(seq).encode() + + def __bytes__(self): + return self.data + + def __str__(self): + return self.data.decode() + + def __repr__(self): + return repr(self.data) + + def __int__(self): + return int(self.data.decode()) + + def __long__(self): + return int(self.data.decode()) + + def __float__(self): + return float(self.data.decode()) + + def __complex__(self): + return complex(self.data.decode()) + + def __hash__(self): + return hash(self.data) + + def __le__(self, string): + if isinstance(string, UserString): + return self.data <= string.data + else: + return self.data <= string + + def __lt__(self, string): + if isinstance(string, UserString): + return self.data < string.data + else: + return self.data < string + + def __ge__(self, string): + if isinstance(string, UserString): + return self.data >= string.data + else: + return self.data >= string + + def __gt__(self, string): + if isinstance(string, UserString): + return self.data > string.data + else: + return self.data > string + + def __eq__(self, string): + if isinstance(string, UserString): + return self.data == string.data + else: + return self.data == string + + def __ne__(self, string): + if isinstance(string, UserString): + return self.data != string.data + else: + return self.data != string + + def __contains__(self, char): + return char in self.data + + def __len__(self): + return len(self.data) + + def __getitem__(self, index): + return self.__class__(self.data[index]) + + def __getslice__(self, start, end): + start = max(start, 0) + end = max(end, 0) + return self.__class__(self.data[start:end]) + + def __add__(self, other): + if isinstance(other, UserString): + return self.__class__(self.data + other.data) + elif isinstance(other, bytes): + return self.__class__(self.data + other) + else: + return self.__class__(self.data + str(other).encode()) + + def __radd__(self, other): + if isinstance(other, bytes): + return self.__class__(other + self.data) + else: + return self.__class__(str(other).encode() + self.data) + + def __mul__(self, n): + return self.__class__(self.data * n) + + __rmul__ = __mul__ + + def __mod__(self, args): + return self.__class__(self.data % args) + + # the following methods are defined in alphabetical order: + def capitalize(self): + return self.__class__(self.data.capitalize()) + + def center(self, width, *args): + return self.__class__(self.data.center(width, *args)) + + def count(self, sub, start=0, end=sys.maxsize): + return self.data.count(sub, start, end) + + def decode(self, encoding=None, errors=None): # XXX improve this? + if encoding: + if errors: + return self.__class__(self.data.decode(encoding, errors)) + else: + return self.__class__(self.data.decode(encoding)) + else: + return self.__class__(self.data.decode()) + + def encode(self, encoding=None, errors=None): # XXX improve this? + if encoding: + if errors: + return self.__class__(self.data.encode(encoding, errors)) + else: + return self.__class__(self.data.encode(encoding)) + else: + return self.__class__(self.data.encode()) + + def endswith(self, suffix, start=0, end=sys.maxsize): + return self.data.endswith(suffix, start, end) + + def expandtabs(self, tabsize=8): + return self.__class__(self.data.expandtabs(tabsize)) + + def find(self, sub, start=0, end=sys.maxsize): + return self.data.find(sub, start, end) + + def index(self, sub, start=0, end=sys.maxsize): + return self.data.index(sub, start, end) + + def isalpha(self): + return self.data.isalpha() + + def isalnum(self): + return self.data.isalnum() + + def isdecimal(self): + return self.data.isdecimal() + + def isdigit(self): + return self.data.isdigit() + + def islower(self): + return self.data.islower() + + def isnumeric(self): + return self.data.isnumeric() + + def isspace(self): + return self.data.isspace() + + def istitle(self): + return self.data.istitle() + + def isupper(self): + return self.data.isupper() + + def join(self, seq): + return self.data.join(seq) + + def ljust(self, width, *args): + return self.__class__(self.data.ljust(width, *args)) + + def lower(self): + return self.__class__(self.data.lower()) + + def lstrip(self, chars=None): + return self.__class__(self.data.lstrip(chars)) + + def partition(self, sep): + return self.data.partition(sep) + + def replace(self, old, new, maxsplit=-1): + return self.__class__(self.data.replace(old, new, maxsplit)) + + def rfind(self, sub, start=0, end=sys.maxsize): + return self.data.rfind(sub, start, end) + + def rindex(self, sub, start=0, end=sys.maxsize): + return self.data.rindex(sub, start, end) + + def rjust(self, width, *args): + return self.__class__(self.data.rjust(width, *args)) + + def rpartition(self, sep): + return self.data.rpartition(sep) + + def rstrip(self, chars=None): + return self.__class__(self.data.rstrip(chars)) + + def split(self, sep=None, maxsplit=-1): + return self.data.split(sep, maxsplit) + + def rsplit(self, sep=None, maxsplit=-1): + return self.data.rsplit(sep, maxsplit) + + def splitlines(self, keepends=0): + return self.data.splitlines(keepends) + + def startswith(self, prefix, start=0, end=sys.maxsize): + return self.data.startswith(prefix, start, end) + + def strip(self, chars=None): + return self.__class__(self.data.strip(chars)) + + def swapcase(self): + return self.__class__(self.data.swapcase()) + + def title(self): + return self.__class__(self.data.title()) + + def translate(self, *args): + return self.__class__(self.data.translate(*args)) + + def upper(self): + return self.__class__(self.data.upper()) + + def zfill(self, width): + return self.__class__(self.data.zfill(width)) + + +class MutableString(UserString): + """mutable string objects + + Python strings are immutable objects. This has the advantage, that + strings may be used as dictionary keys. If this property isn't needed + and you insist on changing string values in place instead, you may cheat + and use MutableString. + + But the purpose of this class is an educational one: to prevent + people from inventing their own mutable string class derived + from UserString and than forget thereby to remove (override) the + __hash__ method inherited from UserString. This would lead to + errors that would be very hard to track down. + + A faster and better solution is to rewrite your program using lists.""" + + def __init__(self, string=""): + self.data = string + + def __hash__(self): + raise TypeError("unhashable type (it is mutable)") + + def __setitem__(self, index, sub): + if index < 0: + index += len(self.data) + if index < 0 or index >= len(self.data): + raise IndexError + self.data = self.data[:index] + sub + self.data[index + 1 :] + + def __delitem__(self, index): + if index < 0: + index += len(self.data) + if index < 0 or index >= len(self.data): + raise IndexError + self.data = self.data[:index] + self.data[index + 1 :] + + def __setslice__(self, start, end, sub): + start = max(start, 0) + end = max(end, 0) + if isinstance(sub, UserString): + self.data = self.data[:start] + sub.data + self.data[end:] + elif isinstance(sub, bytes): + self.data = self.data[:start] + sub + self.data[end:] + else: + self.data = self.data[:start] + str(sub).encode() + self.data[end:] + + def __delslice__(self, start, end): + start = max(start, 0) + end = max(end, 0) + self.data = self.data[:start] + self.data[end:] + + def immutable(self): + return UserString(self.data) + + def __iadd__(self, other): + if isinstance(other, UserString): + self.data += other.data + elif isinstance(other, bytes): + self.data += other + else: + self.data += str(other).encode() + return self + + def __imul__(self, n): + self.data *= n + return self + + +class String(MutableString, ctypes.Union): + + _fields_ = [("raw", ctypes.POINTER(ctypes.c_char)), ("data", ctypes.c_char_p)] + + def __init__(self, obj=b""): + if isinstance(obj, (bytes, UserString)): + self.data = bytes(obj) + else: + self.raw = obj + + def __len__(self): + return self.data and len(self.data) or 0 + + def from_param(cls, obj): + # Convert None or 0 + if obj is None or obj == 0: + return cls(ctypes.POINTER(ctypes.c_char)()) + + # Convert from String + elif isinstance(obj, String): + return obj + + # Convert from bytes + elif isinstance(obj, bytes): + return cls(obj) + + # Convert from str + elif isinstance(obj, str): + return cls(obj.encode()) + + # Convert from c_char_p + elif isinstance(obj, ctypes.c_char_p): + return obj + + # Convert from POINTER(ctypes.c_char) + elif isinstance(obj, ctypes.POINTER(ctypes.c_char)): + return obj + + # Convert from raw pointer + elif isinstance(obj, int): + return cls(ctypes.cast(obj, ctypes.POINTER(ctypes.c_char))) + + # Convert from ctypes.c_char array + elif isinstance(obj, ctypes.c_char * len(obj)): + return obj + + # Convert from object + else: + return String.from_param(obj._as_parameter_) + + from_param = classmethod(from_param) + + +def ReturnString(obj, func=None, arguments=None): + return String.from_param(obj) + + +# As of ctypes 1.0, ctypes does not support custom error-checking +# functions on callbacks, nor does it support custom datatypes on +# callbacks, so we must ensure that all callbacks return +# primitive datatypes. +# +# Non-primitive return values wrapped with UNCHECKED won't be +# typechecked, and will be converted to ctypes.c_void_p. +def UNCHECKED(type): + if hasattr(type, "_type_") and isinstance(type._type_, str) and type._type_ != "P": + return type + else: + return ctypes.c_void_p + + +# ctypes doesn't have direct support for variadic functions, so we have to write +# our own wrapper class +class _variadic_function(object): + def __init__(self, func, restype, argtypes, errcheck): + self.func = func + self.func.restype = restype + self.argtypes = argtypes + if errcheck: + self.func.errcheck = errcheck + + def _as_parameter_(self): + # So we can pass this variadic function as a function pointer + return self.func + + def __call__(self, *args): + fixed_args = [] + i = 0 + for argtype in self.argtypes: + # Typecheck what we can + fixed_args.append(argtype.from_param(args[i])) + i += 1 + return self.func(*fixed_args + list(args[i:])) + + +def ord_if_char(value): + """ + Simple helper used for casts to simple builtin types: if the argument is a + string type, it will be converted to it's ordinal value. + + This function will raise an exception if the argument is string with more + than one characters. + """ + return ord(value) if (isinstance(value, bytes) or isinstance(value, str)) else value + +# End preamble + +_libs = {} +_libdirs = [] + +# Begin loader + +""" +Load libraries - appropriately for all our supported platforms +""" +# ---------------------------------------------------------------------------- +# Copyright (c) 2008 David James +# Copyright (c) 2006-2008 Alex Holkner +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of pyglet nor the names of its +# contributors may be used to endorse or promote products +# derived from this software without specific prior written +# permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# ---------------------------------------------------------------------------- + +import ctypes +import ctypes.util +import glob +import os.path +import platform +import re +import sys + + +def _environ_path(name): + """Split an environment variable into a path-like list elements""" + if name in os.environ: + return os.environ[name].split(":") + return [] + + +class LibraryLoader: + """ + A base class For loading of libraries ;-) + Subclasses load libraries for specific platforms. + """ + + # library names formatted specifically for platforms + name_formats = ["%s"] + + class Lookup: + """Looking up calling conventions for a platform""" + + mode = ctypes.DEFAULT_MODE + + def __init__(self, path): + super(LibraryLoader.Lookup, self).__init__() + self.access = dict(cdecl=ctypes.CDLL(path, self.mode)) + + def get(self, name, calling_convention="cdecl"): + """Return the given name according to the selected calling convention""" + if calling_convention not in self.access: + raise LookupError( + "Unknown calling convention '{}' for function '{}'".format( + calling_convention, name + ) + ) + return getattr(self.access[calling_convention], name) + + def has(self, name, calling_convention="cdecl"): + """Return True if this given calling convention finds the given 'name'""" + if calling_convention not in self.access: + return False + return hasattr(self.access[calling_convention], name) + + def __getattr__(self, name): + return getattr(self.access["cdecl"], name) + + def __init__(self): + self.other_dirs = [] + + def __call__(self, libname): + """Given the name of a library, load it.""" + paths = self.getpaths(libname) + + for path in paths: + # noinspection PyBroadException + try: + return self.Lookup(path) + except Exception: # pylint: disable=broad-except + pass + + raise ImportError("Could not load %s." % libname) + + def getpaths(self, libname): + """Return a list of paths where the library might be found.""" + if os.path.isabs(libname): + yield libname + else: + # search through a prioritized series of locations for the library + + # we first search any specific directories identified by user + for dir_i in self.other_dirs: + for fmt in self.name_formats: + # dir_i should be absolute already + yield os.path.join(dir_i, fmt % libname) + + # check if this code is even stored in a physical file + try: + this_file = __file__ + except NameError: + this_file = None + + # then we search the directory where the generated python interface is stored + if this_file is not None: + for fmt in self.name_formats: + yield os.path.abspath(os.path.join(os.path.dirname(__file__), fmt % libname)) + + # now, use the ctypes tools to try to find the library + for fmt in self.name_formats: + path = ctypes.util.find_library(fmt % libname) + if path: + yield path + + # then we search all paths identified as platform-specific lib paths + for path in self.getplatformpaths(libname): + yield path + + # Finally, we'll try the users current working directory + for fmt in self.name_formats: + yield os.path.abspath(os.path.join(os.path.curdir, fmt % libname)) + + def getplatformpaths(self, _libname): # pylint: disable=no-self-use + """Return all the library paths available in this platform""" + return [] + + +# Darwin (Mac OS X) + + +class DarwinLibraryLoader(LibraryLoader): + """Library loader for MacOS""" + + name_formats = [ + "lib%s.dylib", + "lib%s.so", + "lib%s.bundle", + "%s.dylib", + "%s.so", + "%s.bundle", + "%s", + ] + + class Lookup(LibraryLoader.Lookup): + """ + Looking up library files for this platform (Darwin aka MacOS) + """ + + # Darwin requires dlopen to be called with mode RTLD_GLOBAL instead + # of the default RTLD_LOCAL. Without this, you end up with + # libraries not being loadable, resulting in "Symbol not found" + # errors + mode = ctypes.RTLD_GLOBAL + + def getplatformpaths(self, libname): + if os.path.pathsep in libname: + names = [libname] + else: + names = [fmt % libname for fmt in self.name_formats] + + for directory in self.getdirs(libname): + for name in names: + yield os.path.join(directory, name) + + @staticmethod + def getdirs(libname): + """Implements the dylib search as specified in Apple documentation: + + http://developer.apple.com/documentation/DeveloperTools/Conceptual/ + DynamicLibraries/Articles/DynamicLibraryUsageGuidelines.html + + Before commencing the standard search, the method first checks + the bundle's ``Frameworks`` directory if the application is running + within a bundle (OS X .app). + """ + + dyld_fallback_library_path = _environ_path("DYLD_FALLBACK_LIBRARY_PATH") + if not dyld_fallback_library_path: + dyld_fallback_library_path = [ + os.path.expanduser("~/lib"), + "/usr/local/lib", + "/usr/lib", + ] + + dirs = [] + + if "/" in libname: + dirs.extend(_environ_path("DYLD_LIBRARY_PATH")) + else: + dirs.extend(_environ_path("LD_LIBRARY_PATH")) + dirs.extend(_environ_path("DYLD_LIBRARY_PATH")) + dirs.extend(_environ_path("LD_RUN_PATH")) + + if hasattr(sys, "frozen") and getattr(sys, "frozen") == "macosx_app": + dirs.append(os.path.join(os.environ["RESOURCEPATH"], "..", "Frameworks")) + + dirs.extend(dyld_fallback_library_path) + + return dirs + + +# Posix + + +class PosixLibraryLoader(LibraryLoader): + """Library loader for POSIX-like systems (including Linux)""" + + _ld_so_cache = None + + _include = re.compile(r"^\s*include\s+(?P.*)") + + name_formats = ["lib%s.so", "%s.so", "%s"] + + class _Directories(dict): + """Deal with directories""" + + def __init__(self): + dict.__init__(self) + self.order = 0 + + def add(self, directory): + """Add a directory to our current set of directories""" + if len(directory) > 1: + directory = directory.rstrip(os.path.sep) + # only adds and updates order if exists and not already in set + if not os.path.exists(directory): + return + order = self.setdefault(directory, self.order) + if order == self.order: + self.order += 1 + + def extend(self, directories): + """Add a list of directories to our set""" + for a_dir in directories: + self.add(a_dir) + + def ordered(self): + """Sort the list of directories""" + return (i[0] for i in sorted(self.items(), key=lambda d: d[1])) + + def _get_ld_so_conf_dirs(self, conf, dirs): + """ + Recursive function to help parse all ld.so.conf files, including proper + handling of the `include` directive. + """ + + try: + with open(conf) as fileobj: + for dirname in fileobj: + dirname = dirname.strip() + if not dirname: + continue + + match = self._include.match(dirname) + if not match: + dirs.add(dirname) + else: + for dir2 in glob.glob(match.group("pattern")): + self._get_ld_so_conf_dirs(dir2, dirs) + except IOError: + pass + + def _create_ld_so_cache(self): + # Recreate search path followed by ld.so. This is going to be + # slow to build, and incorrect (ld.so uses ld.so.cache, which may + # not be up-to-date). Used only as fallback for distros without + # /sbin/ldconfig. + # + # We assume the DT_RPATH and DT_RUNPATH binary sections are omitted. + + directories = self._Directories() + for name in ( + "LD_LIBRARY_PATH", + "SHLIB_PATH", # HP-UX + "LIBPATH", # OS/2, AIX + "LIBRARY_PATH", # BE/OS + ): + if name in os.environ: + directories.extend(os.environ[name].split(os.pathsep)) + + self._get_ld_so_conf_dirs("/etc/ld.so.conf", directories) + + bitage = platform.architecture()[0] + + unix_lib_dirs_list = [] + if bitage.startswith("64"): + # prefer 64 bit if that is our arch + unix_lib_dirs_list += ["/lib64", "/usr/lib64"] + + # must include standard libs, since those paths are also used by 64 bit + # installs + unix_lib_dirs_list += ["/lib", "/usr/lib"] + if sys.platform.startswith("linux"): + # Try and support multiarch work in Ubuntu + # https://wiki.ubuntu.com/MultiarchSpec + if bitage.startswith("32"): + # Assume Intel/AMD x86 compat + unix_lib_dirs_list += ["/lib/i386-linux-gnu", "/usr/lib/i386-linux-gnu"] + elif bitage.startswith("64"): + # Assume Intel/AMD x86 compatible + unix_lib_dirs_list += [ + "/lib/x86_64-linux-gnu", + "/usr/lib/x86_64-linux-gnu", + ] + else: + # guess... + unix_lib_dirs_list += glob.glob("/lib/*linux-gnu") + directories.extend(unix_lib_dirs_list) + + cache = {} + lib_re = re.compile(r"lib(.*)\.s[ol]") + # ext_re = re.compile(r"\.s[ol]$") + for our_dir in directories.ordered(): + try: + for path in glob.glob("%s/*.s[ol]*" % our_dir): + file = os.path.basename(path) + + # Index by filename + cache_i = cache.setdefault(file, set()) + cache_i.add(path) + + # Index by library name + match = lib_re.match(file) + if match: + library = match.group(1) + cache_i = cache.setdefault(library, set()) + cache_i.add(path) + except OSError: + pass + + self._ld_so_cache = cache + + def getplatformpaths(self, libname): + if self._ld_so_cache is None: + self._create_ld_so_cache() + + result = self._ld_so_cache.get(libname, set()) + for i in result: + # we iterate through all found paths for library, since we may have + # actually found multiple architectures or other library types that + # may not load + yield i + + +# Windows + + +class WindowsLibraryLoader(LibraryLoader): + """Library loader for Microsoft Windows""" + + name_formats = ["%s.dll", "lib%s.dll", "%slib.dll", "%s"] + + class Lookup(LibraryLoader.Lookup): + """Lookup class for Windows libraries...""" + + def __init__(self, path): + super(WindowsLibraryLoader.Lookup, self).__init__(path) + self.access["stdcall"] = ctypes.windll.LoadLibrary(path) + + +# Platform switching + +# If your value of sys.platform does not appear in this dict, please contact +# the Ctypesgen maintainers. + +loaderclass = { + "darwin": DarwinLibraryLoader, + "cygwin": WindowsLibraryLoader, + "win32": WindowsLibraryLoader, + "msys": WindowsLibraryLoader, +} + +load_library = loaderclass.get(sys.platform, PosixLibraryLoader)() + + +def add_library_search_dirs(other_dirs): + """ + Add libraries to search paths. + If library paths are relative, convert them to absolute with respect to this + file's directory + """ + for path in other_dirs: + if not os.path.isabs(path): + path = os.path.abspath(path) + load_library.other_dirs.append(path) + + +del loaderclass + +# End loader + +add_library_search_dirs([]) + +# No libraries + +# No modules + +# /usr/include/libasi/EAF_focuser.h: 22 +class struct__EAF_INFO(Structure): + pass + +struct__EAF_INFO.__slots__ = [ + 'ID', + 'Name', + 'MaxStep', +] +struct__EAF_INFO._fields_ = [ + ('ID', c_int), + ('Name', c_char * int(64)), + ('MaxStep', c_int), +] + +EAF_INFO = struct__EAF_INFO# /usr/include/libasi/EAF_focuser.h: 22 + +enum__EAF_ERROR_CODE = c_int# /usr/include/libasi/EAF_focuser.h: 37 + +EAF_SUCCESS = 0# /usr/include/libasi/EAF_focuser.h: 37 + +EAF_ERROR_INVALID_INDEX = (EAF_SUCCESS + 1)# /usr/include/libasi/EAF_focuser.h: 37 + +EAF_ERROR_INVALID_ID = (EAF_ERROR_INVALID_INDEX + 1)# /usr/include/libasi/EAF_focuser.h: 37 + +EAF_ERROR_INVALID_VALUE = (EAF_ERROR_INVALID_ID + 1)# /usr/include/libasi/EAF_focuser.h: 37 + +EAF_ERROR_REMOVED = (EAF_ERROR_INVALID_VALUE + 1)# /usr/include/libasi/EAF_focuser.h: 37 + +EAF_ERROR_MOVING = (EAF_ERROR_REMOVED + 1)# /usr/include/libasi/EAF_focuser.h: 37 + +EAF_ERROR_ERROR_STATE = (EAF_ERROR_MOVING + 1)# /usr/include/libasi/EAF_focuser.h: 37 + +EAF_ERROR_GENERAL_ERROR = (EAF_ERROR_ERROR_STATE + 1)# /usr/include/libasi/EAF_focuser.h: 37 + +EAF_ERROR_NOT_SUPPORTED = (EAF_ERROR_GENERAL_ERROR + 1)# /usr/include/libasi/EAF_focuser.h: 37 + +EAF_ERROR_CLOSED = (EAF_ERROR_NOT_SUPPORTED + 1)# /usr/include/libasi/EAF_focuser.h: 37 + +EAF_ERROR_END = (-1)# /usr/include/libasi/EAF_focuser.h: 37 + +EAF_ERROR_CODE = enum__EAF_ERROR_CODE# /usr/include/libasi/EAF_focuser.h: 37 + +# /usr/include/libasi/EAF_focuser.h: 41 +class struct__EAF_ID(Structure): + pass + +struct__EAF_ID.__slots__ = [ + 'id', +] +struct__EAF_ID._fields_ = [ + ('id', c_ubyte * int(8)), +] + +EAF_ID = struct__EAF_ID# /usr/include/libasi/EAF_focuser.h: 41 + +EAF_SN = EAF_ID# /usr/include/libasi/EAF_focuser.h: 43 + +# /usr/include/libasi/EAF_focuser.h: 56 +for _lib in _libs.values(): + if not _lib.has("EAFGetNum", "cdecl"): + continue + EAFGetNum = _lib.get("EAFGetNum", "cdecl") + EAFGetNum.argtypes = [] + EAFGetNum.restype = c_int + break + +# /usr/include/libasi/EAF_focuser.h: 69 +for _lib in _libs.values(): + if not _lib.has("EAFGetProductIDs", "cdecl"): + continue + EAFGetProductIDs = _lib.get("EAFGetProductIDs", "cdecl") + EAFGetProductIDs.argtypes = [POINTER(c_int)] + EAFGetProductIDs.restype = c_int + break + +# /usr/include/libasi/EAF_focuser.h: 81 +for _lib in _libs.values(): + if not _lib.has("EAFCheck", "cdecl"): + continue + EAFCheck = _lib.get("EAFCheck", "cdecl") + EAFCheck.argtypes = [c_int, c_int] + EAFCheck.restype = c_int + break + +# /usr/include/libasi/EAF_focuser.h: 99 +for _lib in _libs.values(): + if not _lib.has("EAFGetID", "cdecl"): + continue + EAFGetID = _lib.get("EAFGetID", "cdecl") + EAFGetID.argtypes = [c_int, POINTER(c_int)] + EAFGetID.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 114 +for _lib in _libs.values(): + if not _lib.has("EAFOpen", "cdecl"): + continue + EAFOpen = _lib.get("EAFOpen", "cdecl") + EAFOpen.argtypes = [c_int] + EAFOpen.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 131 +for _lib in _libs.values(): + if not _lib.has("EAFGetProperty", "cdecl"): + continue + EAFGetProperty = _lib.get("EAFGetProperty", "cdecl") + EAFGetProperty.argtypes = [c_int, POINTER(EAF_INFO)] + EAFGetProperty.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 152 +for _lib in _libs.values(): + if not _lib.has("EAFMove", "cdecl"): + continue + EAFMove = _lib.get("EAFMove", "cdecl") + EAFMove.argtypes = [c_int, c_int] + EAFMove.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 170 +for _lib in _libs.values(): + if not _lib.has("EAFStop", "cdecl"): + continue + EAFStop = _lib.get("EAFStop", "cdecl") + EAFStop.argtypes = [c_int] + EAFStop.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 208 +for _lib in _libs.values(): + if not _lib.has("EAFGetPosition", "cdecl"): + continue + EAFGetPosition = _lib.get("EAFGetPosition", "cdecl") + EAFGetPosition.argtypes = [c_int, POINTER(c_int)] + EAFGetPosition.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 226 +for _lib in _libs.values(): + if not _lib.has("EAFResetPostion", "cdecl"): + continue + EAFResetPostion = _lib.get("EAFResetPostion", "cdecl") + EAFResetPostion.argtypes = [c_int, c_int] + EAFResetPostion.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 244 +for _lib in _libs.values(): + if not _lib.has("EAFGetTemp", "cdecl"): + continue + EAFGetTemp = _lib.get("EAFGetTemp", "cdecl") + EAFGetTemp.argtypes = [c_int, POINTER(c_float)] + EAFGetTemp.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 298 +for _lib in _libs.values(): + if not _lib.has("EAFSetMaxStep", "cdecl"): + continue + EAFSetMaxStep = _lib.get("EAFSetMaxStep", "cdecl") + EAFSetMaxStep.argtypes = [c_int, c_int] + EAFSetMaxStep.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 316 +for _lib in _libs.values(): + if not _lib.has("EAFGetMaxStep", "cdecl"): + continue + EAFGetMaxStep = _lib.get("EAFGetMaxStep", "cdecl") + EAFGetMaxStep.argtypes = [c_int, POINTER(c_int)] + EAFGetMaxStep.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 334 +for _lib in _libs.values(): + if not _lib.has("EAFStepRange", "cdecl"): + continue + EAFStepRange = _lib.get("EAFStepRange", "cdecl") + EAFStepRange.argtypes = [c_int, POINTER(c_int)] + EAFStepRange.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 383 +for _lib in _libs.values(): + if not _lib.has("EAFSetBacklash", "cdecl"): + continue + EAFSetBacklash = _lib.get("EAFSetBacklash", "cdecl") + EAFSetBacklash.argtypes = [c_int, c_int] + EAFSetBacklash.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 399 +for _lib in _libs.values(): + if not _lib.has("EAFGetBacklash", "cdecl"): + continue + EAFGetBacklash = _lib.get("EAFGetBacklash", "cdecl") + EAFGetBacklash.argtypes = [c_int, POINTER(c_int)] + EAFGetBacklash.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 412 +for _lib in _libs.values(): + if not _lib.has("EAFClose", "cdecl"): + continue + EAFClose = _lib.get("EAFClose", "cdecl") + EAFClose.argtypes = [c_int] + EAFClose.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 418 +for _lib in _libs.values(): + if not _lib.has("EAFGetSDKVersion", "cdecl"): + continue + EAFGetSDKVersion = _lib.get("EAFGetSDKVersion", "cdecl") + EAFGetSDKVersion.argtypes = [] + if sizeof(c_int) == sizeof(c_void_p): + EAFGetSDKVersion.restype = ReturnString + else: + EAFGetSDKVersion.restype = String + EAFGetSDKVersion.errcheck = ReturnString + break + +# /usr/include/libasi/EAF_focuser.h: 434 +for _lib in _libs.values(): + if not _lib.has("EAFGetFirmwareVersion", "cdecl"): + continue + EAFGetFirmwareVersion = _lib.get("EAFGetFirmwareVersion", "cdecl") + EAFGetFirmwareVersion.argtypes = [c_int, POINTER(c_ubyte), POINTER(c_ubyte), POINTER(c_ubyte)] + EAFGetFirmwareVersion.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 451 +for _lib in _libs.values(): + if not _lib.has("EAFGetSerialNumber", "cdecl"): + continue + EAFGetSerialNumber = _lib.get("EAFGetSerialNumber", "cdecl") + EAFGetSerialNumber.argtypes = [c_int, POINTER(EAF_SN)] + EAFGetSerialNumber.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 468 +for _lib in _libs.values(): + if not _lib.has("EAFSetID", "cdecl"): + continue + EAFSetID = _lib.get("EAFSetID", "cdecl") + EAFSetID.argtypes = [c_int, EAF_ID] + EAFSetID.restype = EAF_ERROR_CODE + break + +# /usr/include/libasi/EAF_focuser.h: 15 +try: + EAF_ID_MAX = 128 +except: + pass + +_EAF_INFO = struct__EAF_INFO# /usr/include/libasi/EAF_focuser.h: 22 + +_EAF_ID = struct__EAF_ID# /usr/include/libasi/EAF_focuser.h: 41 + +# No inserted files + +# No prefix-stripping + diff --git a/modules/lithium.pydevice/zwoasi/libs/efw.py b/modules/lithium.pydevice/zwoasi/libs/efw.py new file mode 100644 index 00000000..81b1b384 --- /dev/null +++ b/modules/lithium.pydevice/zwoasi/libs/efw.py @@ -0,0 +1,1064 @@ +r"""Wrapper for EFW_filter.h + +Do not modify this file. +""" + +__docformat__ = "restructuredtext" + +# Begin preamble for Python + +import ctypes +import sys +from ctypes import * # noqa: F401, F403 + +_int_types = (ctypes.c_int16, ctypes.c_int32) +if hasattr(ctypes, "c_int64"): + # Some builds of ctypes apparently do not have ctypes.c_int64 + # defined; it's a pretty good bet that these builds do not + # have 64-bit pointers. + _int_types += (ctypes.c_int64,) +for t in _int_types: + if ctypes.sizeof(t) == ctypes.sizeof(ctypes.c_size_t): + c_ptrdiff_t = t +del t +del _int_types + + + +class UserString: + def __init__(self, seq): + if isinstance(seq, bytes): + self.data = seq + elif isinstance(seq, UserString): + self.data = seq.data[:] + else: + self.data = str(seq).encode() + + def __bytes__(self): + return self.data + + def __str__(self): + return self.data.decode() + + def __repr__(self): + return repr(self.data) + + def __int__(self): + return int(self.data.decode()) + + def __long__(self): + return int(self.data.decode()) + + def __float__(self): + return float(self.data.decode()) + + def __complex__(self): + return complex(self.data.decode()) + + def __hash__(self): + return hash(self.data) + + def __le__(self, string): + if isinstance(string, UserString): + return self.data <= string.data + else: + return self.data <= string + + def __lt__(self, string): + if isinstance(string, UserString): + return self.data < string.data + else: + return self.data < string + + def __ge__(self, string): + if isinstance(string, UserString): + return self.data >= string.data + else: + return self.data >= string + + def __gt__(self, string): + if isinstance(string, UserString): + return self.data > string.data + else: + return self.data > string + + def __eq__(self, string): + if isinstance(string, UserString): + return self.data == string.data + else: + return self.data == string + + def __ne__(self, string): + if isinstance(string, UserString): + return self.data != string.data + else: + return self.data != string + + def __contains__(self, char): + return char in self.data + + def __len__(self): + return len(self.data) + + def __getitem__(self, index): + return self.__class__(self.data[index]) + + def __getslice__(self, start, end): + start = max(start, 0) + end = max(end, 0) + return self.__class__(self.data[start:end]) + + def __add__(self, other): + if isinstance(other, UserString): + return self.__class__(self.data + other.data) + elif isinstance(other, bytes): + return self.__class__(self.data + other) + else: + return self.__class__(self.data + str(other).encode()) + + def __radd__(self, other): + if isinstance(other, bytes): + return self.__class__(other + self.data) + else: + return self.__class__(str(other).encode() + self.data) + + def __mul__(self, n): + return self.__class__(self.data * n) + + __rmul__ = __mul__ + + def __mod__(self, args): + return self.__class__(self.data % args) + + # the following methods are defined in alphabetical order: + def capitalize(self): + return self.__class__(self.data.capitalize()) + + def center(self, width, *args): + return self.__class__(self.data.center(width, *args)) + + def count(self, sub, start=0, end=sys.maxsize): + return self.data.count(sub, start, end) + + def decode(self, encoding=None, errors=None): # XXX improve this? + if encoding: + if errors: + return self.__class__(self.data.decode(encoding, errors)) + else: + return self.__class__(self.data.decode(encoding)) + else: + return self.__class__(self.data.decode()) + + def encode(self, encoding=None, errors=None): # XXX improve this? + if encoding: + if errors: + return self.__class__(self.data.encode(encoding, errors)) + else: + return self.__class__(self.data.encode(encoding)) + else: + return self.__class__(self.data.encode()) + + def endswith(self, suffix, start=0, end=sys.maxsize): + return self.data.endswith(suffix, start, end) + + def expandtabs(self, tabsize=8): + return self.__class__(self.data.expandtabs(tabsize)) + + def find(self, sub, start=0, end=sys.maxsize): + return self.data.find(sub, start, end) + + def index(self, sub, start=0, end=sys.maxsize): + return self.data.index(sub, start, end) + + def isalpha(self): + return self.data.isalpha() + + def isalnum(self): + return self.data.isalnum() + + def isdecimal(self): + return self.data.isdecimal() + + def isdigit(self): + return self.data.isdigit() + + def islower(self): + return self.data.islower() + + def isnumeric(self): + return self.data.isnumeric() + + def isspace(self): + return self.data.isspace() + + def istitle(self): + return self.data.istitle() + + def isupper(self): + return self.data.isupper() + + def join(self, seq): + return self.data.join(seq) + + def ljust(self, width, *args): + return self.__class__(self.data.ljust(width, *args)) + + def lower(self): + return self.__class__(self.data.lower()) + + def lstrip(self, chars=None): + return self.__class__(self.data.lstrip(chars)) + + def partition(self, sep): + return self.data.partition(sep) + + def replace(self, old, new, maxsplit=-1): + return self.__class__(self.data.replace(old, new, maxsplit)) + + def rfind(self, sub, start=0, end=sys.maxsize): + return self.data.rfind(sub, start, end) + + def rindex(self, sub, start=0, end=sys.maxsize): + return self.data.rindex(sub, start, end) + + def rjust(self, width, *args): + return self.__class__(self.data.rjust(width, *args)) + + def rpartition(self, sep): + return self.data.rpartition(sep) + + def rstrip(self, chars=None): + return self.__class__(self.data.rstrip(chars)) + + def split(self, sep=None, maxsplit=-1): + return self.data.split(sep, maxsplit) + + def rsplit(self, sep=None, maxsplit=-1): + return self.data.rsplit(sep, maxsplit) + + def splitlines(self, keepends=0): + return self.data.splitlines(keepends) + + def startswith(self, prefix, start=0, end=sys.maxsize): + return self.data.startswith(prefix, start, end) + + def strip(self, chars=None): + return self.__class__(self.data.strip(chars)) + + def swapcase(self): + return self.__class__(self.data.swapcase()) + + def title(self): + return self.__class__(self.data.title()) + + def translate(self, *args): + return self.__class__(self.data.translate(*args)) + + def upper(self): + return self.__class__(self.data.upper()) + + def zfill(self, width): + return self.__class__(self.data.zfill(width)) + + +class MutableString(UserString): + """mutable string objects + + Python strings are immutable objects. This has the advantage, that + strings may be used as dictionary keys. If this property isn't needed + and you insist on changing string values in place instead, you may cheat + and use MutableString. + + But the purpose of this class is an educational one: to prevent + people from inventing their own mutable string class derived + from UserString and than forget thereby to remove (override) the + __hash__ method inherited from UserString. This would lead to + errors that would be very hard to track down. + + A faster and better solution is to rewrite your program using lists.""" + + def __init__(self, string=""): + self.data = string + + def __hash__(self): + raise TypeError("unhashable type (it is mutable)") + + def __setitem__(self, index, sub): + if index < 0: + index += len(self.data) + if index < 0 or index >= len(self.data): + raise IndexError + self.data = self.data[:index] + sub + self.data[index + 1 :] + + def __delitem__(self, index): + if index < 0: + index += len(self.data) + if index < 0 or index >= len(self.data): + raise IndexError + self.data = self.data[:index] + self.data[index + 1 :] + + def __setslice__(self, start, end, sub): + start = max(start, 0) + end = max(end, 0) + if isinstance(sub, UserString): + self.data = self.data[:start] + sub.data + self.data[end:] + elif isinstance(sub, bytes): + self.data = self.data[:start] + sub + self.data[end:] + else: + self.data = self.data[:start] + str(sub).encode() + self.data[end:] + + def __delslice__(self, start, end): + start = max(start, 0) + end = max(end, 0) + self.data = self.data[:start] + self.data[end:] + + def immutable(self): + return UserString(self.data) + + def __iadd__(self, other): + if isinstance(other, UserString): + self.data += other.data + elif isinstance(other, bytes): + self.data += other + else: + self.data += str(other).encode() + return self + + def __imul__(self, n): + self.data *= n + return self + + +class String(MutableString, ctypes.Union): + + _fields_ = [("raw", ctypes.POINTER(ctypes.c_char)), ("data", ctypes.c_char_p)] + + def __init__(self, obj=b""): + if isinstance(obj, (bytes, UserString)): + self.data = bytes(obj) + else: + self.raw = obj + + def __len__(self): + return self.data and len(self.data) or 0 + + def from_param(cls, obj): + # Convert None or 0 + if obj is None or obj == 0: + return cls(ctypes.POINTER(ctypes.c_char)()) + + # Convert from String + elif isinstance(obj, String): + return obj + + # Convert from bytes + elif isinstance(obj, bytes): + return cls(obj) + + # Convert from str + elif isinstance(obj, str): + return cls(obj.encode()) + + # Convert from c_char_p + elif isinstance(obj, ctypes.c_char_p): + return obj + + # Convert from POINTER(ctypes.c_char) + elif isinstance(obj, ctypes.POINTER(ctypes.c_char)): + return obj + + # Convert from raw pointer + elif isinstance(obj, int): + return cls(ctypes.cast(obj, ctypes.POINTER(ctypes.c_char))) + + # Convert from ctypes.c_char array + elif isinstance(obj, ctypes.c_char * len(obj)): + return obj + + # Convert from object + else: + return String.from_param(obj._as_parameter_) + + from_param = classmethod(from_param) + + +def ReturnString(obj, func=None, arguments=None): + return String.from_param(obj) + + +# As of ctypes 1.0, ctypes does not support custom error-checking +# functions on callbacks, nor does it support custom datatypes on +# callbacks, so we must ensure that all callbacks return +# primitive datatypes. +# +# Non-primitive return values wrapped with UNCHECKED won't be +# typechecked, and will be converted to ctypes.c_void_p. +def UNCHECKED(type): + if hasattr(type, "_type_") and isinstance(type._type_, str) and type._type_ != "P": + return type + else: + return ctypes.c_void_p + + +# ctypes doesn't have direct support for variadic functions, so we have to write +# our own wrapper class +class _variadic_function(object): + def __init__(self, func, restype, argtypes, errcheck): + self.func = func + self.func.restype = restype + self.argtypes = argtypes + if errcheck: + self.func.errcheck = errcheck + + def _as_parameter_(self): + # So we can pass this variadic function as a function pointer + return self.func + + def __call__(self, *args): + fixed_args = [] + i = 0 + for argtype in self.argtypes: + # Typecheck what we can + fixed_args.append(argtype.from_param(args[i])) + i += 1 + return self.func(*fixed_args + list(args[i:])) + + +def ord_if_char(value): + """ + Simple helper used for casts to simple builtin types: if the argument is a + string type, it will be converted to it's ordinal value. + + This function will raise an exception if the argument is string with more + than one characters. + """ + return ord(value) if (isinstance(value, bytes) or isinstance(value, str)) else value + +# End preamble + +_libs = {} +_libdirs = [] + +# Begin loader + +""" +Load libraries - appropriately for all our supported platforms +""" +# ---------------------------------------------------------------------------- +# Copyright (c) 2008 David James +# Copyright (c) 2006-2008 Alex Holkner +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of pyglet nor the names of its +# contributors may be used to endorse or promote products +# derived from this software without specific prior written +# permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# ---------------------------------------------------------------------------- + +import ctypes +import ctypes.util +import glob +import os.path +import platform +import re +import sys + + +def _environ_path(name): + """Split an environment variable into a path-like list elements""" + if name in os.environ: + return os.environ[name].split(":") + return [] + + +class LibraryLoader: + """ + A base class For loading of libraries ;-) + Subclasses load libraries for specific platforms. + """ + + # library names formatted specifically for platforms + name_formats = ["%s"] + + class Lookup: + """Looking up calling conventions for a platform""" + + mode = ctypes.DEFAULT_MODE + + def __init__(self, path): + super(LibraryLoader.Lookup, self).__init__() + self.access = dict(cdecl=ctypes.CDLL(path, self.mode)) + + def get(self, name, calling_convention="cdecl"): + """Return the given name according to the selected calling convention""" + if calling_convention not in self.access: + raise LookupError( + "Unknown calling convention '{}' for function '{}'".format( + calling_convention, name + ) + ) + return getattr(self.access[calling_convention], name) + + def has(self, name, calling_convention="cdecl"): + """Return True if this given calling convention finds the given 'name'""" + if calling_convention not in self.access: + return False + return hasattr(self.access[calling_convention], name) + + def __getattr__(self, name): + return getattr(self.access["cdecl"], name) + + def __init__(self): + self.other_dirs = [] + + def __call__(self, libname): + """Given the name of a library, load it.""" + paths = self.getpaths(libname) + + for path in paths: + # noinspection PyBroadException + try: + return self.Lookup(path) + except Exception: # pylint: disable=broad-except + pass + + raise ImportError("Could not load %s." % libname) + + def getpaths(self, libname): + """Return a list of paths where the library might be found.""" + if os.path.isabs(libname): + yield libname + else: + # search through a prioritized series of locations for the library + + # we first search any specific directories identified by user + for dir_i in self.other_dirs: + for fmt in self.name_formats: + # dir_i should be absolute already + yield os.path.join(dir_i, fmt % libname) + + # check if this code is even stored in a physical file + try: + this_file = __file__ + except NameError: + this_file = None + + # then we search the directory where the generated python interface is stored + if this_file is not None: + for fmt in self.name_formats: + yield os.path.abspath(os.path.join(os.path.dirname(__file__), fmt % libname)) + + # now, use the ctypes tools to try to find the library + for fmt in self.name_formats: + path = ctypes.util.find_library(fmt % libname) + if path: + yield path + + # then we search all paths identified as platform-specific lib paths + for path in self.getplatformpaths(libname): + yield path + + # Finally, we'll try the users current working directory + for fmt in self.name_formats: + yield os.path.abspath(os.path.join(os.path.curdir, fmt % libname)) + + def getplatformpaths(self, _libname): # pylint: disable=no-self-use + """Return all the library paths available in this platform""" + return [] + + +# Darwin (Mac OS X) + + +class DarwinLibraryLoader(LibraryLoader): + """Library loader for MacOS""" + + name_formats = [ + "lib%s.dylib", + "lib%s.so", + "lib%s.bundle", + "%s.dylib", + "%s.so", + "%s.bundle", + "%s", + ] + + class Lookup(LibraryLoader.Lookup): + """ + Looking up library files for this platform (Darwin aka MacOS) + """ + + # Darwin requires dlopen to be called with mode RTLD_GLOBAL instead + # of the default RTLD_LOCAL. Without this, you end up with + # libraries not being loadable, resulting in "Symbol not found" + # errors + mode = ctypes.RTLD_GLOBAL + + def getplatformpaths(self, libname): + if os.path.pathsep in libname: + names = [libname] + else: + names = [fmt % libname for fmt in self.name_formats] + + for directory in self.getdirs(libname): + for name in names: + yield os.path.join(directory, name) + + @staticmethod + def getdirs(libname): + """Implements the dylib search as specified in Apple documentation: + + http://developer.apple.com/documentation/DeveloperTools/Conceptual/ + DynamicLibraries/Articles/DynamicLibraryUsageGuidelines.html + + Before commencing the standard search, the method first checks + the bundle's ``Frameworks`` directory if the application is running + within a bundle (OS X .app). + """ + + dyld_fallback_library_path = _environ_path("DYLD_FALLBACK_LIBRARY_PATH") + if not dyld_fallback_library_path: + dyld_fallback_library_path = [ + os.path.expanduser("~/lib"), + "/usr/local/lib", + "/usr/lib", + ] + + dirs = [] + + if "/" in libname: + dirs.extend(_environ_path("DYLD_LIBRARY_PATH")) + else: + dirs.extend(_environ_path("LD_LIBRARY_PATH")) + dirs.extend(_environ_path("DYLD_LIBRARY_PATH")) + dirs.extend(_environ_path("LD_RUN_PATH")) + + if hasattr(sys, "frozen") and getattr(sys, "frozen") == "macosx_app": + dirs.append(os.path.join(os.environ["RESOURCEPATH"], "..", "Frameworks")) + + dirs.extend(dyld_fallback_library_path) + + return dirs + + +# Posix + + +class PosixLibraryLoader(LibraryLoader): + """Library loader for POSIX-like systems (including Linux)""" + + _ld_so_cache = None + + _include = re.compile(r"^\s*include\s+(?P.*)") + + name_formats = ["lib%s.so", "%s.so", "%s"] + + class _Directories(dict): + """Deal with directories""" + + def __init__(self): + dict.__init__(self) + self.order = 0 + + def add(self, directory): + """Add a directory to our current set of directories""" + if len(directory) > 1: + directory = directory.rstrip(os.path.sep) + # only adds and updates order if exists and not already in set + if not os.path.exists(directory): + return + order = self.setdefault(directory, self.order) + if order == self.order: + self.order += 1 + + def extend(self, directories): + """Add a list of directories to our set""" + for a_dir in directories: + self.add(a_dir) + + def ordered(self): + """Sort the list of directories""" + return (i[0] for i in sorted(self.items(), key=lambda d: d[1])) + + def _get_ld_so_conf_dirs(self, conf, dirs): + """ + Recursive function to help parse all ld.so.conf files, including proper + handling of the `include` directive. + """ + + try: + with open(conf) as fileobj: + for dirname in fileobj: + dirname = dirname.strip() + if not dirname: + continue + + match = self._include.match(dirname) + if not match: + dirs.add(dirname) + else: + for dir2 in glob.glob(match.group("pattern")): + self._get_ld_so_conf_dirs(dir2, dirs) + except IOError: + pass + + def _create_ld_so_cache(self): + # Recreate search path followed by ld.so. This is going to be + # slow to build, and incorrect (ld.so uses ld.so.cache, which may + # not be up-to-date). Used only as fallback for distros without + # /sbin/ldconfig. + # + # We assume the DT_RPATH and DT_RUNPATH binary sections are omitted. + + directories = self._Directories() + for name in ( + "LD_LIBRARY_PATH", + "SHLIB_PATH", # HP-UX + "LIBPATH", # OS/2, AIX + "LIBRARY_PATH", # BE/OS + ): + if name in os.environ: + directories.extend(os.environ[name].split(os.pathsep)) + + self._get_ld_so_conf_dirs("/etc/ld.so.conf", directories) + + bitage = platform.architecture()[0] + + unix_lib_dirs_list = [] + if bitage.startswith("64"): + # prefer 64 bit if that is our arch + unix_lib_dirs_list += ["/lib64", "/usr/lib64"] + + # must include standard libs, since those paths are also used by 64 bit + # installs + unix_lib_dirs_list += ["/lib", "/usr/lib"] + if sys.platform.startswith("linux"): + # Try and support multiarch work in Ubuntu + # https://wiki.ubuntu.com/MultiarchSpec + if bitage.startswith("32"): + # Assume Intel/AMD x86 compat + unix_lib_dirs_list += ["/lib/i386-linux-gnu", "/usr/lib/i386-linux-gnu"] + elif bitage.startswith("64"): + # Assume Intel/AMD x86 compatible + unix_lib_dirs_list += [ + "/lib/x86_64-linux-gnu", + "/usr/lib/x86_64-linux-gnu", + ] + else: + # guess... + unix_lib_dirs_list += glob.glob("/lib/*linux-gnu") + directories.extend(unix_lib_dirs_list) + + cache = {} + lib_re = re.compile(r"lib(.*)\.s[ol]") + # ext_re = re.compile(r"\.s[ol]$") + for our_dir in directories.ordered(): + try: + for path in glob.glob("%s/*.s[ol]*" % our_dir): + file = os.path.basename(path) + + # Index by filename + cache_i = cache.setdefault(file, set()) + cache_i.add(path) + + # Index by library name + match = lib_re.match(file) + if match: + library = match.group(1) + cache_i = cache.setdefault(library, set()) + cache_i.add(path) + except OSError: + pass + + self._ld_so_cache = cache + + def getplatformpaths(self, libname): + if self._ld_so_cache is None: + self._create_ld_so_cache() + + result = self._ld_so_cache.get(libname, set()) + for i in result: + # we iterate through all found paths for library, since we may have + # actually found multiple architectures or other library types that + # may not load + yield i + + +# Windows + + +class WindowsLibraryLoader(LibraryLoader): + """Library loader for Microsoft Windows""" + + name_formats = ["%s.dll", "lib%s.dll", "%slib.dll", "%s"] + + class Lookup(LibraryLoader.Lookup): + """Lookup class for Windows libraries...""" + + def __init__(self, path): + super(WindowsLibraryLoader.Lookup, self).__init__(path) + self.access["stdcall"] = ctypes.windll.LoadLibrary(path) + + +# Platform switching + +# If your value of sys.platform does not appear in this dict, please contact +# the Ctypesgen maintainers. + +loaderclass = { + "darwin": DarwinLibraryLoader, + "cygwin": WindowsLibraryLoader, + "win32": WindowsLibraryLoader, + "msys": WindowsLibraryLoader, +} + +load_library = loaderclass.get(sys.platform, PosixLibraryLoader)() + + +def add_library_search_dirs(other_dirs): + """ + Add libraries to search paths. + If library paths are relative, convert them to absolute with respect to this + file's directory + """ + for path in other_dirs: + if not os.path.isabs(path): + path = os.path.abspath(path) + load_library.other_dirs.append(path) + + +del loaderclass + +# End loader + +add_library_search_dirs([]) + +# No libraries + +# No modules + +# /usr/include/libasi/EFW_filter.h: 35 +class struct__EFW_INFO(Structure): + pass + +struct__EFW_INFO.__slots__ = [ + 'ID', + 'Name', + 'slotNum', +] +struct__EFW_INFO._fields_ = [ + ('ID', c_int), + ('Name', c_char * int(64)), + ('slotNum', c_int), +] + +EFW_INFO = struct__EFW_INFO# /usr/include/libasi/EFW_filter.h: 35 + +enum__EFW_ERROR_CODE = c_int# /usr/include/libasi/EFW_filter.h: 50 + +EFW_SUCCESS = 0# /usr/include/libasi/EFW_filter.h: 50 + +EFW_ERROR_INVALID_INDEX = (EFW_SUCCESS + 1)# /usr/include/libasi/EFW_filter.h: 50 + +EFW_ERROR_INVALID_ID = (EFW_ERROR_INVALID_INDEX + 1)# /usr/include/libasi/EFW_filter.h: 50 + +EFW_ERROR_INVALID_VALUE = (EFW_ERROR_INVALID_ID + 1)# /usr/include/libasi/EFW_filter.h: 50 + +EFW_ERROR_REMOVED = (EFW_ERROR_INVALID_VALUE + 1)# /usr/include/libasi/EFW_filter.h: 50 + +EFW_ERROR_MOVING = (EFW_ERROR_REMOVED + 1)# /usr/include/libasi/EFW_filter.h: 50 + +EFW_ERROR_ERROR_STATE = (EFW_ERROR_MOVING + 1)# /usr/include/libasi/EFW_filter.h: 50 + +EFW_ERROR_GENERAL_ERROR = (EFW_ERROR_ERROR_STATE + 1)# /usr/include/libasi/EFW_filter.h: 50 + +EFW_ERROR_NOT_SUPPORTED = (EFW_ERROR_GENERAL_ERROR + 1)# /usr/include/libasi/EFW_filter.h: 50 + +EFW_ERROR_CLOSED = (EFW_ERROR_NOT_SUPPORTED + 1)# /usr/include/libasi/EFW_filter.h: 50 + +EFW_ERROR_END = (-1)# /usr/include/libasi/EFW_filter.h: 50 + +EFW_ERROR_CODE = enum__EFW_ERROR_CODE# /usr/include/libasi/EFW_filter.h: 50 + +# /usr/include/libasi/EFW_filter.h: 54 +class struct__EFW_ID(Structure): + pass + +struct__EFW_ID.__slots__ = [ + 'id', +] +struct__EFW_ID._fields_ = [ + ('id', c_ubyte * int(8)), +] + +EFW_ID = struct__EFW_ID# /usr/include/libasi/EFW_filter.h: 54 + +EFW_SN = EFW_ID# /usr/include/libasi/EFW_filter.h: 56 + +# /usr/include/libasi/EFW_filter.h: 69 +for _lib in _libs.values(): + if not _lib.has("EFWGetNum", "cdecl"): + continue + EFWGetNum = _lib.get("EFWGetNum", "cdecl") + EFWGetNum.argtypes = [] + EFWGetNum.restype = c_int + break + +# /usr/include/libasi/EFW_filter.h: 80 +for _lib in _libs.values(): + if not _lib.has("EFWGetProductIDs", "cdecl"): + continue + EFWGetProductIDs = _lib.get("EFWGetProductIDs", "cdecl") + EFWGetProductIDs.argtypes = [POINTER(c_int)] + EFWGetProductIDs.restype = c_int + break + +# /usr/include/libasi/EFW_filter.h: 98 +for _lib in _libs.values(): + if not _lib.has("EFWGetID", "cdecl"): + continue + EFWGetID = _lib.get("EFWGetID", "cdecl") + EFWGetID.argtypes = [c_int, POINTER(c_int)] + EFWGetID.restype = EFW_ERROR_CODE + break + +# /usr/include/libasi/EFW_filter.h: 113 +for _lib in _libs.values(): + if not _lib.has("EFWOpen", "cdecl"): + continue + EFWOpen = _lib.get("EFWOpen", "cdecl") + EFWOpen.argtypes = [c_int] + EFWOpen.restype = EFW_ERROR_CODE + break + +# /usr/include/libasi/EFW_filter.h: 131 +for _lib in _libs.values(): + if not _lib.has("EFWGetProperty", "cdecl"): + continue + EFWGetProperty = _lib.get("EFWGetProperty", "cdecl") + EFWGetProperty.argtypes = [c_int, POINTER(EFW_INFO)] + EFWGetProperty.restype = EFW_ERROR_CODE + break + +# /usr/include/libasi/EFW_filter.h: 151 +for _lib in _libs.values(): + if not _lib.has("EFWGetPosition", "cdecl"): + continue + EFWGetPosition = _lib.get("EFWGetPosition", "cdecl") + EFWGetPosition.argtypes = [c_int, POINTER(c_int)] + EFWGetPosition.restype = EFW_ERROR_CODE + break + +# /usr/include/libasi/EFW_filter.h: 172 +for _lib in _libs.values(): + if not _lib.has("EFWSetPosition", "cdecl"): + continue + EFWSetPosition = _lib.get("EFWSetPosition", "cdecl") + EFWSetPosition.argtypes = [c_int, c_int] + EFWSetPosition.restype = EFW_ERROR_CODE + break + +# /usr/include/libasi/EFW_filter.h: 221 +for _lib in _libs.values(): + if not _lib.has("EFWCalibrate", "cdecl"): + continue + EFWCalibrate = _lib.get("EFWCalibrate", "cdecl") + EFWCalibrate.argtypes = [c_int] + EFWCalibrate.restype = EFW_ERROR_CODE + break + +# /usr/include/libasi/EFW_filter.h: 234 +for _lib in _libs.values(): + if not _lib.has("EFWClose", "cdecl"): + continue + EFWClose = _lib.get("EFWClose", "cdecl") + EFWClose.argtypes = [c_int] + EFWClose.restype = EFW_ERROR_CODE + break + +# /usr/include/libasi/EFW_filter.h: 240 +for _lib in _libs.values(): + if not _lib.has("EFWGetSDKVersion", "cdecl"): + continue + EFWGetSDKVersion = _lib.get("EFWGetSDKVersion", "cdecl") + EFWGetSDKVersion.argtypes = [] + if sizeof(c_int) == sizeof(c_void_p): + EFWGetSDKVersion.restype = ReturnString + else: + EFWGetSDKVersion.restype = String + EFWGetSDKVersion.errcheck = ReturnString + break + +# /usr/include/libasi/EFW_filter.h: 257 +for _lib in _libs.values(): + if not _lib.has("EFWGetHWErrorCode", "cdecl"): + continue + EFWGetHWErrorCode = _lib.get("EFWGetHWErrorCode", "cdecl") + EFWGetHWErrorCode.argtypes = [c_int, POINTER(c_int)] + EFWGetHWErrorCode.restype = EFW_ERROR_CODE + break + +# /usr/include/libasi/EFW_filter.h: 273 +for _lib in _libs.values(): + if not _lib.has("EFWGetFirmwareVersion", "cdecl"): + continue + EFWGetFirmwareVersion = _lib.get("EFWGetFirmwareVersion", "cdecl") + EFWGetFirmwareVersion.argtypes = [c_int, POINTER(c_ubyte), POINTER(c_ubyte), POINTER(c_ubyte)] + EFWGetFirmwareVersion.restype = EFW_ERROR_CODE + break + +# /usr/include/libasi/EFW_filter.h: 290 +for _lib in _libs.values(): + if not _lib.has("EFWGetSerialNumber", "cdecl"): + continue + EFWGetSerialNumber = _lib.get("EFWGetSerialNumber", "cdecl") + EFWGetSerialNumber.argtypes = [c_int, POINTER(EFW_SN)] + EFWGetSerialNumber.restype = EFW_ERROR_CODE + break + +# /usr/include/libasi/EFW_filter.h: 307 +for _lib in _libs.values(): + if not _lib.has("EFWSetID", "cdecl"): + continue + EFWSetID = _lib.get("EFWSetID", "cdecl") + EFWSetID.argtypes = [c_int, EFW_ID] + EFWSetID.restype = EFW_ERROR_CODE + break + +# /usr/include/libasi/EFW_filter.h: 28 +try: + EFW_ID_MAX = 128 +except: + pass + +_EFW_INFO = struct__EFW_INFO# /usr/include/libasi/EFW_filter.h: 35 + +_EFW_ID = struct__EFW_ID# /usr/include/libasi/EFW_filter.h: 54 + +# No inserted files + +# No prefix-stripping + diff --git a/modules/lithium.pydevice/zwoasi/libs/usb.py b/modules/lithium.pydevice/zwoasi/libs/usb.py new file mode 100644 index 00000000..2dd28da9 --- /dev/null +++ b/modules/lithium.pydevice/zwoasi/libs/usb.py @@ -0,0 +1,960 @@ +r"""Wrapper for USB2ST4_Conv.h + +Do not modify this file. +""" + +__docformat__ = "restructuredtext" + +# Begin preamble for Python + +import ctypes +import sys +from ctypes import * # noqa: F401, F403 + +_int_types = (ctypes.c_int16, ctypes.c_int32) +if hasattr(ctypes, "c_int64"): + # Some builds of ctypes apparently do not have ctypes.c_int64 + # defined; it's a pretty good bet that these builds do not + # have 64-bit pointers. + _int_types += (ctypes.c_int64,) +for t in _int_types: + if ctypes.sizeof(t) == ctypes.sizeof(ctypes.c_size_t): + c_ptrdiff_t = t +del t +del _int_types + + + +class UserString: + def __init__(self, seq): + if isinstance(seq, bytes): + self.data = seq + elif isinstance(seq, UserString): + self.data = seq.data[:] + else: + self.data = str(seq).encode() + + def __bytes__(self): + return self.data + + def __str__(self): + return self.data.decode() + + def __repr__(self): + return repr(self.data) + + def __int__(self): + return int(self.data.decode()) + + def __long__(self): + return int(self.data.decode()) + + def __float__(self): + return float(self.data.decode()) + + def __complex__(self): + return complex(self.data.decode()) + + def __hash__(self): + return hash(self.data) + + def __le__(self, string): + if isinstance(string, UserString): + return self.data <= string.data + else: + return self.data <= string + + def __lt__(self, string): + if isinstance(string, UserString): + return self.data < string.data + else: + return self.data < string + + def __ge__(self, string): + if isinstance(string, UserString): + return self.data >= string.data + else: + return self.data >= string + + def __gt__(self, string): + if isinstance(string, UserString): + return self.data > string.data + else: + return self.data > string + + def __eq__(self, string): + if isinstance(string, UserString): + return self.data == string.data + else: + return self.data == string + + def __ne__(self, string): + if isinstance(string, UserString): + return self.data != string.data + else: + return self.data != string + + def __contains__(self, char): + return char in self.data + + def __len__(self): + return len(self.data) + + def __getitem__(self, index): + return self.__class__(self.data[index]) + + def __getslice__(self, start, end): + start = max(start, 0) + end = max(end, 0) + return self.__class__(self.data[start:end]) + + def __add__(self, other): + if isinstance(other, UserString): + return self.__class__(self.data + other.data) + elif isinstance(other, bytes): + return self.__class__(self.data + other) + else: + return self.__class__(self.data + str(other).encode()) + + def __radd__(self, other): + if isinstance(other, bytes): + return self.__class__(other + self.data) + else: + return self.__class__(str(other).encode() + self.data) + + def __mul__(self, n): + return self.__class__(self.data * n) + + __rmul__ = __mul__ + + def __mod__(self, args): + return self.__class__(self.data % args) + + # the following methods are defined in alphabetical order: + def capitalize(self): + return self.__class__(self.data.capitalize()) + + def center(self, width, *args): + return self.__class__(self.data.center(width, *args)) + + def count(self, sub, start=0, end=sys.maxsize): + return self.data.count(sub, start, end) + + def decode(self, encoding=None, errors=None): # XXX improve this? + if encoding: + if errors: + return self.__class__(self.data.decode(encoding, errors)) + else: + return self.__class__(self.data.decode(encoding)) + else: + return self.__class__(self.data.decode()) + + def encode(self, encoding=None, errors=None): # XXX improve this? + if encoding: + if errors: + return self.__class__(self.data.encode(encoding, errors)) + else: + return self.__class__(self.data.encode(encoding)) + else: + return self.__class__(self.data.encode()) + + def endswith(self, suffix, start=0, end=sys.maxsize): + return self.data.endswith(suffix, start, end) + + def expandtabs(self, tabsize=8): + return self.__class__(self.data.expandtabs(tabsize)) + + def find(self, sub, start=0, end=sys.maxsize): + return self.data.find(sub, start, end) + + def index(self, sub, start=0, end=sys.maxsize): + return self.data.index(sub, start, end) + + def isalpha(self): + return self.data.isalpha() + + def isalnum(self): + return self.data.isalnum() + + def isdecimal(self): + return self.data.isdecimal() + + def isdigit(self): + return self.data.isdigit() + + def islower(self): + return self.data.islower() + + def isnumeric(self): + return self.data.isnumeric() + + def isspace(self): + return self.data.isspace() + + def istitle(self): + return self.data.istitle() + + def isupper(self): + return self.data.isupper() + + def join(self, seq): + return self.data.join(seq) + + def ljust(self, width, *args): + return self.__class__(self.data.ljust(width, *args)) + + def lower(self): + return self.__class__(self.data.lower()) + + def lstrip(self, chars=None): + return self.__class__(self.data.lstrip(chars)) + + def partition(self, sep): + return self.data.partition(sep) + + def replace(self, old, new, maxsplit=-1): + return self.__class__(self.data.replace(old, new, maxsplit)) + + def rfind(self, sub, start=0, end=sys.maxsize): + return self.data.rfind(sub, start, end) + + def rindex(self, sub, start=0, end=sys.maxsize): + return self.data.rindex(sub, start, end) + + def rjust(self, width, *args): + return self.__class__(self.data.rjust(width, *args)) + + def rpartition(self, sep): + return self.data.rpartition(sep) + + def rstrip(self, chars=None): + return self.__class__(self.data.rstrip(chars)) + + def split(self, sep=None, maxsplit=-1): + return self.data.split(sep, maxsplit) + + def rsplit(self, sep=None, maxsplit=-1): + return self.data.rsplit(sep, maxsplit) + + def splitlines(self, keepends=0): + return self.data.splitlines(keepends) + + def startswith(self, prefix, start=0, end=sys.maxsize): + return self.data.startswith(prefix, start, end) + + def strip(self, chars=None): + return self.__class__(self.data.strip(chars)) + + def swapcase(self): + return self.__class__(self.data.swapcase()) + + def title(self): + return self.__class__(self.data.title()) + + def translate(self, *args): + return self.__class__(self.data.translate(*args)) + + def upper(self): + return self.__class__(self.data.upper()) + + def zfill(self, width): + return self.__class__(self.data.zfill(width)) + + +class MutableString(UserString): + """mutable string objects + + Python strings are immutable objects. This has the advantage, that + strings may be used as dictionary keys. If this property isn't needed + and you insist on changing string values in place instead, you may cheat + and use MutableString. + + But the purpose of this class is an educational one: to prevent + people from inventing their own mutable string class derived + from UserString and than forget thereby to remove (override) the + __hash__ method inherited from UserString. This would lead to + errors that would be very hard to track down. + + A faster and better solution is to rewrite your program using lists.""" + + def __init__(self, string=""): + self.data = string + + def __hash__(self): + raise TypeError("unhashable type (it is mutable)") + + def __setitem__(self, index, sub): + if index < 0: + index += len(self.data) + if index < 0 or index >= len(self.data): + raise IndexError + self.data = self.data[:index] + sub + self.data[index + 1 :] + + def __delitem__(self, index): + if index < 0: + index += len(self.data) + if index < 0 or index >= len(self.data): + raise IndexError + self.data = self.data[:index] + self.data[index + 1 :] + + def __setslice__(self, start, end, sub): + start = max(start, 0) + end = max(end, 0) + if isinstance(sub, UserString): + self.data = self.data[:start] + sub.data + self.data[end:] + elif isinstance(sub, bytes): + self.data = self.data[:start] + sub + self.data[end:] + else: + self.data = self.data[:start] + str(sub).encode() + self.data[end:] + + def __delslice__(self, start, end): + start = max(start, 0) + end = max(end, 0) + self.data = self.data[:start] + self.data[end:] + + def immutable(self): + return UserString(self.data) + + def __iadd__(self, other): + if isinstance(other, UserString): + self.data += other.data + elif isinstance(other, bytes): + self.data += other + else: + self.data += str(other).encode() + return self + + def __imul__(self, n): + self.data *= n + return self + + +class String(MutableString, ctypes.Union): + + _fields_ = [("raw", ctypes.POINTER(ctypes.c_char)), ("data", ctypes.c_char_p)] + + def __init__(self, obj=b""): + if isinstance(obj, (bytes, UserString)): + self.data = bytes(obj) + else: + self.raw = obj + + def __len__(self): + return self.data and len(self.data) or 0 + + def from_param(cls, obj): + # Convert None or 0 + if obj is None or obj == 0: + return cls(ctypes.POINTER(ctypes.c_char)()) + + # Convert from String + elif isinstance(obj, String): + return obj + + # Convert from bytes + elif isinstance(obj, bytes): + return cls(obj) + + # Convert from str + elif isinstance(obj, str): + return cls(obj.encode()) + + # Convert from c_char_p + elif isinstance(obj, ctypes.c_char_p): + return obj + + # Convert from POINTER(ctypes.c_char) + elif isinstance(obj, ctypes.POINTER(ctypes.c_char)): + return obj + + # Convert from raw pointer + elif isinstance(obj, int): + return cls(ctypes.cast(obj, ctypes.POINTER(ctypes.c_char))) + + # Convert from ctypes.c_char array + elif isinstance(obj, ctypes.c_char * len(obj)): + return obj + + # Convert from object + else: + return String.from_param(obj._as_parameter_) + + from_param = classmethod(from_param) + + +def ReturnString(obj, func=None, arguments=None): + return String.from_param(obj) + + +# As of ctypes 1.0, ctypes does not support custom error-checking +# functions on callbacks, nor does it support custom datatypes on +# callbacks, so we must ensure that all callbacks return +# primitive datatypes. +# +# Non-primitive return values wrapped with UNCHECKED won't be +# typechecked, and will be converted to ctypes.c_void_p. +def UNCHECKED(type): + if hasattr(type, "_type_") and isinstance(type._type_, str) and type._type_ != "P": + return type + else: + return ctypes.c_void_p + + +# ctypes doesn't have direct support for variadic functions, so we have to write +# our own wrapper class +class _variadic_function(object): + def __init__(self, func, restype, argtypes, errcheck): + self.func = func + self.func.restype = restype + self.argtypes = argtypes + if errcheck: + self.func.errcheck = errcheck + + def _as_parameter_(self): + # So we can pass this variadic function as a function pointer + return self.func + + def __call__(self, *args): + fixed_args = [] + i = 0 + for argtype in self.argtypes: + # Typecheck what we can + fixed_args.append(argtype.from_param(args[i])) + i += 1 + return self.func(*fixed_args + list(args[i:])) + + +def ord_if_char(value): + """ + Simple helper used for casts to simple builtin types: if the argument is a + string type, it will be converted to it's ordinal value. + + This function will raise an exception if the argument is string with more + than one characters. + """ + return ord(value) if (isinstance(value, bytes) or isinstance(value, str)) else value + +# End preamble + +_libs = {} +_libdirs = [] + +# Begin loader + +""" +Load libraries - appropriately for all our supported platforms +""" +# ---------------------------------------------------------------------------- +# Copyright (c) 2008 David James +# Copyright (c) 2006-2008 Alex Holkner +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of pyglet nor the names of its +# contributors may be used to endorse or promote products +# derived from this software without specific prior written +# permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# ---------------------------------------------------------------------------- + +import ctypes +import ctypes.util +import glob +import os.path +import platform +import re +import sys + + +def _environ_path(name): + """Split an environment variable into a path-like list elements""" + if name in os.environ: + return os.environ[name].split(":") + return [] + + +class LibraryLoader: + """ + A base class For loading of libraries ;-) + Subclasses load libraries for specific platforms. + """ + + # library names formatted specifically for platforms + name_formats = ["%s"] + + class Lookup: + """Looking up calling conventions for a platform""" + + mode = ctypes.DEFAULT_MODE + + def __init__(self, path): + super(LibraryLoader.Lookup, self).__init__() + self.access = dict(cdecl=ctypes.CDLL(path, self.mode)) + + def get(self, name, calling_convention="cdecl"): + """Return the given name according to the selected calling convention""" + if calling_convention not in self.access: + raise LookupError( + "Unknown calling convention '{}' for function '{}'".format( + calling_convention, name + ) + ) + return getattr(self.access[calling_convention], name) + + def has(self, name, calling_convention="cdecl"): + """Return True if this given calling convention finds the given 'name'""" + if calling_convention not in self.access: + return False + return hasattr(self.access[calling_convention], name) + + def __getattr__(self, name): + return getattr(self.access["cdecl"], name) + + def __init__(self): + self.other_dirs = [] + + def __call__(self, libname): + """Given the name of a library, load it.""" + paths = self.getpaths(libname) + + for path in paths: + # noinspection PyBroadException + try: + return self.Lookup(path) + except Exception: # pylint: disable=broad-except + pass + + raise ImportError("Could not load %s." % libname) + + def getpaths(self, libname): + """Return a list of paths where the library might be found.""" + if os.path.isabs(libname): + yield libname + else: + # search through a prioritized series of locations for the library + + # we first search any specific directories identified by user + for dir_i in self.other_dirs: + for fmt in self.name_formats: + # dir_i should be absolute already + yield os.path.join(dir_i, fmt % libname) + + # check if this code is even stored in a physical file + try: + this_file = __file__ + except NameError: + this_file = None + + # then we search the directory where the generated python interface is stored + if this_file is not None: + for fmt in self.name_formats: + yield os.path.abspath(os.path.join(os.path.dirname(__file__), fmt % libname)) + + # now, use the ctypes tools to try to find the library + for fmt in self.name_formats: + path = ctypes.util.find_library(fmt % libname) + if path: + yield path + + # then we search all paths identified as platform-specific lib paths + for path in self.getplatformpaths(libname): + yield path + + # Finally, we'll try the users current working directory + for fmt in self.name_formats: + yield os.path.abspath(os.path.join(os.path.curdir, fmt % libname)) + + def getplatformpaths(self, _libname): # pylint: disable=no-self-use + """Return all the library paths available in this platform""" + return [] + + +# Darwin (Mac OS X) + + +class DarwinLibraryLoader(LibraryLoader): + """Library loader for MacOS""" + + name_formats = [ + "lib%s.dylib", + "lib%s.so", + "lib%s.bundle", + "%s.dylib", + "%s.so", + "%s.bundle", + "%s", + ] + + class Lookup(LibraryLoader.Lookup): + """ + Looking up library files for this platform (Darwin aka MacOS) + """ + + # Darwin requires dlopen to be called with mode RTLD_GLOBAL instead + # of the default RTLD_LOCAL. Without this, you end up with + # libraries not being loadable, resulting in "Symbol not found" + # errors + mode = ctypes.RTLD_GLOBAL + + def getplatformpaths(self, libname): + if os.path.pathsep in libname: + names = [libname] + else: + names = [fmt % libname for fmt in self.name_formats] + + for directory in self.getdirs(libname): + for name in names: + yield os.path.join(directory, name) + + @staticmethod + def getdirs(libname): + """Implements the dylib search as specified in Apple documentation: + + http://developer.apple.com/documentation/DeveloperTools/Conceptual/ + DynamicLibraries/Articles/DynamicLibraryUsageGuidelines.html + + Before commencing the standard search, the method first checks + the bundle's ``Frameworks`` directory if the application is running + within a bundle (OS X .app). + """ + + dyld_fallback_library_path = _environ_path("DYLD_FALLBACK_LIBRARY_PATH") + if not dyld_fallback_library_path: + dyld_fallback_library_path = [ + os.path.expanduser("~/lib"), + "/usr/local/lib", + "/usr/lib", + ] + + dirs = [] + + if "/" in libname: + dirs.extend(_environ_path("DYLD_LIBRARY_PATH")) + else: + dirs.extend(_environ_path("LD_LIBRARY_PATH")) + dirs.extend(_environ_path("DYLD_LIBRARY_PATH")) + dirs.extend(_environ_path("LD_RUN_PATH")) + + if hasattr(sys, "frozen") and getattr(sys, "frozen") == "macosx_app": + dirs.append(os.path.join(os.environ["RESOURCEPATH"], "..", "Frameworks")) + + dirs.extend(dyld_fallback_library_path) + + return dirs + + +# Posix + + +class PosixLibraryLoader(LibraryLoader): + """Library loader for POSIX-like systems (including Linux)""" + + _ld_so_cache = None + + _include = re.compile(r"^\s*include\s+(?P.*)") + + name_formats = ["lib%s.so", "%s.so", "%s"] + + class _Directories(dict): + """Deal with directories""" + + def __init__(self): + dict.__init__(self) + self.order = 0 + + def add(self, directory): + """Add a directory to our current set of directories""" + if len(directory) > 1: + directory = directory.rstrip(os.path.sep) + # only adds and updates order if exists and not already in set + if not os.path.exists(directory): + return + order = self.setdefault(directory, self.order) + if order == self.order: + self.order += 1 + + def extend(self, directories): + """Add a list of directories to our set""" + for a_dir in directories: + self.add(a_dir) + + def ordered(self): + """Sort the list of directories""" + return (i[0] for i in sorted(self.items(), key=lambda d: d[1])) + + def _get_ld_so_conf_dirs(self, conf, dirs): + """ + Recursive function to help parse all ld.so.conf files, including proper + handling of the `include` directive. + """ + + try: + with open(conf) as fileobj: + for dirname in fileobj: + dirname = dirname.strip() + if not dirname: + continue + + match = self._include.match(dirname) + if not match: + dirs.add(dirname) + else: + for dir2 in glob.glob(match.group("pattern")): + self._get_ld_so_conf_dirs(dir2, dirs) + except IOError: + pass + + def _create_ld_so_cache(self): + # Recreate search path followed by ld.so. This is going to be + # slow to build, and incorrect (ld.so uses ld.so.cache, which may + # not be up-to-date). Used only as fallback for distros without + # /sbin/ldconfig. + # + # We assume the DT_RPATH and DT_RUNPATH binary sections are omitted. + + directories = self._Directories() + for name in ( + "LD_LIBRARY_PATH", + "SHLIB_PATH", # HP-UX + "LIBPATH", # OS/2, AIX + "LIBRARY_PATH", # BE/OS + ): + if name in os.environ: + directories.extend(os.environ[name].split(os.pathsep)) + + self._get_ld_so_conf_dirs("/etc/ld.so.conf", directories) + + bitage = platform.architecture()[0] + + unix_lib_dirs_list = [] + if bitage.startswith("64"): + # prefer 64 bit if that is our arch + unix_lib_dirs_list += ["/lib64", "/usr/lib64"] + + # must include standard libs, since those paths are also used by 64 bit + # installs + unix_lib_dirs_list += ["/lib", "/usr/lib"] + if sys.platform.startswith("linux"): + # Try and support multiarch work in Ubuntu + # https://wiki.ubuntu.com/MultiarchSpec + if bitage.startswith("32"): + # Assume Intel/AMD x86 compat + unix_lib_dirs_list += ["/lib/i386-linux-gnu", "/usr/lib/i386-linux-gnu"] + elif bitage.startswith("64"): + # Assume Intel/AMD x86 compatible + unix_lib_dirs_list += [ + "/lib/x86_64-linux-gnu", + "/usr/lib/x86_64-linux-gnu", + ] + else: + # guess... + unix_lib_dirs_list += glob.glob("/lib/*linux-gnu") + directories.extend(unix_lib_dirs_list) + + cache = {} + lib_re = re.compile(r"lib(.*)\.s[ol]") + # ext_re = re.compile(r"\.s[ol]$") + for our_dir in directories.ordered(): + try: + for path in glob.glob("%s/*.s[ol]*" % our_dir): + file = os.path.basename(path) + + # Index by filename + cache_i = cache.setdefault(file, set()) + cache_i.add(path) + + # Index by library name + match = lib_re.match(file) + if match: + library = match.group(1) + cache_i = cache.setdefault(library, set()) + cache_i.add(path) + except OSError: + pass + + self._ld_so_cache = cache + + def getplatformpaths(self, libname): + if self._ld_so_cache is None: + self._create_ld_so_cache() + + result = self._ld_so_cache.get(libname, set()) + for i in result: + # we iterate through all found paths for library, since we may have + # actually found multiple architectures or other library types that + # may not load + yield i + + +# Windows + + +class WindowsLibraryLoader(LibraryLoader): + """Library loader for Microsoft Windows""" + + name_formats = ["%s.dll", "lib%s.dll", "%slib.dll", "%s"] + + class Lookup(LibraryLoader.Lookup): + """Lookup class for Windows libraries...""" + + def __init__(self, path): + super(WindowsLibraryLoader.Lookup, self).__init__(path) + self.access["stdcall"] = ctypes.windll.LoadLibrary(path) + + +# Platform switching + +# If your value of sys.platform does not appear in this dict, please contact +# the Ctypesgen maintainers. + +loaderclass = { + "darwin": DarwinLibraryLoader, + "cygwin": WindowsLibraryLoader, + "win32": WindowsLibraryLoader, + "msys": WindowsLibraryLoader, +} + +load_library = loaderclass.get(sys.platform, PosixLibraryLoader)() + + +def add_library_search_dirs(other_dirs): + """ + Add libraries to search paths. + If library paths are relative, convert them to absolute with respect to this + file's directory + """ + for path in other_dirs: + if not os.path.isabs(path): + path = os.path.abspath(path) + load_library.other_dirs.append(path) + + +del loaderclass + +# End loader + +add_library_search_dirs([]) + +# No libraries + +# No modules + +enum_USB2ST4_DIRECTION = c_int# /usr/include/libasi/USB2ST4_Conv.h: 34 + +USB2ST4_NORTH = 0# /usr/include/libasi/USB2ST4_Conv.h: 34 + +USB2ST4_SOUTH = (USB2ST4_NORTH + 1)# /usr/include/libasi/USB2ST4_Conv.h: 34 + +USB2ST4_EAST = (USB2ST4_SOUTH + 1)# /usr/include/libasi/USB2ST4_Conv.h: 34 + +USB2ST4_WEST = (USB2ST4_EAST + 1)# /usr/include/libasi/USB2ST4_Conv.h: 34 + +USB2ST4_DIRECTION = enum_USB2ST4_DIRECTION# /usr/include/libasi/USB2ST4_Conv.h: 34 + +enum__USB2ST4_ERROR_CODE = c_int# /usr/include/libasi/USB2ST4_Conv.h: 46 + +USB2ST4_SUCCESS = 0# /usr/include/libasi/USB2ST4_Conv.h: 46 + +USB2ST4_ERROR_INVALID_INDEX = (USB2ST4_SUCCESS + 1)# /usr/include/libasi/USB2ST4_Conv.h: 46 + +USB2ST4_ERROR_INVALID_ID = (USB2ST4_ERROR_INVALID_INDEX + 1)# /usr/include/libasi/USB2ST4_Conv.h: 46 + +USB2ST4_ERROR_INVALID_VALUE = (USB2ST4_ERROR_INVALID_ID + 1)# /usr/include/libasi/USB2ST4_Conv.h: 46 + +USB2ST4_ERROR_REMOVED = (USB2ST4_ERROR_INVALID_VALUE + 1)# /usr/include/libasi/USB2ST4_Conv.h: 46 + +USB2ST4_ERROR_ERROR_STATE = (USB2ST4_ERROR_REMOVED + 1)# /usr/include/libasi/USB2ST4_Conv.h: 46 + +USB2ST4_ERROR_GENERAL_ERROR = (USB2ST4_ERROR_ERROR_STATE + 1)# /usr/include/libasi/USB2ST4_Conv.h: 46 + +USB2ST4_ERROR_CLOSED = (USB2ST4_ERROR_GENERAL_ERROR + 1)# /usr/include/libasi/USB2ST4_Conv.h: 46 + +USB2ST4_ERROR_END = (-1)# /usr/include/libasi/USB2ST4_Conv.h: 46 + +USB2ST4_ERROR_CODE = enum__USB2ST4_ERROR_CODE# /usr/include/libasi/USB2ST4_Conv.h: 46 + +# /usr/include/libasi/USB2ST4_Conv.h: 59 +for _lib in _libs.values(): + if not _lib.has("USB2ST4GetNum", "cdecl"): + continue + USB2ST4GetNum = _lib.get("USB2ST4GetNum", "cdecl") + USB2ST4GetNum.argtypes = [] + USB2ST4GetNum.restype = c_int + break + +# /usr/include/libasi/USB2ST4_Conv.h: 70 +for _lib in _libs.values(): + if not _lib.has("USB2ST4GetProductIDs", "cdecl"): + continue + USB2ST4GetProductIDs = _lib.get("USB2ST4GetProductIDs", "cdecl") + USB2ST4GetProductIDs.argtypes = [POINTER(c_int)] + USB2ST4GetProductIDs.restype = c_int + break + +# /usr/include/libasi/USB2ST4_Conv.h: 88 +for _lib in _libs.values(): + if not _lib.has("USB2ST4GetID", "cdecl"): + continue + USB2ST4GetID = _lib.get("USB2ST4GetID", "cdecl") + USB2ST4GetID.argtypes = [c_int, POINTER(c_int)] + USB2ST4GetID.restype = USB2ST4_ERROR_CODE + break + +# /usr/include/libasi/USB2ST4_Conv.h: 106 +for _lib in _libs.values(): + if not _lib.has("USB2ST4IsOpened", "cdecl"): + continue + USB2ST4IsOpened = _lib.get("USB2ST4IsOpened", "cdecl") + USB2ST4IsOpened.argtypes = [c_int] + USB2ST4IsOpened.restype = USB2ST4_ERROR_CODE + break + +# /usr/include/libasi/USB2ST4_Conv.h: 121 +for _lib in _libs.values(): + if not _lib.has("USB2ST4Open", "cdecl"): + continue + USB2ST4Open = _lib.get("USB2ST4Open", "cdecl") + USB2ST4Open.argtypes = [c_int] + USB2ST4Open.restype = USB2ST4_ERROR_CODE + break + +# /usr/include/libasi/USB2ST4_Conv.h: 155 +for _lib in _libs.values(): + if not _lib.has("USB2ST4Close", "cdecl"): + continue + USB2ST4Close = _lib.get("USB2ST4Close", "cdecl") + USB2ST4Close.argtypes = [c_int] + USB2ST4Close.restype = USB2ST4_ERROR_CODE + break + +# /usr/include/libasi/USB2ST4_Conv.h: 27 +try: + USB2ST4_ID_MAX = 128 +except: + pass + +# No inserted files + +# No prefix-stripping + diff --git a/pysrc/image/adaptive_stretch/__init__.py b/modules/lithium.pyimage/image/adaptive_stretch/__init__.py similarity index 100% rename from pysrc/image/adaptive_stretch/__init__.py rename to modules/lithium.pyimage/image/adaptive_stretch/__init__.py diff --git a/modules/lithium.pyimage/image/adaptive_stretch/preview.py b/modules/lithium.pyimage/image/adaptive_stretch/preview.py new file mode 100644 index 00000000..13e658cf --- /dev/null +++ b/modules/lithium.pyimage/image/adaptive_stretch/preview.py @@ -0,0 +1,89 @@ +import matplotlib.pyplot as plt +import cv2 +import numpy as np +from typing import Optional, Tuple +from loguru import logger +from .stretch import AdaptiveStretch + + +logger.add("preview.log", rotation="1 MB") + + +def apply_real_time_preview( + image: np.ndarray, + noise_threshold: float = 1e-4, + contrast_protection: Optional[float] = None, + max_curve_points: int = 106, + roi: Optional[Tuple[int, int, int, int]] = None +) -> np.ndarray: + """ + Real-time preview by iteratively applying adaptive stretch transformation and displaying the result. + + :param image: Input image as a numpy array (grayscale or color). + :param noise_threshold: Threshold to treat brightness differences as noise. + :param contrast_protection: Optional contrast protection parameter. + :param max_curve_points: Maximum number of points in the transformation curve. + :param roi: Optional region of interest defined as a tuple (x, y, width, height). + :return: Processed image. + """ + logger.info("Starting real-time preview") + adaptive_stretch = AdaptiveStretch( + noise_threshold, contrast_protection, max_curve_points) + preview_image = adaptive_stretch.stretch(image, roi) + + if len(preview_image.shape) == 3: + # Convert the image from BGR to RGB color space for displaying with matplotlib + preview_image = cv2.cvtColor(preview_image, cv2.COLOR_BGR2RGB) + logger.debug("Converted image color space to RGB") + else: + logger.debug("Processing grayscale image") + + # Display the image using matplotlib + plt.imshow(preview_image, cmap='gray' if len( + preview_image.shape) == 2 else None) + plt.title( + f"Noise Threshold: {noise_threshold}, Contrast Protection: {contrast_protection}") + plt.show() + logger.info("Real-time preview completed") + return preview_image + + +def save_preview(image: np.ndarray, path: str) -> None: + """ + Save the preview image to the specified path. + + :param image: Image to be saved. + :param path: Path to save the image file. + """ + logger.info(f"Saving preview image to {path}") + success = cv2.imwrite(path, image) + if success: + logger.info(f"Image successfully saved to {path}") + else: + logger.error(f"Failed to save image to {path}") + + +def load_and_preview( + path: str, + noise_threshold: float = 1e-4, + contrast_protection: Optional[float] = None, + max_curve_points: int = 106, + roi: Optional[Tuple[int, int, int, int]] = None +) -> np.ndarray: + """ + Load an image and apply real-time preview. + + :param path: Path to the image file. + :param noise_threshold: Threshold to treat brightness differences as noise. + :param contrast_protection: Optional contrast protection parameter. + :param max_curve_points: Maximum number of points in the transformation curve. + :param roi: Optional region of interest defined as a tuple (x, y, width, height). + :return: Processed image. + """ + logger.info(f"Loading image from {path}") + image = cv2.imread(path, cv2.IMREAD_COLOR) + if image is None: + logger.error(f"Failed to load image from {path}") + raise FileNotFoundError(f"Image file not found: {path}") + logger.info(f"Image successfully loaded from {path}") + return apply_real_time_preview(image, noise_threshold, contrast_protection, max_curve_points, roi) \ No newline at end of file diff --git a/modules/lithium.pyimage/image/adaptive_stretch/stretch.py b/modules/lithium.pyimage/image/adaptive_stretch/stretch.py new file mode 100644 index 00000000..b1db3119 --- /dev/null +++ b/modules/lithium.pyimage/image/adaptive_stretch/stretch.py @@ -0,0 +1,301 @@ +import concurrent.futures +from dataclasses import dataclass, field +from enum import Enum +from pathlib import Path +from typing import Optional, Tuple, Literal, List +import cv2 +import numpy as np +from loguru import logger +import argparse +import sys + + +# Configure Loguru logger with file rotation and different log levels +logger.remove() # Remove the default logger +logger.add(sys.stderr, level="INFO", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}") +logger.add("adaptive_stretch.log", rotation="10 MB", retention="10 days", + level="DEBUG", format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}") + + +class ImageFormat(Enum): + PNG = "png" + JPEG = "jpg" + TIFF = "tiff" + BMP = "bmp" + + @staticmethod + def list(): + return [fmt.value for fmt in ImageFormat] + + +@dataclass +class AdaptiveStretch: + noise_threshold: float = 1e-4 + contrast_protection: Optional[float] = None + max_curve_points: int = 106 + roi: Optional[Tuple[int, int, int, int]] = None # (x, y, width, height) + save_intermediate: bool = False # 是否保存中间结果 + intermediate_dir: Optional[Path] = None # 保存中间结果的目录 + + def __post_init__(self): + """ + Initialize the logger and log the initialization parameters. + """ + if self.save_intermediate: + if self.intermediate_dir is None: + self.intermediate_dir = Path("intermediate_results") + self.intermediate_dir.mkdir(parents=True, exist_ok=True) + logger.debug( + f"Intermediate results will be saved to {self.intermediate_dir}") + logger.info("AdaptiveStretch initialized with noise_threshold={}, contrast_protection={}, max_curve_points={}, roi={}, save_intermediate={}, intermediate_dir={}", + self.noise_threshold, self.contrast_protection, self.max_curve_points, + self.roi, self.save_intermediate, self.intermediate_dir) + + def compute_brightness_diff(self, image: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: + """ + Compute the brightness differences in the x and y directions. + + :param image: Input image as a numpy array. + :return: Tuple containing the brightness differences in the x and y directions. + """ + logger.debug("Computing brightness differences") + diff_x = np.diff(image, axis=1) + diff_y = np.diff(image, axis=0) + diff_x = np.pad(diff_x, ((0, 0), (0, 1)), mode='constant') + diff_y = np.pad(diff_y, ((0, 1), (0, 0)), mode='constant') + return diff_x, diff_y + + def stretch(self, image: np.ndarray) -> np.ndarray: + """ + Apply adaptive stretch transformation to the image. + + :param image: Input image as a numpy array (grayscale or color). + :return: Stretched image as a numpy array. + """ + logger.info("Starting stretch operation") + if len(image.shape) == 3: + channels = cv2.split(image) + else: + channels = [image] + + stretched_channels = [] + + for idx, channel in enumerate(channels): + logger.debug(f"Processing channel {idx}") + channel = channel.astype(np.float32) / 255.0 + + if self.roi: + x, y, w, h = self.roi + channel_roi = channel[y:y+h, x:x+w] + logger.debug(f"Applying ROI: x={x}, y={y}, w={w}, h={h}") + else: + channel_roi = channel + + diff_x, diff_y = self.compute_brightness_diff(channel_roi) + + positive_forces = np.maximum(diff_x, 0) + np.maximum(diff_y, 0) + negative_forces = np.minimum(diff_x, 0) + np.minimum(diff_y, 0) + + positive_forces[positive_forces < self.noise_threshold] = 0 + negative_forces[negative_forces > -self.noise_threshold] = 0 + + transformation_curve = positive_forces + negative_forces + + if self.contrast_protection is not None: + transformation_curve = np.clip( + transformation_curve, -self.contrast_protection, self.contrast_protection) + logger.debug( + f"Applied contrast protection: {self.contrast_protection}") + + resampled_curve = cv2.resize( + transformation_curve, (self.max_curve_points, 1), interpolation=cv2.INTER_LINEAR) + interpolated_curve = cv2.resize( + resampled_curve, (channel_roi.shape[1], channel_roi.shape[0]), interpolation=cv2.INTER_LINEAR) + + stretched_channel = channel_roi + interpolated_curve + stretched_channel = np.clip( + stretched_channel * 255, 0, 255).astype(np.uint8) + + if self.roi: + channel[y:y+h, x:x+w] = stretched_channel + stretched_channel = channel + logger.debug( + f"Replaced ROI with stretched channel for channel {idx}") + + stretched_channels.append(stretched_channel) + + if self.save_intermediate and self.intermediate_dir: + intermediate_path = self.intermediate_dir / \ + f"channel_{idx}_stretched.png" + cv2.imwrite(str(intermediate_path), stretched_channel) + logger.debug( + f"Saved intermediate stretched channel to {intermediate_path}") + + if len(stretched_channels) > 1: + stretched_image = cv2.merge(stretched_channels) + else: + stretched_image = stretched_channels[0] + + logger.info("Stretch operation completed") + return stretched_image + + def stretch_channel(self, o: np.ndarray, s: np.ndarray, c: int, bg: float, sigma: float, median: float, mad: float) -> None: + """ + Stretch a single channel of the image. + + :param o: Original image. + :param s: Stretched image. + :param c: Channel index. + :param bg: Background level. + :param sigma: Sigma value for clipping. + :param median: Median value of the channel. + :param mad: Median absolute deviation of the channel. + """ + o_channel = o[:, :, c] + s_channel = s[:, :, c] + + shadow_clipping = np.clip(median - sigma * mad, 0, 1.0) + highlight_clipping = 1.0 + + midtone = self.MTF((median - shadow_clipping) / + (highlight_clipping - shadow_clipping), bg) + + o_channel[o_channel <= shadow_clipping] = 0.0 + o_channel[o_channel >= highlight_clipping] = 1.0 + + s_channel[s_channel <= shadow_clipping] = 0.0 + s_channel[s_channel >= highlight_clipping] = 1.0 + + indx_inside_o = np.logical_and( + o_channel > shadow_clipping, o_channel < highlight_clipping) + indx_inside_s = np.logical_and( + s_channel > shadow_clipping, s_channel < highlight_clipping) + + o_channel[indx_inside_o] = ( + o_channel[indx_inside_o] - shadow_clipping) / (highlight_clipping - shadow_clipping) + s_channel[indx_inside_s] = ( + s_channel[indx_inside_s] - shadow_clipping) / (highlight_clipping - shadow_clipping) + + o_channel = self.MTF(o_channel, midtone) + s_channel = self.MTF(s_channel, midtone) + o[:, :, c] = o_channel[:, :] + s[:, :, c] = s_channel[:, :] + + def stretch(self, o: np.ndarray, s: np.ndarray, bg: float, sigma: float, median: List[float], mad: List[float]) -> Tuple[np.ndarray, np.ndarray]: + """ + Stretch the image using the specified parameters. + + :param o: Original image. + :param s: Stretched image. + :param bg: Background level. + :param sigma: Sigma value for clipping. + :param median: List of median values for each channel. + :param mad: List of median absolute deviations for each channel. + :return: Tuple of stretched images. + """ + o_copy = np.copy(o) + s_copy = np.copy(s) + + for c in range(o_copy.shape[-1]): + self.stretch_channel(o_copy, s_copy, c, bg, + sigma, median[c], mad[c]) + + return o_copy, s_copy + + def MTF(self, data: np.ndarray, midtone: float) -> np.ndarray: + """ + Apply midtone transfer function (MTF) to the data. + + :param data: Input data. + :param midtone: Midtone value. + :return: Transformed data. + """ + if isinstance(data, np.ndarray): + data[:] = (midtone - 1) * data[:] / \ + ((2 * midtone - 1) * data[:] - midtone) + else: + data = (midtone - 1) * data / ((2 * midtone - 1) * data - midtone) + + return data + + def MTF_inverse(self, data: np.ndarray, midtone: float) -> np.ndarray: + """ + Apply inverse midtone transfer function (MTF) to the data. + + :param data: Input data. + :param midtone: Midtone value. + :return: Transformed data. + """ + if isinstance(data, np.ndarray): + data[:] = midtone * data[:] / \ + ((2 * midtone - 1) * data[:] - (midtone - 1)) + else: + data = midtone * data / ((2 * midtone - 1) * data - (midtone - 1)) + + return data + + +def parse_arguments() -> argparse.Namespace: + """ + Parse command-line arguments for the stretch script. + + :return: Parsed arguments. + """ + parser = argparse.ArgumentParser( + description="Adaptive Image Stretching Tool") + parser.add_argument('--input', type=Path, required=True, + help='Path to the input image.') + parser.add_argument('--output', type=Path, required=True, + help='Path to save the stretched image.') + parser.add_argument('--noise_threshold', type=float, + default=1e-4, help='Noise threshold for stretching.') + parser.add_argument('--contrast_protection', type=float, + default=None, help='Contrast protection limit.') + parser.add_argument('--max_curve_points', type=int, + default=106, help='Maximum number of curve points.') + parser.add_argument('--roi', type=int, nargs=4, metavar=('X', 'Y', 'W', 'H'), default=None, + help='Region of interest as four integers: x y width height.') + parser.add_argument('--save_intermediate', action='store_true', + help='Save intermediate stretched channels.') + parser.add_argument('--intermediate_dir', type=Path, default=None, + help='Directory to save intermediate results.') + + return parser.parse_args() + + +def main(): + """ + Main function to parse arguments and execute the stretch operation. + """ + args = parse_arguments() + + if not args.input.exists(): + logger.error(f"Input file does not exist: {args.input}") + sys.exit(1) + + image = cv2.imread(str(args.input), cv2.IMREAD_UNCHANGED) + if image is None: + logger.error(f"Failed to load image: {args.input}") + sys.exit(1) + + stretcher = AdaptiveStretch( + noise_threshold=args.noise_threshold, + contrast_protection=args.contrast_protection, + max_curve_points=args.max_curve_points, + roi=tuple(args.roi) if args.roi else None, + save_intermediate=args.save_intermediate, + intermediate_dir=args.intermediate_dir + ) + + stretched_image = stretcher.stretch(image) + + success = cv2.imwrite(str(args.output), stretched_image) + if success: + logger.info(f"Stretched image saved to: {args.output}") + else: + logger.error(f"Failed to save stretched image to: {args.output}") + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pyimage/image/api/grexpert.py b/modules/lithium.pyimage/image/api/grexpert.py new file mode 100644 index 00000000..d5759989 --- /dev/null +++ b/modules/lithium.pyimage/image/api/grexpert.py @@ -0,0 +1,215 @@ +import argparse +import subprocess +import sys +from pathlib import Path + +from loguru import logger + + +class SerializationException(Exception): + """Custom exception for serialization errors.""" + pass + + +def setup_logging(log_level: str): + """ + Configure the Loguru logger. + + Args: + log_level (str): The logging level (e.g., "INFO", "DEBUG", "ERROR"). + """ + logger.remove() # Remove the default logger + logger.add(sys.stderr, level=log_level, + format="{time} | {level} | {message}") + + +def validate_args(args: argparse.Namespace): + """ + Validate command-line arguments to ensure correctness. + + Args: + args (argparse.Namespace): Parsed command-line arguments. + + Raises: + SerializationException: If any validation check fails. + """ + # Check if input file(s) exist + for file in args.filenames: + if not file.is_file(): + logger.error(f"Input file '{file}' does not exist.") + raise SerializationException( + f"Input file '{file}' does not exist.") + + # Check operation type + if args.operation not in ["background-extraction", "denoising"]: + logger.error( + f"Unsupported operation '{args.operation}'. Use 'background-extraction' or 'denoising'.") + raise SerializationException( + f"Unsupported operation '{args.operation}'.") + + # Check parameter ranges + if args.smoothing is not None and not (0.0 <= args.smoothing <= 1.0): + logger.error( + f"Smoothing value must be between 0.0 and 1.0. Received: {args.smoothing}") + raise SerializationException( + f"Smoothing value out of range: {args.smoothing}") + + if args.strength is not None and not (0.0 <= args.strength <= 1.0): + logger.error( + f"Strength value must be between 0.0 and 1.0. Received: {args.strength}") + raise SerializationException( + f"Strength value out of range: {args.strength}") + + if args.batch_size is not None and not (1 <= args.batch_size <= 32): + logger.error( + f"Batch size must be between 1 and 32. Received: {args.batch_size}") + raise SerializationException( + f"Batch size out of range: {args.batch_size}") + + # Check background correction method validity + if args.correction and args.correction not in ["Subtraction", "Division"]: + logger.error( + f"Correction method must be 'Subtraction' or 'Division'. Received: {args.correction}") + raise SerializationException( + f"Invalid correction method: {args.correction}") + + # For denoising, ensure strength parameter exists + if args.operation == "denoising" and args.strength is None: + logger.error( + "The 'strength' parameter is required for the 'denoising' operation.") + raise SerializationException( + "Missing 'strength' parameter for 'denoising' operation.") + + +def run_graxpert(args: argparse.Namespace): + """ + Run GraXpert with specified command-line arguments. + + Args: + args (argparse.Namespace): Parsed command-line arguments. + + Raises: + SerializationException: If GraXpert execution fails. + """ + graxpert_executable = Path(args.graxpert_path).expanduser() + + if not graxpert_executable.is_file(): + logger.error( + f"GraXpert executable not found at '{graxpert_executable}'.") + raise SerializationException( + f"GraXpert executable not found at '{graxpert_executable}'.") + + # Base command + cmd = [str(graxpert_executable), "-cli"] + + # Add operation and filenames + cmd += ["-cmd", args.operation] + cmd += [str(file) for file in args.filenames] + + # Add optional parameters + if args.output: + cmd += ["-output", args.output] + if args.gpu is not None: + cmd += ["-gpu", "true" if args.gpu else "false"] + if args.ai_version: + cmd += ["-ai_version", args.ai_version] + if args.preferences_file: + cmd += ["-preferences_file", str(args.preferences_file)] + if args.correction: + cmd += ["-correction", args.correction] + if args.smoothing is not None: + cmd += ["-smoothing", str(args.smoothing)] + if args.bg: + cmd += ["-bg"] + if args.strength is not None: + cmd += ["-strength", str(args.strength)] + if args.batch_size is not None: + cmd += ["-batch_size", str(args.batch_size)] + + # Print the command being run + logger.debug(f"Running command: {' '.join(cmd)}") + + try: + subprocess.run(cmd, check=True) + logger.info("GraXpert processing completed successfully.") + except subprocess.CalledProcessError as e: + logger.error(f"Error running GraXpert: {e}") + raise SerializationException(f"GraXpert execution failed: {e}") from e + + +def parse_arguments() -> argparse.Namespace: + """ + Parse command-line arguments. + + Returns: + argparse.Namespace: Parsed arguments. + """ + parser = argparse.ArgumentParser( + description="GraXpert Command-Line Interface") + + parser.add_argument("filenames", type=Path, nargs='+', + help="Path(s) to the unprocessed image file(s)") + + parser.add_argument("-cmd", "--operation", choices=[ + "background-extraction", "denoising"], default="background-extraction", help="Operation to perform") + + parser.add_argument( + "-output", help="Name of the output file (without extension)") + + parser.add_argument("-gpu", type=lambda x: x.lower() == "true", + help="Enable ('true') or disable ('false') GPU acceleration") + + parser.add_argument( + "-ai_version", help="Specify the AI model version to use") + + parser.add_argument("-preferences_file", type=Path, + help="Path to preferences file containing background grid points") + + parser.add_argument("-correction", choices=["Subtraction", "Division"], + help="Background correction method") + + parser.add_argument("-smoothing", type=float, + help="Strength of smoothing (0.0 to 1.0)") + + parser.add_argument("-bg", action="store_true", + help="Also save the generated background model") + + parser.add_argument("-strength", type=float, + help="Strength of denoising (0.0 to 1.0)") + + parser.add_argument("-batch_size", type=int, + help="Number of image tiles to process in parallel (1 to 32)") + + parser.add_argument("-log_level", type=str, default="INFO", + choices=["DEBUG", "INFO", + "WARNING", "ERROR", "CRITICAL"], + help="Set the logging level") + + parser.add_argument("-graxpert_path", type=Path, default="GraXpert", + help="Path to the GraXpert executable") + + args = parser.parse_args() + return args + + +def main(): + """ + Main function to execute the script logic. + """ + try: + args = parse_arguments() + setup_logging(args.log_level) + logger.debug("Parsed arguments successfully.") + validate_args(args) + logger.info("Arguments validated successfully.") + run_graxpert(args) + except SerializationException as e: + logger.critical(f"Serialization Exception: {e}") + sys.exit(1) + except Exception as e: + logger.critical(f"Unexpected error: {e}") + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pyimage/image/api/strecth_count.py b/modules/lithium.pyimage/image/api/strecth_count.py new file mode 100644 index 00000000..3bb6e961 --- /dev/null +++ b/modules/lithium.pyimage/image/api/strecth_count.py @@ -0,0 +1,362 @@ +import argparse +import json +from dataclasses import dataclass, field +from pathlib import Path +from typing import Dict, Optional, Tuple, List + +import cv2 +import numpy as np +from astropy.io import fits +from concurrent.futures import ThreadPoolExecutor +from loguru import logger +from scipy import ndimage +import yaml + + +@dataclass +class ImageProcessingConfig: + """Configuration parameters for image processing.""" + remove_hot_pixels: bool = False + denoise: bool = False + equalize_histogram: bool = False + apply_clahe: bool = False + clahe_clip_limit: float = 2.0 + clahe_tile_grid_size: Tuple[int, int] = (8, 8) + unsharp_mask: bool = False + unsharp_amount: float = 1.5 + adjust_gamma: bool = False + gamma_value: float = 1.0 + apply_gaussian_blur: bool = False + gaussian_kernel_size: int = 5 + do_stretch: bool = False + do_star_count: bool = False + do_star_mark: bool = False + resize_size: int = 2048 + bayer_type: Optional[str] = None + config_file: Optional[Path] = None + save_jpg: bool = False + jpg_file: Optional[Path] = None + save_star_data: bool = False + star_file: Optional[Path] = None + + +class ImageProcessor: + """Handles image processing tasks including loading, enhancing, and saving images.""" + + def __init__(self, config: ImageProcessingConfig) -> None: + """ + Initialize the ImageProcessor with the given configuration. + + :param config: ImageProcessingConfig object containing processing settings. + """ + self.config = config + + # Configure logging with loguru + logger.remove() + logger.add( + "image_processor.log", + rotation="10 MB", + retention="10 days", + level="DEBUG", + format="{time} | {level} | {message}" + ) + logger.debug(f"ImageProcessor initialized with config: {self.config}") + + def debayer_image(self, img: np.ndarray) -> np.ndarray: + """Convert a raw image using the specified Bayer pattern to a color image.""" + logger.debug("Starting debayering process.") + bayer_patterns = { + "rggb": cv2.COLOR_BAYER_RGGB2BGR, + "gbrg": cv2.COLOR_BAYER_GBRG2BGR, + "bggr": cv2.COLOR_BAYER_BGGR2BGR, + "grbg": cv2.COLOR_BAYER_GRBG2BGR + } + pattern = self.config.bayer_type.lower() if self.config.bayer_type else 'rggb' + converted_img = cv2.cvtColor( + img, bayer_patterns.get(pattern, cv2.COLOR_BAYER_RGGB2BGR)) + logger.debug("Debayering completed.") + return converted_img + + def resize_image(self, img: np.ndarray) -> np.ndarray: + """Resize the image to the target size while maintaining aspect ratio.""" + logger.debug("Starting image resizing.") + scale = min(self.config.resize_size / max(img.shape[:2]), 1) + if scale < 1: + resized_img = cv2.resize( + img, None, fx=scale, fy=scale, interpolation=cv2.INTER_AREA) + logger.debug( + f"Image resized to {resized_img.shape[1]}x{resized_img.shape[0]}") + return resized_img + logger.debug("No resizing needed.") + return img + + def normalize_image(self, img: np.ndarray) -> np.ndarray: + """Normalize the image to 8-bit if it's not already.""" + logger.debug("Starting image normalization.") + if img.dtype != np.uint8: + normalized_img = cv2.normalize( + img, None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX) + normalized_img = normalized_img.astype(np.uint8) + logger.debug("Image normalization completed.") + return normalized_img + logger.debug("Image is already in 8-bit format.") + return img + + def stretch_image(self, img: np.ndarray, is_color: bool) -> np.ndarray: + """Apply stretching to the image.""" + logger.debug("Starting image stretching.") + # Implement stretching logic here + # Placeholder implementation + stretched_img = img # Replace with actual stretching function + logger.debug("Image stretching completed.") + return stretched_img + + def enhance_image(self, img: np.ndarray) -> np.ndarray: + """Apply a series of image enhancements based on the configuration.""" + logger.debug("Starting image enhancement.") + if self.config.remove_hot_pixels: + img = self.remove_hot_pixels(img) + if self.config.denoise: + img = self.denoise_image(img) + if self.config.equalize_histogram: + img = self.equalize_histogram(img) + if self.config.apply_clahe: + img = self.apply_clahe(img) + if self.config.unsharp_mask: + img = self.apply_unsharp_mask(img) + if self.config.adjust_gamma: + img = self.adjust_gamma(img) + if self.config.apply_gaussian_blur: + img = self.apply_gaussian_blur(img) + logger.debug("Image enhancement completed.") + return img + + def remove_hot_pixels(self, img: np.ndarray, threshold: float = 3.0) -> np.ndarray: + """Remove hot pixels using median filter and thresholding.""" + logger.debug("Removing hot pixels from the image.") + median = ndimage.median_filter(img, size=3) + diff = np.abs(img - median) + std_dev = np.std(diff) + mask = diff > (threshold * std_dev) + img[mask] = median[mask] + logger.debug("Hot pixels removed.") + return img + + def denoise_image(self, img: np.ndarray, h: float = 10) -> np.ndarray: + """Apply Non-Local Means Denoising.""" + logger.debug("Applying denoising to the image.") + denoised_img = cv2.fastNlMeansDenoisingColored(img, None, h, h, 7, 21) + logger.debug("Denoising completed.") + return denoised_img + + def equalize_histogram(self, img: np.ndarray) -> np.ndarray: + """Apply histogram equalization to improve contrast.""" + logger.debug("Applying histogram equalization.") + if len(img.shape) == 2: + equalized_img = cv2.equalizeHist(img) + else: + ycrcb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb) + ycrcb[:, :, 0] = cv2.equalizeHist(ycrcb[:, :, 0]) + equalized_img = cv2.cvtColor(ycrcb, cv2.COLOR_YCrCb2BGR) + logger.debug("Histogram equalization completed.") + return equalized_img + + def apply_clahe(self, img: np.ndarray) -> np.ndarray: + """Apply CLAHE to the image.""" + logger.debug("Applying CLAHE to the image.") + clahe = cv2.createCLAHE( + clipLimit=self.config.clahe_clip_limit, + tileGridSize=self.config.clahe_tile_grid_size + ) + if len(img.shape) == 2: + clahe_img = clahe.apply(img) + else: + lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) + channels = cv2.split(lab) + channels[0] = clahe.apply(channels[0]) + lab = cv2.merge(channels) + clahe_img = cv2.cvtColor(lab, cv2.COLOR_LAB2BGR) + logger.debug("CLAHE applied.") + return clahe_img + + def apply_unsharp_mask(self, img: np.ndarray) -> np.ndarray: + """Apply unsharp mask to enhance image details.""" + logger.debug("Applying unsharp mask.") + kernel_size = (self.config.gaussian_kernel_size, + self.config.gaussian_kernel_size) + blurred = cv2.GaussianBlur(img, kernel_size, 0) + sharpened = cv2.addWeighted( + img, 1 + self.config.unsharp_amount, blurred, -self.config.unsharp_amount, 0) + logger.debug("Unsharp mask applied.") + return sharpened + + def adjust_gamma(self, img: np.ndarray) -> np.ndarray: + """Adjust image gamma.""" + logger.debug(f"Adjusting gamma with value: {self.config.gamma_value}") + inv_gamma = 1.0 / self.config.gamma_value + table = np.array([((i / 255.0) ** inv_gamma) * 255 + for i in np.arange(256)]).astype("uint8") + gamma_img = cv2.LUT(img, table) + logger.debug("Gamma adjustment completed.") + return gamma_img + + def apply_gaussian_blur(self, img: np.ndarray) -> np.ndarray: + """Apply Gaussian blur to reduce noise.""" + logger.debug("Applying Gaussian blur.") + kernel_size = (self.config.gaussian_kernel_size, + self.config.gaussian_kernel_size) + blurred_img = cv2.GaussianBlur(img, kernel_size, 0) + logger.debug("Gaussian blur applied.") + return blurred_img + + def process_image(self, filepath: Path) -> Tuple[Optional[np.ndarray], Dict[str, float]]: + """Process a single image file.""" + logger.info(f"Processing image: {filepath}") + try: + img_data = fits.getdata(filepath, header=True) + if isinstance(img_data, tuple): + img, header = img_data + else: + img = img_data + header = {} + + is_color = 'BAYERPAT' in header + if is_color: + self.config.bayer_type = self.config.bayer_type or header.get( + 'BAYERPAT', 'rggb') + img = self.debayer_image(img) + + img = self.resize_image(img) + img = self.normalize_image(img) + + # Apply image enhancements + img = self.enhance_image(img) + + if self.config.do_stretch: + img = self.stretch_image(img, is_color) + + result = {"star_count": -1, "average_hfr": -1.0, + "max_star": -1.0, "min_star": -1.0, "average_star": -1.0} + if self.config.do_star_count: + img, star_count, avg_hfr, area_range = self.detect_stars(img) + result.update({ + "star_count": star_count, + "average_hfr": avg_hfr, + "max_star": area_range['max'], + "min_star": area_range['min'], + "average_star": area_range['average'] + }) + + if self.config.save_jpg and self.config.jpg_file and img is not None: + cv2.imwrite(str(self.config.jpg_file), img) + logger.info(f"Processed image saved to {self.config.jpg_file}") + + if self.config.save_star_data and self.config.star_file: + with self.config.star_file.open('w') as f: + json.dump(result, f) + logger.info( + f"Star count results saved to {self.config.star_file}") + + logger.info("Image processing completed successfully.") + return img, result + + except Exception as e: + logger.error(f"Error processing image {filepath}: {e}") + return None, {"star_count": -1, "average_hfr": -1.0, "max_star": -1.0, "min_star": -1.0, "average_star": -1.0} + + def detect_stars(self, img: np.ndarray) -> Tuple[np.ndarray, int, float, Dict[str, float]]: + """Detect stars in the image and calculate relevant metrics.""" + logger.debug("Starting star detection.") + # Placeholder implementation + # Implement actual star detection logic here + star_count = 0 + average_hfr = 0.0 + area_range = {"max": 0.0, "min": 0.0, "average": 0.0} + logger.debug("Star detection completed.") + return img, star_count, average_hfr, area_range + + def load_config(self) -> None: + """Load configuration from a YAML file if provided.""" + if self.config.config_file and self.config.config_file.is_file(): + logger.info( + f"Loading configuration from {self.config.config_file}") + try: + with self.config.config_file.open('r') as f: + file_config = yaml.safe_load(f) + for key, value in file_config.items(): + if hasattr(self.config, key): + setattr(self.config, key, value) + logger.debug("Configuration loaded from file.") + except Exception as e: + logger.error(f"Error loading configuration file: {e}") + else: + logger.debug( + "No configuration file provided or file does not exist.") + + def main(self, filepath: Path) -> None: + """Main processing function.""" + self.load_config() + self.process_image(filepath) + + +if __name__ == "__main__": + # Parse command-line arguments + parser = argparse.ArgumentParser( + description="Image Enhancement and Star Detection Script") + parser.add_argument("filepath", type=Path, help="Path to the FITS file") + parser.add_argument("--config", type=Path, + help="Path to the configuration YAML file") + parser.add_argument("--resize-size", type=int, default=2048, + help="Target size for resizing the image") + parser.add_argument("--jpg-file", type=Path, + help="Path to save the processed image as JPG") + parser.add_argument("--star-file", type=Path, + help="Path to save the star count results as JSON") + parser.add_argument("--remove-hot-pixels", action="store_true", + help="Remove hot pixels in the image") + parser.add_argument("--denoise", action="store_true", + help="Apply denoising to the image") + parser.add_argument("--equalize-histogram", + action="store_true", help="Apply histogram equalization") + parser.add_argument("--apply-clahe", action="store_true", + help="Apply CLAHE to the image") + parser.add_argument("--unsharp-mask", action="store_true", + help="Apply unsharp mask") + parser.add_argument("--adjust-gamma", action="store_true", + help="Adjust gamma of the image") + parser.add_argument("--gamma-value", type=float, + default=1.0, help="Gamma value for adjustment") + parser.add_argument("--apply-gaussian-blur", + action="store_true", help="Apply Gaussian blur") + parser.add_argument("--do-stretch", action="store_true", + help="Apply stretching to the image") + parser.add_argument("--do-star-count", action="store_true", + help="Perform star count on the image") + parser.add_argument("--do-star-mark", action="store_true", + help="Mark detected stars on the image") + args = parser.parse_args() + + # Create configuration + config = ImageProcessingConfig( + remove_hot_pixels=args.remove_hot_pixels, + denoise=args.denoise, + equalize_histogram=args.equalize_histogram, + apply_clahe=args.apply_clahe, + unsharp_mask=args.unsharp_mask, + adjust_gamma=args.adjust_gamma, + gamma_value=args.gamma_value, + apply_gaussian_blur=args.apply_gaussian_blur, + do_stretch=args.do_stretch, + do_star_count=args.do_star_count, + do_star_mark=args.do_star_mark, + resize_size=args.resize_size, + config_file=args.config, + save_jpg=bool(args.jpg_file), + jpg_file=args.jpg_file, + save_star_data=bool(args.star_file), + star_file=args.star_file + ) + + # Initialize and run the processor + processor = ImageProcessor(config) + processor.main(args.filepath) diff --git a/pysrc/database/__init__.py b/modules/lithium.pyimage/image/astroalign/__init__.py similarity index 100% rename from pysrc/database/__init__.py rename to modules/lithium.pyimage/image/astroalign/__init__.py diff --git a/modules/lithium.pyimage/image/astroalign/astroalign.py b/modules/lithium.pyimage/image/astroalign/astroalign.py new file mode 100644 index 00000000..2afa7b85 --- /dev/null +++ b/modules/lithium.pyimage/image/astroalign/astroalign.py @@ -0,0 +1,642 @@ +""" +Module for starfield image registration using triangle-based invariants. + +This module provides functions to estimate and apply geometric transformations between +two sets of starfield images. The core technique relies on computing invariant features +(triangle invariants) from sets of nearest neighbors of stars in both images. The +transformation between the two images is then estimated using these invariant features. + +The key functionalities include: +- Estimating transformation between two images +- Applying the estimated transformation to align images +- Extracting source positions (stars) from images +- RANSAC algorithm for robust model estimation + +Author: Max Qian +Version: 2.6.0 (lithium) +""" + +__version__ = "2.6.0" + +__all__ = [ + "MIN_MATCHES_FRACTION", + "MaxIterError", + "NUM_NEAREST_NEIGHBORS", + "PIXEL_TOL", + "apply_transform", + "estimate_transform", + "find_transform", + "matrix_transform", + "register", +] + +from collections import Counter +from functools import partial +from itertools import combinations +from typing import Any, Tuple, Union, List + +import sep_pjw as sep +import numpy as np +from numpy.typing import NDArray +from scipy.spatial import KDTree +from skimage.transform import estimate_transform, matrix_transform, warp +from loguru import logger + +try: + import bottleneck as bn +except ImportError: + HAS_BOTTLENECK = False +else: + HAS_BOTTLENECK = True + +# Configure Loguru logger +logger.add("astroalign.log", rotation="5 MB", level="DEBUG") + +PIXEL_TOL = 2 +"""The pixel distance tolerance to assume two invariant points are the same. + +Default: 2 +""" + +MIN_MATCHES_FRACTION = 0.8 +"""The minimum fraction of triangle matches to accept a transformation. + +If the minimum fraction yields more than 10 triangles, 10 is used instead. + +Default: 0.8 +""" + +NUM_NEAREST_NEIGHBORS = 5 +""" +The number of nearest neighbors of a given star (including itself) to construct +the triangle invariants. + +Default: 5 +""" + +_default_median = bn.nanmedian if HAS_BOTTLENECK else np.nanmedian # pragma: no cover +""" +Default median function when/if optional bottleneck is available +""" + +_default_average = bn.nanmean if HAS_BOTTLENECK else np.nanmean # pragma: no cover +""" +Default mean function when/if optional bottleneck is available +""" + + +def _invariantfeatures(x1: NDArray, x2: NDArray, x3: NDArray) -> List[float]: + """ + Given 3 points x1, x2, x3, return the invariant features for the set. + + Invariant features are ratios of side lengths of the triangles formed by these points, + sorted by size. These features are scale-invariant and can be used to compare star + positions between images. + + Args: + x1, x2, x3: 2D coordinates of points in the source image. + + Returns: + List containing two invariant feature values derived from the triangle side ratios. + """ + logger.debug( + f"Calculating invariant features for points: {x1}, {x2}, {x3}") + sides = np.sort( + [np.linalg.norm(x1 - x2), np.linalg.norm(x2 - x3), + np.linalg.norm(x1 - x3)] + ) + invariants = [sides[2] / sides[1], sides[1] / sides[0]] + logger.debug(f"Invariant features: {invariants}") + return invariants + + +def _arrangetriplet(sources: NDArray, vertex_indices: Tuple[int, int, int]) -> NDArray: + """ + Reorder the given triplet of vertex indices according to the length of their sides. + + This function returns the indices in a consistent order based on the triangle's side + lengths. It ensures that the triangle invariants are consistently computed. + + Args: + sources: Array of source star positions. + vertex_indices: Indices of the three vertices that form the triangle. + + Returns: + Reordered array of vertex indices based on side lengths. + """ + ind1, ind2, ind3 = vertex_indices + x1, x2, x3 = sources[vertex_indices] + + side_ind = np.array([(ind1, ind2), (ind2, ind3), (ind3, ind1)]) + side_lengths = [ + np.linalg.norm(x1 - x2), + np.linalg.norm(x2 - x3), + np.linalg.norm(x3 - x1), + ] + l1_ind, l2_ind, l3_ind = np.argsort(side_lengths) + + count = Counter(side_ind[[l1_ind, l2_ind]].flatten()) + a = count.most_common(1)[0][0] + count = Counter(side_ind[[l2_ind, l3_ind]].flatten()) + b = count.most_common(1)[0][0] + count = Counter(side_ind[[l3_ind, l1_ind]].flatten()) + c = count.most_common(1)[0][0] + + arranged = np.array([a, b, c]) + logger.debug(f"Arranged triplet indices: {arranged}") + return arranged + + +def _generate_invariants(sources: NDArray) -> Tuple[NDArray, NDArray]: + """ + Generate invariant features and the corresponding triangles from a set of source points. + + This function constructs triangles from the nearest neighbors of each source point and + calculates their invariant features. The invariants are used for matching between images. + + Args: + sources: Array of source star positions. + + Returns: + A tuple containing the unique invariant features and the corresponding triangle vertices. + """ + arrange = partial(_arrangetriplet, sources=sources) + + inv = [] + triang_vrtx = [] + coordtree = KDTree(sources) + knn = min(len(sources), NUM_NEAREST_NEIGHBORS) + for asrc in sources: + _, indx = coordtree.query(asrc, knn) + + all_asterism_triang = [ + arrange(vertex_indices=list(cmb)) for cmb in combinations(indx, 3) + ] + triang_vrtx.extend(all_asterism_triang) + + inv.extend( + [_invariantfeatures(*sources[triplet]) + for triplet in all_asterism_triang] + ) + + uniq_ind = [ + pos for (pos, elem) in enumerate(inv) if elem not in inv[pos + 1:] + ] + inv_uniq = np.array(inv)[uniq_ind] + triang_vrtx_uniq = np.array(triang_vrtx)[uniq_ind] + + logger.info(f"Generated {len(inv_uniq)} unique invariant features") + return inv_uniq, triang_vrtx_uniq + + +class _MatchTransform: + """ + A class to manage the fitting of a geometric transformation using matched invariant points. + + This class handles the estimation of the 2D similarity transformation between + two sets of points, and computes errors between estimated and actual points. + """ + + def __init__(self, source: NDArray, target: NDArray): + """ + Initialize the transformation model with source and target control points. + + Args: + source: Source control points. + target: Target control points. + """ + self.source = source + self.target = target + logger.debug( + "Initialized _MatchTransform with source and target control points") + + def fit(self, data: NDArray) -> Any: + """ + Estimate the best 2D similarity transformation from the matched points in data. + + Args: + data: Matched point pairs from source and target. + + Returns: + A similarity transform object. + """ + d1, d2, d3 = data.shape + s, d = data.reshape(d1 * d2, d3).T + transform = estimate_transform( + "similarity", self.source[s], self.target[d]) + logger.debug("Fitted similarity transform using matched points") + return transform + + def get_error(self, data: NDArray, approx_t: Any) -> NDArray: + """ + Calculate the maximum residual error for the matched points given the estimated transform. + + Args: + data: Matched point pairs. + approx_t: Estimated transformation model. + + Returns: + Maximum residual error for each set of matched points. + """ + d1, d2, d3 = data.shape + s, d = data.reshape(d1 * d2, d3).T + resid = approx_t.residuals( + self.source[s], self.target[d]).reshape(d1, d2) + max_resid = resid.max(axis=1) + logger.debug(f"Calculated maximum residual errors: {max_resid}") + return max_resid + + +def _data(image: Union[NDArray, Any]) -> NDArray: + """ + Retrieve the underlying 2D pixel data from the image. + + Args: + image: The input image. + + Returns: + The pixel data as a 2D NumPy array. + """ + data = image.data if hasattr(image, "data") and isinstance( + image.data, np.ndarray) else np.asarray(image) + logger.debug(f"Retrieved data with shape {data.shape}") + return data + + +def _mask(image: Union[NDArray, Any]) -> Union[NDArray, None]: + """ + Retrieve the mask from the image, if available. + + Args: + image: The input image. + + Returns: + The mask as a 2D NumPy array, or None if no mask is present. + """ + if hasattr(image, "mask"): + thenp_mask = np.asarray(image.mask) + mask = thenp_mask if thenp_mask.ndim == 2 else np.logical_or.reduce( + thenp_mask, axis=-1) + logger.debug("Retrieved mask from image") + return mask + logger.debug("No mask found in image") + return None + + +def _bw(image: NDArray) -> NDArray: + """ + Convert the input image to a 2D grayscale image. + + Args: + image: Input image, possibly with multiple channels. + + Returns: + Grayscale 2D NumPy array. + """ + grayscale = image if image.ndim == 2 else _default_average(image, axis=-1) + logger.debug(f"Converted image to grayscale with shape {grayscale.shape}") + return grayscale + + +def _shape(image: NDArray) -> Tuple[int, int]: + """ + Get the shape of the image, ignoring channels. + + Args: + image: Input image. + + Returns: + A tuple representing the 2D shape (height, width) of the image. + """ + shape = image.shape if image.ndim == 2 else image.shape[:2] + logger.debug(f"Image shape (height, width): {shape}") + return shape + + +def find_transform( + source: Union[NDArray, Any], + target: Union[NDArray, Any], + max_control_points: int = 50, + detection_sigma: int = 5, + min_area: int = 5, +) -> Tuple[Any, Tuple[NDArray, NDArray]]: + """ + Estimate the geometric transformation between the source and target images. + + This function identifies control points (stars) in both the source and target images, + computes their triangle-based invariant features, and finds the best transformation + to align the source to the target using a RANSAC-based method. + + Args: + source: The source image to be transformed. + target: The target image to match the source to. + max_control_points: Maximum number of control points to use for transformation. + detection_sigma: Sigma threshold for detecting control points. + min_area: Minimum area for detecting sources in the image. + + Returns: + A tuple containing the estimated transformation object and a tuple of matched control points + from the source and target images. + + Raises: + ValueError: If fewer than 3 control points are found in either image. + TypeError: If the input type of source or target is unsupported. + """ + logger.info("Starting find_transform process") + try: + source_data = _data(source) + source_controlp = ( + np.array(source)[:max_control_points] + if len(source_data) and source_data.shape[1] == 2 + else _find_sources(_bw(source_data), detection_sigma, min_area, _mask(source))[:max_control_points] + ) + logger.debug( + f"Found {len(source_controlp)} control points in source image") + except Exception as e: + logger.error(f"Error finding sources in source image: {e}") + raise TypeError("Input type for source not supported.") + + try: + target_data = _data(target) + target_controlp = ( + np.array(target)[:max_control_points] + if len(target_data) and target_data.shape[1] == 2 + else _find_sources(_bw(target_data), detection_sigma, min_area, _mask(target))[:max_control_points] + ) + logger.debug( + f"Found {len(target_controlp)} control points in target image") + except Exception as e: + logger.error(f"Error finding sources in target image: {e}") + raise TypeError("Input type for target not supported.") + + if len(source_controlp) < 3 or len(target_controlp) < 3: + logger.error("Not enough control points in source or target image") + raise ValueError( + "Reference stars in source or target image are less than the minimum value (3)." + ) + + source_invariants, source_asterisms = _generate_invariants(source_controlp) + target_invariants, target_asterisms = _generate_invariants(target_controlp) + + source_tree = KDTree(source_invariants) + target_tree = KDTree(target_invariants) + + matches_list = source_tree.query_ball_tree(target_tree, r=0.1) + matches = [ + list(zip(t1, t2)) for t1, t2_list in zip(source_asterisms, matches_list) for t2 in target_asterisms[t2_list] + ] + matches = np.array(matches) + logger.debug(f"Found {len(matches)} initial matches") + + inv_model = _MatchTransform(source_controlp, target_controlp) + n_invariants = len(matches) + min_matches = max(1, min(10, int(n_invariants * MIN_MATCHES_FRACTION))) + logger.debug(f"Minimum matches required: {min_matches}") + + if (len(source_controlp) == 3 or len(target_controlp) == 3) and len(matches) == 1: + best_t = inv_model.fit(matches) + inlier_ind = np.arange(len(matches)) + logger.debug("Using direct fit due to minimal control points") + else: + try: + best_t, inlier_ind = _ransac( + matches, inv_model, PIXEL_TOL, min_matches) + logger.debug(f"RANSAC found {len(inlier_ind)} inliers") + except MaxIterError as e: + logger.error(f"RANSAC failed: {e}") + raise + + triangle_inliers = matches[inlier_ind] + inl_arr = triangle_inliers.reshape(-1, 2) + inl_unique = set(map(tuple, inl_arr)) + + inl_dict = {} + for s_i, t_i in inl_unique: + s_vertex = source_controlp[s_i] + t_vertex = target_controlp[t_i] + t_vertex_pred = matrix_transform(s_vertex, best_t.params) + error = np.linalg.norm(t_vertex_pred - t_vertex) + if s_i not in inl_dict or error < inl_dict[s_i][1]: + inl_dict[s_i] = (t_i, error) + + inl_arr_unique = np.array([[s_i, t_i] + for s_i, (t_i, _) in inl_dict.items()]) + s, d = inl_arr_unique.T + + logger.info("find_transform process completed successfully") + return best_t, (source_controlp[s], target_controlp[d]) + + +def apply_transform( + transform: Any, + source: Union[NDArray, Any], + target: Union[NDArray, Any], + fill_value: Union[float, None] = None, + propagate_mask: bool = False, +) -> Tuple[NDArray, NDArray]: + """ + Apply the estimated transformation to align the source image to the target image. + + The transformation is applied to the source image, and an optional mask is propagated + if requested. The function returns the aligned source image and a binary footprint + of the transformed region. + + Args: + transform: The transformation to apply. + source: The source image to be transformed. + target: The target image to align the source to. + fill_value: Value to fill in regions outside the source image after transformation. + propagate_mask: Whether to propagate the source mask after transformation. + + Returns: + A tuple containing the aligned source image and the transformation footprint. + """ + logger.info("Applying transformation to source image") + source_data = _data(source) + target_shape = _data(target).shape + + aligned_image = warp( + source_data, + inverse_map=transform.inverse, + output_shape=target_shape, + order=3, + mode="constant", + cval=_default_median(source_data), + clip=True, + preserve_range=True, + ) + + footprint = warp( + np.zeros(_shape(source_data), dtype="float32"), + inverse_map=transform.inverse, + output_shape=target_shape, + cval=1.0, + ) + footprint = footprint > 0.4 + + source_mask = _mask(source) + if source_mask is not None and propagate_mask: + if source_mask.shape == source_data.shape: + source_mask_rot = warp( + source_mask.astype("float32"), + inverse_map=transform.inverse, + output_shape=target_shape, + cval=1.0, + ) + source_mask_rot = source_mask_rot > 0.4 + footprint |= source_mask_rot + logger.debug("Propagated source mask after transformation") + + if fill_value is not None: + aligned_image[footprint] = fill_value + logger.debug(f"Applied fill value: {fill_value}") + + logger.info("Transformation applied successfully") + return aligned_image, footprint + + +def register( + source: Union[NDArray, Any], + target: Union[NDArray, Any], + fill_value: Union[float, None] = None, + propagate_mask: bool = False, + max_control_points: int = 50, + detection_sigma: int = 5, + min_area: int = 5, +) -> Tuple[NDArray, NDArray]: + """ + Register and align the source image to the target image using triangle invariants. + + This function estimates the transformation between the source and target images, + applies the transformation, and returns the aligned source image along with + the transformation footprint. + + Args: + source: The source image to be aligned. + target: The target image for alignment. + fill_value: Value to fill in regions outside the source image after transformation. + propagate_mask: Whether to propagate the source mask after transformation. + max_control_points: Maximum number of control points to use for transformation. + detection_sigma: Sigma threshold for detecting control points. + min_area: Minimum area for detecting sources in the image. + + Returns: + A tuple containing the aligned source image and the transformation footprint. + """ + logger.info("Starting registration process") + t, _ = find_transform( + source=source, + target=target, + max_control_points=max_control_points, + detection_sigma=detection_sigma, + min_area=min_area, + ) + aligned_image, footprint = apply_transform( + t, source, target, fill_value, propagate_mask) + logger.info("Registration process completed successfully") + return aligned_image, footprint + + +def _find_sources( + img: NDArray, + detection_sigma: int = 5, + min_area: int = 5, + mask: Union[NDArray, None] = None, +) -> NDArray: + """ + Detect bright sources (e.g., stars) in the image using SEP (Source Extractor). + + This function returns the coordinates of sources sorted by brightness. + + Args: + img: The input image in which to detect sources. + detection_sigma: Sigma threshold for source detection. + min_area: Minimum area for detecting sources. + mask: Optional mask for ignoring certain parts of the image. + + Returns: + A NumPy array of detected source coordinates (x, y), sorted by brightness. + """ + logger.debug("Starting source detection using SEP") + image = img.astype("float32") + bkg = sep.Background(image, mask=mask) + thresh = detection_sigma * bkg.globalrms + sources = sep.extract(image - bkg.back(), thresh, + minarea=min_area, mask=mask) + sources.sort(order="flux") + detected_sources = np.array([[asrc["x"], asrc["y"]] + for asrc in sources[::-1]]) + logger.info(f"Detected {len(detected_sources)} sources in image") + return detected_sources + + +class MaxIterError(RuntimeError): + """ + Custom error raised if the maximum number of iterations is reached during the RANSAC process. + + This exception indicates that the RANSAC algorithm has exhausted all possible + matching triangles without finding an acceptable transformation. + """ + pass + + +def _ransac( + data: NDArray, model: Any, thresh: float, min_matches: int +) -> Tuple[Any, NDArray]: + """ + Fit a model to data using the RANSAC (Random Sample Consensus) algorithm. + + This robust method estimates the transformation model by iteratively fitting + to subsets of data and discarding outliers. + + Args: + data: Matched point pairs. + model: The transformation model to fit. + thresh: Error threshold to consider a data point as an inlier. + min_matches: Minimum number of inliers required to accept the model. + + Returns: + A tuple containing the best-fit model and the indices of inliers. + + Raises: + MaxIterError: If the maximum number of iterations is reached without finding + an acceptable transformation. + """ + logger.debug("Starting RANSAC algorithm") + n_data = data.shape[0] + all_idxs = np.arange(n_data) + np.random.default_rng().shuffle(all_idxs) + + for iter_i in range(n_data): + maybe_idxs = all_idxs[iter_i: iter_i + 1] + test_idxs = np.concatenate([all_idxs[:iter_i], all_idxs[iter_i + 1:]]) + maybeinliers = data[maybe_idxs, :] + test_points = data[test_idxs, :] + maybemodel = model.fit(maybeinliers) + test_err = model.get_error(test_points, maybemodel) + also_idxs = test_idxs[test_err < thresh] + alsoinliers = data[also_idxs, :] + logger.debug( + f"Iteration {iter_i}: Found {len(alsoinliers)} inliers with threshold {thresh}" + ) + if len(alsoinliers) >= min_matches: + good_data = np.concatenate((maybeinliers, alsoinliers)) + good_fit = model.fit(good_data) + logger.info(f"RANSAC succeeded at iteration {iter_i}") + break + else: + logger.error("RANSAC failed to find a valid transformation") + raise MaxIterError( + "List of matching triangles exhausted before an acceptable transformation was found" + ) + + better_fit = good_fit + for _ in range(3): + test_err = model.get_error(data, better_fit) + better_inlier_idxs = np.arange(n_data)[test_err < thresh] + better_data = data[better_inlier_idxs] + better_fit = model.fit(better_data) + logger.debug(f"Refined fit with {len(better_data)} inliers") + + logger.info("RANSAC algorithm completed successfully") + return better_fit, better_inlier_idxs diff --git a/pysrc/image/auto_histogram/__init__.py b/modules/lithium.pyimage/image/auto_histogram/__init__.py similarity index 100% rename from pysrc/image/auto_histogram/__init__.py rename to modules/lithium.pyimage/image/auto_histogram/__init__.py diff --git a/modules/lithium.pyimage/image/auto_histogram/histogram.py b/modules/lithium.pyimage/image/auto_histogram/histogram.py new file mode 100644 index 00000000..44d97d75 --- /dev/null +++ b/modules/lithium.pyimage/image/auto_histogram/histogram.py @@ -0,0 +1,272 @@ +import cv2 +import numpy as np +from typing import Optional, List, Tuple, Union +from pathlib import Path +from loguru import logger +from .utils import save_image, load_image + + +@dataclass +class HistogramConfig: + """ + Configuration parameters for histogram-based image processing. + """ + clip_shadow: float = 0.01 + clip_highlight: float = 0.01 + target_median: int = 128 + method: str = 'gamma' # 'gamma', 'logarithmic', 'mtf' + apply_clahe: bool = False + clahe_clip_limit: float = 2.0 + clahe_tile_grid_size: Tuple[int, int] = (8, 8) + apply_noise_reduction: bool = False + noise_reduction_method: str = 'median' # 'median', 'gaussian' + apply_sharpening: bool = False + sharpening_strength: float = 1.0 + batch_process: bool = False + file_list: Optional[List[Union[str, Path]]] = None + output_directory: Optional[Union[str, Path]] = None + + +class HistogramProcessor: + """ + Handles automated histogram transformations and enhancements for images. + """ + + def __init__(self, config: Optional[HistogramConfig] = None) -> None: + """ + Initialize HistogramProcessor with configuration. + + :param config: HistogramConfig object containing processing settings. + """ + self.config = config or HistogramConfig() + logger.debug( + f"HistogramProcessor initialized with config: {self.config}") + + def histogram_clipping(self, image: np.ndarray) -> np.ndarray: + """ + Clip the histogram of the image based on shadow and highlight percentages. + + :param image: Input image. + :return: Clipped image. + """ + logger.debug("Starting histogram clipping.") + flat = image.flatten() + low_val = np.percentile(flat, self.config.clip_shadow * 100) + high_val = np.percentile(flat, 100 - self.config.clip_highlight * 100) + clipped_image = np.clip(image, low_val, high_val).astype(np.uint8) + logger.debug("Histogram clipping completed.") + return clipped_image + + def gamma_transformation(self, image: np.ndarray) -> np.ndarray: + """ + Apply gamma transformation to the image. + + :param image: Input image. + :return: Gamma transformed image. + """ + logger.debug("Starting gamma transformation.") + try: + mean_val = np.median(image) + if mean_val == 0: + logger.warning( + "Median value is zero during gamma transformation.") + return image + gamma = np.log(self.config.target_median / 255.0) / \ + np.log(mean_val / 255.0) + gamma_corrected = np.array( + 255 * (image / 255.0) ** gamma, dtype='uint8') + logger.debug("Gamma transformation completed.") + return gamma_corrected + except Exception as e: + logger.error(f"Error during gamma transformation: {e}") + raise + + def logarithmic_transformation(self, image: np.ndarray) -> np.ndarray: + """ + Apply logarithmic transformation to the image. + + :param image: Input image. + :return: Logarithmically transformed image. + """ + logger.debug("Starting logarithmic transformation.") + try: + c = 255 / np.log(1 + np.max(image)) + log_transformed = np.array(c * np.log(1 + image), dtype='uint8') + logger.debug("Logarithmic transformation completed.") + return log_transformed + except Exception as e: + logger.error(f"Error during logarithmic transformation: {e}") + raise + + def mtf_transformation(self, image: np.ndarray) -> np.ndarray: + """ + Apply MTF transformation to the image. + + :param image: Input image. + :return: MTF transformed image. + """ + logger.debug("Starting MTF transformation.") + try: + mean_val = np.median(image) + if mean_val == 0: + logger.warning( + "Median value is zero during MTF transformation.") + return image + mtf = self.config.target_median / mean_val + mtf_transformed = np.clip(image * mtf, 0, 255).astype(np.uint8) + logger.debug("MTF transformation completed.") + return mtf_transformed + except Exception as e: + logger.error(f"Error during MTF transformation: {e}") + raise + + def apply_clahe_method(self, image: np.ndarray) -> np.ndarray: + """ + Apply CLAHE to the image. + + :param image: Input image. + :return: CLAHE applied image. + """ + logger.debug("Starting CLAHE.") + try: + clahe = cv2.createCLAHE( + clipLimit=self.config.clahe_clip_limit, + tileGridSize=self.config.clahe_tile_grid_size + ) + if len(image.shape) == 2: + clahe_applied = clahe.apply(image) + else: + channels = cv2.split(image) + clahe_applied = cv2.merge([clahe.apply(ch) for ch in channels]) + logger.debug("CLAHE completed.") + return clahe_applied + except Exception as e: + logger.error(f"Error during CLAHE application: {e}") + raise + + def noise_reduction(self, image: np.ndarray) -> np.ndarray: + """ + Apply noise reduction to the image. + + :param image: Input image. + :return: Noise reduced image. + """ + logger.debug("Starting noise reduction.") + try: + if self.config.noise_reduction_method == 'median': + reduced = cv2.medianBlur(image, 3) + elif self.config.noise_reduction_method == 'gaussian': + reduced = cv2.GaussianBlur(image, (3, 3), 0) + else: + logger.error( + f"Unsupported noise reduction method: {self.config.noise_reduction_method}") + raise ValueError( + f"Unsupported noise reduction method: {self.config.noise_reduction_method}") + logger.debug("Noise reduction completed.") + return reduced + except Exception as e: + logger.error(f"Error during noise reduction: {e}") + raise + + def sharpen_image(self, image: np.ndarray) -> np.ndarray: + """ + Sharpen the image. + + :param image: Input image. + :return: Sharpened image. + """ + logger.debug("Starting image sharpening.") + try: + kernel = np.array([[-1, -1, -1], + [-1, 9 + self.config.sharpening_strength, -1], + [-1, -1, -1]]) + sharpened = cv2.filter2D(image, -1, kernel) + logger.debug("Image sharpening completed.") + return sharpened + except Exception as e: + logger.error(f"Error during image sharpening: {e}") + raise + + def process_single_image(self, image: np.ndarray) -> np.ndarray: + """ + Process a single image with the configured transformations. + + :param image: Input image. + :return: Processed image. + """ + logger.info("Processing a single image.") + try: + if self.config.apply_noise_reduction: + image = self.noise_reduction(image) + + image = self.histogram_clipping(image) + + if self.config.method == 'gamma': + image = self.gamma_transformation(image) + elif self.config.method == 'logarithmic': + image = self.logarithmic_transformation(image) + elif self.config.method == 'mtf': + image = self.mtf_transformation(image) + else: + logger.error(f"Invalid method specified: {self.config.method}") + raise ValueError( + f"Invalid method specified: {self.config.method}") + + if self.config.apply_clahe: + image = self.apply_clahe_method(image) + + if self.config.apply_sharpening: + image = self.sharpen_image(image) + + logger.info("Image processing completed successfully.") + return image + except Exception as e: + logger.error(f"Error during image processing: {e}") + raise + + def process_batch_images(self, file_list: List[Union[str, Path]]) -> List[np.ndarray]: + """ + Process a batch of images. + + :param file_list: List of image file paths. + :return: List of processed images. + """ + logger.info(f"Starting batch processing of {len(file_list)} images.") + processed_images = [] + for idx, file_path in enumerate(file_list, start=1): + logger.info( + f"Processing image {idx}/{len(file_list)}: {file_path}") + image = load_image(file_path, grayscale=False) + if image is None: + logger.warning( + f"Skipping image due to load failure: {file_path}") + continue + processed_image = self.process_single_image(image) + processed_images.append(processed_image) + if self.config.output_directory: + output_path = Path(self.config.output_directory) / \ + f"processed_{Path(file_path).name}" + save_image(output_path, processed_image) + logger.info("Batch processing completed.") + return processed_images + + def process(self, image: Optional[np.ndarray] = None) -> Optional[Union[np.ndarray, List[np.ndarray]]]: + """ + Process images based on the configuration. + + :param image: Single image to process. Required if batch_process is False. + :return: Processed single image or list of processed images. + """ + if self.config.batch_process: + if not self.config.file_list: + logger.error( + "File list must be provided for batch processing.") + raise ValueError( + "File list must be provided for batch processing.") + return self.process_batch_images(self.config.file_list) + else: + if image is None: + logger.error("Image must be provided for single processing.") + raise ValueError( + "Image must be provided for single processing.") + return self.process_single_image(image) diff --git a/modules/lithium.pyimage/image/auto_histogram/processing.py b/modules/lithium.pyimage/image/auto_histogram/processing.py new file mode 100644 index 00000000..7f4016e9 --- /dev/null +++ b/modules/lithium.pyimage/image/auto_histogram/processing.py @@ -0,0 +1,93 @@ +import os +from pathlib import Path +from typing import List, Optional, Union +from loguru import logger +from .histogram import HistogramProcessor, HistogramConfig +from .utils import save_image, load_image + + +def process_directory( + input_directory: Union[str, Path], + output_directory: Union[str, Path], + method: str = 'gamma', + clip_shadow: float = 0.01, + clip_highlight: float = 0.01, + target_median: int = 128, + apply_clahe: bool = False, + clahe_clip_limit: float = 2.0, + clahe_tile_grid_size: Tuple[int, int] = (8, 8), + apply_noise_reduction: bool = False, + noise_reduction_method: str = 'median', + apply_sharpening: bool = False, + sharpening_strength: float = 1.0, + recursive: bool = False +) -> None: + """ + Process all images in a directory using the HistogramProcessor. + + :param input_directory: Directory containing images to process. + :param output_directory: Directory to save processed images. + :param method: Histogram stretching method ('gamma', 'logarithmic', 'mtf'). + :param clip_shadow: Percentage of shadow pixels to clip. + :param clip_highlight: Percentage of highlight pixels to clip. + :param target_median: Target median value for histogram stretching. + :param apply_clahe: Apply CLAHE (Contrast Limited Adaptive Histogram Equalization). + :param clahe_clip_limit: CLAHE clip limit. + :param clahe_tile_grid_size: CLAHE grid size. + :param apply_noise_reduction: Apply noise reduction. + :param noise_reduction_method: Noise reduction method ('median', 'gaussian'). + :param apply_sharpening: Apply image sharpening. + :param sharpening_strength: Strength of sharpening. + :param recursive: Process directories recursively. + """ + try: + input_directory = Path(input_directory) + output_directory = Path(output_directory) + if not input_directory.exists(): + logger.error(f"Input directory does not exist: {input_directory}") + raise FileNotFoundError( + f"Input directory does not exist: {input_directory}") + + output_directory.mkdir(parents=True, exist_ok=True) + logger.info( + f"Processing images from {input_directory} to {output_directory}") + + # Gather image files + if recursive: + file_list = [p for p in input_directory.rglob( + '*') if p.suffix.lower() in ['.jpg', '.jpeg', '.png', '.tif', '.tiff']] + else: + file_list = [p for p in input_directory.glob( + '*') if p.suffix.lower() in ['.jpg', '.jpeg', '.png', '.tif', '.tiff']] + + logger.info(f"Found {len(file_list)} images to process.") + + if not file_list: + logger.warning("No images found to process.") + return + + # Configure HistogramProcessor + config = HistogramConfig( + clip_shadow=clip_shadow, + clip_highlight=clip_highlight, + target_median=target_median, + method=method, + apply_clahe=apply_clahe, + clahe_clip_limit=clahe_clip_limit, + clahe_tile_grid_size=clahe_tile_grid_size, + apply_noise_reduction=apply_noise_reduction, + noise_reduction_method=noise_reduction_method, + apply_sharpening=apply_sharpening, + sharpening_strength=sharpening_strength, + batch_process=True, + file_list=file_list, + output_directory=output_directory + ) + + processor = HistogramProcessor(config=config) + processor.process() + + logger.info("Directory processing completed successfully.") + except Exception as e: + logger.error(f"Error during directory processing: {e}") + raise diff --git a/modules/lithium.pyimage/image/auto_histogram/utils.py b/modules/lithium.pyimage/image/auto_histogram/utils.py new file mode 100644 index 00000000..579a02c9 --- /dev/null +++ b/modules/lithium.pyimage/image/auto_histogram/utils.py @@ -0,0 +1,52 @@ +import cv2 +import numpy as np +from pathlib import Path +from typing import Optional +from loguru import logger + + +def save_image(filepath: Union[str, Path], image: np.ndarray) -> None: + """ + Save an image to the specified filepath. + + :param filepath: Path to save the image. + :param image: Image data. + """ + try: + filepath = Path(filepath) + filepath.parent.mkdir(parents=True, exist_ok=True) + success = cv2.imwrite(str(filepath), image) + if success: + logger.info(f"Image saved successfully at {filepath}") + else: + logger.error(f"Failed to save image at {filepath}") + except Exception as e: + logger.error( + f"Exception occurred while saving image at {filepath}: {e}") + raise + + +def load_image(filepath: Union[str, Path], grayscale: bool = False) -> Optional[np.ndarray]: + """ + Load an image from the specified filepath. + + :param filepath: Path to load the image from. + :param grayscale: Load image as grayscale if True. + :return: Loaded image or None if failed. + """ + try: + filepath = Path(filepath) + if not filepath.exists(): + logger.error(f"File does not exist: {filepath}") + return None + flags = cv2.IMREAD_GRAYSCALE if grayscale else cv2.IMREAD_COLOR + image = cv2.imread(str(filepath), flags) + if image is not None: + logger.info(f"Image loaded successfully from {filepath}") + else: + logger.error(f"Failed to load image from {filepath}") + return image + except Exception as e: + logger.error( + f"Exception occurred while loading image from {filepath}: {e}") + return None diff --git a/pysrc/image/channel/__init__.py b/modules/lithium.pyimage/image/channel/__init__.py similarity index 100% rename from pysrc/image/channel/__init__.py rename to modules/lithium.pyimage/image/channel/__init__.py diff --git a/modules/lithium.pyimage/image/channel/combination.py b/modules/lithium.pyimage/image/channel/combination.py new file mode 100644 index 00000000..6172f1d5 --- /dev/null +++ b/modules/lithium.pyimage/image/channel/combination.py @@ -0,0 +1,182 @@ +from pathlib import Path +from typing import List, Optional, Tuple +from PIL import Image +import numpy as np +from skimage import color +import cv2 +from loguru import logger +import argparse +import sys +import concurrent.futures + +# Configure Loguru logger +logger.remove() # Remove the default logger +logger.add(sys.stderr, level="INFO", format="{time} {level} {message}") + + +def resize_to_match(image: Image.Image, target_size: Tuple[int, int]) -> Image.Image: + """Resize the image to match the target size.""" + logger.debug(f"Resizing image from {image.size} to {target_size}") + return image.resize(target_size, Image.ANTIALIAS) + + +def load_image_as_gray(path: Path) -> Image.Image: + """Load an image and convert it to grayscale.""" + logger.debug(f"Loading grayscale image: {path}") + try: + return Image.open(path).convert('L') + except Exception as e: + logger.error(f"Failed to load image {path}: {e}") + raise + + +def combine_channels(channels: List[Image.Image], color_space: str = 'RGB') -> Image.Image: + """Combine three channels into an image with the specified color space.""" + logger.info(f"Combining channels into {color_space} color space") + color_space = color_space.upper() + if color_space == 'RGB': + return Image.merge("RGB", channels) + elif color_space == 'LAB': + lab_image = Image.merge("LAB", channels) + return lab_image.convert('RGB') + elif color_space == 'HSV': + hsv_image = Image.merge("HSV", channels) + return hsv_image.convert('RGB') + elif color_space == 'HSI': + hsi_array = np.dstack([np.array(ch) / 255.0 for ch in channels]) + rgb_array = color.hsv2rgb(hsi_array) # Approximate HSI using HSV + return Image.fromarray((rgb_array * 255).astype(np.uint8)) + elif color_space == 'YUV': + yuv_image = Image.merge("YCbCr", channels) + return yuv_image.convert('RGB') + else: + logger.error(f"Unsupported color space: {color_space}") + raise ValueError(f"Unsupported color space: {color_space}") + + +def channel_combination(src_paths: List[Path], color_space: str = 'RGB') -> Image.Image: + """Load, resize, and combine channel images.""" + if len(src_paths) != 3: + logger.error( + "Three source image paths are required to combine channels.") + raise ValueError( + "Three source image paths are required to combine channels.") + + logger.info(f"Starting channel combination into {color_space} color space") + # Load images + channels = [load_image_as_gray(path) for path in src_paths] + + # Resize to match the first image + base_size = channels[0].size + channels = [resize_to_match(ch, base_size) for ch in channels] + + # Combine channels + combined_image = combine_channels(channels, color_space=color_space) + logger.info("Channel combination completed") + return combined_image + + +def parse_args() -> argparse.Namespace: + """Parse command-line arguments.""" + parser = argparse.ArgumentParser( + description="Combine three channel images into a specified color space image.") + parser.add_argument('color_space', type=str, choices=['RGB', 'LAB', 'HSV', 'HSI', 'YUV'], + help="Target color space.") + parser.add_argument('src1', type=Path, + help="Path to the first channel image.") + parser.add_argument('src2', type=Path, + help="Path to the second channel image.") + parser.add_argument('src3', type=Path, + help="Path to the third channel image.") + parser.add_argument('-o', '--output', type=Path, default=Path('./combined.png'), + help="Path to save the combined image.") + parser.add_argument('-f', '--format', type=str, choices=['PNG', 'JPEG', 'BMP', 'TIFF'], + default='PNG', help="Format of the output image.") + parser.add_argument('-b', '--batch', action='store_true', + help="Enable batch processing mode to process multiple image sets in the same directory.") + parser.add_argument('-m', '--mapping', nargs=3, metavar=('CH1', 'CH2', 'CH3'), + help="Custom channel mapping (e.g., R G B).") + return parser.parse_args() + + +def batch_process(directory: Path, color_space: str, output_dir: Path, img_format: str, mapping: Optional[List[str]] = None): + """Batch process multiple sets of channel images in a directory.""" + logger.info(f"Starting batch processing in directory: {directory}") + # Assume each image set consists of three files named _. + channel_suffixes = mapping if mapping else ['R', 'G', 'B'] + r_images = sorted(directory.glob(f'*_{channel_suffixes[0]}.*')) + + def process_image_set(r_img: Path): + basename = r_img.stem[:-len(f'_{channel_suffixes[0]}')] + other_channels = [ + directory / f"{basename}_{channel}{r_img.suffix}" for channel in channel_suffixes[1:]] + if not all(ch.exists() for ch in other_channels): + logger.warning(f"Missing channel images for: {basename}") + return + try: + combined = channel_combination( + [r_img] + other_channels, color_space=color_space) + output_path = output_dir / \ + f"{basename}_{color_space}.{img_format.lower()}" + combined.save(output_path, format=img_format) + logger.info(f"Saved combined image to {output_path}") + except Exception as e: + logger.error(f"Error processing {basename}: {e}") + + output_dir.mkdir(exist_ok=True) + with concurrent.futures.ThreadPoolExecutor() as executor: + executor.map(process_image_set, r_images) + + +def main(): + args = parse_args() + + if args.batch: + # Batch processing mode + src_dir = args.src1.parent # Assume all images are in the same directory + output_dir = Path('./batch_output') + try: + batch_process(src_dir, args.color_space, + output_dir, args.format, args.mapping) + except Exception as e: + logger.exception(f"Error during batch processing: {e}") + sys.exit(1) + else: + # Single image set processing + try: + combined_image = channel_combination([args.src1, args.src2, args.src3], + color_space=args.color_space) + combined_image.save(args.output, format=args.format) + logger.info( + f"Combined image saved to {args.output}, format: {args.format}") + except Exception as e: + logger.exception(f"Error during channel combination: {e}") + sys.exit(1) + + +def library_combine_channels(src_paths: List[Path], color_space: str = 'RGB', output_path: Optional[Path] = None, img_format: str = 'PNG') -> Optional[Path]: + """ + Library function to combine channels and optionally save the image. + + :param src_paths: List of three Paths to the channel images. + :param color_space: Target color space. + :param output_path: Path to save the combined image. If None, the image is not saved. + :param img_format: Format to save the image. + :return: Path to the saved image if output_path is provided, else None. + """ + try: + combined_image = channel_combination( + src_paths, color_space=color_space) + if output_path: + combined_image.save(output_path, format=img_format) + logger.info( + f"Combined image saved to {output_path}, format: {img_format}") + return output_path + return None + except Exception as e: + logger.exception(f"Error in library_combine_channels: {e}") + raise + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pyimage/image/channel/extraction.py b/modules/lithium.pyimage/image/channel/extraction.py new file mode 100644 index 00000000..0e2d4a52 --- /dev/null +++ b/modules/lithium.pyimage/image/channel/extraction.py @@ -0,0 +1,361 @@ +import cv2 +import numpy as np +from pathlib import Path +from typing import Dict, List, Optional, Tuple +from matplotlib import pyplot as plt +from loguru import logger +import argparse +import sys +import concurrent.futures + +# Configure Loguru logger +logger.remove() # Remove the default logger +logger.add(sys.stderr, level="INFO", format="{time} {level} {message}") + + +def extract_channels(image: np.ndarray, color_space: str = 'RGB') -> Dict[str, np.ndarray]: + """ + Extract channels from an image based on the specified color space. + + :param image: Input image in BGR format. + :param color_space: Target color space for channel extraction. + :return: Dictionary of channel names and their corresponding data. + """ + channels = {} + logger.debug(f"Extracting channels using color space: {color_space}") + + try: + if color_space.upper() == 'RGB': + rgb_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) + channels['R'], channels['G'], channels['B'] = cv2.split(rgb_image) + + elif color_space.upper() == 'XYZ': + xyz_image = cv2.cvtColor(image, cv2.COLOR_BGR2XYZ) + channels['X'], channels['Y'], channels['Z'] = cv2.split(xyz_image) + + elif color_space.upper() == 'LAB': + lab_image = cv2.cvtColor(image, cv2.COLOR_BGR2Lab) + channels['L*'], channels['a*'], channels['b*'] = cv2.split( + lab_image) + + elif color_space.upper() == 'LCH': + lab_image = cv2.cvtColor(image, cv2.COLOR_BGR2Lab) + L, a, b = cv2.split(lab_image) + H, C = cv2.cartToPolar(a.astype(np.float32), b.astype(np.float32)) + channels['L*'] = L + channels['C*'] = C + channels['H*'] = H + + elif color_space.upper() == 'HSV': + hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) + channels['H'], channels['S'], channels['V'] = cv2.split(hsv_image) + + elif color_space.upper() == 'HSI': + hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) + H, S, V = cv2.split(hsv_image) + I = V.copy() + channels['H'] = H + channels['Si'] = S + channels['I'] = I + + elif color_space.upper() == 'YUV': + yuv_image = cv2.cvtColor(image, cv2.COLOR_BGR2YUV) + channels['Y'], channels['U'], channels['V'] = cv2.split(yuv_image) + + elif color_space.upper() == 'YCBCR': + ycbcr_image = cv2.cvtColor(image, cv2.COLOR_BGR2YCrCb) + channels['Y'], channels['Cb'], channels['Cr'] = cv2.split( + ycbcr_image) + + elif color_space.upper() == 'HSL': + hsl_image = cv2.cvtColor(image, cv2.COLOR_BGR2HLS) + channels['H'], channels['S'], channels['L'] = cv2.split(hsl_image) + + elif color_space.upper() == 'CMYK': + # Approximate CMYK by converting to CMY and inferring K + cmy_image = 255 - image + C, M, Y = cv2.split(cmy_image) + K = np.minimum(C, np.minimum(M, Y)) + channels['C'] = C + channels['M'] = M + channels['Y'] = Y + channels['K'] = K + + else: + logger.error(f"Unsupported color space: {color_space}") + raise ValueError(f"Unsupported color space: {color_space}") + + logger.info( + f"Successfully extracted channels for color space: {color_space}") + except Exception as e: + logger.error(f"Error extracting channels: {e}") + raise + + return channels + + +def show_histogram(channel_data: np.ndarray, title: str = 'Channel Histogram') -> None: + """ + Display the histogram of a single channel. + + :param channel_data: Numpy array of the channel data. + :param title: Title of the histogram plot. + """ + logger.debug(f"Displaying histogram for: {title}") + plt.figure() + plt.title(title) + plt.xlabel('Pixel Value') + plt.ylabel('Frequency') + plt.hist(channel_data.ravel(), bins=256, range=[ + 0, 256], color='gray', alpha=0.7) + plt.grid(True) + plt.show() + + +def merge_channels(channels: Dict[str, np.ndarray]) -> Optional[np.ndarray]: + """ + Merge channels back into a single image. + + :param channels: Dictionary of channel names and their data. + :return: Merged image or None if insufficient channels. + """ + logger.debug("Merging channels into a single image.") + merged_image = None + channel_list = list(channels.values()) + + try: + if len(channel_list) >= 3: + merged_image = cv2.merge(channel_list[:3]) + elif len(channel_list) == 2: + merged_image = cv2.merge([ + channel_list[0], + channel_list[1], + np.zeros_like(channel_list[0], dtype=channel_list[0].dtype) + ]) + elif len(channel_list) == 1: + merged_image = channel_list[0] + else: + logger.warning("No channels to merge.") + except Exception as e: + logger.error(f"Error merging channels: {e}") + raise + + if merged_image is not None: + logger.info("Channels successfully merged.") + else: + logger.warning("Merged image is None.") + + return merged_image + + +def process_directory(input_dir: Path, output_dir: Path, color_space: str = 'RGB') -> None: + """ + Process all images in a directory: extract channels, display histograms, and save channels. + + :param input_dir: Directory containing input images. + :param output_dir: Directory to save extracted channels. + :param color_space: Color space for channel extraction. + """ + logger.info( + f"Processing directory: {input_dir} with color space: {color_space}") + + if not input_dir.exists() or not input_dir.is_dir(): + logger.error( + f"Input directory does not exist or is not a directory: {input_dir}") + raise NotADirectoryError( + f"Input directory does not exist or is not a directory: {input_dir}") + + output_dir.mkdir(parents=True, exist_ok=True) + supported_extensions = ('.png', '.jpg', '.jpeg', '.bmp', '.tiff') + + for image_path in input_dir.iterdir(): + if image_path.suffix.lower() in supported_extensions: + logger.info(f"Processing image: {image_path.name}") + try: + image = cv2.imread(str(image_path)) + if image is None: + logger.warning(f"Failed to read image: {image_path}") + continue + + extracted_channels = extract_channels(image, color_space) + + for channel_name, channel_data in extracted_channels.items(): + save_path = output_dir / \ + f"{image_path.stem}_{channel_name}.png" + cv2.imwrite(str(save_path), channel_data) + logger.info(f"Saved channel {channel_name} to {save_path}") + + # Optionally display histogram + show_histogram( + channel_data, title=f"{image_path.stem} - {channel_name}") + + except Exception as e: + logger.error(f"Error processing image {image_path.name}: {e}") + + +def save_channels(channels: Dict[str, np.ndarray], output_dir: Path, base_name: str = 'output') -> None: + """ + Save extracted channels to the specified directory. + + :param channels: Dictionary of channel names and their data. + :param output_dir: Directory to save the channels. + :param base_name: Base name for the saved channel files. + """ + logger.debug( + f"Saving channels to directory: {output_dir} with base name: {base_name}") + output_dir.mkdir(parents=True, exist_ok=True) + + for channel_name, channel_data in channels.items(): + filename = output_dir / f"{base_name}_{channel_name}.png" + cv2.imwrite(str(filename), channel_data) + logger.info(f"Saved channel {channel_name} to {filename}") + + +def display_image(title: str, image: np.ndarray) -> None: + """ + Display an image using OpenCV. + + :param title: Window title. + :param image: Image data in BGR format. + """ + logger.debug(f"Displaying image: {title}") + cv2.imshow(title, image) + cv2.waitKey(0) + cv2.destroyAllWindows() + + +def parse_args() -> argparse.Namespace: + """ + Parse command-line arguments. + + :return: Parsed arguments. + """ + parser = argparse.ArgumentParser( + description="Extract and process image channels in various color spaces." + ) + parser.add_argument('mode', type=str, choices=['extract', 'merge', 'process_dir'], + help="Mode of operation: extract, merge, or process_dir.") + parser.add_argument('--color_space', type=str, choices=['RGB', 'XYZ', 'LAB', 'LCH', + 'HSV', 'HSI', 'YUV', 'YCBCR', + 'HSL', 'CMYK'], + default='RGB', help="Target color space.") + parser.add_argument('--input', type=Path, required=True, + help="Path to the input image or directory.") + parser.add_argument('--output', type=Path, default=Path('./output_channels'), + help="Path to save the extracted channels or merged image.") + parser.add_argument('--base_name', type=str, default='output', + help="Base name for saving merged image.") + parser.add_argument('--format', type=str, choices=['PNG', 'JPEG', 'BMP', 'TIFF'], + default='PNG', help="Format for the output image.") + parser.add_argument('--show', action='store_true', + help="Display the merged image.") + return parser.parse_args() + + +def library_extract_channels(image: np.ndarray, color_space: str = 'RGB') -> Dict[str, np.ndarray]: + """ + Library function to extract channels from an image. + + :param image: Input image in BGR format. + :param color_space: Target color space. + :return: Dictionary of channel names and their data. + """ + return extract_channels(image, color_space) + + +def library_merge_channels(channels: Dict[str, np.ndarray]) -> Optional[np.ndarray]: + """ + Library function to merge channels into a single image. + + :param channels: Dictionary of channel names and their data. + :return: Merged image or None. + """ + return merge_channels(channels) + + +def main(): + args = parse_args() + + if args.mode == 'extract': + # Single image channel extraction + logger.info( + f"Extracting channels from image: {args.input} with color space: {args.color_space}") + try: + image = cv2.imread(str(args.input)) + if image is None: + logger.error(f"Failed to read image: {args.input}") + sys.exit(1) + + extracted_channels = extract_channels(image, args.color_space) + + for channel_name, channel_data in extracted_channels.items(): + save_path = args.output / \ + f"{args.input.stem}_{channel_name}.png" + args.output.mkdir(parents=True, exist_ok=True) + cv2.imwrite(str(save_path), channel_data) + logger.info(f"Saved channel {channel_name} to {save_path}") + + # Optionally display histogram + show_histogram( + channel_data, title=f"{args.input.stem} - {channel_name}") + + except Exception as e: + logger.exception(f"Error during channel extraction: {e}") + sys.exit(1) + + elif args.mode == 'merge': + # Merge channels into a single image + logger.info(f"Merging channels from directory: {args.input}") + try: + if not args.input.is_dir(): + logger.error( + f"Input path must be a directory for merging: {args.input}") + sys.exit(1) + + channels = {} + for channel_file in args.input.iterdir(): + if channel_file.is_file() and channel_file.suffix.lower() == '.png': + parts = channel_file.stem.split('_') + if len(parts) < 2: + logger.warning( + f"Skipping file with unexpected naming: {channel_file.name}") + continue + channel_name = parts[-1] + channels[channel_name] = cv2.imread( + str(channel_file), cv2.IMREAD_GRAYSCALE) + + merged_image = merge_channels(channels) + if merged_image is not None: + merged_image_bgr = cv2.cvtColor( + merged_image, cv2.COLOR_RGB2BGR) + output_path = args.output / \ + f"{args.base_name}_merged.{args.format.lower()}" + cv2.imwrite(str(output_path), merged_image_bgr) + logger.info(f"Merged image saved to {output_path}") + + if args.show: + display_image("Merged Image", merged_image_bgr) + else: + logger.error( + "Merged image is None. Check if sufficient channels were provided.") + + except Exception as e: + logger.exception(f"Error during channel merging: {e}") + sys.exit(1) + + elif args.mode == 'process_dir': + # Batch processing mode + logger.info( + f"Batch processing images in directory: {args.input} with color space: {args.color_space}") + try: + process_directory(args.input, args.output, args.color_space) + except Exception as e: + logger.exception(f"Error during batch processing: {e}") + sys.exit(1) + else: + logger.error(f"Unsupported mode: {args.mode}") + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/pysrc/image/color_calibration/__init__.py b/modules/lithium.pyimage/image/color_calibration/__init__.py similarity index 100% rename from pysrc/image/color_calibration/__init__.py rename to modules/lithium.pyimage/image/color_calibration/__init__.py diff --git a/modules/lithium.pyimage/image/color_calibration/calibration.py b/modules/lithium.pyimage/image/color_calibration/calibration.py new file mode 100644 index 00000000..b789333d --- /dev/null +++ b/modules/lithium.pyimage/image/color_calibration/calibration.py @@ -0,0 +1,291 @@ +import cv2 +import numpy as np +from typing import Tuple, Optional, List +from dataclasses import dataclass, field +from pathlib import Path +from loguru import logger + + +@dataclass +class ColorCalibrationConfig: + """Configuration parameters for color calibration.""" + gamma: float = 1.0 # Gamma correction value + # 'gray_world', 'white_patch', 'learning_based' + white_balance_method: str = 'gray_world' + calibration_save_path: Optional[Path] = None + + +class ColorCalibration: + """Handles color calibration tasks for astronomical images.""" + + def __init__(self, image: np.ndarray, config: Optional[ColorCalibrationConfig] = None) -> None: + """ + Initialize the ColorCalibration class. + + :param image: Input RGB image + :param config: Color calibration configuration + """ + self.image = image + self.config = config or ColorCalibrationConfig() + + # Configure logging + logger.remove() + logger.add( + "color_calibration.log", + rotation="10 MB", + retention="10 days", + level="DEBUG", + format="{time} | {level} | {message}" + ) + logger.debug( + "ColorCalibration initialized with configuration: {}", self.config) + + def gamma_correction(self) -> np.ndarray: + """ + Apply gamma correction to the image. + + :return: Gamma corrected image + """ + logger.info("Starting gamma correction with gamma value: {}", + self.config.gamma) + try: + inv_gamma = 1.0 / self.config.gamma + table = np.array([((i / 255.0) ** inv_gamma) * + 255 for i in np.arange(256)]).astype("uint8") + corrected_image = cv2.LUT(self.image, table) + logger.debug("Gamma correction completed.") + return corrected_image + except Exception as e: + logger.error("Error during gamma correction: {}", e) + raise + + def apply_white_balance(self) -> np.ndarray: + """ + Apply white balance to the image based on the configured method. + + :return: White balanced image + """ + method = self.config.white_balance_method.lower() + logger.info("Starting white balance with method: {}", method) + if method == 'gray_world': + return self.gray_world_white_balance() + elif method == 'white_patch': + return self.white_patch_white_balance() + elif method == 'learning_based': + return self.learning_based_white_balance() + else: + logger.error("Unsupported white balance method: {}", method) + raise ValueError(f"Unsupported white balance method: {method}") + + def gray_world_white_balance(self) -> np.ndarray: + """ + Apply gray world white balance algorithm. + + :return: White balanced image + """ + logger.debug("Applying gray world white balance.") + try: + mean_values = np.mean(self.image, axis=(0, 1)) + gray_value = np.mean(mean_values) + factors = gray_value / mean_values + balanced_image = self.apply_color_factors(factors) + logger.debug("Gray world white balance completed.") + return balanced_image + except Exception as e: + logger.error("Error during gray world white balance: {}", e) + raise + + def white_patch_white_balance(self) -> np.ndarray: + """ + Apply white patch white balance algorithm. + + :return: White balanced image + """ + logger.debug("Applying white patch white balance.") + try: + max_values = np.max(self.image, axis=(0, 1)) + factors = 255.0 / max_values + balanced_image = self.apply_color_factors(factors) + logger.debug("White patch white balance completed.") + return balanced_image + except Exception as e: + logger.error("Error during white patch white balance: {}", e) + raise + + def learning_based_white_balance(self) -> np.ndarray: + """ + Apply learning-based white balance algorithm. + + :return: White balanced image + """ + logger.debug("Applying learning-based white balance.") + try: + wb = cv2.xphoto.createLearningBasedWB() + balanced_image = wb.balanceWhite(self.image) + logger.debug("Learning-based white balance completed.") + return balanced_image + except Exception as e: + logger.error("Error during learning-based white balance: {}", e) + raise + + def apply_color_factors(self, factors: np.ndarray) -> np.ndarray: + """ + Apply color correction factors. + + :param factors: Color correction factors + :return: Corrected image + """ + logger.debug("Applying color correction factors: {}", factors) + try: + calibrated_image = self.image.astype(np.float32) + for i in range(3): + calibrated_image[:, :, i] *= factors[i] + calibrated_image = np.clip( + calibrated_image, 0, 255).astype(np.uint8) + logger.debug("Color correction completed.") + return calibrated_image + except Exception as e: + logger.error("Error applying color correction factors: {}", e) + raise + + def save_calibration_parameters(self) -> None: + """ + Save calibration parameters to a file. + + """ + if self.config.calibration_save_path: + logger.info("Saving calibration parameters to file: {}", + self.config.calibration_save_path) + try: + calibration_data = { + 'gamma': self.config.gamma, + 'white_balance_method': self.config.white_balance_method + } + np.save(self.config.calibration_save_path, calibration_data) + logger.debug("Calibration parameters saved successfully.") + except Exception as e: + logger.error("Error saving calibration parameters: {}", e) + raise + + def load_calibration_parameters(self) -> None: + """ + Load calibration parameters from a file. + + """ + if self.config.calibration_save_path and self.config.calibration_save_path.exists(): + logger.info("Loading calibration parameters from file: {}", + self.config.calibration_save_path) + try: + calibration_data = np.load( + self.config.calibration_save_path, allow_pickle=True).item() + self.config.gamma = calibration_data.get( + 'gamma', self.config.gamma) + self.config.white_balance_method = calibration_data.get( + 'white_balance_method', self.config.white_balance_method) + logger.debug("Calibration parameters loaded successfully.") + except Exception as e: + logger.error("Error loading calibration parameters: {}", e) + raise + + def batch_process(self, image_list: List[np.ndarray]) -> List[np.ndarray]: + """ + Batch process a list of images. + + :param image_list: List of images to process + :return: List of processed images + """ + logger.info("Starting batch processing of {} images.", len(image_list)) + processed_images = [] + try: + for idx, img in enumerate(image_list): + logger.debug("Processing image {}.", idx + 1) + self.image = img + corrected_image = self.apply_white_balance() + corrected_image = self.gamma_correction() + processed_images.append(corrected_image) + logger.info("Batch processing completed.") + return processed_images + except Exception as e: + logger.error("Error during batch processing: {}", e) + raise + + def adjust_saturation(self, saturation_scale: float = 1.0) -> np.ndarray: + """ + Adjust the saturation of the image. + + :param saturation_scale: Saturation adjustment factor + :return: Image with adjusted saturation + """ + logger.info("Adjusting image saturation with scale: {}", + saturation_scale) + try: + hsv_image = cv2.cvtColor( + self.image, cv2.COLOR_BGR2HSV).astype(np.float32) + hsv_image[:, :, 1] *= saturation_scale + hsv_image[:, :, 1] = np.clip(hsv_image[:, :, 1], 0, 255) + adjusted_image = cv2.cvtColor( + hsv_image.astype(np.uint8), cv2.COLOR_HSV2BGR) + logger.debug("Saturation adjustment completed.") + return adjusted_image + except Exception as e: + logger.error("Error adjusting saturation: {}", e) + raise + + def adjust_brightness(self, brightness_offset: int = 0) -> np.ndarray: + """ + Adjust the brightness of the image. + + :param brightness_offset: Brightness offset value + :return: Image with adjusted brightness + """ + logger.info("Adjusting image brightness with offset: {}", + brightness_offset) + try: + adjusted_image = cv2.convertScaleAbs( + self.image, alpha=1, beta=brightness_offset) + logger.debug("Brightness adjustment completed.") + return adjusted_image + except Exception as e: + logger.error("Error adjusting brightness: {}", e) + raise + + +# Example usage +if __name__ == "__main__": + # Load image + image_path = "path/to/image.jpg" + image = cv2.imread(image_path) + if image is None: + logger.error("Unable to load image: {}", image_path) + exit(1) + + # Configure color calibration parameters + calibration_config = ColorCalibrationConfig( + gamma=2.2, + white_balance_method='gray_world', + calibration_save_path=Path("calibration_params.npy") + ) + + # Initialize color calibration object + color_calibrator = ColorCalibration(image=image, config=calibration_config) + + # Apply white balance + balanced_image = color_calibrator.apply_white_balance() + + # Apply gamma correction + corrected_image = color_calibrator.gamma_correction() + + # Adjust saturation + adjusted_image = color_calibrator.adjust_saturation(saturation_scale=1.2) + + # Adjust brightness + bright_image = color_calibrator.adjust_brightness(brightness_offset=10) + + # Save calibration parameters + color_calibrator.save_calibration_parameters() + + # Display results + cv2.imshow("Original Image", image) + cv2.imshow("Corrected Image", corrected_image) + cv2.waitKey(0) + cv2.destroyAllWindows() diff --git a/pysrc/image/color_calibration/io.py b/modules/lithium.pyimage/image/color_calibration/io.py similarity index 100% rename from pysrc/image/color_calibration/io.py rename to modules/lithium.pyimage/image/color_calibration/io.py diff --git a/pysrc/image/color_calibration/processing.py b/modules/lithium.pyimage/image/color_calibration/processing.py similarity index 100% rename from pysrc/image/color_calibration/processing.py rename to modules/lithium.pyimage/image/color_calibration/processing.py diff --git a/pysrc/image/color_calibration/utils.py b/modules/lithium.pyimage/image/color_calibration/utils.py similarity index 100% rename from pysrc/image/color_calibration/utils.py rename to modules/lithium.pyimage/image/color_calibration/utils.py diff --git a/modules/lithium.pyimage/image/debayer/debayer.py b/modules/lithium.pyimage/image/debayer/debayer.py new file mode 100644 index 00000000..a4e3cbb9 --- /dev/null +++ b/modules/lithium.pyimage/image/debayer/debayer.py @@ -0,0 +1,532 @@ +import numpy as np +import cv2 +from concurrent.futures import ThreadPoolExecutor, as_completed +from typing import Optional, Tuple, List, Union +from pathlib import Path +from dataclasses import dataclass +from loguru import logger + + +@dataclass +class DebayerConfig: + """ + Configuration settings for the Debayer process. + """ + method: str = 'bilinear' # 'superpixel', 'bilinear', 'vng', 'ahd', 'laplacian' + # 'BGGR', 'RGGB', 'GBRG', 'GRBG', or None for auto-detection + pattern: Optional[str] = None + num_threads: int = 4 + visualize_intermediate: bool = False + visualization_save_path: Optional[Path] = None + save_debayered_images: bool = False + debayered_save_path_template: str = "{original_name}_{method}.png" + + +class Debayer: + def __init__(self, config: Optional[DebayerConfig] = None) -> None: + """ + Initialize Debayer object with configuration. + + :param config: DebayerConfig object containing debayer settings. + """ + self.config = config or DebayerConfig() + + # Configure Loguru logger + logger.remove() # Remove default logger + logger.add( + "debayer.log", + rotation="10 MB", + retention="10 days", + level="DEBUG", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}" + ) + logger.debug("Initialized Debayer with configuration: {}", self.config) + + def detect_bayer_pattern(self, image: np.ndarray) -> str: + """ + Automatically detect Bayer pattern from the CFA image. + + :param image: Grayscale CFA image. + :return: Detected Bayer pattern. + """ + logger.info("Starting Bayer pattern detection.") + height, width = image.shape + + # Initialize pattern scores + patterns = {'BGGR': 0, 'RGGB': 0, 'GBRG': 0, 'GRBG': 0} + + # Edge detection to enhance pattern recognition + edges = cv2.Canny(image, 50, 150) + + # Analyze each 2x2 block + for i in range(0, height - 1, 2): + for j in range(0, width - 1, 2): + block = image[i:i+2, j:j+2] + edge_block = edges[i:i+2, j:j+2] + + # Calculate scores based on intensity and edges + patterns['BGGR'] += block[0, 0] + block[1, 1] + \ + edge_block[0, 0] + edge_block[1, 1] + patterns['RGGB'] += block[1, 0] + block[0, 1] + \ + edge_block[1, 0] + edge_block[0, 1] + patterns['GBRG'] += block[0, 1] + block[1, 0] + \ + edge_block[0, 1] + edge_block[1, 0] + patterns['GRBG'] += block[0, 0] + block[1, 1] + \ + edge_block[0, 0] + edge_block[1, 1] + + detected_pattern = max(patterns, key=patterns.get) + logger.info("Detected Bayer pattern: {}", detected_pattern) + return detected_pattern + + def debayer_image(self, cfa_image: np.ndarray) -> np.ndarray: + """ + Perform the debayering process using the specified method. + + :param cfa_image: Grayscale CFA image. + :return: Debayered RGB image. + """ + logger.info("Starting debayering process.") + if self.config.pattern is None: + self.config.pattern = self.detect_bayer_pattern(cfa_image) + + # Extend image edges to handle boundary conditions + cfa_image_padded = self.extend_image_edges(cfa_image, pad_width=2) + logger.debug("Image edges extended with padding.") + + logger.debug("Using Bayer pattern: {}", self.config.pattern) + + method_dispatcher = { + 'superpixel': self.debayer_superpixel, + 'bilinear': self.debayer_bilinear, + 'vng': self.debayer_vng, + 'ahd': self.parallel_debayer_ahd, + 'laplacian': self.debayer_laplacian_harmonization + } + + debayer_method = self.config.method.lower() + if debayer_method not in method_dispatcher: + logger.error("Unknown debayer method: {}", self.config.method) + raise ValueError(f"Unknown debayer method: {self.config.method}") + + rgb_image = method_dispatcher[debayer_method](cfa_image_padded) + logger.info("Debayering completed using method: {}", + self.config.method) + + if self.config.save_debayered_images: + output_path = self.generate_save_path("debayered_image.png") + cv2.imwrite(str(output_path), rgb_image) + logger.debug("Debayered image saved to {}", output_path) + + return rgb_image + + def debayer_superpixel(self, cfa_image: np.ndarray) -> np.ndarray: + """ + Debayering using superpixel method. + + :param cfa_image: Padded CFA image. + :return: Debayered RGB image. + """ + logger.info("Debayering using superpixel method.") + red = cfa_image[0::2, 0::2] + green = (cfa_image[0::2, 1::2] + cfa_image[1::2, 0::2]) / 2 + blue = cfa_image[1::2, 1::2] + + rgb_image = np.stack((red, green, blue), axis=-1) + logger.debug("Superpixel debayering completed.") + return rgb_image + + def debayer_bilinear(self, cfa_image: np.ndarray) -> np.ndarray: + """ + Debayering using bilinear interpolation. + + :param cfa_image: Padded CFA image. + :return: Debayered RGB image. + """ + logger.info("Debayering using bilinear interpolation.") + pattern = self.config.pattern.upper() + pattern_codes = { + 'BGGR': cv2.COLOR_BayerBG2BGR, + 'RGGB': cv2.COLOR_BayerRG2BGR, + 'GBRG': cv2.COLOR_BayerGB2BGR, + 'GRBG': cv2.COLOR_BayerGR2BGR + } + + if pattern not in pattern_codes: + logger.error("Unsupported Bayer pattern: {}", pattern) + raise ValueError(f"Unsupported Bayer pattern: {pattern}") + + rgb_image = cv2.cvtColor(cfa_image, pattern_codes[pattern]) + logger.debug("Bilinear debayering completed.") + return rgb_image + + def debayer_vng(self, cfa_image: np.ndarray) -> np.ndarray: + """ + Debayering using VNG interpolation. + + :param cfa_image: Padded CFA image. + :return: Debayered RGB image. + """ + logger.info("Debayering using VNG interpolation.") + pattern = self.config.pattern.upper() + pattern_codes = { + 'BGGR': cv2.COLOR_BayerBG2BGR_VNG, + 'RGGB': cv2.COLOR_BayerRG2BGR_VNG, + 'GBRG': cv2.COLOR_BayerGB2BGR_VNG, + 'GRBG': cv2.COLOR_BayerGR2BGR_VNG + } + + if pattern not in pattern_codes: + logger.error("Unsupported Bayer pattern for VNG: {}", pattern) + raise ValueError(f"Unsupported Bayer pattern for VNG: {pattern}") + + rgb_image = cv2.cvtColor(cfa_image, pattern_codes[pattern]) + logger.debug("VNG debayering completed.") + return rgb_image + + def parallel_debayer_ahd(self, cfa_image: np.ndarray) -> np.ndarray: + """ + Debayering using Adaptive Homogeneity-Directed (AHD) interpolation with multithreading. + + :param cfa_image: Padded CFA image. + :return: Debayered RGB image. + """ + logger.info( + "Debayering using Adaptive Homogeneity-Directed (AHD) interpolation.") + height, width = cfa_image.shape + chunk_size = height // self.config.num_threads + results: List[np.ndarray] = [None] * self.config.num_threads + + def process_chunk(start_row: int, end_row: int, index: int): + logger.debug("Processing chunk {}: rows {} to {}", + index, start_row, end_row) + chunk = cfa_image[start_row:end_row, :] + gradient_x, gradient_y = self.calculate_gradients(chunk) + green_channel = self.interpolate_green_channel( + chunk, gradient_x, gradient_y) + red_channel, blue_channel = self.interpolate_red_blue_channel( + chunk, green_channel, self.config.pattern) + rgb_chunk = np.stack( + (red_channel, green_channel, blue_channel), axis=-1) + results[index] = np.clip(rgb_chunk, 0, 255).astype(np.uint8) + logger.debug("Chunk {} processing completed.", index) + + with ThreadPoolExecutor(max_workers=self.config.num_threads) as executor: + futures = [] + for i in range(self.config.num_threads): + start_row = i * chunk_size + end_row = ( + i + 1) * chunk_size if i < self.config.num_threads - 1 else height + futures.append(executor.submit( + process_chunk, start_row, end_row, i)) + + for future in as_completed(futures): + future.result() + + rgb_image = np.vstack(results) + logger.debug("AHD debayering completed with multithreading.") + return rgb_image + + def debayer_laplacian_harmonization(self, cfa_image: np.ndarray) -> np.ndarray: + """ + Debayering using Laplacian harmonization to enhance edges. + + :param cfa_image: Padded CFA image. + :return: Debayered RGB image with harmonized edges. + """ + logger.info("Debayering using Laplacian harmonization.") + interpolated_image = self.debayer_bilinear(cfa_image) + + # Calculate Laplacian for each channel + laplacian = {} + for idx, color in enumerate(['Blue', 'Green', 'Red']): + lap = self.calculate_laplacian(interpolated_image[:, :, idx]) + laplacian[color] = lap + logger.debug("Laplacian calculated for {} channel.", color) + + # Harmonize each channel + harmonized_channels = [] + for idx, color in enumerate(['Blue', 'Green', 'Red']): + harmonized = self.harmonize_edges( + interpolated_image[:, :, idx], laplacian[color]) + harmonized_channels.append(harmonized) + logger.debug("{} channel harmonized.", color) + + harmonized_image = np.stack(harmonized_channels, axis=-1) + logger.debug("Laplacian harmonization completed.") + return harmonized_image + + @staticmethod + def calculate_gradients(image: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: + """ + Calculate the gradients of the CFA image. + + :param image: CFA image chunk. + :return: Tuple of gradient_x and gradient_y. + """ + gradient_x = np.abs(np.diff(image, axis=1)) + gradient_y = np.abs(np.diff(image, axis=0)) + + gradient_x = np.pad(gradient_x, ((0, 0), (0, 1)), 'constant') + gradient_y = np.pad(gradient_y, ((0, 1), (0, 0)), 'constant') + + return gradient_x, gradient_y + + @staticmethod + def interpolate_green_channel(cfa_image: np.ndarray, gradient_x: np.ndarray, gradient_y: np.ndarray) -> np.ndarray: + """ + Interpolate the green channel of the CFA image based on gradients. + + :param cfa_image: CFA image chunk. + :param gradient_x: Gradient in x-direction. + :param gradient_y: Gradient in y-direction. + :return: Interpolated green channel. + """ + logger.debug("Interpolating green channel.") + height, width = cfa_image.shape + green_channel = np.zeros((height, width), dtype=np.float64) + + for i in range(1, height - 1): + for j in range(1, width - 1): + if (i % 2 == 0 and j % 2 == 1) or (i % 2 == 1 and j % 2 == 0): + # Green pixel + green_channel[i, j] = cfa_image[i, j] + else: + # Interpolate green + if gradient_x[i, j] < gradient_y[i, j]: + green_channel[i, j] = 0.5 * \ + (cfa_image[i, j-1] + cfa_image[i, j+1]) + else: + green_channel[i, j] = 0.5 * \ + (cfa_image[i-1, j] + cfa_image[i+1, j]) + + return green_channel + + @staticmethod + def interpolate_red_blue_channel(cfa_image: np.ndarray, green_channel: np.ndarray, pattern: Optional[str] = None) -> Tuple[np.ndarray, np.ndarray]: + """ + Interpolate the red and blue channels of the CFA image based on the green channel. + + :param cfa_image: CFA image chunk. + :param green_channel: Interpolated green channel. + :param pattern: Bayer pattern. + :return: Tuple of interpolated red and blue channels. + """ + logger.debug("Interpolating red and blue channels.") + height, width = cfa_image.shape + red_channel = np.zeros((height, width), dtype=np.float64) + blue_channel = np.zeros((height, width), dtype=np.float64) + + pattern = pattern.upper() if pattern else 'BGGR' + + for i in range(0, height - 1, 2): + for j in range(0, width - 1, 2): + if pattern == 'BGGR': + blue_channel[i, j] = cfa_image[i, j] + red_channel[i+1, j+1] = cfa_image[i+1, j+1] + + green_r = 0.5 * \ + (green_channel[i+1, j] + green_channel[i, j+1]) + green_b = 0.5 * \ + (green_channel[i, j] + green_channel[i+1, j+1]) + + blue_channel[i+1, j] = cfa_image[i+1, j] - \ + green_b + green_channel[i+1, j] + blue_channel[i, j+1] = cfa_image[i, j+1] - \ + green_b + green_channel[i, j+1] + red_channel[i, j] = cfa_image[i, j] - \ + green_r + green_channel[i, j] + red_channel[i+1, j+1] = cfa_image[i+1, j+1] - \ + green_r + green_channel[i+1, j+1] + + elif pattern == 'RGGB': + red_channel[i, j] = cfa_image[i, j] + blue_channel[i+1, j+1] = cfa_image[i+1, j+1] + + green_r = 0.5 * \ + (green_channel[i, j+1] + green_channel[i+1, j]) + green_b = 0.5 * \ + (green_channel[i+1, j] + green_channel[i, j+1]) + + red_channel[i+1, j] = cfa_image[i+1, j] - \ + green_r + green_channel[i+1, j] + red_channel[i, j+1] = cfa_image[i, j+1] - \ + green_r + green_channel[i, j+1] + blue_channel[i, j] = cfa_image[i, j] - \ + green_b + green_channel[i, j] + blue_channel[i+1, j+1] = cfa_image[i+1, j+1] - \ + green_b + green_channel[i+1, j+1] + + elif pattern == 'GBRG': + green_channel[i, j+1] = cfa_image[i, j+1] + blue_channel[i+1, j] = cfa_image[i+1, j] + + green_r = 0.5 * \ + (green_channel[i, j] + green_channel[i+1, j+1]) + green_b = 0.5 * \ + (green_channel[i+1, j] + green_channel[i, j+1]) + + red_channel[i, j] = cfa_image[i, j] - \ + green_r + green_channel[i, j] + red_channel[i+1, j+1] = cfa_image[i+1, j+1] - \ + green_r + green_channel[i+1, j+1] + blue_channel[i, j] = cfa_image[i, j] - \ + green_b + green_channel[i, j] + blue_channel[i+1, j+1] = cfa_image[i+1, j+1] - \ + green_b + green_channel[i+1, j+1] + + elif pattern == 'GRBG': + green_channel[i, j] = cfa_image[i, j] + red_channel[i+1, j] = cfa_image[i+1, j] + + green_r = 0.5 * \ + (green_channel[i, j] + green_channel[i+1, j+1]) + green_b = 0.5 * \ + (green_channel[i+1, j] + green_channel[i, j+1]) + + red_channel[i, j] = cfa_image[i, j] - \ + green_r + green_channel[i, j] + red_channel[i+1, j+1] = cfa_image[i+1, j+1] - \ + green_r + green_channel[i+1, j+1] + blue_channel[i+1, j] = cfa_image[i+1, j] - \ + green_b + green_channel[i+1, j] + blue_channel[i, j+1] = cfa_image[i, j+1] - \ + green_b + green_channel[i, j+1] + + return red_channel, blue_channel + + def calculate_laplacian(image: np.ndarray) -> np.ndarray: + """ + Calculate the Laplacian of the image for edge enhancement. + + :param image: Single-channel image. + :return: Laplacian image. + """ + laplacian = cv2.Laplacian(image, cv2.CV_64F) + return laplacian + + def harmonize_edges(original: np.ndarray, interpolated: np.ndarray, laplacian: np.ndarray) -> np.ndarray: + """ + Harmonize edges using the Laplacian result. + + :param original: Original CFA image. + :param interpolated: Interpolated channel image. + :param laplacian: Laplacian image. + :return: Harmonized channel image. + """ + harmonized = np.clip(interpolated + 0.2 * + laplacian, 0, 255).astype(np.uint8) + return harmonized + + def extend_image_edges(image: np.ndarray, pad_width: int) -> np.ndarray: + """ + Extend image edges using mirror padding to handle boundary issues during interpolation. + + :param image: Input image. + :param pad_width: Width of padding. + :return: Padded image. + """ + return np.pad(image, pad_width, mode='reflect') + + def visualize_intermediate_steps(image_path: Union[str, Path], debayered_image: np.ndarray, config: DebayerConfig): + """ + Visualize intermediate steps in the debayering process. + + :param image_path: Path to the original CFA image. + :param debayered_image: Debayered RGB image. + :param config: DebayerConfig object. + """ + import matplotlib.pyplot as plt + + if config.visualize_intermediate and config.visualization_save_path: + logger.info("Visualizing intermediate steps.") + # Load original image + cfa_image = cv2.imread(str(image_path), cv2.IMREAD_GRAYSCALE) + + # Detect pattern if not set + pattern = config.pattern or Debayer().detect_bayer_pattern(cfa_image) + + # Debayer using bilinear for visualization + debayer_bilinear = Debayer().debayer_bilinear(cfa_image, pattern) + + # Calculate gradients + gradient_x, gradient_y = Debayer.calculate_gradients(cfa_image) + green_channel = Debayer.interpolate_green_channel( + cfa_image, gradient_x, gradient_y) + red_channel, blue_channel = Debayer.interpolate_red_blue_channel( + cfa_image, green_channel, pattern) + + # Display images + plt.figure(figsize=(15, 10)) + + plt.subplot(2, 3, 1) + plt.imshow(cfa_image, cmap='gray') + plt.title('Original CFA Image') + plt.axis('off') + + plt.subplot(2, 3, 2) + plt.imshow(gradient_x, cmap='gray') + plt.title('Gradient X') + plt.axis('off') + + plt.subplot(2, 3, 3) + plt.imshow(gradient_y, cmap='gray') + plt.title('Gradient Y') + plt.axis('off') + + plt.subplot(2, 3, 4) + plt.imshow(green_channel, cmap='gray') + plt.title('Interpolated Green Channel') + plt.axis('off') + + plt.subplot(2, 3, 5) + plt.imshow(red_channel, cmap='gray') + plt.title('Interpolated Red Channel') + plt.axis('off') + + plt.subplot(2, 3, 6) + plt.imshow(blue_channel, cmap='gray') + plt.title('Interpolated Blue Channel') + plt.axis('off') + + plt.tight_layout() + if config.visualization_save_path: + plt.savefig(config.visualization_save_path) + logger.debug("Intermediate visualization saved to {}.", + config.visualization_save_path) + plt.show() + logger.info("Intermediate visualization displayed successfully.") + + def generate_save_path(self, original_path: str) -> Path: + """ + Generate a save path for the debayered image based on the original image name and method. + + :param original_path: Original image file path. + :return: Path object for the debayered image. + """ + original_name = Path(original_path).stem + save_path = Path(self.config.debayered_save_path_template.format( + original_name=original_name, method=self.config.method)) + return save_path + + # Example usage in __main__ + if __name__ == "__main__": + # Example usage + config = DebayerConfig( + method='bilinear', + pattern=None, # Auto-detect + num_threads=4, + visualize_intermediate=True, + visualization_save_path=Path("intermediate_steps.png"), + save_debayered_images=True, + debayered_save_path_template="{original_name}_{method}.png" + ) + debayer = Debayer(config=config) + image_path = "path/to/cfa_image.png" + + try: + debayered_rgb = debayer.debayer_image( + cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)) + visualize_intermediate_steps(image_path, debayered_rgb, config) + logger.info("Debayering process completed successfully.") + except Exception as e: + logger.error("An error occurred during debayering: {}", e) diff --git a/pysrc/image/defect_map/__init__.py b/modules/lithium.pyimage/image/defect_map/__init__.py similarity index 100% rename from pysrc/image/defect_map/__init__.py rename to modules/lithium.pyimage/image/defect_map/__init__.py diff --git a/pysrc/image/defect_map/defect_correction.py b/modules/lithium.pyimage/image/defect_map/defect_correction.py similarity index 89% rename from pysrc/image/defect_map/defect_correction.py rename to modules/lithium.pyimage/image/defect_map/defect_correction.py index e138f708..f0e1e741 100644 --- a/pysrc/image/defect_map/defect_correction.py +++ b/modules/lithium.pyimage/image/defect_map/defect_correction.py @@ -4,7 +4,13 @@ from skimage import img_as_float from .interpolation import interpolate_defects import multiprocessing -from typing import Optional +from typing import Optional, Tuple +from loguru import logger + +# Configure Loguru logger +logger.add("defect_correction.log", rotation="10 MB", retention="10 days", + level="DEBUG", format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}") + def defect_map_enhanced(image: np.ndarray, defect_map: np.ndarray, operation: str = 'mean', structure: str = 'square', radius: int = 1, is_cfa: bool = False, protect_edges: bool = False, @@ -25,6 +31,7 @@ def defect_map_enhanced(image: np.ndarray, defect_map: np.ndarray, operation: st Returns: - corrected_image: np.ndarray, The repaired image. """ + logger.info("Starting defect map enhancement") if structure == 'square': footprint = np.ones((2 * radius + 1, 2 * radius + 1)) elif structure == 'circular': @@ -37,6 +44,7 @@ def defect_map_enhanced(image: np.ndarray, defect_map: np.ndarray, operation: st footprint = np.zeros((2 * radius + 1, 1)) footprint[:, 0] = 1 else: + logger.error("Invalid structure type.") raise ValueError("Invalid structure type.") mask = defect_map == 0 @@ -55,8 +63,10 @@ def defect_map_enhanced(image: np.ndarray, defect_map: np.ndarray, operation: st corrected_image = correct_channel( image, mask, operation, footprint, adaptive_structure) + logger.info("Defect map enhancement completed") return corrected_image + def correct_channel(channel: np.ndarray, mask: np.ndarray, operation: str, footprint: np.ndarray, adaptive_structure: bool) -> np.ndarray: """ @@ -72,6 +82,7 @@ def correct_channel(channel: np.ndarray, mask: np.ndarray, operation: str, footp Returns: - channel: np.ndarray, The repaired image channel. """ + logger.debug(f"Correcting channel with operation: {operation}") if adaptive_structure: density = np.sum(mask) / mask.size radius = int(3 / density) if density > 0 else 1 @@ -93,12 +104,14 @@ def correct_channel(channel: np.ndarray, mask: np.ndarray, operation: str, footp elif operation == 'bicubic': channel_corrected = interpolate_defects(channel, mask, method='cubic') else: + logger.error("Invalid operation type.") raise ValueError("Invalid operation type.") channel[mask] = channel_corrected[mask] - + logger.debug("Channel correction completed") return channel + def parallel_defect_map(image: np.ndarray, defect_map: np.ndarray, **kwargs) -> np.ndarray: """ Parallel processing for defect map repair. @@ -111,6 +124,7 @@ def parallel_defect_map(image: np.ndarray, defect_map: np.ndarray, **kwargs) -> Returns: - corrected_image: np.ndarray, The repaired image. """ + logger.info("Starting parallel defect map processing") if image.ndim == 2: return defect_map_enhanced(image, defect_map, **kwargs) @@ -124,8 +138,10 @@ def parallel_defect_map(image: np.ndarray, defect_map: np.ndarray, **kwargs) -> pool.close() pool.join() + logger.info("Parallel defect map processing completed") return np.stack(results, axis=-1) + def defect_map_enhanced_single_channel(channel: np.ndarray, defect_map: np.ndarray, operation: str, structure: str, radius: int, is_cfa: bool, protect_edges: bool, adaptive_structure: bool) -> np.ndarray: @@ -145,4 +161,5 @@ def defect_map_enhanced_single_channel(channel: np.ndarray, defect_map: np.ndarr Returns: - channel: np.ndarray, The repaired image channel. """ + logger.debug("Processing single channel for defect map enhancement") return defect_map_enhanced(channel, defect_map, operation, structure, radius, is_cfa, protect_edges, adaptive_structure) diff --git a/pysrc/image/defect_map/interpolation.py b/modules/lithium.pyimage/image/defect_map/interpolation.py similarity index 100% rename from pysrc/image/defect_map/interpolation.py rename to modules/lithium.pyimage/image/defect_map/interpolation.py diff --git a/pysrc/image/defect_map/utils.py b/modules/lithium.pyimage/image/defect_map/utils.py similarity index 100% rename from pysrc/image/defect_map/utils.py rename to modules/lithium.pyimage/image/defect_map/utils.py diff --git a/pysrc/image/fluxcalibration/__init__.py b/modules/lithium.pyimage/image/fluxcalibration/__init__.py similarity index 100% rename from pysrc/image/fluxcalibration/__init__.py rename to modules/lithium.pyimage/image/fluxcalibration/__init__.py diff --git a/modules/lithium.pyimage/image/fluxcalibration/calibration.py b/modules/lithium.pyimage/image/fluxcalibration/calibration.py new file mode 100644 index 00000000..77a19ae7 --- /dev/null +++ b/modules/lithium.pyimage/image/fluxcalibration/calibration.py @@ -0,0 +1,485 @@ +from pathlib import Path +from typing import Any, Dict, Optional, Tuple +from dataclasses import dataclass +from loguru import logger +from astropy.io import fits +import numpy as np +import cv2 +import argparse +import sys +import concurrent.futures + + +# Configure Loguru logger +logger.remove() # Remove the default logger +logger.add(sys.stderr, level="INFO", format="{time} {level} {message}") + + +@dataclass +class CalibrationParams: + """Data class to store calibration parameters.""" + wavelength: float # Wavelength in nanometers + aperture: float # Aperture diameter in millimeters + obstruction: float # Obstruction diameter in millimeters + filter_width: float # Filter bandwidth in nanometers + transmissivity: float # Transmissivity + gain: float # Gain + quantum_efficiency: float # Quantum efficiency + extinction: float # Extinction coefficient + exposure_time: float # Exposure time in seconds + + +def compute_flx2dn(params: CalibrationParams) -> float: + """ + Compute the flux-to-DN conversion factor (FLX2DN). + + :param params: Calibration parameters. + :return: Flux-to-DN conversion factor. + """ + logger.debug("Starting FLX2DN computation.") + try: + c = 3.0e8 # Speed of light in m/s + h = 6.626e-34 # Planck's constant in J·s + wavelength_m = params.wavelength * 1e-9 # Convert nanometers to meters + + aperture_area = np.pi * \ + ((params.aperture**2 - params.obstruction**2) / 4) + FLX2DN = ( + params.exposure_time * + aperture_area * + params.filter_width * + params.transmissivity * + params.gain * + params.quantum_efficiency * + (1 - params.extinction) * + (wavelength_m / (c * h)) + ) + logger.info(f"Computed FLX2DN: {FLX2DN}") + return FLX2DN + except Exception as e: + logger.error(f"Error computing FLX2DN: {e}") + raise RuntimeError("Failed to compute FLX2DN.") + + +def flux_calibration( + image: np.ndarray, + params: CalibrationParams, + response_function: Optional[np.ndarray] = None +) -> Tuple[np.ndarray, float, float, float]: + """ + Perform flux calibration on an astronomical image. + + :param image: Input image as a numpy array. + :param params: Calibration parameters. + :param response_function: Optional instrument response function as a numpy array. + :return: Tuple containing the calibrated and rescaled image, FLXMIN, FLXRANGE, FLX2DN. + """ + logger.debug("Starting flux calibration process.") + try: + if response_function is not None: + logger.debug("Applying instrument response correction.") + image = instrument_response_correction(image, response_function) + + FLX2DN = compute_flx2dn(params) + calibrated_image = image / FLX2DN + logger.debug("Applied FLX2DN to the image.") + + calibrated_image = background_noise_correction(calibrated_image) + logger.debug("Applied background noise correction.") + + # Rescale image to range [0, 1] + FLXMIN = np.min(calibrated_image) + FLXRANGE = np.max(calibrated_image) - FLXMIN + rescaled_image = (calibrated_image - FLXMIN) / FLXRANGE + logger.info("Rescaled calibrated image to [0, 1] range.") + + return rescaled_image, FLXMIN, FLXRANGE, FLX2DN + except Exception as e: + logger.error(f"Flux calibration failed: {e}") + raise RuntimeError("Flux calibration process failed.") + + +def save_to_fits( + image: np.ndarray, + filename: str, + FLXMIN: float, + FLXRANGE: float, + FLX2DN: float, + header_info: Optional[Dict[str, Any]] = None +) -> None: + """ + Save the calibrated image to a FITS file with necessary header information. + + :param image: Calibrated image as a numpy array. + :param filename: Output FITS filename. + :param FLXMIN: Minimum flux value used for rescaling. + :param FLXRANGE: Flux range used for rescaling. + :param FLX2DN: Flux-to-DN conversion factor. + :param header_info: Optional additional header information. + """ + logger.debug(f"Saving calibrated image to FITS file: {filename}") + try: + hdu = fits.PrimaryHDU(image) + hdr = hdu.header + hdr['FLXMIN'] = (FLXMIN, 'Minimum flux value for rescaling') + hdr['FLXRANGE'] = (FLXRANGE, 'Flux range for rescaling') + hdr['FLX2DN'] = (FLX2DN, 'Flux conversion factor') + + # Add additional header information if provided + if header_info: + for key, value in header_info.items(): + hdr[key] = (value, f'Additional header key {key}') + + hdu.writeto(filename, overwrite=True) + logger.info(f"Calibrated image successfully saved to {filename}") + except Exception as e: + logger.error(f"Failed to save calibrated image to FITS: {e}") + raise IOError("Failed to save to FITS file.") + + +def apply_flat_field_correction(image: np.ndarray, flat_field: np.ndarray) -> np.ndarray: + """ + Apply flat-field correction to the image. + + :param image: Input image as a numpy array. + :param flat_field: Flat-field image as a numpy array. + :return: Corrected image. + """ + logger.debug("Applying flat-field correction.") + try: + if image.shape != flat_field.shape: + logger.error("Image and flat-field image shapes do not match.") + raise ValueError( + "Image and flat-field image must have the same shape.") + corrected_image = image / flat_field + logger.info("Successfully applied flat-field correction.") + return corrected_image + except Exception as e: + logger.error(f"Flat-field correction failed: {e}") + raise RuntimeError("Flat-field correction failed.") + + +def apply_dark_frame_subtraction(image: np.ndarray, dark_frame: np.ndarray) -> np.ndarray: + """ + Apply dark frame subtraction to the image. + + :param image: Input image as a numpy array. + :param dark_frame: Dark frame image as a numpy array. + :return: Corrected image. + """ + logger.debug("Applying dark frame subtraction.") + try: + if image.shape != dark_frame.shape: + logger.error("Image and dark frame image shapes do not match.") + raise ValueError( + "Image and dark frame image must have the same shape.") + corrected_image = image - dark_frame + logger.info("Successfully applied dark frame subtraction.") + return corrected_image + except Exception as e: + logger.error(f"Dark frame subtraction failed: {e}") + raise RuntimeError("Dark frame subtraction failed.") + + +def instrument_response_correction(image: np.ndarray, response_function: np.ndarray) -> np.ndarray: + """ + Apply instrument response correction to the image. + + :param image: Input image as a numpy array. + :param response_function: Instrument response function as a numpy array. + :return: Corrected image. + """ + logger.debug("Applying instrument response correction.") + try: + if image.shape != response_function.shape: + logger.error("Image and response function shapes do not match.") + raise ValueError( + "Image and response function must have the same shape.") + corrected_image = image * response_function + logger.info("Successfully applied instrument response correction.") + return corrected_image + except Exception as e: + logger.error(f"Instrument response correction failed: {e}") + raise RuntimeError("Instrument response correction failed.") + + +def background_noise_correction(image: np.ndarray) -> np.ndarray: + """ + Apply background noise correction to the image. + + :param image: Input image as a numpy array. + :return: Corrected image. + """ + logger.debug("Applying background noise correction.") + try: + median = np.median(image) + corrected_image = image - median + logger.info("Successfully applied background noise correction.") + return corrected_image + except Exception as e: + logger.error(f"Background noise correction failed: {e}") + raise RuntimeError("Background noise correction failed.") + + +def parse_args() -> argparse.Namespace: + """ + Parse command-line arguments. + + :return: Parsed arguments namespace. + """ + parser = argparse.ArgumentParser( + description="Perform flux calibration on astronomical images." + ) + subparsers = parser.add_subparsers( + dest='command', required=True, help='Sub-command help' + ) + + # Subcommand: calibrate + parser_calibrate = subparsers.add_parser( + 'calibrate', help='Calibrate a single image.' + ) + parser_calibrate.add_argument( + '--input', type=Path, required=True, help='Path to the input image.' + ) + parser_calibrate.add_argument( + '--output', type=Path, required=True, help='Path to save the calibrated FITS file.' + ) + parser_calibrate.add_argument( + '--params', type=Path, required=True, help='Path to calibration parameters file.' + ) + parser_calibrate.add_argument( + '--response', type=Path, help='Path to the instrument response function image.' + ) + parser_calibrate.add_argument( + '--save_bg_noise', action='store_true', help='Save background noise information.' + ) + + # Subcommand: batch_calibrate + parser_batch = subparsers.add_parser( + 'batch_calibrate', help='Batch calibrate multiple images in a directory.' + ) + parser_batch.add_argument( + '--input_dir', type=Path, required=True, help='Path to the input images directory.' + ) + parser_batch.add_argument( + '--output_dir', type=Path, required=True, help='Path to save the calibrated FITS files.' + ) + parser_batch.add_argument( + '--params_dir', type=Path, required=True, help='Path to the calibration parameters directory.' + ) + parser_batch.add_argument( + '--response_dir', type=Path, help='Path to the instrument response functions directory.' + ) + parser_batch.add_argument( + '--save_bg_noise', action='store_true', help='Save background noise information.' + ) + + return parser.parse_args() + + +def load_calibration_params(params_path: Path) -> CalibrationParams: + """ + Load calibration parameters from a file. + + :param params_path: Path to the calibration parameters file. + :return: CalibrationParams object. + """ + logger.debug(f"Loading calibration parameters from {params_path}") + try: + # Assuming the parameter file is a simple text file with key=value per line + params_dict = {} + with params_path.open('r') as f: + for line in f: + if line.strip() and not line.startswith('#'): + key, value = line.strip().split('=') + params_dict[key.strip()] = float(value.strip()) + + params = CalibrationParams( + wavelength=params_dict['wavelength'], + aperture=params_dict['aperture'], + obstruction=params_dict['obstruction'], + filter_width=params_dict['filter_width'], + transmissivity=params_dict['transmissivity'], + gain=params_dict['gain'], + quantum_efficiency=params_dict['quantum_efficiency'], + extinction=params_dict['extinction'], + exposure_time=params_dict['exposure_time'] + ) + logger.info(f"Successfully loaded calibration parameters: {params}") + return params + except Exception as e: + logger.error(f"Failed to load calibration parameters: {e}") + raise IOError("Failed to load calibration parameters.") + + +def calibrate_image( + image_path: Path, + output_path: Path, + params: CalibrationParams, + response_path: Optional[Path] = None, + save_bg_noise: bool = False +) -> None: + """ + Calibrate a single image and save the result. + + :param image_path: Path to the input image. + :param output_path: Path to save the calibrated FITS file. + :param params: CalibrationParams object. + :param response_path: Optional path to the instrument response function image. + :param save_bg_noise: Whether to save background noise information. + """ + logger.info(f"Starting calibration for image: {image_path}") + try: + image = cv2.imread(str(image_path), cv2.IMREAD_GRAYSCALE) + if image is None: + logger.error(f"Failed to read image: {image_path}") + raise IOError(f"Failed to read image: {image_path}") + + response_function = None + if response_path: + response_function = cv2.imread( + str(response_path), cv2.IMREAD_GRAYSCALE) + if response_function is None: + logger.error( + f"Failed to read instrument response function image: {response_path}") + raise IOError( + f"Failed to read instrument response function image: {response_path}") + + calibrated_image, FLXMIN, FLXRANGE, FLX2DN = flux_calibration( + image, params, response_function + ) + + save_to_fits( + calibrated_image, + str(output_path), + FLXMIN, + FLXRANGE, + FLX2DN + ) + + if save_bg_noise: + logger.debug( + f"Saving background noise information: FLXMIN={FLXMIN}, FLXRANGE={FLXRANGE}") + # Example: Save background noise information to a separate text file + bg_noise_path = output_path.with_suffix('.bg_noise.txt') + with bg_noise_path.open('w') as f: + f.write(f"FLXMIN={FLXMIN}\nFLXRANGE={FLXRANGE}\n") + logger.info( + f"Background noise information saved to {bg_noise_path}") + + except Exception as e: + logger.error(f"Calibration failed for image {image_path}: {e}") + raise RuntimeError(f"Calibration failed for image {image_path}.") + + +def batch_calibrate( + input_dir: Path, + output_dir: Path, + params_dir: Path, + response_dir: Optional[Path] = None, + save_bg_noise: bool = False +) -> None: + """ + Batch calibrate all images in a directory. + + :param input_dir: Path to the input images directory. + :param output_dir: Path to save the calibrated FITS files. + :param params_dir: Path to the calibration parameters directory. + :param response_dir: Optional path to the instrument response functions directory. + :param save_bg_noise: Whether to save background noise information. + """ + logger.info(f"Starting batch calibration from {input_dir} to {output_dir}") + try: + if not input_dir.exists() or not input_dir.is_dir(): + logger.error( + f"Input directory does not exist or is not a directory: {input_dir}") + raise NotADirectoryError( + f"Input directory does not exist or is not a directory: {input_dir}") + + output_dir.mkdir(parents=True, exist_ok=True) + + image_files = list(input_dir.glob('*.*')) + if not image_files: + logger.warning( + f"No image files found in input directory: {input_dir}") + return + + def process_single_image(image_path: Path): + basename = image_path.stem + params_path = params_dir / f"{basename}.txt" + if not params_path.exists(): + logger.warning( + f"Calibration parameters file not found: {params_path}") + return + + output_path = output_dir / f"{basename}.fits" + response_path = None + if response_dir: + response_path = response_dir / f"{basename}_response.fits" + if not response_path.exists(): + logger.warning( + f"Instrument response function file not found: {response_path}") + response_path = None + + try: + params = load_calibration_params(params_path) + calibrate_image( + image_path=image_path, + output_path=output_path, + params=params, + response_path=response_path, + save_bg_noise=save_bg_noise + ) + except Exception as e: + logger.error(f"Error processing image {image_path}: {e}") + + with concurrent.futures.ThreadPoolExecutor() as executor: + executor.map(process_single_image, image_files) + + logger.info("Batch calibration completed successfully.") + except Exception as e: + logger.error(f"Batch calibration failed: {e}") + raise RuntimeError("Batch calibration process failed.") + + +def main(): + """ + Main function to parse command-line arguments and execute corresponding operations. + """ + args = parse_args() + + if args.command == 'calibrate': + # Calibrate a single image + try: + params = load_calibration_params(args.params) + calibrate_image( + image_path=args.input, + output_path=args.output, + params=params, + response_path=args.response, + save_bg_noise=args.save_bg_noise + ) + except Exception as e: + logger.exception(f"Single image calibration failed: {e}") + sys.exit(1) + + elif args.command == 'batch_calibrate': + # Batch calibrate multiple images + try: + batch_calibrate( + input_dir=args.input_dir, + output_dir=args.output_dir, + params_dir=args.params_dir, + response_dir=args.response_dir, + save_bg_noise=args.save_bg_noise + ) + except Exception as e: + logger.exception(f"Batch calibration failed: {e}") + sys.exit(1) + else: + logger.error(f"Unknown command: {args.command}") + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pyimage/image/fluxcalibration/core.py b/modules/lithium.pyimage/image/fluxcalibration/core.py new file mode 100644 index 00000000..3ccf2293 --- /dev/null +++ b/modules/lithium.pyimage/image/fluxcalibration/core.py @@ -0,0 +1,30 @@ +from dataclasses import dataclass, field +from typing import Any +import logging + + +@dataclass +class CalibrationParams: + wavelength: float # Effective filter wavelength in nm + transmissivity: float # Filter transmissivity in the range (0,1) + filter_width: float # Filter bandwidth in nm + aperture: float # Telescope aperture diameter in mm + obstruction: float # Telescope central obstruction diameter in mm + exposure_time: float # Exposure time in seconds + extinction: float # Atmospheric extinction in the range [0,1) + gain: float # Sensor gain in e-/ADU + quantum_efficiency: float # Sensor quantum efficiency in the range (0,1) + + def __post_init__(self): + """ + Validate calibration parameters after initialization. + """ + if not (0 < self.transmissivity < 1): + raise ValueError("Transmissivity must be between 0 and 1.") + if not (0 <= self.extinction < 1): + raise ValueError("Extinction must be in the range [0, 1).") + if not (0 < self.quantum_efficiency < 1): + raise ValueError("Quantum efficiency must be between 0 and 1.") + if self.obstruction >= self.aperture: + raise ValueError( + "Obstruction diameter must be smaller than aperture diameter.") diff --git a/modules/lithium.pyimage/image/fluxcalibration/utils.py b/modules/lithium.pyimage/image/fluxcalibration/utils.py new file mode 100644 index 00000000..a8d58837 --- /dev/null +++ b/modules/lithium.pyimage/image/fluxcalibration/utils.py @@ -0,0 +1,77 @@ +import numpy as np +from astropy.stats import sigma_clipped_stats +from loguru import logger +from astropy.io import fits +from .core import CalibrationParams + + +def instrument_response_correction(image: np.ndarray, response_function: np.ndarray) -> np.ndarray: + """ + Apply instrument response correction to the image. + + :param image: Input image (numpy array). + :param response_function: Instrument response function (numpy array of the same shape as the image). + :return: Corrected image. + """ + logger.debug("Applying instrument response correction.") + try: + if image.shape != response_function.shape: + logger.error("Image and response function shapes do not match.") + raise ValueError( + "Image and response function must have the same shape.") + corrected_image = image / response_function + logger.info("Instrument response correction applied successfully.") + return corrected_image + except Exception as e: + logger.error(f"Instrument response correction failed: {e}") + raise RuntimeError("Instrument response correction failed.") + + +def background_noise_correction(image: np.ndarray, sigma: float = 3.0) -> np.ndarray: + """ + Estimate and subtract the background noise from the image. + + :param image: Input image (numpy array). + :param sigma: Sigma level for sigma-clipping. Default is 3.0. + :return: Image with background noise subtracted. + """ + logger.debug(f"Applying background noise correction with sigma={sigma}.") + try: + mean, median, std = sigma_clipped_stats(image, sigma=sigma) + corrected_image = image - median + logger.info( + f"Background noise correction applied successfully. Median: {median}, Std: {std}") + return corrected_image + except Exception as e: + logger.error(f"Background noise correction failed: {e}") + raise RuntimeError("Background noise correction failed.") + + +def read_fits_header(file_path: str) -> CalibrationParams: + """ + Reads the FITS header and returns the necessary calibration parameters. + + :param file_path: Path to the FITS file. + :return: CalibrationParams object containing calibration parameters. + """ + logger.debug(f"Reading FITS header from file: {file_path}") + try: + with fits.open(file_path) as hdul: + header = hdul[0].header + params = CalibrationParams( + wavelength=header.get('WAVELEN', 550), # nm + transmissivity=header.get('TRANSMIS', 0.8), + filter_width=header.get('FILTWDTH', 100), # nm + aperture=header.get('APERTURE', 200), # mm + obstruction=header.get('OBSTRUCT', 50), # mm + exposure_time=header.get('EXPTIME', 60), # seconds + extinction=header.get('EXTINCT', 0.1), + gain=header.get('GAIN', 1.5), # e-/ADU + quantum_efficiency=header.get('QUANTEFF', 0.9), + ) + logger.info( + "Calibration parameters extracted successfully from FITS header.") + return params + except Exception as e: + logger.error(f"Failed to read FITS header: {e}") + raise IOError("Reading FITS header failed.") diff --git a/pysrc/image/image_io/__init__.py b/modules/lithium.pyimage/image/raw/__init__.py similarity index 100% rename from pysrc/image/image_io/__init__.py rename to modules/lithium.pyimage/image/raw/__init__.py diff --git a/modules/lithium.pyimage/image/raw/raw.py b/modules/lithium.pyimage/image/raw/raw.py new file mode 100644 index 00000000..9d6360c0 --- /dev/null +++ b/modules/lithium.pyimage/image/raw/raw.py @@ -0,0 +1,541 @@ +from pathlib import Path +from typing import Optional, Tuple +from dataclasses import dataclass, field +from loguru import logger +from enum import Enum +import rawpy +import cv2 +import numpy as np +import argparse +import sys +import concurrent.futures + + +# Configure Loguru logger with file rotation and different log levels +logger.remove() # Remove the default logger +logger.add(sys.stderr, level="INFO", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}") +logger.add("raw_processor.log", rotation="10 MB", retention="10 days", + level="DEBUG", format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}") + + +class ImageFormat(Enum): + PNG = "png" + JPEG = "jpg" + TIFF = "tiff" + BMP = "bmp" + + @staticmethod + def list(): + return list(map(lambda c: c.value, ImageFormat)) + + +@dataclass +class RawImageProcessor: + raw_path: Path + raw: rawpy.RawPy = field(init=False) + rgb_image: np.ndarray = field(init=False) + bgr_image: np.ndarray = field(init=False) + + def __post_init__(self): + """ + Initialize and read the RAW image. + """ + logger.debug( + f"Initializing RawImageProcessor with RAW file: {self.raw_path}") + self._load_raw_image() + self._postprocess_raw() + + def _load_raw_image(self) -> None: + """ + Load the RAW image from the given path. + """ + try: + self.raw = rawpy.imread(str(self.raw_path)) + logger.info(f"Successfully read RAW image: {self.raw_path}") + except Exception as e: + logger.error(f"Failed to read RAW image at {self.raw_path}: {e}") + raise IOError(f"Cannot read RAW image: {self.raw_path}") from e + + def _postprocess_raw(self) -> None: + """ + Post-process the RAW image to obtain an RGB image. + """ + try: + self.rgb_image = self.raw.postprocess( + gamma=(1.0, 1.0), + no_auto_bright=True, + use_camera_wb=True, + output_bps=16 # Use higher bit depth for better quality + ) + logger.debug("Successfully post-processed RAW image to RGB.") + except Exception as e: + logger.error(f"Failed to post-process RAW image: {e}") + raise ValueError("RAW image post-processing failed") from e + + try: + self.bgr_image = cv2.cvtColor(self.rgb_image, cv2.COLOR_RGB2BGR) + logger.debug("Converted RGB image to BGR format for OpenCV.") + except Exception as e: + logger.error(f"Failed to convert RGB to BGR: {e}") + raise RuntimeError("Image format conversion failed") from e + + def adjust_contrast(self, alpha: float = 1.0) -> None: + """ + Adjust the contrast of the image. + + :param alpha: Contrast control (1.0-3.0). Default is 1.0. + """ + logger.debug(f"Adjusting contrast with alpha={alpha}") + try: + self.bgr_image = cv2.convertScaleAbs(self.bgr_image, alpha=alpha) + logger.info(f"Contrast adjusted successfully with alpha={alpha}") + except Exception as e: + logger.error(f"Failed to adjust contrast: {e}") + raise RuntimeError("Contrast adjustment failed") from e + + def adjust_brightness(self, beta: int = 0) -> None: + """ + Adjust the brightness of the image. + + :param beta: Brightness control (0-100). Default is 0. + """ + logger.debug(f"Adjusting brightness with beta={beta}") + try: + self.bgr_image = cv2.convertScaleAbs(self.bgr_image, beta=beta) + logger.info(f"Brightness adjusted successfully with beta={beta}") + except Exception as e: + logger.error(f"Failed to adjust brightness: {e}") + raise RuntimeError("Brightness adjustment failed") from e + + def apply_sharpening(self) -> None: + """ + Apply sharpening to the image. + """ + logger.debug("Applying sharpening filter.") + try: + kernel = np.array([[0, -1, 0], + [-1, 5, -1], + [0, -1, 0]]) + self.bgr_image = cv2.filter2D(self.bgr_image, -1, kernel) + logger.info("Sharpening applied successfully.") + except Exception as e: + logger.error(f"Failed to apply sharpening: {e}") + raise RuntimeError("Sharpening application failed") from e + + def apply_gamma_correction(self, gamma: float = 1.0) -> None: + """ + Apply gamma correction to the image. + + :param gamma: Gamma value (0.1-3.0). Default is 1.0. + """ + logger.debug(f"Applying gamma correction with gamma={gamma}") + try: + inv_gamma = 1.0 / gamma + table = np.array([(i / 255.0) ** inv_gamma * + 255 for i in np.arange(256)]).astype("uint8") + self.bgr_image = cv2.LUT(self.bgr_image, table) + logger.info( + f"Gamma correction applied successfully with gamma={gamma}") + except Exception as e: + logger.error(f"Failed to apply gamma correction: {e}") + raise RuntimeError("Gamma correction application failed") from e + + def rotate_image(self, angle: float, center: Optional[Tuple[int, int]] = None, scale: float = 1.0) -> None: + """ + Rotate the image. + + :param angle: Angle to rotate the image. + :param center: Center of rotation. If None, the center of the image is used. + :param scale: Scale factor. Default is 1.0. + """ + logger.debug(f"Rotating image by {angle} degrees with scale={scale}") + try: + (h, w) = self.bgr_image.shape[:2] + if center is None: + center = (w // 2, h // 2) + M = cv2.getRotationMatrix2D(center, angle, scale) + self.bgr_image = cv2.warpAffine(self.bgr_image, M, (w, h)) + logger.info(f"Image rotated successfully by {angle} degrees.") + except Exception as e: + logger.error(f"Failed to rotate image: {e}") + raise RuntimeError("Image rotation failed") from e + + def resize_image(self, width: Optional[int] = None, height: Optional[int] = None, inter: int = cv2.INTER_LINEAR) -> None: + """ + Resize the image. + + :param width: New width of the image. If None, the width is scaled proportionally. + :param height: New height of the image. If None, the height is scaled proportionally. + :param inter: Interpolation method. Default is cv2.INTER_LINEAR. + """ + logger.debug(f"Resizing image with width={width}, height={height}") + try: + (h, w) = self.bgr_image.shape[:2] + if width is None and height is None: + logger.warning( + "No resizing performed as both width and height are None.") + return + if width is None: + ratio = height / float(h) + dim = (int(w * ratio), height) + elif height is None: + ratio = width / float(w) + dim = (width, int(h * ratio)) + else: + dim = (width, height) + self.bgr_image = cv2.resize( + self.bgr_image, dim, interpolation=inter) + logger.info(f"Image resized successfully to dimensions: {dim}") + except Exception as e: + logger.error(f"Failed to resize image: {e}") + raise RuntimeError("Image resize failed") from e + + def adjust_color_balance(self, red: float = 1.0, green: float = 1.0, blue: float = 1.0) -> None: + """ + Adjust the color balance of the image. + + :param red: Red channel multiplier. Default is 1.0. + :param green: Green channel multiplier. Default is 1.0. + :param blue: Blue channel multiplier. Default is 1.0. + """ + logger.debug( + f"Adjusting color balance with R={red}, G={green}, B={blue}") + try: + b, g, r = cv2.split(self.bgr_image) + r = cv2.convertScaleAbs(r, alpha=red) + g = cv2.convertScaleAbs(g, alpha=green) + b = cv2.convertScaleAbs(b, alpha=blue) + self.bgr_image = cv2.merge([b, g, r]) + logger.info( + f"Color balance adjusted successfully with R={red}, G={green}, B={blue}") + except Exception as e: + logger.error(f"Failed to adjust color balance: {e}") + raise RuntimeError("Color balance adjustment failed") from e + + def apply_blur(self, ksize: Tuple[int, int] = (5, 5), method: str = "gaussian") -> None: + """ + Apply blur to the image. + + :param ksize: Kernel size for the blur. Default is (5, 5). + :param method: Blurring method ('gaussian', 'median', 'bilateral'). Default is 'gaussian'. + """ + logger.debug(f"Applying {method} blur with kernel size={ksize}") + try: + if method.lower() == "gaussian": + self.bgr_image = cv2.GaussianBlur(self.bgr_image, ksize, 0) + elif method.lower() == "median": + self.bgr_image = cv2.medianBlur(self.bgr_image, ksize[0]) + elif method.lower() == "bilateral": + self.bgr_image = cv2.bilateralFilter( + self.bgr_image, d=9, sigmaColor=75, sigmaSpace=75) + else: + logger.error(f"Unsupported blur method: {method}") + raise ValueError(f"Unsupported blur method: {method}") + logger.info( + f"{method.capitalize()} blur applied successfully with kernel size={ksize}") + except Exception as e: + logger.error(f"Failed to apply {method} blur: {e}") + raise RuntimeError( + f"{method.capitalize()} blur application failed") from e + + def histogram_equalization(self) -> None: + """ + Apply histogram equalization to the image. + Enhances the contrast of the image using histogram equalization. + """ + logger.debug("Applying histogram equalization.") + try: + if len(self.bgr_image.shape) == 2: + self.bgr_image = cv2.equalizeHist(self.bgr_image) + logger.debug( + "Applied histogram equalization on grayscale image.") + else: + ycrcb = cv2.cvtColor(self.bgr_image, cv2.COLOR_BGR2YCrCb) + ycrcb[:, :, 0] = cv2.equalizeHist(ycrcb[:, :, 0]) + self.bgr_image = cv2.cvtColor(ycrcb, cv2.COLOR_YCrCb2BGR) + logger.debug( + "Applied histogram equalization on Y channel of color image.") + logger.info("Histogram equalization applied successfully.") + except Exception as e: + logger.error(f"Failed to apply histogram equalization: {e}") + raise RuntimeError("Histogram equalization failed") from e + + def convert_to_grayscale(self) -> None: + """ + Convert the image to grayscale. + """ + logger.debug("Converting image to grayscale.") + try: + self.bgr_image = cv2.cvtColor(self.bgr_image, cv2.COLOR_BGR2GRAY) + logger.info("Image converted to grayscale successfully.") + except Exception as e: + logger.error(f"Failed to convert image to grayscale: {e}") + raise RuntimeError("Grayscale conversion failed") from e + + def get_bgr_image(self) -> np.ndarray: + """ + Return the processed BGR image. + + :return: Processed BGR image as a NumPy array. + """ + logger.debug("Retrieving processed BGR image.") + return self.bgr_image + + def to_rgb_image(self) -> np.ndarray: + """ + Return the processed RGB image. + + :return: Processed RGB image as a NumPy array. + """ + logger.debug("Converting BGR image to RGB format.") + try: + rgb_image = cv2.cvtColor(self.bgr_image, cv2.COLOR_BGR2RGB) + logger.info("Successfully converted BGR image to RGB format.") + return rgb_image + except Exception as e: + logger.error(f"Failed to convert BGR to RGB: {e}") + raise RuntimeError("RGB conversion failed") from e + + def save_image(self, output_path: Path, file_format: ImageFormat = ImageFormat.PNG, jpeg_quality: int = 90) -> None: + """ + Save the image to the specified path. + + :param output_path: Path to save the image. + :param file_format: Format to save the image. Default is PNG. + :param jpeg_quality: Quality for JPEG format (0-100). Default is 90. + """ + logger.debug( + f"Saving image to {output_path} with format={file_format.value} and JPEG quality={jpeg_quality}") + try: + if file_format in [ImageFormat.JPEG, ImageFormat.PNG, ImageFormat.TIFF, ImageFormat.BMP]: + if file_format == ImageFormat.JPEG: + cv2.imwrite(str(output_path), self.bgr_image, [ + cv2.IMWRITE_JPEG_QUALITY, jpeg_quality]) + logger.info( + f"Image saved successfully as JPEG: {output_path} with quality={jpeg_quality}") + else: + cv2.imwrite(str(output_path), self.bgr_image) + logger.info( + f"Image saved successfully as {file_format.value.upper()}: {output_path}") + else: + logger.error(f"Unsupported file format: {file_format}") + raise ValueError(f"Unsupported file format: {file_format}") + except Exception as e: + logger.error(f"Failed to save image: {e}") + raise IOError("Image save failed") from e + + def show_image(self, window_name: str = "Image", delay: int = 0) -> None: + """ + Display the processed image. + + :param window_name: Name of the window in which to display the image. Default is "Image". + :param delay: Delay in milliseconds. 0 means wait indefinitely. Default is 0. + """ + logger.debug( + f"Displaying image in window: {window_name} with delay={delay}") + try: + cv2.imshow(window_name, self.bgr_image) + logger.info("Image display window opened.") + cv2.waitKey(delay) + cv2.destroyAllWindows() + logger.debug("Image display window closed.") + except Exception as e: + logger.error(f"Failed to display image: {e}") + raise RuntimeError("Image display failed") from e + + def reset(self) -> None: + """ + Reset the image to its original state after post-processing. + """ + logger.debug("Resetting image to original post-processed state.") + try: + self.bgr_image = cv2.cvtColor(self.rgb_image, cv2.COLOR_RGB2BGR) + logger.info("Image reset successfully.") + except Exception as e: + logger.error(f"Failed to reset image: {e}") + raise RuntimeError("Image reset failed") from e + + def to_raw_image(self) -> rawpy.RawPy: + """ + Return the original RAW image. + + :return: Original RAW image as a rawpy.RawPy object. + """ + logger.debug("Retrieving original RAW image.") + return self.raw + + +def parse_cli_arguments() -> argparse.Namespace: + """ + Parse command-line arguments for the RAW image processor. + + :return: Parsed arguments. + """ + parser = argparse.ArgumentParser(description="RAW Image Processor") + subparsers = parser.add_subparsers( + dest='command', required=True, help='Available commands') + + # Subparser for processing a single image + process_parser = subparsers.add_parser( + 'process', help='Process a single RAW image.') + process_parser.add_argument( + '--input', type=Path, required=True, help='Path to the input RAW image.') + process_parser.add_argument( + '--output', type=Path, required=True, help='Path to save the processed image.') + process_parser.add_argument('--format', type=ImageFormat, default=ImageFormat.PNG, + choices=ImageFormat, help='Output image format.') + process_parser.add_argument( + '--jpeg_quality', type=int, default=90, help='JPEG quality (if applicable).') + process_parser.add_argument('--actions', nargs='+', default=[], choices=[ + 'adjust_contrast', 'adjust_brightness', 'apply_sharpening', 'apply_gamma_correction', + 'rotate_image', 'resize_image', 'adjust_color_balance', 'apply_blur', + 'histogram_equalization', 'convert_to_grayscale' + ], help='Image processing actions to perform.') + + # Subparser for batch processing + batch_parser = subparsers.add_parser( + 'batch', help='Batch process RAW images in a directory.') + batch_parser.add_argument( + '--input_dir', type=Path, required=True, help='Directory containing RAW images.') + batch_parser.add_argument( + '--output_dir', type=Path, required=True, help='Directory to save processed images.') + batch_parser.add_argument('--format', type=ImageFormat, default=ImageFormat.PNG, + choices=ImageFormat, help='Output image format.') + batch_parser.add_argument( + '--jpeg_quality', type=int, default=90, help='JPEG quality (if applicable).') + batch_parser.add_argument('--actions', nargs='+', default=[], choices=[ + 'adjust_contrast', 'adjust_brightness', 'apply_sharpening', 'apply_gamma_correction', + 'rotate_image', 'resize_image', 'adjust_color_balance', 'apply_blur', + 'histogram_equalization', 'convert_to_grayscale' + ], help='Image processing actions to perform.') + + return parser.parse_args() + + +def process_single_image(args: argparse.Namespace) -> None: + """ + Process a single RAW image based on the provided arguments. + + :param args: Parsed command-line arguments. + """ + processor = RawImageProcessor(raw_path=args.input) + + # Execute actions in the order provided + for action in args.actions: + if action == 'adjust_contrast': + processor.adjust_contrast(alpha=1.2) + elif action == 'adjust_brightness': + processor.adjust_brightness(beta=30) + elif action == 'apply_sharpening': + processor.apply_sharpening() + elif action == 'apply_gamma_correction': + processor.apply_gamma_correction(gamma=1.3) + elif action == 'rotate_image': + processor.rotate_image(angle=30) + elif action == 'resize_image': + processor.resize_image(width=1024) + elif action == 'adjust_color_balance': + processor.adjust_color_balance(red=1.1, green=1.0, blue=0.9) + elif action == 'apply_blur': + processor.apply_blur(ksize=(5, 5), method="gaussian") + elif action == 'histogram_equalization': + processor.histogram_equalization() + elif action == 'convert_to_grayscale': + processor.convert_to_grayscale() + else: + logger.warning(f"Unknown action: {action}") + + # Save the processed image + processor.save_image(output_path=args.output, + file_format=args.format, jpeg_quality=args.jpeg_quality) + logger.info(f"Processed image saved to {args.output}") + + +def batch_process_images(args: argparse.Namespace) -> None: + """ + Batch process RAW images in the specified directory. + + :param args: Parsed command-line arguments. + """ + logger.info( + f"Starting batch processing from {args.input_dir} to {args.output_dir}") + if not args.input_dir.exists() or not args.input_dir.is_dir(): + logger.error( + f"Input directory does not exist or is not a directory: {args.input_dir}") + raise NotADirectoryError( + f"Input directory does not exist or is not a directory: {args.input_dir}") + + args.output_dir.mkdir(parents=True, exist_ok=True) + raw_files = list(args.input_dir.glob( + '*.raw')) + list(args.input_dir.glob('*.CR2')) + list(args.input_dir.glob('*.NEF')) + + if not raw_files: + logger.warning(f"No RAW images found in directory: {args.input_dir}") + return + + def process_image(file_path: Path): + """ + Process a single image file. + """ + try: + output_file = args.output_dir / \ + f"{file_path.stem}.{args.format.value}" + processor = RawImageProcessor(raw_path=file_path) + + # Execute actions in the order provided + for action in args.actions: + if action == 'adjust_contrast': + processor.adjust_contrast(alpha=1.2) + elif action == 'adjust_brightness': + processor.adjust_brightness(beta=30) + elif action == 'apply_sharpening': + processor.apply_sharpening() + elif action == 'apply_gamma_correction': + processor.apply_gamma_correction(gamma=1.3) + elif action == 'rotate_image': + processor.rotate_image(angle=30) + elif action == 'resize_image': + processor.resize_image(width=1024) + elif action == 'adjust_color_balance': + processor.adjust_color_balance( + red=1.1, green=1.0, blue=0.9) + elif action == 'apply_blur': + processor.apply_blur(ksize=(5, 5), method="gaussian") + elif action == 'histogram_equalization': + processor.histogram_equalization() + elif action == 'convert_to_grayscale': + processor.convert_to_grayscale() + else: + logger.warning(f"Unknown action: {action}") + + # Save the processed image + processor.save_image( + output_path=output_file, file_format=args.format, jpeg_quality=args.jpeg_quality) + logger.info(f"Processed image saved to {output_file}") + except Exception as e: + logger.error(f"Failed to process image {file_path}: {e}") + + with concurrent.futures.ThreadPoolExecutor() as executor: + executor.map(process_image, raw_files) + + logger.info("Batch processing completed successfully.") + + +def main(): + """ + Main function to parse arguments and execute appropriate functions. + """ + args = parse_cli_arguments() + + if args.command == 'process': + process_single_image(args) + elif args.command == 'batch': + batch_process_images(args) + else: + logger.error(f"Unknown command: {args.command}") + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/pysrc/image/raw/__init__.py b/modules/lithium.pyimage/image/resample/__init__.py similarity index 100% rename from pysrc/image/raw/__init__.py rename to modules/lithium.pyimage/image/resample/__init__.py diff --git a/modules/lithium.pyimage/image/resample/resample.py b/modules/lithium.pyimage/image/resample/resample.py new file mode 100644 index 00000000..e931e044 --- /dev/null +++ b/modules/lithium.pyimage/image/resample/resample.py @@ -0,0 +1,460 @@ +import concurrent.futures +from pathlib import Path +from typing import Optional, Tuple, Literal, List +from enum import Enum +import cv2 +from loguru import logger +from PIL import Image, ImageDraw, ImageFont +import numpy as np +import argparse +import sys + + +# Configure Loguru logger with file rotation and different log levels +logger.remove() # Remove the default logger +logger.add(sys.stderr, level="INFO", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}") +logger.add("resample_processor.log", rotation="10 MB", retention="10 days", + level="DEBUG", format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}") + + +class ImageFormat(Enum): + PNG = "png" + JPEG = "jpg" + TIFF = "tiff" + BMP = "bmp" + + @staticmethod + def list(): + return list(map(lambda c: c.value, ImageFormat)) + + +@dataclass +class Resampler: + input_image_path: Path + output_image_path: Path + width: Optional[int] = None + height: Optional[int] = None + scale: Optional[float] = None + resolution: Optional[Tuple[int, int]] = None + interpolation: Literal[cv2.INTER_LINEAR, + cv2.INTER_CUBIC, cv2.INTER_NEAREST] = cv2.INTER_LINEAR + preserve_aspect_ratio: bool = True + crop_area: Optional[Tuple[int, int, int, int]] = None + edge_detection: bool = False + color_space: Literal['BGR', 'GRAY', 'HSV', 'RGB'] = 'BGR' + brightness: float = 1.0 + contrast: float = 1.0 + sharpen: bool = False + rotate_angle: float = 0.0 + blur: Optional[Tuple[int, int]] = None + blur_method: Literal['gaussian', 'median', 'bilateral'] = 'gaussian' + histogram_equalization: bool = False + grayscale: bool = False + output_format: ImageFormat = ImageFormat.JPEG + jpeg_quality: int = 90 + + def process(self) -> None: + """ + Process the image with the specified parameters. + """ + logger.info(f"Processing image: {self.input_image_path}") + img = cv2.imread(str(self.input_image_path)) + if img is None: + logger.error(f"Cannot load image from {self.input_image_path}") + raise ValueError(f"Cannot load image from {self.input_image_path}") + + original_height, original_width = img.shape[:2] + logger.debug( + f"Original dimensions: width={original_width}, height={original_height}") + + # Crop if needed + if self.crop_area: + x, y, w, h = self.crop_area + logger.debug(f"Cropping image: x={x}, y={y}, w={w}, h={h}") + img = img[y:y+h, x:x+w] + + # Edge detection + if self.edge_detection: + logger.debug("Applying edge detection.") + img = cv2.Canny(img, 100, 200) + + # Convert color space if needed + img = self.change_color_space(img, self.color_space) + + # Adjust brightness and contrast + if self.brightness != 1.0 or self.contrast != 1.0: + logger.debug( + f"Adjusting brightness by {self.brightness} and contrast by {self.contrast}") + img = self.adjust_brightness_contrast( + img, self.brightness, self.contrast) + + # Apply sharpening + if self.sharpen: + logger.debug("Applying sharpening.") + img = self.apply_sharpening(img) + + # Apply blur if specified + if self.blur: + logger.debug( + f"Applying {self.blur_method} blur with kernel size={self.blur}") + img = self.apply_blur(img, self.blur, self.blur_method) + + # Histogram equalization + if self.histogram_equalization: + logger.debug("Applying histogram equalization.") + img = self.histogram_equalization_func(img) + + # Convert to grayscale if needed + if self.grayscale: + logger.debug("Converting image to grayscale.") + img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) + + # Calculate new dimensions + new_width, new_height = self.calculate_new_dimensions( + original_width, original_height, img) + logger.debug( + f"Resizing image to width={new_width}, height={new_height} with interpolation={self.interpolation}") + + # Perform resizing + resized_img = cv2.resize( + img, (new_width, new_height), interpolation=self.interpolation) + + # Rotate image if needed + if self.rotate_angle != 0.0: + logger.debug(f"Rotating image by {self.rotate_angle} degrees.") + resized_img = self.rotate_image(resized_img, self.rotate_angle) + + # Convert back to BGR if color_space was changed to RGB for saving with OpenCV + if self.color_space == 'RGB' and len(resized_img.shape) == 3: + logger.debug("Converting image from RGB back to BGR for saving.") + resized_img = cv2.cvtColor(resized_img, cv2.COLOR_RGB2BGR) + elif self.color_space == 'HSV' and len(resized_img.shape) == 3: + logger.debug("Converting image from HSV back to BGR for saving.") + resized_img = cv2.cvtColor(resized_img, cv2.COLOR_HSV2BGR) + + # Save the image with specified resolution if provided + if self.resolution: + logger.debug( + f"Saving image with resolution: {self.resolution} DPI") + pil_img = Image.fromarray( + cv2.cvtColor(resized_img, cv2.COLOR_BGR2RGB) if len(resized_img.shape) == 3 else resized_img) + pil_img.save(str(self.output_image_path), dpi=self.resolution, + format=self.output_format.name.upper()) + else: + logger.debug( + f"Saving image without changing resolution to format: {self.output_format.value}") + if self.output_format == ImageFormat.JPEG: + cv2.imwrite(str(self.output_image_path), resized_img, [ + cv2.IMWRITE_JPEG_QUALITY, self.jpeg_quality]) + else: + cv2.imwrite(str(self.output_image_path), resized_img) + + logger.info(f"Image saved successfully to: {self.output_image_path}") + + @staticmethod + def change_color_space(img: np.ndarray, color_space: str) -> np.ndarray: + """ + Change the color space of the image. + + :param img: Input image in BGR format. + :param color_space: Target color space. + :return: Image in the target color space. + """ + if color_space == 'GRAY': + return cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) + elif color_space == 'HSV': + return cv2.cvtColor(img, cv2.COLOR_BGR2HSV) + elif color_space == 'RGB': + return cv2.cvtColor(img, cv2.COLOR_BGR2RGB) + return img + + @staticmethod + def adjust_brightness_contrast(img: np.ndarray, brightness: float, contrast: float) -> np.ndarray: + """ + Adjust the brightness and contrast of the image. + + :param img: Input image. + :param brightness: Brightness factor. + :param contrast: Contrast factor. + :return: Adjusted image. + """ + return cv2.convertScaleAbs(img, alpha=contrast, beta=brightness * 50) + + @staticmethod + def apply_sharpening(img: np.ndarray) -> np.ndarray: + """ + Apply sharpening to the image. + + :param img: Input image. + :return: Sharpened image. + """ + kernel = np.array([[0, -1, 0], + [-1, 5, -1], + [0, -1, 0]]) + return cv2.filter2D(img, -1, kernel) + + @staticmethod + def apply_blur(img: np.ndarray, ksize: Tuple[int, int], method: str) -> np.ndarray: + """ + Apply blur to the image. + + :param img: Input image. + :param ksize: Kernel size for the blur. + :param method: Blurring method ('gaussian', 'median', 'bilateral'). + :return: Blurred image. + """ + if method.lower() == "gaussian": + return cv2.GaussianBlur(img, ksize, 0) + elif method.lower() == "median": + return cv2.medianBlur(img, ksize[0]) + elif method.lower() == "bilateral": + return cv2.bilateralFilter(img, d=9, sigmaColor=75, sigmaSpace=75) + else: + logger.error(f"Unsupported blur method: {method}") + raise ValueError(f"Unsupported blur method: {method}") + + @staticmethod + def histogram_equalization_func(img: np.ndarray) -> np.ndarray: + """ + Apply histogram equalization to the image. + + :param img: Input image. + :return: Image after histogram equalization. + """ + if len(img.shape) == 2: + return cv2.equalizeHist(img) + else: + ycrcb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb) + ycrcb[:, :, 0] = cv2.equalizeHist(ycrcb[:, :, 0]) + return cv2.cvtColor(ycrcb, cv2.COLOR_YCrCb2BGR) + + @staticmethod + def rotate_image(img: np.ndarray, angle: float) -> np.ndarray: + """ + Rotate the image by the given angle. + + :param img: Input image. + :param angle: Angle to rotate the image. + :return: Rotated image. + """ + (h, w) = img.shape[:2] + center = (w // 2, h // 2) + M = cv2.getRotationMatrix2D(center, angle, 1.0) + return cv2.warpAffine(img, M, (w, h)) + + +def parse_arguments() -> argparse.Namespace: + """ + Parse command-line arguments for the resample script. + + :return: Parsed arguments. + """ + parser = argparse.ArgumentParser( + description="Image Resampling and Processing Tool") + subparsers = parser.add_subparsers( + dest='command', required=True, help='Available commands') + + # Subparser for single image processing + process_parser = subparsers.add_parser( + 'process', help='Process a single image.') + process_parser.add_argument( + '--input', type=Path, required=True, help='Path to the input image.') + process_parser.add_argument( + '--output', type=Path, required=True, help='Path to save the processed image.') + process_parser.add_argument( + '--width', type=int, help='Desired width in pixels.') + process_parser.add_argument( + '--height', type=int, help='Desired height in pixels.') + process_parser.add_argument( + '--scale', type=float, help='Scale factor for resizing (e.g., 0.5 for half size).') + process_parser.add_argument('--resolution', type=int, nargs=2, metavar=('X_RES', 'Y_RES'), + help='Output resolution in DPI (e.g., 300 300).') + process_parser.add_argument('--interpolation', type=str, choices=['linear', 'cubic', 'nearest'], + default='linear', help='Interpolation method.') + process_parser.add_argument('--preserve_aspect_ratio', action='store_true', + help='Preserve aspect ratio when resizing.') + process_parser.add_argument('--crop_area', type=int, nargs=4, metavar=('X', 'Y', 'W', 'H'), + help='Crop area as four integers: x y width height.') + process_parser.add_argument('--edge_detection', action='store_true', + help='Apply edge detection before resizing.') + process_parser.add_argument('--color_space', type=str, choices=['BGR', 'GRAY', 'HSV', 'RGB'], + default='BGR', help='Color space to convert the image to.') + process_parser.add_argument('--brightness', type=float, default=1.0, + help='Brightness adjustment factor (1.0 = no change).') + process_parser.add_argument('--contrast', type=float, default=1.0, + help='Contrast adjustment factor (1.0 = no change).') + process_parser.add_argument('--sharpen', action='store_true', + help='Apply sharpening to the image.') + process_parser.add_argument('--rotate_angle', type=float, default=0.0, + help='Angle to rotate the image in degrees.') + process_parser.add_argument('--blur', type=int, nargs=2, metavar=('WIDTH', 'HEIGHT'), + help='Kernel size for blurring.') + process_parser.add_argument('--blur_method', type=str, choices=['gaussian', 'median', 'bilateral'], + default='gaussian', help='Method to use for blurring.') + process_parser.add_argument('--histogram_equalization', action='store_true', + help='Apply histogram equalization to enhance contrast.') + process_parser.add_argument('--grayscale', action='store_true', + help='Convert image to grayscale.') + process_parser.add_argument('--output_format', type=str, choices=ImageFormat.list(), + default='jpg', help='Output image format.') + process_parser.add_argument('--jpeg_quality', type=int, default=90, + help='JPEG quality (only applicable if output format is JPEG).') + + # Subparser for batch processing + batch_parser = subparsers.add_parser( + 'batch', help='Batch process multiple images.') + batch_parser.add_argument( + '--input_dir', type=Path, required=True, help='Directory containing input images.') + batch_parser.add_argument( + '--output_dir', type=Path, required=True, help='Directory to save processed images.') + batch_parser.add_argument( + '--width', type=int, help='Desired width in pixels.') + batch_parser.add_argument('--height', type=int, + help='Desired height in pixels.') + batch_parser.add_argument( + '--scale', type=float, help='Scale factor for resizing (e.g., 0.5 for half size).') + batch_parser.add_argument('--resolution', type=int, nargs=2, metavar=('X_RES', 'Y_RES'), + help='Output resolution in DPI (e.g., 300 300).') + batch_parser.add_argument('--interpolation', type=str, choices=['linear', 'cubic', 'nearest'], + default='linear', help='Interpolation method.') + batch_parser.add_argument('--preserve_aspect_ratio', action='store_true', + help='Preserve aspect ratio when resizing.') + batch_parser.add_argument('--crop_area', type=int, nargs=4, metavar=('X', 'Y', 'W', 'H'), + help='Crop area as four integers: x y width height.') + batch_parser.add_argument('--edge_detection', action='store_true', + help='Apply edge detection before resizing.') + batch_parser.add_argument('--color_space', type=str, choices=['BGR', 'GRAY', 'HSV', 'RGB'], + default='BGR', help='Color space to convert the image to.') + batch_parser.add_argument('--brightness', type=float, default=1.0, + help='Brightness adjustment factor (1.0 = no change).') + batch_parser.add_argument('--contrast', type=float, default=1.0, + help='Contrast adjustment factor (1.0 = no change).') + batch_parser.add_argument('--sharpen', action='store_true', + help='Apply sharpening to the images.') + batch_parser.add_argument('--rotate_angle', type=float, default=0.0, + help='Angle to rotate the images in degrees.') + batch_parser.add_argument('--blur', type=int, nargs=2, metavar=('WIDTH', 'HEIGHT'), + help='Kernel size for blurring.') + batch_parser.add_argument('--blur_method', type=str, choices=['gaussian', 'median', 'bilateral'], + default='gaussian', help='Method to use for blurring.') + batch_parser.add_argument('--histogram_equalization', action='store_true', + help='Apply histogram equalization to enhance contrast.') + batch_parser.add_argument('--grayscale', action='store_true', + help='Convert images to grayscale.') + batch_parser.add_argument('--output_format', type=str, choices=ImageFormat.list(), + default='jpg', help='Output image format.') + batch_parser.add_argument('--jpeg_quality', type=int, default=90, + help='JPEG quality (only applicable if output format is JPEG).') + + return parser.parse_args() + + +def process_image(resampler: Resampler) -> None: + """ + Wrapper function to process an image using the Resampler class. + + :param resampler: Resampler instance with all parameters set. + """ + try: + resampler.process() + except Exception as e: + logger.error( + f"Error processing image {resampler.input_image_path}: {e}") + + +def main(): + """ + Main function to parse arguments and execute processing. + """ + args = parse_arguments() + + if args.command == 'process': + resampler = Resampler( + input_image_path=args.input, + output_image_path=args.output, + width=args.width, + height=args.height, + scale=args.scale, + resolution=tuple(args.resolution) if args.resolution else None, + interpolation={ + 'linear': cv2.INTER_LINEAR, + 'cubic': cv2.INTER_CUBIC, + 'nearest': cv2.INTER_NEAREST + }[args.interpolation], + preserve_aspect_ratio=args.preserve_aspect_ratio, + crop_area=tuple(args.crop_area) if args.crop_area else None, + edge_detection=args.edge_detection, + color_space=args.color_space, + brightness=args.brightness, + contrast=args.contrast, + sharpen=args.sharpen, + rotate_angle=args.rotate_angle, + blur=tuple(args.blur) if args.blur else None, + blur_method=args.blur_method, + histogram_equalization=args.histogram_equalization, + grayscale=args.grayscale, + output_format=ImageFormat(args.output_format), + jpeg_quality=args.jpeg_quality + ) + process_image(resampler) + + elif args.command == 'batch': + input_dir = args.input_dir + output_dir = args.output_dir + + if not input_dir.exists() or not input_dir.is_dir(): + logger.error( + f"Input directory does not exist or is not a directory: {input_dir}") + sys.exit(1) + + output_dir.mkdir(parents=True, exist_ok=True) + # You might want to filter specific extensions + image_files = list(input_dir.glob('*')) + + logger.info(f"Found {len(image_files)} files to process in batch.") + + resamplers = [ + Resampler( + input_image_path=file, + output_image_path=output_dir / + f"{file.stem}.{args.output_format}", + width=args.width, + height=args.height, + scale=args.scale, + resolution=tuple(args.resolution) if args.resolution else None, + interpolation={ + 'linear': cv2.INTER_LINEAR, + 'cubic': cv2.INTER_CUBIC, + 'nearest': cv2.INTER_NEAREST + }[args.interpolation], + preserve_aspect_ratio=args.preserve_aspect_ratio, + crop_area=tuple(args.crop_area) if args.crop_area else None, + edge_detection=args.edge_detection, + color_space=args.color_space, + brightness=args.brightness, + contrast=args.contrast, + sharpen=args.sharpen, + rotate_angle=args.rotate_angle, + blur=tuple(args.blur) if args.blur else None, + blur_method=args.blur_method, + histogram_equalization=args.histogram_equalization, + grayscale=args.grayscale, + output_format=ImageFormat(args.output_format), + jpeg_quality=args.jpeg_quality + ) + for file in image_files + if file.suffix.lower() in ['.jpg', '.jpeg', '.png', '.tiff', '.bmp', '.gif'] + ] + + logger.info( + f"Starting batch processing with {len(resamplers)} images.") + + with concurrent.futures.ThreadPoolExecutor() as executor: + executor.map(process_image, resamplers) + + logger.info("Batch processing completed successfully.") + + +if __name__ == "__main__": + main() diff --git a/pysrc/image/star_detection/__init__.py b/modules/lithium.pyimage/image/star_detection/__init__.py similarity index 100% rename from pysrc/image/star_detection/__init__.py rename to modules/lithium.pyimage/image/star_detection/__init__.py diff --git a/modules/lithium.pyimage/image/star_detection/clustering.py b/modules/lithium.pyimage/image/star_detection/clustering.py new file mode 100644 index 00000000..14edbc1e --- /dev/null +++ b/modules/lithium.pyimage/image/star_detection/clustering.py @@ -0,0 +1,198 @@ +import numpy as np +from sklearn.cluster import DBSCAN +from typing import List, Tuple, Optional +from pathlib import Path +from loguru import logger +import matplotlib.pyplot as plt +import json + + +class StarClustering: + def __init__(self, eps: float = 0.5, min_samples: int = 5, algorithm: str = 'auto') -> None: + """ + Initialize the StarClustering with DBSCAN parameters. + + :param eps: The maximum distance between two samples for them to be considered as in the same neighborhood. + :param min_samples: The number of samples in a neighborhood for a point to be considered as a core point. + :param algorithm: The algorithm to be used by DBSCAN. Default is 'auto'. + """ + self.eps = eps + self.min_samples = min_samples + self.algorithm = algorithm + self.clusters: Optional[List[List[Tuple[int, int]]]] = None + self.centroids: Optional[List[Tuple[int, int]]] = None + + # Configure Loguru logger + logger.remove() # Remove default logger + logger.add("clustering.log", rotation="10 MB", retention="10 days", + level="DEBUG", format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}") + logger.debug( + f"Initialized StarClustering with eps={self.eps}, min_samples={self.min_samples}, algorithm='{self.algorithm}'") + + def cluster_stars(self, stars: List[Tuple[int, int]]) -> List[Tuple[int, int]]: + """ + Cluster stars using the DBSCAN algorithm and compute centroids of each cluster. + + :param stars: List of star positions as (x, y) tuples. + :return: List of clustered star centroids as (x, y) tuples. + """ + logger.info("Starting clustering process") + if not stars: + logger.warning( + "Empty star list provided. Returning empty centroid list.") + return [] + + try: + clustering = DBSCAN( + eps=self.eps, min_samples=self.min_samples, algorithm=self.algorithm) + labels = clustering.fit_predict(stars) + logger.debug(f"DBSCAN labels: {labels}") + + unique_labels = set(labels) + self.clusters = [] + self.centroids = [] + + for label in unique_labels: + if label == -1: + logger.debug("Skipping noise points") + continue + class_members = [stars[i] + for i in range(len(stars)) if labels[i] == label] + centroid = tuple(np.mean(class_members, axis=0).astype(int)) + self.clusters.append(class_members) + self.centroids.append(centroid) + logger.debug(f"Cluster {label}: Centroid at {centroid}") + + logger.info( + f"Clustering completed with {len(self.centroids)} clusters found") + return self.centroids + except Exception as e: + logger.error(f"Error during clustering: {e}") + raise + + def visualize_clusters(self, stars: List[Tuple[int, int]], save_path: Optional[Path] = None) -> None: + """ + Visualize the clustered stars and their centroids. + + :param stars: List of star positions as (x, y) tuples. + :param save_path: Optional Path to save the plot image. + """ + if self.centroids is None: + logger.error( + "No clusters to visualize. Please run cluster_stars first.") + raise ValueError("No clusters to visualize.") + + logger.info("Visualizing clusters") + plt.figure(figsize=(10, 8)) + colors = plt.cm.get_cmap('viridis', len(self.centroids)) + + for idx, centroid in enumerate(self.centroids): + cluster = self.clusters[idx] + cluster_np = np.array(cluster) + plt.scatter(cluster_np[:, 0], cluster_np[:, 1], + s=30, color=colors(idx), label=f'Cluster {idx}') + plt.scatter(centroid[0], centroid[1], + s=100, color='red', marker='X') + + # Plot noise points + noise = [star for star, label in zip(stars, DBSCAN( + eps=self.eps, min_samples=self.min_samples, algorithm=self.algorithm).fit_predict(stars)) if label == -1] + if noise: + noise_np = np.array(noise) + plt.scatter(noise_np[:, 0], noise_np[:, 1], + s=30, color='grey', label='Noise') + + plt.title('Star Clusters') + plt.xlabel('X Coordinate') + plt.ylabel('Y Coordinate') + plt.legend() + plt.grid(True) + if save_path: + plt.savefig(save_path) + logger.info(f"Cluster visualization saved to {save_path}") + plt.show() + logger.debug("Clusters visualized successfully") + + def save_clusters(self, filepath: Union[str, Path]) -> None: + """ + Save the clustered centroids to a JSON file. + + :param filepath: Path to save the JSON file. + """ + if self.centroids is None: + logger.error( + "No clusters to save. Please run cluster_stars first.") + raise ValueError("No clusters to save.") + + logger.info(f"Saving clusters to {filepath}") + try: + with open(filepath, 'w') as file: + json.dump(self.centroids, file, indent=4) + logger.debug("Clusters saved successfully") + except Exception as e: + logger.error(f"Failed to save clusters: {e}") + raise + + def load_clusters(self, filepath: Union[str, Path]) -> List[Tuple[int, int]]: + """ + Load clustered centroids from a JSON file. + + :param filepath: Path to load the JSON file from. + :return: List of clustered star centroids as (x, y) tuples. + """ + logger.info(f"Loading clusters from {filepath}") + try: + with open(filepath, 'r') as file: + self.centroids = json.load(file) + logger.debug(f"Clusters loaded: {self.centroids}") + return self.centroids + except Exception as e: + logger.error(f"Failed to load clusters: {e}") + raise + + def update_parameters(self, eps: Optional[float] = None, min_samples: Optional[int] = None, algorithm: Optional[str] = None) -> None: + """ + Update DBSCAN parameters. + + :param eps: New epsilon value. + :param min_samples: New minimum samples value. + :param algorithm: New algorithm to use. + """ + if eps is not None: + self.eps = eps + logger.debug(f"Updated eps to {self.eps}") + if min_samples is not None: + self.min_samples = min_samples + logger.debug(f"Updated min_samples to {self.min_samples}") + if algorithm is not None: + self.algorithm = algorithm + logger.debug(f"Updated algorithm to {self.algorithm}") + + +# Example Usage +if __name__ == "__main__": + import sys + + # Initialize StarClustering object + star_cluster = StarClustering(eps=30, min_samples=5) + + # Sample star positions + stars = [ + (10, 10), (12, 11), (11, 13), + (50, 50), (51, 52), (49, 51), + (90, 90), (91, 89), (89, 92) + ] + + # Perform clustering + centroids = star_cluster.cluster_stars(stars) + print(f"Cluster Centroids: {centroids}") + + # Visualize clusters + star_cluster.visualize_clusters(stars, save_path=Path("clusters.png")) + + # Save clusters to JSON + star_cluster.save_clusters("clusters.json") + + # Load clusters from JSON + loaded_centroids = star_cluster.load_clusters("clusters.json") + print(f"Loaded Cluster Centroids: {loaded_centroids}") diff --git a/modules/lithium.pyimage/image/star_detection/detection.py b/modules/lithium.pyimage/image/star_detection/detection.py new file mode 100644 index 00000000..e384ba81 --- /dev/null +++ b/modules/lithium.pyimage/image/star_detection/detection.py @@ -0,0 +1,327 @@ +import cv2 +import numpy as np +from typing import List, Tuple, Optional, Union +from pathlib import Path +from dataclasses import dataclass, field +from loguru import logger +from sklearn.cluster import DBSCAN +import matplotlib.pyplot as plt +import json + +from .preprocessing import ( + Preprocessor, + PreprocessingConfig +) + + +@dataclass +class StarDetectionConfig: + """ + Configuration settings for star detection. + """ + median_filter_size: int = 3 + wavelet_levels: int = 4 + binarization_threshold: int = 30 + min_star_size: int = 10 + min_star_brightness: int = 20 + min_circularity: float = 0.7 + max_circularity: float = 1.3 + scales: List[float] = field(default_factory=lambda: [1.0, 0.75, 0.5]) + dbscan_eps: float = 10.0 + dbscan_min_samples: int = 2 + save_detected_stars: bool = False + detected_stars_save_path: Optional[Path] = None + visualize: bool = True + visualization_save_path: Optional[Path] = None + + +class StarDetector: + def __init__(self, config: Optional[StarDetectionConfig] = None) -> None: + """ + Initialize the StarDetector with optional configuration. + + :param config: StarDetectionConfig object containing detection settings. + """ + self.config = config or StarDetectionConfig() + + # Configure Loguru logger + logger.remove() # Remove default logger + logger.add( + "detection.log", + rotation="10 MB", + retention="10 days", + level="DEBUG", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}" + ) + logger.debug( + "Initialized StarDetector with configuration: {}", self.config) + + # Initialize Preprocessor + self.preprocessor = Preprocessor( + config=PreprocessingConfig( + median_filter_size=self.config.median_filter_size, + wavelet_levels=self.config.wavelet_levels, + binarization_threshold=self.config.binarization_threshold, + save_preprocessed=self.config.save_detected_stars, + preprocessed_save_path=self.config.detected_stars_save_path + ) + ) + + def multiscale_detect_stars(self, image: np.ndarray) -> List[Tuple[int, int]]: + """ + Detect stars in an image using multiscale analysis and clustering. + + :param image: Grayscale input image as a numpy array. + :return: List of detected star positions as (x, y) tuples. + """ + logger.info("Starting multiscale star detection.") + all_stars = [] + + for scale in self.config.scales: + logger.debug("Processing scale: {}", scale) + resized_image = cv2.resize( + image, + None, + fx=scale, + fy=scale, + interpolation=cv2.INTER_LINEAR + ) + logger.debug("Image resized to scale {}.", scale) + + filtered_image = self.preprocessor.apply_median_filter( + resized_image) + logger.debug("Median filtering applied.") + + pyramid = self.preprocessor.wavelet_transform(filtered_image) + background = self.preprocessor.extract_background(pyramid) + subtracted_image = self.preprocessor.background_subtraction( + filtered_image, background) + logger.debug("Background subtraction completed.") + + processed_image = self.preprocessor.inverse_wavelet_transform( + pyramid) + logger.debug("Inverse wavelet transform completed.") + + binary_image = self.preprocessor.binarize(subtracted_image) + logger.debug("Image binarization completed.") + + star_centers, star_properties = self.preprocessor.detect_stars( + binary_image) + logger.debug( + "Star detection completed with {} stars detected.", len(star_centers)) + + filtered_stars = self.filter_stars(star_properties, binary_image) + logger.debug("{} stars passed the filtering criteria.", + len(filtered_stars)) + + # Adjust star positions back to original scale + scaled_stars = [(int(x / scale), int(y / scale)) + for (x, y) in filtered_stars] + all_stars.extend(scaled_stars) + logger.debug("Star positions scaled back to original image size.") + + # Remove duplicate stars using DBSCAN clustering + logger.info("Clustering detected stars to remove duplicates.") + unique_stars = self.remove_duplicates(all_stars) + logger.info( + "Duplicate stars removed. {} unique stars detected.", len(unique_stars)) + + if self.config.save_detected_stars and self.config.detected_stars_save_path: + self.save_detected_stars( + unique_stars, self.config.detected_stars_save_path) + + if self.config.visualize: + self.visualize_stars(image, unique_stars, + self.config.visualization_save_path) + + return unique_stars + + def filter_stars( + self, + star_properties: List[Tuple[Tuple[int, int], float, float]], + binary_image: np.ndarray + ) -> List[Tuple[int, int]]: + """ + Filter detected stars based on shape, size, and brightness. + + :param star_properties: List of tuples containing star properties (center, area, perimeter). + :param binary_image: Binary image used for star detection. + :return: List of filtered star positions as (x, y) tuples. + """ + logger.debug("Filtering stars based on defined criteria.") + filtered_stars = [] + for (center, area, perimeter) in star_properties: + if perimeter == 0: + logger.debug( + "Skipping star at {} due to zero perimeter.", center) + continue + circularity = (4 * np.pi * area) / (perimeter ** 2) + logger.debug("Star at {} has circularity {}.", center, circularity) + + mask = np.zeros_like(binary_image) + cv2.circle(mask, center, 5, 255, -1) + star_pixels = cv2.countNonZero(mask) + brightness = np.mean(binary_image[mask == 255]) + + logger.debug( + "Star at {}: pixels={}, brightness={}.", + center, star_pixels, brightness + ) + + if ( + star_pixels > self.config.min_star_size and + brightness > self.config.min_star_brightness and + self.config.min_circularity <= circularity <= self.config.max_circularity + ): + filtered_stars.append(center) + logger.debug("Star at {} passed filtering.", center) + + logger.debug("Filtering completed. {} stars passed.", + len(filtered_stars)) + return filtered_stars + + def remove_duplicates(self, stars: List[Tuple[int, int]]) -> List[Tuple[int, int]]: + """ + Remove duplicate stars using DBSCAN clustering. + + :param stars: List of star positions as (x, y) tuples. + :return: List of unique star positions. + """ + if not stars: + logger.warning("No stars to cluster for duplicate removal.") + return [] + + try: + star_array = np.array(stars) + clustering = DBSCAN(eps=self.config.dbscan_eps, + min_samples=self.config.dbscan_min_samples) + labels = clustering.fit_predict(star_array) + logger.debug("DBSCAN clustering labels: {}", labels) + + unique_stars = [] + unique_labels = set(labels) + for label in unique_labels: + if label == -1: + continue # Noise + cluster = star_array[labels == label] + centroid = tuple(cluster.mean(axis=0).astype(int)) + unique_stars.append(centroid) + logger.debug("Cluster {}: Centroid at {}.", label, centroid) + + logger.info( + "Duplicate removal completed. {} unique stars identified.", len(unique_stars)) + return unique_stars + except Exception as e: + logger.error("Error during duplicate removal: {}", e) + raise + + def save_detected_stars(self, stars: List[Tuple[int, int]], save_path: Union[str, Path]) -> None: + """ + Save the detected star positions to a JSON file. + + :param stars: List of star positions as (x, y) tuples. + :param save_path: Path to save the JSON file. + """ + logger.info("Saving detected stars to {}.", save_path) + try: + with open(save_path, 'w') as f: + json.dump(stars, f, indent=4) + logger.debug("Detected stars saved successfully.") + except Exception as e: + logger.error("Failed to save detected stars: {}", e) + raise + + def load_detected_stars(self, file_path: Union[str, Path]) -> List[Tuple[int, int]]: + """ + Load detected star positions from a JSON file. + + :param file_path: Path to the JSON file. + :return: List of star positions as (x, y) tuples. + """ + logger.info("Loading detected stars from {}.", file_path) + try: + with open(file_path, 'r') as f: + stars = json.load(f) + logger.debug( + "Detected stars loaded successfully with {} entries.", len(stars)) + return stars + except Exception as e: + logger.error("Failed to load detected stars: {}", e) + raise + + def visualize_stars( + self, + original_image: np.ndarray, + stars: List[Tuple[int, int]], + save_path: Optional[Path] = None + ) -> None: + """ + Visualize the detected stars on the original image. + + :param original_image: Original grayscale image as a numpy array. + :param stars: List of detected star positions as (x, y) tuples. + :param save_path: Optional path to save the visualization image. + """ + logger.info("Visualizing detected stars.") + try: + color_image = cv2.cvtColor(original_image, cv2.COLOR_GRAY2BGR) + for (x, y) in stars: + cv2.circle(color_image, (x, y), 5, (0, 0, 255), 1) + + plt.figure(figsize=(10, 8)) + plt.imshow(cv2.cvtColor(color_image, cv2.COLOR_BGR2RGB)) + plt.title('Detected Stars') + plt.axis('off') + if save_path: + plt.savefig(save_path) + logger.debug("Star visualization saved to {}.", save_path) + plt.show() + logger.debug("Star visualization displayed successfully.") + except Exception as e: + logger.error("Error during star visualization: {}", e) + raise + + +# Example Usage +if __name__ == "__main__": + from preprocessing import PreprocessingConfig + + # Configure star detection parameters + detection_config = StarDetectionConfig( + median_filter_size=5, + wavelet_levels=3, + binarization_threshold=40, + min_star_size=15, + min_star_brightness=25, + min_circularity=0.8, + max_circularity=1.2, + scales=[1.0, 0.8, 0.6], + dbscan_eps=15.0, + dbscan_min_samples=3, + save_detected_stars=True, + detected_stars_save_path=Path("detected_stars.json"), + visualize=True, + visualization_save_path=Path("detected_stars.png") + ) + + # Initialize StarDetector + star_detector = StarDetector(config=detection_config) + + # Load and preprocess image + image_path = "path/to/grayscale_image.png" + try: + preprocessor = star_detector.preprocessor + preprocessed_image = preprocessor.load_image(image_path) + logger.info("Image loaded and preprocessed.") + + # Perform star detection + detected_stars = star_detector.multiscale_detect_stars( + preprocessed_image) + logger.info( + "Star detection completed with {} stars detected.", len(detected_stars)) + + # Optionally, load detected stars from file + # detected_stars = star_detector.load_detected_stars("detected_stars.json") + + except Exception as e: + logger.error("An error occurred during star detection: {}", e) diff --git a/modules/lithium.pyimage/image/star_detection/preprocessing.py b/modules/lithium.pyimage/image/star_detection/preprocessing.py new file mode 100644 index 00000000..51500305 --- /dev/null +++ b/modules/lithium.pyimage/image/star_detection/preprocessing.py @@ -0,0 +1,371 @@ +import cv2 +import numpy as np +from astropy.io import fits +from typing import List, Tuple, Optional, Union +from pathlib import Path +from dataclasses import dataclass, field +from loguru import logger +import matplotlib.pyplot as plt +import json + + +@dataclass +class PreprocessingConfig: + """ + Configuration settings for image preprocessing. + """ + median_filter_size: int = 3 + wavelet_levels: int = 3 + binarization_threshold: int = 128 + save_preprocessed: bool = False + preprocessed_save_path: Optional[Path] = None + save_wavelet: bool = False + wavelet_save_path: Optional[Path] = None + + +class Preprocessor: + def __init__(self, config: Optional[PreprocessingConfig] = None) -> None: + """ + Initialize the Preprocessor with optional configuration. + + :param config: PreprocessingConfig object containing settings. + """ + self.config = config or PreprocessingConfig() + + # Configure Loguru logger + logger.remove() # Remove default logger + logger.add("preprocessing.log", rotation="10 MB", retention="10 days", + level="DEBUG", format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}") + logger.debug("Initialized Preprocessor with default configuration.") + + def load_fits_image(self, file_path: Union[str, Path]) -> np.ndarray: + """ + Load a FITS image from the specified file path. + + :param file_path: Path to the FITS file. + :return: Image data as a numpy array. + """ + logger.info(f"Loading FITS image from {file_path}") + try: + with fits.open(str(file_path)) as hdul: + image_data = hdul[0].data + logger.debug("FITS image loaded successfully.") + return image_data + except Exception as e: + logger.error(f"Failed to load FITS image: {e}") + raise + + def preprocess_fits_image(self, image_data: np.ndarray) -> np.ndarray: + """ + Preprocess FITS image by normalizing to the 0-255 range. + + :param image_data: Raw image data from the FITS file. + :return: Preprocessed image data as a numpy array. + """ + logger.info("Preprocessing FITS image.") + try: + image_data = np.nan_to_num(image_data) + image_data = image_data.astype(np.float64) + image_data -= np.min(image_data) + image_data /= np.max(image_data) + image_data *= 255 + preprocessed_image = image_data.astype(np.uint8) + logger.debug("FITS image preprocessed successfully.") + return preprocessed_image + except Exception as e: + logger.error(f"Error during FITS image preprocessing: {e}") + raise + + def load_image(self, file_path: Union[str, Path]) -> np.ndarray: + """ + Load an image from the specified file path. Supports FITS and standard image formats. + + :param file_path: Path to the image file. + :return: Loaded image as a numpy array. + """ + logger.info(f"Loading image from {file_path}") + try: + if str(file_path).lower().endswith('.fits'): + image_data = self.load_fits_image(file_path) + if image_data.ndim == 2: + return self.preprocess_fits_image(image_data) + elif image_data.ndim == 3: + channels = [self.preprocess_fits_image( + image_data[..., i]) for i in range(image_data.shape[2])] + preprocessed_image = cv2.merge(channels) + logger.debug( + "Multichannel FITS image preprocessed successfully.") + return preprocessed_image + else: + logger.error("Unsupported FITS image dimensions.") + raise ValueError("Unsupported FITS image dimensions.") + else: + image = cv2.imread(str(file_path), cv2.IMREAD_UNCHANGED) + if image is None: + logger.error(f"Unable to load image file: {file_path}") + raise ValueError(f"Unable to load image file: {file_path}") + logger.debug("Standard image loaded successfully.") + return image + except Exception as e: + logger.error(f"Error loading image: {e}") + raise + + def apply_median_filter(self, image: np.ndarray) -> np.ndarray: + """ + Apply median filtering to the image. + + :param image: Input image. + :return: Filtered image. + """ + logger.info("Applying median filter.") + try: + filtered_image = cv2.medianBlur( + image, self.config.median_filter_size) + logger.debug( + f"Median filter applied with kernel size {self.config.median_filter_size}.") + return filtered_image + except Exception as e: + logger.error(f"Error applying median filter: {e}") + raise + + def wavelet_transform(self, image: np.ndarray) -> List[np.ndarray]: + """ + Perform wavelet transform using a Laplacian pyramid. + + :param image: Input image. + :return: List of wavelet transformed images at each level. + """ + logger.info("Performing wavelet transform.") + try: + pyramid = [] + current_image = image.copy() + for level in range(self.config.wavelet_levels): + down = cv2.pyrDown(current_image) + up = cv2.pyrUp(down, current_image.shape[:2]) + + # Resize up to match the original image size + up = cv2.resize( + up, (current_image.shape[1], current_image.shape[0])) + + # Calculate the difference to get the detail layer + layer = cv2.subtract(current_image, up) + pyramid.append(layer) + logger.debug(f"Wavelet level {level + 1} computed.") + current_image = down + + pyramid.append(current_image) # Add the final low-resolution image + logger.debug("Wavelet transform completed successfully.") + if self.config.save_wavelet and self.config.wavelet_save_path: + self.save_wavelet_pyramid( + pyramid, self.config.wavelet_save_path) + return pyramid + except Exception as e: + logger.error(f"Error during wavelet transform: {e}") + raise + + def inverse_wavelet_transform(self, pyramid: List[np.ndarray]) -> np.ndarray: + """ + Reconstruct the image from its wavelet pyramid representation. + + :param pyramid: List of wavelet transformed images at each level. + :return: Reconstructed image. + """ + logger.info("Performing inverse wavelet transform.") + try: + image = pyramid.pop() + while pyramid: + up = cv2.pyrUp(image, pyramid[-1].shape[:2]) + + # Resize up to match the size of the current level + up = cv2.resize( + up, (pyramid[-1].shape[1], pyramid[-1].shape[0])) + + # Add the detail layer to reconstruct the image + image = cv2.add(up, pyramid.pop()) + logger.debug("Wavelet level reconstructed.") + logger.debug("Inverse wavelet transform completed successfully.") + return image + except Exception as e: + logger.error(f"Error during inverse wavelet transform: {e}") + raise + + def background_subtraction(self, image: np.ndarray, background: np.ndarray) -> np.ndarray: + """ + Subtract the background from the image using the provided background image. + + :param image: Original image. + :param background: Background image to subtract. + :return: Image with background subtracted. + """ + logger.info("Performing background subtraction.") + try: + background_resized = cv2.resize( + background, (image.shape[1], image.shape[0])) + result = cv2.subtract(image, background_resized) + result[result < 0] = 0 + logger.debug("Background subtracted successfully.") + return result + except Exception as e: + logger.error(f"Error during background subtraction: {e}") + raise + + def binarize(self, image: np.ndarray) -> np.ndarray: + """ + Binarize the image using a fixed threshold from configuration. + + :param image: Input image. + :return: Binarized image. + """ + logger.info("Binarizing image.") + try: + _, binary_image = cv2.threshold( + image, self.config.binarization_threshold, 255, cv2.THRESH_BINARY) + logger.debug( + f"Image binarized with threshold {self.config.binarization_threshold}.") + return binary_image + except Exception as e: + logger.error(f"Error during binarization: {e}") + raise + + def detect_stars(self, binary_image: np.ndarray) -> Tuple[List[Tuple[int, int]], List[Tuple[Tuple[int, int], float, float]]]: + """ + Detect stars in a binary image by finding contours. + + :param binary_image: Binarized image. + :return: Tuple containing a list of star centers and a list of star properties (center, area, perimeter). + """ + logger.info("Detecting stars in binary image.") + try: + contours, _ = cv2.findContours( + binary_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) + star_centers = [] + star_properties = [] + + for contour in contours: + M = cv2.moments(contour) + if M['m00'] != 0: + center = (int(M['m10'] / M['m00']), + int(M['m01'] / M['m00'])) + star_centers.append(center) + area = cv2.contourArea(contour) + perimeter = cv2.arcLength(contour, True) + star_properties.append((center, area, perimeter)) + logger.debug( + f"Detected star at {center} with area {area} and perimeter {perimeter}.") + + logger.info(f"Total stars detected: {len(star_centers)}.") + return star_centers, star_properties + except Exception as e: + logger.error(f"Error during star detection: {e}") + raise + + def save_preprocessed_image(self, image: np.ndarray, save_path: Union[str, Path]) -> None: + """ + Save the preprocessed image to the specified path. + + :param image: Preprocessed image. + :param save_path: Path to save the image. + """ + logger.info(f"Saving preprocessed image to {save_path}.") + try: + cv2.imwrite(str(save_path), image) + logger.debug("Preprocessed image saved successfully.") + except Exception as e: + logger.error(f"Failed to save preprocessed image: {e}") + raise + + def save_wavelet_pyramid(self, pyramid: List[np.ndarray], save_path: Union[str, Path]) -> None: + """ + Save the wavelet pyramid images to the specified directory. + + :param pyramid: List of wavelet transformed images at each level. + :param save_path: Directory path to save the wavelet images. + """ + logger.info(f"Saving wavelet pyramid to {save_path}.") + try: + save_path = Path(save_path) + save_path.mkdir(parents=True, exist_ok=True) + for idx, layer in enumerate(pyramid): + layer_path = save_path / f"wavelet_level_{idx + 1}.png" + cv2.imwrite(str(layer_path), layer) + logger.debug(f"Wavelet level {idx + 1} saved to {layer_path}.") + logger.debug("All wavelet pyramid images saved successfully.") + except Exception as e: + logger.error(f"Failed to save wavelet pyramid images: {e}") + raise + + def run_preprocessing_pipeline(self, file_path: Union[str, Path]) -> Tuple[np.ndarray, List[Tuple[int, int]], List[Tuple[Tuple[int, int], float, float]]]: + """ + Execute the full preprocessing pipeline on the provided image file. + + :param file_path: Path to the image file. + :return: Tuple containing the final processed image, list of star centers, and list of star properties. + """ + logger.info("Starting preprocessing pipeline.") + try: + image = self.load_image(file_path) + logger.debug("Image loaded for preprocessing.") + + if self.config.save_preprocessed and self.config.preprocessed_save_path: + self.save_preprocessed_image( + image, self.config.preprocessed_save_path) + + filtered_image = self.apply_median_filter(image) + logger.debug("Median filter applied.") + + wavelet_pyramid = self.wavelet_transform(filtered_image) + reconstructed_image = self.inverse_wavelet_transform( + wavelet_pyramid) + logger.debug("Wavelet transform and inverse transform completed.") + + # Placeholder for actual background + background = np.zeros_like(reconstructed_image) + subtracted_image = self.background_subtraction( + reconstructed_image, background) + logger.debug("Background subtraction completed.") + + binary_image = self.binarize(subtracted_image) + logger.debug("Image binarization completed.") + + star_centers, star_properties = self.detect_stars(binary_image) + logger.debug("Star detection completed.") + + logger.info("Preprocessing pipeline completed successfully.") + return binary_image, star_centers, star_properties + except Exception as e: + logger.error(f"Error in preprocessing pipeline: {e}") + raise + + +# Example Usage +if __name__ == "__main__": + import sys + + # Initialize Preprocessor with custom configuration + config = PreprocessingConfig( + median_filter_size=5, + wavelet_levels=4, + binarization_threshold=100, + save_preprocessed=True, + preprocessed_save_path=Path("preprocessed_image.png"), + save_wavelet=True, + wavelet_save_path=Path("wavelet_pyramid") + ) + preprocessor = Preprocessor(config=config) + + # Path to the input image (FITS or standard format) + input_image_path = "path/to/image.fits" + + try: + # Run preprocessing pipeline + binary_img, centers, properties = preprocessor.run_preprocessing_pipeline( + input_image_path) + print(f"Detected {len(centers)} stars.") + + # Optionally, visualize binary image + plt.imshow(binary_img, cmap='gray') + plt.title('Binarized Image') + plt.show() + + except Exception as e: + print(f"An error occurred during preprocessing: {e}") diff --git a/pysrc/image/star_detection/utils.py b/modules/lithium.pyimage/image/star_detection/utils.py similarity index 100% rename from pysrc/image/star_detection/utils.py rename to modules/lithium.pyimage/image/star_detection/utils.py diff --git a/pysrc/image/resample/__init__.py b/modules/lithium.pyimage/image/transformation/__init__.py similarity index 100% rename from pysrc/image/resample/__init__.py rename to modules/lithium.pyimage/image/transformation/__init__.py diff --git a/modules/lithium.pyimage/image/transformation/curve.py b/modules/lithium.pyimage/image/transformation/curve.py new file mode 100644 index 00000000..ad351d31 --- /dev/null +++ b/modules/lithium.pyimage/image/transformation/curve.py @@ -0,0 +1,269 @@ +import numpy as np +import matplotlib.pyplot as plt +from scipy.interpolate import CubicSpline, Akima1DInterpolator, interp1d +from typing import Optional, Tuple, List, Callable, Union +from pathlib import Path +import json +from loguru import logger + + +class CurvesTransformation: + def __init__(self, interpolation: str = 'akima') -> None: + self.points: List[Tuple[float, float]] = [] + self.interpolation: str = interpolation + self.curve: Optional[Callable[[float], float]] = None + self.stored_curve: Optional[List[Tuple[float, float]]] = None + + # Configure Loguru logger + logger.add("curve_transformation.log", rotation="10 MB", retention="10 days", + level="DEBUG", format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}") + logger.debug( + f"Initialized CurvesTransformation with interpolation='{self.interpolation}'") + + def add_point(self, x: float, y: float) -> None: + logger.debug(f"Adding point ({x}, {y})") + self.points.append((x, y)) + self.points.sort(key=lambda point: point[0]) # Sort points by x value + self._update_curve() + + def remove_point(self, index: int) -> None: + if 0 <= index < len(self.points): + removed = self.points.pop(index) + logger.debug(f"Removed point at index {index}: {removed}") + self._update_curve() + else: + logger.error(f"Index out of range: {index}") + raise IndexError("Point index out of range.") + + def _update_curve(self) -> None: + if len(self.points) < 2: + self.curve = None + logger.warning("Not enough points to define a curve.") + return + + x, y = zip(*self.points) + + logger.debug( + f"Updating curve with interpolation method: {self.interpolation}") + + try: + if self.interpolation == 'cubic': + self.curve = CubicSpline(x, y) + logger.debug("CubicSpline interpolation applied.") + elif self.interpolation == 'akima': + self.curve = Akima1DInterpolator(x, y) + logger.debug("Akima1DInterpolator interpolation applied.") + elif self.interpolation == 'linear': + self.curve = interp1d( + x, y, kind='linear', fill_value="extrapolate") + logger.debug("Linear interpolation applied.") + else: + logger.error( + f"Unsupported interpolation method: {self.interpolation}") + raise ValueError("Unsupported interpolation method.") + except Exception as e: + logger.error(f"Failed to update curve: {e}") + self.curve = None + + def transform(self, image: np.ndarray, channel: Optional[int] = None) -> np.ndarray: + if self.curve is None: + logger.error("No valid curve defined for transformation.") + raise ValueError("No valid curve defined.") + + logger.info( + f"Applying curve transformation{' on channel ' + str(channel) if channel is not None else ''}") + + try: + transformed_image = image.astype( + np.float32) / 255.0 # Normalize to [0, 1] + + if len(image.shape) == 2: # Grayscale image + logger.debug("Transforming grayscale image.") + transformed_image = self.curve(transformed_image) + elif len(image.shape) == 3: # RGB image + if channel is None: + logger.error("Channel must be specified for color images.") + raise ValueError( + "Channel must be specified for color images.") + logger.debug(f"Transforming channel {channel} of RGB image.") + transformed_image[:, :, channel] = self.curve( + transformed_image[:, :, channel]) + else: + logger.error("Unsupported image format.") + raise ValueError("Unsupported image format.") + + transformed_image = np.clip(transformed_image, 0, 1) + transformed_image = (transformed_image * 255).astype(np.uint8) + logger.info("Curve transformation applied successfully.") + return transformed_image + except Exception as e: + logger.error(f"Error during transformation: {e}") + raise + + def plot_curve(self, title: str = "Curves Transformation") -> None: + if self.curve is None: + logger.warning("No curve to plot.") + print("No curve to plot.") + return + + logger.debug(f"Plotting curve with title: {title}") + x_vals = np.linspace(0, 1, 500) + y_vals = self.curve(x_vals) + + plt.figure(figsize=(8, 6)) + plt.plot(x_vals, y_vals, + label=f'Interpolation: {self.interpolation}', color='blue') + plt.scatter(*zip(*self.points), color='red', label='Control Points') + plt.title(title) + plt.xlabel('Input Intensity') + plt.ylabel('Output Intensity') + plt.grid(True) + plt.legend() + plt.tight_layout() + plt.show() + logger.debug("Curve plotted successfully.") + + def store_curve(self) -> None: + self.stored_curve = self.points.copy() + logger.info("Curve stored successfully.") + + def restore_curve(self) -> None: + if self.stored_curve: + self.points = self.stored_curve.copy() + self._update_curve() + logger.info("Curve restored successfully.") + else: + logger.warning("No stored curve to restore.") + print("No stored curve to restore.") + + def invert_curve(self) -> None: + if self.curve is None: + logger.warning("No curve to invert.") + print("No curve to invert.") + return + + logger.info("Inverting curve.") + self.points = [(x, 1 - y) for x, y in self.points] + self._update_curve() + logger.debug("Curve inverted successfully.") + + def reset_curve(self) -> None: + self.points = [(0.0, 0.0), (1.0, 1.0)] + self._update_curve() + logger.info("Curve reset to default.") + + def pixel_readout(self, x: float) -> Optional[float]: + if self.curve is None: + logger.warning("No curve defined for pixel readout.") + print("No curve defined.") + return None + try: + value = self.curve(x) + logger.debug(f"Pixel readout at x={x}: {value}") + return float(value) + except Exception as e: + logger.error(f"Error in pixel readout: {e}") + return None + + def save_curve(self, filepath: Union[str, Path]) -> None: + logger.info(f"Saving curve to {filepath}") + try: + curve_data = { + 'interpolation': self.interpolation, + 'points': self.points + } + with open(filepath, 'w') as file: + json.dump(curve_data, file, indent=4) + logger.debug("Curve saved successfully.") + except Exception as e: + logger.error(f"Failed to save curve: {e}") + raise + + def load_curve(self, filepath: Union[str, Path]) -> None: + logger.info(f"Loading curve from {filepath}") + try: + with open(filepath, 'r') as file: + curve_data = json.load(file) + self.interpolation = curve_data.get('interpolation', 'akima') + self.points = curve_data.get('points', []) + self._update_curve() + logger.debug("Curve loaded successfully.") + except Exception as e: + logger.error(f"Failed to load curve: {e}") + raise + + def export_curve_points(self) -> List[Tuple[float, float]]: + logger.debug("Exporting curve points.") + return self.points.copy() + + def import_curve_points(self, points: List[Tuple[float, float]]) -> None: + logger.debug(f"Importing curve points: {points}") + self.points = sorted(points, key=lambda point: point[0]) + self._update_curve() + + def get_interpolation_methods(self) -> List[str]: + methods = ['cubic', 'akima', 'linear'] + logger.debug(f"Available interpolation methods: {methods}") + return methods + + +# Example Usage +if __name__ == "__main__": + import cv2 + import sys + + # Initialize CurvesTransformation object + curve_transform = CurvesTransformation(interpolation='akima') + + # Add points to the curve + curve_transform.add_point(0.0, 0.0) + curve_transform.add_point(0.3, 0.5) + curve_transform.add_point(0.7, 0.8) + curve_transform.add_point(1.0, 1.0) + + # Plot the curve + curve_transform.plot_curve() + + # Store the curve + curve_transform.store_curve() + + # Invert the curve + curve_transform.invert_curve() + curve_transform.plot_curve() + + # Restore the original curve + curve_transform.restore_curve() + curve_transform.plot_curve() + + # Reset the curve to default + curve_transform.reset_curve() + curve_transform.plot_curve() + + # Save the curve + curve_transform.save_curve("default_curve.json") + + # Load the curve + curve_transform.load_curve("default_curve.json") + curve_transform.plot_curve() + + # Generate a test image + test_image = np.linspace(0, 1, 256).reshape(16, 16).astype(np.float32) + + # Apply the transformation + transformed_image = curve_transform.transform(test_image) + + # Plot original and transformed images + plt.figure(figsize=(12, 6)) + plt.subplot(1, 2, 1) + plt.title("Original Image") + plt.imshow(test_image, cmap='gray', vmin=0, vmax=1) + + plt.subplot(1, 2, 2) + plt.title("Transformed Image") + plt.imshow(transformed_image, cmap='gray', vmin=0, vmax=1) + plt.tight_layout() + plt.show() + + # Pixel readout + readout_value = curve_transform.pixel_readout(0.5) + print(f"Pixel readout at x=0.5: {readout_value}") diff --git a/modules/lithium.pyimage/image/transformation/histogram.py b/modules/lithium.pyimage/image/transformation/histogram.py new file mode 100644 index 00000000..eae096d1 --- /dev/null +++ b/modules/lithium.pyimage/image/transformation/histogram.py @@ -0,0 +1,314 @@ +import cv2 +import numpy as np +import matplotlib.pyplot as plt +from pathlib import Path +from typing import Optional, Tuple, List +import argparse +from loguru import logger + +# Configure Loguru logger +logger.remove() # Remove default logger +logger.add("histogram.log", rotation="10 MB", retention="10 days", + level="DEBUG", format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}") + + +def calculate_histogram(image: np.ndarray, channel: int = 0) -> np.ndarray: + """ + Calculate the histogram of an image channel. + + :param image: Input image as a numpy array. + :param channel: Channel index (0 for Blue, 1 for Green, 2 for Red in BGR images). + :return: Histogram as a numpy array. + """ + logger.debug(f"Calculating histogram for channel {channel}") + histogram = cv2.calcHist([image], [channel], None, [256], [0, 256]) + logger.debug(f"Histogram calculated: {histogram.flatten()}") + return histogram + + +def display_histogram(histogram: np.ndarray, title: str = "Histogram") -> None: + """ + Display the histogram using Matplotlib. + + :param histogram: Histogram data as a numpy array. + :param title: Title of the histogram plot. + """ + logger.debug(f"Displaying histogram with title: {title}") + plt.figure() + plt.plot(histogram, color='black') + plt.title(title) + plt.xlabel('Pixel Intensity') + plt.ylabel('Frequency') + plt.grid(True) + plt.show() + logger.debug("Histogram displayed successfully") + + +def apply_histogram_transformation(image: np.ndarray, + shadows_clip: float = 0.0, + highlights_clip: float = 1.0, + midtones_balance: float = 0.5, + lower_bound: float = -1.0, + upper_bound: float = 2.0) -> np.ndarray: + """ + Apply histogram-based transformation to an image. + + :param image: Input grayscale image as a numpy array. + :param shadows_clip: Shadow clipping threshold (0.0 to 1.0). + :param highlights_clip: Highlight clipping threshold (0.0 to 1.0). + :param midtones_balance: Balance factor for midtones. + :param lower_bound: Lower bound for dynamic range expansion. + :param upper_bound: Upper bound for dynamic range expansion. + :return: Transformed image as a numpy array. + """ + logger.info("Applying histogram transformation") + try: + # Normalize the image to [0, 1] + normalized_image = image.astype(np.float32) / 255.0 + logger.debug("Image normalized to [0, 1]") + + # Shadows and highlights clipping + clipped_image = np.clip( + (normalized_image - shadows_clip) / (highlights_clip - shadows_clip), 0, 1) + logger.debug( + f"Clipped image with shadows_clip={shadows_clip}, highlights_clip={highlights_clip}") + + # Midtones balance using a custom transfer function + def mtf(x): return (x ** midtones_balance) / \ + ((x ** midtones_balance + (1 - x) ** midtones_balance) + ** (1 / midtones_balance)) + transformed_image = mtf(clipped_image) + logger.debug( + f"Midtones balanced with midtones_balance={midtones_balance}") + + # Dynamic range expansion + expanded_image = np.clip( + (transformed_image - lower_bound) / (upper_bound - lower_bound), 0, 1) + logger.debug( + f"Dynamic range expanded with lower_bound={lower_bound}, upper_bound={upper_bound}") + + # Rescale to [0, 255] + output_image = (expanded_image * 255).astype(np.uint8) + logger.debug("Image rescaled to [0, 255]") + logger.info("Histogram transformation applied successfully") + return output_image + except Exception as e: + logger.error(f"Error in histogram transformation: {e}") + raise + + +def auto_clip(image: np.ndarray, clip_percent: float = 0.01) -> np.ndarray: + """ + Automatically clip the histogram based on a percentage. + + :param image: Input grayscale image as a numpy array. + :param clip_percent: Percentage for clipping the histogram tails. + :return: Auto-clipped image as a numpy array. + """ + logger.info(f"Applying auto clipping with clip_percent={clip_percent}") + try: + # Compute the histogram + hist, bins = np.histogram(image.flatten(), 256, [0, 256]) + cdf = hist.cumsum() + total_pixels = image.size + logger.debug("Computed cumulative distribution function (CDF)") + + # Calculate clipping points + lower_clip = np.searchsorted(cdf, total_pixels * clip_percent) + upper_clip = np.searchsorted(cdf, total_pixels * (1 - clip_percent)) + logger.debug(f"Lower clip at {lower_clip}, Upper clip at {upper_clip}") + + # Apply histogram transformation + auto_clipped_image = apply_histogram_transformation( + image, + shadows_clip=lower_clip / 255.0, + highlights_clip=upper_clip / 255.0 + ) + logger.info("Auto clipping applied successfully") + return auto_clipped_image + except Exception as e: + logger.error(f"Error in auto clipping: {e}") + raise + + +def display_rgb_histogram(image: np.ndarray) -> None: + """ + Display RGB histograms for an image. + + :param image: Input image as a numpy array (BGR format). + """ + logger.debug("Displaying RGB histograms") + colors = ('b', 'g', 'r') + plt.figure() + for i, col in enumerate(colors): + hist = calculate_histogram(image, channel=i) + plt.plot(hist, color=col) + plt.xlim([0, 256]) + plt.title('RGB Histogram') + plt.xlabel('Pixel Intensity') + plt.ylabel('Frequency') + plt.grid(True) + plt.show() + logger.debug("RGB histograms displayed successfully") + + +def real_time_preview(image: np.ndarray, + transformation_function, + window_name: str = "Real-Time Preview", + **kwargs) -> None: + """ + Display real-time preview of image transformations. + + :param image: Input image as a numpy array. + :param transformation_function: Function to apply transformation. + :param window_name: Name of the display window. + :param kwargs: Additional keyword arguments for the transformation function. + """ + logger.info("Starting real-time preview") + try: + preview_image = transformation_function(image, **kwargs) + cv2.imshow(window_name, preview_image) + logger.debug("Transformation applied for real-time preview") + except Exception as e: + logger.error(f"Error in real-time preview: {e}") + raise + + +def save_histogram(histogram: np.ndarray, filepath: Path, title: str = "Histogram") -> None: + """ + Save the histogram plot to a file. + + :param histogram: Histogram data as a numpy array. + :param filepath: Path to save the histogram image. + :param title: Title of the histogram plot. + """ + logger.debug(f"Saving histogram to {filepath}") + try: + plt.figure() + plt.plot(histogram, color='black') + plt.title(title) + plt.xlabel('Pixel Intensity') + plt.ylabel('Frequency') + plt.grid(True) + plt.savefig(filepath) + plt.close() + logger.info(f"Histogram saved to {filepath}") + except Exception as e: + logger.error(f"Failed to save histogram: {e}") + raise + + +def parse_arguments() -> argparse.Namespace: + """ + Parse command-line arguments for the histogram tool. + + :return: Parsed arguments namespace. + """ + parser = argparse.ArgumentParser( + description="Image Histogram Processing Tool") + parser.add_argument('--input', type=Path, required=True, + help='Path to the input image.') + parser.add_argument('--output', type=Path, required=True, + help='Path to save the processed image.') + parser.add_argument('--save_histogram', type=Path, default=None, + help='Path to save the histogram plot.') + parser.add_argument('--operation', type=str, choices=['mean', 'gaussian', 'minimum', + 'maximum', 'median', 'bilinear', 'bicubic'], + default='mean', help='Histogram transformation operation.') + parser.add_argument('--structure', type=str, choices=['square', 'circular', 'horizontal', 'vertical'], + default='square', help='Neighborhood structure for transformation.') + parser.add_argument('--radius', type=int, default=1, + help='Radius for neighborhood structure.') + parser.add_argument('--clip_percent', type=float, default=0.01, + help='Clip percentage for auto clipping.') + parser.add_argument('--midtones_balance', type=float, default=0.5, + help='Balance factor for midtones.') + parser.add_argument('--lower_bound', type=float, default=-1.0, + help='Lower bound for dynamic range expansion.') + parser.add_argument('--upper_bound', type=float, default=2.0, + help='Upper bound for dynamic range expansion.') + parser.add_argument('--real_time_preview', action='store_true', + help='Enable real-time preview of transformations.') + + return parser.parse_args() + + +def main(): + """ + Main function to execute histogram processing. + """ + args = parse_arguments() + + # Load image + logger.info(f"Loading image from {args.input}") + image = cv2.imread(str(args.input)) + if image is None: + logger.error(f"Failed to load image: {args.input}") + sys.exit(1) + logger.info(f"Image loaded successfully with shape {image.shape}") + + # Convert to grayscale + grayscale_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) + logger.debug("Converted image to grayscale") + + # Display original image and histogram + cv2.imshow('Original Image', image) + original_histogram = calculate_histogram(grayscale_image) + display_histogram(original_histogram, title="Original Grayscale Histogram") + + # Display RGB histogram + display_rgb_histogram(image) + + # Apply histogram transformation + logger.info("Applying histogram transformation") + transformed_image = apply_histogram_transformation( + grayscale_image, + shadows_clip=0.1, + highlights_clip=0.9, + midtones_balance=args.midtones_balance, + lower_bound=args.lower_bound, + upper_bound=args.upper_bound + ) + cv2.imshow('Transformed Image', transformed_image) + logger.info("Histogram transformation applied") + + # Display transformed histogram + transformed_histogram = calculate_histogram(transformed_image) + display_histogram(transformed_histogram, + title="Transformed Grayscale Histogram") + + # Apply auto clipping + logger.info("Applying auto clipping") + auto_clipped_image = auto_clip( + grayscale_image, clip_percent=args.clip_percent) + cv2.imshow('Auto Clipped Image', auto_clipped_image) + logger.info("Auto clipping applied") + + # Save histogram if required + if args.save_histogram: + logger.info(f"Saving histogram to {args.save_histogram}") + save_histogram(auto_clipped_image if args.clip_percent else transformed_image, + args.save_histogram, + title="Auto Clipped Grayscale Histogram") + + # Real-time preview + if args.real_time_preview: + logger.info("Enabling real-time preview") + real_time_preview( + image=grayscale_image, + transformation_function=apply_histogram_transformation, + shadows_clip=0.05, + highlights_clip=0.95, + midtones_balance=args.midtones_balance, + lower_bound=args.lower_bound, + upper_bound=args.upper_bound + ) + + logger.info("Displaying all processed images. Press any key to exit.") + cv2.waitKey(0) + cv2.destroyAllWindows() + logger.info("All windows closed. Program terminated successfully.") + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pyimage/tests/test_astroalign.py b/modules/lithium.pyimage/tests/test_astroalign.py new file mode 100644 index 00000000..5005e7da --- /dev/null +++ b/modules/lithium.pyimage/tests/test_astroalign.py @@ -0,0 +1,44 @@ +import pytest +import numpy as np +from numpy.testing import assert_array_almost_equal +from scipy.spatial import KDTree +from skimage.transform import estimate_transform +from .astroalign import find_transform, MaxIterError + +# FILE: modules/lithium.pyimage/image/astroalign/test_astroalign.py + +def test_find_transform_valid(): + source = np.array([[10, 10], [20, 20], [30, 30], [40, 40], [50, 50]]) + target = np.array([[12, 12], [22, 22], [32, 32], [42, 42], [52, 52]]) + transform, (src_pts, tgt_pts) = find_transform(source, target) + assert transform is not None + assert len(src_pts) == len(tgt_pts) + assert_array_almost_equal(src_pts, source) + assert_array_almost_equal(tgt_pts, target) + +def test_find_transform_insufficient_control_points(): + source = np.array([[10, 10], [20, 20]]) + target = np.array([[12, 12], [22, 22]]) + with pytest.raises(ValueError, match="Reference stars in source or target image are less than the minimum value (3)."): + find_transform(source, target) + +def test_find_transform_minimal_control_points(): + source = np.array([[10, 10], [20, 20], [30, 30]]) + target = np.array([[12, 12], [22, 22], [32, 32]]) + transform, (src_pts, tgt_pts) = find_transform(source, target) + assert transform is not None + assert len(src_pts) == len(tgt_pts) + assert_array_almost_equal(src_pts, source) + assert_array_almost_equal(tgt_pts, target) + +def test_find_transform_invalid_input_type(): + source = "invalid input" + target = np.array([[12, 12], [22, 22], [32, 32]]) + with pytest.raises(TypeError, match="Input type for source not supported."): + find_transform(source, target) + +def test_find_transform_no_matches(): + source = np.array([[10, 10], [20, 20], [30, 30], [40, 40], [50, 50]]) + target = np.array([[100, 100], [200, 200], [300, 300], [400, 400], [500, 500]]) + with pytest.raises(MaxIterError, match="List of matching triangles exhausted before an acceptable transformation was found"): + find_transform(source, target) \ No newline at end of file diff --git a/modules/lithium.pyimage/tests/test_calibration.py b/modules/lithium.pyimage/tests/test_calibration.py new file mode 100644 index 00000000..8cb5fd22 --- /dev/null +++ b/modules/lithium.pyimage/tests/test_calibration.py @@ -0,0 +1,87 @@ +import pytest +import numpy as np +from pathlib import Path +from ..calibration import batch_calibrate, CalibrationParams, save_to_fits + +# FILE: modules/lithium.pyimage/image/fluxcalibration/test_calibration.py + + +@pytest.fixture +def setup_test_environment(tmp_path): + # Create a temporary directory with test images and parameter files + input_dir = tmp_path / "input_images" + input_dir.mkdir() + output_dir = tmp_path / "output_images" + params_dir = tmp_path / "params" + params_dir.mkdir() + response_dir = tmp_path / "response" + response_dir.mkdir() + + # Create dummy images + for i in range(3): + image = np.ones((100, 100), dtype=np.uint8) * (i * 85) + image_path = input_dir / f"test_image_{i}.png" + cv2.imwrite(str(image_path), image) + + # Create corresponding parameter files + params_content = f""" + wavelength=500.0 + aperture=100.0 + obstruction=20.0 + filter_width=10.0 + transmissivity=0.9 + gain=1.0 + quantum_efficiency=0.8 + extinction=0.1 + exposure_time=30.0 + """ + params_path = params_dir / f"test_image_{i}.txt" + with params_path.open('w') as f: + f.write(params_content.strip()) + + # Create corresponding response function files + response_function = np.ones((100, 100), dtype=np.uint8) * 255 + response_path = response_dir / f"test_image_{i}_response.fits" + save_to_fits(response_function, str(response_path), 0, 1, 1) + + return input_dir, output_dir, params_dir, response_dir + + +def test_batch_calibrate_valid_images(setup_test_environment): + input_dir, output_dir, params_dir, response_dir = setup_test_environment + batch_calibrate(input_dir, output_dir, params_dir, response_dir) + assert len(list(output_dir.glob("*.fits"))) == 3 + + +def test_batch_calibrate_missing_params(setup_test_environment): + input_dir, output_dir, params_dir, response_dir = setup_test_environment + missing_params_path = params_dir / "test_image_1.txt" + missing_params_path.unlink() + batch_calibrate(input_dir, output_dir, params_dir, response_dir) + assert len(list(output_dir.glob("*.fits"))) == 2 + + +def test_batch_calibrate_missing_response(setup_test_environment): + input_dir, output_dir, params_dir, response_dir = setup_test_environment + missing_response_path = response_dir / "test_image_1_response.fits" + missing_response_path.unlink() + batch_calibrate(input_dir, output_dir, params_dir, response_dir) + assert len(list(output_dir.glob("*.fits"))) == 3 + + +def test_batch_calibrate_invalid_input_directory(tmp_path): + invalid_input_dir = tmp_path / "invalid_input" + output_dir = tmp_path / "output_images" + params_dir = tmp_path / "params" + response_dir = tmp_path / "response" + with pytest.raises(NotADirectoryError): + batch_calibrate(invalid_input_dir, output_dir, + params_dir, response_dir) + + +def test_batch_calibrate_invalid_output_directory(setup_test_environment): + input_dir, _, params_dir, response_dir = setup_test_environment + invalid_output_dir = Path("/invalid/output") + with pytest.raises(OSError): + batch_calibrate(input_dir, invalid_output_dir, + params_dir, response_dir) diff --git a/modules/lithium.pyimage/tests/test_combination.py b/modules/lithium.pyimage/tests/test_combination.py new file mode 100644 index 00000000..27e5e7fc --- /dev/null +++ b/modules/lithium.pyimage/tests/test_combination.py @@ -0,0 +1,54 @@ +import pytest +import shutil +from pathlib import Path +from PIL import Image +from ..combination import batch_process + +# FILE: modules/lithium.pyimage/image/channel/test_combination.py + + +@pytest.fixture +def setup_test_images(tmp_path): + # Create a temporary directory with test images + img_dir = tmp_path / "images" + img_dir.mkdir() + for i in range(3): + for ch in ['R', 'G', 'B']: + img = Image.new('L', (100, 100), color=i*85) + img.save(img_dir / f"test_{i}_{ch}.png") + return img_dir + + +def test_batch_process_valid_images(setup_test_images, tmp_path): + output_dir = tmp_path / "output" + batch_process(setup_test_images, "RGB", output_dir, "PNG") + assert len(list(output_dir.glob("*.png"))) == 3 + + +def test_batch_process_missing_channel_images(setup_test_images, tmp_path): + # Remove one channel image to simulate missing channel + missing_image = setup_test_images / "test_1_G.png" + missing_image.unlink() + output_dir = tmp_path / "output" + batch_process(setup_test_images, "RGB", output_dir, "PNG") + assert len(list(output_dir.glob("*.png"))) == 2 + + +def test_batch_process_different_color_spaces(setup_test_images, tmp_path): + output_dir = tmp_path / "output" + batch_process(setup_test_images, "HSV", output_dir, "PNG") + assert len(list(output_dir.glob("*.png"))) == 3 + + +def test_batch_process_custom_channel_mapping(setup_test_images, tmp_path): + output_dir = tmp_path / "output" + batch_process(setup_test_images, "RGB", output_dir, + "PNG", mapping=['B', 'G', 'R']) + assert len(list(output_dir.glob("*.png"))) == 3 + + +def test_batch_process_invalid_directory(tmp_path): + invalid_dir = tmp_path / "invalid" + output_dir = tmp_path / "output" + with pytest.raises(FileNotFoundError): + batch_process(invalid_dir, "RGB", output_dir, "PNG") diff --git a/modules/lithium.pyimage/tests/test_curve.py b/modules/lithium.pyimage/tests/test_curve.py new file mode 100644 index 00000000..82440a34 --- /dev/null +++ b/modules/lithium.pyimage/tests/test_curve.py @@ -0,0 +1,256 @@ +import pytest +import numpy as np +from pathlib import Path +from ..curve import CurvesTransformation + +# FILE: modules/lithium.pyimage/image/transformation/test_curve.py + + +@pytest.fixture +def curve_transformation(): + # Initialize CurvesTransformation with default interpolation + return CurvesTransformation() + + +@pytest.fixture(params=['cubic', 'akima', 'linear']) +def curve_transformation_with_valid_interpolation(request): + # Initialize CurvesTransformation with valid interpolation methods + return CurvesTransformation(interpolation=request.param) + + +@pytest.fixture +def curve_transformation_with_invalid_interpolation(): + # Initialize CurvesTransformation with an invalid interpolation method + return CurvesTransformation(interpolation='invalid_method') + + +@pytest.fixture +def sample_image_grayscale(): + # Create a sample 2D grayscale image + return np.linspace(0, 255, 256).reshape(16, 16).astype(np.uint8) + + +@pytest.fixture +def sample_image_rgb(): + # Create a sample 3D RGB image + grayscale = np.linspace(0, 255, 256).reshape(16, 16).astype(np.uint8) + return np.stack([grayscale, grayscale, grayscale], axis=-1) + + +@pytest.fixture +def temp_json_file(tmp_path): + # Provide a temporary JSON file path + return tmp_path / "test_curve.json" + + +def test_initialization_default(curve_transformation): + assert curve_transformation.interpolation == 'akima' + assert curve_transformation.curve is None + assert curve_transformation.points == [] + + +def test_initialization_with_valid_interpolation(curve_transformation_with_valid_interpolation): + assert curve_transformation_with_valid_interpolation.interpolation in [ + 'cubic', 'akima', 'linear'] + + +def test_initialization_with_invalid_interpolation(curve_transformation_with_invalid_interpolation): + with pytest.raises(ValueError): + curve_transformation_with_invalid_interpolation._update_curve() + + +def test_add_point(curve_transformation): + curve_transformation.add_point(0.0, 0.0) + curve_transformation.add_point(1.0, 1.0) + assert curve_transformation.points == [(0.0, 0.0), (1.0, 1.0)] + assert curve_transformation.curve is not None + + +def test_remove_point(curve_transformation): + curve_transformation.add_point(0.0, 0.0) + curve_transformation.add_point(1.0, 1.0) + curve_transformation.remove_point(0) + assert curve_transformation.points == [(1.0, 1.0)] + assert curve_transformation.curve is None # Not enough points + + +def test_remove_point_invalid_index(curve_transformation): + curve_transformation.add_point(0.0, 0.0) + with pytest.raises(IndexError): + curve_transformation.remove_point(5) + + +def test_update_curve_with_insufficient_points(curve_transformation): + curve_transformation.add_point(0.0, 0.0) + assert curve_transformation.curve is None + + +def test_transform_grayscale_image(curve_transformation_with_valid_interpolation, sample_image_grayscale): + curve = curve_transformation_with_valid_interpolation + curve.add_point(0.0, 0.0) + curve.add_point(1.0, 255.0) + transformed_image = curve.transform(sample_image_grayscale) + assert transformed_image.shape == sample_image_grayscale.shape + assert transformed_image.dtype == np.uint8 + # Identity transformation + assert np.all(transformed_image == sample_image_grayscale) + + +def test_transform_rgb_image_channel(curve_transformation_with_valid_interpolation, sample_image_rgb): + curve = curve_transformation_with_valid_interpolation + curve.add_point(0.0, 0.0) + curve.add_point(1.0, 255.0) + transformed_image = curve.transform(sample_image_rgb, channel=1) + assert transformed_image.shape == sample_image_rgb.shape + assert transformed_image.dtype == np.uint8 + # Unchanged channels + assert np.all(transformed_image[:, :, 0] == sample_image_rgb[:, :, 0]) + assert np.all(transformed_image[:, :, 1] == sample_image_rgb[:, :, 1]) + assert np.all(transformed_image[:, :, 2] == sample_image_rgb[:, :, 2]) + + +def test_transform_without_defining_curve(curve_transformation, sample_image_grayscale): + curve = curve_transformation + with pytest.raises(ValueError): + curve.transform(sample_image_grayscale) + + +def test_invert_curve(curve_transformation_with_valid_interpolation, sample_image_grayscale): + curve = curve_transformation_with_valid_interpolation + curve.add_point(0.0, 0.0) + curve.add_point(1.0, 1.0) + curve.invert_curve() + transformed_image = curve.transform(sample_image_grayscale) + expected_image = 255 - sample_image_grayscale + assert np.array_equal(transformed_image, expected_image) + + +def test_store_and_restore_curve(curve_transformation_with_valid_interpolation, sample_image_grayscale): + curve = curve_transformation_with_valid_interpolation + curve.add_point(0.0, 0.0) + curve.add_point(0.5, 128.0) + curve.add_point(1.0, 255.0) + curve.store_curve() + curve.add_point(0.25, 64.0) + assert len(curve.points) == 4 + curve.restore_curve() + assert len(curve.points) == 3 + assert curve.points == [(0.0, 0.0), (0.5, 128.0), (1.0, 255.0)] + transformed_image = curve.transform(sample_image_grayscale) + assert transformed_image.shape == sample_image_grayscale.shape + + +def test_reset_curve(curve_transformation_with_valid_interpolation, sample_image_grayscale): + curve = curve_transformation_with_valid_interpolation + curve.add_point(0.0, 0.0) + curve.add_point(0.5, 200.0) + curve.reset_curve() + assert curve.points == [(0.0, 0.0), (1.0, 1.0)] + transformed_image = curve.transform(sample_image_grayscale) + normalized = sample_image_grayscale.astype(np.float32) / 255.0 + expected = (normalized * 255).astype(np.uint8) + # Identity transformation + assert np.array_equal(transformed_image, expected) + + +def test_save_curve(curve_transformation_with_valid_interpolation, temp_json_file): + curve = curve_transformation_with_valid_interpolation + curve.add_point(0.0, 0.0) + curve.add_point(1.0, 255.0) + curve.save_curve(temp_json_file) + assert temp_json_file.exists() + with open(temp_json_file, 'r') as f: + data = json.load(f) + assert data['interpolation'] == curve.interpolation + assert data['points'] == curve.points + + +def test_load_curve(curve_transformation_with_valid_interpolation, temp_json_file): + # Prepare a curve file + data = { + 'interpolation': 'linear', + 'points': [(0.0, 0.0), (0.5, 128.0), (1.0, 255.0)] + } + with open(temp_json_file, 'w') as f: + json.dump(data, f, indent=4) + curve = curve_transformation_with_valid_interpolation + curve.load_curve(temp_json_file) + assert curve.interpolation == 'linear' + assert curve.points == [(0.0, 0.0), (0.5, 128.0), (1.0, 255.0)] + + +def test_pixel_readout(curve_transformation_with_valid_interpolation): + curve = curve_transformation_with_valid_interpolation + curve.add_point(0.0, 0.0) + curve.add_point(1.0, 255.0) + value = curve.pixel_readout(0.5) + assert value == 127.5 # Linear interpolation + + +def test_pixel_readout_no_curve(curve_transformation): + value = curve_transformation.pixel_readout(0.5) + assert value is None + + +def test_pixel_readout_invalid_input(curve_transformation_with_valid_interpolation): + curve = curve_transformation_with_valid_interpolation + curve.add_point(0.0, 0.0) + curve.add_point(1.0, 255.0) + with pytest.raises(ValueError): + curve.pixel_readout("invalid_input") # Non-float input + + +def test_export_curve_points(curve_transformation_with_valid_interpolation): + curve = curve_transformation_with_valid_interpolation + points = [(0.0, 0.0), (0.5, 128.0), (1.0, 255.0)] + for x, y in points: + curve.add_point(x, y) + exported_points = curve.export_curve_points() + assert exported_points == points + + +def test_import_curve_points(curve_transformation_with_valid_interpolation): + curve = curve_transformation_with_valid_interpolation + points = [(0.0, 0.0), (0.25, 64.0), (0.75, 192.0), (1.0, 255.0)] + curve.import_curve_points(points) + assert curve.points == sorted(points, key=lambda point: point[0]) + transformed_image = curve.transform( + np.array([[0, 128, 255]], dtype=np.uint8)) + expected = np.array([[0, 128, 255]], dtype=np.uint8) + assert np.array_equal(transformed_image, expected) + + +def test_get_interpolation_methods(curve_transformation_with_valid_interpolation): + methods = curve_transformation_with_valid_interpolation.get_interpolation_methods() + assert methods == ['cubic', 'akima', 'linear'] + + +def test_transform_invalid_image_format(curve_transformation_with_valid_interpolation): + curve = curve_transformation_with_valid_interpolation + curve.add_point(0.0, 0.0) + curve.add_point(1.0, 255.0) + invalid_image = np.zeros((16, 16, 16), dtype=np.uint8) # Unsupported shape + with pytest.raises(ValueError): + curve.transform(invalid_image) + + +def test_transform_rgb_image_without_channel(curve_transformation_with_valid_interpolation, sample_image_rgb): + curve = curve_transformation_with_valid_interpolation + curve.add_point(0.0, 0.0) + curve.add_point(1.0, 255.0) + with pytest.raises(ValueError): + curve.transform(sample_image_rgb) # Missing channel parameter + + +def test_load_curve_invalid_file(curve_transformation_with_valid_interpolation, tmp_path): + invalid_file = tmp_path / "invalid_curve.json" + with open(invalid_file, 'w') as f: + f.write("Invalid JSON content") + with pytest.raises(json.JSONDecodeError): + curve_transformation_with_valid_interpolation.load_curve(invalid_file) + + +def test_load_curve_missing_file(curve_transformation_with_valid_interpolation): + with pytest.raises(FileNotFoundError): + curve_transformation_with_valid_interpolation.load_curve( + "non_existent_curve.json") diff --git a/modules/lithium.pyimage/tests/test_debayer.py b/modules/lithium.pyimage/tests/test_debayer.py new file mode 100644 index 00000000..176f5715 --- /dev/null +++ b/modules/lithium.pyimage/tests/test_debayer.py @@ -0,0 +1,110 @@ +import pytest +import numpy as np +from pathlib import Path +from ..debayer import Debayer, DebayerConfig + +# FILE: modules/lithium.pyimage/image/debayer/test_debayer.py + + +@pytest.fixture +def sample_cfa_image(): + # Create a dummy CFA image (10x10) with a simple pattern + return np.tile(np.array([[0, 1], [1, 0]], dtype=np.uint8), (5, 5)) + + +@pytest.fixture +def debayer_config(): + # Provide a default DebayerConfig instance + return DebayerConfig() + + +@pytest.fixture +def debayer_instance(debayer_config): + # Provide a Debayer instance initialized with the default configuration + return Debayer(config=debayer_config) + + +def test_initialization_default(): + debayer = Debayer() + assert debayer.config.method == 'bilinear' + assert debayer.config.pattern is None + assert debayer.config.num_threads == 4 + assert not debayer.config.visualize_intermediate + assert debayer.config.visualization_save_path is None + assert not debayer.config.save_debayered_images + + +def test_initialization_custom(): + config = DebayerConfig(method='vng', pattern='RGGB', num_threads=2) + debayer = Debayer(config=config) + assert debayer.config.method == 'vng' + assert debayer.config.pattern == 'RGGB' + assert debayer.config.num_threads == 2 + + +def test_detect_bayer_pattern(debayer_instance, sample_cfa_image): + pattern = debayer_instance.detect_bayer_pattern(sample_cfa_image) + assert pattern in ['BGGR', 'RGGB', 'GBRG', 'GRBG'] + + +def test_debayer_superpixel(debayer_instance, sample_cfa_image): + debayer_instance.config.pattern = 'BGGR' + rgb_image = debayer_instance.debayer_superpixel(sample_cfa_image) + assert rgb_image.shape == (5, 5, 3) # Superpixel reduces size by half + + +def test_debayer_bilinear(debayer_instance, sample_cfa_image): + debayer_instance.config.pattern = 'BGGR' + rgb_image = debayer_instance.debayer_bilinear(sample_cfa_image) + assert rgb_image.shape == (10, 10, 3) + + +def test_debayer_vng(debayer_instance, sample_cfa_image): + debayer_instance.config.pattern = 'BGGR' + rgb_image = debayer_instance.debayer_vng(sample_cfa_image) + assert rgb_image.shape == (10, 10, 3) + + +def test_parallel_debayer_ahd(debayer_instance, sample_cfa_image): + debayer_instance.config.pattern = 'BGGR' + rgb_image = debayer_instance.parallel_debayer_ahd(sample_cfa_image) + assert rgb_image.shape == (10, 10, 3) + + +def test_debayer_laplacian_harmonization(debayer_instance, sample_cfa_image): + debayer_instance.config.pattern = 'BGGR' + rgb_image = debayer_instance.debayer_laplacian_harmonization( + sample_cfa_image) + assert rgb_image.shape == (10, 10, 3) + + +def test_unsupported_bayer_pattern(debayer_instance, sample_cfa_image): + debayer_instance.config.pattern = 'INVALID' + with pytest.raises(ValueError): + debayer_instance.debayer_bilinear(sample_cfa_image) + + +def test_unsupported_debayer_method(debayer_instance, sample_cfa_image): + debayer_instance.config.method = 'unsupported_method' + with pytest.raises(ValueError): + debayer_instance.debayer_image(sample_cfa_image) + + +def test_visualize_intermediate_steps(debayer_instance, sample_cfa_image, tmp_path): + debayer_instance.config.visualize_intermediate = True + debayer_instance.config.visualization_save_path = tmp_path / "intermediate_steps.png" + debayer_instance.config.pattern = 'BGGR' + debayered_image = debayer_instance.debayer_bilinear(sample_cfa_image) + Debayer.visualize_intermediate_steps( + "dummy_path", debayered_image, debayer_instance.config) + assert debayer_instance.config.visualization_save_path.exists() + + +def test_save_debayered_images(debayer_instance, sample_cfa_image, tmp_path): + debayer_instance.config.save_debayered_images = True + debayer_instance.config.debayered_save_path_template = str( + tmp_path / "{original_name}_{method}.png") + debayer_instance.config.pattern = 'BGGR' + debayer_instance.debayer_image(sample_cfa_image) + expected_path = tmp_path / "debayered_image_bilinear.png" + assert expected_path.exists() diff --git a/modules/lithium.pyimage/tests/test_defect_correction.py b/modules/lithium.pyimage/tests/test_defect_correction.py new file mode 100644 index 00000000..751878d3 --- /dev/null +++ b/modules/lithium.pyimage/tests/test_defect_correction.py @@ -0,0 +1,129 @@ +import pytest +import numpy as np +from ..defect_correction import defect_map_enhanced + +# FILE: modules/lithium.pyimage/image/defect_map/test_defect_correction.py + + +@pytest.fixture +def setup_test_image(): + # Create a test image and defect map + image = np.ones((10, 10), dtype=np.float32) * 100 + defect_map = np.ones((10, 10), dtype=np.float32) + defect_map[5, 5] = 0 # Introduce a defect + return image, defect_map + + +def test_defect_map_enhanced_mean(setup_test_image): + image, defect_map = setup_test_image + corrected_image = defect_map_enhanced(image, defect_map, operation='mean') + assert corrected_image[5, 5] != 100 # Defect should be corrected + + +def test_defect_map_enhanced_gaussian(setup_test_image): + image, defect_map = setup_test_image + corrected_image = defect_map_enhanced( + image, defect_map, operation='gaussian') + assert corrected_image[5, 5] != 100 # Defect should be corrected + + +def test_defect_map_enhanced_minimum(setup_test_image): + image, defect_map = setup_test_image + corrected_image = defect_map_enhanced( + image, defect_map, operation='minimum') + assert corrected_image[5, 5] != 100 # Defect should be corrected + + +def test_defect_map_enhanced_maximum(setup_test_image): + image, defect_map = setup_test_image + corrected_image = defect_map_enhanced( + image, defect_map, operation='maximum') + assert corrected_image[5, 5] != 100 # Defect should be corrected + + +def test_defect_map_enhanced_median(setup_test_image): + image, defect_map = setup_test_image + corrected_image = defect_map_enhanced( + image, defect_map, operation='median') + assert corrected_image[5, 5] != 100 # Defect should be corrected + + +def test_defect_map_enhanced_bilinear(setup_test_image): + image, defect_map = setup_test_image + corrected_image = defect_map_enhanced( + image, defect_map, operation='bilinear') + assert corrected_image[5, 5] != 100 # Defect should be corrected + + +def test_defect_map_enhanced_bicubic(setup_test_image): + image, defect_map = setup_test_image + corrected_image = defect_map_enhanced( + image, defect_map, operation='bicubic') + assert corrected_image[5, 5] != 100 # Defect should be corrected + + +def test_defect_map_enhanced_square_structure(setup_test_image): + image, defect_map = setup_test_image + corrected_image = defect_map_enhanced( + image, defect_map, structure='square') + assert corrected_image[5, 5] != 100 # Defect should be corrected + + +def test_defect_map_enhanced_circular_structure(setup_test_image): + image, defect_map = setup_test_image + corrected_image = defect_map_enhanced( + image, defect_map, structure='circular') + assert corrected_image[5, 5] != 100 # Defect should be corrected + + +def test_defect_map_enhanced_horizontal_structure(setup_test_image): + image, defect_map = setup_test_image + corrected_image = defect_map_enhanced( + image, defect_map, structure='horizontal') + assert corrected_image[5, 5] != 100 # Defect should be corrected + + +def test_defect_map_enhanced_vertical_structure(setup_test_image): + image, defect_map = setup_test_image + corrected_image = defect_map_enhanced( + image, defect_map, structure='vertical') + assert corrected_image[5, 5] != 100 # Defect should be corrected + + +def test_defect_map_enhanced_with_edge_protection(setup_test_image): + image, defect_map = setup_test_image + corrected_image = defect_map_enhanced( + image, defect_map, protect_edges=True) + assert corrected_image[5, 5] != 100 # Defect should be corrected + + +def test_defect_map_enhanced_without_edge_protection(setup_test_image): + image, defect_map = setup_test_image + corrected_image = defect_map_enhanced( + image, defect_map, protect_edges=False) + assert corrected_image[5, 5] != 100 # Defect should be corrected + + +def test_defect_map_enhanced_with_adaptive_structure(setup_test_image): + image, defect_map = setup_test_image + corrected_image = defect_map_enhanced( + image, defect_map, adaptive_structure=True) + assert corrected_image[5, 5] != 100 # Defect should be corrected + + +def test_defect_map_enhanced_without_adaptive_structure(setup_test_image): + image, defect_map = setup_test_image + corrected_image = defect_map_enhanced( + image, defect_map, adaptive_structure=False) + assert corrected_image[5, 5] != 100 # Defect should be corrected + + +def test_defect_map_enhanced_with_cfa(setup_test_image): + image, defect_map = setup_test_image + # Create a dummy RGB image + image = np.stack([image, image, image], axis=-1) + defect_map = np.stack([defect_map, defect_map, defect_map], axis=-1) + corrected_image = defect_map_enhanced(image, defect_map, is_cfa=True) + assert corrected_image[5, 5, 0] != 100 # Defect should be corrected + assert corrected_image[5, 5, 1] != 100 # Defect should be corrected + assert corrected_image[5, 5, 2] != 100 # Defect should be corrected diff --git a/modules/lithium.pyimage/tests/test_extraction.py b/modules/lithium.pyimage/tests/test_extraction.py new file mode 100644 index 00000000..dbd593ab --- /dev/null +++ b/modules/lithium.pyimage/tests/test_extraction.py @@ -0,0 +1,81 @@ +import pytest +import numpy as np +import cv2 +from pathlib import Path +from ..extraction import extract_channels, merge_channels, process_directory + +# FILE: modules/lithium.pyimage/image/channel/test_extraction.py + + +@pytest.fixture +def setup_test_image(tmp_path): + # Create a temporary directory with a test image + img_dir = tmp_path / "images" + img_dir.mkdir() + image = np.ones((100, 100, 3), dtype=np.uint8) * 128 + img_path = img_dir / "test_image.png" + cv2.imwrite(str(img_path), image) + return img_path + + +def test_extract_channels_rgb(setup_test_image): + image = cv2.imread(str(setup_test_image)) + channels = extract_channels(image, color_space='RGB') + assert 'R' in channels + assert 'G' in channels + assert 'B' in channels + assert channels['R'].shape == (100, 100) + assert channels['G'].shape == (100, 100) + assert channels['B'].shape == (100, 100) + + +def test_extract_channels_hsv(setup_test_image): + image = cv2.imread(str(setup_test_image)) + channels = extract_channels(image, color_space='HSV') + assert 'H' in channels + assert 'S' in channels + assert 'V' in channels + assert channels['H'].shape == (100, 100) + assert channels['S'].shape == (100, 100) + assert channels['V'].shape == (100, 100) + + +def test_merge_channels_rgb(setup_test_image): + image = cv2.imread(str(setup_test_image)) + channels = extract_channels(image, color_space='RGB') + merged_image = merge_channels(channels) + assert merged_image is not None + assert merged_image.shape == (100, 100, 3) + + +def test_merge_channels_hsv(setup_test_image): + image = cv2.imread(str(setup_test_image)) + channels = extract_channels(image, color_space='HSV') + merged_image = merge_channels(channels) + assert merged_image is not None + assert merged_image.shape == (100, 100, 3) + + +@pytest.fixture +def setup_test_directory(tmp_path): + # Create a temporary directory with test images + img_dir = tmp_path / "images" + img_dir.mkdir() + for i in range(3): + image = np.ones((100, 100, 3), dtype=np.uint8) * (i * 85) + img_path = img_dir / f"test_image_{i}.png" + cv2.imwrite(str(img_path), image) + return img_dir + + +def test_process_directory(setup_test_directory, tmp_path): + output_dir = tmp_path / "output" + process_directory(setup_test_directory, output_dir, color_space='RGB') + assert len(list(output_dir.glob("*.png"))) == 9 # 3 images * 3 channels + + +def test_process_directory_invalid_input(tmp_path): + invalid_dir = tmp_path / "invalid" + output_dir = tmp_path / "output" + with pytest.raises(NotADirectoryError): + process_directory(invalid_dir, output_dir, color_space='RGB') diff --git a/modules/lithium.pyimage/tests/test_grexpert.py b/modules/lithium.pyimage/tests/test_grexpert.py new file mode 100644 index 00000000..6b8804aa --- /dev/null +++ b/modules/lithium.pyimage/tests/test_grexpert.py @@ -0,0 +1,83 @@ +import pytest +from pathlib import Path +from argparse import Namespace +from modules.lithium.pyimage.image.api.grexpert import validate_args, SerializationException + + +def test_validate_args_valid(): + args = Namespace( + filenames=[Path("test_image.png")], + operation="background-extraction", + smoothing=0.5, + strength=0.5, + batch_size=16, + correction="Subtraction" + ) + validate_args(args) + + +def test_validate_args_non_existent_file(): + args = Namespace( + filenames=[Path("non_existent_file.png")], + operation="background-extraction" + ) + with pytest.raises(SerializationException, match="Input file 'non_existent_file.png' does not exist."): + validate_args(args) + + +def test_validate_args_unsupported_operation(): + args = Namespace( + filenames=[Path("test_image.png")], + operation="unsupported-operation" + ) + with pytest.raises(SerializationException, match="Unsupported operation 'unsupported-operation'. Use 'background-extraction' or 'denoising'."): + validate_args(args) + + +def test_validate_args_invalid_smoothing(): + args = Namespace( + filenames=[Path("test_image.png")], + operation="background-extraction", + smoothing=1.5 + ) + with pytest.raises(SerializationException, match="Smoothing value out of range: 1.5"): + validate_args(args) + + +def test_validate_args_invalid_strength(): + args = Namespace( + filenames=[Path("test_image.png")], + operation="background-extraction", + strength=1.5 + ) + with pytest.raises(SerializationException, match="Strength value out of range: 1.5"): + validate_args(args) + + +def test_validate_args_invalid_batch_size(): + args = Namespace( + filenames=[Path("test_image.png")], + operation="background-extraction", + batch_size=33 + ) + with pytest.raises(SerializationException, match="Batch size out of range: 33"): + validate_args(args) + + +def test_validate_args_invalid_correction_method(): + args = Namespace( + filenames=[Path("test_image.png")], + operation="background-extraction", + correction="InvalidMethod" + ) + with pytest.raises(SerializationException, match="Invalid correction method: InvalidMethod"): + validate_args(args) + + +def test_validate_args_missing_strength_for_denoising(): + args = Namespace( + filenames=[Path("test_image.png")], + operation="denoising" + ) + with pytest.raises(SerializationException, match="Missing 'strength' parameter for 'denoising' operation."): + validate_args(args) diff --git a/modules/lithium.pyimage/tests/test_histogram.py b/modules/lithium.pyimage/tests/test_histogram.py new file mode 100644 index 00000000..fcc08b7a --- /dev/null +++ b/modules/lithium.pyimage/tests/test_histogram.py @@ -0,0 +1,168 @@ +import pytest +import numpy as np +from unittest.mock import patch, MagicMock +from pathlib import Path +import sys +from ..histogram import main + +# FILE: modules/lithium.pyimage/image/transformation/test_histogram.py + + +@pytest.fixture +def sample_image(): + # Create a dummy BGR image + return np.zeros((100, 100, 3), dtype=np.uint8) + + +@pytest.fixture +def mock_args(): + args = [ + '--input', 'dummy_input.jpg', + '--output', 'dummy_output.jpg' + ] + return args + + +@pytest.fixture +def mock_cv2_imread(sample_image): + with patch('cv2.imread', return_value=sample_image) as mock_imread: + yield mock_imread + + +@pytest.fixture +def mock_cv2_imshow(): + with patch('cv2.imshow') as mock_imshow: + yield mock_imshow + + +@pytest.fixture +def mock_cv2_waitKey(): + with patch('cv2.waitKey', return_value=0) as mock_waitKey: + yield mock_waitKey + + +@pytest.fixture +def mock_cv2_destroyAllWindows(): + with patch('cv2.destroyAllWindows') as mock_destroy: + yield mock_destroy + + +@pytest.fixture +def mock_matplotlib_show(): + with patch('matplotlib.pyplot.show') as mock_show: + yield mock_show + + +@pytest.fixture +def mock_logger(): + with patch('histogram.logger') as mock_logger: + yield mock_logger + + +def test_main_success(mock_args, mock_cv2_imread, mock_cv2_imshow, + mock_cv2_waitKey, mock_cv2_destroyAllWindows, + mock_matplotlib_show, mock_logger): + with patch.object(sys, 'argv', ['histogram.py'] + mock_args): + main() + # Verify that imread was called with the correct input path + mock_cv2_imread.assert_called_with('dummy_input.jpg') + # Verify that imshow was called for original and transformed images + assert mock_cv2_imshow.call_count >= 4 # Original, transformed, etc. + # Verify that waitKey and destroyAllWindows were called + mock_cv2_waitKey.assert_called() + mock_cv2_destroyAllWindows.assert_called() + # Verify that matplotlib show was called + mock_matplotlib_show.assert_called() + # Verify logging calls + mock_logger.info.assert_any_call("Loading image from dummy_input.jpg") + mock_logger.info.assert_any_call( + "Image loaded successfully with shape (100, 100, 3)") + mock_logger.info.assert_any_call( + "Histogram transformation applied successfully") + mock_logger.info.assert_any_call("Applying auto clipping") + + +def test_main_invalid_input_path(mock_args, mock_cv2_imread, mock_logger): + # Configure imread to return None to simulate failed image load + mock_cv2_imread.return_value = None + with patch.object(sys, 'argv', ['histogram.py', '--input', 'non_existent.jpg', '--output', 'dummy_output.jpg']): + with pytest.raises(SystemExit) as exc_info: + main() + assert exc_info.value.code == 1 + # Verify that an error was logged + mock_logger.error.assert_called_with( + "Failed to load image: non_existent.jpg") + + +def test_main_save_histogram(mock_args, mock_cv2_imread, mock_cv2_imshow, + mock_cv2_waitKey, mock_cv2_destroyAllWindows, + mock_matplotlib_show, mock_logger): + args = [ + '--input', 'dummy_input.jpg', + '--output', 'dummy_output.jpg', + '--save_histogram', 'histogram.png' + ] + with patch.object(sys, 'argv', ['histogram.py'] + args): + with patch('histogram.save_histogram') as mock_save_hist: + main() + # Verify that save_histogram was called with correct arguments + mock_save_hist.assert_called_once() + mock_logger.info.assert_any_call( + "Saving histogram to histogram.png") + + +def test_main_real_time_preview(mock_args, mock_cv2_imread, mock_cv2_imshow, + mock_cv2_waitKey, mock_cv2_destroyAllWindows, + mock_matplotlib_show, mock_logger): + args = [ + '--input', 'dummy_input.jpg', + '--output', 'dummy_output.jpg', + '--real_time_preview' + ] + with patch.object(sys, 'argv', ['histogram.py'] + args): + with patch('histogram.real_time_preview') as mock_preview: + main() + # Verify that real_time_preview was called + mock_preview.assert_called_once() + + +def test_main_missing_arguments(): + # Test missing required arguments + with patch.object(sys, 'argv', ['histogram.py', '--input', 'dummy_input.jpg']): + with pytest.raises(SystemExit) as exc_info: + main() + assert exc_info.value.code != 0 # Expecting non-zero exit due to missing --output + + +def test_main_invalid_arguments(mock_args, mock_cv2_imread, mock_cv2_imshow, + mock_cv2_waitKey, mock_cv2_destroyAllWindows, + mock_matplotlib_show, mock_logger): + # Test with invalid operation argument + args = [ + '--input', 'dummy_input.jpg', + '--output', 'dummy_output.jpg', + '--operation', 'invalid_op' + ] + with patch.object(sys, 'argv', ['histogram.py'] + args): + with pytest.raises(SystemExit): + main() + # Verify that an error was logged + mock_logger.error.assert_called() + + +def test_main_save_histogram_failure(mock_args, mock_cv2_imread, mock_cv2_imshow, + mock_cv2_waitKey, mock_cv2_destroyAllWindows, + mock_matplotlib_show, mock_logger): + args = [ + '--input', 'dummy_input.jpg', + '--output', 'dummy_output.jpg', + '--save_histogram', '/invalid_path/histogram.png' + ] + with patch.object(sys, 'argv', ['histogram.py'] + args): + with patch('histogram.save_histogram', side_effect=Exception("Save failed")): + with pytest.raises(Exception) as exc_info: + main() + assert str(exc_info.value) == "Save failed" + # Verify that an error was logged + mock_logger.error.assert_called_with( + "Failed to save histogram: Save failed") diff --git a/modules/lithium.pyimage/tests/test_preview.py b/modules/lithium.pyimage/tests/test_preview.py new file mode 100644 index 00000000..cd5c40e8 --- /dev/null +++ b/modules/lithium.pyimage/tests/test_preview.py @@ -0,0 +1,42 @@ +import pytest +import numpy as np +import cv2 +from pathlib import Path +from ..image.adaptive_stretch.preview import apply_real_time_preview + +# FILE: modules/lithium.pyimage/image/adaptive_stretch/test_preview.py + + +def test_apply_real_time_preview_grayscale(): + image = np.ones((100, 100), dtype=np.uint8) * 128 + processed_image = apply_real_time_preview(image) + assert processed_image.shape == image.shape + assert processed_image.dtype == np.uint8 + + +def test_apply_real_time_preview_color(): + image = np.ones((100, 100, 3), dtype=np.uint8) * 128 + processed_image = apply_real_time_preview(image) + assert processed_image.shape == image.shape + assert processed_image.dtype == np.uint8 + + +def test_apply_real_time_preview_with_noise_threshold(): + image = np.ones((100, 100), dtype=np.uint8) * 128 + processed_image = apply_real_time_preview(image, noise_threshold=0.01) + assert processed_image.shape == image.shape + assert processed_image.dtype == np.uint8 + + +def test_apply_real_time_preview_with_contrast_protection(): + image = np.ones((100, 100), dtype=np.uint8) * 128 + processed_image = apply_real_time_preview(image, contrast_protection=0.5) + assert processed_image.shape == image.shape + assert processed_image.dtype == np.uint8 + + +def test_apply_real_time_preview_with_roi(): + image = np.ones((100, 100), dtype=np.uint8) * 128 + processed_image = apply_real_time_preview(image, roi=(10, 10, 50, 50)) + assert processed_image.shape == image.shape + assert processed_image.dtype == np.uint8 diff --git a/modules/lithium.pyimage/tests/test_raw.py b/modules/lithium.pyimage/tests/test_raw.py new file mode 100644 index 00000000..85470e35 --- /dev/null +++ b/modules/lithium.pyimage/tests/test_raw.py @@ -0,0 +1,108 @@ +import pytest +import numpy as np +import cv2 +from pathlib import Path +from ..raw import RawImageProcessor, ImageFormat + +# FILE: modules/lithium.pyimage/image/raw/test_raw.py + + +@pytest.fixture +def setup_raw_image(tmp_path): + # Create a temporary directory with a test RAW image + raw_image_path = tmp_path / "test_image.raw" + # Create a dummy RAW image file (this should be replaced with an actual RAW file for real tests) + with open(raw_image_path, 'wb') as f: + f.write(b'\x00' * 1024) # Dummy content + return raw_image_path + + +def test_raw_image_processor_initialization(setup_raw_image): + processor = RawImageProcessor(raw_path=setup_raw_image) + assert processor.raw_path == setup_raw_image + assert processor.rgb_image is not None + assert processor.bgr_image is not None + + +def test_adjust_contrast(setup_raw_image): + processor = RawImageProcessor(raw_path=setup_raw_image) + original_image = processor.bgr_image.copy() + processor.adjust_contrast(alpha=1.5) + assert not np.array_equal(processor.bgr_image, original_image) + + +def test_adjust_brightness(setup_raw_image): + processor = RawImageProcessor(raw_path=setup_raw_image) + original_image = processor.bgr_image.copy() + processor.adjust_brightness(beta=50) + assert not np.array_equal(processor.bgr_image, original_image) + + +def test_apply_sharpening(setup_raw_image): + processor = RawImageProcessor(raw_path=setup_raw_image) + original_image = processor.bgr_image.copy() + processor.apply_sharpening() + assert not np.array_equal(processor.bgr_image, original_image) + + +def test_apply_gamma_correction(setup_raw_image): + processor = RawImageProcessor(raw_path=setup_raw_image) + original_image = processor.bgr_image.copy() + processor.apply_gamma_correction(gamma=1.5) + assert not np.array_equal(processor.bgr_image, original_image) + + +def test_rotate_image(setup_raw_image): + processor = RawImageProcessor(raw_path=setup_raw_image) + original_image = processor.bgr_image.copy() + processor.rotate_image(angle=45) + assert not np.array_equal(processor.bgr_image, original_image) + + +def test_resize_image(setup_raw_image): + processor = RawImageProcessor(raw_path=setup_raw_image) + original_image = processor.bgr_image.copy() + processor.resize_image(width=200) + assert processor.bgr_image.shape[1] == 200 + + +def test_adjust_color_balance(setup_raw_image): + processor = RawImageProcessor(raw_path=setup_raw_image) + original_image = processor.bgr_image.copy() + processor.adjust_color_balance(red=1.2, green=1.1, blue=0.9) + assert not np.array_equal(processor.bgr_image, original_image) + + +def test_apply_blur(setup_raw_image): + processor = RawImageProcessor(raw_path=setup_raw_image) + original_image = processor.bgr_image.copy() + processor.apply_blur(ksize=(5, 5), method="gaussian") + assert not np.array_equal(processor.bgr_image, original_image) + + +def test_histogram_equalization(setup_raw_image): + processor = RawImageProcessor(raw_path=setup_raw_image) + original_image = processor.bgr_image.copy() + processor.histogram_equalization() + assert not np.array_equal(processor.bgr_image, original_image) + + +def test_convert_to_grayscale(setup_raw_image): + processor = RawImageProcessor(raw_path=setup_raw_image) + processor.convert_to_grayscale() + assert len(processor.bgr_image.shape) == 2 + + +def test_save_image(setup_raw_image, tmp_path): + processor = RawImageProcessor(raw_path=setup_raw_image) + output_path = tmp_path / "output_image.png" + processor.save_image(output_path=output_path, file_format=ImageFormat.PNG) + assert output_path.exists() + + +def test_reset(setup_raw_image): + processor = RawImageProcessor(raw_path=setup_raw_image) + processor.adjust_contrast(alpha=1.5) + processor.reset() + assert np.array_equal(processor.bgr_image, cv2.cvtColor( + processor.rgb_image, cv2.COLOR_RGB2BGR)) diff --git a/modules/lithium.pyimage/tests/test_resample.py b/modules/lithium.pyimage/tests/test_resample.py new file mode 100644 index 00000000..9257e6ea --- /dev/null +++ b/modules/lithium.pyimage/tests/test_resample.py @@ -0,0 +1,128 @@ +import pytest +import numpy as np +import cv2 +from pathlib import Path +from ..resample import Resampler, ImageFormat + +# FILE: modules/lithium.pyimage/image/resample/test_resample.py + + +@pytest.fixture +def setup_test_image(tmp_path): + # Create a temporary directory with a test image + img_dir = tmp_path / "images" + img_dir.mkdir() + image = np.ones((100, 100, 3), dtype=np.uint8) * 128 + img_path = img_dir / "test_image.jpg" + cv2.imwrite(str(img_path), image) + return img_path + + +def test_resampler_initialization(setup_test_image, tmp_path): + output_path = tmp_path / "output_image.jpg" + resampler = Resampler( + input_image_path=setup_test_image, + output_image_path=output_path + ) + assert resampler.input_image_path == setup_test_image + assert resampler.output_image_path == output_path + + +def test_adjust_brightness_contrast(setup_test_image, tmp_path): + output_path = tmp_path / "output_image.jpg" + resampler = Resampler( + input_image_path=setup_test_image, + output_image_path=output_path, + brightness=1.5, + contrast=1.5 + ) + resampler.process() + processed_image = cv2.imread(str(output_path)) + assert processed_image is not None + + +def test_apply_sharpening(setup_test_image, tmp_path): + output_path = tmp_path / "output_image.jpg" + resampler = Resampler( + input_image_path=setup_test_image, + output_image_path=output_path, + sharpen=True + ) + resampler.process() + processed_image = cv2.imread(str(output_path)) + assert processed_image is not None + + +def test_apply_blur(setup_test_image, tmp_path): + output_path = tmp_path / "output_image.jpg" + resampler = Resampler( + input_image_path=setup_test_image, + output_image_path=output_path, + blur=(5, 5), + blur_method='gaussian' + ) + resampler.process() + processed_image = cv2.imread(str(output_path)) + assert processed_image is not None + + +def test_histogram_equalization(setup_test_image, tmp_path): + output_path = tmp_path / "output_image.jpg" + resampler = Resampler( + input_image_path=setup_test_image, + output_image_path=output_path, + histogram_equalization=True + ) + resampler.process() + processed_image = cv2.imread(str(output_path)) + assert processed_image is not None + + +def test_convert_to_grayscale(setup_test_image, tmp_path): + output_path = tmp_path / "output_image.jpg" + resampler = Resampler( + input_image_path=setup_test_image, + output_image_path=output_path, + grayscale=True + ) + resampler.process() + processed_image = cv2.imread(str(output_path), cv2.IMREAD_GRAYSCALE) + assert processed_image is not None + assert len(processed_image.shape) == 2 + + +def test_rotate_image(setup_test_image, tmp_path): + output_path = tmp_path / "output_image.jpg" + resampler = Resampler( + input_image_path=setup_test_image, + output_image_path=output_path, + rotate_angle=45 + ) + resampler.process() + processed_image = cv2.imread(str(output_path)) + assert processed_image is not None + + +def test_resize_image(setup_test_image, tmp_path): + output_path = tmp_path / "output_image.jpg" + resampler = Resampler( + input_image_path=setup_test_image, + output_image_path=output_path, + width=200, + height=200 + ) + resampler.process() + processed_image = cv2.imread(str(output_path)) + assert processed_image.shape[1] == 200 + assert processed_image.shape[0] == 200 + + +def test_process_invalid_input(tmp_path): + invalid_image_path = tmp_path / "invalid_image.jpg" + output_path = tmp_path / "output_image.jpg" + resampler = Resampler( + input_image_path=invalid_image_path, + output_image_path=output_path + ) + with pytest.raises(ValueError): + resampler.process() diff --git a/modules/lithium.pyimage/tests/test_stretch.py b/modules/lithium.pyimage/tests/test_stretch.py new file mode 100644 index 00000000..582fb4a7 --- /dev/null +++ b/modules/lithium.pyimage/tests/test_stretch.py @@ -0,0 +1,64 @@ +import pytest +import numpy as np +import cv2 +from pathlib import Path +from ..image.adaptive_stretch.stretch import AdaptiveStretch + +# FILE: modules/lithium.pyimage/image/adaptive_stretch/test_stretch.py + + +def test_adaptive_stretch_initialization(): + stretcher = AdaptiveStretch(noise_threshold=0.01, contrast_protection=0.5, max_curve_points=50, roi=( + 10, 10, 50, 50), save_intermediate=True, intermediate_dir=Path("test_intermediate")) + assert stretcher.noise_threshold == 0.01 + assert stretcher.contrast_protection == 0.5 + assert stretcher.max_curve_points == 50 + assert stretcher.roi == (10, 10, 50, 50) + assert stretcher.save_intermediate is True + assert stretcher.intermediate_dir == Path("test_intermediate") + + +def test_compute_brightness_diff(): + stretcher = AdaptiveStretch() + image = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=np.uint8) + diff_x, diff_y = stretcher.compute_brightness_diff(image) + expected_diff_x = np.array( + [[1, 1, 0], [1, 1, 0], [1, 1, 0]], dtype=np.int8) + expected_diff_y = np.array( + [[3, 3, 3], [3, 3, 3], [0, 0, 0]], dtype=np.int8) + assert np.array_equal(diff_x, expected_diff_x) + assert np.array_equal(diff_y, expected_diff_y) + + +def test_stretch_grayscale_image(): + stretcher = AdaptiveStretch() + image = np.ones((100, 100), dtype=np.uint8) * 128 + stretched_image = stretcher.stretch(image) + assert stretched_image.shape == image.shape + assert stretched_image.dtype == np.uint8 + + +def test_stretch_color_image(): + stretcher = AdaptiveStretch() + image = np.ones((100, 100, 3), dtype=np.uint8) * 128 + stretched_image = stretcher.stretch(image) + assert stretched_image.shape == image.shape + assert stretched_image.dtype == np.uint8 + + +def test_stretch_with_roi(): + stretcher = AdaptiveStretch(roi=(10, 10, 50, 50)) + image = np.ones((100, 100), dtype=np.uint8) * 128 + stretched_image = stretcher.stretch(image) + assert stretched_image.shape == image.shape + assert stretched_image.dtype == np.uint8 + + +def test_save_intermediate_results(tmp_path): + intermediate_dir = tmp_path / "intermediate" + stretcher = AdaptiveStretch( + save_intermediate=True, intermediate_dir=intermediate_dir) + image = np.ones((100, 100), dtype=np.uint8) * 128 + stretcher.stretch(image) + assert intermediate_dir.exists() + assert len(list(intermediate_dir.glob("*.png"))) > 0 diff --git a/modules/lithium.pyimage/tests/test_utils.py b/modules/lithium.pyimage/tests/test_utils.py new file mode 100644 index 00000000..f8ed1a5d --- /dev/null +++ b/modules/lithium.pyimage/tests/test_utils.py @@ -0,0 +1,72 @@ +import pytest +import numpy as np +from pathlib import Path +from astropy.io import fits +from ..utils import read_fits_header +from ..core import CalibrationParams + +# FILE: modules/lithium.pyimage/image/fluxcalibration/test_utils.py + + +@pytest.fixture +def setup_fits_file(tmp_path): + # Create a temporary directory with a test FITS file + fits_path = tmp_path / "test_image.fits" + data = np.zeros((100, 100), dtype=np.float32) + hdu = fits.PrimaryHDU(data) + hdr = hdu.header + hdr['WAVELEN'] = 500.0 + hdr['TRANSMIS'] = 0.8 + hdr['FILTWDTH'] = 100.0 + hdr['APERTURE'] = 200.0 + hdr['OBSTRUCT'] = 50.0 + hdr['EXPTIME'] = 60.0 + hdr['EXTINCT'] = 0.1 + hdr['GAIN'] = 1.5 + hdr['QUANTEFF'] = 0.9 + hdu.writeto(fits_path) + return fits_path + + +def test_read_fits_header_valid(setup_fits_file): + params = read_fits_header(str(setup_fits_file)) + assert params.wavelength == 500.0 + assert params.transmissivity == 0.8 + assert params.filter_width == 100.0 + assert params.aperture == 200.0 + assert params.obstruction == 50.0 + assert params.exposure_time == 60.0 + assert params.extinction == 0.1 + assert params.gain == 1.5 + assert params.quantum_efficiency == 0.9 + + +def test_read_fits_header_missing_keys(tmp_path): + fits_path = tmp_path / "test_image_missing_keys.fits" + data = np.zeros((100, 100), dtype=np.float32) + hdu = fits.PrimaryHDU(data) + hdu.writeto(fits_path) + params = read_fits_header(str(fits_path)) + assert params.wavelength == 550 # Default value + assert params.transmissivity == 0.8 # Default value + assert params.filter_width == 100 # Default value + assert params.aperture == 200 # Default value + assert params.obstruction == 50 # Default value + assert params.exposure_time == 60 # Default value + assert params.extinction == 0.1 # Default value + assert params.gain == 1.5 # Default value + assert params.quantum_efficiency == 0.9 # Default value + + +def test_read_fits_header_invalid_file(tmp_path): + invalid_fits_path = tmp_path / "invalid_image.fits" + with open(invalid_fits_path, 'w') as f: + f.write("This is not a valid FITS file.") + with pytest.raises(OSError): + read_fits_header(str(invalid_fits_path)) + + +def test_read_fits_header_non_existent_file(): + non_existent_path = "non_existent_file.fits" + with pytest.raises(OSError): + read_fits_header(non_existent_path) diff --git a/modules/lithium.pytarget/target/calc_alt.py b/modules/lithium.pytarget/target/calc_alt.py new file mode 100644 index 00000000..fa05b9b2 --- /dev/null +++ b/modules/lithium.pytarget/target/calc_alt.py @@ -0,0 +1,314 @@ +import datetime +from astropy.coordinates import EarthLocation, AltAz, SkyCoord +from astroplan import Observer, FixedTarget, moon_illumination +from astropy.time import Time +import astropy.units as u +import numpy as np +from dataclasses import dataclass +from loguru import logger +import argparse +from typing import List, Tuple, Dict, Optional + + +@dataclass +class ObservationResult: + altitude: Optional[float] + azimuth: Optional[float] + highest_altitude: Optional[float] + available_shoot_time: Optional[float] + is_above_horizon: bool + + +def calculate_current_alt(observation_start_time: datetime.datetime, observer_location: EarthLocation, ra: float, dec: float) -> ObservationResult: + """ + Calculate the current altitude and azimuth of a celestial object given its RA and Dec. + + Parameters: + observation_start_time (datetime.datetime): The start time of the observation. + observer_location (EarthLocation): The location of the observer. + ra (float): Right Ascension of the celestial object in degrees. + dec (float): Declination of the celestial object in degrees. + + Returns: + ObservationResult: A dataclass containing the altitude, azimuth, highest altitude, available shoot time, and whether the object is above the horizon. + """ + logger.debug( + f"Calculating current altitude and azimuth for RA: {ra}, Dec: {dec} at {observation_start_time}") + + try: + # Create a SkyCoord object for the celestial object + sky_obj = SkyCoord(ra, dec, unit='deg', frame='icrs') + observation_time_astropy = Time(observation_start_time) + altaz_frame = AltAz(obstime=observation_time_astropy, + location=observer_location) + sky_obj_altaz = sky_obj.transform_to(altaz_frame) + + # Check if the object is above the horizon + is_above_horizon = sky_obj_altaz.alt > 0 * u.deg + + # Calculate the highest altitude and available shoot time + highest_alt = calculate_highest_alt( + observation_start_time, observer_location, ra, dec) + available_shoot_time = calculate_available_shoot_time( + observation_start_time, observer_location, ra, dec) + + logger.info( + f"Calculated altitude: {sky_obj_altaz.alt.value}°, azimuth: {sky_obj_altaz.az.value}°, highest altitude: {highest_alt}, available shoot time: {available_shoot_time} hours, is above horizon: {bool(is_above_horizon)}") + return ObservationResult( + altitude=sky_obj_altaz.alt.value, + azimuth=sky_obj_altaz.az.value, + highest_altitude=highest_alt, + available_shoot_time=available_shoot_time, + is_above_horizon=bool(is_above_horizon) + ) + except Exception as e: + logger.error(f"Error in calculating current altitude: {e}") + return ObservationResult(altitude=None, azimuth=None, highest_altitude=None, available_shoot_time=None, is_above_horizon=False) + + +def calculate_highest_alt(observation_start_time: datetime.datetime, observer_location: EarthLocation, ra: float, dec: float) -> Optional[float]: + """ + Calculate the highest altitude of a celestial object during the night. + + Parameters: + observation_start_time (datetime.datetime): The start time of the observation. + observer_location (EarthLocation): The location of the observer. + ra (float): Right Ascension of the celestial object in degrees. + dec (float): Declination of the celestial object in degrees. + + Returns: + Optional[float]: The highest altitude of the celestial object in degrees, or None if not observable. + """ + logger.debug( + f"Calculating highest altitude for RA: {ra}, Dec: {dec} during the night of {observation_start_time}") + + try: + # Create a FixedTarget object for the celestial object + target = FixedTarget(coord=SkyCoord( + ra, dec, unit='deg', frame='icrs'), name="Target") + observer = Observer(location=observer_location) + observation_time = Time(observation_start_time) + + # Calculate the start and end of the night + begin_night = observer.twilight_evening_astronomical( + observation_time, which='nearest') + end_night = observer.twilight_morning_astronomical( + observation_time, which='next') + + if begin_night < end_night: + # Calculate the time of the object's meridian transit + midnight = observer.target_meridian_transit_time( + observation_time, target, which='nearest') + + if begin_night < midnight < end_night: + max_altitude = observer.altaz(midnight, target).alt + else: + # Calculate the altitudes at the start and end of the night + nighttime_altitudes = [observer.altaz(time, target).alt for time in [ + begin_night, end_night]] + max_altitude = max(nighttime_altitudes) + logger.info(f"Calculated highest altitude: {max_altitude.value}°") + return max_altitude.value + else: + logger.warning("The celestial object is not observable tonight.") + return None + except Exception as e: + logger.error(f"Error in calculating highest altitude: {e}") + return None + + +def calculate_available_shoot_time(observation_start_time: datetime.datetime, observer_location: EarthLocation, ra: float, dec: float) -> Optional[float]: + """ + Calculate the available shooting time for a celestial object during the night. + + Parameters: + observation_start_time (datetime.datetime): The start time of the observation. + observer_location (EarthLocation): The location of the observer. + ra (float): Right Ascension of the celestial object in degrees. + dec (float): Declination of the celestial object in degrees. + + Returns: + Optional[float]: The available shooting time in hours, or None if not observable. + """ + logger.debug( + f"Calculating available shooting time for RA: {ra}, Dec: {dec} during the night of {observation_start_time}") + + try: + # Create a FixedTarget object for the celestial object + target = FixedTarget(coord=SkyCoord( + ra, dec, unit=u.deg), name="Target") + observer = Observer(location=observer_location) + observation_time = Time(observation_start_time) + begin_of_night = observer.twilight_evening_astronomical( + observation_time, which='nearest') + end_of_night = observer.twilight_morning_astronomical( + observation_time, which='next') + + step_size = 15 # minutes + delta_t = end_of_night - begin_of_night + if delta_t.sec <= 0: + logger.warning( + "Invalid time period: Begin of night is after the end of night.") + return None + + # Generate time intervals throughout the night + times = begin_of_night + delta_t * \ + np.arange(0, 1, step_size * 60.0 / delta_t.sec) + altitudes = observer.altaz(times, target).alt + + # Determine the times when the object is above 50 degrees altitude + observable_time_indices = altitudes > 50 * u.deg + observable_times = times[observable_time_indices] + + # Estimate the total observable time in hours + observable_time_estimate = len(observable_times) * step_size / 60 + logger.info( + f"Calculated available shooting time: {observable_time_estimate} hours") + return observable_time_estimate + except Exception as e: + logger.error(f"Error in calculating available shooting time: {e}") + return None + + +def calculate_moon_phase(observation_time: datetime.datetime) -> float: + """ + Calculate the moon phase as a percentage of illumination. + + Parameters: + observation_time (datetime.datetime): The time of the observation. + + Returns: + float: The moon phase as a percentage of illumination. + """ + logger.debug(f"Calculating moon phase for {observation_time}") + + try: + moon_phase = moon_illumination(Time(observation_time)) + logger.info(f"Calculated moon phase: {moon_phase * 100:.2f}%") + return moon_phase * 100 # Convert to percentage + except Exception as e: + logger.error(f"Error in calculating moon phase: {e}") + return -1 + + +def evaluate_observation_conditions(observer_location: EarthLocation, observation_time: datetime.datetime, ra: float, dec: float) -> Dict[str, Optional[float]]: + """ + Evaluate the observation conditions for a celestial object. + + Parameters: + observer_location (EarthLocation): The location of the observer. + observation_time (datetime.datetime): The time of the observation. + ra (float): Right Ascension of the celestial object in degrees. + dec (float): Declination of the celestial object in degrees. + + Returns: + Dict[str, Optional[float]]: A dictionary containing the current altitude, azimuth, highest altitude, available shoot time, whether the object is above the horizon, moon phase, and an overall score. + """ + logger.debug( + f"Evaluating observation conditions for RA: {ra}, Dec: {dec} at {observation_time}") + + try: + result = calculate_current_alt( + observation_time, observer_location, ra, dec) + moon_phase_percent = calculate_moon_phase(observation_time) + + score = 100 + + # Adjust score based on altitude and moon phase + if result.altitude is not None and result.altitude < 30: + score -= 20 + + if moon_phase_percent > 50: + score -= 30 + + score = max(score, 0) + + logger.info(f"Evaluation complete with score: {score}") + return { + "current_altitude": result.altitude, + "current_azimuth": result.azimuth, + "highest_altitude": result.highest_altitude, + "available_shoot_time": result.available_shoot_time, + "is_above_horizon": result.is_above_horizon, + "moon_phase": moon_phase_percent, + "overall_score": score + } + except Exception as e: + logger.error(f"Error in evaluating observation conditions: {e}") + return {} + + +def plan_multiple_observations(observer_location: EarthLocation, start_time: datetime.datetime, ra_dec_list: List[Tuple[float, float]], days: int = 1) -> Dict[str, Dict[str, Optional[float]]]: + """ + Plan observations for multiple celestial objects over a specified number of days. + + Parameters: + observer_location (EarthLocation): The location of the observer. + start_time (datetime.datetime): The start time of the observations. + ra_dec_list (List[Tuple[float, float]]): A list of tuples containing the RA and Dec of the celestial objects. + days (int): The number of days to plan observations for. + + Returns: + Dict[str, Dict[str, Optional[float]]]: A dictionary containing the observation conditions for each object on each day. + """ + logger.debug( + f"Planning observations for multiple objects over {days} days starting from {start_time}") + + schedule = {} + try: + for day in range(days): + current_time = start_time + datetime.timedelta(days=day) + for ra, dec in ra_dec_list: + key = f"{ra}_{dec}_{current_time.date()}" + schedule[key] = evaluate_observation_conditions( + observer_location, current_time, ra, dec) + logger.info("Multiple observation planning completed.") + return schedule + except Exception as e: + logger.error(f"Error in planning multiple observations: {e}") + return {} + + +def main(): + """ + Main function to parse command line arguments and calculate observation conditions. + """ + parser = argparse.ArgumentParser( + description="Calculate celestial object observation conditions.") + parser.add_argument("--lat", type=float, required=True, + help="Latitude of the observer location.") + parser.add_argument("--lon", type=float, required=True, + help="Longitude of the observer location.") + parser.add_argument("--height", type=float, default=0, + help="Height of the observer location in meters.") + parser.add_argument("--ra", type=float, required=True, + help="Right Ascension of the celestial object in degrees.") + parser.add_argument("--dec", type=float, required=True, + help="Declination of the celestial object in degrees.") + parser.add_argument("--days", type=int, default=1, + help="Number of days to plan observations for.") + args = parser.parse_args() + + # Create an EarthLocation object for the observer's location + location = EarthLocation(lat=args.lat * u.deg, + lon=args.lon * u.deg, height=args.height * u.m) + observation_time = datetime.datetime.now() + + # Calculate the current altitude and azimuth + result = calculate_current_alt( + observation_time, location, args.ra, args.dec) + print( + f"Current Altitude: {result.altitude} degrees, Azimuth: {result.azimuth} degrees") + print(f"Highest Altitude: {result.highest_altitude} degrees") + print(f"Available Shooting Time: {result.available_shoot_time} hours") + print(f"Is Above Horizon: {result.is_above_horizon}") + + # Plan observations for multiple days + ra_dec_list = [(args.ra, args.dec)] + schedule = plan_multiple_observations( + location, observation_time, ra_dec_list, days=args.days) + print(schedule) + + +if __name__ == "__main__": + main() diff --git a/pysrc/target/calc_azalt.py b/modules/lithium.pytarget/target/calc_azalt.py similarity index 100% rename from pysrc/target/calc_azalt.py rename to modules/lithium.pytarget/target/calc_azalt.py diff --git a/modules/lithium.pytarget/target/calc_fov.py b/modules/lithium.pytarget/target/calc_fov.py new file mode 100644 index 00000000..0e1abc78 --- /dev/null +++ b/modules/lithium.pytarget/target/calc_fov.py @@ -0,0 +1,184 @@ +import numpy as np +from loguru import logger +import argparse +from typing import Tuple + + +def setup_logging(): + """Set up the loguru logging configuration to log both to console and to a file.""" + logger.add("fov_calculation.log", level="DEBUG", + format="{time} {level} {message}", rotation="10 MB") + logger.info("Logging setup complete.") + + +def ra_dec2fixed_xyz(ra: float, dec: float) -> np.ndarray: + """ + Convert RA/DEC to fixed XYZ coordinates in the celestial coordinate system. + + Args: + ra: Right ascension in degrees. + dec: Declination in degrees. + + Returns: + A numpy array representing the [x, y, z] coordinates. + """ + ra_rad = np.radians(ra) + dec_rad = np.radians(dec) + + x = np.cos(ra_rad) * np.cos(dec_rad) + y = np.sin(ra_rad) * np.cos(dec_rad) + z = np.sin(dec_rad) + + logger.debug(f"RA: {ra}°, Dec: {dec}° -> X: {x}, Y: {y}, Z: {z}") + + return np.array([x, y, z]) + + +def fixed_xyz2ra_dec(vector: np.ndarray) -> Tuple[float, float]: + """ + Convert fixed XYZ coordinates to RA/DEC. + + Args: + vector: A numpy array with the [x, y, z] coordinates. + + Returns: + A tuple containing RA and DEC in degrees. + """ + x, y, z = vector + + ra = np.arctan2(y, x) + ra = np.degrees(ra) + + r = np.sqrt(x**2 + y**2) + dec = np.arctan2(z, r) + dec = np.degrees(dec) + + logger.debug(f"X: {x}, Y: {y}, Z: {z} -> RA: {ra}°, Dec: {dec}°") + + return ra, dec + + +def calc_fov_points(x_pixels: int, x_pixel_size: float, y_pixels: int, y_pixel_size: float, focal_length: int, + target_ra: float, target_dec: float, camera_rotation: float) -> Tuple[Tuple[float, float], + Tuple[float, + float], + Tuple[float, + float], + Tuple[float, float]]: + """ + Calculate the field of view (FOV) points in RA/DEC coordinates for a camera given its parameters. + + Args: + x_pixels: Number of pixels in the x direction. + x_pixel_size: Size of each pixel in the x direction in micrometers. + y_pixels: Number of pixels in the y direction. + y_pixel_size: Size of each pixel in the y direction in micrometers. + focal_length: Focal length of the camera in millimeters. + target_ra: Target right ascension in degrees. + target_dec: Target declination in degrees. + camera_rotation: Rotation of the camera in degrees. + + Returns: + A tuple containing four tuples, each representing the RA/DEC coordinates of a corner of the FOV. + """ + if focal_length <= 0: + raise ValueError("Focal length must be a positive value.") + + logger.info(f"Calculating FOV points for target RA: {target_ra}°, Dec: {target_dec}°, " + f"Camera rotation: {camera_rotation}°, Focal length: {focal_length}mm") + + # Convert pixel sizes to millimeters + x_length = x_pixels * x_pixel_size / 1000 + y_length = y_pixels * y_pixel_size / 1000 + logger.debug(f"Sensor size: {x_length}mm x {y_length}mm") + + # Calculate FOV angles + FOV_x = np.degrees(np.arctan(x_length / (2 * focal_length)) * 2) + FOV_y = np.degrees(np.arctan(y_length / (2 * focal_length)) * 2) + logger.debug(f"FOV angles: FOV_x = {FOV_x}°, FOV_y = {FOV_y}°") + + FOV_x = np.radians(FOV_x) + FOV_y = np.radians(FOV_y) + + # Define corner points in the camera's field of view + A = np.array([1, np.tan(FOV_x / 2), np.tan(FOV_y / 2)]).reshape([3, 1]) + B = np.array([1, -np.tan(FOV_x / 2), np.tan(FOV_y / 2)]).reshape([3, 1]) + C = np.array([1, -np.tan(FOV_x / 2), -np.tan(FOV_y / 2)]).reshape([3, 1]) + D = np.array([1, np.tan(FOV_x / 2), -np.tan(FOV_y / 2)]).reshape([3, 1]) + + # Convert target RA/DEC and rotation to radians + RA = np.radians(target_ra) + DEC = np.radians(target_dec) + THETA = np.radians(camera_rotation) + + # Rotation matrices + Rx = np.array([[1, 0, 0], + [0, np.cos(THETA), -np.sin(THETA)], + [0, np.sin(THETA), np.cos(THETA)]]) + + Ry = np.array([[np.cos(DEC), 0, np.sin(DEC)], + [0, 1, 0], + [-np.sin(DEC), 0, np.cos(DEC)]]) + + Rz = np.array([[np.cos(RA), -np.sin(RA), 0], + [np.sin(RA), np.cos(RA), 0], + [0, 0, 1]]) + + # Combined rotation matrix + R = Rz @ Ry @ Rx + logger.debug(f"Combined rotation matrix: \n{R}") + + # Apply the rotation to each corner point + R_A = R @ A + R_B = R @ B + R_C = R @ C + R_D = R @ D + + corners = (fixed_xyz2ra_dec(R_A.flatten()), + fixed_xyz2ra_dec(R_B.flatten()), + fixed_xyz2ra_dec(R_C.flatten()), + fixed_xyz2ra_dec(R_D.flatten())) + + logger.info(f"Calculated FOV corners: {corners}") + + return corners + + +def main(): + parser = argparse.ArgumentParser( + description="Calculate the field of view (FOV) points in RA/DEC coordinates for a camera.") + parser.add_argument('--x_pixels', type=int, required=True, + help='Number of pixels in the x direction') + parser.add_argument('--x_pixel_size', type=float, required=True, + help='Size of each pixel in the x direction in micrometers') + parser.add_argument('--y_pixels', type=int, required=True, + help='Number of pixels in the y direction') + parser.add_argument('--y_pixel_size', type=float, required=True, + help='Size of each pixel in the y direction in micrometers') + parser.add_argument('--focal_length', type=int, required=True, + help='Focal length of the camera in millimeters') + parser.add_argument('--target_ra', type=float, required=True, + help='Target right ascension in degrees') + parser.add_argument('--target_dec', type=float, + required=True, help='Target declination in degrees') + parser.add_argument('--camera_rotation', type=float, + default=0.0, help='Rotation of the camera in degrees') + + args = parser.parse_args() + + # Set up logging + setup_logging() + + try: + fov_points = calc_fov_points(x_pixels=args.x_pixels, x_pixel_size=args.x_pixel_size, y_pixels=args.y_pixels, + y_pixel_size=args.y_pixel_size, focal_length=args.focal_length, + target_ra=args.target_ra, target_dec=args.target_dec, camera_rotation=args.camera_rotation) + for idx, point in enumerate(fov_points, start=1): + print(f"Corner {idx}: RA = {point[0]:.6f}°, DEC = {point[1]:.6f}°") + except Exception as e: + logger.error(f"Error calculating FOV points: {e}") + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/pysrc/target/calc_twilight.py b/modules/lithium.pytarget/target/calc_twilight.py similarity index 76% rename from pysrc/target/calc_twilight.py rename to modules/lithium.pytarget/target/calc_twilight.py index a76d4c1b..ec9bb65e 100644 --- a/pysrc/target/calc_twilight.py +++ b/modules/lithium.pytarget/target/calc_twilight.py @@ -1,10 +1,19 @@ +import sys from astroplan import Observer from astropy.time import Time -from astropy.coordinates import Angle +from astropy.coordinates import Angle, EarthLocation from datetime import datetime, timedelta from zoneinfo import ZoneInfo from typing import Dict, Union, Optional from loguru import logger +import argparse + + +def setup_logging(): + """Set up the loguru logging configuration to log both to console and to a file.""" + logger.add("twilight_calculation.log", level="DEBUG", + format="{time} {level} {message}", rotation="10 MB") + logger.info("Logging setup complete.") def calculate_twilight(observer: Observer, time: Time, time_offset: ZoneInfo) -> Dict[str, Dict[str, str]]: @@ -176,29 +185,52 @@ def format_time(t): return ( return {} -# Example usage: +def main(): + parser = argparse.ArgumentParser( + description="Calculate twilight and golden hour times for a given location and time.") + parser.add_argument('--lat', type=float, required=True, + help='Latitude of the observer in degrees') + parser.add_argument('--lon', type=float, required=True, + help='Longitude of the observer in degrees') + parser.add_argument('--height', type=float, default=0, + help='Height of the observer above sea level in meters') + parser.add_argument('--date', type=str, required=True, + help='Date and time of the observation (format: YYYY-MM-DD HH:MM:SS)') + parser.add_argument('--timezone', type=str, required=True, + help='Timezone of the observation (e.g., America/Los_Angeles)') + + args = parser.parse_args() + + # Set up logging + setup_logging() + + try: + observer_location = EarthLocation( + lat=args.lat * u.deg, lon=args.lon * u.deg, height=args.height * u.m) + observer = Observer(location=observer_location) + observation_time = Time(datetime.strptime( + args.date, '%Y-%m-%d %H:%M:%S')) + time_offset = ZoneInfo(args.timezone) + + # Calculate twilight times + twilight_times = calculate_twilight( + observer, observation_time, time_offset) + print("Twilight times:", twilight_times) + + # Find when the Sun reaches a specific altitude (-6 degrees is often used for civil twilight) + sun_altitude_time = find_sun_altitude_time( + observer, -6, observation_time, time_offset) + print("Sun altitude time (-6 degrees):", sun_altitude_time) + + # Calculate golden hour times + golden_hour_times = calculate_golden_hour( + observer, observation_time, time_offset) + print("Golden hour times:", golden_hour_times) + + except Exception as e: + logger.error(f"Error in main execution: {e}") + sys.exit(1) + + if __name__ == "__main__": - from astropy.coordinates import EarthLocation - import astropy.units as u - - # Observer location example - observer_location = EarthLocation( - lat=34.0522*u.deg, lon=-118.2437*u.deg, height=71*u.m) - observer = Observer(location=observer_location) - observation_time = Time(datetime.now()) - time_offset = ZoneInfo("America/Los_Angeles") - - # Calculate twilight times - twilight_times = calculate_twilight( - observer, observation_time, time_offset) - print("Twilight times:", twilight_times) - - # Find when the Sun reaches a specific altitude (-6 degrees is often used for civil twilight) - sun_altitude_time = find_sun_altitude_time( - observer, -6, observation_time, time_offset) - print("Sun altitude time (-6 degrees):", sun_altitude_time) - - # Calculate golden hour times - golden_hour_times = calculate_golden_hour( - observer, observation_time, time_offset) - print("Golden hour times:", golden_hour_times) + main() diff --git a/modules/lithium.pytarget/target/find_all.py b/modules/lithium.pytarget/target/find_all.py new file mode 100644 index 00000000..a8344d2d --- /dev/null +++ b/modules/lithium.pytarget/target/find_all.py @@ -0,0 +1,238 @@ +from astropy.coordinates import EarthLocation, AltAz, SkyCoord +from astropy.time import Time +import pandas as pd +from pathlib import Path +import numpy as np +import datetime +import re +from pydantic import BaseModel, field_validator +from typing import List, Optional, Dict, Tuple +from loguru import logger +import argparse + +from calc_alt import calculate_star_info + +# File paths +this_file_path = Path(__file__).resolve().parent +full_list_file = this_file_path / 'TargetListAll.csv' + +too_big_search_string = [ + 'Minkowski', 'M', 'NGC', 'PGC', 'Sh', 'UGC', 'vdB', 'IC' +] + + +class DSO(BaseModel): + """Data model for Deep Sky Object (DSO).""" + name: str + ra: Optional[float] = None # Right Ascension (0 <= ra <= 360) + dec: Optional[float] = None # Declination (-90 <= dec <= 90) + alias: Optional[str] = None + magnitude: Optional[float] = None # Magnitude + altitude_curve: Optional[List[float]] = None + azimuth_curve: Optional[List[float]] = None + + @field_validator('ra', mode='before') + def validate_ra(cls, v, info): + """Validate that RA is within the range 0 to 360 degrees.""" + if v is not None and not (0 <= v <= 360): + raise ValueError( + f"{info.field_name.capitalize()} value {v} out of range (0 <= value <= 360).") + return v + + @field_validator('dec', mode='before') + def validate_dec(cls, v, info): + """Validate that Dec is within the range -90 to 90 degrees.""" + if v is not None and not (-90 <= v <= 90): + raise ValueError( + f"{info.field_name.capitalize()} value {v} out of range (-90 <= value <= 90).") + return v + + +def setup_logging(): + """Set up the loguru logging configuration to log both to console and to a file.""" + logger.add("dso_search.log", level="DEBUG", + format="{time} {level} {message}", rotation="10 MB") + logger.info("Logging setup complete.") + + +def read_csv(file_path: Path) -> pd.DataFrame: + """Read the CSV file and handle potential errors.""" + try: + logger.info(f"Reading CSV file from {file_path}") + df = pd.read_csv(file_path) + df = df.replace({np.nan: None}) + return df + except Exception as e: + logger.error(f"Error reading the CSV file at {file_path}: {e}") + raise FileNotFoundError( + f"Error reading the CSV file at {file_path}: {e}") + + +def sort_search_result(search_result: List[DSO]) -> List[DSO]: + """Sort the search results based on priority (NGC, M, IC first).""" + logger.debug("Sorting search results based on priority.") + first_prior = [res for res in search_result if any( + prefix in res.name for prefix in ('NGC', 'M ', 'IC'))] + second_prior = [res for res in search_result if res not in first_prior] + return first_prior + second_prior + + +def search_DSO(to_search_name: str, observer_location: EarthLocation, date_time_string: datetime.datetime, + magnitude_range: Optional[Tuple[float, float]] = None, + ra_range: Optional[Tuple[float, float]] = None, + dec_range: Optional[Tuple[float, float]] = None, + alias: Optional[str] = None) -> List[DSO]: + logger.info( + f"Starting DSO search for {to_search_name} at {date_time_string}") + df = read_csv(full_list_file) + + results = None + if to_search_name.isdigit(): + pattern = rf"\b0*{to_search_name}\b" + results = df[df['name'].str.contains(pattern, na=False, regex=True)] + elif to_search_name.isalpha(): + if len(to_search_name) > 1 and to_search_name not in too_big_search_string: + results = df[(df['name'].str.contains(to_search_name, na=False)) | + (df['alias'].str.contains(to_search_name, case=False, na=False))] + else: + match = re.match(r"([a-z]+)([0-9]+)", to_search_name, re.I) + if match: + letters, digit = match.groups() + letters = letters.lower() + pattern = rf"\b0*{digit}\b" + mask_letter = df['name'].str.lower( + ).str.contains(letters, na=False) + mask_digit = df['name'].str.contains(pattern, na=False, regex=True) + results = df[mask_letter & mask_digit] + + if results is not None and not results.empty: + if magnitude_range: + results = results[(results['magnitude'] >= magnitude_range[0]) & ( + results['magnitude'] <= magnitude_range[1])] + if ra_range: + results = results[(results['ra'] >= ra_range[0]) + & (results['ra'] <= ra_range[1])] + if dec_range: + results = results[(results['dec'] >= dec_range[0]) + & (results['dec'] <= dec_range[1])] + if alias: + results = results[results['alias'].str.contains( + alias, case=False, na=False)] + + result_dicts = results.to_dict('records') + dsos = [DSO(**res) for res in result_dicts] + dsos = sort_search_result(dsos) + + for dso in dsos: + if dso.ra and dso.dec: + dso.altitude_curve, dso.azimuth_curve = calculate_alt_and_az_curve( + dso.ra, dso.dec, observer_location, date_time_string) + logger.debug(f"Calculated Alt/Az for {dso.name}") + + logger.info(f"Found {len(dsos)} matching DSOs.") + return dsos + else: + logger.info("No matching DSOs found.") + return [] + + +def calculate_alt_and_az_curve(ra: float, dec: float, observer_location: EarthLocation, + date_time_string: datetime.datetime) -> Tuple[List[float], List[float]]: + """Calculate the altitude and azimuth curve for given coordinates.""" + logger.debug( + f"Calculating altitude and azimuth curve for RA: {ra}, Dec: {dec}") + try: + # Convert datetime to astropy Time object + time = Time(date_time_string) + + # Create SkyCoord object + sky_coord = SkyCoord(ra=ra, dec=dec, unit="deg") + + # Calculate AltAz object for each hour in the given datetime + altaz_frame = AltAz(obstime=time, location=observer_location) + altaz = sky_coord.transform_to(altaz_frame) + + # Extract altitude and azimuth + altitude_curve = altaz.alt.deg + azimuth_curve = altaz.az.deg + + logger.debug(f"Altitude: {altitude_curve}, Azimuth: {azimuth_curve}") + + return altitude_curve, azimuth_curve + except Exception as e: + logger.error(f"Error calculating altitude and azimuth curve: {e}") + return [], [] + + +def batch_search_DSO(names: List[str], observer_location: EarthLocation, date_time_string: datetime.datetime, + magnitude_range: Optional[Tuple[float, float]] = None, + ra_range: Optional[Tuple[float, float]] = None, + dec_range: Optional[Tuple[float, float]] = None, + alias: Optional[str] = None) -> Dict[str, List[DSO]]: + """Search multiple DSOs in batch mode.""" + logger.info(f"Starting batch search for {len(names)} DSOs.") + results = {} + for name in names: + results[name] = search_DSO(name, observer_location, date_time_string, + magnitude_range=magnitude_range, + ra_range=ra_range, + dec_range=dec_range, + alias=alias) + logger.info("Batch search completed.") + return results + + +def main(): + parser = argparse.ArgumentParser( + description="Search for Deep Sky Objects (DSOs) and calculate their altitude and azimuth curves.") + parser.add_argument('--lat', type=float, required=True, + help='Latitude of the observer in degrees') + parser.add_argument('--lon', type=float, required=True, + help='Longitude of the observer in degrees') + parser.add_argument('--height', type=float, default=0, + help='Height of the observer above sea level in meters') + parser.add_argument('--date', type=str, required=True, + help='Date and time of the observation (format: YYYY-MM-DD HH:MM:SS)') + parser.add_argument('--names', type=str, nargs='+', + required=True, help='Names of the DSOs to search for') + parser.add_argument('--magnitude_range', type=float, + nargs=2, help='Magnitude range for filtering DSOs') + parser.add_argument('--ra_range', type=float, nargs=2, + help='Right Ascension range for filtering DSOs') + parser.add_argument('--dec_range', type=float, nargs=2, + help='Declination range for filtering DSOs') + parser.add_argument('--alias', type=str, help='Alias for filtering DSOs') + + args = parser.parse_args() + + # Set up logging + setup_logging() + + try: + observer_location = EarthLocation( + lat=args.lat * u.deg, lon=args.lon * u.deg, height=args.height * u.m) + date_time_string = datetime.datetime.strptime( + args.date, '%Y-%m-%d %H:%M:%S') + + # Batch search DSOs + batch_results = batch_search_DSO(args.names, observer_location, date_time_string, + magnitude_range=tuple( + args.magnitude_range) if args.magnitude_range else None, + ra_range=tuple( + args.ra_range) if args.ra_range else None, + dec_range=tuple( + args.dec_range) if args.dec_range else None, + alias=args.alias) + for name, results in batch_results.items(): + print(f"Results for {name}:") + for dso in results: + print( + f"Name: {dso.name}, Altitude Curve: {dso.altitude_curve}, Azimuth Curve: {dso.azimuth_curve}") + + except Exception as e: + logger.error(f"Error in main execution: {e}") + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/pysrc/target/find_named.py b/modules/lithium.pytarget/target/find_named.py similarity index 77% rename from pysrc/target/find_named.py rename to modules/lithium.pytarget/target/find_named.py index d843952e..93173ecf 100644 --- a/pysrc/target/find_named.py +++ b/modules/lithium.pytarget/target/find_named.py @@ -8,6 +8,7 @@ from dataclasses import dataclass from enum import Enum from loguru import logger +import argparse this_file_path = Path(__file__) star_file = this_file_path.parent / 'NamedStars.csv' @@ -157,31 +158,45 @@ def get_light_star_list(observation_location: EarthLocation, observation_time: d return filtered_star_list -# Example Usage -if __name__ == "__main__": +def main(): + parser = argparse.ArgumentParser( + description="Find named stars visible from a given location and time.") + parser.add_argument('--lat', type=float, required=True, + help='Latitude of the observer in degrees') + parser.add_argument('--lon', type=float, required=True, + help='Longitude of the observer in degrees') + parser.add_argument('--height', type=float, default=0, + help='Height of the observer above sea level in meters') + parser.add_argument('--date', type=str, required=True, + help='Date and time of the observation (format: YYYY-MM-DD HH:MM:SS)') + parser.add_argument('--max_magnitude', type=int, default=2, + help='Maximum magnitude of stars to include') + parser.add_argument('--range_filter', type=str, nargs='*', + help='Cardinal directions to filter the stars') + parser.add_argument('--constellation_filter', type=str, + help='Constellation to filter the stars') + parser.add_argument('--constellation_zh_filter', type=str, + help='Constellation Chinese name to filter the stars') + parser.add_argument('--name_filter', type=str, + help='Star name to filter the stars') + parser.add_argument('--show_name_filter', type=str, + help='Star Chinese name to filter the stars') + + args = parser.parse_args() + # Set up logging setup_logging() - # Example location: New York City, USA - observation_location = EarthLocation( - lat=40.7128*u.deg, lon=-74.0060*u.deg, height=10*u.m) - - # Observation time: Current time in UTC - observation_time = datetime.datetime.now().astimezone(ZoneInfo("UTC")) - - # Maximum magnitude of stars to display - max_magnitude = 2 - - # Range filter: Only show stars in the north and east skies - range_filter = ['north', 'east'] - - # Constellation filter: Only show stars in the Orion constellation - constellation_filter = 'Ori' - - # Call the function to get the list of visible stars try: + observation_location = EarthLocation( + lat=args.lat * u.deg, lon=args.lon * u.deg, height=args.height * u.m) + observation_time = datetime.datetime.strptime( + args.date, '%Y-%m-%d %H:%M:%S').astimezone(ZoneInfo("UTC")) + + # Get the list of visible stars visible_stars = get_light_star_list( - observation_location, observation_time, max_magnitude, range_filter, constellation_filter) + observation_location, observation_time, args.max_magnitude, args.range_filter, + args.constellation_filter, args.constellation_zh_filter, args.name_filter, args.show_name_filter) # Print the results if visible_stars: @@ -197,3 +212,7 @@ def get_light_star_list(observation_location: EarthLocation, observation_time: d except Exception as e: logger.error(f"An error occurred: {e}") print(f"An error occurred: {e}") + + +if __name__ == "__main__": + main() diff --git a/pysrc/target/planet.py b/modules/lithium.pytarget/target/planet.py similarity index 100% rename from pysrc/target/planet.py rename to modules/lithium.pytarget/target/planet.py diff --git a/modules/lithium.pytarget/tests/test_calc_alt.py b/modules/lithium.pytarget/tests/test_calc_alt.py new file mode 100644 index 00000000..f6b9f4e7 --- /dev/null +++ b/modules/lithium.pytarget/tests/test_calc_alt.py @@ -0,0 +1,67 @@ +import pytest +import datetime +from astropy.coordinates import EarthLocation +from modules.lithium.pytarget.target.calc_alt import calculate_current_alt, ObservationResult + +# FILE: modules/lithium.pytarget/target/test_calc_alt.py + + +@pytest.fixture +def observer_location(): + return EarthLocation(lat=34.0522, lon=-118.2437, height=0) # Los Angeles, CA + +@pytest.fixture +def observation_start_time(): + return datetime.datetime(2023, 10, 1, 22, 0, 0) # 10 PM on October 1, 2023 + +def test_calculate_current_alt_valid(observer_location, observation_start_time): + ra = 10.684 # Right Ascension in degrees + dec = 41.269 # Declination in degrees + + result = calculate_current_alt(observation_start_time, observer_location, ra, dec) + + assert isinstance(result, ObservationResult) + assert result.altitude is not None + assert result.azimuth is not None + assert result.highest_altitude is not None + assert result.available_shoot_time is not None + assert isinstance(result.is_above_horizon, bool) + +def test_calculate_current_alt_below_horizon(observer_location, observation_start_time): + ra = 180.0 # Right Ascension in degrees + dec = -90.0 # Declination in degrees (below horizon) + + result = calculate_current_alt(observation_start_time, observer_location, ra, dec) + + assert isinstance(result, ObservationResult) + assert result.altitude is not None + assert result.azimuth is not None + assert result.highest_altitude is None + assert result.available_shoot_time is None + assert result.is_above_horizon is False + +def test_calculate_current_alt_invalid_ra_dec(observer_location, observation_start_time): + ra = 400.0 # Invalid Right Ascension + dec = 100.0 # Invalid Declination + + result = calculate_current_alt(observation_start_time, observer_location, ra, dec) + + assert isinstance(result, ObservationResult) + assert result.altitude is None + assert result.azimuth is None + assert result.highest_altitude is None + assert result.available_shoot_time is None + assert result.is_above_horizon is False + +def test_calculate_current_alt_edge_case(observer_location, observation_start_time): + ra = 0.0 # Right Ascension at edge + dec = 0.0 # Declination at edge + + result = calculate_current_alt(observation_start_time, observer_location, ra, dec) + + assert isinstance(result, ObservationResult) + assert result.altitude is not None + assert result.azimuth is not None + assert result.highest_altitude is not None + assert result.available_shoot_time is not None + assert isinstance(result.is_above_horizon, bool) \ No newline at end of file diff --git a/modules/lithium.pytarget/tests/test_calc_azalt.py b/modules/lithium.pytarget/tests/test_calc_azalt.py new file mode 100644 index 00000000..48f6b9b9 --- /dev/null +++ b/modules/lithium.pytarget/tests/test_calc_azalt.py @@ -0,0 +1,75 @@ +import pytest +import datetime +from astropy.coordinates import EarthLocation +from modules.lithium.pytarget.target.calc_azalt import calculate_azimuth_altitude, calculate_star_info, calculate_rise_set_times + +# FILE: modules/lithium.pytarget/target/test_calc_azalt.py + + +@pytest.fixture +def observer_location(): + return EarthLocation(lat=34.0522, lon=-118.2437, height=0) # Los Angeles, CA + +@pytest.fixture +def observation_datetime(): + return datetime.datetime(2023, 10, 1, 22, 0, 0, tzinfo=datetime.timezone.utc) # 10 PM UTC on October 1, 2023 + +def test_calculate_azimuth_altitude_valid(observer_location, observation_datetime): + ra = 10.684 # Right Ascension in degrees + dec = 41.269 # Declination in degrees + + azimuth, altitude = calculate_azimuth_altitude(observation_datetime, observer_location, ra, dec) + + assert azimuth is not None + assert altitude is not None + +def test_calculate_azimuth_altitude_invalid_datetime(observer_location): + ra = 10.684 # Right Ascension in degrees + dec = 41.269 # Declination in degrees + invalid_datetime = datetime.datetime(2023, 10, 1, 22, 0, 0) # No timezone info + + azimuth, altitude = calculate_azimuth_altitude(invalid_datetime, observer_location, ra, dec) + + assert azimuth is None + assert altitude is None + +def test_calculate_star_info_valid(observer_location, observation_datetime): + ra = 10.684 # Right Ascension in degrees + dec = 41.269 # Declination in degrees + + star_info = calculate_star_info(observation_datetime, observer_location, ra, dec) + + assert len(star_info) > 0 + for entry in star_info: + assert len(entry) == 3 + assert isinstance(entry[0], str) + assert isinstance(entry[1], float) + assert isinstance(entry[2], float) + +def test_calculate_star_info_invalid_datetime(observer_location): + ra = 10.684 # Right Ascension in degrees + dec = 41.269 # Declination in degrees + invalid_datetime = datetime.datetime(2023, 10, 1, 22, 0, 0) # No timezone info + + star_info = calculate_star_info(invalid_datetime, observer_location, ra, dec) + + assert len(star_info) == 0 + +def test_calculate_rise_set_times_valid(observer_location, observation_datetime): + ra = 10.684 # Right Ascension in degrees + dec = 41.269 # Declination in degrees + + rise_time, set_time = calculate_rise_set_times(observer_location, ra, dec, observation_datetime) + + assert rise_time is not None + assert set_time is not None + +def test_calculate_rise_set_times_invalid_datetime(observer_location): + ra = 10.684 # Right Ascension in degrees + dec = 41.269 # Declination in degrees + invalid_datetime = datetime.datetime(2023, 10, 1, 22, 0, 0) # No timezone info + + rise_time, set_time = calculate_rise_set_times(observer_location, ra, dec, invalid_datetime) + + assert rise_time is None + assert set_time is None \ No newline at end of file diff --git a/modules/lithium.pytarget/tests/test_calc_fov.py b/modules/lithium.pytarget/tests/test_calc_fov.py new file mode 100644 index 00000000..1a283d3e --- /dev/null +++ b/modules/lithium.pytarget/tests/test_calc_fov.py @@ -0,0 +1,92 @@ +# FILE: modules/lithium.pytarget/target/test_calc_fov.py + + +def test_calc_fov_points_valid(): + x_pixels = 4000 + x_pixel_size = 5.0 # micrometers + y_pixels = 3000 + y_pixel_size = 5.0 # micrometers + focal_length = 1000 # millimeters + target_ra = 10.0 # degrees + target_dec = 20.0 # degrees + camera_rotation = 0.0 # degrees + + corners = calc_fov_points(x_pixels, x_pixel_size, y_pixels, y_pixel_size, + focal_length, target_ra, target_dec, camera_rotation) + + assert len(corners) == 4 + for corner in corners: + assert isinstance(corner, tuple) + assert len(corner) == 2 + assert isinstance(corner[0], float) + assert isinstance(corner[1], float) + + +def test_calc_fov_points_negative_focal_length(): + x_pixels = 4000 + x_pixel_size = 5.0 # micrometers + y_pixels = 3000 + y_pixel_size = 5.0 # micrometers + focal_length = -1000 # millimeters (invalid) + target_ra = 10.0 # degrees + target_dec = 20.0 # degrees + camera_rotation = 0.0 # degrees + + with pytest.raises(ValueError, match="Focal length must be a positive value."): + calc_fov_points(x_pixels, x_pixel_size, y_pixels, y_pixel_size, + focal_length, target_ra, target_dec, camera_rotation) + + +def test_calc_fov_points_zero_focal_length(): + x_pixels = 4000 + x_pixel_size = 5.0 # micrometers + y_pixels = 3000 + y_pixel_size = 5.0 # micrometers + focal_length = 0 # millimeters (invalid) + target_ra = 10.0 # degrees + target_dec = 20.0 # degrees + camera_rotation = 0.0 # degrees + + with pytest.raises(ValueError, match="Focal length must be a positive value."): + calc_fov_points(x_pixels, x_pixel_size, y_pixels, y_pixel_size, + focal_length, target_ra, target_dec, camera_rotation) + + +def test_calc_fov_points_edge_case(): + x_pixels = 1 + x_pixel_size = 1.0 # micrometers + y_pixels = 1 + y_pixel_size = 1.0 # micrometers + focal_length = 1 # millimeters + target_ra = 0.0 # degrees + target_dec = 0.0 # degrees + camera_rotation = 0.0 # degrees + + corners = calc_fov_points(x_pixels, x_pixel_size, y_pixels, y_pixel_size, + focal_length, target_ra, target_dec, camera_rotation) + + assert len(corners) == 4 + for corner in corners: + assert isinstance(corner, tuple) + assert len(corner) == 2 + assert isinstance(corner[0], float) + assert isinstance(corner[1], float) + + +def test_calc_fov_points_with_rotation(): + x_pixels = 4000 + x_pixel_size = 5.0 # micrometers + y_pixels = 3000 + y_pixel_size = 5.0 # micrometers + focal_length = 1000 # millimeters + target_ra = 10.0 # degrees + target_dec = 20.0 # degrees + camera_rotation = 45.0 # degrees + + corners = calc_fov_points(x_pixels, x_pixel_size, y_pixels, y_pixel_size, + focal_length, target_ra, target_dec, camera_rotation) + + assert len(corners) == 4 + for corner in corners: + assert isinstance(corner, tuple) + assert len(corner) == 2 diff --git a/modules/lithium.pytarget/tests/test_calc_twilight.py b/modules/lithium.pytarget/tests/test_calc_twilight.py new file mode 100644 index 00000000..b95f306d --- /dev/null +++ b/modules/lithium.pytarget/tests/test_calc_twilight.py @@ -0,0 +1,61 @@ +import pytest +import datetime +from astroplan import Observer +from astropy.time import Time +from astropy.coordinates import EarthLocation +from zoneinfo import ZoneInfo +from modules.lithium.pytarget.target.calc_twilight import calculate_twilight + +# FILE: modules/lithium.pytarget/target/test_calc_twilight.py + + +@pytest.fixture +def observer_location(): + return EarthLocation(lat=34.0522, lon=-118.2437, height=0) # Los Angeles, CA + +@pytest.fixture +def observation_time(): + return Time(datetime.datetime(2023, 10, 1, 22, 0, 0, tzinfo=datetime.timezone.utc)) # 10 PM UTC on October 1, 2023 + +@pytest.fixture +def time_offset(): + return ZoneInfo("America/Los_Angeles") + +@pytest.fixture +def observer(observer_location): + return Observer(location=observer_location) + +def test_calculate_twilight_valid(observer, observation_time, time_offset): + twilight_times = calculate_twilight(observer, observation_time, time_offset) + + assert 'evening' in twilight_times + assert 'morning' in twilight_times + assert 'sun_set_time' in twilight_times['evening'] + assert 'evening_civil_time' in twilight_times['evening'] + assert 'evening_nautical_time' in twilight_times['evening'] + assert 'evening_astro_time' in twilight_times['evening'] + assert 'sun_rise_time' in twilight_times['morning'] + assert 'morning_civil_time' in twilight_times['morning'] + assert 'morning_nautical_time' in twilight_times['morning'] + assert 'morning_astro_time' in twilight_times['morning'] + +def test_calculate_twilight_invalid_time(observer, time_offset): + invalid_time = Time(datetime.datetime(2023, 10, 1, 22, 0, 0)) # No timezone info + + twilight_times = calculate_twilight(observer, invalid_time, time_offset) + + assert twilight_times == {} + +def test_calculate_twilight_invalid_observer(observation_time, time_offset): + invalid_observer = None + + twilight_times = calculate_twilight(invalid_observer, observation_time, time_offset) + + assert twilight_times == {} + +def test_calculate_twilight_invalid_time_offset(observer, observation_time): + invalid_time_offset = None + + twilight_times = calculate_twilight(observer, observation_time, invalid_time_offset) + + assert twilight_times == {} \ No newline at end of file diff --git a/modules/lithium.pytarget/tests/test_find_all.py b/modules/lithium.pytarget/tests/test_find_all.py new file mode 100644 index 00000000..3b5d0129 --- /dev/null +++ b/modules/lithium.pytarget/tests/test_find_all.py @@ -0,0 +1,79 @@ +import pytest +import datetime +from astropy.coordinates import EarthLocation +from modules.lithium.pytarget.target.find_all import search_DSO, batch_search_DSO, DSO + +# FILE: modules/lithium.pytarget/target/test_find_all.py + + +@pytest.fixture +def observer_location(): + return EarthLocation(lat=34.0522, lon=-118.2437, height=0) # Los Angeles, CA + +@pytest.fixture +def date_time_string(): + return datetime.datetime(2023, 10, 1, 22, 0, 0) # 10 PM on October 1, 2023 + +def test_search_DSO_valid(observer_location, date_time_string): + to_search_name = "M31" # Andromeda Galaxy + results = search_DSO(to_search_name, observer_location, date_time_string) + + assert isinstance(results, list) + assert all(isinstance(dso, DSO) for dso in results) + assert len(results) > 0 + +def test_search_DSO_no_results(observer_location, date_time_string): + to_search_name = "NonExistentObject" + results = search_DSO(to_search_name, observer_location, date_time_string) + + assert isinstance(results, list) + assert len(results) == 0 + +def test_search_DSO_with_filters(observer_location, date_time_string): + to_search_name = "M31" # Andromeda Galaxy + magnitude_range = (3.0, 5.0) + ra_range = (0.0, 50.0) + dec_range = (30.0, 50.0) + alias = "Andromeda" + + results = search_DSO(to_search_name, observer_location, date_time_string, + magnitude_range=magnitude_range, ra_range=ra_range, dec_range=dec_range, alias=alias) + + assert isinstance(results, list) + assert all(isinstance(dso, DSO) for dso in results) + assert len(results) > 0 + +def test_batch_search_DSO_valid(observer_location, date_time_string): + names = ["M31", "M42"] # Andromeda Galaxy and Orion Nebula + results = batch_search_DSO(names, observer_location, date_time_string) + + assert isinstance(results, dict) + assert all(isinstance(name, str) for name in results.keys()) + assert all(isinstance(dsos, list) for dsos in results.values()) + assert all(all(isinstance(dso, DSO) for dso in dsos) for dsos in results.values()) + +def test_batch_search_DSO_no_results(observer_location, date_time_string): + names = ["NonExistentObject1", "NonExistentObject2"] + results = batch_search_DSO(names, observer_location, date_time_string) + + assert isinstance(results, dict) + assert all(isinstance(name, str) for name in results.keys()) + assert all(isinstance(dsos, list) for dsos in results.values()) + assert all(len(dsos) == 0 for dsos in results.values()) + +def test_batch_search_DSO_with_filters(observer_location, date_time_string): + names = ["M31", "M42"] # Andromeda Galaxy and Orion Nebula + magnitude_range = (3.0, 5.0) + ra_range = (0.0, 50.0) + dec_range = (30.0, 50.0) + alias = "Andromeda" + + results = batch_search_DSO(names, observer_location, date_time_string, + magnitude_range=magnitude_range, ra_range=ra_range, dec_range=dec_range, alias=alias) + + assert isinstance(results, dict) + assert all(isinstance(name, str) for name in results.keys()) + assert all(isinstance(dsos, list) for dsos in results.values()) + assert all(all(isinstance(dso, DSO) for dso in dsos) for dsos in results.values()) + assert len(results["M31"]) > 0 + assert len(results["M42"]) > 0 \ No newline at end of file diff --git a/modules/lithium.pytarget/tests/test_find_named.py b/modules/lithium.pytarget/tests/test_find_named.py new file mode 100644 index 00000000..3db320c2 --- /dev/null +++ b/modules/lithium.pytarget/tests/test_find_named.py @@ -0,0 +1,73 @@ +import pytest +import datetime +from astropy.coordinates import EarthLocation +from zoneinfo import ZoneInfo +from modules.lithium.pytarget.target.find_named import get_light_star_list, SimpleLightStarInfo, CardinalDirection + +# FILE: modules/lithium.pytarget/target/test_find_named.py + + +@pytest.fixture +def observer_location(): + return EarthLocation(lat=34.0522, lon=-118.2437, height=0) # Los Angeles, CA + +@pytest.fixture +def observation_time(): + return datetime.datetime(2023, 10, 1, 22, 0, 0, tzinfo=ZoneInfo("UTC")) # 10 PM UTC on October 1, 2023 + +def test_get_light_star_list_valid(observer_location, observation_time): + max_magnitude = 2 + result = get_light_star_list(observer_location, observation_time, max_magnitude) + + assert isinstance(result, list) + assert all(isinstance(star, dict) for star in result) + assert len(result) > 0 + +def test_get_light_star_list_no_results(observer_location, observation_time): + max_magnitude = 0 # No stars should match this magnitude + result = get_light_star_list(observer_location, observation_time, max_magnitude) + + assert isinstance(result, list) + assert len(result) == 0 + +def test_get_light_star_list_with_filters(observer_location, observation_time): + max_magnitude = 2 + range_filter = [CardinalDirection.NORTH.value] + constellation_filter = "And" + constellation_zh_filter = "仙女座" + name_filter = "Andromeda" + show_name_filter = "仙女座" + + result = get_light_star_list(observer_location, observation_time, max_magnitude, range_filter, + constellation_filter, constellation_zh_filter, name_filter, show_name_filter) + + assert isinstance(result, list) + assert all(isinstance(star, dict) for star in result) + assert len(result) > 0 + +def test_get_light_star_list_invalid_range_filter(observer_location, observation_time): + max_magnitude = 2 + range_filter = ["invalid_direction"] + + result = get_light_star_list(observer_location, observation_time, max_magnitude, range_filter) + + assert isinstance(result, list) + assert len(result) > 0 # Should ignore the invalid filter and return results + +def test_get_light_star_list_edge_case(observer_location, observation_time): + max_magnitude = 4 # Edge case for maximum magnitude + result = get_light_star_list(observer_location, observation_time, max_magnitude) + + assert isinstance(result, list) + assert all(isinstance(star, dict) for star in result) + assert len(result) > 0 + +def test_calculate_light_star_info(observer_location, observation_time): + star = SimpleLightStarInfo( + name="Test Star", show_name="测试星", ra=10.684, dec=41.269, constellation="And", constellation_zh="仙女座", magnitude=2.0 + ) + star.update_alt_az(45.0, 90.0) + + assert star.alt == 45.0 + assert star.az == 90.0 + assert star.sky == "east" \ No newline at end of file diff --git a/modules/lithium.pytarget/tests/test_planet.py b/modules/lithium.pytarget/tests/test_planet.py new file mode 100644 index 00000000..94e5dcf8 --- /dev/null +++ b/modules/lithium.pytarget/tests/test_planet.py @@ -0,0 +1,99 @@ +import re +import pytest +import datetime +from modules.lithium.pytarget.target.planet import Moon + +# FILE: modules/lithium.pytarget/target/test_planet.py + + +@pytest.fixture +def moon(): + # San Francisco, CA + return Moon(lat="37.7749", lon="-122.4194", elevation=10) + + +def test_get_next_full(moon): + next_full = moon.get_next_full + assert isinstance(next_full, datetime.date) + + +def test_get_next_new(moon): + next_new = moon.get_next_new + assert isinstance(next_new, datetime.date) + + +def test_get_previous_full(moon): + previous_full = moon.get_previous_full + assert isinstance(previous_full, datetime.date) + + +def test_get_previous_new(moon): + previous_new = moon.get_previous_new + assert isinstance(previous_new, datetime.date) + + +def test_get_next_last_quarter(moon): + next_last_quarter = moon.get_next_last_quarter + assert isinstance(next_last_quarter, datetime.date) + + +def test_get_next_first_quarter(moon): + next_first_quarter = moon.get_next_first_quarter + assert isinstance(next_first_quarter, datetime.date) + + +def test_get_previous_last_quarter(moon): + previous_last_quarter = moon.get_previous_last_quarter + assert isinstance(previous_last_quarter, datetime.date) + + +def test_get_previous_first_quarter(moon): + previous_first_quarter = moon.get_previous_first_quarter + assert isinstance(previous_first_quarter, datetime.date) + + +def test_get_moon_phase(moon): + moon_phase = moon.get_moon_phase() + assert isinstance(moon_phase, str) + assert moon_phase in ["Full", "New", "First Quarter", "Last Quarter", + "Waxing Crescent", "Waxing Gibbous", "Waning Gibbous", "Waning Crescent"] + + +def test_get_moon_ra(moon): + moon_ra = moon.get_moon_ra() + assert isinstance(moon_ra, str) + + +def test_get_moon_dec(moon): + moon_dec = moon.get_moon_dec() + assert isinstance(moon_dec, str) + + +def test_get_moon_az(moon): + moon_az = moon.get_moon_az() + assert isinstance(moon_az, str) + assert moon_az.endswith("°") + + +def test_get_moon_alt(moon): + moon_alt = moon.get_moon_alt() + assert isinstance(moon_alt, str) + assert moon_alt.endswith("°") + + +def test_get_moon_rise(moon): + moon_rise = moon.get_moon_rise() + assert isinstance(moon_rise, str) + assert re.match(r"\d{2}:\d{2}:\d{2}", moon_rise) or moon_rise == "-" + + +def test_get_moon_set(moon): + moon_set = moon.get_moon_set() + assert isinstance(moon_set, str) + assert re.match(r"\d{2}:\d{2}:\d{2}", moon_set) or moon_set == "-" + + +def test_get_moon_transit(moon): + moon_transit = moon.get_moon_transit() + assert isinstance(moon_transit, str) + assert re.match(r"\d{2}:\d{2}:\d{2}", moon_transit) or moon_transit == "-" diff --git a/modules/lithium.pytools/.gitignore b/modules/lithium.pytools/.gitignore new file mode 100644 index 00000000..cb8cdeed --- /dev/null +++ b/modules/lithium.pytools/.gitignore @@ -0,0 +1,108 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ +tmp.json \ No newline at end of file diff --git a/modules/lithium.pytools/doc/cmake_generator.md b/modules/lithium.pytools/doc/cmake_generator.md new file mode 100644 index 00000000..afc46103 --- /dev/null +++ b/modules/lithium.pytools/doc/cmake_generator.md @@ -0,0 +1,163 @@ +# CMake Build Configuration Generator Documentation + +## Overview + +This script automates the generation of **CMake build configuration files** for C++ projects. It supports multi-directory project structures, the creation of custom `FindXXX.cmake` files for third-party libraries, and the use of JSON configuration files for specifying project settings. It also offers customizable compiler flags, linker flags, and dependencies management. + +--- + +## Key Features + +- **Multi-directory Project Support**: Supports creating `CMakeLists.txt` for each subdirectory in multi-directory projects. +- **Custom `FindXXX.cmake` Generation**: Automatically generates custom `FindXXX.cmake` files for locating third-party libraries. +- **JSON-based Configuration**: Uses a JSON configuration file to specify project settings, streamlining the generation process. +- **Customizable Build Settings**: Configure compiler flags, linker flags, dependencies, and subdirectories. +- **Enhanced Logging**: Comprehensive logging using the `Loguru` library for easier debugging and tracking of operations. +- **Robust Exception Handling**: Handles errors gracefully, with clear messages for the user. +- **Directory Creation**: Automatically creates the necessary directories for saving the generated CMake files. +- **Cross-platform Support**: Handles platform-specific settings for Linux, Windows, and macOS. + +--- + +## Requirements + +- **Python 3.x** +- Required Python packages: + - `loguru`: For logging. + - `rich`: For beautified console output. + - `json`: For JSON parsing (standard Python library). + - `platform`: For detecting the operating system (standard Python library). + +To install the required packages, run: + +```bash +pip install loguru rich +``` + +--- + +## Usage + +### Command-Line Arguments + +The script supports several commands to generate CMake files: + +#### `generate` + +Generate the `CMakeLists.txt` and `FindXXX.cmake` files from a JSON configuration. + +```bash +python cmake_generator.py generate --json path/to/config.json --output-dir output/ +``` + +- **`--json`**: Path to the JSON configuration file. +- **`--output-dir`**: Directory to save the generated files (default is the current directory). + +#### `find` + +Generate a `FindXXX.cmake` file for a specified library. + +```bash +python cmake_generator.py find --library LibraryName --output-dir cmake/ +``` + +- **`--library`**: Name of the third-party library (e.g., `Boost`, `OpenCV`). +- **`--output-dir`**: Directory to save the `FindXXX.cmake` file (default is `cmake/`). + +### Example + +1. **Generate `CMakeLists.txt` from JSON Configuration:** + +```bash +python cmake_generator.py generate --json project_config.json --output-dir build/ +``` + +2. **Generate `FindBoost.cmake`:** + +```bash +python cmake_generator.py find --library Boost --output-dir cmake/ +``` + +--- + +## JSON Configuration Format + +The script uses a JSON file to specify the project's configuration. Here's an example of a typical configuration: + +```json +{ + "project_name": "MyProject", + "version": "1.0", + "cpp_standard": "11", + "executable": true, + "static_library": false, + "shared_library": false, + "enable_testing": true, + "include_dirs": ["include", "libs/boost/include"], + "sources": "src/*.cpp", + "compiler_flags": ["-O3", "-Wall"], + "linker_flags": ["-lpthread"], + "dependencies": ["Boost", "OpenCV"], + "subdirs": ["lib", "tests"], + "install_path": "bin", + "test_framework": "GoogleTest" +} +``` + +### Key Configuration Fields + +- **`project_name`**: The name of the project. +- **`version`**: The version of the project (default is "1.0"). +- **`cpp_standard`**: The C++ standard to use (default is `C++11`). +- **`executable`**: Whether to generate an executable target. +- **`static_library`**: Whether to generate a static library. +- **`shared_library`**: Whether to generate a shared library. +- **`enable_testing`**: Whether to enable testing with `enable_testing()`. +- **`include_dirs`**: List of directories to include. +- **`sources`**: Glob pattern for source files (default is `src/*.cpp`). +- **`compiler_flags`**: Custom compiler flags. +- **`linker_flags`**: Custom linker flags. +- **`dependencies`**: List of third-party dependencies. +- **`subdirs`**: Subdirectories to add (useful for multi-directory projects). +- **`install_path`**: The path for installation (default is `bin`). +- **`test_framework`**: The test framework to be used (optional, e.g., `GoogleTest`). + +--- + +## Platform Detection + +The script detects the current operating system and configures the appropriate `CMake` system name: + +- **Windows**: `set(CMAKE_SYSTEM_NAME Windows)` +- **Darwin (macOS)**: `set(CMAKE_SYSTEM_NAME Darwin)` +- **Linux**: `set(CMAKE_SYSTEM_NAME Linux)` + +If an unsupported OS is detected, a warning is logged, and no OS-specific settings are applied. + +--- + +## Logging + +The script uses **Loguru** for logging, and logs are written both to a file (`cmake_generator.log`) and to the console. Logs include: + +- **Debug logs**: For tracking the generation of the CMake files and other details. +- **Info logs**: For general information about the process. +- **Error logs**: For capturing issues with file generation or invalid configurations. + +Logs are rotated every 10 MB, with logs older than 7 days being compressed and retained. + +--- + +## Error Handling + +- **Invalid JSON Format**: If the JSON configuration file is invalid, an error will be raised with details. +- **Missing Fields**: If required fields are missing from the configuration, a `KeyError` will be raised. +- **Unsupported OS**: If the platform is unsupported, no OS-specific settings will be applied. + +--- + +## Conclusion + +The **CMake Build Configuration Generator** is a powerful tool for automating the generation of `CMakeLists.txt` and `FindXXX.cmake` files for C++ projects. With support for multi-directory projects, third-party dependencies, and customizable build settings, this script simplifies the configuration of complex C++ projects. Enhanced logging and robust error handling ensure smooth operation and quick debugging. + +This script is ideal for C++ developers who need a flexible, automated solution for managing build configurations across different platforms. diff --git a/modules/lithium.pytools/doc/compiler.md b/modules/lithium.pytools/doc/compiler.md new file mode 100644 index 00000000..4b18523f --- /dev/null +++ b/modules/lithium.pytools/doc/compiler.md @@ -0,0 +1,163 @@ +# Compiler Helper Script Documentation + +## Overview + +The **Compiler Helper Script** is a Python utility that assists in detecting available C++ compilers (such as GCC, Clang, MSVC, Intel C++ Compiler), selecting the desired C++ version, and compiling or linking source files with specified options. It also supports loading additional compile/link options from JSON files, enhanced logging with Loguru, and beautiful terminal output with Rich. + +This script aims to simplify the process of compiling C++ code and allows for flexible compiler and version selection. + +--- + +## Features + +- **Detect Available C++ Compilers**: Detects and lists installed compilers (GCC, Clang, MSVC, Intel C++ Compiler). +- **Supports Multiple C++ Versions**: Allows compiling with C++ versions from C++98 to C++23. +- **Compile and Link**: Facilitates both compiling individual source files and linking them into an executable. +- **Load Compile/Link Flags from JSON**: Optionally load additional flags from a JSON configuration file. +- **Logging**: Utilizes the Loguru library for enhanced logging. +- **Beautiful Terminal Output**: Uses the Rich library for clear, styled terminal output, including tables and progress indicators. +- **Error Handling**: Robust exception handling with detailed error messages and tracebacks. + +--- + +## Requirements + +- Python 3.x +- Required Python packages: + - `loguru`: For logging. + - `rich`: For styled console output. + +Install the necessary packages using: + +```bash +pip install loguru rich +``` + +Additionally, the script assumes the availability of common C++ compilers like GCC, Clang, MSVC, or Intel C++ Compiler installed on your system. + +--- + +## Usage + +To run the script, use the following command: + +```bash +python compiler_helper.py source1.cpp source2.cpp -o output --compiler GCC --cpp_version c++20 --link --flags -O3 +``` + +### Command-Line Arguments + +- **`source_files`**: The C++ source files to compile or link (one or more). +- **`-o` / `--output`**: Specifies the output file (either an object file or executable). +- **`--link`**: If provided, the script will link the object files into an executable. +- **`--compiler`**: Choose the compiler to use. Valid options: `GCC`, `Clang`, `MSVC`, `Intel C++ Compiler`. +- **`--cpp_version`**: The C++ version to use for compilation (e.g., `c++17`, `c++20`). +- **`--flags`**: Additional flags for compilation or linking. +- **`--compile-flags`**: Additional compilation flags. +- **`--link-flags`**: Additional linking flags. +- **`--json-options`**: Path to a JSON file containing additional compile/link flags. +- **`--show-info`**: Display system and script information, and exit. + +--- + +## Structure of the Script + +### Key Classes + +1. **`CppVersion` (Enum)** + Represents supported C++ versions. The versions include `CPP98`, `CPP03`, `CPP11`, `CPP14`, `CPP17`, `CPP20`, `CPP23`, and `CPP2A`. + +2. **`CompilerType` (Enum)** + Represents different compiler types: `GCC`, `CLANG`, `MSVC`, `INTEL`. + +3. **`Compiler` (Class)** + Represents a C++ compiler and its associated flags. Each compiler has a name, command, supported C++ flags, and compile/link flags. + + Key methods: + + - **`compile()`**: Compiles the source files into object files or executables. + - **`link()`**: Links object files into an executable. + +4. **`setup_logging()`** + Configures Loguru for logging, both to a file and the console. + +5. **`detect_compilers()`** + Detects available compilers on the system (GCC, Clang, MSVC, Intel). + +6. **`select_compiler()`** + Allows the user to select a compiler from the detected compilers. + +7. **`select_cpp_version()`** + Prompts the user to select a C++ version for the chosen compiler. + +8. **`load_options_from_json()`** + Loads additional compile/link flags from a specified JSON file. + +9. **`display_system_info()`** + Displays system information (OS, Python version) and script version. + +--- + +## How It Works + +1. **Compiler Detection** + The script first detects installed C++ compilers using `shutil.which()` for GCC, Clang, MSVC, and Intel C++ compilers. If no compilers are found, the script exits with an error message. + +2. **Compiler Selection** + If multiple compilers are available, the user is prompted to select one. If only one compiler is available, it is automatically selected. + +3. **C++ Version Selection** + The user can either specify a C++ version using the `--cpp_version` option or be prompted to select one from the available versions for the selected compiler. + +4. **Compilation and Linking** + Once the compiler and C++ version are selected, the script compiles the source files into object files or an executable. If the `--link` option is specified, the script will link object files into an executable. + +5. **Flags** + Additional flags for compilation and linking can be specified either via the `--flags`, `--compile-flags`, `--link-flags` options or through a JSON file. + +--- + +## Example JSON Configuration File + +Here’s an example of how the JSON file for additional flags (`json-options`) should be structured: + +```json +{ + "compile_flags": ["-O2", "-std=c++17"], + "link_flags": ["-pthread"] +} +``` + +To use this configuration, pass the `--json-options` argument with the path to the JSON file: + +```bash +python compiler_helper.py source1.cpp source2.cpp -o output --json-options config.json +``` + +--- + +## Logging + +The script uses Loguru for logging. Logs are saved in the `compiler_helper.log` file and also printed to the console. The logging includes detailed information about the compilation and linking processes, as well as errors and warnings. + +### Log File Configuration + +- **Rotation**: Logs are rotated when they reach 5 MB. +- **Retention**: Logs are kept for 7 days. +- **Compression**: Older logs are compressed in ZIP format. + +--- + +## Error Handling + +The script includes robust error handling: + +- If no suitable compiler is detected, the script exits with an error. +- If compilation or linking fails, the script exits with the error details. +- If invalid arguments are provided (e.g., unsupported C++ version), the script will inform the user and exit. + +--- + +## Conclusion + +This **Compiler Helper Script** simplifies the process of compiling and linking C++ code. It automatically detects compilers, supports multiple C++ versions, and allows customization via command-line arguments and JSON configuration files. With logging and beautiful terminal output, it provides a user-friendly experience for developers. diff --git a/modules/lithium.pytools/doc/core_runner.md b/modules/lithium.pytools/doc/core_runner.md new file mode 100644 index 00000000..f1b09e14 --- /dev/null +++ b/modules/lithium.pytools/doc/core_runner.md @@ -0,0 +1,100 @@ +# CoreRunner: C++ Core Dump and Analysis Tool + +## Overview + +**CoreRunner** is a Python-based utility designed to facilitate the setup, compilation, and execution of C++ programs, with a focus on core dump analysis. It integrates with `g++` for compilation, `gdb` for debugging, and provides robust logging and exception handling. The tool is particularly useful for developers who need to automate the process of compiling, running, and analyzing core dumps of C++ programs. + +## Features + +- **Compilation**: Compiles C++ source files using `g++` with customizable flags and standards. +- **Execution**: Runs the compiled C++ program and captures core dumps if the program crashes. +- **Core Dump Analysis**: Automatically analyzes core dump files using `gdb` with user-defined commands. +- **Logging**: Uses `loguru` for detailed logging, with options to log to both the console and a file. +- **Environment Validation**: Checks for the presence of necessary tools (`g++`, `gdb`) and validates the environment before execution. +- **Customizable**: Allows users to specify compilation flags, GDB commands, core dump directory, and more via command-line arguments. + +## Installation + +To use **CoreRunner**, ensure you have Python 3.x installed on your system. Additionally, you need to have `g++` and `gdb` installed. + +### Dependencies + +- Python 3.x +- `g++` +- `gdb` +- `loguru` (Python package) +- `rich` (Python package) + +You can install the required Python packages using pip: + +```bash +pip install loguru rich +``` + +## Usage + +### Command-Line Arguments + +**CoreRunner** accepts the following command-line arguments: + +- `source`: The C++ source file to compile and run. +- `-o`, `--output`: The output executable name (default: `a.out`). +- `-d`, `--core-dir`: Directory to search for core dumps (default: `/tmp`). +- `-p`, `--core-pattern`: Core pattern for dump files (default: `/tmp/core.%e.%p`). +- `-u`, `--ulimit`: Set core dump size to unlimited (default: `False`). +- `-f`, `--flags`: Additional flags for `g++` compilation (e.g., `-O2 -Wall`). +- `-s`, `--std`: C++ standard to use (e.g., `c++11`, `c++14`, `c++17`, `c++20`). +- `-g`, `--gdb-commands`: GDB commands for core dump analysis (default: `["-ex", "bt", "-ex", "quit"]`). +- `-a`, `--auto-analyze`: Automatically analyze core dump if program crashes (default: `False`). +- `-l`, `--log-file`: Log file to write logs to. + +### Example Command + +```bash +python core_runner.py my_program.cpp -o my_program -d /var/cores -p /var/cores/core.%e.%p -u -f -O2 -Wall -s c++17 -g -ex "bt full" -ex "quit" -a -l /var/logs/core_runner.log +``` + +### Workflow + +1. **Setup Logging**: Configures the `loguru` logger to output logs to the console and optionally to a specified log file. +2. **Environment Validation**: Checks if `g++` and `gdb` are available in the system's PATH. +3. **Set Ulimit**: Sets the core dump size to unlimited if specified. +4. **Set Core Pattern**: Sets the core pattern for core dump files if run with root privileges. +5. **Compile C++ Program**: Compiles the provided C++ source file using `g++` with the specified flags and standard. +6. **Run C++ Program**: Executes the compiled program. If the program crashes, it captures the core dump. +7. **Analyze Core Dump**: Automatically analyzes the core dump using `gdb` with the specified commands if the program crashes and `auto-analyze` is enabled. + +## Code Structure + +### CoreRunner Class + +The `CoreRunner` class is the core of the utility, handling the setup, compilation, and execution of the C++ program. It includes the following methods: + +- `__init__`: Initializes the class with command-line arguments and sets up logging and environment validation. +- `setup_logging`: Configures the `loguru` logger. +- `validate_environment`: Validates the presence of `g++` and `gdb`. +- `set_ulimit`: Sets the core dump size using `ulimit`. +- `set_core_pattern`: Sets the core pattern for core dump files. +- `compile_cpp_program`: Compiles the C++ program using `g++`. +- `run_cpp_program`: Runs the compiled C++ program and handles crashes. +- `find_latest_core_file`: Finds the latest core dump file in the specified directory. +- `analyze_core_dump`: Analyzes the core dump file using `gdb`. +- `run`: Executes the full workflow, including setup, compilation, and program execution. + +### Helper Functions + +- `configure_logging`: Configures the `loguru` logger based on the provided log file. +- `parse_arguments`: Parses command-line arguments using `argparse`. +- `main`: The main function that initializes the `CoreRunner` and runs the workflow. + +## Logging + +**CoreRunner** uses the `loguru` library for logging, providing detailed logs with timestamps, log levels, and messages. Logs can be directed to both the console and a specified log file, with options for rotation, retention, and compression. + +## Exception Handling + +The tool includes robust exception handling to manage errors during compilation, execution, and core dump analysis. It logs detailed error messages and exits gracefully in case of failures. + +## Conclusion + +**CoreRunner** is a powerful tool for automating the process of compiling, running, and analyzing C++ programs, especially in scenarios where core dump analysis is crucial. Its integration with `g++` and `gdb`, along with detailed logging and exception handling, makes it a valuable asset for developers working with C++ code. diff --git a/modules/lithium.pytools/doc/daemon.md b/modules/lithium.pytools/doc/daemon.md new file mode 100644 index 00000000..d648e390 --- /dev/null +++ b/modules/lithium.pytools/doc/daemon.md @@ -0,0 +1,131 @@ +# Daemon Process Manager Documentation + +## Overview + +The **Daemon Process Manager** is a Python tool designed for monitoring and managing target processes in a robust manner. It supports starting, stopping, and monitoring processes while checking their resource usage (CPU and memory). The script features automatic process restarts when resource usage exceeds defined thresholds and provides comprehensive logging and enhanced command-line interface (CLI) output. + +--- + +## Features + +- **Start and Stop Daemon Processes**: Easily manage the lifecycle of target processes. +- **Monitor CPU and Memory Usage**: Continuously check resource usage and take action if thresholds are breached. +- **Automatic Process Restarts**: Restart processes automatically based on resource usage thresholds. +- **Comprehensive Logging**: Uses Loguru for detailed logging of operations. +- **Enhanced CLI Output**: Utilizes Rich for beautiful terminal output, including tables and panels. +- **Detailed Configuration**: Configuration parameters are defined using Python dataclasses for clarity and ease of use. + +--- + +## Requirements + +- Python 3.x +- Required Python packages: + - `loguru`: For logging. + - `rich`: For styled console output. + - `psutil`: For system and process utilities. + +Install the necessary packages using: + +```bash +pip install loguru rich psutil +``` + +--- + +## Usage + +To run the script, use the following command: + +```bash +python daemon_manager.py --help +``` + +### Command-Line Arguments + +- **`start`**: Start the daemon process. + + - `--process_name`: (Optional) Name of the process to monitor (default: `python`). + - `--script_path`: (Optional) Path to the target script (default: `target_script.py`). + - `--restart_interval`: (Optional) Restart interval in seconds (default: 5). + - `--cpu_threshold`: (Optional) CPU usage threshold in percentage (default: 80.0). + - `--memory_threshold`: (Optional) Memory usage threshold in MB (default: 500.0). + - `--max_restarts`: (Optional) Maximum number of restarts (default: 3). + - `--monitor_interval`: (Optional) Monitoring interval in seconds (default: 5). + +- **`stop`**: Stop the daemon process. + +- **`status`**: Check the status of the daemon process. + +--- + +## Structure of the Script + +### Key Classes and Functions + +1. **`DaemonConfig` Class** + A dataclass that holds configuration parameters for the daemon process, including process name, script path, resource thresholds, and monitoring intervals. + +2. **`DaemonProcess` Class** + The core class responsible for managing the daemon process. + + - **`__init__`**: Initializes the daemon with the specified configuration. + - **`start_target_process`**: Starts the target process asynchronously. + - **`is_process_running`**: Checks if the target process is currently running. + - **`monitor_process_health`**: Monitors CPU and memory usage of the process and handles restarts if thresholds are exceeded. + - **Various Methods**: Includes methods for restarting, cleaning up, and managing the process. + +3. **Utility Functions**: + - **`write_pid`**: Writes the daemon's process ID (PID) to a PID file. + - **`read_pid`**: Reads the PID from the PID file. + - **`is_daemon_running`**: Checks if the daemon is currently running. + - **`stop_daemon`**: Stops the daemon process. + - **`start_daemon`**: Starts the daemon process and sets up the environment. + - **`status_daemon`**: Checks and displays the status of the daemon process. + - **`parse_arguments`**: Parses command-line arguments. + +--- + +## Example Commands + +Here are some examples of how to use the script: + +### Start the Daemon + +```bash +python daemon_manager.py start --script_path /path/to/your_script.py +``` + +### Stop the Daemon + +```bash +python daemon_manager.py stop +``` + +### Check the Daemon Status + +```bash +python daemon_manager.py status +``` + +--- + +## Logging + +The script uses Loguru for logging, which provides detailed logs of the daemon's operations, including process management actions and resource usage statistics. Logs are formatted for readability and can be configured to rotate and retain logs for a specified duration. + +--- + +## Error Handling + +The script includes robust error handling: + +- If the specified target script does not exist, a critical error is logged, and the script exits. +- Each operation is wrapped in try-except blocks to catch and log exceptions. +- User confirmations are prompted for potentially destructive actions (e.g., stopping the daemon). + +--- + +## Conclusion + +The **Daemon Process Manager** is a powerful tool for managing and monitoring processes in a daemonized manner. With features for automatic restarts, resource monitoring, and comprehensive logging, it provides an effective solution for ensuring that critical processes remain operational. The script is designed to be user-friendly with enhanced CLI outputs, making it suitable for both developers and system administrators. diff --git a/modules/lithium.pytools/doc/exebind.md b/modules/lithium.pytools/doc/exebind.md new file mode 100644 index 00000000..77ba552e --- /dev/null +++ b/modules/lithium.pytools/doc/exebind.md @@ -0,0 +1,181 @@ +# Executable Binder Script Documentation + +## Overview + +The **Executable Binder Script** is a Python utility designed to generate PyBind11 bindings for an executable by parsing its help information. This script dynamically parses command-line options, enhances logging, and provides beautified terminal output, making it easier for developers to create Python bindings for their C++ executables. + +--- + +## Features + +- **Dynamic Command-Line Parsing**: Automatically retrieves command-line options and descriptions from the executable’s help output. +- **PyBind11 Code Generation**: Generates C++ code that wraps the executable, allowing it to be called from Python. +- **CMake Integration**: Creates a `CMakeLists.txt` file for building the generated PyBind11 module. +- **Enhanced Logging**: Uses the Loguru library for structured logging. +- **Beautiful Terminal Output**: Employs the Rich library for styled console output, including tables for command options. +- **Environment Variable Management**: Provides functionality to set environment variables for the executable. + +--- + +## Requirements + +- Python 3.x +- Required Python packages: + - `loguru`: For logging. + - `rich`: For styled console output. + +Install the necessary packages using: + +```bash +pip install loguru rich +``` + +- **C++ Compiler**: A compatible C++ compiler (e.g., GCC, Clang) must be installed to compile the generated bindings. +- **CMake**: CMake must be installed for building the PyBind11 module. + +--- + +## Usage + +To run the script, use the following command: + +```bash +python exebind.py [--module-name ] [--output-dir ] +``` + +### Command-Line Arguments + +- **`executable_path`**: The path to the executable for which bindings will be generated. +- **`--module-name`**: (Optional) The name of the Python module to generate. If not provided, it defaults to the basename of the executable with `_bindings` appended. +- **`--output-dir`**: (Optional) The output directory for the generated code. Defaults to `bindings`. + +--- + +## Structure of the Script + +### Key Functions + +1. **`get_executable_info(executable_path: str) -> List[Tuple[str, str]]`** + Retrieves the help information of the executable and parses command options and their descriptions. + +2. **`generate_pybind11_code(module_name: str, executable_name: str, command_info: List[Tuple[str, str]]) -> str`** + Generates the C++ code required to create PyBind11 bindings for the executable. + +3. **`generate_cmake_file(module_name: str) -> str`** + Creates a `CMakeLists.txt` file to build the PyBind11 module. + +4. **`check_pybind11_installed()`** + Checks if PyBind11 is installed and installs it if it is not. + +5. **`parse_arguments()`** + Parses command-line arguments and returns them. + +6. **`display_command_options(command_info: List[Tuple[str, str]])`** + Displays the parsed command options in a formatted table. + +7. **`main()`** + The main function that orchestrates the script execution, including parsing arguments, generating bindings, and writing output files. + +--- + +## How It Works + +1. **Argument Parsing** + The script begins by parsing command-line arguments to retrieve the path to the executable and optional parameters for module name and output directory. + +2. **Executable Information Retrieval** + It then calls the executable with the `--help` flag to retrieve its command-line options and descriptions. This information is parsed using regular expressions. + +3. **Code Generation** + Using the parsed command options, the script generates the necessary PyBind11 code to wrap the executable. It also creates a `CMakeLists.txt` file for building the module. + +4. **User Confirmation** + Before proceeding with file generation, the script prompts the user for confirmation to ensure they wish to continue. + +5. **File Writing** + Finally, the generated C++ code and CMake file are written to the specified output directory. + +--- + +## Example of Generated Code + +The generated PyBind11 bindings will look similar to this: + +```cpp +#include +#include +#include +#include +#include +#include +#include + +namespace py = pybind11; + +// Function to run a command and capture its output +std::string run_command(const std::string& args) { + std::string command = "executable_name " + args; + std::array buffer; + std::string result; + std::shared_ptr pipe(popen(command.c_str(), "r"), pclose); + if (!pipe) throw std::runtime_error("popen() failed!"); + while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) { + result += buffer.data(); + } + return result; +} + +// Wrapper class for the executable +class executable_name_Wrapper { +public: + // Run the executable with arguments and return output + std::string run(const std::string& args) { + return run_command(args); + } + + // Set environment variables + void set_env(const std::string& key, const std::string& value) { + setenv(key.c_str(), value.c_str(), 1); + } + + // Additional method bindings... +}; + +// Create Python module +PYBIND11_MODULE(module_name, m) { + py::class_(m, "executable_name_Wrapper") + .def(py::init<>()) + .def("run", &executable_name_Wrapper::run, "Run the executable with arguments") + .def("set_env", &executable_name_Wrapper::set_env, "Set an environment variable") + // Additional method bindings... + ; +} +``` + +The generated `CMakeLists.txt` will look like this: + +```cmake +cmake_minimum_required(VERSION 3.14) +project(module_name) + +set(CMAKE_CXX_STANDARD 17) +find_package(pybind11 REQUIRED) + +pybind11_add_module(module_name bindings.cpp) +``` + +--- + +## Error Handling + +The script includes robust error handling: + +- If the executable fails to run or parse, an error message is logged, and the script exits. +- If PyBind11 is not installed, it will be automatically installed. +- If any unexpected errors occur during execution, they are logged, and the script exits gracefully. + +--- + +## Conclusion + +The **Executable Binder Script** simplifies the process of creating Python bindings for C++ executables using PyBind11. By automating the retrieval of command options and generating the required code, it significantly speeds up the development process for developers looking to integrate C++ functionality into Python applications. diff --git a/modules/lithium.pytools/doc/ffmpeg.md b/modules/lithium.pytools/doc/ffmpeg.md new file mode 100644 index 00000000..0f16edff --- /dev/null +++ b/modules/lithium.pytools/doc/ffmpeg.md @@ -0,0 +1,164 @@ +# FFmpeg Wrapper Documentation + +## Overview + +The **FFmpeg Wrapper** is a Python script that provides an asynchronous interface for performing various audio and video processing tasks using FFmpeg. It supports a wide range of operations, including format conversion, audio extraction, video trimming, resizing, merging, and more. The script utilizes `asyncio` for non-blocking operations, `loguru` for comprehensive logging, and `rich` for enhanced terminal output. + +--- + +## Features + +- **Convert Video Formats**: Convert videos to different formats with specified codecs. +- **Extract Audio**: Extract audio tracks from video files. +- **Trim Videos**: Cut videos to specified start times and durations. +- **Resize Videos**: Change the dimensions of video files. +- **Extract Frames**: Capture frames from videos at specified intervals. +- **Merge Videos and Audios**: Combine multiple video or audio files into a single output. +- **Add Watermarks and Subtitles**: Overlay images and add subtitle tracks to videos. +- **Change Playback Speed**: Adjust the speed of video playback. +- **Extract Video Information**: Retrieve metadata and information from video files. +- **Add Background Music**: Integrate audio tracks into video files. +- **Overlay Images**: Place images on videos at specified coordinates. +- **Adjust Brightness and Contrast**: Modify the brightness and contrast levels of videos. +- **Comprehensive Logging**: Detailed logging of operations and errors with Loguru. +- **Beautiful CLI Output**: Enhanced terminal output with Rich, including tables and progress indicators. + +--- + +## Requirements + +- Python 3.x +- Required Python packages: + - `ffmpeg-python`: For FFmpeg command construction and execution. + - `loguru`: For logging. + - `rich`: For styled console output. + - `psutil`: For system and process utilities. + +Install the necessary packages using: + +```bash +pip install ffmpeg-python loguru rich psutil +``` + +--- + +## Usage + +To run the script, use the following command: + +```bash +python ffmpeg.py --help +``` + +### Command-Line Arguments + +The script supports various commands for different FFmpeg operations: + +- **`convert`**: Convert video format. + + - `input`: Path to the input video file. + - `output`: Path to the output video file. + - `--codec`: (Optional) Video codec to use (default: `libx264`). + +- **`extract-audio`**: Extract audio from a video file. + + - `input`: Path to the input video file. + - `output`: Path to the output audio file. + +- **`trim`**: Trim a video file. + + - `input`: Path to the input video file. + - `output`: Path to the output video file. + - `start_time`: Start time in seconds. + - `duration`: Duration in seconds. + +- **`resize`**: Resize a video. + + - `input`: Path to the input video file. + - `output`: Path to the output video file. + - `width`: Target width in pixels. + - `height`: Target height in pixels. + +- **`extract-frames`**: Extract frames from a video. + + - `input`: Path to the input video file. + - `output`: Output frames pattern (e.g., `frame_%04d.png`). + - `--fps`: (Optional) Frames per second to extract (default: 1). + +- **`merge-videos`**: Merge multiple video files. + + - `inputs`: List of input video file paths. + - `output`: Path to the output merged video file. + +- **`merge-audios`**: Merge multiple audio files. + + - `inputs`: List of input audio file paths. + - `output`: Path to the output merged audio file. + +- **`add-watermark`**: Add a watermark image to a video. + + - `input`: Path to the input video file. + - `output`: Path to the output video file. + - `watermark`: Path to the watermark image file. + - `--position`: (Optional) Position of the watermark (default: `topright`). + +- **`add-subtitles`**: Add subtitles to a video. + + - `input`: Path to the input video file. + - `output`: Path to the output video file. + - `subtitle`: Path to the subtitle file. + +- **`change-speed`**: Change the playback speed of a video. + + - `input`: Path to the input video file. + - `output`: Path to the output video file. + - `speed`: Speed factor (e.g., `2` for double speed). + +- **`extract-info`**: Extract information from a video file. + + - `input`: Path to the input video file. + +- **`add-bg-music`**: Add background music to a video. + + - `video`: Path to the input video file. + - `audio`: Path to the input audio file. + - `output`: Path to the output video file. + - `--volume`: (Optional) Volume of the background music (default: `0.5`). + +- **`overlay-image`**: Overlay an image on a video. + + - `video`: Path to the input video file. + - `image`: Path to the overlay image file. + - `output`: Path to the output video file. + - `--x`: (Optional) X position of the overlay (default: `10`). + - `--y`: (Optional) Y position of the overlay (default: `10`). + +- **`adjust-bc`**: Adjust brightness and contrast of a video. + - `input`: Path to the input video file. + - `output`: Path to the output video file. + - `--brightness`: (Optional) Brightness level (-1.0 to 1.0, default: `0.0`). + - `--contrast`: (Optional) Contrast level (0.0 and above, default: `1.0`). + +--- + +## Logging + +The script uses Loguru for logging, which provides detailed logs of the operations performed, including success messages and error details. The logs are written to both the console and a log file (`ffmpeg_wrapper.log`), which is rotated after reaching 5 MB and retained for 7 days. + +--- + +## Error Handling + +The script includes robust error handling: + +- If FFmpeg commands fail, the error messages are logged, and exceptions are raised. +- Each operation is wrapped in try-except blocks to catch and log exceptions. +- The user is informed of any operational errors through the console. + +--- + +## Conclusion + +The **FFmpeg Wrapper** is a powerful and user-friendly tool for performing audio and video processing tasks with FFmpeg. With support for a wide range of operations, comprehensive logging, and beautiful terminal output, it simplifies the process of working with multimedia files, making it an invaluable addition to any developer's toolkit. + +This script serves as a versatile solution for anyone needing to manipulate audio and video files programmatically, facilitating efficient media processing. diff --git a/modules/lithium.pytools/doc/ftp.md b/modules/lithium.pytools/doc/ftp.md new file mode 100644 index 00000000..b6291130 --- /dev/null +++ b/modules/lithium.pytools/doc/ftp.md @@ -0,0 +1,174 @@ +# Enhanced FTP Client Script Documentation + +## Overview + +The **Enhanced FTP Client Script** is a Python-based FTP client that supports asynchronous operations, including FTP, FTPS, and SFTP protocols. It utilizes `asyncio` for non-blocking file transfers and provides enhanced logging with Loguru and beautified terminal output using the Rich library. This script is designed to simplify file management over FTP/SFTP connections while providing a user-friendly command-line interface. + +--- + +## Features + +- **Asynchronous File Transfers**: Utilizes `asyncio` and `aioftp` for non-blocking file operations. +- **Protocol Support**: Supports FTP, FTPS, and SFTP protocols. +- **Enhanced Logging**: Uses Loguru for structured logging of operations and errors. +- **Beautiful Terminal Output**: Employs the Rich library for styled console output, including tables and progress bars. +- **Detailed Inline Comments and Docstrings**: Provides clear documentation within the code for better understanding and maintenance. + +--- + +## Requirements + +- Python 3.7 or higher +- Required Python packages: + - `aioftp`: For asynchronous FTP client operations. + - `asyncssh`: For asynchronous SFTP operations. + - `loguru`: For logging. + - `rich`: For styled console output. + +Install the necessary packages using: + +```bash +pip install aioftp asyncssh loguru rich +``` + +--- + +## Usage + +To run the script, use the following command: + +```bash +python ftp_client.py --help +``` + +### Command-Line Arguments + +- **`--host`**: (Required) Server address (IP or hostname). +- **`--port`**: (Optional) Server port (default: 21 for FTP, 22 for SFTP). +- **`--username`**: (Optional) Username for authentication (default: `anonymous`). +- **`--password`**: (Optional) Password for authentication (default: empty). +- **`--protocol`**: (Optional) Protocol to use, either `ftp` or `sftp` (default: `ftp`). +- **`--secure`**: (Optional) Enable FTPS (for FTP protocol). + +### Subcommands + +The script supports various subcommands for performing different operations: + +- **`ls`**: List files in a remote directory. + + - `--path`: Remote path to list (default: `.`). + - `--recursive`: List files recursively. + +- **`get`**: Download a file from the server. + + - ``: Remote file path. + - ``: Local file path. + +- **`put`**: Upload a file to the server. + + - ``: Local file path. + - ``: Remote file path. + +- **`rm`**: Delete a file on the server. + + - ``: Remote file path to delete. + +- **`mkdir`**: Create a directory on the server. + + - ``: Remote directory path to create. + +- **`rmdir`**: Remove a directory on the server. + + - ``: Remote directory path to remove. + +- **`rename`**: Rename a file or directory on the server. + + - ``: Original remote path. + - ``: New remote path. + +- **`pwd`**: Show the current directory on the server. + +- **`cd`**: Change the current directory on the server. + + - ``: Remote directory path to change to. + +- **`batch`**: Perform batch upload/download operations. + - ``: Path to a JSON file containing operations. + +--- + +## Structure of the Script + +### Key Classes and Functions + +1. **`AsyncFTPClient` Class** + The main class responsible for handling FTP/SFTP connections and operations. + + - **`__init__`**: Initializes the client with connection parameters. + - **`connect`**: Establishes a connection to the server based on the specified protocol. + - **`disconnect`**: Closes the connection to the server. + - **`list_files`**: Lists files and directories at the specified remote path. + - **`download_file`**: Downloads a file from the server to the local filesystem. + - **`upload_file`**: Uploads a file from the local filesystem to the server. + - **`delete_file`**: Deletes a file on the server. + - **`make_directory`**: Creates a directory on the server. + - **`remove_directory`**: Removes a directory on the server. + - **`rename`**: Renames a file or directory on the server. + - **`get_current_directory`**: Retrieves the current working directory on the server. + - **`change_directory`**: Changes the current working directory on the server. + - **`batch_transfer`**: Performs batch upload/download operations based on a list of operations. + +2. **`create_parser` Function** + Creates and configures the argument parser for command-line options. + +3. **`main` Function** + The entry point of the script that handles command parsing and execution of the selected operation. + +--- + +## Example of Batch Operations JSON File + +The batch operations file should be in JSON format. Here’s an example structure: + +```json +[ + { + "action": "upload", + "local": "path/to/local/file.txt", + "remote": "path/to/remote/file.txt" + }, + { + "action": "download", + "remote": "path/to/remote/file.txt", + "local": "path/to/local/file.txt" + } +] +``` + +To execute batch operations, use the command: + +```bash +python ftp_client.py --host --protocol ftp batch operations.json +``` + +--- + +## Error Handling + +The script includes robust error handling: + +- If the connection fails, an error message is logged, and the script exits gracefully. +- Each operation (upload, download, delete, etc.) is wrapped in try-except blocks to catch and log exceptions. +- The user is informed of any operational errors through the console. + +--- + +## Conclusion + +The **Enhanced FTP Client Script** is a powerful and user-friendly tool for managing files over FTP and SFTP protocols. With support for asynchronous operations, detailed logging, and a clean command-line interface, it simplifies file transfers and remote file management tasks for developers and system administrators alike. + +This script serves as a versatile solution for anyone needing to interact with FTP/SFTP servers programmatically, making it a valuable addition to your toolkit. + +--- + +Feel free to adjust any sections to better align with your preferences or the specifics of your implementation! diff --git a/modules/lithium.pytools/doc/fuzz.md b/modules/lithium.pytools/doc/fuzz.md new file mode 100644 index 00000000..23fa7b0c --- /dev/null +++ b/modules/lithium.pytools/doc/fuzz.md @@ -0,0 +1,135 @@ +# Data Generation Tests Documentation + +## Overview + +This document outlines the test suite for the `generate_data` function, which is used to generate synthetic data based on a specified schema. The tests ensure that the function behaves correctly under various conditions, including different field types, empty schemas, and invalid configurations. The tests utilize the `pytest` framework for structured testing and logging. + +--- + +## Test Cases + +### 1. `test_generate_data_simple_schema` + +**Purpose**: To verify that the `generate_data` function can correctly generate records based on a simple schema with basic field types. + +**Schema**: + +```python +schema = { + "name": FieldInfo(type="string", length=10), + "age": FieldInfo(type="int", min=18, max=99) +} +``` + +**Expected Behavior**: + +- Generates 5 records. +- Each record should contain: + - A `name` that is a string of length up to 10 characters. + - An `age` that is an integer between 18 and 99. + +**Assertions**: + +- The length of the generated data should match `num_records`. +- Each record should have the keys `name` and `age`. +- The types and value ranges of `name` and `age` should be validated. + +### 2. `test_generate_data_various_field_types` + +**Purpose**: To ensure that `generate_data` can handle a schema with various field types and correctly generate data for each type. + +**Schema**: + +```python +schema = { + "name": FieldInfo(type="string", length=10), + "age": FieldInfo(type="int", min=18, max=99), + "email": FieldInfo(type="email"), + "phone": FieldInfo(type="phone"), + "uuid": FieldInfo(type="uuid"), + "date": FieldInfo(type="date", start_date="2020-01-01", end_date="2020-12-31"), + "choice": FieldInfo(type="choice", choices=["A", "B", "C"]), + "bool": FieldInfo(type="bool"), + "ip": FieldInfo(type="ip"), + "url": FieldInfo(type="url"), + "address": FieldInfo(type="address"), + "company": FieldInfo(type="company") +} +``` + +**Expected Behavior**: + +- Generates 3 records. +- Each record should contain valid data for all specified fields. + +**Assertions**: + +- The length of the generated data should match `num_records`. +- Each record should contain all specified keys. +- The types of each field should be validated according to the schema. + +### 3. `test_generate_data_empty_schema` + +**Purpose**: To verify that the function can handle an empty schema and return the expected output. + +**Schema**: + +```python +schema = {} +``` + +**Expected Behavior**: + +- Generates 5 empty records. + +**Assertions**: + +- The length of the generated data should be 5. +- Each record should be an empty dictionary. + +### 4. `test_generate_data_zero_records` + +**Purpose**: To ensure that the function can handle a request for zero records. + +**Schema**: + +```python +schema = { + "name": FieldInfo(type="string", length=10), + "age": FieldInfo(type="int", min=18, max=99) +} +``` + +**Expected Behavior**: + +- Generates 0 records. + +**Assertions**: + +- The length of the generated data should be 0. + +### 5. `test_generate_data_invalid_schema` + +**Purpose**: To confirm that the function raises an error when provided with an invalid schema. + +**Schema**: + +```python +schema = { + "name": FieldInfo(type="unknown") +} +``` + +**Expected Behavior**: + +- The function should raise a `ValueError`. + +**Assertions**: + +- Use `pytest.raises` to check that a `ValueError` is raised when calling `generate_data` with the invalid schema. + +--- + +## Conclusion + +This test suite ensures that the `generate_data` function behaves correctly across various scenarios, including valid and invalid input configurations. By covering a range of test cases, the suite helps maintain the reliability and robustness of the data generation functionality, making it suitable for use in applications requiring synthetic data generation. diff --git a/modules/lithium.pytools/doc/git.md b/modules/lithium.pytools/doc/git.md new file mode 100644 index 00000000..cd2ec16c --- /dev/null +++ b/modules/lithium.pytools/doc/git.md @@ -0,0 +1,239 @@ +# Git Utility Script Documentation + +## Overview + +The **Git Utility Script** is a Python tool designed to provide a comprehensive set of utility functions for interacting with Git repositories. It supports various Git operations, including cloning, pulling, pushing, branching, committing, stashing, and more. The script features enhanced logging using Loguru and beautiful terminal output with the Rich library, making it easy to manage Git repositories effectively. + +--- + +## Features + +- **Clone, Pull, Fetch, and Push Changes**: Simplifies common Git operations. +- **Branch Management**: Create, switch, merge, and list branches. +- **Change Management**: Add, commit, reset, stash, and apply stashed changes. +- **Tag Management**: Create and delete tags. +- **Remote Management**: Add, remove, and set remotes. +- **Repository Status and Log**: View the status of the repository and the commit log. +- **Enhanced Logging**: Utilizes Loguru for structured logging. +- **Beautiful Terminal Output**: Uses Rich for styled console output, including tables and panels. +- **Detailed Inline Comments and Docstrings**: Provides clear documentation within the code for better understanding. + +--- + +## Requirements + +- Python 3.x +- Required Python packages: + - `loguru`: For logging. + - `rich`: For styled console output. + +Install the necessary packages using: + +```bash +pip install loguru rich +``` + +--- + +## Usage + +To run the script, use the following command: + +```bash +python git_utils.py --help +``` + +### Command-Line Arguments + +- **`--repo-dir`**: (Optional) Path to the local repository (default: current directory). + +### Subcommands + +The script supports various subcommands for performing different operations: + +- **`clone`**: Clone a Git repository. + + - `repo_url`: URL of the repository to clone. + - `clone_dir`: (Optional) Directory to clone into. + +- **`pull`**: Pull the latest changes from the remote repository. + +- **`fetch`**: Fetch the latest changes from the remote repository without merging. + +- **`add`**: Add changes to the staging area. + + - `paths`: (Optional) List of file paths to add (default: all changes). + +- **`commit`**: Commit changes with a message. + + - `message`: Commit message. + +- **`push`**: Push changes to the remote repository. + + - `--remote`: (Optional) Name of the remote repository (default: `origin`). + - `--branch`: (Optional) Name of the branch to push (default: `main`). + +- **`create-branch`**: Create a new branch. + + - `branch_name`: Name of the new branch. + +- **`switch-branch`**: Switch to an existing branch. + + - `branch_name`: Name of the branch to switch to. + +- **`merge-branch`**: Merge a branch into the current branch. + + - `branch_name`: Name of the branch to merge. + +- **`list-branches`**: List all branches in the repository. + +- **`reset`**: Reset the repository to a specific commit. + + - `--commit`: (Optional) Commit to reset to (default: `HEAD`). + +- **`stash`**: Stash the current changes. + +- **`apply-stash`**: Apply the latest stashed changes. + +- **`status`**: View the current status of the repository. + +- **`log`**: View the commit log. + + - `--num`: (Optional) Number of log entries to show (default: 10). + +- **`add-remote`**: Add a new remote repository. + + - `remote_name`: Name of the remote repository. + - `remote_url`: URL of the remote repository. + +- **`remove-remote`**: Remove a remote repository. + + - `remote_name`: Name of the remote repository. + +- **`show-remotes`**: Show the list of remotes. + +- **`create-tag`**: Create a new tag. + + - `tag_name`: Name of the new tag. + +- **`delete-tag`**: Delete a tag. + + - `tag_name`: Name of the tag to delete. + +- **`set-user-info`**: Set user name and email for the repository. + + - `name`: User name. + - `email`: User email. + +- **`blame`**: Show what revision and author last modified each line of a file. + + - `file_path`: Path to the file to blame. + +- **`revert`**: Revert a specific commit. + + - `commit_hash`: Hash of the commit to revert. + +- **`cherry-pick`**: Apply changes introduced by existing commits. + + - `commit_hash`: Hash of the commit to cherry-pick. + +- **`rebase`**: Rebase current branch onto another. + + - `branch_name`: Name of the branch to rebase onto. + +- **`diff`**: Show changes between commits. + + - `--commit`: (Optional) Commit hash to compare. + +- **`clean`**: Remove untracked files from the working tree. + +--- + +## Structure of the Script + +### Key Classes and Functions + +1. **`GitRepository` Class** + The main class responsible for handling Git operations. + + - **`__init__`**: Initializes the Git repository with the specified directory. + - **`run_git_command`**: Executes a Git command in the repository directory. + - **Various Methods**: Implements Git operations such as cloning, pulling, pushing, branching, committing, stashing, and more. + +2. **`create_parser` Function** + Creates and configures the argument parser for command-line options. + +3. **`main` Function** + The entry point of the script that handles command parsing and execution of the selected operation. + +--- + +## Example Commands + +Here are some examples of how to use the script: + +### Clone a Repository + +```bash +python git_utils.py clone https://github.com/user/repo.git +``` + +### Pull Latest Changes + +```bash +python git_utils.py pull +``` + +### Add Changes to Staging Area + +```bash +python git_utils.py add path/to/file.txt +``` + +### Commit Changes + +```bash +python git_utils.py commit "Initial commit" +``` + +### Push Changes to Remote + +```bash +python git_utils.py push --remote origin --branch main +``` + +### Create a New Branch + +```bash +python git_utils.py create-branch new-feature +``` + +### List All Branches + +```bash +python git_utils.py list-branches +``` + +### View Repository Status + +```bash +python git_utils.py status +``` + +--- + +## Error Handling + +The script includes robust error handling: + +- If the specified repository directory does not exist, an error message is logged, and the script exits. +- Each Git operation is wrapped in try-except blocks to catch and log exceptions. +- User confirmations are prompted for potentially destructive operations (e.g., resetting changes, cleaning untracked files). + +--- + +## Conclusion + +The **Git Utility Script** is a powerful and user-friendly tool for managing Git repositories through the command line. With support for a wide range of Git operations, enhanced logging, and beautiful terminal output, it simplifies the process of working with Git, making it an invaluable addition to any developer's toolkit. + +This script serves as a versatile solution for anyone needing to interact with Git repositories programmatically, facilitating efficient version control and collaboration. diff --git a/modules/lithium.pytools/doc/hotspot.md b/modules/lithium.pytools/doc/hotspot.md new file mode 100644 index 00000000..20e292ed --- /dev/null +++ b/modules/lithium.pytools/doc/hotspot.md @@ -0,0 +1,204 @@ +# WiFi Hotspot Manager Documentation + +## Overview + +The **WiFi Hotspot Manager** is a cross-platform tool that enables users to easily create, configure, and manage WiFi hotspots on Linux and Windows. The tool supports various authentication methods (WPA-PSK, WPA2, WPA3), allows for the saving and loading of hotspot profiles, and provides monitoring capabilities for connected clients. Additionally, the tool supports asynchronous operations and includes enhanced logging with Loguru and beautiful terminal output using Rich. + +--- + +## Features + +- **Create and Manage WiFi Hotspots**: Start and stop hotspots with customizable configurations. +- **Multiple Authentication Methods**: Supports WPA-PSK, WPA2, and WPA3 for security. +- **Profile Management**: Save and load hotspot configurations for easy reuse. +- **Monitor Connected Clients**: View the clients currently connected to the hotspot. +- **Asynchronous Operations**: Use asyncio for non-blocking execution of hotspot commands. +- **Logging**: Detailed logging with Loguru to capture all activities and errors. +- **CLI Enhancements**: Use Rich for terminal output, including formatted tables and progress indicators. + +--- + +## Requirements + +- Python 3.x +- Required Python packages: + - `loguru`: For logging. + - `rich`: For beautified console output. + - `asyncio`: For asynchronous operations. + - `nmcli` (for Linux): Command-line interface for managing network connections. + - `netsh` (for Windows): Command-line interface for managing network settings. + +To install the required packages, use the following: + +```bash +pip install loguru rich +``` + +--- + +## Usage + +The script offers a command-line interface (CLI) for managing the hotspot. Here's how to use it: + +### General Commands + +```bash +python hotspot.py --help +``` + +### Available Commands + +- **`start`**: Start a WiFi hotspot with the specified configuration. + - `--name`: Hotspot name (SSID). + - `--password`: Security key (password) for the hotspot. + - `--authentication`: Authentication type (`wpa-psk`, `wpa2`, `wpa3`). + - `--encryption`: Encryption method (`aes`, `tkip`). + - `--channel`: Channel number for the hotspot (1-14). + - `--max-clients`: Maximum number of clients allowed to connect. + - `--band`: WiFi frequency band (`bg`, `a`, `ac`). + - `--hidden`: Whether to hide the SSID. + +Example: + +```bash +python hotspot.py start --name MyHotspot --password secret --authentication wpa2 --channel 11 --max-clients 5 --band ac +``` + +- **`stop`**: Stop the running hotspot. + +Example: + +```bash +python hotspot.py stop +``` + +- **`status`**: Check the status of the hotspot (whether it’s running or stopped). + +Example: + +```bash +python hotspot.py status +``` + +- **`list-clients`**: List the clients currently connected to the hotspot. + +Example: + +```bash +python hotspot.py list-clients +``` + +- **`save-profile`**: Save the current hotspot configuration as a profile. + - `--profile`: Profile name. + - Other hotspot configuration options like `--name`, `--authentication`, `--encryption`, etc. + +Example: + +```bash +python hotspot.py save-profile --profile myProfile --name MyHotspot --authentication wpa2 --encryption aes --channel 11 +``` + +- **`load-profile`**: Load a previously saved hotspot profile and start the hotspot. + - `--profile`: Profile name to load. + +Example: + +```bash +python hotspot.py load-profile --profile myProfile +``` + +--- + +## Platform Support + +The WiFi Hotspot Manager supports the following platforms: + +- **Linux**: Uses `nmcli` to manage connections and create hotspots. +- **Windows**: Uses `netsh` for hotspot management. + +If running on an unsupported platform, the script will raise a `NotImplementedError`. + +--- + +## Configuration + +### `HotspotConfig` Class + +This class stores the configuration for the hotspot, including: + +- **`name`**: SSID (name) of the hotspot. +- **`password`**: Password for the hotspot. +- **`authentication`**: Type of authentication (WPA, WPA2, WPA3). +- **`encryption`**: Type of encryption (AES, TKIP). +- **`channel`**: Channel number for the WiFi network. +- **`max_clients`**: Maximum number of connected clients allowed. +- **`band`**: WiFi frequency band (`bg`, `a`, `ac`). +- **`hidden`**: Whether the SSID is hidden or visible. + +Example: + +```python +config = HotspotConfig( + name="MyHotspot", + password="securepassword", + authentication=AuthType.WPA2, + encryption=EncryptionType.AES, + channel=11, + max_clients=10, + band="ac", + hidden=False +) +``` + +--- + +## Asynchronous Operations + +The script uses **asyncio** for running commands asynchronously. This allows operations such as starting or stopping the hotspot to run without blocking the main thread. The script supports non-blocking execution for commands like: + +- Starting the hotspot. +- Stopping the hotspot. +- Checking hotspot status. +- Listing connected clients. + +This approach ensures that the application can handle multiple commands concurrently and efficiently. + +--- + +## Saving and Loading Profiles + +### Saving Profiles + +The script allows saving hotspot configurations as profiles. This makes it easy to reuse configurations. Profiles are saved in a JSON file located at `~/.hotspot/config.json`. + +### Loading Profiles + +You can load previously saved profiles and start the hotspot with those settings. + +--- + +## Logging + +The script uses **Loguru** for logging: + +- Logs are written to the console and also saved to a log file (`hotspot.log`). +- Logs are rotated every 500 MB and retained for 10 days. +- Logs include debug, info, error, and critical levels for detailed tracking. + +--- + +## Error Handling + +The script includes detailed error handling: + +- **Platform not supported**: If the script is run on an unsupported platform, an exception will be raised. +- **Missing password**: If the password is not provided when starting the hotspot, the script will raise a `ValueError`. +- **Command failures**: If the shell commands used to start/stop the hotspot fail, an error message is logged. + +--- + +## Conclusion + +The **WiFi Hotspot Manager** is a powerful, cross-platform tool for managing WiFi hotspots, supporting multiple authentication methods, and providing an easy-to-use interface for managing configurations, starting and stopping hotspots, and monitoring connected clients. + +This tool is ideal for anyone who needs to quickly set up a WiFi hotspot on Linux or Windows, with the flexibility to save and load hotspot configurations for repeated use. With enhanced CLI output and comprehensive logging, it provides a user-friendly experience for managing hotspots in both home and professional environments. diff --git a/modules/lithium.pytools/doc/libclang_finder.md b/modules/lithium.pytools/doc/libclang_finder.md new file mode 100644 index 00000000..cf03f5d8 --- /dev/null +++ b/modules/lithium.pytools/doc/libclang_finder.md @@ -0,0 +1,170 @@ +# libclang Path Finder Documentation + +## Overview + +The **libclang Path Finder** is a Python tool designed to help locate the `libclang` shared library on various operating systems (Linux, macOS, Windows). It allows users to configure the `libclang` path for use with Python libraries like `clang.cindex`. This tool supports clearing cache files, adding custom search patterns, listing all found `libclang` libraries, and more. + +The script includes functionality to: + +- Search for `libclang` on different operating systems. +- Select and cache the appropriate `libclang` path. +- List available `libclang` libraries. +- Handle logging and error reporting. +- Support both custom paths and automatic searching. + +--- + +## Features + +- **Cross-platform support**: Detects `libclang` paths for Linux, macOS, and Windows. +- **Custom search patterns**: Allows adding custom glob patterns for more flexible search. +- **Cache management**: Caches the found `libclang` path for faster subsequent accesses. +- **Verbose logging**: Option to enable detailed logs for debugging. +- **Interactive selection**: In case of multiple results, users can choose which `libclang` path to use. +- **Error handling**: Provides meaningful error messages when `libclang` cannot be found. + +--- + +## Requirements + +- **Python 3.x** +- Required Python packages: + - `clang`: For using `libclang`. + - `loguru`: For logging. + - `rich`: For beautified console output. + +Install the required packages using: + +```bash +pip install clang loguru rich +``` + +--- + +## Usage + +### Command-Line Arguments + +- **`--path`**: Specifies a custom path to the `libclang` library. +- **`--clear-cache`**: Clears the cached `libclang` path (if it exists). +- **`--search-patterns`**: Adds additional glob patterns for searching `libclang`. +- **`--cache-file`**: Path to the cache file for storing the `libclang` path (default is `libclang_path_cache.txt`). +- **`--log-file`**: Path to the log file (default is `libclang_finder.log`). +- **`--list`**: Lists all found `libclang` libraries. +- **`--verbose`**: Enables verbose logging, providing more detailed output. + +#### Examples + +1. **Specify a custom libclang path**: + + ```bash + python libclang_finder.py --path /custom/path/libclang.so + ``` + +2. **Clear the cached libclang path**: + + ```bash + python libclang_finder.py --clear-cache + ``` + +3. **Add additional search patterns**: + + ```bash + python libclang_finder.py --search-patterns "/opt/llvm/lib/libclang.so*" + ``` + +4. **List all found libclang libraries**: + + ```bash + python libclang_finder.py --list + ``` + +5. **Enable verbose logging**: + + ```bash + python libclang_finder.py --verbose + ``` + +--- + +## Functions + +### `clear_cache_file()` + +Clears the cache file that stores the `libclang` path. + +### `cache_libclang_path(path: Path)` + +Caches the found `libclang` path to a file for later use. + +### `load_cached_libclang_path() -> Optional[Path]` + +Loads the cached `libclang` path, if it exists and is valid. + +### `find_libclang_linux() -> List[Path]` + +Searches for `libclang` on Linux by using predefined glob patterns. + +### `find_libclang_macos() -> List[Path]` + +Searches for `libclang` on macOS using predefined glob patterns. + +### `find_libclang_windows() -> List[Path]` + +Searches for `libclang` on Windows using predefined glob patterns. + +### `search_paths(patterns: List[str]) -> List[Path]` + +Searches for `libclang` using the provided glob patterns and any custom patterns specified by the user. + +### `select_libclang_path(paths: List[Path]) -> Optional[Path]` + +If multiple `libclang` paths are found, this function allows the user to select one interactively. + +### `get_libclang_path() -> Path` + +Determines the appropriate `libclang` path, either from a custom path, cache, or by searching the system. + +### `configure_clang()` + +Configures the `libclang` path for use by `clang.cindex`. + +### `list_libclang_versions() -> List[Path]` + +Lists all available `libclang` libraries found on the system. + +--- + +## Logging + +The tool uses **Loguru** for logging, which allows the user to track the execution flow and debug any issues. + +- **Log level**: The log level is `INFO` by default, but it can be set to `DEBUG` with the `--verbose` flag. +- **Log file**: Logs are stored in `libclang_finder.log`. +- **Cache file**: The cached `libclang` path is stored in `libclang_path_cache.txt`. + +--- + +## Error Handling + +- **Unsupported OS**: If the script detects an unsupported operating system, it will raise a `RuntimeError` and display an error message. +- **Missing libclang**: If no `libclang` path is found, the tool will notify the user and raise a `RuntimeError`. + +--- + +## Example Workflow + +1. **Search for `libclang`**: + The script first checks for a custom path to `libclang`. If no custom path is provided, it searches the system based on the OS and any additional search patterns specified. + +2. **Select the correct `libclang` path**: + If multiple paths are found, the user is prompted to choose one. Once selected, it is cached for future use. + +3. **Configure `clang.cindex`**: + After finding the `libclang` path, the tool configures `clang.cindex` with the selected path, making it ready for use. + +--- + +## Conclusion + +The **libclang Path Finder** script simplifies the process of locating and configuring the `libclang` library on various platforms. It offers powerful search functionality, caching, and a user-friendly interface for selecting the appropriate library path. Whether you're working with `clang.cindex` or other tools that require `libclang`, this tool streamlines the setup process. diff --git a/modules/lithium.pytools/doc/net.md b/modules/lithium.pytools/doc/net.md new file mode 100644 index 00000000..df01f2d3 --- /dev/null +++ b/modules/lithium.pytools/doc/net.md @@ -0,0 +1,139 @@ +# .NET Framework Installer Script Documentation + +## Overview + +The **.NET Framework Installer Script** is a Python command-line utility designed to check installed .NET Framework versions on a Windows machine, download the required installer if necessary, and handle installation and uninstallation of specific versions. It supports multithreaded downloads, checksum verification for file integrity, and uses the Windows Registry to check for installed versions. + +This tool is useful for administrators and developers who need to manage the installation of specific .NET Framework versions on Windows machines. + +--- + +## Features + +- **Check Installed Versions**: Query the Windows Registry to check if a specific version of the .NET Framework is installed. +- **Download and Install**: Automatically download the installer for missing .NET Framework versions and run the installer. +- **Multithreaded Downloading**: Use asyncio and aiohttp to download the installer in parallel, speeding up the download process. +- **Checksum Verification**: Optionally verify the downloaded installer file’s integrity using SHA256 or MD5 checksums. +- **Uninstall .NET Framework Versions**: Remove an installed version of the .NET Framework from the system. +- **Logging and Error Handling**: Detailed logging with Loguru and informative messages for all operations. +- **Cross-Platform Usage**: Although designed for Windows, the script supports Linux and macOS environments, but only performs download-related actions for non-Windows systems. + +--- + +## Requirements + +- **Python 3.9+** +- **Windows Operating System** (For installation and uninstallation functionalities) +- Required Python libraries: + - `requests` + - `tqdm` + - `aiohttp` + - `aiofiles` + - `loguru` + +You can install the required libraries using: + +```bash +pip install requests tqdm aiohttp aiofiles loguru +``` + +--- + +## Usage + +### Command-Line Arguments + +The script provides the following command-line options: + +- **`--list`**: List all installed .NET Framework versions. +- **`--check VERSION`**: Check if a specific .NET Framework version (e.g., `v4.0.30319`) is installed. +- **`--download URL`**: Specify the URL from which to download the .NET Framework installer. +- **`--install FILE_PATH`**: Specify the local file path to the installer executable for installation. +- **`--threads`**: Specify the number of threads to use for multithreaded downloading (default is 4). +- **`--checksum SHA256`**: Specify the expected SHA256 checksum of the downloaded file for verification. +- **`--uninstall VERSION`**: Uninstall a specific .NET Framework version. +- **`--verbose`**: Enable verbose logging. + +#### Example Commands + +1. **List Installed .NET Framework Versions**: + + ```bash + python net_framework_installer.py --list + ``` + +2. **Check if a Specific Version is Installed**: + + ```bash + python net_framework_installer.py --check v4.0.30319 + ``` + +3. **Download and Install a Version**: + + ```bash + python net_framework_installer.py --check v4.0.30319 --download [URL] --install [INSTALLER_PATH] --threads 4 --checksum [SHA256] + ``` + +4. **Uninstall a Specific Version**: + ```bash + python net_framework_installer.py --uninstall v4.0.30319 + ``` + +--- + +## Class Definitions + +### `NetFrameworkInstallerConfig` + +This class contains the configuration settings for the installer, including the download directory, number of threads, and log file path. + +#### Attributes: + +- **`download_dir`**: Directory where downloaded installers will be saved. +- **`num_threads`**: Number of threads to use for downloading the installer. +- **`log_file`**: Path to the log file. + +### `NetFrameworkInstaller` + +This class handles the main functionality, such as checking installed versions, downloading installers, verifying file checksums, installing/uninstalling .NET Framework versions, and logging. + +#### Methods: + +- **`setup_logging()`**: Configures logging with Loguru, including rotation and log levels. +- **`verify_file_checksum(file_path, original_checksum, hash_algo)`**: Verifies the checksum of a downloaded file using SHA256 or MD5. +- **`check_dotnet_installed(version)`**: Checks if a specific version of .NET Framework is installed by querying the Windows Registry. +- **`list_installed_dotnets()`**: Lists all installed .NET Framework versions. +- **`download_file_part(session, url, start, end)`**: Asynchronously downloads a part of the file specified by byte range. +- **`download_file(url, filename, num_threads, expected_checksum)`**: Downloads a file using multiple threads asynchronously and verifies the checksum. +- **`install_software(installer_path)`**: Executes the installer from a specified path. +- **`uninstall_dotnet(version)`**: Uninstalls a specific .NET Framework version. +- **`parse_arguments()`**: Parses command-line arguments. +- **`handle_download_and_install(url, installer_path, checksum)`**: Manages the download and installation process. +- **`main()`**: The main function that invokes the appropriate script functionality based on the command-line arguments. + +--- + +## Logging and Error Handling + +- **Log Levels**: The script uses Loguru for logging with different log levels. The default level is `INFO`, but it can be set to `DEBUG` for more detailed logs. +- **Log File**: Logs are stored in a file, and older logs are archived and compressed. +- **Error Handling**: The script handles various exceptions such as missing files, registry query failures, checksum mismatches, etc., and logs detailed error messages. + +--- + +## Example Workflow + +1. **Check if a specific .NET Framework version is installed**: + The script queries the Windows Registry to check if a given version of .NET Framework (e.g., `v4.0.30319`) is installed. If it is installed, the script outputs the status. If not, the user is informed that the version is not installed. + +2. **Download and install**: + If the version is not installed, the user can provide a download URL and installer path. The script will download the installer using multiple threads and verify the file's checksum. After the download completes, the installer is executed. + +3. **Uninstall .NET Framework**: + The script can also uninstall a specific version of .NET Framework by deleting its registry entry. + +--- + +## Conclusion + +The **.NET Framework Installer Script** simplifies the management of .NET Framework installations on Windows by allowing users to easily check, install, or uninstall specific versions. It features multithreaded downloads, checksum verification for security, and comprehensive logging for troubleshooting. The script is a valuable tool for administrators who need to manage .NET Framework versions across multiple systems. diff --git a/modules/lithium.pytools/doc/nginx.md b/modules/lithium.pytools/doc/nginx.md new file mode 100644 index 00000000..4f59ea0f --- /dev/null +++ b/modules/lithium.pytools/doc/nginx.md @@ -0,0 +1,137 @@ +# Nginx Manager Documentation + +This document provides a comprehensive guide on how to use the **Nginx Manager**, a command-line utility designed to manage Nginx server operations. The tool allows users to start, stop, reload, and configure Nginx, along with managing logs and sites. + +--- + +## Key Features + +- **Start/Stop/Reload Nginx**: Control the Nginx server's state. +- **Test Configuration**: Validate the Nginx configuration syntax. +- **View Logs**: Access Nginx access and error logs. +- **Clear Logs**: Clear the contents of log files. +- **Backup and Restore Configuration**: Manage backups of the Nginx configuration files. +- **List Sites**: Display available and enabled sites. +- **Version Information**: Retrieve the version of the Nginx server. +- **Enhanced Logging**: Uses the `Loguru` library for detailed logging of operations and errors. +- **Rich Console Output**: Utilizes the `Rich` library for beautified terminal outputs. + +--- + +## Requirements + +- Python 3.7 or higher. +- Required libraries: `loguru`, `rich`. + +Install the required libraries using pip: + +```bash +pip install loguru rich +``` + +Make sure the Nginx server is installed and accessible on your system. + +--- + +## Usage + +The script can be executed from the command line with various commands. The command syntax is as follows: + +```bash +python nginx_manager.py [command] +``` + +### Available Commands + +- **start**: Start the Nginx server. +- **stop**: Stop the Nginx server. +- **reload**: Reload the Nginx configuration. +- **restart**: Restart the Nginx server. +- **test**: Test the Nginx configuration syntax. +- **check**: Check Nginx configuration syntax. +- **status**: Show the running status of Nginx. +- **version**: Show Nginx version information. +- **backup**: Backup the Nginx configuration file. +- **restore**: Restore the Nginx configuration from backup. +- **view_logs**: View Nginx logs (access or error). +- **clear_logs**: Clear Nginx logs (access or error). +- **list_sites**: List available and enabled sites. +- **help**: Show help message. + +### Example Usage + +#### Start Nginx + +To start the Nginx server: + +```bash +python nginx_manager.py start +``` + +#### Stop Nginx + +To stop the Nginx server: + +```bash +python nginx_manager.py stop +``` + +#### Reload Nginx Configuration + +To reload the Nginx configuration: + +```bash +python nginx_manager.py reload +``` + +#### Test Nginx Configuration + +To test the Nginx configuration: + +```bash +python nginx_manager.py test +``` + +#### View Access Logs + +To view the access logs: + +```bash +python nginx_manager.py view_logs access +``` + +#### Clear Error Logs + +To clear the error logs: + +```bash +python nginx_manager.py clear_logs error +``` + +#### Backup Nginx Configuration + +To backup the Nginx configuration: + +```bash +python nginx_manager.py backup +``` + +#### List Available Sites + +To list available and enabled sites: + +```bash +python nginx_manager.py list_sites +``` + +--- + +## Error Handling and Logging + +The script uses the `Loguru` library for logging. Logs are written to `nginx_manager.log` and the console, providing detailed information about operations, warnings, and errors. This helps in tracking the actions performed by the script and diagnosing issues. + +--- + +## Conclusion + +The **Nginx Manager** is a powerful utility for managing Nginx server operations. It simplifies the process of controlling the server and managing configurations while providing robust error handling and logging capabilities. By following this documentation, users can effectively utilize the tool for their Nginx management needs. diff --git a/modules/lithium.pytools/doc/nm.md b/modules/lithium.pytools/doc/nm.md new file mode 100644 index 00000000..f90e5c1b --- /dev/null +++ b/modules/lithium.pytools/doc/nm.md @@ -0,0 +1,127 @@ +# NM Tool for Analyzing Symbols in Binary Files Documentation + +This document provides a comprehensive guide on how to use the **NM Tool**, a command-line utility designed for analyzing symbols in binary files. The tool leverages the `nm` command to retrieve, filter, search, count, and export symbols from binaries, enhancing functionality with robust exception handling and detailed logging. + +--- + +## Key Features + +- **Symbol Retrieval**: Load symbols from binaries using the `nm` command. +- **Filtering and Searching**: Filter symbols by type or name using regular expressions. +- **Count Symbols**: Count the number of symbols by type. +- **Export Symbols**: Export symbols to various formats (e.g., TXT, CSV, JSON, XML). +- **Display Symbol Information**: Present symbols in a formatted table using Rich for enhanced terminal output. +- **Error Handling**: Custom exceptions for better error management. +- **Logging**: Detailed logging of operations and errors using the `Loguru` library. + +--- + +## Requirements + +- Python 3.7 or higher. +- Required libraries: `loguru`, `rich`. + +Install the required libraries using pip: + +```bash +pip install loguru rich +``` + +Make sure the `nm` command is available on your system (usually found in Unix-like environments). + +--- + +## Usage + +The script can be executed from the command line with various options. The command syntax is as follows: + +```bash +python nm_tool.py [options] +``` + +### Command-Line Options + +- **``**: Required. Path to the binary file to analyze. +- **`-f`, `--filter`**: Optional. Filter symbols by type (e.g., `T`, `D`, `B`). +- **`-s`, `--search`**: Optional. Search for a specific symbol by name. +- **`-a`, `--address`**: Optional. Find symbol by address. +- **`-d`, `--detailed`**: Optional. Display detailed output for symbols. +- **`-c`, `--count`**: Optional. Count symbols by type. +- **`-e`, `--export`**: Optional. Export symbols to a file (supports TXT, CSV, JSON, XML). +- **`-v`, `--verbose`**: Optional. Increase output verbosity. +- **`--demangle`**: Optional. Demangle symbol names. +- **`--extern`**: Optional. Display only external symbols. +- **`--size`**: Optional. Display symbols with sizes. +- **`--pattern`**: Optional. Search symbols matching a regex pattern. + +--- + +## Example Usage + +### Analyze a Binary File + +To analyze a binary file and retrieve its symbols: + +```bash +python nm_tool.py /path/to/binary +``` + +### Filter Symbols by Type + +To filter symbols by type (e.g., `T` for text symbols): + +```bash +python nm_tool.py /path/to/binary -f T +``` + +### Search for a Specific Symbol + +To search for a specific symbol by name: + +```bash +python nm_tool.py /path/to/binary -s my_function +``` + +### Count Symbols by Type + +To count the number of symbols by type: + +```bash +python nm_tool.py /path/to/binary -c +``` + +### Export Symbols to CSV + +To export symbols to a CSV file: + +```bash +python nm_tool.py /path/to/binary -e symbols.csv +``` + +### Display Detailed Information + +To display detailed information about the symbols: + +```bash +python nm_tool.py /path/to/binary -d +``` + +### List Symbols with Sizes + +To retrieve and display symbols along with their sizes: + +```bash +python nm_tool.py /path/to/binary --size +``` + +--- + +## Error Handling and Logging + +The script uses the `Loguru` library for logging. Logs are written to `nm_tool.log` and the console, providing detailed information about operations, warnings, and errors. This helps in tracking the actions performed by the script and diagnosing issues. + +--- + +## Conclusion + +The **NM Tool for Analyzing Symbols in Binary Files** is a powerful utility for developers and system administrators. It simplifies the process of analyzing binary files and retrieving symbol information while providing robust error handling and logging capabilities. By following this documentation, users can effectively utilize the tool for their binary analysis needs. diff --git a/modules/lithium.pytools/doc/output.md b/modules/lithium.pytools/doc/output.md new file mode 100644 index 00000000..8ad1aa4a --- /dev/null +++ b/modules/lithium.pytools/doc/output.md @@ -0,0 +1,164 @@ +# File Display and Validation CLI Tool Documentation + +## Overview + +This **File Display and Validation CLI Tool** is designed to pretty-print and validate various types of data files such as JSON, YAML, TOML, XML, CSV, and INI. The tool provides a user-friendly command-line interface to format and display files with beautiful syntax highlighting using the **Rich** library, and it includes error handling and logging through **Loguru**. + +It supports multiple file formats, syntax validation, and customized output options. The tool also allows reading from standard input and supports overwriting output files when necessary. + +--- + +## Features + +- **Pretty Print Files**: Format and display the content of JSON, YAML, TOML, XML, CSV, and INI files with syntax highlighting. +- **Validate File Syntax**: Validate file contents without displaying them. +- **Read from Standard Input**: Support for reading files via standard input (`stdin`). +- **Rich Output**: Use **Rich** for terminal output, including syntax highlighting and formatted tables. +- **Logging**: Detailed logging with **Loguru**, including support for verbose logging. +- **File Overwriting**: Option to overwrite existing output files. +- **Customizable Options**: Choose indentation level, output format, and more. + +--- + +## Requirements + +- Python 3.x +- Required Python packages: + - `loguru`: For logging. + - `rich`: For terminal output and syntax highlighting. + - `yaml`: For parsing YAML files. + - `toml`: For parsing TOML files. + - `xml.etree.ElementTree`: For parsing XML files. + - `csv`: For handling CSV files. + - `configparser`: For parsing INI files. + +Install the required packages using: + +```bash +pip install loguru rich pyyaml toml +``` + +--- + +## Usage + +### Command-Line Arguments + +The tool provides several command-line options to process the files. + +#### Arguments + +- **`files`**: The path(s) to the file(s) or `-` to read from standard input (e.g., `example.json`, `example.yaml`, etc.). +- **`--format`**: Specify the format of the file if the file extension doesn't match the content (e.g., `json`, `yaml`, `toml`, `xml`, `csv`, `ini`). +- **`--output`**: Path to the output file where the content will be saved. If the output file exists, the tool will ask if it should overwrite it. +- **`--overwrite`**: Flag to overwrite the output file if it exists without asking. +- **`--theme`**: Code highlighting theme for syntax highlighting (default is `monokai`). +- **`--indent`**: Indentation level for pretty-printing (default is 4). +- **`--validate`**: Flag to validate the file's syntax without displaying it. +- **`--verbose`**: Enable verbose logging for more detailed output. + +#### Examples + +1. **Pretty Print a JSON File**: + +```bash +python ra.py example.json --format json +``` + +2. **Validate a YAML File**: + +```bash +python ra.py example.yaml --validate +``` + +3. **Pretty Print Multiple Files and Overwrite Output**: + +```bash +python ra.py example1.json example2.yaml --output output.json --overwrite +``` + +4. **Read from Standard Input**: + +```bash +cat example.toml | python ra.py - --format toml +``` + +--- + +## Functions + +### `pretty_print_json(data: str, indent: Optional[int] = 4) -> None` + +Formats and prints JSON data using the specified indentation level. + +### `pretty_print_yaml(data: str) -> None` + +Formats and prints YAML data. + +### `pretty_print_toml(data: str) -> None` + +Formats and prints TOML data. + +### `pretty_print_xml(data: str) -> None` + +Formats and prints XML data. + +### `pretty_print_csv(data: str) -> None` + +Formats and prints CSV data in a table format using **Rich**. + +### `pretty_print_ini(data: str) -> None` + +Formats and prints INI data in a table format using **Rich**. + +### `validate_file(file_path: Union[Path, str], file_format: str) -> bool` + +Validates the syntax of the specified file based on its format (JSON, YAML, TOML, XML, CSV, INI). + +### `display_file(file_path: Path, file_format: str, output: Optional[Path] = None, indent: Optional[int] = 4, validate: bool = False) -> None` + +Displays the content of the file in a formatted manner based on its format. If `validate` is `True`, it will only validate the file without displaying it. + +### `read_stdin() -> str` + +Reads data from standard input (useful for piping data into the script). + +--- + +## Logging + +The tool uses **Loguru** for logging, with the following features: + +- **Log Level**: The log level is set to `DEBUG` by default. +- **Log File**: Logs are stored in `ra.log`. +- **Verbose Mode**: When `--verbose` is enabled, logs are written in more detail, including every step of the file processing. + +--- + +## Example JSON Configuration + +```json +{ + "project_name": "MyProject", + "version": "1.0", + "cpp_standard": "11", + "executable": true, + "static_library": false, + "shared_library": false, + "enable_testing": true, + "include_dirs": ["include", "libs/boost/include"], + "sources": "src/*.cpp", + "compiler_flags": ["-O3", "-Wall"], + "linker_flags": ["-lpthread"], + "dependencies": ["Boost", "OpenCV"], + "subdirs": ["lib", "tests"], + "install_path": "bin", + "test_framework": "GoogleTest" +} +``` + +--- + +## Conclusion + +This **File Display and Validation CLI Tool** simplifies the process of managing and working with various file formats. With support for **JSON**, **YAML**, **TOML**, **XML**, **CSV**, and **INI** files, it makes file validation, formatting, and display accessible through a clean command-line interface. Enhanced with **Rich** for output and **Loguru** for logging, it provides a powerful tool for developers and system administrators alike. diff --git a/modules/lithium.pytools/doc/port_scanner.md b/modules/lithium.pytools/doc/port_scanner.md new file mode 100644 index 00000000..46525fcd --- /dev/null +++ b/modules/lithium.pytools/doc/port_scanner.md @@ -0,0 +1,105 @@ +# Asynchronous Port Scanner Tool Documentation + +This document provides a comprehensive guide on how to use the **Asynchronous Port Scanner Tool**, a Python script designed for scanning specified ports on given IP addresses using TCP or UDP protocols. The tool includes functionalities to scan ports, save results, and handle exceptions with detailed logging. + +--- + +## Key Features + +- **Asynchronous Scanning**: Utilizes `asyncio` for efficient port scanning. +- **Protocol Support**: Supports both TCP and UDP protocols. +- **Detailed Logging**: Uses the `Loguru` library for logging operations and errors. +- **Rich Console Output**: Provides beautified terminal outputs using the `Rich` library. +- **Progress Indicators**: Displays progress during scanning operations. +- **Customizable Options**: Allows users to specify port ranges, timeouts, and output formats. + +--- + +## Requirements + +- Python 3.7 or higher. +- Required libraries: `paramiko`, `loguru`, `rich`. + +Install the required libraries using pip: + +```bash +pip install paramiko loguru rich +``` + +--- + +## Usage + +The script can be executed from the command line with various options. The command syntax is as follows: + +```bash +python port_scanner.py [options] +``` + +### Command-Line Options + +- **``**: Required. Target IP address(es) to scan. +- **`-p`, `--ports`**: Optional. Port range to scan (default: `1-1024`). +- **`-t`, `--timeout`**: Optional. Timeout for each port scan in seconds (default: `1.0`). +- **`-o`, `--output`**: Optional. Output file to save results (default: `scan_results.txt`). +- **`--protocol`**: Optional. Protocol to use for scanning (`tcp` or `udp`, default: `tcp`). +- **`--quick`**: Optional. Quick scan mode (common ports). +- **`--json`**: Optional. Save results in JSON format. +- **`--verbose`**: Optional. Print detailed scan information. +- **`--exclude`**: Optional. Comma-separated list of ports to exclude from scanning. + +--- + +## Example Usage + +### Scan Ports on a Single IP + +To scan the first 1024 ports on a single IP address: + +```bash +python port_scanner.py 192.168.1.1 -p 1-1024 +``` + +### Scan Ports on Multiple IPs + +To scan a specific range of ports on multiple IP addresses: + +```bash +python port_scanner.py 192.168.1.1 192.168.1.2 -p 80,443 +``` + +### Quick Scan of Common Ports + +To perform a quick scan of common ports on an IP address: + +```bash +python port_scanner.py 192.168.1.1 --quick +``` + +### Save Results in JSON Format + +To scan an IP and save results in JSON format: + +```bash +python port_scanner.py 192.168.1.1 -o results.json --json +``` + +### Exclude Specific Ports + +To exclude certain ports from the scan: + +```bash +python port_scanner.py 192.168.1.1 -p 1-1024 --exclude 22,80 +``` + +--- + +## Error Handling and Logging + +The script uses the `Loguru` library for logging. Logs are written to `port_scanner.log` and the console, providing detailed information about operations, warnings, and errors. This helps in tracking the actions performed by the script and diagnosing issues. + +--- + +## Conclusion + +The **Asynchronous Port Scanner Tool** is a powerful utility for scanning ports on remote servers. It simplifies the process of network scanning while providing robust error handling and logging capabilities. By following this documentation, users can effectively utilize the tool for their network management needs. diff --git a/modules/lithium.pytools/doc/pyjson.md b/modules/lithium.pytools/doc/pyjson.md new file mode 100644 index 00000000..cf547a78 --- /dev/null +++ b/modules/lithium.pytools/doc/pyjson.md @@ -0,0 +1,174 @@ +# Enhanced JSON Command-Line Utility Documentation + +This document provides a comprehensive guide on how to use the **Enhanced JSON Command-Line Utility**, a Python script designed to manage and manipulate JSON files. The tool supports various functionalities such as loading, printing, converting, querying, validating, merging, and comparing JSON files, with enhanced logging and user-friendly terminal outputs. + +--- + +## Key Features + +- **Load JSON Files**: Load JSON data from specified files. +- **Print JSON**: Print JSON data in a formatted or minified style. +- **Convert to YAML**: Convert JSON files to YAML format. +- **Query JSON**: Query JSON data using dot notation. +- **Validate JSON**: Validate the format of JSON files. +- **Merge JSON Files**: Merge multiple JSON files into one. +- **Compare JSON Files**: Compare two JSON files and display differences. +- **Export to XML**: Export JSON data to XML format. +- **Display Statistics**: Show statistics about the JSON structure. +- **Flatten/Unflatten JSON**: Flatten nested JSON structures and unflatten them back. +- **Remove/Rename Keys**: Remove specific keys from JSON data or rename them. +- **Enhanced Logging**: Uses the `Loguru` library for detailed logging. +- **Rich Console Output**: Utilizes the `Rich` library for beautified terminal outputs. + +--- + +## Requirements + +- Python 3.7 or higher. +- Required libraries: `loguru`, `rich`, `PyYAML`, `dicttoxml`. + +Install the required libraries using pip: + +```bash +pip install loguru rich PyYAML dicttoxml +``` + +--- + +## Usage + +The script can be executed from the command line with various options. The command syntax is as follows: + +```bash +python pyjson.py [options] +``` + +### Command-Line Options + +- **``**: Required. Path to the JSON file to process. +- **`--minify`**: Minify JSON output. +- **`--format`**: Format JSON output with indentation. +- **`--yaml `**: Convert JSON to YAML and save to a file. +- **`--query `**: Query JSON data using simple dot notation (e.g., `a.b.0.c`). +- **`--validate`**: Validate JSON file format. +- **`--merge `**: Merge multiple JSON files. +- **`--diff `**: Compare two JSON files. +- **`--export-xml `**: Export JSON to XML format. +- **`--stats`**: Display statistics about the JSON structure. +- **`--flatten`**: Flatten nested JSON structures. +- **`--unflatten`**: Unflatten JSON structures. +- **`--remove-key `**: Remove a specific key from the JSON data. +- **`--rename-key `**: Rename a key in the JSON data. +- **`--help`**: Show help message and exit. + +--- + +## Example Usage + +### Load and Print JSON + +To load a JSON file and print it: + +```bash +python pyjson.py data.json --format +``` + +### Convert JSON to YAML + +To convert a JSON file to YAML: + +```bash +python pyjson.py data.json --yaml output.yaml +``` + +### Query JSON Data + +To query specific data in the JSON: + +```bash +python pyjson.py data.json --query "users.0.name" +``` + +### Validate JSON Format + +To validate the format of a JSON file: + +```bash +python pyjson.py data.json --validate +``` + +### Merge Multiple JSON Files + +To merge multiple JSON files: + +```bash +python pyjson.py data.json --merge file1.json file2.json +``` + +### Compare Two JSON Files + +To compare two JSON files: + +```bash +python pyjson.py data.json --diff file1.json file2.json +``` + +### Export JSON to XML + +To export JSON data to XML format: + +```bash +python pyjson.py data.json --export-xml output.xml +``` + +### Display Statistics + +To display statistics about the JSON structure: + +```bash +python pyjson.py data.json --stats +``` + +### Flatten Nested JSON + +To flatten nested JSON structures: + +```bash +python pyjson.py data.json --flatten +``` + +### Unflatten JSON + +To unflatten a JSON structure: + +```bash +python pyjson.py data.json --unflatten +``` + +### Remove a Key + +To remove a specific key from the JSON data: + +```bash +python pyjson.py data.json --remove-key "unwanted_key" +``` + +### Rename a Key + +To rename a key in the JSON data: + +```bash +python pyjson.py data.json --rename-key "old_key" "new_key" +``` + +--- + +## Error Handling and Logging + +The script uses the `Loguru` library for logging. Logs are written to `pyjson.log` and the console, providing detailed information about operations, warnings, and errors. This helps in tracking the actions performed by the script and diagnosing issues. + +--- + +## Conclusion + +The **Enhanced JSON Command-Line Utility** is a powerful tool for managing and manipulating JSON files. It simplifies the process of handling JSON data while providing robust error handling and logging capabilities. By following this documentation, users can effectively utilize the tool for their JSON management needs. diff --git a/modules/lithium.pytools/doc/rsa.md b/modules/lithium.pytools/doc/rsa.md new file mode 100644 index 00000000..69c0b9c6 --- /dev/null +++ b/modules/lithium.pytools/doc/rsa.md @@ -0,0 +1,175 @@ +# Enhanced RSA/AES Encryption Tool Documentation + +This document provides a comprehensive guide on how to use the **Enhanced RSA/AES Encryption Tool**, a Python script designed for secure encryption and decryption of files using RSA and AES algorithms. The tool includes functionalities for key generation, file signing, verification, and hashing, along with enhanced logging and user interaction features. + +--- + +## Key Features + +- **RSA Key Generation**: Generate RSA public and private key pairs. +- **File Encryption and Decryption**: Encrypt files using hybrid RSA and AES encryption methods. +- **File Signing and Verification**: Sign files with RSA private keys and verify signatures using RSA public keys. +- **File Hashing**: Generate SHA256 hashes for files. +- **User-Friendly Interface**: Utilizes `Rich` for beautified terminal outputs and prompts. +- **Detailed Logging**: Uses `Loguru` for comprehensive logging of operations and errors. + +--- + +## Requirements + +- Python 3.7 or higher. +- Required libraries: `pycryptodome`, `loguru`, `rich`. + +Install the required libraries using pip: + +```bash +pip install pycryptodome loguru rich +``` + +--- + +## Usage + +The script can be executed from the command line with various options. The command syntax is as follows: + +```bash +python rsa_aes_tool.py [options] +``` + +### Available Actions + +1. **Generate RSA Key Pair** + + ```bash + python rsa_aes_tool.py generate + ``` + +2. **Encrypt a File** + + ```bash + python rsa_aes_tool.py encrypt -i -o -k + ``` + +3. **Decrypt a File** + + ```bash + python rsa_aes_tool.py decrypt -i -o -k + ``` + +4. **Sign a File** + + ```bash + python rsa_aes_tool.py sign -i -o -k + ``` + +5. **Verify a File** + + ```bash + python rsa_aes_tool.py verify -i -s -k + ``` + +6. **Hash a File** + + ```bash + python rsa_aes_tool.py hash -i + ``` + +7. **AES Encrypt a File** + + ```bash + python rsa_aes_tool.py aes-encrypt -i -o + ``` + +8. **AES Decrypt a File** + + ```bash + python rsa_aes_tool.py aes-decrypt -i -o + ``` + +### Command-Line Options + +- **`-i`, `--input`**: Path to the input file. +- **`-o`, `--output`**: Path to save the output file. +- **`-k`, `--key`**: Path to the key file (public or private). +- **`-s`, `--signature`**: Path to the signature file for verification. +- **`-p`, `--passphrase`**: Enable passphrase for key encryption/decryption (optional). + +--- + +## Example Usage + +### Generate RSA Key Pair + +To generate an RSA key pair: + +```bash +python rsa_aes_tool.py generate +``` + +### Encrypt a File + +To encrypt a file using a public key: + +```bash +python rsa_aes_tool.py encrypt -i myfile.txt -o myfile.enc -k public_key.pem +``` + +### Decrypt a File + +To decrypt a file using a private key: + +```bash +python rsa_aes_tool.py decrypt -i myfile.enc -o myfile_decrypted.txt -k private_key.pem +``` + +### Sign a File + +To sign a file: + +```bash +python rsa_aes_tool.py sign -i myfile.txt -o myfile.sig -k private_key.pem +``` + +### Verify a File + +To verify a signed file: + +```bash +python rsa_aes_tool.py verify -i myfile.txt -s myfile.sig -k public_key.pem +``` + +### Hash a File + +To generate a SHA256 hash for a file: + +```bash +python rsa_aes_tool.py hash -i myfile.txt +``` + +### AES Encrypt a File + +To encrypt a file using AES: + +```bash +python rsa_aes_tool.py aes-encrypt -i myfile.txt -o myfile_aes.enc +``` + +### AES Decrypt a File + +To decrypt a file using AES: + +```bash +python rsa_aes_tool.py aes-decrypt -i myfile_aes.enc -o myfile_decrypted.txt +``` + +--- + +## Error Handling and Logging + +The script uses the `Loguru` library for logging. Logs are written to `rsa.log` and the console, providing detailed information about operations, warnings, and errors. This helps in tracking the actions performed by the script and diagnosing issues. + +--- + +## Conclusion + +The **Enhanced RSA/AES Encryption Tool** is a powerful utility for secure file encryption and decryption. It simplifies the process of managing cryptographic operations while providing robust error handling and logging capabilities. By following this documentation, users can effectively utilize the tool for their encryption and decryption needs. diff --git a/modules/lithium.pytools/doc/script.md b/modules/lithium.pytools/doc/script.md new file mode 100644 index 00000000..9f5ec826 --- /dev/null +++ b/modules/lithium.pytools/doc/script.md @@ -0,0 +1,162 @@ +# Project Management Script Documentation + +This document provides a comprehensive guide on how to use the **Project Management Script**, a Python utility designed to manage Python projects through a JSON configuration file. The script can install dependencies, execute predefined scripts, clean temporary files, run tests, deploy the project, and generate project documentation. + +--- + +## Key Features + +- **Install Dependencies**: Installs project dependencies specified in a JSON configuration file. +- **Execute Scripts**: Runs predefined scripts from the configuration. +- **List Scripts**: Displays available scripts along with descriptions. +- **Clean Temporary Files**: Cleans temporary files and directories to free up space. +- **Run Tests**: Executes project tests to ensure code quality. +- **Deploy Project**: Deploys the project using specified commands. +- **Generate Documentation**: Creates project documentation using predefined commands. +- **Enhanced Logging**: Utilizes the `Loguru` library for detailed logging of operations and errors. +- **Rich Console Output**: Provides beautified terminal outputs using the `Rich` library. +- **Environment Variable Support**: Supports configuration via environment variables. + +--- + +## Requirements + +- Python 3.7 or higher. +- Required libraries: `loguru`, `rich`, `python-dotenv`. + +Install the required libraries using pip: + +```bash +pip install loguru rich python-dotenv +``` + +--- + +## Usage + +The script can be executed from the command line with various options. The command syntax is as follows: + +```bash +python project_manager.py [options] +``` + +### Available Actions + +1. **Build the Project** + + ```bash + python project_manager.py build --config project.json + ``` + +2. **Install Dependencies** + + ```bash + python project_manager.py install --config project.json + ``` + +3. **List Available Scripts** + + ```bash + python project_manager.py --list --config project.json + ``` + +4. **Clean Temporary Files** + + ```bash + python project_manager.py clean --config project.json + ``` + +5. **Run Tests** + + ```bash + python project_manager.py test --config project.json + ``` + +6. **Deploy the Project** + + ```bash + python project_manager.py deploy --config project.json + ``` + +7. **Generate Documentation** + + ```bash + python project_manager.py docs --config project.json + ``` + +### Command-Line Options + +- **`--config`**: Path to the JSON configuration file (default: `project.json`). +- **`--env`**: Path to the environment variables file (default: `.env`). + +--- + +## Example Usage + +### Install Dependencies + +To install dependencies specified in `project.json`: + +```bash +python project_manager.py install --config project.json +``` + +### Execute Build Script + +To build the project using the specified build script: + +```bash +python project_manager.py build --config project.json +``` + +### List Available Scripts + +To list all available scripts defined in the configuration: + +```bash +python project_manager.py --list --config project.json +``` + +### Clean Temporary Files + +To clean temporary files and directories: + +```bash +python project_manager.py clean --config project.json +``` + +### Run Tests + +To run tests defined in the configuration: + +```bash +python project_manager.py test --config project.json +``` + +### Deploy the Project + +To deploy the project using the specified deploy script: + +```bash +python project_manager.py deploy --config project.json +``` + +### Generate Documentation + +To generate project documentation: + +```bash +python project_manager.py docs --config project.json +``` + +--- + +## Error Handling and Logging + +The script uses the `Loguru` library for logging. Logs are written to `project_manager.log` and the console, providing detailed information about operations, warnings, and errors. This helps in tracking the actions performed by the script and diagnosing issues. + +--- + +## Conclusion + +The **Project Management Script** is a versatile utility for managing Python projects. It simplifies the process of handling dependencies, executing scripts, and performing project maintenance tasks while providing robust error handling and logging capabilities. By following this documentation, users can effectively utilize the tool for their project management needs. diff --git a/modules/lithium.pytools/doc/sevenzip.md b/modules/lithium.pytools/doc/sevenzip.md new file mode 100644 index 00000000..007b021f --- /dev/null +++ b/modules/lithium.pytools/doc/sevenzip.md @@ -0,0 +1,196 @@ +# 7z Command-Line Tool Wrapper Documentation + +This document provides a comprehensive guide on how to use the **7z Command-Line Tool Wrapper**, a Python script designed to simplify the usage of the `7z` command-line utility for file compression and extraction. This tool provides functionalities such as compressing files, extracting archives, listing contents, and testing archive integrity, all while enhancing logging and user feedback through the console. + +--- + +## Key Features + +- **Compression**: Compress files into various formats using specified compression levels and optional passwords. +- **Extraction**: Extract files from archives with options for overwriting existing files. +- **Listing Contents**: List the contents of an archive. +- **Integrity Testing**: Test the integrity of archives to ensure they are not corrupted. +- **File Management**: Delete archives and update them by adding or removing files. +- **Logging**: Detailed logging of operations and errors using the `Loguru` library. +- **Rich Console Output**: Provides progress feedback and formatted output using the `Rich` library. + +--- + +## Requirements + +- Python 3.7 or higher. +- Required libraries: `paramiko`, `loguru`, `rich`. + +Install the required libraries using pip: + +```bash +pip install paramiko loguru rich +``` + +Make sure the `7z` executable is installed and accessible in your system's PATH. You can download it from [7-Zip](https://www.7-zip.org/download.html). + +--- + +## Usage + +The script can be executed from the command line with various options. The command syntax is as follows: + +```bash +python 7z_wrapper.py [options] +``` + +### Available Actions + +1. **Compress Files** + + ```bash + python 7z_wrapper.py compress -f ... -a [--level ] [--password ] [--format ] [--exclude ...] + ``` + + - **`-f`**: Required. List of files to compress. + - **`-a`**: Required. Path to the archive. + - **`--level`**: Compression level (0-9, default is 5). + - **`--password`**: Optional. Password for the archive. + - **`--format`**: Archive format (default is '7z'). + - **`--exclude`**: Patterns to exclude from compression. + +2. **Extract Files** + + ```bash + python 7z_wrapper.py extract -a -d [--password ] [--force] [--overwrite] + ``` + + - **`-a`**: Required. Path to the archive. + - **`-d`**: Required. Path to the extraction destination. + - **`--password`**: Optional. Password for the archive. + - **`--force`**: Optional. Force overwrite if the destination directory exists. + - **`--overwrite`**: Optional. Overwrite existing files. + +3. **List Archive Contents** + + ```bash + python 7z_wrapper.py list -a [--password ] + ``` + + - **`-a`**: Required. Path to the archive. + - **`--password`**: Optional. Password for the archive. + +4. **Test Archive Integrity** + + ```bash + python 7z_wrapper.py test -a [--password ] + ``` + + - **`-a`**: Required. Path to the archive. + - **`--password`**: Optional. Password for the archive. + +5. **Delete Archive** + + ```bash + python 7z_wrapper.py delete -a + ``` + + - **`-a`**: Required. Path to the archive. + +6. **Update Archive** + + ```bash + python 7z_wrapper.py update -a -f ... [--add] [--delete] + ``` + + - **`-a`**: Required. Path to the archive. + - **`-f`**: Required. List of files to add or delete. + - **`--add`**: Optional. Add files to the archive. + - **`--delete`**: Optional. Delete files from the archive. + +7. **Get 7z Version** + + ```bash + python 7z_wrapper.py version + ``` + +8. **List Supported Formats** + + ```bash + python 7z_wrapper.py formats + ``` + +--- + +## Example Usage + +### Compress Files + +To compress files into an archive: + +```bash +python 7z_wrapper.py compress -f file1.txt file2.txt -a archive.7z --level 5 --password mysecret +``` + +### Extract Files + +To extract an archive: + +```bash +python 7z_wrapper.py extract -a archive.7z -d ./extracted --password mysecret --force +``` + +### List Archive Contents + +To list the contents of an archive: + +```bash +python 7z_wrapper.py list -a archive.7z +``` + +### Test Archive Integrity + +To test the integrity of an archive: + +```bash +python 7z_wrapper.py test -a archive.7z +``` + +### Delete an Archive + +To delete an archive: + +```bash +python 7z_wrapper.py delete -a archive.7z +``` + +### Update an Archive + +To update an archive by adding files: + +```bash +python 7z_wrapper.py update -a archive.7z -f file3.txt --add +``` + +### Get 7z Version + +To get the version of the 7z utility: + +```bash +python 7z_wrapper.py version +``` + +### List Supported Formats + +To list the supported archive formats: + +```bash +python 7z_wrapper.py formats +``` + +--- + +## Error Handling and Logging + +The script uses the `Loguru` library for logging. Logs are written to `sftp_client.log` and the console, providing detailed information about operations, warnings, and errors. This helps in tracking the actions performed by the script and diagnosing issues. + +--- + +## Conclusion + +The **7z Command-Line Tool Wrapper** is a versatile utility for managing file compression and extraction. It simplifies the process of working with archives while providing robust error handling and logging capabilities. By following this documentation, users can effectively utilize the tool for their file management needs. diff --git a/modules/lithium.pytools/doc/sftp.md b/modules/lithium.pytools/doc/sftp.md new file mode 100644 index 00000000..8b53a5e8 --- /dev/null +++ b/modules/lithium.pytools/doc/sftp.md @@ -0,0 +1,213 @@ +# SFTP Client Command Line Tool Documentation + +This document provides a comprehensive guide on how to use the **SFTP Client Command Line Tool**, a Python script designed for managing files and directories on an SFTP server. The tool supports various functionalities, including file uploads, downloads, directory management, and more. + +--- + +## Key Features + +- **SFTP Connection Management**: Establish secure connections to SFTP servers using SSH. +- **File Transfer**: Upload and download files using SFTP. +- **Directory Management**: Create and remove directories on the SFTP server. +- **File Information Retrieval**: Get details about files and directories on the server. +- **Resume Uploads**: Resume interrupted file uploads. +- **Error Handling**: Robust exception handling with detailed logging using Loguru. + +--- + +## Requirements + +- Python 3.7 or higher. +- Required libraries: `paramiko`, `loguru`. + +Install the required libraries using pip: + +```bash +pip install paramiko loguru +``` + +--- + +## Usage + +The script can be executed from the command line with various options. The command syntax is as follows: + +```bash +python sftp_client.py --hostname --username [options] +``` + +### Command-Line Options + +- **`--hostname`**: Required. Hostname or IP address of the SFTP server. +- **`--username`**: Required. Username for SFTP login. +- **`--password`**: Optional. Password for SFTP (if using password authentication). +- **`--port`**: Optional. Port number for SFTP (default: `22`). +- **`--key-file`**: Optional. Path to the private key file (if using key authentication). + +### Subcommands + +The following subcommands are available: + +1. **Upload a Directory** + + ```bash + python sftp_client.py --hostname --username --password upload-dir + ``` + + - **``**: Path to the local directory to upload. + - **``**: Path on the remote server where the directory will be uploaded. + +2. **Download a Directory** + + ```bash + python sftp_client.py --hostname --username --password download-dir + ``` + + - **``**: Path on the remote server to download. + - **``**: Path on the local machine where the directory will be saved. + +3. **Create a Directory** + + ```bash + python sftp_client.py --hostname --username --password mkdir + ``` + + - **``**: Path on the remote server where the directory will be created. + +4. **Remove a Directory** + + ```bash + python sftp_client.py --hostname --username --password rmdir + ``` + + - **``**: Path on the remote server of the directory to remove. + +5. **Get File Info** + + ```bash + python sftp_client.py --hostname --username --password info + ``` + + - **``**: Path on the remote server of the file or directory to get info about. + +6. **Resume Upload** + + ```bash + python sftp_client.py --hostname --username --password resume-upload + ``` + + - **``**: Path to the local file to upload. + - **``**: Path on the remote server where the file will be uploaded. + +7. **List Files** + + ```bash + python sftp_client.py --hostname --username --password list + ``` + + - **``**: Path on the remote server to list files. + +8. **Move a File** + + ```bash + python sftp_client.py --hostname --username --password move + ``` + + - **``**: Source remote file path. + - **``**: Destination remote file path. + +9. **Delete a File** + + ```bash + python sftp_client.py --hostname --username --password delete + ``` + + - **``**: Path on the remote server of the file to delete. + +--- + +## Example Usage + +### Upload a Directory + +To upload a directory to the SFTP server: + +```bash +python sftp_client.py --hostname example.com --username user --password pass upload-dir /path/to/local/dir /path/to/remote/dir +``` + +### Download a Directory + +To download a directory from the SFTP server: + +```bash +python sftp_client.py --hostname example.com --username user --password pass download-dir /path/to/remote/dir /path/to/local/dir +``` + +### Create a Directory + +To create a directory on the SFTP server: + +```bash +python sftp_client.py --hostname example.com --username user --password pass mkdir /path/to/remote/new_directory +``` + +### Remove a Directory + +To remove a directory on the SFTP server: + +```bash +python sftp_client.py --hostname example.com --username user --password pass rmdir /path/to/remote/directory +``` + +### Get File Info + +To get information about a file on the SFTP server: + +```bash +python sftp_client.py --hostname example.com --username user --password pass info /path/to/remote/file.txt +``` + +### Resume Upload + +To resume an interrupted file upload: + +```bash +python sftp_client.py --hostname example.com --username user --password pass resume-upload /path/to/local/file.txt /path/to/remote/file.txt +``` + +### List Files + +To list files in a directory on the SFTP server: + +```bash +python sftp_client.py --hostname example.com --username user --password pass list /path/to/remote/directory +``` + +### Move a File + +To move or rename a file on the SFTP server: + +```bash +python sftp_client.py --hostname example.com --username user --password pass move /path/to/remote/source.txt /path/to/remote/destination.txt +``` + +### Delete a File + +To delete a file on the SFTP server: + +```bash +python sftp_client.py --hostname example.com --username user --password pass delete /path/to/remote/file.txt +``` + +--- + +## Error Handling and Logging + +The script uses the `Loguru` library for logging. Logs are written to `sftp_client.log` and the console, providing detailed information about operations, warnings, and errors. This helps in tracking the actions performed by the script and diagnosing issues. + +--- + +## Conclusion + +The **SFTP Client Command Line Tool** is a versatile utility for managing files and directories on SFTP servers. It simplifies the process of file transfer, command execution, and directory management while providing robust error handling and logging capabilities. By following this documentation, users can effectively utilize the tool for their SFTP management needs. diff --git a/modules/lithium.pytools/doc/ssh.md b/modules/lithium.pytools/doc/ssh.md new file mode 100644 index 00000000..582eb504 --- /dev/null +++ b/modules/lithium.pytools/doc/ssh.md @@ -0,0 +1,164 @@ +# SSH Client Tool Documentation + +This document provides a comprehensive guide on how to use the **SSH Client Tool**, a Python script designed for managing SSH connections and executing commands on remote servers. The tool supports various functionalities, including command execution, file uploads and downloads, directory management, and more. + +--- + +## Key Features + +- **SSH Connection Management**: Establishes secure connections to remote servers using SSH. +- **Command Execution**: Execute commands on the remote server and retrieve output. +- **File Transfer**: Upload and download files using SFTP. +- **Directory Management**: Create and list directories on the remote server. +- **Error Handling**: Robust exception handling with detailed logging using Loguru. +- **Flexible Authentication**: Supports password-based and key-based authentication. + +--- + +## Requirements + +- Python 3.7 or higher. +- Required libraries: `paramiko`, `loguru`. + +Install the required libraries using pip: + +```bash +pip install paramiko loguru +``` + +--- + +## Usage + +The script can be executed from the command line with various options. The command syntax is as follows: + +```bash +python ssh_helper.py --hostname --port --username [options] +``` + +### Command-Line Options + +- **`--hostname`**: Required. Hostname or IP address of the remote server. +- **`--port`**: Optional. Port number for SSH (default: `22`). +- **`--username`**: Required. Username for SSH login. +- **`--password`**: Optional. Password for SSH (if using password authentication). +- **`--key_file`**: Optional. Path to the private key file (if using key authentication). + +### Subcommands + +The following subcommands are available: + +1. **Execute a Command** + + ```bash + python ssh_helper.py --hostname --username --password exec [--timeout ] + ``` + + - **``**: The command to execute on the remote server. + - **`--timeout`**: Optional. Timeout for command execution. + +2. **Upload a File** + + ```bash + python ssh_helper.py --hostname --username --password upload + ``` + + - **``**: Path to the local file to upload. + - **``**: Path on the remote server where the file will be uploaded. + +3. **Download a File** + + ```bash + python ssh_helper.py --hostname --username --password download + ``` + + - **``**: Path on the remote server to download. + - **``**: Path on the local machine where the file will be saved. + +4. **List Directory Contents** + + ```bash + python ssh_helper.py --hostname --username --password list + ``` + + - **``**: Path on the remote server to list. + +5. **Create a Directory** + + ```bash + python ssh_helper.py --hostname --username --password mkdir + ``` + + - **``**: Path on the remote server where the directory will be created. + +6. **Delete a File** + + ```bash + python ssh_helper.py --hostname --username --password delete + ``` + + - **``**: Path on the remote server of the file to delete. + +--- + +## Example Usage + +### Execute a Command + +To execute a command on the remote server: + +```bash +python ssh_helper.py --hostname example.com --username user --password pass exec "ls -la" +``` + +### Upload a File + +To upload a file to the remote server: + +```bash +python ssh_helper.py --hostname example.com --username user --password pass upload /path/to/local/file.txt /path/to/remote/file.txt +``` + +### Download a File + +To download a file from the remote server: + +```bash +python ssh_helper.py --hostname example.com --username user --password pass download /path/to/remote/file.txt /path/to/local/file.txt +``` + +### List Directory Contents + +To list the contents of a directory on the remote server: + +```bash +python ssh_helper.py --hostname example.com --username user --password pass list /path/to/remote/directory +``` + +### Create a Directory + +To create a directory on the remote server: + +```bash +python ssh_helper.py --hostname example.com --username user --password pass mkdir /path/to/remote/new_directory +``` + +### Delete a File + +To delete a file on the remote server: + +```bash +python ssh_helper.py --hostname example.com --username user --password pass delete /path/to/remote/file.txt +``` + +--- + +## Error Handling and Logging + +The script uses the `Loguru` library for logging. Logs are written to the console and provide detailed information about operations, warnings, and errors. This helps in tracking the actions performed by the script and diagnosing issues. + +--- + +## Conclusion + +The **SSH Client Tool** is a versatile utility for managing SSH connections and executing commands on remote servers. It simplifies the process of file transfer, command execution, and directory management while providing robust error handling and logging capabilities. By following this documentation, users can effectively utilize the tool for their SSH management needs. diff --git a/modules/lithium.pytools/doc/ssh_helper.md b/modules/lithium.pytools/doc/ssh_helper.md new file mode 100644 index 00000000..4d272e81 --- /dev/null +++ b/modules/lithium.pytools/doc/ssh_helper.md @@ -0,0 +1,130 @@ +# SSL Helper Tool Documentation + +This document provides a comprehensive guide on how to use the **SSL Helper Tool**, a Python script designed for enhanced management of SSL certificates. The tool allows users to create, manage, renew, and export SSL certificates while providing robust logging and exception handling. + +--- + +## Key Features + +1. **Certificate Creation**: Generate self-signed SSL certificates with optional Subject Alternative Names (SANs). +2. **Certificate Management**: Renew existing certificates, check expiry, and revoke certificates. +3. **Export Options**: Export certificates and private keys as PKCS#12 (PFX) files. +4. **CRL Generation**: Generate Certificate Revocation Lists (CRLs). +5. **Detailed Logging**: Uses the `Loguru` library for detailed logging of operations and errors. +6. **Code Context Extraction**: Automatically extracts and highlights relevant lines of code from the source file where the error occurred. + +--- + +## Requirements + +- Python 3.7 or higher. +- Required libraries: `cryptography`, `loguru`. + +Install the required libraries using pip: + +```bash +pip install cryptography loguru +``` + +--- + +## Usage + +The script can be executed from the command line with various options. The command syntax is as follows: + +```bash +python ssl_helper.py [options] +``` + +### Command-Line Options + +- **``**: The primary hostname for which the certificate is being generated. +- **`--cert-dir `**: Directory to save the certificates (default: `./certs`). +- **`--key-size `**: Size of RSA key in bits (default: `2048`). +- **`--valid-days `**: Number of days the certificate is valid (default: `365`). +- **`--san `**: List of Subject Alternative Names (e.g., `--san www.example.com api.example.com`). +- **`--view`**: View certificate details. +- **`--check-expiry`**: Check if the certificate is about to expire. +- **`--renew`**: Renew the certificate. +- **`--export-pfx`**: Export the certificate and key as a PKCS#12 file. +- **`--cert-type `**: Type of certificate to create (`server`, `client`, or `ca`). +- **`--crl`**: Generate a Certificate Revocation List (CRL). +- **`--crl-dir `**: Directory to save the CRL file (default: `./crl`). +- **`--password `**: Password for exporting PKCS#12 file. +- **`--revoke `**: Revoke certificates by their serial numbers (hexadecimal). +- **`--help`**: Show help message and exit. + +--- + +## Example Usage + +### Create a Self-Signed Certificate + +To create a self-signed SSL certificate for the hostname `example.com`: + +```bash +python ssl_helper.py example.com --cert-dir ./certs --key-size 2048 --valid-days 365 --san www.example.com +``` + +### View Certificate Details + +To view the details of the generated certificate: + +```bash +python ssl_helper.py example.com --view +``` + +### Check Certificate Expiry + +To check if the certificate is about to expire: + +```bash +python ssl_helper.py example.com --check-expiry +``` + +### Renew a Certificate + +To renew the existing certificate: + +```bash +python ssl_helper.py example.com --renew +``` + +### Export to PKCS#12 + +To export the certificate and key as a PKCS#12 file: + +```bash +python ssl_helper.py example.com --export-pfx --password your_password +``` + +### Generate a CRL + +To generate a Certificate Revocation List: + +```bash +python ssl_helper.py example.com --crl --crl-dir ./crl --revoke 1234567890abcdef +``` + +--- + +## How the Script Works + +1. **Key Generation**: The script generates an RSA private key of specified size. +2. **Certificate Creation**: It creates a self-signed certificate for the specified hostname and optional SANs, with a defined validity period. +3. **Certificate Management**: Users can renew certificates, check for expiry, and revoke certificates by serial number. +4. **Exporting**: The certificate and private key can be exported to a PKCS#12 file for easier distribution. +5. **CRL Generation**: Users can generate a CRL to manage revoked certificates. +6. **Detailed Logging**: The script logs all operations and errors, providing a detailed history of actions taken. + +--- + +## Error Handling and Logging + +The script uses the `Loguru` library for logging. Logs are written to `ssl_helper.log`, capturing detailed information about operations, warnings, and errors. The logging configuration ensures that logs are rotated and compressed, preserving space and maintaining a history of actions. + +--- + +## Conclusion + +The **SSL Helper Tool** is a robust solution for managing SSL certificates, providing essential functionalities for certificate creation, management, and export. With detailed logging and error handling, it simplifies the process of working with SSL certificates for developers and system administrators. By following this documentation, users can effectively utilize the tool for their SSL certificate management needs. diff --git a/modules/lithium.pytools/doc/template_error_parser.md b/modules/lithium.pytools/doc/template_error_parser.md new file mode 100644 index 00000000..f9380a84 --- /dev/null +++ b/modules/lithium.pytools/doc/template_error_parser.md @@ -0,0 +1,162 @@ +# C++ Template Error Analyzer Documentation + +This document provides a comprehensive guide on how to use the **C++ Template Error Analyzer**. This Python script helps developers analyze and visualize complex C++ template errors generated by compilers like GCC, Clang, or MSVC. It parses error logs, suggests fixes, extracts relevant code context, and visualizes error hierarchies using Graphviz. + +--- + +## Key Features + +1. **Error Parsing**: Identifies main errors, nested template instantiation errors, and key details like "no matching function" or "substitution failure". +2. **Suggestions**: Generates suggestions for common error patterns, helping users address issues quickly. +3. **Code Context Extraction**: Automatically extracts and highlights relevant lines of code from the source file where the error occurred. +4. **Error Visualization**: Creates a visual representation of the error hierarchy using Graphviz, showing relationships between template instantiations. +5. **File Handling**: Supports downloading error log files from a URL and decompressing gzip files. +6. **Error Information Export**: Saves parsed error details to a JSON file for later review or integration with other tools. + +--- + +## Requirements + +- Python 3.6 or higher. +- Required libraries: `requests`, `termcolor`, `graphviz`, `argparse`. + +Install the required libraries using pip: + +```bash +pip install requests termcolor graphviz argparse +``` + +For Graphviz rendering, ensure that the Graphviz command-line tools are installed and available in your system's PATH. You can download Graphviz from: [Graphviz Download](https://graphviz.org/download/). + +--- + +## Usage + +The script can be executed from the command line with various options for different actions. The command syntax is as follows: + +```bash +python error_analyzer.py [options] +``` + +### Basic Example + +To analyze an error log file and generate a visual error tree: + +```bash +python error_analyzer.py error_log.txt --graph error_tree --format png --view +``` + +This will: + +- Parse the `error_log.txt` file to extract error information. +- Save the parsed information as `parsed_error.json`. +- Generate an error tree visualization (`error_tree.png`). +- Open the generated image for viewing if the `--view` flag is provided. + +### Extract Code Context + +To extract the source code lines around the error: + +```bash +python error_analyzer.py error_log.txt --context 5 +``` + +This will: + +- Parse the `error_log.txt` file. +- Extract 5 lines of code before and after the error location and display them. + +### Download and Analyze + +If the error log is hosted online, you can download it first and then analyze: + +```bash +python error_analyzer.py downloaded_log.txt --download http://example.com/error_log.txt +``` + +This will: + +- Download the error log file from the provided URL. +- Parse the error and save the results. + +### Decompress and Analyze + +To analyze a compressed (gzip) error log: + +```bash +python error_analyzer.py decompressed_error.txt --decompress error_log.txt.gz +``` + +This will: + +- Decompress `error_log.txt.gz` and save it as `decompressed_error.txt`. +- Parse the decompressed error log. + +--- + +## Available Command-Line Options + +```bash +usage: error_analyzer.py [-h] [--output OUTPUT] [--graph GRAPH] + [--compiler COMPILER] [--context CONTEXT] + [--download URL] [--decompress GZIP_FILE] + [--format FORMAT] [--view] [--no-save] + FILE + +C++ Template Error Analyzer + +positional arguments: + FILE Path to the error log file + +optional arguments: + -h, --help Show this help message and exit + --output OUTPUT Path to save parsed error info (default: "parsed_error.json") + --graph GRAPH Filename for error tree graph (default: "error_tree") + --compiler COMPILER Compiler type (gcc, clang, msvc) (default: gcc) + --context CONTEXT Number of context lines to extract around error line (default: 3) + --download URL URL to download the error log file + --decompress GZIP_FILE + Path to the gzip file to decompress + --format FORMAT Format of the output graph file (e.g., 'png', 'pdf') (default: png) + --view Whether to open the generated graph file with the default viewer + --no-save Skip saving the generated graph file +``` + +--- + +## How the Script Works + +1. **Error Parsing**: The script reads the provided error log file and matches common error patterns. It identifies the main error and nested instantiations, gathering details like mismatched types or failed substitutions. +2. **Code Context**: If a source file and line number are available in the error log, the script extracts lines around the error to provide context. +3. **Suggestions**: Based on the error details, the script generates suggestions such as checking template parameters or ensuring function signatures match. +4. **Error Tree Generation**: A visual representation of the error hierarchy is created using Graphviz. The main error is shown as the root, with nested template instantiations as child nodes. This graph can be saved in various formats (e.g., PNG, PDF) and viewed immediately if requested. +5. **Saving Output**: The parsed error information is saved to a JSON file, which can be used for further analysis or shared with other developers. + +--- + +## Example Error + +Suppose you have the following error log in `error_log.txt`: + +```txt +main.cpp:15:10: error: no matching function for call to 'foo' +note: candidate function template not viable: no known conversion from 'int' to 'std::string' for 1st argument +``` + +Running the following command: + +```bash +python error_analyzer.py error_log.txt --context 5 --graph error_tree --view +``` + +Will output: + +- Parsed error details with suggestions like "Check the function signature and ensure template parameters match". +- A graphical error tree visualizing the error's structure. +- The code context around the line where the error occurred. + +--- + +## Conclusion + +The **C++ Template Error Analyzer** is a powerful tool for developers working with C++ templates. It simplifies the process of understanding and resolving complex template errors, providing detailed analysis, suggestions, and visualizations to enhance debugging and development efficiency. By following this documentation, users can effectively utilize the analyzer to improve their C++ coding experience. diff --git a/modules/lithium.pytools/doc/unzip.md b/modules/lithium.pytools/doc/unzip.md new file mode 100644 index 00000000..6a74fb51 --- /dev/null +++ b/modules/lithium.pytools/doc/unzip.md @@ -0,0 +1,150 @@ +# Unzip Command-Line Tool Wrapper Documentation + +This document provides a detailed guide on how to use the **Unzip Command-Line Tool Wrapper**. This Python script provides a convenient interface for extracting, listing, testing, and deleting zip archives using the `unzip` command-line utility. It includes error handling, logging, and validation features to ensure smooth operation. + +--- + +## Features + +- **Extraction**: Extract zip archives to a specified destination. +- **Listing Contents**: List the contents of zip archives. +- **Integrity Testing**: Test the integrity of zip archives to ensure they are not corrupted. +- **Deletion**: Delete zip archives. +- **Logging**: Detailed logging of operations and errors using `loguru`. +- **Custom Exception Handling**: Custom exceptions for better error handling. + +--- + +## Requirements + +- Python 3.6 or higher. +- Required libraries: `loguru`. + +Install the required libraries using pip: + +```bash +pip install loguru +``` + +You also need the `unzip` command-line utility installed on your system. This is typically available on Unix-like systems (Linux, macOS) and can be installed on Windows via utilities like Cygwin or Windows Subsystem for Linux (WSL). + +--- + +## Usage + +The script can be executed from the command line with various subcommands for different actions. The command syntax is as follows: + +```bash +python unzip_wrapper.py [options] +``` + +### Available Actions + +1. **extract**: Extract files from a zip archive. +2. **list**: List the contents of a zip archive. +3. **test**: Test the integrity of a zip archive. +4. **delete**: Delete a zip archive. + +### Command-Line Arguments + +#### Extract Action + +```bash +python unzip_wrapper.py extract -a -d [-p ] [--force] +``` + +- **`-a`, `--archive`**: Required. Path to the zip archive. +- **`-d`, `--destination`**: Required. Path to the extraction destination. +- **`-p`, `--password`**: Optional. Password for the archive. +- **`--force`**: Optional. Force overwrite if the destination directory exists. + +#### List Action + +```bash +python unzip_wrapper.py list -a [-p ] +``` + +- **`-a`, `--archive`**: Required. Path to the zip archive. +- **`-p`, `--password`**: Optional. Password for the archive. + +#### Test Action + +```bash +python unzip_wrapper.py test -a [-p ] +``` + +- **`-a`, `--archive`**: Required. Path to the zip archive. +- **`-p`, `--password`**: Optional. Password for the archive. + +#### Delete Action + +```bash +python unzip_wrapper.py delete -a +``` + +- **`-a`, `--archive`**: Required. Path to the zip archive. + +--- + +## How It Works + +1. **Initialization**: The `UnzipWrapper` class is initialized with the path to the `unzip` executable. It checks if the executable exists and is valid. +2. **Command Execution**: The script executes the specified action by calling the appropriate method in the `UnzipWrapper` class: + - **Extract**: Validates the archive, checks the destination, and runs the unzip command to extract files. + - **List**: Validates the archive and runs the unzip command to list its contents. + - **Test**: Validates the archive and runs the unzip command to test its integrity. + - **Delete**: Validates the archive and deletes it. +3. **Error Handling**: Custom exceptions are raised for different types of errors, such as validation failures, extraction issues, and command execution failures. These are logged for troubleshooting. + +--- + +## Key Methods in the UnzipWrapper Class + +- **`__init__(self, executable: str = "unzip")`**: Initializes the unzip command-line tool wrapper. +- **`_run_command(self, args: List[str])`**: Runs the unzip command and captures the output. +- **`_validate_archive_exists(self, archive: Union[str, Path])`**: Validates that the specified archive exists. +- **`extract(self, archive: Union[str, Path], destination: Union[str, Path], password: Optional[str] = None, force: bool = False)`**: Extracts the specified archive to the destination folder. +- **`list_contents(self, archive: Union[str, Path], password: Optional[str] = None) -> str`**: Lists the contents of the archive. +- **`test_integrity(self, archive: Union[str, Path], password: Optional[str] = None) -> bool`**: Tests the integrity of the archive. +- **`delete_archive(self, archive: Union[str, Path])`**: Deletes the specified archive. +- **`execute(self, action: str, ...)`**: Executes the corresponding unzip command based on the action type. + +--- + +## Example Usage + +### Extracting an Archive + +```bash +python unzip_wrapper.py extract -a /path/to/archive.zip -d /path/to/destination --force +``` + +### Listing Contents of an Archive + +```bash +python unzip_wrapper.py list -a /path/to/archive.zip +``` + +### Testing Integrity of an Archive + +```bash +python unzip_wrapper.py test -a /path/to/archive.zip +``` + +### Deleting an Archive + +```bash +python unzip_wrapper.py delete -a /path/to/archive.zip +``` + +--- + +## Logging + +The script uses the `loguru` library for logging. Logs are generated for various operations, including command execution, success messages, and error handling. This helps in tracking the operations performed by the script and diagnosing issues. + +--- + +## Conclusion + +The **Unzip Command-Line Tool Wrapper** is a powerful utility for managing zip archives directly from the command line. It simplifies the process of extracting, listing, testing, and deleting zip files while providing robust error handling and logging capabilities. By following this documentation, users can effectively utilize the wrapper for their archive management tasks. diff --git a/modules/lithium.pytools/doc/updater.md b/modules/lithium.pytools/doc/updater.md new file mode 100644 index 00000000..bbe878e8 --- /dev/null +++ b/modules/lithium.pytools/doc/updater.md @@ -0,0 +1,149 @@ +# Auto Updater Script Documentation + +This document provides a comprehensive guide for using the **Auto Updater Script**. This script is designed to automatically check for updates, download them, verify their integrity, and install them for a given application. It supports multi-threaded downloads, file verification, backup of current files, and logging of update history. + +--- + +## Features + +- **Update Checking**: Automatically checks for updates from a specified URL. +- **Version Comparison**: Compares the current application version with the latest available version. +- **Multi-threaded Downloads**: Downloads files concurrently using multiple threads for efficiency. +- **File Verification**: Verifies the integrity of downloaded files using SHA-256 hashes. +- **Backup Current Files**: Creates backups of the current installation before applying updates. +- **Custom Actions**: Supports custom actions after downloading and installing updates. +- **Logging**: Maintains a log of update activities and errors for troubleshooting. + +--- + +## Requirements + +- Python 3.6 or higher. +- Required libraries: `requests`, `loguru`, `tqdm`, `packaging`. + +You can install the required libraries using pip: + +```bash +pip install requests loguru tqdm packaging +``` + +--- + +## Usage + +The script can be executed from the command line with a configuration file that specifies the necessary parameters. The command syntax is as follows: + +```bash +python auto_updater.py --config +``` + +### Command-line Arguments + +1. **`--config`**: Path to the JSON configuration file that contains the updater settings. + - Example: `--config config.json` + +--- + +## Configuration File Format (JSON) + +The configuration file should be structured in JSON format and can include the following fields: + +```json +{ + "url": "http://example.com/update_info.json", + "install_dir": "/path/to/application", + "num_threads": 4, + "custom_params": { + "post_download": "function_name", // Optional custom function for post-download actions + "post_install": "function_name" // Optional custom function for post-install actions + }, + "current_version": "1.0.0" +} +``` + +**Fields:** + +- **`url`**: The URL to check for updates (should return a JSON response containing version info). +- **`install_dir`**: The directory where the application is currently installed. +- **`num_threads`**: (Optional) Number of threads to use for downloading files. Default is 4. +- **`custom_params`**: (Optional) A dictionary of custom parameters for post-download and post-install actions. +- **`current_version`**: The current version of the application. + +--- + +## How It Works + +1. **Initialization**: The `AutoUpdater` class is initialized with the configuration parameters from the JSON file. +2. **Check for Updates**: The script checks for updates by making a GET request to the specified URL. It expects a JSON response containing the latest version, download URL, and expected hash. +3. **Version Comparison**: Compares the current version of the application with the latest version available. +4. **Download Files**: If an update is available, the script downloads the update file using multiple threads. +5. **File Verification**: After downloading, it verifies the integrity of the downloaded file against the expected hash. +6. **Backup Current Installation**: Before applying the update, the current installation is backed up. +7. **Extract and Install**: The downloaded update file is extracted, and the files are moved to the installation directory. +8. **Custom Actions**: Executes any custom actions specified in the configuration after downloading and installing. +9. **Logging**: Logs the entire update process, including any errors encountered. + +--- + +## Key Methods in the AutoUpdater Class + +- **`__init__(self, config: Dict[str, Any])`**: Initializes the updater with the provided configuration. +- **`check_for_updates(self) -> bool`**: Checks for updates from the specified URL and returns `True` if updates are available. +- **`compare_versions(self, current_version: str) -> bool`**: Compares the current version with the latest version. +- **`download_file(self, url: str, dest: Path)`**: Downloads a file from the given URL to the specified destination. +- **`verify_file(self, file_path: Path, expected_hash: str) -> bool`**: Verifies the downloaded file's hash against the expected hash. +- **`extract_zip(self, zip_path: Path, extract_to: Path)`**: Extracts a zip file to the specified directory. +- **`move_files(self, src: Path, dest: Path)`**: Moves files from the source directory to the destination directory. +- **`backup_files(self, src: Path, backup_dir: Path)`**: Backs up current files to the specified backup directory. +- **`cleanup(self)`**: Cleans up temporary files and directories. +- **`custom_post_download(self)`**: Executes custom actions after downloading. +- **`custom_post_install(self)`**: Executes custom actions after installing. +- **`log_update(self, current_version: str, new_version: str)`**: Logs the update history. +- **`download_multiple_files(self, urls: List[str], dest_dir: Path)`**: Downloads multiple files concurrently. +- **`update(self, current_version: str)`**: Orchestrates the update process. + +--- + +## Example Usage + +### Example Configuration File + +```json +{ + "url": "http://example.com/update_info.json", + "install_dir": "/path/to/application", + "num_threads": 4, + "custom_params": { + "post_download": "my_post_download_function", + "post_install": "my_post_install_function" + }, + "current_version": "1.0.0" +} +``` + +### Running the Updater + +```bash +python auto_updater.py --config /path/to/config.json +``` + +--- + +## Error Handling + +- **Configuration File Not Found**: If the specified configuration file does not exist, an error message is logged, and the script exits. +- **Update Check Failure**: If there is a problem checking for updates (e.g., network issues), an error is logged, and the script exits. +- **Download Errors**: If a download fails, an error is logged, and the script will attempt to retry the download if applicable. +- **File Verification Failure**: If the downloaded file fails verification, the update process is aborted, and an error message is logged. + +--- + +## Logging + +The script uses the `loguru` library for logging. Logs are written to `updater.log` in the installation directory, and the log rotation is set to 10 MB with a retention period of 30 days. + +--- + +## Conclusion + +The **Auto Updater Script** is a robust solution for automating the update process of applications. It simplifies the management of updates, ensuring that applications stay current with minimal user intervention. By following this documentation, users can easily configure and utilize the updater for their applications. diff --git a/modules/lithium.pytools/doc/upload.md b/modules/lithium.pytools/doc/upload.md new file mode 100644 index 00000000..dd2ee30b --- /dev/null +++ b/modules/lithium.pytools/doc/upload.md @@ -0,0 +1,189 @@ +# Advanced File Upload Client Documentation + +This document provides a detailed guide on how to use the **Advanced File Upload Client**. The client supports uploading files to a server, with advanced features like encryption, multi-threaded uploads, file verification, and configuration file support. + +--- + +## Features + +- **File Uploading**: Upload files to a server with retry mechanism. +- **Encryption**: Optionally encrypt files before uploading. +- **Multi-threading**: Upload multiple files concurrently using threads. +- **File Hashing**: Verifies file integrity with SHA-256 hashes. +- **Progress Display**: Visual progress bar for file uploads. +- **Server Response Verification**: Optionally verify the file's hash from the server's response. +- **Configuration File**: Load configuration settings from a JSON file. + +--- + +## Requirements + +- Python 3.6 or higher. +- Required libraries: `requests`, `cryptography`, `loguru`, `rich`. + +Install the required libraries: + +```bash +pip install requests cryptography loguru rich +``` + +--- + +## Usage + +The main program can be run with several command-line options. Here's the syntax: + +```bash +python upload.py --files --server [options] +``` + +## Command-line Arguments + +1. **`--files`**: List of file paths to upload. + - Example: `--files file1.txt file2.jpg` +2. **`--server`**: URL of the server to upload the files. + + - Example: `--server http://example.com/upload` + +3. **`--encrypt`**: If specified, files will be encrypted before uploading. + +4. **`--key`**: Path to the encryption key file. + + - If encryption is enabled but no key is provided, a new encryption key will be generated and saved to a file (`encryption.key`). + +5. **`--config`**: Path to a JSON configuration file that contains the parameters for the upload (see **Configuration File Format** below). + +6. **`--filter-type`**: Only upload files with the specified extension (e.g., `.txt`). + + - Example: `--filter-type .txt` + +7. **`--verify-server`**: Verify the server's response after uploading the file by comparing the server's hash with the local hash. + +8. **`--threads`**: Number of concurrent threads for uploading files. Default is 4. + - Example: `--threads 8` + +--- + +## Configuration File Format (JSON) + +You can specify a JSON configuration file to set the parameters for the upload client. The file can contain the following fields: + +```json +{ + "files": ["file1.txt", "file2.jpg"], + "server": "http://example.com/upload", + "encrypt": true, + "key": "path/to/encryption.key", + "filter_type": ".txt", + "verify_server": true, + "threads": 4 +} +``` + +**Fields:** + +- **`files`**: List of file paths to upload. +- **`server`**: The server URL to upload files to. +- **`encrypt`**: Whether to encrypt the files before uploading. +- **`key`**: Path to the encryption key file. +- **`filter_type`**: File extension to filter by. +- **`verify_server`**: Whether to verify the server response. +- **`threads`**: Number of threads to use for uploading. + +--- + +## How It Works + +1. **File Hashing**: + The client calculates the SHA-256 hash of each file before uploading. This ensures file integrity during the upload process. The hash is checked on the server if the `--verify-server` flag is set. + +2. **Encryption**: + If encryption is enabled (`--encrypt`), the file will be encrypted using the AES algorithm (via Fernet). The encryption key can either be provided by the user through the `--key` argument or a new key will be generated. The encrypted file is saved with a `.enc` extension and is uploaded instead of the original. + +3. **Multi-threading**: + The client supports uploading multiple files concurrently. The number of threads can be specified with the `--threads` argument. This speeds up the process when uploading many files. + +4. **Progress Tracking**: + A visual progress bar is displayed during the upload, showing the progress of each file in terms of bytes uploaded and time remaining. + +5. **Retries**: + If an upload fails, the client will automatically retry the upload up to 3 times (default). You can adjust the number of retries using the `--retries` argument in the future. + +6. **Server Hash Verification**: + After the file is uploaded, if `--verify-server` is enabled, the server will return a hash of the uploaded file. The client compares this hash with the local file hash to ensure that the file has been uploaded correctly. + +--- + +## Functions and Methods + +- **`calculate_hash(file_path: Path) -> str`** + Computes the SHA-256 hash of the file located at `file_path`. + +- **`encrypt_file(file_path: Path, key: bytes) -> Path`** + Encrypts the file at `file_path` using the provided encryption key. + +- **`upload_file(file_path: Path, server_url: str, retries: int = 3, verify_server: bool = False) -> bool`** + Uploads a file to the server, retrying if necessary. Returns `True` if the upload succeeds, `False` if it fails. + +- **`upload_worker(queue: Queue, server_url: str, key: Optional[bytes], verify_server: bool)`** + A worker function for uploading files in parallel. + +- **`upload_multiple_files(file_paths: List[Path], server_url: str, threads: int = 4, key: Optional[bytes] = None, verify_server: bool = False)`** + Uploads multiple files concurrently using multiple threads. + +- **`load_config(config_file: Path) -> dict`** + Loads configuration settings from a JSON file. + +--- + +## Example Usage + +## Uploading Files without Encryption + +```bash +python upload.py --files file1.txt file2.jpg --server http://example.com/upload +``` + +## Uploading Files with Encryption + +```bash +python upload.py --files file1.txt file2.jpg --server http://example.com/upload --encrypt --key path/to/keyfile +``` + +## Uploading Files Using a Configuration File + +```bash +python upload.py --config config.json +``` + +## Uploading Files with Specific Extension + +```bash +python upload.py --files file1.txt file2.jpg --server http://example.com/upload --filter-type .txt +``` + +## Uploading Files Using Multiple Threads + +```bash +python upload.py --files file1.txt file2.jpg --server http://example.com/upload --threads 8 +``` + +--- + +## Error Handling + +- **File Not Found**: If a specified file doesn't exist, a `FileNotFoundError` is raised. +- **Encryption Key Not Found**: If the encryption key file is not found, an error is logged, and the client exits. +- **Server Response Errors**: If the server returns a status code other than `200`, an error is logged, and the client will retry the upload based on the retry logic. + +--- + +## Logging + +The client uses the `loguru` library for logging, providing enhanced logging capabilities such as rich formatting and real-time updates to the console. The log file is saved as `upload_client.log`. + +--- + +## Conclusion + +The **Advanced File Upload Client** is a powerful and flexible tool for uploading files to a server, with additional features like encryption, multi-threading, and file integrity verification. The client is easy to use via command-line arguments or a configuration file. diff --git a/modules/lithium.pytools/examples/byte_convertor.sh b/modules/lithium.pytools/examples/byte_convertor.sh new file mode 100644 index 00000000..f196ad4d --- /dev/null +++ b/modules/lithium.pytools/examples/byte_convertor.sh @@ -0,0 +1,40 @@ +# Example 1: Convert a binary file to a C header file with default settings +# This example converts my_binary.bin to my_header.h using the default array name, size variable name, and data format (hex). +# By default, the generated header file will include #ifndef protection macros. +$ python3 byte_convertor.py to_header my_binary.bin my_header.h + +# Example 2: Convert a binary file to a C header file with compression +# This example converts my_binary.bin to my_header.h and compresses the data during conversion. +$ python3 byte_convertor.py to_header my_binary.bin my_header.h --compress + +# Example 3: Convert a binary file to a C header file with custom array and size variable names +# This example converts my_binary.bin to my_header.h using custom array name my_array and size variable name my_size. +$ python3 byte_convertor.py to_header my_binary.bin my_header.h --array_name my_array --size_name my_size + +# Example 4: Convert a binary file to a C header file using base64 data format +# This example converts my_binary.bin to my_header.h using base64 data format. +$ python3 byte_convertor.py to_header my_binary.bin my_header.h --format base64 + +# Example 5: Convert a binary file to a C header file and generate a C++ class wrapper +# This example converts my_binary.bin to my_header.h and generates a C++ class wrapper named DataWrapper. +$ python3 byte_convertor.py to_header my_binary.bin my_header.h --cpp_class DataWrapper + +# Example 6: Convert a binary file to a C header file and split into multiple header files +# This example converts large_binary.bin into multiple header files, each with a maximum size of 1024 bytes. +$ python3 byte_convertor.py to_header large_binary.bin --split_size 1024 + +# Example 7: Convert a binary file to a C header file and verify data integrity +# This example converts my_binary.bin to my_header.h and verifies data integrity after conversion. +$ python3 byte_convertor.py to_header my_binary.bin my_header.h --verify + +# Example 8: Convert a C header file back to a binary file +# This example converts my_header.h back to my_binary.bin. +$ python3 byte_convertor.py to_file my_header.h my_binary.bin + +# Example 9: Convert a C header file back to a binary file with decompression +# This example converts my_header.h back to my_binary.bin and decompresses the data during conversion. +$ python3 byte_convertor.py to_file my_header.h my_binary.bin --decompress + +# Example 10: Convert a C header file back to a binary file and verify data integrity +# This example converts my_header.h back to my_binary.bin and verifies data integrity after conversion. +$ python3 byte_convertor.py to_file my_header.h my_binary.bin --verify \ No newline at end of file diff --git a/modules/lithium.pytools/examples/cbuilder.sh b/modules/lithium.pytools/examples/cbuilder.sh new file mode 100644 index 00000000..5ab5ef4d --- /dev/null +++ b/modules/lithium.pytools/examples/cbuilder.sh @@ -0,0 +1,73 @@ +# Example 1: Configure and build a project using CMake with default settings +# This example configures and builds the project located in the 'src' directory, +# using the 'build' directory for build files, and the default CMake generator (Ninja). +$ python3 cbuilder.py --builder cmake --source_dir src --build_dir build + +# Example 2: Configure and build a project using CMake with Unix Makefiles generator +# This example configures and builds the project using the Unix Makefiles generator. +$ python3 cbuilder.py --builder cmake --source_dir src --build_dir build --generator "Unix Makefiles" + +# Example 3: Configure and build a project using CMake with Release build type +# This example configures and builds the project with the Release build type. +$ python3 cbuilder.py --builder cmake --source_dir src --build_dir build --build_type Release + +# Example 4: Configure and build a project using CMake with custom options +# This example configures and builds the project with custom CMake options. +$ python3 cbuilder.py --builder cmake --source_dir src --build_dir build --cmake_options -DENABLE_FEATURE=ON + +# Example 5: Configure, build, and install a project using CMake +# This example configures, builds, and installs the project. +$ python3 cbuilder.py --builder cmake --source_dir src --build_dir build --install + +# Example 6: Configure, build, and run tests using CMake +# This example configures, builds, and runs tests for the project. +$ python3 cbuilder.py --builder cmake --source_dir src --build_dir build --test + +# Example 7: Configure, build, and generate documentation using CMake +# This example configures, builds, and generates documentation for the project. +$ python3 cbuilder.py --builder cmake --source_dir src --build_dir build --generate_docs + +# Example 8: Clean the build directory before configuring and building using CMake +# This example cleans the build directory before configuring and building the project. +$ python3 cbuilder.py --builder cmake --source_dir src --build_dir build --clean + +# Example 9: Configure and build a project using Meson with default settings +# This example configures and builds the project located in the 'src' directory, +# using the 'build' directory for build files, and the default Meson build type (debug). +$ python3 cbuilder.py --builder meson --source_dir src --build_dir build + +# Example 10: Configure and build a project using Meson with release build type +# This example configures and builds the project with the release build type. +$ python3 cbuilder.py --builder meson --source_dir src --build_dir build --build_type release + +# Example 11: Configure and build a project using Meson with custom options +# This example configures and builds the project with custom Meson options. +$ python3 cbuilder.py --builder meson --source_dir src --build_dir build --meson_options -Dfeature=enabled + +# Example 12: Configure, build, and install a project using Meson +# This example configures, builds, and installs the project. +$ python3 cbuilder.py --builder meson --source_dir src --build_dir build --install + +# Example 13: Configure, build, and run tests using Meson +# This example configures, builds, and runs tests for the project. +$ python3 cbuilder.py --builder meson --source_dir src --build_dir build --test + +# Example 14: Configure, build, and generate documentation using Meson +# This example configures, builds, and generates documentation for the project. +$ python3 cbuilder.py --builder meson --source_dir src --build_dir build --generate_docs + +# Example 15: Clean the build directory before configuring and building using Meson +# This example cleans the build directory before configuring and building the project. +$ python3 cbuilder.py --builder meson --source_dir src --build_dir build --clean + +# Example 16: Set environment variables for the build process +# This example sets environment variables for the build process. +$ python3 cbuilder.py --builder cmake --source_dir src --build_dir build --env VAR1=value1 VAR2=value2 + +# Example 17: Enable verbose output during the build process +# This example enables verbose output during the build process. +$ python3 cbuilder.py --builder cmake --source_dir src --build_dir build --verbose + +# Example 18: Specify the number of parallel jobs for building +# This example specifies the number of parallel jobs for building. +$ python3 cbuilder.py --builder cmake --source_dir src --build_dir build --parallel 8 \ No newline at end of file diff --git a/modules/lithium.pytools/examples/cmake_generator.sh b/modules/lithium.pytools/examples/cmake_generator.sh new file mode 100644 index 00000000..cd165c3f --- /dev/null +++ b/modules/lithium.pytools/examples/cmake_generator.sh @@ -0,0 +1,19 @@ +# Example 1: Generate CMakeLists.txt from a JSON configuration file +# This example generates a CMakeLists.txt file based on the project settings specified in project_config.json. +# The generated CMakeLists.txt file will be saved in the current directory. +$ python3 cmake_generator.py generate --json project_config.json + +# Example 2: Generate CMakeLists.txt from a JSON configuration file and save to a specific directory +# This example generates a CMakeLists.txt file based on the project settings specified in project_config.json. +# The generated CMakeLists.txt file will be saved in the specified output directory (output_dir). +$ python3 cmake_generator.py generate --json project_config.json --output-dir output_dir + +# Example 3: Generate FindXXX.cmake for a specified library +# This example generates a FindXXX.cmake file for the specified library (e.g., Boost). +# The generated FindBoost.cmake file will be saved in the default directory (cmake/). +$ python3 cmake_generator.py find --library Boost + +# Example 4: Generate FindXXX.cmake for a specified library and save to a specific directory +# This example generates a FindXXX.cmake file for the specified library (e.g., OpenCV). +# The generated FindOpenCV.cmake file will be saved in the specified output directory (custom_cmake_dir). +$ python3 cmake_generator.py find --library OpenCV --output-dir custom_cmake_dir \ No newline at end of file diff --git a/modules/lithium.pytools/examples/compiler.sh b/modules/lithium.pytools/examples/compiler.sh new file mode 100644 index 00000000..e66e4392 --- /dev/null +++ b/modules/lithium.pytools/examples/compiler.sh @@ -0,0 +1,48 @@ +# Example 1: Compile source files using GCC with C++17 standard +# This example compiles source1.cpp and source2.cpp using the GCC compiler with the C++17 standard. +# The output object file will be saved as output.o. +$ python3 compiler.py source1.cpp source2.cpp -o output.o --compiler GCC --cpp_version c++17 + +# Example 2: Compile source files using Clang with additional compilation flags +# This example compiles source1.cpp using the Clang compiler with the C++20 standard and additional compilation flags. +# The output object file will be saved as output.o. +$ python3 compiler.py source1.cpp -o output.o --compiler Clang --cpp_version c++20 --compile-flags -O3 -Wall + +# Example 3: Link object files into an executable using MSVC +# This example links object1.o and object2.o into an executable using the MSVC compiler. +# The output executable will be saved as output.exe. +$ python3 compiler.py object1.o object2.o -o output.exe --compiler MSVC --link + +# Example 4: Compile and link source files using Intel C++ Compiler with additional flags +# This example compiles and links source1.cpp using the Intel C++ Compiler with the C++23 standard and additional flags. +# The output executable will be saved as output. +$ python3 compiler.py source1.cpp -o output --compiler "Intel C++ Compiler" --cpp_version c++23 --link --flags -O2 -g + +# Example 5: Compile source files using GCC with options loaded from a JSON file +# This example compiles source1.cpp using the GCC compiler with options loaded from options.json. +# The output object file will be saved as output.o. +$ python3 compiler.py source1.cpp -o output.o --compiler GCC --cpp_version c++17 --json-options options.json + +# Example 6: Display system and compiler helper information +# This example displays system and compiler helper information. +$ python3 compiler.py --show-info + +# Example 7: Compile source files using the default detected compiler and C++ version +# This example compiles source1.cpp using the default detected compiler and C++ version. +# The output object file will be saved as output.o. +$ python3 compiler.py source1.cpp -o output.o + +# Example 8: Compile source files using Clang with additional compilation and linking flags +# This example compiles source1.cpp using the Clang compiler with additional compilation and linking flags. +# The output object file will be saved as output.o. +$ python3 compiler.py source1.cpp -o output.o --compiler Clang --cpp_version c++20 --compile-flags -O3 -Wall --link-flags -lpthread + +# Example 9: Compile source files using MSVC with C++20 standard and display detailed logging +# This example compiles source1.cpp using the MSVC compiler with the C++20 standard and displays detailed logging. +# The output object file will be saved as output.obj. +$ python3 compiler.py source1.cpp -o output.obj --compiler MSVC --cpp_version c++20 --flags /EHsc /MD + +# Example 10: Compile and link source files using GCC with C++17 standard and additional flags +# This example compiles and links source1.cpp and source2.cpp using the GCC compiler with the C++17 standard and additional flags. +# The output executable will be saved as output. +$ python3 compiler.py source1.cpp source2.cpp -o output --compiler GCC --cpp_version c++17 --link --flags -O2 -g \ No newline at end of file diff --git a/modules/lithium.pytools/examples/compiler_parser.sh b/modules/lithium.pytools/examples/compiler_parser.sh new file mode 100644 index 00000000..3a8fba7b --- /dev/null +++ b/modules/lithium.pytools/examples/compiler_parser.sh @@ -0,0 +1,48 @@ +# Example 1: Parse GCC compiler output and convert to JSON format +# This example parses the GCC compiler output from the specified file and converts it to JSON format. +# The output will be saved to output.json in the current directory. +$ python3 compiler_parser.py gcc gcc_output.txt --output-format json --output-file output.json + +# Example 2: Parse Clang compiler output and convert to CSV format +# This example parses the Clang compiler output from the specified file and converts it to CSV format. +# The output will be saved to output.csv in the current directory. +$ python3 compiler_parser.py clang clang_output.txt --output-format csv --output-file output.csv + +# Example 3: Parse MSVC compiler output and convert to XML format +# This example parses the MSVC compiler output from the specified file and converts it to XML format. +# The output will be saved to output.xml in the current directory. +$ python3 compiler_parser.py msvc msvc_output.txt --output-format xml --output-file output.xml + +# Example 4: Parse CMake output and convert to JSON format +# This example parses the CMake output from the specified file and converts it to JSON format. +# The output will be saved to cmake_output.json in the current directory. +$ python3 compiler_parser.py cmake cmake_output.txt --output-format json --output-file cmake_output.json + +# Example 5: Parse GCC compiler output and filter by errors only +# This example parses the GCC compiler output from the specified file, filters by errors only, and converts it to JSON format. +# The output will be saved to gcc_errors.json in the current directory. +$ python3 compiler_parser.py gcc gcc_output.txt --output-format json --output-file gcc_errors.json --filter error + +# Example 6: Parse Clang compiler output and include statistics in the output +# This example parses the Clang compiler output from the specified file, includes statistics in the output, and converts it to JSON format. +# The output will be saved to clang_output_with_stats.json in the current directory. +$ python3 compiler_parser.py clang clang_output.txt --output-format json --output-file clang_output_with_stats.json --stats + +# Example 7: Parse MSVC compiler output with concurrency +# This example parses the MSVC compiler output from multiple files concurrently and converts it to JSON format. +# The output will be saved to msvc_output.json in the current directory. +$ python3 compiler_parser.py msvc msvc_output1.txt msvc_output2.txt --output-format json --output-file msvc_output.json --concurrency 8 + +# Example 8: Parse CMake output and save to a specific directory +# This example parses the CMake output from the specified file and converts it to JSON format. +# The output will be saved to the specified output directory. +$ python3 compiler_parser.py cmake cmake_output.txt --output-format json --output-file cmake_output.json --output-dir output_dir + +# Example 9: Parse GCC compiler output and convert to CSV format with filtering by warnings and errors +# This example parses the GCC compiler output from the specified file, filters by warnings and errors, and converts it to CSV format. +# The output will be saved to gcc_warnings_errors.csv in the current directory. +$ python3 compiler_parser.py gcc gcc_output.txt --output-format csv --output-file gcc_warnings_errors.csv --filter warning error + +# Example 10: Parse Clang compiler output and display colorized output in the console +# This example parses the Clang compiler output from the specified file and displays the results with colorized output in the console. +$ python3 compiler_parser.py clang clang_output.txt --output-format json --output-file clang_output.json \ No newline at end of file diff --git a/modules/lithium.pytools/examples/core_runner.sh b/modules/lithium.pytools/examples/core_runner.sh new file mode 100644 index 00000000..5002ac6e --- /dev/null +++ b/modules/lithium.pytools/examples/core_runner.sh @@ -0,0 +1,40 @@ +# Example 1: Compile and run a C++ program with default settings +# This example compiles and runs the C++ source file main.cpp with default settings. +# The output executable will be named a.out, and core dumps will be searched in /tmp. +$ python3 core_runner.py main.cpp + +# Example 2: Compile and run a C++ program with a custom output executable name +# This example compiles and runs the C++ source file main.cpp, and the output executable will be named my_program. +$ python3 core_runner.py main.cpp -o my_program + +# Example 3: Compile and run a C++ program with a custom core dump directory +# This example compiles and runs the C++ source file main.cpp, and core dumps will be searched in the specified directory /var/cores. +$ python3 core_runner.py main.cpp -d /var/cores + +# Example 4: Compile and run a C++ program with a custom core pattern +# This example compiles and runs the C++ source file main.cpp, and the core pattern for dump files will be set to /tmp/core.%e.%p. +$ python3 core_runner.py main.cpp -p /tmp/core.%e.%p + +# Example 5: Compile and run a C++ program with unlimited core dump size +# This example compiles and runs the C++ source file main.cpp, and sets the core dump size to unlimited. +$ python3 core_runner.py main.cpp -u + +# Example 6: Compile and run a C++ program with additional compilation flags +# This example compiles and runs the C++ source file main.cpp with additional compilation flags -O2 and -Wall. +$ python3 core_runner.py main.cpp -f -O2 -Wall + +# Example 7: Compile and run a C++ program with a specific C++ standard +# This example compiles and runs the C++ source file main.cpp using the C++20 standard. +$ python3 core_runner.py main.cpp -s c++20 + +# Example 8: Compile and run a C++ program with custom GDB commands for core dump analysis +# This example compiles and runs the C++ source file main.cpp, and uses custom GDB commands for core dump analysis. +$ python3 core_runner.py main.cpp -g -ex "info locals" -ex "bt" -ex "quit" + +# Example 9: Compile and run a C++ program with automatic core dump analysis +# This example compiles and runs the C++ source file main.cpp, and automatically analyzes the core dump if the program crashes. +$ python3 core_runner.py main.cpp -a + +# Example 10: Compile and run a C++ program with logging to a specified log file +# This example compiles and runs the C++ source file main.cpp, and writes logs to the specified log file core_runner.log. +$ python3 core_runner.py main.cpp -l core_runner.log \ No newline at end of file diff --git a/modules/lithium.pytools/examples/crontab.sh b/modules/lithium.pytools/examples/crontab.sh new file mode 100644 index 00000000..4d3ebd30 --- /dev/null +++ b/modules/lithium.pytools/examples/crontab.sh @@ -0,0 +1,51 @@ +# Example 1: Add a new cron job +# This example adds a new cron job that runs a backup script every day at midnight. +$ python3 crontab.py add "0 0 * * *" "/path/to/backup.sh" + +# Example 2: Remove a cron job +# This example removes a cron job that contains the command /path/to/backup.sh. +$ python3 crontab.py remove "/path/to/backup.sh" + +# Example 3: List all cron jobs +# This example lists all the current cron jobs. +$ python3 crontab.py list + +# Example 4: Update an existing cron job +# This example updates an existing cron job that contains the command /path/to/backup.sh to run at 1 AM every day. +$ python3 crontab.py update "/path/to/backup.sh" "0 1 * * *" "/path/to/backup.sh" + +# Example 5: Clear all cron jobs +# This example clears all the current cron jobs. +$ python3 crontab.py clear + +# Example 6: Check if a cron job exists +# This example checks if a cron job that contains the command /path/to/backup.sh exists. +$ python3 crontab.py exists "/path/to/backup.sh" + +# Example 7: Disable a cron job +# This example disables a cron job that contains the command /path/to/backup.sh. +$ python3 crontab.py disable "/path/to/backup.sh" + +# Example 8: Enable a cron job +# This example enables a previously disabled cron job that contains the command /path/to/backup.sh. +$ python3 crontab.py enable "/path/to/backup.sh" + +# Example 9: Search cron jobs by keyword +# This example searches for cron jobs that contain the keyword backup. +$ python3 crontab.py search "backup" + +# Example 10: Export cron jobs to a file +# This example exports all the current cron jobs to a file named cron_jobs.txt. +$ python3 crontab.py export "cron_jobs.txt" + +# Example 11: Import cron jobs from a file +# This example imports cron jobs from a file named cron_jobs.txt. +$ python3 crontab.py import "cron_jobs.txt" + +# Example 12: View cron job logs +# This example views cron job-related logs from the default log file (/var/log/syslog). +$ python3 crontab.py logs + +# Example 13: View cron job logs from a specific log file +# This example views cron job-related logs from a specified log file (/var/log/cron.log). +$ python3 crontab.py logs --log-path "/var/log/cron.log" \ No newline at end of file diff --git a/modules/lithium.pytools/examples/daemon.sh b/modules/lithium.pytools/examples/daemon.sh new file mode 100644 index 00000000..3f12914c --- /dev/null +++ b/modules/lithium.pytools/examples/daemon.sh @@ -0,0 +1,27 @@ +# Example 1: Start the daemon with default settings +# This example starts the daemon process with the default configuration settings. +$ python3 daemon.py start + +# Example 2: Start the daemon with a custom process name and script path +# This example starts the daemon process to monitor a custom script with a specified process name. +$ python3 daemon.py start --process_name my_process --script_path /path/to/my_script.py + +# Example 3: Start the daemon with custom resource thresholds +# This example starts the daemon process with custom CPU and memory usage thresholds. +$ python3 daemon.py start --cpu_threshold 90.0 --memory_threshold 1024.0 + +# Example 4: Start the daemon with a custom restart interval and maximum restarts +# This example starts the daemon process with a custom restart interval and maximum number of restarts. +$ python3 daemon.py start --restart_interval 10 --max_restarts 5 + +# Example 5: Start the daemon with a custom monitoring interval +# This example starts the daemon process with a custom monitoring interval. +$ python3 daemon.py start --monitor_interval 10 + +# Example 6: Stop the daemon +# This example stops the currently running daemon process. +$ python3 daemon.py stop + +# Example 7: Check the status of the daemon +# This example checks whether the daemon process is currently running. +$ python3 daemon.py status \ No newline at end of file diff --git a/modules/lithium.pytools/examples/exebind.sh b/modules/lithium.pytools/examples/exebind.sh new file mode 100644 index 00000000..a3fc57b1 --- /dev/null +++ b/modules/lithium.pytools/examples/exebind.sh @@ -0,0 +1,15 @@ +# Example 1: Generate PyBind11 bindings for an executable with default settings +# This example generates PyBind11 bindings for the specified executable and saves the output in the default directory 'bindings'. +$ python3 exebind.py /path/to/executable + +# Example 2: Generate PyBind11 bindings with a custom module name +# This example generates PyBind11 bindings for the specified executable with a custom module name 'custom_module'. +$ python3 exebind.py /path/to/executable --module-name custom_module + +# Example 3: Generate PyBind11 bindings and save to a custom output directory +# This example generates PyBind11 bindings for the specified executable and saves the output in the specified directory 'custom_bindings'. +$ python3 exebind.py /path/to/executable --output-dir custom_bindings + +# Example 4: Generate PyBind11 bindings with a custom module name and save to a custom output directory +# This example generates PyBind11 bindings for the specified executable with a custom module name 'custom_module' and saves the output in the specified directory 'custom_bindings'. +$ python3 exebind.py /path/to/executable --module-name custom_module --output-dir custom_bindings \ No newline at end of file diff --git a/modules/lithium.pytools/examples/ffmpeg.sh b/modules/lithium.pytools/examples/ffmpeg.sh new file mode 100644 index 00000000..0cba7143 --- /dev/null +++ b/modules/lithium.pytools/examples/ffmpeg.sh @@ -0,0 +1,55 @@ +# Example 1: Convert video format +# This example converts the input video file to the specified output format using the default codec (libx264). +$ python3 ffmpeg.py convert input.mp4 output.mkv + +# Example 2: Extract audio from video +# This example extracts the audio from the input video file and saves it to the specified output audio file. +$ python3 ffmpeg.py extract-audio input.mp4 output.mp3 + +# Example 3: Trim video +# This example trims the input video file starting at 10 seconds for a duration of 30 seconds and saves it to the specified output file. +$ python3 ffmpeg.py trim input.mp4 output_trimmed.mp4 10 30 + +# Example 4: Resize video +# This example resizes the input video file to the specified width and height and saves it to the specified output file. +$ python3 ffmpeg.py resize input.mp4 output_resized.mp4 1280 720 + +# Example 5: Extract frames from video +# This example extracts frames from the input video file at 1 frame per second and saves them with the specified output pattern. +$ python3 ffmpeg.py extract-frames input.mp4 frame_%04d.png --fps 1 + +# Example 6: Merge multiple videos +# This example merges the specified input video files into a single output video file. +$ python3 ffmpeg.py merge-videos input1.mp4 input2.mp4 input3.mp4 output_merged.mp4 + +# Example 7: Merge multiple audio files +# This example merges the specified input audio files into a single output audio file. +$ python3 ffmpeg.py merge-audios input1.mp3 input2.mp3 input3.mp3 output_merged.mp3 + +# Example 8: Add watermark to video +# This example adds a watermark image to the input video file at the specified position and saves it to the specified output file. +$ python3 ffmpeg.py add-watermark input.mp4 output_watermarked.mp4 watermark.png --position topright + +# Example 9: Add subtitles to video +# This example adds subtitles from the specified subtitle file to the input video file and saves it to the specified output file. +$ python3 ffmpeg.py add-subtitles input.mp4 output_subtitled.mp4 subtitles.srt + +# Example 10: Change playback speed of video +# This example changes the playback speed of the input video file by a factor of 2 (double speed) and saves it to the specified output file. +$ python3 ffmpeg.py change-speed input.mp4 output_speed.mp4 2.0 + +# Example 11: Extract video information +# This example extracts information from the input video file and displays it in a readable table. +$ python3 ffmpeg.py extract-info input.mp4 + +# Example 12: Add background music to video +# This example adds background music from the specified audio file to the input video file and saves it to the specified output file. +$ python3 ffmpeg.py add-bg-music input_video.mp4 input_audio.mp3 output_with_music.mp4 --volume 0.5 + +# Example 13: Overlay image on video +# This example overlays an image onto the input video file at the specified coordinates and saves it to the specified output file. +$ python3 ffmpeg.py overlay-image input_video.mp4 overlay_image.png output_with_overlay.mp4 --x 10 --y 10 + +# Example 14: Adjust brightness and contrast of video +# This example adjusts the brightness and contrast of the input video file and saves it to the specified output file. +$ python3 ffmpeg.py adjust-bc input.mp4 output_adjusted.mp4 --brightness 0.1 --contrast 1.2 \ No newline at end of file diff --git a/modules/lithium.pytools/examples/ftp.sh b/modules/lithium.pytools/examples/ftp.sh new file mode 100644 index 00000000..606d3dd0 --- /dev/null +++ b/modules/lithium.pytools/examples/ftp.sh @@ -0,0 +1,43 @@ +# Example 1: List files in the remote directory +# This example lists all files and directories in the specified remote path. +$ python ftp.py --host ftp.example.com --username user --password pass ls --path /remote/path + +# Example 2: List files recursively in the remote directory +# This example lists all files and directories recursively in the specified remote path. +$ python ftp.py --host ftp.example.com --username user --password pass ls --path /remote/path --recursive + +# Example 3: Download a file from the remote server +# This example downloads a file from the specified remote path to the specified local path. +$ python ftp.py --host ftp.example.com --username user --password pass get /remote/path/file.txt /local/path/file.txt + +# Example 4: Upload a file to the remote server +# This example uploads a file from the specified local path to the specified remote path. +$ python ftp.py --host ftp.example.com --username user --password pass put /local/path/file.txt /remote/path/file.txt + +# Example 5: Delete a file on the remote server +# This example deletes a file at the specified remote path. +$ python ftp.py --host ftp.example.com --username user --password pass rm /remote/path/file.txt + +# Example 6: Create a directory on the remote server +# This example creates a directory at the specified remote path. +$ python ftp.py --host ftp.example.com --username user --password pass mkdir /remote/path/new_directory + +# Example 7: Remove a directory on the remote server +# This example removes a directory at the specified remote path. +$ python ftp.py --host ftp.example.com --username user --password pass rmdir /remote/path/new_directory + +# Example 8: Rename a file or directory on the remote server +# This example renames a file or directory from the old path to the new path. +$ python ftp.py --host ftp.example.com --username user --password pass rename /remote/path/old_name /remote/path/new_name + +# Example 9: Show the current directory on the remote server +# This example shows the current working directory on the remote server. +$ python ftp.py --host ftp.example.com --username user --password pass pwd + +# Example 10: Change the current directory on the remote server +# This example changes the current working directory to the specified remote path. +$ python ftp.py --host ftp.example.com --username user --password pass cd /remote/path + +# Example 11: Perform batch upload/download operations +# This example performs batch upload/download operations specified in a JSON file. +$ python ftp.py --host ftp.example.com --username user --password pass batch /path/to/operations.json \ No newline at end of file diff --git a/modules/lithium.pytools/examples/fuzz.sh b/modules/lithium.pytools/examples/fuzz.sh new file mode 100644 index 00000000..76c2be03 --- /dev/null +++ b/modules/lithium.pytools/examples/fuzz.sh @@ -0,0 +1,39 @@ +# Example 1: Generate random data and save as JSON +# This example generates 10 records based on the provided schema and saves the data to a JSON file. +$ python fuzz.py --num_records 10 --schema '{"name": {"type": "string"}, "age": {"type": "int"}}' --format json --output data.json + +# Example 2: Generate random data and save as CSV +# This example generates 20 records based on the provided schema and saves the data to a CSV file. +$ python fuzz.py --num_records 20 --schema '{"email": {"type": "email"}, "phone": {"type": "phone"}}' --format csv --output data.csv + +# Example 3: Generate random data and save as text +# This example generates 5 records based on the provided schema and saves the data to a text file. +$ python fuzz.py --num_records 5 --schema '{"uuid": {"type": "uuid"}, "date": {"type": "date"}}' --format text --output data.txt + +# Example 4: Generate random data with custom ranges and save as JSON +# This example generates 15 records with custom ranges for integer and float fields and saves the data to a JSON file. +$ python fuzz.py --num_records 15 --schema '{"score": {"type": "int", "min": 50, "max": 100}, "price": {"type": "float", "min": 10.0, "max": 50.0, "precision": 2}}' --format json --output data.json + +# Example 5: Generate random data with choices and save as CSV +# This example generates 10 records with a choice field and saves the data to a CSV file. +$ python fuzz.py --num_records 10 --schema '{"status": {"type": "choice", "choices": ["active", "inactive", "pending"]}}' --format csv --output data.csv + +# Example 6: Generate random data with boolean and IP fields and save as text +# This example generates 8 records with boolean and IP fields and saves the data to a text file. +$ python fuzz.py --num_records 8 --schema '{"is_active": {"type": "bool"}, "ip_address": {"type": "ip"}}' --format text --output data.txt + +# Example 7: Generate random data with URL field and save as JSON +# This example generates 12 records with a URL field and saves the data to a JSON file. +$ python fuzz.py --num_records 12 --schema '{"website": {"type": "url"}}' --format json --output data.json + +# Example 8: Generate random data with date range and save as CSV +# This example generates 10 records with a date field within a specified range and saves the data to a CSV file. +$ python fuzz.py --num_records 10 --schema '{"event_date": {"type": "date", "start_date": "2022-01-01", "end_date": "2023-01-01"}}' --format csv --output data.csv + +# Example 9: Generate random data and display in terminal +# This example generates 5 records based on the provided schema, saves the data to a JSON file, and displays the data in the terminal. +$ python fuzz.py --num_records 5 --schema '{"name": {"type": "string"}, "email": {"type": "email"}}' --format json --output data.json --display + +# Example 10: Generate random data with nested schema and save as JSON +# This example generates 10 records with a nested schema and saves the data to a JSON file. +$ python fuzz.py --num_records 10 --schema '{"user": {"type": "string"}, "profile": {"type": "choice", "choices": [{"age": {"type": "int"}, "email": {"type": "email"}}]}}' --format json --output data.json \ No newline at end of file diff --git a/modules/lithium.pytools/examples/git.sh b/modules/lithium.pytools/examples/git.sh new file mode 100644 index 00000000..d3491575 --- /dev/null +++ b/modules/lithium.pytools/examples/git.sh @@ -0,0 +1,115 @@ +# Example 1: Clone a repository +# This example clones the specified repository URL into the current directory. +$ python git.py clone https://github.com/user/repo.git + +# Example 2: Clone a repository into a specific directory +# This example clones the specified repository URL into the specified directory. +$ python git.py clone https://github.com/user/repo.git /path/to/clone/dir + +# Example 3: Pull the latest changes +# This example pulls the latest changes from the remote repository. +$ python git.py pull + +# Example 4: Fetch the latest changes +# This example fetches the latest changes from the remote repository without merging. +$ python git.py fetch + +# Example 5: Add changes to the staging area +# This example adds all changes in the current directory to the staging area. +$ python git.py add + +# Example 6: Add specific files to the staging area +# This example adds the specified files to the staging area. +$ python git.py add file1.txt file2.txt + +# Example 7: Commit changes with a message +# This example commits the staged changes with the specified commit message. +$ python git.py commit "Initial commit" + +# Example 8: Push changes to the remote repository +# This example pushes the committed changes to the specified remote and branch. +$ python git.py push --remote origin --branch main + +# Example 9: Create a new branch +# This example creates a new branch with the specified name and switches to it. +$ python git.py create-branch new-feature + +# Example 10: Switch to an existing branch +# This example switches to the specified existing branch. +$ python git.py switch-branch new-feature + +# Example 11: Merge a branch into the current branch +# This example merges the specified branch into the current branch. +$ python git.py merge-branch new-feature + +# Example 12: List all branches +# This example lists all branches in the repository. +$ python git.py list-branches + +# Example 13: Reset the repository to a specific commit +# This example resets the repository to the specified commit, discarding uncommitted changes. +$ python git.py reset --commit abc123 + +# Example 14: Stash the current changes +# This example stashes the current changes. +$ python git.py stash + +# Example 15: Apply the latest stashed changes +# This example applies the latest stashed changes. +$ python git.py apply-stash + +# Example 16: View the current status of the repository +# This example displays the current status of the repository. +$ python git.py status + +# Example 17: View the commit log +# This example displays the commit log with the specified number of entries. +$ python git.py log --num 10 + +# Example 18: Add a new remote repository +# This example adds a new remote repository with the specified name and URL. +$ python git.py add-remote origin https://github.com/user/repo.git + +# Example 19: Remove a remote repository +# This example removes the specified remote repository. +$ python git.py remove-remote origin + +# Example 20: Show the list of remotes +# This example displays the list of remotes. +$ python git.py show-remotes + +# Example 21: Create a new tag +# This example creates a new tag with the specified name. +$ python git.py create-tag v1.0 + +# Example 22: Delete a tag +# This example deletes the specified tag. +$ python git.py delete-tag v1.0 + +# Example 23: Set user name and email for the repository +# This example sets the user name and email for the repository. +$ python git.py set-user-info "Your Name" "your.email@example.com" + +# Example 24: Show what revision and author last modified each line of a file +# This example displays the blame information for the specified file. +$ python git.py blame file.txt + +# Example 25: Revert a specific commit +# This example reverts the specified commit. +$ python git.py revert abc123 + +# Example 26: Apply changes introduced by existing commits +# This example cherry-picks the specified commit. +$ python git.py cherry-pick abc123 + +# Example 27: Rebase the current branch onto another branch +# This example rebases the current branch onto the specified branch. +$ python git.py rebase main + +# Example 28: Show changes between commits +# This example displays the changes between the specified commit and the working tree. +$ python git.py diff --commit abc123 + +# Example 29: Remove untracked files from the working tree +# This example removes all untracked files from the working tree. +$ python git.py clean \ No newline at end of file diff --git a/modules/lithium.pytools/examples/hotspot.sh b/modules/lithium.pytools/examples/hotspot.sh new file mode 100644 index 00000000..b16e271f --- /dev/null +++ b/modules/lithium.pytools/examples/hotspot.sh @@ -0,0 +1,27 @@ +# Example 1: Start a WiFi hotspot +# This example starts a WiFi hotspot with the specified name and password. +$ python hotspot.py start --name MyHotspot --password mypassword + +# Example 2: Start a WiFi hotspot with custom settings +# This example starts a WiFi hotspot with custom authentication, encryption, channel, max clients, band, and hidden SSID. +$ python hotspot.py start --name MyHotspot --password mypassword --authentication wpa2 --encryption aes --channel 6 --max-clients 5 --band ac --hidden + +# Example 3: Stop the WiFi hotspot +# This example stops the currently running WiFi hotspot. +$ python hotspot.py stop + +# Example 4: Check the status of the WiFi hotspot +# This example checks and displays the current status of the WiFi hotspot. +$ python hotspot.py status + +# Example 5: List connected clients +# This example lists all clients currently connected to the WiFi hotspot. +$ python hotspot.py list-clients + +# Example 6: Save a hotspot profile +# This example saves the current hotspot configuration as a profile with the specified name. +$ python hotspot.py save-profile --profile MyProfile --name MyHotspot --authentication wpa2 --encryption aes --channel 6 --max-clients 5 --band ac --hidden + +# Example 7: Load a hotspot profile and start hotspot +# This example loads the specified hotspot profile and starts the WiFi hotspot with the loaded configuration. +$ python hotspot.py load-profile --profile MyProfile \ No newline at end of file diff --git a/modules/lithium.pytools/examples/jbuilder.sh b/modules/lithium.pytools/examples/jbuilder.sh new file mode 100644 index 00000000..6a3e0c73 --- /dev/null +++ b/modules/lithium.pytools/examples/jbuilder.sh @@ -0,0 +1,43 @@ +# Example 1: Install project dependencies using npm +# This example installs the project dependencies using npm. +$ python jbuilder.py --package_manager npm --project_dir /path/to/project --install + +# Example 2: Build the project using yarn +# This example builds the project using yarn. +$ python jbuilder.py --package_manager yarn --project_dir /path/to/project --build + +# Example 3: Clean the project by removing node_modules +# This example cleans the project by removing the node_modules directory. +$ python jbuilder.py --package_manager npm --project_dir /path/to/project --clean + +# Example 4: Run tests for the project using npm +# This example runs the tests for the project using npm. +$ python jbuilder.py --package_manager npm --project_dir /path/to/project --test + +# Example 5: Lint the project code using yarn +# This example lints the project code using yarn. +$ python jbuilder.py --package_manager yarn --project_dir /path/to/project --lint + +# Example 6: Format the project code using npm +# This example formats the project code using npm. +$ python jbuilder.py --package_manager npm --project_dir /path/to/project --format + +# Example 7: Start the development server using yarn +# This example starts the development server using yarn. +$ python jbuilder.py --package_manager yarn --project_dir /path/to/project --start + +# Example 8: Generate documentation using npm +# This example generates the project documentation using npm. +$ python jbuilder.py --package_manager npm --project_dir /path/to/project --generate_docs + +# Example 9: List available npm scripts from package.json +# This example lists all available npm scripts from the package.json file. +$ python jbuilder.py --package_manager npm --project_dir /path/to/project --list_scripts + +# Example 10: Build the project with custom build options using yarn +# This example builds the project using yarn with custom build options. +$ python jbuilder.py --package_manager yarn --project_dir /path/to/project --build --build_options --verbose --production + +# Example 11: Load build options from a configuration file and build the project using npm +# This example loads build options from a specified configuration file and builds the project using npm. +$ python jbuilder.py --package_manager npm --project_dir /path/to/project --config /path/to/config.json --build \ No newline at end of file diff --git a/modules/lithium.pytools/examples/libclang_finder.sh b/modules/lithium.pytools/examples/libclang_finder.sh new file mode 100644 index 00000000..f0c0abb9 --- /dev/null +++ b/modules/lithium.pytools/examples/libclang_finder.sh @@ -0,0 +1,15 @@ +# Example 1: Configure libclang with a custom path +# This example configures libclang using a custom path to the libclang library. +$ python libclang_finder.py configure --path /custom/path/to/libclang.so + +# Example 2: Configure libclang and clear the cache +# This example configures libclang and clears any cached libclang path. +$ python libclang_finder.py configure --clear-cache + +# Example 3: Configure libclang with additional search patterns +# This example configures libclang and includes additional glob patterns to search for the libclang library. +$ python libclang_finder.py configure --search-patterns "/opt/llvm/lib/libclang.so*" "/another/path/libclang.so*" + +# Example 4: List available libclang versions +# This example lists all available libclang versions on the system. +$ python libclang_finder.py list \ No newline at end of file diff --git a/modules/lithium.pytools/examples/net.sh b/modules/lithium.pytools/examples/net.sh new file mode 100644 index 00000000..fc62133e --- /dev/null +++ b/modules/lithium.pytools/examples/net.sh @@ -0,0 +1,15 @@ +# Example 1: List all installed .NET Framework versions +# This example lists all installed .NET Framework versions by querying the Windows Registry. +$ python net.py --list + +# Example 2: Check if a specific .NET Framework version is installed +# This example checks if the specified .NET Framework version is installed. +$ python net.py --check v4.0.30319 + +# Example 3: Check if a specific .NET Framework version is installed and download the installer if not +# This example checks if the specified .NET Framework version is installed, and if not, downloads the installer from the specified URL. +$ python net.py --check v4.0.30319 --download https://example.com/installer.exe --install ./installer.exe --threads 4 --checksum abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 + +# Example 4: Uninstall a specific .NET Framework version +# This example uninstalls the specified .NET Framework version. +$ python net.py --uninstall v4.0.30319 \ No newline at end of file diff --git a/modules/lithium.pytools/examples/nginx.sh b/modules/lithium.pytools/examples/nginx.sh new file mode 100644 index 00000000..f94f850f --- /dev/null +++ b/modules/lithium.pytools/examples/nginx.sh @@ -0,0 +1,63 @@ +# Example 1: Start Nginx server +# This example starts the Nginx server. +$ python nginx.sh start + +# Example 2: Stop Nginx server +# This example stops the Nginx server. +$ python nginx.sh stop + +# Example 3: Reload Nginx configuration +# This example reloads the Nginx configuration. +$ python nginx.sh reload + +# Example 4: Restart Nginx server +# This example restarts the Nginx server. +$ python nginx.sh restart + +# Example 5: Test Nginx configuration +# This example tests the Nginx configuration without reloading. +$ python nginx.sh test + +# Example 6: Check Nginx configuration syntax +# This example checks the Nginx configuration syntax. +$ python nginx.sh check + +# Example 7: Show Nginx running status +# This example shows the running status of the Nginx server. +$ python nginx.sh status + +# Example 8: Show Nginx version information +# This example shows the version information of the Nginx server. +$ python nginx.sh version + +# Example 9: Backup Nginx configuration file +# This example backs up the Nginx configuration file. +$ python nginx.sh backup + +# Example 10: Restore Nginx configuration from backup +# This example restores the Nginx configuration file from a backup. +$ python nginx.sh restore + +# Example 11: View Nginx access logs +# This example views the Nginx access logs. +$ python nginx.sh view_logs access + +# Example 12: View Nginx error logs +# This example views the Nginx error logs. +$ python nginx.sh view_logs error + +# Example 13: Clear Nginx access logs +# This example clears the Nginx access logs. +$ python nginx.sh clear_logs access + +# Example 14: Clear Nginx error logs +# This example clears the Nginx error logs. +$ python nginx.sh clear_logs error + +# Example 15: List available and enabled sites +# This example lists all available and enabled sites in the Nginx configuration. +$ python nginx.sh list_sites + +# Example 16: Show help message +# This example shows the help message with all available commands. +$ python nginx.sh help \ No newline at end of file diff --git a/modules/lithium.pytools/examples/nm.sh b/modules/lithium.pytools/examples/nm.sh new file mode 100644 index 00000000..8624e117 --- /dev/null +++ b/modules/lithium.pytools/examples/nm.sh @@ -0,0 +1,59 @@ +# Example 1: Display all symbols in a binary +# This example displays all symbols in the specified binary file. +$ python nm.py /path/to/binary + +# Example 2: Filter symbols by type +# This example filters symbols by the specified type (e.g., 'T' for text symbols). +$ python nm.py /path/to/binary --filter T + +# Example 3: Search for a specific symbol by name +# This example searches for a specific symbol by its name. +$ python nm.py /path/to/binary --search symbol_name + +# Example 4: Find a symbol by address +# This example finds a symbol by its address. +$ python nm.py /path/to/binary --address 00400000 + +# Example 5: Display detailed output for symbols +# This example displays detailed output for all symbols in the specified binary file. +$ python nm.py /path/to/binary --detailed + +# Example 6: Count symbols by type +# This example counts the number of symbols by their type. +$ python nm.py /path/to/binary --count + +# Example 7: Export symbols to a file in TXT format +# This example exports all symbols to a file in TXT format. +$ python nm.py /path/to/binary --export symbols.txt + +# Example 8: Export symbols to a file in CSV format +# This example exports all symbols to a file in CSV format. +$ python nm.py /path/to/binary --export symbols.csv + +# Example 9: Export symbols to a file in JSON format +# This example exports all symbols to a file in JSON format. +$ python nm.py /path/to/binary --export symbols.json + +# Example 10: Export symbols to a file in XML format +# This example exports all symbols to a file in XML format. +$ python nm.py /path/to/binary --export symbols.xml + +# Example 11: Display only external symbols +# This example displays only external symbols in the specified binary file. +$ python nm.py /path/to/binary --extern + +# Example 12: Demangle C++ symbol names +# This example demangles C++ symbol names in the specified binary file. +$ python nm.py /path/to/binary --demangle + +# Example 13: Display symbols with sizes +# This example displays symbols along with their sizes in the specified binary file. +$ python nm.py /path/to/binary --size + +# Example 14: Search symbols matching a regex pattern +# This example searches for symbols matching the specified regex pattern. +$ python nm.py /path/to/binary --pattern "regex_pattern" + +# Example 15: Increase output verbosity +# This example increases the output verbosity for detailed logging. +$ python nm.py /path/to/binary --verbose \ No newline at end of file diff --git a/modules/lithium.pytools/examples/output.sh b/modules/lithium.pytools/examples/output.sh new file mode 100644 index 00000000..2ab46c5b --- /dev/null +++ b/modules/lithium.pytools/examples/output.sh @@ -0,0 +1,39 @@ +# Example 1: Pretty print a JSON file +# This example pretty prints the contents of a JSON file. +$ python output.py example.json + +# Example 2: Validate a YAML file +# This example validates the syntax of a YAML file without printing its contents. +$ python output.py example.yaml --validate + +# Example 3: Pretty print multiple files with overwrite +# This example pretty prints the contents of multiple files and overwrites the output files if they exist. +$ python output.py example1.json example2.yaml --overwrite + +# Example 4: Read from standard input +# This example reads data from standard input and pretty prints it as TOML. +$ cat example.toml | python output.py - --format toml + +# Example 5: Pretty print a TOML file with custom indentation +# This example pretty prints the contents of a TOML file with a custom indentation level. +$ python output.py example.toml --indent 2 + +# Example 6: Pretty print an XML file and write to an output file +# This example pretty prints the contents of an XML file and writes the output to a specified file. +$ python output.py example.xml --output output.xml + +# Example 7: Pretty print a CSV file +# This example pretty prints the contents of a CSV file. +$ python output.py example.csv + +# Example 8: Pretty print an INI file +# This example pretty prints the contents of an INI file. +$ python output.py example.ini + +# Example 9: Enable verbose logging +# This example enables verbose logging for detailed output. +$ python output.py example.json --verbose + +# Example 10: Pretty print a JSON file with a custom theme +# This example pretty prints the contents of a JSON file using a custom syntax highlighting theme. +$ python output.py example.json --theme dracula \ No newline at end of file diff --git a/modules/lithium.pytools/examples/package.sh b/modules/lithium.pytools/examples/package.sh new file mode 100644 index 00000000..dec136fb --- /dev/null +++ b/modules/lithium.pytools/examples/package.sh @@ -0,0 +1,39 @@ +# Example 1: Check if a specific package is installed +# This example checks if the specified package is installed. +$ python package.py --check requests + +# Example 2: Install a specific package +# This example installs the specified package. +$ python package.py --install requests + +# Example 3: Install a specific version of a package +# This example installs the specified version of the package. +$ python package.py --install requests --version 2.25.1 + +# Example 4: Upgrade a specific package to the latest version +# This example upgrades the specified package to the latest version. +$ python package.py --upgrade requests + +# Example 5: Uninstall a specific package +# This example uninstalls the specified package. +$ python package.py --uninstall requests + +# Example 6: List all installed packages +# This example lists all installed Python packages. +$ python package.py --list-installed + +# Example 7: Generate a requirements.txt file +# This example generates a requirements.txt file for the current environment. +$ python package.py --freeze + +# Example 8: Generate a requirements.txt file with a custom output file name +# This example generates a requirements.txt file and writes it to the specified output file. +$ python package.py --freeze custom_requirements.txt + +# Example 9: Check for updates based on a requirements.txt file +# This example checks for updates for packages listed in the requirements.txt file. +$ python package.py --check-updates + +# Example 10: Check for updates based on a custom requirements file +# This example checks for updates for packages listed in the specified requirements file. +$ python package.py --check-updates custom_requirements.txt \ No newline at end of file diff --git a/modules/lithium.pytools/examples/pacman.sh b/modules/lithium.pytools/examples/pacman.sh new file mode 100644 index 00000000..03d08515 --- /dev/null +++ b/modules/lithium.pytools/examples/pacman.sh @@ -0,0 +1,83 @@ +# Example 1: Update the package database +# This example updates the package database to get the latest package information. +$ python pacman.py --update-db + +# Example 2: Upgrade the system +# This example upgrades the system by updating all installed packages to the latest versions. +$ python pacman.py --upgrade + +# Example 3: Install a package +# This example installs the specified package. +$ python pacman.py --install package_name + +# Example 4: Remove a package +# This example removes the specified package. +$ python pacman.py --remove package_name + +# Example 5: Remove a package along with its dependencies +# This example removes the specified package along with its dependencies. +$ python pacman.py --remove package_name --remove-deps + +# Example 6: Search for a package +# This example searches for a package by name or description. +$ python pacman.py --search query + +# Example 7: List all installed packages +# This example lists all installed packages on the system. +$ python pacman.py --list-installed + +# Example 8: Show package information +# This example displays detailed information about the specified package. +$ python pacman.py --package-info package_name + +# Example 9: List outdated packages +# This example lists all packages that are outdated and need to be upgraded. +$ python pacman.py --list-outdated + +# Example 10: Clear the package cache +# This example clears the package cache to free up space. +$ python pacman.py --clear-cache + +# Example 11: List installed files of a package +# This example lists all the files installed by the specified package. +$ python pacman.py --list-files package_name + +# Example 12: Show package dependencies +# This example shows the dependencies of the specified package. +$ python pacman.py --show-dependencies package_name + +# Example 13: Find which package owns a file +# This example finds which package owns the specified file. +$ python pacman.py --find-file-owner /path/to/file + +# Example 14: Show and use the fastest mirrors +# This example displays and selects the fastest mirrors for package downloads. +$ python pacman.py --fast-mirrors + +# Example 15: Downgrade a package to a specific version +# This example downgrades the specified package to the specified version. +$ python pacman.py --downgrade package_name version + +# Example 16: List packages in local cache +# This example lists all packages currently stored in the local package cache. +$ python pacman.py --list-cache + +# Example 17: Enable multithreaded downloads +# This example enables multithreaded downloads to speed up package installation. +$ python pacman.py --multithread + +# Example 18: List all packages in a group +# This example lists all packages in the specified package group. +$ python pacman.py --list-group group_name + +# Example 19: List optional dependencies of a package +# This example lists the optional dependencies of the specified package. +$ python pacman.py --optional-deps package_name + +# Example 20: Enable color output in pacman +# This example enables color output in pacman command-line results. +$ python pacman.py --enable-color + +# Example 21: Disable color output in pacman +# This example disables color output in pacman command-line results. +$ python pacman.py --disable-color \ No newline at end of file diff --git a/modules/lithium.pytools/examples/port_scanner.sh b/modules/lithium.pytools/examples/port_scanner.sh new file mode 100644 index 00000000..5a5045e1 --- /dev/null +++ b/modules/lithium.pytools/examples/port_scanner.sh @@ -0,0 +1,39 @@ +# Example 1: Scan a range of ports on a single IP address +# This example scans ports 1 to 1024 on the specified IP address using TCP protocol. +$ python port_scanner.py 192.168.1.1 -p 1-1024 + +# Example 2: Scan a range of ports on multiple IP addresses +# This example scans ports 1 to 1024 on multiple IP addresses using TCP protocol. +$ python port_scanner.py 192.168.1.1 192.168.1.2 -p 1-1024 + +# Example 3: Scan using UDP protocol +# This example scans ports 1 to 1024 on the specified IP address using UDP protocol. +$ python port_scanner.py 192.168.1.1 -p 1-1024 --protocol udp + +# Example 4: Perform a quick scan on common ports +# This example performs a quick scan on common ports (1 to 1024) on the specified IP address. +$ python port_scanner.py 192.168.1.1 --quick + +# Example 5: Save scan results to a file +# This example scans ports 1 to 1024 on the specified IP address and saves the results to a file. +$ python port_scanner.py 192.168.1.1 -p 1-1024 -o scan_results.txt + +# Example 6: Save scan results in JSON format +# This example scans ports 1 to 1024 on the specified IP address and saves the results in JSON format. +$ python port_scanner.py 192.168.1.1 -p 1-1024 -o scan_results.json --json + +# Example 7: Scan with a custom timeout +# This example scans ports 1 to 1024 on the specified IP address with a custom timeout of 2 seconds per port. +$ python port_scanner.py 192.168.1.1 -p 1-1024 -t 2.0 + +# Example 8: Exclude specific ports from scanning +# This example scans ports 1 to 1024 on the specified IP address but excludes ports 80 and 443. +$ python port_scanner.py 192.168.1.1 -p 1-1024 --exclude 80,443 + +# Example 9: Enable verbose output +# This example scans ports 1 to 1024 on the specified IP address and prints detailed scan information. +$ python port_scanner.py 192.168.1.1 -p 1-1024 --verbose + +# Example 10: Scan multiple IP addresses with quick scan and save results in JSON format +# This example performs a quick scan on common ports for multiple IP addresses and saves the results in JSON format. +$ python port_scanner.py 192.168.1.1 192.168.1.2 --quick -o scan_results.json --json \ No newline at end of file diff --git a/modules/lithium.pytools/examples/pyjson.sh b/modules/lithium.pytools/examples/pyjson.sh new file mode 100644 index 00000000..59706f41 --- /dev/null +++ b/modules/lithium.pytools/examples/pyjson.sh @@ -0,0 +1,51 @@ +# Example 1: Minify JSON output +# This example minifies the JSON output from the specified file. +$ python pyjson.py example.json --minify + +# Example 2: Format JSON output with indentation +# This example formats the JSON output from the specified file with indentation. +$ python pyjson.py example.json --format + +# Example 3: Convert JSON to YAML and save to a file +# This example converts the JSON data to YAML format and saves it to the specified output file. +$ python pyjson.py example.json --yaml output.yaml + +# Example 4: Query JSON data using dot notation +# This example queries the JSON data using a dot notation path. +$ python pyjson.py example.json --query a.b.0.c + +# Example 5: Validate JSON file format +# This example validates the format of the specified JSON file. +$ python pyjson.py example.json --validate + +# Example 6: Merge multiple JSON files +# This example merges the specified JSON files into one. +$ python pyjson.py --merge file1.json file2.json file3.json + +# Example 7: Compare two JSON files +# This example compares the specified JSON files and displays the differences. +$ python pyjson.py --diff file1.json file2.json + +# Example 8: Export JSON to XML format +# This example exports the JSON data to XML format and saves it to the specified output file. +$ python pyjson.py example.json --export-xml output.xml + +# Example 9: Display statistics about the JSON structure +# This example displays statistics about the structure of the JSON data. +$ python pyjson.py example.json --stats + +# Example 10: Flatten nested JSON structures +# This example flattens the nested JSON structures in the specified file. +$ python pyjson.py example.json --flatten + +# Example 11: Unflatten JSON structures +# This example unflattens the JSON structures in the specified file. +$ python pyjson.py example.json --unflatten + +# Example 12: Remove a specific key from the JSON data +# This example removes the specified key from the JSON data. +$ python pyjson.py example.json --remove-key key_to_remove + +# Example 13: Rename a key in the JSON data +# This example renames the specified key in the JSON data. +$ python pyjson.py example.json --rename-key old_key new_key \ No newline at end of file diff --git a/modules/lithium.pytools/examples/rsa.sh b/modules/lithium.pytools/examples/rsa.sh new file mode 100644 index 00000000..d1f36e2d --- /dev/null +++ b/modules/lithium.pytools/examples/rsa.sh @@ -0,0 +1,31 @@ +# Example 1: Generate RSA key pair +# This example generates an RSA key pair and saves the keys to 'public_key.pem' and 'private_key.pem'. +$ python rsa.py generate + +# Example 2: Encrypt a file using RSA and AES hybrid encryption +# This example encrypts the specified input file using the provided public key and saves the encrypted file to the output path. +$ python rsa.py encrypt -i input.txt -o encrypted.bin -k public_key.pem + +# Example 3: Decrypt a file using RSA and AES hybrid decryption +# This example decrypts the specified input file using the provided private key and saves the decrypted file to the output path. +$ python rsa.py decrypt -i encrypted.bin -o decrypted.txt -k private_key.pem + +# Example 4: Sign a file using an RSA private key +# This example signs the specified input file using the provided private key and saves the signature to the output path. +$ python rsa.py sign -i input.txt -o signature.sig -k private_key.pem + +# Example 5: Verify a file's signature using an RSA public key +# This example verifies the signature of the specified input file using the provided public key. +$ python rsa.py verify -i input.txt -s signature.sig -k public_key.pem + +# Example 6: Generate SHA256 hash of a file +# This example generates the SHA256 hash of the specified input file and prints the hash. +$ python rsa.py hash -i input.txt + +# Example 7: Encrypt a file using AES +# This example encrypts the specified input file using AES and saves the encrypted file to the output path. +$ python rsa.py aes-encrypt -i input.txt -o encrypted_aes.bin + +# Example 8: Decrypt a file using AES +# This example decrypts the specified input file using AES and saves the decrypted file to the output path. +$ python rsa.py aes-decrypt -i encrypted_aes.bin -o decrypted_aes.txt \ No newline at end of file diff --git a/modules/lithium.pytools/examples/script.sh b/modules/lithium.pytools/examples/script.sh new file mode 100644 index 00000000..7a2b7710 --- /dev/null +++ b/modules/lithium.pytools/examples/script.sh @@ -0,0 +1,27 @@ +# Example 1: Build the project +# This example builds the project using the build script defined in the configuration file. +$ python script.py build --config project.json + +# Example 2: List available scripts +# This example lists all available scripts defined in the configuration file. +$ python script.py list --config project.json + +# Example 3: Install dependencies +# This example installs the project dependencies defined in the configuration file. +$ python script.py install --config project.json + +# Example 4: Clean temporary files and directories +# This example cleans temporary files and directories specified in the configuration file. +$ python script.py clean --config project.json + +# Example 5: Run project tests +# This example runs the project tests using the test script defined in the configuration file. +$ python script.py test --config project.json + +# Example 6: Deploy the project +# This example deploys the project using the deploy script defined in the configuration file. +$ python script.py deploy --config project.json + +# Example 7: Generate project documentation +# This example generates project documentation using the documentation script defined in the configuration file. +$ python script.py docs --config project.json \ No newline at end of file diff --git a/modules/lithium.pytools/examples/sevenzip.sh b/modules/lithium.pytools/examples/sevenzip.sh new file mode 100644 index 00000000..7998f870 --- /dev/null +++ b/modules/lithium.pytools/examples/sevenzip.sh @@ -0,0 +1,51 @@ +# Example 1: Compress files into an archive +# This example compresses the specified files into an archive with a compression level of 5. +$ python sevenzip.py compress -f file1.txt file2.txt -a archive.7z -l 5 + +# Example 2: Compress files into a password-protected archive +# This example compresses the specified files into a password-protected archive. +$ python sevenzip.py compress -f file1.txt file2.txt -a archive.7z -p mypassword + +# Example 3: Extract files from an archive +# This example extracts the contents of the specified archive to the given destination directory. +$ python sevenzip.py extract -a archive.7z -d /path/to/destination + +# Example 4: Extract files from a password-protected archive +# This example extracts the contents of a password-protected archive to the given destination directory. +$ python sevenzip.py extract -a archive.7z -d /path/to/destination -p mypassword + +# Example 5: List contents of an archive +# This example lists the contents of the specified archive. +$ python sevenzip.py list -a archive.7z + +# Example 6: List contents of a password-protected archive +# This example lists the contents of a password-protected archive. +$ python sevenzip.py list -a archive.7z -p mypassword + +# Example 7: Test the integrity of an archive +# This example tests the integrity of the specified archive. +$ python sevenzip.py test -a archive.7z + +# Example 8: Test the integrity of a password-protected archive +# This example tests the integrity of a password-protected archive. +$ python sevenzip.py test -a archive.7z -p mypassword + +# Example 9: Delete an archive +# This example deletes the specified archive. +$ python sevenzip.py delete -a archive.7z + +# Example 10: Add files to an existing archive +# This example adds the specified files to an existing archive. +$ python sevenzip.py update -a archive.7z -f file3.txt file4.txt --add + +# Example 11: Delete files from an existing archive +# This example deletes the specified files from an existing archive. +$ python sevenzip.py update -a archive.7z -f file1.txt file2.txt --delete + +# Example 12: Get the version of the 7z executable +# This example retrieves the version of the 7z executable. +$ python sevenzip.py version + +# Example 13: List supported archive formats +# This example lists the supported archive formats by the 7z executable. +$ python sevenzip.py formats \ No newline at end of file diff --git a/modules/lithium.pytools/examples/sftp.sh b/modules/lithium.pytools/examples/sftp.sh new file mode 100644 index 00000000..ffe0c86b --- /dev/null +++ b/modules/lithium.pytools/examples/sftp.sh @@ -0,0 +1,35 @@ +# Example 1: Upload a directory to the server +# This example uploads a local directory to the specified remote directory on the SFTP server. +$ python sftp.py hostname username --password mypassword upload-dir /local/path /remote/path + +# Example 2: Download a directory from the server +# This example downloads a remote directory to the specified local directory. +$ python sftp.py hostname username --password mypassword download-dir /remote/path /local/path + +# Example 3: Create a directory on the server +# This example creates a directory on the SFTP server at the specified remote path. +$ python sftp.py hostname username --password mypassword mkdir /remote/path + +# Example 4: Remove a directory from the server +# This example removes a directory from the SFTP server at the specified remote path. +$ python sftp.py hostname username --password mypassword rmdir /remote/path + +# Example 5: Get file or directory info +# This example retrieves information about a file or directory on the SFTP server. +$ python sftp.py hostname username --password mypassword info /remote/path + +# Example 6: Resume an interrupted file upload +# This example resumes an interrupted file upload to the SFTP server. +$ python sftp.py hostname username --password mypassword resume-upload /local/file /remote/file + +# Example 7: List files in a remote directory +# This example lists the files in the specified remote directory on the SFTP server. +$ python sftp.py hostname username --password mypassword list /remote/path + +# Example 8: Move or rename a remote file +# This example moves or renames a file on the SFTP server from the source path to the destination path. +$ python sftp.py hostname username --password mypassword move /remote/src /remote/dest + +# Example 9: Delete a remote file +# This example deletes a file from the SFTP server at the specified remote path. +$ python sftp.py hostname username --password mypassword delete /remote/path \ No newline at end of file diff --git a/modules/lithium.pytools/examples/ssh.sh b/modules/lithium.pytools/examples/ssh.sh new file mode 100644 index 00000000..17140b7c --- /dev/null +++ b/modules/lithium.pytools/examples/ssh.sh @@ -0,0 +1,47 @@ +# Example 1: Execute a command on the remote server +# This example executes the specified command on the remote SSH server. +$ python ssh.py --hostname example.com --username user --password pass exec "ls -la" + +# Example 2: Upload a file to the remote server +# This example uploads a local file to the specified path on the remote SSH server. +$ python ssh.py --hostname example.com --username user --password pass upload /local/path/to/file /remote/path/to/file + +# Example 3: Download a file from the remote server +# This example downloads a file from the specified path on the remote SSH server to the local machine. +$ python ssh.py --hostname example.com --username user --password pass download /remote/path/to/file /local/path/to/file + +# Example 4: List contents of a remote directory +# This example lists the contents of the specified directory on the remote SSH server. +$ python ssh.py --hostname example.com --username user --password pass list /remote/path/to/directory + +# Example 5: Create a directory on the remote server +# This example creates a directory at the specified path on the remote SSH server. +$ python ssh.py --hostname example.com --username user --password pass mkdir /remote/path/to/directory + +# Example 6: Delete a file on the remote server +# This example deletes a file at the specified path on the remote SSH server. +$ python ssh.py --hostname example.com --username user --password pass delete /remote/path/to/file + +# Example 7: Execute a command on the remote server using a private key +# This example executes the specified command on the remote SSH server using a private key for authentication. +$ python ssh.py --hostname example.com --username user --key_file /path/to/private/key exec "ls -la" + +# Example 8: Upload a file to the remote server using a private key +# This example uploads a local file to the specified path on the remote SSH server using a private key for authentication. +$ python ssh.py --hostname example.com --username user --key_file /path/to/private/key upload /local/path/to/file /remote/path/to/file + +# Example 9: Download a file from the remote server using a private key +# This example downloads a file from the specified path on the remote SSH server to the local machine using a private key for authentication. +$ python ssh.py --hostname example.com --username user --key_file /path/to/private/key download /remote/path/to/file /local/path/to/file + +# Example 10: List contents of a remote directory using a private key +# This example lists the contents of the specified directory on the remote SSH server using a private key for authentication. +$ python ssh.py --hostname example.com --username user --key_file /path/to/private/key list /remote/path/to/directory + +# Example 11: Create a directory on the remote server using a private key +# This example creates a directory at the specified path on the remote SSH server using a private key for authentication. +$ python ssh.py --hostname example.com --username user --key_file /path/to/private/key mkdir /remote/path/to/directory + +# Example 12: Delete a file on the remote server using a private key +# This example deletes a file at the specified path on the remote SSH server using a private key for authentication. +$ python ssh.py --hostname example.com --username user --key_file /path/to/private/key delete /remote/path/to/file \ No newline at end of file diff --git a/modules/lithium.pytools/examples/ssl_helper.sh b/modules/lithium.pytools/examples/ssl_helper.sh new file mode 100644 index 00000000..a37050f2 --- /dev/null +++ b/modules/lithium.pytools/examples/ssl_helper.sh @@ -0,0 +1,35 @@ +# Example 1: Create a self-signed SSL certificate +# This example creates a self-signed SSL certificate for the specified hostname and saves it in the specified directory. +$ python ssl_helper.py example.com --cert-dir /path/to/certs + +# Example 2: Create a self-signed SSL certificate with SANs +# This example creates a self-signed SSL certificate with Subject Alternative Names (SANs) for the specified hostname. +$ python ssl_helper.py example.com --cert-dir /path/to/certs --san www.example.com api.example.com + +# Example 3: View certificate details +# This example views the details of the SSL certificate for the specified hostname. +$ python ssl_helper.py example.com --cert-dir /path/to/certs --view + +# Example 4: Check certificate expiry +# This example checks if the SSL certificate for the specified hostname is about to expire. +$ python ssl_helper.py example.com --cert-dir /path/to/certs --check-expiry + +# Example 5: Renew an SSL certificate +# This example renews the SSL certificate for the specified hostname and extends its validity. +$ python ssl_helper.py example.com --cert-dir /path/to/certs --renew + +# Example 6: Export certificate and key as PKCS#12 file +# This example exports the SSL certificate and private key as a PKCS#12 (PFX) file with the specified password. +$ python ssl_helper.py example.com --cert-dir /path/to/certs --export-pfx --password mypassword + +# Example 7: Create a CA certificate +# This example creates a self-signed CA certificate for the specified hostname. +$ python ssl_helper.py example.com --cert-dir /path/to/certs --cert-type ca + +# Example 8: Generate a Certificate Revocation List (CRL) +# This example generates a CRL and saves it in the specified directory. +$ python ssl_helper.py example.com --cert-dir /path/to/certs --crl --crl-dir /path/to/crl + +# Example 9: Revoke certificates by serial numbers +# This example revokes certificates with the specified serial numbers and generates a CRL. +$ python ssl_helper.py example.com --cert-dir /path/to/certs --crl --crl-dir /path/to/crl --revoke 1234567890ABCDEF 0987654321FEDCBA \ No newline at end of file diff --git a/modules/lithium.pytools/examples/template_error_parser.sh b/modules/lithium.pytools/examples/template_error_parser.sh new file mode 100644 index 00000000..055c8e27 --- /dev/null +++ b/modules/lithium.pytools/examples/template_error_parser.sh @@ -0,0 +1,39 @@ +# Example 1: Parse an error log file and generate a visual error tree +# This example parses the specified error log file, generates a visual error tree in PNG format, and opens the image for viewing. +$ python template_error_parser.py error_log.txt --graph error_tree --format png --view + +# Example 2: Extract code context around the error +# This example parses the specified error log file and extracts 5 lines of code before and after the error location. +$ python template_error_parser.py error_log.txt --context 5 + +# Example 3: Download and analyze an error log file +# This example downloads the error log file from the provided URL, parses it, and saves the results. +$ python template_error_parser.py downloaded_log.txt --download http://example.com/error_log.txt + +# Example 4: Decompress and analyze a gzip error log file +# This example decompresses the specified gzip error log file, parses the decompressed file, and saves the results. +$ python template_error_parser.py decompressed_error.txt --decompress error_log.txt.gz + +# Example 5: Parse an error log file from a specific compiler +# This example parses the specified error log file generated by Clang and generates a visual error tree in PDF format. +$ python template_error_parser.py error_log.txt --compiler clang --graph error_tree --format pdf + +# Example 6: Parse an error log file without saving the generated graph +# This example parses the specified error log file and generates a visual error tree without saving the graph file. +$ python template_error_parser.py error_log.txt --graph error_tree --no-save + +# Example 7: Save parsed error information to a custom JSON file +# This example parses the specified error log file and saves the parsed error information to a custom JSON file. +$ python template_error_parser.py error_log.txt --output custom_parsed_error.json + +# Example 8: Parse an error log file and generate a visual error tree without viewing +# This example parses the specified error log file and generates a visual error tree in PNG format without opening the image for viewing. +$ python template_error_parser.py error_log.txt --graph error_tree --format png + +# Example 9: Parse an error log file and generate a visual error tree in SVG format +# This example parses the specified error log file and generates a visual error tree in SVG format. +$ python template_error_parser.py error_log.txt --graph error_tree --format svg + +# Example 10: Parse an error log file and generate a visual error tree with a custom name +# This example parses the specified error log file and generates a visual error tree with a custom name in PNG format. +$ python template_error_parser.py error_log.txt --graph custom_error_tree --format png \ No newline at end of file diff --git a/modules/lithium.pytools/examples/unzip.sh b/modules/lithium.pytools/examples/unzip.sh new file mode 100644 index 00000000..fa31ba78 --- /dev/null +++ b/modules/lithium.pytools/examples/unzip.sh @@ -0,0 +1,35 @@ +# Example 1: Extract files from an archive +# This example extracts the contents of the specified archive to the given destination directory. +$ python unzip.py extract -a archive.zip -d /path/to/destination + +# Example 2: Extract files from a password-protected archive +# This example extracts the contents of a password-protected archive to the given destination directory. +$ python unzip.py extract -a archive.zip -d /path/to/destination -p mypassword + +# Example 3: List contents of an archive +# This example lists the contents of the specified archive. +$ python unzip.py list -a archive.zip + +# Example 4: List contents of a password-protected archive +# This example lists the contents of a password-protected archive. +$ python unzip.py list -a archive.zip -p mypassword + +# Example 5: Test the integrity of an archive +# This example tests the integrity of the specified archive. +$ python unzip.py test -a archive.zip + +# Example 6: Test the integrity of a password-protected archive +# This example tests the integrity of a password-protected archive. +$ python unzip.py test -a archive.zip -p mypassword + +# Example 7: Delete an archive +# This example deletes the specified archive. +$ python unzip.py delete -a archive.zip + +# Example 8: Add files to an archive (not supported) +# This example attempts to add files to an existing archive, but the operation is not supported by unzip. +$ python unzip.py update -a archive.zip -f file1.txt file2.txt --action add + +# Example 9: Delete files from an archive (not supported) +# This example attempts to delete files from an existing archive, but the operation is not supported by unzip. +$ python unzip.py update -a archive.zip -f file1.txt file2.txt --action delete \ No newline at end of file diff --git a/modules/lithium.pytools/examples/updater.sh b/modules/lithium.pytools/examples/updater.sh new file mode 100644 index 00000000..faf4f1ca --- /dev/null +++ b/modules/lithium.pytools/examples/updater.sh @@ -0,0 +1,47 @@ +# Example 1: Run the updater with a configuration file +# This example runs the updater using the specified configuration file in JSON format. +$ python updater.py --config config.json + +# Example 2: Check for updates +# This example checks for updates from the URL specified in the configuration file. +$ python updater.py --config config.json + +# Example 3: Download an update +# This example downloads the update from the URL specified in the configuration file. +$ python updater.py --config config.json + +# Example 4: Verify the downloaded update +# This example verifies the SHA-256 hash of the downloaded update file. +$ python updater.py --config config.json + +# Example 5: Extract the downloaded update +# This example extracts the downloaded update file to a temporary directory. +$ python updater.py --config config.json + +# Example 6: Backup current files +# This example backs up the current installation files to a backup directory. +$ python updater.py --config config.json + +# Example 7: Install the update +# This example installs the update by moving the extracted files to the installation directory. +$ python updater.py --config config.json + +# Example 8: Clean up temporary files +# This example cleans up temporary files and directories created during the update process. +$ python updater.py --config config.json + +# Example 9: Log the update history +# This example logs the update history, including the current and new version numbers. +$ python updater.py --config config.json + +# Example 10: Run custom post-download actions +# This example runs custom post-download actions specified in the configuration file. +$ python updater.py --config config.json + +# Example 11: Run custom post-install actions +# This example runs custom post-install actions specified in the configuration file. +$ python updater.py --config config.json + +# Example 12: Download multiple files concurrently +# This example downloads multiple files concurrently using the URLs specified in the configuration file. +$ python updater.py --config config.json \ No newline at end of file diff --git a/modules/lithium.pytools/examples/upload.sh b/modules/lithium.pytools/examples/upload.sh new file mode 100644 index 00000000..a895e8ab --- /dev/null +++ b/modules/lithium.pytools/examples/upload.sh @@ -0,0 +1,39 @@ +# Example 1: Upload a single file to the server +# This example uploads a single file to the specified server URL. +$ python upload.py --files /path/to/file.txt --server http://example.com/upload + +# Example 2: Upload multiple files to the server +# This example uploads multiple files to the specified server URL. +$ python upload.py --files /path/to/file1.txt /path/to/file2.txt --server http://example.com/upload + +# Example 3: Encrypt files before uploading +# This example encrypts the files before uploading them to the specified server URL. +$ python upload.py --files /path/to/file.txt --server http://example.com/upload --encrypt --key /path/to/encryption.key + +# Example 4: Upload files using a configuration file +# This example uploads files using the settings specified in a JSON configuration file. +$ python upload.py --config /path/to/config.json + +# Example 5: Filter files by extension and upload +# This example uploads only the files with the specified extension to the server URL. +$ python upload.py --files /path/to/dir/* --server http://example.com/upload --filter-type .txt + +# Example 6: Verify server response after upload +# This example verifies the server's response after uploading the files to ensure the integrity of the uploaded files. +$ python upload.py --files /path/to/file.txt --server http://example.com/upload --verify-server + +# Example 7: Upload files using multiple threads +# This example uploads files using multiple threads to speed up the upload process. +$ python upload.py --files /path/to/file1.txt /path/to/file2.txt --server http://example.com/upload --threads 8 + +# Example 8: Upload files with encryption and server verification +# This example encrypts the files before uploading and verifies the server's response after the upload. +$ python upload.py --files /path/to/file.txt --server http://example.com/upload --encrypt --key /path/to/encryption.key --verify-server + +# Example 9: Upload files using a configuration file with encryption +# This example uploads files using the settings specified in a JSON configuration file and encrypts the files before uploading. +$ python upload.py --config /path/to/config.json --encrypt --key /path/to/encryption.key + +# Example 10: Upload files using a configuration file with multiple threads +# This example uploads files using the settings specified in a JSON configuration file and uses multiple threads to speed up the upload process. +$ python upload.py --config /path/to/config.json --threads 8 \ No newline at end of file diff --git a/modules/lithium.pytools/examples/video_editor.sh b/modules/lithium.pytools/examples/video_editor.sh new file mode 100644 index 00000000..025b6296 --- /dev/null +++ b/modules/lithium.pytools/examples/video_editor.sh @@ -0,0 +1,43 @@ +# Example 1: Process audio from a video file +# This example processes the audio from the specified video file and saves it as an MP3 file. +$ python video_editor.py input_video.mp4 output_audio.mp3 + +# Example 2: Adjust audio speed and volume +# This example processes the audio from the specified video file, adjusts the speed and volume, and saves it as an MP3 file. +$ python video_editor.py input_video.mp4 output_audio.mp3 --speed 1.5 --volume 2.0 + +# Example 3: Trim audio and apply fade effects +# This example processes the audio from the specified video file, trims it to the specified start and end times, applies fade-in and fade-out effects, and saves it as an MP3 file. +$ python video_editor.py input_video.mp4 output_audio.mp3 --start 10 --end 60 --fade-in 5 --fade-out 5 + +# Example 4: Reverse and normalize audio +# This example processes the audio from the specified video file, reverses it, normalizes the volume, and saves it as an MP3 file. +$ python video_editor.py input_video.mp4 output_audio.mp3 --reverse --normalize + +# Example 5: Apply noise reduction +# This example processes the audio from the specified video file, applies basic noise reduction, and saves it as an MP3 file. +$ python video_editor.py input_video.mp4 output_audio.mp3 --noise-reduce + +# Example 6: Batch process all video files in a directory +# This example processes all video files in the specified input directory and saves the processed audio files in the specified output directory. +$ python video_editor.py input_directory output_directory --batch + +# Example 7: Mix multiple audio files +# This example mixes the specified audio files and saves the mixed audio as an MP3 file. +$ python video_editor.py --mix audio1.mp3 audio2.mp3 audio3.mp3 --output mixed_audio.mp3 + +# Example 8: Mix multiple audio files with specified volumes +# This example mixes the specified audio files with the specified volume levels and saves the mixed audio as an MP3 file. +$ python video_editor.py --mix audio1.mp3 audio2.mp3 audio3.mp3 --mix-volumes 1.0 0.8 1.2 --output mixed_audio.mp3 + +# Example 9: Split audio into segments +# This example splits the specified audio file into segments of the specified length and saves the segments with the specified prefix. +$ python video_editor.py input_audio.mp3 output_prefix --split 30 + +# Example 10: Convert audio format +# This example converts the specified audio file to a different format and saves it with the specified output file name. +$ python video_editor.py input_audio.wav output_audio.mp3 --convert + +# Example 11: Visualize audio as waveform and spectrogram +# This example visualizes the specified audio file as a waveform and spectrogram and saves the visualization as an image file. +$ python video_editor.py input_audio.wav output_visualization.png --visualize \ No newline at end of file diff --git a/modules/lithium.pytools/project.json b/modules/lithium.pytools/project.json new file mode 100644 index 00000000..a99d2a94 --- /dev/null +++ b/modules/lithium.pytools/project.json @@ -0,0 +1,23 @@ +{ + "name": "lithium_pytools", + "version": "0.1.0", + "description": "A collection of Python tools for the Lithium project", + "license": "GPL-3.0-or-later", + "author": "Max Qian", + "repository": { + "type": "git", + "url": "https://github.com/ElementAstro/Lithium/modules/lithium.pytools" + }, + "keywords": [ + "python", + "setuptools", + "json", + "tools", + "lithium" + ], + "dependencies": { + "requests": "^2.25.1", + "numpy": "^1.20.0", + "pandas": "^1.2.2" + } +} diff --git a/pysrc/image/transformation/__init__.py b/modules/lithium.pytools/requirements.txt similarity index 100% rename from pysrc/image/transformation/__init__.py rename to modules/lithium.pytools/requirements.txt diff --git a/modules/lithium.pytools/tests/output.py b/modules/lithium.pytools/tests/output.py new file mode 100644 index 00000000..db4113f2 --- /dev/null +++ b/modules/lithium.pytools/tests/output.py @@ -0,0 +1,129 @@ +import pytest +from unittest.mock import patch, mock_open +from pathlib import Path + +from output import ( + pretty_print_json, pretty_print_yaml, pretty_print_toml, + pretty_print_xml, pretty_print_csv, pretty_print_ini, + validate_file, display_file +) + + +@pytest.fixture +def json_data(): + return '{"key": "value"}' + + +@pytest.fixture +def yaml_data(): + return 'key: value' + + +@pytest.fixture +def toml_data(): + return 'key = "value"' + + +@pytest.fixture +def xml_data(): + return 'value' + + +@pytest.fixture +def csv_data(): + return 'key,value\nfoo,bar' + + +@pytest.fixture +def ini_data(): + return '[section]\nkey=value' + + +def test_pretty_print_json(json_data): + with patch('builtins.open', mock_open(read_data=json_data)): + pretty_print_json(json_data) + + +def test_pretty_print_yaml(yaml_data): + with patch('builtins.open', mock_open(read_data=yaml_data)): + pretty_print_yaml(yaml_data) + + +def test_pretty_print_toml(toml_data): + with patch('builtins.open', mock_open(read_data=toml_data)): + pretty_print_toml(toml_data) + + +def test_pretty_print_xml(xml_data): + with patch('builtins.open', mock_open(read_data=xml_data)): + pretty_print_xml(xml_data) + + +def test_pretty_print_csv(csv_data): + with patch('builtins.open', mock_open(read_data=csv_data)): + pretty_print_csv(csv_data) + + +def test_pretty_print_ini(ini_data): + with patch('builtins.open', mock_open(read_data=ini_data)): + pretty_print_ini(ini_data) + + +def test_validate_json(json_data): + with patch('pathlib.Path.read_text', return_value=json_data): + assert validate_file(Path('example.json'), 'json') + + +def test_validate_yaml(yaml_data): + with patch('pathlib.Path.read_text', return_value=yaml_data): + assert validate_file(Path('example.yaml'), 'yaml') + + +def test_validate_toml(toml_data): + with patch('pathlib.Path.read_text', return_value=toml_data): + assert validate_file(Path('example.toml'), 'toml') + + +def test_validate_xml(xml_data): + with patch('pathlib.Path.read_text', return_value=xml_data): + assert validate_file(Path('example.xml'), 'xml') + + +def test_validate_csv(csv_data): + with patch('pathlib.Path.read_text', return_value=csv_data): + assert validate_file(Path('example.csv'), 'csv') + + +def test_validate_ini(ini_data): + with patch('pathlib.Path.read_text', return_value=ini_data): + assert validate_file(Path('example.ini'), 'ini') + + +def test_display_file_json(json_data): + with patch('pathlib.Path.read_text', return_value=json_data): + display_file(Path('example.json'), 'json') + + +def test_display_file_yaml(yaml_data): + with patch('pathlib.Path.read_text', return_value=yaml_data): + display_file(Path('example.yaml'), 'yaml') + + +def test_display_file_toml(toml_data): + with patch('pathlib.Path.read_text', return_value=toml_data): + display_file(Path('example.toml'), 'toml') + + +def test_display_file_xml(xml_data): + with patch('pathlib.Path.read_text', return_value=xml_data): + display_file(Path('example.xml'), 'xml') + + +def test_display_file_csv(csv_data): + with patch('pathlib.Path.read_text', return_value=csv_data): + display_file(Path('example.csv'), 'csv') + + +def test_display_file_ini(ini_data): + with patch('pathlib.Path.read_text', return_value=ini_data): + display_file(Path('example.ini'), 'ini') diff --git a/modules/lithium.pytools/tests/test_7z.py b/modules/lithium.pytools/tests/test_7z.py new file mode 100644 index 00000000..0cde5906 --- /dev/null +++ b/modules/lithium.pytools/tests/test_7z.py @@ -0,0 +1,108 @@ +import pytest +from pathlib import Path +from unittest.mock import patch, MagicMock +from seven import SevenZipWrapper, SevenZipValidationError, SevenZipCompressionError, SevenZipExtractionError, SevenZipListError, SevenZipTestError, SevenZipError +import subprocess +@pytest.fixture +def seven_zip(): + return SevenZipWrapper(executable="7z") + +def test_init_valid_executable(seven_zip): + assert seven_zip.executable == "7z" + +def test_init_invalid_executable(): + with patch("shutil.which", return_value=None): + with pytest.raises(SevenZipValidationError): + SevenZipWrapper(executable="invalid_executable") + +def test_validate_files_exist(seven_zip): + with patch("pathlib.Path.exists", return_value=True): + seven_zip._validate_files_exist(["file1.txt", "file2.txt"]) + +def test_validate_files_exist_invalid(seven_zip): + with patch("pathlib.Path.exists", side_effect=[True, False]): + with pytest.raises(SevenZipValidationError): + seven_zip._validate_files_exist(["file1.txt", "file2.txt"]) + +def test_validate_archive_exists(seven_zip): + with patch("pathlib.Path.exists", return_value=True): + seven_zip._validate_archive_exists("archive.7z") + +def test_validate_archive_exists_invalid(seven_zip): + with patch("pathlib.Path.exists", return_value=False): + with pytest.raises(SevenZipValidationError): + seven_zip._validate_archive_exists("archive.7z") + +@patch("subprocess.run") +def test_compress(mock_run, seven_zip): + mock_run.return_value = MagicMock(returncode=0, stdout="Success", stderr="") + with patch("pathlib.Path.exists", return_value=True): + seven_zip.compress(["file1.txt"], "archive.7z") + mock_run.assert_called_once() + +@patch("subprocess.run", side_effect=subprocess.CalledProcessError(1, "cmd")) +def test_compress_failure(mock_run, seven_zip): + with patch("pathlib.Path.exists", return_value=True): + with pytest.raises(SevenZipCompressionError): + seven_zip.compress(["file1.txt"], "archive.7z") + + +@patch("subprocess.run") +def test_list_contents(mock_run, seven_zip): + mock_run.return_value = MagicMock(returncode=0, stdout="file1.txt\nfile2.txt", stderr="") + with patch("pathlib.Path.exists", return_value=True): + contents = seven_zip.list_contents("archive.7z") + assert contents == "file1.txt\nfile2.txt" + mock_run.assert_called_once() + +@patch("subprocess.run", side_effect=subprocess.CalledProcessError(1, "cmd")) +def test_list_contents_failure(mock_run, seven_zip): + with patch("pathlib.Path.exists", return_value=True): + with pytest.raises(SevenZipListError): + seven_zip.list_contents("archive.7z") + +@patch("subprocess.run") +def test_test_archive(mock_run, seven_zip): + mock_run.return_value = MagicMock(returncode=0, stdout="Everything is Ok", stderr="") + with patch("pathlib.Path.exists", return_value=True): + is_valid = seven_zip.test_archive("archive.7z") + assert is_valid + mock_run.assert_called_once() + +@patch("subprocess.run", side_effect=subprocess.CalledProcessError(1, "cmd")) +def test_test_archive_failure(mock_run, seven_zip): + with patch("pathlib.Path.exists", return_value=True): + with pytest.raises(SevenZipTestError): + seven_zip.test_archive("archive.7z") + +@patch("pathlib.Path.unlink") +def test_delete_archive(mock_unlink, seven_zip): + with patch("pathlib.Path.exists", return_value=True): + seven_zip.delete_archive("archive.7z") + mock_unlink.assert_called_once() + +@patch("pathlib.Path.unlink", side_effect=Exception("Error")) +def test_delete_archive_failure(mock_unlink, seven_zip): + with patch("pathlib.Path.exists", return_value=True): + with pytest.raises(SevenZipError): + seven_zip.delete_archive("archive.7z") + +@patch("subprocess.run") +def test_update_archive_add(mock_run, seven_zip): + mock_run.return_value = MagicMock(returncode=0, stdout="Success", stderr="") + with patch("pathlib.Path.exists", return_value=True): + seven_zip.update_archive("archive.7z", ["file1.txt"], add=True, delete=False) + mock_run.assert_called_once() + +@patch("subprocess.run") +def test_update_archive_delete(mock_run, seven_zip): + mock_run.return_value = MagicMock(returncode=0, stdout="Success", stderr="") + with patch("pathlib.Path.exists", return_value=True): + seven_zip.update_archive("archive.7z", ["file1.txt"], add=False, delete=True) + mock_run.assert_called_once() + +@patch("subprocess.run", side_effect=subprocess.CalledProcessError(1, "cmd")) +def test_update_archive_failure(mock_run, seven_zip): + with patch("pathlib.Path.exists", return_value=True): + with pytest.raises(SevenZipError): + seven_zip.update_archive("archive.7z", ["file1.txt"], add=True, delete=False) \ No newline at end of file diff --git a/modules/lithium.pytools/tests/test_atom_generator.py b/modules/lithium.pytools/tests/test_atom_generator.py new file mode 100644 index 00000000..7bcbf424 --- /dev/null +++ b/modules/lithium.pytools/tests/test_atom_generator.py @@ -0,0 +1,114 @@ +import pytest +from unittest.mock import patch, MagicMock +from pathlib import Path +from ..atom_generator import generate_atom_module +import tempfile + +# FILE: modules/lithium.pytools/tools/test_atom_generator.py + + +@pytest.fixture +def sample_header_file(): + # Create a temporary C++ header file + header_content = """ + namespace TestNamespace { + class TestClass { + public: + void testMethod(); + }; + void testFunction(); + } + """ + with tempfile.NamedTemporaryFile(delete=False, suffix=".h") as temp_file: + temp_file.write(header_content.encode('utf-8')) + temp_file_path = Path(temp_file.name) + yield temp_file_path + temp_file_path.unlink() # Clean up the file after the test + + +@pytest.fixture +def mock_parse_header_file(): + with patch('modules.lithium.pytools.tools.atom_generator.parse_header_file') as mock_parse: + mock_parse.return_value = ( + {'TestNamespace::TestClass': ['testMethod']}, + ['TestNamespace::testFunction'] + ) + yield mock_parse + + +@pytest.fixture +def mock_logger(): + with patch('modules.lithium.pytools.tools.atom_generator.logger') as mock_log: + yield mock_log + + +def test_generate_atom_module_single_file(sample_header_file, mock_parse_header_file, mock_logger): + generate_atom_module([sample_header_file], log_level="DEBUG") + mock_logger.info.assert_any_call("Generating ATOM_MODULE...\n") + mock_logger.info.assert_any_call( + "Registered method: TestNamespace::TestClass::testMethod") + mock_logger.info.assert_any_call( + "Registered global function: TestNamespace::testFunction") + mock_logger.info.assert_any_call("ATOM_MODULE generation completed.\n") + + +def test_generate_atom_module_multiple_files(sample_header_file, mock_parse_header_file, mock_logger): + generate_atom_module( + [sample_header_file, sample_header_file], log_level="DEBUG") + mock_logger.info.assert_any_call("Generating ATOM_MODULE...\n") + # Ensure multiple calls for multiple files + assert mock_logger.info.call_count >= 6 + + +def test_generate_atom_module_with_whitelist(sample_header_file, mock_parse_header_file, mock_logger): + generate_atom_module([sample_header_file], whitelist=[ + 'testMethod'], log_level="DEBUG") + mock_logger.info.assert_any_call("Generating ATOM_MODULE...\n") + mock_logger.info.assert_any_call( + "Registered method: TestNamespace::TestClass::testMethod") + mock_logger.info.assert_any_call("ATOM_MODULE generation completed.\n") + + +def test_generate_atom_module_with_blacklist(sample_header_file, mock_parse_header_file, mock_logger): + generate_atom_module([sample_header_file], blacklist=[ + 'testMethod'], log_level="DEBUG") + mock_logger.info.assert_any_call("Generating ATOM_MODULE...\n") + mock_logger.info.assert_any_call("ATOM_MODULE generation completed.\n") + assert not any( + call for call in mock_logger.info.call_args_list if "Registered method" in call[0][0]) + + +def test_generate_atom_module_output_to_file(sample_header_file, mock_parse_header_file, mock_logger): + with tempfile.NamedTemporaryFile(delete=False, suffix=".cpp") as temp_file: + output_path = Path(temp_file.name) + generate_atom_module([sample_header_file], + output_file=output_path, log_level="DEBUG") + with open(output_path, 'r') as f: + generated_code = f.read() + assert 'ATOM_MODULE(all_components, [](Component &component) {' in generated_code + output_path.unlink() # Clean up the file after the test + + +def test_generate_atom_module_output_to_console(sample_header_file, mock_parse_header_file, mock_logger): + with patch('builtins.print') as mock_print: + generate_atom_module([sample_header_file], log_level="DEBUG") + mock_print.assert_any_call( + 'ATOM_MODULE(all_components, [](Component &component) {', end="") + + +def test_generate_atom_module_invalid_header_file(mock_parse_header_file, mock_logger): + with pytest.raises(Exception): + generate_atom_module( + [Path('/invalid/path/to/header.h')], log_level="DEBUG") + mock_logger.error.assert_called() + + +def test_generate_atom_module_missing_methods_or_functions(sample_header_file, mock_logger): + with patch('modules.lithium.pytools.tools.atom_generator.parse_header_file', return_value=({}, [])): + generate_atom_module([sample_header_file], log_level="DEBUG") + mock_logger.info.assert_any_call("Generating ATOM_MODULE...\n") + mock_logger.info.assert_any_call("ATOM_MODULE generation completed.\n") + assert not any( + call for call in mock_logger.info.call_args_list if "Registered method" in call[0][0]) + assert not any( + call for call in mock_logger.info.call_args_list if "Registered global function" in call[0][0]) diff --git a/modules/lithium.pytools/tests/test_cmake_generator.py b/modules/lithium.pytools/tests/test_cmake_generator.py index 8075ca0c..8dc7d193 100644 --- a/modules/lithium.pytools/tests/test_cmake_generator.py +++ b/modules/lithium.pytools/tests/test_cmake_generator.py @@ -1,6 +1,7 @@ import pytest from tools.cmake_generator import generate_cmake, ProjectConfig + def test_generate_basic_cmake(): config = ProjectConfig(project_name="TestProject") cmake_content = generate_cmake(config) @@ -8,45 +9,129 @@ def test_generate_basic_cmake(): assert "set(CMAKE_CXX_STANDARD 11)" in cmake_content assert "add_executable(TestProject ${SOURCES})" in cmake_content + def test_include_directories(): - config = ProjectConfig(project_name="TestProject", include_dirs=["include", "src"]) + config = ProjectConfig(project_name="TestProject", + include_dirs=["include", "src"]) cmake_content = generate_cmake(config) assert 'include_directories("include")' in cmake_content assert 'include_directories("src")' in cmake_content + def test_compiler_flags(): - config = ProjectConfig(project_name="TestProject", compiler_flags=["-O3", "-Wall"]) + config = ProjectConfig(project_name="TestProject", + compiler_flags=["-O3", "-Wall"]) cmake_content = generate_cmake(config) assert "add_compile_options(-O3 -Wall)" in cmake_content + def test_linker_flags(): - config = ProjectConfig(project_name="TestProject", linker_flags=["-lpthread"]) + config = ProjectConfig(project_name="TestProject", + linker_flags=["-lpthread"]) cmake_content = generate_cmake(config) assert "add_link_options(-lpthread)" in cmake_content + def test_dependencies(): - config = ProjectConfig(project_name="TestProject", dependencies=["Boost", "OpenCV"]) + config = ProjectConfig(project_name="TestProject", + dependencies=["Boost", "OpenCV"]) cmake_content = generate_cmake(config) assert "find_package(Boost REQUIRED)" in cmake_content assert "find_package(OpenCV REQUIRED)" in cmake_content + def test_static_library(): - config = ProjectConfig(project_name="TestProject", executable=False, static_library=True) + config = ProjectConfig(project_name="TestProject", + executable=False, static_library=True) cmake_content = generate_cmake(config) assert "add_library(TestProject STATIC ${SOURCES})" in cmake_content + def test_shared_library(): - config = ProjectConfig(project_name="TestProject", executable=False, shared_library=True) + config = ProjectConfig(project_name="TestProject", + executable=False, shared_library=True) cmake_content = generate_cmake(config) assert "add_library(TestProject SHARED ${SOURCES})" in cmake_content + def test_enable_testing(): config = ProjectConfig(project_name="TestProject", enable_testing=True) cmake_content = generate_cmake(config) assert "enable_testing()" in cmake_content assert "add_subdirectory(tests)" in cmake_content + def test_custom_install_path(): - config = ProjectConfig(project_name="TestProject", install_path="custom_bin") + config = ProjectConfig(project_name="TestProject", + install_path="custom_bin") cmake_content = generate_cmake(config) assert "install(TARGETS TestProject DESTINATION custom_bin)" in cmake_content + + +def test_subdirectories(): + config = ProjectConfig( + project_name="TestProject", + subdirs=["module1", "module2"] + ) + cmake_content = generate_cmake(config) + assert 'add_subdirectory(module1)' in cmake_content + assert 'add_subdirectory(module2)' in cmake_content + + +def test_different_cpp_standard(): + config = ProjectConfig( + project_name="TestProject", + cpp_standard="17" + ) + cmake_content = generate_cmake(config) + assert "set(CMAKE_CXX_STANDARD 17)" in cmake_content + assert "set(CMAKE_CXX_STANDARD_REQUIRED True)" in cmake_content + + +def test_no_dependencies(): + config = ProjectConfig( + project_name="TestProject", + dependencies=[] + ) + cmake_content = generate_cmake(config) + assert "find_package" not in cmake_content + assert "target_link_libraries" not in cmake_content + + +def test_custom_sources(): + config = ProjectConfig( + project_name="TestProject", + sources="src/**/*.cpp" + ) + cmake_content = generate_cmake(config) + assert 'file(GLOB_RECURSE SOURCES "src/**/*.cpp")' in cmake_content + + +def test_multiple_compiler_and_linker_flags(): + config = ProjectConfig( + project_name="TestProject", + compiler_flags=["-O2", "-g"], + linker_flags=["-lpthread", "-lm"] + ) + cmake_content = generate_cmake(config) + assert "add_compile_options(-O2 -g)" in cmake_content + assert "add_link_options(-lpthread -lm)" in cmake_content + + +def test_install_path(): + config = ProjectConfig( + project_name="TestProject", + install_path="custom/install/path" + ) + cmake_content = generate_cmake(config) + assert 'install(TARGETS TestProject DESTINATION custom/install/path)' in cmake_content + + +def test_enable_testing_with_subdirectory(): + config = ProjectConfig( + project_name="TestProject", + enable_testing=True + ) + cmake_content = generate_cmake(config) + assert "enable_testing()" in cmake_content + assert "add_subdirectory(tests)" in cmake_content diff --git a/modules/lithium.pytools/tests/test_crontab.py b/modules/lithium.pytools/tests/test_crontab.py new file mode 100644 index 00000000..c3ec88fd --- /dev/null +++ b/modules/lithium.pytools/tests/test_crontab.py @@ -0,0 +1,107 @@ +import pytest +import os +from crontab import CrontabManager + +# FILE: test/11.25/test_crontab.py + + +@pytest.fixture +def crontab_manager(): + manager = CrontabManager(crontab_path="/tmp/test_crontab") + yield manager + if os.path.exists(manager.crontab_path): + os.remove(manager.crontab_path) + +def test_list_jobs_empty(crontab_manager): + jobs = crontab_manager.list_jobs() + assert jobs == [] + +def test_add_job(crontab_manager): + crontab_manager.add_job("* * * * *", "echo 'Hello World'") + jobs = crontab_manager.list_jobs() + assert len(jobs) == 1 + assert jobs[0].strip() == "* * * * * echo 'Hello World'" + crontab_manager.clear_jobs() + +def test_remove_job(crontab_manager): + crontab_manager.add_job("* * * * *", "echo 'Hello World'") + crontab_manager.remove_job("echo 'Hello World'") + jobs = crontab_manager.list_jobs() + assert jobs == [] + crontab_manager.clear_jobs() + +def test_update_job(crontab_manager): + crontab_manager.add_job("* * * * *", "echo 'Hello World'") + crontab_manager.update_job("echo 'Hello World'", "0 0 * * *", "echo 'Updated'") + jobs = crontab_manager.list_jobs() + assert len(jobs) == 1 + assert jobs[0].strip() == "0 0 * * * echo 'Updated'" + crontab_manager.clear_jobs() + +def test_clear_jobs(crontab_manager): + crontab_manager.add_job("* * * * *", "echo 'Hello World'") + crontab_manager.clear_jobs() + jobs = crontab_manager.list_jobs() + assert jobs == [] + crontab_manager.clear_jobs() + +def test_job_exists(crontab_manager): + crontab_manager.add_job("* * * * *", "echo 'Hello World'") + assert crontab_manager.job_exists("echo 'Hello World'") + assert not crontab_manager.job_exists("echo 'Nonexistent'") + crontab_manager.clear_jobs() + +def test_disable_job(crontab_manager): + crontab_manager.add_job("* * * * *", "echo 'Hello World'") + crontab_manager.disable_job("echo 'Hello World'") + jobs = crontab_manager.list_jobs() + assert len(jobs) == 1 + assert jobs[0].strip() == "#* * * * * echo 'Hello World'" + crontab_manager.clear_jobs() + +def test_enable_job(crontab_manager): + crontab_manager.add_job("* * * * *", "echo 'Hello World'") + crontab_manager.disable_job("echo 'Hello World'") + crontab_manager.enable_job("echo 'Hello World'") + jobs = crontab_manager.list_jobs() + assert len(jobs) == 1 + assert jobs[0].strip() == "* * * * * echo 'Hello World'" + crontab_manager.clear_jobs() + +def test_search_jobs(crontab_manager): + crontab_manager.add_job("* * * * *", "echo 'Hello World'") + crontab_manager.add_job("0 0 * * *", "echo 'Goodbye World'") + results = crontab_manager.search_jobs("Hello") + assert len(results) == 1 + assert results[0].strip() == "* * * * * echo 'Hello World'" + crontab_manager.clear_jobs() + +def test_export_jobs(crontab_manager, tmp_path): + crontab_manager.add_job("* * * * *", "echo 'Hello World'") + export_path = tmp_path / "exported_crontab" + crontab_manager.export_jobs(str(export_path)) + assert os.path.exists(export_path) + with open(export_path, "r") as file: + jobs = file.readlines() + assert len(jobs) == 1 + assert jobs[0].strip() == "* * * * * echo 'Hello World'" + crontab_manager.clear_jobs() + +def test_import_jobs(crontab_manager, tmp_path): + import_path = tmp_path / "imported_crontab" + with open(import_path, "w") as file: + file.write("* * * * * echo 'Hello World'\n") + crontab_manager.import_jobs(str(import_path)) + jobs = crontab_manager.list_jobs() + assert len(jobs) == 1 + assert jobs[0].strip() == "* * * * * echo 'Hello World'" + crontab_manager.clear_jobs() + +def test_view_logs(crontab_manager, tmp_path): + log_path = tmp_path / "test_syslog" + with open(log_path, "w") as file: + file.write("Oct 1 00:00:00 myhost CRON[12345]: (root) CMD (echo 'Hello World')\n") + logs = crontab_manager.view_logs(str(log_path)) + assert "CRON[12345]" in logs + assert "echo 'Hello World'" in logs + crontab_manager.clear_jobs() \ No newline at end of file diff --git a/modules/lithium.pytools/tests/test_daemon.py b/modules/lithium.pytools/tests/test_daemon.py new file mode 100644 index 00000000..65ba6b65 --- /dev/null +++ b/modules/lithium.pytools/tests/test_daemon.py @@ -0,0 +1,286 @@ +import signal +import pytest +from unittest.mock import patch, MagicMock, mock_open +import os +import sys +import subprocess +import psutil +from daemon import DaemonProcess, write_pid, read_pid, is_daemon_running, stop_daemon, start_daemon, status_daemon, DEFAULT_CONFIG + +@pytest.fixture +def config(): + return { + "process_name": "python", + "script_path": "target_script.py", + "restart_interval": 5, + "cpu_threshold": 80, + "memory_threshold": 500, + "max_restarts": 3, + "monitor_interval": 5 + } + +@pytest.fixture +def daemon_process(config): + return DaemonProcess(config) + +def test_init_valid_config(daemon_process): + assert daemon_process.config["process_name"] == "python" + assert daemon_process.config["script_path"] == "target_script.py" + +def test_init_invalid_script_path(config): + config["script_path"] = "invalid_script.py" + with pytest.raises(FileNotFoundError): + DaemonProcess(config) + +@patch("subprocess.Popen") +def test_start_target_process(mock_popen, daemon_process): + mock_popen.return_value.pid = 1234 + daemon_process.start_target_process() + mock_popen.assert_called_once_with( + [sys.executable, "target_script.py"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE + ) + assert daemon_process.process.pid == 1234 + +@patch("subprocess.Popen") +def test_is_process_running(mock_popen, daemon_process): + mock_popen.return_value.poll.return_value = None + daemon_process.start_target_process() + assert daemon_process.is_process_running() is True + + mock_popen.return_value.poll.return_value = 1 + assert daemon_process.is_process_running() is False + +@patch("psutil.Process") +@patch("subprocess.Popen") +def test_monitor_process_health(mock_popen, mock_psutil, daemon_process): + mock_popen.return_value.pid = 1234 + mock_psutil.return_value.cpu_percent.return_value = 50 + mock_psutil.return_value.memory_info.return_value.rss = 400 * 1024 * 1024 + daemon_process.start_target_process() + daemon_process.monitor_process_health() + mock_psutil.assert_called_once_with(1234) + +@patch("psutil.Process") +@patch("subprocess.Popen") +def test_monitor_process_health_exceed_thresholds(mock_popen, mock_psutil, daemon_process): + mock_popen.return_value.pid = 1234 + mock_psutil.return_value.cpu_percent.return_value = 90 + mock_psutil.return_value.memory_info.return_value.rss = 600 * 1024 * 1024 + daemon_process.start_target_process() + with patch.object(daemon_process, 'restart_process') as mock_restart: + daemon_process.monitor_process_health() + mock_restart.assert_called() + +@patch("subprocess.Popen") +def test_restart_process(mock_popen, daemon_process): + mock_popen.return_value.poll.return_value = None + daemon_process.start_target_process() + daemon_process.restart_process() + assert daemon_process.restart_count == 1 + +@patch("subprocess.Popen") +def test_monitor_loop(mock_popen, daemon_process): + mock_popen.return_value.poll.return_value = None + with patch.object(daemon_process, 'is_process_running', return_value=True): + with patch.object(daemon_process, 'monitor_process_health'): + with patch("time.sleep", return_value=None): + with patch.object(daemon_process, 'cleanup'): + daemon_process.monitor_loop() + daemon_process.monitor_process_health.assert_called() + +@patch("subprocess.Popen") +def test_cleanup(mock_popen, daemon_process): + mock_popen.return_value.poll.return_value = None + daemon_process.start_target_process() + daemon_process.cleanup() + mock_popen.return_value.terminate.assert_called_once() + +@patch("builtins.open", new_callable=mock_open) +def test_write_pid(mock_open): + with patch("os.getpid", return_value=1234): + write_pid() + mock_open.assert_called_once_with("/tmp/daemon.pid", 'w', encoding='utf-8') + mock_open().write.assert_called_once_with("1234") + +@patch("builtins.open", new_callable=mock_open, read_data="1234") +def test_read_pid(mock_open): + pid = read_pid() + assert pid == 1234 + +@patch("psutil.pid_exists", return_value=True) +@patch("psutil.Process") +@patch("builtins.open", new_callable=mock_open, read_data="1234") +def test_is_daemon_running(mock_open, mock_psutil, mock_pid_exists, config): + mock_psutil.return_value.name.return_value = "python" + assert is_daemon_running(config) is True + +@patch("psutil.Process") +@patch("builtins.open", new_callable=mock_open, read_data="1234") +def test_stop_daemon(mock_open, mock_psutil): + mock_psutil.return_value.send_signal = MagicMock() + mock_psutil.return_value.wait = MagicMock() + stop_daemon() + mock_psutil.return_value.send_signal.assert_called_once_with(signal.SIGTERM) + +@patch("os.fork", side_effect=[0, 0]) +@patch("os.setsid") +@patch("builtins.open", new_callable=mock_open) +@patch("daemon.DaemonProcess") +def test_start_daemon(mock_daemon_process, mock_open, mock_setsid, mock_fork, config): + start_daemon(config) + mock_daemon_process.assert_called_once_with(config) + +@patch("psutil.pid_exists", return_value=True) +@patch("psutil.Process") +@patch("builtins.open", new_callable=mock_open, read_data="1234") +def test_status_daemon(mock_open, mock_psutil, mock_pid_exists): + mock_psutil.return_value.name.return_value = "python" + with patch("builtins.print") as mock_print: + status_daemon() + mock_print.assert_called_with("Daemon is running, PID: 1234") + @patch("daemon.DaemonProcess.start_target_process") + def test_monitor_loop_process_not_running(mock_start, daemon_process): + with patch.object(daemon_process, 'is_process_running', return_value=False): + with patch.object(daemon_process, 'restart_process') as mock_restart: + with patch("time.sleep", return_value=None): + with pytest.raises(SystemExit): + daemon_process.monitor_loop() + mock_restart.assert_called_once() + mock_start.assert_called_once() + + @patch("daemon.DaemonProcess.monitor_process_health") + def test_monitor_loop_process_running(mock_monitor_health, daemon_process): + with patch.object(daemon_process, 'is_process_running', return_value=True): + with patch("time.sleep", return_value=None): + with patch.object(daemon_process, 'cleanup'): + # To prevent an infinite loop, run the loop only once + with patch("builtins.iter", return_value=range(1)): + daemon_process.monitor_loop() + mock_monitor_health.assert_called_once() + + @patch("psutil.Process") + @patch("daemon.DaemonProcess.start_target_process") + def test_monitor_process_health_cpu_exceeds(mock_start, mock_psutil, daemon_process): + mock_proc = MagicMock() + mock_psutil.return_value = mock_proc + mock_proc.cpu_percent.return_value = 90 + mock_proc.memory_info.return_value.rss = 400 * 1024 * 1024 + daemon_process.start_target_process() + daemon_process.monitor_process_health() + mock_popen = daemon_process.process + mock_proc.cpu_percent.assert_called_once_with(interval=1) + daemon_process.restart_process.assert_called_once() + + @patch("psutil.Process") + @patch("daemon.DaemonProcess.start_target_process") + def test_monitor_process_health_memory_exceeds(mock_start, mock_psutil, daemon_process): + mock_proc = MagicMock() + mock_psutil.return_value = mock_proc + mock_proc.cpu_percent.return_value = 50 + mock_proc.memory_info.return_value.rss = 600 * 1024 * 1024 + daemon_process.start_target_process() + daemon_process.monitor_process_health() + mock_popen = daemon_process.process + mock_proc.cpu_percent.assert_called_once_with(interval=1) + daemon_process.restart_process.assert_called_once() + + @patch("psutil.Process", side_effect=psutil.NoSuchProcess(pid=1234)) + def test_monitor_process_health_no_such_process(mock_psutil, daemon_process): + daemon_process.start_target_process() + with patch.object(daemon_process, 'restart_process') as mock_restart: + daemon_process.monitor_process_health() + mock_restart.assert_called_once() + + @patch("psutil.Process", side_effect=psutil.AccessDenied(pid=1234)) + def test_monitor_process_health_access_denied(mock_psutil, daemon_process, caplog): + daemon_process.start_target_process() + daemon_process.monitor_process_health() + assert "Access denied when accessing process information." in caplog.text + + def test_is_process_running_none(daemon_process): + daemon_process.process = None + assert not daemon_process.is_process_running() + + @patch("psutil.Process") + def test_is_process_running_true(mock_psutil, daemon_process): + mock_proc = MagicMock() + mock_proc.poll.return_value = None + daemon_process.process = mock_proc + assert daemon_process.is_process_running() is True + mock_proc.poll.assert_called_once() + + @patch("psutil.Process") + def test_is_process_running_false(mock_psutil, daemon_process): + mock_proc = MagicMock() + mock_proc.poll.return_value = 1 + daemon_process.process = mock_proc + assert daemon_process.is_process_running() is False + mock_proc.poll.assert_called_once() + + @patch("subprocess.Popen") + def test_restart_process_below_max_restarts(mock_popen, daemon_process): + daemon_process.restart_count = 2 + mock_popen.return_value.pid = 5678 + daemon_process.process = mock_popen.return_value + daemon_process.restart_process() + assert daemon_process.restart_count == 3 + mock_popen.assert_called_with( + [sys.executable, "target_script.py"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE + ) + + @patch("subprocess.Popen") + def test_restart_process_max_restarts_reached(mock_popen, daemon_process): + daemon_process.restart_count = 3 + with patch("daemon.DaemonProcess.cleanup") as mock_cleanup: + with patch("sys.exit") as mock_exit: + daemon_process.restart_process() + mock_cleanup.assert_called_once() + mock_exit.assert_called_once_with("Daemon terminated: exceeded maximum restart count.") + + @patch("subprocess.Popen") + def test_cleanup_terminate_running_process(mock_popen, daemon_process): + mock_popen.return_value.poll.return_value = None + daemon_process.process = mock_popen.return_value + with patch.object(daemon_process, 'is_process_running', return_value=True): + daemon_process.cleanup() + mock_popen.return_value.terminate.assert_called_once() + mock_popen.return_value.wait.assert_called_once_with(timeout=5) + mock_popen.return_value.terminate.assert_called_once() + + @patch("subprocess.Popen") + def test_cleanup_force_kill_process_on_timeout(mock_popen, daemon_process): + mock_popen.return_value.poll.return_value = None + daemon_process.process = mock_popen.return_value + mock_popen.return_value.wait.side_effect = subprocess.TimeoutExpired(cmd='cmd', timeout=5) + with patch.object(daemon_process, 'is_process_running', return_value=True): + with patch("time.sleep", return_value=None): + daemon_process.cleanup() + mock_popen.return_value.terminate.assert_called_once() + mock_popen.return_value.kill.assert_called_once() + mock_popen.return_value.wait.assert_called() + + @patch("os.remove") + @patch("os.path.exists", return_value=True) + def test_cleanup_remove_pid_file(mock_exists, mock_remove, daemon_process): + daemon_process.cleanup() + mock_remove.assert_called_once_with("/tmp/daemon.pid") + + @patch("subprocess.Popen") + def test_start_target_process_exception(mock_popen, daemon_process, caplog): + mock_popen.side_effect = Exception("Start failed") + with pytest.raises(Exception): + daemon_process.start_target_process() + assert "Failed to start target process: Start failed" in caplog.text + + @patch("subprocess.Popen", side_effect=subprocess.TimeoutExpired(cmd='cmd', timeout=5)) + def test_restart_process_force_kill_on_timeout(mock_popen, daemon_process, caplog): + daemon_process.restart_count = 1 + daemon_process.process = mock_popen.return_value + with patch.object(daemon_process, 'is_process_running', return_value=True): + with pytest.raises(subprocess.TimeoutExpired): + daemon_process.restart_process() + assert "Process PID: None force killed." in caplog.text \ No newline at end of file diff --git a/modules/lithium.pytools/tests/test_ffmpeg.py b/modules/lithium.pytools/tests/test_ffmpeg.py new file mode 100644 index 00000000..1333fa21 --- /dev/null +++ b/modules/lithium.pytools/tests/test_ffmpeg.py @@ -0,0 +1,126 @@ +import pytest +from unittest.mock import patch, MagicMock +from ffmpeg import FFmpegWrapper +import ffmpeg +import asyncio + +# test_ffmpeg.py + + +@pytest.fixture +def ffmpeg_wrapper(): + return FFmpegWrapper() + +@pytest.mark.asyncio +@patch("ffmpeg.run") +async def test_run_ffmpeg_success(mock_run, ffmpeg_wrapper): + mock_run.return_value = None + command = ffmpeg.input("input.mp4").output("output.mp4") + await ffmpeg_wrapper._run_ffmpeg(command) + mock_run.assert_called_once() + +@pytest.mark.asyncio +@patch("ffmpeg.run", side_effect=ffmpeg.Error("error", b"stderr")) +async def test_run_ffmpeg_failure(mock_run, ffmpeg_wrapper): + command = ffmpeg.input("input.mp4").output("output.mp4") + with pytest.raises(ffmpeg.Error): + await ffmpeg_wrapper._run_ffmpeg(command) + +@pytest.mark.asyncio +@patch("ffmpeg.run") +async def test_convert_format(mock_run, ffmpeg_wrapper): + mock_run.return_value = None + await ffmpeg_wrapper.convert_format("input.mp4", "output.mp4") + mock_run.assert_called_once() + +@pytest.mark.asyncio +@patch("ffmpeg.run") +async def test_extract_audio(mock_run, ffmpeg_wrapper): + mock_run.return_value = None + await ffmpeg_wrapper.extract_audio("input.mp4", "output.mp3") + mock_run.assert_called_once() + +@pytest.mark.asyncio +@patch("ffmpeg.run") +async def test_trim_video(mock_run, ffmpeg_wrapper): + mock_run.return_value = None + await ffmpeg_wrapper.trim_video("input.mp4", "output.mp4", 10, 20) + mock_run.assert_called_once() + +@pytest.mark.asyncio +@patch("ffmpeg.run") +async def test_resize_video(mock_run, ffmpeg_wrapper): + mock_run.return_value = None + await ffmpeg_wrapper.resize_video("input.mp4", "output.mp4", 1920, 1080) + mock_run.assert_called_once() + +@pytest.mark.asyncio +@patch("ffmpeg.run") +async def test_extract_frames(mock_run, ffmpeg_wrapper): + mock_run.return_value = None + await ffmpeg_wrapper.extract_frames("input.mp4", "frame_%04d.png", 1) + mock_run.assert_called_once() + +@pytest.mark.asyncio +@patch("ffmpeg.run") +async def test_merge_videos(mock_run, ffmpeg_wrapper): + mock_run.return_value = None + await ffmpeg_wrapper.merge_videos(["input1.mp4", "input2.mp4"], "output.mp4") + mock_run.assert_called_once() + +@pytest.mark.asyncio +@patch("ffmpeg.run") +async def test_merge_audios(mock_run, ffmpeg_wrapper): + mock_run.return_value = None + await ffmpeg_wrapper.merge_audios(["input1.mp3", "input2.mp3"], "output.mp3") + mock_run.assert_called_once() + +@pytest.mark.asyncio +@patch("ffmpeg.run") +async def test_add_watermark(mock_run, ffmpeg_wrapper): + mock_run.return_value = None + await ffmpeg_wrapper.add_watermark("input.mp4", "output.mp4", "watermark.png", "topright") + mock_run.assert_called_once() + +@pytest.mark.asyncio +@patch("ffmpeg.run") +async def test_add_subtitles(mock_run, ffmpeg_wrapper): + mock_run.return_value = None + await ffmpeg_wrapper.add_subtitles("input.mp4", "output.mp4", "subtitles.srt") + mock_run.assert_called_once() + +@pytest.mark.asyncio +@patch("ffmpeg.run") +async def test_change_speed(mock_run, ffmpeg_wrapper): + mock_run.return_value = None + await ffmpeg_wrapper.change_speed("input.mp4", "output.mp4", 2.0) + mock_run.assert_called_once() + +@pytest.mark.asyncio +@patch("ffmpeg.probe") +async def test_extract_video_info(mock_probe, ffmpeg_wrapper): + mock_probe.return_value = {"streams": []} + info = await ffmpeg_wrapper.extract_video_info("input.mp4") + assert info == {"streams": []} + mock_probe.assert_called_once() + +@pytest.mark.asyncio +@patch("ffmpeg.run") +async def test_add_background_music(mock_run, ffmpeg_wrapper): + mock_run.return_value = None + await ffmpeg_wrapper.add_background_music("input.mp4", "audio.mp3", "output.mp4", 0.5) + mock_run.assert_called_once() + +@pytest.mark.asyncio +@patch("ffmpeg.run") +async def test_overlay_image(mock_run, ffmpeg_wrapper): + mock_run.return_value = None + await ffmpeg_wrapper.overlay_image("input.mp4", "overlay.png", "output.mp4", 10, 10) + mock_run.assert_called_once() + +@pytest.mark.asyncio +@patch("ffmpeg.run") +async def test_adjust_brightness_contrast(mock_run, ffmpeg_wrapper): + mock_run.return_value = None + await ffmpeg_wrapper.adjust_brightness_contrast("input.mp4", "output.mp4", 0.1, 1.2) + mock_run.assert_called_once() \ No newline at end of file diff --git a/modules/lithium.pytools/tests/test_ftp.py b/modules/lithium.pytools/tests/test_ftp.py new file mode 100644 index 00000000..728d8dd9 --- /dev/null +++ b/modules/lithium.pytools/tests/test_ftp.py @@ -0,0 +1,125 @@ +import pytest +from ftplib import FTP, error_perm, all_errors +from unittest.mock import patch, MagicMock +from ftp import FTPClient + +@pytest.fixture +def ftp_client(): + return FTPClient(host='test_host', username='test_user', password='test_pass') + +def test_connect_success(ftp_client): + with patch.object(FTP, 'connect', return_value=None), \ + patch.object(FTP, 'login', return_value=None): + assert ftp_client.connect() is True + assert ftp_client._is_connected is True + +def test_connect_failure(ftp_client): + with patch.object(FTP, 'connect', side_effect=all_errors): + assert ftp_client.connect() is False + assert ftp_client._is_connected is False + +def test_disconnect_success(ftp_client): + ftp_client.ftp = MagicMock() + ftp_client._is_connected = True + ftp_client.disconnect() + ftp_client.ftp.quit.assert_called_once() + assert ftp_client._is_connected is False + +def test_disconnect_failure(ftp_client): + ftp_client.ftp = MagicMock() + ftp_client._is_connected = True + ftp_client.ftp.quit.side_effect = all_errors + ftp_client.disconnect() + ftp_client.ftp.quit.assert_called_once() + assert ftp_client._is_connected is False + +def test_list_files_success(ftp_client): + ftp_client.ftp = MagicMock() + ftp_client.ftp.dir = MagicMock(side_effect=lambda path, callback: callback('drwxr-xr-x 1 owner group 0 Jan 1 00:00 test_dir')) + files = ftp_client.list_files() + assert len(files) == 1 + assert files[0]['name'] == 'test_dir' + assert files[0]['type'] == 'dir' + +def test_list_files_failure(ftp_client): + ftp_client.ftp = MagicMock() + ftp_client.ftp.dir.side_effect = error_perm + files = ftp_client.list_files() + assert files == [] + +def test_download_file_success(ftp_client): + ftp_client.ftp = MagicMock() + ftp_client.ftp.size.return_value = 100 + with patch('builtins.open', new_callable=MagicMock), \ + patch('os.path.getsize', return_value=0), \ + patch('tqdm.tqdm', return_value=MagicMock()): + assert ftp_client.download_file('remote_file') is True + +def test_download_file_failure(ftp_client): + ftp_client.ftp = MagicMock() + ftp_client.ftp.size.side_effect = all_errors + with patch('builtins.open', new_callable=MagicMock): + assert ftp_client.download_file('remote_file') is False + +def test_upload_file_success(ftp_client): + ftp_client.ftp = MagicMock() + with patch('builtins.open', new_callable=MagicMock), \ + patch('os.path.getsize', return_value=100), \ + patch('tqdm.tqdm', return_value=MagicMock()): + assert ftp_client.upload_file('local_file') is True + +def test_upload_file_failure(ftp_client): + ftp_client.ftp = MagicMock() + ftp_client.ftp.storbinary.side_effect = all_errors + with patch('builtins.open', new_callable=MagicMock): + assert ftp_client.upload_file('local_file') is False + +def test_delete_file_success(ftp_client): + ftp_client.ftp = MagicMock() + assert ftp_client.delete_file('test_file') is True + ftp_client.ftp.delete.assert_called_once_with('test_file') + +def test_delete_file_failure(ftp_client): + ftp_client.ftp = MagicMock() + ftp_client.ftp.delete.side_effect = all_errors + assert ftp_client.delete_file('test_file') is False + +def test_change_directory_success(ftp_client): + ftp_client.ftp = MagicMock() + assert ftp_client.change_directory('test_dir') is True + ftp_client.ftp.cwd.assert_called_once_with('test_dir') + +def test_change_directory_failure(ftp_client): + ftp_client.ftp = MagicMock() + ftp_client.ftp.cwd.side_effect = all_errors + assert ftp_client.change_directory('test_dir') is False + +def test_make_directory_success(ftp_client): + ftp_client.ftp = MagicMock() + assert ftp_client.make_directory('test_dir') is True + ftp_client.ftp.mkd.assert_called_once_with('test_dir') + +def test_make_directory_failure(ftp_client): + ftp_client.ftp = MagicMock() + ftp_client.ftp.mkd.side_effect = all_errors + assert ftp_client.make_directory('test_dir') is False + +def test_get_current_directory_success(ftp_client): + ftp_client.ftp = MagicMock() + ftp_client.ftp.pwd.return_value = '/test_dir' + assert ftp_client.get_current_directory() == '/test_dir' + +def test_get_current_directory_failure(ftp_client): + ftp_client.ftp = MagicMock() + ftp_client.ftp.pwd.side_effect = all_errors + assert ftp_client.get_current_directory() == '' + +def test_rename_file_success(ftp_client): + ftp_client.ftp = MagicMock() + assert ftp_client.rename_file('old_name', 'new_name') is True + ftp_client.ftp.rename.assert_called_once_with('old_name', 'new_name') + +def test_rename_file_failure(ftp_client): + ftp_client.ftp = MagicMock() + ftp_client.ftp.rename.side_effect = all_errors + assert ftp_client.rename_file('old_name', 'new_name') is False \ No newline at end of file diff --git a/modules/lithium.pytools/tests/test_fuzz.py b/modules/lithium.pytools/tests/test_fuzz.py new file mode 100644 index 00000000..25d1d9e0 --- /dev/null +++ b/modules/lithium.pytools/tests/test_fuzz.py @@ -0,0 +1,91 @@ +import pytest +from fuzz import generate_data, FieldInfo + +def test_generate_data_simple_schema(): + schema = { + "name": FieldInfo(type="string", length=10), + "age": FieldInfo(type="int", min=18, max=99) + } + num_records = 5 + data = generate_data(schema, num_records) + + assert len(data) == num_records + for record in data: + assert "name" in record + assert "age" in record + assert isinstance(record["name"], str) + assert isinstance(record["age"], int) + assert 18 <= record["age"] <= 99 + +def test_generate_data_various_field_types(): + schema = { + "name": FieldInfo(type="string", length=10), + "age": FieldInfo(type="int", min=18, max=99), + "email": FieldInfo(type="email"), + "phone": FieldInfo(type="phone"), + "uuid": FieldInfo(type="uuid"), + "date": FieldInfo(type="date", start_date="2020-01-01", end_date="2020-12-31"), + "choice": FieldInfo(type="choice", choices=["A", "B", "C"]), + "bool": FieldInfo(type="bool"), + "ip": FieldInfo(type="ip"), + "url": FieldInfo(type="url"), + "address": FieldInfo(type="address"), + "company": FieldInfo(type="company") + } + num_records = 3 + data = generate_data(schema, num_records) + + assert len(data) == num_records + for record in data: + assert "name" in record + assert "age" in record + assert "email" in record + assert "phone" in record + assert "uuid" in record + assert "date" in record + assert "choice" in record + assert "bool" in record + assert "ip" in record + assert "url" in record + assert "address" in record + assert "company" in record + + assert isinstance(record["name"], str) + assert isinstance(record["age"], int) + assert isinstance(record["email"], str) + assert isinstance(record["phone"], str) + assert isinstance(record["uuid"], str) + assert isinstance(record["date"], str) + assert record["choice"] in ["A", "B", "C"] + assert isinstance(record["bool"], bool) + assert isinstance(record["ip"], str) + assert isinstance(record["url"], str) + assert isinstance(record["address"], str) + assert isinstance(record["company"], str) + +def test_generate_data_empty_schema(): + schema = {} + num_records = 5 + data = generate_data(schema, num_records) + + assert len(data) == num_records + for record in data: + assert record == {} + +def test_generate_data_zero_records(): + schema = { + "name": FieldInfo(type="string", length=10), + "age": FieldInfo(type="int", min=18, max=99) + } + num_records = 0 + data = generate_data(schema, num_records) + + assert len(data) == 0 + +def test_generate_data_invalid_schema(): + schema = { + "name": FieldInfo(type="unknown") + } + num_records = 5 + with pytest.raises(ValueError): + generate_data(schema, num_records) \ No newline at end of file diff --git a/modules/lithium.pytools/tests/test_hotspot.py b/modules/lithium.pytools/tests/test_hotspot.py new file mode 100644 index 00000000..386dc0f5 --- /dev/null +++ b/modules/lithium.pytools/tests/test_hotspot.py @@ -0,0 +1,115 @@ +import pytest +import json +import asyncio +from unittest.mock import patch, mock_open, AsyncMock +from pathlib import Path +from ..hotspot import HotspotManager, HotspotConfig, Platform, AuthType, EncryptionType + +# FILE: modules/lithium.pytools/tools/test_hotspot.py + + +@pytest.fixture +def hotspot_manager(): + with patch('platform.system', return_value='Linux'): + return HotspotManager() + + +def test_init(hotspot_manager): + assert hotspot_manager.platform == Platform.LINUX + assert hotspot_manager.config_path == Path.home() / ".hotspot" + assert hotspot_manager.saved_configs == {} + + +@patch('builtins.open', new_callable=mock_open, read_data='{}') +def test_load_config(mock_file, hotspot_manager): + hotspot_manager._load_config() + mock_file.assert_called_once_with( + hotspot_manager.config_path / "config.json") + assert hotspot_manager.saved_configs == {} + + +@patch('builtins.open', new_callable=mock_open) +def test_save_config(mock_file, hotspot_manager): + hotspot_manager.saved_configs = {"test": "config"} + hotspot_manager._save_config() + mock_file.assert_called_once_with( + hotspot_manager.config_path / "config.json", "w") + mock_file().write.assert_called_once_with( + json.dumps({"test": "config"}, indent=4)) + + +@patch('asyncio.create_subprocess_exec', new_callable=AsyncMock) +async def test_run_command_async(mock_subprocess, hotspot_manager): + mock_subprocess.return_value.communicate.return_value = (b'output', b'') + stdout, stderr = await hotspot_manager._run_command_async(['echo', 'test']) + assert stdout == 'output' + assert stderr == '' + + +@patch('subprocess.run') +def test_run_command(mock_run, hotspot_manager): + mock_run.return_value.stdout = 'output' + result = hotspot_manager._run_command(['echo', 'test']) + assert result == 'output' + + +@patch('asyncio.create_subprocess_exec', new_callable=AsyncMock) +async def test_start_linux(mock_subprocess, hotspot_manager): + config = HotspotConfig(name="TestHotspot", password="password") + await hotspot_manager._start_linux(config) + mock_subprocess.assert_called_with( + 'nmcli', 'dev', 'wifi', 'hotspot', 'ifname', 'wlan0', 'ssid', 'TestHotspot', 'password', 'password', + stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE + ) + + +@patch('asyncio.create_subprocess_exec', new_callable=AsyncMock) +async def test_start_windows(mock_subprocess, hotspot_manager): + with patch('platform.system', return_value='Windows'): + hotspot_manager.platform = Platform.WINDOWS + config = HotspotConfig(name="TestHotspot", password="password") + await hotspot_manager._start_windows(config) + mock_subprocess.assert_any_call( + 'netsh', 'wlan', 'set', 'hostednetwork', 'mode=allow', 'ssid=TestHotspot', 'key=password', + stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE + ) + mock_subprocess.assert_any_call( + 'netsh', 'wlan', 'start', 'hostednetwork', + stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE + ) + + +@patch('asyncio.create_subprocess_exec', new_callable=AsyncMock) +async def test_stop(mock_subprocess, hotspot_manager): + await hotspot_manager.stop() + mock_subprocess.assert_called_with( + 'nmcli', 'connection', 'down', 'Hotspot', + stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE + ) + + +@patch('asyncio.create_subprocess_exec', new_callable=AsyncMock) +async def test_status(mock_subprocess, hotspot_manager): + mock_subprocess.return_value.communicate.return_value = (b'connected', b'') + status = await hotspot_manager.status() + assert status['status'] == 'running' + + +@patch('asyncio.create_subprocess_exec', new_callable=AsyncMock) +async def test_list_clients(mock_subprocess, hotspot_manager): + mock_subprocess.return_value.communicate.return_value = (b'', b'') + clients = await hotspot_manager.list_clients() + assert clients == [] + + +def test_save_profile(hotspot_manager): + config = HotspotConfig(name="TestHotspot") + hotspot_manager.save_profile("test_profile", config) + assert hotspot_manager.saved_configs["test_profile"]["name"] == "TestHotspot" + + +def test_load_profile(hotspot_manager): + config = HotspotConfig(name="TestHotspot") + hotspot_manager.save_profile("test_profile", config) + loaded_config = hotspot_manager.load_profile("test_profile") + assert loaded_config.name == "TestHotspot" diff --git a/modules/lithium.pytools/tests/test_libclang_finder.py b/modules/lithium.pytools/tests/test_libclang_finder.py new file mode 100644 index 00000000..c246d5ab --- /dev/null +++ b/modules/lithium.pytools/tests/test_libclang_finder.py @@ -0,0 +1,141 @@ +import pytest +from unittest.mock import patch, MagicMock +from pathlib import Path +from ..libclang_finder import LibClangFinder, LibClangFinderConfig + +# FILE: modules/lithium.pytools/tools/test_libclang_finder.py + + +@pytest.fixture +def libclang_finder_config(): + # Provide a default LibClangFinderConfig instance + return LibClangFinderConfig() + + +@pytest.fixture +def libclang_finder_instance(libclang_finder_config): + # Provide a LibClangFinder instance initialized with the default configuration + return LibClangFinder(config=libclang_finder_config) + + +def test_initialization_default(): + config = LibClangFinderConfig() + finder = LibClangFinder(config) + assert finder.config.method == 'bilinear' + assert finder.config.pattern is None + assert finder.config.num_threads == 4 + assert not finder.config.visualize_intermediate + assert finder.config.visualization_save_path is None + assert not finder.config.save_debayered_images + + +def test_initialization_custom(): + config = LibClangFinderConfig(custom_path=Path( + '/custom/path/to/libclang.so'), clear_cache=True) + finder = LibClangFinder(config) + assert finder.config.custom_path == Path('/custom/path/to/libclang.so') + assert finder.config.clear_cache is True + + +def test_clear_cache(libclang_finder_instance): + with patch('pathlib.Path.unlink') as mock_unlink: + libclang_finder_instance.clear_cache() + mock_unlink.assert_called_once() + + +def test_cache_libclang_path(libclang_finder_instance): + path = Path('/path/to/libclang.so') + with patch('pathlib.Path.write_text') as mock_write_text: + libclang_finder_instance.cache_libclang_path(path) + mock_write_text.assert_called_once_with(str(path)) + + +def test_load_cached_libclang_path(libclang_finder_instance): + path = Path('/path/to/libclang.so') + with patch('pathlib.Path.exists', return_value=True), \ + patch('pathlib.Path.read_text', return_value=str(path)), \ + patch('pathlib.Path.is_file', return_value=True): + cached_path = libclang_finder_instance.load_cached_libclang_path() + assert cached_path == path + + +def test_find_libclang_linux(libclang_finder_instance): + with patch('glob.glob', return_value=['/usr/lib/llvm-18/lib/libclang.so']), \ + patch('pathlib.Path.is_file', return_value=True): + path = libclang_finder_instance.find_libclang_linux() + assert path == Path('/usr/lib/llvm-18/lib/libclang.so') + + +def test_find_libclang_macos(libclang_finder_instance): + with patch('glob.glob', return_value=['/usr/local/opt/llvm/lib/libclang.dylib']), \ + patch('pathlib.Path.is_file', return_value=True): + path = libclang_finder_instance.find_libclang_macos() + assert path == Path('/usr/local/opt/llvm/lib/libclang.dylib') + + +def test_find_libclang_windows(libclang_finder_instance): + with patch('glob.glob', return_value=['C:\\Program Files\\LLVM\\bin\\libclang.dll']), \ + patch('pathlib.Path.is_file', return_value=True): + path = libclang_finder_instance.find_libclang_windows() + assert path == Path('C:\\Program Files\\LLVM\\bin\\libclang.dll') + + +def test_search_paths(libclang_finder_instance): + patterns = ['/usr/lib/llvm-*/lib/libclang.so*'] + with patch('glob.glob', return_value=['/usr/lib/llvm-18/lib/libclang.so']), \ + patch('pathlib.Path.is_file', return_value=True): + paths = libclang_finder_instance.search_paths(patterns) + assert paths == [Path('/usr/lib/llvm-18/lib/libclang.so')] + + +def test_select_libclang_path(libclang_finder_instance): + paths = [Path('/usr/lib/llvm-18/lib/libclang.so')] + selected_path = libclang_finder_instance.select_libclang_path(paths) + assert selected_path == Path('/usr/lib/llvm-18/lib/libclang.so') + + +def test_get_libclang_path_with_custom_path(libclang_finder_instance): + libclang_finder_instance.config.custom_path = Path( + '/custom/path/to/libclang.so') + with patch('pathlib.Path.is_file', return_value=True), \ + patch.object(libclang_finder_instance, 'cache_libclang_path') as mock_cache: + path = libclang_finder_instance.get_libclang_path() + assert path == Path('/custom/path/to/libclang.so') + mock_cache.assert_called_once_with(Path('/custom/path/to/libclang.so')) + + +def test_get_libclang_path_with_cached_path(libclang_finder_instance): + cached_path = Path('/cached/path/to/libclang.so') + with patch.object(libclang_finder_instance, 'load_cached_libclang_path', return_value=cached_path): + path = libclang_finder_instance.get_libclang_path() + assert path == cached_path + + +def test_get_libclang_path_with_detection(libclang_finder_instance): + with patch('platform.system', return_value='Linux'), \ + patch.object(libclang_finder_instance, 'find_libclang_linux', return_value=Path('/usr/lib/llvm-18/lib/libclang.so')), \ + patch.object(libclang_finder_instance, 'cache_libclang_path') as mock_cache: + path = libclang_finder_instance.get_libclang_path() + assert path == Path('/usr/lib/llvm-18/lib/libclang.so') + mock_cache.assert_called_once_with( + Path('/usr/lib/llvm-18/lib/libclang.so')) + + +def test_get_libclang_path_unsupported_os(libclang_finder_instance): + with patch('platform.system', return_value='UnsupportedOS'): + with pytest.raises(RuntimeError, match="Unsupported operating system: UnsupportedOS"): + libclang_finder_instance.get_libclang_path() + + +def test_configure_clang(libclang_finder_instance): + with patch.object(libclang_finder_instance, 'get_libclang_path', return_value=Path('/path/to/libclang.so')), \ + patch('clang.cindex.Config.set_library_file') as mock_set_library_file: + libclang_finder_instance.configure_clang() + mock_set_library_file.assert_called_once_with('/path/to/libclang.so') + + +def test_list_libclang_versions(libclang_finder_instance): + with patch('platform.system', return_value='Linux'), \ + patch.object(libclang_finder_instance, 'find_libclang_linux', return_value=[Path('/usr/lib/llvm-18/lib/libclang.so')]): + paths = libclang_finder_instance.list_libclang_versions() + assert paths == [Path('/usr/lib/llvm-18/lib/libclang.so')] diff --git a/modules/lithium.pytools/tests/test_nginx.py b/modules/lithium.pytools/tests/test_nginx.py new file mode 100644 index 00000000..454f3b5e --- /dev/null +++ b/modules/lithium.pytools/tests/test_nginx.py @@ -0,0 +1,113 @@ +import pytest +import subprocess +import os +import platform +import sys +from unittest.mock import patch, mock_open, MagicMock +from ..nginx import install_nginx + +# FILE: modules/lithium.pytools/tools/test_nginx.py + + +@pytest.fixture +def mock_platform(): + with patch('platform.system') as mock_platform: + yield mock_platform + + +@pytest.fixture +def mock_os_path_isfile(): + with patch('os.path.isfile') as mock_isfile: + yield mock_isfile + + +@pytest.fixture +def mock_subprocess_run(): + with patch('subprocess.run') as mock_run: + yield mock_run + + +@pytest.fixture +def mock_sys_exit(): + with patch('sys.exit') as mock_exit: + yield mock_exit + + +def test_install_nginx_already_installed(mock_subprocess_run, mock_platform): + mock_platform.return_value = 'Linux' + mock_subprocess_run.return_value = MagicMock(returncode=0) + + install_nginx() + + mock_subprocess_run.assert_called_once_with( + ["/usr/sbin/nginx", "-v"], stderr=subprocess.PIPE, check=True + ) + + +def test_install_nginx_not_installed_debian(mock_subprocess_run, mock_platform, mock_os_path_isfile): + mock_platform.return_value = 'Linux' + mock_subprocess_run.side_effect = [ + subprocess.CalledProcessError(1, 'cmd'), MagicMock(returncode=0)] + mock_os_path_isfile.side_effect = lambda path: path == "/etc/debian_version" + + install_nginx() + + mock_subprocess_run.assert_any_call( + ["/usr/sbin/nginx", "-v"], stderr=subprocess.PIPE, check=True + ) + mock_subprocess_run.assert_any_call( + "sudo apt-get update && sudo apt-get install nginx -y", shell=True, check=True + ) + + +def test_install_nginx_not_installed_redhat(mock_subprocess_run, mock_platform, mock_os_path_isfile): + mock_platform.return_value = 'Linux' + mock_subprocess_run.side_effect = [ + subprocess.CalledProcessError(1, 'cmd'), MagicMock(returncode=0)] + mock_os_path_isfile.side_effect = lambda path: path == "/etc/redhat-release" + + install_nginx() + + mock_subprocess_run.assert_any_call( + ["/usr/sbin/nginx", "-v"], stderr=subprocess.PIPE, check=True + ) + mock_subprocess_run.assert_any_call( + "sudo yum update && sudo yum install nginx -y", shell=True, check=True + ) + + +def test_install_nginx_not_installed_unsupported_linux(mock_subprocess_run, mock_platform, mock_os_path_isfile, mock_sys_exit): + mock_platform.return_value = 'Linux' + mock_subprocess_run.side_effect = subprocess.CalledProcessError(1, 'cmd') + mock_os_path_isfile.return_value = False + + install_nginx() + + mock_subprocess_run.assert_called_once_with( + ["/usr/sbin/nginx", "-v"], stderr=subprocess.PIPE, check=True + ) + mock_sys_exit.assert_called_once_with(1) + + +def test_install_nginx_not_installed_windows(mock_subprocess_run, mock_platform, mock_sys_exit): + mock_platform.return_value = 'Windows' + mock_subprocess_run.side_effect = subprocess.CalledProcessError(1, 'cmd') + + install_nginx() + + mock_subprocess_run.assert_called_once_with( + ["C:\\nginx\\nginx.exe", "-v"], stderr=subprocess.PIPE, check=True + ) + mock_sys_exit.assert_called_once_with(1) + + +def test_install_nginx_not_installed_unsupported_platform(mock_subprocess_run, mock_platform, mock_sys_exit): + mock_platform.return_value = 'Darwin' + mock_subprocess_run.side_effect = subprocess.CalledProcessError(1, 'cmd') + + install_nginx() + + mock_subprocess_run.assert_called_once_with( + ["/usr/sbin/nginx", "-v"], stderr=subprocess.PIPE, check=True + ) + mock_sys_exit.assert_called_once_with(1) diff --git a/modules/lithium.pytools/tests/test_package.py b/modules/lithium.pytools/tests/test_package.py index 050c2cea..b6de5960 100644 --- a/modules/lithium.pytools/tests/test_package.py +++ b/modules/lithium.pytools/tests/test_package.py @@ -2,6 +2,9 @@ import sys from unittest.mock import patch, MagicMock from tools.package import main +from unittest.mock import patch, MagicMock, mock_open +from pathlib import Path +from tools.package import PackageManager, Package, Source @pytest.fixture @@ -91,3 +94,106 @@ def test_freeze_installed_packages(mock_run_command): with open("requirements.txt", "r") as f: content = f.read() assert content == "pytest==6.2.4" + @pytest.fixture + def mock_requests_get(): + with patch('tools.package.requests.get') as mock: + yield mock + + @pytest.fixture + def mock_open_file(): + with patch('builtins.open', mock_open(read_data="data")) as mock: + yield mock + + @pytest.fixture + def mock_tarfile_open(): + with patch('tools.package.tarfile.open') as mock: + yield mock + + @pytest.fixture + def mock_subprocess_run(): + with patch('tools.package.subprocess.run') as mock: + yield mock + + @pytest.fixture + def mock_logger(): + with patch('tools.package.logger') as mock: + yield mock + + @pytest.fixture + def package_manager(): + return PackageManager(config_file="test_packages.yaml") + + def test_load_config(package_manager, mock_open_file, mock_logger): + mock_open_file.return_value.read.return_value = """ + version: "1.0" + packages: + test_package: + sources: + - url: "https://github.com/test/test_package" + type: "github" + version: "1.0.0" + dependencies: [] + """ + package_manager.load_config() + assert "test_package" in package_manager.packages + assert package_manager.packages["test_package"].version == "1.0.0" + + def test_download_package(package_manager, mock_requests_get, mock_open_file, mock_logger): + package = Package( + name="test_package", + sources=[Source(url="https://github.com/test/test_package", type="github")], + version="1.0.0", + dependencies=[], + checksum=None, + build_args=None + ) + mock_requests_get.return_value.status_code = 200 + mock_requests_get.return_value.iter_content = lambda chunk_size: [b"data"] + archive_path = package_manager.download_package(package) + assert archive_path is not None + + def test_extract_package(package_manager, mock_tarfile_open, mock_logger): + package = Package( + name="test_package", + sources=[Source(url="https://github.com/test/test_package", type="github")], + version="1.0.0", + dependencies=[], + checksum=None, + build_args=None + ) + archive_path = Path("test_package-1.0.0.tar.gz") + source_dir = package_manager.extract_package(archive_path, package) + assert source_dir is not None + + def test_detect_build_system(package_manager): + source_dir = Path("test_package") + (source_dir / 'CMakeLists.txt').touch() + build_system = package_manager.detect_build_system(source_dir) + assert build_system == 'cmake' + + def test_build_package(package_manager, mock_subprocess_run, mock_logger): + package = Package( + name="test_package", + sources=[Source(url="https://github.com/test/test_package", type="github")], + version="1.0.0", + dependencies=[], + checksum=None, + build_args=None + ) + source_dir = Path("test_package") + (source_dir / 'CMakeLists.txt').touch() + package_manager.build_package(package, source_dir) + mock_subprocess_run.assert_called() + + def test_run(package_manager, mock_subprocess_run, mock_logger): + package = Package( + name="test_package", + sources=[Source(url="https://github.com/test/test_package", type="github")], + version="1.0.0", + dependencies=[], + checksum=None, + build_args=None + ) + package_manager.packages["test_package"] = package + package_manager.run(["test_package"]) + mock_subprocess_run.assert_called() \ No newline at end of file diff --git a/modules/lithium.pytools/tests/test_pyjson.py b/modules/lithium.pytools/tests/test_pyjson.py index 567ee0ac..6eed279f 100644 --- a/modules/lithium.pytools/tests/test_pyjson.py +++ b/modules/lithium.pytools/tests/test_pyjson.py @@ -1,8 +1,10 @@ +import sys import pytest import json import os from pathlib import Path -from ..tools.pyjson import load_json, print_json, save_json_to_yaml, query_json, validate_json, merge_json, diff_json +from ..tools.pyjson import flatten_json, load_json, print_json, save_json_to_yaml, query_json, validate_json, merge_json, diff_json, main +from unittest.mock import patch, mock_open @pytest.fixture @@ -98,3 +100,127 @@ def test_diff_json(capsys, tmp_path): diff_json(str(file1), str(file2)) captured = capsys.readouterr() assert json.loads(captured.out) == {"b": 3, "c": 4} + + +def test_main_minify(sample_json_file, capsys): + testargs = ["pyjson.py", str(sample_json_file), "--minify"] + with patch.object(sys, 'argv', testargs): + main() + captured = capsys.readouterr() + assert json.loads(captured.out) == load_json(str(sample_json_file)) + + +def test_main_format(sample_json_file, capsys): + testargs = ["pyjson.py", str(sample_json_file), "--format"] + with patch.object(sys, 'argv', testargs): + main() + captured = capsys.readouterr() + assert json.loads(captured.out) == load_json(str(sample_json_file)) + + +def test_main_yaml(sample_json_file, tmp_path): + output_file = tmp_path / "output.yaml" + testargs = ["pyjson.py", str(sample_json_file), "--yaml", str(output_file)] + with patch.object(sys, 'argv', testargs): + main() + assert output_file.exists() + + +def test_main_query(sample_json_file, capsys): + testargs = ["pyjson.py", str(sample_json_file), "--query", "nested.key"] + with patch.object(sys, 'argv', testargs): + main() + captured = capsys.readouterr() + assert captured.out.strip() == '"value"' + + +def test_main_validate(sample_json_file, capsys): + testargs = ["pyjson.py", str(sample_json_file), "--validate"] + with patch.object(sys, 'argv', testargs): + main() + captured = capsys.readouterr() + assert "is valid" in captured.out + + +def test_main_merge(tmp_path): + file1 = tmp_path / "file1.json" + file2 = tmp_path / "file2.json" + data1 = {"a": 1} + data2 = {"b": 2} + with open(file1, 'w', encoding='utf-8') as f: + json.dump(data1, f) + with open(file2, 'w', encoding='utf-8') as f: + json.dump(data2, f) + testargs = ["pyjson.py", str(file1), str(file2), "--merge"] + with patch.object(sys, 'argv', testargs): + main() + captured = capsys.readouterr() + assert json.loads(captured.out) == {"a": 1, "b": 2} + + +def test_main_diff(tmp_path, capsys): + file1 = tmp_path / "file1.json" + file2 = tmp_path / "file2.json" + data1 = {"a": 1, "b": 2} + data2 = {"a": 1, "b": 3, "c": 4} + with open(file1, 'w', encoding='utf-8') as f: + json.dump(data1, f) + with open(file2, 'w', encoding='utf-8') as f: + json.dump(data2, f) + testargs = ["pyjson.py", str(file1), str(file2), "--diff"] + with patch.object(sys, 'argv', testargs): + main() + captured = capsys.readouterr() + assert json.loads(captured.out) == {"b": 3, "c": 4} + + +def test_main_stats(sample_json_file, capsys): + testargs = ["pyjson.py", str(sample_json_file), "--stats"] + with patch.object(sys, 'argv', testargs): + main() + captured = capsys.readouterr() + assert "Total Keys" in captured.out + assert "Total Elements" in captured.out + assert "Depth" in captured.out + + +def test_main_flatten(sample_json_file, capsys): + testargs = ["pyjson.py", str(sample_json_file), "--flatten"] + with patch.object(sys, 'argv', testargs): + main() + captured = capsys.readouterr() + flattened = flatten_json(load_json(str(sample_json_file))) + assert json.loads(captured.out) == flattened + + +def test_main_unflatten(sample_json_file, capsys): + flattened = flatten_json(load_json(str(sample_json_file))) + flattened_file = sample_json_file.with_name("flattened.json") + with open(flattened_file, 'w', encoding='utf-8') as f: + json.dump(flattened, f) + testargs = ["pyjson.py", str(flattened_file), "--unflatten"] + with patch.object(sys, 'argv', testargs): + main() + captured = capsys.readouterr() + assert json.loads(captured.out) == load_json(str(sample_json_file)) + + +def test_main_remove_key(sample_json_file, capsys): + testargs = ["pyjson.py", str(sample_json_file), "--remove-key", "name"] + with patch.object(sys, 'argv', testargs): + main() + captured = capsys.readouterr() + data = load_json(str(sample_json_file)) + del data["name"] + assert json.loads(captured.out) == data + + +def test_main_rename_key(sample_json_file, capsys): + testargs = ["pyjson.py", str(sample_json_file), + "--rename-key", "name", "new_name"] + with patch.object(sys, 'argv', testargs): + main() + captured = capsys.readouterr() + data = load_json(str(sample_json_file)) + data["new_name"] = data.pop("name") + assert json.loads(captured.out) == data diff --git a/modules/lithium.pytools/tests/test_sftp.py b/modules/lithium.pytools/tests/test_sftp.py new file mode 100644 index 00000000..e9f7501d --- /dev/null +++ b/modules/lithium.pytools/tests/test_sftp.py @@ -0,0 +1,191 @@ +import pytest +from unittest.mock import patch, MagicMock +from paramiko import SFTPClient, SSHException +from sftp import SFTPClientWrapper + +@pytest.fixture +def sftp_client(): + return SFTPClientWrapper(hostname='test_host', username='test_user', password='test_pass') + +def test_connect_success(sftp_client): + with patch.object(SFTPClientWrapper, 'connect', return_value=None): + sftp_client.connect() + assert sftp_client.client is not None + assert sftp_client.sftp is not None + +def test_connect_failure(sftp_client): + with patch.object(SFTPClientWrapper, 'connect', side_effect=SSHException): + with pytest.raises(SSHException): + sftp_client.connect() + +def test_upload_file_success(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.upload_file('local_path', 'remote_path') + sftp_client.sftp.put.assert_called_once_with('local_path', 'remote_path') + +def test_upload_file_failure(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.put.side_effect = Exception + sftp_client.upload_file('local_path', 'remote_path') + sftp_client.sftp.put.assert_called_once_with('local_path', 'remote_path') + +def test_download_file_success(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.download_file('remote_path', 'local_path') + sftp_client.sftp.get.assert_called_once_with('remote_path', 'local_path') + +def test_download_file_failure(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.get.side_effect = Exception + sftp_client.download_file('remote_path', 'local_path') + sftp_client.sftp.get.assert_called_once_with('remote_path', 'local_path') + +def test_upload_directory_success(sftp_client): + sftp_client.sftp = MagicMock() + with patch('os.walk', return_value=[('root', [], ['file1', 'file2'])]), \ + patch.object(SFTPClientWrapper, 'create_directory', return_value=None), \ + patch.object(SFTPClientWrapper, 'upload_file', return_value=None): + sftp_client.upload_directory('local_dir', 'remote_dir') + sftp_client.create_directory.assert_called() + sftp_client.upload_file.assert_called() + +def test_upload_directory_failure(sftp_client): + sftp_client.sftp = MagicMock() + with patch('os.walk', return_value=[('root', [], ['file1', 'file2'])]), \ + patch.object(SFTPClientWrapper, 'create_directory', side_effect=Exception), \ + patch.object(SFTPClientWrapper, 'upload_file', return_value=None): + sftp_client.upload_directory('local_dir', 'remote_dir') + sftp_client.create_directory.assert_called() + +def test_download_directory_success(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.listdir_attr.return_value = [MagicMock(filename='file1', st_mode=0), MagicMock(filename='dir1', st_mode=stat.S_IFDIR)] + with patch('os.makedirs', return_value=None), \ + patch.object(SFTPClientWrapper, 'download_file', return_value=None), \ + patch.object(SFTPClientWrapper, 'download_directory', return_value=None): + sftp_client.download_directory('remote_dir', 'local_dir') + sftp_client.download_file.assert_called() + sftp_client.download_directory.assert_called() + +def test_download_directory_failure(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.listdir_attr.side_effect = Exception + with patch('os.makedirs', return_value=None): + sftp_client.download_directory('remote_dir', 'local_dir') + sftp_client.sftp.listdir_attr.assert_called_once_with('remote_dir') + +def test_create_directory_success(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.create_directory('remote_path') + sftp_client.sftp.mkdir.assert_called_once_with('remote_path') + +def test_create_directory_failure(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.mkdir.side_effect = Exception + sftp_client.create_directory('remote_path') + sftp_client.sftp.mkdir.assert_called_once_with('remote_path') + +def test_remove_directory_success(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.listdir_attr.return_value = [MagicMock(filename='file1', st_mode=0), MagicMock(filename='dir1', st_mode=stat.S_IFDIR)] + with patch.object(SFTPClientWrapper, 'remove_directory', return_value=None): + sftp_client.remove_directory('remote_path') + sftp_client.sftp.remove.assert_called() + sftp_client.sftp.rmdir.assert_called_once_with('remote_path') + +def test_remove_directory_failure(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.listdir_attr.side_effect = Exception + sftp_client.remove_directory('remote_path') + sftp_client.sftp.listdir_attr.assert_called_once_with('remote_path') + +def test_get_file_info_success(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.stat.return_value = MagicMock(st_size=100, st_mtime=1000, st_mode=stat.S_IFREG) + sftp_client.get_file_info('remote_path') + sftp_client.sftp.stat.assert_called_once_with('remote_path') + +def test_get_file_info_failure(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.stat.side_effect = Exception + sftp_client.get_file_info('remote_path') + sftp_client.sftp.stat.assert_called_once_with('remote_path') + +def test_resume_upload_success(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.stat.return_value = MagicMock(st_size=50) + with patch('os.path.getsize', return_value=100), \ + patch('builtins.open', new_callable=MagicMock): + sftp_client.resume_upload('local_path', 'remote_path') + sftp_client.sftp.putfo.assert_called() + +def test_resume_upload_failure(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.stat.side_effect = Exception + with patch('os.path.getsize', return_value=100), \ + patch('builtins.open', new_callable=MagicMock): + sftp_client.resume_upload('local_path', 'remote_path') + sftp_client.sftp.putfo.assert_not_called() + +def test_list_files_success(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.listdir.return_value = ['file1', 'file2'] + files = sftp_client.list_files('remote_path') + assert files == ['file1', 'file2'] + sftp_client.sftp.listdir.assert_called_once_with('remote_path') + +def test_list_files_failure(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.listdir.side_effect = Exception + files = sftp_client.list_files('remote_path') + assert files == [] + sftp_client.sftp.listdir.assert_called_once_with('remote_path') + +def test_move_file_success(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.move_file('remote_src', 'remote_dest') + sftp_client.sftp.rename.assert_called_once_with('remote_src', 'remote_dest') + +def test_move_file_failure(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.rename.side_effect = Exception + sftp_client.move_file('remote_src', 'remote_dest') + sftp_client.sftp.rename.assert_called_once_with('remote_src', 'remote_dest') + +def test_delete_file_success(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.delete_file('remote_path') + sftp_client.sftp.remove.assert_called_once_with('remote_path') + +def test_delete_file_failure(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.remove.side_effect = Exception + sftp_client.delete_file('remote_path') + sftp_client.sftp.remove.assert_called_once_with('remote_path') + +def test_path_exists_success(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.stat.return_value = True + assert sftp_client.path_exists('remote_path') is True + sftp_client.sftp.stat.assert_called_once_with('remote_path') + +def test_path_exists_failure(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.sftp.stat.side_effect = FileNotFoundError + assert sftp_client.path_exists('remote_path') is False + sftp_client.sftp.stat.assert_called_once_with('remote_path') + +def test_disconnect_success(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.client = MagicMock() + sftp_client.disconnect() + sftp_client.sftp.close.assert_called_once() + sftp_client.client.close.assert_called_once() + +def test_disconnect_failure(sftp_client): + sftp_client.sftp = MagicMock() + sftp_client.client = MagicMock() + sftp_client.sftp.close.side_effect = Exception + sftp_client.disconnect() + sftp_client.sftp.close.assert_called_once() + sftp_client.client.close.assert_called_once() \ No newline at end of file diff --git a/modules/lithium.pytools/tests/test_ssh.py b/modules/lithium.pytools/tests/test_ssh.py new file mode 100644 index 00000000..b6ff5734 --- /dev/null +++ b/modules/lithium.pytools/tests/test_ssh.py @@ -0,0 +1,146 @@ +import pytest +from unittest.mock import patch, MagicMock +from ssh import SSHClient, SSHConnectionError, SSHCommandError, SFTPError, SSHError +import paramiko +@pytest.fixture +def ssh_client(): + return SSHClient(hostname="localhost", port=22, username="user", password="pass") + +@patch("paramiko.SSHClient") +def test_connect_success(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.connect = MagicMock() + mock_ssh_client.return_value.open_sftp = MagicMock() + ssh_client.connect() + mock_ssh_client.return_value.connect.assert_called_once() + mock_ssh_client.return_value.open_sftp.assert_called_once() + +@patch("paramiko.SSHClient") +def test_connect_authentication_failure(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.connect.side_effect = paramiko.AuthenticationException + with pytest.raises(SSHConnectionError): + ssh_client.connect() + +@patch("paramiko.SSHClient") +def test_connect_no_valid_connections(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.connect.side_effect = IndexError + with pytest.raises(SSHConnectionError): + ssh_client.connect() + +@patch("paramiko.SSHClient") +def test_connect_ssh_exception(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.connect.side_effect = paramiko.SSHException + with pytest.raises(SSHConnectionError): + ssh_client.connect() + +@patch("paramiko.SSHClient") +def test_connect_general_exception(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.connect.side_effect = Exception + with pytest.raises(SSHConnectionError): + ssh_client.connect() + +@patch("paramiko.SSHClient") +def test_execute_command_success(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.exec_command.return_value = (MagicMock(), MagicMock(), MagicMock()) + mock_ssh_client.return_value.exec_command.return_value[1].read.return_value = b"output" + mock_ssh_client.return_value.exec_command.return_value[2].read.return_value = b"" + mock_ssh_client.return_value.exec_command.return_value[1].channel.recv_exit_status.return_value = 0 + ssh_client.connect() + output, error = ssh_client.execute_command("ls") + assert output == "output" + assert error == "" + +@patch("paramiko.SSHClient") +def test_execute_command_failure(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.exec_command.return_value = (MagicMock(), MagicMock(), MagicMock()) + mock_ssh_client.return_value.exec_command.return_value[1].read.return_value = b"" + mock_ssh_client.return_value.exec_command.return_value[2].read.return_value = b"error" + mock_ssh_client.return_value.exec_command.return_value[1].channel.recv_exit_status.return_value = 1 + ssh_client.connect() + with pytest.raises(SSHCommandError): + ssh_client.execute_command("ls") + +@patch("paramiko.SSHClient") +def test_upload_file_success(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.open_sftp.return_value.put = MagicMock() + ssh_client.connect() + ssh_client.upload_file("local.txt", "remote.txt") + mock_ssh_client.return_value.open_sftp.return_value.put.assert_called_once_with("local.txt", "remote.txt") + +@patch("paramiko.SSHClient") +def test_upload_file_failure(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.open_sftp.return_value.put.side_effect = FileNotFoundError + ssh_client.connect() + with pytest.raises(SFTPError): + ssh_client.upload_file("local.txt", "remote.txt") + +@patch("paramiko.SSHClient") +def test_download_file_success(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.open_sftp.return_value.get = MagicMock() + ssh_client.connect() + ssh_client.download_file("remote.txt", "local.txt") + mock_ssh_client.return_value.open_sftp.return_value.get.assert_called_once_with("remote.txt", "local.txt") + +@patch("paramiko.SSHClient") +def test_download_file_failure(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.open_sftp.return_value.get.side_effect = FileNotFoundError + ssh_client.connect() + with pytest.raises(SFTPError): + ssh_client.download_file("remote.txt", "local.txt") + +@patch("paramiko.SSHClient") +def test_list_remote_directory_success(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.open_sftp.return_value.listdir.return_value = ["file1.txt", "file2.txt"] + ssh_client.connect() + files = ssh_client.list_remote_directory("remote_dir") + assert files == ["file1.txt", "file2.txt"] + +@patch("paramiko.SSHClient") +def test_list_remote_directory_failure(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.open_sftp.return_value.listdir.side_effect = FileNotFoundError + ssh_client.connect() + with pytest.raises(SFTPError): + ssh_client.list_remote_directory("remote_dir") + +@patch("paramiko.SSHClient") +def test_create_remote_directory_success(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.open_sftp.return_value.mkdir = MagicMock() + ssh_client.connect() + ssh_client.create_remote_directory("remote_dir") + mock_ssh_client.return_value.open_sftp.return_value.mkdir.assert_called_once_with("remote_dir") + +@patch("paramiko.SSHClient") +def test_create_remote_directory_failure(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.open_sftp.return_value.mkdir.side_effect = Exception + ssh_client.connect() + with pytest.raises(SFTPError): + ssh_client.create_remote_directory("remote_dir") + +@patch("paramiko.SSHClient") +def test_delete_remote_file_success(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.open_sftp.return_value.remove = MagicMock() + ssh_client.connect() + ssh_client.delete_remote_file("remote.txt") + mock_ssh_client.return_value.open_sftp.return_value.remove.assert_called_once_with("remote.txt") + +@patch("paramiko.SSHClient") +def test_delete_remote_file_failure(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.open_sftp.return_value.remove.side_effect = FileNotFoundError + ssh_client.connect() + with pytest.raises(SFTPError): + ssh_client.delete_remote_file("remote.txt") + +@patch("paramiko.SSHClient") +def test_close_success(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.close = MagicMock() + mock_ssh_client.return_value.open_sftp.return_value.close = MagicMock() + ssh_client.connect() + ssh_client.close() + mock_ssh_client.return_value.close.assert_called_once() + mock_ssh_client.return_value.open_sftp.return_value.close.assert_called_once() + +@patch("paramiko.SSHClient") +def test_close_failure(mock_ssh_client, ssh_client): + mock_ssh_client.return_value.close.side_effect = Exception + ssh_client.connect() + with pytest.raises(SSHError): + ssh_client.close() \ No newline at end of file diff --git a/modules/lithium.pytools/tests/test_unzip.py b/modules/lithium.pytools/tests/test_unzip.py new file mode 100644 index 00000000..eb92bb8c --- /dev/null +++ b/modules/lithium.pytools/tests/test_unzip.py @@ -0,0 +1,99 @@ +import pytest +from pathlib import Path +from unittest.mock import patch, MagicMock +from unzip import UnzipWrapper, UnzipValidationError, UnzipExtractionError, UnzipListError, UnzipIntegrityError, UnzipDeleteError, UnzipError +import subprocess + +@pytest.fixture +def unzip(): + return UnzipWrapper(executable="unzip") + +def test_init_valid_executable(unzip): + assert unzip.executable == "unzip" + +def test_init_invalid_executable(): + with patch("shutil.which", return_value=None): + with pytest.raises(UnzipValidationError): + UnzipWrapper(executable="invalid_executable") + +def test_validate_archive_exists(unzip): + with patch("pathlib.Path.exists", return_value=True): + unzip._validate_archive_exists("archive.zip") + +def test_validate_archive_exists_invalid(unzip): + with patch("pathlib.Path.exists", return_value=False): + with pytest.raises(UnzipValidationError): + unzip._validate_archive_exists("archive.zip") + +@patch("subprocess.run") +def test_extract(mock_run, unzip): + mock_run.return_value = MagicMock(returncode=0, stdout="Success", stderr="") + with patch("pathlib.Path.exists", return_value=True): + unzip.extract("archive.zip", "destination") + mock_run.assert_called_once() + +@patch("subprocess.run", side_effect=subprocess.CalledProcessError(1, "cmd")) +def test_extract_failure(mock_run, unzip): + with patch("pathlib.Path.exists", return_value=True): + with pytest.raises(UnzipExtractionError): + unzip.extract("archive.zip", "destination") + +@patch("subprocess.run") +def test_list_contents(mock_run, unzip): + mock_run.return_value = MagicMock(returncode=0, stdout="file1.txt\nfile2.txt", stderr="") + with patch("pathlib.Path.exists", return_value=True): + contents = unzip.list_contents("archive.zip") + assert contents == "file1.txt\nfile2.txt" + mock_run.assert_called_once() + +@patch("subprocess.run", side_effect=subprocess.CalledProcessError(1, "cmd")) +def test_list_contents_failure(mock_run, unzip): + with patch("pathlib.Path.exists", return_value=True): + with pytest.raises(UnzipListError): + unzip.list_contents("archive.zip") + +@patch("subprocess.run") +def test_test_integrity(mock_run, unzip): + mock_run.return_value = MagicMock(returncode=0, stdout="Everything is Ok", stderr="") + with patch("pathlib.Path.exists", return_value=True): + is_valid = unzip.test_integrity("archive.zip") + assert is_valid + mock_run.assert_called_once() + +@patch("subprocess.run", side_effect=subprocess.CalledProcessError(1, "cmd")) +def test_test_integrity_failure(mock_run, unzip): + with patch("pathlib.Path.exists", return_value=True): + with pytest.raises(UnzipIntegrityError): + unzip.test_integrity("archive.zip") + +@patch("pathlib.Path.unlink") +def test_delete_archive(mock_unlink, unzip): + with patch("pathlib.Path.exists", return_value=True): + unzip.delete_archive("archive.zip") + mock_unlink.assert_called_once() + +@patch("pathlib.Path.unlink", side_effect=Exception("Error")) +def test_delete_archive_failure(mock_unlink, unzip): + with patch("pathlib.Path.exists", return_value=True): + with pytest.raises(UnzipDeleteError): + unzip.delete_archive("archive.zip") + +@patch("pathlib.Path.exists", return_value=False) +def test_extract_nonexistent_archive(mock_exists, unzip): + with pytest.raises(UnzipValidationError): + unzip.extract("nonexistent.zip", "destination") + +@patch("pathlib.Path.exists", return_value=True) +def test_list_contents_nonexistent_archive(mock_exists, unzip): + with pytest.raises(UnzipListError): + unzip.list_contents("nonexistent.zip") + +@patch("pathlib.Path.exists", return_value=True) +def test_test_nonexistent_archive(mock_exists, unzip): + with pytest.raises(UnzipIntegrityError): + unzip.test_integrity("nonexistent.zip") + +@patch("pathlib.Path.exists", return_value=True) +def test_delete_nonexistent_archive(mock_exists, unzip): + with pytest.raises(UnzipDeleteError): + unzip.delete_archive("nonexistent.zip") \ No newline at end of file diff --git a/modules/lithium.pytools/tools/atom_generator.py b/modules/lithium.pytools/tools/atom_generator.py new file mode 100644 index 00000000..32992d9c --- /dev/null +++ b/modules/lithium.pytools/tools/atom_generator.py @@ -0,0 +1,301 @@ +""" +ATOM_MODULE Generator for C++ Headers + +This script generates ATOM_MODULE code from C++ header files. It parses header files to extract +public methods and global functions, then generates code that registers these components. It +supports configuring logging levels, blacklisting, and whitelisting of functions or methods. + +Dependencies: +- clang.cindex: For parsing C++ headers using libclang. +- loguru: For detailed logging. +- argparse: For command-line argument parsing. + +Usage: +- Provide paths to C++ header files via the `filepaths` argument. +- Optionally specify output file, log level, whitelist, blacklist, module name, and instance prefix. + +""" + +import clang.cindex +from loguru import logger +import argparse +import os +import threading +import yaml +from concurrent.futures import ThreadPoolExecutor +from pathlib import Path +from typing import List, Optional, Dict, Tuple +from dataclasses import dataclass, field + +from .libclang_finder import get_libclang_path + +# Set the path to libclang +try: + libclang_path = get_libclang_path() + clang.cindex.Config.set_library_file(libclang_path) + logger.info(f"Successfully set libclang path to: {libclang_path}") +except Exception as e: + logger.exception("Failed to set libclang path") + +# Default blacklist and whitelist +DEFAULT_BLACKLIST = [] +DEFAULT_WHITELIST = [] + + +@dataclass +class GeneratorConfig: + """ + Configuration parameters for the ATOM_MODULE generator. + """ + filepaths: List[Path] + output: Optional[Path] = None + log_level: str = "INFO" + blacklist: List[str] = field(default_factory=lambda: DEFAULT_BLACKLIST) + whitelist: List[str] = field(default_factory=lambda: DEFAULT_WHITELIST) + module_name: str = "all_components" + instance_prefix: str = "" + config_file: Optional[Path] = None + + +def parse_args() -> GeneratorConfig: + """ + Parses command-line arguments for the script. + + This function uses argparse to define and parse command-line arguments. It includes options + for specifying file paths, output file, log level, blacklist, whitelist, module name, and + instance prefix. + + Returns: + GeneratorConfig: The parsed command-line arguments. + """ + parser = argparse.ArgumentParser( + description="Generate ATOM_MODULE from C++ headers.") + parser.add_argument("filepaths", nargs='+', type=Path, + help="Paths to the C++ header files.") + parser.add_argument("--output", type=Path, default=None, + help="Output file for generated module code.") + parser.add_argument("--log-level", default="INFO", + help="Set the log level (DEBUG, INFO, WARNING, ERROR).") + parser.add_argument("--blacklist", nargs="*", default=DEFAULT_BLACKLIST, + help="List of blacklisted functions or methods.") + parser.add_argument("--whitelist", nargs="*", default=DEFAULT_WHITELIST, + help="List of whitelisted functions or methods.") + parser.add_argument("--module-name", default="all_components", + help="Name of the generated ATOM_MODULE.") + parser.add_argument("--instance-prefix", default="", + help="Prefix for instance names in the module.") + parser.add_argument("--config-file", type=Path, default=None, + help="Path to a YAML configuration file.") + args = parser.parse_args() + return GeneratorConfig( + filepaths=args.filepaths, + output=args.output, + log_level=args.log_level, + blacklist=args.blacklist, + whitelist=args.whitelist, + module_name=args.module_name, + instance_prefix=args.instance_prefix, + config_file=args.config_file + ) + + +def load_config(config_file: Optional[Path]) -> Dict: + """ + Loads configuration from a YAML file. + + Args: + config_file (Optional[Path]): Path to the configuration file. + + Returns: + dict: The loaded configuration. + """ + if config_file and config_file.is_file(): + with open(config_file, 'r') as f: + config = yaml.safe_load(f) + logger.info(f"Loaded configuration from {config_file}") + return config + return {} + + +def is_in_list(name: str, whitelist: List[str], blacklist: List[str]) -> bool: + """ + Checks if a name is in the whitelist and not in the blacklist. + + Args: + name (str): The name to check. + whitelist (List[str]): The list of whitelisted names. + blacklist (List[str]): The list of blacklisted names. + + Returns: + bool: True if the name is in the whitelist or if the whitelist is empty, and not in the blacklist. + """ + if whitelist and name not in whitelist: + return False + if name in blacklist: + return False + return True + + +def find_classes_methods_and_functions(node: clang.cindex.Cursor, namespace: str = "", whitelist: Optional[List[str]] = None, blacklist: Optional[List[str]] = None) -> Tuple[Dict[str, List[str]], List[str]]: + """ + Recursively finds classes, methods, and functions within the AST. + + Args: + node (clang.cindex.Cursor): The current AST node. + namespace (str, optional): The current namespace. + whitelist (List[str], optional): List of whitelisted functions or methods. + blacklist (List[str], optional): List of blacklisted functions or methods. + + Returns: + tuple: A dictionary of classes and their methods, and a list of functions. + """ + classes = {} + functions = [] + for child in node.get_children(): + # Handle namespaces + if child.kind == clang.cindex.CursorKind.NAMESPACE: + nested_namespace = f"{namespace}::{child.spelling}" if namespace else child.spelling + nested_classes, nested_functions = find_classes_methods_and_functions( + child, nested_namespace, whitelist, blacklist) + classes.update(nested_classes) + functions.extend(nested_functions) + # Handle class declarations + elif child.kind == clang.cindex.CursorKind.CLASS_DECL: + class_name = f"{namespace}::{child.spelling}" if namespace else child.spelling + methods = [] + for sub_child in child.get_children(): + if (sub_child.kind == clang.cindex.CursorKind.CXX_METHOD and + sub_child.access_specifier == clang.cindex.AccessSpecifier.PUBLIC): + method_name = sub_child.spelling + if is_in_list(method_name, whitelist, blacklist): + methods.append(method_name) + logger.debug( + f"Found public method: {class_name}::{method_name}") + if methods: + classes[class_name] = methods + logger.debug(f"Registered class: {class_name}") + # Handle global function declarations + elif child.kind == clang.cindex.CursorKind.FUNCTION_DECL: + function_name = f"{namespace}::{child.spelling}" if namespace else child.spelling + if is_in_list(function_name, whitelist, blacklist): + functions.append(function_name) + logger.debug(f"Found global function: {function_name}") + return classes, functions + + +def parse_header_file(filepath: Path, whitelist: Optional[List[str]] = None, blacklist: Optional[List[str]] = None) -> Tuple[Dict[str, List[str]], List[str]]: + """ + Parses a C++ header file to extract classes, methods, and functions. + + Args: + filepath (Path): Path to the C++ header file. + whitelist (List[str], optional): List of whitelisted functions or methods. + blacklist (List[str], optional): List of blacklisted functions or methods. + + Returns: + tuple: A dictionary of classes and their methods, and a list of functions. + """ + index = clang.cindex.Index.create() + translation_unit = index.parse(str(filepath)) + logger.info(f"Parsing the file: {filepath}\n") + return find_classes_methods_and_functions(translation_unit.cursor, whitelist=whitelist, blacklist=blacklist) + + +def generate_atom_module(filepaths: List[Path], output_file: Optional[Path] = None, log_level: str = "INFO", whitelist: Optional[List[str]] = None, blacklist: Optional[List[str]] = None, module_name: str = "all_components", instance_prefix: str = ""): + """ + Generates ATOM_MODULE code from specified C++ header files. + + Args: + filepaths (List[Path]): List of paths to C++ header files. + output_file (Optional[Path], optional): Path to the output file for generated code. If None, prints to console. + log_level (str, optional): The log level for the output (DEBUG, INFO, WARNING, ERROR). + whitelist (List[str], optional): List of whitelisted functions or methods. + blacklist (List[str], optional): List of blacklisted functions or methods. + module_name (str, optional): Name of the generated ATOM_MODULE. + instance_prefix (str, optional): Prefix for instance names in the module. + """ + # Set the log level + logger.remove() + logger.add(lambda msg: print(msg, end=""), level=log_level.upper()) + + # Initialize containers for classes and functions + all_classes = {} + all_functions = [] + + with ThreadPoolExecutor() as executor: + futures = [executor.submit( + parse_header_file, filepath, whitelist, blacklist) for filepath in filepaths] + for future in futures: + classes, functions = future.result() + all_classes.update(classes) + all_functions.extend(functions) + + logger.info("Generating ATOM_MODULE...\n") + + # Start building the module code + code_lines = [] + code_lines.append( + f'ATOM_MODULE({module_name}, [](Component &component) {{') + code_lines.append(f' LOG_F(INFO, "Registering all components...");\n') + + # Process classes and their methods + for class_name, methods in all_classes.items(): + for method in methods: + code_lines.append( + f' component.def("{method}", &{class_name}::{method}, "main", "{method} of {class_name}");') + logger.info(f"Registered method: {class_name}::{method}") + + # Use the last part of the class name as the instance name + instance_name = f"{instance_prefix}{class_name.split('::')[-1].lower()}" + code_lines.append( + f' component.addVariable("{instance_name}.instance", "{class_name} instance");') + code_lines.append( + f' component.defType<{class_name}>("{instance_name}");') + logger.info(f"Registered class type: {class_name}") + + # Process global functions + if all_functions: + for function in all_functions: + function_name = function.split("::")[-1] + code_lines.append( + f' component.def("{function_name}", &{function}, "main", "Global function {function}");') + logger.info(f"Registered global function: {function}") + + code_lines.append(f' LOG_F(INFO, "All components registered.");') + code_lines.append('});\n') + + logger.info("ATOM_MODULE generation completed.\n") + + generated_code = "\n".join(code_lines) + + # Output to file or print to console + if output_file: + with open(output_file, 'w') as f: + f.write(generated_code) + logger.info(f"Generated code written to: {output_file}\n") + else: + print(generated_code) + + +def main(): + """ + Entry point for the script execution. + + Parses command-line arguments and generates ATOM_MODULE code based on the provided header files. + Configures logging and handles exceptions during module generation. + """ + args = parse_args() + config = load_config(args.config_file) + generate_atom_module( + args.filepaths, + args.output or config.get('output'), + args.log_level or config.get('log_level', 'INFO'), + args.whitelist or config.get('whitelist', DEFAULT_WHITELIST), + args.blacklist or config.get('blacklist', DEFAULT_BLACKLIST), + args.module_name or config.get('module_name', 'all_components'), + args.instance_prefix or config.get('instance_prefix', '') + ) + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pytools/tools/byte_convertor.py b/modules/lithium.pytools/tools/byte_convertor.py index 27fd009a..79dd785c 100644 --- a/modules/lithium.pytools/tools/byte_convertor.py +++ b/modules/lithium.pytools/tools/byte_convertor.py @@ -1,17 +1,17 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ -File: convert_to_header.py +File: byte_convertor.py Author: Max Qian Date: 2024-08-26 -Version: 1.0 +Version: 2.0 Description: ------------ This Python script provides functionality to convert binary files into C-style header files containing array data, and vice versa. The script supports several features, including data -compression, various data formats (hex, binary, decimal), optional C++ class wrappers, and -splitting large arrays into multiple header files. +compression, various data formats (hex, binary, decimal, base64), optional C++ class wrappers, +splitting large arrays into multiple header files, and data integrity verification. The script can be used in two main modes: 1. `to_header`: Converts a binary file into a C header file with array data. @@ -19,23 +19,26 @@ Features: --------- -- Convert binary files to C-style arrays in hex, binary, or decimal format. +- Convert binary files to C-style arrays in hex, binary, decimal, or base64 format. - Compress the binary data before storing it in the header file. -- Generate optional C++ class wrappers for the array data. +- Generate optional C++ class wrappers for the array data with customizable class names. - Optionally split large arrays across multiple header files. - Generate `#ifndef` protection macros to prevent multiple inclusions of the same header file. - Customize array and size variable names, array data types, and comment styles. +- Verify data integrity after conversion by comparing checksums. +- Display progress bars for long-running conversions. Dependencies: ------------- - Python 3.x -- Standard Python libraries: sys, os, zlib, datetime, typing +- Standard Python libraries: sys, os, zlib, datetime, typing, base64, hashlib +- External Python libraries: loguru, tqdm Usage: ------ The script can be executed directly from the command line. Below is the usage syntax: - Usage: convert_to_header.py [output_file] [options] + Usage: byte_convertor.py [output_file] [options] Modes: ------- @@ -49,27 +52,32 @@ --array_type : Set the type of the array (default: unsigned char). --comment_style : Set the comment style (default: C). --compress : Compress the data in the header file. - --format : Set the format of the array data (default: hex). + --format : Set the format of the array data (default: hex). --start : Set the start byte for conversion. --end : Set the end byte for conversion. --no_protect : Do not include #ifndef protection macros. - --cpp_class : Generate a simple C++ class wrapper. + --cpp_class : Generate a simple C++ class wrapper with the specified class name. --split_size : Split the output into multiple headers with this max size. + --verify : Verify data integrity after conversion. Options for 'to_file': ----------------------- --decompress : Decompress the data when converting back to a file. + --verify : Verify data integrity after conversion. Examples: --------- 1. Convert a binary file to a C header file: - $ python3 convert_to_header.py to_header my_binary.bin my_header.h --compress --array_name my_array + $ python3 byte_convertor.py to_header my_binary.bin my_header.h --compress --array_name my_array 2. Convert a C header file back to a binary file: - $ python3 convert_to_header.py to_file my_header.h my_binary.bin --decompress + $ python3 byte_convertor.py to_file my_header.h my_binary.bin --decompress 3. Split a large binary file into multiple headers, each with a maximum size of 1024 bytes: - $ python3 convert_to_header.py to_header large_binary.bin --split_size 1024 + $ python3 byte_convertor.py to_header large_binary.bin --split_size 1024 + +4. Convert with base64 format and generate a C++ class wrapper: + $ python3 byte_convertor.py to_header data.bin data.h --format base64 --cpp_class DataWrapper License: -------- @@ -82,14 +90,58 @@ noninfringement. In no event shall the authors be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the script or the use or other dealings in the script. - """ import sys import os import zlib +import base64 +import hashlib from datetime import datetime from typing import Optional, List, Tuple +from loguru import logger +from tqdm import tqdm + + +def setup_logging() -> None: + """ + Configure loguru for logging. + """ + logger.remove() # Remove default logger + logger.add( + "byte_convertor.log", + rotation="10 MB", + retention="7 days", + compression="zip", + enqueue=True, + encoding="utf-8", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}", + ) + logger.add( + sys.stdout, + level="INFO", + format="{message}", + ) + + +class ByteConvertorError(Exception): + """Custom exception class for Byte Convertor errors.""" + pass + + +def compute_checksum(data: bytes) -> str: + """ + Compute SHA256 checksum of given data. + + Args: + data (bytes): Data to compute checksum for. + + Returns: + str: SHA256 checksum as hexadecimal string. + """ + sha256 = hashlib.sha256() + sha256.update(data) + return sha256.hexdigest() def convert_file_to_array( @@ -105,27 +157,45 @@ def convert_file_to_array( filename (str): Path to the binary file. start (int): Start byte for conversion. Defaults to 0. end (Optional[int]): End byte for conversion. Defaults to None (end of file). - data_format (str): Format of the array data ('hex', 'bin', 'dec'). Defaults to 'hex'. + data_format (str): Format of the array data ('hex', 'bin', 'dec', 'base64'). Defaults to 'hex'. Returns: str: C-style array string. + + Raises: + ValueError: If unsupported data format is provided. + ByteConvertorError: If file reading fails. """ - with open(filename, 'rb') as file: - data = file.read()[start:end] + try: + with open(filename, 'rb') as file: + data = file.read()[start:end] + logger.debug( + f"Read {len(data)} bytes from {filename} (bytes {start} to {end})") + except IOError as e: + logger.error(f"Failed to read file {filename}: {e}") + raise ByteConvertorError(f"Failed to read file {filename}: {e}") from e if data_format == 'hex': - return ', '.join(f'0x{b:02X}' for b in data) + array_str = ', '.join(f'0x{b:02X}' for b in data) elif data_format == 'bin': - return ', '.join(f'0b{b:08b}' for b in data) + array_str = ', '.join(f'0b{b:08b}' for b in data) elif data_format == 'dec': - return ', '.join(f'{b}' for b in data) + array_str = ', '.join(f'{b}' for b in data) + elif data_format == 'base64': + array_str = f'"{base64.b64encode(data).decode()}"' else: + logger.error(f"Unsupported format: {data_format}") raise ValueError(f"Unsupported format: {data_format}") + logger.debug(f"Converted data to {data_format} format") + return array_str + def convert_array_to_file( array_data: str, - output_filename: str + output_filename: str, + data_format: str = 'hex', + decompress: bool = False ) -> None: """ Convert a C-style array string back to a binary file. @@ -133,38 +203,98 @@ def convert_array_to_file( Args: array_data (str): C-style array string. output_filename (str): Path to the output binary file. - """ - byte_values = [ - int(b.strip(), 16 if '0x' in b else 2 if '0b' in b else 10) - for b in array_data.split(',') - ] - - with open(output_filename, 'wb') as file: - file.write(bytes(byte_values)) + data_format (str): Format of the array data ('hex', 'bin', 'dec', 'base64'). + decompress (bool): Whether to decompress the data. Defaults to False. + Raises: + ValueError: If unsupported data format is provided. + ByteConvertorError: If writing to file fails. + """ + try: + if data_format == 'hex': + byte_values = bytes(int(b.strip(), 16) + for b in array_data.split(',')) + elif data_format == 'bin': + byte_values = bytes(int(b.strip(), 2) + for b in array_data.split(',')) + elif data_format == 'dec': + byte_values = bytes(int(b.strip(), 10) + for b in array_data.split(',')) + elif data_format == 'base64': + byte_values = base64.b64decode(array_data.strip('"')) + else: + logger.error(f"Unsupported format: {data_format}") + raise ValueError(f"Unsupported format: {data_format}") + + logger.debug( + f"Converted array data from {data_format} format to bytes") + except Exception as e: + logger.error(f"Failed to parse array data: {e}") + raise ByteConvertorError(f"Failed to parse array data: {e}") from e -def extract_array_data_from_header(header_filename: str) -> str: + if decompress: + try: + byte_values = zlib.decompress(byte_values) + logger.debug("Decompressed data using zlib") + except zlib.error as e: + logger.error(f"Decompression failed: {e}") + raise ByteConvertorError(f"Decompression failed: {e}") from e + + try: + with open(output_filename, 'wb') as file: + file.write(byte_values) + logger.info( + f"Successfully wrote {len(byte_values)} bytes to {output_filename}") + except IOError as e: + logger.error(f"Failed to write to file {output_filename}: {e}") + raise ByteConvertorError( + f"Failed to write to file {output_filename}: {e}") from e + + +def extract_array_data_from_header(header_filename: str, array_name: str = "resource_data") -> Tuple[str, str]: """ - Extract the array data from a C header file. + Extract the array data and its format from a C header file. Args: header_filename (str): Path to the C header file. + array_name (str): Name of the array variable to extract. Returns: - str: Extracted array data string. + Tuple[str, str]: Extracted array data string and its format. Raises: ValueError: If no array data found in the header file. + ByteConvertorError: If file reading fails. """ - with open(header_filename, 'r', encoding='utf-8') as file: - lines = file.readlines() - - for line in lines: - if 'resource_data[]' in line: - array_data = line.split('{')[1].split('}')[0].strip() - return array_data + try: + with open(header_filename, 'r', encoding='utf-8') as file: + content = file.read() + logger.debug(f"Read content from {header_filename}") + except IOError as e: + logger.error(f"Failed to read header file {header_filename}: {e}") + raise ByteConvertorError( + f"Failed to read header file {header_filename}: {e}") from e + + import re + pattern = re.compile( + rf'const\s+\w+\s+{array_name}\[\]\s*=\s*\{{([^}}]+)\}};') + match = pattern.search(content) + if not match: + logger.error(f"No {array_name}[] found in the header file.") + raise ValueError(f"No {array_name}[] found in the header file.") + + array_data = match.group(1).strip() + if '"' in array_data: + data_format = 'base64' + elif any(b.startswith('0x') for b in array_data.split(',')): + data_format = 'hex' + elif any(b.startswith('0b') for b in array_data.split(',')): + data_format = 'bin' + else: + data_format = 'dec' - raise ValueError("No resource_data[] found in the header file.") + logger.debug(f"Extracted array data in {data_format} format") + return array_data, data_format def generate_macro_name(filename: str) -> str: @@ -178,7 +308,9 @@ def generate_macro_name(filename: str) -> str: str: Generated macro name. """ name, _ = os.path.splitext(os.path.basename(filename)) - return f'RESOURCE_{name.upper()}_H' + macro = f'{name.upper()}_H' + logger.debug(f"Generated macro name: {macro}") + return macro def generate_output_name(input_file: str, extension: str) -> str: @@ -193,7 +325,9 @@ def generate_output_name(input_file: str, extension: str) -> str: str: Generated output file name. """ name, _ = os.path.splitext(input_file) - return f"{name}{extension}" + output_name = f"{name}{extension}" + logger.debug(f"Generated output file name: {output_name}") + return output_name def convert_to_header( @@ -209,7 +343,9 @@ def convert_to_header( end: Optional[int] = None, protect: bool = True, cpp_class: bool = False, - split_size: Optional[int] = None + split_size: Optional[int] = None, + verify: bool = False, + class_name: Optional[str] = None ) -> None: """ Convert a binary file to a C header file. @@ -222,71 +358,141 @@ def convert_to_header( array_type (str): Data type of the array in the header file. Defaults to "unsigned char". comment_style (str): Comment style ("C" or "CPP"). Defaults to "C". compress (bool): Whether to compress the data. Defaults to False. - data_format (str): Format of the array data ("hex", "bin", "dec"). Defaults to 'hex'. + data_format (str): Format of the array data ("hex", "bin", "dec", "base64"). Defaults to 'hex'. start (int): Start byte for conversion. Defaults to 0. end (Optional[int]): End byte for conversion. Defaults to None. protect (bool): Whether to include #ifndef protection macros. Defaults to True. cpp_class (bool): Whether to generate a C++ class wrapper. Defaults to False. split_size (Optional[int]): Maximum size (in bytes) of each output header. Defaults to None. + verify (bool): Whether to verify data integrity after conversion. Defaults to False. + class_name (Optional[str]): Name of the C++ class if cpp_class is True. Defaults to array_name.capitalize(). """ - with open(input_file, 'rb') as file: - data = file.read()[start:end] - - original_size = len(data) - + original_data = None + try: + with open(input_file, 'rb') as file: + original_data = file.read()[start:end] + logger.info( + f"Read {len(original_data)} bytes from {input_file} (bytes {start} to {end})") + except IOError as e: + logger.error(f"Failed to read file {input_file}: {e}") + raise ByteConvertorError( + f"Failed to read file {input_file}: {e}") from e + + original_checksum = compute_checksum(original_data) + logger.debug(f"Original data checksum: {original_checksum}") + + data = original_data if compress: data = zlib.compress(data) + logger.info( + f"Compressed data from {len(original_data)} to {len(data)} bytes") array_name = f"{array_name}_compressed" parts = [data[i:i+split_size] for i in range(0, len(data), split_size)] if split_size else [data] + logger.info(f"Splitting data into {len(parts)} part(s)") if output_header is None: output_header = generate_output_name(input_file, ".h") - macro_name = generate_macro_name(input_file) + macro_name = generate_macro_name(output_header) comment_start, comment_end = ( "/*", "*/") if comment_style == "C" else ("//", "") - for i, part in enumerate(parts): + for i, part in enumerate(tqdm(parts, desc="Generating header parts")): part_name = f"{array_name}_part_{i}" if len(parts) > 1 else array_name part_header = output_header.replace( '.h', f'_part_{i}.h') if len(parts) > 1 else output_header - array_data = ', '.join(f'0x{b:02X}' for b in part) - - with open(part_header, 'w', encoding='utf-8') as header_file: - if protect: - header_file.write(f'#ifndef {macro_name}\n') - header_file.write(f'#define {macro_name}\n\n') - header_file.write(f'{comment_start} Generated from {input_file}\n') - header_file.write( - f'{comment_start} Original size: {original_size} bytes\n') - header_file.write( - f'{comment_start} Compressed: {"Yes" if compress else "No"}\n') - header_file.write( - f'{comment_start} Generated on: {datetime.now()}\n{comment_end}\n\n') - header_file.write( - f'const {array_type} {part_name}[] = {{ {array_data} }};\n') - header_file.write( - f'const unsigned int {size_name}_{i} = sizeof({part_name});\n') - if protect: - header_file.write('#endif\n') - - if cpp_class and i == len(parts) - 1: - header_file.write('\n') - header_file.write('class {array_name.capitalize()}Wrapper {\n') - header_file.write('public:\n') + if data_format == 'base64': + array_str = f'"{base64.b64encode(part).decode()}"' + else: + array_str = ', '.join(f'0x{b:02X}' for b in part) if data_format == 'hex' else \ + ', '.join(f'0b{b:08b}' for b in part) if data_format == 'bin' else \ + ', '.join(f'{b}' for b in part) + + try: + with open(part_header, 'w', encoding='utf-8') as header_file: + if protect: + header_file.write(f'#ifndef {macro_name.upper()}_{i}\n') + header_file.write(f'#define {macro_name.upper()}_{i}\n\n') + header_file.write( + f'{comment_start} Generated from {input_file} on {datetime.now()}{comment_end}\n') + header_file.write( + f'{comment_start} Original size: {len(original_data)} bytes{comment_end}\n') + header_file.write( + f'{comment_start} Compressed: {"Yes" if compress else "No"}{comment_end}\n') header_file.write( - f' const {array_type}* data() const {{ return {array_name}; }}\n') + f'{comment_start} Data format: {data_format.upper()}{comment_end}\n') header_file.write( - f' unsigned int size() const {{ return {size_name}; }}\n') - header_file.write('};\n') + f'{comment_start} Part {i+1} of {len(parts)}{comment_end}\n\n') + header_file.write( + f'const {array_type} {part_name}[] = {{ {array_str} }};\n') + header_file.write( + f'const unsigned int {size_name}_{i} = sizeof({part_name});\n') + if protect: + header_file.write( + f'\n#endif /* {macro_name.upper()}_{i} */\n') + + if cpp_class and i == len(parts) - 1: + cpp_cls_name = class_name if class_name else array_name.capitalize() + header_file.write(f'\nclass {cpp_cls_name} {{\n') + header_file.write('public:\n') + header_file.write( + f' const {array_type}* data() const {{ return {part_name}; }}\n') + header_file.write( + f' unsigned int size() const {{ return {size_name}_{i}; }}\n') + header_file.write('};\n') + logger.info(f"Generated header file: {part_header}") + except IOError as e: + logger.error(f"Failed to write header file {part_header}: {e}") + raise ByteConvertorError( + f"Failed to write header file {part_header}: {e}") from e + + if verify: + try: + reconstructed_data = bytearray() + for i in range(len(parts)): + part_header = output_header.replace( + '.h', f'_part_{i}.h') if len(parts) > 1 else output_header + array_data, fmt = extract_array_data_from_header( + part_header, part_name) + if fmt == 'base64': + part_data = base64.b64decode(array_data.strip('"')) + elif fmt == 'hex': + part_data = bytes(int(b.strip(), 16) + for b in array_data.split(',')) + elif fmt == 'bin': + part_data = bytes(int(b.strip(), 2) + for b in array_data.split(',')) + elif fmt == 'dec': + part_data = bytes(int(b.strip(), 10) + for b in array_data.split(',')) + else: + raise ValueError( + f"Unsupported format during verification: {fmt}") + reconstructed_data.extend(part_data) + if compress: + reconstructed_data = zlib.decompress(reconstructed_data) + reconstructed_checksum = compute_checksum(reconstructed_data) + if original_checksum == reconstructed_checksum: + logger.info( + "Data integrity verification successful. Checksums match.") + else: + logger.error( + "Data integrity verification failed. Checksums do not match.") + raise ByteConvertorError( + "Data integrity verification failed. Checksums do not match.") + except Exception as e: + logger.error(f"Verification failed: {e}") + raise ByteConvertorError(f"Verification failed: {e}") from e def convert_to_file( input_header: str, output_file: Optional[str] = None, - decompress: bool = False + decompress: bool = False, + data_format: Optional[str] = None, + verify: bool = False ) -> None: """ Convert a C header file back to a binary file. @@ -295,19 +501,46 @@ def convert_to_file( input_header (str): Path to the C header file. output_file (Optional[str]): Path to the output binary file. Defaults to None. decompress (bool): Whether to decompress the data. Defaults to False. + data_format (Optional[str]): Format of the array data ('hex', 'bin', 'dec', 'base64'). If None, auto-detect. + verify (bool): Whether to verify data integrity after conversion. Defaults to False. + + Raises: + ByteConvertorError: If conversion fails. """ - array_data = extract_array_data_from_header(input_header) + try: + array_data, detected_format = extract_array_data_from_header( + input_header) + logger.debug(f"Detected data format: {detected_format}") + if data_format is None: + data_format = detected_format + else: + logger.debug( + f"Overriding detected format with user-specified format: {data_format}") + except Exception as e: + logger.error(f"Failed to extract array data from {input_header}: {e}") + raise ByteConvertorError( + f"Failed to extract array data from {input_header}: {e}") from e if output_file is None: output_file = generate_output_name(input_header, ".bin") - raw_data = bytes(int(b.strip(), 16) for b in array_data.split(',')) - - if decompress: - raw_data = zlib.decompress(raw_data) - - with open(output_file, 'wb') as file: - file.write(raw_data) + try: + convert_array_to_file(array_data, output_file, data_format, decompress) + except ByteConvertorError as e: + logger.error(f"Conversion to file failed: {e}") + raise + + if verify: + try: + with open(output_file, 'rb') as file: + converted_data = file.read() + original_checksum = compute_checksum(converted_data) + logger.debug(f"Converted data checksum: {original_checksum}") + logger.info("Data integrity verification completed.") + # Additional verification logic can be added here if source data is available + except Exception as e: + logger.error(f"Verification failed: {e}") + raise ByteConvertorError(f"Verification failed: {e}") from e def parse_args(args: List[str]) -> Tuple[str, str, Optional[str], dict]: @@ -320,53 +553,68 @@ def parse_args(args: List[str]) -> Tuple[str, str, Optional[str], dict]: Returns: Tuple[str, str, Optional[str], dict]: Parsed mode, input file, output file, and options. """ - mode = args[1] - input_file = args[2] - output_file = args[3] if len( - args) > 3 and not args[3].startswith("--") else None - - options = { - "array_name": "resource_data", - "size_name": "resource_size", - "array_type": "unsigned char", - "comment_style": "C", - "compress": False, - "data_format": 'hex', - "start": 0, - "end": None, - "protect": True, - "cpp_class": False, - "split_size": None, - "decompress": False - } - - for i in range(3, len(args)): - if args[i] == "--array_name" and i + 1 < len(args): - options["array_name"] = args[i + 1] - elif args[i] == "--size_name" and i + 1 < len(args): - options["size_name"] = args[i + 1] - elif args[i] == "--array_type" and i + 1 < len(args): - options["array_type"] = args[i + 1] - elif args[i] == "--comment_style" and i + 1 < len(args): - options["comment_style"] = args[i + 1].upper() - elif args[i] == "--compress": - options["compress"] = True - elif args[i] == "--format" and i + 1 < len(args): - options["data_format"] = args[i + 1] - elif args[i] == "--start" and i + 1 < len(args): - options["start"] = int(args[i + 1]) - elif args[i] == "--end" and i + 1 < len(args): - options["end"] = int(args[i + 1]) - elif args[i] == "--no_protect": - options["protect"] = False - elif args[i] == "--cpp_class": - options["cpp_class"] = True - elif args[i] == "--split_size" and i + 1 < len(args): - options["split_size"] = int(args[i + 1]) - elif args[i] == "--decompress": - options["decompress"] = True - - return mode, input_file, output_file, options + import argparse + + parser = argparse.ArgumentParser( + description='Byte Convertor: Binary <-> C Header Converter') + subparsers = parser.add_subparsers( + dest='mode', required=True, help='Modes of operation') + + # to_header parser + parser_to_header = subparsers.add_parser( + 'to_header', help='Convert a binary file to a C header file') + parser_to_header.add_argument( + 'input_file', type=str, help='Path to the binary file') + parser_to_header.add_argument( + 'output_file', type=str, nargs='?', default=None, help='Path to the output header file') + parser_to_header.add_argument('--array_name', type=str, default="resource_data", + help='Name of the array (default: resource_data)') + parser_to_header.add_argument('--size_name', type=str, default="resource_size", + help='Name of the size variable (default: resource_size)') + parser_to_header.add_argument('--array_type', type=str, default="unsigned char", + help='Type of the array (default: unsigned char)') + parser_to_header.add_argument('--comment_style', type=str, choices=[ + 'C', 'CPP'], default="C", help='Comment style (default: C)') + parser_to_header.add_argument( + '--compress', action='store_true', help='Compress the data in the header file') + parser_to_header.add_argument('--format', type=str, choices=[ + 'hex', 'bin', 'dec', 'base64'], default='hex', help='Format of the array data (default: hex)') + parser_to_header.add_argument( + '--start', type=int, default=0, help='Start byte for conversion (default: 0)') + parser_to_header.add_argument( + '--end', type=int, default=None, help='End byte for conversion (default: None)') + parser_to_header.add_argument( + '--no_protect', action='store_true', help='Do not include #ifndef protection macros') + parser_to_header.add_argument('--cpp_class', type=str, nargs='?', const="Wrapper", + default=None, help='Generate a C++ class wrapper with optional class name') + parser_to_header.add_argument('--split_size', type=int, default=None, + help='Split the output into multiple headers with this max size in bytes') + parser_to_header.add_argument( + '--verify', action='store_true', help='Verify data integrity after conversion') + + # to_file parser + parser_to_file = subparsers.add_parser( + 'to_file', help='Convert a C header file back to a binary file') + parser_to_file.add_argument( + 'input_header', type=str, help='Path to the C header file') + parser_to_file.add_argument( + 'output_file', type=str, nargs='?', default=None, help='Path to the output binary file') + parser_to_file.add_argument('--decompress', action='store_true', + help='Decompress the data when converting back to a file') + parser_to_file.add_argument('--format', type=str, choices=[ + 'hex', 'bin', 'dec', 'base64'], default=None, help='Format of the array data (auto-detect if not specified)') + parser_to_file.add_argument( + '--verify', action='store_true', help='Verify data integrity after conversion') + + parsed_args = parser.parse_args(args[1:]) + + options = vars(parsed_args) + mode = options.pop('mode') + if mode == 'to_header': + class_name = options.pop('cpp_class') + options['cpp_class'] = bool(class_name) + options['class_name'] = class_name + return mode, options.pop('input_file'), options.pop('output_file'), options def main() -> None: @@ -376,59 +624,55 @@ def main() -> None: Raises: SystemExit: If incorrect usage or mode is provided. """ - if len(sys.argv) < 3: - print( - "Usage: convert_to_header.py [output_file] [options]" - ) - print("Modes:") - print(" to_header - Convert a binary file to a C header file") - print(" to_file - Convert a C header file back to a binary file") - print("Options for 'to_header':") - print(" --array_name Set the name of the array (default: resource_data)") - print(" --size_name Set the name of the size variable (default: resource_size)") - print(" --array_type Set the type of the array (default: unsigned char)") - print(" --comment_style Set the comment style (default: C)") - print(" --compress Compress the data in the header file") - print( - " --format Set the format of the array data (default: hex)" - ) - print(" --start Set the start byte for conversion") - print(" --end Set the end byte for conversion") - print(" --no_protect Do not include #ifndef protection macros") - print(" --cpp_class Generate a simple C++ class wrapper") - print(" --split_size Split the output into multiple headers with this max size") - print("Options for 'to_file':") - print(" --decompress Decompress the data when converting back to a file") + setup_logging() + args = sys.argv + try: + mode, input_file, output_file, options = parse_args(args) + except Exception as e: + logger.error(f"Argument parsing failed: {e}") sys.exit(1) - mode, input_file, output_file, options = parse_args(sys.argv) - - if mode == "to_header": - convert_to_header( - input_file=input_file, - output_header=output_file, - array_name=options["array_name"], - size_name=options["size_name"], - array_type=options["array_type"], - comment_style=options["comment_style"], - compress=options["compress"], - data_format=options["data_format"], - start=options["start"], - end=options["end"], - protect=options["protect"], - cpp_class=options["cpp_class"], - split_size=options["split_size"], - ) - elif mode == "to_file": - convert_to_file( - input_header=input_file, - output_file=output_file, - decompress=options["decompress"], - ) - else: - print(f"Unknown mode: {mode}") + try: + if mode == "to_header": + convert_to_header( + input_file=input_file, + output_header=output_file, + array_name=options.get("array_name", "resource_data"), + size_name=options.get("size_name", "resource_size"), + array_type=options.get("array_type", "unsigned char"), + comment_style=options.get("comment_style", "C"), + compress=options.get("compress", False), + data_format=options.get("format", 'hex'), + start=options.get("start", 0), + end=options.get("end", None), + protect=not options.get("no_protect", False), + cpp_class=options.get("cpp_class", False), + split_size=options.get("split_size", None), + verify=options.get("verify", False), + class_name=options.get("class_name") + ) + elif mode == "to_file": + convert_to_file( + input_header=input_file, + output_file=output_file, + decompress=options.get("decompress", False), + data_format=options.get("format", None), + verify=options.get("verify", False) + ) + else: + logger.error(f"Unknown mode: {mode}") + sys.exit(1) + except ByteConvertorError as e: + logger.error(f"Conversion failed: {e}") + sys.exit(1) + except Exception as e: + logger.exception(f"An unexpected error occurred: {e}") sys.exit(1) if __name__ == "__main__": - main() + try: + main() + except KeyboardInterrupt: + logger.warning("Operation interrupted by user.") + sys.exit(0) diff --git a/modules/lithium.pytools/tools/cbuilder.py b/modules/lithium.pytools/tools/cbuilder.py index 2805c10c..a13da0c2 100644 --- a/modules/lithium.pytools/tools/cbuilder.py +++ b/modules/lithium.pytools/tools/cbuilder.py @@ -10,6 +10,9 @@ - Allows specifying custom build options - Supports cleaning, testing, and generating documentation - Configurable via command-line arguments +- Enhanced logging with Loguru +- Improved exception handling +- Additional functionalities: build reporting and environment setup Usage: python build_system_helper.py --builder cmake --source_dir src --build_dir build --install --test @@ -23,11 +26,14 @@ """ import argparse +from datetime import datetime import subprocess import sys import os from pathlib import Path -from typing import Literal, List, Optional +from typing import Literal, List, Optional, Dict + +from loguru import logger class BuildHelperBase: @@ -39,8 +45,9 @@ class BuildHelperBase: build_dir (Path): Path to the build directory. install_prefix (Path): Directory prefix where the project will be installed. options (Optional[List[str]]): Additional options for the build system. - env_vars (Optional[dict]): Environment variables to set for the build process. + env_vars (Optional[Dict[str, str]]): Environment variables to set for the build process. verbose (bool): Flag to enable verbose output during command execution. + parallel (int): Number of parallel jobs to use for building. Methods: run_command: Executes shell commands with optional environment variables and verbosity. @@ -53,8 +60,9 @@ def __init__( build_dir: Path, install_prefix: Path = None, # type: ignore options: Optional[List[str]] = None, - env_vars: Optional[dict] = None, + env_vars: Optional[Dict[str, str]] = None, verbose: bool = False, + parallel: int = 4, ): self.source_dir = source_dir self.build_dir = build_dir @@ -62,6 +70,7 @@ def __init__( self.options = options or [] self.env_vars = env_vars or {} self.verbose = verbose + self.parallel = parallel def run_command(self, *cmd: str): """ @@ -71,21 +80,28 @@ def run_command(self, *cmd: str): cmd (str): The command and its arguments to run as separate strings. Raises: - SystemExit: Exits with the command's return code if it fails. + subprocess.CalledProcessError: If the command execution fails. """ - print(f"Running: {' '.join(cmd)}") - env = os.environ.copy() - env.update(self.env_vars) + command_str = ' '.join(cmd) + logger.debug(f"Executing command: {command_str}") try: result = subprocess.run( - cmd, check=True, capture_output=True, text=True, env=env) - if self.verbose or result.returncode != 0: - print(result.stdout) + cmd, + check=True, + capture_output=True, + text=True, + env=os.environ | self.env_vars + ) + if self.verbose: + logger.info(result.stdout) if result.stderr: - print(result.stderr, file=sys.stderr) + logger.warning(result.stderr) except subprocess.CalledProcessError as e: - print(f"Error running command: {e}", file=sys.stderr) - sys.exit(e.returncode) + logger.error(f"Command failed: {command_str}") + logger.error(f"Return Code: {e.returncode}") + logger.error(f"Output: {e.output}") + logger.error(f"Error Output: {e.stderr}") + raise def clean(self): """ @@ -95,12 +111,19 @@ def clean(self): for a fresh build by removing all existing files and directories inside the build path. """ if self.build_dir.exists(): - for item in self.build_dir.iterdir(): - if item.is_dir(): - self.run_command("rm", "-rf", str(item)) - else: - item.unlink() - print(f"Cleaned: {self.build_dir}") + logger.info(f"Cleaning build directory: {self.build_dir}") + try: + for item in self.build_dir.iterdir(): + if item.is_dir(): + self.run_command("rm", "-rf", str(item)) + else: + item.unlink() + logger.success( + f"Build directory {self.build_dir} cleaned successfully.") + except Exception as e: + logger.exception( + f"Failed to clean build directory {self.build_dir}: {e}") + raise class CMakeBuilder(BuildHelperBase): @@ -114,7 +137,7 @@ class CMakeBuilder(BuildHelperBase): build_type (Literal["Debug", "Release"]): Type of build (Debug or Release). install_prefix (Path): Directory prefix where the project will be installed. cmake_options (Optional[List[str]]): Additional options for CMake. - env_vars (Optional[dict]): Environment variables to set for the build process. + env_vars (Optional[Dict[str, str]]): Environment variables to set for the build process. verbose (bool): Flag to enable verbose output during command execution. parallel (int): Number of parallel jobs to use for building. @@ -124,6 +147,7 @@ class CMakeBuilder(BuildHelperBase): install: Installs the project to the specified prefix. test: Runs tests using CTest with detailed output on failure. generate_docs: Generates documentation using the specified documentation target. + generate_build_report: Generates a build report summarizing the build process. """ def __init__( @@ -134,15 +158,14 @@ def __init__( build_type: Literal["Debug", "Release"] = "Debug", install_prefix: Path = None, # type: ignore cmake_options: Optional[List[str]] = None, - env_vars: Optional[dict] = None, + env_vars: Optional[Dict[str, str]] = None, verbose: bool = False, parallel: int = 4, ): - super().__init__(source_dir, build_dir, - install_prefix, cmake_options, env_vars, verbose) + super().__init__(source_dir, build_dir, install_prefix, + cmake_options, env_vars, verbose, parallel) self.generator = generator self.build_type = build_type - self.parallel = parallel def configure(self): """ @@ -157,9 +180,11 @@ def configure(self): f"-G{self.generator}", f"-DCMAKE_BUILD_TYPE={self.build_type}", f"-DCMAKE_INSTALL_PREFIX={self.install_prefix}", - str(self.source_dir), + str(self.source_dir) ] + self.options + logger.info("Configuring CMake project...") self.run_command(*cmake_args) + logger.success("CMake configuration completed.") def build(self, target: str = ""): """ @@ -174,7 +199,9 @@ def build(self, target: str = ""): str(self.build_dir), "--parallel", str(self.parallel)] if target: build_cmd += ["--target", target] + logger.info("Building the project with CMake...") self.run_command(*build_cmd) + logger.success("Build completed successfully.") def install(self): """ @@ -183,7 +210,10 @@ def install(self): This function runs the CMake install command, which installs the built artifacts to the directory specified by the install prefix. """ + logger.info("Installing the project...") self.run_command("cmake", "--install", str(self.build_dir)) + logger.success( + f"Project installed to {self.install_prefix} successfully.") def test(self): """ @@ -192,8 +222,15 @@ def test(self): This function runs CTest to execute the project's tests, providing detailed output if any tests fail, making it easier to diagnose issues. """ - self.run_command("ctest", "--output-on-failure", "-C", - self.build_type, "-S", str(self.build_dir)) + logger.info("Running tests with CTest...") + try: + self.run_command("ctest", "--output-on-failure", + "-C", self.build_type, "-S", str(self.build_dir)) + logger.success("All tests passed successfully.") + except subprocess.CalledProcessError: + logger.error( + "Some tests failed. Check the output above for details.") + raise def generate_docs(self, doc_target: str = "doc"): """ @@ -204,7 +241,34 @@ def generate_docs(self, doc_target: str = "doc"): This function builds the specified documentation target using the CMake build command. """ + logger.info(f"Generating documentation using target '{doc_target}'...") self.build(doc_target) + logger.success("Documentation generated successfully.") + + def generate_build_report(self, report_file: Optional[Path] = None): + """ + Generates a build report summarizing the build process. + + Args: + report_file (Optional[Path]): Path to save the build report. If None, defaults to 'build_report.txt' in build_dir. + """ + report_file = report_file or self.build_dir / "build_report.txt" + logger.info(f"Generating build report at {report_file}...") + try: + with open(report_file, 'w') as f: + f.write(f"CMake Build Report - {datetime.now()}\n") + f.write(f"Source Directory: {self.source_dir}\n") + f.write(f"Build Directory: {self.build_dir}\n") + f.write(f"Generator: {self.generator}\n") + f.write(f"Build Type: {self.build_type}\n") + f.write(f"Install Prefix: {self.install_prefix}\n") + f.write(f"Additional Options: {' '.join(self.options)}\n") + f.write(f"Environment Variables: {self.env_vars}\n") + f.write(f"Parallel Jobs: {self.parallel}\n") + logger.success(f"Build report generated at {report_file}.") + except Exception as e: + logger.error(f"Failed to generate build report: {e}") + raise class MesonBuilder(BuildHelperBase): @@ -217,7 +281,7 @@ class MesonBuilder(BuildHelperBase): build_type (Literal["debug", "release"]): Type of build (debug or release). install_prefix (Path): Directory prefix where the project will be installed. meson_options (Optional[List[str]]): Additional options for Meson. - env_vars (Optional[dict]): Environment variables to set for the build process. + env_vars (Optional[Dict[str, str]]): Environment variables to set for the build process. verbose (bool): Flag to enable verbose output during command execution. parallel (int): Number of parallel jobs to use for building. @@ -227,6 +291,7 @@ class MesonBuilder(BuildHelperBase): install: Installs the project to the specified prefix. test: Runs tests using Meson, with error logs printed on failures. generate_docs: Generates documentation using the specified documentation target. + generate_build_report: Generates a build report summarizing the build process. """ def __init__( @@ -236,14 +301,13 @@ def __init__( build_type: Literal["debug", "release"] = "debug", install_prefix: Path = None, # type: ignore meson_options: Optional[List[str]] = None, - env_vars: Optional[dict] = None, + env_vars: Optional[Dict[str, str]] = None, verbose: bool = False, parallel: int = 4, ): - super().__init__(source_dir, build_dir, - install_prefix, meson_options, env_vars, verbose) + super().__init__(source_dir, build_dir, install_prefix, + meson_options, env_vars, verbose, parallel) self.build_type = build_type - self.parallel = parallel def configure(self): """ @@ -259,9 +323,11 @@ def configure(self): str(self.build_dir), str(self.source_dir), f"--buildtype={self.build_type}", - f"--prefix={self.install_prefix}", + f"--prefix={self.install_prefix}" ] + self.options + logger.info("Configuring Meson project...") self.run_command(*meson_args) + logger.success("Meson configuration completed.") def build(self, target: str = ""): """ @@ -277,7 +343,9 @@ def build(self, target: str = ""): str(self.build_dir), f"-j{self.parallel}"] if target: build_cmd += ["--target", target] + logger.info("Building the project with Meson...") self.run_command(*build_cmd) + logger.success("Build completed successfully.") def install(self): """ @@ -286,7 +354,10 @@ def install(self): This function runs the Meson install command, which installs the built artifacts to the directory specified by the install prefix. """ + logger.info("Installing the project...") self.run_command("meson", "install", "-C", str(self.build_dir)) + logger.success( + f"Project installed to {self.install_prefix} successfully.") def test(self): """ @@ -295,8 +366,15 @@ def test(self): This function runs Meson tests, displaying error logs for any failed tests to provide detailed feedback and aid in debugging. """ - self.run_command("meson", "test", "-C", - str(self.build_dir), "--print-errorlogs") + logger.info("Running tests with Meson...") + try: + self.run_command("meson", "test", "-C", + str(self.build_dir), "--print-errorlogs") + logger.success("All tests passed successfully.") + except subprocess.CalledProcessError: + logger.error( + "Some tests failed. Check the output above for details.") + raise def generate_docs(self, doc_target: str = "doc"): """ @@ -307,7 +385,184 @@ def generate_docs(self, doc_target: str = "doc"): This function builds the specified documentation target using the Meson build system. """ + logger.info(f"Generating documentation using target '{doc_target}'...") self.build(doc_target) + logger.success("Documentation generated successfully.") + + def generate_build_report(self, report_file: Optional[Path] = None): + """ + Generates a build report summarizing the build process. + + Args: + report_file (Optional[Path]): Path to save the build report. If None, defaults to 'build_report.txt' in build_dir. + """ + report_file = report_file or self.build_dir / "build_report.txt" + logger.info(f"Generating build report at {report_file}...") + try: + with open(report_file, 'w') as f: + f.write(f"Meson Build Report - {datetime.now()}\n") + f.write(f"Source Directory: {self.source_dir}\n") + f.write(f"Build Directory: {self.build_dir}\n") + f.write(f"Build Type: {self.build_type}\n") + f.write(f"Install Prefix: {self.install_prefix}\n") + f.write(f"Additional Options: {' '.join(self.options)}\n") + f.write(f"Environment Variables: {self.env_vars}\n") + f.write(f"Parallel Jobs: {self.parallel}\n") + logger.success(f"Build report generated at {report_file}.") + except Exception as e: + logger.error(f"Failed to generate build report: {e}") + raise + + +def parse_args(args: List[str]) -> argparse.Namespace: + """ + Parses command-line arguments. + + Args: + args (List[str]): List of command-line arguments. + + Returns: + argparse.Namespace: Parsed arguments. + """ + parser = argparse.ArgumentParser(description="Build System Helper Script") + parser.add_argument( + "--source_dir", + type=Path, + default=Path(".").resolve(), + help="Source directory" + ) + parser.add_argument( + "--build_dir", + type=Path, + default=Path("build").resolve(), + help="Build directory" + ) + parser.add_argument( + "--builder", + choices=["cmake", "meson"], + required=True, + help="Choose the build system" + ) + parser.add_argument( + "--generator", + choices=["Ninja", "Unix Makefiles"], + default="Ninja", + help="CMake generator to use" + ) + parser.add_argument( + "--build_type", + choices=["Debug", "Release", "debug", "release"], + default="Debug", + help="Build type" + ) + parser.add_argument( + "--target", + default="", + help="Specify a build target" + ) + parser.add_argument( + "--install", + action="store_true", + help="Install the project" + ) + parser.add_argument( + "--clean", + action="store_true", + help="Clean the build directory" + ) + parser.add_argument( + "--test", + action="store_true", + help="Run the tests" + ) + parser.add_argument( + "--cmake_options", + nargs="*", + default=[], + help="Custom CMake options (e.g. -DVAR=VALUE)" + ) + parser.add_argument( + "--meson_options", + nargs="*", + default=[], + help="Custom Meson options (e.g. -Dvar=value)" + ) + parser.add_argument( + "--generate_docs", + action="store_true", + help="Generate documentation" + ) + parser.add_argument( + "--env", + nargs="*", + default=[], + help="Set environment variables (e.g. VAR=value)" + ) + parser.add_argument( + "--verbose", + action="store_true", + help="Enable verbose output" + ) + parser.add_argument( + "--parallel", + type=int, + default=4, + help="Number of parallel jobs for building" + ) + return parser.parse_args(args) + + +def setup_logging(verbose: bool) -> None: + """ + Configures Loguru for logging. + + Args: + verbose (bool): Flag to enable verbose logging. + """ + logger.remove() + logger.add( + "build_helper.log", + rotation="5 MB", + retention="14 days", + compression="zip", + enqueue=True, + encoding="utf-8", + level="DEBUG", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}", + ) + if verbose: + logger.add( + sys.stdout, + level="DEBUG", + format="{message}", + ) + else: + logger.add( + sys.stdout, + level="INFO", + format="{message}", + ) + + +def parse_env_vars(env_list: List[str]) -> Dict[str, str]: + """ + Parses environment variables from a list of strings. + + Args: + env_list (List[str]): List of environment variable assignments (e.g., ["VAR=value"]). + + Returns: + Dict[str, str]: Dictionary of environment variables. + """ + env_vars = {} + for env in env_list: + if '=' in env: + key, value = env.split('=', 1) + env_vars[key] = value + else: + logger.warning( + f"Ignoring invalid environment variable format: {env}") + return env_vars def main(): @@ -317,58 +572,12 @@ def main(): This function parses command-line arguments to determine the build system (CMake or Meson), source and build directories, build options, and actions (clean, build, install, test, generate docs). It then initializes the appropriate builder class and performs the requested operations. - - Command-line Arguments: - --source_dir: Specifies the source directory of the project. - --build_dir: Specifies the build directory where build files and artifacts will be generated. - --builder: Specifies the build system to use ('cmake' or 'meson'). - --generator: Specifies the CMake generator (e.g., Ninja, Unix Makefiles) if using CMake. - --build_type: Specifies the build type ('Debug', 'Release', 'debug', 'release'). - --target: Specifies a specific build target to build. - --install: Flag to indicate that the project should be installed after building. - --clean: Flag to indicate that the build directory should be cleaned before building. - --test: Flag to indicate that tests should be run after building. - --cmake_options: Additional options for CMake. - --meson_options: Additional options for Meson. - --generate_docs: Flag to indicate that documentation should be generated. - --env: Environment variables to set during the build process. - --verbose: Enables verbose output during command execution. - --parallel: Number of parallel jobs to use for building. """ - parser = argparse.ArgumentParser(description="Build System Python Builder") - parser.add_argument("--source_dir", type=Path, - default=Path(".").resolve(), help="Source directory") - parser.add_argument("--build_dir", type=Path, - default=Path("build").resolve(), help="Build directory") - parser.add_argument( - "--builder", choices=["cmake", "meson"], required=True, help="Choose the build system") - parser.add_argument( - "--generator", choices=["Ninja", "Unix Makefiles"], default="Ninja", help="CMake generator to use") - parser.add_argument("--build_type", choices=[ - "Debug", "Release", "debug", "release"], default="Debug", help="Build type") - parser.add_argument("--target", default="", help="Specify a build target") - parser.add_argument("--install", action="store_true", - help="Install the project") - parser.add_argument("--clean", action="store_true", - help="Clean the build directory") - parser.add_argument("--test", action="store_true", help="Run the tests") - parser.add_argument("--cmake_options", nargs="*", default=[], - help="Custom CMake options (e.g. -DVAR=VALUE)") - parser.add_argument("--meson_options", nargs="*", default=[], - help="Custom Meson options (e.g. -Dvar=value)") - parser.add_argument("--generate_docs", action="store_true", - help="Generate documentation") - parser.add_argument("--env", nargs="*", default=[], - help="Set environment variables (e.g. VAR=value)") - parser.add_argument("--verbose", action="store_true", - help="Enable verbose output") - parser.add_argument("--parallel", type=int, default=4, - help="Number of parallel jobs for building") - - args = parser.parse_args() - - # Parse environment variables from the command line - env_vars = {var.split("=")[0]: var.split("=")[1] for var in args.env} + args = parse_args(sys.argv[1:]) + setup_logging(args.verbose) + env_vars = parse_env_vars(args.env) + + logger.debug(f"Parsed arguments: {args}") # Initialize the appropriate builder based on the specified build system if args.builder == "cmake": @@ -377,7 +586,8 @@ def main(): build_dir=args.build_dir, generator=args.generator, build_type=args.build_type, - cmake_options=args.cmake_options, + install_prefix=args.build_dir / "install", + options=args.cmake_options, env_vars=env_vars, verbose=args.verbose, parallel=args.parallel, @@ -387,34 +597,55 @@ def main(): source_dir=args.source_dir, build_dir=args.build_dir, build_type=args.build_type, - meson_options=args.meson_options, + install_prefix=args.build_dir / "install", + options=args.meson_options, env_vars=env_vars, verbose=args.verbose, parallel=args.parallel, ) + else: + logger.error(f"Unsupported builder: {args.builder}") + sys.exit(1) + + try: + # Perform cleaning if requested + if args.clean: + builder.clean() + + # Configure the build system + builder.configure() - # Perform cleaning if requested - if args.clean: - builder.clean() + # Build the project with the specified target + if args.target: + logger.info(f"Building target: {args.target}") + builder.build(args.target) - # Configure the build system - builder.configure() + # Install the project if the install flag is set + if args.install: + builder.install() - # Build the project with the specified target - builder.build(args.target) + # Run tests if the test flag is set + if args.test: + builder.test() - # Install the project if the install flag is set - if args.install: - builder.install() + # Generate documentation if the generate_docs flag is set + if args.generate_docs: + builder.generate_docs() - # Run tests if the test flag is set - if args.test: - builder.test() + # Generate a build report + builder.generate_build_report() - # Generate documentation if the generate_docs flag is set - if args.generate_docs: - builder.generate_docs() + except subprocess.CalledProcessError: + logger.error("Build process terminated due to an error.") + sys.exit(1) + except Exception as e: + logger.exception(f"An unexpected error occurred: {e}") + sys.exit(1) if __name__ == "__main__": - main() + try: + main() + except KeyboardInterrupt: + logger.warning("Operation interrupted by user.") + sys.exit(0) diff --git a/modules/lithium.pytools/tools/cmake_generator.py b/modules/lithium.pytools/tools/cmake_generator.py index 00101588..56acb9e5 100644 --- a/modules/lithium.pytools/tools/cmake_generator.py +++ b/modules/lithium.pytools/tools/cmake_generator.py @@ -9,12 +9,22 @@ 2. Custom FindXXX.cmake generation for locating third-party libraries. 3. JSON-based project configuration to streamline the CMakeLists.txt generation process. 4. Customizable compiler flags, linker flags, and dependencies. +5. Enhanced logging with Loguru. +6. Robust exception handling. +7. Automatically creates necessary directories if they do not exist. """ + import argparse import json +import sys from pathlib import Path from dataclasses import dataclass, field import platform +from typing import List, Optional +from loguru import logger +from rich.console import Console +from rich.table import Table +from rich.progress import Progress @dataclass @@ -30,14 +40,14 @@ class ProjectConfig: static_library (bool): Whether to generate a static library. shared_library (bool): Whether to generate a shared library. enable_testing (bool): Whether to enable testing with CMake's `enable_testing()`. - include_dirs (list): List of directories to include in the project. + include_dirs (List[str]): List of directories to include in the project. sources (str): Glob pattern to specify source files (default is `src/*.cpp`). - compiler_flags (list): List of compiler flags (e.g., `-O3`, `-Wall`). - linker_flags (list): List of linker flags (e.g., `-lpthread`). - dependencies (list): List of third-party dependencies. - subdirs (list): List of subdirectories for multi-directory project structure. + compiler_flags (List[str]): List of compiler flags (e.g., `-O3`, `-Wall`). + linker_flags (List[str]): List of linker flags (e.g., `-lpthread`). + dependencies (List[str]): List of third-party dependencies. + subdirs (List[str]): List of subdirectories for multi-directory project structure. install_path (str): Custom installation path (default is `bin`). - test_framework (str): The test framework to be used (optional, e.g., `GoogleTest`). + test_framework (Optional[str]): The test framework to be used (optional, e.g., `GoogleTest`). """ project_name: str version: str = "1.0" @@ -46,14 +56,40 @@ class ProjectConfig: static_library: bool = False shared_library: bool = False enable_testing: bool = False - include_dirs: list = field(default_factory=list) + include_dirs: List[str] = field(default_factory=list) sources: str = "src/*.cpp" - compiler_flags: list = field(default_factory=list) - linker_flags: list = field(default_factory=list) - dependencies: list = field(default_factory=list) - subdirs: list = field(default_factory=list) + compiler_flags: List[str] = field(default_factory=list) + linker_flags: List[str] = field(default_factory=list) + dependencies: List[str] = field(default_factory=list) + subdirs: List[str] = field(default_factory=list) install_path: str = "bin" - test_framework: str = None # Optional: e.g., GoogleTest + test_framework: Optional[str] = None # Optional: e.g., GoogleTest + + +def setup_logging() -> None: + """ + Configure Loguru for logging. + """ + logger.remove() # Remove default logger + logger.add( + "cmake_generator.log", + rotation="10 MB", + retention="7 days", + compression="zip", + enqueue=True, + encoding="utf-8", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}", + level="DEBUG" + ) + logger.add( + sys.stdout, + level="INFO", + format="{message}", + ) + logger.debug("Logging is set up.") + + +console = Console() def detect_os() -> str: @@ -64,12 +100,15 @@ def detect_os() -> str: str: The appropriate CMake system name for the current OS (Windows, Darwin for macOS, Linux). """ current_os = platform.system() + logger.debug(f"Detected OS: {current_os}") if current_os == "Windows": return "set(CMAKE_SYSTEM_NAME Windows)\n" elif current_os == "Darwin": return "set(CMAKE_SYSTEM_NAME Darwin)\n" elif current_os == "Linux": return "set(CMAKE_SYSTEM_NAME Linux)\n" + logger.warning( + "Unsupported OS detected. No OS-specific settings will be applied.") return "" @@ -83,6 +122,7 @@ def generate_cmake(config: ProjectConfig) -> str: Returns: str: The content of the generated CMakeLists.txt file. """ + logger.debug("Generating CMakeLists.txt content.") cmake_template = f"""cmake_minimum_required(VERSION 3.15) # Project name and version @@ -103,51 +143,69 @@ def generate_cmake(config: ProjectConfig) -> str: if config.include_dirs: for include_dir in config.include_dirs: cmake_template += f'include_directories("{include_dir}")\n' + logger.debug(f"Added include directory: {include_dir}") # Compiler flags if config.compiler_flags: - cmake_template += "add_compile_options(" - cmake_template += " ".join(config.compiler_flags) + ")\n" + cmake_template += "add_compile_options(" + \ + " ".join(config.compiler_flags) + ")\n" + logger.debug( + f"Added compiler flags: {' '.join(config.compiler_flags)}") # Linker flags if config.linker_flags: - cmake_template += "add_link_options(" - cmake_template += " ".join(config.linker_flags) + ")\n" + cmake_template += "add_link_options(" + \ + " ".join(config.linker_flags) + ")\n" + logger.debug(f"Added linker flags: {' '.join(config.linker_flags)}") # Dependencies (find_package) if config.dependencies: for dependency in config.dependencies: cmake_template += f'find_package({dependency} REQUIRED)\n' + logger.debug(f"Added dependency: {dependency}") # Subdirectory handling for multi-directory support if config.subdirs: for subdir in config.subdirs: cmake_template += f'add_subdirectory({subdir})\n' + logger.debug(f"Added subdirectory: {subdir}") # Create targets: executable or library if config.executable: - cmake_template += f'add_executable({ - config.project_name} ${{{{SOURCES}}}})\n' + cmake_template += f'add_executable({config.project_name} ${{SOURCES}})\n' + logger.debug("Added executable target.") elif config.static_library: - cmake_template += f'add_library({ - config.project_name} STATIC ${{{{SOURCES}}}})\n' + cmake_template += f'add_library({config.project_name} STATIC ${{SOURCES}})\n' + logger.debug("Added static library target.") elif config.shared_library: - cmake_template += f'add_library({ - config.project_name} SHARED ${{{{SOURCES}}}})\n' + cmake_template += f'add_library({config.project_name} SHARED ${{SOURCES}})\n' + logger.debug("Added shared library target.") + + # Linking dependencies if any + if config.dependencies: + cmake_template += f'target_link_libraries({config.project_name} ' + " ".join( + config.dependencies) + ')\n' + logger.debug(f"Linked libraries: {' '.join(config.dependencies)}") # Testing support if config.enable_testing: - cmake_template += """ + cmake_template += f""" # Enable testing enable_testing() -add_subdirectory(tests) +if(NOT {config.test_framework} STREQUAL "") + add_subdirectory(tests) +endif() """ + logger.debug("Enabled testing support.") + # Custom install path cmake_template += f""" # Installation rule install(TARGETS {config.project_name} DESTINATION {config.install_path}) """ + logger.debug(f"Added installation path: {config.install_path}") + logger.debug("CMakeLists.txt content generation completed.") return cmake_template @@ -161,7 +219,8 @@ def generate_find_cmake(dependency_name: str) -> str: Returns: str: The content of the FindXXX.cmake file to locate the library. """ - return f"""# Find{dependency_name}.cmake - Find {dependency_name} library + logger.debug(f"Generating Find{dependency_name}.cmake.") + find_cmake_template = f"""# Find{dependency_name}.cmake - Find {dependency_name} library # Locate the {dependency_name} library and headers find_path({dependency_name}_INCLUDE_DIR @@ -185,9 +244,11 @@ def generate_find_cmake(dependency_name: str) -> str: # Mark variables as advanced mark_as_advanced({dependency_name}_INCLUDE_DIR {dependency_name}_LIBRARY) """ + logger.debug(f"Find{dependency_name}.cmake generation completed.") + return find_cmake_template -def save_file(content: str, directory: str = ".", filename: str = "CMakeLists.txt"): +def save_file(content: str, directory: str = ".", filename: str = "CMakeLists.txt") -> None: """ Saves the provided content to a file. @@ -196,13 +257,17 @@ def save_file(content: str, directory: str = ".", filename: str = "CMakeLists.tx directory (str): The directory where the file should be saved. filename (str): The name of the file (default is CMakeLists.txt). """ - directory_path = Path(directory) - directory_path.mkdir(parents=True, exist_ok=True) + try: + directory_path = Path(directory) + directory_path.mkdir(parents=True, exist_ok=True) + logger.debug(f"Ensured directory exists: {directory}") - file_path = directory_path / filename - file_path.write_text(content, encoding='utf-8') - - print(f"{filename} generated in {file_path}") + file_path = directory_path / filename + file_path.write_text(content, encoding='utf-8') + logger.info(f"{filename} generated in {file_path}") + except Exception as e: + logger.error(f"Failed to save {filename} in {directory}: {e}") + raise def generate_from_json(json_file: str) -> ProjectConfig: @@ -215,29 +280,45 @@ def generate_from_json(json_file: str) -> ProjectConfig: Returns: ProjectConfig: A project configuration object with settings parsed from the JSON file. """ - with open(json_file, "r", encoding="utf-8") as file: - data = json.load(file) - - return ProjectConfig( - project_name=data.get("project_name", "MyProject"), - version=data.get("version", "1.0"), - cpp_standard=data.get("cpp_standard", "11"), - executable=data.get("executable", True), - static_library=data.get("static_library", False), - shared_library=data.get("shared_library", False), - enable_testing=data.get("enable_testing", False), - include_dirs=data.get("include_dirs", []), - sources=data.get("sources", "src/*.cpp"), - compiler_flags=data.get("compiler_flags", []), - linker_flags=data.get("linker_flags", []), - dependencies=data.get("dependencies", []), - subdirs=data.get("subdirs", []), - install_path=data.get("install_path", "bin"), - test_framework=data.get("test_framework", None) - ) - - -def parse_arguments(): + logger.debug(f"Reading project configuration from JSON file: {json_file}") + try: + with open(json_file, "r", encoding="utf-8") as file: + data = json.load(file) + logger.debug("JSON configuration loaded successfully.") + except FileNotFoundError: + logger.error(f"JSON configuration file not found: {json_file}") + raise + except json.JSONDecodeError as e: + logger.error(f"Invalid JSON format in {json_file}: {e}") + raise + + try: + project_config = ProjectConfig( + project_name=data["project_name"], + version=data.get("version", "1.0"), + cpp_standard=data.get("cpp_standard", "11"), + executable=data.get("executable", True), + static_library=data.get("static_library", False), + shared_library=data.get("shared_library", False), + enable_testing=data.get("enable_testing", False), + include_dirs=data.get("include_dirs", []), + sources=data.get("sources", "src/*.cpp"), + compiler_flags=data.get("compiler_flags", []), + linker_flags=data.get("linker_flags", []), + dependencies=data.get("dependencies", []), + subdirs=data.get("subdirs", []), + install_path=data.get("install_path", "bin"), + test_framework=data.get("test_framework", None) + ) + logger.debug("ProjectConfig object created successfully.") + except KeyError as e: + logger.error(f"Missing required configuration field: {e}") + raise + + return project_config + + +def parse_arguments() -> argparse.Namespace: """ Parses command-line arguments to either generate CMakeLists.txt files, FindXXX.cmake files, or handle JSON input. @@ -245,32 +326,126 @@ def parse_arguments(): argparse.Namespace: Parsed command-line arguments. """ parser = argparse.ArgumentParser( - description="Generate a CMake template for C++ projects.") - parser.add_argument( - "--json", type=str, help="Path to JSON config file to generate CMakeLists.txt.") - parser.add_argument("--find-package", type=str, - help="Generate a FindXXX.cmake file for a specified library.") + description="Generate a CMake template for C++ projects." + ) + subparsers = parser.add_subparsers( + dest='command', help='Available commands') + + # Generate CMakeLists.txt from JSON + parser_json = subparsers.add_parser( + 'generate', help='Generate CMakeLists.txt from JSON configuration') + parser_json.add_argument( + '--json', + type=str, + required=True, + help="Path to JSON config file to generate CMakeLists.txt." + ) + parser_json.add_argument( + '--output-dir', + type=str, + default=".", + help="Directory to save the generated CMake files (default is current directory)." + ) + + # Generate FindXXX.cmake + parser_find = subparsers.add_parser( + 'find', help='Generate FindXXX.cmake for a specified library') + parser_find.add_argument( + '--library', + type=str, + required=True, + help="Name of the library to generate FindXXX.cmake for." + ) + parser_find.add_argument( + '--output-dir', + type=str, + default="cmake", + help="Directory to save the generated FindXXX.cmake (default is cmake/)." + ) return parser.parse_args() -if __name__ == "__main__": +def display_table(title: str, headers: List[str], rows: List[List[str]]) -> None: + """ + Displays a formatted table using Rich. + + Args: + title (str): Title of the table. + headers (List[str]): List of column headers. + rows (List[List[str]]): List of rows, where each row is a list of string values. + """ + table = Table(title=title) + for header in headers: + table.add_column(header, style="cyan", no_wrap=True) + for row in rows: + table.add_row(*row) + console.print(table) + + +def main() -> None: + """ + Main function to execute the CMake generator script. + """ + setup_logging() args = parse_arguments() + logger.debug(f"Command-line arguments: {args}") + + try: + if args.command == 'generate': + logger.info( + f"Generating CMakeLists.txt from JSON configuration: {args.json}") + project_config = generate_from_json(args.json) + with Progress(transient=True) as progress: + task = progress.add_task( + "Generating CMakeLists.txt...", total=100) + cmake_content = generate_cmake(project_config) + progress.update(task, advance=50) + + save_file(cmake_content, directory=args.output_dir, + filename="CMakeLists.txt") + progress.update(task, advance=50) + + if project_config.dependencies: + cmake_dir = Path(args.output_dir) / "cmake" + cmake_dir.mkdir(parents=True, exist_ok=True) + for dependency in project_config.dependencies: + find_cmake_content = generate_find_cmake(dependency) + save_file(find_cmake_content, directory=cmake_dir, + filename=f"Find{dependency}.cmake") + + elif args.command == 'find': + logger.info( + f"Generating FindXXX.cmake for library: {args.library}") + with Progress(transient=True) as progress: + task = progress.add_task( + f"Generating Find{args.library}.cmake...", total=100) + find_cmake_content = generate_find_cmake(args.library) + progress.update(task, advance=50) + + save_file(find_cmake_content, directory=args.output_dir, + filename=f"Find{args.library}.cmake") + progress.update(task, advance=50) + + else: + logger.warning( + "No valid command specified. Use 'generate' or 'find'.") + parser = argparse.ArgumentParser( + description="Generate CMake templates for C++ projects." + ) + parser.print_help() + sys.exit(1) + + except Exception as e: + logger.exception(f"An error occurred: {e}") + console.print(f"[red]Error: {str(e)}[/red]") + sys.exit(1) - if args.json: - # Generate CMakeLists.txt from JSON configuration - project_config = generate_from_json(args.json) - cmake_content = generate_cmake(project_config) - save_file(cmake_content) - - # Generate FindXXX.cmake files for each dependency specified in the JSON file - for dependency in project_config.dependencies: - find_cmake_content = generate_find_cmake(dependency) - save_file(find_cmake_content, directory="cmake", - filename=f"Find{dependency}.cmake") - - if args.find_package: - # Generate a single FindXXX.cmake file for the specified dependency - find_cmake_content = generate_find_cmake(args.find_package) - save_file(find_cmake_content, directory="cmake", - filename=f"Find{args.find_package}.cmake") + +if __name__ == "__main__": + try: + main() + except KeyboardInterrupt: + logger.warning("Operation interrupted by user.") + console.print("[yellow]Operation interrupted by user.[/yellow]") + sys.exit(0) diff --git a/modules/lithium.pytools/tools/compiler.py b/modules/lithium.pytools/tools/compiler.py index bd282281..d3631798 100644 --- a/modules/lithium.pytools/tools/compiler.py +++ b/modules/lithium.pytools/tools/compiler.py @@ -3,17 +3,21 @@ """ Compiler Helper Script -This script provides a utility to detect available C++ compilers (GCC, Clang, MSVC), +This script provides a utility to detect available C++ compilers (GCC, Clang, MSVC, Intel C++ Compiler), select the desired C++ version, and compile or link source files using specified options. Features: -- Detect and select compilers (GCC, Clang, MSVC) +- Detect and select compilers (GCC, Clang, MSVC, Intel C++ Compiler) - Support various C++ versions (from C++98 to C++23) - Compile and link source files - Load additional compile/link options from JSON files +- Enhanced logging with Loguru +- Beautiful terminal output with Rich +- Robust exception handling +- Detailed inline comments and docstrings Usage: - python compiler_helper.py source1.cpp source2.cpp -o output.o --compiler GCC --cpp_version c++20 --link --flags -O3 + python compiler_helper.py source1.cpp source2.cpp -o output --compiler GCC --cpp_version c++20 --link --flags -O3 Author: Max Qian @@ -27,10 +31,25 @@ from dataclasses import dataclass, field from enum import Enum, auto from pathlib import Path -from typing import List, Optional, Dict +from typing import List, Optional, Dict, Any import argparse +from loguru import logger +import json +import shutil +import platform + +from rich.console import Console +from rich.table import Table +from rich.prompt import Prompt +from rich.traceback import install +from rich import print + +# Install Rich traceback handler for better exception output +install() +console = Console() + +# Supported C++ versions -from .pyjson import load_json class CppVersion(Enum): """ @@ -43,12 +62,18 @@ class CppVersion(Enum): CPP17 = "c++17" CPP20 = "c++20" CPP23 = "c++23" + CPP2A = "c++2a" + +# Compiler types + class CompilerType(Enum): """Enum representing the types of compilers.""" GCC = auto() CLANG = auto() MSVC = auto() + INTEL = auto() + @dataclass class Compiler: @@ -58,9 +83,15 @@ class Compiler: compiler_type: CompilerType cpp_flags: Dict[CppVersion, str] = field(default_factory=dict) additional_compile_flags: List[str] = field(default_factory=list) - additional_link_flags: List[str] = field(default_factory.list) - - def compile(self, source_files: List[Path], output_file: Path, cpp_version: CppVersion, additional_flags: Optional[List[str]] = None): + additional_link_flags: List[str] = field(default_factory=list) + + def compile( + self, + source_files: List[Path], + output_file: Path, + cpp_version: CppVersion, + additional_flags: Optional[List[str]] = None, + ) -> None: """ Compile source files into an object file or executable. @@ -71,20 +102,40 @@ def compile(self, source_files: List[Path], output_file: Path, cpp_version: CppV additional_flags (Optional[List[str]]): Additional flags for compilation. Raises: - SystemExit: If the C++ version is not supported. + SystemExit: If the C++ version is not supported or compilation fails. """ + logger.debug("Starting compilation process.") additional_flags = additional_flags or [] - if cpp_version in self.cpp_flags: - version_flag = self.cpp_flags[cpp_version] - else: - print(f"Unsupported C++ version: {cpp_version}") + version_flag = self.cpp_flags.get(cpp_version) + if not version_flag: + logger.error(f"Unsupported C++ version: {cpp_version.value}") sys.exit(1) - compile_cmd = [self.command, version_flag] + self.additional_compile_flags + additional_flags + ["-c"] + [str(f) for f in source_files] + ["-o", str(output_file)] - print(f"Running compile command: {' '.join(compile_cmd)}") - subprocess.run(compile_cmd, check=True) - - def link(self, object_files: List[Path], output_file: Path, additional_flags: Optional[List[str]] = None): + compile_cmd = [ + self.command, + version_flag, + *self.additional_compile_flags, + *additional_flags, + "-c", + *[str(f) for f in source_files], + "-o", + str(output_file), + ] + logger.info(f"Running compile command: {' '.join(compile_cmd)}") + with console.status("[bold green]Compiling...[/bold green]"): + try: + subprocess.run(compile_cmd, check=True) + logger.success(f"Compilation successful: {output_file}") + except subprocess.CalledProcessError as e: + logger.error(f"Compilation failed: {e}") + sys.exit(1) + + def link( + self, + object_files: List[Path], + output_file: Path, + additional_flags: Optional[List[str]] = None, + ) -> None: """ Link object files into an executable. @@ -92,11 +143,56 @@ def link(self, object_files: List[Path], output_file: Path, additional_flags: Op object_files (List[Path]): List of object files to link. output_file (Path): Path to the output file. additional_flags (Optional[List[str]]): Additional flags for linking. + + Raises: + SystemExit: If linking fails. """ + logger.debug("Starting linking process.") additional_flags = additional_flags or [] - link_cmd = [self.command] + self.additional_link_flags + [str(f) for f in object_files] + additional_flags + ["-o", str(output_file)] - print(f"Running link command: {' '.join(link_cmd)}") - subprocess.run(link_cmd, check=True) + link_cmd = [ + self.command, + *self.additional_link_flags, + *[str(f) for f in object_files], + *additional_flags, + "-o", + str(output_file), + ] + logger.info(f"Running link command: {' '.join(link_cmd)}") + with console.status("[bold green]Linking...[/bold green]"): + try: + subprocess.run(link_cmd, check=True) + logger.success(f"Linking successful: {output_file}") + except subprocess.CalledProcessError as e: + logger.error(f"Linking failed: {e}") + sys.exit(1) + + +def setup_logging() -> None: + """ + Configure Loguru for logging. + """ + logger.remove() + logger.add( + "compiler_helper.log", + rotation="5 MB", + retention="7 days", + compression="zip", + enqueue=True, + encoding="utf-8", + format="{time:YYYY-MM-DD HH:mm:ss} | " + "{level: <8} | " + "{name}:{function}:{line} - " + "{message}", + level="DEBUG", + ) + logger.add( + sys.stdout, + level="INFO", + format="{message}", + colorize=True, + ) + logger.debug("Logging is configured.") + def detect_compilers() -> List[Compiler]: """ @@ -105,81 +201,104 @@ def detect_compilers() -> List[Compiler]: Returns: List[Compiler]: List of detected compilers. """ + logger.debug("Detecting available compilers.") compilers = [] - gcc_path = find_command("gcc") + gcc_path = shutil.which("g++") if gcc_path: - compilers.append(Compiler( - name="GCC", - command=gcc_path, - compiler_type=CompilerType.GCC, - cpp_flags={ - CppVersion.CPP98: "-std=c++98", - CppVersion.CPP03: "-std=c++03", - CppVersion.CPP11: "-std=c++11", - CppVersion.CPP14: "-std=c++14", - CppVersion.CPP17: "-std=c++17", - CppVersion.CPP20: "-std=c++20", - CppVersion.CPP23: "-std=c++23", - }, - additional_compile_flags=["-Wall", "-Wextra", "-Werror"], - additional_link_flags=[] - )) - - clang_path = find_command("clang") + compilers.append( + Compiler( + name="GCC", + command=gcc_path, + compiler_type=CompilerType.GCC, + cpp_flags={ + CppVersion.CPP98: "-std=c++98", + CppVersion.CPP03: "-std=c++03", + CppVersion.CPP11: "-std=c++11", + CppVersion.CPP14: "-std=c++14", + CppVersion.CPP17: "-std=c++17", + CppVersion.CPP20: "-std=c++20", + CppVersion.CPP23: "-std=c++2b", + }, + additional_compile_flags=["-Wall", "-Wextra", "-Werror"], + additional_link_flags=[], + ) + ) + logger.debug("GCC compiler detected.") + + clang_path = shutil.which("clang++") if clang_path: - compilers.append(Compiler( - name="Clang", - command=clang_path, - compiler_type=CompilerType.CLANG, - cpp_flags={ - CppVersion.CPP98: "-std=c++98", - CppVersion.CPP03: "-std=c++03", - CppVersion.CPP11: "-std=c++11", - CppVersion.CPP14: "-std=c++14", - CppVersion.CPP17: "-std=c++17", - CppVersion.CPP20: "-std=c++20", - CppVersion.CPP23: "-std=c++23", - }, - additional_compile_flags=["-Wall", "-Wextra", "-Werror"], - additional_link_flags=[] - )) - - msvc_path = find_command("cl") + compilers.append( + Compiler( + name="Clang", + command=clang_path, + compiler_type=CompilerType.CLANG, + cpp_flags={ + CppVersion.CPP98: "-std=c++98", + CppVersion.CPP03: "-std=c++03", + CppVersion.CPP11: "-std=c++11", + CppVersion.CPP14: "-std=c++14", + CppVersion.CPP17: "-std=c++17", + CppVersion.CPP20: "-std=c++20", + CppVersion.CPP23: "-std=c++2b", + }, + additional_compile_flags=["-Wall", "-Wextra", "-Werror"], + additional_link_flags=[], + ) + ) + logger.debug("Clang compiler detected.") + + msvc_path = shutil.which("cl") if msvc_path: - compilers.append(Compiler( - name="MSVC", - command=msvc_path, - compiler_type=CompilerType.MSVC, - cpp_flags={ - CppVersion.CPP98: "/std:c++98", - CppVersion.CPP03: "/std:c++03", - CppVersion.CPP11: "/std:c++11", - CppVersion.CPP14: "/std:c++14", - CppVersion.CPP17: "/std:c++17", - CppVersion.CPP20: "/std:c++20", - CppVersion.CPP23: "/std:c++latest", - }, - additional_compile_flags=["/W4", "/WX"], - additional_link_flags=["/DEBUG"] - )) + compilers.append( + Compiler( + name="MSVC", + command=msvc_path, + compiler_type=CompilerType.MSVC, + cpp_flags={ + CppVersion.CPP98: "/std:c++98", + CppVersion.CPP03: "/std:c++03", + CppVersion.CPP11: "/std:c++11", + CppVersion.CPP14: "/std:c++14", + CppVersion.CPP17: "/std:c++17", + CppVersion.CPP20: "/std:c++20", + CppVersion.CPP23: "/std:c++latest", + }, + additional_compile_flags=["/W4", "/WX"], + additional_link_flags=["/DEBUG"], + ) + ) + logger.debug("MSVC compiler detected.") + + intel_path = shutil.which("icpc") + if intel_path: + compilers.append( + Compiler( + name="Intel C++ Compiler", + command=intel_path, + compiler_type=CompilerType.INTEL, + cpp_flags={ + CppVersion.CPP98: "-std=c++98", + CppVersion.CPP03: "-std=c++03", + CppVersion.CPP11: "-std=c++11", + CppVersion.CPP14: "-std=c++14", + CppVersion.CPP17: "-std=c++17", + CppVersion.CPP20: "-std=c++20", + CppVersion.CPP23: "-std=c++2b", + }, + additional_compile_flags=["-Wall", "-Wextra"], + additional_link_flags=[], + ) + ) + logger.debug("Intel C++ Compiler detected.") + if not compilers: + logger.error("No suitable compiler found on the system.") + else: + logger.debug( + f"Detected compilers: {[compiler.name for compiler in compilers]}") return compilers -def find_command(command: str) -> Optional[str]: - """ - Find a command in the system path. - - Args: - command (str): Command to find. - - Returns: - Optional[str]: Path to the command if found, otherwise None. - """ - result = subprocess.run(["which", command], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) - if result.returncode == 0: - return result.stdout.strip() - return None def select_compiler(compilers: List[Compiler]) -> Compiler: """ @@ -194,20 +313,35 @@ def select_compiler(compilers: List[Compiler]) -> Compiler: Raises: SystemExit: If the selection is invalid. """ - print("Available compilers:") + if len(compilers) == 1: + logger.info( + f"Only one compiler detected: {compilers[0].name}. Selecting it by default.") + return compilers[0] + + table = Table(title="Available Compilers") + table.add_column("Number", style="cyan") + table.add_column("Compiler", style="magenta") for idx, compiler in enumerate(compilers, start=1): - print(f"{idx}. {compiler.name}") + table.add_row(str(idx), compiler.name) + console.print(table) + + while True: + choice = Prompt.ask("Select a compiler by number") + try: + selected = compilers[int(choice) - 1] + logger.info(f"Selected compiler: {selected.name}") + return selected + except (ValueError, IndexError): + console.print( + "[bold red]Invalid selection. Please enter a valid number.[/bold red]") - choice = input("Select a compiler by number: ").strip() - try: - return compilers[int(choice) - 1] - except (ValueError, IndexError): - print("Invalid selection.") - sys.exit(1) -def select_cpp_version() -> CppVersion: +def select_cpp_version(compiler: Compiler) -> CppVersion: """ - Select a C++ version from the available options. + Select a C++ version from the available options for the selected compiler. + + Args: + compiler (Compiler): The selected compiler. Returns: CppVersion: Selected C++ version. @@ -215,16 +349,25 @@ def select_cpp_version() -> CppVersion: Raises: SystemExit: If the selection is invalid. """ - print("Available C++ versions:") - for idx, version in enumerate(CppVersion, start=1): - print(f"{idx}. {version.value}") + console.print(f"Available C++ versions for [bold]{compiler.name}[/bold]:") + versions = list(compiler.cpp_flags.keys()) + table = Table(title="C++ Versions") + table.add_column("Number", style="cyan") + table.add_column("Version", style="magenta") + for idx, version in enumerate(versions, start=1): + table.add_row(str(idx), version.value) + console.print(table) + + while True: + choice = Prompt.ask("Select a C++ version by number") + try: + selected = versions[int(choice) - 1] + logger.info(f"Selected C++ version: {selected.value}") + return selected + except (ValueError, IndexError): + console.print( + "[bold red]Invalid selection. Please enter a valid number.[/bold red]") - choice = input("Select a C++ version by number: ").strip() - try: - return list(CppVersion)[int(choice) - 1] - except (ValueError, IndexError): - print("Invalid selection.") - sys.exit(1) def load_options_from_json(file_path: str) -> Dict[str, List[str]]: """ @@ -235,51 +378,133 @@ def load_options_from_json(file_path: str) -> Dict[str, List[str]]: Returns: Dict[str, List[str]]: Dictionary containing compile and link flags. + + Raises: + SystemExit: If the JSON file cannot be loaded or is invalid. """ - data = load_json(file_path) - return { - "compile_flags": data.get("compile_flags", []), - "link_flags": data.get("link_flags", []), - } + try: + with open(file_path, 'r', encoding="utf-8") as f: + data = json.load(f) + logger.debug(f"Loaded options from JSON file: {file_path}") + return { + "compile_flags": data.get("compile_flags", []), + "link_flags": data.get("link_flags", []), + } + except FileNotFoundError: + logger.error(f"JSON options file not found: {file_path}") + sys.exit(1) + except json.JSONDecodeError as e: + logger.error(f"Invalid JSON format in {file_path}: {e}") + sys.exit(1) + + +def display_system_info() -> None: + """ + Display system and compiler helper information. + """ + logger.debug("Displaying system information.") + console.print(f"[bold green]Compiler Helper v1.0[/bold green]") + console.print( + f"Operating System: {platform.system()} {platform.release()}") + console.print(f"Python Version: {platform.python_version()}") + def main(): """ Main function to run the compiler helper. """ - parser = argparse.ArgumentParser(description="Compiler Helper") - parser.add_argument("source_files", nargs="+", type=Path, help="Source files to compile") - parser.add_argument("-o", "--output", type=Path, required=True, help="Output file") - parser.add_argument("--link", action="store_true", help="Link object files into an executable") - parser.add_argument("--compiler", type=str, help="Specify the compiler to use (GCC, Clang, MSVC)") - parser.add_argument("--cpp_version", type=str, help="Specify the C++ version to use (e.g., c++17, c++20)") - parser.add_argument("--flags", nargs="*", help="Additional flags for compilation or linking") - parser.add_argument("--compile-flags", nargs="*", help="Additional compilation flags") - parser.add_argument("--link-flags", nargs="*", help="Additional linking flags") - parser.add_argument("--json-options", type=str, help="Path to JSON file containing additional compile/link options") + setup_logging() + logger.info("Starting Compiler Helper.") + display_system_info() + + parser = argparse.ArgumentParser(description="Compiler Helper Script") + parser.add_argument( + "source_files", + nargs="+", + type=Path, + help="Source files to compile", + ) + parser.add_argument( + "-o", + "--output", + type=Path, + required=True, + help="Output file (object file or executable)", + ) + parser.add_argument( + "--link", + action="store_true", + help="Link object files into an executable", + ) + parser.add_argument( + "--compiler", + type=str, + choices=["GCC", "Clang", "MSVC", "Intel C++ Compiler"], + help="Specify the compiler to use", + ) + parser.add_argument( + "--cpp_version", + type=str, + help="Specify the C++ version to use (e.g., c++17, c++20)", + ) + parser.add_argument( + "--flags", + nargs="*", + help="Additional flags for compilation or linking", + ) + parser.add_argument( + "--compile-flags", + nargs="*", + help="Additional compilation flags", + ) + parser.add_argument( + "--link-flags", + nargs="*", + help="Additional linking flags", + ) + parser.add_argument( + "--json-options", + type=str, + help="Path to JSON file containing additional compile/link options", + ) + parser.add_argument( + "--show-info", + action="store_true", + help="Display system and compiler helper information", + ) args = parser.parse_args() + if args.show_info: + display_system_info() + sys.exit(0) + compilers = detect_compilers() if not compilers: - print("No suitable compiler found.") + logger.critical("No suitable compiler found. Exiting.") sys.exit(1) + # Select compiler if args.compiler: - compiler = next((c for c in compilers if c.name.lower() == args.compiler.lower()), None) + compiler = next((c for c in compilers if c.name.lower() + == args.compiler.lower()), None) if not compiler: - print(f"Compiler '{args.compiler}' not found.") + logger.error( + f"Compiler '{args.compiler}' not found among detected compilers.") sys.exit(1) + logger.info(f"User selected compiler: {compiler.name}") else: compiler = select_compiler(compilers) + # Select C++ version if args.cpp_version: try: - cpp_version = CppVersion[args.cpp_version.replace("++", "").upper()] - except KeyError: - print(f"Invalid C++ version: {args.cpp_version}") + cpp_version = CppVersion(args.cpp_version.lower()) + except ValueError: + logger.error(f"Invalid C++ version specified: {args.cpp_version}") sys.exit(1) else: - cpp_version = select_cpp_version() + cpp_version = select_cpp_version(compiler) additional_compile_flags = args.compile_flags or [] additional_link_flags = args.link_flags or [] @@ -288,13 +513,41 @@ def main(): # Load additional options from JSON file if provided if args.json_options: json_options = load_options_from_json(args.json_options) - additional_compile_flags.extend(json_options["compile_flags"]) - additional_link_flags.extend(json_options["link_flags"]) + additional_compile_flags.extend(json_options.get("compile_flags", [])) + additional_link_flags.extend(json_options.get("link_flags", [])) + + # Ensure source files exist + for src_file in args.source_files: + if not src_file.exists(): + logger.error(f"Source file not found: {src_file}") + sys.exit(1) + + try: + if args.link: + logger.info("Linking object files into executable.") + compiler.link( + args.source_files, + args.output, + additional_flags + additional_link_flags, + ) + else: + logger.info("Compiling source files.") + compiler.compile( + args.source_files, + args.output, + cpp_version, + additional_flags + additional_compile_flags, + ) + except Exception as e: + logger.exception(f"An unexpected error occurred: {e}") + sys.exit(1) + + logger.success("Compilation process completed successfully.") - if args.link: - compiler.link(args.source_files, args.output, additional_flags + additional_link_flags) - else: - compiler.compile(args.source_files, args.output, cpp_version, additional_flags + additional_compile_flags) if __name__ == "__main__": - main() + try: + main() + except KeyboardInterrupt: + logger.warning("Operation interrupted by user.") + sys.exit(0) diff --git a/modules/lithium.pytools/tools/compiler_parser.py b/modules/lithium.pytools/tools/compiler_parser.py index b246a30a..a117fc36 100644 --- a/modules/lithium.pytools/tools/compiler_parser.py +++ b/modules/lithium.pytools/tools/compiler_parser.py @@ -1,238 +1,441 @@ +# compiler_parser.py """ -This module contains functions for parsing compiler output and converting it to JSON, CSV, or XML format. +This module contains classes and functions for parsing compiler output and converting it to JSON, CSV, or XML format. """ -from pathlib import Path -import re +import argparse import json import csv -import argparse -import os +import sys +from pathlib import Path +import re import xml.etree.ElementTree as ET from concurrent.futures import ThreadPoolExecutor, as_completed +from typing import List, Dict, Any from termcolor import colored +from loguru import logger -def parse_gcc_clang_output(output): +class CompilerOutputParser: """ - Parses GCC/Clang compiler output. - - Args: - output (str): The raw output from the GCC/Clang compiler. - - Returns: - dict: A dictionary containing the compiler version and categorized results. + Base class for compiler output parsers. """ - version_pattern = re.compile(r'(gcc|clang) version (\d+\.\d+\.\d+)') - error_pattern = re.compile( - r'(?P.*):(?P\d+):(?P\d+):\s*(?P\w+):\s*(?P.+)') - - version_match = version_pattern.search(output) - matches = error_pattern.findall(output) - - results = {"errors": [], "warnings": [], "info": []} - for match in matches: - entry = { - "file": match[0], - "line": int(match[1]), - "column": int(match[2]), - "message": match[4].strip(), - "severity": match[3].lower(), - } - if match[3].lower() == 'error': - results["errors"].append(entry) - elif match[3].lower() == 'warning': - results["warnings"].append(entry) - else: - results["info"].append(entry) - return { - "version": version_match.group() if version_match else "unknown", - "results": results - } + def __init__(self, compiler: str): + self.compiler = compiler.lower() + self.logger = logger + def parse(self, output: str) -> Dict[str, Any]: + """ + Parses the compiler output. -def parse_msvc_output(output): - """ - Parses MSVC compiler output. + Args: + output (str): The raw output from the compiler. - Args: - output (str): The raw output from the MSVC compiler. + Returns: + dict: Parsed output containing the compiler version and categorized results. + """ + raise NotImplementedError( + "Parse method must be implemented by subclasses.") - Returns: - dict: A dictionary containing the compiler version and categorized results. + +class GCCClangParser(CompilerOutputParser): + """ + Parser for GCC and Clang compiler outputs. """ - version_pattern = re.compile(r'Compiler Version (\d+\.\d+\.\d+\.\d+)') - error_pattern = re.compile( - r'(?P.*)\((?P\d+)\):\s*(?P\w+)\s*(?P\w+\d+):\s*(?P.+)') - - version_match = version_pattern.search(output) - matches = error_pattern.findall(output) - - results = {"errors": [], "warnings": [], "info": []} - for match in matches: - entry = { - "file": match[0], - "line": int(match[1]), - "code": match[3], - "message": match[4].strip(), - "severity": match[2].lower(), - } - if match[2].lower() == 'error': - results["errors"].append(entry) - elif match[2].lower() == 'warning': - results["warnings"].append(entry) - else: - results["info"].append(entry) - return { - "version": version_match.group() if version_match else "unknown", - "results": results - } + def __init__(self, compiler: str): + super().__init__(compiler) + self.version_pattern = re.compile( + r'(gcc|clang) version (\d+\.\d+\.\d+)') + self.error_pattern = re.compile( + r'(?P.*?):(?P\d+):(?P\d+):\s*(?P\w+):\s*(?P.+)' + ) + + def parse(self, output: str) -> Dict[str, Any]: + self.logger.debug("Parsing GCC/Clang output.") + version_match = self.version_pattern.search(output) + matches = self.error_pattern.findall(output) + + results = {"errors": [], "warnings": [], "info": []} + for match in matches: + entry = { + "file": match[0].strip(), + "line": int(match[1]), + "column": int(match[2]), + "message": match[4].strip(), + "severity": match[3].lower(), + } + if entry["severity"] == 'error': + results["errors"].append(entry) + elif entry["severity"] == 'warning': + results["warnings"].append(entry) + else: + results["info"].append(entry) + + parsed = { + "version": version_match.group() if version_match else "unknown", + "results": results + } + self.logger.debug(f"Parsed data: {parsed}") + return parsed -def parse_cmake_output(output): +class MSVCParser(CompilerOutputParser): """ - Parses CMake compiler output. - - Args: - output (str): The raw output from the CMake build system. - - Returns: - dict: A dictionary containing the CMake version and categorized results. + Parser for MSVC compiler outputs. """ - version_pattern = re.compile(r'cmake version (\d+\.\d+\.\d+)') - error_pattern = re.compile( - r'(?P.*):(?P\d+):(?P\w+):\s*(?P.+)') - - version_match = version_pattern.search(output) - matches = error_pattern.findall(output) - - results = {"errors": [], "warnings": [], "info": []} - for match in matches: - entry = { - "file": match[0], - "line": int(match[1]), - "message": match[3].strip(), - "severity": match[2].lower(), - } - if match[2].lower() == 'error': - results["errors"].append(entry) - elif match[2].lower() == 'warning': - results["warnings"].append(entry) - else: - results["info"].append(entry) - return { - "version": version_match.group() if version_match else "unknown", - "results": results - } + def __init__(self, compiler: str): + super().__init__(compiler) + self.version_pattern = re.compile( + r'Compiler Version (\d+\.\d+\.\d+\.\d+)') + self.error_pattern = re.compile( + r'(?P.*)\((?P\d+)\):\s*(?P\w+)\s*(?P\w+\d+):\s*(?P.+)' + ) + + def parse(self, output: str) -> Dict[str, Any]: + self.logger.debug("Parsing MSVC output.") + version_match = self.version_pattern.search(output) + matches = self.error_pattern.findall(output) + + results = {"errors": [], "warnings": [], "info": []} + for match in matches: + entry = { + "file": match[0].strip(), + "line": int(match[1]), + "code": match[3].strip(), + "message": match[4].strip(), + "severity": match[2].lower(), + } + if entry["severity"] == 'error': + results["errors"].append(entry) + elif entry["severity"] == 'warning': + results["warnings"].append(entry) + else: + results["info"].append(entry) + + parsed = { + "version": version_match.group() if version_match else "unknown", + "results": results + } + self.logger.debug(f"Parsed data: {parsed}") + return parsed -def parse_output(compiler, output): +class CMakeParser(CompilerOutputParser): + """ + Parser for CMake compiler outputs. """ - Parses the compiler output based on the specified compiler type. - Args: - compiler (str): The compiler type (gcc, clang, msvc, cmake). - output (str): The raw output from the compiler. + def __init__(self, compiler: str): + super().__init__(compiler) + self.version_pattern = re.compile(r'cmake version (\d+\.\d+\.\d+)') + self.error_pattern = re.compile( + r'(?P.*?):(?P\d+):(?P\w+):\s*(?P.+)' + ) + + def parse(self, output: str) -> Dict[str, Any]: + self.logger.debug("Parsing CMake output.") + version_match = self.version_pattern.search(output) + matches = self.error_pattern.findall(output) + + results = {"errors": [], "warnings": [], "info": []} + for match in matches: + entry = { + "file": match[0].strip(), + "line": int(match[1]), + "message": match[3].strip(), + "severity": match[2].lower(), + } + if entry["severity"] == 'error': + results["errors"].append(entry) + elif entry["severity"] == 'warning': + results["warnings"].append(entry) + else: + results["info"].append(entry) + + parsed = { + "version": version_match.group() if version_match else "unknown", + "results": results + } + self.logger.debug(f"Parsed data: {parsed}") + return parsed + - Returns: - dict: Parsed output containing the compiler version and categorized results. +class ParserFactory: + """ + Factory class to get the appropriate parser based on compiler type. """ - if compiler.lower() in ['gcc', 'clang']: - return parse_gcc_clang_output(output) - elif compiler.lower() == 'msvc': - return parse_msvc_output(output) - elif compiler.lower() == 'cmake': - return parse_cmake_output(output) - else: - raise ValueError("Unsupported compiler") + @staticmethod + def get_parser(compiler: str) -> CompilerOutputParser: + comp = compiler.lower() + if comp in ['gcc', 'clang']: + return GCCClangParser(compiler) + elif comp == 'msvc': + return MSVCParser(compiler) + elif comp == 'cmake': + return CMakeParser(compiler) + else: + logger.error(f"Unsupported compiler: {compiler}") + raise ValueError(f"Unsupported compiler: {compiler}") -def write_to_csv(data, output_path): + +def write_to_csv(data: List[Dict[str, Any]], output_path: Path) -> None: """ Writes parsed data to a CSV file. Args: data (list): The parsed data to write. - output_path (str): The path to the output CSV file. + output_path (Path): The path to the output CSV file. """ - with open(output_path, 'w', newline='', encoding="utf-8") as csvfile: - fieldnames = ['file', 'line', 'column', - 'type', 'code', 'message', 'severity'] - writer = csv.DictWriter(csvfile, fieldnames=fieldnames) - writer.writeheader() - for entry in data: - writer.writerow(entry) - - -def write_to_xml(data, output_path): + logger.debug(f"Writing data to CSV at {output_path}.") + fieldnames = ['file', 'line', 'column', + 'type', 'code', 'message', 'severity'] + try: + with open(output_path, 'w', newline='', encoding="utf-8") as csvfile: + writer = csv.DictWriter(csvfile, fieldnames=fieldnames) + writer.writeheader() + for entry in data: + writer.writerow(entry) + logger.info(f"CSV output saved to {output_path}.") + except Exception as e: + logger.error(f"Failed to write CSV: {e}") + raise + + +def write_to_xml(data: List[Dict[str, Any]], output_path: Path) -> None: """ Writes parsed data to an XML file. Args: data (list): The parsed data to write. - output_path (str): The path to the output XML file. + output_path (Path): The path to the output XML file. """ + logger.debug(f"Writing data to XML at {output_path}.") root = ET.Element("CompilerOutput") for entry in data: item = ET.SubElement(root, "Item") for key, value in entry.items(): child = ET.SubElement(item, key) child.text = str(value) - tree = ET.ElementTree(root) - tree.write(output_path, encoding="utf-8", xml_declaration=True) + try: + tree = ET.ElementTree(root) + tree.write(output_path, encoding="utf-8", xml_declaration=True) + logger.info(f"XML output saved to {output_path}.") + except Exception as e: + logger.error(f"Failed to write XML: {e}") + raise -def process_file(compiler, file_path): +def colorize_output(entries: List[Dict[str, Any]]) -> None: """ - Processes a file to parse the compiler output. + Prints compiler results with colorized output in the console. Args: - compiler (str): The compiler type (gcc, clang, msvc, cmake). - file_path (str): The path to the file containing the compiler output. - - Returns: - dict: Parsed output containing the file path, compiler version, and categorized results. + entries (list): A list of parsed compiler entries. """ - with open(file_path, 'r', encoding="utf-8") as file: - output = file.read() - parsed_output = parse_output(compiler, output) - return { - "file": file_path, - "version": parsed_output["version"], - "results": parsed_output["results"] - } + for entry in entries: + message = f"{entry['type'].capitalize()} in {entry['file']}:{entry['line']}" + full_message = f"{message} - {entry['message']}" + if entry['severity'] == 'error': + print(colored(full_message, 'red')) + elif entry['severity'] == 'warning': + print(colored(full_message, 'yellow')) + else: + print(colored(full_message, 'blue')) -def colorize_output(entries): +class CompilerParser: + """ + Main class to handle the parsing of compiler outputs and conversion to desired formats. """ - Prints compiler results with colorized output in the console. - Args: - entries (list): A list of parsed compiler entries. + def __init__(self, args: argparse.Namespace): + self.compiler = args.compiler + self.file_paths = [Path(fp).resolve() for fp in args.file_paths] + self.output_format = args.output_format.lower() + self.output_file = Path(args.output_dir).resolve() / args.output_file + self.filter = [f.lower() for f in args.filter] if args.filter else [] + self.stats = args.stats + self.concurrency = args.concurrency + self.logger = logger + + def process_file(self, file_path: Path) -> Dict[str, Any]: + """ + Processes a single file to parse the compiler output. + + Args: + file_path (Path): The path to the file containing the compiler output. + + Returns: + dict: Parsed output containing the file path, compiler version, and categorized results. + """ + self.logger.debug(f"Processing file: {file_path}") + try: + with open(file_path, 'r', encoding="utf-8") as file: + output = file.read() + parser = ParserFactory.get_parser(self.compiler) + parsed_output = parser.parse(output) + result = { + "file": str(file_path), + "version": parsed_output["version"], + "results": parsed_output["results"] + } + self.logger.debug(f"Parsed result for {file_path}: {result}") + return result + except Exception as e: + self.logger.error(f"Error processing {file_path}: {e}") + raise + + def aggregate_results(self, results: List[Dict[str, Any]]) -> List[Dict[str, Any]]: + """ + Aggregates and flattens the parsed results. + + Args: + results (list): List of parsed results from multiple files. + + Returns: + list: Flattened list of all compiler entries. + """ + self.logger.debug("Aggregating results.") + flattened = [] + for result in results: + for severity, entries in result['results'].items(): + for entry in entries: + entry_copy = entry.copy() + entry_copy['type'] = severity + entry_copy['file'] = result['file'] + flattened.append(entry_copy) + self.logger.debug(f"Total aggregated entries: {len(flattened)}") + return flattened + + def apply_filters(self, data: List[Dict[str, Any]]) -> List[Dict[str, Any]]: + """ + Applies severity filters to the data. + + Args: + data (list): The list of compiler entries. + + Returns: + list: Filtered list based on severity. + """ + if not self.filter: + self.logger.debug("No filters applied.") + return data + filtered = [entry for entry in data if entry['severity'] in self.filter] + self.logger.debug(f"Entries after filtering: {len(filtered)}") + return filtered + + def calculate_statistics(self, data: List[Dict[str, Any]]) -> Dict[str, int]: + """ + Calculates statistics based on the data. + + Args: + data (list): The list of compiler entries. + + Returns: + dict: Statistics including total, errors, warnings, and info counts. + """ + stats = { + "total": len(data), + "errors": sum(1 for entry in data if entry['severity'] == 'error'), + "warnings": sum(1 for entry in data if entry['severity'] == 'warning'), + "info": sum(1 for entry in data if entry['severity'] == 'info'), + } + self.logger.debug(f"Statistics calculated: {stats}") + return stats + + def output_results(self, data: List[Dict[str, Any]]) -> None: + """ + Outputs the results in the desired format. + + Args: + data (list): The list of compiler entries. + """ + self.logger.debug( + f"Outputting results in {self.output_format} format.") + try: + if self.output_format == 'json': + with open(self.output_file, 'w', encoding="utf-8") as json_file: + json.dump(data, json_file, indent=4) + self.logger.info(f"JSON output saved to {self.output_file}.") + elif self.output_format == 'csv': + write_to_csv(data, self.output_file) + elif self.output_format == 'xml': + write_to_xml(data, self.output_file) + else: + self.logger.error( + f"Unsupported output format: {self.output_format}") + raise ValueError( + f"Unsupported output format: {self.output_format}") + except Exception as e: + self.logger.error(f"Failed to write output file: {e}") + raise + + def run(self) -> None: + """ + Executes the parsing and output generation process. + """ + self.logger.info("Starting compiler output parsing.") + results = [] + with ThreadPoolExecutor(max_workers=self.concurrency) as executor: + future_to_file = {executor.submit( + self.process_file, fp): fp for fp in self.file_paths} + for future in as_completed(future_to_file): + file_path = future_to_file[future] + try: + result = future.result() + results.append(result) + except Exception as e: + self.logger.error(f"Failed to process {file_path}: {e}") + + flattened = self.aggregate_results(results) + filtered = self.apply_filters(flattened) + + if self.stats: + stats = self.calculate_statistics(filtered) + print(f"Statistics:\n{json.dumps(stats, indent=4)}") + + self.output_results(filtered) + colorize_output(filtered) + self.logger.info("Compiler output parsing completed.") + + +def setup_logging_config() -> None: """ - for entry in entries: - if entry['type'] == 'errors': - print(colored(f"Error in {entry['file']}:{ - entry['line']} - {entry['message']}", 'red')) - elif entry['type'] == 'warnings': - print(colored(f"Warning in {entry['file']}:{ - entry['line']} - {entry['message']}", 'yellow')) - else: - print(colored(f"Info in {entry['file']}:{ - entry['line']} - {entry['message']}", 'blue')) + Configures Loguru for logging. + """ + logger.remove() + logger.add( + "compiler_parser.log", + rotation="10 MB", + retention="7 days", + compression="zip", + enqueue=True, + encoding="utf-8", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}", + level="DEBUG" + ) + logger.add( + sys.stdout, + level="INFO", + format="{message}", + ) + logger.debug("Logging is set up.") def main(): """ Main function to parse compiler output and convert to JSON, CSV, or XML format. """ + setup_logging_config() parser = argparse.ArgumentParser( - description="Parse compiler output and convert to JSON, CSV, or XML format.") - parser.add_argument('compiler', choices=[ - 'gcc', 'clang', 'msvc', 'cmake'], help="The compiler used for the output.") + description="Parse compiler output and convert to JSON, CSV, or XML format." + ) + parser.add_argument('compiler', choices=['gcc', 'clang', 'msvc', 'cmake'], + help="The compiler used for the output.") parser.add_argument('file_paths', nargs='+', help="Paths to the compiler output files.") parser.add_argument( @@ -250,69 +453,17 @@ def main(): args = parser.parse_args() - # Prepare the output directory - output_dir = Path(args.output_dir).resolve() - output_dir.mkdir(parents=True, exist_ok=True) - - # Initialize results list - all_results = [] - - # Use ThreadPoolExecutor for concurrent processing of files - with ThreadPoolExecutor(max_workers=args.concurrency) as executor: - futures = {executor.submit( - process_file, args.compiler, file_path): file_path for file_path in args.file_paths} - - for future in as_completed(futures): - try: - result = future.result() - all_results.append(result) - except Exception as e: - print(colored(f"Error processing { - futures[future]}: {e}", 'red')) - - # Flatten results for output processing - flattened_results = [] - for result in all_results: - for severity, entries in result['results'].items(): - for entry in entries: - entry['type'] = severity - entry['file'] = result['file'] - flattened_results.append(entry) - - # Apply filtering if specified - if args.filter: - flattened_results = [ - entry for entry in flattened_results if entry['type'] in args.filter] - - # Calculate statistics if requested - if args.stats: - stats = { - "total": len(flattened_results), - "errors": sum(1 for entry in flattened_results if entry['type'] == 'errors'), - "warnings": sum(1 for entry in flattened_results if entry['type'] == 'warnings'), - "info": sum(1 for entry in flattened_results if entry['type'] == 'info'), - } - print(f"Statistics:\n{json.dumps(stats, indent=4)}") - - # Output results to the specified format - output_file_path = output_dir / args.output_file - - if args.output_format == 'json': - json_output = json.dumps(flattened_results, indent=4) - with open(output_file_path, 'w', encoding="utf-8") as json_file: - json_file.write(json_output) - print(f"JSON output saved to {output_file_path}") - elif args.output_format == 'csv': - write_to_csv(flattened_results, output_file_path) - print(f"CSV output saved to {output_file_path}") - elif args.output_format == 'xml': - write_to_xml(flattened_results, output_file_path) - print(f"XML output saved to {output_file_path}") - - # Optional: Print colorized output to the console - print("\nColorized Output:") - colorize_output(flattened_results) + try: + parser_instance = CompilerParser(args) + parser_instance.run() + except Exception as e: + logger.exception(f"An error occurred during processing: {e}") + sys.exit(1) if __name__ == "__main__": - main() + try: + main() + except KeyboardInterrupt: + logger.warning("Operation interrupted by user.") + sys.exit(0) diff --git a/modules/lithium.pytools/tools/core_runner.py b/modules/lithium.pytools/tools/core_runner.py index 6397250e..84d07c48 100644 --- a/modules/lithium.pytools/tools/core_runner.py +++ b/modules/lithium.pytools/tools/core_runner.py @@ -1,156 +1,267 @@ +# python +import shutil import subprocess import os import sys from pathlib import Path import argparse from loguru import logger +from typing import Optional, List, Dict +from rich.console import Console +from rich.table import Table +from rich.progress import Progress -def set_ulimit(unlimited: bool): - """ - Set the core dump size using ulimit. - - Parameters: - unlimited (bool): If True, set the core dump size to unlimited. Otherwise, set it to 0. - """ - size = "unlimited" if unlimited else "0" - try: - subprocess.run(["ulimit", "-c", size], shell=True, - check=True, executable='/bin/bash') - logger.info(f"Core dump size set to {size}.") - except subprocess.CalledProcessError as e: - logger.error(f"Error setting ulimit: {e}") - - -def set_core_pattern(core_pattern: str): - """ - Set the core pattern for core dump files. - - Parameters: - core_pattern (str): The pattern to use for core dump files. - - Note: - This function requires root privileges to modify /proc/sys/kernel/core_pattern. - """ - if os.geteuid() != 0: - logger.error( - "Setting core pattern requires root privileges. Please run as root.") - sys.exit(1) - - try: - with open("/proc/sys/kernel/core_pattern", "w", encoding="utf-8") as f: - f.write(core_pattern) - logger.info(f"Core pattern set to: {core_pattern}") - except PermissionError as e: - logger.error(f"Permission denied: { - e}. Please run as root to set core pattern.") - sys.exit(1) - - -def compile_cpp_program(source_file: str, output_file: str, compile_flags: list, cpp_standard: str): - """ - Compile the C++ program with optional flags and standard. - - Parameters: - source_file (str): The path to the C++ source file. - output_file (str): The name of the output executable file. - compile_flags (list): Additional flags for the g++ compiler. - cpp_standard (str): The C++ standard to use (e.g., c++11, c++14, c++17, c++20). - """ - flags = compile_flags + [f"-std={cpp_standard}"] - try: - subprocess.run(["g++", *flags, source_file, "-o", - output_file, "-g"], check=True) - logger.info(f"Compiled {source_file} to { - output_file} with flags: {' '.join(flags)}.") - except subprocess.CalledProcessError as e: - logger.error(f"Compilation failed: {e}") - sys.exit(1) - - -def run_cpp_program(executable: str, auto_analyze: bool, core_dir: str): - """ - Run the compiled C++ program and handle crashes. +console = Console() - Parameters: - executable (str): The name of the executable file to run. - auto_analyze (bool): If True, automatically analyze the core dump if the program crashes. - core_dir (str): The directory to search for core dump files. - """ - try: - subprocess.run([f"./{executable}"], check=True) - logger.info(f"Program {executable} ran successfully without crashing.") - except subprocess.CalledProcessError as e: - logger.warning(f"Program crashed: {e}") - core_file = find_latest_core_file(core_dir) - if auto_analyze and core_file: - analyze_core_dump(executable, core_file) - elif not core_file: - logger.warning("No core dump file found.") - - -def find_latest_core_file(core_dir: str) -> Path: - """ - Find the latest core dump file in the specified directory. - - Parameters: - core_dir (str): The directory to search for core dump files. - Returns: - Path: The path to the latest core dump file, or None if no core dump files are found. +class CoreRunner: """ - core_files = list(Path(core_dir).glob("core.*")) - if not core_files: - logger.warning("No core dump files found in the specified directory.") - return None - latest_core = max(core_files, key=os.path.getctime) - logger.info(f"Found core dump file: {latest_core}") - return latest_core - - -def analyze_core_dump(executable: str, core_file: Path, gdb_commands: list = ["-ex", "bt", "-ex", "quit"]): + CoreRunner handles the setup and execution of C++ programs with core dump analysis. """ - Analyze the core dump file using gdb with custom commands. - Parameters: - executable (str): The name of the executable file. - core_file (Path): The path to the core dump file. - gdb_commands (list): A list of gdb commands to run for analysis. - """ - try: - result = subprocess.run( - ["gdb", executable, str(core_file), *gdb_commands], - text=True, - capture_output=True, - check=True + def __init__(self, args: argparse.Namespace): + self.source_file: Path = Path(args.source).resolve() + self.output_file: Path = Path(args.output).resolve() + self.core_dir: Path = Path(args.core_dir).resolve() + self.core_pattern: str = args.core_pattern + self.ulimit_unlimited: bool = args.ulimit + self.compile_flags: List[str] = args.flags or [] + self.cpp_standard: str = args.std + self.gdb_commands: List[str] = args.gdb_commands or [ + "-ex", "bt", "-ex", "quit"] + self.auto_analyze: bool = args.auto_analyze + self.log_file: Optional[Path] = Path( + args.log_file).resolve() if args.log_file else None + + self.setup_logging() + self.validate_environment() + + def setup_logging(self) -> None: + """ + Configure loguru for logging. + """ + logger.remove() + logger.add( + sys.stderr, + level="INFO", + format="{message}", ) - logger.info("Core dump analysis:") - logger.info(result.stdout) - except subprocess.CalledProcessError as e: - logger.error(f"GDB analysis failed: {e}") - - -def configure_logging(log_file: str): + if self.log_file: + logger.add( + self.log_file, + rotation="10 MB", + retention="7 days", + compression="zip", + enqueue=True, + encoding="utf-8", + format=( + "{time:YYYY-MM-DD HH:mm:ss} | " + "{level} | {message}" + ), + level="DEBUG" + ) + logger.debug("Logging is configured.") + + def validate_environment(self) -> None: + """ + Validate that necessary tools and permissions are available. + """ + logger.debug("Validating environment.") + # Check if g++ is available + if not shutil.which("g++"): + logger.error("g++ compiler not found in PATH.") + sys.exit(1) + # Check if gdb is available + if not shutil.which("gdb"): + logger.error("gdb debugger not found in PATH.") + sys.exit(1) + logger.debug("Environment validation completed.") + + def set_ulimit(self) -> None: + """ + Set the core dump size using ulimit. + """ + size = "unlimited" if self.ulimit_unlimited else "0" + try: + subprocess.run(["ulimit", "-c", size], shell=True, check=True) + logger.info(f"Core dump size set to {size}.") + except subprocess.CalledProcessError as e: + logger.error(f"Error setting ulimit: {e}") + sys.exit(1) + + def set_core_pattern(self) -> None: + """ + Set the core pattern for core dump files. + """ + if os.geteuid() != 0: + logger.warning( + "Root privileges required to set core pattern. Skipping this step.") + return + + try: + core_pattern_path = Path("/proc/sys/kernel/core_pattern") + core_pattern_path.write_text(self.core_pattern, encoding="utf-8") + logger.info(f"Core pattern set to: {self.core_pattern}") + except PermissionError as e: + logger.error( + f"Permission denied: {e}. Please run as root to set core pattern.") + sys.exit(1) + except Exception as e: + logger.error(f"Failed to set core pattern: {e}") + sys.exit(1) + + def compile_cpp_program(self) -> None: + """ + Compile the C++ program with optional flags and standard. + """ + if not self.source_file.exists(): + logger.error(f"Source file not found: {self.source_file}") + sys.exit(1) + + flags = self.compile_flags + [f"-std={self.cpp_standard}", "-g"] + compile_cmd = ["g++", *flags, + str(self.source_file), "-o", str(self.output_file)] + logger.info(f"Compiling program: {' '.join(compile_cmd)}") + + with console.status("[bold green]Compiling...[/bold green]"): + try: + subprocess.run(compile_cmd, check=True, + stderr=subprocess.PIPE, text=True) + logger.success(f"Compilation successful: {self.output_file}") + except subprocess.CalledProcessError as e: + logger.error(f"Compilation failed: {e.stderr}") + sys.exit(1) + except Exception as e: + logger.exception(f"Unexpected error during compilation: {e}") + sys.exit(1) + + def run_cpp_program(self) -> None: + """ + Run the compiled C++ program and handle crashes. + """ + if not self.output_file.exists(): + logger.error(f"Executable not found: {self.output_file}") + sys.exit(1) + + logger.info(f"Running program: {self.output_file}") + try: + with console.status("[bold green]Running program...[/bold green]"): + subprocess.run([str(self.output_file)], check=True) + logger.info( + f"Program {self.output_file} ran successfully without crashing.") + except subprocess.CalledProcessError as e: + logger.warning(f"Program crashed with exit code {e.returncode}.") + core_file = self.find_latest_core_file() + if self.auto_analyze and core_file: + self.analyze_core_dump(core_file) + elif not core_file: + logger.warning("No core dump file found.") + except Exception as e: + logger.exception(f"Unexpected error during program execution: {e}") + sys.exit(1) + + def find_latest_core_file(self) -> Optional[Path]: + """ + Find the latest core dump file in the specified directory. + + Returns: + Optional[Path]: The path to the latest core dump file, or None if no core dump files are found. + """ + if not self.core_dir.exists(): + logger.warning(f"Core directory does not exist: {self.core_dir}") + return None + + core_files = list(self.core_dir.glob("core.*")) + if not core_files: + logger.warning( + "No core dump files found in the specified directory.") + return None + + latest_core = max(core_files, key=lambda f: f.stat().st_ctime) + logger.info(f"Found core dump file: {latest_core}") + return latest_core + + def analyze_core_dump(self, core_file: Path) -> None: + """ + Analyze the core dump file using gdb with custom commands. + + Parameters: + core_file (Path): The path to the core dump file. + """ + gdb_cmd = ["gdb", str(self.output_file), str( + core_file), *self.gdb_commands] + logger.info(f"Running GDB with command: {' '.join(gdb_cmd)}") + + with console.status("[bold green]Analyzing core dump...[/bold green]"): + try: + result = subprocess.run( + gdb_cmd, + text=True, + capture_output=True, + check=True + ) + logger.info("Core dump analysis output:") + console.print("[bold blue]GDB Analysis Result:[/bold blue]") + console.print(result.stdout) + except subprocess.CalledProcessError as e: + logger.error(f"GDB analysis failed: {e.stderr}") + except Exception as e: + logger.exception(f"Unexpected error during GDB analysis: {e}") + + def run(self) -> None: + """ + Execute the full workflow: setup, compile, and run the program. + """ + logger.debug("Starting CoreRunner workflow.") + if self.ulimit_unlimited: + self.set_ulimit() + self.set_core_pattern() + self.compile_cpp_program() + self.run_cpp_program() + logger.debug("CoreRunner workflow completed successfully.") + + +def configure_logging(log_file: Optional[str]) -> None: """ Configure the loguru logger. Parameters: - log_file (str): The path to the log file. If empty, logs will only be written to stderr. + log_file (Optional[str]): The path to the log file. If empty, logs will only be written to stderr. """ logger.remove() # Remove the default logger - logger.add(sys.stderr, level="INFO") + logger.add( + sys.stderr, + level="INFO", + format="{message}", + ) if log_file: - # Rotate logs every 10 MB - logger.add(log_file, level="DEBUG", rotation="10 MB") - logger.info("Logging is configured.") + logger.add( + log_file, + rotation="10 MB", + retention="7 days", + compression="zip", + enqueue=True, + encoding="utf-8", + format=( + "{time:YYYY-MM-DD HH:mm:ss} | " + "{level} | {message}" + ), + level="DEBUG" + ) + logger.debug("Logging is configured.") -def main(): +def parse_arguments() -> argparse.Namespace: """ - Main function to parse arguments and run the core dump and analysis tool. + Parse command-line arguments. + + Returns: + argparse.Namespace: Parsed arguments. """ parser = argparse.ArgumentParser( - description="C++ Core Dump and Analysis Tool with Logging") + description="C++ Core Dump and Analysis Tool with Enhanced Logging and Exception Handling" + ) parser.add_argument("source", help="C++ source file to compile and run") parser.add_argument("-o", "--output", default="a.out", help="Output executable name") @@ -160,27 +271,35 @@ def main(): default="/tmp/core.%e.%p", help="Core pattern for dump files") parser.add_argument("-u", "--ulimit", action="store_true", help="Set core dump size to unlimited") - parser.add_argument("-f", "--flags", nargs='*', default=[], - help="Additional flags for g++ compilation") + parser.add_argument( + "-f", "--flags", nargs='*', default=[], help="Additional flags for g++ compilation (e.g., -O2 -Wall)" + ) parser.add_argument("-s", "--std", default="c++17", help="C++ standard to use (e.g., c++11, c++14, c++17, c++20)") - parser.add_argument("-g", "--gdb-commands", nargs='*', default=[ - "-ex", "bt", "-ex", "quit"], help="GDB commands for core dump analysis") + parser.add_argument( + "-g", "--gdb-commands", nargs='*', default=["-ex", "bt", "-ex", "quit"], help="GDB commands for core dump analysis" + ) parser.add_argument("-a", "--auto-analyze", action="store_true", help="Automatically analyze core dump if program crashes") - parser.add_argument("-l", "--log-file", default="", - help="Log file to write logs to") + parser.add_argument("-l", "--log-file", help="Log file to write logs to") + return parser.parse_args() - args = parser.parse_args() +def main(): + """ + Main function to run the CoreRunner. + """ + args = parse_arguments() configure_logging(args.log_file) - - if args.ulimit: - set_ulimit(True) - set_core_pattern(args.core_pattern) - - compile_cpp_program(args.source, args.output, args.flags, args.std) - run_cpp_program(args.output, args.auto_analyze, args.core_dir) + runner = CoreRunner(args) + try: + runner.run() + except KeyboardInterrupt: + logger.warning("Operation interrupted by user.") + sys.exit(0) + except Exception as e: + logger.exception(f"An unexpected error occurred: {e}") + sys.exit(1) if __name__ == "__main__": diff --git a/modules/lithium.pytools/tools/crontab.py b/modules/lithium.pytools/tools/crontab.py new file mode 100644 index 00000000..40c394b2 --- /dev/null +++ b/modules/lithium.pytools/tools/crontab.py @@ -0,0 +1,427 @@ +import os +import subprocess +import argparse +from loguru import logger +from rich.console import Console +from rich.table import Table +from typing import List + +# Initialize the Rich console for enhanced terminal output +console = Console() + + +class CrontabManager: + def __init__(self, crontab_path: str = "/tmp/current_crontab"): + """ + Initialize the CrontabManager with the specified crontab file path. + + Args: + crontab_path (str): The path to the temporary crontab file. + """ + self.crontab_path = crontab_path + self._setup_logger() + self._load_crontab() + + def _setup_logger(self): + """ + Set up the Loguru logger with a rotating log file. + Logs will rotate when they reach 1 MB in size. + """ + logger.add("crontab_manager.log", rotation="1 MB") + logger.info("CrontabManager initialized.") + + def _run_command(self, command: str, capture_output: bool = False) -> str: + """ + Execute a system command and handle errors. + + Args: + command (str): The command to execute. + capture_output (bool): Whether to capture and return the command's output. + + Returns: + str: The output of the command if capture_output is True. + + Raises: + subprocess.CalledProcessError: If the command execution fails. + """ + try: + result = subprocess.run( + command, + shell=True, + check=True, + capture_output=capture_output, + text=True + ) + if capture_output: + return result.stdout.strip() + except subprocess.CalledProcessError as e: + logger.error(f"Error executing command: {command}\n{e}") + raise + + def _load_crontab(self): + """ + Load the current user's crontab into the temporary crontab file. + If the user has no crontab, create an empty temporary file. + """ + self._run_command( + f"crontab -l > {self.crontab_path} 2>/dev/null || touch {self.crontab_path}" + ) + logger.info("Crontab loaded.") + + def list_jobs(self) -> List[str]: + """ + Retrieve all cron jobs from the temporary crontab file. + + Returns: + List[str]: A list of cron job entries. + """ + if os.path.exists(self.crontab_path): + with open(self.crontab_path, "r") as file: + jobs = file.readlines() + logger.info("Listed cron jobs.") + return jobs + logger.warning("Crontab file does not exist.") + return [] + + def add_job(self, schedule: str, command: str): + """ + Add a new cron job to the temporary crontab file. + + Args: + schedule (str): The cron schedule expression. + command (str): The command to execute. + """ + new_job = f"{schedule} {command}\n" + with open(self.crontab_path, "a") as file: + file.write(new_job) + self._update_crontab() + logger.info(f"Added job: {new_job.strip()}") + + def remove_job(self, command: str): + """ + Remove a specific cron job that contains the given command. + + Args: + command (str): The command identifier to remove from cron jobs. + """ + jobs = self.list_jobs() + with open(self.crontab_path, "w") as file: + for job in jobs: + if command not in job: + file.write(job) + self._update_crontab() + logger.info(f"Removed job containing command: {command}") + + def update_job(self, old_command: str, new_schedule: str, new_command: str): + """ + Update an existing cron job by replacing the old command with a new schedule and command. + + Args: + old_command (str): The command identifier of the job to update. + new_schedule (str): The new cron schedule expression. + new_command (str): The new command to execute. + """ + jobs = self.list_jobs() + updated = False + with open(self.crontab_path, "w") as file: + for job in jobs: + if old_command in job: + file.write(f"{new_schedule} {new_command}\n") + updated = True + logger.info(f"Updated job: {new_schedule} {new_command}") + else: + file.write(job) + if updated: + self._update_crontab() + else: + logger.warning(f"No job found with command: {old_command}") + + def clear_jobs(self): + """ + Remove all cron jobs from the temporary crontab file. + """ + with open(self.crontab_path, "w") as file: + file.write("") + self._update_crontab() + logger.info("Cleared all cron jobs.") + + def _update_crontab(self): + """ + Apply the changes made to the temporary crontab file to the user's actual crontab. + """ + self._run_command(f"crontab {self.crontab_path}") + logger.info("Crontab updated.") + + def job_exists(self, command: str) -> bool: + """ + Check if a cron job containing the specified command exists. + + Args: + command (str): The command identifier to search for. + + Returns: + bool: True if the job exists, False otherwise. + """ + jobs = self.list_jobs() + exists = any(command in job for job in jobs) + logger.info(f"Job existence for '{command}': {exists}") + return exists + + def disable_job(self, command: str): + """ + Disable a specific cron job by commenting it out in the temporary crontab file. + + Args: + command (str): The command identifier of the job to disable. + """ + jobs = self.list_jobs() + with open(self.crontab_path, "w") as file: + for job in jobs: + if command in job and not job.startswith("#"): + file.write(f"#{job}") + else: + file.write(job) + self._update_crontab() + logger.info(f"Disabled job containing command: {command}") + + def enable_job(self, command: str): + """ + Enable a previously disabled cron job by uncommenting it in the temporary crontab file. + + Args: + command (str): The command identifier of the job to enable. + """ + jobs = self.list_jobs() + with open(self.crontab_path, "w") as file: + for job in jobs: + if command in job and job.startswith("#"): + file.write(job.lstrip("#")) + else: + file.write(job) + self._update_crontab() + logger.info(f"Enabled job containing command: {command}") + + def search_jobs(self, keyword: str) -> List[str]: + """ + Search for cron jobs that contain the specified keyword. + + Args: + keyword (str): The keyword to search for within cron jobs. + + Returns: + List[str]: A list of cron jobs that match the keyword. + """ + jobs = self.list_jobs() + results = [job for job in jobs if keyword in job] + logger.info( + f"Searched jobs with keyword '{keyword}': {len(results)} found.") + return results + + def export_jobs(self, file_path: str): + """ + Export all current cron jobs to a specified file. + + Args: + file_path (str): The path to the file where cron jobs will be exported. + """ + with open(file_path, "w") as file: + file.writelines(self.list_jobs()) + logger.info(f"Exported cron jobs to {file_path}") + + def import_jobs(self, file_path: str): + """ + Import cron jobs from a specified file and append them to the current crontab. + + Args: + file_path (str): The path to the file from which cron jobs will be imported. + """ + if os.path.exists(file_path): + with open(file_path, "r") as file: + jobs = file.readlines() + with open(self.crontab_path, "a") as crontab_file: + crontab_file.writelines(jobs) + self._update_crontab() + logger.info(f"Imported cron jobs from {file_path}") + else: + logger.error(f"File {file_path} does not exist") + + def view_logs(self, log_path: str = "/var/log/syslog") -> str: + """ + Retrieve and return cron job-related logs from the specified log file. + + Args: + log_path (str): The path to the log file to search for cron logs. + + Returns: + str: The extracted cron logs. + """ + if os.path.exists(log_path): + logs = self._run_command( + f"grep CRON {log_path}", capture_output=True) + logger.info(f"Viewed logs from {log_path}") + return logs + logger.error(f"Log file {log_path} does not exist") + return "" + + def display_jobs(self): + """ + Display all cron jobs in a formatted table using Rich. + Disabled jobs are highlighted in red. + """ + jobs = self.list_jobs() + table = Table(title="Crontab Jobs") + table.add_column("Schedule", style="cyan") + table.add_column("Command", style="magenta") + for job in jobs: + if job.startswith("#"): + # Display disabled jobs with a red "Disabled" label + table.add_row("[red]Disabled[/red]", job.lstrip("#").strip()) + else: + # Split the job into schedule and command parts + parts = job.strip().split(None, 5) + if len(parts) >= 6: + schedule = " ".join(parts[:5]) + command = parts[5] + else: + schedule = job.strip() + command = "" + table.add_row(schedule, command) + console.print(table) + + def __del__(self): + """ + Destructor to clean up temporary files when the CrontabManager instance is deleted. + Removes the temporary crontab file if it exists. + """ + if os.path.exists(self.crontab_path): + os.remove(self.crontab_path) + logger.info("Temporary crontab file removed.") + + +def main(): + parser = argparse.ArgumentParser( + description="Crontab Manager Command-Line Tool") + subparsers = parser.add_subparsers( + dest="command", help="Available commands") + + # Add command + parser_add = subparsers.add_parser("add", help="Add a new cron job") + parser_add.add_argument("schedule", type=str, + help="Cron schedule expression") + parser_add.add_argument("command", type=str, help="Command to execute") + + # Remove command + parser_remove = subparsers.add_parser("remove", help="Remove a cron job") + parser_remove.add_argument( + "command", type=str, help="Command identifier to remove") + + # List command + parser_list = subparsers.add_parser("list", help="List all cron jobs") + + # Update command + parser_update = subparsers.add_parser( + "update", help="Update an existing cron job") + parser_update.add_argument( + "old_command", type=str, help="Old command identifier") + parser_update.add_argument( + "new_schedule", type=str, help="New cron schedule expression") + parser_update.add_argument( + "new_command", type=str, help="New command to execute") + + # Clear command + parser_clear = subparsers.add_parser("clear", help="Clear all cron jobs") + + # Check existence command + parser_exists = subparsers.add_parser( + "exists", help="Check if a cron job exists") + parser_exists.add_argument( + "command", type=str, help="Command identifier to check") + + # Disable command + parser_disable = subparsers.add_parser( + "disable", help="Disable a cron job") + parser_disable.add_argument( + "command", type=str, help="Command identifier to disable") + + # Enable command + parser_enable = subparsers.add_parser("enable", help="Enable a cron job") + parser_enable.add_argument( + "command", type=str, help="Command identifier to enable") + + # Search command + parser_search = subparsers.add_parser( + "search", help="Search cron jobs by keyword") + parser_search.add_argument( + "keyword", type=str, help="Keyword to search for") + + # Export command + parser_export = subparsers.add_parser( + "export", help="Export cron jobs to a file") + parser_export.add_argument( + "file_path", type=str, help="Path to export the cron jobs") + + # Import command + parser_import = subparsers.add_parser( + "import", help="Import cron jobs from a file") + parser_import.add_argument( + "file_path", type=str, help="Path to import the cron jobs from") + + # View logs command + parser_logs = subparsers.add_parser("logs", help="View cron job logs") + parser_logs.add_argument( + "--log-path", type=str, default="/var/log/syslog", + help="Path to the log file (default: /var/log/syslog)" + ) + + args = parser.parse_args() + manager = CrontabManager() + + if args.command == "add": + manager.add_job(args.schedule, args.command) + console.print("Job added successfully.") + elif args.command == "remove": + manager.remove_job(args.command) + console.print("Job removed successfully.") + elif args.command == "list": + manager.display_jobs() + elif args.command == "update": + manager.update_job( + args.old_command, args.new_schedule, args.new_command) + console.print("Job updated successfully.") + elif args.command == "clear": + manager.clear_jobs() + console.print("All jobs cleared successfully.") + elif args.command == "exists": + exists = manager.job_exists(args.command) + console.print(f"Job exists: {exists}") + elif args.command == "disable": + manager.disable_job(args.command) + console.print("Job disabled successfully.") + elif args.command == "enable": + manager.enable_job(args.command) + console.print("Job enabled successfully.") + elif args.command == "search": + results = manager.search_jobs(args.keyword) + if results: + for job in results: + console.print(job.strip()) + else: + console.print("No jobs found with the given keyword.") + elif args.command == "export": + manager.export_jobs(args.file_path) + console.print(f"Jobs exported to {args.file_path} successfully.") + elif args.command == "import": + manager.import_jobs(args.file_path) + console.print(f"Jobs imported from {args.file_path} successfully.") + elif args.command == "logs": + logs = manager.view_logs(args.log_path) + if logs: + console.print(logs) + else: + console.print("No logs found.") + else: + parser.print_help() + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pytools/tools/daemon.py b/modules/lithium.pytools/tools/daemon.py new file mode 100644 index 00000000..0dcc69b6 --- /dev/null +++ b/modules/lithium.pytools/tools/daemon.py @@ -0,0 +1,511 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Daemon Process Manager + +A robust daemon manager for monitoring and managing target processes. +Supports starting, stopping, and monitoring processes with resource usage checks. + +Features: +- Start and stop daemon processes +- Monitor CPU and memory usage +- Automatic process restarts on threshold breaches +- Comprehensive logging with loguru +- Enhanced CLI output with rich +- Detailed configuration with dataclasses + +Author: Your Name +License: MIT +Version: 2.0.0 +""" + +import argparse +import asyncio +import json +import os +import platform +import signal +import subprocess +import sys +import time +from dataclasses import dataclass, asdict +from datetime import datetime +from enum import Enum +from pathlib import Path +from typing import Optional, Literal, Dict, Any, List + +import psutil +from loguru import logger +from rich.console import Console +from rich.table import Table +from rich.prompt import Confirm +from rich.panel import Panel +from rich.progress import Progress, SpinnerColumn, BarColumn, TextColumn +from rich.logging import RichHandler + +# Configure Loguru logger with rich handler +logger.remove() # Remove the default logger +console = Console() +logger.add( + RichHandler(console=console), + rotation="10 MB", + retention="10 days", + level="INFO", + format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {message}" +) + +# Default configuration values +DEFAULT_CONFIG = { + "process_name": "python", + "script_path": Path("target_script.py"), + "restart_interval": 5, + "cpu_threshold": 80.0, + "memory_threshold": 500.0, + "max_restarts": 3, + "monitor_interval": 5 +} + +# Daemon configuration parameters using dataclass + + +@dataclass +class DaemonConfig: + process_name: str = "python" # Name of the process to monitor + script_path: Path = Path("target_script.py") # Path to the target script + restart_interval: int = 5 # Restart interval in seconds + cpu_threshold: float = 80.0 # CPU usage threshold in percentage + memory_threshold: float = 500.0 # Memory usage threshold in MB + max_restarts: int = 3 # Maximum number of restarts + monitor_interval: int = 5 # Monitoring interval in seconds + + +PID_FILE = "/tmp/daemon.pid" + + +class Platform(Enum): + """ + Supported operating system platforms. + Used to determine platform-specific implementations. + """ + LINUX = "linux" + WINDOWS = "windows" + MACOS = "darwin" + + +class DaemonProcess: + """ + Core class for managing the daemon process. + + Handles starting, monitoring, restarting, and stopping the target process. + """ + + def __init__(self, config: DaemonConfig): + """ + Initialize the DaemonProcess with the given configuration. + + Args: + config (DaemonConfig): Configuration settings for the daemon. + """ + self.config = config + self.restart_count = 0 + self.process: Optional[subprocess.Popen] = None + self.platform = Platform(platform.system().lower()) + logger.debug(f"DaemonProcess initialized with config: {self.config}") + + if not self.config.script_path.is_file(): + logger.critical( + f"Target script does not exist: {self.config.script_path}") + raise FileNotFoundError( + f"Target script does not exist: {self.config.script_path}") + + async def start_target_process(self) -> None: + """ + Start the target process asynchronously. + """ + try: + self.process = subprocess.Popen( + [sys.executable, str(self.config.script_path)], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE + ) + logger.info(f"Target process started, PID: {self.process.pid}") + except Exception as e: + logger.exception(f"Failed to start target process: {e}") + raise + + def is_process_running(self) -> bool: + """ + Check if the target process is running. + + Returns: + bool: True if running, False otherwise. + """ + if self.process is None: + logger.debug("Target process instance is None.") + return False + + running = self.process.poll() is None + logger.debug( + f"Process status: {'Running' if running else 'Stopped'} (PID: {self.process.pid})") + return running + + async def monitor_process_health(self) -> None: + """ + Monitor the CPU and memory usage of the process. Restart if thresholds are exceeded. + """ + try: + proc = psutil.Process(self.process.pid) + cpu_usage = proc.cpu_percent(interval=1) + memory_usage = proc.memory_info().rss / (1024 * 1024) # Convert to MB + logger.info( + f"Process PID: {proc.pid}, CPU: {cpu_usage}%, Memory: {memory_usage:.2f}MB") + + if cpu_usage > self.config.cpu_threshold: + logger.warning( + f"CPU usage exceeded threshold ({cpu_usage}% > {self.config.cpu_threshold}%), restarting process...") + await self.restart_process() + + if memory_usage > self.config.memory_threshold: + logger.warning( + f"Memory usage exceeded threshold ({memory_usage}MB > {self.config.memory_threshold}MB), restarting process...") + await self.restart_process() + + except psutil.NoSuchProcess: + logger.warning( + "Process does not exist, may have crashed. Will restart...") + await self.restart_process() + except psutil.AccessDenied: + logger.error("Access denied when accessing process information.") + except Exception as e: + logger.exception( + f"Unknown error occurred while monitoring process health: {e}") + + async def restart_process(self) -> None: + """ + Restart the target process, track restart counts, and check against maximum restarts. + """ + if self.restart_count < self.config.max_restarts: + try: + if self.process and self.is_process_running(): + self.process.terminate() + try: + self.process.wait(timeout=5) + logger.info( + f"Process PID: {self.process.pid} terminated.") + except subprocess.TimeoutExpired: + self.process.kill() + self.process.wait() + logger.warning( + f"Process PID: {self.process.pid} force killed.") + + self.restart_count += 1 + logger.info( + f"Restarting target process (Restart count: {self.restart_count})") + await asyncio.sleep(self.config.restart_interval) + await self.start_target_process() + except Exception as e: + logger.exception(f"Failed to restart process: {e}") + else: + logger.error("Maximum restart count reached, stopping daemon.") + self.cleanup() + sys.exit("Daemon terminated: exceeded maximum restart count.") + + async def monitor_loop(self) -> None: + """ + Main loop of the daemon for continuous monitoring of the target process. + """ + await self.start_target_process() + + try: + while True: + if not self.is_process_running(): + logger.warning( + "Target process is not running, restarting...") + await self.restart_process() + else: + await self.monitor_process_health() + + await asyncio.sleep(self.config.monitor_interval) + except KeyboardInterrupt: + logger.info("Daemon received interrupt signal, exiting...") + except Exception as e: + logger.exception(f"Error occurred while running daemon: {e}") + finally: + self.cleanup() + + def cleanup(self) -> None: + """ + Clean up resources and terminate the target process. + """ + if self.process and self.is_process_running(): + try: + self.process.terminate() + self.process.wait(timeout=5) + logger.info("Target process terminated.") + except subprocess.TimeoutExpired: + self.process.kill() + self.process.wait() + logger.warning("Target process force killed.") + except Exception as e: + logger.exception( + f"Error occurred while terminating process: {e}") + + if os.path.exists(PID_FILE): + os.remove(PID_FILE) + logger.debug("PID file removed.") + + +def write_pid() -> None: + """ + Write the daemon's PID to the PID file. + """ + pid = os.getpid() + with open(PID_FILE, 'w', encoding='utf-8') as f: + f.write(str(pid)) + logger.debug(f"PID {pid} written to {PID_FILE}") + + +def read_pid() -> Optional[int]: + """ + Read the PID from the PID file. + + Returns: + Optional[int]: PID as an integer or None if failed. + """ + try: + with open(PID_FILE, 'r', encoding='utf-8') as f: + pid = int(f.read().strip()) + return pid + except Exception as e: + logger.error(f"Failed to read PID file: {e}") + return None + + +def is_daemon_running(config: DaemonConfig) -> bool: + """ + Check if the daemon is currently running. + + Args: + config (DaemonConfig): Configuration dictionary. + + Returns: + bool: True if running, False otherwise. + """ + pid = read_pid() + if pid and psutil.pid_exists(pid): + try: + proc = psutil.Process(pid) + if proc.name() == config.process_name: + return True + except psutil.NoSuchProcess: + return False + return False + + +def stop_daemon() -> None: + """ + Stop the daemon process. + """ + pid = read_pid() + if not pid: + logger.error( + "PID file not found or PID is invalid. Daemon may not be running.") + console.print("[red]Daemon is not running.[/red]") + return + + try: + proc = psutil.Process(pid) + logger.info(f"Sending SIGTERM signal to daemon PID: {pid}") + proc.send_signal(signal.SIGTERM) + proc.wait(timeout=10) + logger.info("Daemon has been stopped.") + console.print("[green]Daemon has been stopped.[/green]") + except psutil.NoSuchProcess: + logger.error("Specified daemon process does not exist.") + console.print("[red]Daemon does not exist.[/red]") + except psutil.TimeoutExpired: + logger.warning("Daemon did not respond, sending SIGKILL signal.") + proc.kill() + console.print("[yellow]Daemon has been forcefully stopped.[/yellow]") + except Exception as e: + logger.exception(f"Error occurred while stopping daemon: {e}") + console.print(f"[red]Error occurred while stopping daemon: {e}[/red]") + finally: + if os.path.exists(PID_FILE): + os.remove(PID_FILE) + logger.debug("PID file removed.") + + +def start_daemon(config: DaemonConfig) -> None: + """ + Start the daemon process. + + Args: + config (DaemonConfig): Configuration settings. + """ + if is_daemon_running(config): + logger.error("Daemon is already running.") + console.print("[red]Daemon is already running.[/red]") + sys.exit(1) + + # Fork the first child + try: + pid = os.fork() + if pid > 0: + # Parent process exits + sys.exit(0) + except OSError as e: + logger.exception(f"First fork failed: {e}") + sys.exit(1) + + # Create a new session + os.setsid() + + # Fork the second child + try: + pid = os.fork() + if pid > 0: + # Second parent process exits + sys.exit(0) + except OSError as e: + logger.exception(f"Second fork failed: {e}") + sys.exit(1) + + # Redirect standard file descriptors to /dev/null + sys.stdout.flush() + sys.stderr.flush() + with open('/dev/null', 'rb', 0) as f: + os.dup2(f.fileno(), sys.stdin.fileno()) + with open('/dev/null', 'ab', 0) as f: + os.dup2(f.fileno(), sys.stdout.fileno()) + os.dup2(f.fileno(), sys.stderr.fileno()) + + # Write PID file + write_pid() + + # Instantiate daemon process and start monitoring + daemon = DaemonProcess(config) + + # Set up signal handlers + def handle_signal(signum, frame): + logger.info(f"Received signal {signum}, preparing to exit daemon...") + daemon.cleanup() + sys.exit(0) + + signal.signal(signal.SIGTERM, handle_signal) + signal.signal(signal.SIGINT, handle_signal) + + # Start monitoring loop + asyncio.run(daemon.monitor_loop()) + + +def status_daemon(config: DaemonConfig) -> None: + """ + Check the status of the daemon process. + + Args: + config (DaemonConfig): Configuration settings. + """ + if is_daemon_running(config): + pid = read_pid() + logger.info(f"Daemon is running, PID: {pid}") + console.print(f"[green]Daemon is running, PID: {pid}[/green]") + else: + logger.info("Daemon is not running.") + console.print("[red]Daemon is not running.[/red]") + + +def parse_arguments() -> argparse.Namespace: + """ + Parse command-line arguments. + + Returns: + argparse.Namespace: Parsed arguments. + """ + parser = argparse.ArgumentParser(description="Daemon Management Tool") + subparsers = parser.add_subparsers(dest="command", help="Sub-commands") + + # Start command + start_parser = subparsers.add_parser("start", help="Start daemon") + start_parser.add_argument( + "--process_name", type=str, default=DEFAULT_CONFIG["process_name"], + help="Name of the process to monitor" + ) + start_parser.add_argument( + "--script_path", type=Path, default=DEFAULT_CONFIG["script_path"], + help="Path to the target script" + ) + start_parser.add_argument( + "--restart_interval", type=int, default=DEFAULT_CONFIG["restart_interval"], + help="Restart interval in seconds" + ) + start_parser.add_argument( + "--cpu_threshold", type=float, default=DEFAULT_CONFIG["cpu_threshold"], + help="CPU usage threshold (%)" + ) + start_parser.add_argument( + "--memory_threshold", type=float, default=DEFAULT_CONFIG["memory_threshold"], + help="Memory usage threshold (MB)" + ) + start_parser.add_argument( + "--max_restarts", type=int, default=DEFAULT_CONFIG["max_restarts"], + help="Maximum number of restarts" + ) + start_parser.add_argument( + "--monitor_interval", type=int, default=DEFAULT_CONFIG["monitor_interval"], + help="Monitoring interval in seconds" + ) + + # Stop command + subparsers.add_parser("stop", help="Stop daemon") + + # Status command + subparsers.add_parser("status", help="Check daemon status") + + return parser.parse_args() + + +async def main(): + """ + Main function to parse command-line arguments and perform actions. + """ + args = parse_arguments() + config = DaemonConfig( + process_name=args.process_name if hasattr( + args, 'process_name') else DEFAULT_CONFIG["process_name"], + script_path=args.script_path if hasattr( + args, 'script_path') else DEFAULT_CONFIG["script_path"], + restart_interval=args.restart_interval if hasattr( + args, 'restart_interval') else DEFAULT_CONFIG["restart_interval"], + cpu_threshold=args.cpu_threshold if hasattr( + args, 'cpu_threshold') else DEFAULT_CONFIG["cpu_threshold"], + memory_threshold=args.memory_threshold if hasattr( + args, 'memory_threshold') else DEFAULT_CONFIG["memory_threshold"], + max_restarts=args.max_restarts if hasattr( + args, 'max_restarts') else DEFAULT_CONFIG["max_restarts"], + monitor_interval=args.monitor_interval if hasattr( + args, 'monitor_interval') else DEFAULT_CONFIG["monitor_interval"] + ) + + if args.command == "start": + try: + start_daemon(config) + except Exception as e: + logger.critical(f"Failed to start daemon: {e}") + console.print(f"[red]Failed to start daemon: {e}[/red]") + sys.exit(1) + elif args.command == "stop": + stop_daemon() + elif args.command == "status": + status_daemon(config) + else: + console.print("[yellow]Use -h for help.[/yellow]") + sys.exit(1) + +if __name__ == "__main__": + try: + asyncio.run(main()) + except Exception as e: + logger.exception(f"Unhandled exception: {e}") + sys.exit(1) diff --git a/modules/lithium.pytools/tools/exebind.py b/modules/lithium.pytools/tools/exebind.py index c4d30936..57a43652 100644 --- a/modules/lithium.pytools/tools/exebind.py +++ b/modules/lithium.pytools/tools/exebind.py @@ -1,17 +1,45 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -import os -import re +""" +Executable Binder Script + +This script generates PyBind11 bindings for an executable by parsing its help information. +It supports dynamic parsing of command-line options, enhanced logging, and beautified terminal output. + +Usage: + python exebind.py [--module-name ] [--output-dir ] + +Author: + Max Qian + +License: + GPL-3.0-or-later +""" + import subprocess import sys +import re +from pathlib import Path +from typing import List, Tuple + from loguru import logger +from rich.console import Console +from rich.table import Table +from rich.prompt import Prompt + +# Set up Rich console +console = Console() # Configure loguru logger logger.remove() -logger.add(sys.stderr, level="INFO", format="{time} {level} {message}") +logger.add( + sys.stderr, + level="INFO", + format="{time:YYYY-MM-DD HH:mm:ss.SSS} | {level} | {module}:{function}:{line} - {message}" +) -def get_executable_info(executable_path: str) -> list: +def get_executable_info(executable_path: str) -> List[Tuple[str, str]]: """ Get the help information of the executable and parse command options and descriptions. @@ -19,29 +47,33 @@ def get_executable_info(executable_path: str) -> list: executable_path (str): Path to the executable. Returns: - list: A list of tuples containing command options and descriptions, e.g., [('-h, --help', 'Show this help message and exit')]. + List[Tuple[str, str]]: A list of tuples containing command options and descriptions. """ logger.info(f"Getting executable info for: {executable_path}") + try: # Run the executable to get help information help_output = subprocess.check_output( - [executable_path, '--help'], text=True) - logger.debug(f"Help output: {help_output}") + [executable_path, '--help'], text=True, stderr=subprocess.STDOUT + ) + logger.debug(f"Help output:\n{help_output}") except subprocess.CalledProcessError as e: - logger.error(f"Error running the executable: {e}") + logger.error(f"Error running the executable: {e.output}") sys.exit(1) lines = help_output.splitlines() command_info = [] - # Use regular expressions to match command options and descriptions - option_regex = re.compile(r'^\s*(-\w|--\w[\w-]*)(?:\s+<[^>]+>)?\s+(.*)$') + # Regular expressions to match command options and descriptions + option_regex = re.compile( + r'^\s*(-\w|--\w[\w-]*)(?:[,\s]+(-\w|--\w[\w-]*))?\s+(.*)$') for line in lines: match = option_regex.match(line) if match: - option = match.group(1).strip() - description = match.group(2).strip() + options = filter(None, match.groups()[:-1]) + option = ', '.join(options) + description = match.group(3).strip() command_info.append((option, description)) logger.debug(f"Found option: {option}, description: {description}") @@ -49,37 +81,39 @@ def get_executable_info(executable_path: str) -> list: return command_info -def generate_pybind11_code(executable_name: str, command_info: list) -> str: +def generate_pybind11_code(module_name: str, executable_name: str, command_info: List[Tuple[str, str]]) -> str: """ Generate PyBind11 code to wrap the executable. Args: + module_name (str): Name of the Python module to generate. executable_name (str): Name of the executable. - command_info (list): A list of tuples containing command options and descriptions. + command_info (List[Tuple[str, str]]): A list of tuples containing command options and descriptions. Returns: str: Generated PyBind11 code. """ logger.info(f"Generating PyBind11 code for: {executable_name}") - bindings_code = f""" -#include + + # Generate header code + bindings_code = f"""#include #include #include #include #include -#include -#include +#include +#include namespace py = pybind11; -// Run command and return output +// Function to run a command and capture its output std::string run_command(const std::string& args) {{ std::string command = "{executable_name} " + args; std::array buffer; std::string result; std::shared_ptr pipe(popen(command.c_str(), "r"), pclose); if (!pipe) throw std::runtime_error("popen() failed!"); - while (fgets(buffer.data(), 128, pipe.get()) != nullptr) {{ + while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) {{ result += buffer.data(); }} return result; @@ -88,7 +122,7 @@ def generate_pybind11_code(executable_name: str, command_info: list) -> str: // Wrapper class for the executable class {executable_name}_Wrapper {{ public: - // Run the executable and return output + // Run the executable with arguments and return output std::string run(const std::string& args) {{ return run_command(args); }} @@ -97,63 +131,59 @@ class {executable_name}_Wrapper {{ void set_env(const std::string& key, const std::string& value) {{ setenv(key.c_str(), value.c_str(), 1); }} +""".strip() - // Redirect output to a file - void redirect_output(const std::string& filename) {{ - freopen(filename.c_str(), "w", stdout); - }} -""" - - # Generate a function for each command option + # Generate methods for each command option for option, description in command_info: - function_name = f'get_{option.lstrip("-").replace("-", "_")}' - bindings_code += f' std::string {function_name}(const std::string& args = "") {{ return run_command("{ - option} " + args); }} // {description}\n' + method_name = f'run_{option.lstrip("-").replace("-", "_").replace(", ", "_")}' + bindings_code += f""" + // {description} + std::string {method_name}(const std::string& args = "") {{ + return run_command("{option} " + args); + }}""" bindings_code += f""" }}; // Create Python module -PYBIND11_MODULE({executable_name}_bindings, m) {{ +PYBIND11_MODULE({module_name}, m) {{ // Add wrapper class to module py::class_<{executable_name}_Wrapper>(m, "{executable_name}_Wrapper") .def(py::init<>()) - .def("run", &{executable_name}_Wrapper::run) - .def("set_env", &{executable_name}_Wrapper::set_env) - .def("redirect_output", &{executable_name}_Wrapper::redirect_output) -""" + .def("run", &{executable_name}_Wrapper::run, "Run the executable with arguments") + .def("set_env", &{executable_name}_Wrapper::set_env, "Set an environment variable") +""".strip() - # Add function bindings for each command option + # Add method bindings for each command option for option, description in command_info: - function_name = f'get_{option.lstrip("-").replace("-", "_")}' - bindings_code += f' .def("{function_name}", &{executable_name}_Wrapper::{ - function_name}, "{description}")\n' + method_name = f'run_{option.lstrip("-").replace("-", "_").replace(", ", "_")}' + bindings_code += f""" + .def("{method_name}", &{executable_name}_Wrapper::{method_name}, "{description}")""" - bindings_code += " ;\n}\n" + bindings_code += ";\n}" logger.info("PyBind11 code generation completed") return bindings_code -def generate_cmake_file(executable_name: str) -> str: +def generate_cmake_file(module_name: str) -> str: """ Generate CMakeLists.txt file to build the PyBind11 module. Args: - executable_name (str): Name of the executable. + module_name (str): Name of the Python module to generate. Returns: str: Generated CMakeLists.txt file content. """ - logger.info(f"Generating CMakeLists.txt for: {executable_name}") - cmake_content = f""" -cmake_minimum_required(VERSION 3.14) -project({executable_name}_bindings) + logger.info(f"Generating CMakeLists.txt for: {module_name}") + + cmake_content = f"""cmake_minimum_required(VERSION 3.14) +project({module_name}) set(CMAKE_CXX_STANDARD 17) find_package(pybind11 REQUIRED) -add_library({executable_name}_bindings MODULE bindings.cpp) -target_link_libraries({executable_name}_bindings PRIVATE pybind11::module) +pybind11_add_module({module_name} bindings.cpp) """ logger.info("CMakeLists.txt generation completed") return cmake_content @@ -174,37 +204,104 @@ def check_pybind11_installed(): logger.info("PyBind11 installation completed") +def parse_arguments(): + """ + Parse command-line arguments. + + Returns: + argparse.Namespace: Parsed arguments. + """ + import argparse + + parser = argparse.ArgumentParser( + description="Generate PyBind11 bindings for an executable." + ) + parser.add_argument( + "executable_path", + type=str, + help="Path to the executable" + ) + parser.add_argument( + "--module-name", + type=str, + default=None, + help="Name of the Python module to generate (default: basename of the executable)" + ) + parser.add_argument( + "--output-dir", + type=str, + default="bindings", + help="Output directory for the generated code (default: 'bindings')" + ) + args = parser.parse_args() + return args + + +def display_command_options(command_info: List[Tuple[str, str]]): + """ + Display the parsed command options in a table. + + Args: + command_info (List[Tuple[str, str]]): List of command options and descriptions. + """ + table = Table(title="Parsed Command Options") + table.add_column("Option", style="cyan") + table.add_column("Description", style="magenta") + + for option, description in command_info: + table.add_row(option, description) + + console.print(table) + + def main(): """ Main function to parse command line arguments and generate PyBind11 code and CMakeLists.txt file. """ - if len(sys.argv) != 2: - logger.error(f"Usage: {sys.argv[0]} ") - sys.exit(1) + args = parse_arguments() - executable_path = sys.argv[1] - executable_name = os.path.basename(executable_path) + executable_path = args.executable_path + executable_name = Path(executable_path).name + module_name = args.module_name or f"{executable_name}_bindings" + output_dir = Path(args.output_dir) check_pybind11_installed() command_info = get_executable_info(executable_path) + display_command_options(command_info) + + # Confirm with the user before proceeding + proceed = Prompt.ask("Proceed with generating bindings?", + choices=["y", "n"], default="y") + if proceed.lower() != 'y': + logger.info("Operation cancelled by the user.") + sys.exit(0) - bindings_code = generate_pybind11_code(executable_name, command_info) - cmake_content = generate_cmake_file(executable_name) + bindings_code = generate_pybind11_code( + module_name, executable_name, command_info) + cmake_content = generate_cmake_file(module_name) - os.makedirs('bindings', exist_ok=True) + output_dir.mkdir(parents=True, exist_ok=True) + logger.info(f"Writing files to directory: {output_dir}") - with open('bindings/bindings.cpp', 'w') as f: + bindings_file = output_dir / 'bindings.cpp' + with bindings_file.open('w', encoding='utf-8') as f: f.write(bindings_code) - logger.info("bindings.cpp file has been written") + logger.info(f"'bindings.cpp' file has been written: {bindings_file}") - with open('bindings/CMakeLists.txt', 'w') as f: + cmake_file = output_dir / 'CMakeLists.txt' + with cmake_file.open('w', encoding='utf-8') as f: f.write(cmake_content) - logger.info("CMakeLists.txt file has been written") + logger.info(f"'CMakeLists.txt' file has been written: {cmake_file}") - logger.info( - "Binding code and CMakeLists.txt file have been generated in the 'bindings' directory.") + console.print( + f"[bold green]Binding code and CMakeLists.txt have been generated in '{output_dir}'[/bold green]") + logger.info("All tasks completed successfully.") if __name__ == "__main__": - main() + try: + main() + except Exception as e: + logger.exception(f"An unexpected error occurred: {e}") + sys.exit(1) diff --git a/modules/lithium.pytools/tools/ffmpeg.py b/modules/lithium.pytools/tools/ffmpeg.py new file mode 100644 index 00000000..3f98d1de --- /dev/null +++ b/modules/lithium.pytools/tools/ffmpeg.py @@ -0,0 +1,619 @@ +# ffmpeg.py + +from dataclasses import dataclass +import ffmpeg +import asyncio +from concurrent.futures import ThreadPoolExecutor +import argparse +from loguru import logger +from rich.console import Console +from rich.table import Table +from typing import List, Optional, Dict, Any, Literal +import sys + + +# Configure Loguru logger with Rich handler +logger.remove() # Remove the default logger +logger.add( + sys.stderr, + format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}", + level="DEBUG" +) +logger.add( + "ffmpeg_wrapper.log", + rotation="5 MB", + retention="7 days", + level="DEBUG", + format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {message}" +) + +console = Console() + + +@dataclass +class FFmpegConfig: + """Configuration settings for FFmpeg operations.""" + codec: str = "libx264" + audio_codec: str = "aac" + audio_bitrate: str = "192k" + brightness: float = 0.0 + contrast: float = 1.0 + + +class FFmpegWrapper: + """ + A wrapper class for FFmpeg operations, providing asynchronous methods + for various video and audio processing tasks. + """ + + def __init__(self, config: Optional[FFmpegConfig] = None): + """ + Initialize the FFmpegWrapper with an optional configuration. + + Args: + config (Optional[FFmpegConfig]): Configuration settings for FFmpeg. + """ + self.executor = ThreadPoolExecutor() # For executing blocking FFmpeg commands + self.config = config or FFmpegConfig() + logger.info("FFmpegWrapper initialized with ThreadPoolExecutor.") + + async def _run_ffmpeg(self, command: ffmpeg.nodes.FilterableStream) -> None: + """ + Asynchronously run an FFmpeg command. + + Args: + command (ffmpeg.nodes.FilterableStream): The FFmpeg command to execute. + + Raises: + ffmpeg.Error: If FFmpeg execution fails. + Exception: For any unexpected errors. + """ + try: + loop = asyncio.get_running_loop() + command_str = ' '.join(command.compile()) + logger.debug(f"Executing FFmpeg command: {command_str}") + await loop.run_in_executor(self.executor, command.run) + logger.info("FFmpeg command executed successfully.") + except ffmpeg.Error as e: + logger.error(f"FFmpeg execution failed: {e.stderr.decode()}") + raise + except Exception as e: + logger.exception(f"Unexpected error during FFmpeg execution: {e}") + raise + + async def convert_format(self, input_file: str, output_file: str, codec: Optional[str] = None) -> None: + """ + Convert video format using FFmpeg. + + Args: + input_file (str): Path to the input video file. + output_file (str): Path to the output video file. + codec (Optional[str]): Video codec to use. Defaults to the configuration codec. + """ + codec = codec or self.config.codec + try: + command = ffmpeg.input(input_file).output( + output_file, vcodec=codec) + logger.debug( + f"Converting format: {input_file} to {output_file} with codec {codec}.") + await self._run_ffmpeg(command) + console.print( + f"[green]Conversion from {input_file} to {output_file} completed successfully.[/green]") + except Exception as e: + logger.error( + f"Failed to convert format from {input_file} to {output_file}: {e}") + raise + + async def extract_audio(self, input_file: str, output_file: str) -> None: + """ + Extract audio from a video file. + + Args: + input_file (str): Path to the input video file. + output_file (str): Path to the output audio file. + """ + try: + command = ffmpeg.input(input_file).output( + output_file, acodec='copy') + logger.debug( + f"Extracting audio from {input_file} to {output_file}.") + await self._run_ffmpeg(command) + console.print( + f"[green]Audio extracted from {input_file} to {output_file} successfully.[/green]") + except Exception as e: + logger.error( + f"Failed to extract audio from {input_file} to {output_file}: {e}") + raise + + async def trim_video(self, input_file: str, output_file: str, start_time: int, duration: int) -> None: + """ + Trim a video file. + + Args: + input_file (str): Path to the input video file. + output_file (str): Path to the output video file. + start_time (int): Start time in seconds. + duration (int): Duration in seconds. + """ + try: + command = ffmpeg.input( + input_file, ss=start_time, t=duration).output(output_file) + logger.debug( + f"Trimming video {input_file}: start_time={start_time}, duration={duration}.") + await self._run_ffmpeg(command) + console.print( + f"[green]Video trimmed and saved to {output_file} successfully.[/green]") + except Exception as e: + logger.error( + f"Failed to trim video {input_file} to {output_file}: {e}") + raise + + async def resize_video(self, input_file: str, output_file: str, width: int, height: int) -> None: + """ + Resize a video to the specified width and height. + + Args: + input_file (str): Path to the input video file. + output_file (str): Path to the output video file. + width (int): Target width in pixels. + height (int): Target height in pixels. + """ + try: + command = ffmpeg.input(input_file).filter( + 'scale', width, height).output(output_file) + logger.debug( + f"Resizing video {input_file} to {width}x{height}, output {output_file}.") + await self._run_ffmpeg(command) + console.print( + f"[green]Video resized to {width}x{height} and saved to {output_file} successfully.[/green]") + except Exception as e: + logger.error( + f"Failed to resize video {input_file} to {output_file}: {e}") + raise + + async def extract_frames(self, input_file: str, output_pattern: str, fps: int = 1) -> None: + """ + Extract frames from a video at the specified frames per second. + + Args: + input_file (str): Path to the input video file. + output_pattern (str): Output frames pattern (e.g., frame_%04d.png). + fps (int): Frames per second to extract. Defaults to 1. + """ + try: + command = ffmpeg.input(input_file).filter( + 'fps', fps=fps).output(output_pattern) + logger.debug( + f"Extracting frames from {input_file} to {output_pattern} at {fps} FPS.") + await self._run_ffmpeg(command) + console.print( + f"[green]Frames extracted from {input_file} to {output_pattern} at {fps} FPS successfully.[/green]") + except Exception as e: + logger.error( + f"Failed to extract frames from {input_file} to {output_pattern}: {e}") + raise + + async def merge_videos(self, input_files: List[str], output_file: str) -> None: + """ + Merge multiple video files into a single output file. + + Args: + input_files (List[str]): List of input video file paths. + output_file (str): Path to the output merged video file. + """ + try: + inputs = [ffmpeg.input(file) for file in input_files] + command = ffmpeg.concat(*inputs, v=1, a=1).output(output_file) + logger.debug(f"Merging videos {input_files} into {output_file}.") + await self._run_ffmpeg(command) + console.print( + f"[green]Videos merged into {output_file} successfully.[/green]") + except Exception as e: + logger.error( + f"Failed to merge videos {input_files} into {output_file}: {e}") + raise + + async def merge_audios(self, input_files: List[str], output_file: str) -> None: + """ + Merge multiple audio files into a single output file. + + Args: + input_files (List[str]): List of input audio file paths. + output_file (str): Path to the output merged audio file. + """ + try: + inputs = [ffmpeg.input(file) for file in input_files] + command = ffmpeg.filter( + inputs, 'amix', inputs=len(inputs)).output(output_file) + logger.debug(f"Merging audios {input_files} into {output_file}.") + await self._run_ffmpeg(command) + console.print( + f"[green]Audios merged into {output_file} successfully.[/green]") + except Exception as e: + logger.error( + f"Failed to merge audios {input_files} into {output_file}: {e}") + raise + + async def add_watermark(self, input_file: str, output_file: str, watermark_image: str, position: Literal["topleft", "topright", "bottomleft", "bottomright"] = "topright") -> None: + """ + Add a watermark image to a video at the specified position. + + Args: + input_file (str): Path to the input video file. + output_file (str): Path to the output video file. + watermark_image (str): Path to the watermark image file. + position (Literal["topleft", "topright", "bottomleft", "bottomright"]): + Position to place the watermark. Defaults to "topright". + """ + try: + positions = { + "topleft": "10:10", + "topright": "main_w-overlay_w-10:10", + "bottomleft": "10:main_h-overlay_h-10", + "bottomright": "main_w-overlay_w-10:main_h-overlay_h-10" + } + pos_x, pos_y = positions.get(position, "10:10").split(":") + command = ( + ffmpeg + .input(input_file) + .overlay(watermark_image, x=pos_x, y=pos_y) + .output(output_file) + ) + logger.debug( + f"Adding watermark {watermark_image} to {input_file} at position {position}.") + await self._run_ffmpeg(command) + console.print( + f"[green]Watermark added to {input_file} and saved as {output_file} successfully.[/green]") + except Exception as e: + logger.error(f"Failed to add watermark to {input_file}: {e}") + raise + + async def add_subtitles(self, input_file: str, output_file: str, subtitle_file: str) -> None: + """ + Add subtitles to a video. + + Args: + input_file (str): Path to the input video file. + output_file (str): Path to the output video file with subtitles. + subtitle_file (str): Path to the subtitle file. + """ + try: + command = ffmpeg.input(input_file).output( + output_file, vf=f"subtitles={subtitle_file}") + logger.debug( + f"Adding subtitles from {subtitle_file} to {input_file}, output {output_file}.") + await self._run_ffmpeg(command) + console.print( + f"[green]Subtitles added to {input_file} and saved as {output_file} successfully.[/green]") + except Exception as e: + logger.error(f"Failed to add subtitles to {input_file}: {e}") + raise + + async def change_speed(self, input_file: str, output_file: str, speed_factor: float) -> None: + """ + Change the playback speed of a video. + + Args: + input_file (str): Path to the input video file. + output_file (str): Path to the output video file with changed speed. + speed_factor (float): Speed factor (e.g., 2.0 for double speed). + """ + try: + command = ffmpeg.input(input_file).filter( + 'setpts', f"{1/speed_factor}*PTS").output(output_file) + logger.debug( + f"Changing speed of {input_file} by a factor of {speed_factor}, output {output_file}.") + await self._run_ffmpeg(command) + console.print( + f"[green]Video speed changed by a factor of {speed_factor} and saved as {output_file} successfully.[/green]") + except Exception as e: + logger.error(f"Failed to change speed of {input_file}: {e}") + raise + + async def extract_video_info(self, input_file: str) -> Dict[str, Any]: + """ + Extract information from a video file. + + Args: + input_file (str): Path to the input video file. + + Returns: + Dict[str, Any]: Extracted video information. + """ + try: + logger.debug(f"Extracting video info from {input_file}.") + probe = ffmpeg.probe(input_file) + logger.info(f"Video info extracted: {probe}") + table = Table(title="Video Information") + + for key, value in probe.items(): + table.add_row(str(key), str(value)) + + console.print(table) + return probe + except ffmpeg.Error as e: + logger.error( + f"Failed to extract video info from {input_file}: {e.stderr.decode()}") + raise + except Exception as e: + logger.exception( + f"Unexpected error while extracting video info: {e}") + raise + + async def add_background_music(self, input_video: str, input_audio: str, output_file: str, volume: float = 0.5) -> None: + """ + Add background music to a video. + + Args: + input_video (str): Path to the input video file. + input_audio (str): Path to the input audio file. + output_file (str): Path to the output video file with background music. + volume (float): Volume level of the background music. Defaults to 0.5. + """ + try: + command = ( + ffmpeg + .input(input_video) + .input(input_audio) + .filter('amix', inputs=2, duration='first', dropout_transition=3) + .output(output_file, vcodec='copy', acodec='aac', audio_bitrate=self.config.audio_bitrate) + ) + logger.debug( + f"Adding background music from {input_audio} to {input_video}, output {output_file}.") + await self._run_ffmpeg(command) + console.print( + f"[green]Background music added to {input_video} and saved as {output_file} successfully.[/green]") + except Exception as e: + logger.error( + f"Failed to add background music to {input_video}: {e}") + raise + + async def overlay_image(self, input_video: str, overlay_image: str, output_file: str, x: int = 10, y: int = 10) -> None: + """ + Overlay an image onto a video at the specified coordinates. + + Args: + input_video (str): Path to the input video file. + overlay_image (str): Path to the overlay image file. + output_file (str): Path to the output video file with the overlay. + x (int): X-axis position of the overlay. Defaults to 10. + y (int): Y-axis position of the overlay. Defaults to 10. + """ + try: + command = ( + ffmpeg + .input(input_video) + .overlay(overlay_image, x=x, y=y) + .output(output_file) + ) + logger.debug( + f"Overlaying image {overlay_image} on {input_video} at position ({x}, {y}), output {output_file}.") + await self._run_ffmpeg(command) + console.print( + f"[green]Image {overlay_image} overlaid on {input_video} and saved as {output_file} successfully.[/green]") + except Exception as e: + logger.error( + f"Failed to overlay image {overlay_image} on {input_video}: {e}") + raise + + async def adjust_brightness_contrast(self, input_file: str, output_file: str, brightness: float = 0.0, contrast: float = 1.0) -> None: + """ + Adjust the brightness and contrast of a video. + + Args: + input_file (str): Path to the input video file. + output_file (str): Path to the output video file with adjustments. + brightness (float): Brightness level (-1.0 to 1.0). Defaults to 0.0. + contrast (float): Contrast level (0.0 and above). Defaults to 1.0. + """ + try: + command = ffmpeg.input(input_file).filter( + 'eq', brightness=brightness, contrast=contrast).output(output_file) + logger.debug( + f"Adjusting brightness to {brightness} and contrast to {contrast} for {input_file}, output {output_file}.") + await self._run_ffmpeg(command) + console.print( + f"[green]Brightness and contrast adjusted for {input_file} and saved as {output_file} successfully.[/green]") + except Exception as e: + logger.error( + f"Failed to adjust brightness and contrast for {input_file}: {e}") + raise + + +def parse_args() -> argparse.Namespace: + """ + Parse command-line arguments. + + Returns: + argparse.Namespace: Parsed arguments. + """ + parser = argparse.ArgumentParser( + description="FFmpeg Wrapper CLI with Enhanced Features") + subparsers = parser.add_subparsers( + dest="command", help="Available commands") + + # Convert Format + parser_convert = subparsers.add_parser( + "convert", help="Convert video format") + parser_convert.add_argument("input", help="Input file path") + parser_convert.add_argument("output", help="Output file path") + parser_convert.add_argument( + "--codec", type=str, default="libx264", help="Video codec (default: libx264)") + + # Extract Audio + parser_extract_audio = subparsers.add_parser( + "extract-audio", help="Extract audio from video") + parser_extract_audio.add_argument("input", help="Input video file path") + parser_extract_audio.add_argument("output", help="Output audio file path") + + # Trim Video + parser_trim = subparsers.add_parser("trim", help="Trim video") + parser_trim.add_argument("input", help="Input video file path") + parser_trim.add_argument("output", help="Output video file path") + parser_trim.add_argument("start_time", type=int, + help="Start time in seconds") + parser_trim.add_argument("duration", type=int, help="Duration in seconds") + + # Resize Video + parser_resize = subparsers.add_parser("resize", help="Resize video") + parser_resize.add_argument("input", help="Input video file path") + parser_resize.add_argument("output", help="Output video file path") + parser_resize.add_argument("width", type=int, help="Width in pixels") + parser_resize.add_argument("height", type=int, help="Height in pixels") + + # Extract Frames + parser_extract_frames = subparsers.add_parser( + "extract-frames", help="Extract frames from video") + parser_extract_frames.add_argument("input", help="Input video file path") + parser_extract_frames.add_argument( + "output", help="Output frames pattern (e.g., frame_%04d.png)") + parser_extract_frames.add_argument( + "--fps", type=int, default=1, help="Frames per second (default: 1)") + + # Merge Videos + parser_merge_videos = subparsers.add_parser( + "merge-videos", help="Merge multiple videos") + parser_merge_videos.add_argument( + "inputs", nargs='+', help="Input video file paths") + parser_merge_videos.add_argument("output", help="Output video file path") + + # Merge Audios + parser_merge_audios = subparsers.add_parser( + "merge-audios", help="Merge multiple audio files") + parser_merge_audios.add_argument( + "inputs", nargs='+', help="Input audio file paths") + parser_merge_audios.add_argument("output", help="Output audio file path") + + # Add Watermark + parser_watermark = subparsers.add_parser( + "add-watermark", help="Add watermark to video") + parser_watermark.add_argument("input", help="Input video file path") + parser_watermark.add_argument("output", help="Output video file path") + parser_watermark.add_argument( + "watermark", help="Watermark image file path") + parser_watermark.add_argument("--position", type=str, default="topright", choices=[ + "topleft", "topright", "bottomleft", "bottomright"], help="Position of watermark (default: topright)") + + # Add Subtitles + parser_subtitles = subparsers.add_parser( + "add-subtitles", help="Add subtitles to video") + parser_subtitles.add_argument("input", help="Input video file path") + parser_subtitles.add_argument("output", help="Output video file path") + parser_subtitles.add_argument("subtitle", help="Subtitle file path") + + # Change Speed + parser_speed = subparsers.add_parser( + "change-speed", help="Change playback speed of video") + parser_speed.add_argument("input", help="Input video file path") + parser_speed.add_argument("output", help="Output video file path") + parser_speed.add_argument( + "speed", type=float, help="Speed factor (e.g., 2 for double speed)") + + # Extract Video Info + parser_info = subparsers.add_parser( + "extract-info", help="Extract video information") + parser_info.add_argument("input", help="Input video file path") + + # Add Background Music + parser_bg_music = subparsers.add_parser( + "add-bg-music", help="Add background music to video") + parser_bg_music.add_argument("video", help="Input video file path") + parser_bg_music.add_argument("audio", help="Input audio file path") + parser_bg_music.add_argument("output", help="Output video file path") + parser_bg_music.add_argument( + "--volume", type=float, default=0.5, help="Volume of background music (default: 0.5)") + + # Overlay Image + parser_overlay = subparsers.add_parser( + "overlay-image", help="Overlay image on video") + parser_overlay.add_argument("video", help="Input video file path") + parser_overlay.add_argument("image", help="Overlay image file path") + parser_overlay.add_argument("output", help="Output video file path") + parser_overlay.add_argument( + "--x", type=int, default=10, help="X position (default: 10)") + parser_overlay.add_argument( + "--y", type=int, default=10, help="Y position (default: 10)") + + # Adjust Brightness and Contrast + parser_brightness = subparsers.add_parser( + "adjust-bc", help="Adjust brightness and contrast of video") + parser_brightness.add_argument("input", help="Input video file path") + parser_brightness.add_argument("output", help="Output video file path") + parser_brightness.add_argument( + "--brightness", type=float, default=0.0, help="Brightness level (-1.0 to 1.0, default: 0.0)") + parser_brightness.add_argument( + "--contrast", type=float, default=1.0, help="Contrast level (0.0 and above, default: 1.0)") + + return parser.parse_args() + + +async def main() -> None: + """ + Main function to parse command-line arguments and execute FFmpeg operations. + """ + args = parse_args() + ffmpeg_wrapper = FFmpegWrapper() + + try: + if args.command == "convert": + await ffmpeg_wrapper.convert_format(args.input, args.output, args.codec) + + elif args.command == "extract-audio": + await ffmpeg_wrapper.extract_audio(args.input, args.output) + + elif args.command == "trim": + await ffmpeg_wrapper.trim_video(args.input, args.output, args.start_time, args.duration) + + elif args.command == "resize": + await ffmpeg_wrapper.resize_video(args.input, args.output, args.width, args.height) + + elif args.command == "extract-frames": + await ffmpeg_wrapper.extract_frames(args.input, args.output, args.fps) + + elif args.command == "merge-videos": + await ffmpeg_wrapper.merge_videos(args.inputs, args.output) + + elif args.command == "merge-audios": + await ffmpeg_wrapper.merge_audios(args.inputs, args.output) + + elif args.command == "add-watermark": + await ffmpeg_wrapper.add_watermark(args.input, args.output, args.watermark, args.position) + + elif args.command == "add-subtitles": + await ffmpeg_wrapper.add_subtitles(args.input, args.output, args.subtitle) + + elif args.command == "change-speed": + await ffmpeg_wrapper.change_speed(args.input, args.output, args.speed) + + elif args.command == "extract-info": + info = await ffmpeg_wrapper.extract_video_info(args.input) + # Display info in a readable table + table = Table(title="Video Information") + for key, value in info.items(): + table.add_row(str(key), str(value)) + console.print(table) + + elif args.command == "add-bg-music": + await ffmpeg_wrapper.add_background_music(args.video, args.audio, args.output, args.volume) + + elif args.command == "overlay-image": + await ffmpeg_wrapper.overlay_image(args.video, args.image, args.output, args.x, args.y) + + elif args.command == "adjust-bc": + await ffmpeg_wrapper.adjust_brightness_contrast(args.input, args.output, args.brightness, args.contrast) + + else: + console.print("[yellow]Use -h for help.[/yellow]") + sys.exit(1) + except Exception as e: + logger.critical(f"An error occurred: {e}") + console.print(f"[red]An error occurred: {e}[/red]") + sys.exit(1) + + +if __name__ == "__main__": + try: + asyncio.run(main()) + except Exception as e: + logger.critical(f"Unhandled exception: {e}") + sys.exit(1) diff --git a/modules/lithium.pytools/tools/ftp.py b/modules/lithium.pytools/tools/ftp.py new file mode 100644 index 00000000..7ce22331 --- /dev/null +++ b/modules/lithium.pytools/tools/ftp.py @@ -0,0 +1,472 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Enhanced FTP Client Script + +This script provides an improved FTP client with support for asynchronous operations, +FTPS, SFTP protocols, enhanced logging with loguru, and beautified terminal output using rich. + +Features: +- Asynchronous file transfers with asyncio and aioftp +- Support for FTP, FTPS, and SFTP protocols +- Enhanced logging with loguru +- Beautiful terminal output with rich +- Detailed inline comments and docstrings + +Usage: + python ftp_client.py --help + +Author: + Max Qian + +License: + GPL-3.0-or-later +""" + +import sys +import asyncio +import argparse +import logging +from pathlib import Path +from typing import Optional, List + +from loguru import logger +from rich.console import Console +from rich.table import Table +from rich.progress import Progress, BarColumn, TextColumn, TimeRemainingColumn +from rich.prompt import Prompt +from rich.logging import RichHandler + +import aioftp # Asynchronous FTP client library +import asyncssh # Asynchronous SSH client library for SFTP + +# Configure loguru and rich logging +logger.remove() +console = Console() +logger.add(RichHandler(console=console), level="INFO", format="{message}") + +# Set asyncio event loop policy for Windows compatibility +if sys.platform.startswith('win'): + asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) + + +class AsyncFTPClient: + """ + Asynchronous FTP client supporting FTP, FTPS, and SFTP protocols. + """ + + def __init__(self, host: str, port: int = 21, username: str = 'anonymous', + password: str = '', protocol: str = 'ftp', secure: bool = False): + self.host = host + self.port = port + self.username = username + self.password = password + self.protocol = protocol.lower() + self.secure = secure + self.connection = None + + async def connect(self): + """ + Establish a connection to the server based on the specified protocol. + """ + logger.info( + f"Connecting to {self.protocol.upper()} server: {self.host}:{self.port}") + if self.protocol == 'ftp': + tls = self.secure + self.connection = aioftp.ClientContext( + self.host, self.port, self.username, self.password, ssl=tls) + await self.connection.ensure_connected() + elif self.protocol == 'sftp': + self.connection = await asyncssh.connect( + self.host, port=self.port, username=self.username, password=self.password) + else: + logger.error(f"Unsupported protocol: {self.protocol}") + sys.exit(1) + logger.info("Connection established successfully.") + + async def disconnect(self): + """ + Close the connection to the server. + """ + if self.connection: + if self.protocol == 'ftp': + await self.connection.quit() + elif self.protocol == 'sftp': + self.connection.close() + await self.connection.wait_closed() + logger.info("Disconnected from server.") + + async def list_files(self, path: str = '.', recursive: bool = False) -> List[dict]: + """ + List files and directories at the specified path. + + Args: + path (str): Remote directory path. + recursive (bool): Whether to list files recursively. + + Returns: + List[dict]: List of file information dictionaries. + """ + files = [] + if self.protocol == 'ftp': + async for path_obj, info in self.connection.list( + path, recursive=recursive): + file_info = { + 'name': path_obj.name, + 'path': str(path_obj), + 'type': 'dir' if info['type'] == 'dir' else 'file', + 'size': info.get('size', 0), + } + files.append(file_info) + elif self.protocol == 'sftp': + async with self.connection.start_sftp_client() as sftp: + async for item in sftp.scandir(path): + file_info = { + 'name': item.filename, + 'path': f"{path}/{item.filename}", + 'type': 'dir' if item.longname.startswith('d') else 'file', + 'size': item.attrs.size, + } + files.append(file_info) + return files + + async def download_file(self, remote_path: str, local_path: str): + """ + Download a file from the server. + + Args: + remote_path (str): Remote file path. + local_path (str): Local file path. + """ + logger.info(f"Downloading {remote_path} to {local_path}") + if self.protocol == 'ftp': + size = await self.connection.stat(remote_path) + total_size = size['size'] + with open(local_path, 'wb') as f, Progress( + TextColumn("[progress.description]{task.description}"), + BarColumn(), + "[progress.percentage]{task.percentage:>3.1f}%", + "•", + "[green]{task.completed} of {task.total} bytes", + "•", + TimeRemainingColumn(), + console=console, + ) as progress: + task = progress.add_task("Downloading...", total=total_size) + async with self.connection.download_stream(remote_path) as stream: + async for block in stream.iter_by_block(): + f.write(block) + progress.update(task, advance=len(block)) + elif self.protocol == 'sftp': + async with self.connection.start_sftp_client() as sftp: + size = (await sftp.stat(remote_path)).size + with open(local_path, 'wb') as f, Progress( + TextColumn("[progress.description]{task.description}"), + BarColumn(), + "[progress.percentage]{task.percentage:>3.1f}%", + "•", + "[green]{task.completed} of {task.total} bytes", + "•", + TimeRemainingColumn(), + console=console, + ) as progress: + task = progress.add_task("Downloading...", total=size) + async with sftp.open(remote_path, 'rb') as remote_file: + while True: + data = await remote_file.read(32768) + if not data: + break + f.write(data) + progress.update(task, advance=len(data)) + logger.info("Download completed successfully.") + + async def upload_file(self, local_path: str, remote_path: str): + """ + Upload a file to the server. + + Args: + local_path (str): Local file path. + remote_path (str): Remote file path. + """ + logger.info(f"Uploading {local_path} to {remote_path}") + size = Path(local_path).stat().st_size + if self.protocol == 'ftp': + with open(local_path, 'rb') as f, Progress( + TextColumn("[progress.description]{task.description}"), + BarColumn(), + "[progress.percentage]{task.percentage:>3.1f}%", + "•", + "[green]{task.completed} of {task.total} bytes", + "•", + TimeRemainingColumn(), + console=console, + ) as progress: + task = progress.add_task("Uploading...", total=size) + async with self.connection.upload_stream(remote_path) as stream: + while True: + data = f.read(32768) + if not data: + break + await stream.write(data) + progress.update(task, advance=len(data)) + elif self.protocol == 'sftp': + async with self.connection.start_sftp_client() as sftp: + with open(local_path, 'rb') as f, Progress( + TextColumn("[progress.description]{task.description}"), + BarColumn(), + "[progress.percentage]{task.percentage:>3.1f}%", + "•", + "[green]{task.completed} of {task.total} bytes", + "•", + TimeRemainingColumn(), + console=console, + ) as progress: + task = progress.add_task("Uploading...", total=size) + async with sftp.open(remote_path, 'wb') as remote_file: + while True: + data = f.read(32768) + if not data: + break + await remote_file.write(data) + progress.update(task, advance=len(data)) + logger.info("Upload completed successfully.") + + async def delete_file(self, remote_path: str): + """ + Delete a file on the server. + + Args: + remote_path (str): Remote file path. + """ + if self.protocol == 'ftp': + await self.connection.remove_file(remote_path) + elif self.protocol == 'sftp': + async with self.connection.start_sftp_client() as sftp: + await sftp.remove(remote_path) + logger.info(f"Deleted file: {remote_path}") + + async def make_directory(self, remote_path: str): + """ + Create a directory on the server. + + Args: + remote_path (str): Remote directory path. + """ + if self.protocol == 'ftp': + await self.connection.make_directory(remote_path) + elif self.protocol == 'sftp': + async with self.connection.start_sftp_client() as sftp: + await sftp.mkdir(remote_path) + logger.info(f"Created directory: {remote_path}") + + async def remove_directory(self, remote_path: str): + """ + Remove a directory on the server. + + Args: + remote_path (str): Remote directory path. + """ + if self.protocol == 'ftp': + await self.connection.remove_directory(remote_path) + elif self.protocol == 'sftp': + async with self.connection.start_sftp_client() as sftp: + await sftp.rmdir(remote_path) + logger.info(f"Removed directory: {remote_path}") + + async def rename(self, old_path: str, new_path: str): + """ + Rename a file or directory on the server. + + Args: + old_path (str): Original path. + new_path (str): New path. + """ + if self.protocol == 'ftp': + await self.connection.rename(old_path, new_path) + elif self.protocol == 'sftp': + async with self.connection.start_sftp_client() as sftp: + await sftp.rename(old_path, new_path) + logger.info(f"Renamed {old_path} to {new_path}") + + async def get_current_directory(self) -> str: + """ + Get the current working directory on the server. + + Returns: + str: Current directory path. + """ + if self.protocol == 'ftp': + path = await self.connection.get_current_directory() + elif self.protocol == 'sftp': + # SFTP does not have a concept of current directory in the same way + path = "." + logger.info(f"Current directory: {path}") + return path + + async def change_directory(self, remote_path: str): + """ + Change the current working directory on the server. + + Args: + remote_path (str): Remote directory path. + """ + if self.protocol == 'ftp': + await self.connection.change_directory(remote_path) + logger.info(f"Changed directory to: {remote_path}") + elif self.protocol == 'sftp': + # SFTP does not support changing directory in the same way + logger.warning("SFTP does not support changing current directory.") + + async def batch_transfer(self, operations: List[dict]): + """ + Perform batch upload/download operations. + + Args: + operations (List[dict]): List of operation dictionaries. + """ + tasks = [] + for op in operations: + if op['action'] == 'upload': + tasks.append(self.upload_file(op['local'], op['remote'])) + elif op['action'] == 'download': + tasks.append(self.download_file(op['remote'], op['local'])) + await asyncio.gather(*tasks) + logger.info("Batch transfer completed.") + + +def create_parser() -> argparse.ArgumentParser: + """ + Create an argument parser for command-line options. + + Returns: + argparse.ArgumentParser: Configured argument parser. + """ + parser = argparse.ArgumentParser( + description='Enhanced FTP client command line tool') + parser.add_argument('--host', required=True, help='Server address') + parser.add_argument('--port', type=int, help='Server port') + parser.add_argument('--username', default='anonymous', help='Username') + parser.add_argument('--password', default='', help='Password') + parser.add_argument('--protocol', default='ftp', + choices=['ftp', 'sftp'], help='Protocol to use') + parser.add_argument('--secure', action='store_true', + help='Enable FTPS (for FTP protocol)') + + subparsers = parser.add_subparsers( + dest='command', help='Available commands') + + # ls command + ls_parser = subparsers.add_parser('ls', help='List files') + ls_parser.add_argument('--path', default='.', help='Remote path to list') + ls_parser.add_argument( + '--recursive', action='store_true', help='List files recursively') + + # get command + get_parser = subparsers.add_parser('get', help='Download file') + get_parser.add_argument('remote_path', help='Remote file path') + get_parser.add_argument('local_path', help='Local file path') + + # put command + put_parser = subparsers.add_parser('put', help='Upload file') + put_parser.add_argument('local_path', help='Local file path') + put_parser.add_argument('remote_path', help='Remote file path') + + # rm command + rm_parser = subparsers.add_parser('rm', help='Delete file') + rm_parser.add_argument('remote_path', help='Remote file path to delete') + + # mkdir command + mkdir_parser = subparsers.add_parser('mkdir', help='Create directory') + mkdir_parser.add_argument( + 'remote_path', help='Remote directory path to create') + + # rmdir command + rmdir_parser = subparsers.add_parser('rmdir', help='Remove directory') + rmdir_parser.add_argument( + 'remote_path', help='Remote directory path to remove') + + # rename command + rename_parser = subparsers.add_parser( + 'rename', help='Rename file or directory') + rename_parser.add_argument('old_path', help='Original remote path') + rename_parser.add_argument('new_path', help='New remote path') + + # pwd command + subparsers.add_parser('pwd', help='Show current directory') + + # cd command + cd_parser = subparsers.add_parser('cd', help='Change directory') + cd_parser.add_argument( + 'remote_path', help='Remote directory path to change to') + + # batch command + batch_parser = subparsers.add_parser( + 'batch', help='Batch upload/download files') + batch_parser.add_argument( + 'operations_file', help='Path to operations JSON file') + + return parser + + +async def main(): + parser = create_parser() + args = parser.parse_args() + + if not args.command: + parser.print_help() + return + + client = AsyncFTPClient( + host=args.host, + port=args.port or (22 if args.protocol == 'sftp' else 21), + username=args.username, + password=args.password, + protocol=args.protocol, + secure=args.secure + ) + + try: + await client.connect() + if args.command == 'ls': + files = await client.list_files(args.path, args.recursive) + table = Table(show_header=True, header_style="bold blue") + table.add_column("Type") + table.add_column("Size", justify="right") + table.add_column("Path") + for file in files: + icon = "[blue][DIR][/blue]" if file['type'] == 'dir' else "[green][FILE][/green]" + size = str(file['size']) + path = file['path'] + table.add_row(icon, size, path) + console.print(table) + elif args.command == 'get': + await client.download_file(args.remote_path, args.local_path) + elif args.command == 'put': + await client.upload_file(args.local_path, args.remote_path) + elif args.command == 'rm': + await client.delete_file(args.remote_path) + elif args.command == 'mkdir': + await client.make_directory(args.remote_path) + elif args.command == 'rmdir': + await client.remove_directory(args.remote_path) + elif args.command == 'rename': + await client.rename(args.old_path, args.new_path) + elif args.command == 'pwd': + await client.get_current_directory() + elif args.command == 'cd': + await client.change_directory(args.remote_path) + elif args.command == 'batch': + import json + with open(args.operations_file, 'r') as f: + operations = json.load(f) + await client.batch_transfer(operations) + else: + logger.error(f"Unknown command: {args.command}") + except Exception as e: + logger.exception(f"An error occurred: {e}") + finally: + await client.disconnect() + + +if __name__ == '__main__': + asyncio.run(main()) diff --git a/modules/lithium.pytools/tools/fuzz.py b/modules/lithium.pytools/tools/fuzz.py new file mode 100644 index 00000000..9851c2bc --- /dev/null +++ b/modules/lithium.pytools/tools/fuzz.py @@ -0,0 +1,436 @@ +import argparse +import random +import string +import json +import csv +import uuid +from datetime import datetime, timedelta +from typing import Any, Dict, List, Optional +from dataclasses import dataclass, field +from loguru import logger +from rich.console import Console +from rich.table import Table +from rich.progress import Progress +from pathlib import Path + +console = Console() + +# Configure Loguru to handle logging with specified settings +logger.add("fuzz.log", rotation="1 MB", level="DEBUG", + backtrace=True, diagnose=True) + + +@dataclass +class FieldInfo: + """ + Data class to store information about each field in the schema. + + Attributes: + type (str): The type of the field (e.g., int, float, string). + min (Optional[int]): The minimum value for numerical fields. + max (Optional[int]): The maximum value for numerical fields. + precision (Optional[int]): The precision for float values. + length (Optional[int]): The length of generated strings. + start_date (Optional[str]): The start date for date fields. + end_date (Optional[str]): The end date for date fields. + choices (Optional[List[Any]]): A list of choices for choice fields. + """ + type: str + min: Optional[int] = 0 + max: Optional[int] = 100 + precision: Optional[int] = 2 + length: Optional[int] = 8 + start_date: Optional[str] = "2000-01-01" + end_date: Optional[str] = "2030-01-01" + choices: Optional[List[Any]] = field(default_factory=list) + + +def random_int(min_val: int = 0, max_val: int = 100) -> int: + """ + Generate a random integer between min_val and max_val. + + Args: + min_val (int): The minimum integer value. + max_val (int): The maximum integer value. + + Returns: + int: A randomly generated integer within the specified range. + """ + value = random.randint(min_val, max_val) + logger.debug(f"Generated integer: {value} between {min_val} and {max_val}") + return value + + +def random_float(min_val: float = 0.0, max_val: float = 100.0, precision: int = 2) -> float: + """ + Generate a random float between min_val and max_val with specified precision. + + Args: + min_val (float): The minimum float value. + max_val (float): The maximum float value. + precision (int): The number of decimal places. + + Returns: + float: A randomly generated float within the specified range and precision. + """ + value = round(random.uniform(min_val, max_val), precision) + logger.debug( + f"Generated float: {value} between {min_val} and {max_val} with precision {precision}") + return value + + +def random_string(length: int = 8) -> str: + """ + Generate a random string of specified length. + + Args: + length (int): The length of the generated string. + + Returns: + str: A randomly generated alphanumeric string. + """ + value = ''.join(random.choices( + string.ascii_letters + string.digits, k=length)) + logger.debug(f"Generated string: {value} with length {length}") + return value + + +def random_email() -> str: + """ + Generate a random email address. + + Returns: + str: A randomly generated email address. + """ + domains = ["example.com", "test.com", "email.com"] + value = f"{random_string(5)}@{random.choice(domains)}" + logger.debug(f"Generated email: {value}") + return value + + +def random_phone() -> str: + """ + Generate a random phone number in the format +XX-XXX-XXXX. + + Returns: + str: A randomly generated phone number. + """ + value = f"+{random.randint(1, 99)}-{random.randint(100, 999)}-{random.randint(1000, 9999)}" + logger.debug(f"Generated phone: {value}") + return value + + +def random_uuid_str() -> str: + """ + Generate a random UUID string. + + Returns: + str: A randomly generated UUID. + """ + value = str(uuid.uuid4()) + logger.debug(f"Generated UUID: {value}") + return value + + +def random_date(start_date: str = "2000-01-01", end_date: str = "2030-01-01") -> str: + """ + Generate a random date between start_date and end_date. + + Args: + start_date (str): The start date in YYYY-MM-DD format. + end_date (str): The end date in YYYY-MM-DD format. + + Returns: + str: A randomly generated date string in YYYY-MM-DD format. + """ + start = datetime.strptime(start_date, "%Y-%m-%d") + end = datetime.strptime(end_date, "%Y-%m-%d") + delta = end - start + random_days = random.randint(0, delta.days) + value = (start + timedelta(days=random_days)).strftime("%Y-%m-%d") + logger.debug( + f"Generated date: {value} between {start_date} and {end_date}") + return value + + +def random_choice(choices: List[Any]) -> Any: + """ + Randomly select an element from a list of choices. + + Args: + choices (List[Any]): A list of possible choices. + + Returns: + Any: A randomly selected element from the choices list. + """ + value = random.choice(choices) + logger.debug(f"Selected choice: {value} from {choices}") + return value + + +def random_bool() -> bool: + """ + Generate a random boolean value. + + Returns: + bool: A randomly generated boolean value (True or False). + """ + value = random.choice([True, False]) + logger.debug(f"Generated boolean: {value}") + return value + + +def random_ip() -> str: + """ + Generate a random IPv4 address. + + Returns: + str: A randomly generated IPv4 address. + """ + value = '.'.join(str(random.randint(0, 255)) for _ in range(4)) + logger.debug(f"Generated IP: {value}") + return value + + +def random_url() -> str: + """ + Generate a random URL. + + Returns: + str: A randomly generated URL. + """ + protocols = ["http", "https"] + domains = ["example.com", "test.com", "mysite.com"] + value = f"{random.choice(protocols)}://{random_string(5)}.{random.choice(domains)}" + logger.debug(f"Generated URL: {value}") + return value + + +def random_address() -> str: + """ + Generate a random address. + + Returns: + str: A randomly generated address. + """ + streets = ["Main St", "Second St", "Third St", "Fourth St"] + cities = ["New York", "Los Angeles", "Chicago", "Houston"] + value = f"{random.randint(100, 9999)} {random.choice(streets)}, {random.choice(cities)}" + logger.debug(f"Generated address: {value}") + return value + + +def random_company() -> str: + """ + Generate a random company name. + + Returns: + str: A randomly generated company name. + """ + prefixes = ["Tech", "Info", "Data", "Global"] + suffixes = ["Solutions", "Systems", "Corp", "Industries"] + value = f"{random.choice(prefixes)} {random.choice(suffixes)}" + logger.debug(f"Generated company name: {value}") + return value + + +def generate_data(schema: Dict[str, FieldInfo], num_records: int) -> List[Dict[str, Any]]: + """ + Generate data based on the provided schema and number of records. + + Args: + schema (Dict[str, FieldInfo]): A dictionary defining the schema for data generation. + num_records (int): The number of records to generate. + + Returns: + List[Dict[str, Any]]: A list of dictionaries representing the generated data records. + """ + data = [] + with Progress() as progress: + task = progress.add_task("Generating data...", total=num_records) + for _ in range(num_records): + record = {} + for field, field_info in schema.items(): + field_type = field_info.type + if field_type == "int": + record[field] = random_int(field_info.min, field_info.max) + elif field_type == "float": + record[field] = random_float( + field_info.min, field_info.max, field_info.precision) + elif field_type == "string": + record[field] = random_string(field_info.length) + elif field_type == "email": + record[field] = random_email() + elif field_type == "phone": + record[field] = random_phone() + elif field_type == "uuid": + record[field] = random_uuid_str() + elif field_type == "date": + record[field] = random_date( + field_info.start_date, field_info.end_date) + elif field_type == "choice": + record[field] = random_choice(field_info.choices) + elif field_type == "bool": + record[field] = random_bool() + elif field_type == "ip": + record[field] = random_ip() + elif field_type == "url": + record[field] = random_url() + elif field_type == "address": + record[field] = random_address() + elif field_type == "company": + record[field] = random_company() + else: + logger.error(f"Unsupported field type: {field_type}") + raise ValueError(f"Unsupported field type: {field_type}") + data.append(record) + progress.advance(task) + return data + + +def save_to_file(data: List[Dict[str, Any]], output_format: str, output_file: Path, delimiter: str = ',', encoding: str = 'utf-8') -> None: + """ + Save the generated data to a file in the specified format. + + Args: + data (List[Dict[str, Any]]): The data to be saved. + output_format (str): The format to save the data in ('json', 'csv', 'text'). + output_file (Path): The path to the output file. + delimiter (str, optional): The delimiter to use for CSV files. Defaults to ','. + encoding (str, optional): The file encoding. Defaults to 'utf-8'. + + Raises: + ValueError: If an unsupported output format is specified. + """ + output_file = Path(output_file) + try: + if output_format == "json": + with output_file.open("w", encoding=encoding) as f: + json.dump(data, f, indent=4) + elif output_format == "csv": + with output_file.open("w", newline='', encoding=encoding) as f: + writer = csv.DictWriter( + f, fieldnames=data[0].keys(), delimiter=delimiter) + writer.writeheader() + writer.writerows(data) + elif output_format == "text": + with output_file.open("w", encoding=encoding) as f: + for record in data: + f.write(str(record) + "\n") + else: + logger.error(f"Unsupported output format: {output_format}") + raise ValueError(f"Unsupported output format: {output_format}") + logger.info(f"Data saved to {output_file} in {output_format} format.") + except Exception as e: + logger.error(f"Failed to save data: {e}") + raise + + +def display_data(data: List[Dict[str, Any]]) -> None: + """ + Display the generated data in a table format using Rich. + + Args: + data (List[Dict[str, Any]]): The data to be displayed. + """ + if data: + table = Table(title="Generated Data", show_lines=True) + for key in data[0].keys(): + table.add_column(key, style="cyan", no_wrap=True) + for item in data: + table.add_row(*[str(value) for value in item.values()]) + console.print(table) + else: + logger.info("No data to display.") + + +def parse_schema(schema_string: str) -> Dict[str, FieldInfo]: + """ + Parse the schema string into a dictionary of FieldInfo objects. + + Args: + schema_string (str): The schema in JSON string format. + + Returns: + Dict[str, FieldInfo]: A dictionary mapping field names to their FieldInfo. + + Raises: + ValueError: If the schema string is invalid or missing required keys. + """ + try: + raw_schema = json.loads(schema_string) + schema = {} + for field, field_info in raw_schema.items(): + if not isinstance(field_info, dict): + logger.error(f"Field {field} should be a JSON object.") + raise ValueError(f"Field {field} should be a JSON object.") + if "type" not in field_info: + logger.error(f"Field {field} is missing a 'type'.") + raise ValueError(f"Field {field} is missing a 'type'.") + schema[field] = FieldInfo(**field_info) + logger.debug(f"Parsed schema: {schema}") + return schema + except json.JSONDecodeError as e: + logger.error(f"Invalid JSON schema: {e}") + raise ValueError(f"Invalid JSON schema: {e}") + + +def main() -> None: + """ + Main function to parse command-line arguments and generate data accordingly. + """ + parser = argparse.ArgumentParser(description="Random Data Generator Tool") + parser.add_argument( + "-n", "--num_records", type=int, required=True, help="Number of records to generate" + ) + parser.add_argument( + "-s", + "--schema", + type=str, + required=True, + help='Schema as a JSON string (e.g., \'{"name": {"type": "string"}, "age": {"type": "int"}}\')', + ) + parser.add_argument( + "-f", + "--format", + choices=["json", "csv", "text"], + required=True, + help="Output format", + ) + parser.add_argument( + "-o", "--output", type=str, required=True, help="Output file name" + ) + parser.add_argument( + "--display", action="store_true", help="Display the generated data in the terminal" + ) + parser.add_argument( + "--delimiter", type=str, default=',', help="Delimiter for CSV files" + ) + parser.add_argument( + "--encoding", type=str, default='utf-8', help="File encoding" + ) + + args = parser.parse_args() + + try: + # Parse the schema from the provided JSON string + schema = parse_schema(args.schema) + # Generate the data based on the schema and number of records + data = generate_data(schema, args.num_records) + # Save the generated data to the specified file and format + save_to_file(data, args.format, args.output, + args.delimiter, args.encoding) + logger.success( + f"Generated {args.num_records} records and saved to {args.output} in {args.format} format." + ) + # If display flag is set, display the data in the terminal + if args.display: + display_data(data) + except Exception as e: + # Log and display any errors that occur during the process + logger.error(f"Error: {e}") + console.print(f"[red]Error: {e}[/red]") + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pytools/tools/git.py b/modules/lithium.pytools/tools/git.py index e161800b..46b604c6 100644 --- a/modules/lithium.pytools/tools/git.py +++ b/modules/lithium.pytools/tools/git.py @@ -1,9 +1,10 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ -Git Utility Functions +Git Utility Script -This module provides a set of utility functions to interact with Git repositories. +This script provides a comprehensive set of utility functions to interact with Git repositories. +It supports various Git operations with enhanced logging and beautiful terminal outputs. Features: - Clone, pull, fetch, and push changes @@ -13,9 +14,12 @@ - Create and delete tags - Add, remove, and set remotes - View repository status and log +- Enhanced logging with loguru +- Beautiful terminal output with rich +- Detailed inline comments and docstrings Usage: - import git_utils + python git_utils.py --help Author: Max Qian @@ -26,410 +30,472 @@ import subprocess import os +import sys import argparse - - -def run_git_command(command): - """ - Run a Git command and print its output. - - Args: - command (List[str]): The Git command and its arguments. +from pathlib import Path +from typing import List, Optional + +from loguru import logger +from rich.console import Console +from rich.table import Table +from rich.prompt import Confirm +from rich.panel import Panel +from rich.logging import RichHandler + +# Configure loguru and rich logging +logger.remove() +console = Console() +logger.add(RichHandler(console=console), level="DEBUG", format="{message}") + +# Define Git utilities + + +class GitRepository: + """ + A class representing a Git repository and various Git operations. + """ + + def __init__(self, repo_dir: Path): + """ + Initialize the GitRepository with the given directory. + + Args: + repo_dir (Path): Path to the local repository directory. + """ + self.repo_dir = repo_dir.resolve() + if not self.repo_dir.exists(): + logger.error(f"The directory {self.repo_dir} does not exist.") + sys.exit(1) + logger.debug(f"Initialized GitRepository with path: {self.repo_dir}") + + def run_git_command(self, command: List[str]) -> subprocess.CompletedProcess: + """ + Run a Git command in the repository directory. + + Args: + command (List[str]): The Git command and its arguments. + + Returns: + subprocess.CompletedProcess: The result of the subprocess command. + """ + full_command = ['git'] + command + logger.debug(f"Running command: {' '.join(full_command)}") + try: + result = subprocess.run( + full_command, + cwd=self.repo_dir, + capture_output=True, + text=True, + check=True + ) + logger.debug(result.stdout.strip()) + return result + except subprocess.CalledProcessError as e: + logger.error(e.stderr.strip()) + sys.exit(1) + + def clone_repository(self, repo_url: str, clone_dir: Optional[Path] = None): + """ + Clone a Git repository to the specified directory. + + Args: + repo_url (str): URL of the repository to clone. + clone_dir (Optional[Path]): Directory to clone the repository into. Defaults to current directory. + """ + clone_dir = clone_dir or self.repo_dir + if clone_dir.exists(): + logger.error(f"Directory {clone_dir} already exists.") + sys.exit(1) + command = ['clone', repo_url, str(clone_dir)] + self.run_git_command(command) + logger.info(f"Repository cloned to {clone_dir}") + + def pull_latest_changes(self): + """ + Pull the latest changes from the remote repository. + """ + command = ['pull'] + self.run_git_command(command) + logger.info("Pulled latest changes.") + + def fetch_changes(self): + """ + Fetch the latest changes from the remote repository without merging. + """ + command = ['fetch'] + self.run_git_command(command) + logger.info("Fetched latest changes.") + + def add_changes(self, paths: List[str] = ['.']): + """ + Add changes to the staging area. + + Args: + paths (List[str]): List of file paths or '.' for all changes. + """ + command = ['add'] + paths + self.run_git_command(command) + logger.info(f"Changes added to staging area: {paths}") + + def commit_changes(self, message: str): + """ + Commit the staged changes with a message. + + Args: + message (str): Commit message. + """ + command = ['commit', '-m', message] + self.run_git_command(command) + logger.info(f"Committed changes with message: '{message}'") + + def push_changes(self, remote: str = 'origin', branch: str = 'main'): + """ + Push the committed changes to the remote repository. + + Args: + remote (str): Name of the remote repository. + branch (str): Name of the branch to push. + """ + command = ['push', remote, branch] + self.run_git_command(command) + logger.info(f"Pushed changes to {remote}/{branch}") + + def create_branch(self, branch_name: str): + """ + Create a new branch and switch to it. + + Args: + branch_name (str): Name of the new branch. + """ + command = ['checkout', '-b', branch_name] + self.run_git_command(command) + logger.info(f"Created and switched to branch: {branch_name}") + + def switch_branch(self, branch_name: str): + """ + Switch to an existing branch. + + Args: + branch_name (str): Name of the branch to switch to. + """ + command = ['checkout', branch_name] + self.run_git_command(command) + logger.info(f"Switched to branch: {branch_name}") + + def merge_branch(self, branch_name: str): + """ + Merge a branch into the current branch. + + Args: + branch_name (str): Name of the branch to merge. + """ + command = ['merge', branch_name] + self.run_git_command(command) + logger.info(f"Merged branch '{branch_name}' into current branch.") + + def list_branches(self): + """ + List all branches in the repository. + """ + command = ['branch', '--list'] + result = self.run_git_command(command) + branches = result.stdout.strip().split('\n') + table = Table(title="Branches", show_header=False) + for branch in branches: + table.add_row(branch.strip()) + console.print(table) + + def reset_changes(self, commit: str = 'HEAD'): + """ + Reset the repository to a specific commit. + + Args: + commit (str): Commit to reset to. + """ + if not Confirm.ask("This will reset your repository and discard uncommitted changes. Continue?"): + logger.info("Operation cancelled.") + sys.exit(0) + command = ['reset', '--hard', commit] + self.run_git_command(command) + logger.info(f"Repository reset to commit: {commit}") + + def stash_changes(self): + """ + Stash the current changes. + """ + command = ['stash'] + self.run_git_command(command) + logger.info("Changes have been stashed.") + + def apply_stash(self): + """ + Apply the latest stashed changes. + """ + command = ['stash', 'apply'] + self.run_git_command(command) + logger.info("Stashed changes have been applied.") + + def view_status(self): + """ + View the current status of the repository. + """ + command = ['status'] + result = self.run_git_command(command) + console.print(Panel(result.stdout.strip(), title="Git Status")) + + def view_log(self, num_entries: int = 10): + """ + View the commit log. + + Args: + num_entries (int): Number of log entries to show. + """ + command = ['log', f'--oneline', f'-{num_entries}'] + result = self.run_git_command(command) + logs = result.stdout.strip().split('\n') + table = Table(title="Commit Log", show_header=False) + for log_entry in logs: + table.add_row(log_entry) + console.print(table) + + def add_remote(self, remote_name: str, remote_url: str): + """ + Add a remote repository. + + Args: + remote_name (str): Name of the remote repository. + remote_url (str): URL of the remote repository. + """ + command = ['remote', 'add', remote_name, remote_url] + self.run_git_command(command) + logger.info(f"Added remote '{remote_name}': {remote_url}") + + def remove_remote(self, remote_name: str): + """ + Remove a remote repository. + + Args: + remote_name (str): Name of the remote repository. + """ + command = ['remote', 'remove', remote_name] + self.run_git_command(command) + logger.info(f"Removed remote '{remote_name}'") + + def create_tag(self, tag_name: str): + """ + Create a new tag. + + Args: + tag_name (str): Name of the new tag. + """ + command = ['tag', tag_name] + self.run_git_command(command) + logger.info(f"Created tag: {tag_name}") + + def delete_tag(self, tag_name: str): + """ + Delete a tag. + + Args: + tag_name (str): Name of the tag to delete. + """ + command = ['tag', '-d', tag_name] + self.run_git_command(command) + logger.info(f"Deleted tag: {tag_name}") + + def set_user_info(self, name: str, email: str): + """ + Set the user name and email for the repository. + + Args: + name (str): User name. + email (str): User email. + """ + self.run_git_command(['config', 'user.name', name]) + self.run_git_command(['config', 'user.email', email]) + logger.info(f"Set user name to '{name}' and email to '{email}'") + + def blame_file(self, file_path: str): + """ + Show what revision and author last modified each line of a file. + + Args: + file_path (str): Path to the file to blame. + """ + command = ['blame', file_path] + result = self.run_git_command(command) + console.print(Panel(result.stdout.strip(), + title=f"Blame for {file_path}")) + + def revert_commit(self, commit_hash: str): + """ + Revert a specific commit. + + Args: + commit_hash (str): Hash of the commit to revert. + """ + command = ['revert', commit_hash] + self.run_git_command(command) + logger.info(f"Reverted commit: {commit_hash}") + + def cherry_pick(self, commit_hash: str): + """ + Apply the changes introduced by some existing commits. + + Args: + commit_hash (str): Hash of the commit to cherry-pick. + """ + command = ['cherry-pick', commit_hash] + self.run_git_command(command) + logger.info(f"Cherry-picked commit: {commit_hash}") + + def rebase_branch(self, branch_name: str): + """ + Rebase the current branch onto the specified branch. + + Args: + branch_name (str): Name of the branch to rebase onto. + """ + command = ['rebase', branch_name] + self.run_git_command(command) + logger.info(f"Rebased current branch onto '{branch_name}'") + + def show_remotes(self): + """ + Show the list of remotes. + """ + command = ['remote', '-v'] + result = self.run_git_command(command) + remotes = result.stdout.strip().split('\n') + table = Table(title="Remotes", show_header=False) + for remote in remotes: + table.add_row(remote) + console.print(table) + + def show_diff(self, commit: Optional[str] = None): + """ + Show changes between commits, commit and working tree, etc. + + Args: + commit (Optional[str]): Commit hash to compare. If None, compares working tree with last commit. + """ + command = ['diff'] + if commit: + command.append(commit) + result = self.run_git_command(command) + console.print(Panel(result.stdout.strip(), title="Git Diff")) + + def clean_untracked_files(self): + """ + Remove untracked files from the working tree. + """ + if not Confirm.ask("This will remove all untracked files. Continue?"): + logger.info("Operation cancelled.") + sys.exit(0) + command = ['clean', '-fd'] + self.run_git_command(command) + logger.info("Untracked files have been removed.") + + +def create_parser() -> argparse.ArgumentParser: + """ + Create an argument parser for command-line options. Returns: - int: The return code of the command. - """ - result = subprocess.run(command, capture_output=True, text=True) - if result.returncode != 0: - print(f"Error: {result.stderr.strip()}") - else: - print(f"Success: {result.stdout.strip()}") - return result.returncode - - -def clone_repository(repo_url, clone_dir): - """ - Clone a Git repository. - - Args: - repo_url (str): URL of the repository to clone. - clone_dir (str): Directory to clone the repository into. - """ - if os.path.exists(clone_dir): - print(f"Directory {clone_dir} already exists.") - return - command = ["git", "clone", repo_url, clone_dir] - run_git_command(command) - - -def pull_latest_changes(repo_dir): - """ - Pull the latest changes from the remote repository. - - Args: - repo_dir (str): Path to the local repository directory. - """ - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist.") - return - os.chdir(repo_dir) - command = ["git", "pull"] - run_git_command(command) - - -def fetch_changes(repo_dir): - """ - Fetch the latest changes from the remote repository without merging. - - Args: - repo_dir (str): Path to the local repository directory. - """ - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist.") - return - os.chdir(repo_dir) - command = ["git", "fetch"] - run_git_command(command) - - -def add_changes(repo_dir): - """ - Add all changes to the staging area. - - Args: - repo_dir (str): Path to the local repository directory. - """ - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist.") - return - os.chdir(repo_dir) - command = ["git", "add", "."] - run_git_command(command) - - -def commit_changes(repo_dir, message): - """ - Commit the staged changes with a message. - - Args: - repo_dir (str): Path to the local repository directory. - message (str): Commit message. - """ - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist.") - return - os.chdir(repo_dir) - command = ["git", "commit", "-m", message] - run_git_command(command) - - -def push_changes(repo_dir): - """ - Push the committed changes to the remote repository. - - Args: - repo_dir (str): Path to the local repository directory. - """ - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist。") - return - os.chdir(repo_dir) - command = ["git", "push"] - run_git_command(command) - - -def create_branch(repo_dir, branch_name): - """ - Create a new branch. - - Args: - repo_dir (str): Path to the local repository directory. - branch_name (str): Name of the new branch. - """ - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist.") - return - os.chdir(repo_dir) - command = ["git", "checkout", "-b", branch_name] - run_git_command(command) - - -def switch_branch(repo_dir, branch_name): - """ - Switch to an existing branch. - - Args: - repo_dir (str): Path to the local repository directory。 - branch_name (str): Name of the branch to switch to. - """ - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist。") - return - os.chdir(repo_dir) - command = ["git", "checkout", branch_name] - run_git_command(command) - - -def merge_branch(repo_dir, branch_name): - """ - Merge a branch into the current branch. - - Args: - repo_dir (str): Path to the local repository directory。 - branch_name (str): Name of the branch to merge. - """ - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist。") - return - os.chdir(repo_dir) - command = ["git", "merge", branch_name] - run_git_command(command) - - -def list_branches(repo_dir): - """ - List all branches in the repository. - - Args: - repo_dir (str): Path to the local repository directory。 - """ - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist。") - return - os.chdir(repo_dir) - command = ["git", "branch"] - run_git_command(command) - - -def reset_changes(repo_dir, commit="HEAD"): - """ - Reset the repository to a specific commit. - - Args: - repo_dir (str): Path to the local repository directory。 - commit (str): Commit to reset to (default is HEAD). + argparse.ArgumentParser: Configured argument parser. """ - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist。") - return - os.chdir(repo_dir) - command = ["git", "reset", "--hard", commit] - run_git_command(command) - - -def stash_changes(repo_dir): - """ - Stash the current changes. - - Args: - repo_dir (str): Path to the local repository directory。 - """ - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist。") - return - os.chdir(repo_dir) - command = ["git", "stash"] - run_git_command(command) - - -def apply_stash(repo_dir): - """ - Apply the latest stashed changes. - - Args: - repo_dir (str): Path to the local repository directory。 - """ - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist。") - return - os.chdir(repo_dir) - command = ["git", "stash", "apply"] - run_git_command(command) - - -def view_status(repo_dir): - """ - View the current status of the repository. - - Args: - repo_dir (str): Path to the local repository directory。 - """ - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist。") - return - os.chdir(repo_dir) - command = ["git", "status"] - run_git_command(command) - - -def view_log(repo_dir): - """ - View the commit log。 - - Args: - repo_dir (str): Path to the local repository directory。 - """ - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist。") - return - os.chdir(repo_dir) - command = ["git", "log", "--oneline"] - run_git_command(command) - - -def add_remote(repo_dir, remote_name, remote_url): - """ - Add a remote repository. - - Args: - repo_dir (str): Path to the local repository directory。 - remote_name (str): Name of the remote repository。 - remote_url (str): URL of the remote repository。 - """ - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist。") - return - os.chdir(repo_dir) - command = ["git", "remote", "add", remote_name, remote_url] - run_git_command(command) - - -def remove_remote(repo_dir, remote_name): - """Remove a remote repository.""" - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist。") - return - os.chdir(repo_dir) - command = ["git", "remote", "remove", remote_name] - run_git_command(command) - - -def create_tag(repo_dir, tag_name): - """Create a new tag。""" - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist。") - return - os.chdir(repo_dir) - command = ["git", "tag", tag_name] - run_git_command(command) - - -def delete_tag(repo_dir, tag_name): - """Delete a tag。""" - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist。") - return - os.chdir(repo_dir) - command = ["git", "tag", "-d", tag_name] - run_git_command(command) - - -def set_user_info(repo_dir, name, email): - """Set the user name and email for the repository。""" - if not os.path.exists(repo_dir): - print(f"Directory {repo_dir} does not exist。") - return - os.chdir(repo_dir) - run_git_command(["git", "config", "user.name", name]) - run_git_command(["git", "config", "user.email", email]) - - -def main(): parser = argparse.ArgumentParser( - description="Git Repository Management Tool") + description="Git Repository Management Tool with Enhanced Features" + ) subparsers = parser.add_subparsers( dest="command", help="Git command to run") + # Common arguments + parser.add_argument( + "--repo-dir", + type=Path, + default=Path.cwd(), + help="Path to the local repository (default: current directory)", + ) + # Clone command parser_clone = subparsers.add_parser("clone", help="Clone a repository") parser_clone.add_argument( "repo_url", help="URL of the repository to clone") parser_clone.add_argument( - "clone_dir", help="Directory to clone the repository into") + "clone_dir", nargs="?", type=Path, help="Directory to clone into (optional)" + ) # Pull command - parser_pull = subparsers.add_parser("pull", help="Pull the latest changes") - parser_pull.add_argument("repo_dir", help="Directory of the repository") + subparsers.add_parser("pull", help="Pull the latest changes") # Fetch command - parser_fetch = subparsers.add_parser( - "fetch", help="Fetch the latest changes") - parser_fetch.add_argument("repo_dir", help="Directory of the repository") + subparsers.add_parser("fetch", help="Fetch the latest changes") # Add command parser_add = subparsers.add_parser( - "add", help="Add changes to the staging area") - parser_add.add_argument("repo_dir", help="Directory of the repository") + "add", help="Add changes to the staging area" + ) + parser_add.add_argument( + "paths", nargs="*", default=["."], help="File paths to add (default: all)" + ) # Commit command parser_commit = subparsers.add_parser( "commit", help="Commit changes with a message") - parser_commit.add_argument("repo_dir", help="Directory of the repository") parser_commit.add_argument("message", help="Commit message") # Push command parser_push = subparsers.add_parser( "push", help="Push changes to the remote repository") - parser_push.add_argument("repo_dir", help="Directory of the repository") + parser_push.add_argument("--remote", default="origin", + help="Remote name (default: origin)") + parser_push.add_argument("--branch", default="main", + help="Branch name (default: main)") # Branch commands parser_create_branch = subparsers.add_parser( "create-branch", help="Create a new branch") - parser_create_branch.add_argument( - "repo_dir", help="Directory of the repository") parser_create_branch.add_argument( "branch_name", help="Name of the new branch") parser_switch_branch = subparsers.add_parser( "switch-branch", help="Switch to an existing branch") - parser_switch_branch.add_argument( - "repo_dir", help="Directory of the repository") parser_switch_branch.add_argument( "branch_name", help="Name of the branch to switch to") parser_merge_branch = subparsers.add_parser( "merge-branch", help="Merge a branch into the current branch") - parser_merge_branch.add_argument( - "repo_dir", help="Directory of the repository") parser_merge_branch.add_argument( "branch_name", help="Name of the branch to merge") - parser_list_branches = subparsers.add_parser( - "list-branches", help="List all branches") - parser_list_branches.add_argument( - "repo_dir", help="Directory of the repository") + subparsers.add_parser("list-branches", help="List all branches") # Reset command parser_reset = subparsers.add_parser( "reset", help="Reset the repository to a specific commit") - parser_reset.add_argument("repo_dir", help="Directory of the repository") parser_reset.add_argument( - "commit", nargs="?", default="HEAD", help="Commit to reset to (default is HEAD)") + "--commit", default="HEAD", help="Commit to reset to (default: HEAD)" + ) # Stash commands - parser_stash = subparsers.add_parser( - "stash", help="Stash the current changes") - parser_stash.add_argument("repo_dir", help="Directory of the repository") - - parser_apply_stash = subparsers.add_parser( + subparsers.add_parser("stash", help="Stash the current changes") + subparsers.add_parser( "apply-stash", help="Apply the latest stashed changes") - parser_apply_stash.add_argument( - "repo_dir", help="Directory of the repository") # Status command - parser_status = subparsers.add_parser( + subparsers.add_parser( "status", help="View the current status of the repository") - parser_status.add_argument("repo_dir", help="Directory of the repository") # Log command parser_log = subparsers.add_parser("log", help="View the commit log") - parser_log.add_argument("repo_dir", help="Directory of the repository") + parser_log.add_argument( + "--num", type=int, default=10, help="Number of log entries to show (default: 10)" + ) # Remote commands parser_add_remote = subparsers.add_parser( "add-remote", help="Add a new remote repository") - parser_add_remote.add_argument( - "repo_dir", help="Directory of the repository") parser_add_remote.add_argument( "remote_name", help="Name of the remote repository") parser_add_remote.add_argument( @@ -437,75 +503,130 @@ def main(): parser_remove_remote = subparsers.add_parser( "remove-remote", help="Remove a remote repository") - parser_remove_remote.add_argument( - "repo_dir", help="Directory of the repository") parser_remove_remote.add_argument( "remote_name", help="Name of the remote repository") + subparsers.add_parser("show-remotes", help="Show the list of remotes") + # Tag commands parser_create_tag = subparsers.add_parser( "create-tag", help="Create a new tag") - parser_create_tag.add_argument( - "repo_dir", help="Directory of the repository") parser_create_tag.add_argument("tag_name", help="Name of the new tag") parser_delete_tag = subparsers.add_parser( "delete-tag", help="Delete a tag") - parser_delete_tag.add_argument( - "repo_dir", help="Directory of the repository") parser_delete_tag.add_argument( "tag_name", help="Name of the tag to delete") # Config command parser_set_user_info = subparsers.add_parser( - "set-user-info", help="Set the user name and email for the repository") - parser_set_user_info.add_argument( - "repo_dir", help="Directory of the repository") + "set-user-info", help="Set user name and email for the repository") parser_set_user_info.add_argument("name", help="User name") parser_set_user_info.add_argument("email", help="User email") + # Blame command + parser_blame = subparsers.add_parser( + "blame", help="Show what revision and author last modified each line of a file") + parser_blame.add_argument("file_path", help="Path to the file to blame") + + # Revert command + parser_revert = subparsers.add_parser( + "revert", help="Revert a specific commit") + parser_revert.add_argument( + "commit_hash", help="Hash of the commit to revert") + + # Cherry-pick command + parser_cherry_pick = subparsers.add_parser( + "cherry-pick", help="Apply changes introduced by existing commits") + parser_cherry_pick.add_argument( + "commit_hash", help="Hash of the commit to cherry-pick") + + # Rebase command + parser_rebase = subparsers.add_parser( + "rebase", help="Rebase current branch onto another") + parser_rebase.add_argument( + "branch_name", help="Name of the branch to rebase onto") + + # Diff command + parser_diff = subparsers.add_parser( + "diff", help="Show changes between commits") + parser_diff.add_argument("--commit", help="Commit hash to compare") + + # Clean command + subparsers.add_parser( + "clean", help="Remove untracked files from the working tree") + + return parser + + +def main(): + """ + Main function to parse arguments and execute Git operations. + """ + parser = create_parser() args = parser.parse_args() + if not args.command: + parser.print_help() + return + + repo_dir = args.repo_dir + git_repo = GitRepository(repo_dir) + if args.command == "clone": - clone_repository(args.repo_url, args.clone_dir) + git_repo.clone_repository(args.repo_url, args.clone_dir) elif args.command == "pull": - pull_latest_changes(args.repo_dir) + git_repo.pull_latest_changes() elif args.command == "fetch": - fetch_changes(args.repo_dir) + git_repo.fetch_changes() elif args.command == "add": - add_changes(args.repo_dir) + git_repo.add_changes(args.paths) elif args.command == "commit": - commit_changes(args.repo_dir, args.message) + git_repo.commit_changes(args.message) elif args.command == "push": - push_changes(args.repo_dir) + git_repo.push_changes(args.remote, args.branch) elif args.command == "create-branch": - create_branch(args.repo_dir, args.branch_name) + git_repo.create_branch(args.branch_name) elif args.command == "switch-branch": - switch_branch(args.repo_dir, args.branch_name) + git_repo.switch_branch(args.branch_name) elif args.command == "merge-branch": - merge_branch(args.repo_dir, args.branch_name) + git_repo.merge_branch(args.branch_name) elif args.command == "list-branches": - list_branches(args.repo_dir) + git_repo.list_branches() elif args.command == "reset": - reset_changes(args.repo_dir, args.commit) + git_repo.reset_changes(args.commit) elif args.command == "stash": - stash_changes(args.repo_dir) + git_repo.stash_changes() elif args.command == "apply-stash": - apply_stash(args.repo_dir) + git_repo.apply_stash() elif args.command == "status": - view_status(args.repo_dir) + git_repo.view_status() elif args.command == "log": - view_log(args.repo_dir) + git_repo.view_log(args.num) elif args.command == "add-remote": - add_remote(args.repo_dir, args.remote_name, args.remote_url) + git_repo.add_remote(args.remote_name, args.remote_url) elif args.command == "remove-remote": - remove_remote(args.repo_dir, args.remote_name) + git_repo.remove_remote(args.remote_name) + elif args.command == "show-remotes": + git_repo.show_remotes() elif args.command == "create-tag": - create_tag(args.repo_dir, args.tag_name) + git_repo.create_tag(args.tag_name) elif args.command == "delete-tag": - delete_tag(args.repo_dir, args.tag_name) + git_repo.delete_tag(args.tag_name) elif args.command == "set-user-info": - set_user_info(args.repo_dir, args.name, args.email) + git_repo.set_user_info(args.name, args.email) + elif args.command == "blame": + git_repo.blame_file(args.file_path) + elif args.command == "revert": + git_repo.revert_commit(args.commit_hash) + elif args.command == "cherry-pick": + git_repo.cherry_pick(args.commit_hash) + elif args.command == "rebase": + git_repo.rebase_branch(args.branch_name) + elif args.command == "diff": + git_repo.show_diff(args.commit) + elif args.command == "clean": + git_repo.clean_untracked_files() else: parser.print_help() diff --git a/modules/lithium.pytools/tools/hotspot.py b/modules/lithium.pytools/tools/hotspot.py new file mode 100644 index 00000000..093d731e --- /dev/null +++ b/modules/lithium.pytools/tools/hotspot.py @@ -0,0 +1,628 @@ +# hotspot.py + +""" +WiFi Hotspot Manager +A cross-platform tool for managing WiFi hotspots with support for Linux and Windows. + +Features: +- Create and manage WiFi hotspots +- Support multiple authentication methods (WPA-PSK, WPA2, WPA3) +- Save and load hotspot profiles +- Monitor connected clients +- Async operations support +- Comprehensive logging +- Enhanced CLI with rich for better user experience + +Author: Your Name +License: MIT +Version: 2.0.0 +""" + +from __future__ import annotations +import subprocess +import platform +import argparse +from typing import Optional, Literal, Dict, Any, List +from dataclasses import dataclass, asdict +from enum import Enum +import shutil +from pathlib import Path +import json +from datetime import datetime +import asyncio +from loguru import logger +from rich.console import Console +from rich.table import Table +from rich.prompt import Prompt, Confirm +from rich.progress import Progress +import sys + +# Configure loguru logger with Rich handler +logger.remove() +console = Console() +logger.add( + sink=sys.stderr, + format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | " + "{name}:{function}:{line} - " + "{message}", + level="INFO", + enqueue=True, + backtrace=True, + diagnose=True +) +logger.add( + "hotspot.log", + rotation="500 MB", + retention="10 days", + level="DEBUG", + format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {message}" +) + +console = Console() + + +class PlatformType(Enum): + """ + Supported operating system platforms. + Used to determine platform-specific implementations. + """ + LINUX = "linux" + WINDOWS = "windows" + MACOS = "darwin" + + +class AuthType(Enum): + """ + WiFi authentication types supported by the hotspot. + + Members: + WPA_PSK: WPA Personal authentication + WPA2: WPA2 authentication (more secure than WPA) + WPA3: Latest WPA3 authentication (most secure) + """ + WPA_PSK = "wpa-psk" + WPA2 = "wpa2" + WPA3 = "wpa3" + + +class EncryptionType(Enum): + """ + Encryption methods for securing the WiFi connection. + + Members: + AES: Advanced Encryption Standard (recommended) + TKIP: Temporal Key Integrity Protocol (legacy) + """ + AES = "aes" + TKIP = "tkip" + + +@dataclass +class HotspotConfig: + """ + Configuration settings for a WiFi hotspot. + + Attributes: + name: SSID of the hotspot + password: Security key for authentication + authentication: Type of authentication (WPA/WPA2/WPA3) + encryption: Type of encryption (AES/TKIP) + channel: WiFi channel number (1-14) + max_clients: Maximum number of concurrent connections + band: WiFi frequency band (bg/a/ac) + hidden: Whether to hide the SSID + """ + name: str = "MyHotspot" + password: Optional[str] = None + authentication: AuthType = AuthType.WPA_PSK + encryption: EncryptionType = EncryptionType.AES + channel: int = 11 + max_clients: int = 10 + band: Literal["bg", "a", "ac"] = "bg" + hidden: bool = False + + +class HotspotManager: + """ + Core class for managing WiFi hotspots across different platforms. + + Handles hotspot creation, configuration, monitoring, and profile management. + Supports both synchronous and asynchronous operations. + """ + + def __init__(self): + """ + Initialize the HotspotManager with platform detection and config loading. + Creates necessary directories if they don't exist. + """ + logger.debug("Initializing HotspotManager") + self.platform = PlatformType(platform.system().lower()) + self.config_path = Path.home() / ".hotspot" + self.config_path.mkdir(exist_ok=True) + self._load_config() + + def _load_config(self) -> None: + """ + Load saved hotspot configurations from a JSON file. + If the file does not exist, initialize an empty configuration dictionary. + """ + logger.debug("Loading hotspot configurations") + config_file = self.config_path / "config.json" + if config_file.exists(): + with open(config_file) as f: + self.saved_configs: Dict[str, Dict[str, Any]] = json.load(f) + logger.info("Hotspot configurations loaded successfully") + else: + self.saved_configs = {} + logger.info( + "No existing configurations found, starting with an empty configuration" + ) + + def _save_config(self) -> None: + """ + Save the current hotspot configurations to a JSON file. + """ + logger.debug("Saving hotspot configurations") + with open(self.config_path / "config.json", "w") as f: + json.dump(self.saved_configs, f, indent=4) + logger.info("Hotspot configurations saved successfully") + + async def _run_command_async(self, cmd: List[str]) -> tuple[str, str]: + """ + Run a shell command asynchronously. + + Args: + cmd: List of command arguments. + + Returns: + A tuple containing the standard output and standard error of the command. + + Raises: + Exception: If the command execution fails. + """ + logger.debug(f"Running command asynchronously: {' '.join(cmd)}") + try: + process = await asyncio.create_subprocess_exec( + *cmd, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE + ) + stdout, stderr = await process.communicate() + stdout_decoded = stdout.decode().strip() + stderr_decoded = stderr.decode().strip() + logger.debug(f"Command output: {stdout_decoded}") + if stderr_decoded: + logger.error(f"Command error: {stderr_decoded}") + return stdout_decoded, stderr_decoded + except Exception as e: + logger.error(f"Command execution failed: {e}") + raise + + def _run_command(self, cmd: List[str]) -> str: + """ + Run a shell command synchronously. + + Args: + cmd: List of command arguments. + + Returns: + The standard output of the command. + + Raises: + subprocess.CalledProcessError: If the command execution fails. + """ + logger.debug(f"Running command synchronously: {' '.join(cmd)}") + try: + result = subprocess.run( + cmd, + check=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True + ) + logger.debug(f"Command output: {result.stdout.strip()}") + return result.stdout.strip() + except subprocess.CalledProcessError as e: + logger.error(f"Command failed: {e.stderr.strip()}") + raise + + async def start(self, config: HotspotConfig) -> None: + """ + Start a WiFi hotspot with the given configuration. + + Args: + config: HotspotConfig object containing the hotspot settings. + + Raises: + ValueError: If the password is not provided. + NotImplementedError: If the platform is not supported. + """ + logger.info(f"Starting hotspot with name: {config.name}") + + if config.password is None: + logger.error("Password is required when starting a hotspot") + raise ValueError("Password is required when starting a hotspot") + + if self.platform == PlatformType.LINUX: + await self._start_linux(config) + elif self.platform == PlatformType.WINDOWS: + await self._start_windows(config) + else: + logger.error(f"Platform {self.platform} not supported") + raise NotImplementedError( + f"Platform {self.platform} not supported" + ) + + logger.success(f"Hotspot '{config.name}' is now running") + + async def _start_linux(self, config: HotspotConfig) -> None: + """ + Start a WiFi hotspot on a Linux platform. + + Args: + config: HotspotConfig object containing the hotspot settings. + """ + logger.debug(f"Starting Linux hotspot with configuration: {config}") + cmd = [ + 'nmcli', 'dev', 'wifi', 'hotspot', + 'ifname', 'wlan0', + 'ssid', config.name, + 'password', config.password, + 'band', config.band, + 'channel', str(config.channel) + ] + await self._run_command_async(cmd) + + # Configure additional parameters if needed + if config.hidden: + await self._configure_hidden_hotspot_linux() + + async def _configure_hidden_hotspot_linux(self) -> None: + """ + Configure the hotspot to hide the SSID on Linux. + """ + logger.debug("Configuring hidden SSID for Linux hotspot") + cmd = [ + 'nmcli', 'connection', 'modify', 'Hotspot', + 'ssid-hidden', 'yes' + ] + await self._run_command_async(cmd) + + async def _start_windows(self, config: HotspotConfig) -> None: + """ + Start a WiFi hotspot on a Windows platform. + + Args: + config: HotspotConfig object containing the hotspot settings. + """ + logger.debug(f"Starting Windows hotspot with configuration: {config}") + cmd_set = [ + 'netsh', 'wlan', 'set', 'hostednetwork', + 'mode=allow', + f'ssid={config.name}', + f'key={config.password}', + f'keyUsage=persistent' + ] + await self._run_command_async(cmd_set) + + cmd_start = [ + 'netsh', 'wlan', 'start', 'hostednetwork' + ] + await self._run_command_async(cmd_start) + + async def stop(self) -> None: + """ + Stop the running WiFi hotspot. + """ + logger.info("Stopping hotspot") + + if self.platform == PlatformType.LINUX: + cmd = ['nmcli', 'connection', 'down', 'Hotspot'] + await self._run_command_async(cmd) + elif self.platform == PlatformType.WINDOWS: + cmd = ['netsh', 'wlan', 'stop', 'hostednetwork'] + await self._run_command_async(cmd) + else: + logger.error( + f"Platform {self.platform} not supported for stopping hotspot") + raise NotImplementedError( + f"Platform {self.platform} not supported for stopping hotspot" + ) + + logger.success("Hotspot has been stopped") + + async def status(self) -> Dict[str, Any]: + """ + Get the current status of the WiFi hotspot. + + Returns: + A dictionary containing the status and details of the hotspot. + """ + logger.info("Checking hotspot status") + status_info: Dict[str, Any] = {} + + if self.platform == PlatformType.LINUX: + stdout, _ = await self._run_command_async(['nmcli', 'connection', 'show', '--active']) + if 'Hotspot' in stdout: + status_info['status'] = 'running' + status_info['details'] = stdout + else: + status_info['status'] = 'stopped' + elif self.platform == PlatformType.WINDOWS: + stdout, _ = await self._run_command_async(['netsh', 'wlan', 'show', 'hostednetwork']) + if 'State' in stdout and 'started' in stdout.lower(): + status_info['status'] = 'running' + status_info['details'] = stdout + else: + status_info['status'] = 'stopped' + else: + logger.error( + f"Platform {self.platform} not supported for status check") + raise NotImplementedError( + f"Platform {self.platform} not supported for status check" + ) + + logger.debug(f"Hotspot status: {status_info}") + return status_info + + async def list_clients(self) -> List[Dict[str, Any]]: + """ + List the clients connected to the WiFi hotspot. + + Returns: + A list of dictionaries containing client information. + """ + logger.info("Listing connected clients") + clients: List[Dict[str, Any]] = [] + + if self.platform == PlatformType.LINUX: + stdout, _ = await self._run_command_async(['iw', 'dev', 'wlan0', 'station', 'dump']) + logger.debug(f"Connected clients (Linux): {stdout}") + clients = self._parse_linux_clients(stdout) + elif self.platform == PlatformType.WINDOWS: + stdout, _ = await self._run_command_async(['netsh', 'wlan', 'show', 'hostednetwork']) + logger.debug(f"Connected clients (Windows): {stdout}") + clients = self._parse_windows_clients(stdout) + else: + logger.error( + f"Platform {self.platform} not supported for listing clients") + raise NotImplementedError( + f"Platform {self.platform} not supported for listing clients" + ) + + return clients + + def _parse_linux_clients(self, raw_output: str) -> List[Dict[str, Any]]: + """ + Parse the output from the Linux command to list clients. + + Args: + raw_output: Raw string output from the command. + + Returns: + A list of dictionaries with client information. + """ + clients = [] + current_client = {} + for line in raw_output.split('\n'): + if line.startswith('Station'): + if current_client: + clients.append(current_client) + current_client = {} + current_client['MAC Address'] = line.split()[1] + elif ':' in line: + key, value = line.split(':', 1) + current_client[key.strip()] = value.strip() + if current_client: + clients.append(current_client) + logger.debug(f"Parsed Linux clients: {clients}") + return clients + + def _parse_windows_clients(self, raw_output: str) -> List[Dict[str, Any]]: + """ + Parse the output from the Windows command to list clients. + + Args: + raw_output: Raw string output from the command. + + Returns: + A list of dictionaries with client information. + """ + clients = [] + lines = raw_output.splitlines() + client_section = False + for line in lines: + if 'SSID' in line and 'BSSID' not in line: + client_section = False + if 'Client' in line and 'SSID' not in line: + client_section = True + continue + if client_section: + if line.strip(): + parts = line.split(':', 1) + if len(parts) == 2: + key, value = parts + clients.append({key.strip(): value.strip()}) + logger.debug(f"Parsed Windows clients: {clients}") + return clients + + def save_profile(self, name: str, config: HotspotConfig) -> None: + """ + Save a hotspot configuration profile. + + Args: + name: Name of the profile. + config: HotspotConfig object containing the hotspot settings. + """ + logger.info(f"Saving profile: {name}") + self.saved_configs[name] = asdict(config) + self._save_config() + logger.info(f"Profile '{name}' has been saved") + + def load_profile(self, name: str) -> HotspotConfig: + """ + Load a hotspot configuration profile. + + Args: + name: Name of the profile. + + Returns: + A HotspotConfig object containing the loaded settings. + + Raises: + ValueError: If the profile is not found. + """ + logger.info(f"Loading profile: {name}") + if name not in self.saved_configs: + logger.error(f"Profile '{name}' not found") + raise ValueError(f"Profile '{name}' not found") + + config_dict = self.saved_configs[name] + logger.debug( + f"Profile '{name}' loaded with configuration: {config_dict}") + return HotspotConfig(**config_dict) + + +async def main() -> None: + """ + Main function to parse command-line arguments and perform actions. + """ + parser = argparse.ArgumentParser( + description='Advanced WiFi Hotspot Manager with Enhanced Features' + ) + subparsers = parser.add_subparsers( + dest='command', help='Available commands') + + # Start command + parser_start = subparsers.add_parser('start', help='Start a WiFi hotspot') + parser_start.add_argument( + '--name', type=str, default='MyHotspot', help='Hotspot name (SSID)') + parser_start.add_argument('--password', type=str, + required=True, help='Hotspot password') + parser_start.add_argument('--authentication', type=str, choices=[t.value for t in AuthType], default='wpa-psk', + help='Authentication type') + parser_start.add_argument('--encryption', type=str, choices=[t.value for t in EncryptionType], default='aes', + help='Encryption type') + parser_start.add_argument('--channel', type=int, + default=11, help='WiFi channel number (1-14)') + parser_start.add_argument( + '--max-clients', type=int, default=10, help='Maximum number of clients') + parser_start.add_argument( + '--band', type=str, choices=['bg', 'a', 'ac'], default='bg', help='WiFi frequency band') + parser_start.add_argument( + '--hidden', action='store_true', help='Hide the SSID') + + # Stop command + parser_stop = subparsers.add_parser('stop', help='Stop the WiFi hotspot') + + # Status command + parser_status = subparsers.add_parser( + 'status', help='Check the status of the WiFi hotspot') + + # List clients command + parser_list = subparsers.add_parser( + 'list-clients', help='List connected clients') + + # Save profile command + parser_save = subparsers.add_parser( + 'save-profile', help='Save a hotspot profile') + parser_save.add_argument('--profile', type=str, + required=True, help='Profile name to save') + parser_save.add_argument( + '--name', type=str, default='MyHotspot', help='Hotspot name (SSID)') + parser_save.add_argument('--authentication', type=str, choices=[t.value for t in AuthType], default='wpa-psk', + help='Authentication type') + parser_save.add_argument('--encryption', type=str, choices=[t.value for t in EncryptionType], default='aes', + help='Encryption type') + parser_save.add_argument('--channel', type=int, + default=11, help='WiFi channel number (1-14)') + parser_save.add_argument('--max-clients', type=int, + default=10, help='Maximum number of clients') + parser_save.add_argument( + '--band', type=str, choices=['bg', 'a', 'ac'], default='bg', help='WiFi frequency band') + parser_save.add_argument( + '--hidden', action='store_true', help='Hide the SSID') + + # Load profile command + parser_load = subparsers.add_parser( + 'load-profile', help='Load a hotspot profile and start hotspot') + parser_load.add_argument('--profile', type=str, + required=True, help='Profile name to load') + + args = parser.parse_args() + + manager = HotspotManager() + + try: + if args.command == 'start': + config = HotspotConfig( + name=args.name, + password=args.password, + authentication=AuthType(args.authentication), + encryption=EncryptionType(args.encryption), + channel=args.channel, + max_clients=args.max_clients, + band=args.band, + hidden=args.hidden + ) + await manager.start(config) + + elif args.command == 'stop': + await manager.stop() + + elif args.command == 'status': + status = await manager.status() + table = Table(title="Hotspot Status") + table.add_column("Key", style="cyan", no_wrap=True) + table.add_column("Value", style="magenta") + for key, value in status.items(): + table.add_row(key, value) + console.print(table) + + elif args.command == 'list-clients': + clients = await manager.list_clients() + if clients: + table = Table(title="Connected Clients") + for client in clients: + for key, value in client.items(): + table.add_column(key, style="cyan", no_wrap=True) + for client in clients: + row = [str(value) for value in client.values()] + table.add_row(*row) + console.print(table) + else: + console.print("[yellow]No clients are connected.[/yellow]") + + elif args.command == 'save-profile': + config = HotspotConfig( + name=args.name, + authentication=AuthType(args.authentication), + encryption=EncryptionType(args.encryption), + channel=args.channel, + max_clients=args.max_clients, + band=args.band, + hidden=args.hidden + ) + manager.save_profile(args.profile, config) + + elif args.command == 'load-profile': + config = manager.load_profile(args.profile) + await manager.start(config) + + else: + parser.print_help() + sys.exit(1) + + except Exception as e: + logger.error(f"Error: {str(e)}") + console.print(f"[red]Error: {str(e)}[/red]") + sys.exit(1) + + +if __name__ == "__main__": + try: + asyncio.run(main()) + except Exception as e: + logger.critical(f"Unhandled exception: {e}") + console.print(f"[red]Unhandled exception: {e}[/red]") + sys.exit(1) diff --git a/modules/lithium.pytools/tools/html.py b/modules/lithium.pytools/tools/html.py deleted file mode 100644 index 2913466e..00000000 --- a/modules/lithium.pytools/tools/html.py +++ /dev/null @@ -1,324 +0,0 @@ -""" -This module provides classes and functions to generate HTML documents from JSON structures. -""" - -import json -import re -import argparse - - -class Tag: - """ - Represents an HTML tag. - """ - - def __init__(self, name, is_single=False, attrs=None, contents=None): - """ - Initialize a new HTML tag. - - Args: - name (str): The name of the tag (e.g., 'div', 'p'). - is_single (bool): Whether the tag is a self-closing tag (e.g.,
). - attrs (dict): A dictionary of attributes for the tag (e.g., {'class': 'my-class'}). - contents (list): A list of contents inside the tag (e.g., other Tag objects or strings). - """ - self.name = name - self.contents = contents if contents else [] - self.attributes = attrs if attrs else {} - self.is_single = is_single - - def set_attr(self, key, value): - """ - Set an attribute for the tag. - - Args: - key (str): The attribute name. - value (str): The attribute value. - """ - self.attributes[key] = value - - def remove_attr(self, key): - """ - Remove an attribute from the tag. - - Args: - key (str): The attribute name to remove. - """ - if key in self.attributes: - del self.attributes[key] - - def add_content(self, content): - """ - Add content inside the tag. - - Args: - content (Tag or str): The content to add. - """ - if not self.is_single: - self.contents.append(content) - - def remove_content(self, content): - """ - Remove content from inside the tag. - - Args: - content (Tag or str): The content to remove. - """ - if content in self.contents: - self.contents.remove(content) - - def find_by_tag(self, tag_name): - """ - Find all contents by tag name. - - Args: - tag_name (str): The name of the tag to find. - - Returns: - list: A list of Tag objects with the specified tag name. - """ - found = [] - for content in self.contents: - if isinstance(content, Tag): - if content.name == tag_name: - found.append(content) - found.extend(content.find_by_tag(tag_name)) - return found - - def render(self, context=None): - """ - Render the tag as an HTML string. - - Args: - context (dict): A dictionary for template rendering. - - Returns: - str: The rendered HTML string. - """ - attrs = ''.join(f' {attr}="{value}"' for attr, - value in self.attributes.items()) - inner_html = ''.join(self.render_str(c, context) - for c in self.contents) - if self.is_single: - return f'<{self.name}{attrs} />' - return f'<{self.name}{attrs}>{inner_html}' - - def render_str(self, text, context): - """ - Render a string with context for template rendering. - - Args: - text (str): The text to render. - context (dict): A dictionary for template rendering. - - Returns: - str: The rendered string. - """ - if context is not None and isinstance(text, str): - return re.sub( - r'\{\{(\w+)\}\}', - lambda m: str(context.get(m.group(1), m.group(0))), - text - ) - return text - - def __str__(self): - """ - Convert the tag to a string by rendering it. - - Returns: - str: The rendered HTML string. - """ - return self.render() - - -class HTMLDocument: - """ - Represents an HTML document. - """ - - def __init__(self, title=""): - """ - Initialize a new HTML document. - - Args: - title (str): The title of the document. - """ - self.root = Tag("html") - self.head = Tag("head") - self.body = Tag("body") - self.root.add_content(self.head) - self.root.add_content(self.body) - self.bootstrap_enabled = False - - if title: - self.set_title(title) - - def enable_bootstrap(self, version="5.2.3"): - """ - Enable Bootstrap in the document. - - Args: - version (str): The version of Bootstrap to use. - """ - if not self.bootstrap_enabled: - link_tag = Tag( - "link", - is_single=True, - attrs={ - "rel": "stylesheet", - "href": ( - "https://stackpath.bootstrapcdn.com/bootstrap/" - f"{version}/css/bootstrap.min.css" - ) - } - ) - self.head.add_content(link_tag) - - script_tag_js = Tag( - "script", - attrs={ - "src": ( - "https://stackpath.bootstrapcdn.com/bootstrap/" - f"{version}/js/bootstrap.bundle.min.js" - ) - } - ) - self.body.add_content(script_tag_js) - - self.bootstrap_enabled = True - - def set_title(self, title): - """ - Set the title of the document. - - Args: - title (str): The title of the document. - """ - title_tag = Tag("title") - title_tag.add_content(title) - self.head.add_content(title_tag) - - def add_tag(self, tag, to="body"): - """ - Add a tag to the document. - - Args: - tag (Tag): The tag to add. - to (str): The section to add the tag to ('head' or 'body'). - """ - if to == "head": - self.head.add_content(tag) - else: - self.body.add_content(tag) - - def render(self, context=None): - """ - Render the document as an HTML string. - - Args: - context (dict): A dictionary for template rendering. - - Returns: - str: The rendered HTML string. - """ - doctype = "\n" - return doctype + self.root.render(context) - - def __str__(self): - """ - Convert the document to a string by rendering it. - - Returns: - str: The rendered HTML string. - """ - return self.render() - - -def generate_html_from_json(json_data, context=None): - """ - Generate HTML from a JSON structure. - - Args: - json_data (dict or str): The JSON data representing the HTML structure. - context (dict): A dictionary for template rendering. - - Returns: - Tag or str: The generated HTML tag or string. - """ - if isinstance(json_data, dict): - tag_name = json_data.get("tag", "div") - attrs = json_data.get("attrs", {}) - contents = json_data.get("contents", []) - is_single = json_data.get("is_single", False) - - tag = Tag(tag_name, is_single, attrs) - - if isinstance(contents, list): - for content in contents: - tag.add_content(generate_html_from_json(content, context)) - elif isinstance(contents, str): - tag.add_content(contents.format(**(context if context else {}))) - return tag - elif isinstance(json_data, str): - return json_data.format(**(context if context else {})) - return "" - - -def main(): - """ - Main function to parse command line arguments and generate HTML document. - """ - parser = argparse.ArgumentParser( - description="Generate HTML from JSON structure." - ) - parser.add_argument( - "json_file", - help="Path to the JSON file containing the HTML structure." - ) - parser.add_argument( - "--context", - help="Path to the JSON file containing the context for template rendering.", - default=None - ) - parser.add_argument( - "--output", - help="Path to the output HTML file.", - default="output.html" - ) - parser.add_argument( - "--title", - help="Title of the HTML document.", - default="Generated Page" - ) - parser.add_argument( - "--enable-bootstrap", - help="Enable Bootstrap in the HTML document.", - action="store_true" - ) - - args = parser.parse_args() - - with open(args.json_file, 'r', encoding='utf-8') as f: - json_data = json.load(f) - - context = None - if args.context: - with open(args.context, 'r', encoding='utf-8') as f: - context = json.load(f) - - doc = HTMLDocument(args.title) - if args.enable_bootstrap: - doc.enable_bootstrap() - - generated_html = generate_html_from_json(json_data, context) - doc.add_tag(generated_html) - - with open(args.output, 'w', encoding='utf-8') as f: - f.write(str(doc)) - - print(f"HTML document generated and saved to {args.output}") - - -if __name__ == "__main__": - main() diff --git a/modules/lithium.pytools/tools/jbuilder.py b/modules/lithium.pytools/tools/jbuilder.py index 41ea0457..0eaaf2ff 100644 --- a/modules/lithium.pytools/tools/jbuilder.py +++ b/modules/lithium.pytools/tools/jbuilder.py @@ -12,10 +12,14 @@ - Automatically checks for the required package manager and installs it if missing - Supports automatic installation on various platforms (Linux, macOS, Windows) - Configurable via command-line arguments +- Enhanced logging with Loguru +- Robust exception handling +- Cross-platform support for cleanup operations +- Configuration file support for build options Usage: - python js_build_system_helper.py --package_manager npm --project_dir src --clean --test - python js_build_system_helper.py --package_manager yarn --project_dir src --install + python jbuilder.py --package_manager npm --project_dir src --clean --test + python jbuilder.py --package_manager yarn --project_dir src --install Author: Max Qian @@ -29,7 +33,11 @@ import subprocess import sys from pathlib import Path -from typing import List, Optional +from typing import Any, List, Optional, Dict +import json +import shutil + +from loguru import logger class JavaScriptBuilder: @@ -53,6 +61,7 @@ class JavaScriptBuilder: format: Format the project code. start: Start the development server. generate_docs: Generate documentation using a documentation tool. + list_available_scripts: List available npm/Yarn scripts from package.json. """ def __init__( @@ -62,24 +71,44 @@ def __init__( build_options: Optional[List[str]] = None, ): self.project_dir = project_dir - self.package_manager = package_manager + self.package_manager = package_manager.lower() self.build_options = build_options or [] - def run_command(self, *cmd: str): + def run_command(self, *cmd: str) -> None: """ Helper function to run shell commands. Args: cmd (str): The command and its arguments to run. """ - print(f"Running: {' '.join(cmd)}") - result = subprocess.run(cmd, cwd=self.project_dir, - check=True, capture_output=True, text=True) - print(result.stdout) - if result.stderr: - print(result.stderr, file=sys.stderr) - - def check_package_manager(self): + logger.debug(f"Executing command: {' '.join(cmd)}") + try: + result = subprocess.run( + cmd, + cwd=self.project_dir, + check=True, + capture_output=True, + text=True, + ) + if result.stdout: + logger.debug(result.stdout) + if result.stderr: + logger.warning(result.stderr) + except subprocess.CalledProcessError as e: + logger.error( + f"Command '{' '.join(cmd)}' failed with exit code {e.returncode}") + if e.stderr: + logger.error(e.stderr) + raise + except FileNotFoundError: + logger.error(f"Command not found: {cmd[0]}") + raise + except Exception as e: + logger.exception( + f"Unexpected error while running command '{' '.join(cmd)}': {e}") + raise + + def check_package_manager(self) -> bool: """ Check if the required package manager is installed. @@ -88,96 +117,206 @@ def check_package_manager(self): """ try: self.run_command(self.package_manager, "--version") - except FileNotFoundError: + logger.info(f"{self.package_manager} is installed.") + return True + except Exception: + logger.info(f"{self.package_manager} is not installed.") return False - return True - def install_package_manager(self): + def install_package_manager(self) -> None: """ Install the required package manager. Raises: - ValueError: If the platform is unsupported. - """ - if platform.system() == "Linux": - if self.package_manager == "npm": - self.run_command("sudo", "apt", "install", "-y", "npm") - elif self.package_manager == "yarn": - self.run_command("sudo", "npm", "install", "-g", "yarn") - elif platform.system() == "Darwin": # macOS - if self.package_manager == "npm": - self.run_command("brew", "install", "node") - elif self.package_manager == "yarn": - self.run_command("brew", "install", "yarn") - elif platform.system() == "Windows": - if self.package_manager == "npm": - self.run_command("choco", "install", "nodejs") - elif self.package_manager == "yarn": - self.run_command("choco", "install", "yarn") - else: - raise ValueError(f"Unsupported platform: {platform.system()}") - - def install_dependencies(self): + ValueError: If the platform is unsupported or installation fails. + """ + system = platform.system() + logger.info( + f"Attempting to install {self.package_manager} on {system} system.") + + try: + if system == "Linux": + if self.package_manager == "npm": + self.run_command("sudo", "apt-get", "update") + self.run_command("sudo", "apt-get", "install", "-y", "npm") + elif self.package_manager == "yarn": + self.run_command("sudo", "npm", "install", "-g", "yarn") + elif system == "Darwin": # macOS + if self.package_manager == "npm": + self.run_command("brew", "install", "node") + elif self.package_manager == "yarn": + self.run_command("brew", "install", "yarn") + elif system == "Windows": + if self.package_manager == "npm": + self.run_command("choco", "install", "nodejs", "-y") + elif self.package_manager == "yarn": + self.run_command("choco", "install", "yarn", "-y") + else: + raise ValueError(f"Unsupported platform: {system}") + logger.info(f"{self.package_manager} installation attempted.") + except subprocess.CalledProcessError as e: + logger.error(f"Failed to install {self.package_manager}: {e}") + raise + except ValueError as ve: + logger.error(ve) + raise + + def install_dependencies(self) -> None: """ Install project dependencies. """ + logger.info("Installing project dependencies.") self.run_command(self.package_manager, "install") - def build(self): + def build(self) -> None: """ Build the project. """ + logger.info("Building the project.") build_cmd = [self.package_manager, "run", "build"] + self.build_options self.run_command(*build_cmd) - def clean(self): + def clean(self) -> None: """ Clean the project by removing node_modules. """ - self.run_command("rm", "-rf", "node_modules") - - def test(self): + node_modules = self.project_dir / "node_modules" + logger.info("Cleaning the project by removing node_modules.") + try: + if node_modules.exists() and node_modules.is_dir(): + shutil.rmtree(node_modules) + logger.success("node_modules removed successfully.") + else: + logger.warning("node_modules directory does not exist.") + except Exception as e: + logger.error(f"Failed to remove node_modules: {e}") + raise + + def test(self) -> None: """ Run tests for the project. """ + logger.info("Running project tests.") self.run_command(self.package_manager, "test") - def lint(self): + def lint(self) -> None: """ Lint the project code. """ + logger.info("Linting the project code.") self.run_command(self.package_manager, "run", "lint") - def format(self): + def format(self) -> None: """ Format the project code. """ + logger.info("Formatting the project code.") self.run_command(self.package_manager, "run", "format") - def start(self): + def start(self) -> None: """ Start the development server. """ + logger.info("Starting the development server.") self.run_command(self.package_manager, "start") - def generate_docs(self): + def generate_docs(self) -> None: """ Generate documentation using a documentation tool. """ + logger.info("Generating project documentation.") self.run_command(self.package_manager, "run", "docs") + def list_available_scripts(self) -> None: + """ + List available npm/Yarn scripts from package.json. + """ + package_json = self.project_dir / "package.json" + if not package_json.exists(): + logger.error("package.json not found in the project directory.") + return + + try: + with open(package_json, 'r', encoding='utf-8') as f: + data = json.load(f) + scripts = data.get("scripts", {}) + if scripts: + logger.info("Available scripts:") + for script in scripts: + logger.info(f"- {script}") + else: + logger.warning("No scripts found in package.json.") + except json.JSONDecodeError as e: + logger.error(f"Invalid JSON format in package.json: {e}") + except Exception as e: + logger.exception(f"Unexpected error while listing scripts: {e}") + + +def setup_logging() -> None: + """ + Configure Loguru for logging. + """ + logger.remove() + logger.add( + "jbuilder.log", + rotation="10 MB", + retention="7 days", + compression="zip", + enqueue=True, + encoding="utf-8", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}", + level="DEBUG" + ) + logger.add( + sys.stderr, + level="INFO", + format="{message}", + ) + logger.debug("Logging is configured.") + -def main(): +def load_config(config_path: Optional[Path]) -> Dict[str, Any]: """ - Main function to run the JavaScript build system helper. + Load build options from a configuration file. + + Args: + config_path (Optional[Path]): Path to the configuration file. + + Returns: + Dict[str, Any]: Configuration options. + """ + if config_path and config_path.exists(): + try: + with open(config_path, 'r', encoding='utf-8') as f: + config = json.load(f) + logger.debug(f"Loaded configuration from {config_path}") + return config + except json.JSONDecodeError as e: + logger.error(f"Invalid JSON format in configuration file: {e}") + except Exception as e: + logger.exception(f"Unexpected error while loading config: {e}") + else: + if config_path: + logger.warning(f"Configuration file not found: {config_path}") + return {} + + +def parse_arguments() -> argparse.Namespace: + """ + Parse command-line arguments. + + Returns: + argparse.Namespace: Parsed arguments. """ parser = argparse.ArgumentParser( - description="JavaScript Build System Helper") + description="JavaScript Build System Helper with Enhanced Logging and Exception Handling" + ) parser.add_argument( "--project_dir", type=Path, default=Path(".").resolve(), help="Project directory" ) parser.add_argument( - "--package_manager", choices=["npm", "yarn"], required=True, help="Choose the package manager") + "--package_manager", choices=["npm", "yarn"], required=True, help="Choose the package manager" + ) parser.add_argument("--install", action="store_true", help="Install project dependencies") parser.add_argument("--build", action="store_true", @@ -191,51 +330,92 @@ def main(): help="Format the project code") parser.add_argument("--start", action="store_true", help="Start the development server") + parser.add_argument("--generate_docs", action="store_true", + help="Generate documentation") parser.add_argument( "--build_options", nargs="*", default=[], help="Custom build options", ) - parser.add_argument("--generate_docs", action="store_true", - help="Generate documentation") + parser.add_argument( + "--config", + type=Path, + help="Path to a JSON configuration file with build options", + ) + parser.add_argument( + "--list_scripts", + action="store_true", + help="List available npm/Yarn scripts from package.json", + ) + + return parser.parse_args() + + +def main(): + """ + Main function to run the JavaScript build system helper. + """ + setup_logging() + args = parse_arguments() - args = parser.parse_args() + config = load_config(args.config) + additional_build_options = args.build_options + \ + config.get("build_options", []) builder = JavaScriptBuilder( project_dir=args.project_dir, package_manager=args.package_manager, - build_options=args.build_options, + build_options=additional_build_options, ) - if not builder.check_package_manager(): - print(f"{args.package_manager} is not installed. Installing now...") - builder.install_package_manager() + try: + if not builder.check_package_manager(): + logger.info( + f"{args.package_manager} is not installed. Installing now...") + builder.install_package_manager() + if not builder.check_package_manager(): + logger.critical( + f"Failed to install {args.package_manager}. Exiting.") + sys.exit(1) + + if args.list_scripts: + builder.list_available_scripts() + + if args.clean: + builder.clean() + + if args.install: + builder.install_dependencies() - if args.clean: - builder.clean() + if args.build: + builder.build() - if args.install: - builder.install_dependencies() + if args.test: + builder.test() - if args.build: - builder.build() + if args.lint: + builder.lint() - if args.test: - builder.test() + if args.format: + builder.format() - if args.lint: - builder.lint() + if args.start: + builder.start() - if args.format: - builder.format() + if args.generate_docs: + builder.generate_docs() - if args.start: - builder.start() + except Exception as e: + logger.exception(f"An unexpected error occurred: {e}") + sys.exit(1) - if args.generate_docs: - builder.generate_docs() + logger.success("JavaScript Build System Helper finished successfully.") if __name__ == "__main__": - main() + try: + main() + except KeyboardInterrupt: + logger.warning("Operation interrupted by user.") + sys.exit(0) diff --git a/modules/lithium.pytools/tools/libclang_finder.py b/modules/lithium.pytools/tools/libclang_finder.py new file mode 100644 index 00000000..36380700 --- /dev/null +++ b/modules/lithium.pytools/tools/libclang_finder.py @@ -0,0 +1,311 @@ +# python +import platform +import glob +import argparse +import asyncio +from pathlib import Path +from typing import List, Optional, Literal +from dataclasses import dataclass, field + +from clang.cindex import Config +from loguru import logger +from rich.console import Console +from rich.table import Table +from rich.progress import Progress + +console = Console() + + +@dataclass +class LibClangFinderConfig: + """Configuration for LibClangFinder.""" + custom_path: Optional[Path] = None + clear_cache: bool = False + search_patterns: List[str] = field(default_factory=list) + cache_file: Path = Path("libclang_path_cache.txt") + log_file: Path = Path("libclang_finder.log") + + +class LibClangFinder: + """Finder class to locate the libclang library.""" + + def __init__(self, config: LibClangFinderConfig): + self.config = config + self.libclang_path: Optional[Path] = None + self.setup_logging() + logger.debug(f"LibClangFinder initialized with config: {self.config}") + + def setup_logging(self) -> None: + """ + Configure Loguru for logging. + + Args: + None + """ + logger.remove() + logger.add( + self.config.log_file, + rotation="1 MB", + retention="10 days", + level="DEBUG", + format="{time} | {level} | {message}" + ) + logger.debug("Logging is configured.") + + def clear_cache(self) -> None: + """Clears the cached libclang path.""" + if self.config.cache_file.exists(): + self.config.cache_file.unlink() + logger.info(f"Cleared cache file: {self.config.cache_file}") + console.print( + f"[green]Cleared cache file: {self.config.cache_file}[/green]") + + def cache_libclang_path(self, path: Path) -> None: + """Caches the found libclang path.""" + self.config.cache_file.write_text(str(path)) + logger.info(f"Cached libclang path: {path}") + console.print(f"[green]Cached libclang path: {path}[/green]") + + def load_cached_libclang_path(self) -> Optional[Path]: + """Loads the cached libclang path if available.""" + if self.config.cache_file.exists(): + path = Path(self.config.cache_file.read_text().strip()) + if path.is_file(): + logger.info(f"Loaded cached libclang path: {path}") + console.print( + f"[blue]Loaded cached libclang path: {path}[/blue]") + return path + logger.debug("No valid cached libclang path found.") + console.print("[yellow]No valid cached libclang path found.[/yellow]") + return None + + def find_libclang_linux(self) -> Optional[Path]: + """Finds libclang on Linux systems.""" + possible_patterns = [ + '/usr/lib/llvm-*/lib/libclang.so*', + '/usr/local/lib/llvm-*/lib/libclang.so*', + '/usr/lib/x86_64-linux-gnu/libclang.so*', + '/usr/local/lib/x86_64-linux-gnu/libclang.so*', + ] + logger.info("Searching for libclang on Linux...") + console.print( + "[bold green]Searching for libclang on Linux...[/bold green]") + paths = self.search_paths(possible_patterns) + return self.select_libclang_path(paths) + + def find_libclang_macos(self) -> Optional[Path]: + """Finds libclang on macOS systems.""" + possible_patterns = [ + '/usr/local/opt/llvm/lib/libclang.dylib', + '/usr/local/lib/libclang.dylib', + '/Library/Developer/CommandLineTools/usr/lib/libclang.dylib', + '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libclang.dylib', + ] + logger.info("Searching for libclang on macOS...") + console.print( + "[bold green]Searching for libclang on macOS...[/bold green]") + paths = self.search_paths(possible_patterns) + return self.select_libclang_path(paths) + + def find_libclang_windows(self) -> Optional[Path]: + """Finds libclang on Windows systems.""" + possible_patterns = [ + 'C:\\Program Files\\LLVM\\bin\\libclang.dll', + 'C:\\Program Files (x86)\\LLVM\\bin\\libclang.dll', + 'C:\\LLVM\\bin\\libclang.dll', + ] + logger.info("Searching for libclang on Windows...") + console.print( + "[bold green]Searching for libclang on Windows...[/bold green]") + paths = self.search_paths(possible_patterns) + return self.select_libclang_path(paths) + + def search_paths(self, patterns: List[str]) -> List[Path]: + """Searches for libclang paths based on provided glob patterns.""" + all_patterns = patterns + self.config.search_patterns + found_paths = [] + for pattern in all_patterns: + matches = glob.glob(pattern) + found_paths.extend(matches) + logger.debug( + f"Searching with pattern '{pattern}', found: {matches}") + unique_paths = sorted(set(Path(p) + for p in found_paths if Path(p).is_file())) + logger.debug(f"Total unique libclang paths found: {unique_paths}") + console.print( + f"[blue]Total unique libclang paths found: {len(unique_paths)}[/blue]") + return unique_paths + + def select_libclang_path(self, paths: List[Path]) -> Optional[Path]: + """Selects the most suitable libclang path from the list.""" + if paths: + selected_path = paths[-1] + logger.info(f"Selected libclang path: {selected_path}") + console.print( + f"[bold green]Selected libclang path: {selected_path}[/bold green]") + return selected_path + logger.error("No libclang library found.") + console.print("[bold red]No libclang library found.[/bold red]") + return None + + def get_libclang_path(self) -> Path: + """Retrieves the libclang path, using cache or searching if necessary.""" + if self.config.clear_cache: + self.clear_cache() + + if self.config.custom_path and self.config.custom_path.is_file(): + logger.info( + f"Using custom libclang path: {self.config.custom_path}") + console.print( + f"[blue]Using custom libclang path: {self.config.custom_path}[/blue]") + self.cache_libclang_path(self.config.custom_path) + return self.config.custom_path + + cached_path = self.load_cached_libclang_path() + if cached_path: + return cached_path + + system = platform.system() + logger.info(f"Detected operating system: {system}") + console.print( + f"[bold blue]Detected operating system: {system}[/bold blue]") + find_method = { + 'Linux': self.find_libclang_linux, + 'Darwin': self.find_libclang_macos, + 'Windows': self.find_libclang_windows, + }.get(system) + + if find_method: + libclang_path = find_method() + if libclang_path: + self.cache_libclang_path(libclang_path) + return libclang_path + else: + logger.error(f"Unsupported operating system: {system}") + console.print( + f"[bold red]Unsupported operating system: {system}[/bold red]") + raise RuntimeError(f"Unsupported operating system: {system}") + + raise RuntimeError("libclang library not found.") + + def configure_clang(self) -> None: + """Configures clang with the found libclang path.""" + libclang_path = self.get_libclang_path() + logger.info(f"Setting libclang path to: {libclang_path}") + console.print( + f"[bold green]Setting libclang path to: {libclang_path}[/bold green]") + Config.set_library_file(str(libclang_path)) + + def list_libclang_versions(self) -> List[Path]: + """Lists all available libclang versions on the system.""" + system = platform.system() + logger.info(f"Listing all libclang versions on {system}") + console.print( + f"[bold blue]Listing all libclang versions on {system}[/bold blue]") + find_method = { + 'Linux': self.find_libclang_linux, + 'Darwin': self.find_libclang_macos, + 'Windows': self.find_libclang_windows, + }.get(system) + + if find_method: + paths = find_method() + if paths: + logger.info(f"Available libclang libraries: {paths}") + table = Table(title="Available libclang Libraries") + table.add_column("Path", justify="left", + style="cyan", no_wrap=True) + for path in paths: + table.add_row(str(path)) + console.print(table) + return paths + else: + logger.error(f"Unsupported operating system: {system}") + console.print( + f"[bold red]Unsupported operating system: {system}[/bold red]") + return [] + + +def parse_arguments() -> LibClangFinderConfig: + """Parses command-line arguments and returns the configuration.""" + parser = argparse.ArgumentParser(description="libclang Path Finder") + subparsers = parser.add_subparsers(dest='command', help='Sub-commands') + + # Sub-command: configure + configure_parser = subparsers.add_parser( + 'configure', help='Configure libclang') + configure_parser.add_argument( + '--path', type=Path, help="Custom path to libclang library") + configure_parser.add_argument( + '--clear-cache', action='store_true', help="Clear cached libclang path") + configure_parser.add_argument('--search-patterns', nargs='*', + default=[], help="Additional glob patterns to search for libclang") + configure_parser.add_argument('--cache-file', type=Path, default=Path( + "libclang_path_cache.txt"), help="Path to the cache file") + configure_parser.add_argument( + '--log-file', type=Path, default=Path("libclang_finder.log"), help="Path to the log file") + + # Sub-command: list + list_parser = subparsers.add_parser( + 'list', help='List available libclang versions') + list_parser.add_argument('--cache-file', type=Path, default=Path( + "libclang_path_cache.txt"), help="Path to the cache file") + list_parser.add_argument( + '--log-file', type=Path, default=Path("libclang_finder.log"), help="Path to the log file") + + args = parser.parse_args() + + if args.command == 'configure': + return LibClangFinderConfig( + custom_path=args.path, + clear_cache=args.clear_cache, + search_patterns=args.search_patterns, + cache_file=args.cache_file, + log_file=args.log_file, + ) + elif args.command == 'list': + return LibClangFinderConfig( + cache_file=args.cache_file, + log_file=args.log_file, + ) + else: + parser.print_help() + exit(1) + + +def main() -> None: + """Main entry point for the script.""" + config = parse_arguments() + finder = LibClangFinder(config) + + if config.clear_cache: + finder.clear_cache() + + if config.custom_path: + try: + finder.configure_clang() + logger.info("libclang configured successfully.") + console.print( + "[bold green]libclang configured successfully.[/bold green]") + except Exception as e: + logger.error(f"Failed to configure libclang: {e}") + console.print( + f"[bold red]Failed to configure libclang: {e}[/bold red]") + elif 'list' in config.__dict__ and config.cache_file: + versions = finder.list_libclang_versions() + if not versions: + console.print("[yellow]No libclang versions found.[/yellow]") + else: + try: + finder.configure_clang() + logger.info("libclang configured successfully.") + console.print( + "[bold green]libclang configured successfully.[/bold green]") + except Exception as e: + logger.error(f"Failed to configure libclang: {e}") + console.print( + f"[bold red]Failed to configure libclang: {e}[/bold red]") + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pytools/tools/model.py b/modules/lithium.pytools/tools/model.py index 60f9fed5..40381480 100644 --- a/modules/lithium.pytools/tools/model.py +++ b/modules/lithium.pytools/tools/model.py @@ -4,19 +4,18 @@ import os import hashlib -import logging import asyncio -from typing import Optional +from pathlib import Path +from typing import Optional, Dict, Any +import json + from transformers import AutoModelForCausalLM, AutoTokenizer +from loguru import logger -# 配置日志 -logging.basicConfig(level=logging.INFO, - format='%(asctime)s - %(levelname)s - %(message)s') -# 定义缓存目录 -CACHE_DIR = "./cache" -if not os.path.exists(CACHE_DIR): - os.makedirs(CACHE_DIR) +# Define cache directory +CACHE_DIR = Path("./cache") +CACHE_DIR.mkdir(parents=True, exist_ok=True) class BaseModel: @@ -56,47 +55,82 @@ class LLaMAModel(BaseModel): LLaMA model class. """ - def __init__(self, model_name: str = "meta-llama/Llama-3b"): - logging.info("Loading LLaMA model %s...", model_name) - self.tokenizer = AutoTokenizer.from_pretrained(model_name) - self.model = AutoModelForCausalLM.from_pretrained(model_name) + def __init__(self, model_name: str = "meta-llama/Llama-3b", device: str = "cpu"): + """ + Initialize the LLaMA model. + + Args: + model_name (str): The name of the pre-trained model. + device (str): Device to run the model on ('cpu' or 'cuda'). + """ + try: + logger.info( + f"Loading LLaMA model '{model_name}' on device '{device}'...") + self.tokenizer = AutoTokenizer.from_pretrained(model_name) + self.model = AutoModelForCausalLM.from_pretrained( + model_name).to(device) + self.device = device + logger.success(f"LLaMA model '{model_name}' loaded successfully.") + except Exception as e: + logger.exception(f"Failed to load LLaMA model '{model_name}': {e}") + raise def generate_response(self, prompt: str, max_length: int = 50) -> str: cache_key = self._get_cache_key(prompt, max_length) cached_response = self._load_from_cache(cache_key) if cached_response: - logging.info("Loaded response from cache.") + logger.debug("Loaded response from cache.") return cached_response - logging.info("Generating response for prompt: %s", prompt) - inputs = self.tokenizer(prompt, return_tensors="pt") - outputs = self.model.generate( - inputs["input_ids"], max_length=max_length) - response = self.tokenizer.decode(outputs[0], skip_special_tokens=True) - - self._save_to_cache(cache_key, response) - return response + try: + logger.info(f"Generating response for prompt: {prompt}") + inputs = self.tokenizer( + prompt, return_tensors="pt").to(self.device) + outputs = self.model.generate( + inputs["input_ids"], max_length=max_length, eos_token_id=self.tokenizer.eos_token_id) + response = self.tokenizer.decode( + outputs[0], skip_special_tokens=True) + self._save_to_cache(cache_key, response) + logger.debug("Response generated and cached successfully.") + return response + except Exception as e: + logger.exception(f"Failed to generate response: {e}") + raise def _get_cache_key(self, prompt: str, max_length: int) -> str: key = f"{prompt}_{max_length}" return hashlib.md5(key.encode()).hexdigest() - def _save_to_cache(self, key: str, response: str): - with open(f"{CACHE_DIR}/{key}.txt", "w", encoding="utf-8") as f: - f.write(response) + def _save_to_cache(self, key: str, response: str) -> None: + try: + cache_file = CACHE_DIR / f"{key}.txt" + with cache_file.open("w", encoding="utf-8") as f: + f.write(response) + logger.debug(f"Response saved to cache: {cache_file}") + except Exception as e: + logger.error(f"Failed to save response to cache: {e}") def _load_from_cache(self, key: str) -> Optional[str]: - file_path = f"{CACHE_DIR}/{key}.txt" - if os.path.exists(file_path): - with open(file_path, "r", encoding="utf-8") as f: - return f.read() + cache_file = CACHE_DIR / f"{key}.txt" + if cache_file.exists(): + try: + with cache_file.open("r", encoding="utf-8") as f: + logger.debug( + f"Loading response from cache file: {cache_file}") + return f.read() + except Exception as e: + logger.error(f"Failed to load response from cache: {e}") return None async def generate_response_async(self, prompt: str, max_length: int = 50) -> str: loop = asyncio.get_event_loop() - response = await loop.run_in_executor(None, self.generate_response, prompt, max_length) - return response + try: + response = await loop.run_in_executor(None, self.generate_response, prompt, max_length) + return response + except Exception as e: + logger.exception(f"Async response generation failed: {e}") + raise class OllamaModel(BaseModel): @@ -105,23 +139,48 @@ class OllamaModel(BaseModel): """ def __init__(self, model_name: str = "ollama/ollama-3b"): - logging.info("Loading Ollama model %s...", model_name) - # 模拟Ollama模型的加载过程 - # 假设有类似接口 - # self.model = OllamaModelAPI.load(model_name) # 如果Ollama有自己的API,使用此处加载 + """ + Initialize the Ollama model. + + Args: + model_name (str): The name of the pre-trained Ollama model. + """ + try: + logger.info(f"Loading Ollama model '{model_name}'...") + # Placeholder for actual Ollama model loading + # self.model = OllamaAPI.load(model_name) + self.model_name = model_name + logger.success(f"Ollama model '{model_name}' loaded successfully.") + except Exception as e: + logger.exception( + f"Failed to load Ollama model '{model_name}': {e}") + raise def generate_response(self, prompt: str, max_length: int = 50) -> str: - logging.info("Generating response with Ollama for prompt: %s", prompt) - # 假设有类似接口生成响应 - response = f"Ollama Response to: {prompt} (Simulated)" - return response + try: + logger.info( + f"Generating response with Ollama for prompt: {prompt}") + # Placeholder for actual Ollama response generation + # response = self.model.generate(prompt, max_length=max_length) + response = f"Ollama Response to: {prompt} (Simulated)" + logger.debug("Ollama response generated successfully.") + return response + except Exception as e: + logger.exception(f"Failed to generate Ollama response: {e}") + raise async def generate_response_async(self, prompt: str, max_length: int = 50) -> str: - logging.info( - "Generating async response with Ollama for prompt: %s", prompt) - # 模拟异步调用 Ollama 模型 - await asyncio.sleep(1) # 假设异步调用需要一定的时间 - return self.generate_response(prompt, max_length) + try: + logger.info( + f"Asynchronously generating response with Ollama for prompt: {prompt}") + # Placeholder for actual async Ollama response generation + await asyncio.sleep(1) # Simulate async operation + response = self.generate_response(prompt, max_length) + logger.debug("Ollama async response generated successfully.") + return response + except Exception as e: + logger.exception(f"Async Ollama response generation failed: {e}") + raise class ModelManager: @@ -129,12 +188,20 @@ class ModelManager: Model manager class to handle switching between different models. """ - def __init__(self): - self.models = { - "llama": LLaMAModel(), + def __init__(self, device: str = "cpu"): + """ + Initialize the ModelManager with available models. + + Args: + device (str): Device to run models on ('cpu' or 'cuda'). + """ + self.models: Dict[str, BaseModel] = { + "llama": LLaMAModel(device=device), "ollama": OllamaModel() } - self.active_model = "llama" # 默认使用LLaMA模型 + self.active_model_name: str = "llama" # Default model + logger.info( + f"ModelManager initialized with active model: {self.active_model_name}") def set_active_model(self, model_name: str): """ @@ -143,10 +210,12 @@ def set_active_model(self, model_name: str): Args: model_name (str): The name of the model to set as active. """ + model_name = model_name.lower() if model_name not in self.models: - raise ValueError(f"Model {model_name} is not supported.") - self.active_model = model_name - logging.info("Switched to %s model.", model_name) + logger.error(f"Model '{model_name}' is not supported.") + raise ValueError(f"Model '{model_name}' is not supported.") + self.active_model_name = model_name + logger.info(f"Active model set to: {self.active_model_name}") def generate_response(self, prompt: str, max_length: int = 50) -> str: """ @@ -159,8 +228,15 @@ def generate_response(self, prompt: str, max_length: int = 50) -> str: Returns: str: The generated response. """ - model = self.models[self.active_model] - return model.generate_response(prompt, max_length) + try: + model = self.models[self.active_model_name] + response = model.generate_response(prompt, max_length) + logger.debug( + f"Response generated by {self.active_model_name} model.") + return response + except Exception as e: + logger.exception(f"Failed to generate response: {e}") + raise async def generate_response_async(self, prompt: str, max_length: int = 50) -> str: """ @@ -173,12 +249,32 @@ async def generate_response_async(self, prompt: str, max_length: int = 50) -> st Returns: str: The generated response. """ - model = self.models[self.active_model] - return await model.generate_response_async(prompt, max_length) + try: + model = self.models[self.active_model_name] + response = await model.generate_response_async(prompt, max_length) + logger.debug( + f"Async response generated by {self.active_model_name} model.") + return response + except Exception as e: + logger.exception(f"Failed to generate async response: {e}") + raise + + def list_available_models(self) -> List[str]: + """ + List all available models. + + Returns: + List[str]: Names of available models. + """ + model_names = list(self.models.keys()) + logger.info(f"Available models: {', '.join(model_names)}") + return model_names def cli_interface(): - import argparse + """ + Command-line interface for generating responses using models. + """ parser = argparse.ArgumentParser( description="Generate text using LLaMA or Ollama model.") parser.add_argument("--prompt", type=str, @@ -188,44 +284,69 @@ def cli_interface(): parser.add_argument("--model", type=str, choices=[ "llama", "ollama"], default="llama", help="Choose model: LLaMA or Ollama") parser.add_argument("--async_mode", action="store_true", - help="Generate response asynchronously") # 修改了参数名 + help="Generate response asynchronously") parser.add_argument("--output", type=str, help="File to save the generated response") parser.add_argument("--log_level", type=str, choices=[ "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"], default="INFO", help="Set the logging level") + parser.add_argument( + "--device", type=str, choices=["cpu", "cuda"], default="cpu", help="Device to run the model on") args = parser.parse_args() - # 设置日志级别 - logging.getLogger().setLevel(args.log_level) - - model_manager = ModelManager() - model_manager.set_active_model(args.model) - - if args.async_mode: # 修改了参数名 - response = asyncio.run(model_manager.generate_response_async( - args.prompt, args.max_length)) - else: - response = model_manager.generate_response( - args.prompt, args.max_length) - - if args.output: - with open(args.output, "w", encoding="utf-8") as f: - f.write(response) - logging.info("Response saved to %s", args.output) - else: - print(f"Response: {response}") - - -async def main_async(): + # Configure logging level + logger.remove() + logger.add(sys.stderr, level=args.log_level, + format="{message}") + logger.add( + "model.log", + rotation="10 MB", + retention="7 days", + compression="zip", + enqueue=True, + encoding="utf-8", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}", + level="DEBUG" + ) + logger.debug("Logging configured.") + + try: + model_manager = ModelManager(device=args.device) + model_manager.set_active_model(args.model) + + if args.async_mode: + response = asyncio.run(model_manager.generate_response_async( + args.prompt, args.max_length)) + else: + response = model_manager.generate_response( + args.prompt, args.max_length) + + if args.output: + output_path = Path(args.output) + with output_path.open("w", encoding="utf-8") as f: + f.write(response) + logger.info(f"Response saved to {output_path}") + else: + print(f"Response: {response}") + + except Exception as e: + logger.exception(f"An error occurred during response generation: {e}") + sys.exit(1) + + +async def main_async_example(): """ - Example of asynchronous call to generate a response. + Example of an asynchronous call to generate a response. """ - model_manager = ModelManager() - model_manager.set_active_model("ollama") # 切换到 Ollama 模型 - prompt = "What are the latest trends in AI research?" - response = await model_manager.generate_response_async(prompt) - print(f"Async Response: {response}") + try: + model_manager = ModelManager( + device="cuda" if torch.cuda.is_available() else "cpu") + model_manager.set_active_model("ollama") + prompt = "What are the latest trends in AI research?" + response = await model_manager.generate_response_async(prompt, max_length=100) + print(f"Async Response: {response}") + except Exception as e: + logger.exception(f"Async example failed: {e}") if __name__ == "__main__": diff --git a/modules/lithium.pytools/tools/net.py b/modules/lithium.pytools/tools/net.py index aa040b5d..c84c6336 100644 --- a/modules/lithium.pytools/tools/net.py +++ b/modules/lithium.pytools/tools/net.py @@ -1,3 +1,4 @@ +# python #!/usr/bin/env python3 """ @file net_framework_installer.py @@ -6,7 +7,7 @@ @details This script uses the Windows Registry to determine installed .NET Framework versions and provides functionality to download and execute installer files for missing versions - using multithreaded downloads and checksum verification for file integrity. + using the asyncio library for concurrent downloads and checksum verification for file integrity. Usage: python net_framework_installer.py --list @@ -14,211 +15,414 @@ python net_framework_installer.py --check v4.0.30319 --download [URL] --install [FILE_PATH] --threads 4 --checksum [SHA256] python net_framework_installer.py --uninstall v4.0.30319 -@requires - Python 3.x +@requires - Python 3.9+ - Windows operating system - `requests` Python library + - `tqdm` Python library @note This script must be run with administrative privileges to install or uninstall .NET Framework versions. -@version 1.1 -@date Date of creation or last modification +@version 3.0 +@date 2024-04-27 """ import argparse import hashlib import subprocess -import threading -import os -from sys import platform -import requests - - -def verify_file_checksum(file_path, original_checksum, hash_algo='sha256'): - """ - Verify the file checksum. - - @param file_path The path to the file whose checksum is to be verified. - @param original_checksum The expected checksum to verify against. - @param hash_algo The hashing algorithm to use (default is SHA-256). - - @return True if the checksum matches, False otherwise. - """ - _hash = hashlib.new(hash_algo) - with open(file_path, 'rb') as f: - for chunk in iter(lambda: f.read(4096), b""): - _hash.update(chunk) - return _hash.hexdigest() == original_checksum - - -def check_dotnet_installed(version): - """ - Checks if a specific version of the .NET Framework is installed by querying the Windows Registry. - - @param version: A string representing the .NET Framework version to check (e.g., 'v4\\Client'). - @return: True if the specified version is installed, False otherwise. - """ - try: - result = subprocess.run( - ["reg", "query", f"HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\{ - version}"], - capture_output=True, text=True, check=True +import sys +import asyncio +import aiohttp +import aiofiles +from pathlib import Path +from typing import Optional, List, Literal +from loguru import logger +from tqdm.asyncio import tqdm + +# Define cache directory +CACHE_DIR = Path("./cache") +CACHE_DIR.mkdir(parents=True, exist_ok=True) + + +class NetFrameworkInstallerConfig: + """Configuration for NetFrameworkInstaller.""" + + def __init__( + self, + download_dir: Path = CACHE_DIR, + num_threads: int = 4, + log_file: Path = Path("net_framework_installer.log"), + ): + self.download_dir = download_dir + self.num_threads = num_threads + self.log_file = log_file + + +class NetFrameworkInstaller: + """Installer class to manage .NET Framework installations.""" + + def __init__(self, config: NetFrameworkInstallerConfig): + self.config = config + self.setup_logging() + + def setup_logging(self) -> None: + """ + Configure Loguru for logging. + + Args: + None + """ + logger.remove() + logger.add( + self.config.log_file, + rotation="10 MB", + retention="7 days", + compression="zip", + enqueue=True, + encoding="utf-8", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}", + level="DEBUG", ) - return result.returncode == 0 and version in result.stdout - except subprocess.CalledProcessError: - return False - - -def list_installed_dotnets(): - """ - Lists all installed .NET Framework versions by querying the Windows Registry under the NDP key. - - Prints each found version directly to the standard output. - """ - try: - result = subprocess.run( - ["reg", "query", "HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\"], - capture_output=True, text=True, check=True + logger.add( + sys.stderr, + level="INFO", + format="{message}", ) - if result.returncode == 0: - print("Installed .NET Framework versions:") - for line in result.stdout.splitlines(): - if "v" in line: - print(line.strip()) - except subprocess.CalledProcessError: - print("Failed to query the registry for installed .NET Framework versions.") - - -def download_file_part(url, start, end, filename, idx, results): - """ - Download a part of a file specified by byte range. - - @param url The URL from which to download the file. - @param start The starting byte of the file part. - @param end The ending byte of the file part. - @param filename The filename where the downloaded data will be temporarily stored. - @param idx The index of the thread (used for storing results in the correct order). - @param results A shared list to store results from each thread. - """ - headers = {'Range': f'bytes={start}-{end}'} - response = requests.get(url, headers=headers, stream=True, timeout=10) - response.raise_for_status() - results[idx] = response.content - - -def download_file(url, filename, num_threads=4, expected_checksum=None): - """ - Download a file using multiple threads and optionally verify its checksum. - - @param url The URL from which to download the file. - @param filename The filename where the downloaded file will be saved. - @param num_threads The number of threads to use for downloading the file. - @param expected_checksum Optional; the expected checksum of the downloaded file for verification purposes. - - @return None - """ - response = requests.head(url, timeout=10) - total_size = int(response.headers.get('content-length', 0)) - part_size = total_size // num_threads - results = [None] * num_threads - - threads = [] - for i in range(num_threads): - start = i * part_size - end = start + part_size - 1 if i < num_threads - 1 else total_size - 1 - args = (url, start, end, filename, i, results) - thread = threading.Thread(target=download_file_part, args=args) - threads.append(thread) - thread.start() - - for thread in threads: - thread.join() - - with open(filename, 'wb') as f: - for content in results: - f.write(content) - - print(f"Downloaded {filename}") - if expected_checksum: - if verify_file_checksum(filename, expected_checksum): - print("File checksum verified successfully.") - else: - print("File checksum verification failed.") - os.remove(filename) - raise ValueError("Checksum verification failed") - - -def install_software(installer_path): - """ - Executes a software installer from a specified path. - - @param installer_path: The path to the executable installer file. - """ - if platform == "win32": # Ensure this is run on Windows - subprocess.run(["start", installer_path], shell=True, check=True) - print(f"Installer {installer_path} started.") - else: - print("This script only supports Windows.") - - -def uninstall_dotnet(version): - """ - Uninstall a specific version of the .NET Framework. - - @param version: A string representing the .NET Framework version to uninstall (e.g., 'v4\\Client'). - """ - try: - result = subprocess.run( - ["reg", "delete", f"HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\{ - version}", "/f"], - capture_output=True, text=True, check=True - ) - if result.returncode == 0: - print(f".NET Framework {version} uninstalled successfully.") - else: + logger.debug("Logging is configured.") + + def verify_file_checksum( + self, file_path: Path, original_checksum: str, hash_algo: Literal['sha256', 'md5'] = 'sha256' + ) -> bool: + """ + Verify the file checksum. + + Args: + file_path (Path): The path to the file whose checksum is to be verified. + original_checksum (str): The expected checksum to verify against. + hash_algo (Literal['sha256', 'md5']): The hashing algorithm to use. + + Returns: + bool: True if the checksum matches, False otherwise. + """ + try: + logger.debug(f"Verifying checksum for file: {file_path}") + _hash = hashlib.new(hash_algo) + with file_path.open("rb") as f: + for chunk in iter(lambda: f.read(4096), b""): + _hash.update(chunk) + calculated_checksum = _hash.hexdigest() + logger.debug(f"Calculated checksum: {calculated_checksum}") + return calculated_checksum.lower() == original_checksum.lower() + except Exception as e: + logger.error(f"Failed to verify checksum for {file_path}: {e}") + return False + + def check_dotnet_installed(self, version: str) -> bool: + """ + Check if a specific version of the .NET Framework is installed by querying the Windows Registry. + + Args: + version (str): The .NET Framework version to check (e.g., 'v4\\Client'). + + Returns: + bool: True if installed, False otherwise. + """ + try: + logger.debug( + f"Checking if .NET Framework version {version} is installed.") + result = subprocess.run( + ["reg", "query", + f"HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\{version}"], + capture_output=True, + text=True, + check=True + ) + is_installed = version in result.stdout + logger.info( + f".NET Framework {version} installation status: {is_installed}") + return is_installed + except subprocess.CalledProcessError: + logger.info(f".NET Framework {version} is not installed.") + return False + except Exception as e: + logger.exception( + f"Error checking .NET Framework version {version}: {e}") + return False + + def list_installed_dotnets(self) -> None: + """ + List all installed .NET Framework versions by querying the Windows Registry. + + Args: + None + + Returns: + None + """ + try: + logger.debug("Listing all installed .NET Framework versions.") + result = subprocess.run( + ["reg", "query", "HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\"], + capture_output=True, + text=True, + check=True + ) + installed_versions = [ + line.strip() for line in result.stdout.splitlines() if "v" in line] + if installed_versions: + print("Installed .NET Framework versions:") + for version in installed_versions: + print(version) + logger.info("Listed all installed .NET Framework versions.") + else: + print("No .NET Framework versions found.") + logger.info("No .NET Framework versions found.") + except subprocess.CalledProcessError: + print("Failed to query the registry for installed .NET Framework versions.") + logger.error( + "Failed to query the registry for installed .NET Framework versions.") + except Exception as e: + print("An unexpected error occurred while listing .NET Framework versions.") + logger.exception(f"Error listing .NET Framework versions: {e}") + + async def download_file_part( + self, session: aiohttp.ClientSession, url: str, start: int, end: int + ) -> bytes: + """ + Asynchronously download a part of a file specified by byte range. + + Args: + session (aiohttp.ClientSession): The HTTP session to use for the request. + url (str): The URL from which to download the file. + start (int): The starting byte of the file part. + end (int): The ending byte of the file part. + + Returns: + bytes: The downloaded content of the file part. + """ + headers = {'Range': f'bytes={start}-{end}'} + async with session.get(url, headers=headers) as response: + response.raise_for_status() + content = await response.read() + logger.debug(f"Downloaded bytes {start}-{end} from {url}") + return content + + async def download_file( + self, url: str, filename: Path, num_threads: int = 4, expected_checksum: Optional[str] = None + ) -> None: + """ + Download a file using multiple threads asynchronously and optionally verify its checksum. + + Args: + url (str): The URL from which to download the file. + filename (Path): The filename where the downloaded file will be saved. + num_threads (int): The number of threads to use for downloading the file. + expected_checksum (Optional[str]): The expected checksum of the downloaded file for verification purposes. + + Raises: + ValueError: If checksum verification fails. + """ + try: + logger.info( + f"Starting download from {url} using {num_threads} threads.") + async with aiohttp.ClientSession() as session: + async with session.head(url) as head: + if head.status != 200: + logger.error( + f"Failed to retrieve headers from {url}. Status code: {head.status}") + raise ValueError( + f"Failed to retrieve headers from {url}. Status code: {head.status}") + total_size = int(head.headers.get('Content-Length', 0)) + if total_size == 0: + logger.error( + "Cannot determine the size of the file to download.") + raise ValueError( + "Cannot determine the size of the file to download.") + + part_size = total_size // num_threads + tasks = [] + for i in range(num_threads): + start_byte = i * part_size + end_byte = start_byte + part_size - 1 if i < num_threads - 1 else total_size - 1 + tasks.append(self.download_file_part( + session, url, start_byte, end_byte)) + + logger.debug("Creating download tasks.") + parts = await asyncio.gather(*tasks) + + logger.debug(f"Writing downloaded parts to {filename}.") + async with aiofiles.open(filename, 'wb') as f: + for part in parts: + await f.write(part) + + logger.info(f"Downloaded {filename} successfully.") + + if expected_checksum: + if self.verify_file_checksum(filename, expected_checksum): + logger.info("File checksum verified successfully.") + else: + logger.error("File checksum verification failed.") + await aiofiles.os.remove(filename) + raise ValueError("Checksum verification failed") + except Exception as e: + logger.exception(f"Failed to download file {url}: {e}") + raise + + def install_software(self, installer_path: Path) -> None: + """ + Execute a software installer from a specified path. + + Args: + installer_path (Path): The path to the executable installer file. + """ + try: + if sys.platform != "win32": + logger.error("This script only supports Windows.") + print("This script only supports Windows.") + return + + logger.info( + f"Starting installation using installer: {installer_path}") + subprocess.run( + ["start", "/wait", str(installer_path)], shell=True, check=True) + logger.success( + f"Installer {installer_path} executed successfully.") + print(f"Installer {installer_path} started.") + except subprocess.CalledProcessError as e: + logger.error(f"Installer {installer_path} failed with error: {e}") + print(f"Installer {installer_path} failed to start.") + except Exception as e: + logger.exception(f"Unexpected error during installation: {e}") + print( + f"An unexpected error occurred while installing {installer_path}.") + + def uninstall_dotnet(self, version: str) -> None: + """ + Uninstall a specific version of the .NET Framework. + + Args: + version (str): The .NET Framework version to uninstall (e.g., 'v4\\Client'). + """ + try: + logger.info(f"Uninstalling .NET Framework version: {version}") + result = subprocess.run( + ["reg", "delete", + f"HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\{version}", "/f"], + capture_output=True, + text=True, + check=True + ) + if result.returncode == 0: + logger.success( + f".NET Framework {version} uninstalled successfully.") + print(f".NET Framework {version} uninstalled successfully.") + else: + logger.error(f"Failed to uninstall .NET Framework {version}.") + print(f"Failed to uninstall .NET Framework {version}.") + except subprocess.CalledProcessError: + logger.error(f"Failed to uninstall .NET Framework {version}.") print(f"Failed to uninstall .NET Framework {version}.") - except subprocess.CalledProcessError: - print(f"Failed to uninstall .NET Framework {version}.") - - -def main(): - """ - Main function to parse command-line arguments and invoke script functionality. - """ - parser = argparse.ArgumentParser( - description="Check and install .NET Framework versions.") - parser.add_argument("--check", metavar="VERSION", - help="Check if a specific .NET Framework version is installed.") - parser.add_argument("--list", action="store_true", - help="List all installed .NET Framework versions.") - parser.add_argument("--download", metavar="URL", - help="URL to download the .NET Framework installer from.") - parser.add_argument("--install", metavar="FILE", - help="Path to the .NET Framework installer to run.") - parser.add_argument("--threads", type=int, default=4, - help="Number of threads to use for downloading.") - parser.add_argument("--checksum", metavar="SHA256", - help="Expected SHA256 checksum of the downloaded file.") - parser.add_argument("--uninstall", metavar="VERSION", - help="Uninstall a specific .NET Framework version.") - - args = parser.parse_args() - - if args.list: - list_installed_dotnets() - - if args.check: - if check_dotnet_installed(args.check): - print(f".NET Framework {args.check} is already installed.") - else: - print(f".NET Framework {args.check} is not installed.") - if args.download and args.install: - download_file(args.download, args.install, - num_threads=args.threads, expected_checksum=args.checksum) - install_software(args.install) - - if args.uninstall: - uninstall_dotnet(args.uninstall) + except Exception as e: + logger.exception( + f"Error during uninstallation of .NET Framework {version}: {e}") + print( + f"An unexpected error occurred while uninstalling .NET Framework {version}.") + + def parse_arguments(self) -> argparse.Namespace: + """ + Parse command-line arguments. + + Returns: + argparse.Namespace: Parsed arguments. + """ + parser = argparse.ArgumentParser( + description="Check and install .NET Framework versions." + ) + parser.add_argument("--check", metavar="VERSION", + help="Check if a specific .NET Framework version is installed.") + parser.add_argument("--list", action="store_true", + help="List all installed .NET Framework versions.") + parser.add_argument("--download", metavar="URL", + help="URL to download the .NET Framework installer from.") + parser.add_argument("--install", metavar="FILE", + help="Path to the .NET Framework installer to run.") + parser.add_argument("--threads", type=int, default=self.config.num_threads, + help="Number of threads to use for downloading.") + parser.add_argument("--checksum", metavar="SHA256", + help="Expected SHA256 checksum of the downloaded file.") + parser.add_argument("--uninstall", metavar="VERSION", + help="Uninstall a specific .NET Framework version.") + return parser.parse_args() + + async def handle_download_and_install(self, url: str, installer_path: Path, checksum: Optional[str]) -> None: + """ + Handle the download and installation process. + + Args: + url (str): The URL to download the installer from. + installer_path (Path): The path to save the downloaded installer. + checksum (Optional[str]): The expected checksum of the installer. + + Returns: + None + """ + await self.download_file(url, installer_path, num_threads=self.config.num_threads, expected_checksum=checksum) + self.install_software(installer_path) + + def main(self) -> None: + """ + Main function to parse command-line arguments and invoke script functionality. + + Args: + None + + Returns: + None + """ + args = self.parse_arguments() + + if args.list: + self.list_installed_dotnets() + + if args.check: + logger.debug( + f"Checking installation status for .NET Framework version: {args.check}") + if self.check_dotnet_installed(args.check): + print(f".NET Framework {args.check} is already installed.") + logger.info( + f".NET Framework {args.check} is already installed.") + else: + print(f".NET Framework {args.check} is not installed.") + logger.info(f".NET Framework {args.check} is not installed.") + if args.download and args.install: + installer_path = Path(args.install) + asyncio.run(self.handle_download_and_install( + args.download, installer_path, args.checksum)) + elif args.download or args.install: + logger.warning( + "Download and install options should be used in conjunction with the --check argument.") + print( + "Download and install options should be used in conjunction with the --check argument.") + + if args.uninstall: + self.uninstall_dotnet(args.uninstall) + + if not any([args.list, args.check, args.uninstall]): + parser = argparse.ArgumentParser( + description="No action specified. Use --help to see available options." + ) + parser.print_help() if __name__ == "__main__": - main() + try: + config = NetFrameworkInstallerConfig() + installer = NetFrameworkInstaller(config) + installer.main() + except KeyboardInterrupt: + logger.warning("Operation interrupted by user.") + print("Operation interrupted by user.") + sys.exit(0) + except Exception as e: + logger.exception(f"An unexpected error occurred: {e}") + print(f"An unexpected error occurred: {e}") + sys.exit(1) diff --git a/modules/lithium.pytools/tools/nginx.py b/modules/lithium.pytools/tools/nginx.py new file mode 100644 index 00000000..c7d5d836 --- /dev/null +++ b/modules/lithium.pytools/tools/nginx.py @@ -0,0 +1,320 @@ +# python +import subprocess +import sys +import platform +import shutil +from loguru import logger +from pathlib import Path +from typing import Dict, Callable + +from rich.console import Console +from rich.table import Table +from rich.markdown import Markdown + +console = Console() + +# Configure loguru logger +logger.remove() +logger.add( + sys.stderr, + format="{time:YYYY-MM-DD HH:mm:ss} | " + "{level: <8} | " + "{name}:{function}:{line} - " + "{message}", + level="INFO" +) +logger.add("nginx_manager.log", rotation="500 MB", retention="10 days") + +# Define default Nginx paths based on the operating system +DEFAULT_NGINX_PATH = Path( + "/etc/nginx") if platform.system() != "Windows" else Path("C:/nginx") +DEFAULT_NGINX_CONF = DEFAULT_NGINX_PATH / \ + "nginx.conf" if platform.system() != "Windows" else DEFAULT_NGINX_PATH / \ + "conf/nginx.conf" +DEFAULT_NGINX_BINARY = Path( + "/usr/sbin/nginx") if platform.system() != "Windows" else DEFAULT_NGINX_PATH / "nginx.exe" +DEFAULT_BACKUP_PATH = DEFAULT_NGINX_PATH / \ + "backup" if platform.system() != "Windows" else DEFAULT_NGINX_PATH / "backup" + + +class NginxManager: + """ + A class to manage Nginx operations such as start, stop, reload, etc. + """ + + def __init__( + self, + nginx_path: Path = DEFAULT_NGINX_PATH, + nginx_conf: Path = DEFAULT_NGINX_CONF, + nginx_binary: Path = DEFAULT_NGINX_BINARY, + backup_path: Path = DEFAULT_BACKUP_PATH + ): + self.nginx_path = nginx_path + self.nginx_conf = nginx_conf + self.nginx_binary = nginx_binary + self.backup_path = backup_path + self._ensure_paths() + + def _ensure_paths(self): + """Ensure that the necessary paths exist.""" + logger.debug("Ensuring Nginx paths exist") + if not self.nginx_binary.exists(): + logger.error(f"Nginx binary not found at {self.nginx_binary}") + sys.exit(1) + if not self.nginx_conf.exists(): + logger.error( + f"Nginx configuration file not found at {self.nginx_conf}") + sys.exit(1) + if not self.backup_path.exists(): + self.backup_path.mkdir(parents=True, exist_ok=True) + logger.debug(f"Created backup directory at {self.backup_path}") + + def start(self): + """Start Nginx server.""" + logger.info("Starting Nginx") + try: + subprocess.run([str(self.nginx_binary)], check=True) + logger.success("Nginx has been started") + except subprocess.CalledProcessError as e: + logger.error(f"Failed to start Nginx: {e}") + + def stop(self): + """Stop Nginx server.""" + logger.info("Stopping Nginx") + try: + subprocess.run([str(self.nginx_binary), '-s', 'stop'], check=True) + logger.success("Nginx has been stopped") + except subprocess.CalledProcessError as e: + logger.error(f"Failed to stop Nginx: {e}") + + def reload(self): + """Reload Nginx configuration.""" + logger.info("Reloading Nginx configuration") + try: + subprocess.run( + [str(self.nginx_binary), '-s', 'reload'], check=True) + logger.success("Nginx configuration has been reloaded") + except subprocess.CalledProcessError as e: + logger.error(f"Failed to reload Nginx: {e}") + + def restart(self): + """Restart Nginx server.""" + logger.info("Restarting Nginx") + self.stop() + self.start() + + def check_config(self): + """Check Nginx configuration syntax.""" + logger.info("Checking Nginx configuration syntax") + try: + subprocess.run( + [str(self.nginx_binary), '-t', '-c', str(self.nginx_conf)], + check=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE + ) + logger.success("Nginx configuration syntax is correct") + except subprocess.CalledProcessError as e: + logger.error("Nginx configuration syntax is incorrect") + console.print("[bold red]Error details:[/bold red]") + console.print(e.stderr.decode()) + + def show_status(self): + """Show Nginx running status.""" + logger.info("Checking Nginx status") + try: + result = subprocess.run( + ["pgrep", "nginx"], check=True, stdout=subprocess.PIPE + ) + if result.stdout: + logger.success("Nginx is running") + else: + logger.info("Nginx is not running") + except subprocess.CalledProcessError: + logger.info("Nginx is not running") + + def show_version(self): + """Show Nginx version information.""" + logger.info("Showing Nginx version") + try: + result = subprocess.run( + [str(self.nginx_binary), '-v'], stderr=subprocess.PIPE, check=True + ) + version_info = result.stderr.decode().strip() + console.print(f"[bold green]{version_info}[/bold green]") + except subprocess.CalledProcessError as e: + logger.error(f"Failed to get Nginx version: {e}") + + def backup_config(self): + """Backup Nginx configuration file.""" + logger.info("Backing up Nginx configuration file") + backup_file = self.backup_path / "nginx.conf.bak" + try: + shutil.copy(self.nginx_conf, backup_file) + logger.success(f"Nginx configuration backed up to {backup_file}") + except IOError as e: + logger.error(f"Failed to backup configuration: {e}") + + def restore_config(self): + """Restore Nginx configuration file from backup.""" + logger.info("Restoring Nginx configuration from backup") + backup_file = self.backup_path / "nginx.conf.bak" + if backup_file.exists(): + try: + shutil.copy(backup_file, self.nginx_conf) + logger.success( + "Nginx configuration has been restored from backup") + except IOError as e: + logger.error(f"Failed to restore configuration: {e}") + else: + logger.error("Backup file not found") + + def test_config(self): + """Test Nginx configuration without reloading.""" + logger.info("Testing Nginx configuration") + try: + subprocess.run( + [str(self.nginx_binary), '-t', '-c', str(self.nginx_conf)], + check=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE + ) + logger.success("Nginx configuration test passed") + except subprocess.CalledProcessError as e: + logger.error("Nginx configuration test failed") + console.print("[bold red]Error details:[/bold red]") + console.print(e.stderr.decode()) + + def view_logs(self, log_type: str = 'access'): + """View Nginx logs. + + Args: + log_type (str): The type of log to view ('access' or 'error'). + """ + log_file = self.nginx_path / f"logs/{log_type}.log" + logger.info(f"Viewing Nginx {log_type} log") + if log_file.exists(): + with log_file.open() as f: + for line in f: + console.print(line.strip()) + else: + logger.error( + f"{log_type.capitalize()} log file not found at {log_file}") + + def clear_logs(self, log_type: str = 'access'): + """Clear Nginx logs. + + Args: + log_type (str): The type of log to clear ('access' or 'error'). + """ + log_file = self.nginx_path / f"logs/{log_type}.log" + logger.info(f"Clearing Nginx {log_type} log") + if log_file.exists(): + with log_file.open('w') as f: + f.truncate() + logger.success(f"{log_type.capitalize()} log has been cleared") + else: + logger.error( + f"{log_type.capitalize()} log file not found at {log_file}") + + def list_sites(self): + """List available and enabled sites.""" + sites_available = self.nginx_path / "sites-available" + sites_enabled = self.nginx_path / "sites-enabled" + + logger.info("Listing Nginx sites") + table = Table(title="Nginx Sites") + table.add_column("Site", style="cyan") + table.add_column("Status", style="green") + + available_sites = {site.name for site in sites_available.glob('*')} + enabled_sites = {site.name for site in sites_enabled.glob('*')} + + all_sites = available_sites.union(enabled_sites) + + for site in all_sites: + status = "Enabled" if site in enabled_sites else "Disabled" + table.add_row(site, status) + + console.print(table) + + # Additional methods can be added here... + + +def show_help(): + """Show help message.""" + help_text = """ + Nginx Manager - A tool to manage Nginx server operations. + + Usage: + python nginx_manager.py [command] + + Commands: + start Start Nginx server + stop Stop Nginx server + reload Reload Nginx configuration + restart Restart Nginx server + test Test Nginx configuration + check Check Nginx configuration syntax + status Show Nginx running status + version Show Nginx version information + backup Backup Nginx configuration file + restore Restore Nginx configuration from backup + view_logs View Nginx logs (access or error) + clear_logs Clear Nginx logs (access or error) + list_sites List available and enabled sites + help Show this help message + + Examples: + python nginx_manager.py start + python nginx_manager.py view_logs access + """ + console.print(Markdown(help_text)) + logger.info("Displayed help message") + + +def main(): + manager = NginxManager() + + commands: Dict[str, Callable] = { + "start": manager.start, + "stop": manager.stop, + "reload": manager.reload, + "restart": manager.restart, + "test": manager.test_config, + "check": manager.check_config, + "status": manager.show_status, + "version": manager.show_version, + "backup": manager.backup_config, + "restore": manager.restore_config, + "view_logs": manager.view_logs, + "clear_logs": manager.clear_logs, + "list_sites": manager.list_sites, + "help": show_help + } + + if len(sys.argv) < 2: + show_help() + sys.exit(1) + + command = sys.argv[1] + + if command in commands: + try: + if command in ["view_logs", "clear_logs"]: + # Optional argument for log type + log_type = sys.argv[2] if len(sys.argv) > 2 else 'access' + commands[command](log_type) + else: + commands[command]() + except Exception as e: + logger.exception( + f"An error occurred while executing '{command}': {e}") + else: + logger.error(f"Invalid command '{command}'") + show_help() + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pytools/tools/nm.py b/modules/lithium.pytools/tools/nm.py new file mode 100644 index 00000000..600c5838 --- /dev/null +++ b/modules/lithium.pytools/tools/nm.py @@ -0,0 +1,511 @@ +# python +""" +NM Tool for analyzing symbols in binary files. +Provides functionalities to retrieve, filter, search, count, and export symbols from a binary. +""" + +import argparse +import subprocess +import json +import csv +import sys +import os +import re +from typing import List, Tuple, Optional, Dict + +from loguru import logger +from rich.console import Console +from rich.table import Table +from rich.progress import track + +console = Console() + +# Configure loguru for logging +logger.remove() # Remove the default logger to customize logging settings +logger.add( + "nm_tool.log", + rotation="10 MB", + retention="10 days", + compression="zip", + enqueue=True, + encoding="utf-8", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}", +) +logger.add( + sys.stderr, + level="INFO", + format="{message}", +) + + +class NMError(Exception): + """Custom exception class for NM tool errors.""" + + +class NM: + """ + NM class encapsulates the functionality to interact with the 'nm' tool for binary analysis. + + Attributes: + binary_path (str): The file path to the binary to be analyzed. + """ + + def __init__(self, binary_path: str): + """ + Initializes the NM tool with the specified binary path and validates the binary. + + Args: + binary_path (str): Path to the binary file. + + Raises: + NMError: If the binary does not exist or is not executable. + """ + self.binary_path = binary_path + self._validate_binary() + + def _validate_binary(self) -> None: + """ + Validates that the binary file exists and is executable. + + Raises: + NMError: If the binary file does not exist or is not executable. + """ + logger.debug(f"Validating binary path: {self.binary_path}") + if not os.path.isfile(self.binary_path): + logger.error(f"Binary file does not exist: {self.binary_path}") + raise NMError(f"Binary file does not exist: {self.binary_path}") + if not os.access(self.binary_path, os.X_OK): + logger.warning( + f"Binary file is not executable: {self.binary_path}") + + def _run_nm(self, demangle: bool = False, extern_only: bool = False) -> str: + """ + Executes the 'nm' command on the binary and captures its output. + + Args: + demangle (bool): Whether to demangle C++ symbol names. + extern_only (bool): Whether to display only external symbols. + + Returns: + str: The standard output from the 'nm' command. + + Raises: + NMError: If the 'nm' command fails or is not found. + """ + logger.debug(f"Running nm on binary: {self.binary_path}") + cmd = ['nm', self.binary_path] + if demangle: + cmd.append('-C') + if extern_only: + cmd.append('-g') + logger.debug(f"Command: {' '.join(cmd)}") + try: + result = subprocess.run( + cmd, + capture_output=True, + text=True, + check=True + ) + logger.debug("nm command executed successfully.") + return result.stdout + except subprocess.CalledProcessError as e: + logger.error(f"Error running nm: {e}") + raise NMError(f"Error running nm: {e}") from e + except FileNotFoundError as exc: + logger.error( + "nm command not found. Please ensure it is installed and in PATH.") + raise NMError( + "nm command not found. Please ensure it is installed and in PATH.") from exc + + def get_symbols(self, demangle: bool = False, extern_only: bool = False) -> List[Tuple[str, str, str]]: + """ + Retrieves all symbols from the binary along with their addresses and types. + + Args: + demangle (bool): Whether to demangle C++ symbol names. + extern_only (bool): Whether to retrieve only external symbols. + + Returns: + List[Tuple[str, str, str]]: A list of tuples containing address, symbol type, and symbol name. + """ + output = self._run_nm(demangle=demangle, extern_only=extern_only) + symbols = [] + + # Parse nm output + for line in output.splitlines(): + if line.strip(): # Ignore empty lines + parts = line.strip().split(maxsplit=2) + if len(parts) == 3: + address, symbol_type, symbol_name = parts + elif len(parts) == 2: + address, symbol_type = parts + symbol_name = '' + else: + logger.warning(f"Unparsed line: {line}") + continue + symbols.append((address, symbol_type, symbol_name)) + + logger.info(f"Total symbols retrieved: {len(symbols)}") + return symbols + + def filter_symbols(self, symbol_type: Optional[str] = None, regex: Optional[str] = None) -> List[Tuple[str, str, str]]: + """ + Filters the retrieved symbols by their type or name pattern. + + Args: + symbol_type (Optional[str]): The type of symbol to filter by (e.g., 'T', 'D', 'B'). + regex (Optional[str]): A regular expression to filter symbol names. + + Returns: + List[Tuple[str, str, str]]: A list of filtered symbols. + """ + symbols = self.get_symbols() + if symbol_type: + symbols = [s for s in symbols if s[1] == symbol_type] + logger.info( + f"Symbols filtered by type '{symbol_type}': {len(symbols)} found") + if regex: + pattern = re.compile(regex) + symbols = [s for s in symbols if pattern.search(s[2])] + logger.info( + f"Symbols filtered by pattern '{regex}': {len(symbols)} found") + return symbols + + def find_symbol(self, symbol_name: str) -> Optional[Tuple[str, str, str]]: + """ + Searches for a specific symbol by its name. + + Args: + symbol_name (str): The name of the symbol to search for. + + Returns: + Optional[Tuple[str, str, str]]: The symbol tuple if found, else None. + """ + logger.debug(f"Searching for symbol by name: {symbol_name}") + symbols = self.get_symbols() + for symbol in symbols: + if symbol_name == symbol[2]: + logger.info(f"Symbol '{symbol_name}' found: {symbol}") + return symbol + logger.info(f"Symbol '{symbol_name}' not found.") + return None + + def find_symbol_by_address(self, address: str) -> Optional[Tuple[str, str, str]]: + """ + Searches for a symbol by its address. + + Args: + address (str): The address of the symbol to search for. + + Returns: + Optional[Tuple[str, str, str]]: The symbol tuple if found, else None. + """ + logger.debug(f"Searching for symbol by address: {address}") + symbols = self.get_symbols() + for addr, sym_type, name in symbols: + if addr.lower() == address.lower(): + logger.info( + f"Symbol at address '{address}' found: {(addr, sym_type, name)}") + return (addr, sym_type, name) + logger.info(f"No symbol found at address '{address}'.") + return None + + def display_symbols(self, symbols: List[Tuple[str, str, str]], detailed: bool = False) -> None: + """ + Formats and displays the list of symbols using Rich for enhanced terminal output. + + Args: + symbols (List[Tuple[str, str, str]]): The list of symbols to display. + detailed (bool): Whether to display detailed information. + """ + if not symbols: + logger.info("No symbols to display.") + console.print("[bold yellow]No symbols to display.[/bold yellow]") + return + + table = Table(title="Symbol Table") + + table.add_column("Address", style="cyan") + table.add_column("Type", style="magenta") + table.add_column("Name", style="green") + + for addr, sym_type, name in symbols: + table.add_row(addr, sym_type, name) + + console.print(table) + logger.info(f"Displayed {len(symbols)} symbols.") + + def count_symbols_by_type(self) -> Dict[str, int]: + """ + Counts the number of symbols by their type. + + Returns: + Dict[str, int]: A dictionary with symbol types as keys and their counts as values. + """ + symbols = self.get_symbols() + type_count: Dict[str, int] = {} + for _, sym_type, _ in symbols: + type_count[sym_type] = type_count.get(sym_type, 0) + 1 + logger.info("Symbol counts by type calculated.") + return type_count + + def export_symbols(self, filename: str, export_format: str = 'txt') -> None: + """ + Exports the symbols to a file in the specified format. + + Args: + filename (str): The name of the file to export symbols to. + export_format (str): The format to export symbols in ('txt', 'csv', 'json', 'xml'). + + Raises: + NMError: If the export format is unsupported or if file operations fail. + """ + symbols = self.get_symbols() + logger.debug( + f"Exporting symbols to {filename} in {export_format.upper()} format.") + try: + if export_format == 'txt': + with open(filename, 'w', encoding='utf-8') as f: + for addr, sym_type, name in symbols: + f.write(f"{addr} {sym_type} {name}\n") + logger.info(f"Symbols exported to {filename} in TXT format.") + elif export_format == 'csv': + with open(filename, 'w', newline='', encoding='utf-8') as f: + writer = csv.writer(f) + writer.writerow(["Address", "Type", "Name"]) + writer.writerows(symbols) + logger.info(f"Symbols exported to {filename} in CSV format.") + elif export_format == 'json': + with open(filename, 'w', encoding='utf-8') as f: + json.dump( + [{"address": addr, "type": sym_type, "name": name} + for addr, sym_type, name in symbols], + f, + indent=4 + ) + logger.info(f"Symbols exported to {filename} in JSON format.") + elif export_format == 'xml': + import xml.etree.ElementTree as ET + + root = ET.Element("Symbols") + for addr, sym_type, name in symbols: + symbol = ET.SubElement(root, "Symbol") + ET.SubElement(symbol, "Address").text = addr + ET.SubElement(symbol, "Type").text = sym_type + ET.SubElement(symbol, "Name").text = name + tree = ET.ElementTree(root) + tree.write(filename, encoding='utf-8', xml_declaration=True) + logger.info(f"Symbols exported to {filename} in XML format.") + else: + logger.error(f"Unsupported export format: {export_format}") + raise NMError(f"Unsupported format: {export_format}") + except IOError as e: + logger.error(f"Failed to export symbols: {e}") + raise NMError(f"Failed to export symbols: {e}") from e + except ImportError as exc: + logger.error( + "XML export requires the xml module, which is not available.") + raise NMError( + "XML export requires the xml module, which is not available.") from exc + + def get_symbol_sizes(self) -> List[Tuple[str, str, str, str]]: + """ + Retrieves symbols along with their sizes. + + Returns: + List[Tuple[str, str, str, str]]: A list of tuples containing address, size, symbol type, and symbol name. + """ + logger.debug("Retrieving symbols with sizes.") + cmd = ['nm', '-S', self.binary_path] + try: + result = subprocess.run( + cmd, + capture_output=True, + text=True, + check=True + ) + symbols = [] + for line in result.stdout.splitlines(): + if line.strip(): + parts = line.strip().split(maxsplit=3) + if len(parts) == 4: + address, size, symbol_type, symbol_name = parts + else: + logger.warning(f"Unparsed line: {line}") + continue + symbols.append((address, size, symbol_type, symbol_name)) + logger.info(f"Total symbols with sizes retrieved: {len(symbols)}") + return symbols + except subprocess.CalledProcessError as e: + logger.error(f"Error running nm with -S: {e}") + raise NMError(f"Error running nm with -S: {e}") from e + + def display_symbol_sizes(self, symbols: List[Tuple[str, str, str, str]]) -> None: + """ + Displays symbols along with their sizes using Rich. + + Args: + symbols (List[Tuple[str, str, str, str]]): The list of symbols with sizes. + """ + if not symbols: + logger.info("No symbols with sizes to display.") + console.print( + "[bold yellow]No symbols with sizes to display.[/bold yellow]") + return + + table = Table(title="Symbol Sizes") + + table.add_column("Address", style="cyan") + table.add_column("Size", style="blue") + table.add_column("Type", style="magenta") + table.add_column("Name", style="green") + + for addr, size, sym_type, name in symbols: + table.add_row(addr, size, sym_type, name) + + console.print(table) + logger.info(f"Displayed {len(symbols)} symbols with sizes.") + + def search_symbols(self, pattern: str) -> List[Tuple[str, str, str]]: + """ + Searches for symbols matching a regular expression pattern. + + Args: + pattern (str): The regular expression pattern to search for. + + Returns: + List[Tuple[str, str, str]]: A list of matching symbols. + """ + logger.debug(f"Searching symbols with pattern: {pattern}") + symbols = self.get_symbols() + regex = re.compile(pattern) + matching_symbols = [s for s in symbols if regex.search(s[2])] + logger.info(f"Found {len(matching_symbols)} symbols matching pattern.") + return matching_symbols + + +def main(): + """ + Main function to parse command-line arguments and execute NM tool actions. + Supports filtering, searching, counting, and exporting symbols. + """ + parser = argparse.ArgumentParser( + description='NM tool wrapper for analyzing symbols in binaries.' + ) + parser.add_argument('binary', type=str, help='Path to the binary file.') + parser.add_argument('-f', '--filter', type=str, + help='Filter symbols by type (e.g., T, D, B).') + parser.add_argument('-s', '--search', type=str, + help='Search for a specific symbol by name.') + parser.add_argument('-a', '--address', type=str, + help='Find symbol by address.') + parser.add_argument('-d', '--detailed', action='store_true', + help='Display detailed output for symbols.') + parser.add_argument('-c', '--count', action='store_true', + help='Count symbols by type.') + parser.add_argument('-e', '--export', type=str, + help='Export symbols to a file (supports txt, csv, json, xml).') + parser.add_argument('-v', '--verbose', action='store_true', + help='Increase output verbosity.') + parser.add_argument('--demangle', action='store_true', + help='Demangle symbol names.') + parser.add_argument('--extern', action='store_true', + help='Display only external symbols.') + parser.add_argument('--size', action='store_true', + help='Display symbols with sizes.') + parser.add_argument('--pattern', type=str, + help='Search symbols matching a regex pattern.') + + args = parser.parse_args() + + # Adjust loguru logging level based on verbosity + if args.verbose: + logger.remove() + logger.add(sys.stderr, level="DEBUG", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}") + + try: + nm_tool = NM(args.binary) + except NMError as e: + logger.error(e) + sys.exit(1) + + try: + actions_performed = False + + if args.size: + actions_performed = True + logger.info("Displaying symbols with sizes.") + symbols_with_sizes = nm_tool.get_symbol_sizes() + nm_tool.display_symbol_sizes(symbols_with_sizes) + + if args.filter or args.pattern: + actions_performed = True + logger.info( + f"Filtering symbols by type: {args.filter} and pattern: {args.pattern}") + filtered_symbols = nm_tool.filter_symbols( + symbol_type=args.filter, regex=args.pattern) + nm_tool.display_symbols(filtered_symbols, args.detailed) + + if args.search: + actions_performed = True + logger.info(f"Searching for symbol: {args.search}") + found_symbol = nm_tool.find_symbol(args.search) + if found_symbol: + nm_tool.display_symbols([found_symbol], args.detailed) + else: + console.print( + f"[bold red]Symbol '{args.search}' not found.[/bold red]") + + if args.address: + actions_performed = True + logger.info(f"Searching for symbol at address: {args.address}") + found_symbol = nm_tool.find_symbol_by_address(args.address) + if found_symbol: + nm_tool.display_symbols([found_symbol], args.detailed) + else: + console.print( + f"[bold red]No symbol found at address '{args.address}'.[/bold red]") + + if args.count: + actions_performed = True + logger.info("Counting symbols by type.") + counts = nm_tool.count_symbols_by_type() + console.print( + "\n[bold underline]Symbol counts by type:[/bold underline]") + for sym_type, count in counts.items(): + console.print(f"[green]{sym_type}[/green]: {count}") + + if args.export: + actions_performed = True + export_format = args.export.split('.')[-1].lower() + logger.info( + f"Exporting symbols to {args.export} in {export_format.upper()} format.") + nm_tool.export_symbols(args.export, export_format) + console.print( + f"[bold green]Symbols exported to {args.export} in {export_format.upper()} format.[/bold green]") + + # Default behavior: display all symbols if no specific action is taken + if not actions_performed: + logger.info("Displaying all symbols.") + console.print( + f"\n[bold underline]All symbols in {args.binary}:[/bold underline]") + nm_tool.display_symbols( + nm_tool.get_symbols(demangle=args.demangle, + extern_only=args.extern), + args.detailed + ) + + except NMError as e: + logger.error(e) + sys.exit(1) + except subprocess.CalledProcessError as e: + logger.exception(f"A subprocess error occurred: {e}") + sys.exit(1) + except Exception as e: + logger.exception(f"An unexpected error occurred: {e}") + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pytools/tools/output.py b/modules/lithium.pytools/tools/output.py new file mode 100644 index 00000000..7eaee1e1 --- /dev/null +++ b/modules/lithium.pytools/tools/output.py @@ -0,0 +1,376 @@ +import argparse +import json +import yaml +import toml +import xml.etree.ElementTree as ET +import csv +import configparser +from loguru import logger +from rich.console import Console +from rich.syntax import Syntax +from rich.table import Table +from rich.prompt import Prompt +from pathlib import Path +from typing import Optional, Union +import sys + +# Initialize Rich Console +console = Console() + +# Configure Loguru Logger +logger.add("ra.log", format="{time} {level} {message}", + level="DEBUG", rotation="10 MB") + + +def pretty_print_json(data: str, indent: Optional[int] = 4) -> None: + """ + Format and print JSON data. + + Example: + >>> pretty_print_json('{"key": "value"}') + """ + try: + parsed_data = json.loads(data) + pretty_json = json.dumps( + parsed_data, indent=indent, ensure_ascii=False) + syntax = Syntax(pretty_json, "json", + theme="monokai", line_numbers=True) + console.print(syntax) + logger.debug("Successfully pretty-printed JSON data.") + except json.JSONDecodeError as e: + console.print(f"[red]JSON Decode Error: {e}[/red]") + logger.error(f"JSON Decode Error: {e}") + + +def pretty_print_yaml(data: str) -> None: + """ + Format and print YAML data. + + Example: + >>> pretty_print_yaml('key: value') + """ + try: + parsed_data = yaml.safe_load(data) + pretty_yaml = yaml.dump( + parsed_data, sort_keys=False, allow_unicode=True) + syntax = Syntax(pretty_yaml, "yaml", + theme="monokai", line_numbers=True) + console.print(syntax) + logger.debug("Successfully pretty-printed YAML data.") + except yaml.YAMLError as e: + console.print(f"[red]YAML Parse Error: {e}[/red]") + logger.error(f"YAML Parse Error: {e}") + + +def pretty_print_toml(data: str) -> None: + """ + Format and print TOML data. + + Example: + >>> pretty_print_toml('key = "value"') + """ + try: + parsed_data = toml.loads(data) + pretty_toml = toml.dumps(parsed_data) + syntax = Syntax(pretty_toml, "toml", + theme="monokai", line_numbers=True) + console.print(syntax) + logger.debug("Successfully pretty-printed TOML data.") + except toml.TomlDecodeError as e: + console.print(f"[red]TOML Decode Error: {e}[/red]") + logger.error(f"TOML Decode Error: {e}") + + +def pretty_print_xml(data: str) -> None: + """ + Format and print XML data. + + Example: + >>> pretty_print_xml('value') + """ + try: + parsed_data = ET.fromstring(data) + pretty_xml = ET.tostring(parsed_data, encoding='unicode', method='xml') + syntax = Syntax(pretty_xml, "xml", theme="monokai", line_numbers=True) + console.print(syntax) + logger.debug("Successfully pretty-printed XML data.") + except ET.ParseError as e: + console.print(f"[red]XML Parse Error: {e}[/red]") + logger.error(f"XML Parse Error: {e}") + + +def pretty_print_csv(data: str) -> None: + """ + Format and print CSV data. + + Example: + >>> pretty_print_csv('key,value\\nfoo,bar') + """ + try: + reader = csv.reader(data.splitlines()) + rows = list(reader) + if rows: + table = Table(show_header=True, header_style="bold cyan") + headers = rows[0] + for header in headers: + table.add_column(header) + for row in rows[1:]: + table.add_row(*row) + console.print(table) + logger.debug("Successfully pretty-printed CSV data.") + else: + console.print("[yellow]CSV file is empty.[/yellow]") + logger.warning("CSV file is empty.") + except Exception as e: + console.print(f"[red]CSV Parse Error: {e}[/red]") + logger.error(f"CSV Parse Error: {e}") + + +def pretty_print_ini(data: str) -> None: + """ + Format and print INI data. + + Example: + >>> pretty_print_ini('[section]\\nkey=value') + """ + try: + config = configparser.ConfigParser() + config.read_string(data) + table = Table(show_header=True, header_style="bold magenta") + table.add_column("Section", style="dim") + table.add_column("Key") + table.add_column("Value") + for section in config.sections(): + for key, value in config.items(section): + table.add_row(section, key, value) + console.print(table) + logger.debug("Successfully pretty-printed INI data.") + except configparser.Error as e: + console.print(f"[red]INI Parse Error: {e}[/red]") + logger.error(f"INI Parse Error: {e}") + + +def validate_file(file_path: Union[Path, str], file_format: str) -> bool: + """ + Validate the syntax of the file without printing. + + Example: + >>> validate_file(Path('example.json'), 'json') + """ + try: + content = file_path.read_text( + encoding='utf-8') if isinstance(file_path, Path) else file_path + if file_format == "json": + json.loads(content) + elif file_format == "yaml": + yaml.safe_load(content) + elif file_format == "toml": + toml.loads(content) + elif file_format == "xml": + ET.fromstring(content) + elif file_format == "csv": + csv.reader(content.splitlines()) + elif file_format == "ini": + config = configparser.ConfigParser() + config.read_string(content) + else: + console.print( + f"[red]Unsupported file format for validation: {file_format}[/red]") + logger.error( + f"Unsupported file format for validation: {file_format}") + return False + console.print(f"[green]{file_format.upper()} file is valid.[/green]") + logger.info(f"{file_format.upper()} file is valid.") + return True + except Exception as e: + console.print( + f"[red]{file_format.upper()} Validation Error: {e}[/red]") + logger.error(f"{file_format.upper()} Validation Error: {e}") + return False + + +def display_file(file_path: Path, file_format: str, output: Optional[Path] = None, indent: Optional[int] = 4, validate: bool = False) -> None: + """ + Display or validate file content based on format. + + Example: + >>> display_file(Path('example.json'), 'json') + """ + try: + if isinstance(file_path, Path): + content = file_path.read_text(encoding='utf-8') + else: + content = file_path # For stdin input + + if validate: + is_valid = validate_file(file_path, file_format) + if not is_valid: + return + + if file_format == "json": + pretty_print_json(content, indent) + elif file_format == "yaml": + pretty_print_yaml(content) + elif file_format == "toml": + pretty_print_toml(content) + elif file_format == "xml": + pretty_print_xml(content) + elif file_format == "csv": + pretty_print_csv(content) + elif file_format == "ini": + pretty_print_ini(content) + else: + console.print("[red]Unsupported file format![/red]") + logger.error("Unsupported file format!") + return + + if output: + if output.exists() and not Prompt.ask(f"Output file {output} exists. Overwrite?", choices=["y", "n"]) == "y": + console.print(f"[yellow]Skipped writing to {output}.[/yellow]") + logger.warning(f"Skipped writing to {output}.") + return + output.write_text(content, encoding='utf-8') + console.print( + f"[green]Content has been written to {output}[/green]") + logger.info(f"Content has been written to {output}") + except FileNotFoundError: + console.print(f"[red]File not found: {file_path}[/red]") + logger.error(f"File not found: {file_path}") + except Exception as e: + console.print(f"[red]An error occurred: {e}[/red]") + logger.error(f"An error occurred: {e}") + + +def read_stdin() -> str: + """ + Read data from standard input. + + Example: + >>> echo '{"key": "value"}' | ra.py - + """ + return sys.stdin.read() + + +def main() -> None: + """ + Main function to parse arguments and display or validate file content. + """ + parser = argparse.ArgumentParser( + description="A CLI tool to beautifully display or validate JSON, YAML, TOML, XML, CSV, and INI file contents", + formatter_class=argparse.RawTextHelpFormatter, + epilog=""" +Examples: + Pretty print a JSON file: + ra.py example.json + + Validate a YAML file: + ra.py example.yaml --validate + + Pretty print multiple files with overwrite: + ra.py example1.json example2.yaml --overwrite + + Read from standard input: + cat example.toml | ra.py - --format toml +""" + ) + parser.add_argument( + "files", + nargs="+", + type=Union[Path, str], + help="Path to the file(s) or '-' to read from standard input. " + "e.g., example.json, example.yaml, example.toml, example.xml, example.csv, example.ini", + ) + parser.add_argument( + "--format", + choices=["json", "yaml", "toml", "xml", "csv", "ini"], + help="File format. Specify if the file extension does not match the format.", + ) + parser.add_argument( + "--output", + type=Path, + help="Write the output content to the specified file(s). " + "If multiple files are provided, use a pattern like 'output{}.txt' where {} will be replaced by the file index.", + ) + parser.add_argument( + "--overwrite", + action="store_true", + help="Overwrite the output file(s) if they exist.", + ) + parser.add_argument( + "--theme", + type=str, + default="monokai", + help="Code highlighting theme.", + ) + parser.add_argument( + "--indent", + type=int, + default=4, + help="Indentation level for pretty-printing.", + ) + parser.add_argument( + "--validate", + action="store_true", + help="Validate the file's syntax without printing.", + ) + parser.add_argument( + "--verbose", + action="store_true", + help="Enable verbose logging.", + ) + + args = parser.parse_args() + + # Set logging level based on verbosity + if args.verbose: + logger.remove() + logger.add( + "ra.log", format="{time} {level} {message}", level="DEBUG", rotation="10 MB") + logger.debug("Verbose mode enabled.") + + for index, file in enumerate(args.files, start=1): + if file == '-': + logger.debug("Reading from standard input.") + data = read_stdin() + file_path = '-' # Indicate stdin + file_format = args.format or Prompt.ask("Specify the format", choices=[ + "json", "yaml", "toml", "xml", "csv", "ini"]) + else: + file_path = Path(file) + suffix_map = { + ".json": "json", + ".yaml": "yaml", + ".yml": "yaml", + ".toml": "toml", + ".xml": "xml", + ".csv": "csv", + ".ini": "ini", + } + file_format = args.format or suffix_map.get(file_path.suffix.lower(), Prompt.ask( + f"Unable to detect format for {file}. Specify the format", choices=["json", "yaml", "toml", "xml", "csv", "ini"])) + + if not file_format: + console.print( + f"[red]Unable to determine file format for {file}.[/red]") + logger.error(f"Unable to determine file format for {file}.") + continue + + output = None + if args.output: + if len(args.files) > 1: + output = Path(args.output.name.format( + index)) if '{}' in args.output.name else args.output.parent / f"{args.output.stem}{index}{args.output.suffix}" + else: + output = args.output + + display_file( + file_path=file_path, + file_format=file_format, + output=output, + indent=args.indent, + validate=args.validate + ) + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pytools/tools/package.py b/modules/lithium.pytools/tools/package.py index 6568258f..5830eac1 100644 --- a/modules/lithium.pytools/tools/package.py +++ b/modules/lithium.pytools/tools/package.py @@ -5,7 +5,8 @@ @brief A command-line utility to manage Python packages. @details This script provides functionality to check, install, upgrade, and uninstall Python packages. - It also allows listing installed packages and generating a requirements.txt file. + It also allows listing installed packages, generating a requirements.txt file, and checking for + dependency updates based on requirements.txt. Usage: python package.py --check @@ -13,26 +14,51 @@ python package.py --upgrade python package.py --uninstall python package.py --list-installed - python package.py --freeze + python package.py --freeze [--output ] + python package.py --check-updates [--requirements ] -@requires - Python 3.x +@requires - Python 3.7+ - `requests` Python library + - `loguru` Python library + - `packaging` Python library -@version 1.2 -@date Date of creation or last modification +@version 2.1 +@date 2024-04-27 """ import subprocess import sys import argparse import requests -from packaging import version +from packaging import version as pkg_version +from pathlib import Path try: import importlib.metadata as importlib_metadata # Python 3.8+ except ImportError: import importlib_metadata # Python 3.7 +from loguru import logger + +# Configure Loguru +logger.remove() +logger.add( + "package_manager.log", + rotation="10 MB", + retention="7 days", + compression="zip", + enqueue=True, + encoding="utf-8", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}", + level="DEBUG", +) +logger.add( + sys.stderr, + level="INFO", + format="{message}", +) +logger.debug("Logging is configured.") + def run_command(command: list) -> str: """ @@ -47,29 +73,21 @@ def run_command(command: list) -> str: Raises: SystemExit: If the command returns a non-zero exit code. """ - result = subprocess.run(command, stdout=subprocess.PIPE, - stderr=subprocess.PIPE, text=True, check=False) - if result.returncode != 0: - print(f"Error: {result.stderr}") - sys.exit(result.returncode) - return result.stdout.strip() - - -def ensure_package_installed(package_name: str): - """ - Ensure that a Python package is installed via pip. - - Args: - package_name (str): The name of the package to check and install if necessary. - - Returns: - None - """ try: - __import__(package_name) - except ImportError: - print(f"'{package_name}' is not installed. Installing...") - run_command([sys.executable, "-m", "pip", "install", package_name]) + logger.debug(f"Running command: {' '.join(command)}") + result = subprocess.run( + command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=True + ) + logger.debug(f"Command output: {result.stdout.strip()}") + return result.stdout.strip() + except subprocess.CalledProcessError as e: + logger.error( + f"Command '{' '.join(command)}' failed with error: {e.stderr.strip()}") + sys.exit(e.returncode) + except Exception as e: + logger.exception( + f"Unexpected error running command '{' '.join(command)}': {e}") + sys.exit(1) def is_package_installed(package_name: str) -> bool: @@ -83,9 +101,16 @@ def is_package_installed(package_name: str) -> bool: bool: True if the package is installed, False otherwise. """ try: - importlib_metadata.version(package_name) + installed_version = importlib_metadata.version(package_name) + logger.info( + f"Package '{package_name}' is installed (version {installed_version}).") return True except importlib_metadata.PackageNotFoundError: + logger.info(f"Package '{package_name}' is not installed.") + return False + except Exception as e: + logger.exception( + f"Error checking if package '{package_name}' is installed: {e}") return False @@ -103,6 +128,10 @@ def get_installed_version(package_name: str) -> str: return importlib_metadata.version(package_name) except importlib_metadata.PackageNotFoundError: return None + except Exception as e: + logger.exception( + f"Error retrieving version for package '{package_name}': {e}") + return None def list_available_versions(package_name: str) -> list: @@ -114,19 +143,31 @@ def list_available_versions(package_name: str) -> list: Returns: list: A sorted list of available versions (from latest to oldest). - - Raises: - requests.RequestException: If there's an error while fetching data from PyPI. """ try: - response = requests.get(f"https://pypi.org/pypi/{package_name}/json", timeout=5) + logger.debug( + f"Fetching available versions for package '{package_name}' from PyPI.") + response = requests.get( + f"https://pypi.org/pypi/{package_name}/json", timeout=10) response.raise_for_status() data = response.json() - versions = sorted(data['releases'].keys(), - key=version.parse, reverse=True) + versions = sorted( + data['releases'].keys(), + key=lambda v: pkg_version.parse(v), + reverse=True + ) + logger.debug(f"Available versions for '{package_name}': {versions}") return versions except requests.RequestException as e: - print(f"Error fetching versions: {e}") + logger.error( + f"Error fetching versions for package '{package_name}': {e}") + return [] + except ValueError as e: + logger.error(f"Invalid version data for package '{package_name}': {e}") + return [] + except Exception as e: + logger.exception( + f"Unexpected error listing versions for package '{package_name}': {e}") return [] @@ -141,12 +182,25 @@ def install_package(package_name: str, package_version: str = None): Returns: None """ - if package_version: - package = f"{package_name}=={package_version}" - else: - package = package_name - command = [sys.executable, "-m", "pip", "install", package] - run_command(command) + try: + if package_version: + available_versions = list_available_versions(package_name) + if package_version not in available_versions: + logger.error( + f"Version '{package_version}' of package '{package_name}' is not available.") + print( + f"Version '{package_version}' of package '{package_name}' is not available.") + sys.exit(1) + package = f"{package_name}=={package_version}" + else: + package = package_name + + logger.info(f"Installing package '{package}'.") + run_command([sys.executable, "-m", "pip", "install", package]) + logger.success(f"Package '{package}' installed successfully.") + except Exception as e: + logger.exception(f"Failed to install package '{package_name}': {e}") + sys.exit(1) def upgrade_package(package_name: str): @@ -159,9 +213,22 @@ def upgrade_package(package_name: str): Returns: None """ - command = [sys.executable, "-m", "pip", - "install", "--upgrade", package_name] - run_command(command) + try: + if not is_package_installed(package_name): + logger.error( + f"Package '{package_name}' is not installed. Cannot upgrade.") + print( + f"Package '{package_name}' is not installed. Cannot upgrade.") + sys.exit(1) + + logger.info( + f"Upgrading package '{package_name}' to the latest version.") + run_command([sys.executable, "-m", "pip", + "install", "--upgrade", package_name]) + logger.success(f"Package '{package_name}' upgraded successfully.") + except Exception as e: + logger.exception(f"Failed to upgrade package '{package_name}': {e}") + sys.exit(1) def uninstall_package(package_name: str): @@ -174,8 +241,29 @@ def uninstall_package(package_name: str): Returns: None """ - command = [sys.executable, "-m", "pip", "uninstall", "-y", package_name] - run_command(command) + try: + if not is_package_installed(package_name): + logger.error( + f"Package '{package_name}' is not installed. Cannot uninstall.") + print( + f"Package '{package_name}' is not installed. Cannot uninstall.") + sys.exit(1) + + confirmation = input( + f"Are you sure you want to uninstall '{package_name}'? [y/N]: ") + if confirmation.lower() != 'y': + logger.info( + f"Uninstallation of package '{package_name}' canceled by user.") + print("Uninstallation canceled.") + return + + logger.info(f"Uninstalling package '{package_name}'.") + run_command([sys.executable, "-m", "pip", + "uninstall", "-y", package_name]) + logger.success(f"Package '{package_name}' uninstalled successfully.") + except Exception as e: + logger.exception(f"Failed to uninstall package '{package_name}': {e}") + sys.exit(1) def list_installed_packages(): @@ -185,9 +273,14 @@ def list_installed_packages(): Returns: None """ - command = [sys.executable, "-m", "pip", "list"] - output = run_command(command) - print(output) + try: + logger.info("Listing all installed Python packages.") + output = run_command([sys.executable, "-m", "pip", "list"]) + print(output) + logger.debug("Displayed installed packages.") + except Exception as e: + logger.exception(f"Failed to list installed packages: {e}") + sys.exit(1) def freeze_installed_packages(output_file: str = "requirements.txt"): @@ -200,20 +293,100 @@ def freeze_installed_packages(output_file: str = "requirements.txt"): Returns: None """ - command = [sys.executable, "-m", "pip", "freeze"] - output = run_command(command) - with open(output_file, "w", encoding="utf-8") as f: - f.write(output) - print(f"Requirements written to {output_file}") + try: + logger.info(f"Generating requirements file '{output_file}'.") + output = run_command([sys.executable, "-m", "pip", "freeze"]) + with open(output_file, "w", encoding="utf-8") as f: + f.write(output) + logger.success(f"Requirements written to '{output_file}'.") + print(f"Requirements written to '{output_file}'.") + except Exception as e: + logger.exception( + f"Failed to generate requirements file '{output_file}': {e}") + sys.exit(1) + + +def check_updates_from_requirements(requirements_file: str = "requirements.txt"): + """ + Check for updates for packages listed in the requirements.txt file. + + Args: + requirements_file (str): Path to the requirements.txt file. Defaults to "requirements.txt". + + Returns: + None + """ + try: + req_path = Path(requirements_file) + if not req_path.exists(): + logger.error( + f"Requirements file '{requirements_file}' does not exist.") + print(f"Requirements file '{requirements_file}' does not exist.") + sys.exit(1) + + logger.info(f"Checking for updates based on '{requirements_file}'.") + with req_path.open("r", encoding="utf-8") as f: + requirements = f.readlines() + + outdated_packages = [] + + for req in requirements: + parsed = req.strip().split("==") + if len(parsed) != 2: + logger.warning( + f"Skipping invalid requirement line: '{req.strip()}'") + continue + pkg, installed_ver = parsed + logger.debug( + f"Checking package '{pkg}' (installed version: {installed_ver})") + + try: + response = requests.get( + f"https://pypi.org/pypi/{pkg}/json", timeout=10) + response.raise_for_status() + data = response.json() + latest_version = sorted( + data['releases'].keys(), + key=lambda v: pkg_version.parse(v), + reverse=True + )[0] + logger.debug( + f"Latest version of '{pkg}' is '{latest_version}'") + + if pkg_version.parse(latest_version) > pkg_version.parse(installed_ver): + outdated_packages.append( + (pkg, installed_ver, latest_version)) + logger.info( + f"Package '{pkg}' is outdated: {installed_ver} -> {latest_version}") + + except requests.RequestException as e: + logger.error( + f"Error fetching information for package '{pkg}': {e}") + except (IndexError, KeyError) as e: + logger.error( + f"Error parsing version data for package '{pkg}': {e}") + except Exception as e: + logger.exception( + f"Unexpected error checking package '{pkg}': {e}") + + if outdated_packages: + print("Outdated packages found:") + for pkg, current, latest in outdated_packages: + print(f"- {pkg}: {current} -> {latest}") + logger.info(f"Total outdated packages: {len(outdated_packages)}") + else: + print("All packages are up to date.") + logger.info("All packages are up to date.") + + except Exception as e: + logger.exception(f"Failed to check updates from requirements.txt: {e}") + sys.exit(1) def main(): """ Main function to handle user interactions and package management logic. - Prompts the user for a package name, checks if it's installed, and allows the user - to install, upgrade, uninstall, or query package versions. - Returns: None """ @@ -233,15 +406,21 @@ def main(): help="List all installed packages") parser.add_argument("--freeze", metavar="FILE", nargs="?", const="requirements.txt", help="Generate a requirements.txt file") + parser.add_argument("--check-updates", metavar="FILE", nargs="?", + const="requirements.txt", help="Check for updates based on a requirements.txt file") args = parser.parse_args() if args.check: if is_package_installed(args.check): - print(f"Package '{args.check}' is installed, version: { - get_installed_version(args.check)}") + installed_version = get_installed_version(args.check) + print( + f"Package '{args.check}' is installed, version: {installed_version}") + logger.info( + f"Checked package '{args.check}': Installed version {installed_version}.") else: print(f"Package '{args.check}' is not installed.") + logger.info(f"Checked package '{args.check}': Not installed.") if args.install: install_package(args.install, args.version) @@ -256,8 +435,24 @@ def main(): list_installed_packages() if args.freeze: - freeze_installed_packages(args.freeze) + output = args.freeze if isinstance( + args.freeze, str) else "requirements.txt" + freeze_installed_packages(output) + + if args.check_updates: + output = args.check_updates if isinstance( + args.check_updates, str) else "requirements.txt" + check_updates_from_requirements(output) if __name__ == "__main__": - main() + try: + main() + except KeyboardInterrupt: + logger.warning("Operation interrupted by user.") + print("\nOperation interrupted by user.") + sys.exit(0) + except Exception as e: + logger.exception(f"An unexpected error occurred: {e}") + print(f"An unexpected error occurred: {e}") + sys.exit(1) diff --git a/modules/lithium.pytools/tools/pacman.py b/modules/lithium.pytools/tools/pacman.py index 0b1bd201..852c84d3 100644 --- a/modules/lithium.pytools/tools/pacman.py +++ b/modules/lithium.pytools/tools/pacman.py @@ -1,8 +1,48 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +@file pacman.py +@brief A command-line utility to manage Pacman packages. + +@details This script provides functionality to update the package database, upgrade the system, + install and remove packages, search for packages, list installed packages, and more. + It enhances internal operations with robust exception handling and detailed logging using Loguru. + + Usage: + python pacman.py --update-db + python pacman.py --upgrade + python pacman.py --install + python pacman.py --remove [--remove-deps] + python pacman.py --search + python pacman.py --list-installed + python pacman.py --package-info + python pacman.py --list-outdated + python pacman.py --clear-cache + python pacman.py --list-files + python pacman.py --show-dependencies + python pacman.py --find-file-owner + python pacman.py --fast-mirrors + python pacman.py --downgrade + python pacman.py --list-cache + python pacman.py --multithread + python pacman.py --list-group + python pacman.py --optional-deps + python pacman.py --enable-color + python pacman.py --disable-color + +@requires - Python 3.7+ + - `loguru` Python library + +@version 2.2 +@date 2024-04-27 +""" + import subprocess import platform import os import argparse from loguru import logger +import sys class PacmanManager: @@ -25,120 +65,194 @@ def find_pacman_command(self): ] for path in possible_paths: if os.path.exists(path): + logger.debug(f"Found pacman at: {path}") return path + logger.error( + "MSYS2 pacman not found. Please ensure MSYS2 is installed.") raise FileNotFoundError( "MSYS2 pacman not found. Please ensure MSYS2 is installed.") else: + logger.debug("Using system pacman command.") return 'pacman' def run_command(self, command): """ Executes a given command using subprocess and handles both success and failure cases. If the platform is Windows, prepend the pacman command with the appropriate MSYS2 path. + + Args: + command (list): The command and its arguments to execute. + + Returns: + str: The standard output from the command execution. """ if self.is_windows: - command.insert(0, self.pacman_command) + command = [self.pacman_command] + command try: - # Run the command and capture output + logger.debug(f"Executing command: {' '.join(command)}") result = subprocess.run( - command, check=True, text=True, capture_output=True) - logger.info(f"Command {' '.join(command)} executed successfully.") - return result.stdout + command, check=True, text=True, capture_output=True + ) + logger.info( + f"Command '{' '.join(command)}' executed successfully.") + logger.debug(f"Command Output: {result.stdout.strip()}") + return result.stdout.strip() except subprocess.CalledProcessError as e: - # Log any errors during command execution - logger.error(f"Error executing command: {e.stderr}") - return f"Error: {e.stderr}" + logger.error( + f"Error executing command '{' '.join(command)}': {e.stderr.strip()}") + return f"Error: {e.stderr.strip()}" + except FileNotFoundError: + logger.error(f"Pacman command not found: {' '.join(command)}") + return "Error: Pacman command not found." + except Exception as e: + logger.exception( + f"Unexpected error executing command '{' '.join(command)}': {e}") + return f"Error: {e}" def update_package_database(self): """Update the package database to get the latest package information.""" - return self.run_command(['sudo', 'pacman', '-Sy']) + logger.info("Updating package database...") + return self.run_command(['-Sy']) def upgrade_system(self): """Upgrade the system by updating all installed packages to the latest versions.""" - return self.run_command(['sudo', 'pacman', '-Syu']) + logger.info("Upgrading the system...") + return self.run_command(['-Syu']) def install_package(self, package_name): """Install a specific package.""" - return self.run_command(['sudo', 'pacman', '-S', package_name]) + logger.info(f"Installing package: {package_name}") + return self.run_command(['-S', package_name]) def remove_package(self, package_name, remove_deps=False): """ Remove a specific package. Optionally remove its dependencies if 'remove_deps' is set to True. + + Args: + package_name (str): The name of the package to remove. + remove_deps (bool): Whether to remove dependencies as well. """ - command = ['sudo', 'pacman', '-R', package_name] + command = ['-R', package_name] if remove_deps: - command.append('--recursive') # Add flag to remove dependencies + command.append('--recursive') + logger.info( + f"Removing package '{package_name}' along with its dependencies.") + else: + logger.info(f"Removing package '{package_name}'.") return self.run_command(command) def search_package(self, query): """Search for a package by name or description.""" - return self.run_command(['pacman', '-Ss', query]) + logger.info(f"Searching for package with query: {query}") + return self.run_command(['-Ss', query]) def list_installed_packages(self): """List all installed packages on the system.""" - return self.run_command(['pacman', '-Q']) + logger.info("Listing all installed packages.") + return self.run_command(['-Q']) def show_package_info(self, package_name): """Display detailed information about a specific package.""" - return self.run_command(['pacman', '-Qi', package_name]) + logger.info(f"Showing information for package: {package_name}") + return self.run_command(['-Qi', package_name]) def list_outdated_packages(self): """List all packages that are outdated and need to be upgraded.""" - return self.run_command(['pacman', '-Qu']) + logger.info("Listing outdated packages.") + return self.run_command(['-Qu']) def clear_cache(self): """Clear the package cache to free up space.""" - return self.run_command(['sudo', 'pacman', '-Scc']) + logger.info("Clearing package cache.") + return self.run_command(['-Scc']) def list_package_files(self, package_name): """List all the files installed by a specific package.""" - return self.run_command(['pacman', '-Ql', package_name]) + logger.info(f"Listing files for package: {package_name}") + return self.run_command(['-Ql', package_name]) def show_package_dependencies(self, package_name): """Show the dependencies of a specific package.""" - return self.run_command(['pacman', '-Qi', package_name]) + logger.info(f"Showing dependencies for package: {package_name}") + return self.run_command(['-Qi', package_name]) def find_file_owner(self, file_path): """Find which package owns a specific file.""" - return self.run_command(['pacman', '-Qo', file_path]) + logger.info(f"Finding owner of file: {file_path}") + return self.run_command(['-Qo', file_path]) def show_fastest_mirrors(self): """Display and select the fastest mirrors for package downloads.""" - return self.run_command(['sudo', 'pacman-mirrors', '--fasttrack']) + logger.info("Updating to the fastest mirrors.") + return self.run_command(['pacman-mirrors', '--fasttrack']) def downgrade_package(self, package_name, version): """ Downgrade a package to a specific version. This requires the version to be available in the package cache or repositories. + + Args: + package_name (str): The name of the package to downgrade. + version (str): The version to downgrade to. """ - return self.run_command(['sudo', 'pacman', '-U', f'/var/cache/pacman/pkg/{package_name}-{version}.pkg.tar.zst']) + pkg_path = f'/var/cache/pacman/pkg/{package_name}-{version}.pkg.tar.zst' + if not os.path.exists(pkg_path): + logger.error(f"Package file for downgrade not found: {pkg_path}") + return f"Error: Package file for downgrade not found: {pkg_path}" + logger.info( + f"Downgrading package '{package_name}' to version '{version}'.") + return self.run_command(['-U', pkg_path]) def list_cache_packages(self): """List all packages currently stored in the local package cache.""" - return self.run_command(['ls', '/var/cache/pacman/pkg']) + logger.info("Listing all packages in the local cache.") + return self.run_command(['-Ql', '/var/cache/pacman/pkg']) def enable_multithreaded_downloads(self): """Enable multithreaded downloads to speed up package installation.""" - return self.run_command(['sudo', 'sed', '-i', 's/#ParallelDownloads = 5/ParallelDownloads = 5/g', '/etc/pacman.conf']) + logger.info("Enabling multithreaded downloads in pacman.conf.") + sed_command = [ + 'sed', '-i', + 's/#ParallelDownloads = 5/ParallelDownloads = 5/g', + '/etc/pacman.conf' + ] + return self.run_command(sed_command) def list_package_group(self, group_name): """List all packages in a specific package group.""" - return self.run_command(['pacman', '-Sg', group_name]) + logger.info(f"Listing all packages in group: {group_name}") + return self.run_command(['-Sg', group_name]) def list_optional_dependencies(self, package_name): """List optional dependencies of a package.""" - return self.run_command(['pacman', '-Qi', package_name]) + logger.info( + f"Listing optional dependencies for package: {package_name}") + return self.run_command(['-Qi', package_name]) def enable_color_output(self, enable=True): """ Enable or disable color output in pacman command-line results. This improves readability of pacman commands. + + Args: + enable (bool): True to enable color, False to disable. """ if enable: - return self.run_command(['sudo', 'sed', '-i', 's/#Color/Color/g', '/etc/pacman.conf']) + command = [ + 'sed', '-i', + 's/#Color/Color/g', + '/etc/pacman.conf' + ] + logger.info("Enabling color output in pacman.") else: - return self.run_command(['sudo', 'sed', '-i', 's/Color/#Color/g', '/etc/pacman.conf']) + command = [ + 'sed', '-i', + 's/Color/#Color/g', + '/etc/pacman.conf' + ] + logger.info("Disabling color output in pacman.") + return self.run_command(command) def main(): @@ -165,8 +279,6 @@ def main(): metavar='PACKAGE', help='Show package info') parser.add_argument('--list-outdated', action='store_true', help='List outdated packages') - - # New features parser.add_argument('--clear-cache', action='store_true', help='Clear package cache') parser.add_argument('--list-files', type=str, metavar='PACKAGE', @@ -196,57 +308,120 @@ def main(): args = parser.parse_args() # Instantiate the PacmanManager class - pacman = PacmanManager() + try: + pacman = PacmanManager() + except FileNotFoundError as e: + logger.error(e) + print(f"Error: {e}") + sys.exit(1) + except Exception as e: + logger.exception(f"Failed to initialize PacmanManager: {e}") + print(f"An unexpected error occurred: {e}") + sys.exit(1) # Handle command-line arguments and execute the corresponding methods - if args.update_db: - print(pacman.update_package_database()) - elif args.upgrade: - print(pacman.upgrade_system()) - elif args.install: - print(pacman.install_package(args.install)) - elif args.remove: - print(pacman.remove_package(args.remove, remove_deps=args.remove_deps)) - elif args.search: - print(pacman.search_package(args.search)) - elif args.list_installed: - print(pacman.list_installed_packages()) - elif args.package_info: - print(pacman.show_package_info(args.package_info)) - elif args.list_outdated: - print(pacman.list_outdated_packages()) - - # Handle newly added features - elif args.clear_cache: - print(pacman.clear_cache()) - elif args.list_files: - print(pacman.list_package_files(args.list_files)) - elif args.show_dependencies: - print(pacman.show_package_dependencies(args.show_dependencies)) - elif args.find_file_owner: - print(pacman.find_file_owner(args.find_file_owner)) - elif args.fast_mirrors: - print(pacman.show_fastest_mirrors()) - elif args.downgrade: - package, version = args.downgrade - print(pacman.downgrade_package(package, version)) - elif args.list_cache: - print(pacman.list_cache_packages()) - elif args.multithread: - print(pacman.enable_multithreaded_downloads()) - elif args.list_group: - print(pacman.list_package_group(args.list_group)) - elif args.optional_deps: - print(pacman.list_optional_dependencies(args.optional_deps)) - elif args.enable_color: - print(pacman.enable_color_output(enable=True)) - elif args.disable_color: - print(pacman.enable_color_output(enable=False)) - else: - # If no arguments are provided, show the help message - parser.print_help() - - -# Run the command-line tool + try: + if args.update_db: + output = pacman.update_package_database() + print(output) + + if args.upgrade: + output = pacman.upgrade_system() + print(output) + + if args.install: + output = pacman.install_package(args.install) + print(output) + + if args.remove: + output = pacman.remove_package( + args.remove, remove_deps=args.remove_deps) + print(output) + + if args.search: + output = pacman.search_package(args.search) + print(output) + + if args.list_installed: + output = pacman.list_installed_packages() + print(output) + + if args.package_info: + output = pacman.show_package_info(args.package_info) + print(output) + + if args.list_outdated: + output = pacman.list_outdated_packages() + print(output) + + # Handle newly added features + if args.clear_cache: + output = pacman.clear_cache() + print(output) + + if args.list_files: + output = pacman.list_package_files(args.list_files) + print(output) + + if args.show_dependencies: + output = pacman.show_package_dependencies(args.show_dependencies) + print(output) + + if args.find_file_owner: + output = pacman.find_file_owner(args.find_file_owner) + print(output) + + if args.fast_mirrors: + output = pacman.show_fastest_mirrors() + print(output) + + if args.downgrade: + package, version = args.downgrade + output = pacman.downgrade_package(package, version) + print(output) + + if args.list_cache: + output = pacman.list_cache_packages() + print(output) + + if args.multithread: + output = pacman.enable_multithreaded_downloads() + print(output) + + if args.list_group: + output = pacman.list_package_group(args.list_group) + print(output) + + if args.optional_deps: + output = pacman.list_optional_dependencies(args.optional_deps) + print(output) + + if args.enable_color: + output = pacman.enable_color_output(enable=True) + print(output) + + if args.disable_color: + output = pacman.enable_color_output(enable=False) + print(output) + + if not any(vars(args).values()): + # If no arguments are provided, show the help message + parser.print_help() + + except Exception as e: + logger.exception(f"An error occurred during execution: {e}") + print(f"An error occurred: {e}") + sys.exit(1) + + if __name__ == "__main__": - main() + try: + main() + except KeyboardInterrupt: + logger.warning("Operation interrupted by user.") + print("\nOperation interrupted by user.") + sys.exit(0) + except Exception as e: + logger.exception(f"An unexpected error occurred: {e}") + print(f"An unexpected error occurred: {e}") + sys.exit(1) diff --git a/modules/lithium.pytools/tools/port_scanner.py b/modules/lithium.pytools/tools/port_scanner.py index 02fe5e52..eeb33490 100644 --- a/modules/lithium.pytools/tools/port_scanner.py +++ b/modules/lithium.pytools/tools/port_scanner.py @@ -1,36 +1,87 @@ -import asyncio -import socket -import concurrent.futures +# python import argparse +import asyncio import json +import socket +import sys from typing import List, Tuple +from loguru import logger +from rich.console import Console +from rich.table import Table + +console = Console() + +""" +Asynchronous Port Scanner tool. +Scans specified ports on given IP addresses using TCP or UDP protocols. +Provides functionalities to scan ports, save results in various formats, and handle exceptions. +""" + +# Configure loguru for logging +logger.remove() # Remove default logger to customize logging settings + +logger.add( + "port_scanner.log", + rotation="10 MB", + retention="7 days", + compression="zip", + enqueue=True, + encoding="utf-8", + format=( + "{time:YYYY-MM-DD HH:mm:ss} | " + "{level} | {message}" + ), +) -async def scan_port(ip: str, port: int, timeout: float, protocol: str = 'tcp', verbose: bool = False) -> Tuple[int, str, str]: +logger.add( + sys.stdout, + level="INFO", + format="{message}", +) + + +class PortScannerError(Exception): + """Custom exception class for Port Scanner errors.""" + pass + + +async def scan_port( + ip: str, + port: int, + timeout: float, + protocol: str = 'tcp', + verbose: bool = False +) -> Tuple[int, str, str]: """ Attempt to connect to a specific IP and port, and detect the service type. Args: - ip (str): The target IP address. - port (int): The target port to scan. - timeout (float): The connection timeout duration. - protocol (str): The protocol to use for scanning ('tcp' or 'udp'). - verbose (bool): Whether to print detailed scan information. + ip (str): The target IP address. + port (int): The target port to scan. + timeout (float): The connection timeout duration. + protocol (str): The protocol to use for scanning ('tcp' or 'udp'). + verbose (bool): Whether to print detailed scan information. Returns: - Tuple[int, str, str]: A tuple containing the port, its status ('open' or 'closed'), and the service name. + Tuple[int, str, str]: A tuple containing the port, its status ('open' or 'closed'), and the service name. """ try: if protocol == 'tcp': - _, writer = await asyncio.wait_for( - asyncio.open_connection(ip, port), timeout=timeout) + reader, writer = await asyncio.wait_for( + asyncio.open_connection(ip, port), + timeout=timeout + ) writer.close() await writer.wait_closed() else: # UDP - # UDP scan is connectionless, we use a datagram socket transport, _ = await asyncio.wait_for( asyncio.get_event_loop().create_datagram_endpoint( - lambda: asyncio.DatagramProtocol(), remote_addr=(ip, port)), timeout=timeout) + lambda: asyncio.DatagramProtocol(), + remote_addr=(ip, port) + ), + timeout=timeout + ) transport.close() # Attempt to get the service name @@ -40,54 +91,90 @@ async def scan_port(ip: str, port: int, timeout: float, protocol: str = 'tcp', v service = 'Unknown' if verbose: - print(f"Port {port} is open (Service: {service})") + logger.info(f"Port {port} is open (Service: {service})") return (port, 'open', service) - except (asyncio.TimeoutError, OSError): + except (asyncio.TimeoutError, ConnectionRefusedError, OSError): if verbose: - print(f"Port {port} is closed") + logger.info(f"Port {port} is closed") return (port, 'closed', '') -async def scan_ports(ip: str, ports: range, timeout: float, protocol: str = 'tcp', verbose: bool = False) -> List[Tuple[int, str, str]]: +async def scan_ports( + ip: str, + ports: List[int], + timeout: float, + protocol: str = 'tcp', + verbose: bool = False +) -> List[Tuple[int, str, str]]: """ - Scan a range of ports on a specified IP address. + Scan a list of ports on a specified IP address. Args: - ip (str): The target IP address. - ports (range): The range of ports to scan. - timeout (float): The connection timeout duration. - protocol (str): The protocol to use for scanning ('tcp' or 'udp'). - verbose (bool): Whether to print detailed scan information. + ip (str): The target IP address. + ports (List[int]): The list of ports to scan. + timeout (float): The connection timeout duration. + protocol (str): The protocol to use for scanning ('tcp' or 'udp'). + verbose (bool): Whether to print detailed scan information. Returns: - List[Tuple[int, str, str]]: A list of tuples containing the port, its status, and the service name. + List[Tuple[int, str, str]]: A list of tuples containing the port, its status, and the service name. """ - tasks = [scan_port(ip, port, timeout, protocol, verbose) for port in ports] - results = await asyncio.gather(*tasks) - return results + tasks = [ + scan_port(ip, port, timeout, protocol, verbose) + for port in ports + ] + results = await asyncio.gather(*tasks, return_exceptions=True) + # Handle exceptions in results + processed_results = [] + for result in results: + if isinstance(result, Exception): + logger.error(f"Error scanning port: {result}") + else: + processed_results.append(result) + return processed_results -def save_results(ip: str, results: List[Tuple[int, str, str]], output_file: str, json_format: bool = False) -> None: + +def save_results( + ip: str, + results: List[Tuple[int, str, str]], + output_file: str, + json_format: bool = False +) -> None: """ Save the scan results to a file or print to console. Args: - ip (str): The target IP address. - results (List[Tuple[int, str, str]]): The list of scan results. - output_file (str): The output file path. - json_format (bool): Whether to save the results in JSON format. + ip (str): The target IP address. + results (List[Tuple[int, str, str]]): The list of scan results. + output_file (str): The output file path. + json_format (bool): Whether to save the results in JSON format. """ - if json_format: - with open(output_file, "w", encoding="utf-8") as f: - json.dump({ip: results}, f, indent=4) - print(f"Results have been saved to {output_file} in JSON format") - else: - with open(output_file, "w", encoding="utf-8") as f: - for port, status, service in results: - f.write(f"{ip}:{port} {status} {service}\n") - print(f"Results have been saved to {output_file}") + try: + if json_format: + data = { + ip: [ + {"port": port, "status": status, "service": service} + for port, status, service in results + ] + } + with open(output_file, "w", encoding="utf-8") as f: + json.dump(data, f, indent=4) + logger.info( + f"Results have been saved to {output_file} in JSON format" + ) + else: + with open(output_file, "w", encoding="utf-8") as f: + for port, status, service in results: + f.write(f"{ip}:{port} {status} {service}\n") + logger.info(f"Results have been saved to {output_file}") + except IOError as e: + logger.error(f"Failed to save results to {output_file}: {e}") + raise PortScannerError( + f"Failed to save results to {output_file}: {e}" + ) from e def parse_arguments() -> argparse.Namespace: @@ -95,70 +182,179 @@ def parse_arguments() -> argparse.Namespace: Parse command line arguments. Returns: - argparse.Namespace: The parsed arguments. + argparse.Namespace: The parsed arguments. """ - parser = argparse.ArgumentParser(description='Asynchronous Port Scanner') - parser.add_argument('ips', metavar='IP', type=str, - nargs='+', help='Target IP address(es)') - parser.add_argument('-p', '--ports', type=str, default='1-1024', - help='Port range to scan (e.g., 1-1024)') - parser.add_argument('-t', '--timeout', type=float, - default=1.0, help='Timeout for each port (seconds)') - parser.add_argument('-o', '--output', type=str, - default='scan_results.txt', help='Output file to save results') - parser.add_argument('--protocol', type=str, - choices=['tcp', 'udp'], default='tcp', help='Protocol to use (tcp/udp)') - parser.add_argument('--quick', action='store_true', - help='Quick scan mode (common ports)') - parser.add_argument('--json', action='store_true', - help='Save results in JSON format') - parser.add_argument('--verbose', action='store_true', - help='Print detailed scan information') - parser.add_argument('--exclude', type=str, default='', - help='Comma-separated list of ports to exclude from scanning') + parser = argparse.ArgumentParser( + description='Asynchronous Port Scanner' + ) + parser.add_argument( + 'ips', + metavar='IP', + type=str, + nargs='+', + help='Target IP address(es)' + ) + parser.add_argument( + '-p', '--ports', + type=str, + default='1-1024', + help='Port range to scan (e.g., 1-1024)' + ) + parser.add_argument( + '-t', '--timeout', + type=float, + default=1.0, + help='Timeout for each port (seconds)' + ) + parser.add_argument( + '-o', '--output', + type=str, + default='scan_results.txt', + help='Output file to save results' + ) + parser.add_argument( + '--protocol', + type=str, + choices=['tcp', 'udp'], + default='tcp', + help='Protocol to use (tcp/udp)' + ) + parser.add_argument( + '--quick', + action='store_true', + help='Quick scan mode (common ports)' + ) + parser.add_argument( + '--json', + action='store_true', + help='Save results in JSON format' + ) + parser.add_argument( + '--verbose', + action='store_true', + help='Print detailed scan information' + ) + parser.add_argument( + '--exclude', + type=str, + default='', + help='Comma-separated list of ports to exclude from scanning' + ) return parser.parse_args() -def get_ports(ports_str: str, quick: bool, exclude: str) -> range: +def get_ports( + ports_str: str, + quick: bool, + exclude: str +) -> List[int]: """ - Get a range of ports to scan. + Get a list of ports to scan. Args: - ports_str (str): The port range string (e.g., "1-1024"). - quick (bool): Whether to perform a quick scan (common ports only). - exclude (str): Comma-separated list of ports to exclude from scanning. + ports_str (str): The port range string (e.g., "1-1024"). + quick (bool): Whether to perform a quick scan (common ports only). + exclude (str): Comma-separated list of ports to exclude from scanning. Returns: - range: The range of ports to scan. + List[int]: The list of ports to scan. """ if quick: - ports = range(1, 1025) # Common ports for quick scan + ports = list(range(1, 1025)) # Common ports for quick scan else: - start_port, end_port = map(int, ports_str.split('-')) - ports = range(start_port, end_port + 1) + try: + start_port, end_port = map(int, ports_str.split('-')) + ports = list(range(start_port, end_port + 1)) + except ValueError as e: + logger.error( + "Invalid port range format. Use start-end (e.g., 1-1024)." + ) + raise PortScannerError( + "Invalid port range format. Use start-end (e.g., 1-1024)." + ) from e if exclude: - exclude_ports = set(map(int, exclude.split(','))) - ports = [port for port in ports if port not in exclude_ports] + try: + exclude_ports = set(map(int, exclude.split(','))) + ports = [port for port in ports if port not in exclude_ports] + except ValueError as e: + logger.error( + "Invalid exclude ports format. Use comma-separated integers (e.g., 80,443)." + ) + raise PortScannerError( + "Invalid exclude ports format. Use comma-separated integers (e.g., 80,443)." + ) from e return ports +def display_results(ip: str, results: List[Tuple[int, str, str]]) -> None: + """ + Display scan results using Rich for better terminal formatting. + + Args: + ip (str): The target IP address. + results (List[Tuple[int, str, str]]): The list of scan results. + """ + table = Table(title=f"Scan Results for {ip}") + + table.add_column("Port", justify="right", style="cyan", no_wrap=True) + table.add_column("Status", style="magenta") + table.add_column("Service", style="green") + + for port, status, service in results: + status_style = "green" if status == "open" else "red" + table.add_row( + str(port), f"[{status_style}]{status}[/{status_style}]", service) + + console.print(table) + + def main() -> None: """ Main function to coordinate the scanning process. """ args = parse_arguments() - ports = get_ports(args.ports, args.quick, args.exclude) + try: + ports = get_ports(args.ports, args.quick, args.exclude) + except PortScannerError as e: + logger.error(e) + sys.exit(1) + loop = asyncio.get_event_loop() - with concurrent.futures.ThreadPoolExecutor() as executor: - loop.set_default_executor(executor) - for ip in args.ips: - results = loop.run_until_complete(scan_ports( - ip.strip(), ports, args.timeout, args.protocol, args.verbose)) - save_results(ip.strip(), results, args.output, args.json) + tasks = [] + for ip in args.ips: + ip = ip.strip() + logger.info(f"Starting scan on {ip}") + tasks.append(scan_ports(ip, ports, args.timeout, + args.protocol, args.verbose)) + + try: + results = loop.run_until_complete( + asyncio.gather(*tasks, return_exceptions=True) + ) + except Exception as e: + logger.exception(f"An unexpected error occurred during scanning: {e}") + sys.exit(1) + + for ip, scan_result in zip(args.ips, results): + if isinstance(scan_result, Exception): + logger.error(f"Error scanning {ip}: {scan_result}") + continue + save_results(ip, scan_result, args.output, args.json) + display_results(ip, scan_result) if __name__ == '__main__': - main() + try: + main() + except KeyboardInterrupt: + logger.warning("Scan interrupted by user.") + sys.exit(0) + except PortScannerError as e: + logger.error(f"Port scanner error: {e}") + sys.exit(1) + except Exception as e: + logger.exception(f"An unexpected error occurred: {e}") + sys.exit(1) diff --git a/modules/lithium.pytools/tools/pyjson.py b/modules/lithium.pytools/tools/pyjson.py index f5c372ec..c59c97a8 100644 --- a/modules/lithium.pytools/tools/pyjson.py +++ b/modules/lithium.pytools/tools/pyjson.py @@ -1,16 +1,87 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +@file pyjson.py +@brief An enhanced command-line utility to manage and manipulate JSON files. + +@details This script provides functionality to load, print, convert, query, validate, + merge, and compare JSON files. It enhances internal operations with robust + exception handling and detailed logging using Loguru. + + Usage: + python pyjson.py [options] + + Options: + --minify Minify JSON output. + --format Format JSON output with indentation. + --yaml Convert JSON to YAML and save to a file. + --query Query JSON data using simple dot notation (e.g., 'a.b.0.c'). + --validate Validate JSON file format. + --merge Merge multiple JSON files. + --diff Compare two JSON files. + --export-xml Export JSON to XML format. + --stats Display statistics about the JSON structure. + --flatten Flatten nested JSON structures. + --unflatten Unflatten JSON structures. + --remove-key Remove a specific key from the JSON data. + --rename-key Rename a key in the JSON data. + --help Show help message and exit. + +@requires - Python 3.7+ + - `loguru` Python library + - `PyYAML` Python library (optional for YAML conversion) + - `dicttoxml` Python library (optional for XML export) + +@version 3.1 +@date 2024-05-01 +""" + import json import argparse import sys from json.decoder import JSONDecodeError +from loguru import logger +from typing import Optional, List, Dict, Any try: import yaml except ImportError: - # If PyYAML is not installed, handle this case to maintain usability for other features. yaml = None - -def load_json(file_path: str) -> dict: +try: + from dicttoxml import dicttoxml +except ImportError: + dicttoxml = None + +from rich.console import Console +from rich.table import Table +from rich.traceback import install + +# Initialize Rich console and install rich traceback +console = Console() +install(show_locals=True) + +# Configure Loguru +logger.remove() +logger.add( + "pyjson.log", + rotation="5 MB", + retention="7 days", + compression="zip", + enqueue=True, + encoding="utf-8", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}", + level="DEBUG", +) +logger.add( + sys.stderr, + level="INFO", + format="{message}", +) +logger.debug("Logging is configured.") + + +def load_json(file_path: str) -> Dict[str, Any]: """ Load JSON data from a file and return it as a dictionary. @@ -25,21 +96,29 @@ def load_json(file_path: str) -> dict: """ try: with open(file_path, 'r', encoding='utf-8') as file: - return json.load(file) + logger.debug(f"Loading JSON from file: {file_path}") + data = json.load(file) + logger.info(f"Successfully loaded JSON from '{file_path}'.") + return data except JSONDecodeError as e: - print(f"Invalid JSON: {e}") + logger.error(f"Invalid JSON in file '{file_path}': {e}") + console.print( + f"[bold red]Invalid JSON in file '{file_path}': {e}[/bold red]") sys.exit(1) except FileNotFoundError: - print(f"File not found: {file_path}") + logger.error(f"File not found: {file_path}") + console.print(f"[bold red]File not found: {file_path}[/bold red]") sys.exit(1) except IOError as e: - print(f"Error reading file: {e}") + logger.error(f"Error reading file '{file_path}': {e}") + console.print( + f"[bold red]Error reading file '{file_path}': {e}[/bold red]") sys.exit(1) -def print_json(obj: dict, minify: bool = False, indent: int = 4): +def print_json(obj: Dict[str, Any], minify: bool = False, indent: Optional[int] = 4): """ - Print a JSON object as a formatted or minified string. + Print a JSON object as a formatted or minified string using Rich. Args: obj (dict): The JSON object to print. @@ -49,13 +128,22 @@ def print_json(obj: dict, minify: bool = False, indent: int = 4): Returns: None """ - if minify: - print(json.dumps(obj, separators=(',', ':'))) - else: - print(json.dumps(obj, indent=indent)) + try: + if minify: + json_str = json.dumps(obj, separators=(',', ':')) + logger.debug("Printing minified JSON.") + console.print(f"[bold green]{json_str}[/bold green]") + else: + json_str = json.dumps(obj, indent=indent) + logger.debug(f"Printing formatted JSON with indent={indent}.") + console.print_json(json_str) + except (TypeError, OverflowError) as e: + logger.error(f"Error printing JSON: {e}") + console.print(f"[bold red]Error printing JSON: {e}[/bold red]") + sys.exit(1) -def save_json_to_yaml(json_obj: dict, output_file: str): +def save_json_to_yaml(json_obj: Dict[str, Any], output_file: str): """ Save a JSON object to a YAML file. @@ -70,13 +158,62 @@ def save_json_to_yaml(json_obj: dict, output_file: str): ImportError: If PyYAML is not installed. """ if yaml is None: - print("YAML support is not available. Install PyYAML to enable this feature.") + logger.error( + "YAML support is not available. Install PyYAML to enable this feature.") + console.print( + "[bold red]YAML support is not available. Install PyYAML to enable this feature.[/bold red]") + return + try: + with open(output_file, 'w', encoding='utf-8') as file: + yaml.dump(json_obj, file, allow_unicode=True, + default_flow_style=False) + logger.info( + f"Successfully converted JSON to YAML and saved to '{output_file}'.") + console.print( + f"[bold green]YAML saved to '{output_file}'.[/bold green]") + except IOError as e: + logger.error(f"Error writing YAML file '{output_file}': {e}") + console.print( + f"[bold red]Error writing YAML file '{output_file}': {e}[/bold red]") + sys.exit(1) + + +def export_json_to_xml(json_obj: Dict[str, Any], output_file: str): + """ + Export a JSON object to an XML file. + + Args: + json_obj (dict): The JSON object to convert to XML. + output_file (str): Path to the output XML file. + + Returns: + None + + Raises: + ImportError: If dicttoxml is not installed. + """ + if dicttoxml is None: + logger.error( + "XML support is not available. Install dicttoxml to enable this feature.") + console.print( + "[bold red]XML support is not available. Install dicttoxml to enable this feature.[/bold red]") return - with open(output_file, 'w', encoding='utf-8') as file: - yaml.dump(json_obj, file, allow_unicode=True, default_flow_style=False) + try: + xml_bytes = dicttoxml(json_obj, custom_root='root', attr_type=False) + xml_str = xml_bytes.decode('utf-8') + with open(output_file, 'w', encoding='utf-8') as file: + file.write(xml_str) + logger.info( + f"Successfully exported JSON to XML and saved to '{output_file}'.") + console.print( + f"[bold green]XML exported to '{output_file}'.[/bold green]") + except Exception as e: + logger.error(f"Error exporting JSON to XML: {e}") + console.print(f"[bold red]Error exporting JSON to XML: {e}[/bold red]") + sys.exit(1) -def query_json(json_obj: dict, query_path: str): +def query_json(json_obj: Dict[str, Any], query_path: str): """ Query a JSON object using a simple dot notation path. @@ -91,16 +228,22 @@ def query_json(json_obj: dict, query_path: str): KeyError, IndexError, TypeError: If the query path is invalid or the data cannot be accessed. """ try: + logger.debug(f"Querying JSON with path: {query_path}") parts = query_path.strip().split('.') result = json_obj for part in parts: if part.isdigit(): - result = result[int(part)] + index = int(part) + result = result[index] else: result = result[part] + logger.info(f"Query successful for path '{query_path}'.") print_json(result) except (KeyError, IndexError, TypeError) as e: - print(f"Failed to query JSON with path '{query_path}': {e}") + logger.error(f"Failed to query JSON with path '{query_path}': {e}") + console.print( + f"[bold red]Failed to query JSON with path '{query_path}': {e}[/bold red]") + sys.exit(1) def validate_json(file_path: str): @@ -115,12 +258,17 @@ def validate_json(file_path: str): """ try: load_json(file_path) - print(f"JSON file '{file_path}' is valid.") + logger.info(f"JSON file '{file_path}' is valid.") + console.print( + f"[bold green]JSON file '{file_path}' is valid.[/bold green]") except SystemExit: - print(f"JSON file '{file_path}' is invalid.") + logger.warning(f"JSON file '{file_path}' is invalid.") + console.print( + f"[bold red]JSON file '{file_path}' is invalid.[/bold red]") + sys.exit(1) -def merge_json(files: list): +def merge_json(files: List[str]) -> Dict[str, Any]: """ Merge multiple JSON files into one. @@ -132,14 +280,18 @@ def merge_json(files: list): """ merged_data = {} for file in files: + logger.debug(f"Merging file: {file}") data = load_json(file) merged_data.update(data) + logger.info(f"Successfully merged {len(files)} files.") + console.print( + f"[bold green]Successfully merged {len(files)} files.[/bold green]") return merged_data def diff_json(file1: str, file2: str): """ - Compare two JSON files and print the differences. + Compare two JSON files and display the differences in a table. Args: file1 (str): Path to the first JSON file. @@ -148,17 +300,232 @@ def diff_json(file1: str, file2: str): Returns: None """ + logger.debug(f"Comparing files '{file1}' and '{file2}'.") data1 = load_json(file1) data2 = load_json(file2) diff = {key: data2[key] for key in data2 if key not in data1 or data1[key] != data2[key]} - print_json(diff) + logger.info(f"Differences found between '{file1}' and '{file2}'.") + + if diff: + table = Table(title=f"Differences between '{file1}' and '{file2}'") + table.add_column("Key", style="cyan", no_wrap=True) + table.add_column("Value in File2", style="magenta") + for key, value in diff.items(): + table.add_row(key, str(value)) + console.print(table) + else: + console.print("[bold green]No differences found.[/bold green]") -if __name__ == "__main__": +def display_stats(json_obj: Dict[str, Any]): + """ + Display statistics about the JSON structure. + + Args: + json_obj (dict): The JSON object to analyze. + + Returns: + None + """ + try: + total_keys = count_keys(json_obj) + total_elements = count_elements(json_obj) + depth = get_depth(json_obj) + logger.info("Displaying JSON statistics.") + + table = Table(title="JSON Statistics") + table.add_column("Statistic", style="cyan", no_wrap=True) + table.add_column("Value", style="magenta") + table.add_row("Total Keys", str(total_keys)) + table.add_row("Total Elements", str(total_elements)) + table.add_row("Depth", str(depth)) + console.print(table) + except Exception as e: + logger.error(f"Error displaying JSON statistics: {e}") + console.print( + f"[bold red]Error displaying JSON statistics: {e}[/bold red]") + sys.exit(1) + + +def count_keys(obj: Any) -> int: + """Recursively count the number of keys in the JSON object.""" + if isinstance(obj, dict): + return sum(count_keys(v) for v in obj.values()) + len(obj) + elif isinstance(obj, list): + return sum(count_keys(item) for item in obj) + else: + return 0 + + +def count_elements(obj: Any) -> int: + """Recursively count the number of elements in the JSON object.""" + if isinstance(obj, dict): + return sum(count_elements(v) for v in obj.values()) + 1 + elif isinstance(obj, list): + return sum(count_elements(item) for item in obj) + len(obj) + else: + return 1 + + +def get_depth(obj: Any, current_depth: int = 1) -> int: + """Recursively determine the depth of the JSON object.""" + if isinstance(obj, dict): + return max([get_depth(v, current_depth + 1) for v in obj.values()], default=current_depth) + elif isinstance(obj, list): + return max([get_depth(item, current_depth + 1) for item in obj], default=current_depth) + else: + return current_depth + + +def flatten_json(y: Dict[str, Any]) -> Dict[str, Any]: + """ + Flatten a nested JSON object. + + Args: + y (dict): The JSON object to flatten. + + Returns: + dict: The flattened JSON object. + """ + out = {} + + def flatten(x: Any, name: str = ''): + if isinstance(x, dict): + for a in x: + flatten(x[a], f"{name}{a}.") + elif isinstance(x, list): + for i, a in enumerate(x): + flatten(a, f"{name}{i}.") + else: + out[name[:-1]] = x + + flatten(y) + logger.info("Successfully flattened JSON.") + return out + + +def unflatten_json(x: Dict[str, Any]) -> Dict[str, Any]: + """ + Unflatten a JSON object. + + Args: + x (dict): The flattened JSON object. + + Returns: + dict: The unflattened JSON object. + """ + result_dict = {} + for key, value in x.items(): + parts = key.split('.') + d = result_dict + for part in parts[:-1]: + if part.isdigit(): + part = int(part) + if not isinstance(d, list): + d_type = type(d) + d = [] + while len(d) <= part: + d.append({}) + else: + d = d.setdefault(part, {}) + last_part = parts[-1] + if last_part.isdigit(): + last_part = int(last_part) + if not isinstance(d, list): + d = [] + while len(d) <= last_part: + d.append(None) + d[last_part] = value + else: + d[last_part] = value + logger.info("Successfully unflattened JSON.") + return result_dict + + +def flatten_data(json_obj: Dict[str, Any]): + """ + Flatten the JSON data and print it. + + Args: + json_obj (dict): The JSON object to flatten. + + Returns: + None + """ + flattened = flatten_json(json_obj) + console.print("[bold green]Flattened JSON:[/bold green]") + print_json(flattened, minify=True) + + +def unflatten_data(json_obj: Dict[str, Any]): + """ + Unflatten the JSON data and print it. + + Args: + json_obj (dict): The flattened JSON object. + + Returns: + None + """ + unflattened = unflatten_json(json_obj) + console.print("[bold green]Unflattened JSON:[/bold green]") + print_json(unflattened) + + +def remove_key(json_obj: Dict[str, Any], key: str): + """ + Remove a specific key from the JSON object. + + Args: + json_obj (dict): The JSON object. + key (str): The key to remove. + + Returns: + None + """ + try: + del json_obj[key] + logger.info(f"Removed key '{key}' from JSON.") + console.print( + f"[bold green]Removed key '{key}' from JSON.[/bold green]") + print_json(json_obj) + except KeyError: + logger.error(f"Key '{key}' not found in JSON.") + console.print(f"[bold red]Key '{key}' not found in JSON.[/bold red]") + sys.exit(1) + + +def rename_key(json_obj: Dict[str, Any], old_key: str, new_key: str): + """ + Rename a key in the JSON object. + + Args: + json_obj (dict): The JSON object. + old_key (str): The current key name. + new_key (str): The new key name. + + Returns: + None + """ + try: + json_obj[new_key] = json_obj.pop(old_key) + logger.info(f"Renamed key '{old_key}' to '{new_key}'.") + console.print( + f"[bold green]Renamed key '{old_key}' to '{new_key}'.[/bold green]") + print_json(json_obj) + except KeyError: + logger.error(f"Key '{old_key}' not found in JSON.") + console.print( + f"[bold red]Key '{old_key}' not found in JSON.[/bold red]") + sys.exit(1) + + +def main(): parser = argparse.ArgumentParser( - description="Enhanced JSON processing tool.") + description="Enhanced JSON processing tool." + ) parser.add_argument('file', type=str, help="JSON file to process") parser.add_argument('--minify', action='store_true', help="Minify JSON output") @@ -174,22 +541,70 @@ def diff_json(file1: str, file2: str): metavar="FILES", help="Merge multiple JSON files") parser.add_argument('--diff', type=str, nargs=2, metavar=("FILE1", "FILE2"), help="Compare two JSON files") + parser.add_argument('--export-xml', type=str, metavar="OUTPUT_FILE", + help="Export JSON to XML format") + parser.add_argument('--stats', action='store_true', + help="Display statistics about the JSON structure") + parser.add_argument('--flatten', action='store_true', + help="Flatten nested JSON structures") + parser.add_argument('--unflatten', action='store_true', + help="Unflatten JSON structures") + parser.add_argument('--remove-key', type=str, metavar="KEY", + help="Remove a specific key from the JSON data") + parser.add_argument('--rename-key', type=str, nargs=2, metavar=("OLD_KEY", "NEW_KEY"), + help="Rename a key in the JSON data") + parser.add_argument('--help', action='help', + help="Show help message and exit") args = parser.parse_args() # Load JSON data from the specified file. data = load_json(args.file) + # Handle command-line arguments and execute corresponding functions. if args.yaml: save_json_to_yaml(data, args.yaml) + elif args.export_xml: + export_json_to_xml(data, args.export_xml) elif args.query: query_json(data, args.query) elif args.validate: validate_json(args.file) elif args.merge: merged_data = merge_json(args.merge) + console.print("[bold green]Merged JSON Data:[/bold green]") print_json(merged_data) elif args.diff: diff_json(args.diff[0], args.diff[1]) + elif args.stats: + display_stats(data) + elif args.flatten: + flatten_data(data) + elif args.unflatten: + unflatten_data(data) + elif args.remove_key: + remove_key(data, args.remove_key) + elif args.rename_key: + old_key, new_key = args.rename_key + rename_key(data, old_key, new_key) else: + if args.minify: + console.print("[bold green]JSON Output (Minified):[/bold green]") + else: + console.print("[bold green]JSON Output (Formatted):[/bold green]") print_json(data, minify=args.minify, indent=None if args.minify else 4) + + +if __name__ == "__main__": + try: + main() + except KeyboardInterrupt: + logger.warning("Operation interrupted by user.") + console.print( + "\n[bold yellow]Operation interrupted by user.[/bold yellow]") + sys.exit(0) + except Exception as e: + logger.exception(f"An unexpected error occurred: {e}") + console.print( + f"[bold red]An unexpected error occurred: {e}[/bold red]") + sys.exit(1) diff --git a/modules/lithium.pytools/tools/rsa.py b/modules/lithium.pytools/tools/rsa.py index 79c1cfe5..a685cd08 100644 --- a/modules/lithium.pytools/tools/rsa.py +++ b/modules/lithium.pytools/tools/rsa.py @@ -1,180 +1,503 @@ -from loguru import logger +from __future__ import annotations import argparse +import sys +import struct from pathlib import Path -from typing import Optional +from typing import Optional, Tuple, Union +from getpass import getpass + +from loguru import logger +from rich.console import Console +from rich.prompt import Prompt from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_OAEP, AES from Crypto.Signature import pkcs1_15 from Crypto.Hash import SHA256 from Crypto.Random import get_random_bytes -from getpass import getpass - -# Configure loguru -logger.add("file_{time}.log", rotation="1 week") -CHUNK_SIZE = 214 # RSA-2048 max chunk size for PKCS1_OAEP encryption +# Initialize Rich console +console = Console() + +# Configure Loguru for logging +logger.remove() # Remove the default logger +logger.add( + "rsa.log", + rotation="1 week", + retention="4 weeks", + compression="zip", + enqueue=True, + encoding="utf-8", + level="DEBUG", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}", +) +logger.add( + sys.stderr, + level="INFO", + format="{message}", +) + +CHUNK_SIZE_RSA = 214 # For RSA-2048 with PKCS1_OAEP padding AES_CHUNK_SIZE = 64 * 1024 # 64KB for AES encryption chunks +RSA_KEY_SIZE = 2048 # Default RSA key size -def generate_keypair(key_size=2048): - """Generate RSA key pair.""" - key = RSA.generate(key_size) - private_key = key.export_key() - public_key = key.publickey().export_key() - return public_key, private_key +def generate_keypair(key_size: int = RSA_KEY_SIZE) -> Tuple[bytes, bytes]: + """ + Generate an RSA key pair. + Args: + key_size (int): Size of the RSA key in bits. -def save_key(key: bytes, filename: Path, passphrase: Optional[str] = None): - """Save RSA key to a file.""" + Returns: + Tuple[bytes, bytes]: Public and private keys in PEM format. + """ + logger.info(f"Generating RSA key pair with size {key_size} bits.") + try: + key = RSA.generate(key_size) + private_key = key.export_key() + public_key = key.publickey().export_key() + logger.debug("RSA key pair generated successfully.") + return public_key, private_key + except Exception as e: + logger.exception(f"Failed to generate RSA key pair: {e}") + raise + + +def save_key( + key: bytes, filename: Path, passphrase: Optional[str] = None +) -> None: + """ + Save RSA key to a file, optionally encrypting it with a passphrase. + + Args: + key (bytes): The RSA key in PEM format. + filename (Path): The file path to save the key. + passphrase (Optional[str]): Passphrase to encrypt the key. + + Raises: + Exception: If saving the key fails. + """ try: with open(filename, 'wb') as f: if passphrase: + logger.debug( + f"Encrypting key with passphrase for file {filename}." + ) encrypted_key = RSA.import_key(key).export_key( - passphrase=passphrase, pkcs=8, protection="scryptAndAES128-CBC" + passphrase=passphrase, + pkcs=8, + protection="scryptAndAES128-CBC" ) f.write(encrypted_key) else: + logger.debug(f"Saving unencrypted key to file {filename}.") f.write(key) - logger.info("Key saved to {}", filename) + logger.info(f"Key saved to {filename}.") except Exception as e: - logger.error("Error saving key to {}: {}", filename, e) + logger.error(f"Error saving key to {filename}: {e}") + raise + + +def load_key( + filename: Path, passphrase: Optional[str] = None +) -> Optional[Union[RSA.RsaKey, bytes]]: + """ + Load RSA key from a file, optionally decrypting it with a passphrase. + + Args: + filename (Path): The file path to load the key from. + passphrase (Optional[str]): Passphrase to decrypt the key. + Returns: + Optional[Union[RSA.RsaKey, bytes]]: The RSA key object or bytes if AES key. -def load_key(filename: Path, passphrase: Optional[str] = None) -> Optional[bytes]: - """Load RSA key from a file.""" + Raises: + Exception: If loading the key fails. + """ try: + logger.debug(f"Loading key from file {filename}.") with open(filename, 'rb') as f: - key = f.read() - if passphrase: - return RSA.import_key(key, passphrase=passphrase) - return RSA.import_key(key) + key_data = f.read() + if filename.suffix == '.bin': + # Assuming it's an AES key + logger.debug("Loaded AES key from binary file.") + return key_data + key = RSA.import_key(key_data, passphrase=passphrase) + logger.info(f"Key loaded successfully from {filename}.") + return key except FileNotFoundError: - logger.error("Key file {} not found.", filename) + logger.error(f"Key file {filename} not found.") + return None + except (ValueError, TypeError) as e: + logger.error( + f"Incorrect passphrase or corrupted key file {filename}: {e}" + ) return None except Exception as e: - logger.error("Error loading key from {}: {}", filename, e) + logger.error(f"Error loading key from {filename}: {e}") return None -def encrypt_file(input_file: Path, output_file: Path, public_key: bytes): - """Encrypt a file using RSA public key.""" - key = RSA.import_key(public_key) - cipher_rsa = PKCS1_OAEP.new(key) +def hybrid_encrypt( + input_file: Path, output_file: Path, public_key: RSA.RsaKey +) -> None: + """ + Encrypt a file using hybrid RSA and AES encryption. - try: - with open(input_file, 'rb') as f_in, open(output_file, 'wb') as f_out: - while chunk := f_in.read(CHUNK_SIZE): - encrypted_chunk = cipher_rsa.encrypt(chunk) - f_out.write(encrypted_chunk) - logger.info("File encrypted successfully to {}", output_file) - except Exception as e: - logger.error("Error during encryption: {}", e) + The AES key is encrypted with RSA and stored alongside the encrypted data. + The file format: + [RSA_encrypted_AES_key_length (4 bytes)][RSA_encrypted_AES_key][AES_nonce (16 bytes)][AES_tag (16 bytes)][AES_encrypted_data] + Args: + input_file (Path): Path to the input file to encrypt. + output_file (Path): Path to save the encrypted file. + public_key (RSA.RsaKey): RSA public key for encrypting the AES key. -def decrypt_file(input_file: Path, output_file: Path, private_key: bytes): - """Decrypt a file using RSA private key.""" - key = RSA.import_key(private_key) - cipher_rsa = PKCS1_OAEP.new(key) + Raises: + Exception: If encryption fails. + """ + logger.info( + f"Starting hybrid encryption for file {input_file} to {output_file}." + ) + try: + # Generate AES key + aes_key = get_random_bytes(32) # AES-256 + logger.debug("AES key generated for encryption.") + + # Encrypt AES key with RSA public key + cipher_rsa = PKCS1_OAEP.new(public_key) + encrypted_aes_key = cipher_rsa.encrypt(aes_key) + encrypted_aes_key_length = len(encrypted_aes_key) + logger.debug("AES key encrypted with RSA public key.") + + # Initialize AES cipher in GCM mode + cipher_aes = AES.new(aes_key, AES.MODE_GCM) + nonce = cipher_aes.nonce + logger.debug("AES cipher initialized in GCM mode.") + + with input_file.open('rb') as f_in, output_file.open('wb') as f_out: + # Write RSA_encrypted_AES_key_length + f_out.write(struct.pack(">I", encrypted_aes_key_length)) + # Write RSA_encrypted_AES_key + f_out.write(encrypted_aes_key) + # Write AES nonce + f_out.write(nonce) + logger.debug( + "RSA encrypted AES key and nonce written to output file." + ) + while chunk := f_in.read(AES_CHUNK_SIZE): + encrypted_chunk, tag = cipher_aes.encrypt_and_digest(chunk) + f_out.write(encrypted_chunk) + f_out.write(tag) + logger.info(f"File encrypted successfully to {output_file}.") + console.print( + f"[bold green]File encrypted successfully to {output_file}.[/bold green]") + except Exception as e: + logger.error(f"Error during hybrid encryption: {e}") + console.print( + f"[bold red]Error during hybrid encryption: {e}[/bold red]") + raise + + +def hybrid_decrypt( + input_file: Path, output_file: Path, private_key: RSA.RsaKey +) -> None: + """ + Decrypt a file using hybrid RSA and AES decryption. + + Expects the file format: + [RSA_encrypted_AES_key_length (4 bytes)][RSA_encrypted_AES_key][AES_nonce (16 bytes)][AES_tag (16 bytes)][AES_encrypted_data] + + Args: + input_file (Path): Path to the encrypted input file. + output_file (Path): Path to save the decrypted file. + private_key (RSA.RsaKey): RSA private key for decrypting the AES key. + + Raises: + Exception: If decryption fails. + """ + logger.info( + f"Starting hybrid decryption for file {input_file} to {output_file}." + ) try: - with open(input_file, 'rb') as f_in, open(output_file, 'wb') as f_out: - # Size of encrypted chunk for RSA-2048 - while chunk := f_in.read(256): - decrypted_chunk = cipher_rsa.decrypt(chunk) - f_out.write(decrypted_chunk) - logger.info("File decrypted successfully to {}", output_file) + with input_file.open('rb') as f_in: + # Read RSA_encrypted_AES_key_length + encrypted_aes_key_length = struct.unpack(">I", f_in.read(4))[0] + logger.debug( + f"Encrypted AES key length: {encrypted_aes_key_length} bytes." + ) + + # Read RSA_encrypted_AES_key + encrypted_aes_key = f_in.read(encrypted_aes_key_length) + logger.debug("Encrypted AES key read from file.") + + # Decrypt AES key with RSA private key + cipher_rsa = PKCS1_OAEP.new(private_key) + aes_key = cipher_rsa.decrypt(encrypted_aes_key) + logger.debug("AES key decrypted with RSA private key.") + + # Read AES nonce + nonce = f_in.read(16) + logger.debug("AES nonce read from file.") + + cipher_aes = AES.new(aes_key, AES.MODE_GCM, nonce=nonce) + logger.debug("AES cipher initialized for decryption.") + + with output_file.open('wb') as f_out: + while True: + encrypted_chunk = f_in.read(AES_CHUNK_SIZE) + if not encrypted_chunk: + break + tag = f_in.read(16) + decrypted_chunk = cipher_aes.decrypt(encrypted_chunk) + try: + cipher_aes.verify(tag) + f_out.write(decrypted_chunk) + except ValueError: + logger.error( + "Integrity check failed during AES decryption." + ) + console.print( + "[bold red]Integrity check failed during AES decryption.[/bold red]" + ) + raise ValueError("Key incorrect or message corrupted.") + logger.info(f"File decrypted successfully to {output_file}.") + console.print( + f"[bold green]File decrypted successfully to {output_file}.[/bold green]") except Exception as e: - logger.error("Error during decryption: {}", e) - - -def aes_encrypt_file(input_file: Path, output_file: Path, key: bytes): - """Encrypt a file using AES.""" + logger.error(f"Error during hybrid decryption: {e}") + console.print( + f"[bold red]Error during hybrid decryption: {e}[/bold red]") + raise + + +def aes_encrypt_file( + input_file: Path, output_file: Path, key: bytes +) -> None: + """ + Encrypt a file using AES in GCM mode. + + Args: + input_file (Path): Path to the input file to encrypt. + output_file (Path): Path to save the encrypted file. + key (bytes): AES key for encryption. + + Raises: + Exception: If encryption fails. + """ + logger.info( + f"Starting AES encryption for file {input_file} to {output_file}." + ) try: cipher = AES.new(key, AES.MODE_GCM) - with open(input_file, 'rb') as f_in, open(output_file, 'wb') as f_out: + with input_file.open('rb') as f_in, output_file.open('wb') as f_out: f_out.write(cipher.nonce) + logger.debug("AES nonce written to output file.") while chunk := f_in.read(AES_CHUNK_SIZE): - ciphertext, _ = cipher.encrypt_and_digest(chunk) + ciphertext, tag = cipher.encrypt_and_digest(chunk) f_out.write(ciphertext) - logger.info("File AES encrypted successfully to {}", output_file) + f_out.write(tag) + logger.info( + f"AES encryption completed successfully for {output_file}." + ) + console.print( + f"[bold green]AES encryption completed successfully for {output_file}.[/bold green]") except Exception as e: - logger.error("Error during AES encryption: {}", e) - - -def aes_decrypt_file(input_file: Path, output_file: Path, key: bytes): - """Decrypt a file using AES.""" + logger.error(f"Error during AES encryption: {e}") + console.print(f"[bold red]Error during AES encryption: {e}[/bold red]") + raise + + +def aes_decrypt_file( + input_file: Path, output_file: Path, key: bytes +) -> None: + """ + Decrypt a file using AES in GCM mode. + + Args: + input_file (Path): Path to the encrypted input file. + output_file (Path): Path to save the decrypted file. + key (bytes): AES key for decryption. + + Raises: + Exception: If decryption fails. + """ + logger.info( + f"Starting AES decryption for file {input_file} to {output_file}." + ) try: - with open(input_file, 'rb') as f_in, open(output_file, 'wb') as f_out: - nonce = f_in.read(16) # AES GCM nonce size + with input_file.open('rb') as f_in: + nonce = f_in.read(16) cipher = AES.new(key, AES.MODE_GCM, nonce=nonce) - while chunk := f_in.read(AES_CHUNK_SIZE): - decrypted_chunk = cipher.decrypt(chunk) - f_out.write(decrypted_chunk) - logger.info("File AES decrypted successfully to {}", output_file) + logger.debug("AES cipher initialized with nonce.") + + with output_file.open('wb') as f_out: + while True: + ciphertext = f_in.read(AES_CHUNK_SIZE) + if not ciphertext: + break + tag = f_in.read(16) + decrypted_chunk = cipher.decrypt(ciphertext) + try: + cipher.verify(tag) + f_out.write(decrypted_chunk) + except ValueError: + logger.error( + "Integrity check failed during AES decryption." + ) + console.print( + "[bold red]Integrity check failed during AES decryption.[/bold red]" + ) + raise ValueError("Key incorrect or message corrupted.") + logger.info( + f"AES decryption completed successfully for {output_file}." + ) + console.print( + f"[bold green]AES decryption completed successfully for {output_file}.[/bold green]") except Exception as e: - logger.error("Error during AES decryption: {}", e) - - -def sign_file(input_file: Path, output_file: Path, private_key: bytes): - """Sign a file using RSA private key.""" - key = RSA.import_key(private_key) - + logger.error(f"Error during AES decryption: {e}") + console.print(f"[bold red]Error during AES decryption: {e}[/bold red]") + raise + + +def sign_file( + input_file: Path, signature_file: Path, private_key: RSA.RsaKey +) -> None: + """ + Sign a file using an RSA private key. + + Args: + input_file (Path): Path to the input file to sign. + signature_file (Path): Path to save the signature. + private_key (RSA.RsaKey): RSA private key for signing. + + Raises: + Exception: If signing fails. + """ + logger.info( + f"Starting signing of file {input_file}, signature will be saved to {signature_file}." + ) try: - with open(input_file, 'rb') as f: + with input_file.open('rb') as f: data = f.read() + logger.debug("File data read for signing.") h = SHA256.new(data) - signature = pkcs1_15.new(key).sign(h) - - with open(output_file, 'wb') as f: + signature = pkcs1_15.new(private_key).sign(h) + with signature_file.open('wb') as f: f.write(signature) - logger.info("File signed and signature saved to {}", output_file) + logger.info( + f"File signed successfully. Signature saved to {signature_file}." + ) + console.print( + f"[bold green]File signed successfully. Signature saved to {signature_file}.[/bold green]") + except (ValueError, TypeError) as e: + logger.error(f"Failed to sign file {input_file}: {e}") + console.print( + f"[bold red]Failed to sign file {input_file}: {e}[/bold red]") + raise except Exception as e: - logger.error("Error during signing: {}", e) - - -def verify_file(input_file: Path, signature_file: Path, public_key: bytes) -> bool: - """Verify a file signature using RSA public key.""" - key = RSA.import_key(public_key) - + logger.error(f"Error during signing file {input_file}: {e}") + console.print( + f"[bold red]Error during signing file {input_file}: {e}[/bold red]") + raise + + +def verify_file( + input_file: Path, signature_file: Path, public_key: RSA.RsaKey +) -> bool: + """ + Verify a file's signature using an RSA public key. + + Args: + input_file (Path): Path to the input file to verify. + signature_file (Path): Path to the signature file. + public_key (RSA.RsaKey): RSA public key for verification. + + Returns: + bool: True if signature is valid, False otherwise. + """ + logger.info( + f"Starting verification of file {input_file} with signature {signature_file}." + ) try: - with open(input_file, 'rb') as f: + with input_file.open('rb') as f: data = f.read() - - with open(signature_file, 'rb') as f: + with signature_file.open('rb') as f: signature = f.read() + logger.debug("File data and signature read for verification.") h = SHA256.new(data) - pkcs1_15.new(key).verify(h, signature) + pkcs1_15.new(public_key).verify(h, signature) logger.info("Signature is valid.") + console.print("[bold green]Signature is valid.[/bold green]") return True except (ValueError, TypeError): logger.error("Signature is invalid.") + console.print("[bold red]Signature is invalid.[/bold red]") return False except Exception as e: - logger.error("Error during verification: {}", e) + logger.error(f"Error during verification of file {input_file}: {e}") + console.print( + f"[bold red]Error during verification of file {input_file}: {e}[/bold red]") return False def hash_file(input_file: Path) -> str: - """Generate SHA256 hash of a file.""" + """ + Generate SHA256 hash of a file. + + Args: + input_file (Path): Path to the input file to hash. + + Returns: + str: Hexadecimal SHA256 hash of the file. + + Raises: + Exception: If hashing fails. + """ + logger.info(f"Generating SHA256 hash for file {input_file}.") h = SHA256.new() try: - with open(input_file, 'rb') as f: + with input_file.open('rb') as f: while chunk := f.read(8192): h.update(chunk) - return h.hexdigest() + hash_digest = h.hexdigest() + logger.info(f"SHA256 hash for {input_file}: {hash_digest}") + console.print( + f"[bold green]SHA256 Hash for {input_file}:[/bold green] {hash_digest}") + return hash_digest except Exception as e: - logger.error("Error hashing file: {}", e) + logger.error(f"Error hashing file {input_file}: {e}") + console.print( + f"[bold red]Error hashing file {input_file}: {e}[/bold red]") return "" -def main(): - """Main function to parse arguments and perform actions.""" +def prompt_for_missing_arguments(args: argparse.Namespace) -> argparse.Namespace: + """ + Prompt the user for any missing command-line arguments. + + Args: + args (argparse.Namespace): Parsed command-line arguments. + + Returns: + argparse.Namespace: Updated command-line arguments. + """ + if args.action in ['generate', 'encrypt', 'decrypt', 'sign', 'verify', 'aes-encrypt', 'aes-decrypt']: + if args.passphrase and not args.key: + args.key = Prompt.ask("Enter key file path", + default="private_key.pem") + return args + + +def main() -> None: + """ + Main function to parse arguments and perform RSA/AES operations. + """ parser = argparse.ArgumentParser( - description=( - 'Enhanced RSA/AES Encryption Tool with password protection and file hashing' - ) + description='Enhanced RSA/AES Encryption Tool with Hybrid Encryption and File Hashing' ) parser.add_argument( 'action', @@ -183,61 +506,169 @@ def main(): ], help='Action to perform' ) - parser.add_argument('-i', '--input', help='Input file', type=Path) - parser.add_argument('-o', '--output', help='Output file', type=Path) - parser.add_argument('-k', '--key', help='Key file', type=Path) - parser.add_argument('-s', '--signature', help='Signature file', type=Path) + parser.add_argument('-i', '--input', help='Input file path', type=Path) + parser.add_argument('-o', '--output', help='Output file path', type=Path) + parser.add_argument('-k', '--key', help='Key file path', type=Path) + parser.add_argument('-s', '--signature', + help='Signature file path for verify', type=Path) parser.add_argument( '-p', '--passphrase', - help='Passphrase for key encryption/decryption', + help='Enable passphrase for key encryption/decryption', action='store_true' ) args = parser.parse_args() + args = prompt_for_missing_arguments(args) + passphrase = None if args.passphrase: passphrase = getpass("Enter passphrase: ") - if args.action == 'generate': - public_key, private_key = generate_keypair() - save_key(public_key, 'public_key.pem') - save_key(private_key, 'private_key.pem', passphrase=passphrase) - logger.info( - "Keys generated and saved as 'public_key.pem' and 'private_key.pem'") - - elif args.action == 'encrypt': - public_key = load_key(args.key) - if public_key: - encrypt_file(args.input, args.output, public_key) - - elif args.action == 'decrypt': - private_key = load_key(args.key, passphrase=passphrase) - if private_key: - decrypt_file(args.input, args.output, private_key) - - elif args.action == 'sign': - private_key = load_key(args.key, passphrase=passphrase) - if private_key: - sign_file(args.input, args.output, private_key) - - elif args.action == 'verify': - public_key = load_key(args.key) - if public_key: - verify_file(args.input, args.signature, public_key) - - elif args.action == 'hash': - hash_value = hash_file(args.input) - logger.info("SHA256 hash of {}: {}", args.input, hash_value) - - elif args.action == 'aes-encrypt': - aes_key = get_random_bytes(16) # AES-128 key - aes_encrypt_file(args.input, args.output, aes_key) - save_key(aes_key, 'aes_key.bin') # Save the AES key to a file - - elif args.action == 'aes-decrypt': - aes_key = load_key('aes_key.bin') # Load the AES key from file - if aes_key: - aes_decrypt_file(args.input, args.output, aes_key) + try: + if args.action == 'generate': + public_key, private_key = generate_keypair() + save_key(Path('public_key.pem'), 'public_key.pem') + save_key(Path('private_key.pem'), + 'private_key.pem', passphrase=passphrase) + logger.info( + "RSA key pair generated and saved as 'public_key.pem' and 'private_key.pem'." + ) + console.print( + "[bold green]RSA key pair generated and saved as 'public_key.pem' and 'private_key.pem'.[/bold green]") + + elif args.action == 'encrypt': + if not args.input or not args.output or not args.key: + logger.error( + "Encryption requires input file, output file, and public key." + ) + console.print( + "[bold red]Error: Encryption requires input file, output file, and public key.[/bold red]" + ) + sys.exit(1) + public_key = load_key(args.key) + if public_key: + hybrid_encrypt(args.input, args.output, public_key) + else: + logger.error("Public key loading failed. Encryption aborted.") + console.print( + "[bold red]Error: Public key loading failed. Check logs for details.[/bold red]") + sys.exit(1) + + elif args.action == 'decrypt': + if not args.input or not args.output or not args.key: + logger.error( + "Decryption requires input file, output file, and private key." + ) + console.print( + "[bold red]Error: Decryption requires input file, output file, and private key.[/bold red]" + ) + sys.exit(1) + private_key = load_key(args.key, passphrase=passphrase) + if private_key: + hybrid_decrypt(args.input, args.output, private_key) + else: + logger.error("Private key loading failed. Decryption aborted.") + console.print( + "[bold red]Error: Private key loading failed. Check logs for details.[/bold red]") + sys.exit(1) + + elif args.action == 'sign': + if not args.input or not args.output or not args.key: + logger.error( + "Signing requires input file, signature file, and private key." + ) + console.print( + "[bold red]Error: Signing requires input file, signature file, and private key.[/bold red]" + ) + sys.exit(1) + private_key = load_key(args.key, passphrase=passphrase) + if private_key: + sign_file(args.input, args.output, private_key) + else: + logger.error("Private key loading failed. Signing aborted.") + console.print( + "[bold red]Error: Private key loading failed. Check logs for details.[/bold red]") + sys.exit(1) + + elif args.action == 'verify': + if not args.input or not args.signature or not args.key: + logger.error( + "Verification requires input file, signature file, and public key." + ) + console.print( + "[bold red]Error: Verification requires input file, signature file, and public key.[/bold red]" + ) + sys.exit(1) + public_key = load_key(args.key) + if public_key: + is_valid = verify_file(args.input, args.signature, public_key) + if is_valid: + console.print( + "[bold green]Signature is valid.[/bold green]") + else: + console.print("[bold red]Signature is invalid.[/bold red]") + else: + logger.error( + "Public key loading failed. Verification aborted." + ) + console.print( + "[bold red]Error: Public key loading failed. Check logs for details.[/bold red]") + sys.exit(1) + + elif args.action == 'hash': + if not args.input: + logger.error("Hashing requires an input file.") + console.print( + "[bold red]Error: Hashing requires an input file.[/bold red]") + sys.exit(1) + hash_digest = hash_file(args.input) + if hash_digest: + console.print( + f"[bold green]SHA256 Hash for {args.input}:[/bold green] {hash_digest}") + else: + console.print( + "[bold red]Error: Failed to generate hash. Check logs for details.[/bold red]") + + elif args.action == 'aes-encrypt': + if not args.input or not args.output: + logger.error("AES encryption requires input and output files.") + console.print( + "[bold red]Error: AES encryption requires input and output files.[/bold red]") + sys.exit(1) + aes_key = get_random_bytes(32) # AES-256 + aes_encrypt_file(args.input, args.output, aes_key) + save_key(Path('aes_key.bin'), 'aes_key.bin') + logger.info("AES key generated and saved to 'aes_key.bin'.") + console.print( + "[bold green]AES key generated and saved to 'aes_key.bin'.[/bold green]") + + elif args.action == 'aes-decrypt': + if not args.input or not args.output: + logger.error("AES decryption requires input and output files.") + console.print( + "[bold red]Error: AES decryption requires input and output files.[/bold red]") + sys.exit(1) + aes_key = load_key(Path('aes_key.bin')) + if aes_key: + aes_decrypt_file(args.input, args.output, aes_key) + else: + logger.error("AES key loading failed. AES decryption aborted.") + console.print( + "[bold red]Error: AES key loading failed. Check logs for details.[/bold red]") + sys.exit(1) + + logger.info(f"Action '{args.action}' completed successfully.") + + # For actions that are not hashing or verification, notify user via print + if args.action not in ['hash', 'verify']: + console.print( + f"[bold green]Action '{args.action}' completed successfully.[/bold green]") + + except Exception as e: + logger.critical(f"An unexpected error occurred: {e}") + console.print( + f"[bold red]Critical Error: {e}. Check logs for details.[/bold red]") + sys.exit(1) if __name__ == '__main__': diff --git a/modules/lithium.pytools/tools/script.py b/modules/lithium.pytools/tools/script.py index 5911637b..ed8491ba 100644 --- a/modules/lithium.pytools/tools/script.py +++ b/modules/lithium.pytools/tools/script.py @@ -5,23 +5,28 @@ This script provides a utility to manage Python projects using a JSON configuration file. It can install dependencies, execute predefined scripts, list available scripts, clean temporary files, -run tests, and deploy the project. +run tests, deploy the project, and generate project documentation. Features: - Install dependencies from a JSON configuration file - Execute predefined scripts -- List available scripts +- List available scripts with descriptions - Clean temporary files and directories - Run project tests - Deploy the project +- Generate project documentation +- Enhanced logging with Loguru +- Beautified terminal outputs using Rich +- Supports configuration via environment variables -Usage: +Usage Examples: python project_manager.py build --config project.json python project_manager.py --list --config project.json python project_manager.py install --config project.json python project_manager.py clean --config project.json python project_manager.py test --config project.json python project_manager.py deploy --config project.json + python project_manager.py docs --config project.json Author: Max Qian @@ -35,7 +40,42 @@ import subprocess import os import shutil -from typing import List, Dict +import sys +from typing import List, Dict, Optional +from loguru import logger +from rich.console import Console +from rich.table import Table +from rich.prompt import Prompt +from rich.progress import Progress, SpinnerColumn, TextColumn +from dotenv import load_dotenv + +# Load environment variables from .env file if exists +load_dotenv() + +# Initialize Rich console +console = Console() + +# Configure Loguru for logging +logger.remove() # Remove the default logger +logger.add( + "project_manager.log", + rotation="10 MB", + retention="30 days", + compression="zip", + enqueue=True, + encoding="utf-8", + level="DEBUG", + format=( + "{time:YYYY-MM-DD HH:mm:ss.SSS} | " + "{level: <8} | " + "{module}:{line} - {message}" + ), +) +logger.add( + sys.stderr, + level="INFO", + format="{message}", +) def load_config(config_file: str) -> Dict: @@ -52,8 +92,21 @@ def load_config(config_file: str) -> Dict: FileNotFoundError: If the configuration file is not found. json.JSONDecodeError: If the configuration file contains invalid JSON. """ - with open(config_file, 'r', encoding='utf-8') as file: - return json.load(file) + logger.debug(f"Loading configuration file: {config_file}") + try: + with open(config_file, 'r', encoding='utf-8') as file: + config = json.load(file) + logger.info(f"Configuration loaded successfully from {config_file}") + return config + except FileNotFoundError: + logger.error(f"Configuration file not found: {config_file}") + raise + except json.JSONDecodeError as e: + logger.error(f"Invalid JSON in configuration file: {e}") + raise + except Exception as e: + logger.exception(f"Unexpected error while loading configuration: {e}") + raise def install_dependencies(dependencies: List[str]): @@ -66,9 +119,42 @@ def install_dependencies(dependencies: List[str]): Returns: None """ - for dependency in dependencies: - subprocess.run([sys.executable, "-m", "pip", - "install", dependency], check=True) + if not dependencies: + logger.info("No dependencies to install.") + console.print("[bold yellow]No dependencies to install.[/bold yellow]") + return + + logger.info("Starting installation of dependencies.") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task( + "[green]Installing dependencies...", total=None) + for dependency in dependencies: + logger.debug(f"Installing dependency: {dependency}") + try: + subprocess.run( + [sys.executable, "-m", "pip", "install", dependency], + check=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + logger.info(f"Successfully installed: {dependency}") + console.print( + f"[bold green]Successfully installed:[/bold green] {dependency}") + except subprocess.CalledProcessError as e: + error_msg = e.stderr.decode().strip() + logger.error(f"Failed to install {dependency}: {error_msg}") + console.print( + f"[bold red]Failed to install {dependency}:[/bold red] {error_msg}") + raise + except Exception as e: + logger.exception( + f"Unexpected error while installing {dependency}: {e}") + console.print( + f"[bold red]Unexpected error while installing {dependency}:[/bold red] {e}") + raise + progress.update( + task, description="[bold green]Dependencies installed successfully[/bold green]") + logger.debug("Installation of dependencies completed.") def execute_script(script: str): @@ -81,22 +167,61 @@ def execute_script(script: str): Returns: None """ - subprocess.run(script, shell=True, check=True) - - -def list_scripts(scripts: Dict[str, str]): + if not script: + logger.warning("No script command provided to execute.") + console.print( + "[bold yellow]No script command provided to execute.[/bold yellow]") + return + + logger.info(f"Executing script: {script}") + try: + result = subprocess.run( + script, shell=True, check=True, capture_output=True, text=True) + logger.info(f"Script executed successfully: {script}") + console.print( + f"[bold green]Script executed successfully:[/bold green] {script}") + if result.stdout: + console.print(f"[cyan]{result.stdout}[/cyan]") + except subprocess.CalledProcessError as e: + logger.error( + f"Script execution failed: {script}\nError: {e.stderr.strip()}") + console.print( + f"[bold red]Script execution failed:[/bold red] {script}\nError: {e.stderr.strip()}") + raise + except Exception as e: + logger.exception(f"Unexpected error during script execution: {e}") + console.print( + f"[bold red]Unexpected error during script execution:[/bold red] {e}") + raise + + +def list_scripts(scripts: Dict[str, Dict[str, str]]): """ List all available scripts in the configuration. Args: - scripts (Dict[str, str]): A dictionary of script names and their commands. + scripts (Dict[str, Dict[str, str]]): A dictionary of script names and their details. Returns: None """ - print("Available scripts:") - for name, command in scripts.items(): - print(f"{name}: {command}") + if not scripts: + logger.info("No scripts available to list.") + console.print("[bold yellow]No scripts available.[/bold yellow]") + return + + logger.info("Listing available scripts.") + table = Table(title="Available Scripts") + table.add_column("Name", style="cyan", no_wrap=True) + table.add_column("Description", style="magenta") + table.add_column("Command", style="green") + + for name, details in scripts.items(): + description = details.get("description", "No description") + command = details.get("command", "") + table.add_row(name, description, command) + console.print(table) + logger.debug("Scripts listed successfully.") def clean_project(temp_dirs: List[str]): @@ -109,10 +234,37 @@ def clean_project(temp_dirs: List[str]): Returns: None """ - for temp_dir in temp_dirs: - if os.path.exists(temp_dir): - shutil.rmtree(temp_dir) - print(f"Removed {temp_dir}") + if not temp_dirs: + logger.info("No temporary directories specified for cleaning.") + console.print( + "[bold yellow]No temporary directories specified for cleaning.[/bold yellow]") + return + + logger.info("Starting cleanup of temporary directories.") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task( + "[green]Cleaning temporary directories...", total=None) + for temp_dir in temp_dirs: + logger.debug(f"Attempting to remove: {temp_dir}") + try: + if os.path.exists(temp_dir): + shutil.rmtree(temp_dir) + logger.info(f"Removed temporary directory: {temp_dir}") + console.print( + f"[bold green]Removed temporary directory:[/bold green] {temp_dir}") + else: + logger.warning( + f"Temporary directory not found: {temp_dir}") + console.print( + f"[bold yellow]Temporary directory not found:[/bold yellow] {temp_dir}") + except Exception as e: + logger.error(f"Failed to remove {temp_dir}: {e}") + console.print( + f"[bold red]Failed to remove {temp_dir}:[/bold red] {e}") + raise + progress.update( + task, description="[bold green]Cleanup completed successfully[/bold green]") + logger.debug("Cleanup of temporary directories completed.") def run_tests(test_command: str): @@ -125,7 +277,30 @@ def run_tests(test_command: str): Returns: None """ - subprocess.run(test_command, shell=True, check=True) + if not test_command: + logger.warning("No test command provided to execute.") + console.print( + "[bold yellow]No test command provided to execute.[/bold yellow]") + return + + logger.info(f"Running tests with command: {test_command}") + try: + result = subprocess.run(test_command, shell=True, + check=True, capture_output=True, text=True) + logger.info("Tests executed successfully.") + console.print("[bold green]Tests executed successfully.[/bold green]") + if result.stdout: + console.print(f"[cyan]{result.stdout}[/cyan]") + except subprocess.CalledProcessError as e: + logger.error(f"Tests failed with error: {e.stderr.strip()}") + console.print( + f"[bold red]Tests failed with error:[/bold red] {e.stderr.strip()}") + raise + except Exception as e: + logger.exception(f"Unexpected error during test execution: {e}") + console.print( + f"[bold red]Unexpected error during test execution:[/bold red] {e}") + raise def deploy_project(deploy_command: str): @@ -138,7 +313,92 @@ def deploy_project(deploy_command: str): Returns: None """ - subprocess.run(deploy_command, shell=True, check=True) + if not deploy_command: + logger.warning("No deploy command provided to execute.") + console.print( + "[bold yellow]No deploy command provided to execute.[/bold yellow]") + return + + logger.info(f"Deploying project with command: {deploy_command}") + try: + result = subprocess.run( + deploy_command, shell=True, check=True, capture_output=True, text=True) + logger.info("Project deployed successfully.") + console.print( + "[bold green]Project deployed successfully.[/bold green]") + if result.stdout: + console.print(f"[cyan]{result.stdout}[/cyan]") + except subprocess.CalledProcessError as e: + logger.error(f"Deployment failed with error: {e.stderr.strip()}") + console.print( + f"[bold red]Deployment failed with error:[/bold red] {e.stderr.strip()}") + raise + except Exception as e: + logger.exception(f"Unexpected error during deployment: {e}") + console.print( + f"[bold red]Unexpected error during deployment:[/bold red] {e}") + raise + + +def generate_docs(doc_command: str): + """ + Generate project documentation. + + Args: + doc_command (str): The command to generate documentation. + + Returns: + None + """ + if not doc_command: + logger.warning("No documentation command provided to execute.") + console.print( + "[bold yellow]No documentation command provided to execute.[/bold yellow]") + return + + logger.info(f"Generating documentation with command: {doc_command}") + try: + result = subprocess.run(doc_command, shell=True, + check=True, capture_output=True, text=True) + logger.info("Documentation generated successfully.") + console.print( + "[bold green]Documentation generated successfully.[/bold green]") + if result.stdout: + console.print(f"[cyan]{result.stdout}[/cyan]") + except subprocess.CalledProcessError as e: + logger.error( + f"Documentation generation failed with error: {e.stderr.strip()}") + console.print( + f"[bold red]Documentation generation failed with error:[/bold red] {e.stderr.strip()}") + raise + except Exception as e: + logger.exception( + f"Unexpected error during documentation generation: {e}") + console.print( + f"[bold red]Unexpected error during documentation generation:[/bold red] {e}") + raise + + +def prompt_for_missing_config(config: Dict): + """ + Prompt the user for missing configuration items. + + Args: + config (Dict): The current configuration dictionary. + + Returns: + Dict: The updated configuration dictionary. + + """ + logger.info("Prompting for missing configuration items.") + if 'dependencies' not in config: + deps = Prompt.ask("Enter dependencies (comma-separated)", default="") + config['dependencies'] = [dep.strip() + for dep in deps.split(",") if dep.strip()] + if 'scripts' not in config: + config['scripts'] = {} + logger.debug("Configuration updated with user input.") + return config def main(): @@ -149,28 +409,75 @@ def main(): None """ parser = argparse.ArgumentParser( - description="Python Project Management Utility") - parser.add_argument("action", choices=[ - "build", "install", "list", "clean", "test", "deploy"], help="Action to perform") - parser.add_argument("--config", required=True, - help="Path to the JSON configuration file") + description="Python Project Management Utility" + ) + parser.add_argument( + "action", + choices=["build", "install", "list", + "clean", "test", "deploy", "docs"], + help="Action to perform", + ) + parser.add_argument( + "--config", + required=False, + help="Path to the JSON configuration file", + ) + parser.add_argument( + "--env", + default=".env", + help="Path to the environment variables file", + ) args = parser.parse_args() - config = load_config(args.config) - - if args.action == "install": - install_dependencies(config.get("dependencies", [])) - elif args.action == "build": - execute_script(config.get("scripts", {}).get("build", "")) - elif args.action == "list": - list_scripts(config.get("scripts", {})) - elif args.action == "clean": - clean_project(config.get("temp_dirs", [])) - elif args.action == "test": - run_tests(config.get("scripts", {}).get("test", "")) - elif args.action == "deploy": - deploy_project(config.get("scripts", {}).get("deploy", "")) + # Load configuration from file or environment variable + config_file = args.config or os.getenv( + 'PROJECT_CONFIG_FILE', 'project.json') + + try: + config = load_config(config_file) + except Exception: + logger.warning( + "Failed to load configuration. Attempting to prompt for missing items.") + config = prompt_for_missing_config({}) + if not config: + logger.critical("No configuration available. Exiting.") + console.print( + "[bold red]Error: No configuration available. Exiting.[/bold red]") + sys.exit(1) + + try: + if args.action == "install": + install_dependencies(config.get("dependencies", [])) + elif args.action == "build": + build_script = config.get("scripts", {}).get( + "build", {}).get("command", "") + execute_script(build_script) + elif args.action == "list": + list_scripts(config.get("scripts", {})) + elif args.action == "clean": + clean_project(config.get("temp_dirs", [])) + elif args.action == "test": + test_script = config.get("scripts", {}).get( + "test", {}).get("command", "") + run_tests(test_script) + elif args.action == "deploy": + deploy_script = config.get("scripts", {}).get( + "deploy", {}).get("command", "") + deploy_project(deploy_script) + elif args.action == "docs": + doc_script = config.get("scripts", {}).get( + "docs", {}).get("command", "") + generate_docs(doc_script) + logger.info(f"Action '{args.action}' completed successfully.") + if args.action not in ["list"]: + console.print( + f"[bold green]Action '{args.action}' completed successfully.[/bold green]") + except Exception as e: + logger.critical(f"Action '{args.action}' failed. Exiting.") + console.print( + f"[bold red]Error: Action '{args.action}' failed. Check logs for details.[/bold red]") + sys.exit(1) if __name__ == "__main__": diff --git a/modules/lithium.pytools/tools/sevenzip.py b/modules/lithium.pytools/tools/sevenzip.py new file mode 100644 index 00000000..14fd7c6b --- /dev/null +++ b/modules/lithium.pytools/tools/sevenzip.py @@ -0,0 +1,517 @@ +from __future__ import annotations +import subprocess +from pathlib import Path +from typing import Union, List, Optional, Literal +from loguru import logger +from rich.console import Console +from rich.progress import Progress, SpinnerColumn, TextColumn +from rich.prompt import Prompt +import shutil +import argparse +import sys +import dataclasses +import shlex + +# Define custom exception classes + + +class SevenZipError(Exception): + """Base exception class for SevenZipWrapper""" + + +class SevenZipCompressionError(SevenZipError): + """Exception for compression failures""" + + +class SevenZipExtractionError(SevenZipError): + """Exception for extraction failures""" + + +class SevenZipListError(SevenZipError): + """Exception for listing contents failures""" + + +class SevenZipTestError(SevenZipError): + """Exception for testing archive failures""" + + +class SevenZipValidationError(SevenZipError): + """Exception for parameter validation failures""" + + +# Define supported operation types for 7z +Action = Literal['compress', 'extract', 'list', + 'test', 'delete', 'update', 'version', 'formats'] + +console = Console() + + +@dataclasses.dataclass +class SevenZipWrapper: + """ + A wrapper class for the 7z command-line tool, providing simplified methods + for common archive operations like compressing, extracting, listing contents, + and testing archives. Enhanced with logging and rich terminal outputs. + """ + executable: str = "7z" + + def __post_init__(self): + """ + Post-initialization to validate the 7z executable. + """ + if not shutil.which(self.executable): + logger.error(f"Executable not found: {self.executable}") + raise SevenZipValidationError( + f"Executable does not exist: {self.executable}") + logger.info(f"Using 7z executable: {self.executable}") + + def _run_command(self, args: List[str]) -> subprocess.CompletedProcess: + """ + Run the 7z command and capture output. + + :param args: Arguments to pass to 7z. + :return: subprocess.CompletedProcess object containing the return code and output information. + """ + command = [self.executable] + args + logger.debug( + f"Running command: {' '.join(shlex.quote(arg) for arg in command)}") + try: + result = subprocess.run( + command, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True, + check=True + ) + logger.debug(f"Command output: {result.stdout}") + logger.debug(f"Command error output: {result.stderr}") + return result + except subprocess.CalledProcessError as e: + logger.error(f"7z command failed with exit code {e.returncode}") + logger.error(f"Error output: {e.stderr}") + raise SevenZipError( + f"Command execution failed: {' '.join(command)}") from e + + def _validate_files_exist(self, files: List[Union[str, Path]]) -> None: + """ + Validate that all files exist. + + :param files: List of file paths. + """ + missing_files = [str(file) + for file in files if not Path(file).exists()] + if missing_files: + for file in missing_files: + logger.error(f"File does not exist: {file}") + raise SevenZipValidationError( + f"These files do not exist: {', '.join(missing_files)}") + logger.debug("All files to be processed exist") + + def _validate_archive_exists(self, archive: Union[str, Path]) -> None: + """ + Validate that the archive exists. + + :param archive: Path to the archive. + """ + if not Path(archive).exists(): + logger.error(f"Archive does not exist: {archive}") + raise SevenZipValidationError(f"Archive does not exist: {archive}") + logger.debug("Archive exists") + + def get_version(self) -> str: + """ + Get the version of the 7z executable. + + :return: Version string of 7z. + """ + logger.info("Getting 7z version") + result = self._run_command(["--version"]) + version_info = result.stdout.strip() + logger.debug(f"7z version: {version_info}") + return version_info + + def list_supported_formats(self) -> str: + """ + List the supported archive formats by 7z. + + :return: String of supported formats. + """ + logger.info("Listing supported archive formats") + result = self._run_command(["i"]) + formats_info = result.stdout + logger.debug("Supported formats retrieved") + return formats_info + + def compress(self, files: List[Union[str, Path]], archive: Union[str, Path], level: int = 5, + password: Optional[str] = None, format: str = "7z", exclude: Optional[List[str]] = None) -> None: + """ + Compress files into the specified archive. + + :param files: List of files to compress. + :param archive: Path to the archive. + :param level: Compression level (0-9), default is 5. + :param password: Password for the archive (optional). + :param format: Archive format (e.g., '7z', 'zip'), default is '7z'. + :param exclude: List of file patterns to exclude (optional). + """ + self._validate_files_exist(files) + args = ["a", f"-t{format}", f"-mx={level}", str(archive)] + if password: + # Encrypt archive with password and filenames + args.extend([f"-p{password}", "-mhe=on"]) + if exclude: + for pattern in exclude: + args.extend(["-x!" + pattern]) + args.extend(str(f) for f in files) + logger.info( + f"Compressing {files} into {archive} with compression level {level} and format {format}") + + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("[green]Compressing...", total=None) + try: + self._run_command(args) + progress.update( + task, description="[bold green]Compression completed") + logger.success( + f"Successfully compressed {files} into {archive}") + except SevenZipError as e: + progress.update( + task, description="[bold red]Compression failed") + logger.error(f"Compression process failed: {e}") + raise SevenZipCompressionError("Compression failed") from e + + def extract(self, archive: Union[str, Path], destination: Union[str, Path], + password: Optional[str] = None, force: bool = False, overwrite: bool = False) -> None: + """ + Extract the specified archive to the destination folder. + + :param archive: Path to the archive. + :param destination: Path to the extraction destination. + :param password: Password for the archive (optional). + :param force: Whether to forcibly overwrite the destination directory if it exists. + :param overwrite: Whether to overwrite existing files. + """ + self._validate_archive_exists(archive) + destination_path = Path(destination) + + if destination_path.exists(): + if force: + logger.warning( + f"Destination directory exists and will be removed: {destination}") + shutil.rmtree(destination_path) + logger.info(f"Removed destination directory: {destination}") + else: + logger.warning(f"Destination directory exists: {destination}") + else: + destination_path.mkdir(parents=True, exist_ok=True) + + args = ["x", str(archive), f"-o{destination}"] + if overwrite: + args.append("-y") + if password: + args.append(f"-p{password}") + logger.info(f"Extracting {archive} to {destination}") + + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("[green]Extracting...", total=None) + try: + self._run_command(args) + progress.update( + task, description="[bold green]Extraction completed") + logger.success( + f"Successfully extracted {archive} to {destination}") + except SevenZipError as e: + progress.update( + task, description="[bold red]Extraction failed") + logger.error(f"Extraction process failed: {e}") + raise SevenZipExtractionError("Extraction failed") from e + + def list_contents(self, archive: Union[str, Path], + password: Optional[str] = None) -> str: + """ + List the contents of the archive. + + :param archive: Path to the archive. + :param password: Password for the archive (optional). + :return: String representation of the archive contents. + """ + self._validate_archive_exists(archive) + args = ["l", str(archive)] + if password: + args.append(f"-p{password}") + logger.info(f"Listing contents of {archive}") + try: + result = self._run_command(args) + logger.success(f"Successfully listed contents of {archive}") + return result.stdout + except SevenZipError as e: + logger.error(f"Listing contents failed: {e}") + raise SevenZipListError("Listing contents failed") from e + + def test_archive(self, archive: Union[str, Path], + password: Optional[str] = None) -> bool: + """ + Test the integrity of the archive. + + :param archive: Path to the archive. + :param password: Password for the archive (optional). + :return: Whether the test was successful. + """ + self._validate_archive_exists(archive) + args = ["t", str(archive)] + if password: + args.append(f"-p{password}") + logger.info(f"Testing integrity of {archive}") + + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("[green]Testing...", total=None) + try: + result = self._run_command(args) + is_valid = "Everything is Ok" in result.stdout + if is_valid: + progress.update( + task, description="[bold green]Integrity test passed") + logger.success(f"Integrity test passed for {archive}") + else: + progress.update( + task, description="[bold red]Integrity test failed") + logger.warning(f"Integrity test failed for {archive}") + return is_valid + except SevenZipError as e: + progress.update( + task, description="[bold red]Integrity test failed") + logger.error(f"Integrity test failed: {e}") + raise SevenZipTestError("Integrity test failed") from e + + def delete_archive(self, archive: Union[str, Path]) -> None: + """ + Delete the specified archive. + + :param archive: Path to the archive. + """ + self._validate_archive_exists(archive) + try: + Path(archive).unlink() + logger.info(f"Deleted archive: {archive}") + logger.success(f"Successfully deleted {archive}") + except Exception as e: + logger.error(f"Failed to delete archive: {e}") + raise SevenZipError(f"Failed to delete archive: {archive}") from e + + def update_archive(self, archive: Union[str, Path], files: List[Union[str, Path]], + add: bool = True, delete: bool = False) -> None: + """ + Update the archive by adding or deleting files. + + :param archive: Path to the archive. + :param files: List of files to add or delete. + :param add: Whether to add files. + :param delete: Whether to delete files. + """ + self._validate_archive_exists(archive) + if add: + self._validate_files_exist(files) + args = ["u", str(archive)] + args.extend(str(f) for f in files) + logger.info(f"Adding files to {archive}: {files}") + try: + self._run_command(args) + logger.success(f"Successfully added files to {archive}") + except SevenZipError as e: + logger.error(f"Failed to update archive: {e}") + raise SevenZipError("Failed to update archive") from e + if delete: + args = ["d", str(archive)] + args.extend(str(f) for f in files) + logger.info(f"Deleting files from {archive}: {files}") + try: + self._run_command(args) + logger.success(f"Successfully deleted files from {archive}") + except SevenZipError as e: + logger.error(f"Failed to update archive: {e}") + raise SevenZipError("Failed to update archive") from e + + def execute(self, action: Action, **kwargs) -> Optional[Union[str, bool]]: + """ + Execute the corresponding 7z command based on the action type. + + :param action: Action type ('compress', 'extract', 'list', 'test', 'delete', 'update'). + :param kwargs: Keyword arguments for the specific action. + :return: If the action is 'list', returns the archive contents; 'test' returns a boolean. + """ + logger.info(f"Executing action: {action}") + try: + match action: + case 'compress': + self.compress(**kwargs) + case 'extract': + self.extract(**kwargs) + case 'list': + return self.list_contents(**kwargs) + case 'test': + return self.test_archive(**kwargs) + case 'delete': + self.delete_archive(**kwargs.get('archive')) + case 'update': + self.update_archive(**kwargs) + case 'version': + return self.get_version() + case 'formats': + return self.list_supported_formats() + case _: + raise SevenZipValidationError( + f"Unsupported action type: {action}") + except SevenZipError as e: + logger.error(f"Action {action} failed: {e}") + raise e + + +def main(): + parser = argparse.ArgumentParser( + description="7z Command-Line Tool Wrapper") + subparsers = parser.add_subparsers(dest='action', help='Action types') + + # Compress + compress_parser = subparsers.add_parser('compress', help='Compress files') + compress_parser.add_argument( + '-f', '--files', nargs='+', required=True, help='List of files to compress') + compress_parser.add_argument( + '-a', '--archive', required=True, help='Path to the archive') + compress_parser.add_argument('-l', '--level', type=int, default=5, choices=range(0, 10), + help='Compression level (0-9), default is 5') + compress_parser.add_argument( + '-p', '--password', help='Password for the archive (optional)') + compress_parser.add_argument( + '--format', default='7z', help='Archive format (e.g., 7z, zip)') + compress_parser.add_argument( + '-x', '--exclude', nargs='*', help='Patterns to exclude') + + # Extract + extract_parser = subparsers.add_parser('extract', help='Extract files') + extract_parser.add_argument( + '-a', '--archive', required=True, help='Path to the archive') + extract_parser.add_argument( + '-d', '--destination', required=True, help='Path to the extraction destination') + extract_parser.add_argument( + '-p', '--password', help='Password for the archive (optional)') + extract_parser.add_argument( + '--force', action='store_true', help='Force overwrite if the destination directory exists') + extract_parser.add_argument( + '--overwrite', action='store_true', help='Overwrite existing files') + + # List contents + list_parser = subparsers.add_parser('list', help='List archive contents') + list_parser.add_argument( + '-a', '--archive', required=True, help='Path to the archive') + list_parser.add_argument( + '-p', '--password', help='Password for the archive (optional)') + + # Test integrity + test_parser = subparsers.add_parser('test', help='Test archive integrity') + test_parser.add_argument( + '-a', '--archive', required=True, help='Path to the archive') + test_parser.add_argument( + '-p', '--password', help='Password for the archive (optional)') + + # Delete archive + delete_parser = subparsers.add_parser('delete', help='Delete archive') + delete_parser.add_argument( + '-a', '--archive', required=True, help='Path to the archive') + + # Update archive + update_parser = subparsers.add_parser('update', help='Update archive') + update_parser.add_argument( + '-a', '--archive', required=True, help='Path to the archive') + update_parser.add_argument( + '-f', '--files', nargs='+', required=True, help='List of files to add or delete') + update_group = update_parser.add_mutually_exclusive_group(required=True) + update_group.add_argument('--add', action='store_true', help='Add files') + update_group.add_argument( + '--delete', action='store_true', help='Delete files') + + # Get version + version_parser = subparsers.add_parser('version', help='Get 7z version') + + # List supported formats + formats_parser = subparsers.add_parser( + 'formats', help='List supported archive formats') + + args = parser.parse_args() + + if not args.action: + parser.print_help() + sys.exit(1) + + try: + zipper = SevenZipWrapper() + except SevenZipValidationError as e: + logger.critical(e) + sys.exit(1) + + try: + if args.action == 'compress': + zipper.execute( + action='compress', + files=args.files, + archive=args.archive, + level=args.level, + password=args.password, + format=args.format, + exclude=args.exclude + ) + elif args.action == 'extract': + zipper.execute( + action='extract', + archive=args.archive, + destination=args.destination, + password=args.password, + force=args.force, + overwrite=args.overwrite + ) + elif args.action == 'list': + content = zipper.execute( + action='list', + archive=args.archive, + password=args.password + ) + console.print( + f"[bold magenta]Archive Contents:[/bold magenta]\n{content}") + elif args.action == 'test': + is_valid = zipper.execute( + action='test', + archive=args.archive, + password=args.password + ) + if is_valid: + console.print("[bold green]The archive is valid[/bold green]") + else: + console.print( + "[bold red]The archive is invalid or corrupted[/bold red]") + elif args.action == 'delete': + zipper.execute( + action='delete', + archive=args.archive + ) + elif args.action == 'update': + zipper.execute( + action='update', + archive=args.archive, + files=args.files, + add=args.add, + delete=args.delete + ) + elif args.action == 'version': + version_info = zipper.execute(action='version') + console.print(f"[bold blue]7z Version:[/bold blue] {version_info}") + elif args.action == 'formats': + formats_info = zipper.execute(action='formats') + console.print( + f"[bold blue]Supported Formats:[/bold blue]\n{formats_info}") + except SevenZipError as e: + logger.error(e) + console.print(f"[bold red]Error:[/bold red] {e}") + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pytools/tools/sftp.py b/modules/lithium.pytools/tools/sftp.py new file mode 100644 index 00000000..ebd5ba59 --- /dev/null +++ b/modules/lithium.pytools/tools/sftp.py @@ -0,0 +1,413 @@ +from datetime import datetime +import os +import argparse +import stat +import sys +import paramiko +from paramiko import SFTPClient, SSHException +from loguru import logger + +# Configure Loguru logger +logger.add("sftp_client.log", format="{time} {level} {message}", level="INFO") +logger.add(sys.stdout, format="{time} {level} {message}", level="INFO") + + +class SFTPClientWrapper: + def __init__(self, hostname, username, password=None, port=22, key_file=None): + """ + Initialize the SFTP client wrapper. + + :param hostname: The hostname of the SFTP server. + :param username: The username to connect to the SFTP server. + :param password: The password to connect to the SFTP server (optional if using key_file). + :param port: The port to connect to the SFTP server (default is 22). + :param key_file: The path to the private key file for key-based authentication (optional). + """ + self.hostname = hostname + self.username = username + self.password = password + self.port = port + self.key_file = key_file + self.sftp = None + self.client = None + + def connect(self): + """ + Connect to the SFTP server using the provided credentials. + """ + try: + self.client = paramiko.SSHClient() + self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + if self.key_file: + private_key = paramiko.RSAKey.from_private_key_file( + self.key_file) + self.client.connect( + hostname=self.hostname, + port=self.port, + username=self.username, + pkey=private_key + ) + else: + self.client.connect( + hostname=self.hostname, + port=self.port, + username=self.username, + password=self.password + ) + self.sftp = self.client.open_sftp() + logger.info(f"Connected to SFTP server: {self.hostname}") + except (SSHException, Exception) as e: + logger.error(f"Failed to connect to SFTP server: {e}") + self.disconnect() + raise e + + def upload_file(self, local_path, remote_path): + """ + Upload a single file to the SFTP server. + + :param local_path: The local file path to upload. + :param remote_path: The remote file path to upload to. + """ + try: + self.sftp.put(local_path, remote_path) + logger.info(f"Uploaded: {local_path} -> {remote_path}") + except Exception as e: + logger.error(f"Failed to upload file '{local_path}': {e}") + + def download_file(self, remote_path, local_path): + """ + Download a single file from the SFTP server. + + :param remote_path: The remote file path to download. + :param local_path: The local file path to download to. + """ + try: + self.sftp.get(remote_path, local_path) + logger.info(f"Downloaded: {remote_path} -> {local_path}") + except Exception as e: + logger.error(f"Failed to download file '{remote_path}': {e}") + + def upload_directory(self, local_dir, remote_dir): + """ + Recursively upload a directory to the SFTP server. + + :param local_dir: The local directory path to upload. + :param remote_dir: The remote directory path to upload to. + """ + try: + for root, _, files in os.walk(local_dir): + rel_path = os.path.relpath(root, local_dir) + rel_path = "" if rel_path == "." else rel_path + remote_sub_dir = os.path.join( + remote_dir, rel_path).replace("\\", "/") + self.create_directory(remote_sub_dir) + for file in files: + local_file = os.path.join(root, file) + remote_file = os.path.join( + remote_sub_dir, file).replace("\\", "/") + self.upload_file(local_file, remote_file) + logger.info(f"Uploaded directory: {local_dir} -> {remote_dir}") + except Exception as e: + logger.error(f"Failed to upload directory '{local_dir}': {e}") + + def download_directory(self, remote_dir, local_dir): + """ + Recursively download a directory from the SFTP server. + + :param remote_dir: The remote directory path to download. + :param local_dir: The local directory path to download to. + """ + try: + os.makedirs(local_dir, exist_ok=True) + for item in self.sftp.listdir_attr(remote_dir): + remote_item = os.path.join( + remote_dir, item.filename).replace("\\", "/") + local_item = os.path.join(local_dir, item.filename) + if stat.S_ISDIR(item.st_mode): + self.download_directory(remote_item, local_item) + else: + self.download_file(remote_item, local_item) + logger.info(f"Downloaded directory: {remote_dir} -> {local_dir}") + except Exception as e: + logger.error(f"Failed to download directory '{remote_dir}': {e}") + + def create_directory(self, remote_path): + """ + Create a remote directory on the SFTP server. + + :param remote_path: The remote directory path to create. + """ + try: + self.sftp.mkdir(remote_path) + logger.info(f"Created directory: {remote_path}") + except IOError: + logger.warning( + f"Directory already exists or cannot be created: {remote_path}") + except Exception as e: + logger.error(f"Failed to create directory '{remote_path}': {e}") + + def remove_directory(self, remote_path): + """ + Recursively remove a remote directory from the SFTP server. + + :param remote_path: The remote directory path to remove. + """ + try: + for item in self.sftp.listdir_attr(remote_path): + remote_item = os.path.join( + remote_path, item.filename).replace("\\", "/") + if stat.S_ISDIR(item.st_mode): + self.remove_directory(remote_item) + else: + self.sftp.remove(remote_item) + logger.info(f"Removed file: {remote_item}") + self.sftp.rmdir(remote_path) + logger.info(f"Removed directory: {remote_path}") + except Exception as e: + logger.error(f"Failed to remove directory '{remote_path}': {e}") + + def get_file_info(self, remote_path): + """ + Get information about a remote file or directory. + + :param remote_path: The remote file or directory path. + """ + try: + info = self.sftp.stat(remote_path) + file_type = 'Directory' if stat.S_ISDIR(info.st_mode) else 'File' + logger.info(f"Information for {remote_path}:") + logger.info(f" Type: {file_type}") + logger.info(f" Size: {info.st_size} bytes") + logger.info( + f" Last modified: {datetime.fromtimestamp(info.st_mtime)}") + logger.info(f" Permissions: {oct(info.st_mode)}") + except FileNotFoundError: + logger.error(f"Path not found: {remote_path}") + except Exception as e: + logger.error(f"Failed to get file info for '{remote_path}': {e}") + + def resume_upload(self, local_path, remote_path): + """ + Resume an interrupted file upload to the SFTP server. + + :param local_path: The local file path to upload. + :param remote_path: The remote file path to upload to. + """ + try: + file_size = os.path.getsize(local_path) + try: + remote_size = self.sftp.stat(remote_path).st_size + except FileNotFoundError: + remote_size = 0 + + if remote_size < file_size: + with open(local_path, "rb") as f: + f.seek(remote_size) + self.sftp.putfo(f, remote_path, file_size=file_size, + callback=self._progress_callback(remote_size, file_size)) + logger.info(f"Resumed upload: {local_path} -> {remote_path}") + else: + logger.info(f"File already fully uploaded: {remote_path}") + except Exception as e: + logger.error(f"Failed to resume upload '{local_path}': {e}") + + def _progress_callback(self, initial, total): + """ + Internal method to provide a progress callback. + + :param initial: The initial amount of data transferred. + :param total: The total size of the file being transferred. + """ + def callback(transferred, total_size): + progress = (initial + transferred) / total + logger.info(f"Upload progress: {progress*100:.2f}%") + return callback + + def list_files(self, remote_path): + """ + List files in a remote directory on the SFTP server. + + :param remote_path: The remote directory path. + :return: A list of files in the remote directory. + """ + try: + files = self.sftp.listdir(remote_path) + logger.info(f"Files in '{remote_path}': {files}") + return files + except Exception as e: + logger.error(f"Failed to list files in '{remote_path}': {e}") + return [] + + def move_file(self, remote_src, remote_dest): + """ + Move or rename a remote file on the SFTP server. + + :param remote_src: The source remote file path. + :param remote_dest: The destination remote file path. + """ + try: + self.sftp.rename(remote_src, remote_dest) + logger.info(f"Moved/Renamed: {remote_src} -> {remote_dest}") + except Exception as e: + logger.error( + f"Failed to move/rename '{remote_src}' to '{remote_dest}': {e}") + + def delete_file(self, remote_path): + """ + Delete a remote file from the SFTP server. + + :param remote_path: The remote file path to delete. + """ + try: + self.sftp.remove(remote_path) + logger.info(f"Deleted file: {remote_path}") + except Exception as e: + logger.error(f"Failed to delete file '{remote_path}': {e}") + + def path_exists(self, remote_path): + """ + Check if a remote path exists on the SFTP server. + + :param remote_path: The remote path to check. + :return: True if the path exists, False otherwise. + """ + try: + self.sftp.stat(remote_path) + return True + except FileNotFoundError: + return False + except Exception as e: + logger.error(f"Error checking if path exists '{remote_path}': {e}") + return False + + def disconnect(self): + """ + Disconnect from the SFTP server. + """ + try: + if self.sftp: + self.sftp.close() + logger.info("SFTP connection closed") + if self.client: + self.client.close() + logger.info("SSH client disconnected") + except Exception as e: + logger.error(f"Error while disconnecting: {e}") + + +def parse_arguments(): + """ + Parse command-line arguments. + + :return: Parsed arguments. + """ + parser = argparse.ArgumentParser( + description="SFTP Client Command Line Tool") + parser.add_argument("hostname", help="SFTP server hostname") + parser.add_argument("username", help="SFTP username") + parser.add_argument("--password", help="SFTP password", default=None) + parser.add_argument("--port", type=int, + help="SFTP server port", default=22) + parser.add_argument( + "--key-file", help="Path to private key file", default=None) + + subparsers = parser.add_subparsers( + dest="command", help="Available commands") + + # Upload directory + upload_dir_parser = subparsers.add_parser( + "upload-dir", help="Upload a directory to the server") + upload_dir_parser.add_argument("local_dir", help="Local directory path") + upload_dir_parser.add_argument("remote_dir", help="Remote directory path") + + # Download directory + download_dir_parser = subparsers.add_parser( + "download-dir", help="Download a directory from the server") + download_dir_parser.add_argument( + "remote_dir", help="Remote directory path") + download_dir_parser.add_argument("local_dir", help="Local directory path") + + # Create directory + mkdir_parser = subparsers.add_parser( + "mkdir", help="Create a directory on the server") + mkdir_parser.add_argument("remote_path", help="Remote directory path") + + # Remove directory + rmdir_parser = subparsers.add_parser( + "rmdir", help="Remove a directory from the server") + rmdir_parser.add_argument("remote_path", help="Remote directory path") + + # Get file info + info_parser = subparsers.add_parser( + "info", help="Get file or directory info") + info_parser.add_argument( + "remote_path", help="Remote file or directory path") + + # Resume upload + resume_parser = subparsers.add_parser( + "resume-upload", help="Resume an interrupted file upload") + resume_parser.add_argument("local_path", help="Local file path") + resume_parser.add_argument("remote_path", help="Remote file path") + + # List files + list_parser = subparsers.add_parser( + "list", help="List files in a remote directory") + list_parser.add_argument("remote_path", help="Remote directory path") + + # Move file + move_parser = subparsers.add_parser( + "move", help="Move or rename a remote file") + move_parser.add_argument("remote_src", help="Source remote path") + move_parser.add_argument("remote_dest", help="Destination remote path") + + # Delete file + delete_parser = subparsers.add_parser( + "delete", help="Delete a remote file") + delete_parser.add_argument("remote_path", help="Remote file path") + + return parser.parse_args() + + +def main(): + """ + Main function to execute the SFTP client operations based on command-line arguments. + """ + args = parse_arguments() + + client = SFTPClientWrapper( + hostname=args.hostname, + username=args.username, + password=args.password, + port=args.port, + key_file=args.key_file + ) + + try: + client.connect() + if args.command == "upload-dir": + client.upload_directory(args.local_dir, args.remote_dir) + elif args.command == "download-dir": + client.download_directory(args.remote_dir, args.local_dir) + elif args.command == "mkdir": + client.create_directory(args.remote_path) + elif args.command == "rmdir": + client.remove_directory(args.remote_path) + elif args.command == "info": + client.get_file_info(args.remote_path) + elif args.command == "resume-upload": + client.resume_upload(args.local_path, args.remote_path) + elif args.command == "list": + client.list_files(args.remote_path) + elif args.command == "move": + client.move_file(args.remote_src, args.remote_dest) + elif args.command == "delete": + client.delete_file(args.remote_path) + else: + logger.warning( + "Unknown command. Use --help to see available commands.") + finally: + client.disconnect() + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pytools/tools/ssh.py b/modules/lithium.pytools/tools/ssh.py new file mode 100644 index 00000000..eb6c1db8 --- /dev/null +++ b/modules/lithium.pytools/tools/ssh.py @@ -0,0 +1,588 @@ +# python +import paramiko +from paramiko.ssh_exception import ( + SSHException, + AuthenticationException, + NoValidConnectionsError, +) +from pathlib import Path +from typing import Union, List, Optional, Tuple, Literal +from loguru import logger +from rich.console import Console +from rich.table import Table +from rich.progress import Progress, BarColumn, TextColumn, TimeRemainingColumn +import sys +import argparse +import asyncio +import concurrent.futures + + +# Define custom exception classes +class SSHError(Exception): + """Base exception class for SSHClient.""" + + +class SSHConnectionError(SSHError): + """Exception for SSH connection failures.""" + + +class SSHCommandError(SSHError): + """Exception for SSH command execution failures.""" + + +class SSHPermissionError(SSHError): + """Exception for SSH permission related errors.""" + + +class SFTPError(SSHError): + """Exception for SFTP operation failures.""" + + +class SSHClient: + """Client class to manage SSH connections and operations.""" + + def __init__( + self, + hostname: str, + port: int, + username: str, + password: Optional[str] = None, + key_file: Optional[str] = None, + timeout: Optional[float] = 10.0, + ): + """ + Initialize the SSH client. + + Args: + hostname (str): Hostname or IP address. + port (int): Port number, typically 22. + username (str): Username for SSH login. + password (Optional[str]): Password for SSH (if using password authentication). + key_file (Optional[str]): Path to the private key file (if using key authentication). + timeout (Optional[float]): Connection timeout in seconds. + """ + self.hostname = hostname + self.port = port + self.username = username + self.password = password + self.key_file = key_file + self.timeout = timeout + self.client: Optional[paramiko.SSHClient] = None + self.sftp: Optional[paramiko.SFTPClient] = None + self.console = Console() + + def __enter__(self): + self.connect() + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + self.close() + + def setup_logging(self): + """Configure Loguru for logging.""" + logger.remove() + logger.add( + sys.stderr, + level="INFO", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}", + ) + logger.add( + "ssh_client.log", + rotation="5 MB", + retention="7 days", + enqueue=True, + level="DEBUG", + format="{time} | {level} | {message}", + ) + logger.debug("Logging is configured.") + + def connect(self): + """ + Connect to the remote SSH server. + Raises: + SSHConnectionError: If connection fails. + """ + logger.info( + f"Attempting to connect to {self.hostname}:{self.port} as {self.username}" + ) + self.setup_logging() + try: + self.client = paramiko.SSHClient() + self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + connect_params = { + "hostname": self.hostname, + "port": self.port, + "username": self.username, + "password": self.password, + "key_filename": self.key_file, + "look_for_keys": False, + "allow_agent": False, + "timeout": self.timeout, + } + self.client.connect(**connect_params) + self.sftp = self.client.open_sftp() + logger.success( + f"Successfully connected to {self.hostname}:{self.port}" + ) + except AuthenticationException as e: + logger.error(f"Authentication failed: {e}") + raise SSHConnectionError("Authentication failed") from e + except NoValidConnectionsError as e: + logger.error( + f"Unable to connect to {self.hostname}:{self.port}: {e}" + ) + raise SSHConnectionError( + f"Unable to connect to {self.hostname}:{self.port}" + ) from e + except SSHException as e: + logger.error(f"SSH connection failed: {e}") + raise SSHConnectionError("SSH connection failed") from e + except Exception as e: + logger.error(f"Connection failed: {e}") + raise SSHConnectionError("Connection failed") from e + + def execute_command( + self, command: str, timeout: Optional[float] = None + ) -> Tuple[str, str]: + """ + Execute a command on the remote SSH server. + + Args: + command (str): The command to execute. + timeout (Optional[float]): Optional timeout for command execution. + + Returns: + Tuple[str, str]: A tuple containing standard output and standard error. + + Raises: + SSHCommandError: If command execution fails. + """ + if self.client is None: + logger.error( + "Not connected to any SSH server. Call connect() first.") + raise SSHCommandError("Not connected to any SSH server.") + + logger.info(f"Executing command: {command}") + try: + stdin, stdout, stderr = self.client.exec_command( + command, timeout=timeout + ) + output = stdout.read().decode("utf-8") + error = stderr.read().decode("utf-8") + logger.debug(f"Command output: {output}") + if error: + logger.warning(f"Command error output: {error}") + exit_status = stdout.channel.recv_exit_status() + if exit_status != 0: + logger.error( + f"Command '{command}' failed with exit status {exit_status}" + ) + raise SSHCommandError( + f"Command '{command}' failed with exit status {exit_status}" + ) + logger.success(f"Command '{command}' executed successfully.") + return output, error + except SSHException as e: + logger.error(f"Failed to execute command '{command}': {e}") + raise SSHCommandError( + f"Failed to execute command '{command}'" + ) from e + except Exception as e: + logger.error(f"Unexpected error during command execution: {e}") + raise SSHCommandError( + "Unexpected error during command execution" + ) from e + + def upload_file( + self, local_path: Union[str, Path], remote_path: Union[str, Path] + ): + """ + Upload a file to the remote SSH server using SFTP. + + Args: + local_path (Union[str, Path]): Path to the local file. + remote_path (Union[str, Path]): Path on the remote server where the file will be uploaded. + + Raises: + SFTPError: If file upload fails. + """ + if self.sftp is None: + logger.error( + "SFTP session is not established. Call connect() first.") + raise SFTPError("SFTP session is not established.") + + logger.info(f"Uploading {local_path} to {remote_path}") + try: + # Use Rich Progress to show upload progress + file_size = Path(local_path).stat().st_size + with Progress( + "[progress.description]{task.description}", + BarColumn(), + "[progress.percentage]{task.percentage:>3.0f}%", + "•", + TimeRemainingColumn(), + ) as progress: + task = progress.add_task( + f"Uploading {Path(local_path).name}", total=file_size + ) + + def callback(transferred, total): + progress.update(task, completed=transferred) + + self.sftp.put( + str(local_path), + str(remote_path), + callback=callback, + ) + logger.success( + f"Successfully uploaded {local_path} to {remote_path}" + ) + self.console.print( + f"[bold green]Successfully uploaded {local_path} to {remote_path}[/bold green]" + ) + except FileNotFoundError as e: + logger.error(f"Local file not found: {e}") + raise SFTPError("Local file not found") from e + except SSHException as e: + logger.error(f"SFTP upload failed: {e}") + raise SFTPError("SFTP upload failed") from e + except Exception as e: + logger.error(f"Unexpected error during file upload: {e}") + raise SFTPError("Unexpected error during file upload") from e + + def download_file( + self, remote_path: Union[str, Path], local_path: Union[str, Path] + ): + """ + Download a file from the remote SSH server using SFTP. + + Args: + remote_path (Union[str, Path]): Path on the remote server to download. + local_path (Union[str, Path]): Path on the local machine where the file will be saved. + + Raises: + SFTPError: If file download fails. + """ + if self.sftp is None: + logger.error( + "SFTP session is not established. Call connect() first.") + raise SFTPError("SFTP session is not established.") + + logger.info(f"Downloading {remote_path} to {local_path}") + try: + # Use Rich Progress to show download progress + file_size = self.sftp.stat(str(remote_path)).st_size + with Progress( + "[progress.description]{task.description}", + BarColumn(), + "[progress.percentage]{task.percentage:>3.0f}%", + "•", + TimeRemainingColumn(), + ) as progress: + task = progress.add_task( + f"Downloading {Path(remote_path).name}", total=file_size + ) + + def callback(transferred, total): + progress.update(task, completed=transferred) + + self.sftp.get( + str(remote_path), + str(local_path), + callback=callback, + ) + logger.success( + f"Successfully downloaded {remote_path} to {local_path}" + ) + self.console.print( + f"[bold green]Successfully downloaded {remote_path} to {local_path}[/bold green]" + ) + except FileNotFoundError as e: + logger.error(f"Remote file not found: {e}") + raise SFTPError("Remote file not found") from e + except SSHException as e: + logger.error(f"SFTP download failed: {e}") + raise SFTPError("SFTP download failed") from e + except Exception as e: + logger.error(f"Unexpected error during file download: {e}") + raise SFTPError("Unexpected error during file download") from e + + def list_remote_directory( + self, remote_path: Union[str, Path] + ) -> List[str]: + """ + List the contents of a remote directory using SFTP. + + Args: + remote_path (Union[str, Path]): Path on the remote server to list. + + Returns: + List[str]: A list of file and directory names. + + Raises: + SFTPError: If listing fails. + """ + if self.sftp is None: + logger.error( + "SFTP session is not established. Call connect() first.") + raise SFTPError("SFTP session is not established.") + + logger.info(f"Listing directory: {remote_path}") + try: + files = self.sftp.listdir(str(remote_path)) + logger.success(f"Successfully listed directory: {remote_path}") + logger.debug(f"Directory contents: {files}") + + table = Table(title=f"Contents of {remote_path}") + table.add_column("Name", style="cyan", no_wrap=True) + table.add_column("Type", style="magenta") + table.add_column("Size", style="green") + + for file in files: + filepath = Path(remote_path) / file + try: + attr = self.sftp.stat(str(filepath)) + size = attr.st_size + mode = attr.st_mode + file_type = ( + "Directory" if paramiko.S_ISDIR(mode) else "File" + ) + table.add_row(file, file_type, str(size)) + except IOError: + table.add_row(file, "Unknown", "Unknown") + + self.console.print(table) + return files + except FileNotFoundError as e: + logger.error(f"Remote directory not found: {e}") + raise SFTPError("Remote directory not found") from e + except SSHException as e: + logger.error(f"SFTP list directory failed: {e}") + raise SFTPError("SFTP list directory failed") from e + except Exception as e: + logger.error(f"Unexpected error during listing directory: {e}") + raise SFTPError("Unexpected error during listing directory") from e + + def create_remote_directory(self, remote_path: Union[str, Path]): + """ + Create a directory on the remote SSH server using SFTP. + + Args: + remote_path (Union[str, Path]): Path on the remote server where the directory will be created. + + Raises: + SFTPError: If directory creation fails. + """ + if self.sftp is None: + logger.error( + "SFTP session is not established. Call connect() first.") + raise SFTPError("SFTP session is not established.") + + logger.info(f"Creating remote directory: {remote_path}") + try: + self.sftp.mkdir(str(remote_path)) + logger.success( + f"Successfully created remote directory: {remote_path}") + self.console.print( + f"[bold green]Successfully created remote directory: {remote_path}[/bold green]" + ) + except FileExistsError: + logger.warning(f"Remote directory already exists: {remote_path}") + self.console.print( + f"[yellow]Remote directory already exists: {remote_path}[/yellow]" + ) + except SSHException as e: + logger.error(f"SFTP mkdir failed: {e}") + raise SFTPError("SFTP mkdir failed") from e + except Exception as e: + logger.error(f"Unexpected error during creating directory: {e}") + raise SFTPError( + "Unexpected error during creating directory") from e + + def delete_remote_file(self, remote_path: Union[str, Path]): + """ + Delete a file on the remote SSH server using SFTP. + + Args: + remote_path (Union[str, Path]): Path on the remote server of the file to delete. + + Raises: + SFTPError: If file deletion fails. + """ + if self.sftp is None: + logger.error( + "SFTP session is not established. Call connect() first.") + raise SFTPError("SFTP session is not established.") + + logger.info(f"Deleting remote file: {remote_path}") + try: + self.sftp.remove(str(remote_path)) + logger.success(f"Successfully deleted remote file: {remote_path}") + self.console.print( + f"[bold green]Successfully deleted remote file: {remote_path}[/bold green]" + ) + except FileNotFoundError as e: + logger.error(f"Remote file not found: {e}") + raise SFTPError("Remote file not found") from e + except SSHException as e: + logger.error(f"SFTP delete failed: {e}") + raise SFTPError("SFTP delete failed") from e + except Exception as e: + logger.error(f"Unexpected error during file deletion: {e}") + raise SFTPError("Unexpected error during file deletion") from e + + def close(self): + """ + Close the SSH and SFTP connections. + """ + logger.info("Closing SSH and SFTP connections.") + try: + if self.sftp: + self.sftp.close() + logger.debug("SFTP connection closed.") + if self.client: + self.client.close() + logger.debug("SSH connection closed.") + logger.success("All connections closed successfully.") + self.console.print( + "[bold green]All connections closed successfully.[/bold green]") + except Exception as e: + logger.error(f"Error while closing connections: {e}") + raise SSHError("Error while closing connections") from e + + +def parse_args() -> argparse.Namespace: + """ + Parse command-line arguments. + + Returns: + argparse.Namespace: Parsed arguments. + """ + parser = argparse.ArgumentParser(description="SSH Client Tool") + parser.add_argument("--hostname", required=True, + help="Hostname or IP address") + parser.add_argument( + "--port", type=int, default=22, help="SSH port number" + ) + parser.add_argument("--username", required=True, help="SSH username") + + auth_group = parser.add_mutually_exclusive_group(required=True) + auth_group.add_argument("--password", help="SSH password") + auth_group.add_argument( + "--key_file", help="Path to SSH private key file" + ) + + subparsers = parser.add_subparsers( + dest="command", help="Available commands") + + # Execute command + exec_parser = subparsers.add_parser( + "exec", help="Execute a command on the remote server" + ) + exec_parser.add_argument("cmd", help="Command to execute") + exec_parser.add_argument( + "--timeout", type=float, default=None, help="Command timeout in seconds" + ) + + # Upload file + upload_parser = subparsers.add_parser( + "upload", help="Upload a file to the remote server" + ) + upload_parser.add_argument("local_path", help="Path to the local file") + upload_parser.add_argument( + "remote_path", help="Path on the remote server" + ) + + # Download file + download_parser = subparsers.add_parser( + "download", help="Download a file from the remote server" + ) + download_parser.add_argument( + "remote_path", help="Path on the remote server" + ) + download_parser.add_argument( + "local_path", help="Path to save the downloaded file locally" + ) + + # List directory + list_parser = subparsers.add_parser( + "list", help="List contents of a remote directory" + ) + list_parser.add_argument("remote_path", help="Remote directory path") + + # Create directory + mkdir_parser = subparsers.add_parser( + "mkdir", help="Create a directory on the remote server" + ) + mkdir_parser.add_argument( + "remote_path", help="Path of the remote directory to create" + ) + + # Delete file + delete_parser = subparsers.add_parser( + "delete", help="Delete a file on the remote server" + ) + delete_parser.add_argument( + "remote_path", help="Path of the remote file to delete" + ) + + return parser.parse_args() + + +def main(): + """ + Main function to execute the SSH client operations based on command-line arguments. + """ + args = parse_args() + config = { + "hostname": args.hostname, + "port": args.port, + "username": args.username, + "password": args.password, + "key_file": args.key_file, + } + + try: + with SSHClient(**config) as ssh: + if args.command == "exec": + output, error = ssh.execute_command( + args.cmd, timeout=args.timeout + ) + if output: + console = Console() + console.print( + "[bold green]Output:[/bold green]\n" + output.strip() + ) + if error: + console.print( + "[bold red]Error:[/bold red]\n" + error.strip() + ) + + elif args.command == "upload": + ssh.upload_file(args.local_path, args.remote_path) + + elif args.command == "download": + ssh.download_file(args.remote_path, args.local_path) + + elif args.command == "list": + ssh.list_remote_directory(args.remote_path) + + elif args.command == "mkdir": + ssh.create_remote_directory(args.remote_path) + + elif args.command == "delete": + ssh.delete_remote_file(args.remote_path) + + else: + logger.error("No valid command provided.") + sys.exit(1) + + except SSHError as e: + logger.critical(f"SSH operation failed: {e}") + console = Console() + console.print(f"[bold red]SSH operation failed: {e}[/bold red]") + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pytools/tools/ssl_helper.py b/modules/lithium.pytools/tools/ssl_helper.py index f04bbcb9..a183af30 100644 --- a/modules/lithium.pytools/tools/ssl_helper.py +++ b/modules/lithium.pytools/tools/ssl_helper.py @@ -1,3 +1,40 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +@file ssl_helper.py +@brief Enhanced SSL Certificate Management Tool. + +@details This script provides functionalities to create, manage, renew, and export SSL certificates. + It includes robust exception handling and detailed logging using Loguru. + + Usage: + python ssl_helper.py [options] + + Options: + --cert-dir Directory to save the certificates. + --key-size Size of RSA key in bits. + --valid-days Number of days the certificate is valid. + --san List of Subject Alternative Names (SANs). + --view View certificate details. + --check-expiry Check if the certificate is about to expire. + --renew Renew the certificate. + --export-pfx Export the certificate and key as a PKCS#12 file. + --cert-type Type of certificate to create (server, client, ca). + --crl Generate a Certificate Revocation List (CRL). + --crl-dir Directory to save the CRL file. + --password Password for exporting PKCS#12 file. + --revoke Revoke certificates by their serial numbers. + --help Show help message and exit. + +@requires - Python 3.7+ + - `cryptography` Python library + - `loguru` Python library + +@version 2.0 +@date 2024-04-27 +""" + +import sys import ssl import datetime import argparse @@ -6,20 +43,47 @@ from cryptography.hazmat.primitives import serialization, hashes from cryptography.hazmat.primitives.asymmetric import rsa from pathlib import Path -from typing import List, Optional - - -def create_key(key_size: int = 2048): +from typing import List, Optional, Tuple +from loguru import logger + +# Configure Loguru +logger.remove() +logger.add( + "ssl_helper.log", + rotation="5 MB", + retention="7 days", + compression="zip", + enqueue=True, + encoding="utf-8", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}", + level="DEBUG", +) +logger.add( + sys.stderr, + level="INFO", + format="{message}", +) +logger.debug("Logging is configured.") + + +def create_key(key_size: int = 2048) -> rsa.RSAPrivateKey: """ Generates an RSA private key. :param key_size: RSA key size in bits. :return: A private key object. """ - return rsa.generate_private_key( - public_exponent=65537, - key_size=key_size, - ) + logger.debug(f"Generating RSA private key with size {key_size} bits.") + try: + key = rsa.generate_private_key( + public_exponent=65537, + key_size=key_size, + ) + logger.info("RSA private key generated successfully.") + return key + except Exception as e: + logger.exception(f"Failed to generate RSA private key: {e}") + raise def create_self_signed_cert( @@ -29,7 +93,7 @@ def create_self_signed_cert( valid_days: int = 365, san_list: Optional[List[str]] = None, cert_type: str = "server" -): +) -> Tuple[Path, Path]: """ Creates a self-signed SSL certificate for a hostname with optional SANs. @@ -41,74 +105,85 @@ def create_self_signed_cert( :param cert_type: Type of certificate ("server", "client", or "ca"). :return: Tuple of paths (certificate_path, key_path). """ - key = create_key(key_size) - - subject = x509.Name([ - x509.NameAttribute(NameOID.COMMON_NAME, hostname) - ]) - - alt_names = [x509.DNSName(hostname)] - if san_list: - alt_names.extend([x509.DNSName(name) for name in san_list]) - - cert_builder = ( - x509.CertificateBuilder() - .subject_name(subject) - .issuer_name(subject) - .public_key(key.public_key()) - .serial_number(x509.random_serial_number()) - .not_valid_before(datetime.datetime.utcnow()) - .not_valid_after(datetime.datetime.utcnow() + datetime.timedelta(days=valid_days)) - .add_extension( - x509.SubjectAlternativeName(alt_names), - critical=False, + logger.debug( + f"Creating a self-signed certificate for hostname '{hostname}' with type '{cert_type}'.") + try: + key = create_key(key_size) + + subject = x509.Name([ + x509.NameAttribute(NameOID.COMMON_NAME, hostname) + ]) + + alt_names = [x509.DNSName(hostname)] + if san_list: + alt_names.extend([x509.DNSName(name) for name in san_list]) + + cert_builder = ( + x509.CertificateBuilder() + .subject_name(subject) + .issuer_name(subject) + .public_key(key.public_key()) + .serial_number(x509.random_serial_number()) + .not_valid_before(datetime.datetime.utcnow()) + .not_valid_after(datetime.datetime.utcnow() + datetime.timedelta(days=valid_days)) + .add_extension( + x509.SubjectAlternativeName(alt_names), + critical=False, + ) ) - ) - if cert_type == "ca": - cert_builder = cert_builder.add_extension( - x509.BasicConstraints(ca=True, path_length=None), - critical=True, - ) - else: - cert_builder = cert_builder.add_extension( - x509.BasicConstraints(ca=False, path_length=None), - critical=True, - ) - if cert_type == "client": + if cert_type == "ca": cert_builder = cert_builder.add_extension( - x509.ExtendedKeyUsage( - [x509.oid.ExtendedKeyUsageOID.CLIENT_AUTH]), - critical=False, + x509.BasicConstraints(ca=True, path_length=None), + critical=True, ) - elif cert_type == "server": + else: cert_builder = cert_builder.add_extension( - x509.ExtendedKeyUsage( - [x509.oid.ExtendedKeyUsageOID.SERVER_AUTH]), - critical=False, + x509.BasicConstraints(ca=False, path_length=None), + critical=True, ) - - cert = cert_builder.sign(key, hashes.SHA256()) - - cert_path = cert_dir / f"{hostname}.crt" - key_path = cert_dir / f"{hostname}.key" - - with cert_path.open("wb") as cert_file: - cert_file.write(cert.public_bytes(serialization.Encoding.PEM)) - - with key_path.open("wb") as key_file: - key_file.write( - key.private_bytes( - encoding=serialization.Encoding.PEM, - format=serialization.PrivateFormat.TraditionalOpenSSL, - encryption_algorithm=serialization.NoEncryption(), + if cert_type == "client": + cert_builder = cert_builder.add_extension( + x509.ExtendedKeyUsage( + [x509.oid.ExtendedKeyUsageOID.CLIENT_AUTH]), + critical=False, + ) + elif cert_type == "server": + cert_builder = cert_builder.add_extension( + x509.ExtendedKeyUsage( + [x509.oid.ExtendedKeyUsageOID.SERVER_AUTH]), + critical=False, + ) + + cert = cert_builder.sign(key, hashes.SHA256()) + logger.info("Self-signed certificate created successfully.") + + cert_path = cert_dir / f"{hostname}.crt" + key_path = cert_dir / f"{hostname}.key" + + cert_dir.mkdir(parents=True, exist_ok=True) + + with cert_path.open("wb") as cert_file: + cert_file.write(cert.public_bytes(serialization.Encoding.PEM)) + logger.debug(f"Certificate saved to {cert_path}") + + with key_path.open("wb") as key_file: + key_file.write( + key.private_bytes( + encoding=serialization.Encoding.PEM, + format=serialization.PrivateFormat.TraditionalOpenSSL, + encryption_algorithm=serialization.NoEncryption(), + ) ) - ) + logger.debug(f"Private key saved to {key_path}") - return cert_path, key_path + return cert_path, key_path + except Exception as e: + logger.exception(f"Failed to create self-signed certificate: {e}") + raise -def export_to_pkcs12(cert_path: Path, key_path: Path, password: str, export_path: Optional[Path] = None): +def export_to_pkcs12(cert_path: Path, key_path: Path, password: str, export_path: Optional[Path] = None) -> Path: """ Export the certificate and private key to a PKCS#12 (PFX) file. @@ -118,32 +193,41 @@ def export_to_pkcs12(cert_path: Path, key_path: Path, password: str, export_path :param export_path: Path to save the PFX file, defaults to same directory as certificate. :return: Path to the PFX file. """ - if export_path is None: - export_path = cert_path.with_suffix(".pfx") - - with cert_path.open("rb") as cert_file: - cert = x509.load_pem_x509_certificate(cert_file.read()) - - with key_path.open("rb") as key_file: - key = serialization.load_pem_private_key( - key_file.read(), password=None) - - pfx = serialization.pkcs12.serialize_key_and_certificates( - name=cert.subject.rfc4514_string().encode(), - key=key, - cert=cert, - cas=None, - encryption_algorithm=serialization.BestAvailableEncryption( - password.encode()) - ) + logger.debug( + f"Exporting certificate '{cert_path}' and key '{key_path}' to PKCS#12 file.") + try: + if export_path is None: + export_path = cert_path.with_suffix(".pfx") + + with cert_path.open("rb") as cert_file: + cert = x509.load_pem_x509_certificate(cert_file.read()) + logger.debug("Certificate loaded successfully for PKCS#12 export.") + + with key_path.open("rb") as key_file: + key = serialization.load_pem_private_key( + key_file.read(), password=None) + logger.debug("Private key loaded successfully for PKCS#12 export.") + + pfx = serialization.pkcs12.serialize_key_and_certificates( + name=cert.subject.rfc4514_string().encode(), + key=key, + cert=cert, + cas=None, + encryption_algorithm=serialization.BestAvailableEncryption( + password.encode()) + ) - with export_path.open("wb") as pfx_file: - pfx_file.write(pfx) + with export_path.open("wb") as pfx_file: + pfx_file.write(pfx) + logger.info(f"PKCS#12 file exported successfully to {export_path}") - return export_path + return export_path + except Exception as e: + logger.exception(f"Failed to export to PKCS#12: {e}") + raise -def generate_crl(cert: x509.Certificate, private_key: rsa.RSAPrivateKey, revoked_certs: List[x509.RevokedCertificate], crl_dir: Path): +def generate_crl(cert: x509.Certificate, private_key: rsa.RSAPrivateKey, revoked_certs: List[x509.RevokedCertificate], crl_dir: Path) -> Path: """ Generate a Certificate Revocation List (CRL). @@ -153,21 +237,31 @@ def generate_crl(cert: x509.Certificate, private_key: rsa.RSAPrivateKey, revoked :param crl_dir: Directory to save the CRL file. :return: Path to the CRL file. """ - crl_builder = x509.CertificateRevocationListBuilder().issuer_name(cert.subject) + logger.debug("Generating Certificate Revocation List (CRL).") + try: + crl_builder = x509.CertificateRevocationListBuilder().issuer_name(cert.subject) - for revoked_cert in revoked_certs: - crl_builder = crl_builder.add_revoked_certificate(revoked_cert) + for revoked_cert in revoked_certs: + crl_builder = crl_builder.add_revoked_certificate(revoked_cert) + logger.debug( + f"Added revoked certificate with serial number {revoked_cert.serial_number} to CRL.") - crl = crl_builder.last_update(datetime.datetime.utcnow()) \ - .next_update(datetime.datetime.utcnow() + datetime.timedelta(days=7)) \ - .sign(private_key, hashes.SHA256()) + crl = crl_builder.last_update(datetime.datetime.utcnow()) \ + .next_update(datetime.datetime.utcnow() + datetime.timedelta(days=7)) \ + .sign(private_key, hashes.SHA256()) + logger.info("CRL signed successfully.") - crl_path = crl_dir / "revoked.crl" + crl_dir.mkdir(parents=True, exist_ok=True) + crl_path = crl_dir / "revoked.crl" - with crl_path.open("wb") as crl_file: - crl_file.write(crl.public_bytes(serialization.Encoding.PEM)) + with crl_path.open("wb") as crl_file: + crl_file.write(crl.public_bytes(serialization.Encoding.PEM)) + logger.info(f"CRL saved to {crl_path}") - return crl_path + return crl_path + except Exception as e: + logger.exception(f"Failed to generate CRL: {e}") + raise def load_ssl_context(cert_path: Path, key_path: Path) -> ssl.SSLContext: @@ -178,9 +272,16 @@ def load_ssl_context(cert_path: Path, key_path: Path) -> ssl.SSLContext: :param key_path: Path to the private key file. :return: An SSLContext object. """ - context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) - context.load_cert_chain(certfile=cert_path, keyfile=key_path) - return context + logger.debug( + f"Loading SSL context from cert '{cert_path}' and key '{key_path}'.") + try: + context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) + context.load_cert_chain(certfile=cert_path, keyfile=key_path) + logger.info("SSL context loaded successfully.") + return context + except Exception as e: + logger.exception(f"Failed to load SSL context: {e}") + raise def view_cert_details(cert_path: Path): @@ -189,19 +290,28 @@ def view_cert_details(cert_path: Path): :param cert_path: Path to the certificate file. """ - with cert_path.open("rb") as cert_file: - cert = x509.load_pem_x509_certificate(cert_file.read()) - print(f"Issuer: {cert.issuer.rfc4514_string()}") - print(f"Subject: {cert.subject.rfc4514_string()}") - print(f"Serial Number: {cert.serial_number}") - print(f"Valid From: {cert.not_valid_before}") - print(f"Valid Until: {cert.not_valid_after}") - print( - f"Public Key: {cert.public_key().public_bytes(serialization.Encoding.PEM, serialization.PublicFormat.SubjectPublicKeyInfo).decode('utf-8')}") - print(f"Extensions: {[ext for ext in cert.extensions]}") - - -def check_cert_expiry(cert_path: Path, warning_days: int = 30): + logger.debug(f"Viewing details of certificate '{cert_path}'.") + try: + with cert_path.open("rb") as cert_file: + cert = x509.load_pem_x509_certificate(cert_file.read()) + logger.info(f"Issuer: {cert.issuer.rfc4514_string()}") + logger.info(f"Subject: {cert.subject.rfc4514_string()}") + logger.info(f"Serial Number: {cert.serial_number}") + logger.info(f"Valid From: {cert.not_valid_before}") + logger.info(f"Valid Until: {cert.not_valid_after}") + public_key = cert.public_key().public_bytes( + serialization.Encoding.PEM, + serialization.PublicFormat.SubjectPublicKeyInfo + ).decode('utf-8') + logger.info(f"Public Key:\n{public_key}") + extensions = [ext for ext in cert.extensions] + logger.info(f"Extensions: {extensions}") + except Exception as e: + logger.exception(f"Failed to view certificate details: {e}") + raise + + +def check_cert_expiry(cert_path: Path, warning_days: int = 30) -> bool: """ Check if a certificate is about to expire. @@ -209,17 +319,23 @@ def check_cert_expiry(cert_path: Path, warning_days: int = 30): :param warning_days: Number of days before expiry to trigger a warning. :return: True if the certificate is expiring soon, else False. """ - with cert_path.open("rb") as cert_file: - cert = x509.load_pem_x509_certificate(cert_file.read()) - remaining_days = (cert.not_valid_after - - datetime.datetime.utcnow()).days - if remaining_days <= warning_days: - print( - f"Warning: Certificate is expiring in {remaining_days} days!") - return True - else: - print(f"Certificate is valid for {remaining_days} more days.") - return False + logger.debug(f"Checking expiry of certificate '{cert_path}'.") + try: + with cert_path.open("rb") as cert_file: + cert = x509.load_pem_x509_certificate(cert_file.read()) + remaining_days = (cert.not_valid_after - + datetime.datetime.utcnow()).days + if remaining_days <= warning_days: + logger.warning( + f"Certificate '{cert_path}' is expiring in {remaining_days} days!") + return True + else: + logger.info( + f"Certificate '{cert_path}' is valid for {remaining_days} more days.") + return False + except Exception as e: + logger.exception(f"Failed to check certificate expiry: {e}") + raise def renew_cert( @@ -227,7 +343,7 @@ def renew_cert( key_path: Path, valid_days: int = 365, new_cert_dir: Optional[Path] = None -): +) -> Path: """ Renew an existing certificate by creating a new one with extended validity. @@ -237,43 +353,105 @@ def renew_cert( :param new_cert_dir: Directory to save the new certificate, defaults to the original location. :return: Path to the new certificate. """ - if new_cert_dir is None: - new_cert_dir = cert_path.parent - - with cert_path.open("rb") as cert_file: - cert = x509.load_pem_x509_certificate(cert_file.read()) - - subject = cert.subject - issuer = cert.issuer - key = None - - with key_path.open("rb") as key_file: - key = serialization.load_pem_private_key( - key_file.read(), password=None) - - new_cert = ( - x509.CertificateBuilder() - .subject_name(subject) - .issuer_name(issuer) - .public_key(key.public_key()) - .serial_number(x509.random_serial_number()) - .not_valid_before(datetime.datetime.utcnow()) - .not_valid_after(datetime.datetime.utcnow() + datetime.timedelta(days=valid_days)) - .sign(key, hashes.SHA256()) - ) + logger.debug( + f"Renewing certificate '{cert_path}' with new validity of {valid_days} days.") + try: + if new_cert_dir is None: + new_cert_dir = cert_path.parent + + with cert_path.open("rb") as cert_file: + cert = x509.load_pem_x509_certificate(cert_file.read()) + logger.debug("Existing certificate loaded for renewal.") + + subject = cert.subject + issuer = cert.issuer + + with key_path.open("rb") as key_file: + key = serialization.load_pem_private_key( + key_file.read(), password=None) + logger.debug("Private key loaded for renewal.") + + new_cert = ( + x509.CertificateBuilder() + .subject_name(subject) + .issuer_name(issuer) + .public_key(key.public_key()) + .serial_number(x509.random_serial_number()) + .not_valid_before(datetime.datetime.utcnow()) + .not_valid_after(datetime.datetime.utcnow() + datetime.timedelta(days=valid_days)) + .add_extension( + x509.SubjectAlternativeName([ + dns for dns in cert.extensions.get_extension_for_class( + x509.SubjectAlternativeName).value + ]), + critical=False, + ) + .sign(key, hashes.SHA256()) + ) + logger.info("New certificate built successfully for renewal.") + + common_name = cert.subject.get_attributes_for_oid(NameOID.COMMON_NAME)[ + 0].value + new_cert_path = new_cert_dir / f"{common_name}_renewed.crt" + + with new_cert_path.open("wb") as new_cert_file: + new_cert_file.write(new_cert.public_bytes( + serialization.Encoding.PEM)) + logger.info(f"Renewed certificate saved to {new_cert_path}") + + return new_cert_path + except Exception as e: + logger.exception(f"Failed to renew certificate: {e}") + raise - new_cert_path = new_cert_dir / \ - f"{cert.subject.get_attributes_for_oid(NameOID.COMMON_NAME)[0].value}_renewed.crt" - with new_cert_path.open("wb") as new_cert_file: - new_cert_file.write(new_cert.public_bytes(serialization.Encoding.PEM)) +def verify_certificate(cert_path: Path, ca_cert_path: Optional[Path] = None) -> bool: + """ + Verify a certificate against a CA certificate. - return new_cert_path + :param cert_path: Path to the certificate to verify. + :param ca_cert_path: Path to the CA certificate. If None, uses default system CAs. + :return: True if verification succeeds, False otherwise. + """ + logger.debug( + f"Verifying certificate '{cert_path}' against CA '{ca_cert_path}'.") + try: + context = ssl.create_default_context( + cafile=ca_cert_path) if ca_cert_path else ssl.create_default_context() + with cert_path.open("rb") as cert_file: + cert_pem = cert_file.read() + logger.debug("Certificate loaded for verification.") + + # Since ssl does not provide direct certificate verification, use cryptography + cert = x509.load_pem_x509_certificate(cert_pem) + if ca_cert_path: + with ca_cert_path.open("rb") as ca_file: + ca_cert = x509.load_pem_x509_certificate(ca_file.read()) + ca_public_key = ca_cert.public_key() + ca_public_key.verify( + cert.signature, + cert.tbs_certificate_bytes, + padding=cert.signature_hash_algorithm.padding, + algorithm=cert.signature_hash_algorithm, + ) + else: + logger.warning( + "No CA certificate provided for verification. Using system CAs.") + # Implement system CA verification if needed + + logger.info(f"Certificate '{cert_path}' is valid and trusted.") + return True + except Exception as e: + logger.error(f"Certificate verification failed: {e}") + return False if __name__ == "__main__": + import sys + parser = argparse.ArgumentParser( - description="SSL Certificate Management Tool") + description="Enhanced SSL Certificate Management Tool" + ) parser.add_argument("hostname", help="The hostname for the certificate") parser.add_argument("--cert-dir", type=Path, default=Path("./certs"), help="Directory to save the certificates") @@ -299,55 +477,82 @@ def renew_cert( help="Directory to save the CRL file") parser.add_argument("--password", type=str, help="Password for exporting PKCS#12 file") - parser.add_argument("--revoke", action="append", - help="Revoke certificates by their serial numbers") + parser.add_argument("--revoke", nargs='*', + help="Revoke certificates by their serial numbers (hexadecimal)") args = parser.parse_args() - args.cert_dir.mkdir(exist_ok=True) - - if args.view: - cert_path = args.cert_dir / f"{args.hostname}.crt" - view_cert_details(cert_path) - elif args.check_expiry: - cert_path = args.cert_dir / f"{args.hostname}.crt" - check_cert_expiry(cert_path) - elif args.renew: - cert_path = args.cert_dir / f"{args.hostname}.crt" - key_path = args.cert_dir / f"{args.hostname}.key" - new_cert_path = renew_cert( - cert_path, key_path, args.valid_days, args.cert_dir) - print(f"Certificate renewed and saved to {new_cert_path}") - elif args.export_pfx: - cert_path = args.cert_dir / f"{args.hostname}.crt" - key_path = args.cert_dir / f"{args.hostname}.key" - if not args.password: - raise ValueError("Password is required for exporting to PKCS#12") - pfx_path = export_to_pkcs12(cert_path, key_path, args.password) - print(f"PKCS#12 file exported to {pfx_path}") - elif args.crl: - cert_path = args.cert_dir / f"{args.hostname}.crt" - key_path = args.cert_dir / f"{args.hostname}.key" - revoked_certs = [] - if args.revoke: - for serial in args.revoke: - revoked_cert = x509.RevokedCertificateBuilder().serial_number(int(serial, 16)) \ - .revocation_date(datetime.datetime.utcnow()) \ - .build(hashes.SHA256()) - revoked_certs.append(revoked_cert) - crl_path = generate_crl(x509.load_pem_x509_certificate(cert_path.read_bytes()), - serialization.load_pem_private_key( - key_path.read_bytes(), password=None), - revoked_certs, args.crl_dir) - print(f"CRL generated and saved to {crl_path}") - else: - cert_path, key_path = create_self_signed_cert( - args.hostname, - args.cert_dir, - args.key_size, - args.valid_days, - args.san, - args.cert_type - ) - print(f"Certificate generated: {cert_path}") - print(f"Private key generated: {key_path}") + try: + args.cert_dir.mkdir(parents=True, exist_ok=True) + logger.debug(f"Certificate directory set to '{args.cert_dir}'.") + + if args.view: + cert_path = args.cert_dir / f"{args.hostname}.crt" + view_cert_details(cert_path) + elif args.check_expiry: + cert_path = args.cert_dir / f"{args.hostname}.crt" + check_cert_expiry(cert_path) + elif args.renew: + cert_path = args.cert_dir / f"{args.hostname}.crt" + key_path = args.cert_dir / f"{args.hostname}.key" + new_cert_path = renew_cert( + cert_path, key_path, args.valid_days, args.cert_dir) + logger.info(f"Certificate renewed and saved to {new_cert_path}") + print(f"Certificate renewed and saved to {new_cert_path}") + elif args.export_pfx: + cert_path = args.cert_dir / f"{args.hostname}.crt" + key_path = args.cert_dir / f"{args.hostname}.key" + if not args.password: + logger.error("Password is required for exporting to PKCS#12.") + print("Error: Password is required for exporting to PKCS#12.") + sys.exit(1) + pfx_path = export_to_pkcs12(cert_path, key_path, args.password) + logger.info(f"PKCS#12 file exported to {pfx_path}") + print(f"PKCS#12 file exported to {pfx_path}") + elif args.crl: + cert_path = args.cert_dir / f"{args.hostname}.crt" + key_path = args.cert_dir / f"{args.hostname}.key" + revoked_certs = [] + if args.revoke: + for serial in args.revoke: + try: + revoked_cert = x509.RevokedCertificateBuilder().serial_number(int(serial, 16)) \ + .revocation_date(datetime.datetime.utcnow()) \ + .build(hashes.SHA256()) + revoked_certs.append(revoked_cert) + logger.debug( + f"Revoked certificate with serial number {serial} added to CRL.") + except ValueError as ve: + logger.error(f"Invalid serial number '{serial}': {ve}") + print(f"Invalid serial number '{serial}': {ve}") + sys.exit(1) + else: + logger.warning("No certificates specified for revocation.") + crl_path = generate_crl( + x509.load_pem_x509_certificate(cert_path.read_bytes()), + serialization.load_pem_private_key( + key_path.read_bytes(), password=None), + revoked_certs, args.crl_dir) + logger.info(f"CRL generated and saved to {crl_path}") + print(f"CRL generated and saved to {crl_path}") + else: + cert_path, key_path = create_self_signed_cert( + args.hostname, + args.cert_dir, + args.key_size, + args.valid_days, + args.san, + args.cert_type + ) + logger.info(f"Certificate generated: {cert_path}") + logger.info(f"Private key generated: {key_path}") + print(f"Certificate generated: {cert_path}") + print(f"Private key generated: {key_path}") + except KeyboardInterrupt: + logger.warning("Operation interrupted by user.") + print("\nOperation interrupted by user.") + sys.exit(0) + except Exception as e: + logger.exception(f"An unexpected error occurred: {e}") + print(f"An unexpected error occurred: {e}") + sys.exit(1) diff --git a/modules/lithium.pytools/tools/unzip.py b/modules/lithium.pytools/tools/unzip.py new file mode 100644 index 00000000..86e370de --- /dev/null +++ b/modules/lithium.pytools/tools/unzip.py @@ -0,0 +1,533 @@ +import asyncio +import subprocess +import shutil +from pathlib import Path +from typing import Union, List, Optional, Tuple, Literal +from dataclasses import dataclass, field + +from loguru import logger +from rich.console import Console +from rich.table import Table +from rich.progress import Progress, BarColumn, TextColumn, TimeRemainingColumn +import argparse +import sys + +# Define custom exception classes + + +class UnzipError(Exception): + """Base exception class for UnzipWrapper.""" + + +class UnzipExtractionError(UnzipError): + """Exception for extraction failures.""" + + +class UnzipListError(UnzipError): + """Exception for listing contents failures.""" + + +class UnzipValidationError(UnzipError): + """Exception for parameter validation failures.""" + + +class UnzipIntegrityError(UnzipError): + """Exception for archive integrity test failures.""" + + +class UnzipDeleteError(UnzipError): + """Exception for deletion failures.""" + + +@dataclass +class UnzipConfig: + """Configuration for UnzipWrapper.""" + executable: str = "unzip" + log_file: Path = Path("unzip_wrapper.log") + log_level: str = "DEBUG" + + +class UnzipWrapper: + """Wrapper class for the unzip command-line tool.""" + + def __init__(self, config: UnzipConfig = UnzipConfig()): + """ + Initialize the unzip command-line tool wrapper. + + Args: + config (UnzipConfig): Configuration for the UnzipWrapper. + """ + self.config = config + self.console = Console() + self.setup_logging() + self._validate_executable() + + def setup_logging(self): + """Configure Loguru for logging.""" + logger.remove() + logger.add( + self.config.log_file, + rotation="5 MB", + retention="7 days", + enqueue=True, + level=self.config.log_level, + format="{time} | {level} | {message}", + ) + logger.add( + sys.stderr, + level="INFO", + format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}", + ) + logger.debug("Logging is configured.") + + def _validate_executable(self): + """Validate that the unzip executable exists.""" + if not shutil.which(self.config.executable): + logger.error(f"Executable not found: {self.config.executable}") + raise UnzipValidationError( + f"Executable does not exist: {self.config.executable}" + ) + logger.info(f"Using unzip executable: {self.config.executable}") + + async def _run_command(self, args: List[str]) -> subprocess.CompletedProcess: + """ + Asynchronously run the unzip command and capture output. + + Args: + args (List[str]): Arguments to pass to unzip. + + Returns: + subprocess.CompletedProcess: Completed process with return code and output. + + Raises: + UnzipError: If the unzip command fails. + """ + command = [self.config.executable] + args + logger.debug(f"Running command: {' '.join(command)}") + try: + process = await asyncio.create_subprocess_exec( + *command, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + ) + stdout, stderr = await process.communicate() + if process.returncode != 0: + logger.error( + f"Unzip command failed with exit code {process.returncode}" + ) + logger.error(f"Error output: {stderr.decode().strip()}") + raise UnzipError( + f"Command execution failed: {' '.join(command)}" + ) + logger.debug(f"Command output: {stdout.decode().strip()}") + return subprocess.CompletedProcess( + args=command, + returncode=process.returncode, + stdout=stdout.decode().strip(), + stderr=stderr.decode().strip() + ) + except Exception as e: + logger.error(f"Failed to run unzip command: {e}") + raise UnzipError( + f"Failed to run command: {' '.join(command)}") from e + + def _validate_archive_exists(self, archive: Union[str, Path]) -> None: + """ + Validate that the archive exists. + + Args: + archive (Union[str, Path]): Path to the archive. + + Raises: + UnzipValidationError: If the archive does not exist. + """ + if not Path(archive).exists(): + logger.error(f"Archive does not exist: {archive}") + raise UnzipValidationError(f"Archive does not exist: {archive}") + logger.debug("Archive exists") + + async def extract( + self, + archive: Union[str, Path], + destination: Union[str, Path], + password: Optional[str] = None, + force: bool = False + ) -> None: + """ + Extract the specified archive to the destination folder. + + Args: + archive (Union[str, Path]): Path to the archive. + destination (Union[str, Path]): Path to the extraction destination. + password (Optional[str]): Password for the archive (optional). + force (bool): Whether to forcibly overwrite the destination directory if it exists. + + Raises: + UnzipExtractionError: If extraction fails. + """ + logger.info( + f"Starting extraction of {archive} to {destination} with force={force}" + ) + self._validate_archive_exists(archive) + destination_path = Path(destination) + + if destination_path.exists(): + if force: + logger.warning( + f"Destination directory exists and will be removed: {destination}" + ) + try: + shutil.rmtree(destination_path) + logger.info( + f"Removed destination directory: {destination}") + except Exception as e: + logger.error( + f"Failed to remove destination directory: {e}") + raise UnzipExtractionError( + f"Failed to remove destination directory: {destination}" + ) from e + else: + logger.error(f"Destination directory exists: {destination}") + raise UnzipValidationError( + f"Destination directory exists: {destination}" + ) + + try: + destination_path.mkdir(parents=True, exist_ok=True) + args = ["-o", str(archive), "-d", str(destination)] + if password: + args.extend(["-P", password]) + logger.debug(f"Unzip arguments: {args}") + await self._run_command(args) + logger.success( + f"Successfully extracted {archive} to {destination}" + ) + self.console.print( + f"[bold green]Successfully extracted {archive} to {destination}[/bold green]" + ) + except UnzipError as e: + logger.error(f"Extraction process failed: {e}") + raise UnzipExtractionError("Extraction failed") from e + + async def list_contents( + self, + archive: Union[str, Path], + password: Optional[str] = None + ) -> str: + """ + List the contents of the archive. + + Args: + archive (Union[str, Path]): Path to the archive. + password (Optional[str]): Password for the archive (optional). + + Returns: + str: String representation of the archive contents. + + Raises: + UnzipListError: If listing contents fails. + """ + logger.info(f"Listing contents of {archive}") + self._validate_archive_exists(archive) + args = ["-l", str(archive)] + if password: + args.extend(["-P", password]) + try: + result = await self._run_command(args) + logger.success(f"Successfully listed contents of {archive}") + return result.stdout + except UnzipError as e: + logger.error(f"Listing contents failed: {e}") + raise UnzipListError("Listing contents failed") from e + + async def test_integrity( + self, + archive: Union[str, Path], + password: Optional[str] = None + ) -> bool: + """ + Test the integrity of the archive. + + Args: + archive (Union[str, Path]): Path to the archive. + password (Optional[str]): Password for the archive (optional). + + Returns: + bool: Whether the test was successful. + + Raises: + UnzipIntegrityError: If integrity test fails. + """ + logger.info(f"Testing integrity of {archive}") + self._validate_archive_exists(archive) + args = ["-t", str(archive)] + if password: + args.extend(["-P", password]) + try: + result = await self._run_command(args) + is_valid = ( + "No errors detected" in result.stderr or "Everything is Ok" in result.stdout + ) + if is_valid: + logger.success(f"Integrity test passed for {archive}") + else: + logger.warning(f"Integrity test failed for {archive}") + return is_valid + except UnzipError as e: + logger.error(f"Integrity test failed: {e}") + raise UnzipIntegrityError("Integrity test failed") from e + + async def delete_archive(self, archive: Union[str, Path]) -> None: + """ + Delete the specified archive. + + Args: + archive (Union[str, Path]): Path to the archive. + + Raises: + UnzipDeleteError: If deletion fails. + """ + logger.info(f"Deleting archive: {archive}") + self._validate_archive_exists(archive) + try: + Path(archive).unlink() + logger.success(f"Successfully deleted archive: {archive}") + self.console.print( + f"[bold green]Successfully deleted archive: {archive}[/bold green]" + ) + except Exception as e: + logger.error(f"Failed to delete archive: {e}") + raise UnzipDeleteError( + f"Failed to delete archive: {archive}" + ) from e + + async def update_archive( + self, + archive: Union[str, Path], + files: List[Union[str, Path]], + action: Literal['add', 'delete'] = 'add' + ) -> None: + """ + Update the archive by adding or deleting files. + + Note: The unzip tool does not support updating archives. This method is a placeholder + and raises NotImplementedError. + + Args: + archive (Union[str, Path]): Path to the archive. + files (List[Union[str, Path]]): List of files to add or delete. + action (Literal['add', 'delete']): Action to perform. + + Raises: + NotImplementedError: Always, since unzip does not support updating archives. + """ + logger.warning("Update operation is not supported by unzip.") + raise NotImplementedError( + "Update operation is not supported by unzip." + ) + + async def execute( + self, + action: Literal['extract', 'list', 'test', 'delete', 'update'], + archive: Optional[Union[str, Path]] = None, + destination: Optional[Union[str, Path]] = None, + password: Optional[str] = None, + force: bool = False, + files: Optional[List[Union[str, Path]]] = None, + update_action: Literal['add', 'delete'] = 'add' + ) -> Optional[str]: + """ + Execute the corresponding unzip command based on the action type. + + Args: + action (Literal['extract', 'list', 'test', 'delete', 'update']): Action type. + archive (Optional[Union[str, Path]]): Path to the archive. + destination (Optional[Union[str, Path]]): Path to the extraction destination (only for 'extract'). + password (Optional[str]): Password for the archive (optional). + force (bool): Whether to forcibly overwrite the destination directory (only for 'extract'). + files (Optional[List[Union[str, Path]]]): List of files to add or delete (only for 'update'). + update_action (Literal['add', 'delete']): Action to perform in update (only for 'update'). + + Returns: + Optional[str]: If the action is 'list', returns the archive contents; if 'test', returns integrity status; otherwise, None. + + Raises: + UnzipError: If the action fails. + """ + logger.info(f"Executing action: {action}") + try: + if action == 'extract': + if archive is None or destination is None: + raise UnzipValidationError( + "Extract action requires 'archive' and 'destination' parameters" + ) + await self.extract(archive, destination, password, force) + elif action == 'list': + if archive is None: + raise UnzipValidationError( + "List action requires 'archive' parameter" + ) + return await self.list_contents(archive, password) + elif action == 'test': + if archive is None: + raise UnzipValidationError( + "Test action requires 'archive' parameter" + ) + return await self.test_integrity(archive, password) + elif action == 'delete': + if archive is None: + raise UnzipValidationError( + "Delete action requires 'archive' parameter" + ) + await self.delete_archive(archive) + elif action == 'update': + if archive is None or files is None: + raise UnzipValidationError( + "Update action requires 'archive' and 'files' parameters" + ) + await self.update_archive(archive, files, action=update_action) + else: + logger.error(f"Unsupported action type: {action}") + raise UnzipValidationError( + f"Unsupported action type: {action}" + ) + except UnzipError as e: + logger.error(f"Action {action} failed: {e}") + raise e + return None + + +def parse_args() -> argparse.Namespace: + """ + Parse command-line arguments. + + Returns: + argparse.Namespace: Parsed arguments. + """ + parser = argparse.ArgumentParser( + description="Unzip Command-Line Tool Wrapper" + ) + subparsers = parser.add_subparsers(dest='action', help='Action types') + + # Extract action + extract_parser = subparsers.add_parser('extract', help='Extract files') + extract_parser.add_argument( + '-a', '--archive', required=True, help='Path to the archive' + ) + extract_parser.add_argument( + '-d', '--destination', required=True, help='Path to the extraction destination' + ) + extract_parser.add_argument( + '-p', '--password', help='Password for the archive (optional)' + ) + extract_parser.add_argument( + '--force', action='store_true', help='Force overwrite if the destination directory exists' + ) + + # List contents action + list_parser = subparsers.add_parser('list', help='List archive contents') + list_parser.add_argument( + '-a', '--archive', required=True, help='Path to the archive' + ) + list_parser.add_argument( + '-p', '--password', help='Password for the archive (optional)' + ) + + # Test integrity action + test_parser = subparsers.add_parser('test', help='Test archive integrity') + test_parser.add_argument( + '-a', '--archive', required=True, help='Path to the archive' + ) + test_parser.add_argument( + '-p', '--password', help='Password for the archive (optional)' + ) + + # Delete action + delete_parser = subparsers.add_parser('delete', help='Delete archive') + delete_parser.add_argument( + '-a', '--archive', required=True, help='Path to the archive' + ) + + # Update action + update_parser = subparsers.add_parser('update', help='Update archive') + update_parser.add_argument( + '-a', '--archive', required=True, help='Path to the archive' + ) + update_parser.add_argument( + '-f', '--files', nargs='+', required=True, help='Files to add or delete' + ) + update_parser.add_argument( + '--action', choices=['add', 'delete'], default='add', help='Action to perform on files' + ) + + return parser.parse_args() + + +async def main(): + """ + Main function to execute the UnzipWrapper operations based on command-line arguments. + """ + args = parse_args() + console = Console() + + config = UnzipConfig() + try: + zipper = UnzipWrapper(config) + except UnzipValidationError as e: + logger.critical(e) + console.print(f"[bold red]{e}[/bold red]") + sys.exit(1) + + try: + if args.action == 'extract': + await zipper.execute( + action='extract', + archive=args.archive, + destination=args.destination, + password=args.password, + force=args.force + ) + elif args.action == 'list': + content = await zipper.execute( + action='list', + archive=args.archive, + password=args.password + ) + table = Table(title=f"Contents of {args.archive}") + table.add_column("File Name", style="cyan") + table.add_column("Details", style="magenta") + for line in content.splitlines()[3:-2]: # Skip header and footer + table.add_row(line) + console.print(table) + elif args.action == 'test': + is_valid = await zipper.execute( + action='test', + archive=args.archive, + password=args.password + ) + status = "[bold green]Valid[/bold green]" if is_valid else "[bold red]Invalid[/bold red]" + console.print(f"Integrity Test: {status}") + elif args.action == 'delete': + await zipper.execute( + action='delete', + archive=args.archive + ) + elif args.action == 'update': + await zipper.execute( + action='update', + archive=args.archive, + files=args.files, + update_action=args.action + ) + else: + logger.error(f"No valid action provided.") + console.print("[bold red]No valid action provided.[/bold red]") + sys.exit(1) + except UnzipError as e: + logger.critical(f"Operation failed: {e}") + console.print(f"[bold red]Operation failed: {e}[/bold red]") + sys.exit(1) + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/modules/lithium.pytools/tools/updater.py b/modules/lithium.pytools/tools/updater.py index 0de389ba..fca5d50c 100644 --- a/modules/lithium.pytools/tools/updater.py +++ b/modules/lithium.pytools/tools/updater.py @@ -1,28 +1,75 @@ +# python """ Auto Updater Script This script is designed to automatically check for, download, verify, and install updates for a given application. It supports multi-threaded downloads, file verification, backup of current files, and logging of update history. -Author: Your Name +Author: Max Qian Date: 2024-06-20 """ -import os -import json -import zipfile -import shutil -import requests -import threading import argparse -import logging -from tqdm import tqdm -from typing import Any, Dict, Optional +from concurrent.futures import ThreadPoolExecutor, as_completed +from dataclasses import dataclass, field +import datetime import hashlib -from concurrent.futures import ThreadPoolExecutor +import json +import shutil +import sys from pathlib import Path +from typing import Any, Dict, Optional, List +import zipfile + +import requests +from loguru import logger +from rich.console import Console +from rich.progress import Progress, BarColumn, TextColumn, TimeRemainingColumn +from packaging import version + + +class AutoUpdaterError(Exception): + """Base exception class for AutoUpdater.""" + + +class UpdateCheckError(AutoUpdaterError): + """Exception for update check failures.""" + + +class DownloadError(AutoUpdaterError): + """Exception for download failures.""" + + +class VerificationError(AutoUpdaterError): + """Exception for file verification failures.""" + + +class ExtractionError(AutoUpdaterError): + """Exception for extraction failures.""" + + +class BackupError(AutoUpdaterError): + """Exception for backup failures.""" + + +class InstallationError(AutoUpdaterError): + """Exception for installation failures.""" + + +class CleanupError(AutoUpdaterError): + """Exception for cleanup failures.""" + + +@dataclass +class AutoUpdaterConfig: + """Configuration for the AutoUpdater.""" + url: str + install_dir: Path + num_threads: int = 4 + custom_params: Dict[str, Any] = field(default_factory=dict) + log_file: Path = field(default=Path("updater.log")) + log_level: str = "DEBUG" -logging.basicConfig(level=logging.INFO) class AutoUpdater: """ @@ -30,66 +77,70 @@ class AutoUpdater: Attributes ---------- - url : str - The URL to check for updates - install_dir : pathlib.Path - The directory where the application is installed - num_threads : int - Number of threads to use for downloading - custom_params : dict - Custom parameters for post-download and post-install actions - temp_dir : pathlib.Path - Temporary directory for download and extraction - latest_version : str + config : AutoUpdaterConfig + Configuration parameters for the updater + latest_version : Optional[str] The latest version available for download - download_url : str + download_url : Optional[str] The URL to download the latest version - - Methods - ------- - check_for_updates() - Checks for updates from the given URL - compare_versions(current_version: str) -> bool - Compares the current version with the latest version - download_file(url: str, dest: pathlib.Path) - Downloads a file from the given URL to the specified destination - verify_file(file_path: pathlib.Path, expected_hash: str) -> bool - Verifies the downloaded file's hash - extract_zip(zip_path: pathlib.Path, extract_to: pathlib.Path) - Extracts a zip file to the specified directory - move_files(src: pathlib.Path, dest: pathlib.Path) - Moves files from source to destination - backup_files(src: pathlib.Path, backup_dir: pathlib.Path) - Backs up current files to the specified backup directory - cleanup() - Cleans up temporary files and directories - custom_post_download() - Executes custom post-download actions - custom_post_install() - Executes custom post-install actions - log_update(current_version: str, new_version: str) - Logs the update history - update(current_version: str) - Orchestrates the update process + expected_hash : Optional[str] + The expected SHA-256 hash of the downloaded file + temp_dir : Path + Temporary directory for download and extraction + console : Console + Rich console for enhanced terminal output """ - def __init__(self, config: Dict[str, Any]): + def __init__(self, config: AutoUpdaterConfig): """ Initializes the AutoUpdater with the given configuration. Parameters ---------- - config : dict + config : AutoUpdaterConfig Configuration parameters for the updater """ - self.url = config['url'] - self.install_dir = Path(config['install_dir']) - self.num_threads = config.get('num_threads', 4) - self.custom_params = config.get('custom_params', {}) - self.temp_dir = self.install_dir / "temp" + self.config = config + self.latest_version: Optional[str] = None + self.download_url: Optional[str] = None + self.expected_hash: Optional[str] = None + self.temp_dir: Path = self.config.install_dir / "temp" self.temp_dir.mkdir(parents=True, exist_ok=True) - self.latest_version = None - self.download_url = None + self.console = Console() + + self.setup_logging() + self._validate_executable() + + def setup_logging(self): + """Configure Loguru for logging.""" + logger.remove() + logger.add( + self.config.log_file, + rotation="10 MB", + retention="30 days", + compression="zip", + enqueue=True, + encoding="utf-8", + format=( + "{time:YYYY-MM-DD HH:mm:ss} | " + "{level} | {message}" + ), + level=self.config.log_level, + ) + logger.add( + sys.stderr, + level="INFO", + format="{message}", + ) + logger.debug("AutoUpdater initialized and logging configured.") + + def _validate_executable(self): + """Validate that required executables exist.""" + # Example: Validate 'unzip' is available if needed + if not shutil.which("unzip"): + logger.error("Required executable 'unzip' not found.") + raise AutoUpdaterError("Required executable 'unzip' not found.") + logger.info("All required executables are available.") def check_for_updates(self) -> bool: """ @@ -100,16 +151,26 @@ def check_for_updates(self) -> bool: bool True if updates are available, False otherwise """ + logger.debug(f"Checking for updates at URL: {self.config.url}") try: - response = requests.get(self.url) + response = requests.get(self.config.url, timeout=10) response.raise_for_status() data = response.json() - self.latest_version = data['version'] - self.download_url = data['download_url'] - logging.info(f"Found update: version {self.latest_version}") + self.latest_version = data.get('version') + self.download_url = data.get('download_url') + self.expected_hash = data.get('expected_hash') + + if not self.latest_version or not self.download_url: + logger.error("Update information is incomplete.") + return False + + logger.info(f"Found update: version {self.latest_version}") return True except requests.RequestException as e: - logging.error(f"Failed to check for updates: {e}") + logger.error(f"Failed to check for updates: {e}") + return False + except json.JSONDecodeError as e: + logger.error(f"Invalid JSON response: {e}") return False def compare_versions(self, current_version: str) -> bool: @@ -126,7 +187,14 @@ def compare_versions(self, current_version: str) -> bool: bool True if the latest version is newer than the current version, False otherwise """ - return self.latest_version > current_version + logger.debug( + f"Comparing versions. Current: {current_version}, Latest: {self.latest_version}" + ) + try: + return version.parse(self.latest_version) > version.parse(current_version) + except Exception as e: + logger.error(f"Version comparison failed: {e}") + return False def download_file(self, url: str, dest: Path): """ @@ -138,24 +206,36 @@ def download_file(self, url: str, dest: Path): The URL to download the file from dest : pathlib.Path The destination path to save the downloaded file + + Raises + ------ + DownloadError + If the download fails """ + logger.debug(f"Starting download from {url} to {dest}") try: - response = requests.get(url, stream=True) - response.raise_for_status() - total_size = int(response.headers.get('content-length', 0)) - chunk_size = 1024 - with open(dest, 'wb') as file, tqdm( - desc=dest.name, - total=total_size, - unit='B', - unit_scale=True, - unit_divisor=1024, - ) as bar: - for data in response.iter_content(chunk_size=chunk_size): - file.write(data) - bar.update(len(data)) + with requests.get(url, stream=True, timeout=30) as response: + response.raise_for_status() + total_size = int(response.headers.get('content-length', 0)) + chunk_size = 1024 # 1 KB + + with open(dest, 'wb') as file, Progress( + "[progress.description]{task.description}", + BarColumn(), + TextColumn( + "[progress.percentage]{task.percentage:>3.0f}%"), + TimeRemainingColumn(), + ) as progress: + task = progress.add_task( + f"Downloading {dest.name}", total=total_size) + for chunk in response.iter_content(chunk_size=chunk_size): + if chunk: + file.write(chunk) + progress.update(task, advance=len(chunk)) + logger.info(f"Downloaded file to {dest}") except requests.RequestException as e: - logging.error(f"Failed to download file: {e}") + logger.error(f"Failed to download file from {url}: {e}") + raise DownloadError(f"Failed to download file from {url}") from e def verify_file(self, file_path: Path, expected_hash: str) -> bool: """ @@ -173,15 +253,25 @@ def verify_file(self, file_path: Path, expected_hash: str) -> bool: bool True if the file's hash matches the expected hash, False otherwise """ + logger.debug( + f"Verifying file {file_path} with expected hash {expected_hash}" + ) sha256 = hashlib.sha256() try: with open(file_path, 'rb') as f: for chunk in iter(lambda: f.read(4096), b""): sha256.update(chunk) file_hash = sha256.hexdigest() - return file_hash == expected_hash + if file_hash.lower() == expected_hash.lower(): + logger.info("File verification succeeded.") + return True + else: + logger.error( + f"File verification failed. Expected {expected_hash}, got {file_hash}" + ) + return False except Exception as e: - logging.error(f"Failed to verify file: {e}") + logger.error(f"Failed to verify file {file_path}: {e}") return False def extract_zip(self, zip_path: Path, extract_to: Path): @@ -194,12 +284,34 @@ def extract_zip(self, zip_path: Path, extract_to: Path): The path to the zip file extract_to : pathlib.Path The directory to extract the zip file to + + Raises + ------ + ExtractionError + If extraction fails """ + logger.debug(f"Extracting {zip_path} to {extract_to}") try: - with zipfile.ZipFile(zip_path, 'r') as zip_ref: - zip_ref.extractall(extract_to) + with zipfile.ZipFile(zip_path, 'r') as zip_ref, Progress( + "[progress.description]{task.description}", + BarColumn(), + TextColumn("[progress.percentage]{task.percentage:>3.0f}%"), + TimeRemainingColumn(), + ) as progress: + files = zip_ref.namelist() + task = progress.add_task("Extracting files", total=len(files)) + for file in files: + zip_ref.extract(file, extract_to) + progress.advance(task) + logger.info(f"Extraction complete: {extract_to}") except zipfile.BadZipFile as e: - logging.error(f"Failed to extract zip file: {e}") + logger.error(f"Failed to extract zip file {zip_path}: {e}") + raise ExtractionError( + f"Failed to extract zip file {zip_path}") from e + except Exception as e: + logger.error(f"An error occurred while extracting {zip_path}: {e}") + raise ExtractionError( + f"An error occurred while extracting {zip_path}") from e def move_files(self, src: Path, dest: Path): """ @@ -211,17 +323,26 @@ def move_files(self, src: Path, dest: Path): The source directory dest : pathlib.Path The destination directory + + Raises + ------ + InstallationError + If moving files fails """ + logger.debug(f"Moving files from {src} to {dest}") try: for item in src.iterdir(): - s = src / item - d = dest / item + s = item + d = dest / item.name if s.is_dir(): - shutil.copytree(s, d, dirs_exist_ok=True) + shutil.move(str(s), str(d)) else: - shutil.copy2(s, d) + shutil.move(str(s), str(d)) + logger.info(f"Files moved from {src} to {dest}") except Exception as e: - logging.error(f"Failed to move files: {e}") + logger.error(f"Failed to move files from {src} to {dest}: {e}") + raise InstallationError( + f"Failed to move files from {src} to {dest}") from e def backup_files(self, src: Path, backup_dir: Path): """ @@ -233,44 +354,93 @@ def backup_files(self, src: Path, backup_dir: Path): The source directory backup_dir : pathlib.Path The backup directory + + Raises + ------ + BackupError + If backup fails """ + logger.debug(f"Backing up files from {src} to {backup_dir}") try: backup_dir.mkdir(parents=True, exist_ok=True) for item in src.iterdir(): - s = src / item - d = backup_dir / item + s = item + d = backup_dir / item.name if s.is_dir(): shutil.copytree(s, d, dirs_exist_ok=True) else: shutil.copy2(s, d) - logging.info("Backup completed successfully.") + logger.info("Backup completed successfully.") except Exception as e: - logging.error(f"Failed to backup files: {e}") + logger.error( + f"Failed to backup files from {src} to {backup_dir}: {e}" + ) + raise BackupError( + f"Failed to backup files from {src} to {backup_dir}") from e def cleanup(self): """ Cleans up temporary files and directories. + + Raises + ------ + CleanupError + If cleanup fails """ + logger.debug(f"Cleaning up temporary directory {self.temp_dir}") try: shutil.rmtree(self.temp_dir, ignore_errors=True) + logger.info("Cleanup completed successfully.") except Exception as e: - logging.error(f"Failed to clean up: {e}") + logger.error(f"Failed to clean up temporary files: {e}") + raise CleanupError("Failed to clean up temporary files") from e def custom_post_download(self): """ Executes custom post-download actions. + + Raises + ------ + AutoUpdaterError + If custom post-download actions fail """ - logging.info("Running custom post-download actions") - if 'post_download' in self.custom_params: - self.custom_params['post_download']() + logger.info("Executing custom post-download actions.") + try: + if ( + 'post_download' in self.config.custom_params and + callable(self.config.custom_params['post_download']) + ): + self.config.custom_params['post_download']() + logger.debug( + "Custom post-download action executed successfully." + ) + except Exception as e: + logger.error(f"Custom post-download action failed: {e}") + raise AutoUpdaterError( + "Custom post-download action failed.") from e def custom_post_install(self): """ Executes custom post-install actions. + + Raises + ------ + AutoUpdaterError + If custom post-install actions fail """ - logging.info("Running custom post-install actions") - if 'post_install' in self.custom_params: - self.custom_params['post_install']() + logger.info("Executing custom post-install actions.") + try: + if ( + 'post_install' in self.config.custom_params and + callable(self.config.custom_params['post_install']) + ): + self.config.custom_params['post_install']() + logger.debug( + "Custom post-install action executed successfully." + ) + except Exception as e: + logger.error(f"Custom post-install action failed: {e}") + raise AutoUpdaterError("Custom post-install action failed.") from e def log_update(self, current_version: str, new_version: str): """ @@ -282,12 +452,75 @@ def log_update(self, current_version: str, new_version: str): The current version of the application new_version : str The new version of the application + + Raises + ------ + AutoUpdaterError + If logging fails + """ + logger.debug( + f"Logging update from version {current_version} to {new_version}" + ) + try: + log_entry = ( + f"Updated from version {current_version} " + f"to {new_version} on {datetime.datetime.now().isoformat()}\n" + ) + with open( + self.config.install_dir / "update_log.txt", + 'a', + encoding='utf-8' + ) as log_file: + log_file.write(log_entry) + logger.info("Update history logged successfully.") + except Exception as e: + logger.error(f"Failed to log update history: {e}") + raise AutoUpdaterError("Failed to log update history.") from e + + def download_multiple_files(self, urls: List[str], dest_dir: Path): """ + Downloads multiple files concurrently. + + Parameters + ---------- + urls : List[str] + List of URLs to download + dest_dir : pathlib.Path + Directory to save the downloaded files + + Raises + ------ + DownloadError + If any of the downloads fail + """ + logger.debug( + f"Starting multi-threaded download of {len(urls)} files to {dest_dir}" + ) + dest_dir.mkdir(parents=True, exist_ok=True) try: - with open(self.install_dir / "update_log.txt", 'a') as log_file: - log_file.write(f"Updated from version {current_version} to {new_version}\n") + with ThreadPoolExecutor(max_workers=self.config.num_threads) as executor, Progress( + "[progress.description]{task.description}", + BarColumn(), + TextColumn("[progress.percentage]{task.percentage:>3.0f}%"), + TimeRemainingColumn(), + ) as progress: + tasks = { + executor.submit( + self.download_file, url, dest_dir / Path(url).name + ): url + for url in urls + } + for future in as_completed(tasks): + url = tasks[future] + try: + future.result() + except Exception as e: + logger.error(f"Error downloading {url}: {e}") + raise DownloadError(f"Error downloading {url}") from e + logger.info("All files downloaded successfully.") except Exception as e: - logging.error(f"Failed to log update: {e}") + logger.error(f"Failed to download multiple files: {e}") + raise DownloadError("Failed to download multiple files.") from e def update(self, current_version: str): """ @@ -298,28 +531,78 @@ def update(self, current_version: str): current_version : str The current version of the application """ - if self.check_for_updates() and self.compare_versions(current_version): - logging.info("Update available. Downloading...") - zip_path = self.temp_dir / "update.zip" - self.download_file(self.download_url, zip_path) - if self.verify_file(zip_path, self.custom_params.get('expected_hash', '')): - self.custom_post_download() - logging.info("Download complete. Extracting...") - self.extract_zip(zip_path, self.temp_dir) - logging.info("Extraction complete. Backing up current files...") - backup_dir = self.install_dir / "backup" - self.backup_files(self.install_dir, backup_dir) - logging.info("Backup complete. Installing update...") - self.move_files(self.temp_dir, self.install_dir) - self.custom_post_install() - logging.info("Installation complete. Cleaning up...") - self.cleanup() - self.log_update(current_version, self.latest_version) - logging.info("Update installed successfully.") + logger.debug( + f"Starting update process. Current version: {current_version}" + ) + try: + if self.check_for_updates() and self.compare_versions(current_version): + logger.info( + f"Update available: {self.latest_version}. Proceeding with update." + ) + + zip_path = self.temp_dir / "update.zip" + self.download_file(self.download_url, zip_path) + + if ( + self.expected_hash and + self.verify_file(zip_path, self.expected_hash) + ): + self.custom_post_download() + + logger.info( + "Verifying the integrity of the downloaded update." + ) + + self.extract_zip(zip_path, self.temp_dir) + + logger.info("Backing up current installation.") + backup_dir = self.config.install_dir / "backup" + self.backup_files(self.config.install_dir, backup_dir) + + logger.info("Installing the update.") + self.move_files(self.temp_dir, self.config.install_dir) + + self.custom_post_install() + + logger.info("Cleaning up temporary files.") + self.cleanup() + + self.log_update(current_version, self.latest_version) + + logger.success("Update installed successfully.") + self.console.print( + f"[bold green]Updated to version {self.latest_version} successfully.[/bold green]" + ) + else: + logger.error("File verification failed. Aborting update.") + self.console.print( + "[bold red]Error: Downloaded file failed verification.[/bold red]" + ) else: - logging.error("File verification failed. Update aborted.") - else: - logging.info("No updates available or version is not newer.") + logger.info( + "No updates available or current version is up-to-date." + ) + self.console.print( + "[bold blue]No updates available.[/bold blue]") + except KeyboardInterrupt: + logger.warning("Update process interrupted by user.") + self.console.print( + "\n[bold yellow]Update process interrupted by user.[/bold yellow]") + self.cleanup() + sys.exit(1) + except AutoUpdaterError as e: + logger.exception(f"An error occurred during the update: {e}") + self.console.print(f"[bold red]An error occurred: {e}[/bold red]") + self.cleanup() + sys.exit(1) + except Exception as e: + logger.exception( + f"An unexpected error occurred during the update: {e}") + self.console.print( + f"[bold red]An unexpected error occurred: {e}[/bold red]") + self.cleanup() + sys.exit(1) + def run_updater(config: Dict[str, Any]): """ @@ -330,25 +613,54 @@ def run_updater(config: Dict[str, Any]): config : dict Configuration parameters for the updater """ - updater = AutoUpdater(config) + updater_config = AutoUpdaterConfig( + url=config['url'], + install_dir=Path(config['install_dir']), + num_threads=config.get('num_threads', 4), + custom_params=config.get('custom_params', {}), + log_file=Path(config.get('log_file', 'updater.log')), + log_level=config.get('log_level', 'DEBUG') + ) + updater = AutoUpdater(updater_config) current_version = config.get('current_version', '0.0.0') updater.update(current_version) + def main(): """ The main entry point for the script. Parses the configuration file and starts the updater. """ parser = argparse.ArgumentParser(description="Auto updater script") - parser.add_argument("--config", type=str, required=True, help="Path to the configuration file") + parser.add_argument( + "--config", + type=str, + required=True, + help="Path to the configuration file (JSON format)" + ) args = parser.parse_args() - with open(args.config, 'r') as f: - config = json.load(f) + config_path = Path(args.config) + if not config_path.is_file(): + logger.error(f"Configuration file not found: {config_path}") + print(f"Error: Configuration file not found: {config_path}") + sys.exit(1) + + try: + with open(config_path, 'r', encoding='utf-8') as f: + config = json.load(f) + logger.debug(f"Configuration loaded from {config_path}") + except json.JSONDecodeError as e: + logger.error(f"Invalid JSON in configuration file: {e}") + print(f"Error: Invalid JSON in configuration file: {e}") + sys.exit(1) + except Exception as e: + logger.error(f"Failed to read configuration file: {e}") + print(f"Error: Failed to read configuration file: {e}") + sys.exit(1) + + run_updater(config) - updater_thread = threading.Thread(target=run_updater, args=(config,)) - updater_thread.start() - updater_thread.join() if __name__ == "__main__": main() diff --git a/modules/lithium.pytools/tools/upload.py b/modules/lithium.pytools/tools/upload.py new file mode 100644 index 00000000..d9c68c49 --- /dev/null +++ b/modules/lithium.pytools/tools/upload.py @@ -0,0 +1,308 @@ +# upload.py +# Advanced File Upload Client with Enhanced Features +# Author: Max Qian +# Date: 2024-03-01 +# Copyright (C) 2023-2024 Max Qian + +import argparse +import hashlib +import json +import threading +import time +from pathlib import Path +from typing import List, Optional + +import requests +from cryptography.fernet import Fernet +from loguru import logger +from queue import Queue +from rich.console import Console +from rich.progress import Progress, BarColumn, TextColumn, TimeRemainingColumn +from rich.logging import RichHandler + +# Configure logger with RichHandler for better output +console = Console() +logger.remove() +logger.add(RichHandler(console=console)) + +# Global variables +LOG_FILE = "upload_client.log" +console = Console() + + +# ==== File Handling ==== +def calculate_hash(file_path: Path) -> str: + """ + Calculate the SHA-256 hash of a file. + + :param file_path: Path to the file. + :return: Hexadecimal hash string. + """ + sha256 = hashlib.sha256() + try: + with file_path.open("rb") as f: + while chunk := f.read(8192): + sha256.update(chunk) + return sha256.hexdigest() + except Exception as e: + logger.error(f"Error calculating hash for {file_path}: {e}") + raise + + +def encrypt_file(file_path: Path, key: bytes) -> Path: + """ + Encrypt a file using AES (Fernet). + + :param file_path: Path to the file. + :param key: Encryption key. + :return: Path to the encrypted file. + """ + try: + with file_path.open("rb") as f: + data = f.read() + + cipher = Fernet(key) + encrypted_data = cipher.encrypt(data) + + encrypted_file_path = file_path.with_suffix(file_path.suffix + ".enc") + with encrypted_file_path.open("wb") as f: + f.write(encrypted_data) + + logger.debug(f"File encrypted: {encrypted_file_path}") + return encrypted_file_path + except Exception as e: + logger.error(f"Error encrypting file {file_path}: {e}") + raise + + +# ==== Upload Logic ==== +def upload_file(file_path: Path, server_url: str, retries: int = 3, verify_server: bool = False) -> bool: + """ + Upload a file to the server with retries and optional server verification. + + :param file_path: Path to the file. + :param server_url: Server URL. + :param retries: Number of retry attempts. + :param verify_server: Whether to verify the server's response. + :return: True if upload is successful, False otherwise. + """ + if not file_path.exists(): + logger.error(f"File not found: {file_path}") + raise FileNotFoundError(f"File not found: {file_path}") + + file_size = file_path.stat().st_size + for attempt in range(1, retries + 1): + try: + with file_path.open("rb") as f: + with Progress( + TextColumn("[progress.description]{task.description}"), + BarColumn(), + "[progress.percentage]{task.percentage:>3.0f}%", + "•", + "[green]{task.completed}/{task.total} bytes", + "•", + TimeRemainingColumn(), + console=console, + ) as progress: + task = progress.add_task( + f"Uploading {file_path.name}", total=file_size) + + def upload(): + response = requests.post( + server_url, + files={"file": (file_path.name, f)}, + timeout=60 + ) + return response + + response = upload() + progress.update(task, advance=file_size) + + if response.status_code == 200: + logger.info(f"File uploaded successfully: {file_path}") + if verify_server: + # Verify the server's hash + server_hash = response.json().get("hash") + local_hash = calculate_hash(file_path) + if server_hash != local_hash: + logger.error("Server hash does not match local hash") + raise ValueError("Server hash mismatch") + return True + else: + logger.warning( + f"Upload failed (Status Code: {response.status_code}): {response.text}") + except Exception as e: + logger.error( + f"Upload attempt {attempt} failed for {file_path}: {e}") + + logger.info(f"Retrying upload ({attempt}/{retries})...") + time.sleep(1) + logger.error( + f"Failed to upload file after {retries} attempts: {file_path}") + return False + + +# ==== Multi-threaded Upload ==== +def upload_worker(queue: Queue, server_url: str, key: Optional[bytes], verify_server: bool): + """ + Worker function for uploading files in a thread. + + :param queue: Queue containing file paths to upload. + :param server_url: Server URL. + :param key: Encryption key, if any. + :param verify_server: Whether to verify the server's response. + """ + while not queue.empty(): + file_path: Path = queue.get() + try: + original_file_path = file_path + # Encrypt the file if key is provided + if key: + file_path = encrypt_file(file_path, key) + logger.info(f"File encrypted: {file_path}") + + upload_file(file_path, server_url, verify_server=verify_server) + + # Clean up encrypted file after upload + if key: + file_path.unlink() + logger.debug(f"Encrypted file removed: {file_path}") + except Exception as e: + logger.error(f"Error in worker for {file_path}: {e}") + finally: + queue.task_done() + + +def upload_multiple_files(file_paths: List[Path], server_url: str, threads: int = 4, key: Optional[bytes] = None, + verify_server: bool = False): + """ + Upload multiple files using multi-threading. + + :param file_paths: List of file paths to upload. + :param server_url: Server URL. + :param threads: Number of threads to use. + :param key: Encryption key, if any. + :param verify_server: Whether to verify the server's response. + """ + queue = Queue() + for file_path in file_paths: + queue.put(file_path) + + thread_list = [] + for _ in range(threads): + thread = threading.Thread(target=upload_worker, args=( + queue, server_url, key, verify_server)) + thread.start() + thread_list.append(thread) + + for thread in thread_list: + thread.join() + + +# ==== Configuration Loading ==== +def load_config(config_file: Path) -> dict: + """ + Load configuration from a JSON file. + + :param config_file: Path to the configuration file. + :return: Configuration dictionary. + """ + try: + with config_file.open("r") as f: + config = json.load(f) + logger.debug(f"Configuration loaded: {config}") + return config + except Exception as e: + logger.error(f"Error loading configuration from {config_file}: {e}") + raise + + +# ==== Main Function ==== +def main(): + parser = argparse.ArgumentParser(description="Advanced File Upload Client") + parser.add_argument("--files", nargs="+", + help="List of file paths to upload") + parser.add_argument("--server", required=True, help="Target server URL") + parser.add_argument("--encrypt", action="store_true", + help="Encrypt files before uploading") + parser.add_argument("--key", help="Path to the encryption key file") + parser.add_argument("--config", help="Path to the JSON configuration file") + parser.add_argument( + "--filter-type", help="Only upload files with the specified extension (e.g., .txt)") + parser.add_argument("--verify-server", action="store_true", + help="Verify server response") + parser.add_argument("--threads", type=int, default=4, + help="Number of concurrent upload threads") + args = parser.parse_args() + + # Load configuration file if provided + if args.config: + try: + config_path = Path(args.config) + config = load_config(config_path) + args.files = config.get("files", args.files) + args.server = config.get("server", args.server) + args.encrypt = config.get("encrypt", args.encrypt) + args.key = config.get("key", args.key) + args.filter_type = config.get("filter_type", args.filter_type) + args.threads = config.get("threads", args.threads) + args.verify_server = config.get( + "verify_server", args.verify_server) + except Exception as e: + logger.error(f"Failed to load configuration: {e}") + return + + # Validate server URL + if not args.server: + logger.error("Server URL is required.") + parser.print_help() + return + + # Collect files to upload + if args.files: + file_paths = [Path(f) for f in args.files] + else: + logger.error("No files specified for upload.") + parser.print_help() + return + + # Filter files by extension if specified + if args.filter_type: + file_paths = [f for f in file_paths if f.suffix == args.filter_type] + if not file_paths: + logger.warning( + f"No files with extension {args.filter_type} found.") + return + + # Load encryption key if encryption is enabled + key = None + if args.encrypt: + if args.key: + key_path = Path(args.key) + if key_path.exists(): + with key_path.open("rb") as f: + key = f.read() + logger.debug(f"Encryption key loaded from {key_path}") + else: + logger.error(f"Encryption key file not found: {key_path}") + return + else: + # Generate a new key if not provided + key = Fernet.generate_key() + key_path = Path("encryption.key") + with key_path.open("wb") as f: + f.write(key) + logger.info( + f"No key provided. Generated and saved new encryption key to {key_path}") + + # Start uploading files + try: + upload_multiple_files(file_paths, args.server, threads=args.threads, + key=key, verify_server=args.verify_server) + logger.info("All files uploaded successfully!") + except Exception as e: + logger.error(f"Client encountered an error: {e}") + + +if __name__ == "__main__": + main() diff --git a/modules/lithium.pytools/tools/video_editor.py b/modules/lithium.pytools/tools/video_editor.py index 3ff25808..50323013 100644 --- a/modules/lithium.pytools/tools/video_editor.py +++ b/modules/lithium.pytools/tools/video_editor.py @@ -1,16 +1,48 @@ import argparse import os +import sys import numpy as np from moviepy.editor import VideoFileClip, AudioFileClip, CompositeAudioClip -from moviepy.audio.fx.all import volumex, audio_fadein, audio_fadeout +from moviepy.audio.fx.volumex import volumex +from moviepy.audio.fx.audio_fadein import audio_fadein +from moviepy.audio.fx.audio_fadeout import audio_fadeout from pydub import AudioSegment import matplotlib.pyplot as plt from scipy.io import wavfile from scipy.signal import spectrogram, wiener - - -def process_audio(video_path, audio_output_path, output_format='mp3', speed=1.0, volume=1.0, - start_time=None, end_time=None, fade_in=0, fade_out=0, reverse=False, normalize=False, noise_reduce=False): +from loguru import logger + +# Configure Loguru for logging +logger.remove() # Remove the default logger +logger.add( + "video_editor.log", + rotation="10 MB", + retention="30 days", + compression="zip", + enqueue=True, + encoding="utf-8", + level="DEBUG", + format=( + "{time:YYYY-MM-DD HH:mm:ss} | " + "{level} | {message}" + ), +) + + +def process_audio( + video_path, + audio_output_path, + output_format='mp3', + speed=1.0, + volume=1.0, + start_time=None, + end_time=None, + fade_in=0, + fade_out=0, + reverse=False, + normalize=False, + noise_reduce=False +): """ Processes audio from a video file: extracts, modifies speed, volume, applies fade effects, reverses, and saves the audio. @@ -28,54 +60,83 @@ def process_audio(video_path, audio_output_path, output_format='mp3', speed=1.0, normalize (bool): Normalize the audio volume to -1 to 1 range. noise_reduce (bool): Apply basic noise reduction using Wiener filter. """ - # Load the video file - video = VideoFileClip(video_path) - - # Extract audio from the video - audio = video.audio - - # Adjust audio speed - if speed != 1.0: - audio = audio.speedx(speed) - - # Adjust audio volume - if volume != 1.0: - audio = audio.fx(volumex, volume) - - # Trim audio (if start and/or end times are specified) - if start_time is not None or end_time is not None: - audio = audio.subclip(start_time, end_time) - - # Apply fade-in and fade-out effects - if fade_in > 0: - audio = audio.fx(audio_fadein, duration=fade_in) - if fade_out > 0: - audio = audio.fx(audio_fadeout, duration=fade_out) - - # Reverse the audio - if reverse: - audio = audio.fx(lambda clip: clip.fl_time( - lambda t: clip.duration - t)) - - # Normalize the audio - if normalize: - audio_array = np.array(audio.to_soundarray()) - max_amplitude = np.max(np.abs(audio_array)) - audio_array = audio_array / max_amplitude - audio = audio.set_audio_array(audio_array) - - # Apply noise reduction - if noise_reduce: - sample_rate, data = wavfile.read(audio_output_path) - data = wiener(data) - wavfile.write(audio_output_path, sample_rate, data) - - # Save the processed audio - audio.write_audiofile( - audio_output_path, codec='libmp3lame' if output_format == 'mp3' else 'pcm_s16le') - - # Close the video file - video.close() + logger.info(f"Processing audio from video: {video_path}") + try: + # Load the video file + video = VideoFileClip(video_path) + logger.debug(f"Video file loaded: {video_path}") + + # Extract audio from the video + audio = video.audio + if audio is None: + logger.error(f"No audio track found in video: {video_path}") + raise ValueError( + "No audio track found in the provided video file.") + logger.debug("Audio extracted from video.") + + # Adjust audio speed + if speed != 1.0: + audio = audio.speedx(speed) + logger.debug(f"Audio speed adjusted by a factor of {speed}.") + + # Adjust audio volume + if volume != 1.0: + audio = audio.fx(volumex, volume) + logger.debug(f"Audio volume adjusted by a factor of {volume}.") + + # Trim audio (if start and/or end times are specified) + if start_time is not None or end_time is not None: + audio = audio.subclip(start_time, end_time) + logger.debug( + f"Audio trimmed: start_time={start_time}, end_time={end_time}.") + + # Apply fade-in and fade-out effects + if fade_in > 0: + audio = audio.fx(audio_fadein, duration=fade_in) + logger.debug(f"Applied fade-in effect for {fade_in} seconds.") + if fade_out > 0: + audio = audio.fx(audio_fadeout, duration=fade_out) + logger.debug(f"Applied fade-out effect for {fade_out} seconds.") + + # Reverse the audio + if reverse: + audio = audio.fx(lambda clip: clip.fx( + lambda gf: lambda t: gf(clip.duration - t))) + logger.debug("Audio reversed.") + + # Normalize the audio + if normalize: + audio_array = np.array(audio.to_soundarray()) + max_amplitude = np.max(np.abs(audio_array)) + if max_amplitude > 0: + audio_array = audio_array / max_amplitude + audio = audio.set_audio(audio_array) + logger.debug("Audio normalized.") + else: + logger.warning( + "Audio normalization skipped due to zero amplitude.") + + # Save the processed audio + codec = 'libmp3lame' if output_format.lower() == 'mp3' else 'pcm_s16le' + audio.write_audiofile(audio_output_path, codec=codec) + logger.info(f"Processed audio saved to: {audio_output_path}") + + # Apply noise reduction if specified + if noise_reduce: + logger.info("Applying noise reduction using Wiener filter.") + sample_rate, data = wavfile.read(audio_output_path) + reduced_noise = wiener(data) + wavfile.write(audio_output_path, sample_rate, + reduced_noise.astype(data.dtype)) + logger.debug("Noise reduction applied.") + + # Close the video file + video.close() + logger.debug("Video file closed.") + + except Exception as e: + logger.exception(f"Failed to process audio from {video_path}: {e}") + raise def batch_process(input_dir, output_dir, **kwargs): @@ -87,19 +148,34 @@ def batch_process(input_dir, output_dir, **kwargs): output_dir (str): Directory where the processed audio files will be saved. kwargs: Additional arguments passed to the audio processing function. """ - if not os.path.exists(output_dir): - os.makedirs(output_dir) - - for filename in os.listdir(input_dir): - if filename.endswith(('.mp4', '.avi', '.mov', '.mkv')): - input_path = os.path.join(input_dir, filename) - output_path = os.path.join(output_dir, os.path.splitext( - filename)[0] + '.' + kwargs.get('output_format', 'mp3')) - try: - process_audio(input_path, output_path, **kwargs) - print(f"Processed: {filename}") - except Exception as e: - print(f"Error processing {filename}: {e}") + logger.info( + f"Starting batch processing. Input directory: {input_dir}, Output directory: {output_dir}") + try: + if not os.path.exists(output_dir): + os.makedirs(output_dir) + logger.debug(f"Created output directory: {output_dir}") + + supported_formats = ('.mp4', '.avi', '.mov', '.mkv') + processed_files = 0 + for filename in os.listdir(input_dir): + if filename.lower().endswith(supported_formats): + input_path = os.path.join(input_dir, filename) + output_extension = kwargs.get('output_format', 'mp3') + output_path = os.path.join( + output_dir, os.path.splitext( + filename)[0] + f'.{output_extension}' + ) + try: + process_audio(input_path, output_path, **kwargs) + logger.info(f"Processed: {filename}") + processed_files += 1 + except Exception as e: + logger.error(f"Error processing {filename}: {e}") + logger.info( + f"Batch processing completed. Total files processed: {processed_files}") + except Exception as e: + logger.exception(f"Batch processing failed: {e}") + raise def mix_audio(audio_files, output_file, volumes=None): @@ -111,13 +187,29 @@ def mix_audio(audio_files, output_file, volumes=None): output_file (str): Path to save the mixed audio file. volumes (list): List of volume multipliers for each audio file. """ - if volumes is None: - volumes = [1.0] * len(audio_files) - - audio_clips = [AudioFileClip(f).volumex(v) - for f, v in zip(audio_files, volumes)] - final_audio = CompositeAudioClip(audio_clips) - final_audio.write_audiofile(output_file) + logger.info(f"Mixing audio files: {audio_files} into {output_file}") + try: + if volumes is None: + volumes = [1.0] * len(audio_files) + elif len(volumes) != len(audio_files): + logger.error( + "The number of volume levels must match the number of audio files.") + raise ValueError( + "Volumes list length does not match audio files list length.") + + audio_clips = [] + for f, v in zip(audio_files, volumes): + clip = AudioFileClip(f).fx(volumex, v) + audio_clips.append(clip) + logger.debug(f"Loaded and adjusted volume for: {f}") + + final_audio = CompositeAudioClip(audio_clips) + final_audio.write_audiofile(output_file) + logger.info(f"Mixed audio saved to: {output_file}") + + except Exception as e: + logger.exception(f"Failed to mix audio files: {e}") + raise def split_audio(input_file, output_prefix, segment_length): @@ -129,14 +221,25 @@ def split_audio(input_file, output_prefix, segment_length): output_prefix (str): Prefix for the output segment files. segment_length (float): Length of each segment in seconds. """ - audio = AudioSegment.from_file(input_file) - length_ms = len(audio) - segment_length_ms = segment_length * 1000 + logger.info( + f"Splitting audio file: {input_file} into segments of {segment_length} seconds.") + try: + audio = AudioSegment.from_file(input_file) + length_ms = len(audio) + segment_length_ms = segment_length * 1000 + + for i, start in enumerate(range(0, length_ms, int(segment_length_ms))): + end = start + int(segment_length_ms) + segment = audio[start:end] + segment_filename = f"{output_prefix}_{i+1}.mp3" + segment.export(segment_filename, format="mp3") + logger.debug(f"Exported segment: {segment_filename}") - for i, start in enumerate(range(0, length_ms, segment_length_ms)): - end = start + segment_length_ms - segment = audio[start:end] - segment.export(f"{output_prefix}_{i+1}.mp3", format="mp3") + logger.info(f"Audio file split into segments successfully.") + + except Exception as e: + logger.exception(f"Failed to split audio file {input_file}: {e}") + raise def convert_audio_format(input_file, output_file): @@ -147,9 +250,20 @@ def convert_audio_format(input_file, output_file): input_file (str): Path to the input audio file. output_file (str): Path to the output file with the desired format. """ - audio = AudioSegment.from_file(input_file) - export_format = os.path.splitext(output_file)[1][1:] - audio.export(output_file, format=export_format) + logger.info(f"Converting audio file from {input_file} to {output_file}") + try: + audio = AudioSegment.from_file(input_file) + export_format = os.path.splitext(output_file)[1][1:] + if not export_format: + logger.error( + "Output file must have a valid extension to determine the format.") + raise ValueError("Output file extension is missing or invalid.") + audio.export(output_file, format=export_format) + logger.info(f"Audio format converted and saved to: {output_file}") + except Exception as e: + logger.exception( + f"Failed to convert audio format for {input_file}: {e}") + raise def visualize_audio(input_file, output_file): @@ -160,104 +274,207 @@ def visualize_audio(input_file, output_file): input_file (str): Path to the input audio file (WAV format). output_file (str): Path to save the visualization image. """ - sample_rate, data = wavfile.read(input_file) - - plt.figure(figsize=(12, 8)) - - # Plot waveform - plt.subplot(2, 1, 1) - plt.plot(np.arange(len(data)) / sample_rate, data) - plt.title('Audio Waveform') - plt.xlabel('Time (seconds)') - plt.ylabel('Amplitude') - - # Plot spectrogram - plt.subplot(2, 1, 2) - frequencies, times, Sxx = spectrogram(data, sample_rate) - plt.pcolormesh(times, frequencies, 10 * np.log10(Sxx)) - plt.title('Spectrogram') - plt.xlabel('Time (seconds)') - plt.ylabel('Frequency (Hz)') - plt.colorbar(label='Intensity (dB)') - - plt.tight_layout() - plt.savefig(output_file) - plt.close() + logger.info( + f"Visualizing audio file: {input_file} and saving to {output_file}") + try: + sample_rate, data = wavfile.read(input_file) + logger.debug( + f"Audio file loaded. Sample rate: {sample_rate}, Data shape: {data.shape}") + + plt.figure(figsize=(12, 8)) + + # Plot waveform + plt.subplot(2, 1, 1) + if data.ndim > 1: + plt.plot(np.arange(len(data)) / sample_rate, data[:, 0]) + else: + plt.plot(np.arange(len(data)) / sample_rate, data) + plt.title('Audio Waveform') + plt.xlabel('Time (seconds)') + plt.ylabel('Amplitude') + + # Plot spectrogram + plt.subplot(2, 1, 2) + frequencies, times, Sxx = spectrogram(data, sample_rate) + plt.pcolormesh(times, frequencies, 10 * np.log10(Sxx + 1e-10)) + plt.title('Spectrogram') + plt.xlabel('Time (seconds)') + plt.ylabel('Frequency (Hz)') + plt.colorbar(label='Intensity (dB)') + + plt.tight_layout() + plt.savefig(output_file) + plt.close() + logger.info(f"Audio visualization saved to: {output_file}") + + except Exception as e: + logger.exception(f"Failed to visualize audio file {input_file}: {e}") + raise def main(): parser = argparse.ArgumentParser( - description="Full-featured audio processing tool.") + description="Full-featured audio processing tool." + ) + parser.add_argument( + "input", + help="Path to the input video/audio file or directory containing files." + ) + parser.add_argument( + "output", + help="Path to save the output audio file or directory." + ) + parser.add_argument( + "--format", + choices=['mp3', 'wav'], + default='mp3', + help="Output audio format (default: mp3)" + ) + parser.add_argument( + "--speed", + type=float, + default=1.0, + help="Adjust audio speed (default: 1.0)" + ) + parser.add_argument( + "--volume", + type=float, + default=1.0, + help="Adjust audio volume (default: 1.0)" + ) + parser.add_argument( + "--start", + type=float, + help="Start time of the audio (seconds)" + ) + parser.add_argument( + "--end", + type=float, + help="End time of the audio (seconds)" + ) + parser.add_argument( + "--fade-in", + type=float, + default=0, + help="Fade-in duration (seconds)" + ) + parser.add_argument( + "--fade-out", + type=float, + default=0, + help="Fade-out duration (seconds)" + ) + parser.add_argument( + "--reverse", + action="store_true", + help="Reverse the audio" + ) + parser.add_argument( + "--normalize", + action="store_true", + help="Normalize the audio volume" + ) + parser.add_argument( + "--noise-reduce", + action="store_true", + help="Apply basic noise reduction" + ) + parser.add_argument( + "--batch", + action="store_true", + help="Batch process all videos in a directory" + ) + parser.add_argument( + "--mix", + nargs='+', + help="Mix multiple audio files" + ) parser.add_argument( - "input", help="Path to the input video/audio file or directory containing files.") + "--mix-volumes", + nargs='+', + type=float, + help="Volumes for each audio file during mix" + ) parser.add_argument( - "output", help="Path to save the output audio file or directory.") + "--split", + type=float, + help="Split audio into segments of specified length (seconds)" + ) parser.add_argument( - "--format", choices=['mp3', 'wav'], default='mp3', help="Output audio format (default: mp3)") - parser.add_argument("--speed", type=float, default=1.0, - help="Adjust audio speed (default: 1.0)") - parser.add_argument("--volume", type=float, default=1.0, - help="Adjust audio volume (default: 1.0)") - parser.add_argument("--start", type=float, - help="Start time of the audio (seconds)") - parser.add_argument("--end", type=float, - help="End time of the audio (seconds)") - parser.add_argument("--fade-in", type=float, default=0, - help="Fade-in duration (seconds)") - parser.add_argument("--fade-out", type=float, default=0, - help="Fade-out duration (seconds)") - parser.add_argument("--reverse", action="store_true", - help="Reverse the audio") - parser.add_argument("--normalize", action="store_true", - help="Normalize the audio volume") - parser.add_argument("--noise-reduce", action="store_true", - help="Apply basic noise reduction") - parser.add_argument("--batch", action="store_true", - help="Batch process all videos in a directory") - parser.add_argument("--mix", nargs='+', help="Mix multiple audio files") - parser.add_argument("--mix-volumes", nargs='+', type=float, - help="Volumes for each audio file during mix") - parser.add_argument("--split", type=float, - help="Split audio into segments of specified length (seconds)") + "--convert", + help="Convert audio to a different format" + ) parser.add_argument( - "--convert", help="Convert audio to a different format") - parser.add_argument("--visualize", action="store_true", - help="Generate a visualization of the audio (waveform and spectrogram)") + "--visualize", + action="store_true", + help="Generate a visualization of the audio (waveform and spectrogram)" + ) args = parser.parse_args() - # Mix multiple audio files - if args.mix: - mix_audio(args.mix, args.output, args.mix_volumes) - # Split audio into segments - elif args.split: - split_audio(args.input, args.output, args.split) - # Convert audio format - elif args.convert: - convert_audio_format(args.input, args.output) - # Visualize the audio as waveform and spectrogram - elif args.visualize: - visualize_audio(args.input, args.output) - # Batch process all video files in a directory - elif args.batch: - batch_process( - args.input, args.output, - output_format=args.format, speed=args.speed, volume=args.volume, - start_time=args.start, end_time=args.end, - fade_in=args.fade_in, fade_out=args.fade_out, reverse=args.reverse, - normalize=args.normalize, noise_reduce=args.noise_reduce - ) - # Process a single video or audio file - else: - process_audio( - args.input, args.output, - output_format=args.format, speed=args.speed, volume=args.volume, - start_time=args.start, end_time=args.end, - fade_in=args.fade_in, fade_out=args.fade_out, reverse=args.reverse, - normalize=args.normalize, noise_reduce=args.noise_reduce - ) - - print("Processing completed successfully.") + try: + # Mix multiple audio files + if args.mix: + if args.mix_volumes and len(args.mix_volumes) != len(args.mix): + logger.error( + "Number of mix volumes must match number of audio files.") + print("Error: Number of mix volumes must match number of audio files.") + sys.exit(1) + mix_audio(args.mix, args.output, args.mix_volumes) + + # Split audio into segments + elif args.split: + split_audio(args.input, args.output, args.split) + + # Convert audio format + elif args.convert: + convert_audio_format(args.input, args.output) + + # Visualize the audio as waveform and spectrogram + elif args.visualize: + visualize_audio(args.input, args.output) + + # Batch process all video files in a directory + elif args.batch: + batch_process( + args.input, + args.output, + output_format=args.format, + speed=args.speed, + volume=args.volume, + start_time=args.start, + end_time=args.end, + fade_in=args.fade_in, + fade_out=args.fade_out, + reverse=args.reverse, + normalize=args.normalize, + noise_reduce=args.noise_reduce + ) + + # Process a single video or audio file + else: + process_audio( + args.input, + args.output, + output_format=args.format, + speed=args.speed, + volume=args.volume, + start_time=args.start, + end_time=args.end, + fade_in=args.fade_in, + fade_out=args.fade_out, + reverse=args.reverse, + normalize=args.normalize, + noise_reduce=args.noise_reduce + ) + + logger.info("Processing completed successfully.") + print("Processing completed successfully.") + + except Exception as e: + logger.exception(f"An error occurred during processing: {e}") + print(f"An error occurred: {e}") + sys.exit(1) if __name__ == "__main__": diff --git a/modules/lithium.stellarsolver/CMakeLists.txt b/modules/lithium.stellarsolver/CMakeLists.txt new file mode 100644 index 00000000..297a9b18 --- /dev/null +++ b/modules/lithium.stellarsolver/CMakeLists.txt @@ -0,0 +1,46 @@ +# CMakeLists.txt + +cmake_minimum_required(VERSION 3.5) +project(ssbindings) + +# 设置 C++ 标准 +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +# 查找所需的包 +find_package(pybind11 REQUIRED) +find_package(Qt6 COMPONENTS Core REQUIRED) +find_package(StellarSolver REQUIRED) + +# 包含目录 +include_directories( + ${Qt5Core_INCLUDE_DIRS} + ${STELLARSOLVER_INCLUDE_DIRS} +) + +# 源文件 +set(SOURCE_FILES + binding.cpp + structures.cpp + ss.cpp +) + +# 添加 PyBind11 模块 +pybind11_add_module(ssbindings MODULE ${SOURCE_FILES}) + +# 链接库 +target_link_libraries(ssbindings PRIVATE + Qt6::Core + stellarsolver +) + +# 定义编译标志(根据需要) +# 设置目标属性 +set_target_properties(ssbindings PROPERTIES + AUTOMOC ON +) + +# 包含目录 +target_include_directories(ssbindings PRIVATE + ${pybind11_INCLUDE_DIRS} + ${Qt6Core_INCLUDE_DIRS} +) \ No newline at end of file diff --git a/modules/lithium.stellarsolver/binding.cpp b/modules/lithium.stellarsolver/binding.cpp new file mode 100644 index 00000000..a01fe8a4 --- /dev/null +++ b/modules/lithium.stellarsolver/binding.cpp @@ -0,0 +1,62 @@ +#include +#include +#include "ss.h" +#include "structures.h" + +#include "atom/log/loguru.hpp" + +namespace py = pybind11; + +PYBIND11_MODULE(ssbindings, m) { + LOG_F(INFO, "Initializing ssbindings module"); + + py::class_(m, "FitsImageStatistic") + .def(py::init<>()) + .def_property("min", &FitsImageStatistic::getMin, + &FitsImageStatistic::setMin) + .def_property("max", &FitsImageStatistic::getMax, + &FitsImageStatistic::setMax) + .def_property("mean", &FitsImageStatistic::getMean, + &FitsImageStatistic::setMean) + .def_property("median", &FitsImageStatistic::getMedian, + &FitsImageStatistic::setMedian) + .def_property("snr", &FitsImageStatistic::getSnr, + &FitsImageStatistic::setSnr) + .def_property("data_type", &FitsImageStatistic::getDataType, + &FitsImageStatistic::setDataType) + .def_property("samples_per_channel", + &FitsImageStatistic::getSamplesPerChannel, + &FitsImageStatistic::setSamplesPerChannel) + .def_property("width", &FitsImageStatistic::getWidth, + &FitsImageStatistic::setWidth) + .def_property("height", &FitsImageStatistic::getHeight, + &FitsImageStatistic::setHeight) + .def_property("channels", &FitsImageStatistic::getChannels, + &FitsImageStatistic::setChannels); + + py::class_(m, "SS") + .def(py::init()) + .def("load_new_image_buffer", &SS::loadNewImageBuffer) + .def("extract", &SS::extract) + .def("solve", &SS::solve) + .def("start", &SS::start) + .def("abort", &SS::abort) + .def("abort_and_wait", &SS::abortAndWait) + .def("set_parameter_profile", &SS::setParameterProfile) + .def("set_search_scale", + py::overload_cast( + &SS::setSearchScale)) + .def("set_search_scale", + py::overload_cast( + &SS::setSearchScale)) + .def("set_search_position_ra_dec", &SS::setSearchPositionRaDec) + .def("set_search_position_in_degrees", &SS::setSearchPositionInDegrees) + .def("set_use_subframe", &SS::setUseSubframe) + .def("is_running", &SS::isRunning) + .def_static("ra_string", &SS::raString) + .def_static("dec_string", &SS::decString) + .def("pixel_to_wcs", &SS::pixelToWCS) + .def("wcs_to_pixel", &SS::wcsToPixel) + + LOG_F(INFO, "ssbindings module initialized successfully"); +} \ No newline at end of file diff --git a/modules/lithium.stellarsolver/package.json b/modules/lithium.stellarsolver/package.json new file mode 100644 index 00000000..6a74d1f4 --- /dev/null +++ b/modules/lithium.stellarsolver/package.json @@ -0,0 +1,33 @@ +{ + "name": "lithium.stellarsolver", + "version": "1.0.0", + "type": "pymodule", + "description": "A Python wrapper around the StellarSolver plate solver", + "license": "GPL-3.0-or-later", + "author": "Max Qian", + "repository": { + "type": "git", + "url": "https://github.com/ElementAstro/Lithium" + }, + "bugs": { + "type": "git", + "url": "https://github.com/ElementAstro/Lithium/issues" + }, + "homepage": { + "type": "git", + "url": "https://github.com/ElementAstro/Lithium" + }, + "keywords": [ + "lithium", + "stellarsolver", + "plate-solver" + ], + "scripts": { + "build": "cmake --build . --config Release -- -j 4", + "lint": "clang-format -i src/*.cpp include/*.h" + }, + "dependencies": { + "pybind11": "^2.6.2", + "numpy": "^1.20.1" + } +} diff --git a/modules/lithium.stellarsolver/ss.cpp b/modules/lithium.stellarsolver/ss.cpp new file mode 100644 index 00000000..5fbadb76 --- /dev/null +++ b/modules/lithium.stellarsolver/ss.cpp @@ -0,0 +1,434 @@ +#include "ss.h" + +#include +#include +#include + +#include + +#include "atom/log/loguru.hpp" + +// Constructor +SS::SS(QObject* parent) : QObject(parent), app(nullptr), solver(nullptr) {} + +SS::SS(const FITSImage::Statistic& stat, py::buffer buffer, py::object callback, + QObject* parent) + : QObject(parent), callback_(std::move(callback)) { + LOG_SCOPE_FUNCTION(INFO); + + py::buffer_info info = buffer.request(); + if (info.format != py::format_descriptor::format()) { + LOG_F(ERROR, "Buffer must be of type uint8_t"); + throw std::runtime_error("Buffer must be of type uint8_t"); + } + + bufferData_.resize(info.size); + memcpy(bufferData_.data(), info.ptr, info.size); + + int argc = 0; + char** argv = nullptr; + app = new QCoreApplication(argc, argv); + + solver = new StellarSolver(stat, bufferData_.data(), this); + + solver->setLogLevel(SSolver::LOG_ALL); + + connect(solver, &StellarSolver::logOutput, this, &SS::onLogOutput); + connect(solver, &StellarSolver::finished, this, &SS::onFinished); + + LOG_F(INFO, "SS object created successfully"); +} + +SS::~SS() { + LOG_SCOPE_FUNCTION(INFO); + delete solver; + delete app; + LOG_F(INFO, "SS object destroyed"); +} + +bool SS::loadNewImageBuffer(const FITSImage::Statistic& stats, + py::buffer buffer) { + LOG_SCOPE_FUNCTION(INFO); + py::buffer_info info = buffer.request(); + if (info.format != py::format_descriptor::format()) { + LOG_F(ERROR, "Buffer must be of type uint8_t"); + return false; + } + + bufferData_.resize(info.size); + memcpy(bufferData_.data(), info.ptr, info.size); + + bool result = solver->loadNewImageBuffer(stats, bufferData_.data()); + LOG_F(INFO, "Loaded new image buffer: {}", result); + return result; +} + +bool SS::extract(bool calculateHFR, QRect frame) { + LOG_SCOPE_FUNCTION(INFO); + bool result = solver->extract(calculateHFR, frame); + LOG_F(INFO, "Extraction result: {}", result); + return result; +} + +bool SS::solve() { + LOG_SCOPE_FUNCTION(INFO); + bool result = solver->solve(); + LOG_F(INFO, "Solve result: {}", result); + return result; +} + +void SS::start() { + LOG_SCOPE_FUNCTION(INFO); + solver->start(); + LOG_F(INFO, "Solver started"); +} + +void SS::abort() { + LOG_SCOPE_FUNCTION(INFO); + solver->abort(); + LOG_F(INFO, "Solver aborted"); +} + +void SS::abortAndWait() { + LOG_SCOPE_FUNCTION(INFO); + solver->abortAndWait(); + LOG_F(INFO, "Solver aborted and waiting"); +} + +void SS::setParameterProfile(SSolver::Parameters::ParametersProfile profile) { + LOG_SCOPE_FUNCTION(INFO); + solver->setParameterProfile(profile); +} + +void SS::setSearchScale(double fovLow, double fovHigh, + const QString& scaleUnits) { + LOG_SCOPE_FUNCTION(INFO); + solver->setSearchScale(fovLow, fovHigh, scaleUnits); + LOG_F(INFO, "Set search scale to {} - {} {}", fovLow, fovHigh, + scaleUnits.toStdString()); +} + +void SS::setSearchScale(double fovLow, double fovHigh, + SSolver::ScaleUnits units) { + LOG_SCOPE_FUNCTION(INFO); + solver->setSearchScale(fovLow, fovHigh, units); + LOG_F(INFO, "Set search scale to {} - {}", fovLow, fovHigh); +} + +void SS::setSearchPositionRaDec(double ra, double dec) { + LOG_SCOPE_FUNCTION(INFO); + solver->setSearchPositionRaDec(ra, dec); + LOG_F(INFO, "Set search position RA: {}, Dec: {}", ra, dec); +} + +void SS::setSearchPositionInDegrees(double ra, double dec) { + LOG_SCOPE_FUNCTION(INFO); + solver->setSearchPositionInDegrees(ra, dec); + LOG_F(INFO, "Set search position (degrees) RA: {}, Dec: {}", ra, dec); +} + +void SS::setUseSubframe(QRect frame) { + LOG_SCOPE_FUNCTION(INFO); + solver->setUseSubframe(frame); + LOG_F(INFO, "Set subframe: x={}, y={}, width={}, height={}", frame.x(), + frame.y(), frame.width(), frame.height()); +} + +bool SS::isRunning() const { + LOG_SCOPE_FUNCTION(INFO); + bool running = solver->isRunning(); + LOG_F(INFO, "Solver is running: {}", running); + return running; +} + +QString SS::raString(double ra) { return StellarSolver::raString(ra); } + +QString SS::decString(double dec) { return StellarSolver::decString(dec); } + +bool SS::pixelToWCS(const QPointF& pixelPoint, FITSImage::wcs_point& skyPoint) { + LOG_SCOPE_FUNCTION(INFO); + bool result = solver->pixelToWCS(pixelPoint, skyPoint); + LOG_F(INFO, "Pixel to WCS: {}", result); + return result; +} + +bool SS::wcsToPixel(const FITSImage::wcs_point& skyPoint, QPointF& pixelPoint) { + LOG_SCOPE_FUNCTION(INFO); + bool result = solver->wcsToPixel(skyPoint, pixelPoint); + LOG_F(INFO, "WCS to pixel: {}", result); + return result; +} + +void SS::onLogOutput(const QString& text) { + LOG_SCOPE_FUNCTION(INFO); + py::gil_scoped_acquire acquire; + callback_(text.toStdString()); + LOG_F(INFO, "Log output: {}", text.toStdString()); +} + +void SS::onFinished() { + LOG_SCOPE_FUNCTION(INFO); + py::gil_scoped_acquire acquire; + callback_("Solver finished"); + LOG_F(INFO, "Solver finished"); +} + +// Helper function to create a star object +py::dict SS::createObjectFromStar(const FITSImage::Star& star) { + LOG_SCOPE_FUNCTION(INFO); + py::dict obj; + obj["x"] = star.x; + obj["y"] = star.y; + obj["hfr"] = star.HFR; + obj["flux"] = star.flux; + obj["ra"] = star.ra; + obj["dec"] = star.dec; + LOG_F(INFO, + "Created star object: x={}, y={}, hfr={}, flux={}, ra={}, dec={}", + star.x, star.y, star.HFR, star.flux, star.ra, star.dec); + return obj; +} + +auto loadFits(const QString& fileName) -> LoadFitsResult { + LOG_SCOPE_FUNCTION(INFO); + LoadFitsResult result; + fitsfile* fptr{nullptr}; + int status = 0; + int anynullptr = 0; + long naxes[3] = {0, 0, 0}; + + // Open FITS file + if (fits_open_diskfile(&fptr, fileName.toLocal8Bit(), READONLY, &status)) { + LOG_F(ERROR, "Error opening FITS file: {}", fileName.toStdString()); + return result; + } + + // Set file size + result.imageStats.size = QFile(fileName).size(); + LOG_F(INFO, "File size: {} bytes", result.imageStats.size); + + // Move to image HDU + if (fits_movabs_hdu(fptr, 1, IMAGE_HDU, &status)) { + LOG_F(ERROR, "Could not locate image HDU"); + fits_close_file(fptr, &status); + return result; + } + + // Get image parameters + int fitsBitPix = 0; + if (fits_get_img_param(fptr, 3, &fitsBitPix, &(result.imageStats.ndim), + naxes, &status)) { + LOG_F(ERROR, "FITS file error: could not get image parameters"); + fits_close_file(fptr, &status); + return result; + } + + // Validate dimensions + if (result.imageStats.ndim < 2) { + LOG_F(ERROR, "1D FITS images are not supported"); + fits_close_file(fptr, &status); + return result; + } + + // Set data type and bytes per pixel + switch (fitsBitPix) { + case BYTE_IMG: + result.imageStats.dataType = 11; // SEP_TBYTE + result.imageStats.bytesPerPixel = sizeof(uint8_t); + break; + case SHORT_IMG: + case USHORT_IMG: + result.imageStats.dataType = TUSHORT; + result.imageStats.bytesPerPixel = sizeof(uint16_t); + break; + case LONG_IMG: + case ULONG_IMG: + result.imageStats.dataType = TULONG; + result.imageStats.bytesPerPixel = sizeof(uint32_t); + break; + case FLOAT_IMG: + result.imageStats.dataType = TFLOAT; + result.imageStats.bytesPerPixel = sizeof(float); + break; + case LONGLONG_IMG: + result.imageStats.dataType = TLONGLONG; + result.imageStats.bytesPerPixel = sizeof(int64_t); + break; + case DOUBLE_IMG: + result.imageStats.dataType = TDOUBLE; + result.imageStats.bytesPerPixel = sizeof(double); + break; + default: + LOG_F(ERROR, "Unsupported bit depth: {}", fitsBitPix); + fits_close_file(fptr, &status); + return result; + } + + // Set image dimensions + if (result.imageStats.ndim < 3) + naxes[2] = 1; + if (naxes[0] == 0 || naxes[1] == 0) { + LOG_F(ERROR, "Invalid dimensions: {}x{}", naxes[0], naxes[1]); + fits_close_file(fptr, &status); + return result; + } + + result.imageStats.width = static_cast(naxes[0]); + result.imageStats.height = static_cast(naxes[1]); + result.imageStats.channels = static_cast(naxes[2]); + result.imageStats.samples_per_channel = + result.imageStats.width * result.imageStats.height; + + // Allocate buffer + const uint32_t bufferSize = + result.imageStats.samples_per_channel * result.imageStats.channels * + static_cast(result.imageStats.bytesPerPixel); + + try { + result.imageBuffer = new uint8_t[bufferSize]; + } catch (const std::bad_alloc& e) { + LOG_F(ERROR, "Memory allocation failed for {} bytes: {}", bufferSize, + e.what()); + fits_close_file(fptr, &status); + return result; + } + + // Read image data + const long NELEMENTS = + result.imageStats.samples_per_channel * result.imageStats.channels; + if (fits_read_img(fptr, static_cast(result.imageStats.dataType), + 1, NELEMENTS, nullptr, result.imageBuffer, &anynullptr, + &status)) { + LOG_F(ERROR, "Error reading image data"); + delete[] result.imageBuffer; + fits_close_file(fptr, &status); + return result; + } + + fits_close_file(fptr, &status); + result.success = true; + LOG_F(INFO, "Successfully loaded FITS image: {}x{}x{}", + result.imageStats.width, result.imageStats.height, + result.imageStats.channels); + + return result; +} + +auto SS::findStarsByStellarSolver(bool AllStars, + bool runHFR) -> QList { + LoadFitsResult result; + + QList stars; + + result = loadFits("/dev/shm/ccd_simulator.fits"); + + if (!result.success) { + LOG_F(ERROR, "Error in loading FITS file"); + return stars; + } + + FITSImage::Statistic imageStats = result.imageStats; + uint8_t* imageBuffer = result.imageBuffer; + stars = findStarsByStellarSolver(AllStars, imageStats, imageBuffer, runHFR); + return stars; +} + +auto SS::findStarsByStellarSolver(bool AllStars, + const FITSImage::Statistic& imagestats, + const uint8_t* imageBuffer, + bool runHFR) -> QList { + StellarSolver solver(imagestats, imageBuffer); + // 配置solver参数 + SSolver::Parameters parameters; + + // 设置参数 + // parameters.apertureShape = SSolver::SHAPE_CIRCLE; // + // 使用圆形的星点检测形状 parameters.kron_fact = 2.5; // 设置Kron因子 + // parameters.subpix = 5; // 子像素设置 + // parameters.r_min = 5; // 最小星点半径 + // parameters.magzero = 20; // 零点星等 + // parameters.minarea = 20; // 最小星点面积 + // parameters.deblend_thresh = 32; // 去混叠阈值 + // parameters.deblend_contrast = 0.005; // 去混叠对比度 + // parameters.clean = 1; // 清理图像 + // parameters.fwhm = 1; // 全宽半高 + // parameters.maxSize = 0; // 最大星点大小 + // parameters.minSize = 0; // 最小星点大小 + // parameters.maxEllipse = 1.5; // 最大椭圆比 + // parameters.initialKeep = 250; // 初始保留星点数量 + // parameters.keepNum = 100; // 保留星点数量 + // parameters.removeBrightest = 10; // 移除最亮星点比例 + // parameters.removeDimmest = 20; // 移除最暗星点比例 + // parameters.saturationLimit = 90; // 饱和度限制 + + parameters.apertureShape = SSolver::SHAPE_CIRCLE; + parameters.autoDownsample = true; + parameters.clean = 1; + parameters.clean_param = 1; + parameters.convFilterType = SSolver::CONV_GAUSSIAN; + parameters.deblend_contrast = 0.004999999888241291; + parameters.deblend_thresh = 32; + parameters.description = "Default focus star-extraction."; + parameters.downsample = 1; + parameters.fwhm = 1; + parameters.inParallel = true; + parameters.initialKeep = 250; + parameters.keepNum = 100; + parameters.kron_fact = 2.5; + parameters.listName = "1-Focus-Default"; + parameters.logratio_tokeep = 20.72326583694641; + parameters.logratio_tosolve = 20.72326583694641; + parameters.logratio_totune = 13.815510557964274; + parameters.magzero = 20; + parameters.maxEllipse = 1.5; + parameters.maxSize = 10; + parameters.maxwidth = 180; + parameters.minSize = 0; + parameters.minarea = 20; + parameters.minwidth = 0.1; + parameters.multiAlgorithm = SSolver::MULTI_AUTO; + parameters.partition = true; + parameters.r_min = 5; + parameters.removeBrightest = 10; + parameters.removeDimmest = 20; + parameters.resort = true; + parameters.saturationLimit = 90; + parameters.search_parity = 15; + parameters.solverTimeLimit = 600; + parameters.subpix = 5; + + solver.setLogLevel(SSolver::LOG_ALL); + solver.setSSLogLevel(SSolver::LOG_NORMAL); + + solver.setProperty("ExtractorType", SSolver::EXTRACTOR_INTERNAL); + solver.setProperty("ProcessType", SSolver::EXTRACT); + solver.setParameterProfile(SSolver::Parameters::DEFAULT); + // solver.setParameterProfile(SSolver::Parameters::ALL_STARS); + + // 设置参数 + solver.setParameters(parameters); + + if (AllStars) { + solver.setParameterProfile(SSolver::Parameters::ALL_STARS); + } + + // 进行星点检测 + bool success = solver.extract(runHFR); + if (!success) { + LOG_F(ERROR, "Star extraction failed."); + } + LOG_F(INFO, "success extract: {}", success); + + QList stars; + + stars = solver.getStarList(); + + // 输出检测到的星点信息 + LOG_F(INFO, "Detected stars: {}", stars.size()); + for (const auto& star : stars) { + LOG_F(INFO, "Star: x={}, y={}, HFR={}, flux={}, ra={}, dec={}", star.x, + star.y, star.HFR, star.flux, star.ra, star.dec); + } + + return stars; +} \ No newline at end of file diff --git a/modules/lithium.stellarsolver/ss.h b/modules/lithium.stellarsolver/ss.h new file mode 100644 index 00000000..4bc8f134 --- /dev/null +++ b/modules/lithium.stellarsolver/ss.h @@ -0,0 +1,100 @@ +#pragma once + +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + +namespace py = pybind11; + +struct LoadFitsResult { + bool success{}; + FITSImage::Statistic imageStats; + uint8_t* imageBuffer{}; +}; + +class SS : public QObject { + Q_OBJECT +public: + explicit SS(QObject* parent = nullptr); + SS(const FITSImage::Statistic& stat, py::buffer buffer, py::object callback, + QObject* parent = nullptr); + ~SS(); + + // StellarSolver 方法 + bool loadNewImageBuffer(const FITSImage::Statistic& stats, + py::buffer buffer); + + static SSolver::ExternalProgramPaths getDefaultExternalPaths( + SSolver::ComputerSystemType system); + static SSolver::ExternalProgramPaths getDefaultExternalPaths(); + + static QStringList getIndexFiles(const QStringList& directoryList, + int indexToUse = -1, + int healpixToUse = -1); + + bool extract(bool calculateHFR = false, QRect frame = QRect()); + bool solve(); + void start(); + void abort(); + void abortAndWait(); + + void setParameterProfile(SSolver::Parameters::ParametersProfile profile); + + void setSearchScale(double fovLow, double fovHigh, + const QString& scaleUnits); + void setSearchScale(double fovLow, double fovHigh, + SSolver::ScaleUnits units); + + void setSearchPositionRaDec(double ra, double dec); + void setSearchPositionInDegrees(double ra, double dec); + + static QVector generateConvFilter(SSolver::ConvFilterType filter, + double fwhm); + static QList getBuiltInProfiles(); + static QList loadSavedOptionsProfiles( + const QString& savedOptionsProfiles); + static QStringList getDefaultIndexFolderPaths(); + + void setUseSubframe(QRect frame); + bool isRunning() const; + + static QString raString(double ra); + static QString decString(double dec); + + bool pixelToWCS(const QPointF& pixelPoint, FITSImage::wcs_point& skyPoint); + bool wcsToPixel(const FITSImage::wcs_point& skyPoint, QPointF& pixelPoint); + + auto findStarsByStellarSolver(bool AllStars, + bool runHFR) -> QList; + +signals: + void logOutput(const QString& logText); + void ready(); + void finished(); + +private slots: + void onLogOutput(const QString& text); + void onFinished(); + +private: + py::dict createObjectFromStar(const FITSImage::Star& star); + + auto findStarsByStellarSolver(bool AllStars, + const FITSImage::Statistic& imagestats, + const uint8_t* imageBuffer, + bool runHFR) -> QList; + + // 成员变量 + QCoreApplication* app; + StellarSolver* solver; + py::object callback_; + std::vector bufferData_; +}; \ No newline at end of file diff --git a/modules/lithium.stellarsolver/structures.cpp b/modules/lithium.stellarsolver/structures.cpp new file mode 100644 index 00000000..c0b54286 --- /dev/null +++ b/modules/lithium.stellarsolver/structures.cpp @@ -0,0 +1,99 @@ +#include "structures.h" + +FitsImageStatistic::FitsImageStatistic() { + stat_.dataType = 20; + stat_.bytesPerPixel = sizeof(int16_t); +} + +py::list FitsImageStatistic::getMin() const { + py::list res; + for (unsigned int i = 0; i <= 2; i++) { + res.append(stat_.min[i]); + } + return res; +} + +void FitsImageStatistic::setMin(const py::object& value) { + setDoubleArray(stat_.min, 3, value); +} + +py::list FitsImageStatistic::getMax() const { + py::list res; + for (unsigned int i = 0; i <= 2; i++) { + res.append(stat_.max[i]); + } + return res; +} + +void FitsImageStatistic::setMax(const py::object& value) { + setDoubleArray(stat_.max, 3, value); +} + +py::list FitsImageStatistic::getMean() const { + py::list res; + for (unsigned int i = 0; i <= 2; i++) { + res.append(stat_.mean[i]); + } + return res; +} + +void FitsImageStatistic::setMean(const py::object& value) { + setDoubleArray(stat_.mean, 3, value); +} + +py::list FitsImageStatistic::getMedian() const { + py::list res; + for (unsigned int i = 0; i <= 2; i++) { + res.append(stat_.median[i]); + } + return res; +} + +void FitsImageStatistic::setMedian(const py::object& value) { + setDoubleArray(stat_.median, 3, value); +} + +double FitsImageStatistic::getSnr() const { return stat_.SNR; } + +void FitsImageStatistic::setSnr(double value) { stat_.SNR = value; } + +uint32_t FitsImageStatistic::getDataType() const { return stat_.dataType; } + +void FitsImageStatistic::setDataType(uint32_t value) { stat_.dataType = value; } + +uint32_t FitsImageStatistic::getSamplesPerChannel() const { + return stat_.samples_per_channel; +} + +void FitsImageStatistic::setSamplesPerChannel(uint32_t value) { + stat_.samples_per_channel = value; +} + +uint16_t FitsImageStatistic::getWidth() const { return stat_.width; } + +void FitsImageStatistic::setWidth(uint16_t value) { stat_.width = value; } + +uint16_t FitsImageStatistic::getHeight() const { return stat_.height; } + +void FitsImageStatistic::setHeight(uint16_t value) { stat_.height = value; } + +uint8_t FitsImageStatistic::getChannels() const { return stat_.channels; } + +void FitsImageStatistic::setChannels(uint8_t value) { stat_.channels = value; } + +FITSImage::Statistic& FitsImageStatistic::getStat() { return stat_; } + +void FitsImageStatistic::setDoubleArray(double* array, unsigned int length, + const py::object& value) { + if (py::isinstance(value) || py::isinstance(value)) { + auto val = value.cast(); + for (unsigned int i = 0; i < length; i++) { + array[i] = val; + } + } else if (py::isinstance(value)) { + auto seq = value.cast(); + for (unsigned int i = 0; i < length && i < py::len(seq); i++) { + array[i] = seq[i].cast(); + } + } +} \ No newline at end of file diff --git a/modules/lithium.stellarsolver/structures.h b/modules/lithium.stellarsolver/structures.h new file mode 100644 index 00000000..b2a84a2a --- /dev/null +++ b/modules/lithium.stellarsolver/structures.h @@ -0,0 +1,50 @@ +#pragma once + +#include + +#include + +namespace py = pybind11; + +class FitsImageStatistic { +public: + FitsImageStatistic(); + ~FitsImageStatistic() = default; + + [[nodiscard]] auto getMin() const -> py::list; + void setMin(const py::object& value); + + [[nodiscard]] auto getMax() const -> py::list; + void setMax(const py::object& value); + + [[nodiscard]] auto getMean() const -> py::list; + void setMean(const py::object& value); + + [[nodiscard]] auto getMedian() const -> py::list; + void setMedian(const py::object& value); + + [[nodiscard]] auto getSnr() const -> double; + void setSnr(double value); + + [[nodiscard]] auto getDataType() const -> uint32_t; + void setDataType(uint32_t value); + + [[nodiscard]] auto getSamplesPerChannel() const -> uint32_t; + void setSamplesPerChannel(uint32_t value); + + [[nodiscard]] auto getWidth() const -> uint16_t; + void setWidth(uint16_t value); + + [[nodiscard]] auto getHeight() const -> uint16_t; + void setHeight(uint16_t value); + + [[nodiscard]] auto getChannels() const -> uint8_t; + void setChannels(uint8_t value); + + auto getStat() -> FITSImage::Statistic&; + +private: + void setDoubleArray(double* array, unsigned int length, + const py::object& value); + FITSImage::Statistic stat_; +}; \ No newline at end of file diff --git a/modules/lithium.tools/pymodule.cpp b/modules/lithium.tools/pymodule.cpp new file mode 100644 index 00000000..6dfce910 --- /dev/null +++ b/modules/lithium.tools/pymodule.cpp @@ -0,0 +1,235 @@ +#include +#include +#include +#include +#include +#include + +#include "tools/croods.hpp" +#include "tools/libastro.hpp" + +namespace py = pybind11; +using namespace lithium::tools; + +PYBIND11_MODULE(croods, m) { + m.doc() = "Croods Module"; + + py::class_(m, "CartesianCoordinates") + .def(py::init<>()) + .def_readwrite("x", &CartesianCoordinates::x) + .def_readwrite("y", &CartesianCoordinates::y) + .def_readwrite("z", &CartesianCoordinates::z); + + py::class_(m, "SphericalCoordinates") + .def(py::init<>()) + .def_readwrite("rightAscension", &SphericalCoordinates::rightAscension) + .def_readwrite("declination", &SphericalCoordinates::declination); + + py::class_(m, "MinMaxFOV") + .def(py::init<>()) + .def_readwrite("minFOV", &MinMaxFOV::minFOV) + .def_readwrite("maxFOV", &MinMaxFOV::maxFOV); + + py::class_(m, "DateTime") + .def(py::init<>()) + .def_readwrite("year", &DateTime::year) + .def_readwrite("month", &DateTime::month) + .def_readwrite("day", &DateTime::day) + .def_readwrite("hour", &DateTime::hour) + .def_readwrite("minute", &DateTime::minute) + .def_readwrite("second", &DateTime::second); + + py::class_>(m, "CelestialCoords") + .def(py::init<>()) + .def_readwrite("ra", &CelestialCoords::ra) + .def_readwrite("dec", &CelestialCoords::dec); + + py::class_>(m, "GeographicCoords") + .def(py::init<>()) + .def_readwrite("latitude", &GeographicCoords::latitude) + .def_readwrite("longitude", &GeographicCoords::longitude); + + m.def("range_to", &rangeTo, py::arg("value"), py::arg("max"), + py::arg("min"), "Clamps a value to a specified range."); + m.def("degree_to_rad", °reeToRad, py::arg("degree"), + "Converts degrees to radians."); + m.def("rad_to_degree", &radToDegree, py::arg("rad"), + "Converts radians to degrees."); + m.def("hour_to_degree", &hourToDegree, py::arg("hour"), + "Converts hours to degrees."); + m.def("hour_to_rad", &hourToRad, py::arg("hour"), + "Converts hours to radians."); + m.def("degree_to_hour", °reeToHour, py::arg("degree"), + "Converts degrees to hours."); + m.def("rad_to_hour", &radToHour, py::arg("rad"), + "Converts radians to hours."); + m.def("get_ha_degree", &getHaDegree, py::arg("RA_radian"), + py::arg("LST_Degree"), "Calculates the hour angle in degrees."); + m.def("ra_dec_to_alt_az", + py::overload_cast( + &raDecToAltAz), + py::arg("ha_radian"), py::arg("dec_radian"), py::arg("alt_radian"), + py::arg("az_radian"), py::arg("lat_radian"), + "Converts RA/Dec to Alt/Az."); + m.def("ra_dec_to_alt_az", + py::overload_cast(&raDecToAltAz), + py::arg("ha_radian"), py::arg("dec_radian"), py::arg("lat_radian"), + "Converts RA/Dec to Alt/Az and returns a vector."); + m.def("period_belongs", &periodBelongs, py::arg("value"), py::arg("min"), + py::arg("max"), py::arg("period"), py::arg("minequ"), + py::arg("maxequ"), + "Checks if a value belongs to a specified period."); + m.def("convert_equatorial_to_cartesian", &convertEquatorialToCartesian, + py::arg("ra"), py::arg("dec"), py::arg("radius"), + "Converts equatorial coordinates to Cartesian coordinates."); + m.def("calculate_vector", &calculateVector, py::arg("pointA"), + py::arg("pointB"), + "Calculates the vector between two Cartesian points."); + m.def("calculate_point_c", &calculatePointC, py::arg("pointA"), + py::arg("vectorV"), + "Calculates a new Cartesian point based on a vector."); + m.def("convert_to_spherical_coordinates", &convertToSphericalCoordinates, + py::arg("cartesianPoint"), + "Converts Cartesian coordinates to spherical coordinates."); + m.def("calculate_fov", &calculateFOV, py::arg("focalLength"), + py::arg("cameraSizeWidth"), py::arg("cameraSizeHeight"), + "Calculates the field of view based on camera parameters."); + m.def("lumen", &lumen, py::arg("wavelength"), + "Calculates the luminous efficacy for a given wavelength."); + m.def("redshift", &redshift, py::arg("observed"), py::arg("rest"), + "Calculates the redshift."); + m.def("doppler", &doppler, py::arg("redshift"), py::arg("speed"), + "Calculates the Doppler shift."); + m.def("range_ha", &rangeHA, py::arg("range"), + "Clamps a value to the range of hour angles."); + m.def("range_24", &range24, py::arg("range"), + "Clamps a value to the range of 24 hours."); + m.def("range_360", &range360, py::arg("range"), + "Clamps a value to the range of 360 degrees."); + m.def("range_dec", &rangeDec, py::arg("decDegrees"), + "Clamps a declination value to the valid range."); + m.def("get_local_hour_angle", &getLocalHourAngle, + py::arg("siderealTime"), py::arg("rightAscension"), + "Calculates the local hour angle."); + m.def("get_alt_az_coordinates", &getAltAzCoordinates, + py::arg("hourAngle"), py::arg("declination"), py::arg("latitude"), + "Calculates the altitude and azimuth coordinates."); + m.def("estimate_geocentric_elevation", &estimateGeocentricElevation, + py::arg("latitude"), py::arg("elevation"), + "Estimates the geocentric elevation."); + m.def("estimate_field_rotation_rate", &estimateFieldRotationRate, + py::arg("altitude"), py::arg("azimuth"), py::arg("latitude"), + "Estimates the field rotation rate."); + m.def("estimate_field_rotation", &estimateFieldRotation, + py::arg("hourAngle"), py::arg("rate"), + "Estimates the field rotation."); + m.def("as2rad", &as2rad, py::arg("arcSeconds"), + "Converts arcseconds to radians."); + m.def("rad2as", &rad2as, py::arg("radians"), + "Converts radians to arcseconds."); + m.def("estimate_distance", &estimateDistance, py::arg("parsecs"), + py::arg("parallaxRadius"), + "Estimates the distance based on parallax."); + m.def("m2au", &m2au, py::arg("meters"), + "Converts meters to astronomical units."); + m.def("calc_delta_magnitude", &calcDeltaMagnitude, + py::arg("magnitudeRatio"), py::arg("spectrum"), + "Calculates the delta magnitude."); + m.def("calc_star_mass", &calcStarMass, py::arg("deltaMagnitude"), + py::arg("referenceSize"), "Calculates the mass of a star."); + m.def("estimate_orbit_radius", &estimateOrbitRadius, + py::arg("observedWavelength"), py::arg("referenceWavelength"), + py::arg("period"), "Estimates the orbit radius."); + m.def("estimate_secondary_mass", &estimateSecondaryMass, + py::arg("starMass"), py::arg("starDrift"), py::arg("orbitRadius"), + "Estimates the mass of a secondary object."); + m.def("estimate_secondary_size", &estimateSecondarySize, + py::arg("starSize"), py::arg("dropoffRatio"), + "Estimates the size of a secondary object."); + m.def("calc_photon_flux", &calcPhotonFlux, + py::arg("relativeMagnitude"), py::arg("filterBandwidth"), + py::arg("wavelength"), py::arg("steradian"), + "Calculates the photon flux."); + m.def("calc_rel_magnitude", &calcRelMagnitude, + py::arg("photonFlux"), py::arg("filterBandwidth"), + py::arg("wavelength"), py::arg("steradian"), + "Calculates the relative magnitude."); + m.def("estimate_absolute_magnitude", &estimateAbsoluteMagnitude, + py::arg("deltaDistance"), py::arg("deltaMagnitude"), + "Estimates the absolute magnitude."); + m.def("baseline_2d_projection", &baseline2dProjection, + py::arg("altitude"), py::arg("azimuth"), + "Calculates the 2D projection of a baseline."); + m.def("baseline_delay", &baselineDelay, py::arg("altitude"), + py::arg("azimuth"), py::arg("baseline"), + "Calculates the baseline delay."); + m.def("calculate_julian_date", &calculateJulianDate, + py::arg("dateTime"), "Calculates the Julian date."); + m.def("calculate_sidereal_time", &calculateSiderealTime, + py::arg("dateTime"), py::arg("longitude"), + "Calculates the sidereal time."); + m.def("calculate_refraction", &calculateRefraction, + py::arg("altitude"), py::arg("temperature") = 10.0, + py::arg("pressure") = 1010.0, "Calculates atmospheric refraction."); + m.def("apply_parallax", &applyParallax, py::arg("coords"), + py::arg("observer"), py::arg("distance"), py::arg("dt"), + "Applies parallax correction to celestial coordinates."); + m.def("equatorial_to_ecliptic", &equatorialToEcliptic, + py::arg("coords"), py::arg("obliquity"), + "Converts equatorial coordinates to ecliptic coordinates."); + m.def("calculate_precession", &calculatePrecession, + py::arg("coords"), py::arg("from"), py::arg("to"), + "Calculates the precession of celestial coordinates."); + m.def("format_ra", &formatRa, py::arg("ra"), + "Formats right ascension as a string."); + m.def("format_dec", &formatDec, py::arg("dec"), + "Formats declination as a string."); + + py::class_(m, "EquatorialCoordinates") + .def(py::init<>()) + .def_readwrite("rightAscension", &EquatorialCoordinates::rightAscension) + .def_readwrite("declination", &EquatorialCoordinates::declination); + + py::class_(m, "HorizontalCoordinates") + .def(py::init<>()) + .def_readwrite("azimuth", &HorizontalCoordinates::azimuth) + .def_readwrite("altitude", &HorizontalCoordinates::altitude); + + py::class_(m, "GeographicCoordinates") + .def(py::init<>()) + .def_readwrite("longitude", &GeographicCoordinates::longitude) + .def_readwrite("latitude", &GeographicCoordinates::latitude) + .def_readwrite("elevation", &GeographicCoordinates::elevation); + + m.def("deg_to_rad", °ToRad, py::arg("deg"), + "Converts degrees to radians."); + m.def("rad_to_deg", &radToDeg, py::arg("rad"), + "Converts radians to degrees."); + m.def("range_360", &range360, py::arg("angle"), + "Clamps an angle to the range 0 to 360 degrees."); + + m.def("observed_to_j2000", &observedToJ2000, py::arg("observed"), + py::arg("julianDate"), + "Converts observed equatorial coordinates to J2000 coordinates."); + m.def("j2000_to_observed", &j2000ToObserved, py::arg("j2000"), + py::arg("julianDate"), + "Converts J2000 equatorial coordinates to observed coordinates."); + m.def("equatorial_to_horizontal", &equatorialToHorizontal, + py::arg("object"), py::arg("observer"), py::arg("julianDate"), + "Converts equatorial coordinates to horizontal coordinates."); + m.def("horizontal_to_equatorial", &horizontalToEquatorial, + py::arg("object"), py::arg("observer"), py::arg("julianDate"), + "Converts horizontal coordinates to equatorial coordinates."); + + m.def("get_nutation", &getNutation, py::arg("julianDate"), + "Calculates the nutation for a given Julian date."); + m.def("apply_nutation", &applyNutation, py::arg("position"), + py::arg("julianDate"), py::arg("reverse") = false, + "Applies nutation to equatorial coordinates."); + m.def("apply_aberration", &applyAberration, py::arg("position"), + py::arg("julianDate"), + "Applies aberration to equatorial coordinates."); + m.def("apply_precession", &applyPrecession, py::arg("position"), + py::arg("fromJulianDate"), py::arg("toJulianDate"), + "Applies precession to equatorial coordinates."); +} diff --git a/pysrc/addon/finder.py b/pysrc/addon/finder.py deleted file mode 100644 index 338ebc3a..00000000 --- a/pysrc/addon/finder.py +++ /dev/null @@ -1,170 +0,0 @@ -""" -libclang Path Finder - -This script automatically locates the path to the libclang library depending on the operating system. -It supports Linux, macOS, and Windows platforms. The script uses the `loguru` library for detailed -logging and provides comprehensive error handling. - -Dependencies: -- clang.cindex -- loguru - -Usage: -- The script automatically determines the path to `libclang` and sets it for the `clang.cindex.Config`. - -Author: [Your Name] -Date: [Date] -""" - -import platform -import os -import glob -import subprocess -from clang.cindex import Config -from loguru import logger - - -def find_libclang_linux(): - """ - Searches for the libclang library on Linux systems. - - This function looks through several common installation paths for libclang on Linux. - If the library is not found in the predefined paths, a RuntimeError is raised. - - Returns: - str: The path to the libclang library. - - Raises: - RuntimeError: If the libclang library is not found. - """ - possible_paths = [ - '/usr/lib/llvm-*/*/lib/libclang.so', - '/usr/local/lib/llvm-*/*/lib/libclang.so', - '/usr/lib/x86_64-linux-gnu/libclang.so', - '/usr/local/lib/x86_64-linux-gnu/libclang.so' - ] - logger.info("Searching for libclang on Linux...") - for pattern in possible_paths: - for path in glob.glob(pattern): - if os.path.isfile(path): - logger.info(f"Found libclang at {path}") - return path - logger.error("libclang not found on Linux") - raise RuntimeError("libclang not found on Linux") - - -def find_libclang_macos(): - """ - Searches for the libclang library on macOS systems. - - This function checks common installation paths for libclang on macOS. If the library is not - found in the predefined paths, it attempts to locate it using the `find` command. A RuntimeError - is raised if the library cannot be found. - - Returns: - str: The path to the libclang library. - - Raises: - RuntimeError: If the libclang library is not found. - """ - possible_paths = [ - '/usr/local/opt/llvm/lib/libclang.dylib', - '/usr/local/lib/libclang.dylib' - ] - logger.info("Searching for libclang on macOS...") - for path in possible_paths: - if os.path.isfile(path): - logger.info(f"Found libclang at {path}") - return path - # Fallback: try using `find` command - try: - result = subprocess.run(['find', '/', '-name', 'libclang.dylib'], - stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) - paths = result.stdout.strip().split('\n') - if paths: - logger.info(f"Found libclang at {paths[0]}") - return paths[0] - except Exception as e: - logger.error(f"Error while searching for libclang: {e}") - logger.error("libclang not found on macOS") - raise RuntimeError("libclang not found on macOS") - - -def find_libclang_windows(): - """ - Searches for the libclang library on Windows systems. - - This function checks common installation paths for libclang on Windows. If the library is not found - in the predefined paths, it attempts to locate it using the `where` command. A RuntimeError is raised - if the library cannot be found. - - Returns: - str: The path to the libclang library. - - Raises: - RuntimeError: If the libclang library is not found. - """ - possible_paths = [ - 'C:\\Program Files\\LLVM\\bin\\libclang.dll', - 'C:\\Program Files (x86)\\LLVM\\bin\\libclang.dll' - ] - logger.info("Searching for libclang on Windows...") - for path in possible_paths: - if os.path.isfile(path): - logger.info(f"Found libclang at {path}") - return path - # Fallback: try using `where` command - try: - result = subprocess.run( - ['where', 'libclang.dll'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) - paths = result.stdout.strip().split('\n') - if paths: - logger.info(f"Found libclang at {paths[0]}") - return paths[0] - except Exception as e: - logger.error(f"Error while searching for libclang: {e}") - logger.error("libclang not found on Windows") - raise RuntimeError("libclang not found on Windows") - - -def get_libclang_path(): - """ - Determines the appropriate libclang library path based on the operating system. - - This function detects the current operating system and calls the corresponding function - to find the libclang library path. If the operating system is not supported, a RuntimeError - is raised. - - Returns: - str: The path to the libclang library. - - Raises: - RuntimeError: If the operating system is unsupported. - """ - system = platform.system() - logger.info(f"Detected operating system: {system}") - if system == 'Linux': - return find_libclang_linux() - elif system == 'Darwin': # macOS - return find_libclang_macos() - elif system == 'Windows': - return find_libclang_windows() - else: - logger.error("Unsupported operating system") - raise RuntimeError("Unsupported operating system") - - -# Main Execution Block -if __name__ == "__main__": - """ - Main execution block for setting up libclang path and configuring clang.cindex. - - This block attempts to determine the path to the libclang library using `get_libclang_path()` - and sets it using `clang.cindex.Config.set_library_file()`. If any errors occur, they are logged. - """ - try: - libclang_path = get_libclang_path() - Config.set_library_file(libclang_path) - logger.info(f"Successfully set libclang path to: {libclang_path}") - except Exception as e: - logger.exception("Failed to set libclang path") diff --git a/pysrc/addon/generator.py b/pysrc/addon/generator.py deleted file mode 100644 index c896b08d..00000000 --- a/pysrc/addon/generator.py +++ /dev/null @@ -1,222 +0,0 @@ -""" -ATOM_MODULE Generator for C++ Headers - -This script generates ATOM_MODULE code from C++ header files. It parses header files to extract -public methods and global functions, then generates code that registers these components. It -supports configuring logging levels, blacklisting, and whitelisting of functions or methods. - -Dependencies: -- clang.cindex: For parsing C++ headers using libclang. -- loguru: For detailed logging. -- argparse: For command-line argument parsing. - -Usage: -- Provide paths to C++ header files via the `filepaths` argument. -- Optionally specify output file, log level, whitelist, blacklist, module name, and instance prefix. - -Author: [Your Name] -Date: [Date] -""" - -import clang.cindex -from loguru import logger -import argparse -import os - -from .finder import get_libclang_path - -# Set the path to libclang -try: - libclang_path = get_libclang_path() - clang.cindex.Config.set_library_file(libclang_path) - logger.info(f"Successfully set libclang path to: {libclang_path}") -except Exception as e: - logger.exception("Failed to set libclang path") - -# Default blacklist and whitelist -DEFAULT_BLACKLIST = [] -DEFAULT_WHITELIST = [] - - -def parse_args(): - """ - Parses command-line arguments for the script. - - This function uses argparse to define and parse command-line arguments. It includes options - for specifying file paths, output file, log level, blacklist, whitelist, module name, and - instance prefix. - - Returns: - argparse.Namespace: The parsed command-line arguments. - """ - parser = argparse.ArgumentParser( - description="Generate ATOM_MODULE from C++ headers.") - parser.add_argument("filepaths", nargs='+', - help="Paths to the C++ header files.") - parser.add_argument("--output", default=None, - help="Output file for generated module code.") - parser.add_argument("--log-level", default="INFO", - help="Set the log level (DEBUG, INFO, WARNING, ERROR).") - parser.add_argument("--blacklist", nargs="*", default=DEFAULT_BLACKLIST, - help="List of blacklisted functions or methods.") - parser.add_argument("--whitelist", nargs="*", default=DEFAULT_WHITELIST, - help="List of whitelisted functions or methods.") - parser.add_argument("--module-name", default="all_components", - help="Name of the generated ATOM_MODULE.") - parser.add_argument("--instance-prefix", default="", - help="Prefix for instance names in the module.") - return parser.parse_args() - - -def is_in_list(name, whitelist, blacklist): - """ - Checks if a name is in the whitelist and not in the blacklist. - - Args: - name (str): The name to check. - whitelist (list): The list of whitelisted names. - blacklist (list): The list of blacklisted names. - - Returns: - bool: True if the name is in the whitelist or if the whitelist is empty, and not in the blacklist. - """ - if whitelist and name not in whitelist: - return False - if name in blacklist: - return False - return True - - -def generate_atom_module(filepaths, output_file=None, log_level="INFO", whitelist=None, blacklist=None, module_name="all_components", instance_prefix=""): - """ - Generates ATOM_MODULE code from specified C++ header files. - - Args: - filepaths (list): List of paths to C++ header files. - output_file (str, optional): Path to the output file for generated code. If None, prints to console. - log_level (str, optional): The log level for the output (DEBUG, INFO, WARNING, ERROR). - whitelist (list, optional): List of whitelisted functions or methods. - blacklist (list, optional): List of blacklisted functions or methods. - module_name (str, optional): Name of the generated ATOM_MODULE. - instance_prefix (str, optional): Prefix for instance names in the module. - """ - # Set the log level - logger.remove() - logger.add(lambda msg: print(msg, end=""), level=log_level.upper()) - - # Initialize containers for classes and functions - all_classes = {} - all_functions = [] - - for filepath in filepaths: - index = clang.cindex.Index.create() - translation_unit = index.parse(filepath) - logger.info(f"Parsing the file: {filepath}\n") - - def find_classes_methods_and_functions(node, namespace=""): - """ - Recursively finds classes, methods, and functions within the AST. - - Args: - node (clang.cindex.Cursor): The current AST node. - namespace (str, optional): The current namespace. - - Returns: - tuple: A dictionary of classes and their methods, and a list of functions. - """ - classes = {} - functions = [] - for child in node.get_children(): - # Handle namespaces - if child.kind == clang.cindex.CursorKind.NAMESPACE: - nested_namespace = f"{namespace}::{child.spelling}" if namespace else child.spelling - nested_classes, nested_functions = find_classes_methods_and_functions( - child, nested_namespace) - classes.update(nested_classes) - functions.extend(nested_functions) - # Handle class declarations - elif child.kind == clang.cindex.CursorKind.CLASS_DECL: - class_name = f"{namespace}::{child.spelling}" if namespace else child.spelling - methods = [] - for sub_child in child.get_children(): - if (sub_child.kind == clang.cindex.CursorKind.CXX_METHOD and - sub_child.access_specifier == clang.cindex.AccessSpecifier.PUBLIC): - method_name = sub_child.spelling - if is_in_list(method_name, whitelist, blacklist): - methods.append(method_name) - logger.debug( - f"Found public method: {class_name}::{method_name}") - if methods: - classes[class_name] = methods - logger.debug(f"Registered class: {class_name}") - # Handle global function declarations - elif child.kind == clang.cindex.CursorKind.FUNCTION_DECL: - function_name = f"{namespace}::{child.spelling}" if namespace else child.spelling - if is_in_list(function_name, whitelist, blacklist): - functions.append(function_name) - logger.debug(f"Found global function: {function_name}") - return classes, functions - - classes, functions = find_classes_methods_and_functions( - translation_unit.cursor) - all_classes.update(classes) - all_functions.extend(functions) - - logger.info("Generating ATOM_MODULE...\n") - - # Start building the module code - code_lines = [] - code_lines.append( - f'ATOM_MODULE({module_name}, [](Component &component) {{') - code_lines.append(f' LOG_F(INFO, "Registering all components...");\n') - - # Process classes and their methods - for class_name, methods in all_classes.items(): - for method in methods: - code_lines.append( - f' component.def("{method}", &{class_name}::{method}, "main", "{method} of {class_name}");') - logger.info(f"Registered method: {class_name}::{method}") - - # Use the last part of the class name as the instance name - instance_name = f"{instance_prefix}{class_name.split('::')[-1].lower()}" - code_lines.append( - f' component.addVariable("{instance_name}.instance", "{class_name} instance");') - code_lines.append( - f' component.defType<{class_name}>("{instance_name}");') - logger.info(f"Registered class type: {class_name}") - - # Process global functions - if all_functions: - for function in all_functions: - function_name = function.split("::")[-1] - code_lines.append( - f' component.def("{function_name}", &{function}, "main", "Global function {function}");') - logger.info(f"Registered global function: {function}") - - code_lines.append(f' LOG_F(INFO, "All components registered.");') - code_lines.append('});\n') - - logger.info("ATOM_MODULE generation completed.\n") - - generated_code = "\n".join(code_lines) - - # Output to file or print to console - if output_file: - with open(output_file, 'w') as f: - f.write(generated_code) - logger.info(f"Generated code written to: {output_file}\n") - else: - print(generated_code) - - -# Run the script -if __name__ == "__main__": - """ - Entry point for the script execution. - - Parses command-line arguments and generates ATOM_MODULE code based on the provided header files. - Configures logging and handles exceptions during module generation. - """ - args = parse_args() - generate_atom_module(args.filepaths, args.output, args.log_level, - args.whitelist, args.blacklist, args.module_name, args.instance_prefix) diff --git a/pysrc/app/command_dispatcher.py b/pysrc/app/command_dispatcher.py deleted file mode 100644 index 6fae5b74..00000000 --- a/pysrc/app/command_dispatcher.py +++ /dev/null @@ -1,296 +0,0 @@ -""" -This module provides a CommandDispatcher class for handling commands with rate limiting, permissions, and middlewares. -""" - -import asyncio -import inspect -from datetime import datetime, timedelta -from typing import Dict, Any, Callable, Awaitable, List, Optional -from loguru import logger - - -class Command: - """ - A class representing a command with rate limiting, aliases, and permissions. - """ - - def __init__(self, func: Callable, name: str, description: str, - rate_limit: Optional[int] = None, aliases: Optional[List[str]] = None, - permissions: Optional[List[str]] = None): - """ - Initialize a Command instance. - - Args: - func (Callable): The function to execute for this command. - name (str): The name of the command. - description (str): A brief description of the command. - rate_limit (Optional[int]): The rate limit in seconds. - aliases (Optional[List[str]]): A list of aliases for the command. - permissions (Optional[List[str]]): A list of required permissions. - """ - self.func = func - self.name = name - self.description = description - self.rate_limit = rate_limit - self.aliases = aliases or [] - self.permissions = permissions or [] - self.last_called: Dict[str, datetime] = {} - - def can_execute(self, user_id: str) -> bool: - """ - Check if the command can be executed by the user based on rate limiting. - - Args: - user_id (str): The ID of the user attempting to execute the command. - - Returns: - bool: True if the command can be executed, False otherwise. - """ - if self.rate_limit: - last_called = self.last_called.get(user_id) - if last_called and datetime.now() - last_called < timedelta(seconds=self.rate_limit): - return False - return True - - def update_last_called(self, user_id: str): - """ - Update the last called time for the user. - - Args: - user_id (str): The ID of the user. - """ - self.last_called[user_id] = datetime.now() - - -class CommandDispatcher: - """ - A class for dispatching commands with rate limiting, permissions, and middlewares. - """ - - def __init__(self): - """ - Initialize a CommandDispatcher instance. - """ - self.commands: Dict[str, Command] = {} - self.middlewares: List[Callable] = [] - self.default_command: Optional[Command] = None - - def register(self, name: str, description: str = "", rate_limit: Optional[int] = None, - aliases: Optional[List[str]] = None, permissions: Optional[List[str]] = None): - """ - Register a new command. - - Args: - name (str): The name of the command. - description (str): A brief description of the command. - rate_limit (Optional[int]): The rate limit in seconds. - aliases (Optional[List[str]]): A list of aliases for the command. - permissions (Optional[List[str]]): A list of required permissions. - - Returns: - Callable: A decorator for the command function. - """ - def decorator(f: Callable[[Dict[str, Any]], Awaitable[Dict[str, Any]]]): - command = Command(f, name, description, - rate_limit, aliases, permissions) - self.commands[name] = command - for alias in command.aliases: - self.commands[alias] = command - return f - return decorator - - def set_default(self, f: Callable[[Dict[str, Any]], Awaitable[Dict[str, Any]]]): - """ - Set the default command handler. - - Args: - f (Callable): The default command function. - """ - self.default_command = Command(f, "default", "Default command handler") - - def add_middleware(self, middleware: Callable): - """ - Add a middleware to be applied to all commands. - - Args: - middleware (Callable): The middleware function. - """ - self.middlewares.append(middleware) - - async def dispatch(self, command_name: str, params: Dict[str, Any], user_id: str, - user_permissions: Optional[List[str]] = None) -> Dict[str, Any]: - """ - Dispatch a command. - - Args: - command_name (str): The name of the command. - params (Dict[str, Any]): The parameters for the command. - user_id (str): The ID of the user executing the command. - user_permissions (Optional[List[str]]): The permissions of the user. - - Returns: - Dict[str, Any]: The result of the command execution. - """ - command = self.commands.get(command_name, self.default_command) - - if command is None: - return {"error": f"Unknown command: {command_name}"} - - # Check permissions - if command.permissions and not any(perm in user_permissions for perm in command.permissions): - return {"error": f"Permission denied for command: {command_name}"} - - # Apply rate limiting - if not command.can_execute(user_id): - return {"error": f"Rate limit exceeded for command: {command_name}"} - command.update_last_called(user_id) - - # Apply middlewares - for middleware in self.middlewares: - params = await middleware(command_name, params, user_id) - - try: - # Check if the command function is asynchronous - if inspect.iscoroutinefunction(command.func): - result = await asyncio.wait_for(command.func(params), timeout=10) - else: - # If it's not async, run it in an executor - loop = asyncio.get_event_loop() - result = await asyncio.wait_for(loop.run_in_executor(None, command.func, params), timeout=10) - - # Log command execution - logger.info(f"Command {command_name} executed by user { - user_id} with result: {result}") - return result - except asyncio.TimeoutError: - logger.error(f"Command {command_name} execution timed out") - return {"error": "Command execution timed out"} - except (TypeError, ValueError) as e: - logger.error(f"Error executing command {command_name}: {e}") - return {"error": f"Command execution failed: {str(e)}"} - - def get_command_list(self) -> List[Dict[str, Any]]: - """ - Get the list of registered commands. - - Returns: - List[Dict[str, Any]]: A list of command details. - """ - return [{"name": cmd.name, "description": cmd.description, "aliases": cmd.aliases, "permissions": cmd.permissions} - for cmd in self.commands.values()] - - async def batch_dispatch(self, commands: List[Dict[str, Any]], user_id: str, - user_permissions: Optional[List[str]] = None) -> List[Dict[str, Any]]: - """ - Dispatch multiple commands in a batch. - - Args: - commands (List[Dict[str, Any]]): A list of commands to dispatch. - user_id (str): The ID of the user executing the commands. - user_permissions (Optional[List[str]]): The permissions of the user. - - Returns: - List[Dict[str, Any]]: A list of results from the command executions. - """ - results = [] - for cmd in commands: - result = await self.dispatch(cmd.get("command"), cmd.get("params", {}), user_id, user_permissions) - results.append(result) - return results - - -# Example usage: - -dispatcher = CommandDispatcher() - - -@dispatcher.register("echo", "Echoes the input message", rate_limit=5, aliases=["repeat"], permissions=["user"]) -async def echo_command(params: Dict[str, Any]) -> Dict[str, Any]: - """ - Echo the input message. - - Args: - params (Dict[str, Any]): The parameters for the command. - - Returns: - Dict[str, Any]: The result of the command. - """ - return {"result": params.get("message", "No message provided")} - - -@dispatcher.register("add", "Adds two numbers", permissions=["admin"]) -def add_command(params: Dict[str, Any]) -> Dict[str, Any]: - """ - Add two numbers. - - Args: - params (Dict[str, Any]): The parameters for the command. - - Returns: - Dict[str, Any]: The result of the command. - """ - a = params.get("a", 0) - b = params.get("b", 0) - return {"result": a + b} - - -@dispatcher.set_default -async def default_command(params: Dict[str, Any]) -> Dict[str, Any]: - """ - Handle unknown commands. - - Args: - params (Dict[str, Any]): The parameters for the command. - - Returns: - Dict[str, Any]: The result of the command. - """ - return {"result": "Unknown command. Use 'help' to see available commands."} - - -async def log_middleware(command: str, params: Dict[str, Any], user_id: str) -> Dict[str, Any]: - """ - Log the execution of a command. - - Args: - command (str): The name of the command. - params (Dict[str, Any]): The parameters for the command. - user_id (str): The ID of the user executing the command. - - Returns: - Dict[str, Any]: The parameters for the command. - """ - logger.info(f"User {user_id} is executing command: {command}") - return params - -dispatcher.add_middleware(log_middleware) - -# Usage example: - - -async def main(): - """ - Main function to run the command dispatcher. - """ - result = await dispatcher.dispatch("echo", {"message": "Hello, World!"}, "user1", ["user"]) - print(result) # {"result": "Hello, World!"} - - result = await dispatcher.dispatch("add", {"a": 5, "b": 3}, "user1", ["admin"]) - print(result) # {"result": 8} - - result = await dispatcher.dispatch("unknown", {}, "user1", ["user"]) - # {"result": "Unknown command. Use 'help' to see available commands."} - print(result) - - command_list = dispatcher.get_command_list() - # [{"name": "echo", "description": "Echoes the input message", "aliases": ["repeat"], "permissions": ["user"]}, {"name": "add", "description": "Adds two numbers", "permissions": ["admin"]}] - print(command_list) - - batch_results = await dispatcher.batch_dispatch([ - {"command": "echo", "params": {"message": "First command"}}, - {"command": "add", "params": {"a": 10, "b": 20}} - ], "user1", ["admin"]) - print(batch_results) # [{"result": "First command"}, {"result": 30}] - -if __name__ == "__main__": - asyncio.run(main()) diff --git a/pysrc/app/connection_manager.py b/pysrc/app/connection_manager.py deleted file mode 100644 index fd4cf1bd..00000000 --- a/pysrc/app/connection_manager.py +++ /dev/null @@ -1,75 +0,0 @@ -# connection_manager.py -import asyncio -import uuid -import logging -from typing import List, Dict -from datetime import datetime -from fastapi import WebSocket, HTTPException -from fastapi import status -from websockets.exceptions import ConnectionClosedOK -from pydantic import BaseModel - -logger = logging.getLogger(__name__) - - -class ClientConnection(BaseModel): - """ - Data model for a client connection. - """ - client_id: str - connect_time: datetime - - -class ConnectionManager: - """ - Manages WebSocket client connections. - """ - - def __init__(self, max_connections: int): - self.active_connections: Dict[str, WebSocket] = {} - self.max_connections = max_connections - self.message_count: int = 0 - - async def connect(self, websocket: WebSocket) -> str: - """ - Accepts a WebSocket connection and stores it with a unique client ID. - """ - if len(self.active_connections) >= self.max_connections: - await websocket.close() - logger.warning("Connection refused: Maximum connections reached.") - raise HTTPException( - status_code=status.HTTP_403_FORBIDDEN, - detail="Maximum connections reached" - ) - - await websocket.accept() - client_id = str(uuid.uuid4()) - self.active_connections[client_id] = websocket - logger.info(f"Client {client_id} connected") - return client_id - - def disconnect(self, client_id: str): - """ - Removes a WebSocket connection based on the client ID. - """ - if client_id in self.active_connections: - del self.active_connections[client_id] - logger.info(f"Client {client_id} disconnected") - - async def broadcast(self, message: str): - """ - Sends a message to all connected clients. - """ - for connection in self.active_connections.values(): - await connection.send_text(message) - self.message_count += 1 - logger.info(f"Broadcasted message: {message}") - - def get_online_clients(self) -> List[ClientConnection]: - """ - Retrieves a list of currently online clients and their connection times. - """ - return [ - ClientConnection(client_id=client_id, connect_time=datetime.now()) - for client_id in self.active_connections.keys() - ] diff --git a/pysrc/app/dependence.py b/pysrc/app/dependence.py deleted file mode 100644 index 81e3e67d..00000000 --- a/pysrc/app/dependence.py +++ /dev/null @@ -1,16 +0,0 @@ -from fastapi import Depends, HTTPException, status -from fastapi.security import HTTPBasic, HTTPBasicCredentials -from config.config import config - -security = HTTPBasic() - -def get_current_username(credentials: HTTPBasicCredentials = Depends(security)): - correct_username = credentials.username == config.auth_username - correct_password = credentials.password == config.auth_password - if not (correct_username and correct_password): - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail="Incorrect username or password", - headers={"WWW-Authenticate": "Basic"}, - ) - return credentials.username diff --git a/pysrc/app/plugin_manager.py b/pysrc/app/plugin_manager.py deleted file mode 100644 index 2eeca5e3..00000000 --- a/pysrc/app/plugin_manager.py +++ /dev/null @@ -1,287 +0,0 @@ -""" -This module provides functionality to load, unload, and manage plugins for a FastAPI application. -""" - -import os -import importlib -from typing import Dict, List -from fastapi import APIRouter, HTTPException, FastAPI -from watchdog.observers import Observer -from watchdog.events import FileSystemEventHandler -import requests -from loguru import logger - -loaded_plugins = {} - - -def load_plugins(directory: str, app: FastAPI): - """ - Loads all plugins (Python modules) from a specified directory. - """ - logger.info("Loading all plugins from directory: {}", directory) - for filename in os.listdir(directory): - if filename.endswith(".py") and filename != "__init__.py": - plugin_name = filename[:-3] # Strip '.py' extension - load_plugin(directory, plugin_name, app) - logger.info("Finished loading plugins from directory: {}", directory) - - -def load_plugin(directory: str, plugin_name: str, app: FastAPI): - """ - Loads a single plugin (Python module) from a specified directory and adds its routes to the FastAPI app. - """ - module_path = f"{directory}.{plugin_name}" - - if plugin_name in loaded_plugins: - logger.warning("Plugin {} is already loaded.", plugin_name) - return - - try: - logger.info("Loading plugin: {}", plugin_name) - module = importlib.import_module(module_path) - if hasattr(module, "router") and isinstance(module.router, APIRouter): - app.include_router(module.router) - loaded_plugins[plugin_name] = module - logger.info("Plugin {} loaded successfully.", plugin_name) - elif isinstance(module.app, FastAPI): - loaded_plugins[plugin_name] = module - logger.info("Plugin {} loaded successfully.", plugin_name) - else: - logger.warning( - "Plugin {} does not have a valid 'router' attribute.", plugin_name) - except ImportError as e: - logger.error("Failed to load plugin {}: {}", plugin_name, e) - - -def unload_plugin(plugin_name: str, app: FastAPI): - """ - Unloads a plugin (Python module) and removes its routes from the FastAPI app. - """ - if plugin_name not in loaded_plugins: - logger.warning("Plugin {} is not loaded.", plugin_name) - return - - try: - logger.info("Unloading plugin: {}", plugin_name) - module = loaded_plugins[plugin_name] - if hasattr(module, "router") and isinstance(module.router, APIRouter): - app.router.routes = [ - route for route in app.router.routes if route not in module.router.routes - ] - logger.info("Plugin {} unloaded successfully.", plugin_name) - del loaded_plugins[plugin_name] - except ImportError as e: - logger.error("Failed to unload plugin {}: {}", plugin_name, e) - - -def reload_plugin(plugin_name: str, directory: str, app: FastAPI): - """ - Reloads a plugin by unloading and loading it again. - """ - logger.info("Reloading plugin: {}", plugin_name) - unload_plugin(plugin_name, app) - load_plugin(directory, plugin_name, app) - logger.info("Plugin {} reloaded successfully.", plugin_name) - - -def list_plugins() -> List[str]: - """ - Lists all currently loaded plugins. - - Returns: - List[str]: A list of names of currently loaded plugins. - """ - logger.info("Listing all loaded plugins.") - return list(loaded_plugins.keys()) - - -def get_plugin_status(plugin_name: str) -> Dict[str, str]: - """ - Returns the status of a plugin (loaded or not loaded). - - Args: - plugin_name (str): The name of the plugin to check. - - Returns: - dict: A dictionary containing the plugin name and its status. - """ - status = "loaded" if plugin_name in loaded_plugins else "not loaded" - logger.info("Plugin {} status: {}", plugin_name, status) - return {"plugin_name": plugin_name, "status": status} - - -def start_plugin_watcher(directory: str, app: FastAPI) -> Observer: - """ - Starts a watchdog observer to watch for plugin file changes. - """ - logger.info("Starting plugin watcher for directory: {}", directory) - event_handler = PluginEventHandler(directory, app) - observer = Observer() - observer.schedule(event_handler, path=directory, recursive=False) - observer.start() - logger.info("Started watching for plugins in directory: {}", directory) - return observer - - -def stop_plugin_watcher(observer: Observer): - """ - Stops the plugin watcher. - """ - logger.info("Stopping plugin watcher.") - observer.stop() - observer.join() - logger.info("Stopped watching for plugins.") - - -def get_plugin_info(plugin_name: str) -> Dict: - """ - Retrieves information about a loaded plugin, such as its available routes. - - Args: - plugin_name (str): The name of the plugin to get info for. - - Returns: - dict: A dictionary containing information about the plugin. - """ - if plugin_name not in loaded_plugins: - logger.error("Plugin {} not found.", plugin_name) - raise HTTPException(status_code=404, detail=f"Plugin { - plugin_name} not found") - - plugin = loaded_plugins[plugin_name] - info = { - "name": plugin_name, - "routes": [route.path for route in plugin.router.routes] if hasattr(plugin, "router") else [] - } - logger.info("Retrieved info for plugin {}: {}", plugin_name, info) - return info - - -def update_plugin(plugin_name: str, app: FastAPI): - """ - Forces an update or reloading of the plugin by re-importing the module. - """ - if plugin_name not in loaded_plugins: - logger.error("Plugin {} not found.", plugin_name) - raise HTTPException(status_code=404, detail=f"Plugin { - plugin_name} not found") - - logger.info("Updating plugin: {}", plugin_name) - # Unload the plugin first - unload_plugin(plugin_name, app) - - # Reload the plugin - directory = os.path.dirname(os.path.abspath( - loaded_plugins[plugin_name].__file__)) - load_plugin(directory, plugin_name, app) - logger.info("Plugin {} updated and reloaded.", plugin_name) - - -def install_plugin(plugin_name: str, repository: str, app: FastAPI): - """ - Installs a plugin from a repository or external source. - This could involve downloading the plugin file and placing it in the plugins directory. - - Args: - plugin_name (str): The name of the plugin to install. - repository (str): The URL or path to the repository from where to download the plugin. - """ - plugin_url = f"{repository}/{plugin_name}.py" - try: - logger.info("Installing plugin {} from repository: {}", - plugin_name, repository) - response = requests.get(plugin_url, timeout=10) - response.raise_for_status() - - # Save the downloaded plugin file to the plugins directory - plugin_path = os.path.join("plugins", f"{plugin_name}.py") - with open(plugin_path, "wb") as f: - f.write(response.content) - - logger.info("Plugin {} installed successfully from {}", - plugin_name, repository) - load_plugin("plugins", plugin_name, app) - except requests.RequestException as e: - logger.error("Failed to install plugin {} from {}: {}", - plugin_name, repository, e) - raise HTTPException( - status_code=500, detail="Failed to install plugin") from e - - -def check_plugin_dependencies(plugin_name: str) -> List[str]: - """ - Checks for any dependencies required by the plugin and verifies if they are met. - - Args: - plugin_name (str): The name of the plugin to check dependencies for. - - Returns: - List[str]: A list of missing dependencies, if any. - """ - if plugin_name not in loaded_plugins: - logger.error("Plugin {} not found.", plugin_name) - raise HTTPException(status_code=404, detail=f"Plugin { - plugin_name} not found") - - module = loaded_plugins[plugin_name] - if hasattr(module, "dependencies"): - missing_dependencies = [ - dep for dep in module.dependencies if not _is_dependency_installed(dep)] - logger.info("Checked dependencies for plugin {}: {}", - plugin_name, missing_dependencies) - return missing_dependencies - return [] - - -def _is_dependency_installed(dependency: str) -> bool: - """ - Helper function to check if a dependency is installed. - - Args: - dependency (str): The name of the dependency to check. - - Returns: - bool: True if the dependency is installed, False otherwise. - """ - try: - importlib.import_module(dependency) - return True - except ImportError: - return False - - -class PluginEventHandler(FileSystemEventHandler): - """ - Handles file system events to dynamically load or unload plugins. - """ - - def __init__(self, directory: str, app: FastAPI): - self.directory = directory - self.app = app - - def on_created(self, event): - """ - Triggered when a new file is created. - """ - if event.src_path.endswith(".py"): - plugin_name = os.path.basename(event.src_path)[:-3] - logger.info("Detected new plugin file created: {}", plugin_name) - load_plugin(self.directory, plugin_name, self.app) - - def on_deleted(self, event): - """ - Triggered when a file is deleted. - """ - if event.src_path.endswith(".py"): - plugin_name = os.path.basename(event.src_path)[:-3] - logger.info("Detected plugin file deleted: {}", plugin_name) - unload_plugin(plugin_name, self.app) - - def on_modified(self, event): - """ - Triggered when a file is modified. - """ - if event.src_path.endswith(".py"): - plugin_name = os.path.basename(event.src_path)[:-3] - logger.info("Detected plugin file modified: {}", plugin_name) - reload_plugin(plugin_name, self.directory, self.app) diff --git a/pysrc/app/process_manager.py b/pysrc/app/process_manager.py deleted file mode 100644 index a22413b4..00000000 --- a/pysrc/app/process_manager.py +++ /dev/null @@ -1,122 +0,0 @@ -import asyncio -import subprocess -from typing import List, Optional, Callable, Dict -from loguru import logger - - -def start_executable( - path: str, - args: Optional[List[str]] = None, - timeout: Optional[int] = None, - env: Optional[Dict[str, str]] = None, - stdin: Optional[str] = None, - priority: Optional[int] = None -): - """ - Starts an executable as a subprocess with error handling and optional arguments. - """ - try: - command = [path] + (args or []) - process = subprocess.Popen( - command, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - stdin=subprocess.PIPE if stdin else None, - env=env, - text=True - ) - - if priority: - try: - process.nice(priority) - except AttributeError: - logger.warning( - "Setting process priority is not supported on this platform") - - if stdin: - process.stdin.write(stdin) - process.stdin.flush() - - if timeout: - asyncio.create_task(terminate_after_timeout(process, timeout)) - - return process - except FileNotFoundError as e: - logger.error(f"Executable not found: {e}") - raise - - -async def terminate_after_timeout(process, timeout: int): - """ - Terminates the process after a given timeout. - """ - await asyncio.sleep(timeout) - if process.poll() is None: # Process is still running - logger.warning(f"Terminating process {process.pid} due to timeout") - process.terminate() - - -async def read_process_output(process, callback: Optional[Callable[[str], None]] = None): - """ - Reads the standard output from the subprocess and logs it or passes it to a callback. - """ - while True: - if process.stdout: - output = process.stdout.readline() - if output: - logger.info(f"childProcess output: {output.strip()}") - if callback: - callback(output.strip()) - await asyncio.sleep(0.1) - - -async def read_process_error(process, callback: Optional[Callable[[str], None]] = None): - """ - Reads the error output from the subprocess and logs it or passes it to a callback. - """ - while True: - if process.stderr: - error = process.stderr.readline() - if error: - logger.error(f"childProcess error: {error.strip()}") - if callback: - callback(error.strip()) - await asyncio.sleep(0.1) - - -def terminate_process(process): - """ - Terminates the subprocess. - """ - if process.poll() is None: # Process is still running - logger.info(f"Terminating process {process.pid}") - process.terminate() - - -def is_process_running(process) -> bool: - """ - Checks if the subprocess is still running. - """ - return process.poll() is None - - -def restart_process(process, path: str, args: Optional[List[str]] = None, env: Optional[Dict[str, str]] = None, stdin: Optional[str] = None, priority: Optional[int] = None): - """ - Restarts the subprocess. - """ - terminate_process(process) - return start_executable(path, args, env=env, stdin=stdin, priority=priority) - - -# Example usage -if __name__ == "__main__": - async def main(): - process = start_executable("example.exe", args=["--example-arg"], timeout=10, env={ - "EXAMPLE_ENV": "value"}, stdin="example input", priority=10) - - await asyncio.gather( - read_process_output(process), - read_process_error(process) - ) - - asyncio.run(main()) diff --git a/pysrc/config/config.py b/pysrc/config/config.py deleted file mode 100644 index 130f6bc6..00000000 --- a/pysrc/config/config.py +++ /dev/null @@ -1,15 +0,0 @@ -# config.py -from pydantic import BaseModel - -class Config(BaseModel): - """ - Configuration model for managing dynamic settings. - """ - broadcast_interval: int = 3 - max_connections: int = 100 - auth_username: str = "admin" - auth_password: str = "password" - plugin_directory: str = "plugins" # Directory to load dynamic routes from - -# Instantiate configuration -config = Config() diff --git a/pysrc/config/config_manager.py b/pysrc/config/config_manager.py deleted file mode 100644 index ef002bc8..00000000 --- a/pysrc/config/config_manager.py +++ /dev/null @@ -1,294 +0,0 @@ -from dataclasses import dataclass -from typing import Any, Dict, Callable, List, Optional -import asyncio -import json -import copy - - -@dataclass -class Config: - """Configuration class containing database URL, debug mode, and secret key.""" - database_url: str = "sqlite:///:memory:" - debug: bool = False - secret_key: str = "default_secret" - - -class ConfigManager: - """Configuration manager class responsible for managing configuration updates, persistence, and subscriptions.""" - _instance = None - _config: Config = Config() - _getters: Dict[str, Callable[[], Any]] = {} - _actions: Dict[str, Callable[..., Any]] = {} - _subscribers: List[Callable[[Config], None]] = [] - _middleware: List[Callable[[Dict[str, Any], Callable], None]] = [] - _history: List[Config] = [] - _current_index: int = -1 - _persist: bool = False - _storage_file: str = "config.json" - _transaction_active: bool = False - _transaction_backup: Optional[Config] = None - _events: Dict[str, List[Callable[..., Any]]] = {} - _updating: bool = False # Used to avoid infinite loops - - def __new__(cls): - """Ensure only one instance of ConfigManager exists (singleton pattern).""" - if cls._instance is None: - cls._instance = super(ConfigManager, cls).__new__(cls) - cls._instance._load_persisted_state() - return cls._instance - - def get_config(self) -> Config: - """Get the current configuration.""" - return self._config - - def update_config(self, updates: Dict[str, Any], notify: bool = True) -> None: - """Update the configuration and notify subscribers.""" - if self._transaction_active: - self._apply_updates(updates) - else: - if not self._updating: - self._updating = True - self._apply_middleware(updates) - self._apply_updates(updates) - self._updating = False - - if notify: - self._save_history() - self._notify_subscribers() - if self._persist: - self._persist_state() - - def _apply_updates(self, updates: Dict[str, Any]) -> None: - """Apply updates to the configuration.""" - for key, value in updates.items(): - if hasattr(self._config, key): - setattr(self._config, key, value) - else: - raise KeyError(f"Config has no attribute '{key}'") - - def _apply_middleware(self, updates: Dict[str, Any]) -> None: - """Apply registered middleware during updates.""" - for middleware in self._middleware: - middleware(updates, self._next) - - def _next(self, updates: Dict[str, Any]) -> None: - """'Next' function used by middleware to continue updates.""" - self.update_config(updates) - - def use(self, plugin: Callable[['ConfigManager'], None]) -> None: - """Load a plugin, which will receive the configManager instance and extend its functionality.""" - plugin(self) - - def register_middleware(self, middleware: Callable[[Dict[str, Any], Callable], None]) -> None: - """Register middleware.""" - self._middleware.append(middleware) - - def register_getter(self, name: str, getter: Callable[[], Any]) -> None: - """Register a getter.""" - self._getters[name] = getter - - def get_getter(self, name: str) -> Any: - """Get a registered getter.""" - if name in self._getters: - return self._getters[name]() - raise KeyError(f"Getter '{name}' not found") - - def register_action(self, name: str, action: Callable[..., Any]) -> None: - """Register an action.""" - self._actions[name] = action - - def dispatch_action(self, name: str, *args, **kwargs) -> Any: - """Dispatch an action.""" - if name in self._actions: - return self._actions[name](*args, **kwargs) - raise KeyError(f"Action '{name}' not found") - - async def dispatch_async_action(self, name: str, *args, **kwargs) -> Any: - """Dispatch an asynchronous action.""" - if name in self._actions: - if asyncio.iscoroutinefunction(self._actions[name]): - return await self._actions[name](*args, **kwargs) - raise TypeError(f"Action '{name}' is not async") - raise KeyError(f"Action '{name}' not found") - - def subscribe(self, subscriber: Callable[[Config], None], keys: Optional[List[str]] = None) -> None: - """Subscribe to configuration updates, optionally filtering by specific keys.""" - if keys: - def filtered_subscriber(config: Config): - updated = {k: getattr(config, k) - for k in keys if hasattr(config, k)} - subscriber(updated) - self._subscribers.append(filtered_subscriber) - else: - self._subscribers.append(subscriber) - - def _save_history(self) -> None: - """Save the current configuration state to history.""" - self._history.append(copy.deepcopy(self._config)) - self._current_index += 1 - - def _notify_subscribers(self) -> None: - """Notify all subscribers.""" - for subscriber in self._subscribers: - subscriber(self._config) - - def enable_persistence(self, storage_file: str = "config.json", async_persist: bool = False) -> None: - """Enable persistence, saving the state to a JSON file.""" - self._persist = True - self._storage_file = storage_file - if async_persist: - asyncio.run(self._persist_state_async()) - else: - self._persist_state() - - def _persist_state(self) -> None: - """Persist the state to a JSON file.""" - with open(self._storage_file, "w", encoding="utf-8") as f: - json.dump(self._config.__dict__, f) - - async def _persist_state_async(self) -> None: - """Asynchronously persist the state to a JSON file.""" - await asyncio.to_thread(self._persist_state) - - def _load_persisted_state(self) -> None: - """Load the persisted state from a JSON file.""" - try: - with open(self._storage_file, "r", encoding="utf-8") as f: - data = json.load(f) - for key, value in data.items(): - if hasattr(self._config, key): - setattr(self._config, key, value) - except FileNotFoundError: - pass - - def begin_transaction(self) -> None: - """Begin a new transaction.""" - self._transaction_active = True - self._transaction_backup = copy.deepcopy(self._config) - - def commit_transaction(self) -> None: - """Commit the transaction.""" - self._transaction_active = False - self._transaction_backup = None - self._notify_subscribers() - - def rollback_transaction(self) -> None: - """Rollback to the state before the transaction began.""" - if self._transaction_active and self._transaction_backup: - self._config = self._transaction_backup - self._transaction_active = False - self._transaction_backup = None - self._notify_subscribers() - - def on(self, event_name: str, handler: Callable[..., Any]) -> None: - """Register an event handler for a specific event.""" - if event_name not in self._events: - self._events[event_name] = [] - self._events[event_name].append(handler) - - def emit(self, event_name: str, *args, **kwargs) -> None: - """Emit an event and call all registered handlers.""" - if event_name in self._events: - for handler in self._events[event_name]: - handler(*args, **kwargs) - - def register_module(self, module_name: str, module_config: Config) -> None: - """Register a new module.""" - if not hasattr(self, '_modules'): - self._modules = {} - self._modules[module_name] = module_config - - def get_module(self, module_name: str) -> Optional[Config]: - """Get the configuration of a module.""" - if hasattr(self, '_modules') and module_name in self._modules: - return self._modules[module_name] - raise KeyError(f"Module '{module_name}' not found") - - -def logger_plugin(manager: ConfigManager): - """A plugin that logs all configuration updates.""" - def log_updates(config: Config): - print(f"Logger: Config updated to {config}") - - manager.subscribe(log_updates) - - -def block_debug_middleware(updates: Dict[str, Any], next_middleware: Callable) -> None: - """A middleware that blocks setting debug to True.""" - if updates.get("debug") is True: - print("Middleware: Blocked 'debug' from being set to True.") - else: - next_middleware(updates) - - -if __name__ == "__main__": - config_manager = ConfigManager() - - # Register middleware - config_manager.register_middleware(block_debug_middleware) - - # Register a subscriber that only cares about database_url changes - def database_url_subscriber(config: Dict[str, Any]): - """Subscriber that handles database_url updates.""" - print(f"Database URL updated: {config.get('database_url')}") - - config_manager.subscribe(database_url_subscriber, keys=["database_url"]) - - # Use a plugin - config_manager.use(logger_plugin) - - # Enable persistence, saving configuration asynchronously - config_manager.enable_persistence(async_persist=True) - - # Batch update configuration, automatically notifying subscribers - config_manager.update_config( - {"database_url": "postgresql://localhost", "debug": False}) - - # Test middleware by attempting to update a blocked field - # Middleware will block this update - config_manager.update_config({"debug": True}) - - # Example of module support - @dataclass - class CacheConfig: - """Cache configuration class.""" - enabled: bool = True - cache_size: int = 100 - - cache_config = CacheConfig() - config_manager.register_module("cache", cache_config) - # Print the cache module's configuration - print(config_manager.get_module("cache")) - - # Transaction mechanism, begin a transaction - config_manager.begin_transaction() - config_manager.update_config({"secret_key": "transaction_secret"}) - # Print configuration during transaction - print(f"During transaction: {config_manager.get_config()}") - config_manager.rollback_transaction() # Rollback transaction - # Should revert to original configuration - print(f"After rollback: {config_manager.get_config()}") - - # Global event bus example - def on_secret_key_change(new_key: str): - """Event handler for secret_key changes.""" - print(f"Secret key changed to: {new_key}") - - config_manager.on("secret_key_change", on_secret_key_change) - - # Emit an event - config_manager.emit("secret_key_change", "new_secret_key") - - # Example of asynchronous action - async def async_reset_secret_key(): - """Asynchronously reset the secret_key.""" - print("Async: Resetting secret key...") - await asyncio.sleep(1) - config_manager.update_config({"secret_key": "default_secret"}) - - config_manager.register_action( - "reset_secret_key_async", async_reset_secret_key) - - # Dispatch asynchronous action - asyncio.run(config_manager.dispatch_async_action("reset_secret_key_async")) - print(config_manager.get_config()) diff --git a/pysrc/data/NamedStars.csv b/pysrc/data/NamedStars.csv deleted file mode 100644 index 0b68da66..00000000 --- a/pysrc/data/NamedStars.csv +++ /dev/null @@ -1,248 +0,0 @@ -,Unnamed: 0,Name,RA,Dec,Mag,Const,Zh,Const_Zh -0,,Acamar,30.97111111,-40.3,3.2,Eri,天园六,波江座 -1,*,Achernar,15.62861111,-57.23333333,0.5,Eri,水委一,波江座 -2,,Achird,0.818333333,57.81666667,3.4,Cas,王良三,仙后座 -3,*,Acrux,180.4433333,-63.1,1.3,Cru,十字架二,南十字座 -4,,Acubens,120.9747222,11.85,4.3,Cnc,柳宿增三,巨蟹座 -5,,Adhafera,150.2780556,23.41666667,3.4,Leo,轩辕十一,狮子座 -6,*,Adhara,90.97722222,-28.96666667,1.5,CMa,弧矢七,大犬座 -7,,Adhil,15.37222222,45.53333333,4.9,And,天大将军增一,仙女座 -8,,Ain,60.47694444,19.18333333,3.5,Tau,毕宿一,金牛座 -9,,Alaraph,165.845,1.766666667,3.6,Vir,右执法,室女座 -10,,Albali,300.7947222,-9.5,3.8,Aqr,女宿一,宝瓶座 -11,*,Albireo,285.5119444,27.96666667,3.1,Cyg,辇道增七,天鹅座 -12,,Alchibah,180.1402778,-24.73333333,4,Crv,右辖,乌鸦座 -13,,Alcor,195.4205556,54.98333333,4,UMa,开阳增一,大熊座 -14,,Alcyone,45.79138889,24.1,2.9,Tau,昴宿六,金牛座 -15,*,Aldebaran,60.59861111,16.51666667,0.9,Tau,毕宿五,金牛座 -16,,Alderamin,315.3097222,62.58333333,2.4,Cep,天钩五,仙王座 -17,,Aldhanab,315.8988889,-37.36666667,3,Gru,败臼一,天鹤座 -18,,Alfecca Meridiana,285.1577778,-37.9,4.1,CrA,鳖六,南冕座 -19,,Alfirk,315.4777778,70.56666667,3.2,Cep,上卫增一,仙王座 -20,*,Algenib,0.220555556,15.18333333,2.8,Peg,壁宿一,飞马座 -21,,Algieba,150.3327778,19.85,2.6,Leo,轩辕十二,狮子座 -22,,Algol,45.13611111,40.95,2.1,Per,大陵五,英仙座 -23,,Algorab,180.4977778,-16.51666667,3,Crv,轸宿三,乌鸦座 -24,,Alhaud,135.5475,51.68333333,3.2,UMa,文昌四,大熊座 -25,*,Alhena,90.62861111,16.4,1.9,Gem,井宿三,双子座 -26,,Alioth,180.9005556,55.96666667,1.8,UMa,玉衡,大熊座 -27,,Alkaid,195.7922222,49.31666667,1.9,UMa,摇光,大熊座 -28,,Alkalurops,225.4080556,37.38333333,4.3,Boo,七公六,牧夫座 -29,,Alkes,150.9961111,-18.3,4.1,Crt,翼宿一,巨爵座 -30,,Almach,30.065,42.33333333,2.3,And,天大将军一,仙女座 -31,*,Alnair,330.1372222,-46.96666667,1.7,Gru,鹤一,天鹤座 -32,,Alnilam,75.60361111,-1.2,1.7,Ori,参宿二,猎户座 -33,,Alnitak,75.67916667,-1.95,2.1,Ori,参宿一,猎户座 -34,,Alniyat,240.3530556,-25.6,2.9,Sco,心宿一,天蝎座 -35,*,Alpha Centauri,210.66,-60.83333333,1.3,Cen,南门二,半人马座 -36,*,Alphard,135.4597222,-8.666666667,2,Hya,星宿一,长蛇座 -37,*,Alphecca,225.5802778,26.7,2.2,CrB,贯索四,北冕座 -38,*,Alpheratz,0.139722222,29.08333333,2.1,And,壁宿二,仙女座 -39,,Alrai,345.6558333,77.63333333,3.2,Cep,少卫增八,仙王座 -40,,Alrescha,30.03416667,2.766666667,4.3,Psc,外屏七,双鱼座 -41,,Alsaphi,285.5394444,69.66666667,4.7,Dra,天厨二,天龙座 -42,,Alsciaukat,120.3805556,43.18333333,4.3,Lyn,上台增四,天猫座 -43,,Alshain,285.9219444,6.4,3.7,Aql,虚宿一,天鹰座 -44,*,Altair,285.8463889,8.866666667,0.8,Aql,河鼓二(牛郎星),天鹰座 -45,,Altais,285.2091667,67.66666667,3.1,Dra,天厨一,天龙座 -46,,Alterf,135.5286111,22.96666667,4.3,Leo,轩辕八,狮子座 -47,,Aludra,105.4016667,-29.3,2.5,CMa,弧矢二,大犬座 -48,,Alula Australis,165.3030556,31.53333333,3.8,UMa,下台二,大熊座 -49,,Alula Borealis,165.3080556,33.1,3.5,UMa,下台一,大熊座 -50,,Alwaid,255.5072222,52.3,2.8,Dra,天棓三,天龙座 -51,,Alya,270.9369444,4.2,4.6,Ser,天市左垣七,巨蛇座 -52,,Ancha,330.2805556,-7.783333333,4.2,Aqr,泣二,宝瓶座 -53,,Angetenar,45.32527778,-21.75,3.7,Eri,天苑九,飞马座 -54,*,Ankaa,0.438055556,-42.3,2.4,Phe,火鸟六,凤凰座 -55,,Anser,285.4783333,24.66666667,4.4,Vul,齐增五,狐狸座 -56,*,Antares,240.49,-26.43333333,1,Sco,心宿二,天蝎座 -57,*,Arcturus,210.2611111,19.18333333,0,Boo,大角,牧夫座 -58,,Arkab,285.3772222,-44.46666667,4,Sgr,Arkab,人马座 -59,,Arneb,75.54555556,-17.81666667,2.6,Lep,厕一,天兔座 -60,,Arrakis,255.0888889,54.46666667,5.8,Dra,天棓增九,天龙座 -61,,Ascella,285.0436111,-29.88333333,2.6,Sgr,斗宿六,人马座 -62,,Asellus Australis,120.7447222,18.15,3.9,Cnc,鬼宿四,巨蟹座 -63,,Asellus Borealis,120.7213889,21.46666667,4.7,Cnc,鬼宿三,巨蟹座 -64,,Asmidiske,105.8216667,-24.86666667,3.3,Pup,弧矢增十七,船帆座 -65,,Atik,45.90222222,31.88333333,2.9,Per,卷舌增七,英仙座 -66,*,Atria,240.8111111,-69.03333333,1.9,TrA,三角形三,南三角座 -67,,Auva,180.9266667,3.4,3.4,Vir,太微左垣三(东次相),室女座 -68,*,Avior,120.3752778,-59.51666667,1.9,Car,海石一,船底座 -69,,Azha,30.94055556,-8.9,3.9,Eri,天苑六,波江座 -70,,Baham,330.17,6.2,3.5,Peg,危宿二,飞马座 -71,,Baten Kaitos,15.85777778,-10.33333333,3.7,Cet,天仓四,鲸鱼座 -72,,Beid,60.19777778,-6.833333333,4,Eri,九州殊口二,飞马座 -73,,Bellatrix,75.41888889,6.35,1.6,Ori,参宿五,猎户座 -74,*,Betelgeuse,75.91944444,7.4,0.5,Ori,参宿四,猎户座 -75,,Botein,45.19388889,19.73333333,4.4,Ari,天阴四,白羊座 -76,*,Canopus,90.39916667,-52.7,-0.7,Car,老人星,船尾座 -77,*,Capella,75.27805556,46,0.1,Aur,五车二,御夫座 -78,*,Caph,0.153055556,59.15,2.3,Cas,王良一,仙后座 -79,*,Castor,105.5766667,31.88333333,2,Gem,北河二,双子座 -80,,Celbalrai,255.7244444,4.566666667,2.8,Oph,宗正一,蛇夫座 -81,,Chara,180.5625,41.35,4.3,CVn,常陈四,猎犬座 -82,,Chort,165.2372222,15.43333333,3.3,Leo,太微右垣四(西次相),狮子座 -83,,Cor Caroli,180.9338889,38.31666667,2.9,CVn,常陈一,猎犬座 -84,,Cujam,240.4236111,14.03333333,4.6,Her,斗一,武仙座 -85,,Cursa,75.13083333,-5.083333333,2.8,Eri,玉井三,飞马座 -86,,Dabih,300.3502778,-14.78333333,3.1,Cap,牛宿一,摩羯座 -87,*,Deneb,300.6905556,45.28333333,1.3,Cyg,天津四,天鹅座 -88,,Deneb Algiedi,315.7838889,-16.13333333,2.9,Cap,垒壁阵四,摩羯座 -89,*,Denebola,165.8177778,14.56666667,2.1,Leo,轩辕十四,狮子座 -90,,Diadem,195.1663889,17.53333333,5.2,Com,太微左垣五(东上将),后发座 -91,*,Diphda,0.726388889,-17.98333333,2,Cet,土司空,鲸鱼座 -92,,Dnoces,120.9866667,48.05,3.1,UMa,上台一,大熊座 -93,,Dschubba,240.0055556,-22.61666667,2.3,Sco,房宿三,天蝎座 -94,*,Dubhe,165.0622222,61.75,1.8,UMa,天枢(北斗一),大熊座 -95,,Dziban,255.6988889,72.15,4.6,Dra,女史增一,天龙座 -96,,Edasich,225.4155556,58.96666667,3.3,Dra,紫微左垣一(左枢),天龙座 -97,,El Nath,75.43833333,28.6,1.7,Tau,娄宿三,金牛座 -98,,Eltanin,255.9433333,51.48333333,2.2,Dra,天棓四,天龙座 -99,,Enif,315.7363889,9.883333333,2.4,Peg,危宿三,飞马座 -100,*,Fomalhaut,330.9608333,-29.61666667,1.2,PsA,北落师门,南鱼座 -101,,Fornacis,45.20111111,-28.98333333,3.9,For,天苑增三,天炉座 -102,,Furud,90.33861111,-30.06666667,3,CMa,孙增一,大犬座 -103,*,Gacrux,180.5194444,-57.11666667,1.6,Cru,十字架二,南十字座 -104,,Giauzar,165.5233333,69.33333333,3.8,Dra,紫微右垣三(上辅),天龙座 -105,,Giedi,300.3008333,-12.55,3.6,Cap,牛宿增六,摩羯座 -106,,Gienah,180.2633333,-17.55,2.6,Crv,轸宿一,乌鸦座 -107,,Gomeisa,105.4525,8.283333333,2.9,CMi,南河二,小犬座 -108,,Graffias,240.0905556,-19.8,2.6,Sco,房宿四,天蝎座 -109,,Grumium,255.8922222,56.86666667,3.8,Dra,天棓一,天龙座 -110,*,Hadar?,210.0636111,-60.36666667,0.6,Cen,马腹一,半人马座 -111,*,Hamal,30.11944444,23.46666667,2,Ari,娄宿三,白羊座 -112,,Heze,195.5783333,0.6,3.4,Vir,角宿二,室女座 -113,,Homam,330.6911111,10.83333333,3.4,Peg,雷电一,飞马座 -114,,Izar,210.7497222,27.06666667,2.7,Boo,梗河一,牧夫座 -115,,Jabbah,240.2,-19.46666667,4,Sco,键闭,天蝎座 -116,,Kaffaljidhm,30.72166667,3.233333333,3.5,Cet,天囷八,鲸鱼座 -117,*,Kaus Australis,270.4027778,-34.38333333,1.9,Sgr,箕宿三,人马座 -118,,Kaus Borealis,270.4661111,-25.41666667,2.8,Sgr,斗宿二,人马座 -119,,Kaus Media,270.35,-29.83333333,2.7,Sgr,箕宿二,人马座 -120,,Keid,60.25444444,-7.65,4.4,Eri,九州殊口增七,飞马座 -121,,Kekwan,210.9861111,-42.1,3.1,Cen,骑官四,半人马座 -122,,Kitalpha,315.2636111,5.25,3.9,Equ,虚宿二,小马座 -123,*,Kochab,210.845,74.15,2.1,UMi,玉衡,小熊座 -124,,Kornephoros,240.5036111,21.48333333,2.8,Her,天市右垣一,武仙座 -125,,Kraz,180.5730556,-23.4,2.7,Crv,轸宿四,乌鸦座 -126,,Kurah,330.0630556,64.63333333,4.3,Cep,天钩六,仙王座 -127,,Lesuth,255.5127778,-37.3,2.7,Sco,尾宿九,天蝎座 -128,,Maasym,240.1344444,17.05,5,Her,天市左垣二,武仙座 -129,,Maaz,75.03277778,43.81666667,3,Aur,柱一?,御夫座 -130,,Marfik,240.5152778,1.983333333,3.8,Oph,列肆二,蛇夫座 -131,,Markab,345.0794444,15.2,2.5,Peg,室宿一,飞马座 -132,,Matar,330.7166667,30.21666667,2.9,Peg,离宫四,飞马座 -133,,Mebsuta,90.73222222,25.13333333,3,Gem,井宿五,双子座 -134,,Megrez,180.2572222,57.03333333,3.3,UMa,天权,大熊座 -135,,Meissa,75.58555556,9.933333333,3.5,Ori,觜宿一,猎户座 -136,,Mekbuda,105.0683333,20.56666667,3.8,Gem,井宿七,双子座 -137,*,Menkalinan,75.99222222,44.95,1.9,Aur,五车三,御夫座 -138,,Menkar,45.03805556,4.083333333,2.5,Cet,天囷一,鲸鱼座 -139,*,Menkent,210.1113889,-36.36666667,2.1,Cen,库楼三,半人马座 -140,,Menkib,45.98277778,35.78333333,4,Per,卷舌三,英仙座 -141,,Merak,165.0308333,56.38333333,2.4,UMa,天璇,大熊座 -142,,Mesarthim,15.89222222,19.3,4.8,Ari,娄宿二,白羊座 -143,*,Miaplacidus,135.22,-69.71666667,1.7,Car,南船二,船底座 -144,*,Mimosa,180.7952778,-59.68333333,1.3,Cru,十字架三,南十字座 -145,,Minhar al Shuja,120.6458333,3.333333333,4.5,Hya,柳宿二,长蛇座 -146,,Minkar,180.1677778,-22.61666667,3,Crv,轸宿二,乌鸦座 -147,,Mintaka,75.53333333,0.3,2.2,Ori,参宿三,猎户座 -148,,Mira,30.3225,-2.983333333,3,Cet,蒭藁增二,鲸鱼座 -149,*,Mirach,15.16222222,35.61666667,2.1,And,奎宿九,仙女座 -150,*,Mirfak,45.40527778,49.86666667,1.8,Per,天船三,英仙座 -151,,Mirzam,90.37833333,-17.95,2,CMa,军市一,大犬座 -152,*,Mizar,195.3988889,54.93333333,2.3,UMa,开阳,大熊座 -153,,Mothallah,15.88472222,29.58333333,3.4,Tri,娄宿增六,三角座 -154,,Muhlifain,180.6919444,-48.96666667,2.2,Cen,库楼七,半人马座 -155,,Muliphein,105.0625,-15.63333333,4.1,CMa,天狼增四,大犬座 -156,,Mululizu,225.0161111,-8.516666667,5,Lib,氐宿增一,天秤座 -157,,Muphrid,195.9113889,18.4,2.7,Boo,右摄提一,牧夫座 -158,,Muscida,120.5044444,60.71666667,3.4,UMa,内阶一,大熊座 -159,,Nair Saif,75.59055556,-5.916666667,2.8,Ori,伐三,猎户座 -160,,Naos,120.0597222,-40,2.3,Pup,弧矢增二十二,船尾座 -161,,Nashira,315.6683333,-16.66666667,3.7,Cap,壁垒阵三,摩羯座 -162,,Nasl,270.0966667,-30.41666667,3,Sgr,箕宿一,人马座 -163,*,Navi,15.90666667,63.66666667,3.4,Cas,阁道二,仙后座 -164,,Nekkar,225.0325,40.38333333,3.5,Boo,七公增五,牧夫座 -165,,Nihal,75.47083333,-20.76666667,2.8,Lep,厕二,天兔座 -166,*,Nunki,270.9211111,-26.3,2.1,Sgr,斗宿四,人马座 -167,,Nusakan,225.4638889,29.1,3.7,CrB,贯索三,北冕座 -168,*,Peacock,300.4275,-56.73333333,1.9,Pav,孔雀十一,孔雀座 -169,,Phact,75.66083333,-34.06666667,2.6,Col,丈人一,天鸽座 -170,,Phad,165.8972222,53.7,2.4,UMa,天玑,大熊座 -171,,Pherkad,225.3455556,71.83333333,3.1,UMi,太子,小熊座 -172,*,Polaris,30.53027778,89.26666667,2,UMi,勾陈一,小熊座 -173,,Polaris Australis,315.1463889,-88.95,5.4,Oct,南极星,南极座 -174,*,Pollux,105.7552778,28.03333333,1.1,Gem,北河三,双子座 -175,,Porrima,180.6944444,-1.45,3.7,Vir,东上相,室女座 -176,,Praecipua,150.8886111,34.21666667,3.8,LMi,势四,小狮座 -177,,Prijipati,75.99222222,54.28333333,3.7,Aur,八谷一,御夫座 -178,*,Procyon,105.655,5.233333333,0.4,CMi,南河三,小犬座 -179,,Propus,90.24805556,22.5,3.3,Gem,钺,双子座 -180,,Rana,45.72083333,-9.766666667,3.5,Eri,天苑三,波江座 -181,,Rasalas,135.8794444,26,3.9,Leo,轩辕十,狮子座 -182,,Rasalgethi,255.2441667,14.38333333,3.5,Her,帝座,武仙座 -183,*,Rasalhague,255.5822222,12.56666667,2.1,Oph,侯,蛇夫座 -184,,Rastaban,255.5072222,52.3,2.8,Dra,天培四,天龙座 -185,*,Regor,120.1588889,-47.33333333,1.8,Vel,天社一,船帆座 -186,*,Regulus,150.1394444,11.96666667,1.4,Leo,轩辕十四,狮子座 -187,*,Rigel,75.24222222,-8.2,0.1,Ori,参宿七,猎户座 -188,,Rotanev,300.6258333,14.6,3.6,Del,瓠瓜四,海豚座 -189,,Rukbah,15.43027778,60.23333333,2.7,Cas,天津增三十四,仙后座 -190,,Rukbat,285.3980556,-40.61666667,4,Sgr,天渊三,人马座 -191,,Sabik,255.1730556,-15.71666667,2.4,Oph,策,蛇夫座 -192,,Sadachbia,330.3608333,-1.383333333,3.8,Aqr,坟墓二,宝瓶座 -193,,Sadalbari,330.8333333,24.6,3.5,Peg,离宫二,飞马座 -194,,Sadalmelik,330.0963889,0.316666667,3,Aqr,危宿一,宝瓶座 -195,,Sadalsuud,315.5258333,-5.566666667,2.9,Aqr,虚宿一,宝瓶座 -196,,Sadr,300.3705556,40.25,2.2,Cyg,天津一,天鹅座 -197,,Saiph,75.79583333,-9.666666667,2.1,Ori,参宿六,猎户座 -198,,Sargas,255.6219444,-43,1.9,Sco,尾宿五,天蝎座 -199,,Sarin,255.2505556,24.83333333,3.1,Her,天市左垣一,武仙座 -200,*,Scheat,345.0630556,28.08333333,2.4,Peg,室宿二,飞马座 -201,,Schedar,0.675,56.53333333,2.2,Cas,王良四,仙后座 -202,,Schemali,0.323888889,-8.816666667,3.6,Cet,天仓一,鲸鱼座 -203,*,Scutulum,135.2847222,-59.28333333,2.3,Car,海石二,船底座 -204,,Seginus,210.5347222,38.3,3,Boo,招摇,牧夫座 -205,,Sham,285.6683333,18.01666667,4.4,Sge,左旗一,天箭座 -206,*,Shaula,255.56,-37.1,1.6,Sco,尾宿八,天蝎座 -207,,Shelyak,270.8347222,33.36666667,3.5,Lyr,渐台二,天琴座 -208,,Sheratan,15.91055556,20.8,2.6,Ari,娄宿一,白羊座 -209,*,Sirius,90.7525,-16.71666667,-1.5,CMa,天狼,大犬座 -210,,Situla,345.2808333,-7.733333333,5,Aqr,虚梁三,宝瓶座 -211,,Skat,330.9108333,-15.81666667,3.3,Aqr,羽林军二十六,宝瓶座 -212,*,Spica,195.42,-11.16666667,1,Vir,角宿一,室女座 -213,,Sualocin,300.6605556,15.91666667,3.8,Del,瓠瓜一,海豚座 -214,*,Suhail,135.1333333,-43.43333333,2.2,Vel,天记,船帆座 -215,,Sulaphat,270.9825,32.68333333,3.2,Lyr,渐台三,天琴座 -216,,Syrma,210.2669444,-6,4.1,Vir,亢宿二,室女座 -217,,Talitha Australis,135.0605556,47.15,3.6,UMa,上台二,大熊座 -218,,Tania Australis,150.3722222,41.5,3.1,UMa,中台二,大熊座 -219,,Tania Borealis,150.285,42.91666667,3.5,UMa,中台一,大熊座 -220,,Tarazed,285.7711111,10.61666667,2.7,Aql,河鼓三,天鹰座 -221,,Tarf,120.2752778,9.183333333,3.5,Cnc,柳宿增十,巨蟹座 -222,,Tchou,255.5308333,-49.88333333,3,Ara,杵二,天坛座 -223,,Tegmine,120.1294444,21.58333333,5.3,Cnc,水位四,巨蟹座 -224,,Tejat,90.38277778,22.51666667,2.9,Gem,井宿一,双子座 -225,,Thabit,75.53222222,-7.3,4.6,Ori,参宿增三十六,猎户座 -226,,Thuban,210.0730556,64.38333333,3.7,Dra,右枢,天龙座 -227,,Tsih,0.945,60.71666667,2.5,Cas,策,仙后座 -228,,Tsze,75.88527778,-33.8,4.9,Col,西次将,天鸽座 -229,,Tyl,285.8027778,70.26666667,3.8,Dra,天厨三,天龙座 -230,,Ukdah,135.4858333,-2.766666667,4.6,Hya,星宿四,长蛇座 -231,,Unukalhai,225.7377778,6.433333333,2.7,Ser,蜀,巨蛇座 -232,*,Vega,270.6155556,38.78333333,0,Lyr,织女一(织女星),天琴座 -233,,Vindemiatrix,195.0363889,10.96666667,2.8,Vir,东次将,室女座 -234,,Wasat,105.3352778,21.98333333,3.5,Gem,天樽二,双子座 -235,,Wazn,75.84944444,-35.76666667,3.1,Col,子二,天鸽座 -236,,Wezen,105.14,-26.4,1.8,CMa,弧矢一,大犬座 -237,,Yed Posterior,240.3052778,-4.7,3.2,Oph,楚,蛇夫座 -238,,Yed Prior,240.2391667,-3.7,2.7,Oph,梁,蛇夫座 -239,,Yildun,255.5369444,86.58333333,4.4,UMi,勾陈二,小熊座 -240,,Zaniah,180.3316667,0.666666667,3.9,Vir,左执法,室女座 -241,,Zaurac,45.96722222,-13.51666667,3,Eri,天苑一,波江座 -242,,Zibal,45.26388889,-8.816666667,4.8,Eri,天苑五,波江座 -243,,Zosma,165.235,20.51666667,2.6,Leo,西上相,狮子座 -244,,Zubenelgenubi,210.8480556,-16.05,2.8,Lib,氐宿一,天秤座 -245,,Zubenelhakrabi,225.5922222,-14.78333333,3.9,Lib,氐宿三,天秤座 -246,,Zubeneshamali,225.2833333,-9.383333333,2.6,Lib,氐宿四,天秤座 diff --git a/pysrc/data/TargetListAll.csv b/pysrc/data/TargetListAll.csv deleted file mode 100644 index 3f02e3f3..00000000 --- a/pysrc/data/TargetListAll.csv +++ /dev/null @@ -1,3302 +0,0 @@ -name,alias,size,target_type,ra,dec,const,transit_month,transit_date,filter,focal_length,Top200 -3C 273,,0.05,Quasar,187.275,2.05,Vir,3,3/30,,, -AB Aur,,3.0,YSO,73.9417,30.5603,Aur,12,12/4,L,1000.0, -Abell 01,,0.8,PN,3.15,69.1781,Cep,9,9/23,HOO,2800.0, -Abell 02,,0.5,PN,11.4,57.9567,Cas,10,10/2,HOO,2800.0, -Abell 03,,1.2,PN,33.05,64.1514,Cas,10,10/24,H,1000.0, -Abell 04,,0.4,PN,41.3583,42.5433,Per,11,11/1,HOO,2800.0, -Abell 05,,2.5,PN,43.0542,50.5978,Per,11,11/3,HOO,1000.0, -Abell 06,,3.0,PN,44.7208,64.4997,Cas,11,11/5,HOO,1000.0, -Abell 07,,13.0,PN,75.7833,-15.6036,Lep,12,12/6,HOO,1000.0, -Abell 08,,1.0,PN,76.6583,39.1356,Aur,12,12/7,HOO,1000.0, -Abell 09,,0.5,PN,82.25,36.0333,Aur,12,12/13,HOO,2800.0, -Abell 10,,0.5,PN,82.95,6.9358,Ori,12,12/14,HOO,2800.0, -Abell 11,Not a PN - Reflection Nebula,2.0,Ref Neb,3.1875,-16.4386,Cet,9,9/23,,, -Abell 12,,0.7,PN,90.5958,9.6508,Ori,12,12/21,HOO,2800.0, -Abell 13,,3.0,PN,91.1958,3.9408,Ori,12,12/22,H,2800.0, -Abell 14,,0.7,PN,92.7875,11.7797,Ori,12,12/24,HOO,2800.0, -Abell 15,,0.6,PN,96.7583,-25.3817,CMa,12,12/28,HOO,2800.0, -Abell 16,,2.4,PN,100.9792,61.7903,Lyn,1,1/1,HOO,2800.0, -Abell 17,Not a PN - False object - Red Plate Flaw,0.0,PN,102.1583,-9.55,Mon,1,1/2,,, -Abell 18,,1.4,PN,104.0583,-2.8856,Mon,1,1/4,HOO,2800.0, -Abell 19,,1.4,PN,104.9875,14.6131,Gem,1,1/5,HOO,2800.0, -Abell 20,,1.0,PN,110.7417,1.7603,CMi,1,1/11,HOO,2800.0, -Abell 21,Medusa Nebula,8.0,PN,112.2625,13.2467,Gem,1,1/12,SHO,1000.0,100.0 -Abell 22,,2.0,PN,114.025,2.4,CMi,1,1/14,HOO,2800.0, -Abell 23,,1.0,PN,115.8292,-34.7536,Pup,1,1/16,HOO,2800.0, -Abell 24,,7.0,PN,117.9083,3.0075,CMi,1,1/18,HOO,2800.0, -Abell 25,,3.0,PN,121.6875,-2.8786,Mon,1,1/22,HOO,2800.0, -Abell 26,,0.7,PN,122.2542,-32.6708,Pup,1,1/23,HOO,2800.0, -Abell 27,,1.0,PN,127.9708,-32.1019,Pyx,1,1/28,HOO,2800.0, -Abell 28,,8.0,PN,130.3958,58.2317,UMa,1,1/31,H,2800.0, -Abell 29,,6.0,PN,130.0583,-20.8947,Pyx,1,1/30,HOO,1000.0, -Abell 30,,2.0,PN,131.725,17.8758,Cnc,2,2/1,HOO,2800.0, -Abell 31,,15.0,PN,133.5542,8.8997,Cnc,2,2/3,HOO,910.0, -Abell 32,Not a PN - False object - Red Plate Flaw,0.0,PN,139.1042,3.8833,Cnc,2,2/9,,, -Abell 33,Diamond Ring Nebula,4.0,PN,144.7875,-2.8092,Hya,2,2/14,HOO,910.0,158.0 -Abell 34,,5.0,PN,146.3958,-13.1706,Hya,2,2/16,HOO,1960.0, -Abell 35,Abell 35,16.0,Em Neb,193.4208,-22.8617,Hya,4,4/5,HOO,1000.0,163.0 -Abell 36,,8.0,PN,205.1708,-19.8825,Vir,4,4/17,HOO,1000.0, -Abell 37,,1.0,PN,211.1083,-17.2281,Vir,4,4/23,HOO,2800.0, -Abell 38,,2.5,PN,245.8208,-31.7492,Sco,5,5/28,H,2800.0, -Abell 39,,3.0,PN,246.8875,27.9094,Her,5,5/29,O,2800.0, -Abell 40,,0.6,PN,252.1417,-21.0111,Oph,6,6/3,HOO,2800.0, -Abell 41,,0.4,PN,262.2667,-15.2225,Ser,6,6/14,HOO,2800.0, -Abell 42,,1.0,PN,262.8792,-8.3194,Oph,6,6/14,HOO,2800.0, -Abell 43,,1.3,PN,268.3833,10.6222,Oph,6,6/20,HOO,1000.0, -Abell 44,,1.0,PN,277.5458,-16.7575,Sgr,6,6/29,HOO,2800.0, -Abell 45,,7.0,PN,277.5708,-11.615,Sct,6,6/29,H,2800.0, -Abell 46,,1.3,PN,277.8292,26.9381,Lyr,6,6/30,HOO,2800.0, -Abell 47,,0.3,PN,278.8417,-0.2256,Ser,7,7/1,H,2800.0, -Abell 48,,0.8,PN,280.7042,-3.2167,Aql,7,7/3,HOO,2800.0, -Abell 49,,1.0,PN,283.3708,-6.4872,Sct,7,7/5,HOO,2800.0, -Abell 50,,0.5,PN,284.8333,48.4658,Dra,7,7/7,RGB,2800.0, -Abell 51,,1.0,PN,285.2542,-18.2044,Sgr,7,7/7,HOO,2800.0, -Abell 52,,1.0,PN,286.1333,17.9528,Aql,7,7/8,HOO,2800.0, -Abell 53,,0.5,PN,286.6917,6.3989,Aql,7,7/9,HOO,2800.0, -Abell 54,,1.0,PN,287.1625,22.9808,Vul,7,7/9,HOO,2800.0, -Abell 55,,1.3,PN,287.625,-2.3506,Aql,7,7/10,HOO,2800.0, -Abell 56,,3.0,PN,288.2792,2.8803,Aql,7,7/10,H,1000.0, -Abell 57,,1.0,PN,289.2667,25.6239,Vul,7,7/11,HOO,2800.0, -Abell 58,,0.8,PN,289.5833,1.7808,Aql,7,7/12,H,2800.0, -Abell 59,,1.8,PN,289.6708,19.5656,Sge,7,7/12,HOO,2800.0, -Abell 60,,1.7,PN,289.8208,-12.2478,Sgr,7,7/12,HOO,2800.0, -Abell 61,,3.0,PN,289.7917,46.2433,Cyg,7,7/12,HOO,1000.0, -Abell 62,,3.0,PN,293.325,10.6169,Aql,7,7/15,HOO,2800.0, -Abell 63,,0.7,PN,295.5417,17.0856,Sge,7,7/18,HOO,2800.0, -Abell 64,Not a PN - Galaxy CGCG 397-5,2.0,Galaxy,296.4,5.5667,Aql,7,7/18,,, -Abell 65,,4.0,PN,296.6417,-23.1367,Sgr,7,7/19,HOO,910.0, -Abell 66,,4.5,PN,299.3833,-21.6103,Sgr,7,7/22,HOO,2800.0, -Abell 67,,1.0,PN,299.6208,3.0397,Aql,7,7/22,HOO,2800.0, -Abell 68,,0.7,PN,300.0458,21.7161,Vul,7,7/22,HOO,2800.0, -Abell 69,,0.4,PN,304.9833,38.4086,Cyg,7,7/27,H,2800.0, -Abell 70,,1.0,PN,307.8875,-7.0892,Aql,7,7/30,HOO,1000.0, -Abell 71,,3.0,HII Neb,308.0958,47.3511,Cyg,7,7/30,H,1000.0, -Abell 72,,3.0,PN,312.5083,13.5578,Del,8,8/4,HOO,2800.0, -Abell 73,,1.4,PN,314.1083,57.4322,Cep,8,8/5,HOO,2800.0, -Abell 74,,9.0,PN,319.2167,24.1475,Vul,8,8/11,HOO,1000.0, -Abell 75,,1.0,PN,321.6,62.8911,Cep,8,8/13,HOO,1000.0, -Abell 76,Not a PN - Ring galaxy PGC 85185,2.0,Galaxy,9.9458,6.7744,Psc,9,9/30,,, -Abell 77,,1.4,PN,323.0458,55.8794,Cep,8,8/15,HOO,2800.0, -Abell 78,,2.0,PN,323.8708,31.6958,Cyg,8,8/15,HOO,1000.0, -Abell 79,,2.0,PN,336.5708,54.8281,Lac,8,8/28,HOO,1000.0, -Abell 80,,2.2,PN,338.6917,52.4344,Lac,8,8/30,HOO,2800.0, -Abell 81,,0.7,PN,340.6042,80.4425,Cep,9,9/1,HOO,2800.0, -Abell 82,,1.7,PN,356.4458,57.0669,Cas,9,9/18,HOO,2800.0, -Abell 83,,0.7,PN,356.6917,54.7444,Cas,9,9/18,HOO,2800.0, -Abell 84,,2.7,PN,356.9375,51.3994,Cas,9,9/18,HOO,1000.0, -Abell 85,"CTB 1, Garlic",35.0,SNR,359.975,62.4475,Cas,9,9/21,HOO,1000.0,14.0 -Abell 86,,1.3,PN,0.3875,70.7117,Cep,9,9/21,HOO,2800.0, -AbellG 0071,,19.0,Gal Clus,9.4417,29.5914,And,9,9/30,,, -AbellG 0119,,39.0,Gal Clus,14.0875,-1.2631,Cet,10,10/5,,, -AbellG 0151,,39.0,Gal Clus,17.2167,-15.4169,Cet,10,10/8,,, -AbellG 0194,,56.0,Gal Clus,21.3875,-1.5069,Cet,10,10/12,L,1000.0, -AbellG 0262,,20.0,Gal Clus,28.2083,36.1461,And,10,10/19,L,1000.0, -AbellG 0347,,56.0,Gal Clus,36.4625,41.875,And,10,10/27,L,1000.0, -AbellG 0370,,16.0,Gal Clus,39.9583,-1.5856,Cet,10,10/31,,, -AbellG 0407,Zwicky's Nonet Galaxy Cluster,14.0,Gal Clus,45.4333,35.8467,Per,11,11/5,L,1000.0, -AbellG 0426,Perseus Galaxy Cluster,140.0,Gal Clus,49.65,41.515,Per,11,11/10,L,1000.0,77.0 -AbellG 0539,,17.0,Gal Clus,79.1458,6.4706,Ori,12,12/10,L,2800.0, -AbellG 0569,,26.0,Gal Clus,107.2917,48.6361,Lyn,1,1/7,,, -AbellG 0634,,28.0,Gal Clus,123.6417,58.0478,Lyn,1,1/24,,, -AbellG 0754,,50.0,Gal Clus,137.2083,-9.6533,Hya,2,2/7,L,455.0, -AbellG 0779,,50.0,Gal Clus,139.9625,33.7714,Lyn,2,2/10,L,1000.0, -AbellG 1060,,40.0,Gal Clus,159.2125,-27.5264,Hya,3,3/1,L,1000.0, -ABellG 1126,,20.0,Gal Clus,163.45,16.8406,Leo,3,3/5,L,2800.0, -AbellG 1185,,28.0,Gal Clus,167.7,28.6783,UMa,3,3/10,L,1000.0, -AbellG 1213,,20.0,Gal Clus,169.1208,29.2769,UMa,3,3/11,,, -AbellG 1228,,50.0,Gal Clus,170.375,34.3425,UMa,3,3/13,,, -AbellG 1314,,40.0,Gal Clus,173.7042,49.0569,UMa,3,3/16,,, -AbellG 1367,,100.0,Gal Clus,176.1208,19.8392,Leo,3,3/18,L,910.0, -AbellG 1495,,25.0,Gal Clus,183.3458,29.2231,Com,3,3/25,L,1000.0, -AbellG 1631,,34.0,Gal Clus,193.2083,-15.4381,Crv,4,4/5,,, -AbellG 1656,Coma Cluster,60.0,Gal Clus,194.9542,27.9808,Com,4,4/7,L,1500.0, -AbellG 1689,,200.0,Gal Clus,197.8917,-1.3653,Vir,4,4/9,,, -AbellG 2052,,22.0,Gal Clus,229.1875,7.0169,Ser,5,5/11,,, -AbellG 2063,,22.0,Gal Clus,230.7583,8.6394,Ser,5,5/13,,, -AbellG 2065,,22.0,Gal Clus,230.6792,27.7225,CrB,5,5/13,L,2800.0, -AbellG 2079,,18.0,Gal Clus,232.0208,28.8778,CrB,5,5/14,,, -AbellG 2147,,50.0,Gal Clus,240.5708,15.9119,Her,5,5/23,,, -AbellG 2151,,90.0,Gal Clus,241.3125,17.7486,Her,5,5/23,L,2800.0, -AbellG 2152,,90.0,Gal Clus,241.3417,16.4486,Her,5,5/23,,, -AbellG 2162,,56.0,Gal Clus,243.125,29.5397,CrB,5,5/25,L,2800.0, -AbellG 2197,,90.0,Gal Clus,247.0417,40.9072,Her,5,5/29,L,2800.0, -AbellG 2199,,90.0,Gal Chain,247.1542,39.5244,Her,5,5/29,L,2800.0, -AbellG 2218,,20.0,Gal Clus,248.975,66.2333,Dra,5,5/31,L,1000.0, -AbellG 2247,Shakhbazian 166,15.0,Gal Chain,252.7292,81.5669,UMi,6,6/4,L,2800.0, -AbellG 2256,,56.0,Gal Clus,255.9292,78.7175,UMi,6,6/7,,, -AbellG 2572,,30.0,Gal Clus,349.6,18.7403,Peg,9,9/11,L,1000.0, -AbellG 2593,,50.0,Gal Clus,351.1292,14.6414,Peg,9,9/12,L,1000.0, -AbellG 2634,,22.0,Gal Clus,354.575,27.0436,Peg,9,9/16,,, -AbellG 2666,,70.0,Gal Clus,357.7333,27.1614,Peg,9,9/19,L,2800.0, -AbellG S 0373,,60.0,Gal Clus,54.1167,-34.9758,For,11,11/14,L,455.0, -Andromeda's Parachute,Lensed quasar,0.1,Quasar,26.7875,46.5103,And,10,10/17,L,2800.0, -Ap 2-1,,0.5,PN,284.525,1.4,Aql,7,7/6,,, -Arp 001,,2.3,Galaxy,141.1542,49.35,UMa,2,2/11,L,1000.0, -Arp 002,,2.8,Gal-Mag,244.075,47.0333,Her,5,5/26,L,2800.0, -Arp 003,,2.5,Gal-Mag,339.1417,-2.9,Aql,8,8/31,L,1000.0, -Arp 004,,2.8,Galaxy,27.1042,-12.3667,Cet,10,10/18,L,2800.0, -Arp 005,,2.1,Gal-Mag,171.1,3.3167,Leo,3,3/13,L,2800.0, -Arp 006,"Bear Paw, Bear Claw Galaxy",1.7,Gal-BCD,123.3125,45.9917,Lyn,1,1/24,L,2800.0, -Arp 007,,1.3,Galaxy,132.5708,-16.5667,Hya,2,2/2,L,2800.0, -Arp 008,,2.1,Galaxy,20.5958,0.8667,Cet,10,10/11,L,2800.0, -Arp 009,,3.0,Galaxy,123.7458,73.5667,Cam,1,1/24,L,1000.0, -Arp 010,,1.5,Galaxy,34.6083,5.65,Cet,10,10/25,L,2800.0, -Arp 011,,1.5,Galaxy,17.3458,14.3333,Psc,10,10/8,L,2800.0, -Arp 012,,2.0,Galaxy,128.8208,28.4667,Cnc,1,1/29,L,1000.0, -Arp 013,,2.7,Galaxy,345.0083,15.9833,Peg,9,9/6,L,2800.0, -Arp 014,,5.0,Galaxy,338.9375,-26.05,PsA,8,8/31,L,2800.0, -Arp 015,,2.0,Galaxy,342.9125,-5.55,Aql,9,9/3,L,2800.0, -Arp 017,,1.1,Galaxy,116.175,73.8167,Cam,1,1/16,L,2800.0, -Arp 018,,6.0,Galaxy,181.3958,50.5333,UMa,3,3/24,L,1000.0, -Arp 019,,2.0,Galaxy,7.9375,-5.15,Cet,9,9/28,L,2800.0, -Arp 020,,1.2,Galaxy,64.9708,2.0833,Tau,11,11/25,L,2800.0, -Arp 021,,0.8,Galaxy,166.2417,30.0167,LMi,3,3/8,L,2800.0, -Arp 022,,3.2,Gal-Mag,179.875,-19.25,Crv,3,3/22,L,910.0, -Arp 023,,5.0,Gal-Mag,190.3833,41.15,CVn,4,4/2,L,1000.0, -Arp 024,,0.5,Gal-Mag,163.6875,56.95,UMa,3,3/6,L,2800.0, -Arp 025,,2.8,Galaxy,111.8083,85.7544,Cep,1,1/13,L,1000.0, -Arp 027,,5.0,Galaxy,170.2583,53.1667,UMa,3,3/12,L,2800.0, -Arp 028,,2.4,Galaxy,352.1125,22.4167,Peg,9,9/13,L,2800.0, -Arp 030,NGC6365,1.1,Galaxy,260.675,62.1667,Dra,6,6/12,L,2800.0, -Arp 031,,3.0,Galaxy,27.7833,21.9,Ari,10,10/18,L,1000.0, -Arp 032,,1.1,Gal-BCD,258.2792,59.3167,Dra,6,6/10,L,2800.0, -Arp 033,,0.5,Galaxy,204.3667,6.4167,Vir,4,4/16,L,2800.0, -Arp 034,,1.6,Galaxy,190.4042,26.0667,Com,4,4/2,L,2800.0, -Arp 035,,1.5,Galaxy,5.5958,-1.3,Psc,9,9/26,L,2800.0, -Arp 036,,1.3,Galaxy,203.5583,31.4167,CVn,4,4/15,L,2800.0, -Arp 038,,2.5,Galaxy,262.4,75.7,Dra,6,6/14,L,2800.0, -Arp 039,,1.6,Galaxy,52.425,-22.2667,Eri,11,11/13,L,2800.0, -Arp 040,,0.8,Galaxy,202.3333,37.4,CVn,4,4/14,L,2800.0, -Arp 042,,1.8,Gal Group,225.675,23.3167,Boo,5,5/8,L,2800.0, -Arp 043,,1.8,Galaxy,156.0625,16.7333,Leo,2,2/26,L,2800.0, -Arp 044,,0.3,Galaxy,156.3833,-2.2167,Sex,2,2/26,L,2800.0, -Arp 045,,0.7,Galaxy,214.8625,51.9167,Boo,4,4/27,L,2800.0, -Arp 046,,1.2,Galaxy,353.4208,30.0333,Peg,9,9/14,L,2800.0, -Arp 047,,0.8,Galaxy,221.8,18.85,Boo,5,5/4,L,2800.0, -Arp 048,,1.0,Galaxy,19.9833,12.3333,Psc,10,10/11,L,2800.0, -Arp 049,,1.9,Galaxy,218.1042,8.0667,Boo,4,4/30,L,2800.0, -Arp 050,,0.5,Galaxy,359.4917,-14.0167,Cet,9,9/21,L,2800.0, -Arp 051,,0.8,Galaxy,1.5667,-13.4336,Cet,9,9/22,L,2800.0, -Arp 052,,0.6,Galaxy,79.9333,3.7167,Ori,12,12/10,L,2800.0, -Arp 053,,1.0,Galaxy,158.8208,-17.2667,Hya,3,3/1,L,2800.0, -Arp 054,,0.5,Galaxy,35.9958,-4.6833,Cet,10,10/27,L,2800.0, -Arp 055,Grasshopper,1.5,Galaxy,139.0,44.35,Lyn,2,2/9,L,1000.0, -Arp 056,,1.0,Galaxy,29.3542,17.2167,Ari,10,10/20,L,2800.0, -Arp 057,,1.0,Galaxy,199.1667,14.4333,Com,4,4/11,L,2800.0, -Arp 058,,1.8,Galaxy,127.9917,19.2,Cnc,1,1/28,L,1960.0, -Arp 059,,1.1,Galaxy,15.1875,-9.1833,Cet,10,10/6,L,2800.0, -Arp 060,,1.0,Galaxy,198.6958,26.0833,Com,4,4/10,L,2800.0, -Arp 061,,1.0,Galaxy,69.175,-2.2833,Eri,11,11/30,L,2800.0, -Arp 062,,1.5,Galaxy,178.3958,43.45,UMa,3,3/21,L,2800.0, -Arp 063,,1.0,Galaxy,144.8292,32.3,Leo,2,2/15,L,2800.0, -Arp 064,,0.3,Galaxy,221.3625,19.4667,Boo,5,5/3,L,2800.0, -Arp 065,,2.2,Galaxy,5.4625,22.4,And,9,9/26,L,1000.0, -Arp 066,,1.2,Galaxy,246.7167,51.55,Dra,5,5/29,L,2800.0, -Arp 067,,1.6,Galaxy,20.3167,0.5333,Cet,10,10/11,L,2800.0, -Arp 068,,2.5,Galaxy,357.1875,4.1667,Psc,9,9/18,L,2800.0, -Arp 069,,1.9,Galaxy,215.1083,35.1833,Boo,4,4/27,L,2800.0, -Arp 070,,1.7,Galaxy,20.8667,30.7833,Psc,10,10/11,L,2800.0, -Arp 071,,0.3,Galaxy,241.2958,17.75,Her,5,5/23,L,2800.0, -Arp 072,,2.0,Galaxy,236.7208,17.8667,Ser,5,5/19,L,1000.0, -Arp 073,,1.7,Galaxy,248.7833,46.2,Her,5,5/31,L,2800.0, -Arp 074,,1.6,Galaxy,32.0875,41.4667,And,10,10/23,L,2800.0, -Arp 075,,1.6,Galaxy,27.825,-4.05,Cet,10,10/18,L,2800.0, -Arp 079,,1.2,Galaxy,212.5292,17.6,Boo,4,4/24,L,2800.0, -Arp 080,,2.5,Galaxy,132.025,74.0833,Cam,2,2/1,L,2800.0, -Arp 081,,0.5,Galaxy,273.25,68.35,Dra,6,6/25,L,1000.0, -Arp 082,,2.0,Galaxy,122.8167,25.1667,Cnc,1,1/23,L,2800.0, -Arp 083,,2.0,Galaxy,175.0542,15.3333,Leo,3,3/17,L,2800.0, -Arp 084,Heron Galaxy,3.1,Galaxy,209.6583,37.425,CVn,4,4/21,L,2800.0,45.0 -Arp 086,,3.3,Galaxy,356.7667,29.4833,Peg,9,9/18,L,1000.0, -Arp 087,,1.7,Galaxy,175.1833,22.4167,Leo,3,3/17,L,1000.0, -Arp 088,,0.6,Galaxy,19.7708,12.4667,Psc,10,10/10,L,2800.0, -Arp 089,,3.0,Galaxy,130.7,14.2667,Cnc,1,1/31,L,2800.0, -Arp 090,,2.5,Galaxy,231.525,41.6667,Boo,5,5/14,L,2800.0, -Arp 091,,1.6,Galaxy,233.6333,15.1833,Ser,5,5/16,L,2800.0, -Arp 092,,1.6,Galaxy,349.7333,0.2333,Psc,9,9/11,L,2800.0, -Arp 093,,2.0,Galaxy,337.15,-24.8333,Aql,8,8/29,L,2800.0, -Arp 094,,2.8,Galaxy,155.8792,19.865,Leo,2,2/26,L,2800.0, -Arp 095,,0.4,Galaxy,218.725,26.4833,Boo,5,5/1,L,2800.0, -Arp 096,,0.9,Galaxy,105.8417,86.55,Cep,1,1/6,L,2800.0, -Arp 097,,1.0,Galaxy,181.4375,31.0667,UMa,3,3/24,L,2800.0, -Arp 098,,0.3,Galaxy,23.0333,32.1,Tri,10,10/14,L,2800.0, -Arp 099,,2.8,Gal Group,348.8208,19.0333,Peg,9,9/10,L,1000.0, -Arp 100,,1.5,Galaxy,7.1583,-11.5667,Cet,9,9/27,L,2800.0, -Arp 101,,1.1,Galaxy,241.1,14.7667,Ser,5,5/23,L,2800.0, -Arp 102,,0.7,Galaxy,259.8083,48.9833,Her,6,6/11,L,2800.0, -Arp 103,Zwickys Triplet,10.0,Galaxy,252.3583,45.45,Her,6,6/4,L,2800.0, -Arp 104,Keenan's System ,2.1,Galaxy,203.0417,62.7675,UMa,4,4/15,L,1500.0, -Arp 105,Ambartsumian's Knot,0.9,Galaxy,167.8,28.7,UMa,3,3/10,L,1000.0, -Arp 106,,1.0,Galaxy,183.8958,28.1667,Com,3,3/26,L,2800.0, -Arp 107,,2.0,Galaxy,163.075,30.0667,LMi,3,3/5,L,2800.0, -Arp 108,,1.0,Galaxy,45.7792,-22.2,Eri,11,11/6,L,2800.0, -Arp 109,,0.5,Galaxy,237.0292,69.45,Dra,5,5/19,L,2800.0, -Arp 110,,0.7,Galaxy,343.5333,-15.2333,Aql,9,9/4,L,2800.0, -Arp 111,,0.4,Galaxy,210.4208,33.8167,CVn,4,4/22,L,2800.0, -Arp 112,,3.0,Galaxy,0.3583,31.4333,Peg,9,9/21,L,1000.0, -Arp 113,,6.0,Galaxy,4.575,30.0667,And,9,9/25,L,1000.0, -Arp 114,,3.0,Galaxy,113.0833,85.7,Cep,1,1/13,L,1000.0, -Arp 115,,1.0,Galaxy,175.7583,26.2667,Leo,3,3/18,L,2800.0, -Arp 116,M60 companion,3.0,Galaxy,190.8833,11.5667,Vir,4,4/2,L,910.0, -Arp 117,,5.5,Galaxy,212.5167,17.7333,Boo,4,4/24,L,2800.0, -Arp 118,,1.0,Galaxy,43.7875,0.1667,Cet,11,11/4,L,2800.0, -Arp 119,,1.0,Galaxy,19.85,12.45,Psc,10,10/10,L,2800.0, -Arp 120,Eyes Galaxies,3.0,Galaxy,186.95,13.0167,Vir,3,3/29,L,1000.0, -Arp 121,,1.0,Galaxy,14.8458,-4.8,Cet,10,10/5,L,2800.0, -Arp 122,,0.8,Galaxy,241.1083,17.7333,Her,5,5/23,L,2800.0, -Arp 123,,0.7,Galaxy,80.6458,-11.4833,Lep,12,12/11,L,2800.0, -Arp 124,,0.5,Galaxy,259.5,60.6,Dra,6,6/11,L,2800.0, -Arp 125,,1.0,Galaxy,249.5542,41.9333,Her,6,6/1,L,2800.0, -Arp 126,,0.4,Galaxy,29.5208,3.0833,Psc,10,10/20,L,2800.0, -Arp 127,,0.7,Galaxy,9.75,-9.0,Cet,9,9/30,L,2800.0, -Arp 128,,0.8,Galaxy,19.3708,14.7,Psc,10,10/10,L,2800.0, -Arp 129,,0.8,Galaxy,144.85,32.35,Leo,2,2/15,L,2800.0, -Arp 130,,1.0,Galaxy,0.6542,16.6333,Peg,9,9/21,L,2800.0, -Arp 131,,1.0,Galaxy,41.8292,-14.8,Eri,11,11/2,L,2800.0, -Arp 132,,0.4,Galaxy,169.8375,-3.0833,Leo,3,3/12,L,2800.0, -Arp 133,Minkowski's Object,1.8,Gal-Lent,21.4333,-1.3667,Cet,10,10/12,L,1000.0, -Arp 135,,9.0,Gal-Lent,40.1,39.0667,Per,10,10/31,L,1000.0, -Arp 136,,1.7,Gal-Lent,224.6625,53.8833,Boo,5,5/7,L,2800.0, -Arp 137,,1.0,Gal-Lent,143.5083,10.1,Leo,2,2/13,L,2800.0, -Arp 138,,1.0,Gal-Ell,179.675,25.0333,Com,3,3/22,L,2800.0, -Arp 139,,1.0,Gal-Ell,196.8625,26.7167,Com,4,4/8,L,2800.0, -Arp 140,,1.6,Gal-Ell,12.7667,-7.05,Cet,10,10/3,L,2800.0, -Arp 141,,3.0,Gal-Ell,108.6083,73.4667,Cam,1,1/9,L,1000.0, -Arp 142,Penguin and Egg Galaxy,2.0,Gal-Ell,144.4375,2.7333,Hya,2,2/14,L,1000.0,53.0 -Arp 143,,2.0,Gal-Ell,116.7208,39.0167,Lyn,1,1/17,L,2800.0, -Arp 144,,0.7,Galaxy,1.6208,-13.4167,Cet,9,9/22,L,2800.0, -Arp 145,,2.0,Gal-Ell,35.7958,41.3667,And,10,10/27,L,1000.0, -Arp 146,,0.7,Galaxy,1.6833,-6.6333,Cet,9,9/22,L,2800.0, -Arp 147,Arp 147,0.7,Galaxy,47.825,1.3,Cet,11,11/8,L,2800.0,199.0 -Arp 148,Mayall's Object,0.6,Galaxy,165.9667,40.8333,UMa,3,3/8,L,1000.0, -Arp 149,,0.8,Galaxy,189.925,16.5833,Com,4,4/1,L,2800.0, -Arp 150,,0.8,Gal Group,349.8667,9.5,Peg,9,9/11,L,2800.0, -Arp 151,MRK 40,1.3,Galaxy,171.4,54.3667,UMa,3,3/14,L,2800.0, -Arp 155,,1.6,Galaxy,170.9083,53.8333,UMa,3,3/13,L,1000.0, -Arp 156,,1.3,Galaxy,160.6583,77.4833,Dra,3,3/3,L,2800.0, -Arp 157,Arp 157,4.0,Galaxy,21.1458,3.7833,Psc,10,10/12,L,1000.0,174.0 -Arp 158,,2.5,Galaxy,21.3292,34.0167,And,10,10/12,L,2800.0, -Arp 159,,3.5,Galaxy,192.9417,25.775,Com,4,4/4,L,1000.0, -Arp 160,,1.8,Galaxy,183.5417,54.5167,UMa,3,3/26,L,2800.0, -Arp 161,,0.4,Galaxy,175.55,0.3333,Vir,3,3/18,L,2800.0, -Arp 162,,4.0,Gal-Lent,162.8167,27.9667,LMi,3,3/5,L,2800.0, -Arp 163,,1.5,Gal-BCD,191.3208,27.1167,Com,4,4/3,L,2800.0, -Arp 164,,2.0,Gal-Ell,18.9875,5.1667,Psc,10,10/9,L,2800.0, -Arp 165,,1.8,Gal-Ell,114.1542,17.8833,Gem,1,1/14,L,2800.0, -Arp 166,,1.7,Gal-Ell,29.3833,33.2,Tri,10,10/20,L,1000.0, -Arp 167,,1.2,Gal-Ell,132.35,19.0667,Cnc,2,2/2,L,2800.0, -Arp 169,,0.7,Gal-Lent,333.6875,13.8333,Peg,8,8/25,L,2800.0, -Arp 170,Hickson 94,0.4,Gal Group,349.3125,18.7333,Peg,9,9/10,L,1000.0, -Arp 171,,1.5,Gal-Ell,220.1792,3.45,Vir,5,5/2,L,2800.0, -Arp 172,,0.8,Gal-Ell,241.3875,17.5833,Her,5,5/24,L,1000.0, -Arp 173,,0.6,Galaxy,222.8625,9.3167,Boo,5,5/5,L,2800.0, -Arp 174,,0.2,Galaxy,149.6583,28.8667,Leo,2,2/19,L,2800.0, -Arp 175, Other Zwickys Triplet,0.6,Galaxy,188.2917,11.3333,Vir,3,3/31,L,2800.0, -Arp 176,,1.8,Galaxy,195.9833,-11.4833,Vir,4,4/8,L,2800.0, -Arp 177,,0.5,Galaxy,223.95,24.5833,Boo,5,5/6,L,2800.0, -Arp 178,,4.0,Galaxy,216.025,34.8667,Boo,4,4/28,L,2800.0, -Arp 179,,1.0,Galaxy,45.4167,-4.6667,Eri,11,11/5,L,2800.0, -Arp 180,,1.1,Galaxy,73.3417,-4.8,Eri,12,12/4,L,2800.0, -Arp 181,,1.1,Galaxy,157.1708,79.8,Dra,2,2/27,L,2800.0, -Arp 182,,2.3,Gal Group,351.9958,8.7833,Peg,9,9/13,L,2800.0, -Arp 183,,1.3,Galaxy,203.7292,31.3833,CVn,4,4/15,L,2800.0, -Arp 184,,5.0,Galaxy,85.5167,69.3667,Cam,12,12/16,L,2800.0, -Arp 185,,3.0,Galaxy,248.1667,78.1833,UMi,5,5/30,L,2800.0, -Arp 186,,1.3,Galaxy,68.4958,-8.5667,Eri,11,11/29,L,1000.0, -Arp 187,,1.0,Galaxy,76.2208,-10.2333,Eri,12,12/7,L,2800.0, -Arp 188,Tadpole Galaxy,3.6,Galaxy,241.5167,55.4256,Dra,5,5/24,L,2800.0,168.0 -Arp 189,Umbrella Galaxy,3.8,Galaxy,190.9292,16.3933,Com,4,4/2,L,2800.0, -Arp 190,,0.5,Galaxy,42.5792,12.8833,Ari,11,11/2,L,2800.0, -Arp 191,,1.3,Galaxy,166.8333,18.4167,Leo,3,3/9,L,2800.0, -Arp 192,,3.0,Galaxy,159.2458,18.1333,Leo,3,3/1,L,2800.0, -Arp 193,,1.6,Galaxy,200.1458,34.1333,CVn,4,4/12,L,2800.0, -Arp 194,,0.8,Galaxy,179.475,36.4,UMa,3,3/22,L,2800.0, -Arp 195,,1.9,Galaxy,133.4583,35.1333,Lyn,2,2/3,L,2800.0, -Arp 196,,2.0,Galaxy,198.6542,26.1167,Com,4,4/10,L,2800.0, -Arp 197,,1.0,Galaxy,172.75,20.4667,Leo,3,3/15,L,2800.0, -Arp 198,,1.3,Galaxy,164.9375,17.6333,Leo,3,3/7,L,2800.0, -Arp 199,,1.5,Galaxy,214.2667,36.5667,Boo,4,4/26,L,2800.0, -Arp 200,,2.5,Galaxy,43.4208,13.0,Ari,11,11/3,L,2800.0, -Arp 201,,0.5,Galaxy,5.8875,0.4833,Psc,9,9/26,L,2800.0, -Arp 202,,0.9,Galaxy,135.0625,35.7167,Lyn,2,2/5,L,2800.0, -Arp 203,,1.7,Galaxy,172.7875,28.5667,UMa,3,3/15,L,2800.0, -Arp 204,,0.6,Galaxy,200.7042,84.5,Cam,4,4/12,L,2800.0, -Arp 205,,2.0,Galaxy,163.55,54.3,UMa,3,3/6,L,2800.0, -Arp 206,Knitting Needle Galaxy,6.2,Galaxy,163.1292,36.6194,LMi,3,3/5,L,1000.0, -Arp 207,,1.2,Galaxy,142.775,76.45,Dra,2,2/12,L,2800.0, -Arp 208,,0.4,Galaxy,252.7542,47.2167,Her,6,6/4,L,2800.0, -Arp 209,,1.0,Galaxy,241.3,20.5333,Her,5,5/23,L,2800.0, -Arp 210,,4.0,Galaxy,67.7042,64.8333,Cam,11,11/28,L,1000.0, -Arp 211,,0.4,Gal-BCD,189.3292,38.7167,CVn,4,4/1,L,2800.0, -Arp 212,,1.6,Galaxy,350.125,17.2167,Peg,9,9/11,L,2800.0, -Arp 213,,5.0,Gal-Lent,61.9458,69.8,Cam,11,11/22,L,1000.0, -Arp 214,Arp 214,8.7,Galaxy,173.1458,53.0678,UMa,3,3/15,L,1000.0,148.0 -Arp 215,,3.5,Galaxy,138.5208,40.1,Lyn,2,2/8,L,1000.0, -Arp 216,,1.2,Galaxy,352.2625,3.5333,Psc,9,9/13,L,2800.0, -Arp 217,,3.0,Galaxy,159.6917,53.5,UMa,3,3/2,L,1000.0, -Arp 218,,1.0,Galaxy,238.3833,18.6,Ser,5,5/20,L,2800.0, -Arp 219,,1.0,Galaxy,54.9625,-2.1,Eri,11,11/15,L,2800.0, -Arp 220,,1.5,Galaxy,233.7375,23.5,Ser,5,5/16,L,2800.0, -Arp 221,,1.3,Galaxy,144.1125,-11.3167,Hya,2,2/14,L,2800.0, -Arp 222,,3.5,Galaxy,354.975,-12.2833,Aql,9,9/16,L,1000.0, -Arp 223,,2.3,Gal-Ell,349.5083,-4.6333,Aql,9,9/11,L,1000.0, -Arp 224,,2.0,Galaxy,177.775,55.0667,UMa,3,3/20,L,2800.0, -Arp 225,,5.0,Gal-Lent,133.9083,78.2167,Cam,2,2/3,L,1000.0, -Arp 226,Atom For Peace Galaxy,2.0,Galaxy,335.1833,-24.6667,Aql,8,8/27,L,1000.0,143.0 -Arp 227,,7.0,Gal-Ell,20.025,3.4167,Psc,10,10/11,L,1000.0, -Arp 228,,1.6,Gal-Ell,27.2208,10.5167,Psc,10,10/18,L,2800.0, -Arp 229,,1.3,Gal-Ell,20.9167,33.2667,Psc,10,10/11,L,2800.0, -Arp 230,,1.4,Gal-Ell,11.6,-13.4333,Cet,10,10/2,L,2800.0, -Arp 231,,0.8,Gal-Ell,10.8875,-4.1167,Cet,10,10/1,L,1000.0, -Arp 232,,4.0,Gal-Lent,143.4417,10.15,Leo,2,2/13,L,2800.0, -Arp 233,,1.0,Gal-BCD,158.1333,54.4,UMa,2,2/28,L,2800.0, -Arp 234,,2.5,Gal-BCD,173.95,54.5167,UMa,3,3/16,L,1000.0, -Arp 235,,2.8,Gal-Mag,2.1917,15.8,Peg,9,9/22,L,2800.0, -Arp 236,,0.5,Galaxy,16.9458,-17.5,Cet,10,10/7,L,2800.0, -Arp 237,,1.0,Gal Group,141.9292,12.2833,Leo,2,2/12,L,2800.0, -Arp 238,,0.8,Galaxy,198.8708,62.1167,UMa,4,4/10,L,2800.0, -Arp 239,,1.4,Galaxy,205.4125,55.6667,UMa,4,4/17,L,2800.0, -Arp 240,,1.7,Galaxy,204.9875,0.8167,Vir,4,4/17,L,2800.0, -Arp 241,,1.0,Galaxy,219.4583,30.4667,Boo,5,5/1,L,2800.0, -Arp 242,Mice Galaxies,2.3,Galaxy,191.5417,30.7167,Com,4,4/3,L,1000.0,68.0 -Arp 243,,2.0,Galaxy,129.5958,25.75,Cnc,1,1/30,L,1000.0, -Arp 244,Antennae Galaxies,2.6,Galaxy,180.4708,-18.8686,Crv,3,3/23,L,2800.0,4.0 -Arp 245,,3.6,Galaxy,146.425,-14.3167,Hya,2,2/16,L,1000.0, -Arp 246,,0.7,Galaxy,1.7208,8.3333,Psc,9,9/22,L,2800.0, -Arp 247,,0.6,Galaxy,125.8833,21.3333,Cnc,1,1/26,L,2800.0, -Arp 248,Wild's Triplet,1.0,Galaxy,176.7042,-3.8167,Vir,3,3/19,L,2800.0, -Arp 249,,2.2,Galaxy,0.0792,22.9833,Peg,9,9/20,L,2800.0, -Arp 250,,1.5,Galaxy,113.9958,35.3667,Lyn,1,1/14,L,2800.0, -Arp 251,,1.0,Galaxy,13.4417,-13.85,Cet,10,10/4,L,2800.0, -Arp 252,,0.8,Galaxy,146.2417,-19.7167,Hya,2,2/16,L,2800.0, -Arp 253,,1.3,Galaxy,145.85,-5.2667,Sex,2,2/16,L,2800.0, -Arp 254,,1.5,Galaxy,230.3833,-7.3667,Lib,5,5/13,L,1000.0, -Arp 255,,1.0,Galaxy,148.2833,7.8667,Leo,2,2/18,L,2800.0, -Arp 256,,1.0,Galaxy,4.7083,-10.35,Cet,9,9/25,L,2800.0, -Arp 257,,1.5,Galaxy,132.9083,-2.35,Hya,2,2/2,L,2800.0, -Arp 258,,1.7,Gal Group,39.775,18.0,Ari,10,10/31,L,2800.0, -Arp 259,,3.0,Gal Group,75.4,-4.25,Eri,12,12/6,L,2800.0, -Arp 260,,1.4,Galaxy,183.4083,16.1167,Com,3,3/26,L,2800.0, -Arp 261,,2.5,Galaxy,222.3833,-10.15,Lib,5,5/4,L,2800.0, -Arp 262,,2.4,Gal-Mag,359.1833,16.8,Peg,9,9/20,L,2800.0, -Arp 263,,5.0,Galaxy,156.2708,17.15,Leo,2,2/26,L,1000.0, -Arp 264,,3.4,Gal-Mag,150.9875,40.75,LMi,2,2/21,L,2800.0, -Arp 265,,1.3,Galaxy,193.4708,36.0833,CVn,4,4/5,L,2800.0, -Arp 266,,4.0,Gal-BCD,194.7542,34.85,CVn,4,4/6,L,2800.0, -Arp 267,,2.0,Gal-Mag,159.175,31.5333,LMi,3,3/1,L,2800.0, -Arp 268,Holmberg II Galaxy,8.0,Gal-Dwarf,124.775,70.7,UMa,1,1/25,L,1000.0, -Arp 269,Cocoon Galaxy,6.0,Galaxy,187.65,41.6422,CVn,3,3/30,L,1500.0,94.0 -Arp 270,,3.0,Galaxy,162.4833,32.9833,LMi,3,3/4,L,2800.0, -Arp 271,,3.0,Galaxy,210.8542,-6.0167,Vir,4,4/23,L,1000.0, -Arp 272,,0.8,Galaxy,241.3417,17.75,Her,5,5/23,L,2800.0, -Arp 273,Rose Galaxy,2.5,Galaxy,35.3833,39.35,And,10,10/26,L,2800.0,43.0 -Arp 274,,1.2,Galaxy,218.7833,5.35,Vir,5,5/1,L,2800.0, -Arp 275,,1.7,Galaxy,141.475,-12.0,Hya,2,2/11,L,2800.0, -Arp 276,,1.7,Galaxy,37.0417,19.5833,Ari,10,10/28,L,2800.0, -Arp 277,,1.8,Galaxy,193.7083,2.65,Vir,4,4/5,L,2800.0, -Arp 278,,1.7,Galaxy,334.8583,29.3833,Peg,8,8/27,L,2800.0, -Arp 279,,4.0,Galaxy,48.5958,-2.8,Eri,11,11/9,L,2800.0, -Arp 280,,3.0,Galaxy,174.4333,47.8833,UMa,3,3/17,L,2800.0, -Arp 281,Whale Galaxy,15.0,Galaxy,190.4958,32.5667,CVn,4,4/2,L,2800.0,106.0 -Arp 282,,0.8,Galaxy,9.2167,23.9833,And,9,9/30,L,2800.0, -Arp 283,,2.0,Galaxy,139.3792,41.9833,Lyn,2,2/9,L,2800.0, -Arp 284,,2.0,Galaxy,354.0583,2.155,Psc,9,9/15,L,1000.0, -Arp 285,,1.7,Galaxy,141.0083,49.2,UMa,2,2/11,L,1000.0, -Arp 286,,4.0,Galaxy,215.0833,3.9167,Vir,4,4/27,L,1000.0, -Arp 287,,1.2,Galaxy,135.6583,25.9333,Cnc,2,2/5,L,2800.0, -Arp 288,,0.6,Galaxy,203.7375,13.75,Vir,4,4/15,L,2800.0, -Arp 289,,5.3,Galaxy,179.0292,-19.8833,Crt,3,3/21,L,2800.0, -Arp 290,,1.6,Galaxy,30.9333,14.7,Ari,10,10/22,L,2800.0, -Arp 291,,1.2,Gal-Mag,160.7,13.45,Leo,3,3/3,L,2800.0, -Arp 292,,1.7,Galaxy,148.6375,-6.85,Sex,2,2/18,L,2800.0, -Arp 293,,1.3,Galaxy,254.6292,58.9333,Dra,6,6/6,L,2800.0, -Arp 294,,2.2,Galaxy,174.925,31.9,UMa,3,3/17,L,2800.0, -Arp 295,,10.0,Galaxy,355.5167,-3.5833,Aql,9,9/17,L,1000.0, -Arp 296,,0.3,Galaxy,172.2208,58.55,UMa,3,3/14,L,1960.0, -Arp 297,,1.3,Galaxy,221.35,38.7667,Boo,5,5/3,L,1000.0, -Arp 298,,0.8,Galaxy,345.825,8.8833,Peg,9,9/7,L,2800.0, -Arp 299,,0.3,Galaxy,172.1167,58.5667,UMa,3,3/14,L,1960.0, -Arp 300,,0.7,Galaxy,141.9583,68.4,UMa,2,2/12,L,2800.0, -Arp 301,,0.8,Galaxy,167.4625,24.25,Leo,3,3/10,L,2800.0, -Arp 302,,0.7,Galaxy,224.25,24.6,Boo,5,5/6,L,2800.0, -Arp 303,,0.9,Galaxy,146.5833,3.0333,Sex,2,2/16,L,2800.0, -Arp 304,,1.2,Galaxy,47.8292,-8.9,Eri,11,11/8,L,2800.0, -Arp 305,,1.2,Galaxy,179.6208,27.5167,Com,3,3/22,L,2800.0, -Arp 306,,0.9,Galaxy,23.1708,4.6333,Psc,10,10/14,L,2800.0, -Arp 307,,2.0,Galaxy,141.425,11.4167,Leo,2,2/11,L,1960.0, -Arp 308,,1.3,Gal-Ell,21.5,-1.3333,Cet,10,10/12,L,1000.0, -Arp 309,,3.4,Galaxy,37.2917,-10.8333,Cet,10,10/28,L,2800.0, -Arp 310,,0.8,Galaxy,261.8583,58.5,Dra,6,6/13,L,2800.0, -Arp 311,,6.0,Galaxy,261.8792,58.4667,Dra,6,6/13,L,2800.0, -Arp 312,,3.0,Galaxy,252.4583,46.7167,Her,6,6/4,L,2800.0, -Arp 313,,7.0,Gal-Mag,179.4333,32.2833,UMa,3,3/22,L,2800.0, -Arp 314,,4.0,Gal-Mag,344.5042,-3.7667,Aql,9,9/5,L,2800.0, -Arp 315,,3.0,Gal-Ell,139.9208,33.7333,Lyn,2,2/10,L,2800.0, -Arp 316,Hickson 44,12.0,Gal Group,154.525,21.8167,Leo,2,2/24,L,1000.0,65.0 -Arp 317,Leo Triplet ,50.0,Gal Group,169.7292,13.0833,Leo,3,3/12,L,1000.0,102.0 -Arp 318,,7.0,Gal Group,32.3333,-10.1167,Cet,10,10/23,L,2800.0, -Arp 319,Stephan's Quintet,5.0,Gal Group,339.0167,33.9333,Peg,8,8/31,L,2800.0,28.0 -Arp 320,Copeland's Septet,10.0,Gal Group,174.4792,21.9833,Leo,3,3/17,L,1000.0, -Arp 321,Arp 321,4.0,Gal Group,144.7208,-4.85,Hya,2,2/14,L,1000.0,170.0 -Arp 322,,2.0,Gal Chain,173.1375,52.9333,UMa,3,3/15,L,1000.0, -Arp 323,,2.0,Gal Chain,358.5583,0.35,Psc,9,9/20,L,2800.0, -Arp 324,,10.0,Gal Chain,240.5667,16.0,Her,5,5/23,L,2800.0, -Arp 325,,2.0,Gal Chain,331.5958,-21.0833,Aql,8,8/23,L,2800.0, -Arp 326,,10.0,Gal Chain,204.3542,6.5167,Vir,4,4/16,L,2800.0, -Arp 327,,3.0,Gal Chain,80.4458,6.6833,Ori,12,12/11,L,2800.0, -Arp 328,,3.0,Gal Chain,221.975,19.0833,Boo,5,5/4,L,2800.0, -Arp 329,,2.0,Gal Chain,173.0292,70.8119,Dra,3,3/15,L,2800.0, -Arp 330,Shakhbazian 16,12.0,Gal Chain,252.25,53.4,Dra,6,6/4,L,2800.0, -Arp 331,,15.0,Gal Chain,16.8792,32.35,Psc,10,10/7,L,2800.0, -Arp 332,,10.0,Gal Chain,46.9958,-22.8833,Eri,11,11/7,L,2800.0, -Arp 333,,3.9,Galaxy,39.8,10.8333,Ari,10,10/31,L,2800.0, -Arp 334,,2.8,Galaxy,202.6042,31.6167,CVn,4,4/14,L,2800.0, -Arp 335,,2.1,Galaxy,166.0958,4.8167,Leo,3,3/8,L,2800.0, -Arp 336,Helix Galaxy,5.2,Galaxy,133.8958,58.7339,UMa,2,2/3,L,2800.0,49.0 -Arp 338,,0.6,Galaxy,152.7458,-7.9,Sex,2,2/23,L,2800.0, -ArpGC 2,,2.5,Glob Cl,292.175,-30.35,Sgr,7,7/14,RGB,2800.0, -Baade 1,,0.7,PN,58.4042,19.4942,Tau,11,11/19,HOO,2800.0, -Barnard 001,,30.0,Dark Neb,53.2333,31.1667,Per,11,11/13,,, -Barnard 002,,20.0,Dark Neb,53.375,32.3333,Per,11,11/14,,, -Barnard 003,,20.0,Dark Neb,55.0,31.9833,Per,11,11/15,L,1000.0, -Barnard 004,,20.0,Dark Neb,56.0042,31.8167,Per,11,11/16,,, -Barnard 005,,60.0,Dark Neb,56.9625,32.9,Per,11,11/17,L,1000.0, -Barnard 006,faint,10.0,Dark Neb,59.0792,56.1333,Cam,11,11/19,,, -Barnard 007,Barnard 7,50.0,Dark Neb,64.35,28.5667,Tau,11,11/25,L,455.0,151.0 -Barnard 008,,140.0,Dark Neb,64.4458,55.2667,Per,11,11/25,,, -Barnard 009,,150.0,Dark Neb,64.7208,55.0667,Per,11,11/25,,, -Barnard 010,,8.0,Dark Neb,64.6667,28.2833,Tau,11,11/25,L,455.0, -Barnard 011,,10.0,Dark Neb,66.6417,55.05,Per,11,11/26,,, -Barnard 012,,24.0,Dark Neb,67.4333,54.2667,Per,11,11/28,,, -Barnard 013,,11.0,Dark Neb,67.8125,54.9,Cam,11,11/28,,, -Barnard 014,,4.0,Dark Neb,69.9917,25.7667,Tau,11,11/30,L,1000.0, -Barnard 015,,15.0,Dark Neb,67.975,46.6333,Cam,11,11/28,,, -Barnard 016,,2.0,Dark Neb,68.1,46.6167,Cam,11,11/28,,, -Barnard 017,,2.0,Dark Neb,68.1167,46.5333,Cam,11,11/28,,, -Barnard 018,,60.0,Dark Neb,67.8,24.3667,Tau,11,11/28,,, -Barnard 019,,60.0,Dark Neb,68.4125,26.2833,Cam,11,11/29,,, -Barnard 020,,60.0,Dark Neb,69.2583,50.9833,Per,11,11/30,,, -Barnard 021,,10.0,Dark Neb,69.4792,55.3667,Per,11,11/30,,, -Barnard 022,,120.0,Dark Neb,69.6625,26.0667,Tau,11,11/30,L,1000.0, -Barnard 023,,5.0,Dark Neb,70.1333,29.9,Tau,12,12/1,,, -Barnard 024,,8.0,Dark Neb,70.7167,29.75,Per,12,12/1,,, -Barnard 025,,8.0,Dark Neb,73.0083,46.0333,Aur,12,12/3,,, -Barnard 026,,8.0,Dark Neb,73.6542,30.6333,Aur,12,12/4,L,1000.0, -Barnard 027,,6.0,Dark Neb,73.7792,30.5667,Aur,12,12/4,L,1000.0, -Barnard 028,,9.0,Dark Neb,73.9667,30.65,Aur,12,12/4,L,1000.0, -Barnard 029,,10.0,Dark Neb,76.5958,31.6,Aur,12,12/3,,, -Barnard 030,,55.0,Dark Neb,82.5667,12.7833,Ori,12,12/13,HL,1000.0, -Barnard 031,,30.0,Dark Neb,83.0042,12.7667,Ori,12,12/13,,, -Barnard 032,,45.0,Dark Neb,83.0333,12.4333,Ori,12,12/13,,, -Barnard 033,Horsehead Nebula,4.0,Dark Neb,85.2208,-2.45,Ori,12,12/16,HII,2800.0, -Barnard 034,,20.0,Dark Neb,85.875,32.65,Aur,12,12/17,,, -Barnard 035,Barnard 35,20.0,Dark Neb,86.3792,9.0667,Ori,12,12/17,L,455.0,140.0 -Barnard 036,,120.0,Dark Neb,87.4417,7.4333,Ori,12,12/18,,, -Barnard 037,,60.0,Dark Neb,98.2292,10.4833,Mon,12,12/29,L,1000.0, -Barnard 038,,60.0,Dark Neb,98.425,11.0833,Mon,12,12/29,,, -Barnard 039,,6.0,Dark Neb,99.5125,10.3333,Mon,12,12/30,,, -Barnard 040,,70.0,Dark Neb,243.6583,-18.9833,Sco,5,5/26,,, -Barnard 041,,45.0,Dark Neb,245.5708,-19.6333,Sco,5,5/28,,, -Barnard 042,,20.0,Dark Neb,246.3708,-23.45,Oph,5,5/28,RGB,455.0, -Barnard 043,,70.0,Dark Neb,247.575,-19.7833,Oph,5,5/30,,, -Barnard 044,,270.0,Dark Neb,250.1375,-24.0833,Sco,6,6/1,,, -Barnard 044a,,5.0,Dark Neb,251.1833,-40.35,Sco,6,6/2,,, -Barnard 045,,150.0,Dark Neb,251.6083,-21.6,Sco,6,6/3,,, -Barnard 046,,20.0,Dark Neb,254.3,-22.75,Oph,6,6/6,,, -Barnard 047,,15.0,Dark Neb,254.925,-22.65,Oph,6,6/6,,, -Barnard 048,,40.0,Dark Neb,255.4208,-40.7,Sco,6,6/7,,, -Barnard 049,,5.0,Dark Neb,255.6625,-33.2833,Sco,6,6/7,,, -Barnard 050,,16.0,Dark Neb,255.7208,-34.4,Sco,6,6/7,,, -Barnard 051,,20.0,Dark Neb,256.1792,-22.2667,Sco,6,6/8,,, -Barnard 053,,24.0,Dark Neb,256.5417,-33.6,Sco,6,6/8,,, -Barnard 054,,5.0,Dark Neb,256.6375,-34.2667,Sco,6,6/8,,, -Barnard 055,,16.0,Dark Neb,256.8833,-32.0167,Sco,6,6/8,,, -Barnard 056,,3.0,Dark Neb,257.2,-32.1167,Oph,6,6/9,,, -Barnard 057,,5.0,Dark Neb,257.0917,-22.85,Oph,6,6/9,,, -Barnard 058,,30.0,Dark Neb,257.7958,-40.4167,Oph,6,6/9,,, -Barnard 059,Stem of Pipe Nebula,60.0,Dark Neb,257.8458,-27.5,Oph,6,6/9,L,1000.0, -Barnard 060,,13.0,Dark Neb,257.9625,-22.45,Oph,6,6/9,,, -Barnard 061,,5.0,Dark Neb,258.75,-20.4833,Oph,6,6/10,,, -Barnard 062,,20.0,Dark Neb,259.05,-20.8833,Oph,6,6/10,L,2800.0, -Barnard 063,,20.0,Dark Neb,259.1167,-21.4833,Oph,6,6/10,,, -Barnard 064,,7.0,Dark Neb,259.325,-18.5,Oph,6,6/11,,, -Barnard 065,,12.0,Dark Neb,259.9,-26.7167,Oph,6,6/11,,, -Barnard 066,,8.0,Dark Neb,259.9875,-26.9167,Oph,6,6/11,,, -Barnard 067,,25.0,Dark Neb,260.2375,-26.8667,Oph,6,6/12,L,455.0, -Barnard 067a,,13.0,Dark Neb,260.625,-21.9,Oph,6,6/12,,, -Barnard 068,,4.0,Dark Neb,260.65,-23.8,Oph,6,6/12,,, -Barnard 069,,4.0,Dark Neb,260.7333,-23.9333,Oph,6,6/12,,, -Barnard 070,,4.0,Dark Neb,260.8833,-24.05,Oph,6,6/12,,, -Barnard 071,small,1.0,Dark Neb,260.7583,-24.0167,Oph,6,6/12,,, -Barnard 072,Snake Nebula ,37.0,Dark Neb,260.9,-23.6333,Oph,6,6/12,RGB,910.0,138.0 -Barnard 073,small,1.0,Dark Neb,261.0333,-24.3,Oph,6,6/12,,, -Barnard 074,,5.0,Dark Neb,261.2833,-24.2167,Oph,6,6/13,,, -Barnard 075,,60.0,Dark Neb,261.3208,-22.05,Oph,6,6/13,L,455.0, -Barnard 076,,30.0,Dark Neb,261.4083,-24.4333,Oph,6,6/13,,, -Barnard 077,,60.0,Dark Neb,262.1542,-23.8667,Oph,6,6/13,,, -Barnard 078,Bowl of Pipe Nebula,180.0,Dark Neb,263.1792,-25.6,Oph,6,6/14,,, -Barnard 079,,30.0,Dark Neb,264.3458,-19.6167,Oph,6,6/15,,, -Barnard 080,,3.0,Dark Neb,264.425,-21.2833,Oph,6,6/16,,, -Barnard 081,,3.0,Dark Neb,264.6375,-23.9333,Oph,6,6/16,,, -Barnard 082,,5.0,Dark Neb,264.6542,-23.7833,Oph,6,6/16,,, -Barnard 083,,7.0,Dark Neb,264.7417,-24.1833,Oph,6,6/16,,, -Barnard 083a,,4.0,Dark Neb,266.3292,-20.0167,Sgr,6,6/18,,, -Barnard 084,,60.0,Dark Neb,266.6042,-20.2667,Sgr,6,6/18,,, -Barnard 084a,,16.0,Dark Neb,269.4042,-17.6833,Sgr,6,6/21,,, -Barnard 085,,29.0,Dark Neb,270.6042,-23.0333,Sgr,6,6/22,HL,2800.0, -Barnard 086,Ink Spot,5.0,Dark Neb,270.7583,-27.8833,Sgr,6,6/22,L,1000.0, -Barnard 087,Parrot's Head Nebula,20.0,Dark Neb,271.0458,-32.5167,Sgr,6,6/23,L,1000.0, -Barnard 088,,2.0,Dark Neb,271.1458,-24.1333,Sgr,6,6/23,,, -Barnard 089,small,0.5,Dark Neb,271.25,-24.3667,Sgr,6,6/23,,, -Barnard 090,,3.0,Dark Neb,272.6,-28.3,Sgr,6,6/24,,, -Barnard 091,,5.0,Dark Neb,272.5333,-23.7167,Sgr,6,6/24,HL,2800.0, -Barnard 092,,40.0,Dark Neb,273.8958,-18.2333,Sgr,6,6/26,,, -Barnard 093,,90.0,Dark Neb,274.225,-18.0667,Sgr,6,6/26,,, -Barnard 094,,15.0,Dark Neb,276.475,-10.6833,Sct,6,6/28,,, -Barnard 095,,30.0,Dark Neb,276.4,-11.7667,Sct,6,6/28,,, -Barnard 096,,10.0,Dark Neb,276.6042,-10.3,Sct,6,6/28,,, -Barnard 097,,60.0,Dark Neb,277.275,-9.9333,Sct,6,6/29,,, -Barnard 098,,3.0,Dark Neb,278.3208,-26.0667,Sgr,6,6/30,,, -Barnard 099,,11.0,Dark Neb,278.325,-21.4833,Sgr,6,6/30,,, -Barnard 100,,16.0,Dark Neb,278.1708,-9.15,Sct,6,6/30,,, -Barnard 101,,13.0,Dark Neb,278.1667,-8.8167,Sct,6,6/30,,, -Barnard 102,,8.0,Dark Neb,279.425,-13.75,Sct,7,7/1,,, -Barnard 103,,35.0,Dark Neb,279.8583,-6.6833,Sct,7,7/2,L,1000.0, -Barnard 104,Dark Checkmark,16.0,Dark Neb,281.8333,-4.55,Sct,7,7/4,L,1000.0,146.0 -Barnard 105,small,1.0,Dark Neb,281.9375,-6.9333,Sct,7,7/4,,, -Barnard 106,,2.0,Dark Neb,282.2083,-5.0833,Sct,7,7/4,,, -Barnard 107,,30.0,Dark Neb,282.3792,-5.0167,Sct,7,7/4,,, -Barnard 108,,3.0,Dark Neb,282.3958,-6.3167,Sct,7,7/4,,, -Barnard 109,small,1.0,Dark Neb,282.4,-7.5667,Sct,7,7/4,,, -Barnard 110,,11.0,Dark Neb,282.5333,-4.8,Sct,7,7/4,,, -Barnard 111,,120.0,Dark Neb,282.6625,-4.9667,Sct,7,7/4,,, -Barnard 112,,18.0,Dark Neb,282.7875,-6.6833,Sct,7,7/5,,, -Barnard 113,,16.0,Dark Neb,282.8542,-4.3333,Sct,7,7/5,,, -Barnard 114,,6.0,Dark Neb,283.3,-6.9667,Sct,7,7/5,,, -Barnard 115,,7.0,Dark Neb,283.3333,-6.6833,Sct,7,7/5,,, -Barnard 116,,20.0,Dark Neb,283.3875,-7.2,Sct,7,7/5,,, -Barnard 117,small,1.0,Dark Neb,283.4333,-7.4333,Sct,7,7/5,,, -Barnard 117a,,7.0,Dark Neb,283.4292,-4.85,Sct,7,7/5,,, -Barnard 118,,2.0,Dark Neb,283.4833,-7.45,Sct,7,7/5,,, -Barnard 119,,2.0,Dark Neb,283.6542,-4.55,Sct,7,7/6,,, -Barnard 119a,,30.0,Dark Neb,283.6667,-5.1833,Sct,7,7/6,,, -Barnard 120,,2.0,Dark Neb,283.725,-4.6,Sct,7,7/6,,, -Barnard 121,,3.0,Dark Neb,283.8583,-4.6167,Sct,7,7/6,,, -Barnard 122,,4.0,Dark Neb,284.2042,-4.7667,Sct,7,7/6,,, -Barnard 123,,18.0,Dark Neb,284.4167,-4.7333,Sct,7,7/6,,, -Barnard 124,,3.0,Dark Neb,284.425,-4.3667,Sct,7,7/6,,, -Barnard 125,,9.0,Dark Neb,284.5917,-4.4,Sct,7,7/6,,, -Barnard 126,,8.0,Dark Neb,284.7625,-4.55,Sct,7,7/7,,, -Barnard 127,,5.0,Dark Neb,285.3833,-5.45,Sct,7,7/7,,, -Barnard 128,,10.0,Dark Neb,285.4208,-4.5833,Sct,7,7/7,,, -Barnard 129,,5.0,Dark Neb,285.5208,-5.3167,Sct,7,7/8,,, -Barnard 130,,7.0,Dark Neb,285.4875,-5.5833,Sct,7,7/7,,, -Barnard 131,,4.0,Dark Neb,285.5667,-4.3833,Sct,7,7/8,,, -Barnard 132,,16.0,Dark Neb,286.1167,-4.45,Aql,7,7/8,L,1000.0, -Barnard 133,,10.0,Dark Neb,286.5542,-6.9,Aql,7,7/8,L,1000.0, -Barnard 134,,6.0,Dark Neb,289.425,-6.2167,Aql,7,7/11,,, -Barnard 135,,13.0,Dark Neb,286.8875,-3.9333,Aql,7,7/9,,, -Barnard 136,,8.0,Dark Neb,287.2083,-4.0167,Aql,7,7/9,,, -Barnard 137,,5.0,Dark Neb,289.0042,-1.35,Aql,7,7/11,,, -Barnard 138,,200.0,Dark Neb,289.1,-0.2167,Aql,7,7/11,,, -Barnard 139,,30.0,Dark Neb,289.5042,-1.4167,Aql,7,7/11,L,1000.0, -Barnard 140,,60.0,Dark Neb,289.9542,5.2167,Aql,7,7/12,,, -Barnard 141,,20.0,Dark Neb,290.05,1.8833,Aql,7,7/12,,, -Barnard 142,,40.0,Dark Neb,294.925,10.5167,Aql,7,7/17,L,455.0, -Barnard 143,,40.0,Dark Neb,295.3542,11.0,Aql,7,7/17,L,455.0, -Barnard 144,,360.0,Dark Neb,314.675,35.3333,Cyg,8,8/6,,, -Barnard 145,,45.0,Dark Neb,300.7042,37.6833,Cyg,7,7/23,,, -Barnard 146,,7.0,Dark Neb,300.8708,36.0167,Cyg,7,7/23,,, -Barnard 147,,11.0,Dark Neb,301.7083,35.3667,Cyg,7,7/24,SHO,910.0, -Barnard 148,,5.0,Dark Neb,312.075,59.64,Cep,8,8/4,L,1000.0, -Barnard 149,,2.0,Dark Neb,312.2625,59.5333,Cep,8,8/4,,, -Barnard 150,Seahorse Nebula,60.0,Dark Neb,312.6708,60.3,Cep,8,8/4,L,1000.0, -Barnard 151,small,1.0,Dark Neb,317.0583,56.3167,Cep,8,8/8,,, -Barnard 152,,15.0,Dark Neb,318.625,61.7333,Cep,8,8/10,,, -Barnard 153,small,1.0,Dark Neb,320.2625,56.45,Cep,8,8/12,,, -Barnard 154,,8.0,Dark Neb,320.3458,56.6167,Cep,8,8/12,,, -Barnard 155,,13.0,Dark Neb,323.0333,44.9667,Cyg,8,8/14,,, -Barnard 156,,8.0,Dark Neb,323.4958,45.5833,Cyg,8,8/15,,, -Barnard 157,,5.0,Dark Neb,323.4208,54.6667,Cep,8,8/15,,, -Barnard 158,,3.0,Dark Neb,324.3042,43.4,Cyg,8,8/16,,, -Barnard 159,,25.0,Dark Neb,324.5917,43.2333,Cyg,8,8/16,,, -Barnard 160,,31.0,Dark Neb,324.4958,56.2333,Cep,8,8/16,,, -Barnard 161,,3.0,Dark Neb,325.0917,57.8167,Cep,8,8/17,,, -Barnard 162,,13.0,Dark Neb,325.2875,56.3167,Cep,8,8/17,,, -Barnard 163,,3.0,Dark Neb,325.5417,56.7,Cep,8,8/17,,, -Barnard 164,,20.0,Dark Neb,326.6292,51.0833,Cep,8,8/18,,, -Barnard 165,,18.0,Dark Neb,327.2333,60.2167,Cep,8,8/19,,, -Barnard 166,,5.0,Dark Neb,327.7708,60.0833,Cep,8,8/19,,, -Barnard 167,,5.0,Dark Neb,327.9917,60.0667,Cep,8,8/20,,, -Barnard 168,,10.0,Dark Neb,328.3333,47.2667,Cyg,8,8/20,H,1000.0, -Barnard 169,,60.0,Dark Neb,329.7208,58.7667,Cep,8,8/21,L,1000.0, -Barnard 170,,30.0,Dark Neb,329.5125,58.9667,Cep,8,8/21,L,1000.0, -Barnard 171,,60.0,Dark Neb,330.325,58.8667,Cep,8,8/21,L,1000.0, -Barnard 173,,4.0,Dark Neb,331.8667,59.6667,Cep,8,8/24,,, -Barnard 174,,19.0,Dark Neb,331.8292,59.0667,Cep,8,8/24,L,1000.0, -Barnard 201,,10.0,Dark Neb,33.2292,57.1,Cas,10,10/24,,, -Barnard 202,,33.0,Dark Neb,51.4042,30.2833,Ari,11,11/12,L,455.0, -Barnard 203,,20.0,Dark Neb,51.4542,30.7833,Ari,11,11/12,L,455.0, -Barnard 204,,14.0,Dark Neb,52.1167,30.2,Ari,11,11/12,L,455.0, -Barnard 205,,20.0,Dark Neb,52.125,31.1167,Per,11,11/12,L,455.0, -Barnard 206,,5.0,Dark Neb,52.2833,30.2,Ari,11,11/12,L,455.0, -Barnard 207,,2.0,Dark Neb,61.1417,26.35,Tau,11,11/21,,, -Barnard 208,,60.0,Dark Neb,62.8833,25.1667,Tau,11,11/23,L,1000.0, -Barnard 209,,10.0,Dark Neb,63.0917,28.3333,Tau,11,11/24,,, -Barnard 210,,3.0,Dark Neb,63.8833,25.0833,Tau,11,11/24,,, -Barnard 211,,50.0,Dark Neb,64.2958,27.8167,Tau,11,11/25,L,455.0, -Barnard 212,,5.0,Dark Neb,64.8083,25.3167,Tau,11,11/25,,, -Barnard 213,,15.0,Dark Neb,65.2917,27.0667,Tau,11,11/26,L,1000.0, -Barnard 214,,50.0,Dark Neb,65.4792,28.5667,Tau,11,11/25,L,455.0, -Barnard 215,,5.0,Dark Neb,65.8875,25.05,Tau,11,11/26,,, -Barnard 216,,20.0,Dark Neb,65.9958,26.6333,Tau,11,11/26,L,1000.0, -Barnard 217,,20.0,Dark Neb,66.9083,26.1333,Tau,11,11/26,L,1000.0, -Barnard 218,,20.0,Dark Neb,67.0333,26.3,Tau,11,11/26,L,1000.0, -Barnard 219,,55.0,Dark Neb,68.7083,29.6,Cam,11,11/29,,, -Barnard 220,,120.0,Dark Neb,70.3708,26.0,Tau,11,11/30,L,1000.0, -Barnard 221,,45.0,Dark Neb,71.0,31.75,Per,12,12/1,,, -Barnard 222,,10.0,Dark Neb,77.0958,32.1833,Aur,12,12/7,,, -Barnard 223,,8.0,Dark Neb,80.3667,8.3333,Ori,12,12/11,,, -Barnard 224,,20.0,Dark Neb,80.9792,10.6333,Ori,12,12/11,,, -Barnard 225,,35.0,Dark Neb,82.2417,11.6167,Ori,12,12/13,,, -Barnard 226,,17.0,Dark Neb,84.1417,33.7167,Aur,12,12/15,,, -Barnard 227,,12.0,Dark Neb,91.85,19.6667,Ori,12,12/23,,, -Barnard 228,Dark Wolf Nebula,240.0,Dark Neb,236.2333,-34.5167,Lup,5,5/18,L,455.0, -Barnard 229,,45.0,Dark Neb,244.4167,-27.3167,Sco,5,5/27,,, -Barnard 230,,60.0,Dark Neb,246.7875,-16.8,Oph,5,5/29,,, -Barnard 231,,30.0,Dark Neb,249.5958,-35.4333,Sco,6,6/1,,, -Barnard 232,,10.0,Dark Neb,250.9292,-39.8333,Sco,6,6/2,,, -Barnard 233,,55.0,Dark Neb,251.1833,-35.4167,Sco,6,6/2,,, -Barnard 234,,30.0,Dark Neb,251.6083,-30.5,Sco,6,6/3,,, -Barnard 235,,7.0,Dark Neb,251.7708,-44.5,Sco,6,6/3,,, -Barnard 236,,10.0,Dark Neb,252.2208,-29.8167,Sco,6,6/3,,, -Barnard 237,,15.0,Dark Neb,252.225,-29.9833,Sco,6,6/3,,, -Barnard 238,,13.0,Dark Neb,253.0875,-23.1333,Sco,6,6/4,,, -Barnard 239,,15.0,Dark Neb,253.7458,-31.1333,Sco,6,6/5,,, -Barnard 240,,20.0,Dark Neb,254.8208,-35.3667,Oph,6,6/6,,, -Barnard 241,,18.0,Dark Neb,254.8583,-30.2,Oph,6,6/6,,, -Barnard 242,,30.0,Dark Neb,256.275,-32.4333,Sco,6,6/8,,, -Barnard 243,,25.0,Dark Neb,257.4375,-29.5833,Oph,6,6/9,,, -Barnard 244,,30.0,Dark Neb,257.7125,-28.4167,Oph,6,6/9,,, -Barnard 245,,8.0,Dark Neb,257.9792,-29.4167,Oph,6,6/10,,, -Barnard 246,,15.0,Dark Neb,258.0042,-22.6667,Oph,6,6/10,,, -Barnard 247,,4.0,Dark Neb,258.275,-30.2667,Oph,6,6/10,,, -Barnard 248,,10.0,Dark Neb,258.2667,-29.0,Oph,6,6/10,,, -Barnard 249,,5.0,Dark Neb,258.2667,-29.1667,Oph,6,6/10,,, -Barnard 250,,15.0,Dark Neb,258.2542,-28.4167,Oph,6,6/10,,, -Barnard 251,,20.0,Dark Neb,258.45,-20.1667,Oph,6,6/10,,, -Barnard 252,Dolphin Dark Nebula,20.0,Dark Neb,258.825,-32.1667,Sco,6,6/10,L,1000.0,87.0 -Barnard 253,,60.0,Dark Neb,258.8792,-22.5667,Oph,6,6/10,,, -Barnard 254,,60.0,Dark Neb,260.1208,-30.15,Oph,6,6/11,,, -Barnard 255,,5.0,Dark Neb,260.1458,-23.4833,Oph,6,6/11,,, -Barnard 256,,50.0,Dark Neb,260.55,-28.8333,Oph,6,6/12,,, -Barnard 257,,15.0,Dark Neb,260.6917,-35.6333,Sco,6,6/12,,, -Barnard 258,,40.0,Dark Neb,260.7375,-34.7333,Oph,6,6/12,,, -Barnard 259,,30.0,Dark Neb,260.5042,-19.3,Oph,6,6/12,,, -Barnard 260,,12.0,Dark Neb,261.2042,-25.6333,Oph,6,6/13,,, -Barnard 261,,60.0,Dark Neb,261.2667,-23.05,Oph,6,6/13,L,455.0, -Barnard 262,,60.0,Dark Neb,261.3833,-22.6333,Oph,6,6/13,L,455.0, -Barnard 263,,30.0,Dark Neb,261.7333,-42.8,Sco,6,6/13,,, -Barnard 264,,10.0,Dark Neb,261.8,-25.5333,Oph,6,6/13,,, -Barnard 265,,18.0,Dark Neb,261.9,-25.2,Oph,6,6/13,,, -Barnard 266,,30.0,Dark Neb,262.0292,-20.95,Oph,6,6/13,,, -Barnard 267,,5.0,Dark Neb,262.1292,-25.2333,Oph,6,6/13,,, -Barnard 268,,100.0,Dark Neb,262.8583,-20.5333,Oph,6,6/14,,, -Barnard 269,,60.0,Dark Neb,263.0542,-22.7667,Oph,6,6/14,,, -Barnard 270,,11.0,Dark Neb,263.1792,-19.6,Oph,6,6/15,,, -Barnard 271,,120.0,Dark Neb,263.5667,-34.2667,Sco,6,6/15,,, -Barnard 272,,45.0,Dark Neb,264.4,-23.4167,Oph,6,6/15,,, -Barnard 273,,15.0,Dark Neb,264.6208,-33.35,Sco,6,6/16,,, -Barnard 274,,18.0,Dark Neb,264.5125,-22.7333,Oph,6,6/16,,, -Barnard 275,,13.0,Dark Neb,264.7458,-32.3333,Sco,6,6/16,,, -Barnard 276,,45.0,Dark Neb,264.9125,-19.8333,Oph,6,6/16,,, -Barnard 277,,18.0,Dark Neb,265.1875,-23.0833,Oph,6,6/17,,, -Barnard 278,,15.0,Dark Neb,265.6625,-32.3333,Sco,6,6/17,,, -Barnard 279,,60.0,Dark Neb,266.1375,-22.5667,Sgr,6,6/18,,, -Barnard 280,,60.0,Dark Neb,266.2375,-20.7333,Sgr,6,6/18,,, -Barnard 281,,30.0,Dark Neb,266.6958,-23.7333,Sgr,6,6/18,,, -Barnard 282,,18.0,Dark Neb,267.15,-23.4667,Sgr,6,6/19,,, -Barnard 283,,90.0,Dark Neb,267.8167,-33.8833,Sco,6,6/19,,, -Barnard 284,,35.0,Dark Neb,267.5292,-14.3833,Ser,6,6/19,,, -Barnard 285,,15.0,Dark Neb,267.6333,-12.8833,Ser,6,6/19,,, -Barnard 286,,15.0,Dark Neb,268.2625,-35.6333,Sco,6,6/20,,, -Barnard 287,,30.0,Dark Neb,268.6125,-35.2167,Sco,6,6/20,L,1000.0, -Barnard 288,,2.0,Dark Neb,269.275,-37.1,Sco,6,6/21,,, -Barnard 289,,35.0,Dark Neb,269.1542,-29.0333,Sco,6,6/21,,, -Barnard 290,,3.0,Dark Neb,269.8375,-37.1667,Sco,6,6/21,,, -Barnard 291,,5.0,Dark Neb,269.9292,-33.9167,Sgr,6,6/21,,, -Barnard 292,,60.0,Dark Neb,270.1417,-33.35,Sgr,6,6/22,,, -Barnard 293,,18.0,Dark Neb,270.3042,-35.35,Sco,6,6/22,,, -Barnard 294,,3.0,Dark Neb,270.375,-28.6167,Sgr,6,6/22,,, -Barnard 295,,50.0,Dark Neb,271.0208,-31.1833,Sgr,6,6/23,,, -Barnard 296,,6.0,Dark Neb,271.0167,-24.55,Sgr,6,6/23,,, -Barnard 297,,90.0,Dark Neb,271.0875,-18.7667,Sgr,6,6/23,,, -Barnard 298,,20.0,Dark Neb,271.2958,-30.1167,Sgr,6,6/23,L,1000.0, -Barnard 299,,3.0,Dark Neb,271.5833,-27.3,Sgr,6,6/23,,, -Barnard 300,,20.0,Dark Neb,271.7542,-32.6667,Sgr,6,6/23,,, -Barnard 301,,45.0,Dark Neb,272.2125,-18.7167,Sgr,6,6/24,,, -Barnard 302,,6.0,Dark Neb,272.3083,-23.9833,Sgr,6,6/24,HL,2800.0, -Barnard 303,,7.0,Dark Neb,272.3708,-24.0167,Sgr,6,6/24,HL,2800.0, -Barnard 304,,90.0,Dark Neb,273.3375,-18.7333,Sgr,6,6/25,,, -Barnard 305,,13.0,Dark Neb,273.6583,-31.8167,Sgr,6,6/26,,, -Barnard 306,,4.0,Dark Neb,273.9375,-25.7333,Sgr,6,6/26,,, -Barnard 307,,6.0,Dark Neb,274.6583,-17.9667,Sgr,6,6/26,,, -Barnard 308,,7.0,Dark Neb,274.7875,-22.25,Sgr,6,6/27,,, -Barnard 309,,5.0,Dark Neb,275.7875,-24.0333,Sgr,6,6/27,,, -Barnard 310,,2.0,Dark Neb,277.5542,-18.6,Sgr,6,6/29,,, -Barnard 311,,6.0,Dark Neb,277.6125,-17.6833,Sgr,6,6/29,,, -Barnard 312,,150.0,Dark Neb,278.0458,-15.5833,Sct,6,6/30,L,455.0, -Barnard 313,,15.0,Dark Neb,278.9875,-15.7,Sct,7,7/1,,, -Barnard 314,,35.0,Dark Neb,279.2708,-9.7333,Sct,7,7/1,,, -Barnard 315,,5.0,Dark Neb,280.5792,-20.05,Sgr,7,7/2,,, -Barnard 316,,6.0,Dark Neb,280.4625,-2.15,Aql,7,7/2,,, -Barnard 317,,30.0,Dark Neb,281.4417,-14.2167,Sct,7,7/3,,, -Barnard 318,,90.0,Dark Neb,282.4292,-6.4,Sct,7,7/4,,, -Barnard 319,,7.0,Dark Neb,282.9917,-1.2833,Aql,7,7/5,,, -Barnard 320,,15.0,Dark Neb,283.1958,-5.8667,Sct,7,7/5,,, -Barnard 321,,15.0,Dark Neb,283.5083,-11.3,Sct,7,7/5,,, -Barnard 322,,2.0,Dark Neb,283.9458,-4.4667,Sct,7,7/6,,, -Barnard 323,,17.0,Dark Neb,284.3917,-3.4333,Sct,7,7/6,,, -Barnard 324,,35.0,Dark Neb,284.8458,-3.0,Sct,7,7/7,,, -Barnard 325,,15.0,Dark Neb,284.975,-4.0667,Sct,7,7/7,,, -Barnard 326,,25.0,Dark Neb,285.8583,-0.4,Aql,7,7/8,,, -Barnard 327,,30.0,Dark Neb,286.1125,-5.15,Aql,7,7/8,,, -Barnard 328,,4.0,Dark Neb,286.2083,-4.2667,Aql,7,7/8,,, -Barnard 329,,6.0,Dark Neb,286.75,3.1833,Aql,7,7/9,,, -Barnard 330,,30.0,Dark Neb,289.8917,7.55,Aql,7,7/12,,, -Barnard 331,,60.0,Dark Neb,291.5167,7.5667,Aql,7,7/13,,, -Barnard 332,,20.0,Dark Neb,292.0042,8.75,Aql,7,7/14,,, -Barnard 333,,60.0,Dark Neb,292.2333,10.6667,Aql,7,7/14,,, -Barnard 334,,3.0,Dark Neb,293.775,12.3167,Aql,7,7/16,,, -Barnard 335,,6.0,Dark Neb,294.225,7.6,Aql,7,7/16,,, -Barnard 336,,2.0,Dark Neb,294.1708,12.3333,Aql,7,7/16,,, -Barnard 337,,3.0,Dark Neb,294.2542,12.3833,Aql,7,7/16,,, -Barnard 338,,8.0,Dark Neb,295.7625,7.45,Aql,7,7/18,,, -Barnard 339,,60.0,Dark Neb,296.0125,8.2833,Aql,7,7/18,,, -Barnard 340,,7.0,Dark Neb,297.1875,11.4,Aql,7,7/19,,, -Barnard 341,,30.0,Dark Neb,297.5042,34.2833,Cyg,7,7/20,,, -Barnard 342,,4.0,Dark Neb,302.3792,41.2,Cyg,7,7/24,,, -Barnard 343,,13.0,Dark Neb,303.3583,40.2667,Cyg,7,7/26,H,1000.0, -Barnard 344,,60.0,Dark Neb,304.0667,39.2167,Cyg,7,7/26,,, -Barnard 345,,15.0,Dark Neb,305.2542,46.55,Cyg,7,7/27,,, -Barnard 346,,10.0,Dark Neb,306.6917,43.7333,Cyg,7,7/29,,, -Barnard 347,,15.0,Dark Neb,307.1167,39.9167,Cyg,7,7/29,HL,1000.0, -Barnard 348,,60.0,Dark Neb,308.6083,42.0833,Cyg,7,7/31,,, -Barnard 349,,6.0,Dark Neb,311.85,43.95,Cyg,8,8/3,,, -Barnard 350,,3.0,Dark Neb,312.2792,45.8833,Cyg,8,8/4,,, -Barnard 351,,25.0,Dark Neb,313.1167,47.4,Cyg,8,8/4,,, -Barnard 352,,22.0,Dark Neb,314.2958,45.9,Cyg,8,8/6,L,1000.0, -Barnard 353,Bird's Nest,23.0,Dark Neb,314.3458,45.4833,Cyg,8,8/5,L,1000.0, -Barnard 354,,60.0,Dark Neb,314.5583,58.15,Cep,8,8/6,,, -Barnard 355,,5.0,Dark Neb,314.9083,43.1833,Cyg,8,8/6,,, -Barnard 356,,24.0,Dark Neb,314.9958,46.6833,Cyg,8,8/6,,, -Barnard 357,,30.0,Dark Neb,314.9667,55.5667,Cep,8,8/6,,, -Barnard 358,,20.0,Dark Neb,316.4208,43.2833,Cyg,8,8/7,,, -Barnard 359,,20.0,Dark Neb,316.6958,57.1667,Cep,8,8/8,,, -Barnard 360,,54.0,Dark Neb,316.9708,56.5,Cep,8,8/8,,, -Barnard 361,,20.0,Dark Neb,318.1917,47.4333,Cyg,8,8/9,,, -Barnard 362,,15.0,Dark Neb,320.9917,50.2,Cep,8,8/12,,, -Barnard 363,,40.0,Dark Neb,321.225,48.9333,Cep,8,8/13,,, -Barnard 364,,75.0,Dark Neb,323.5167,54.55,Cep,8,8/15,,, -Barnard 365,,22.0,Dark Neb,323.7208,56.7167,Cep,8,8/15,L,1000.0, -Barnard 366,,10.0,Dark Neb,325.0917,59.5667,Cep,8,8/17,,, -Barnard 367,,5.0,Dark Neb,326.1,57.1667,Cep,8,8/18,,, -Barnard 368,,14.0,Dark Neb,327.7292,58.9833,Cep,8,8/19,,, -Barnard 369,,5.0,Dark Neb,333.975,56.0167,Cep,8,8/26,,, -Barnard 370,,45.0,Dark Neb,338.7083,56.65,Cep,8,8/30,,, -Barnard's Star,High Proper Motion Star,0.05,Star,269.45,4.6667,Oph,6,6/21,,, -Berkeley 29,,3.7,Open Cl,103.275,16.9333,Gem,1,1/3,RGB,2800.0, -Berkeley 68 ,,45.0,Open Cl,71.0542,42.1339,Per,12,12/2,L,1000.0, -Bernes 149,Lupus 3,50.0,Dark Neb,242.4,-39.05,Sco,5,5/25,L,1000.0,162.0 -BFS 63,,12.0,HII Neb,104.25,-8.2,Mon,1,1/4,H,1000.0, -BoBn 1,,0.05,PN,9.325,-13.7167,Cet,9,9/30,L,2800.0, -Böhm-Vitense 5-1,,1.5,PN,4.9958,62.985,Cas,9,9/25,HOO,1000.0, -Böhm-Vitense 5-3,,0.5,PN,28.25,56.4,Per,10,10/19,HOO,2800.0, -Campbell's Star ,HD184738,0.2,PN,293.6875,30.5164,Cyg,7,7/16,RGB,2800.0, -Cannon 1-5,,7.0,PN,277.3083,-31.4981,Sgr,6,6/29,,, -Cas A,,4.8,SNR,350.8542,58.8,Cas,9,9/12,SHO,1000.0, -Cederblad 028,,45.0,Dark Neb,76.25,-4.15,Eri,12,12/7,,, -Cederblad 051,,45.0,HII Neb,83.0,12.1592,Ori,12,12/13,HL,1000.0, -Cederblad 211,R Aquarii,1.5,Nova,355.9417,-15.2786,Aql,9,9/17,HOO,2800.0,10.0 -CG 12,,4.0,Dark Neb,209.4125,-39.9783,Cen,4,4/21,L,1000.0, -CGCG 459-66,,1.0,Galaxy,22.5667,20.5997,Psc,10,10/13,,, -Chesire Cat,"Cassowary 02L1, Lensing Galaxy",0.5,Galaxy,159.6833,48.8217,UMa,3,3/2,L,2800.0, -Coalsack,Shadow of the Cross,420.0,Dark Neb,193.25,-63.0003,Cru,4,4/5,,, -Collinder 021,Texas Cluster,15.0,Asterism,27.5,27.0,Tri,10,10/18,RGB,910.0, -Collinder 069,Lambda Orionis Cluster,70.0,Open Cl,83.75,9.9333,Ori,12,12/14,RGB,455.0, -Collinder 070,Orion's Belt Asterism,150.0,Asterism,84.0,-1.0,Ori,12,12/15,RGB,327.0, -Collinder 399,Coathanger,60.0,Asterism,291.35,20.1833,Vul,7,7/13,RGB,327.0, -Collinder 463,Loch Ness Cluster,57.0,Open Cl,27.1,71.95,Cas,10,10/18,RGB,455.0, -Cr 249,Lambda Centauri Cluster,65.0,Open Cl,174.575,-63.3667,Cen,3,3/17,,, -CRL 618,,0.2,PPN,70.725,36.1167,Aur,12,12/1,HOO,2800.0, -CTSS 3,,10.0,PN,285.775,14.0667,Aql,7,7/8,,, -CW Tau,,3.0,YSO,63.5708,28.1831,Tau,11,11/25,L,455.0, -Cyg X-1,,0.05,Star,299.6,35.2,Cyg,7,7/22,,, -Cygnus Fairy Ring,Chaple's Arc,20.0,Asterism,301.0,38.1667,Cyg,7,7/23,RGB,1000.0, -Cygnus Kite Asterism,,12.0,Asterism,301.325,47.5333,Cyg,7,7/23,RGB,1000.0, -Cygnus Loop,Cygnus Loop,180.0,SNR,312.8375,31.1667,Cyg,8,8/4,HOO,455.0,5.0 -Dark Tower ,GN.43.7.01 ,15.0,HII Neb,251.4917,-41.2514,Sco,6,6/3,H,1000.0, -Dd 1,,0.3,PN,302.0167,42.3,Cyg,7,7/24,,, -DeHt 1,,2.0,PN,88.75,-22.5,Lep,12,12/19,HOO,2800.0, -DeHt 2,,1.5,PN,265.425,3.0667,Oph,6,6/17,,, -DeHt 3,,0.5,PN,289.275,-18.0167,Sgr,7,7/11,,, -DeHt 4,,2.0,PN,291.6125,13.3264,Aql,7,7/14,,, -DeHt 5,,9.0,PN,334.8917,70.9336,Cep,8,8/27,HOO,910.0, -Dobashi 0042,,30.0,Dark Neb,289.0125,-36.7739,Sgr,7,7/11,L,1000.0, -Dobashi 3771,,8.0,Dark Neb,17.25,59.5433,Cas,10,10/8,HL,2800.0, -DQ Her,,0.4,Nova,271.875,45.8589,Her,6,6/24,HOO,1000.0, -Dwingeloo 1,,3.0,Galaxy,44.2167,58.9117,Cas,11,11/4,L,2800.0, -Dwingeloo 2,,3.0,Galaxy,43.5333,59.0053,Cas,11,11/3,L,2800.0, -Ear Nebula,,6.0,PN,312.5542,46.9167,Cyg,8,8/4,,, -EGB 1,HDW 1,2.0,PN,16.775,73.55,Cas,10,10/7,HOO,2800.0, -EGB 4,,4.0,PN,97.3917,71.0769,Cam,12,12/28,,, -EGB 5,,3.0,PN,122.8,10.6,Cnc,1,1/23,,, -EGB 6,,12.0,PN,148.25,13.75,Leo,2,2/18,HOO,1000.0, -Egg Nebula,CRL 2688,0.5,PPN,315.575,36.7,Cyg,8,8/7,L,1000.0,51.0 -Einstein Cross,,2.0,Galaxy,340.125,3.3586,Peg,9,9/1,L,2800.0, -ESO 550-IG025,,45.0,Galaxy,65.3333,-18.8131,Eri,11,11/26,,, -ESO 603-21,,0.8,Galaxy,342.8417,-20.2461,Aql,9,9/3,L,2800.0, -ETHOS 1,,1.0,PN,289.125,36.1489,Lyr,7,7/11,,, -Ferrero 6,,1.0,PN,29.1083,65.4722,Cas,10,10/20,,, -Fishhook Galaxy,,4.0,Galaxy,125.9792,28.1075,Cnc,1,1/26,L,2800.0, -Fornax Dwarf,,1.0,Gal-Dwarf,39.75,-34.5667,For,10,10/31,RGB,1000.0, -Frosty Leo,,0.5,PPN,144.975,11.9817,Leo,2,2/15,RGB,2800.0, -FS Tau,,3.0,YSO,65.5083,26.9586,Tau,11,11/26,L,1000.0, -FU Ori,,3.0,YSO,86.3417,9.07,Ori,12,12/17,L,455.0, -G082.2+5.3,,60.0,SNR,304.6458,46.3203,Cyg,7,7/27,HOO,455.0, -G1,Mayall II,0.8,Glob Cl,8.2,39.5833,And,9,9/29,L,2800.0, -G100.4+04.6,PM 1-333,1.0,PN,325.0,58.9833,Cep,8,8/17,HOO,2800.0,13.0 -G206.9+2.3,,120.0,SNR,82.5,6.3,Ori,12,12/13,,, -GK Per,Firework Nebula,1.5,Nova,52.8,43.9042,Per,11,11/13,HOO,1000.0, -GM 1-29,Gyulbudaghian's Nebula,2.0,Ref Neb,311.475,67.7658,Cep,8,8/3,L,2800.0, -GN 04.41.8,,4.0,Ref Neb,71.3375,41.9783,Per,12,12/2,L,1000.0, -GN 06.16.4,,6.0,Ref Neb,94.8417,23.2747,Gem,12,12/26,L,1000.0, -GN 22.55.2,,10.0,HH,344.3,61.935,Cep,9,9/5,HL,2800.0, -Gum 02,,50.0,HII Neb,107.3333,-10.3467,Mon,1,1/7,H,327.0, -Gum 10,,35.0,HII Neb,124.075,-35.6328,Pup,1,1/24,,, -Gum 12,,2400.0,HII Neb,122.3792,-47.3367,Vel,1,1/23,,, -Gum 13,,7.0,HII Neb,125.475,-42.65,Vel,1,1/24,,, -Gum 14,,140.0,HII Neb,129.7917,-40.4167,Vel,1,1/30,,, -Gum 15,,20.0,HII Neb,130.9667,-41.2442,Vel,1,1/31,H,910.0, -Gum 16,,120.0,HII Neb,128.25,-44.1,Vel,1,1/29,,, -Gum 17,,100.0,HII Neb,132.75,-42.1333,Vel,2,2/2,,, -Gum 18,,15.0,HII Neb,132.95,-43.85,Vel,2,2/4,HOO,1000.0, -Gum 19,,4.0,HII Neb,134.1167,-43.0994,Vel,2,2/4,HOO,1000.0, -Gum 20,,5.0,HII Neb,134.7583,-43.7361,Vel,2,2/4,H,910.0, -Gum 21,WR14,16.0,HII Neb,133.7458,-47.5833,Vel,2,2/3,,, -Gum 22,,10.0,HII Neb,134.775,-47.5,Vel,2,2/4,H,1000.0, -Gum 23,,60.0,HII Neb,134.925,-47.45,Vel,2,2/4,H,1000.0, -Gum 24,,40.0,HII Neb,135.675,-48.3333,Vel,2,2/5,,, -Gum 25,,10.0,HII Neb,135.575,-48.6833,Vel,2,2/5,,, -Gum 26,,7.0,HII Neb,141.0,-51.9667,Vel,2,2/10,,, -Gum 27,,3.0,HII Neb,141.7625,-56.1058,Vel,2,2/11,,, -Gum 28,WR18,25.0,HII Neb,154.1375,-57.9333,Pup,2,2/24,,, -Gum 29,,13.0,HII Neb,156.075,-57.7828,Pup,2,2/26,,, -Gum 30,,30.0,HII Neb,158.9708,-68.2333,Pup,3,3/1,,, -Gum 31,,20.0,HII Neb,159.425,-58.6503,Pup,3,3/1,,, -Gum 32,,7.0,HII Neb,161.5,-58.65,Car,3,3/4,,, -Gum 34,,80.0,HII Neb,165.5,-59.5,Car,3,3/7,,, -Gum 35,,26.0,HII Neb,164.5,-61.2333,Car,3,3/6,,, -Gum 36,,9.0,HII Neb,168.0,-58.7833,Car,3,3/10,,, -Gum 37,,27.0,HII Neb,167.5,-60.0,Car,3,3/10,,, -Gum 38,,50.0,HII Neb,168.25,-61.2167,Car,3,3/10,,, -Gum 39,,23.0,HII Neb,172.0,-62.6167,Car,3,3/14,,, -Gum 40,,17.0,HII Neb,172.0,-62.9167,Car,3,3/14,,, -Gum 41,,17.0,HII Neb,172.5,-63.8167,Cen,3,3/14,,, -Gum 42,Running Chicken Nebula,72.0,Em Neb,174.5,-63.1833,Cen,3,3/17,,, -Gum 43,,2.0,HII Neb,188.5,-61.6333,Vel,3,3/31,,, -Gum 44,,2.0,HII Neb,188.5,-61.6833,Vel,3,3/31,,, -Gum 45,,5.0,PN,191.0,-62.5667,Cru,4,4/2,,, -Gum 46,,3.0,HII Neb,192.5,-61.5833,Cru,4,4/4,,, -Gum 47,Spiral Nebula,3.0,PN,203.25,-66.0,Cen,4,4/14,,, -Gum 48,,30.0,HII Neb,199.75,-62.5833,Cen,4,4/11,,, -Gum 49,Coffee Bean Nebula,9.0,HII Neb,238.75,-54.6333,Nor,5,5/20,,, -Gum 50,,5.0,HII Neb,239.75,-53.75,Nor,5,5/21,,, -Gum 51,,72.0,HII Neb,242.5,-49.1333,Nor,5,5/25,,, -Gum 52,,7.0,HII Neb,248.4667,-48.1111,Nor,5,5/31,H,2800.0, -Gum 54,,20.0,HII Neb,253.55,-45.2,Sco,6,6/5,,, -Gum 55,,420.0,HII Neb,250.5,-40.1,Sco,6,6/2,,, -Gum 57,,120.0,HII Neb,255.9917,-37.8442,Sco,6,6/7,,, -Gum 61,,15.0,Em Neb,259.9417,-36.0978,Sco,6,6/11,SHO,1000.0, -Gum 62,,15.0,Em Neb,259.9917,-35.9631,Sco,6,6/11,SHO,1000.0, -Gum 63,,15.0,Em Neb,259.875,-35.71,Sco,6,6/11,SHO,1000.0, -Gum 64,,60.0,Em Neb,260.025,-35.9667,Sco,6,6/11,SHO,1000.0, -Gum 65,,80.0,HII Neb,245.2958,-25.5928,Sco,5,5/27,RGB,455.0, -Gum 67,,120.0,HII Neb,263.675,-32.5817,Sco,6,6/15,,, -Gum 68,,40.0,HII Neb,262.6,-31.55,Sco,6,6/14,,, -Gum 73,,24.0,HII Neb,269.5417,-23.4672,Oph,6,6/21,,, -Gum 74,,40.0,HII Neb,270.25,-23.3333,Sgr,6,6/22,,, -Gum 75,,35.0,Open Cl,272.3208,-23.9875,Sgr,6,6/24,HL,2800.0, -Gum 85,Egg Nebula,5.0,HII Neb,274.475,-11.7333,Ser,6,6/26,H,2800.0, -Gyulbudaghian 98-171,,2.0,Ref Neb,315.975,50.2528,Cyg,8,8/7,L,2800.0, -H 2-08,,0.5,PN,261.1917,-21.56,Oph,6,6/13,,, -H 2-16,,0.3,PN,264.975,-21.1333,Oph,6,6/17,,, -H 3-29,,0.3,PN,69.35,25.0456,Tau,11,11/30,HOO,2800.0, -H 3-75,,0.5,PN,85.175,12.35,Ori,12,12/16,HOO,2800.0, -H 4-01,,0.1,PN,194.875,27.6333,Com,4,4/6,,, -HaTr 10,,0.5,PN,282.6,-1.4,Aql,7,7/4,,, -HaTr 11,,1.0,PN,285.7458,3.0392,Aql,7,7/8,,, -HaTr 13,,0.3,PN,287.0,2.2,Aql,7,7/9,,, -HaTr 14,,0.3,PN,287.3,7.0667,Aql,7,7/9,,, -Hb 04,,0.6,PN,265.4708,-24.7022,Oph,6,6/17,,, -Hb 05,,0.1,PN,266.9833,-29.995,Sgr,6,6/19,,, -Hb 12,Bi-polar,0.2,PN,351.5625,58.1819,Cas,9,9/13,,, -HBC 547,,3.0,YSO,104.9208,-7.7775,Mon,1,1/5,L,1000.0, -HDW 03,,9.0,PN,51.8125,45.4056,Per,11,11/12,,, -HDW 05,,1.5,PN,95.9,-10.2167,Mon,12,12/27,HOO,2800.0, -HDW 07,,1.5,PN,118.8,9.3333,CMi,1,1/19,,, -HDW 08,,0.4,PN,262.95,-28.4,Oph,6,6/14,,, -HDW 11,,0.8,PN,292.775,-3.4,Aql,7,7/15,,, -HDW 12,,0.8,PN,299.55,-26.2667,Sgr,7,7/22,,, -He 1-004,,0.4,PN,299.825,31.55,Cyg,7,7/22,,, -He 1-005,,0.2,PPN,302.9833,20.3347,Sge,7,7/25,HOO,2800.0, -He 1-006,,0.3,PN,304.35,25.25,Vul,7,7/27,,, -He 2-428,,0.3,PN,288.275,15.4833,Aql,7,7/10,,, -He 2-436,,0.2,PN,293.025,-34.2167,Sgr,7,7/15,,, -Hf 2-2,,0.3,PN,278.125,-28.4167,Sgr,6,6/30,,, -HFG 1,Heckathorn-Fesen-Gull 1,9.0,PN,45.25,64.9667,Cas,11,11/5,HOO,1000.0, -HH 002,,1.0,HH,84.1042,-6.7158,Ori,12,12/15,H,1000.0, -HH 012,,2.0,Ref Neb,52.3333,31.4156,Per,11,11/12,L,455.0, -HH 100,,1.0,HH,285.4083,-36.8917,CrA,7,7/7,L,1000.0, -HH 124,,2.0,HII Neb,100.2417,9.895,Mon,12,12/31,HL,1000.0, -HH 161,,2.0,HH,2.8583,58.8244,Cas,9,9/23,L,1000.0, -HH 162,,2.0,HH,2.8625,58.8344,Cas,9,9/23,L,1000.0, -HH 168,,3.0,HH,344.075,62.0297,Cep,9,9/5,HL,2800.0, -HH 215,,2.0,HH,311.475,67.7658,Cep,8,8/3,L,2800.0, -HH 222,Waterfall Nebula,3.0,HH,83.925,-6.3842,Ori,12,12/15,H,1000.0, -HH 264,,1.0,HH,67.825,18.1,Tau,11,11/28,L,1000.0, -HH 398,,2.0,HH,339.5542,41.09,Lac,8,8/31,HL,455.0, -HH 555,,3.0,HH,312.75,44.4017,Cyg,8,8/4,SHO,2800.0, -Hickson 001,,2.9,Gal Group,6.5,25.7181,And,9,9/27,L,2800.0, -Hickson 002,,7.1,Gal Group,7.875,8.4311,Psc,9,9/28,L,2800.0, -Hickson 003,,3.8,Gal Group,8.5458,-7.5931,Cet,9,9/29,,, -Hickson 004,,3.6,Gal Group,8.5625,-21.4467,Cet,9,9/29,,, -Hickson 005,,1.6,Gal Group,9.7208,7.0636,Psc,9,9/30,,, -Hickson 006,,1.6,Gal Group,9.7917,-8.3956,Cet,9,9/30,,, -Hickson 007,,5.7,Gal Group,9.85,0.8781,Cet,9,9/30,L,2800.0, -Hickson 008,,1.2,Gal Group,12.4042,23.5808,And,10,10/3,,, -Hickson 009,,2.1,Gal Group,13.575,-23.5514,Cet,10,10/4,L,2800.0, -Hickson 010,,10.9,Gal Group,21.5917,34.7028,And,10,10/12,L,1000.0, -Hickson 011,,4.9,Gal Group,21.6417,-23.2314,Cet,10,10/12,L,2800.0, -Hickson 012,,2.6,Gal Group,21.8917,-4.6706,Cet,10,10/12,,, -Hickson 013,,2.5,Gal Group,23.0917,-7.8811,Cet,10,10/14,,, -Hickson 014,,6.7,Gal Group,29.95,-7.0286,Cet,10,10/21,L,2800.0, -Hickson 015,,7.7,Gal Group,31.9125,2.1383,Cet,10,10/23,L,2800.0, -Hickson 017,,1.0,Gal Group,33.525,13.3133,Ari,10,10/24,,, -Hickson 019,,3.1,Gal Group,40.6875,-12.4119,Cet,11,11/1,,, -Hickson 020,,1.5,Gal Group,41.0625,26.1031,Ari,11,11/1,,, -Hickson 021,,10.8,Gal Group,41.325,-17.6194,Eri,11,11/1,L,2800.0, -Hickson 022,,10.5,Gal Group,45.8792,-15.6758,Eri,11,11/6,L,2800.0, -Hickson 023,,7.1,Gal Group,46.775,-9.5856,Eri,11,11/7,L,2800.0, -Hickson 024,,2.4,Gal Group,50.0792,-10.8647,Eri,11,11/10,,, -Hickson 025,,6.4,Gal Group,50.1833,-1.0519,Cet,11,11/10,L,2800.0, -Hickson 026,,1.9,Gal Group,50.475,-13.6458,Eri,11,11/11,L,2800.0, -Hickson 027,,3.8,Gal Chain,64.8375,-11.7097,Eri,11,11/25,L,2800.0, -Hickson 028,,1.2,Gal Group,66.8292,-10.3167,Eri,11,11/27,L,2800.0, -Hickson 029,,0.8,Gal Group,68.6917,-30.5472,Eri,11,11/29,L,2800.0, -Hickson 030,,4.5,Gal Group,69.1208,-2.8325,Eri,11,11/29,L,2800.0, -Hickson 032,,3.0,Gal Group,75.4292,-15.42,Lep,12,12/6,L,2800.0, -Hickson 033,,2.1,Gal Group,77.7,18.0347,Tau,12,12/8,,, -Hickson 035,,2.2,Gal Group,131.3292,44.5217,Lyn,2,2/1,L,2800.0, -Hickson 036,,1.9,Gal Group,137.35,15.7956,Cnc,2,2/7,,, -Hickson 037,,3.2,Gal Group,138.4,30.0142,Cnc,2,2/8,,, -Hickson 039,,1.0,Gal Group,142.3708,-1.3444,Hya,2,2/12,,, -Hickson 041,,4.1,Gal Group,149.4167,45.2394,UMa,2,2/19,,, -Hickson 042,,6.0,Gal Group,150.0917,-19.6492,Hya,2,2/20,,, -Hickson 043,,3.5,Gal Group,152.8083,-0.0317,Sex,2,2/23,,, -Hickson 045,,3.4,Gal Group,154.7958,59.1097,UMa,2,2/25,,, -Hickson 046,,3.6,Gal Group,155.5083,17.815,Leo,2,2/25,,, -Hickson 047,,2.3,Gal Group,156.45,13.7317,Leo,2,2/26,,, -Hickson 048,,5.0,Gal Group,163.95,-27.0872,Hya,3,3/6,,, -Hickson 049,,0.9,Gal Group,164.15,67.1792,UMa,3,3/6,,, -Hickson 050,,0.7,Gal Group,169.275,54.9186,UMa,3,3/11,,, -Hickson 051,,4.5,Gal Group,170.5875,24.2931,Leo,3,3/13,,, -Hickson 052,,3.2,Gal Group,171.5792,21.0892,Leo,3,3/14,,, -Hickson 053,,12.9,Gal Group,172.2417,20.7764,Leo,3,3/14,,, -Hickson 054,,0.7,Gal Group,172.3125,20.5786,Leo,3,3/14,,, -Hickson 058,,8.8,Gal Group,175.55,10.3169,Leo,3,3/18,,, -Hickson 059,,2.1,Gal Group,177.1083,12.7264,Leo,3,3/19,,, -Hickson 060,,2.3,Gal Group,180.7708,51.6931,UMa,3,3/23,,, -Hickson 061,The Box,3.8,Gal Group,183.1,29.1778,Com,3,3/25,L,1000.0,111.0 -Hickson 062,,3.7,Gal Group,193.2833,-9.2239,Vir,4,4/5,,, -Hickson 063,,2.9,Gal Group,195.5417,-32.7681,Cen,4,4/7,L,2800.0, -Hickson 064,,1.7,Gal Group,201.4292,-3.8578,Vir,4,4/13,,, -Hickson 065,,1.7,Gal Group,202.475,-29.4994,Hya,4,4/14,,, -Hickson 066,,1.0,Gal Group,204.6375,57.3044,UMa,4,4/16,,, -Hickson 067,,3.3,Gal Group,207.2625,-7.2053,Vir,4,4/19,,, -Hickson 068,,9.1,Gal Group,208.4208,40.4853,CVn,4,4/20,L,1000.0, -Hickson 069,,1.9,Gal Group,208.8792,25.0628,Boo,4,4/21,L,2800.0, -Hickson 070,,3.4,Gal Group,211.0542,33.3278,CVn,4,4/23,,, -Hickson 071,,5.0,Gal Group,212.7667,25.485,Boo,4,4/25,,, -Hickson 074,,1.9,Gal Group,229.8667,20.8936,Ser,5,5/12,,, -Hickson 075,,2.2,Gal Group,230.3917,21.1833,Ser,5,5/13,L,2800.0, -Hickson 076,,3.3,Gal Group,232.925,7.3081,Ser,5,5/15,L,2800.0, -Hickson 077,,0.8,Gal Group,237.3208,21.8283,Ser,5,5/19,L,2800.0, -Hickson 078,,3.5,Gal Group,237.1167,68.2078,Dra,5,5/19,L,2800.0, -Hickson 080,,1.7,Gal Group,239.8,65.2258,Dra,5,5/22,L,2800.0, -Hickson 081,,0.9,Gal Group,244.5542,12.7942,Her,5,5/27,,, -Hickson 082,,3.1,Gal Group,247.0917,32.8236,Her,5,5/29,L,2800.0, -Hickson 083,,1.9,Gal Group,248.9208,6.27,Her,5,5/31,,, -Hickson 084,,2.4,Gal Group,251.0333,77.8361,UMi,6,6/2,L,2800.0, -Hickson 085,,1.3,Gal Group,282.5917,73.35,Dra,7,7/4,L,2800.0, -Hickson 086,,4.0,Gal Group,297.9958,-30.8261,Sgr,7,7/20,L,2800.0, -Hickson 087,,1.5,Gal Group,312.05,-19.8408,Cap,8,8/3,L,2800.0, -Hickson 088,,5.2,Gal Group,313.0958,-5.7581,Aql,8,8/4,L,1000.0, -Hickson 089,,4.8,Gal Group,320.0458,-3.9092,Aql,8,8/12,L,2800.0, -Hickson 090,,7.4,Gal Group,330.5375,-31.9903,PsA,8,8/22,L,2800.0, -Hickson 091,,5.2,Gal Group,332.3,-27.7761,PsA,8,8/24,L,1000.0, -Hickson 097,,5.2,Gal Group,356.8625,-2.3056,Psc,9,9/18,L,2800.0, -Hickson 099,,2.4,Gal Group,0.1833,28.3889,Peg,9,9/20,L,2800.0, -Hickson 100,,3.6,Gal Group,0.3375,13.1325,Peg,9,9/21,L,2800.0, -HK Ori,,3.0,YSO,82.875,12.1528,Ori,12,12/13,HL,1000.0, -Hoag's Object,,0.3,Galaxy,229.3083,21.5856,Ser,5,5/11,L,1000.0, -Holmberg 124,,20.0,Gal Group,140.3,64.2131,UMa,2,2/10,L,1000.0, -HP 1,Haute Provence 1,2.0,Glob Cl,262.775,-29.9833,Oph,6,6/14,RGB,1000.0, -HP Tau,V1025 Tau,3.0,YSO,68.975,22.9039,Tau,11,11/29,L,1000.0,73.0 -Hu 1-2,Baby Dumbbell,0.5,PN,323.275,39.6333,Cyg,8,8/15,RGB,1000.0, -Hubble Deep Field,not resolvable,10.0,Gal Clus,189.2042,62.2161,UMa,4,4/1,L,1000.0, -IC 0010,,5.1,Gal-Dwarf,5.1,59.2928,Cas,9,9/25,HL,1000.0, -IC 0063,Gamma Cassiopeia Nebula,20.0,HII Neb,14.8708,60.9117,Cas,10,10/5,H,2800.0,108.0 -IC 0171,,2.5,Galaxy,28.7917,35.2811,Tri,10,10/19,,, -IC 0200,,1.5,Galaxy,31.3625,31.1761,Tri,10,10/22,,, -IC 0226,,2.3,Gal-Ell,36.9417,28.2089,Tri,10,10/28,L,2800.0, -IC 0227,,2.3,Gal-Ell,37.0167,28.1753,Tri,10,10/28,L,2800.0, -IC 0239,,4.0,Galaxy,39.1167,38.9689,And,10,10/30,L,1000.0, -IC 0277,,1.6,Galaxy,44.9625,2.7711,Cet,11,11/5,,, -IC 0289,,0.75,PN,47.5792,61.3169,Cas,11,11/8,HOO,2800.0, -IC 0310,,1.6,Galaxy,49.1792,41.3247,Per,11,11/9,,, -IC 0311,,1.9,Galaxy,49.1958,40.0036,Per,11,11/9,L,2800.0, -IC 0334,,6.0,Galaxy,56.3208,76.6375,Cam,11,11/16,L,1000.0, -IC 0342,Star Veiled Galaxy,21.0,Galaxy,56.7042,68.0961,Cam,11,11/17,L,1000.0, -IC 0348,,40.0,Open Cl,56.1417,32.1628,Per,11,11/16,L,1000.0, -IC 0351,,0.1,PN,56.8875,35.0467,Per,11,11/17,RGB,2800.0, -IC 0391,,1.7,Galaxy,74.3417,78.1897,Cam,12,12/5,,, -IC 0405,Flaming Star Nebula,60.0,Em Neb,79.1208,34.3567,Aur,12,12/10,H,455.0,81.0 -IC 0410,Tadpole Emission Nebula,40.0,Em Neb,80.6833,33.4167,Aur,12,12/11,SHO,1000.0,84.0 -IC 0412,,1.6,Galaxy,80.4875,3.4861,Ori,12,12/11,L,2800.0, -IC 0414,,1.6,Galaxy,80.4792,3.3417,Ori,12,12/11,L,2800.0, -IC 0417,Spider Nebula,13.0,Em Neb,82.025,34.4233,Aur,12,12/13,SHO,1000.0,136.0 -IC 0418,Spirograph Nebula,0.25,PN,81.8667,-12.6972,Lep,12,12/12,RGB,1000.0, -IC 0421,,2.0,Galaxy,83.0375,-7.9181,Ori,12,12/14,L,2800.0, -IC 0426,Miniature Witch's Head Nebula,5.0,Ref Neb,84.1292,-0.2983,Ori,12,12/15,L,1000.0, -IC 0434,Horsehead and Flame Nebula,30.0,Dark Neb,85.25,-2.4533,Ori,12,12/16,H,1000.0,2.0 -IC 0443,Jellyfish Nebula,60.0,SNR,94.15,22.5167,Gem,12,12/25,HOO,1000.0,30.0 -IC 0444,,6.0,Ref Neb,94.6417,23.3133,Gem,12,12/26,L,1000.0, -IC 0447,,60.0,Ref Neb,97.7792,9.8667,Mon,12,12/29,L,1000.0, -IC 0467,,7.0,Galaxy,112.5792,79.8725,Cam,1,1/12,L,1500.0, -IC 0469,,2.3,Galaxy,118.9958,85.1589,Cep,1,1/19,,, -IC 0520,,2.3,Galaxy,133.425,73.4908,Cam,2,2/3,L,2800.0, -IC 0529,,3.7,Galaxy,139.6375,73.7594,Cam,2,2/9,,, -IC 0603,,2.0,Galaxy,154.8542,-5.6564,Sex,2,2/25,,, -IC 0614,,0.7,Galaxy,156.7167,-3.4653,Sex,2,2/27,,, -IC 0658,,0.3,Galaxy,164.5667,8.2417,Leo,3,3/7,,, -IC 0673,,4.0,Galaxy,167.3542,-0.0986,Leo,3,3/9,,, -IC 0676,,2.2,Galaxy,168.1667,9.0558,Leo,3,3/10,,, -IC 0696,,1.0,Galaxy,172.1667,9.0986,Leo,3,3/14,,, -IC 0698,,1.0,Galaxy,172.2667,9.1122,Leo,3,3/14,,, -IC 0716,,1.7,Galaxy,174.7625,-0.2061,Vir,3,3/17,,, -IC 0749,,2.5,Galaxy,179.6417,42.7342,UMa,3,3/22,,, -IC 0755,,2.7,Galaxy,180.2917,14.1044,Com,3,3/23,,, -IC 0769,,2.5,Galaxy,183.1333,12.1231,Vir,3,3/25,,, -IC 0791,,0.7,Galaxy,186.7458,22.6394,Com,3,3/29,,, -IC 1015,,0.6,Galaxy,217.0792,15.4194,Boo,4,4/29,,, -IC 1029,,3.0,Galaxy,218.1125,49.9042,Boo,4,4/30,L,2800.0, -IC 1066,,1.6,Galaxy,223.2625,3.2956,Vir,5,5/5,,, -IC 1151,,3.0,Galaxy,239.6333,17.4419,Ser,5,5/22,,, -IC 1168,,0.5,Galaxy,240.9833,14.9019,Ser,5,5/23,L,2800.0, -IC 1182,,0.6,Galaxy,241.4042,17.8017,Her,5,5/24,L,2800.0, -IC 1192,,1.0,Galaxy,241.6375,17.7756,Her,5,5/24,,, -IC 1197,,2.8,Galaxy,242.0708,7.5386,Ser,5,5/24,,, -IC 1261,,2.0,Galaxy,260.8583,71.2628,Dra,6,6/12,L,2800.0, -IC 1276,,7.1,Glob Cl,272.6875,-7.2128,Ser,6,6/24,,, -IC 1291,,2.4,Galaxy,278.4667,49.2786,Dra,6,6/30,L,2800.0, -IC 1295,,2.0,PN,283.6542,-8.8267,Sct,7,7/6,HOO,2800.0, -IC 1318,Gamma Cygni Nebula,240.0,Em Neb,305.5583,40.2567,Cyg,7,7/28,SHO,327.0,173.0 -IC 1318b,,240.0,HII Neb,304.2833,41.9575,Cyg,7,7/26,H,1000.0, -IC 1369,,120.0,Open Cl,318.0375,47.7683,Cyg,8,8/9,,, -IC 1370,,4.0,Gal Chain,318.8083,2.1919,Aql,8,8/10,L,2800.0, -IC 1396,Elephant Trunk,40.0,Em Neb,324.7417,57.4892,Cep,8,8/16,SHO,2800.0,17.0 -IC 1413,,60.0,Galaxy,329.6125,-3.1031,Aql,8,8/21,,, -IC 1433,,2.0,Galaxy,333.0417,-12.7656,Aql,8,8/25,,, -IC 1434,,0.4,Open Cl,332.675,52.85,Lac,8,8/24,,, -IC 1438,,8.0,Galaxy,334.1208,-21.4314,Aql,8,8/26,L,2800.0, -IC 1459,IC 5265,0.6,Galaxy,344.2958,-36.4625,Gru,9,9/5,,, -IC 1464,,5.0,Galaxy,345.8,-8.9908,Aql,9,9/7,L,2800.0, -IC 1498,,2.0,Galaxy,352.975,-5.0067,Aql,9,9/14,,, -IC 1501,,1.4,Galaxy,353.6667,-3.1531,Psc,9,9/15,,, -IC 1510,,1.0,Galaxy,357.6375,2.0731,Psc,9,9/19,,, -IC 1515,,0.6,Galaxy,359.0167,-0.9889,Psc,9,9/20,,, -IC 1537,,1.2,Galaxy,3.9542,-39.2608,Scl,9,9/24,,, -IC 1551,,2.0,Galaxy,6.8958,8.8772,Psc,9,9/27,L,2800.0, -IC 1558,,2.7,Galaxy,8.9458,-25.3747,Scl,9,9/29,,, -IC 1565,,3.4,Galaxy,9.8583,6.7339,Psc,9,9/30,,, -IC 1613,,2.0,Gal-Dwarf,16.1958,2.1186,Cet,10,10/7,HL,1000.0, -IC 1689,,2.0,Galaxy,20.95,33.0547,Psc,10,10/11,,, -IC 1727,"Triangulum Duo, Shrimp Galaxy",6.6,Galaxy,26.875,27.3333,Tri,10,10/18,L,2800.0, -IC 1747,,0.2,PN,29.4,63.3217,Cas,10,10/20,L,2800.0, -IC 1795,Fishhead Nebula,30.0,Em Neb,36.6333,62.0414,Cas,10,10/27,SHO,1000.0,171.0 -IC 1805,Heart Nebula,120.0,Em Neb,38.1958,61.475,Cas,10,10/29,SHO,1000.0,20.0 -IC 1830,,60.0,Galaxy,39.7667,-27.4439,For,10,10/31,,, -IC 1848,Soul Nebula,1.8,Em Neb,42.825,60.4083,Cas,11,11/3,SHO,1000.0,60.0 -IC 1870,,60.0,Galaxy,44.475,-2.3469,Eri,11,11/4,L,2800.0, -IC 2003,,0.1,PN,59.0917,33.875,Per,11,11/19,HOO,2800.0, -IC 2067,,4.0,Ref Neb,67.7125,35.4461,Per,11,11/28,,, -IC 2087,,5.0,Dark Neb,70.0,25.7422,Tau,11,11/30,L,2800.0, -IC 2118,Witch Head Nebula,240.0,Ref Neb,76.225,-7.25,Eri,12,12/7,L,327.0,83.0 -IC 2149,,0.25,PN,89.1,46.1047,Aur,12,12/20,RGB,1000.0, -IC 2157,,7.0,Open Cl,91.2,24.065,Gem,12,12/22,,, -IC 2165,,0.1,PN,95.4292,-12.9869,CMa,12,12/26,,, -IC 2177,Head of Seagull Nebula,40.0,HII Neb,106.1042,-10.4536,Mon,1,1/6,HL,2800.0, -IC 2184,,1.3,Galaxy,112.3583,72.1294,Cam,1,1/12,L,2800.0, -IC 2221,,6.0,Galaxy,121.2833,37.4503,Lyn,1,1/22,,, -IC 2233,,4.7,Galaxy,123.4958,45.7425,Lyn,1,1/24,L,910.0, -IC 2247,,0.4,Galaxy,123.9958,23.1994,Cnc,1,1/24,L,2800.0, -IC 2248,,0.4,Galaxy,124.0208,23.1342,Cnc,1,1/24,L,2800.0, -IC 2375,,1.5,Gal Group,126.5833,-13.3031,Pup,1,1/27,L,2800.0, -IC 2391,Omicron Velorum Cluster,70.0,Open Cl,130.075,-52.9167,Vel,1,1/31,RGB,455.0, -IC 2431,,0.6,Galaxy,136.1458,14.5947,Cnc,2,2/6,L,2800.0, -IC 2488,,18.0,Open Cl,141.85,-56.95,Vel,2,2/12,,, -IC 2497,Hanny's Voorwerp,1.0,Galaxy,145.2667,34.7261,Lmi,2,2/15,,, -IC 2520,,0.7,Galaxy,149.0833,27.2278,Leo,2,2/19,L,2800.0, -IC 2533,,1.7,Galaxy,150.1292,-31.2447,Ant,2,2/20,,, -IC 2545,,1.0,Galaxy,151.65,-33.855,Ant,2,2/21,,, -IC 2574,Coddington's Nebula,12.3,Gal-Dwarf,157.0917,68.4136,UMa,2,2/27,L,1000.0, -IC 2602,Theta Carinae Cluster,100.0,Open Cl,160.725,-64.4,Car,3,3/3,,, -IC 2627,,2.7,Galaxy,167.4708,-23.7264,Crt,3,3/10,L,2800.0, -IC 2810,,1.0,Galaxy,171.4375,14.6767,Leo,3,3/14,,, -IC 3476,,2.2,Galaxy,188.175,14.05,Com,3,3/31,,, -IC 3568,Lemon Slice Nebula ,0.3,PN,188.2792,82.5636,Cam,3,3/31,RGB,1500.0, -IC 3799,,4.2,Galaxy,192.2458,-14.3992,Crv,4,4/4,,, -IC 4290,,80.0,Galaxy,203.8333,-28.0219,Hya,4,4/16,,, -IC 4329,,5.6,Galaxy,207.2708,-30.2967,Cen,4,4/19,,, -IC 4351,,0.5,Galaxy,209.475,-29.3153,Hya,4,4/21,,, -IC 4406,"Retina, Box Nebula",3.0,PN,215.6083,-44.1511,Lup,4,4/28,RGB,1000.0, -IC 4592,"Blue Horsehead Nebula, Jabbah",120.0,Ref Neb,242.9958,-19.4567,Sco,5,5/25,L,327.0,86.0 -IC 4593,White Eyed Pea ,0.25,PN,242.9333,12.0719,Her,5,5/25,RGB,2800.0, -IC 4601,,60.0,Ref Neb,245.075,-20.0817,Sco,5,5/27,L,327.0, -IC 4628,Prawn Nebula,30.0,Em Neb,254.2417,-40.4567,Sco,6,6/6,SHO,1000.0,153.0 -IC 4634,,0.2,PN,255.3917,-21.8258,Oph,6,6/7,,, -IC 4665,Summer Beehive,41.0,Open Cl,266.625,5.65,Oph,6,6/18,RGB,1000.0, -IC 4685,,35.0,Open Cl,272.325,-23.9878,Sgr,6,6/24,HL,2800.0, -IC 4701,,100.0,Em Neb,274.15,-16.6333,Sgr,6,6/26,,, -IC 4756,,52.0,Open Cl,279.725,5.45,Ser,7,7/2,RGB,1000.0, -IC 4776,,0.1,PN,281.4625,-33.3433,Sgr,7,7/3,,, -IC 4954,,25.0,Ref Neb,301.1875,29.2528,Vul,7,7/23,L,1000.0, -IC 4996,,6.0,Open Cl,304.15,37.55,Cyg,7,7/26,,, -IC 5011,IC5013,2.2,Gal-Lent,307.1417,-36.0269,Mic,7,7/29,L,2800.0, -IC 5020,,3.0,Galaxy,307.6583,-33.4853,Mic,7,7/30,L,2800.0, -IC 5039,,1.9,Galaxy,310.8083,-29.8528,Mic,8,8/2,L,2800.0, -IC 5041,,1.9,Galaxy,310.8917,-29.7,Mic,8,8/2,L,2800.0, -IC 5068,,40.0,HII Neb,312.6208,42.4783,Cyg,8,8/4,H,1000.0, -IC 5070,Pelican Nebula,80.0,Em Neb,312.7542,44.4014,Cyg,8,8/4,SHO,1000.0,35.0 -IC 5076,,9.0,Ref Neb,313.8875,47.395,Cyg,8,8/5,L,1000.0, -IC 5117,,0.1,PN,323.1292,44.5967,Cyg,8,8/15,,, -IC 5146,Cocoon Nebula,120.0,HII Neb,328.3708,47.2669,Cyg,8,8/20,H,1000.0,118.0 -IC 5148,Spare Tire Nebula,2.0,PN,329.8958,-39.3858,Gru,8,8/22,HOO,910.0,145.0 -IC 5156,,1.8,Galaxy,330.6708,-33.8047,PsA,8,8/22,,, -IC 5184,,2.6,Galaxy,334.0375,-36.8442,Gru,8,8/26,,, -IC 5217,,0.2,PN,335.9833,50.9667,Lac,8,8/28,L,2800.0, -IC 5240,,3.2,Galaxy,340.4667,-44.7675,Gru,9,9/1,,, -IC 5273,,2.9,Galaxy,344.8583,-37.705,Gru,9,9/6,,, -IC 5285,,0.6,Galaxy,346.7458,22.9364,Peg,9,9/8,L,2800.0, -IC 5298,,0.6,Galaxy,349.0042,25.5567,Peg,9,9/10,,, -II Hz 4,,0.5,Galaxy,134.6375,37.0864,Lyn,2,2/4,L,2800.0, -IsWe 1,,13.0,PN,57.25,50.0,Per,11,11/17,,, -IsWe 2,,15.0,PN,333.25,65.9,Cep,8,8/25,HOO,1000.0, -Jacoby 1,,11.0,PN,230.5,52.3667,Boo,5,5/13,HOO,1000.0, -Jones 1,,5.0,PN,353.9708,30.4683,Peg,9,9/15,HOO,910.0, -Jones-Emberson 1,Headphone Nebula,6.0,PN,119.475,53.4167,Lyn,1,1/20,HOO,1000.0,47.0 -Kemble 1,Kemble's Cascade Asterism,180.0,Asterism,59.35,63.0667,Cam,11,11/20,RGB,455.0, -Kemble 2,"Little Cassiopeia, Little Queen",20.0,Asterism,278.75,72.3833,Dra,7,7/1,RGB,1000.0, -Kemble's Kite,Kite Asterism,90.0,Asterism,52.0,72.0,Cas,11,11/12,,, -KeWe 3,KW 8,4.0,PN,113.3542,-23.4358,Pup,1,1/13,H,1000.0, -KFL 14,,0.3,PN,273.2542,-29.25,Sgr,6,6/25,,, -KjPn 8,,7.0,PN,351.0,60.95,Cas,9,9/12,H,2800.0, -Kohoutek 1-02,,1.8,PN,134.45,-28.6,Pyx,2,2/4,HOO,2800.0, -Kohoutek 1-04,,0.8,PN,265.125,-27.0333,Oph,6,6/17,,, -Kohoutek 1-09,,1.0,PN,106.8125,-5.1686,Mon,1,1/7,,, -Kohoutek 1-10,,1.5,PN,108.15,-16.1,CMa,1,1/8,HOO,2800.0, -Kohoutek 1-12,,1.0,PN,117.55,-19.3044,Pup,1,1/18,HOO,2800.0, -Kohoutek 1-14,,1.0,PN,265.65,21.5,Her,6,6/17,HOO,2800.0, -Kohoutek 1-15,,0.7,PN,266.25,27.2,Her,6,6/18,,, -Kohoutek 1-16,,2.1,PN,275.45,64.2333,Dra,6,6/27,,, -Kohoutek 1-17,,0.8,PN,285.9,19.2,Sge,7,7/8,,, -Kohoutek 1-20,,0.7,PN,354.7917,48.2086,And,9,9/16,HOO,2800.0, -Kohoutek 1-22x,,3.0,PN,171.675,-34.3667,Hya,3,3/14,HOO,2800.0, -Kohoutek 1-28,,1.0,PN,158.625,-29.1167,Hya,3,3/1,,, -Kohoutek 2-01,,3.0,PN,76.8167,30.8,Aur,12,12/7,O,1000.0, -Kohoutek 2-02,,0.2,PN,103.125,9.9633,Mon,1,1/3,,, -Kohoutek 2-03,,2.0,PN,106.75,-22.0333,CMa,1,1/7,HOO,2800.0, -Kohoutek 2-04,,0.5,PN,184.575,11.05,Vir,3,3/27,,, -Kohoutek 2-05,,0.5,PN,268.6,-12.5,Ser,6,6/20,,, -Kohoutek 2-07,,3.0,PN,295.3542,-20.4122,Sgr,7,7/17,,, -Kohoutek 2-16,,0.4,PN,251.2,-28.05,Sco,6,6/2,,, -Kohoutek 3-04,,0.3,PN,277.75,2.4231,Ser,6,6/30,,, -Kohoutek 3-16,,0.2,PN,283.25,12.2667,Her,7,7/5,,, -Kohoutek 3-17,,0.5,PN,284.075,7.1231,Aql,7,7/6,,, -Kohoutek 3-26,,0.2,PN,288.6625,0.2269,Aql,7,7/11,,, -Kohoutek 3-27,,0.3,PN,288.625,28.4,Lyr,7,7/11,,, -Kohoutek 3-34,,0.2,PN,291.0125,25.3136,Vul,7,7/13,,, -Kohoutek 3-36,,0.2,PN,293.1625,7.4661,Aql,7,7/15,,, -Kohoutek 3-46,,0.6,PN,297.5,33.4667,Cyg,7,7/20,,, -Kohoutek 3-51,,0.2,PN,300.65,17.6167,Sge,7,7/23,,, -Kohoutek 3-58,,0.2,PN,305.4917,29.99,Cyg,7,7/28,,, -Kohoutek 3-73,,0.3,PN,301.0042,49.2,Cyg,7,7/23,,, -Kohoutek 3-79,,0.2,PN,313.3,53.7667,Cyg,8,8/5,,, -Kohoutek 3-82,,0.3,PN,322.725,50.0,Cyg,8,8/14,,, -Kohoutek 3-91,,0.3,PN,29.65,66.5667,Cas,10,10/20,HOO,2800.0, -Kohoutek 3-92,,0.1,PN,30.9167,64.96,Cas,10,10/22,,, -Kohoutek 3-93,,0.2,PN,36.625,65.7981,Cas,10,10/27,HOO,2800.0, -Kohoutek 3-94,,0.2,PN,54.0333,60.0631,Cam,11,11/14,HOO,2800.0, -Kohoutek 4-05,,0.3,PN,281.4,-6.15,Sct,7,7/3,,, -Kohoutek 4-37,,0.2,PN,297.75,31.05,Cyg,7,7/20,,, -Kohoutek 4-53,,0.3,PN,310.575,37.4,Cyg,8,8/2,,, -Kohoutek 4-55,,0.5,PN,311.3,44.4,Cyg,8,8/3,,, -Kronberger 61,Soccer Ball Nebula ,5.0,PN,290.4125,38.3158,Lyr,7,7/12,HOO,1000.0, -LBN 0325,,60.0,Em Neb,304.65,46.32,Cyg,7,7/27,HOO,455.0, -LBN 0331,,90.0,Em Neb,303.3917,47.65,Cyg,7,7/26,H,455.0, -LBN 0437,Gecko Nebula,120.0,Mol Cld,339.5542,41.09,Lac,8,8/31,HL,455.0,128.0 -LBN 0438,Reaching Hand Nebula,30.0,Mol Cld,340.3208,37.76,Lac,9,9/1,L,1000.0,157.0 -LBN 0440,,30.0,Mol Cld,341.0917,37.265,Lac,9,9/1,L,1000.0, -LBN 0458,,20.0,Mol Cld,343.4958,41.5989,Lac,9,9/3,HL,455.0, -LBN 0460,,30.0,Mol Cld,344.25,41.3667,Lac,9,9/5,HL,455.0, -LBN 0462,,30.0,Mol Cld,343.7458,42.5997,Lac,9,9/4,HL,455.0, -LBN 0468,LBN 468,120.0,Mol Cld,310.6208,67.85,Cep,8,8/2,L,455.0,193.0 -LBN 0477,vbB156d,45.0,Mol Cld,347.0833,41.77,And,9,9/8,L,455.0, -LBN 0532,,20.0,Dark Neb,337.1083,69.09,Cep,8,8/29,L,1000.0, -LBN 0534,,160.0,Mol Cld,355.0,48.8,And,9,9/16,L,327.0, -LBN 0535,Shark Nebula,15.0,Ref Neb,333.7292,73.4167,Cep,8,8/24,L,1000.0,70.0 -LBN 0552,,120.0,Em Neb,314.4167,78.61,Cep,8,8/6,,, -LBN 0564,,70.0,Mol Cld,0.3833,48.61,And,9,9/21,L,1000.0, -LBN 0575,,40.0,Mol Cld,350.475,74.11,Cep,9,9/11,L,1000.0, -LBN 0640,,35.0,Ref Neb,27.3167,53.75,Per,10,10/18,L,1000.0, -LBN 0673,,4.0,Em Neb,44.3375,60.6717,Cas,11,11/4,SHO,1000.0, -LBN 0777,Baby Eagle Nebula,60.0,Mol Cld,61.2583,26.39,Tau,11,11/21,L,1000.0,114.0 -LBN 0906,,55.0,Em Neb,70.3667,-5.41,Eri,12,12/1,,, -LBN 0917,,70.0,Em Neb,71.8667,-5.91,Eri,12,12/2,,, -LBN 1036,,60.0,Em Neb,109.0958,-10.59,Mon,1,1/9,H,455.0, -LBN 1122,,60.0,Mol Cld,235.1708,-7.16,Lib,5,5/17,L,455.0, -LDN 0204,,100.0,Dark Neb,251.9458,-12.0878,Oph,6,6/3,L,455.0, -LDN 0604,,20.0,Dark Neb,282.8875,0.2272,Aql,7,7/5,L,1000.0, -LDN 0673,,90.0,Dark Neb,290.2125,11.2614,Aql,7,7/12,L,1000.0, -LDN 0778,,45.0,Dark Neb,291.775,23.6853,Vul,7,7/14,L,1000.0, -LDN 0810,,18.0,Dark Neb,296.2583,27.9553,Cyg,7,7/18,L,1000.0, -LDN 1218,Skeleton Hand Nebula,90.0,Dark Neb,345.5083,62.2692,Cep,9,9/6,L,455.0, -LDN 1251,LDN 1251,90.0,Dark Neb,339.0125,75.2597,Cep,8,8/31,L,455.0,186.0 -LDN 1262,,40.0,Dark Neb,351.4458,74.2933,Cep,9,9/11,L,1000.0, -LDN 1333,,20.0,Dark Neb,36.5167,75.4756,Cas,10,10/27,L,1000.0, -LDN 1495,Taurus Dark Nebulae Region,40.0,Dark Neb,64.5208,27.6214,Tau,11,11/25,L,455.0,196.0 -LDN 1622,Bogeyman Nebula,40.0,Dark Neb,88.5083,1.6708,Ori,12,12/19,HL,1000.0,46.0 -LEDA 0006101,,0.3,Galaxy,24.7292,-7.7656,Cet,10,10/15,L,2800.0, -LEDA 0033083,,1.0,Galaxy,164.8292,24.5425,Leo,3,3/7,,, -LEDA 0036252,"Tadpole Galaxy, Kiso 5639",0.4,Galaxy,175.275,32.4333,UMa,3,3/17,L,2800.0, -LEDA 0067860,,0.2,Galaxy,330.425,11.8567,Peg,8,8/22,L,2800.0, -LEDA 0067880,,2.0,Galaxy,330.5208,-32.8822,PsA,8,8/22,L,2800.0, -LEDA 0084446,,0.2,Galaxy,227.5167,7.6769,Boo,5,5/10,,, -LEDA 0093851,,0.3,Galaxy,25.8583,16.9747,Cet,10,10/15,L,2800.0, -LEDA 0139235,Sextans Ring Galaxy,2.0,Galaxy,150.5,-8.1625,Sex,2,2/20,L,2800.0, -LEDA 2076843,,0.2,Galaxy,214.0792,36.2139,Boo,4,4/26,L,2800.0, -Leo 1,,10.0,Gal-Dwarf,152.125,12.3,Leo,2,2/22,RGB,1000.0, -LkHa 120,,1.5,Ref Neb,315.2875,50.3628,Cyg,8,8/7,L,2800.0, -LkHa 208,,3.0,YSO,91.9583,18.6575,Ori,12,12/23,L,1000.0, -Longmore 13,,1.2,PN,242.4417,-30.9183,Sco,5,5/25,,, -LoTr 5,,9.0,PN,194.0,25.8833,Com,4,4/6,HOO,1000.0, -LT 41,,0.5,Galaxy,1.9917,-4.5572,Psc,9,9/22,,, -LTNF 1,,4.0,PN,179.4292,48.94,UMa,3,3/22,,, -M 001,Crab Nebula,6.0,SNR,83.6333,22.0144,Tau,12,12/14,SHO,2800.0,12.0 -M 002,,13.0,Glob Cl,323.3625,-0.8231,Aql,8,8/15,RGB,910.0, -M 003,M3,16.0,Glob Cl,205.5458,28.3764,CVn,4,4/17,RGB,910.0,149.0 -M 004,,26.0,Glob Cl,245.8958,-26.5264,Sco,5,5/28,RGB,455.0, -M 005,Rose Cluster,17.0,Glob Cl,229.6375,2.0825,Ser,5,5/12,RGB,910.0,181.0 -M 006,Butterfly Cluster,15.0,Open Cl,265.0833,-32.2533,Sco,6,6/17,RGB,910.0, -M 007,"Ptolemy's Cluster, Scorpion's Tail",80.0,Open Cl,268.4625,-34.7933,Sco,6,6/20,L,1000.0, -M 008,Lagoon Nebula,100.0,Em Neb,270.9208,-24.38,Sgr,6,6/23,SHO,1000.0,58.0 -M 009,,9.0,Glob Cl,259.8,-18.5161,Oph,6,6/11,RGB,910.0, -M 010,,15.0,Glob Cl,254.2875,-4.0989,Oph,6,6/6,RGB,910.0, -M 011,Wild Duck Cluster,14.0,Open Cl,282.7708,-6.27,Sct,7,7/5,RGB,910.0,126.0 -M 012,,15.0,Glob Cl,251.8083,-1.9478,Oph,6,6/3,RGB,910.0, -M 013,Great Hercules Cluster,32.0,Glob Cl,250.4208,36.4597,Her,6,6/2,RGB,2800.0,63.0 -M 014,,12.0,Glob Cl,264.4,-3.2453,Oph,6,6/16,RGB,910.0, -M 015,Great Pegasus Cluster,12.0,Glob Cl,322.4917,12.1672,Peg,8,8/14,RGB,910.0, -M 016,Eagle Nebula,35.0,Em Neb,274.7,-13.8067,Ser,6,6/26,SHO,2800.0,1.0 -M 017,"Omega,Swan,Horseshoe,Checkmark Neb",60.0,Em Neb,275.1958,-16.1717,Sgr,6,6/27,SHO,1000.0,62.0 -M 018,Black Swan Cluster,9.0,Open Cl,274.9917,-17.1019,Sgr,6,6/27,RGB,910.0, -M 019,,14.0,Glob Cl,255.6583,-26.2678,Oph,6,6/7,RGB,910.0, -M 020,Trifid Nebula,29.0,Em Neb,270.675,-22.9717,Sgr,6,6/22,HL,2800.0,27.0 -M 021,Webb's Cross Cluster,13.0,Open Cl,271.0542,-22.49,Sgr,6,6/23,RGB,910.0, -M 022,Great Sagittarius Cluster ,24.0,Glob Cl,279.1,-23.9047,Sgr,7,7/1,RGB,1000.0,116.0 -M 023,,27.0,Open Cl,269.2667,-18.985,Sgr,6,6/21,RGB,910.0, -M 024,Delle Caustiche,80.0,Star Cld,274.2,-18.55,Sgr,6,6/26,RGB,327.0, -M 025,,40.0,Open Cl,277.925,-19.1167,Sgr,6,6/30,RGB,910.0, -M 026,,15.0,Open Cl,281.325,-9.3833,Sct,7,7/3,RGB,910.0, -M 027,"Dumbbell, Apple Core Nebula",6.0,PN,299.9,22.7208,Vul,7,7/22,HOO,2800.0,29.0 -M 028,,11.0,Glob Cl,276.1375,-24.8686,Sgr,6,6/28,RGB,910.0, -M 029,Cooling Tower,7.0,Open Cl,305.9875,38.5083,Cyg,7,7/28,RGB,910.0, -M 030,Jellyfish Cluster,11.0,Glob Cl,325.0917,-23.1792,Cap,8,8/17,RGB,910.0, -M 031,Andromeda Galaxy,189.0,Galaxy,10.6833,41.2689,And,10,10/1,L,455.0,8.0 -M 032,Satellite Of Andromeda,9.0,Gal-Ell,10.675,40.865,And,10,10/1,L,455.0, -M 033,Triangulum Galaxy,70.0,Galaxy,23.4625,30.6603,Tri,10,10/14,L,1000.0,104.0 -M 034,,35.0,Open Cl,40.5208,42.7617,Per,10,10/31,RGB,910.0, -M 035,Shoe-Buckle Cluster,28.0,Open Cl,92.25,24.35,Gem,12,12/23,RGB,910.0, -M 036,Pinwheel Cluster,12.0,Open Cl,84.075,34.14,Aur,12,12/15,RGB,910.0, -M 037,Salt and Pepper ,24.0,Open Cl,88.075,32.5533,Aur,12,12/19,RGB,910.0, -M 038,Starfish Cluster,21.0,Open Cl,82.1667,35.8483,Aur,12,12/13,RGB,910.0, -M 039,,32.0,Open Cl,322.925,48.4167,Cyg,8,8/14,RGB,910.0, -M 040,Winnecke 4 Double Star,1.0,Star,185.55,58.0833,UMa,3,3/28,RGB,910.0, -M 041,Little Beehive Cluster,38.0,Open Cl,101.5042,-20.7567,CMa,1,1/1,RGB,910.0, -M 042,Orion Nebula,66.0,HII Neb,83.8208,-5.3911,Ori,12,12/14,RGB,455.0,33.0 -M 043,De Mairan's Nebula,20.0,HII Neb,83.8792,-5.2675,Ori,12,12/15,RGB,455.0, -M 044,"Beehive, Praesepe, Manger Cluster",95.0,Open Cl,130.1,19.6667,Cnc,1,1/31,RGB,455.0, -M 045,"Pleiades, Seven Sisters, Subaru",120.0,Open Cl,56.875,24.1167,Tau,11,11/17,L,1000.0,18.0 -M 046,,20.0,Open Cl,115.4458,-14.8439,Pup,1,1/16,RGB,910.0, -M 047,,30.0,Open Cl,114.1458,-14.4833,Pup,1,1/14,RGB,910.0, -M 048,,54.0,Open Cl,123.4292,-5.75,Hya,1,1/24,RGB,910.0, -M 049,,10.0,Gal-Ell,187.4458,8.0003,Vir,3,3/30,L,910.0, -M 050,,16.0,Open Cl,105.675,-8.3833,Mon,1,1/6,RGB,910.0, -M 051,Whirlpool Galaxy,11.0,Galaxy,202.4667,47.1958,CVn,4,4/14,L,2800.0,15.0 -M 052,Scorpion Cluster,13.0,Open Cl,351.2,61.5933,Cas,9,9/12,RGB,910.0, -M 053,,13.0,Glob Cl,198.2292,18.1686,Com,4,4/10,RGB,910.0, -M 054,,9.0,Glob Cl,283.7625,-30.4797,Sgr,7,7/6,RGB,2800.0, -M 055,Specter Cluster,19.0,Glob Cl,295.0,-30.9622,Sgr,7,7/17,RGB,1000.0,183.0 -M 056,,7.0,Glob Cl,289.15,30.1839,Lyr,7,7/11,RGB,910.0, -M 057,Ring Nebula,1.5,PN,283.3958,33.0289,Lyr,7,7/5,HOO,2800.0,31.0 -M 058,,6.0,Galaxy,189.4333,11.8183,Vir,4,4/1,L,2800.0, -M 059,,5.0,Gal-Ell,190.5083,11.6467,Vir,4,4/2,L,910.0, -M 060,,7.0,Gal-Ell,190.9167,11.5522,Vir,4,4/2,L,910.0, -M 061,,6.0,Galaxy,185.4792,4.4731,Vir,3,3/28,L,2800.0, -M 062,,14.0,Glob Cl,255.3042,-30.1125,Oph,6,6/7,RGB,910.0, -M 063,Sunflower Galaxy,13.0,Galaxy,198.9542,42.0294,CVn,4,4/11,L,2800.0,125.0 -M 064,Black Eye Galaxy,10.0,Galaxy,194.1833,21.6828,Com,4,4/6,L,2800.0,141.0 -M 065,Part of Leo Triplet,9.0,Galaxy,169.7333,13.0919,Leo,3,3/12,L,2800.0, -M 066,Part of Leo Triplet,9.0,Galaxy,169.9833,13.3033,Leo,3,3/12,L,2800.0, -M 067,King Cobra Cluster,30.0,Open Cl,132.825,11.8,Cnc,2,2/2,RGB,910.0, -M 068,,12.0,Glob Cl,189.8667,-26.7422,Hya,4,4/1,RGB,910.0, -M 069,,7.0,Glob Cl,277.8458,-32.3475,Sgr,6,6/30,RGB,910.0, -M 070,,8.0,Glob Cl,280.8,-32.2908,Sgr,7,7/3,RGB,910.0, -M 071,Angelfish Cluster,7.0,Glob Cl,298.4417,18.7783,Sge,7,7/21,RGB,910.0, -M 072,,6.0,Glob Cl,313.3667,-12.5372,Aql,8,8/5,RGB,910.0, -M 073,,3.0,Asterism,314.7333,-12.6353,Aql,8,8/6,RGB,910.0, -M 074,,10.0,Galaxy,24.175,15.7836,Psc,10,10/15,L,2800.0, -M 075,,6.0,Glob Cl,301.5208,-21.9219,Sgr,7,7/24,RGB,910.0, -M 076,Little Dumbbell Nebula,2.0,PN,25.575,51.5708,Per,10,10/16,HOO,2800.0,54.0 -M 077,Cetus A Galaxy,7.0,Galaxy,40.6708,-0.0133,Cet,11,11/1,L,1000.0, -M 078,Casper Nebula,8.0,Ref Neb,86.6875,0.08,Ori,12,12/17,L,1000.0,91.0 -M 079,,9.0,Glob Cl,81.0458,-24.5247,Lep,12,12/12,RGB,2800.0, -M 080,,9.0,Glob Cl,244.2625,-22.9756,Sco,5,5/26,RGB,910.0, -M 081,Bode's Galaxy,27.0,Galaxy,148.8875,69.0656,UMa,2,2/19,HL,1000.0,97.0 -M 082,Cigar Galaxy,10.0,Galaxy,148.9708,69.6806,UMa,2,2/19,HL,1000.0,34.0 -M 083,Southern Pinwheel Galaxy,13.0,Galaxy,204.25,-29.8642,Hya,4,4/16,L,2800.0,161.0 -M 084,Markarian's Chain,6.0,Gal-Ell,186.2667,12.8867,Vir,3,3/29,L,1000.0, -M 085,,7.0,Gal-Ell,186.35,18.1908,Com,3,3/29,L,910.0, -M 086,Markarian's Chain,9.0,Gal-Ell,186.55,12.9461,Vir,3,3/29,L,1000.0, -M 087,Virgo A Galaxy,8.0,Gal-Ell,187.7042,12.3908,Vir,3,3/30,RGB,1500.0, -M 088,,7.0,Galaxy,187.9958,14.42,Com,3,3/30,L,2800.0, -M 089,,5.0,Galaxy,188.9167,12.5564,Vir,3,3/31,RGB,910.0, -M 090,,10.0,Galaxy,189.2083,13.1633,Vir,4,4/1,L,2800.0, -M 091,,5.0,Galaxy,188.8625,14.4964,Com,3,3/31,L,2800.0, -M 092,,11.0,Glob Cl,259.2792,43.1364,Her,6,6/11,L,2800.0, -M 093,,22.0,Open Cl,116.125,-23.8567,Pup,1,1/16,RGB,910.0, -M 094,"Croc's Eye, Cat's Eye Galaxy",11.0,Galaxy,192.7208,41.12,CVn,4,4/4,L,2800.0,79.0 -M 095,,7.0,Galaxy,160.9917,11.7036,Leo,3,3/3,L,2800.0, -M 095 and M 096,,90.0,Galaxy,161.25,11.75,Leo,3,3/4,L,1000.0, -M 096,,8.0,Galaxy,161.6917,11.82,Leo,3,3/4,L,2800.0, -M 097,Owl Nebula,3.0,PN,168.7,55.0189,UMa,3,3/11,HOO,2800.0,36.0 -M 098,,9.0,Galaxy,183.45,14.9003,Com,3,3/26,L,2800.0, -M 099,St. Catherine's Wheel Galaxy,5.0,Galaxy,184.7083,14.4169,Com,3,3/27,L,2800.0,188.0 -M 100,Mirror Galaxy,7.0,Galaxy,185.7292,15.8225,Com,3,3/28,L,2800.0, -M 101,Pinwheel Galaxy,29.0,Galaxy,210.8042,54.3489,UMa,4,4/23,L,1000.0,72.0 -M 102,Spindle Galaxy,7.0,Galaxy,226.625,55.7631,Dra,5,5/9,L,1960.0, -M 103,,6.0,Open Cl,23.3458,60.65,Cas,10,10/14,RGB,910.0, -M 104,Sombrero Galaxy,9.0,Galaxy,189.9958,-11.6231,Vir,4,4/1,L,2800.0,66.0 -M 105,Leo Galaxy Trio,5.0,Galaxy,161.9583,12.5819,Leo,3,3/4,L,910.0, -M 106,,19.0,Galaxy,184.7417,47.3044,CVn,3,3/27,L,2800.0, -M 107,,10.0,Glob Cl,248.1333,-13.0531,Oph,5,5/30,RGB,910.0, -M 108,Surfboard Galaxy,9.0,Galaxy,167.8792,55.6739,UMa,3,3/10,L,2800.0,131.0 -M 109,,8.0,Galaxy,179.4,53.3747,UMa,3,3/22,L,2800.0, -M 110,Satellite Of Andromeda,22.0,Galaxy,10.0917,41.6853,And,9,9/30,L,455.0, -MaC 1-13,,0.3,PN,277.15,-8.4,Sct,6,6/29,,, -Maffei 1,,7.0,Gal-Ell,39.1458,59.655,Cas,10,10/30,L,1000.0, -Maffei 2,,12.0,Gal-Ell,40.4792,59.6042,Cas,10,10/31,L,1000.0, -Markarian's Chain,"M86, M84",90.0,Galaxy,186.5542,12.9461,Vir,3,3/29,L,1000.0,23.0 -MCG +00-29-017,,0.4,Galaxy,170.0375,-3.06,Leo,3,3/12,L,2800.0, -MCG -02-08-033,,3.0,Galaxy,44.4542,-10.1678,Eri,11,11/4,L,1000.0, -Melotte 015,Heart Nebula OC,55.0,Open Cl,38.2083,61.4617,Cas,10,10/29,SHO,2800.0, -Melotte 020,Alpha Persei Moving Cluster,240.0,Open Cl,51.075,49.8667,Per,11,11/11,RGB,327.0, -Melotte 025,Hyades Cluster,330.0,Open Cl,66.75,16.0,Tau,11,11/27,RGB,327.0, -Melotte 111,Coma Star Cluster,275.0,Open Cl,186.25,26.0,Com,3,3/29,DSLR,50.0, -Minkowski 1-07,,0.5,PN,99.3375,24.01,Gem,12,12/30,HOO,2800.0, -Minkowski 1-08,,0.3,PN,103.3917,3.14,Mon,1,1/3,,, -Minkowski 1-18,,0.5,PN,115.525,-14.2,Pup,1,1/16,HOO,2800.0, -Minkowski 1-28,,0.5,PN,266.9,-22.0667,Sgr,6,6/18,,, -Minkowski 1-41,,1.0,PN,272.375,-24.2042,Sgr,6,6/24,HOO,2800.0, -Minkowski 1-42,,0.5,PN,272.7708,-28.9831,Sgr,6,6/24,,, -Minkowski 1-54,,0.3,PN,279.025,-17.0,Sgr,7,7/1,,, -Minkowski 1-57,,0.5,PN,280.0833,-10.6631,Sct,7,7/2,,, -Minkowski 1-59,,0.5,PN,280.8333,-9.0803,Sct,7,7/3,,, -Minkowski 1-64,,0.4,PN,282.5,35.25,Lyr,7,7/4,HOO,2800.0, -Minkowski 1-72,,0.3,PN,295.35,17.75,Sge,7,7/17,,, -Minkowski 1-75,,0.3,PN,301.175,31.25,Cyg,7,7/23,,, -Minkowski 1-79,,0.8,PN,324.2583,48.935,Cyg,8,8/16,HOO,1000.0, -Minkowski 1-91,Hen 2-437,0.5,PPN,293.2417,26.8781,Vul,7,7/15,HOO,2800.0, -Minkowski 1-92,Minkowski's Footprint,0.3,PPN,294.075,29.55,Cyg,7,7/16,HOO,2800.0, -Minkowski 2-09,Minkowski's Butterfly,0.7,PPN,256.4083,-10.1431,Oph,6,6/8,HOO,2800.0, -Minkowski 2-46,,0.3,PN,281.6458,-8.4667,Sct,7,7/3,,, -Minkowski 2-48,,0.5,PN,297.6167,25.9061,Vul,7,7/20,,, -Minkowski 2-51,,1.0,PN,334.0125,57.4753,Cep,8,8/26,HOO,2800.0, -Minkowski 2-52,,0.3,PN,335.1292,57.605,Cep,8,8/27,,, -Minkowski 2-55,,1.0,PN,352.975,70.3667,Cep,9,9/14,HOO,2800.0, -Minkowski 3-01,,0.5,PN,105.7083,-31.5917,CMa,1,1/6,HOO,2800.0, -Minkowski 3-03,,0.3,PN,111.6417,-5.3644,Mon,1,1/12,HOO,2800.0, -Minkowski 3-05,,0.3,PN,120.6208,-27.6986,Pup,1,1/21,,, -Minkowski 3-09,,0.3,PN,261.4292,-26.1989,Oph,6,6/13,,, -Minkowski 3-24,,0.3,PN,271.975,-25.2333,Sgr,6,6/24,,, -Minkowski 3-28,,0.4,PN,278.1708,-10.0967,Sct,6,6/30,,, -Minkowski 3-30,,0.3,PN,280.3125,-15.5622,Sct,7,7/2,,, -Minkowski 3-55,,0.4,PN,278.3125,-10.2519,Sct,6,6/30,,, -Minkowski 4-09,,0.7,PN,273.575,-4.9894,Ser,6,6/25,HOO,2800.0, -Minkowski 4-11,,0.3,PN,283.575,-10.05,Sct,7,7/5,,, -Minkowski 4-14,,0.2,PN,290.2542,7.6164,Aql,7,7/12,,, -Minkowski 4-17,,1.0,PN,302.25,43.7333,Cyg,7,7/24,HOO,2800.0, -Mrk 0273,,0.3,Galaxy,206.175,55.8886,UMa,4,4/18,L,2800.0, -Mrk 1498,,0.5,Galaxy,247.0167,51.7753,Dra,5,5/29,,, -MWP 1,,10.0,PN,319.75,34.4,Cyg,8,8/11,HOO,1000.0, -Necklace Nebula,,0.5,PN,295.9958,17.1506,Sge,7,7/18,HOO,2800.0, -NGC 0001,,2.0,Galaxy,1.8167,27.7083,Peg,9,9/22,,, -NGC 0017,,5.0,Galaxy,2.7792,-12.1072,Cet,9,9/23,L,1000.0, -NGC 0023,,4.0,Galaxy,2.4708,25.9239,Peg,9,9/23,L,2800.0, -NGC 0024,,6.0,Galaxy,2.4833,-24.9644,Scl,9,9/23,L,2800.0, -NGC 0026,,4.0,Galaxy,2.6083,25.8319,Peg,9,9/23,L,2800.0, -NGC 0027,,12.0,Galaxy,2.6375,28.9967,And,9,9/23,,, -NGC 0038,,1.0,Galaxy,2.9458,-5.5867,Psc,9,9/23,,, -NGC 0040,BowTie Nebula,1.0,PN,3.2542,72.5219,Cep,9,9/23,L,2800.0,119.0 -NGC 0045,,8.0,Galaxy,3.5167,-23.1814,Cet,9,9/24,L,1000.0, -NGC 0051,,2.0,Galaxy,3.6458,48.2556,And,9,9/24,,, -NGC 0055,String of Pearls Galaxy,32.0,Galaxy,3.7833,-39.22,Scl,9,9/24,L,2800.0, -NGC 0060,,1.0,Galaxy,3.9917,-0.3039,Psc,9,9/24,,, -NGC 0095,,2.0,Galaxy,5.5583,10.4917,Psc,9,9/26,,, -NGC 0100,,6.0,Galaxy,6.0125,16.4858,Psc,9,9/26,L,2800.0, -NGC 0104,47 Tucanae Cluster,50.0,Glob Cl,6.025,-72.0833,Tuc,9,9/26,,, -NGC 0128,,2.0,Galaxy,7.2083,2.8389,Psc,9,9/28,L,1000.0, -NGC 0129,,21.0,Open Cl,7.5,60.2183,Cas,9,9/28,RGB,1000.0, -NGC 0134,Giant Squid Galaxy,8.1,Galaxy,7.5917,-33.2456,Scl,9,9/28,L,1000.0, -NGC 0136,,12.0,Open Cl,7.8792,61.51,Cas,9,9/28,,, -NGC 0140,,1.4,Galaxy,7.8375,30.7917,And,9,9/28,,, -NGC 0147,,13.0,Gal-Ell,8.3,48.5075,Cas,9,9/29,L,910.0, -NGC 0150,,4.0,Galaxy,8.5667,-27.8044,Scl,9,9/29,,, -NGC 0151,,3.7,Galaxy,8.5125,-9.7056,Cet,9,9/29,L,1000.0, -NGC 0157,,4.0,Galaxy,8.6958,-8.3961,Cet,9,9/29,L,2800.0, -NGC 0160,,3.0,Galaxy,9.0,23.95,And,9,9/30,,, -NGC 0173,,3.0,Galaxy,9.25,1.9333,Cet,9,9/30,,, -NGC 0178,,2.0,Gal-Mag,9.7833,-14.1725,Cet,9,9/30,L,2800.0, -NGC 0185,,12.0,Gal-Ell,9.7417,48.3372,Cas,9,9/30,L,910.0, -NGC 0188,,14.0,Open Cl,11.8667,85.255,Cep,10,10/2,L,910.0, -NGC 0189,,4.0,Open Cl,9.8958,61.085,Cas,9,9/30,L,1000.0, -NGC 0206,Star Cloud in M31,4.0,Star Cld,10.1333,40.7386,And,9,9/30,RGB,1000.0, -NGC 0210,NGC 210,5.4,Galaxy,10.1458,-13.8733,Cet,9,9/30,L,1000.0,197.0 -NGC 0218,Often mistaken as PGC 2493,4.0,Galaxy,11.6333,36.325,And,10,10/2,L,1000.0, -NGC 0225,Sailboat Cluster,12.0,Open Cl,10.9125,61.775,Cas,10,10/1,L,1000.0, -NGC 0244,Haro 14,1.3,Galaxy,11.4458,-15.5975,Cet,10,10/2,,, -NGC 0246,Skull Nebula,4.0,PN,11.7625,-11.8719,Cet,10,10/2,HOO,1000.0,112.0 -NGC 0247,Needle's Eye Galaxy,20.0,Galaxy,11.7833,-20.7597,Cet,10,10/2,L,1000.0, -NGC 0253,Sculptor Galaxy,25.0,Galaxy,11.8875,-25.2883,Scl,10,10/2,L,2800.0,115.0 -NGC 0255,,3.0,Galaxy,11.9458,-11.4683,Cet,10,10/2,,, -NGC 0262,,1.4,Galaxy,12.1958,31.9569,And,10,10/3,L,2800.0, -NGC 0266,,3.0,Galaxy,12.45,32.2775,Psc,10,10/3,L,1000.0, -NGC 0271,,2.5,Galaxy,12.675,-1.91,Cet,10,10/3,,, -NGC 0278,,2.0,Galaxy,13.0167,47.5506,Cas,10,10/3,L,2800.0, -NGC 0279,,2.0,Galaxy,13.0375,-2.2183,Cet,10,10/3,,, -NGC 0281,PacMan Nebula,35.0,Em Neb,13.225,56.6247,Cas,10,10/4,SHO,1000.0,98.0 -NGC 0288,,13.8,Glob Cl,13.1875,-26.5836,Scl,10,10/4,L,1000.0, -NGC 0289,,4.0,Galaxy,13.175,-31.2061,Scl,10,10/4,L,1000.0, -NGC 0296,,3.0,Galaxy,13.7833,31.5422,Psc,10,10/4,L,2800.0, -NGC 0300,,20.0,Galaxy,13.7208,-37.6842,Scl,10,10/4,L,2800.0, -NGC 0309,,3.0,Galaxy,14.1792,-9.9139,Cet,10,10/5,L,2800.0, -NGC 0315,,3.0,Galaxy,14.25,30.35,Psc,10,10/5,,, -NGC 0317,,1.3,Galaxy,14.4167,43.7922,And,10,10/5,L,1000.0, -NGC 0337,,3.0,Galaxy,14.9583,-7.5775,Cet,10,10/5,,, -NGC 0362,,14.0,Glob Cl,15.8,-70.85,Tuc,10,10/6,,, -NGC 0381,,6.0,Open Cl,17.0792,61.5833,Cas,10,10/8,,, -NGC 0404,Mirach's Ghost Galaxy,6.0,Gal-Lent,17.3625,35.7181,And,10,10/8,L,1000.0, -NGC 0428,,4.0,Gal-Mag,18.2333,0.9819,Cet,10,10/9,L,1000.0, -NGC 0436,,6.0,Open Cl,18.9917,58.8117,Cas,10,10/9,L,1000.0, -NGC 0446,,2.0,Galaxy,19.0167,4.2942,Psc,10,10/10,,, -NGC 0450,,3.0,Galaxy,18.8792,-0.8611,Cet,10,10/9,,, -NGC 0457,"ET, Owl, Dragonfly Cluster",13.0,Open Cl,19.8958,58.2867,Cas,10,10/10,RGB,910.0,122.0 -NGC 0474,,7.0,Galaxy,20.0,3.4,Cet,10,10/12,,, -NGC 0488,Whirligig Galaxy,5.2,Galaxy,20.4458,5.2564,Psc,10,10/11,L,1000.0, -NGC 0493,,3.0,Galaxy,20.5,0.9333,Cet,10,10/11,,, -NGC 0514,,3.5,Galaxy,21.0167,12.9172,Psc,10,10/12,,, -NGC 0521,,3.4,Galaxy,21.1417,1.7314,Cet,10,10/12,L,1000.0, -NGC 0522,,2.8,Galaxy,21.1917,9.9944,Psc,10,10/12,,, -NGC 0524,,3.2,Gal-Lent,21.2,9.5392,Psc,10,10/12,L,1000.0, -NGC 0533,,3.7,Gal-Ell,21.3792,1.7592,Cet,10,10/12,L,1000.0, -NGC 0536,,3.0,Galaxy,21.5,34.7,And,10,10/12,,, -NGC 0559,,4.0,Open Cl,22.3792,63.3067,Cas,10,10/13,L,910.0, -NGC 0578,,4.8,Galaxy,22.6208,-22.6664,Cet,10,10/13,L,2800.0, -NGC 0584,Little Spindle Galaxy,3.8,Galaxy,22.8375,-6.8681,Cet,10,10/13,L,1000.0, -NGC 0596,,2.8,Gal-Lent,23.225,-7.0333,Cet,10,10/12,,, -NGC 0600,,90.0,Galaxy,23.2708,-7.3122,Cet,10,10/14,,, -NGC 0604,Large HII Region in M33,2.0,HII Neb,23.6375,30.7839,Tri,10,10/14,L,1000.0, -NGC 0613,,5.8,Galaxy,23.575,-29.4189,Scl,10,10/14,L,2800.0, -NGC 0615,,3.0,Galaxy,23.775,-7.3333,Cet,10,10/14,,, -NGC 0619,,3.0,Galaxy,23.7167,-36.4886,Scl,10,10/14,,, -NGC 0625,,3.0,Galaxy,23.7708,-41.4369,Phe,10,10/14,,, -NGC 0637,,4.0,Open Cl,25.7667,64.04,Cas,10,10/16,L,1000.0, -NGC 0654,,40.0,Open Cl,26.0,61.885,Cas,10,10/17,L,1000.0, -NGC 0658,,3.0,Galaxy,25.5,12.6,Psc,10,10/16,,, -NGC 0659,,5.0,Open Cl,26.1,60.6733,Cas,10,10/17,L,1000.0, -NGC 0660,Polar Ring Galaxy,9.1,Galaxy,25.7583,13.6442,Psc,10,10/16,L,2800.0,75.0 -NGC 0662,,1.0,Galaxy,26.1458,37.6961,And,10,10/17,,, -NGC 0663,,16.0,Open Cl,26.5375,61.235,Cas,10,10/17,L,910.0, -NGC 0669,,3.0,Galaxy,26.8167,35.5628,Tri,10,10/17,,, -NGC 0672,"Triangulum Duo, Bent Galaxy",6.6,Gal-Mag,26.975,27.4331,Tri,10,10/18,L,2800.0, -NGC 0674,,6.0,Galaxy,27.8208,22.3578,Ari,10,10/18,L,2800.0, -NGC 0676,,4.0,Galaxy,27.2375,5.9072,Psc,10,10/18,L,2800.0, -NGC 0678,,20.0,Galaxy,27.3542,21.9972,Ari,10,10/18,L,1000.0, -NGC 0681,,3.0,Galaxy,27.2958,-10.4269,Cet,10,10/18,L,2800.0, -NGC 0684,,3.0,Galaxy,27.5,27.6333,Tri,10,10/18,,, -NGC 0695,,0.7,Galaxy,27.8083,22.5825,Ari,10,10/18,,, -NGC 0718,,3.0,Galaxy,28.3042,4.1953,Psc,10,10/19,L,2800.0, -NGC 0720,,4.4,Galaxy,28.25,-13.7386,Cet,10,10/19,,, -NGC 0752,,50.0,Open Cl,29.4208,37.785,And,10,10/20,L,455.0, -NGC 0753,,3.0,Galaxy,29.425,35.9156,And,10,10/20,,, -NGC 0765,,2.0,Galaxy,29.7,24.8919,Ari,10,10/20,,, -NGC 0772,"Fiddlehead, Nautilus Galaxy",7.0,Galaxy,29.8333,19.0081,Ari,10,10/21,L,2800.0,137.0 -NGC 0779,,4.0,Galaxy,29.925,-5.9642,Cet,10,10/21,L,2800.0, -NGC 0784,,6.0,Galaxy,30.3208,28.8372,Tri,10,10/21,L,2800.0, -NGC 0799,,4.0,Galaxy,30.55,-0.1011,Cet,10,10/21,L,2800.0, -NGC 0801,,3.0,Galaxy,30.75,38.25,And,10,10/22,,, -NGC 0803,,3.0,Galaxy,30.75,16.0167,Ari,10,10/22,,, -NGC 0812,,3.2,Galaxy,31.7167,44.5711,And,10,10/22,L,1000.0, -NGC 0828,,3.0,Galaxy,32.5417,39.1911,And,10,10/23,L,1000.0, -NGC 0829,,25.0,Galaxy,32.175,-7.7906,Cet,10,10/23,,, -NGC 0864,,5.0,Galaxy,33.8667,6.0019,Cet,10,10/25,L,2800.0, -NGC 0869,Double Cluster,60.0,Open Cl,34.75,57.1283,Per,10,10/26,RGB,1000.0,109.0 -NGC 0877,,2.3,Galaxy,34.5,14.5442,Ari,10,10/25,L,2800.0, -NGC 0891,Outer Limits Galaxy,14.0,Galaxy,35.6375,42.3483,And,10,10/26,L,2800.0,123.0 -NGC 0908,,5.5,Galaxy,35.7708,-21.2339,Cet,10,10/27,L,1000.0, -NGC 0918,,3.4,Galaxy,36.4625,18.4958,Ari,10,10/27,L,1000.0, -NGC 0922,,2.0,Galaxy,36.2708,-24.7906,For,10,10/27,L,2800.0, -NGC 0925,,10.0,Galaxy,36.8208,33.5789,Tri,10,10/28,L,2800.0, -NGC 0936,Saucer Galaxy,5.2,Galaxy,36.9042,-1.1556,Cet,10,10/28,L,1000.0, -NGC 0953,,2.0,Galaxy,37.7917,29.5886,Tri,10,10/29,,, -NGC 0959,,2.0,Galaxy,38.1,35.4944,Tri,10,10/29,,, -NGC 0972,,4.0,Galaxy,38.5542,29.3114,Ari,10,10/29,L,2800.0, -NGC 0973,,4.0,Galaxy,38.5833,32.5047,Tri,10,10/29,L,1000.0, -NGC 0974,,3.0,Gal Group,38.6083,32.9542,Tri,10,10/29,L,1000.0, -NGC 0985,,1.0,Galaxy,38.6583,-8.7881,Cet,10,10/30,L,2800.0, -NGC 0986,,4.0,Galaxy,38.3917,-39.0456,For,10,10/29,L,2800.0, -NGC 1003,,5.4,Galaxy,39.8208,40.8722,Per,10,10/31,L,2800.0, -NGC 1022,,2.5,Galaxy,39.6375,-6.6775,Cet,10,10/31,,, -NGC 1027,,5.0,Open Cl,41.925,61.55,Cas,10,10/31,,, -NGC 1042,,5.0,Galaxy,40.1,-8.4336,Cet,10,10/31,L,2800.0, -NGC 1052,,3.0,Galaxy,40.275,-8.25,Cet,10,10/31,,, -NGC 1055,,7.6,Galaxy,40.4375,0.4425,Cet,10,10/31,L,1000.0, -NGC 1058,,3.0,Galaxy,40.75,37.3333,Per,11,11/1,,, -NGC 1060,,30.0,Gal Group,40.8125,32.4247,Tri,11,11/1,L,1000.0, -NGC 1070,,3.0,Galaxy,40.8417,4.9681,Cet,11,11/1,,, -NGC 1073,,5.0,Galaxy,40.9167,1.3758,Cet,11,11/1,L,1000.0, -NGC 1079,,3.0,Galaxy,40.9375,-29.0033,For,11,11/1,L,2800.0, -NGC 1084,Truffle Galaxy,2.9,Galaxy,41.5,-7.5772,Eri,11,11/1,L,1000.0, -NGC 1085,,2.0,Galaxy,41.6042,3.6069,Cet,11,11/2,,, -NGC 1087,,60.0,Galaxy,41.6042,-0.4989,Cet,11,11/2,L,2800.0, -NGC 1090,,4.0,Galaxy,41.6417,-0.2472,Cet,11,11/2,L,2800.0, -NGC 1097,NGC 1097,9.3,Galaxy,41.5792,-30.2747,For,11,11/1,L,2800.0,150.0 -NGC 1110,,3.0,Galaxy,42.2917,-7.8383,Eri,11,11/2,,, -NGC 1129,,4.0,Galaxy,43.6125,41.5794,Per,11,11/4,,, -NGC 1140,,1.4,Gal-Mag,43.6417,-10.0281,Eri,11,11/4,L,2800.0, -NGC 1145,,3.0,Galaxy,43.5,-18.6333,Eri,11,11/4,,, -NGC 1154,,2.0,Galaxy,44.5333,-10.3636,Eri,11,11/4,L,1000.0, -NGC 1156,,3.0,Gal-Mag,44.925,25.2381,Ari,11,11/5,L,2800.0, -NGC 1160,,1.6,Galaxy,45.3042,44.9547,Per,11,11/5,L,2800.0, -NGC 1161,,1.6,Galaxy,45.3083,44.8975,Per,11,11/5,L,2800.0, -NGC 1169,,4.4,Galaxy,45.8958,46.3856,Per,11,11/6,L,2800.0, -NGC 1174,,3.0,Galaxy,46.3792,42.835,Per,11,11/6,,, -NGC 1179,,5.0,Galaxy,45.6583,-18.8983,Eri,11,11/6,,, -NGC 1186,,3.0,Galaxy,46.25,42.8333,Per,11,11/6,,, -NGC 1187,,5.0,Galaxy,45.6583,-22.8675,Eri,11,11/6,L,1000.0, -NGC 1194,,6.0,Galaxy,45.9542,-1.1039,Cet,11,11/6,,, -NGC 1200,,5.0,Galaxy,45.9792,-11.9919,Eri,11,11/6,,, -NGC 1201,,4.0,Galaxy,46.0,-26.0667,Eri,11,11/6,,, -NGC 1207,,2.0,Galaxy,47.0625,38.3822,Per,11,11/7,L,2800.0, -NGC 1210,,3.0,Galaxy,46.6875,-25.7181,For,11,11/7,,, -NGC 1211,,3.0,Galaxy,46.7167,-0.795,Cet,11,11/7,L,2800.0, -NGC 1232,Eye of God Galaxy,7.8,Galaxy,47.4375,-20.5794,Eri,11,11/7,L,2800.0, -NGC 1245,,10.0,Open Cl,48.675,47.2367,Per,11,11/9,L,1000.0, -NGC 1261,,7.0,Glob Cl,48.075,-55.2167,Hor,11,11/8,,, -NGC 1288,,2.0,Galaxy,49.3042,-32.5767,For,11,11/9,,, -NGC 1291,Snow Collar Galaxy,10.5,Galaxy,49.325,-41.1081,Eri,11,11/9,L,1000.0, -NGC 1300,,6.5,Galaxy,49.9208,-19.4114,Eri,11,11/10,L,1000.0, -NGC 1316,Fornax A Galaxy,13.0,Gal-Lent,50.675,-37.2083,For,11,11/11,L,1000.0, -NGC 1317,,3.0,Galaxy,50.6833,-37.1033,For,11,11/11,L,1000.0, -NGC 1325,Holmberg VI Galaxy,5.0,Galaxy,51.1042,-21.5444,Eri,11,11/11,,, -NGC 1326,,4.0,Galaxy,50.9833,-36.4642,For,11,11/11,,, -NGC 1333,Embryo Nebula,100.0,Ref Neb,52.3333,31.4156,Per,11,11/12,L,455.0,40.0 -NGC 1334,,2.0,Galaxy,52.5083,41.8322,Per,11,11/13,,, -NGC 1337,,7.0,Galaxy,52.025,-8.3894,Eri,11,11/12,,, -NGC 1342,"Stingray, Little Scorpion Cluster",30.0,Open Cl,52.9083,37.3767,Per,11,11/13,RGB,1000.0, -NGC 1343,,2.8,Galaxy,54.4583,72.5711,Cas,11,11/15,L,1000.0, -NGC 1344,,4.0,Galaxy,52.0792,-31.0681,For,11,11/12,,, -NGC 1346,,5.0,Galaxy,52.5542,-5.5431,Eri,11,11/13,L,2800.0, -NGC 1350,,6.0,Galaxy,52.7833,-33.6286,For,11,11/13,L,1000.0, -NGC 1353,,3.4,Galaxy,53.0125,-20.8183,Eri,11,11/13,,, -NGC 1355,,2.0,Galaxy,53.3458,-4.9986,Eri,11,11/14,L,2800.0, -NGC 1357,,2.4,Galaxy,53.3208,-13.6642,Eri,11,11/13,L,1000.0, -NGC 1358,,2.8,Galaxy,53.4167,-5.0897,Eri,11,11/14,L,2800.0, -NGC 1359,,1.9,Gal-Mag,53.45,-19.4917,Eri,11,11/14,L,2800.0, -NGC 1360,Robins Egg Nebula,7.0,PN,53.3125,-25.8719,For,11,11/13,HOO,910.0,124.0 -NGC 1365,,9.8,Galaxy,53.4,-36.1403,For,11,11/14,L,2800.0, -NGC 1369,,1.5,Galaxy,54.1875,-36.2558,Eri,11,11/14,,, -NGC 1371,,5.4,Galaxy,53.7542,-24.9331,For,11,11/14,L,2800.0, -NGC 1374,,1.8,Galaxy,53.8208,-35.2261,For,11,11/14,,, -NGC 1376,,2.0,Galaxy,54.275,-5.0433,Eri,11,11/14,,, -NGC 1380,,5.0,Galaxy,54.1167,-34.9758,For,11,11/14,L,455.0, -NGC 1385,,3.0,Galaxy,54.25,-24.5,Eri,11,11/15,,, -NGC 1386,,3.5,Galaxy,54.1958,-35.9992,Eri,11,11/14,,, -NGC 1391,,2.0,Galaxy,54.7208,-18.3542,Eri,11,11/15,,, -NGC 1395,,3.0,Galaxy,54.625,-23.0275,Eri,11,11/15,,, -NGC 1397,,2.0,Galaxy,54.9458,-4.6706,Eri,11,11/15,,, -NGC 1398,,6.6,Galaxy,54.7167,-26.3375,For,11,11/15,L,1000.0, -NGC 1399,,7.0,Gal-Ell,54.6208,-35.4503,For,11,11/15,L,1000.0, -NGC 1400,,1.9,Gal-Ell,54.8792,-18.6881,Eri,11,11/15,L,1000.0, -NGC 1404,,4.0,Gal-Ell,54.7167,-35.5933,Eri,11,11/15,L,1000.0, -NGC 1407,,2.5,Gal-Ell,55.05,-18.58,Eri,11,11/15,L,1000.0, -NGC 1415,,4.0,Galaxy,55.2375,-22.5639,Eri,11,11/15,L,2800.0, -NGC 1417,,3.0,Galaxy,55.4875,-4.7058,Eri,11,11/16,L,2800.0, -NGC 1421,,3.6,Galaxy,55.6208,-13.4886,Eri,11,11/16,L,2800.0, -NGC 1425,,5.4,Galaxy,55.5458,-29.8939,For,11,11/16,L,2800.0, -NGC 1433,,7.0,Galaxy,55.5042,-47.2219,Hor,11,11/16,,, -NGC 1436,,3.0,Galaxy,55.9042,-35.8542,Eri,11,11/16,,, -NGC 1444,,5.0,Open Cl,57.35,52.6667,Per,11,11/16,,, -NGC 1452,,2.0,Galaxy,56.3417,-18.6339,Eri,11,11/16,,, -NGC 1453,,2.0,Galaxy,56.6125,-3.9697,Eri,11,11/17,,, -NGC 1460,,2.0,Galaxy,56.5583,-36.6958,Eri,11,11/17,,, -NGC 1482,,1.5,Galaxy,58.6625,-20.5028,Eri,11,11/19,L,2800.0, -NGC 1491,Fossil Footprint Nebula,12.0,Em Neb,60.8083,51.3158,Per,11,11/21,SHO,2800.0,182.0 -NGC 1497,,2.0,Gal Group,60.5292,23.1328,Tau,11,11/21,L,1000.0, -NGC 1499,California Nebula,145.0,HII Neb,60.8083,36.3667,Per,11,11/21,SHO,1000.0,88.0 -NGC 1501,Oyster Nebula,0.9,PN,61.7458,60.9206,Cam,11,11/22,HOO,2800.0,179.0 -NGC 1502,Jolly Roger Cluster,15.0,Open Cl,61.9583,62.3317,Cam,11,11/22,RGB,455.0, -NGC 1507,,3.4,Galaxy,61.1125,-2.1886,Eri,11,11/21,,, -NGC 1510,,1.0,Galaxy,60.8875,-43.4003,Hor,11,11/21,L,2800.0, -NGC 1512,,4.0,Galaxy,60.975,-43.3494,Hor,11,11/21,L,2800.0, -NGC 1513,,2.0,Open Cl,62.5,49.5167,Per,11,11/22,,, -NGC 1514,Crystal Ball Nebula,2.0,PN,62.3208,30.7758,Tau,11,11/23,HOO,2800.0,57.0 -NGC 1516,,2.0,Galaxy,62.0292,-8.8297,Eri,11,11/22,,, -NGC 1528,,18.0,Open Cl,63.8458,51.215,Per,11,11/24,RGB,455.0, -NGC 1530,,4.9,Galaxy,65.8625,75.295,Cam,11,11/26,L,1000.0, -NGC 1532,NGC 1532,15.0,Galaxy,62.9958,-32.8506,Eri,11,11/23,L,2800.0,178.0 -NGC 1535,Cleopatra's Eye Nebula,0.8,PN,63.5667,-12.7394,Eri,11,11/24,HOO,2800.0, -NGC 1540,,1.2,Galaxy,63.7917,-28.4794,Eri,11,11/24,L,2800.0, -NGC 1545,,12.0,Open Cl,65.2375,50.2533,Per,11,11/26,L,1000.0, -NGC 1555,Hinds Variable Nebula,60.0,Ref Neb,65.4875,19.5342,Tau,11,11/26,HL,1000.0,156.0 -NGC 1560,,10.0,Galaxy,68.2,71.88,Cam,11,11/29,L,1000.0, -NGC 1568,,5.0,Galaxy,66.0875,-0.7386,Eri,11,11/26,L,2800.0, -NGC 1579,Northern Trifid Nebula,12.0,Em Neb,67.5583,35.2797,Per,11,11/28,H,2800.0, -NGC 1589,,3.0,Galaxy,67.6917,0.8636,Tau,11,11/28,,, -NGC 1592,,2.0,Gal-Mag,67.4208,-27.4086,Eri,11,11/28,L,2800.0, -NGC 1620,,3.0,Galaxy,69.1542,-0.1439,Eri,11,11/30,,, -NGC 1622,,4.0,Galaxy,69.1542,-3.1892,Eri,11,11/30,L,2800.0, -NGC 1637,,3.3,Galaxy,70.3667,-2.8575,Eri,12,12/1,L,2800.0, -NGC 1640,,3.0,Galaxy,70.5583,-20.435,Eri,12,12/1,L,2800.0, -NGC 1646,,2.0,Galaxy,71.1,-8.5319,Eri,12,12/2,L,2800.0, -NGC 1647,Pirate Moon Cluster,45.0,Open Cl,71.4792,19.115,Tau,12,12/2,RGB,455.0, -NGC 1662,,20.0,Open Cl,72.1125,10.9367,Ori,12,12/3,,, -NGC 1664,Kite Cluster,20.0,Asterism,72.775,43.675,Aur,12,12/3,L,1000.0, -NGC 1709,,1.3,Galaxy,74.6833,-0.4783,Ori,12,12/5,,, -NGC 1721,NGC 1721,30.0,Gal Group,74.8208,-11.1189,Eri,12,12/5,L,1960.0,184.0 -NGC 1723,,30.0,Galaxy,74.8583,-10.9808,Eri,12,12/5,L,1960.0, -NGC 1750,,60.0,Open Cl,75.9792,23.6586,Tau,12,12/6,RGB,455.0, -NGC 1752,,3.0,Galaxy,75.5375,-8.2411,Eri,12,12/6,,, -NGC 1758,,90.0,Open Cl,76.1458,23.7983,Tau,12,12/7,RGB,455.0, -NGC 1784,,4.0,Galaxy,76.3625,-11.8717,Lep,12,12/7,L,2800.0, -NGC 1788,"Cosmic Bat, Foxface Nebula",8.0,Em Neb,76.7208,-3.3408,Ori,12,12/7,HL,2800.0,167.0 -NGC 1792,,4.0,Galaxy,76.3083,-37.9803,Col,12,12/7,L,2800.0, -NGC 1807,Poor Man's Double Cluster,17.0,Open Cl,77.6792,16.5217,Tau,12,12/8,RGB,910.0, -NGC 1808,,7.0,Galaxy,76.9292,-37.5133,Col,12,12/7,L,2800.0, -NGC 1817,Poor Man's Double Cluster,16.0,Open Cl,78.0625,16.69,Tau,12,12/9,RGB,910.0, -NGC 1819,,3.0,Galaxy,77.9417,5.2003,Ori,12,12/8,L,2800.0, -NGC 1851,,11.0,Glob Cl,78.5292,-40.0461,Col,12,12/9,L,910.0, -NGC 1857,,6.0,Open Cl,80.0208,39.325,Aur,12,12/11,,, -NGC 1879,,2.0,Galaxy,79.95,-32.1422,Col,12,12/11,,, -NGC 1907,,5.0,Open Cl,82.0,35.3167,Aur,12,12/11,,, -NGC 1931,Fly Nebula,3.0,Open Cl,82.8542,34.245,Aur,12,12/13,SHO,1000.0, -NGC 1954,,4.0,Galaxy,83.2,-14.0628,Lep,12,12/14,L,1000.0, -NGC 1964,,3.0,Galaxy,83.35,-21.95,Lep,12,12/14,,, -NGC 1977,Running Man Nebula,20.0,Em Neb,83.8167,-4.8208,Ori,12,12/14,RGB,910.0,144.0 -NGC 1980,Collinder 72 Cluster,15.0,Open Cl,83.85,-5.9167,Ori,12,12/14,RGB,1000.0, -NGC 1981,Coal Car Cluster,25.0,Open Cl,83.7875,-4.4317,Ori,12,12/14,RGB,910.0, -NGC 1985,,2.0,Ref Neb,84.45,31.9889,Aur,12,12/15,L,1960.0, -NGC 1999,"Rubber Stamp, Keyhole Nebula",2.0,Ref Neb,84.1042,-6.7158,Ori,12,12/15,H,1000.0,82.0 -NGC 2022,Kissing Crescents Nebula,0.5,PN,85.525,9.0869,Ori,12,12/16,RGB,1000.0, -NGC 2024,Flame Nebula,30.0,Dark Neb,85.425,-1.8567,Ori,12,12/16,H,1000.0,56.0 -NGC 2070,Tarantula Nebula,30.0,Em Neb,84.65,-69.0833,Dor,12,12/15,,, -NGC 2090,,5.0,Galaxy,86.7583,-34.2511,Col,12,12/17,L,2800.0, -NGC 2126,,6.0,Open Cl,90.75,49.9,Aur,12,12/21,,, -NGC 2129,,6.0,Open Cl,90.25,23.3,Gem,12,12/20,,, -NGC 2139,,2.0,Galaxy,90.2833,-23.6728,Lep,12,12/21,,, -NGC 2146,NGC 2146,6.0,Galaxy,94.6583,78.3561,Cam,12,12/25,L,2800.0,191.0 -NGC 2149,,3.0,Ref Neb,90.8792,-9.7306,Mon,12,12/22,L,1000.0, -NGC 2158,,5.0,Open Cl,91.8542,24.0967,Gem,12,12/23,,, -NGC 2163,Ced 62 Nebula,3.0,Ref Neb,91.9542,18.6575,Ori,12,12/23,L,1000.0, -NGC 2169,"""37"",""LE"", Shopping Cart Cluster",7.0,Asterism,92.1,13.965,Ori,12,12/23,L,1000.0,166.0 -NGC 2170,Angel Nebula,110.0,Ref Neb,91.8833,-6.3992,Mon,12,12/23,HL,1000.0,90.0 -NGC 2174,Monkey Head Nebula,40.0,Em Neb,92.35,20.6594,Ori,12,12/23,SHO,1000.0,132.0 -NGC 2185,,3.0,Ref Neb,92.75,-6.2267,Mon,12,12/24,L,1960.0, -NGC 2186,,4.0,Open Cl,93.05,5.45,Ori,12,12/24,,, -NGC 2194,,10.0,Open Cl,93.45,12.8,Ori,12,12/24,,, -NGC 2196,,3.0,Galaxy,93.0417,-21.8064,Lep,12,12/24,L,2800.0, -NGC 2204,,12.0,Open Cl,93.925,-18.65,CMa,12,12/25,,, -NGC 2207,,4.3,Galaxy,94.0917,-21.3728,CMa,12,12/25,L,1960.0, -NGC 2215,,11.0,Open Cl,95.25,-7.2833,Mon,12,12/26,,, -NGC 2217,,4.8,Galaxy,95.4167,-27.2339,CMa,12,12/26,L,1000.0, -NGC 2223,,3.0,Galaxy,96.15,-22.8386,CMa,12,12/27,,, -NGC 2227,,2.0,Galaxy,96.4917,-22.005,CMa,12,12/27,,, -NGC 2232,,45.0,Open Cl,97.0042,-4.8467,Mon,12,12/28,,, -NGC 2237,Rosette Nebula,80.0,Em Neb,97.725,5.05,Mon,12,12/29,SHO,455.0,7.0 -NGC 2242,,0.5,PN,98.5292,44.7772,Aur,12,12/29,,, -NGC 2244,Rosette Nebula OC,75.0,Open Cl,97.9833,4.9431,Mon,12,12/29,SHO,455.0, -NGC 2245,Ced80 Nebula,40.0,Ref Neb,98.1708,10.1567,Mon,12,12/29,L,1000.0,142.0 -NGC 2247,,40.0,Ref Neb,98.2708,10.3222,Mon,12,12/29,L,1000.0, -NGC 2251,,10.0,Open Cl,98.6583,8.3667,Mon,12,12/30,,, -NGC 2261,Hubble's Variable Nebula,2.0,Ref Neb,99.7917,8.7444,Mon,12,12/31,L,1000.0,61.0 -NGC 2264,"Christmas Tree Cluster,Cone Nebula",120.0,HII Neb,100.2417,9.895,Mon,12,12/31,HL,1000.0,42.0 -NGC 2266,,6.0,Open Cl,100.8,26.9667,Gem,1,1/1,,, -NGC 2268,,3.4,Galaxy,108.575,84.3819,Cam,1,1/9,,, -NGC 2273,,3.5,Galaxy,102.5375,60.8458,Lyn,1,1/2,L,2800.0, -NGC 2274,,4.0,Galaxy,101.8208,33.5669,Gem,1,1/2,,, -NGC 2280,,5.6,Galaxy,101.2042,-27.6392,CMa,1,1/1,L,2800.0, -NGC 2281,Broken Heart Cluster,15.0,Open Cl,102.0708,41.0783,Aur,1,1/2,RGB,1000.0, -NGC 2282,Ced 87 Nebula,12.0,Ref Neb,101.7125,1.3156,Mon,1,1/2,L,1000.0, -NGC 2286,,14.0,Open Cl,101.9,-3.1667,Mon,1,1/2,,, -NGC 2290,,1.5,Gal Group,102.7375,33.4375,Gem,1,1/3,L,2800.0, -NGC 2298,,6.8,Glob Cl,102.2458,-36.0042,Pup,1,1/2,RGB,910.0, -NGC 2301,Hagrid's Dragon Cluster,12.0,Open Cl,102.9375,0.46,Mon,1,1/3,RGB,1000.0, -NGC 2304,,5.0,Open Cl,103.75,18.0167,Gem,1,1/4,,, -NGC 2311,,9.6,Open Cl,104.45,-4.5833,Mon,1,1/4,,, -NGC 2313,,2.0,Em Neb,104.5125,-7.945,Mon,1,1/5,L,2800.0, -NGC 2316,,4.0,Em Neb,104.9167,-7.7775,Mon,1,1/5,L,1000.0, -NGC 2324,,7.0,Open Cl,106.05,1.05,Mon,1,1/6,,, -NGC 2327,Seagull Nebula,240.0,HII Neb,106.0292,-11.3139,CMa,1,1/6,H,327.0,21.0 -NGC 2335,,20.0,Open Cl,106.6875,-10.0231,CMa,1,1/6,H,327.0, -NGC 2336,,7.0,Galaxy,111.7667,80.1781,Cam,1,1/12,L,1500.0, -NGC 2339,,3.0,Galaxy,107.0875,18.7803,Gem,1,1/7,,, -NGC 2340,,4.0,Galaxy,107.7958,50.1742,Lyn,1,1/8,,, -NGC 2343,,7.0,Open Cl,107.025,-10.6167,Mon,1,1/7,RGB,1000.0, -NGC 2346,Butterfly Nebula,2.0,PN,107.3417,-0.8061,Mon,1,1/7,HOO,2800.0, -NGC 2347,,2.0,Galaxy,109.0167,64.7111,Cam,1,1/9,,, -NGC 2353,,20.0,Open Cl,108.625,-10.2667,Mon,1,1/9,H,455.0, -NGC 2354,,20.0,Open Cl,109.0042,-25.69,CMa,1,1/9,,, -NGC 2355,,9.0,Open Cl,109.225,13.7833,Gem,1,1/9,,, -NGC 2357,,4.0,Galaxy,109.4208,23.3558,Gem,1,1/9,L,2800.0, -NGC 2359,"Thor’s Helmet, Duck Nebula",10.0,WR Neb,109.625,-13.2267,CMa,1,1/10,SHO,1000.0,11.0 -NGC 2360,Caroline's Cluster (not Caroline's Rose),13.0,Open Cl,109.4292,-15.6417,CMa,1,1/10,RGB,910.0, -NGC 2362,,8.0,Open Cl,109.6708,-24.955,CMa,1,1/10,RGB,910.0, -NGC 2366,,8.0,Gal-BCD,112.2292,69.2161,Cam,1,1/12,L,1000.0, -NGC 2371,Double Bubble,2.1,PN,111.3917,29.4881,Gem,1,1/11,HOO,2800.0,129.0 -NGC 2372,,2.1,PN,111.3917,29.4881,Gem,1,1/11,HOO,2800.0, -NGC 2392,"Eskimo, Clown Nebula",0.8,PN,112.2958,20.9117,Gem,1,1/12,HOO,2800.0,67.0 -NGC 2395,,12.0,Open Cl,111.775,13.5833,Gem,1,1/12,,, -NGC 2403,Crumb Galaxy,18.0,Galaxy,114.2125,65.6019,Cam,1,1/14,HL,1000.0, -NGC 2415,,1.0,Galaxy,114.2375,35.2422,Lyn,1,1/14,L,2800.0, -NGC 2419,Intergalactic Wanderer Cluster,4.0,Glob Cl,114.5333,38.8817,Lyn,1,1/15,RGB,910.0, -NGC 2420,Twinkling Comet Cluster,10.0,Open Cl,114.5958,21.5733,Gem,1,1/15,RGB,1000.0, -NGC 2421,,10.0,Open Cl,114.0542,-20.6117,Pup,1,1/14,,, -NGC 2422,,29.0,Open Cl,114.15,-14.5,Pup,1,1/14,,, -NGC 2438,,1.2,PN,115.4583,-14.7353,Pup,1,1/16,RGB,910.0, -NGC 2439,,10.0,Open Cl,115.1875,-31.6933,Pup,1,1/15,,, -NGC 2440,"Albino Butterfly, Kiss Nebula",1.0,PN,115.4792,-18.2086,Pup,1,1/16,HOO,2800.0, -NGC 2449,,5.0,Galaxy,116.8333,26.9306,Gem,1,1/17,,, -NGC 2451,Stinging Scorpion Cluster,45.0,Open Cl,116.3125,-37.9667,Pup,1,1/17,RGB ,910.0, -NGC 2452,,0.3,PN,116.8583,-27.3353,Pup,1,1/17,L,2800.0, -NGC 2453,,5.0,Open Cl,116.8958,-27.1939,Pup,1,1/17,L,2800.0, -NGC 2460,,30.0,Galaxy,119.2208,60.3494,Cam,1,1/19,L,1000.0, -NGC 2467,Skull and Crossbones Nebula,50.0,Em Neb,118.1083,-26.4367,Pup,1,1/18,SHO,1000.0,95.0 -NGC 2477,,27.0,Open Cl,118.0417,-38.53,Pup,1,1/18,RGB,910.0, -NGC 2479,,7.0,Open Cl,118.775,-17.7167,Pup,1,1/19,,, -NGC 2482,,12.0,Open Cl,118.725,-24.3,Pup,1,1/18,,, -NGC 2489,,8.0,Open Cl,119.0625,-30.0633,Pup,1,1/19,,, -NGC 2500,,2.9,Galaxy,120.4708,50.7375,Lyn,1,1/21,L,2800.0, -NGC 2506,,7.0,Open Cl,120.0042,-10.77,Mon,1,1/20,RGB,910.0, -NGC 2509,,8.0,Open Cl,120.175,-19.0667,Pup,1,1/20,,, -NGC 2516,Southern Beehive Cluster,22.0,Open Cl,119.5,-60.75,Car,1,1/20,,, -NGC 2527,,22.0,Open Cl,121.2417,-28.1467,Pup,1,1/22,,, -NGC 2532,,2.0,Galaxy,122.5625,33.9569,Lyn,1,1/23,L,2800.0, -NGC 2534,,2.0,Galaxy,123.225,55.6717,Lyn,1,1/24,,, -NGC 2539,Dish Cluster,15.0,Open Cl,122.6542,-12.8183,Pup,1,1/23,RGB,1000.0, -NGC 2541,,7.0,Galaxy,123.6667,49.0619,Lyn,1,1/24,L,2800.0, -NGC 2543,,2.0,Galaxy,123.2417,36.2544,Lyn,1,1/24,L,2800.0, -NGC 2546,"Heart & Dagger, Wounded Heart Cluster",70.0,Open Cl,123.0625,-37.595,Pup,1,1/23,RGB,455.0, -NGC 2547,,20.0,Open Cl,122.5375,-49.215,Vel,1,1/23,RGB,1000.0, -NGC 2552,,3.0,Gal-Mag,124.8333,50.0086,Lyn,1,1/25,L,2800.0, -NGC 2560,,20.0,Gal Group,124.8917,21.1144,Cnc,1,1/25,L,2800.0, -NGC 2567,,10.0,Open Cl,124.575,-30.6333,Pup,1,1/24,,, -NGC 2571,,13.0,Open Cl,124.725,-29.7333,Pup,1,1/24,,, -NGC 2579,,3.0,HII Neb,125.2208,-36.2167,Pup,1,1/26,H,1000.0, -NGC 2595,,3.0,Galaxy,126.925,21.4789,Cnc,1,1/27,L,1000.0, -NGC 2610,,0.8,PN,128.3458,-16.1492,Hya,1,1/29,HOO,2800.0, -NGC 2613,,7.0,Galaxy,128.3458,-22.9731,Pyx,1,1/29,L,2800.0, -NGC 2627,,11.0,Open Cl,129.325,-29.95,Pup,1,1/30,,, -NGC 2654,,4.0,Galaxy,132.3,60.2206,UMa,2,2/2,L,2800.0, -NGC 2665,,1.5,Galaxy,131.5042,-19.3031,Hya,2,2/1,L,2800.0, -NGC 2681,,4.0,Galaxy,133.3875,51.3136,UMa,2,2/3,L,2800.0, -NGC 2683,UFO Galaxy,9.3,Galaxy,133.175,33.4206,Lyn,2,2/3,L,1000.0, -NGC 2684,,20.0,Gal Group,133.725,49.1603,UMa,2,2/3,L,2800.0, -NGC 2701,,2.0,Galaxy,134.775,53.7703,UMa,2,2/4,,, -NGC 2713,,4.0,Galaxy,134.3375,2.9208,Hya,2,2/4,,, -NGC 2715,One Heavy Arm Galaxy,5.0,Galaxy,137.025,78.0856,Cam,2,2/7,,, -NGC 2718,,2.5,Galaxy,134.7083,6.2928,Hya,2,2/4,L,2800.0, -NGC 2724,,2.0,Galaxy,135.2583,35.7622,Lyn,2,2/5,L,2800.0, -NGC 2736,"Herschel's Ray, Pencil Nebula",40.0,SNR,135.0667,-45.9483,Vel,2,2/5,SHO,1000.0,133.0 -NGC 2742,,3.0,Galaxy,136.8917,60.4794,UMa,2,2/6,,, -NGC 2744,,2.0,Galaxy,136.1625,18.4639,Cnc,2,2/6,L,2800.0, -NGC 2748,,3.0,Galaxy,138.4292,76.4756,Cam,2,2/8,,, -NGC 2750,,2.0,Galaxy,136.45,25.4367,Cnc,2,2/6,L,1000.0, -NGC 2768,,6.0,Galaxy,137.9042,60.0369,UMa,2,2/7,,, -NGC 2775,Black-browed Galaxy ,4.5,Galaxy,137.5833,7.0378,Cnc,2,2/7,L,2800.0, -NGC 2776,,3.0,Galaxy,138.0625,44.9547,Lyn,2,2/8,,, -NGC 2780,,1.0,Galaxy,138.1833,34.9256,Lyn,2,2/8,,, -NGC 2787,,3.0,Galaxy,139.8292,69.2031,UMa,2,2/9,L,2800.0, -NGC 2792,,0.2,PN,138.1125,-42.4281,Vel,2,2/8,,, -NGC 2793,,1.0,Galaxy,139.1917,34.4319,Lyn,2,2/9,L,2800.0, -NGC 2811,,2.5,Galaxy,139.075,-16.3,Hya,2,2/9,,, -NGC 2818,,2.0,PN,139.0042,-36.6269,Pyx,2,2/9,HOO,910.0, -NGC 2820,,4.0,Galaxy,140.4417,64.2583,UMa,2,2/10,,, -NGC 2835,,6.3,Galaxy,139.4708,-22.355,Hya,2,2/9,L,1500.0, -NGC 2841,"Radiant, Tiger's Eye Galaxy",8.1,Galaxy,140.5125,50.9764,UMa,2,2/10,L,2800.0, -NGC 2859,,5.0,Galaxy,141.0792,34.5131,LMi,2,2/11,L,1000.0, -NGC 2865,,2.0,Galaxy,140.875,-23.1608,Hya,2,2/10,,, -NGC 2867,,0.2,PN,140.35,-58.3167,Car,2,2/10,,, -NGC 2876,,3.0,Galaxy,141.3083,-6.7169,Hya,2,2/11,,, -NGC 2884,,3.0,Galaxy,141.6,-11.5553,Hya,2,2/11,,, -NGC 2893,,1.4,Galaxy,142.5708,29.54,Leo,2,2/12,,, -NGC 2903,Long Arm Galaxy,12.6,Galaxy,143.0417,21.5011,Leo,2,2/13,L,2800.0, -NGC 2929,,6.0,Galaxy,144.375,23.1608,Leo,2,2/14,,, -NGC 2935,,3.5,Galaxy,144.1875,-21.1283,Hya,2,2/14,L,2800.0, -NGC 2943,,8.0,Gal Group,144.6375,17.0314,Leo,2,2/14,L,2800.0, -NGC 2950,,3.0,Galaxy,145.6458,58.8511,UMa,2,2/15,,, -NGC 2964,,3.0,Galaxy,145.725,31.8472,Leo,2,2/15,L,2800.0, -NGC 2968,,2.0,Galaxy,145.8,31.9283,Leo,2,2/16,L,2800.0, -NGC 2974,,3.4,Gal-Ell,145.65,-3.7167,Sex,2,2/15,,, -NGC 2976,,4.9,Galaxy,146.8167,67.9164,UMa,2,2/17,L,1000.0, -NGC 2983,,2.6,Galaxy,145.9208,-20.4775,Hya,2,2/16,,, -NGC 2985,,4.0,Galaxy,147.5917,72.2789,UMa,2,2/17,L,2800.0, -NGC 2997,,9.0,Galaxy,146.4125,-31.1908,Ant,2,2/16,L,1500.0, -NGC 2998,,3.0,Galaxy,147.1833,44.0811,UMa,2,2/17,L,2800.0, -NGC 3020,,3.0,Galaxy,147.5292,12.8133,Leo,2,2/17,,, -NGC 3021,,2.0,Galaxy,147.7375,33.5539,LMi,2,2/17,,, -NGC 3023,,3.0,Galaxy,147.4667,0.6189,Sex,2,2/17,L,2800.0, -NGC 3044,,5.0,Galaxy,148.4208,1.5792,Sex,2,2/18,,, -NGC 3049,,3.0,Galaxy,148.7083,9.2717,Leo,2,2/18,L,2800.0, -NGC 3077,,4.6,Galaxy,150.8333,68.7339,UMa,2,2/21,L,1000.0, -NGC 3079,,7.6,Galaxy,150.4917,55.6808,UMa,2,2/20,L,2800.0, -NGC 3081,,2.0,Galaxy,149.875,-22.8261,Hya,2,2/20,L,2800.0, -NGC 3090,,15.0,Galaxy,150.125,-2.9692,Sex,2,2/20,,, -NGC 3109,,19.0,Gal-Mag,150.775,-26.1575,Hya,2,2/21,L,1000.0, -NGC 3110,,3.0,Galaxy,151.0083,-6.475,Sex,2,2/21,,, -NGC 3115,"Spotless, Spindle Galaxy",8.3,Gal-Lent,151.3083,-7.7189,Sex,2,2/21,L,910.0, -NGC 3124,,3.0,Galaxy,151.6667,-19.2219,Hya,2,2/21,,, -NGC 3132,Eight-burst Nebula,1.0,PN,151.7583,-40.4364,Vel,2,2/22,HOO,2800.0,155.0 -NGC 3147,,4.0,Galaxy,154.2208,73.4006,Dra,2,2/24,L,1960.0, -NGC 3162,,3.0,Galaxy,153.3833,22.7375,Leo,2,2/23,,, -NGC 3166,,30.0,Galaxy,153.4375,3.425,Sex,2,2/23,L,1000.0, -NGC 3169,,4.8,Galaxy,153.5625,3.4672,Sex,2,2/23,L,1000.0, -NGC 3184,Little Pinwheel Galaxy,6.9,Galaxy,154.5708,41.4242,UMa,2,2/24,L,1000.0, -NGC 3190,,4.4,Galaxy,154.525,21.8333,Leo,2,2/24,,, -NGC 3193,,2.0,Gal-Ell,154.6,21.9,Leo,2,2/24,,, -NGC 3195,,0.6,PN,265.175,-80.8667,Cha,6,6/17,,, -NGC 3198,,8.3,Galaxy,154.9792,45.55,UMa,2,2/25,L,1000.0, -NGC 3201,,18.0,Glob Cl,154.4042,-46.4125,Vel,2,2/24,RGB,910.0, -NGC 3205,,10.0,Galaxy,155.2083,42.9714,UMa,2,2/25,,, -NGC 3206,,3.0,Galaxy,155.45,56.93,UMa,2,2/25,,, -NGC 3221,,3.0,Galaxy,155.5833,21.5683,Leo,2,2/25,L,1960.0, -NGC 3223,,4.0,Galaxy,155.3958,-34.2667,Ant,2,2/25,,, -NGC 3226,,5.6,Galaxy,155.8625,19.8983,Leo,2,2/26,L,2800.0, -NGC 3228,Queen's Cache Cluster ,5.0,Open Cl,155.3417,-51.7283,Vel,2,2/25,RGB,910.0, -NGC 3242,"Ghost of Jupiter, CBS Eye Nebula",0.75,PN,156.1917,-18.6428,Hya,2,2/26,HOO,2800.0,175.0 -NGC 3245,,3.2,Galaxy,156.825,28.5,LMi,2,2/27,,, -NGC 3254,,5.0,Galaxy,157.3333,29.4917,LMi,2,2/27,L,2800.0, -NGC 3256,,4.0,Galaxy,156.9625,-43.9056,Vel,2,2/27,L,2800.0, -NGC 3261,,4.0,Galaxy,157.2583,-44.6572,Vel,2,2/27,,, -NGC 3269,,10.0,Gal Group,157.4875,-35.2242,Ant,2,2/27,L,2800.0, -NGC 3275,,3.0,Galaxy,157.7167,-36.7372,Ant,2,2/28,,, -NGC 3277,,2.3,Galaxy,158.225,28.5167,LMi,2,2/28,,, -NGC 3279,,2.0,Galaxy,158.6792,11.1967,Leo,3,3/1,,, -NGC 3293,,5.0,Open Cl,158.95,-58.2167,Pup,3,3/1,,, -NGC 3294,,3.0,Galaxy,159.0667,37.3244,LMi,3,3/1,,, -NGC 3299,,2.0,Galaxy,159.1,12.7069,Leo,3,3/1,,, -NGC 3313,,5.0,Galaxy,159.3542,-25.3186,Hya,3,3/1,,, -NGC 3314,,2.0,Galaxy,159.3042,-27.6842,Hya,3,3/1,,, -NGC 3319,,7.0,Galaxy,159.7917,41.6872,UMa,3,3/2,L,2800.0, -NGC 3332,,4.0,Galaxy,160.1167,9.1825,Leo,3,3/2,,, -NGC 3338,,6.0,Galaxy,160.5333,13.7469,Leo,3,3/2,L,2800.0, -NGC 3344,,6.9,Galaxy,160.8792,24.9222,LMi,3,3/3,L,1500.0, -NGC 3346,,3.0,Galaxy,160.9125,14.8719,Leo,3,3/3,L,2800.0, -NGC 3347,,4.0,Galaxy,160.6958,-36.3525,Ant,3,3/3,L,2800.0, -NGC 3356,,10.0,Galaxy,161.05,6.7586,Leo,3,3/3,,, -NGC 3358,,4.0,Galaxy,160.8875,-36.4108,Ant,3,3/3,L,2800.0, -NGC 3359,,6.8,Galaxy,161.6542,63.2236,UMa,3,3/4,L,1000.0, -NGC 3367,,2.0,Galaxy,161.6458,13.7503,Leo,3,3/4,,, -NGC 3370,,3.0,Galaxy,161.7667,17.2733,Leo,3,3/4,,, -NGC 3372,Eta Carinae Nebula,120.0,Em Neb,160.95,-59.8667,Car,3,3/3,,, -NGC 3377,,5.2,Gal-Ell,161.925,13.9833,Leo,3,3/4,,, -NGC 3384,M105 Trio,6.0,Galaxy,162.0708,12.6294,Leo,3,3/4,L,910.0, -NGC 3389,M105 Trio,3.0,Galaxy,162.1167,12.5331,Leo,3,3/4,L,910.0, -NGC 3395,,1.8,Galaxy,162.45,0.5497,LMi,3,3/4,,, -NGC 3412,,3.6,Galaxy,162.725,0.2236,Leo,3,3/5,,, -NGC 3423,,4.0,Galaxy,162.8083,5.84,Sex,3,3/5,L,2800.0, -NGC 3424,,15.0,Galaxy,162.9458,32.9,LMi,3,3/5,,, -NGC 3433,,4.0,Galaxy,163.0167,10.1481,Leo,3,3/5,L,2800.0, -NGC 3434,,3.0,Galaxy,162.9917,3.7917,Leo,3,3/5,,, -NGC 3447,,4.0,Gal-Mag,163.35,16.7722,Leo,3,3/5,L,2800.0, -NGC 3450,,3.0,Galaxy,162.0167,-20.8492,Hya,3,3/4,,, -NGC 3454,,2.0,Galaxy,163.6208,17.3439,Leo,3,3/6,L,2800.0, -NGC 3455,,2.0,Galaxy,163.6292,17.2847,Leo,3,3/6,L,2800.0, -NGC 3486,,7.0,Galaxy,165.1,28.975,LMi,3,3/7,L,2800.0, -NGC 3489,,4.0,Galaxy,165.0792,13.9011,Leo,3,3/7,,, -NGC 3501,,4.0,Galaxy,165.6958,17.9892,Leo,3,3/8,L,2800.0, -NGC 3504,,3.0,Galaxy,165.7958,27.9725,LMi,3,3/8,L,2800.0, -NGC 3507,,4.0,Galaxy,165.8542,18.135,Leo,3,3/8,L,2800.0, -NGC 3510,,4.0,Galaxy,165.9333,28.885,LMi,3,3/8,,, -NGC 3511,,5.0,Galaxy,165.85,-23.0864,Crt,3,3/8,L,2800.0, -NGC 3512,,3.0,Galaxy,166.0125,28.0367,LMi,3,3/8,L,2800.0, -NGC 3513,,3.0,Galaxy,165.9417,-23.2444,Crt,3,3/8,L,2800.0, -NGC 3521,Bubble Galaxy,11.0,Galaxy,166.4542,-0.0361,Leo,3,3/9,L,1000.0,85.0 -NGC 3532,Pincushion Cluster,50.0,Open Cl,166.375,-58.7333,Car,3,3/9,,, -NGC 3583,,15.0,Galaxy,168.5458,48.3183,UMa,3,3/11,L,2800.0, -NGC 3585,,3.0,Galaxy,168.3208,-26.7553,Hya,3,3/10,,, -NGC 3593,,3.0,Galaxy,168.6542,12.8175,Leo,3,3/11,L,2800.0, -NGC 3596,,4.0,Galaxy,168.775,14.7867,Leo,3,3/11,,, -NGC 3607,,4.0,Galaxy,169.2292,18.0517,Leo,3,3/11,,, -NGC 3608,,4.2,Gal-Ell,169.25,18.15,Leo,3,3/11,,, -NGC 3610,,2.7,Gal-Ell,169.6,58.7833,UMa,3,3/12,,, -NGC 3611,,2.4,Galaxy,169.375,4.5547,Leo,3,3/11,,, -NGC 3613,,3.9,Gal-Ell,169.725,58.0,UMa,3,3/12,,, -NGC 3614,,5.0,Galaxy,169.5875,45.7475,UMa,3,3/12,,, -NGC 3619,,2.7,Galaxy,169.85,57.7667,UMa,3,3/12,,, -NGC 3621,,10.0,Galaxy,169.5667,-32.8139,Hya,3,3/12,L,1500.0, -NGC 3626,,3.0,Galaxy,170.0167,18.3569,Leo,3,3/12,L,1500.0, -NGC 3628,Hamburger Galaxy,15.0,Galaxy,170.0708,13.5886,Leo,3,3/12,L,1000.0,59.0 -NGC 3640,,4.0,Galaxy,170.2792,3.235,Leo,3,3/12,,, -NGC 3642,,6.0,Galaxy,170.575,59.0747,UMa,3,3/13,L,2800.0, -NGC 3646,,4.0,Galaxy,170.4292,20.1697,Leo,3,3/13,,, -NGC 3652,,2.4,Galaxy,170.6625,37.7647,UMa,3,3/13,,, -NGC 3655,,1.5,Galaxy,170.725,0.2764,Leo,3,3/13,,, -NGC 3659,,2.0,Galaxy,170.9375,17.8172,Leo,3,3/13,,, -NGC 3660,,3.0,Galaxy,170.8833,-8.6583,Crt,3,3/13,,, -NGC 3665,,4.3,Galaxy,171.175,38.7667,UMa,3,3/13,,, -NGC 3672,,4.0,Galaxy,171.2583,-9.795,Crt,3,3/13,,, -NGC 3675,,5.9,Galaxy,171.5333,43.5858,UMa,3,3/14,L,1000.0, -NGC 3683,,2.0,Galaxy,171.8833,56.8778,UMa,3,3/14,L,2800.0, -NGC 3686,,3.0,Galaxy,171.9333,17.2236,Leo,3,3/14,,, -NGC 3717,,6.0,Galaxy,172.8833,-30.3083,Hya,3,3/15,L,2800.0, -NGC 3721,,2.0,Galaxy,173.6208,-9.66,Crt,3,3/16,,, -NGC 3726,,6.0,Galaxy,173.3375,47.0286,UMa,3,3/16,,, -NGC 3729,,3.0,Galaxy,173.45,53.1333,UMa,3,3/16,,, -NGC 3733,,5.0,Galaxy,173.7583,54.8506,UMa,3,3/16,,, -NGC 3766,,15.0,Open Cl,174.05,-61.6167,Cen,3,3/17,,, -NGC 3780,,20.0,Galaxy,174.8458,56.27,UMa,3,3/17,,, -NGC 3782,,2.0,Galaxy,174.8375,46.5133,UMa,3,3/17,,, -NGC 3801,,15.0,Galaxy,175.0708,17.7278,Leo,3,3/17,,, -NGC 3810,,4.0,Galaxy,175.2458,11.4717,Leo,3,3/17,,, -NGC 3811,,2.4,Galaxy,175.3208,47.6911,UMa,3,3/18,,, -NGC 3813,,2.2,Galaxy,175.325,0.6092,UMa,3,3/18,,, -NGC 3817,,12.0,Galaxy,175.4708,10.3039,Vir,3,3/18,,, -NGC 3821,,0.7,Galaxy,175.5375,20.3158,Leo,3,3/18,,, -NGC 3846,,2.0,Galaxy,176.0625,55.035,UMa,3,3/18,,, -NGC 3877,,5.4,Galaxy,176.5333,47.4947,UMa,3,3/19,L,2800.0, -NGC 3884,,3.0,Galaxy,176.55,20.3914,Leo,3,3/19,,, -NGC 3887,,3.3,Galaxy,176.7708,-16.8544,Crt,3,3/19,,, -NGC 3888,,4.4,Galaxy,176.8958,55.9672,UMa,3,3/20,L,2800.0, -NGC 3893,,4.4,Galaxy,177.1583,48.7108,UMa,3,3/19,L,2800.0, -NGC 3898,,4.4,Galaxy,177.3125,56.0842,UMa,3,3/20,L,2800.0, -NGC 3900,,3.5,Galaxy,177.2875,27.0219,Leo,3,3/20,,, -NGC 3906,,2.0,Galaxy,177.4167,48.4256,UMa,3,3/20,,, -NGC 3912,,1.7,Galaxy,177.5208,26.4797,Leo,3,3/20,,, -NGC 3913,,2.6,Galaxy,177.6625,55.3536,UMa,3,3/20,,, -NGC 3917,,5.0,Galaxy,177.6875,51.8247,UMa,3,3/20,,, -NGC 3923,,3.0,Gal-Ell,177.7583,-28.8064,Hya,3,3/20,L,2800.0, -NGC 3928,,2.0,Galaxy,177.95,48.6828,UMa,3,3/20,,, -NGC 3938,,5.4,Galaxy,178.2042,44.1206,UMa,3,3/20,L,2800.0, -NGC 3941,,3.7,Galaxy,178.225,36.9833,UMa,3,3/20,,, -NGC 3945,,5.5,Galaxy,178.3083,60.6758,UMa,3,3/21,L,2800.0, -NGC 3949,,3.0,Galaxy,178.425,47.8589,UMa,3,3/21,,, -NGC 3953,,6.6,Galaxy,178.4542,52.3267,UMa,3,3/21,L,1000.0, -NGC 3955,,3.0,Galaxy,178.4875,-23.1647,Crt,3,3/21,,, -NGC 3962,,3.0,Gal-Ell,178.675,-13.9667,Crt,3,3/21,,, -NGC 3972,,4.0,Galaxy,178.9375,55.32,UMa,3,3/21,,, -NGC 3982,,2.5,Galaxy,179.1167,55.1253,UMa,3,3/21,,, -NGC 3997,,2.0,Galaxy,179.45,25.2706,Leo,3,3/22,,, -NGC 3998,,3.0,Galaxy,179.475,0.9242,UMa,3,3/22,,, -NGC 4004,,2.0,Galaxy,179.5208,27.8786,Leo,3,3/22,,, -NGC 4007,,2.5,Galaxy,179.5417,25.1219,Leo,3,3/22,,, -NGC 4010,,4.0,Galaxy,179.6542,47.2606,UMa,3,3/22,,, -NGC 4013,,5.0,Galaxy,179.6292,43.9469,UMa,3,3/22,L,2800.0, -NGC 4026,,5.0,Galaxy,179.8542,50.9617,UMa,3,3/22,,, -NGC 4030,,4.3,Galaxy,180.1,-1.1003,Vir,3,3/22,,, -NGC 4036,,4.5,Galaxy,180.3625,61.8956,UMa,3,3/23,L,1000.0, -NGC 4039,,2.6,Galaxy,180.475,-18.885,Crv,3,3/23,L,2800.0, -NGC 4041,,4.5,Galaxy,180.55,62.1372,UMa,3,3/23,L,1000.0, -NGC 4045,,3.0,Galaxy,180.675,1.9767,Vir,3,3/23,,, -NGC 4050,,3.0,Galaxy,180.725,-16.3742,Crv,3,3/23,,, -NGC 4051,,5.0,Galaxy,180.7917,44.5314,UMa,3,3/23,L,1000.0, -NGC 4062,,4.3,Galaxy,181.0167,31.8953,UMa,3,3/23,,, -NGC 4068,,3.0,Galaxy,181.0083,52.5906,UMa,3,3/23,,, -NGC 4085,,2.9,Galaxy,181.35,50.3667,UMa,3,3/24,,, -NGC 4096,,7.0,Galaxy,181.5042,47.4781,UMa,3,3/24,L,2800.0, -NGC 4100,,5.0,Galaxy,181.5333,49.5825,UMa,3,3/24,L,2800.0, -NGC 4102,,3.0,Galaxy,181.5958,52.7108,UMa,3,3/24,,, -NGC 4108,,2.0,Galaxy,181.6875,67.1628,Dra,3,3/24,,, -NGC 4111,,4.8,Gal-Lent,181.7625,43.0658,CVn,3,3/24,L,2800.0, -NGC 4125,,5.0,Gal-Ell,182.025,65.1739,Dra,3,3/24,L,2800.0, -NGC 4136,,4.0,Galaxy,182.325,29.9272,Com,3,3/25,,, -NGC 4138,,3.0,Galaxy,182.375,43.6853,CVn,3,3/25,,, -NGC 4143,,2.4,Galaxy,182.425,42.55,CVn,3,3/25,,, -NGC 4145,,6.0,Galaxy,182.5083,39.8825,CVn,3,3/25,,, -NGC 4147,,4.0,Glob Cl,182.525,18.5417,Com,3,3/25,RGB,1000.0, -NGC 4150,,2.3,Galaxy,182.65,30.4167,Com,3,3/25,,, -NGC 4151,Eye of Sauron Galaxy,6.0,Galaxy,182.6375,39.4058,CVn,3,3/25,L,2800.0, -NGC 4157,,7.0,Galaxy,182.7667,50.4844,UMa,3,3/25,L,2800.0, -NGC 4163,,2.0,Galaxy,183.0375,36.1686,CVn,3,3/25,,, -NGC 4174,part of The Box,2.0,Galaxy,183.1125,29.1492,Com,3,3/25,L,1000.0, -NGC 4178,,5.0,Galaxy,183.1917,10.8647,Vir,3,3/26,,, -NGC 4179,,4.0,Gal-Lent,183.225,1.3167,Vir,3,3/26,,, -NGC 4183,,5.0,Galaxy,183.3208,43.6981,CVn,3,3/26,,, -NGC 4203,,3.8,Galaxy,183.8,33.2167,Com,3,3/26,,, -NGC 4206,,5.0,Galaxy,183.8208,13.0239,Vir,3,3/26,,, -NGC 4212,,3.0,Gal-Mag,183.9125,13.9014,Com,3,3/26,,, -NGC 4214,,7.9,Gal-Mag,183.9125,36.3272,CVn,3,3/26,HL,1000.0, -NGC 4216,"Spindle, Silver Streak Galaxy",8.3,Galaxy,183.975,13.1497,Vir,3,3/26,L,910.0, -NGC 4217,,6.0,Galaxy,183.9625,47.0914,CVn,3,3/26,L,2800.0, -NGC 4220,,4.0,Galaxy,184.05,47.8833,CVn,3,3/26,,, -NGC 4222,,3.0,Gal-Mag,184.0958,13.3072,Com,3,3/26,,, -NGC 4236,,19.0,Gal-Mag,184.1792,69.4639,Dra,3,3/27,L,910.0, -NGC 4242,,5.0,Galaxy,184.375,45.6189,CVn,3,3/27,,, -NGC 4244,Silver Needle Galaxy,16.0,Galaxy,184.375,37.8075,CVn,3,3/27,L,2800.0, -NGC 4245,,3.0,Galaxy,184.4042,29.6078,Com,3,3/27,,, -NGC 4250,,3.0,Galaxy,184.3583,70.8022,Dra,3,3/27,,, -NGC 4251,,3.6,Galaxy,184.55,28.1833,Com,3,3/27,,, -NGC 4260,,3.0,Galaxy,184.8417,6.0989,Vir,3,3/27,,, -NGC 4261,,4.3,Gal-Ell,184.85,5.8333,Vir,3,3/27,,, -NGC 4262,,2.0,Galaxy,184.8792,14.8775,Com,3,3/27,,, -NGC 4273,,2.0,Galaxy,184.9833,5.3433,Vir,3,3/27,,, -NGC 4274,,7.0,Galaxy,184.9625,29.6142,Com,3,3/27,L,2800.0, -NGC 4278,,4.0,Galaxy,185.0292,29.2806,Com,3,3/27,,, -NGC 4281,,3.2,Gal-Lent,185.1,5.4,Vir,3,3/28,,, -NGC 4289,,4.0,Galaxy,185.2583,3.7222,Vir,3,3/28,,, -NGC 4293,Black Eyed Galaxy,6.0,Galaxy,185.3042,18.3828,Com,3,3/28,L,1000.0, -NGC 4298,,5.0,Galaxy,185.3875,14.5986,Com,3,3/28,L,2800.0, -NGC 4302,,5.0,Galaxy,185.425,14.5986,Com,3,3/28,L,2800.0, -NGC 4305,,2.0,Galaxy,185.5167,12.7406,Vir,3,3/28,,, -NGC 4312,,5.0,Galaxy,185.6292,15.5381,Com,3,3/28,,, -NGC 4314,,4.5,Galaxy,185.6333,29.8956,Com,3,3/28,L,2800.0, -NGC 4319,,3.0,Galaxy,185.4333,75.3219,Dra,3,3/28,L,1000.0, -NGC 4330,,5.0,Galaxy,185.8208,11.3678,Vir,3,3/28,,, -NGC 4331,,2.0,Galaxy,185.65,76.1725,Dra,3,3/28,L,2800.0, -NGC 4340,Holmberg 391 galaxy duo,4.0,Galaxy,185.8958,16.7222,Com,3,3/28,L,2800.0, -NGC 4346,,3.7,Galaxy,185.85,47.0,CVn,3,3/28,,, -NGC 4350,Holmberg 391 galaxy duo,4.0,Galaxy,185.9917,16.6933,Com,3,3/28,L,2800.0, -NGC 4351,,2.0,Galaxy,186.0083,12.2047,Vir,3,3/28,,, -NGC 4359,,4.0,Galaxy,186.05,31.5214,Com,3,3/28,,, -NGC 4361,,2.0,PN,186.1292,-18.785,Crv,3,3/29,RGB,1500.0, -NGC 4365,,7.0,Galaxy,186.1167,7.3175,Vir,3,3/29,,, -NGC 4371,,4.0,Galaxy,186.2292,11.7039,Vir,3,3/29,,, -NGC 4372,,19.0,Glob Cl,186.45,-72.6667,Mus,3,3/29,,, -NGC 4378,,3.0,Galaxy,186.325,4.925,Vir,3,3/29,,, -NGC 4388,,5.0,Galaxy,186.4458,12.6617,Vir,3,3/29,,, -NGC 4394,,4.0,Galaxy,186.4833,18.2139,Com,3,3/29,,, -NGC 4395,,12.9,Galaxy,186.4542,33.5469,CVn,3,3/29,L,1000.0, -NGC 4402,,4.0,Galaxy,186.5333,13.1125,Vir,3,3/29,,, -NGC 4410,,1.3,Gal Group,186.625,9.0192,Vir,3,3/29,L,2800.0, -NGC 4411,,2.0,Galaxy,186.625,8.8719,Vir,3,3/29,L,2800.0, -NGC 4414,Flock Galaxy,3.6,Galaxy,186.6125,31.2228,Com,3,3/29,L,2800.0, -NGC 4419,,3.4,Galaxy,186.7375,15.0469,Com,3,3/29,,, -NGC 4424,,3.7,Galaxy,186.8,9.4203,Vir,3,3/29,L,2800.0, -NGC 4429,,5.5,Gal-Lent,186.8625,11.1075,Vir,3,3/29,L,2800.0, -NGC 4435,,9.3,Galaxy,186.9542,13.0833,Vir,3,3/29,L,1000.0, -NGC 4440,,2.0,Galaxy,186.975,12.2931,Vir,3,3/29,,, -NGC 4441,,5.0,Galaxy,186.8375,64.8014,Dra,3,3/29,L,2800.0, -NGC 4442,,5.0,Galaxy,187.0167,9.8039,Vir,3,3/29,,, -NGC 4448,,4.0,Galaxy,187.0625,28.6206,Com,3,3/29,,, -NGC 4449,,5.0,Gal-BCD,187.0458,44.0939,CVn,3,3/29,HL,910.0, -NGC 4450,,4.8,Galaxy,187.1208,17.085,Com,3,3/30,L,1000.0, -NGC 4452,,2.4,Galaxy,187.1792,11.7547,Vir,3,3/30,,, -NGC 4454,,2.2,Galaxy,187.2125,-1.94,Vir,3,3/30,,, -NGC 4457,,3.0,Galaxy,187.2458,3.5706,Vir,3,3/30,,, -NGC 4459,,3.5,Galaxy,187.275,13.9833,Com,3,3/30,,, -NGC 4461,,3.7,Gal-Lent,187.2625,13.1839,Vir,3,3/30,L,2800.0, -NGC 4473,,4.5,Gal-Ell,187.4542,13.4297,Com,3,3/30,L,2800.0, -NGC 4477,,4.0,Gal-Lent,187.5083,13.6364,Com,3,3/30,L,2800.0, -NGC 4478,,1.9,Gal-Ell,187.6,12.3333,Vir,3,3/30,,, -NGC 4485,,2.6,Galaxy,187.625,41.7167,CVn,3,3/30,,, -NGC 4494,,5.0,Galaxy,187.85,25.7747,Com,3,3/30,,, -NGC 4496,,4.0,Galaxy,187.9125,3.9397,Vir,3,3/30,,, -NGC 4504,,4.0,Galaxy,188.0708,-7.5642,Vir,3,3/31,,, -NGC 4513,,4.0,Galaxy,188.0083,66.3322,Dra,3,3/30,L,2800.0, -NGC 4517,,10.0,Galaxy,188.1917,0.1136,Vir,3,3/31,L,2800.0, -NGC 4519,,3.0,Galaxy,188.375,8.6544,Vir,3,3/31,,, -NGC 4522,,4.0,Galaxy,188.4167,9.1742,Vir,3,3/31,,, -NGC 4526,,7.2,Gal-Lent,188.5125,7.6994,Vir,3,3/31,L,2800.0, -NGC 4527,,6.0,Galaxy,188.5333,2.6531,Vir,3,3/31,,, -NGC 4531,,3.0,Galaxy,188.5667,13.0753,Vir,3,3/31,,, -NGC 4532,,3.0,Galaxy,188.5792,6.4692,Vir,3,3/31,,, -NGC 4535,McLeish's Object,7.0,Galaxy,188.5833,8.1978,Vir,3,3/31,L,1000.0, -NGC 4536,,7.0,Galaxy,188.6125,2.1875,Vir,3,3/31,L,2800.0, -NGC 4546,,3.3,Galaxy,188.875,-3.7833,Vir,3,3/31,,, -NGC 4550,,3.3,Galaxy,188.9,12.2333,Vir,3,3/31,,, -NGC 4559,,11.0,Galaxy,188.9917,27.9597,Com,3,3/31,L,1500.0, -NGC 4565,Needle Galaxy,16.0,Galaxy,189.0875,25.9878,Com,4,4/1,L,2800.0, -NGC 4567,,3.0,Galaxy,189.1375,11.2578,Vir,4,4/1,L,1000.0, -NGC 4570,,5.7,Gal-Lent,189.225,7.25,Vir,4,4/1,,, -NGC 4571,,4.0,Galaxy,189.2167,14.2172,Com,4,4/1,,, -NGC 4580,,3.0,Galaxy,189.45,5.3683,Vir,4,4/1,,, -NGC 4583,,1.5,Galaxy,189.5167,33.4586,CVn,4,4/1,,, -NGC 4593,,4.0,Galaxy,189.9125,-5.3444,Vir,4,4/1,L,2800.0, -NGC 4596,,4.0,Galaxy,189.9833,10.1758,Vir,4,4/1,,, -NGC 4602,,4.0,Galaxy,190.1542,-5.1306,Vir,4,4/1,L,2800.0, -NGC 4605,,5.5,Gal-Mag,190.0,61.6083,UMa,4,4/1,L,1000.0, -NGC 4609,,6.0,Open Cl,190.575,-63.0,Cru,4,4/2,,, -NGC 4622,Centaurus Chain ,2.0,Galaxy,190.6583,-40.7442,Cen,4,4/2,,, -NGC 4623,,2.6,Galaxy,190.5458,7.6767,Vir,4,4/2,,, -NGC 4633,,2.0,Galaxy,190.6542,14.3561,Com,4,4/2,,, -NGC 4636,,6.2,Gal-Ell,190.7083,2.6878,Vir,4,4/2,L,2800.0, -NGC 4639,,3.0,Galaxy,190.7167,13.2575,Vir,4,4/2,L,1000.0, -NGC 4643,,3.4,Galaxy,190.8333,1.9778,Vir,4,4/2,,, -NGC 4650,Centaurus Chain,60.0,Galaxy,191.0833,-40.7322,Cen,4,4/3,,, -NGC 4654,,5.0,Galaxy,190.9875,13.1261,Vir,4,4/2,L,1000.0, -NGC 4656,"Hockey Stick, Crowbar Galaxy",18.0,Galaxy,190.9917,32.1714,CVn,4,4/2,L,2800.0, -NGC 4660,,2.2,Gal-Ell,191.15,11.2,Vir,4,4/3,,, -NGC 4665,,4.2,Gal-Lent,191.275,3.0561,Vir,4,4/3,L,2800.0, -NGC 4666,,5.0,Galaxy,191.2833,-0.4625,Vir,4,4/3,L,2800.0, -NGC 4669,,2.0,Galaxy,191.1958,54.8758,UMa,4,4/3,,, -NGC 4689,,2.0,Galaxy,191.9417,13.7625,Com,4,4/3,L,2800.0, -NGC 4691,,4.0,Galaxy,192.0583,-3.3331,Vir,4,4/4,L,1000.0, -NGC 4696,Centaurus Cluster,140.0,Galaxy,192.2042,-41.3117,Cen,4,4/4,,, -NGC 4697,Olive Galaxy,6.0,Gal-Lent,192.15,-5.8006,Vir,4,4/4,L,1500.0, -NGC 4698,,4.3,Galaxy,192.0958,8.4875,Vir,4,4/4,L,1960.0, -NGC 4699,,3.5,Galaxy,192.2583,-8.6647,Vir,4,4/4,L,2800.0, -NGC 4700,,3.0,Galaxy,192.2833,-11.4119,Vir,4,4/4,,, -NGC 4707,,2.0,Galaxy,192.0958,51.1647,CVn,4,4/4,,, -NGC 4710,,5.0,Galaxy,192.4125,15.1647,Com,4,4/4,,, -NGC 4725,,11.0,Galaxy,192.6125,25.5008,Com,4,4/4,L,1000.0, -NGC 4731,,7.0,Galaxy,192.7542,-6.3925,Vir,4,4/4,L,2800.0, -NGC 4745,,1.0,Galaxy,192.8583,27.4214,Com,4,4/4,,, -NGC 4753,,5.4,Galaxy,193.0917,-1.2,Vir,4,4/5,L,2800.0, -NGC 4754,,8.7,Galaxy,193.075,11.3136,Vir,4,4/5,L,2800.0, -NGC 4755,Jewel Box Cluster,10.0,Open Cl,193.35,-60.35,Cru,4,4/5,,, -NGC 4762,,8.7,Galaxy,193.2333,11.2303,Vir,4,4/5,L,2800.0, -NGC 4772,,3.0,Galaxy,193.3708,2.1683,Vir,4,4/5,,, -NGC 4774,Kidney Bean Galaxy,0.6,Galaxy,193.275,36.8261,CVn,4,4/5,L,2800.0, -NGC 4775,,2.0,Galaxy,193.4417,-6.6219,Vir,4,4/5,,, -NGC 4781,,4.0,Galaxy,193.6,-10.5361,Vir,4,4/5,,, -NGC 4800,,2.0,Galaxy,193.6583,46.5308,CVn,4,4/5,,, -NGC 4818,,4.5,Galaxy,194.2042,-8.525,Vir,4,4/6,,, -NGC 4833,Southern Butterfly Cluster,10.0,Glob Cl,194.9,-70.8667,Mus,4,4/6,,, -NGC 4845,,5.0,Galaxy,194.5042,1.5758,Vir,4,4/6,,, -NGC 4856,,5.0,Galaxy,194.8375,-15.0422,Vir,4,4/6,,, -NGC 4858,,30.0,Galaxy,194.7583,28.1156,Com,4,4/6,,, -NGC 4866,,7.0,Galaxy,194.8625,14.1708,Vir,4,4/6,,, -NGC 4897,,3.0,Galaxy,195.2208,-13.4503,Vir,4,4/7,,, -NGC 4900,,2.0,Galaxy,195.1625,2.5003,Vir,4,4/7,,, -NGC 4902,,3.0,Galaxy,195.25,-14.5139,Vir,4,4/7,,, -NGC 4909,,2.0,Galaxy,195.5083,-42.7719,Cen,4,4/7,,, -NGC 4911,,3.0,Galaxy,195.2333,27.7906,Com,4,4/7,,, -NGC 4921,,2.0,Galaxy,195.3583,27.8856,Com,4,4/7,,, -NGC 4922,,2.0,Galaxy,195.3542,29.3108,Com,4,4/7,,, -NGC 4930,,4.0,Galaxy,196.0208,-41.4114,Cen,4,4/8,,, -NGC 4939,,6.0,Galaxy,196.0583,-10.3403,Vir,4,4/8,L,2800.0, -NGC 4945,Cigar Galaxy,20.0,Galaxy,196.3625,-49.4672,Cen,4,4/8,L,1500.0, -NGC 4958,,4.0,Galaxy,196.4542,-8.0208,Vir,4,4/8,,, -NGC 4984,,3.0,Galaxy,197.2375,-15.5167,Vir,4,4/9,,, -NGC 4995,,2.4,Galaxy,197.4,-7.8333,Vir,4,4/9,,, -NGC 5002,,3.0,Galaxy,197.6583,36.6342,CVn,4,4/9,,, -NGC 5005,,5.4,Galaxy,197.7333,37.0583,CVn,4,4/9,L,1500.0, -NGC 5010,,1.3,Galaxy,198.1083,-15.7975,Vir,4,4/10,,, -NGC 5012,,3.0,Galaxy,197.9042,22.9158,Com,4,4/10,,, -NGC 5023,,7.0,Galaxy,198.05,44.0381,CVn,4,4/10,,, -NGC 5033,Crab Galaxy,11.0,Galaxy,198.3667,36.5939,CVn,4,4/10,L,2800.0,121.0 -NGC 5054,,5.0,Galaxy,199.2417,-16.6347,Vir,4,4/11,,, -NGC 5068,,6.9,Galaxy,199.7292,-21.0389,Vir,4,4/11,L,1000.0, -NGC 5078,,3.2,Galaxy,199.9583,-27.4094,Hya,4,4/12,L,1960.0, -NGC 5082,,3.0,Galaxy,200.1667,-43.7,Cen,4,4/12,,, -NGC 5084,,5.0,Gal-Lent,200.0708,-21.8278,Vir,4,4/12,L,2800.0, -NGC 5100,,3.0,Galaxy,200.25,8.9781,Vir,4,4/12,,, -NGC 5101,,6.0,Galaxy,200.4417,-27.4306,Hya,4,4/12,L,2800.0, -NGC 5102,,9.3,Gal-Lent,200.4917,-36.6308,Cen,4,4/12,L,2800.0, -NGC 5112,,4.0,Galaxy,200.4875,38.7347,CVn,4,4/12,,, -NGC 5121,,2.0,Galaxy,201.1917,-37.6831,Cen,4,4/13,,, -NGC 5122,,2.0,Galaxy,201.0625,-10.6547,Vir,4,4/13,L,2800.0, -NGC 5128,Centaurus A Galaxy,18.0,Gal-Ell,201.3667,-43.0189,Cen,4,4/13,L,2800.0,41.0 -NGC 5139,Omega Centauri Cluster,36.0,Glob Cl,201.6958,-47.4814,Cen,4,4/13,RGB,1000.0,39.0 -NGC 5149,,10.0,Galaxy,201.5375,35.9342,CVn,4,4/13,,, -NGC 5153,,3.0,Gal Group,201.975,-29.6183,Hya,4,4/14,L,1000.0, -NGC 5171,,15.0,Galaxy,202.3417,11.7347,Vir,4,4/14,,, -NGC 5174,,3.0,Galaxy,202.3583,11.0075,Vir,4,4/14,,, -NGC 5183,,10.0,Galaxy,202.525,-1.7208,Vir,4,4/14,,, -NGC 5195,Companion to M51,5.4,Galaxy,202.4958,47.2667,CVn,4,4/14,L,2800.0, -NGC 5201,,2.0,Galaxy,202.3167,53.0817,UMa,4,4/14,L,2800.0, -NGC 5204,,5.0,Gal-Mag,202.4,58.4192,UMa,4,4/14,L,2800.0, -NGC 5211,,2.0,Galaxy,203.2708,-1.0358,Vir,4,4/15,,, -NGC 5230,,2.0,Galaxy,203.8833,13.6756,Vir,4,4/16,L,2800.0, -NGC 5247,,6.0,Galaxy,204.5125,-17.8844,Vir,4,4/16,L,2800.0, -NGC 5248,,6.5,Galaxy,204.3833,8.8856,Boo,4,4/16,L,1500.0, -NGC 5252,,2.0,Galaxy,204.5667,4.5419,Vir,4,4/16,,, -NGC 5253,,4.0,Gal-BCD,204.9833,-31.6406,Cen,4,4/17,L,2800.0, -NGC 5256,,1.4,Galaxy,204.575,48.2767,UMa,4,4/16,,, -NGC 5273,,2.7,Galaxy,205.525,35.6333,CVn,4,4/17,,, -NGC 5280,,16.0,Galaxy,205.7333,29.8686,CVn,4,4/17,,, -NGC 5281,,8.0,Open Cl,206.7,-62.9167,Cen,4,4/19,,, -NGC 5286,,9.0,Glob Cl,206.6125,-51.375,Cen,4,4/18,RGB,1000.0, -NGC 5291,,1.4,Galaxy,206.85,-30.4072,Cen,4,4/19,,, -NGC 5297,,5.6,Galaxy,206.6,43.8725,CVn,4,4/18,L,2800.0, -NGC 5300,,4.0,Galaxy,207.0667,3.9506,Vir,4,4/19,,, -NGC 5311,,4.0,Galaxy,207.2333,39.9856,CVn,4,4/19,L,1000.0, -NGC 5313,,4.0,Galaxy,207.4333,39.9847,CVn,4,4/19,L,1000.0, -NGC 5320,,3.0,Galaxy,207.5,41.35,CVn,4,4/20,,, -NGC 5322,,6.0,Gal-Ell,207.3125,60.1906,UMa,4,4/19,L,2800.0, -NGC 5331,,2.0,Galaxy,208.0667,2.1078,Vir,4,4/20,,, -NGC 5334,,4.0,Galaxy,208.0,-1.1,Vir,4,4/20,,, -NGC 5348,,4.0,Galaxy,208.5,5.2167,Vir,4,4/20,,, -NGC 5349,,1.0,Galaxy,208.3042,37.8828,CVn,4,4/20,,, -NGC 5351,,3.0,Galaxy,208.3667,37.9142,CVn,4,4/20,,, -NGC 5363,Broken Heart Galaxy,4.2,Galaxy,209.0292,5.2544,Vir,4,4/21,L,2800.0, -NGC 5364,,7.1,Galaxy,209.05,5.0153,Vir,4,4/21,L,2800.0, -NGC 5367,,6.0,Ref Neb,209.4292,-39.9803,Cen,4,4/21,L,1000.0, -NGC 5371,,4.4,Galaxy,208.9167,40.4617,CVn,4,4/21,L,1000.0, -NGC 5375,,4.0,Galaxy,209.2333,29.1639,CVn,4,4/21,,, -NGC 5377,,5.0,Galaxy,209.0708,47.2353,CVn,4,4/21,,, -NGC 5383,,4.0,Galaxy,209.2708,41.8461,CVn,4,4/21,L,2800.0, -NGC 5389,,4.0,Galaxy,209.0,59.7333,UMa,4,4/21,,, -NGC 5398,,3.0,Galaxy,210.3417,-33.0628,Cen,4,4/22,,, -NGC 5400,,12.0,Galaxy,210.1542,-2.8578,Vir,4,4/22,,, -NGC 5403,,3.0,Galaxy,209.9625,38.1822,CVn,4,4/22,,, -NGC 5408,,2.0,Galaxy,210.8375,-41.3789,Cen,4,4/23,,, -NGC 5409,,2.0,Galaxy,210.4417,9.49,Boo,4,4/22,,, -NGC 5410,,0.7,Galaxy,210.2292,40.9883,CVn,4,4/22,L,2800.0, -NGC 5422,,4.0,Galaxy,210.0,55.15,UMa,4,4/22,,, -NGC 5423,,16.0,Gal Group,210.7333,9.4206,Boo,4,4/23,L,2800.0, -NGC 5430,,2.0,Galaxy,210.1917,59.3286,UMa,4,4/22,L,2800.0, -NGC 5448,,4.0,Galaxy,210.7083,49.1725,UMa,4,4/23,L,2800.0, -NGC 5466,"Snow Globe, Ghost Globular Cluster",11.0,Glob Cl,211.3667,28.5325,Boo,4,4/23,RGB,1000.0, -NGC 5473,,2.3,Galaxy,211.2,0.915,UMa,4,4/23,,, -NGC 5474,M101 Companion ,5.0,Gal-Mag,211.2583,53.6625,UMa,4,4/23,L,2800.0, -NGC 5485,,3.0,Gal-Ell,211.7958,55.0014,UMa,4,4/24,L,2800.0, -NGC 5486,,3.0,Galaxy,211.8542,55.1031,UMa,4,4/24,L,2800.0, -NGC 5514,,3.0,Galaxy,213.4125,7.6592,Boo,4,4/25,L,2800.0, -NGC 5523,,5.0,Galaxy,213.7125,25.3172,Boo,4,4/26,,, -NGC 5529,,0.2,Galaxy,213.8958,36.2272,Boo,4,4/26,L,2800.0, -NGC 5533,,3.0,Galaxy,214.0333,35.3439,Boo,4,4/26,,, -NGC 5534,,1.4,Galaxy,214.4167,-7.4172,Vir,4,4/26,L,2800.0, -NGC 5548,,2.0,Galaxy,214.5,25.1367,Boo,4,4/26,,, -NGC 5557,,3.6,Gal-Ell,214.575,36.4833,Boo,4,4/27,,, -NGC 5576,,3.0,Galaxy,215.2667,3.2708,Vir,4,4/27,,, -NGC 5584,,3.0,Galaxy,215.6,-0.3875,Vir,4,4/28,,, -NGC 5585,dwarf satellite of M101,6.0,Gal-Mag,214.95,56.7292,UMa,4,4/27,L,2800.0, -NGC 5591,,2.0,Galaxy,215.6417,13.7172,Boo,4,4/28,L,2800.0, -NGC 5595,,2.0,Galaxy,216.0542,-16.7228,Lib,4,4/28,,, -NGC 5599,,8.0,Gal Group,215.9625,6.5758,Vir,4,4/28,L,2800.0, -NGC 5600,,1.4,Galaxy,215.9542,14.6386,Boo,4,4/28,,, -NGC 5602,,2.0,Galaxy,215.5792,50.5019,Boo,4,4/27,L,2800.0, -NGC 5610,,2.0,Galaxy,216.0958,24.6139,Boo,4,4/28,,, -NGC 5619,,8.0,Galaxy,216.825,4.8025,Vir,4,4/29,,, -NGC 5631,,1.7,Galaxy,216.65,56.5833,UMa,4,4/29,,, -NGC 5634,,5.0,Glob Cl,217.4042,-5.9769,Vir,4,4/29,RGB,910.0, -NGC 5638,,10.0,Galaxy,217.4167,3.2333,Vir,4,4/29,,, -NGC 5643,,4.0,Galaxy,218.1708,-44.1739,Lup,4,4/30,L,1000.0, -NGC 5662,,6.0,Open Cl,218.875,-56.6667,Cen,5,5/1,,, -NGC 5668,,3.0,Galaxy,218.35,4.4503,Vir,4,4/30,,, -NGC 5673,,12.0,Galaxy,217.8792,49.9586,Boo,4,4/30,L,2800.0, -NGC 5676,,4.0,Galaxy,218.1958,49.4578,Boo,4,4/30,,, -NGC 5689,,4.0,Galaxy,218.875,48.7419,Boo,5,5/1,,, -NGC 5694,,3.6,Glob Cl,219.9042,-26.5383,Hya,5,5/2,RGB,1500.0, -NGC 5698,,2.0,Galaxy,219.3125,38.4544,Boo,5,5/1,,, -NGC 5701,,4.7,Galaxy,219.7958,5.3642,Vir,5,5/2,L,1000.0, -NGC 5713,,2.8,Galaxy,220.0458,-0.2903,Vir,5,5/2,L,1960.0, -NGC 5714,,3.0,Galaxy,219.55,46.6378,Boo,5,5/2,,, -NGC 5719,,2.8,Galaxy,220.2333,-0.3183,Vir,5,5/2,L,1960.0, -NGC 5728,,3.0,Galaxy,220.6,-17.2533,Lib,5,5/3,,, -NGC 5746,Blade and Pearl Galaxy,7.9,Galaxy,221.2333,1.955,Vir,5,5/3,L,1000.0, -NGC 5750,,3.0,Galaxy,221.5458,-0.2231,Vir,5,5/4,L,2800.0, -NGC 5757,,2.0,Galaxy,221.9417,-19.0783,Lib,5,5/4,,, -NGC 5759,,3.0,Galaxy,221.8125,13.4564,Boo,5,5/4,L,2800.0, -NGC 5765,,2.0,Galaxy,222.7125,5.1142,Vir,5,5/5,L,2800.0, -NGC 5774,,10.0,Galaxy,223.4292,3.5822,Vir,5,5/5,L,2800.0, -NGC 5775,,10.0,Galaxy,223.4917,3.5444,Vir,5,5/5,L,2800.0, -NGC 5777,,3.0,Galaxy,222.825,58.9772,Dra,5,5/5,,, -NGC 5792,,7.0,Galaxy,224.5958,-1.0906,Lib,5,5/7,L,2800.0, -NGC 5813,,4.0,Galaxy,225.2958,1.7019,Vir,5,5/7,,, -NGC 5823,,12.0,Open Cl,226.35,-55.6,Cir,5,5/8,,, -NGC 5824,,6.0,Glob Cl,225.9958,-33.0686,Lup,5,5/8,,, -NGC 5846,,3.4,Galaxy,226.6208,1.6056,Vir,5,5/9,L,1000.0, -NGC 5850,,4.0,Galaxy,226.7833,1.5442,Vir,5,5/9,L,1000.0, -NGC 5851,,8.0,Galaxy,226.7208,12.8583,Boo,5,5/9,,, -NGC 5857,,2.0,Galaxy,226.8625,19.5981,Boo,5,5/9,L,2800.0, -NGC 5859,,5.0,Galaxy,226.8958,19.5822,Boo,5,5/9,L,2800.0, -NGC 5860,,1.0,Galaxy,226.6417,42.6419,Boo,5,5/9,L,2800.0, -NGC 5873,,0.1,PN,228.2125,-38.125,Lup,5,5/10,,, -NGC 5878,,4.0,Galaxy,228.4417,-14.2706,Lib,5,5/11,,, -NGC 5879,,4.0,Galaxy,227.4458,57.0008,Dra,5,5/10,L,2800.0, -NGC 5894,,3.0,Galaxy,227.9208,59.8081,Dra,5,5/10,,, -NGC 5897,Libra Globular Cluster,12.6,Glob Cl,229.35,-21.0103,Lib,5,5/12,RGB,1500.0, -NGC 5899,,3.0,Galaxy,228.7625,42.0492,Boo,5,5/11,L,2800.0, -NGC 5900,,3.0,Galaxy,228.7708,42.2097,Boo,5,5/11,L,2800.0, -NGC 5905,,4.0,Galaxy,228.8458,55.5172,Dra,5,5/11,L,1000.0, -NGC 5907,Splinter Galaxy,12.0,Galaxy,228.975,56.3292,Dra,5,5/11,L,2800.0,176.0 -NGC 5908,,4.0,Galaxy,229.1792,55.4092,Dra,5,5/11,L,1000.0, -NGC 5915,,2.0,Galaxy,230.3875,-13.0917,Lib,5,5/13,L,2800.0, -NGC 5916,,2.0,Galaxy,230.4083,-13.1694,Lib,5,5/13,L,2800.0, -NGC 5921, ,5.0,Galaxy,230.4833,5.07,Ser,5,5/13,L,1000.0, -NGC 5945,,25.0,Gal Group,232.4375,42.9189,Boo,5,5/15,L,1000.0, -NGC 5949,,2.0,Galaxy,232.0042,64.7631,Dra,5,5/14,,, -NGC 5963,,3.5,Galaxy,233.3667,56.5592,Dra,5,5/15,L,2800.0, -NGC 5964,,4.0,Galaxy,234.4,5.9739,Ser,5,5/16,L,2800.0, -NGC 5965,,5.0,Galaxy,233.5083,56.6858,Dra,5,5/15,L,2800.0, -NGC 5970,,3.0,Galaxy,234.625,12.1864,Ser,5,5/17,,, -NGC 5972,voorwerp object,2.0,Galaxy,234.725,17.0258,Ser,5,5/17,L,2800.0, -NGC 5981,,2.9,Galaxy,234.475,59.3919,Dra,5,5/17,L,2800.0, -NGC 5982,Draco Galaxy Trio,2.9,Galaxy,234.6667,59.3558,Dra,5,5/17,L,2800.0,164.0 -NGC 5985,,2.9,Galaxy,234.9042,59.3322,Dra,5,5/17,L,2800.0, -NGC 5986,,9.8,Glob Cl,236.5167,-37.7856,Lup,5,5/19,RGB,1000.0, -NGC 5987,,4.7,Galaxy,234.9875,58.0797,Dra,5,5/17,L,2800.0, -NGC 5992,,1.0,Galaxy,236.0917,41.0858,Boo,5,5/18,,, -NGC 6004,,2.0,Galaxy,237.5958,18.9386,Ser,5,5/20,,, -NGC 6007,,2.0,Galaxy,238.3458,11.9592,Ser,5,5/20,,, -NGC 6012,,2.0,Galaxy,238.5583,14.6017,Ser,5,5/21,L,2800.0, -NGC 6015, ,5.0,Galaxy,237.8542,62.3097,Dra,5,5/20,L,1000.0, -NGC 6025,,15.0,Open Cl,240.825,-60.4167,TrA,5,5/23,,, -NGC 6026,,0.8,PN,240.3375,-34.5436,Lup,5,5/22,HOO,2800.0, -NGC 6028,,2.0,Galaxy,240.3708,19.3592,Her,5,5/22,,, -NGC 6058,,0.4,PN,241.1125,40.6831,Her,5,5/23,HOO,2800.0, -NGC 6070,,4.0,Galaxy,242.4958,0.7092,Ser,5,5/25,,, -NGC 6072,,1.0,PN,243.2417,-36.2297,Sco,5,5/25,HOO,1960.0, -NGC 6087,S Normae,15.0,Open Cl,244.725,-57.9,Nor,5,5/27,,, -NGC 6090,,2.0,Galaxy,242.9208,52.4569,Dra,5,5/25,L,2800.0, -NGC 6100,,2.0,Galaxy,244.2167,0.8406,Ser,5,5/26,,, -NGC 6101,,11.0,Glob Cl,246.4167,-72.2,Aps,5,5/29,,, -NGC 6106,,3.0,Galaxy,244.6958,7.4114,Her,5,5/27,,, -NGC 6118,,5.0,Galaxy,245.4542,-2.2839,Ser,5,5/28,L,2800.0, -NGC 6120,,0.6,Galaxy,244.95,37.7742,CrB,5,5/27,,, -NGC 6124,,29.0,Open Cl,246.3333,-40.6533,Sco,5,5/29,RGB,1500.0, -NGC 6131,,2.0,Galaxy,245.4667,38.9325,CrB,5,5/28,,, -NGC 6140,,6.0,Galaxy,245.2375,65.39,Dra,5,5/27,L,2800.0, -NGC 6144,,9.3,Glob Cl,246.8083,-26.0239,Sco,5,5/29,RGB,1000.0, -NGC 6153,,0.4,PN,247.8792,-40.2536,Sco,5,5/30,,, -NGC 6181,,3.0,Galaxy,248.0875,19.8256,Her,5,5/30,L,2800.0, -NGC 6188,"Dragons of Ara, Rim Nebula",30.0,Em Neb,250.0208,-48.6617,Ara,6,6/1,SHO,1000.0,52.0 -NGC 6207,,3.0,Galaxy,250.7667,36.8322,Her,6,6/2,L,1000.0, -NGC 6210,Turtle Planetary Nebula,0.75,PN,251.125,23.7997,Her,6,6/2,L,1000.0, -NGC 6229,Hercules Globular Cluster ,4.5,Glob Cl,251.7458,47.5275,Her,6,6/3,RGB,910.0, -NGC 6231,Table of Scorpius,15.0,Open Cl,253.5417,-41.825,Sco,6,6/5,RGB,1500.0, -NGC 6232,,3.0,Galaxy,250.8333,70.6325,Dra,6,6/2,L,1000.0, -NGC 6235,,5.0,Glob Cl,253.35,-22.1833,Oph,6,6/5,,, -NGC 6239,,3.0,Galaxy,252.5208,42.7394,Her,6,6/4,L,2800.0, -NGC 6240,,2.2,Galaxy,253.2458,2.4014,Oph,6,6/5,L,1000.0, -NGC 6242,,9.0,Open Cl,253.8875,-39.4617,Sco,6,6/5,RGB,1000.0, -NGC 6248,,3.0,Galaxy,251.5917,70.3556,Dra,6,6/3,L,1000.0, -NGC 6255,,4.0,Galaxy,253.6958,36.5017,Her,6,6/5,L,2800.0, -NGC 6274,,2.0,Galaxy,254.8333,29.9464,Her,6,6/6,L,2800.0, -NGC 6281,Moth Wing Cluster,8.0,Open Cl,256.1708,-37.985,Sco,6,6/8,RGB,1000.0, -NGC 6284,,6.2,Glob Cl,256.125,-24.7667,Oph,6,6/8,,, -NGC 6287,,5.0,Glob Cl,256.2875,-22.7069,Oph,6,6/8,,, -NGC 6293,,7.9,Glob Cl,257.5417,-26.5822,Oph,6,6/9,L,1000.0, -NGC 6301,,2.0,Galaxy,257.1375,42.3386,Her,6,6/9,,, -NGC 6302,Butterfly Nebula,1.5,PN,258.4333,-37.1033,Sco,6,6/10,SHO,910.0,38.0 -NGC 6304,,7.0,Glob Cl,258.6333,-29.4619,Oph,6,6/10,,, -NGC 6306,,1.2,Galaxy,256.9042,60.7289,Dra,6,6/9,L,2800.0, -NGC 6309,Box Nebula,0.75,PN,258.5167,-12.9106,Oph,6,6/10,HOO,910.0, -NGC 6316,,5.4,Glob Cl,259.15,-28.1333,Oph,6,6/10,,, -NGC 6334,Cat's Paw Nebula,60.0,Em Neb,260.2042,-36.1033,Sco,6,6/12,SHO,1000.0,32.0 -NGC 6337,Cheerio,2.0,PN,260.5667,-38.4833,Sco,6,6/12,SHO,1000.0,99.0 -NGC 6338,,30.0,Gal-Ell,258.8458,57.4114,Dra,6,6/10,L,2800.0, -NGC 6339,,3.4,Galaxy,259.2792,40.845,Her,6,6/11,L,1000.0, -NGC 6340,,50.0,Gal Group,257.6042,72.3047,Dra,6,6/9,L,1000.0, -NGC 6342,,4.4,Glob Cl,260.3,-19.5833,Oph,6,6/12,,, -NGC 6350,,1.0,Galaxy,259.675,41.6942,Her,6,6/11,,, -NGC 6351,with NGC 6349,1.0,Galaxy,259.7958,36.06,Her,6,6/11,,, -NGC 6352,,7.0,Glob Cl,261.3708,-48.4225,Ara,6,6/13,L,1500.0, -NGC 6353,,1.0,Asterism,260.3,15.6881,Her,6,6/12,RGB,2800.0, -NGC 6355,,4.2,Glob Cl,261.0,-26.35,Oph,6,6/12,,, -NGC 6356,,7.2,Glob Cl,260.8958,-17.8144,Oph,6,6/12,L,1000.0, -NGC 6357,"Lobster, War and Peace Nebula",50.0,WR Neb,261.1792,-34.2017,Sco,6,6/13,SHO,1000.0,78.0 -NGC 6358,,1.0,Galaxy,259.7208,52.6153,Dra,6,6/11,,, -NGC 6363,,1.0,Gal-Ell,260.6667,41.1017,Her,6,6/12,L,2800.0, -NGC 6367,,1.0,Galaxy,261.2875,37.7597,Her,6,6/13,L,2800.0, -NGC 6369,Little Ghost Nebula ,1.0,PN,262.3375,-23.7594,Oph,6,6/14,HOO,1000.0, -NGC 6370,,2.0,Galaxy,260.8542,56.9747,Dra,6,6/12,L,2800.0, -NGC 6377,,2.0,Galaxy,261.3458,58.8225,Dra,6,6/13,L,2800.0, -NGC 6384,,6.0,Galaxy,263.1,7.0603,Oph,6,6/14,L,1000.0, -NGC 6395,,2.0,Galaxy,261.6292,71.0961,Dra,6,6/13,L,2800.0, -NGC 6397,,31.0,Glob Cl,265.175,-53.6667,Ara,6,6/17,,, -NGC 6400,Phantom Cluster,8.0,Open Cl,265.05,-36.9483,Sco,6,6/17,RGB,1000.0, -NGC 6401,,4.8,Glob Cl,264.65,-23.9167,Oph,6,6/16,,, -NGC 6426,,3.0,Glob Cl,266.2292,3.1697,Oph,6,6/18,,, -NGC 6440,,3.0,Glob Cl,267.2208,-20.3597,Sgr,6,6/19,RGB,1000.0, -NGC 6441,Silver Nugget Cluster,7.8,Glob Cl,267.5542,-37.0508,Sco,6,6/19,L,1000.0, -NGC 6445,"Little Gem, Box Nebula",2.5,PN,267.3125,-20.01,Sgr,6,6/19,HOO,1000.0, -NGC 6446,,1.0,Galaxy,266.5333,35.5692,Her,6,6/18,L,2800.0, -NGC 6447,,1.0,Galaxy,266.5708,35.5722,Her,6,6/18,L,2800.0, -NGC 6451,,7.0,Open Cl,267.675,-30.2167,Sco,6,6/19,,, -NGC 6460,,2.0,Galaxy,267.375,20.7633,Her,6,6/19,,, -NGC 6463,,15.0,Gal Group,265.8917,67.6033,Dra,6,6/17,L,2800.0, -NGC 6470,,2.0,Galaxy,266.0625,67.6192,Dra,6,6/18,L,2800.0, -NGC 6473,,2.0,Galaxy,266.725,57.3083,Dra,6,6/18,,, -NGC 6491,,2.0,Galaxy,267.5042,61.5317,Dra,6,6/19,L,2800.0, -NGC 6497,,1.5,Galaxy,267.825,59.4708,Dra,6,6/19,L,2800.0, -NGC 6500,,2.5,Galaxy,269.0,18.3383,Her,6,6/21,L,2800.0, -NGC 6501,,2.5,Gal-Ell,269.0125,18.3731,Her,6,6/21,L,2800.0, -NGC 6503,"Lonely Galaxy, Lost-in-Space Galaxy",6.0,Galaxy,267.3625,70.1444,Dra,6,6/19,L,2800.0, -NGC 6504,,2.5,Galaxy,269.025,33.2089,Her,6,6/21,,, -NGC 6517,,4.0,Glob Cl,270.45,-8.9667,Oph,6,6/22,,, -NGC 6520,NGC 6520,6.0,Open Cl,270.85,-27.8883,Sgr,6,6/22,L,1000.0,177.0 -NGC 6522,Baades WIndow,90.0,Glob Cl,270.8958,-30.035,Sgr,6,6/23,L,1000.0, -NGC 6528,,3.7,Glob Cl,271.2083,-30.0558,Sgr,6,6/23,L,1000.0, -NGC 6537,Red Spider Nebula,3.0,PN,271.3042,-19.8431,Sgr,6,6/23,L,2800.0, -NGC 6540,,1.5,Glob Cl,271.575,-27.8167,Sgr,6,6/23,,, -NGC 6541,,13.0,Glob Cl,272.0083,-43.7158,CrA,6,6/24,RGB,1500.0, -NGC 6543,Cat's Eye Nebula,6.0,PN,269.6375,66.6331,Dra,6,6/21,HOO,2800.0,22.0 -NGC 6544,,5.0,Glob Cl,271.8333,-24.9981,Sgr,6,6/23,RGB,1000.0, -NGC 6548,,20.0,Gal-Lent,271.4958,18.5869,Her,6,6/23,L,1000.0, -NGC 6553,,8.0,Glob Cl,272.3208,-25.9083,Sgr,6,6/24,,, -NGC 6559,,10.0,Em Neb,272.4875,-24.1064,Sgr,6,6/24,HL,2800.0, -NGC 6563,Southern Ring,1.5,PN,273.0125,-33.8686,Sgr,6,6/25,HOO,1000.0, -NGC 6565,,4.0,PN,272.9708,-28.1781,Sgr,6,6/25,,, -NGC 6568,,12.0,Open Cl,273.2,-21.6,Sgr,6,6/25,,, -NGC 6569,,6.4,Glob Cl,273.4,-31.8333,Sgr,6,6/25,,, -NGC 6570,,1.8,Galaxy,272.7792,14.0928,Oph,6,6/24,L,2800.0, -NGC 6572,Blue Racquetball,0.3,PN,273.025,6.8536,Oph,6,6/25,RGB,1000.0, -NGC 6577,,50.0,Gal Group,273.1417,21.4258,Her,6,6/25,L,2800.0, -NGC 6578,,0.2,PN,274.0667,-20.4508,Sgr,6,6/26,,, -NGC 6583,,4.0,Open Cl,273.95,-22.1333,Sgr,6,6/26,,, -NGC 6598,,2.0,Galaxy,272.2333,69.0681,Dra,6,6/24,L,2800.0, -NGC 6603,,5.0,Open Cl,274.6083,-18.4067,Sgr,6,6/26,RGB,910.0, -NGC 6611,Eagle Nebula OC,35.0,Open Cl,274.7,-13.8067,Ser,6,6/26,SHO,2800.0, -NGC 6624,,8.0,Glob Cl,275.9208,-30.3611,Sgr,6,6/28,L,1000.0, -NGC 6629,,0.3,PN,276.425,-23.2028,Sgr,6,6/28,,, -NGC 6632,,3.1,Galaxy,276.2625,27.535,Her,6,6/28,L,1000.0, -NGC 6633,Captain Hook Cluster,27.0,Open Cl,276.8125,6.5083,Oph,6,6/29,RGB,1000.0, -NGC 6636,,5.0,Galaxy,275.5208,66.6222,Dra,6,6/27,L,2800.0, -NGC 6638,,5.0,Glob Cl,277.7333,-25.4989,Sgr,6,6/29,L,1000.0, -NGC 6642,,5.8,Glob Cl,277.975,-23.4833,Sgr,6,6/30,,, -NGC 6643,,4.0,Galaxy,274.9417,74.5689,Dra,6,6/27,L,2800.0, -NGC 6645,,10.0,Open Cl,278.15,-16.9,Sgr,6,6/30,,, -NGC 6654,,3.0,Galaxy,276.0333,73.1828,Dra,6,6/28,L,2800.0, -NGC 6661,,2.0,Galaxy,278.6542,22.91,Her,6,6/30,,, -NGC 6664,"Santa's Sleigh, Teacup Cluster",16.0,Open Cl,279.1375,-8.22,Sct,7,7/1,RGB,1000.0, -NGC 6667,,2.6,Galaxy,277.6667,67.9872,Dra,6,6/29,L,1000.0, -NGC 6670,,1.0,Galaxy,278.4125,59.8881,Dra,6,6/30,L,2800.0, -NGC 6674,,4.0,Galaxy,279.6417,25.375,Her,7,7/1,L,1000.0, -NGC 6676,,3.0,Gal Group,278.4,67.1103,Dra,6,6/30,L,2800.0, -NGC 6689,,4.0,Galaxy,278.7083,70.5239,Dra,6,6/30,L,1000.0, -NGC 6703,,3.0,Galaxy,281.8292,45.5506,Lyr,7,7/4,,, -NGC 6709,Flying Unicorn Cluster,13.0,Open Cl,282.825,10.3183,Aql,7,7/5,L,1000.0, -NGC 6712,,7.2,Glob Cl,283.2667,-8.7053,Sct,7,7/5,L,1000.0, -NGC 6717,Palomar 9,3.9,Glob Cl,283.775,-22.7017,Sgr,7,7/6,RGB,1000.0, -NGC 6723,,11.0,Glob Cl,284.8875,-36.6317,Sgr,7,7/7,L,1000.0, -NGC 6726,"Anteater Neb., Bernes 157",9.0,Ref Neb,285.4083,-36.8917,CrA,7,7/7,L,1000.0,130.0 -NGC 6741,Phantom Streak,0.2,PN,285.6542,-0.4492,Aql,7,7/8,L,2800.0, -NGC 6744,,21.0,Galaxy,287.425,-63.85,Pav,7,7/9,,, -NGC 6745,,1.4,Galaxy,285.425,40.7586,Lyr,7,7/7,L,1000.0, -NGC 6751,Dandelion Puff Ball,0.25,PN,286.4833,-5.9919,Aql,7,7/8,RGB,1000.0, -NGC 6752,Starfish,29.0,Glob Cl,287.725,-59.9833,Pav,7,7/10,,, -NGC 6755,,90.0,Open Cl,286.9542,4.2667,Aql,7,7/9,RGB,455.0, -NGC 6756,,4.0,Open Cl,287.175,4.705,Aql,7,7/9,RGB,455.0, -NGC 6760,,7.0,Glob Cl,287.8,1.0306,Aql,7,7/10,,, -NGC 6764,,3.0,Galaxy,287.0667,50.9331,Cyg,7,7/9,L,1000.0, -NGC 6765,,0.6,PN,287.7792,30.5458,Lyr,7,7/10,HOO,1000.0, -NGC 6772,,1.2,PN,288.65,-2.7067,Aql,7,7/11,RGB,1000.0, -NGC 6778,Mini Dumbbell Nebula,1.0,PN,289.6042,-1.5967,Aql,7,7/12,RGB,1000.0, -NGC 6781,"Snowglobe Nebula, Ghost of the Moon",2.0,PN,289.6167,6.5389,Aql,7,7/12,HOO,2800.0,152.0 -NGC 6786,,2.0,Galaxy,287.725,73.41,Dra,7,7/10,L,2800.0, -NGC 6789,,2.0,Gal-BCD,289.175,63.9719,Dra,7,7/11,L,2800.0, -NGC 6790,,0.1,PN,290.7375,1.5133,Aql,7,7/13,,, -NGC 6791,,16.0,Open Cl,290.2208,37.7717,Lyr,7,7/12,RGB,1000.0, -NGC 6792,,3.0,Galaxy,290.2375,43.1325,Lyr,7,7/12,L,2800.0, -NGC 6801,,2.0,Galaxy,291.9,54.3722,Cyg,7,7/14,L,2800.0, -NGC 6802,,3.0,Open Cl,292.6458,20.2617,Vul,7,7/15,L,1000.0, -NGC 6804,Snowball Nebula,1.0,PN,292.8958,9.2253,Aql,7,7/15,HOO,1000.0, -NGC 6811,"Hole in a Cluster, Smoke Ring",13.0,Open Cl,294.3208,46.3883,Cyg,7,7/16,RGB,1000.0, -NGC 6813,,3.0,Em Neb,295.0917,27.3094,Vul,7,7/17,L,2800.0, -NGC 6814,,3.0,Galaxy,295.6708,-10.3242,Aql,7,7/18,L,1000.0, -NGC 6818,"Little Gem, Green Mars Nebula",0.3,PN,295.9917,-14.1528,Sgr,7,7/18,RGB,1000.0, -NGC 6819,"Fox Head, Octopus Cluster",5.0,Open Cl,295.325,40.1867,Cyg,7,7/17,L,1000.0, -NGC 6820,Ced170,40.0,HII Neb,295.6167,23.0861,Vul,7,7/18,H,2800.0,195.0 -NGC 6821,,1.0,Galaxy,296.1,-6.8342,Aql,7,7/18,,, -NGC 6822,Barnard's Galaxy,10.0,Gal-Dwarf,296.2375,-14.8028,Sgr,7,7/18,L,910.0, -NGC 6823,,12.0,Open Cl,295.775,23.3,Vul,7,7/18,,, -NGC 6824,,2.0,Galaxy,295.9208,56.1094,Cyg,7,7/18,L,2800.0, -NGC 6826,The Blinking Eye,1.0,PN,296.2,50.525,Cyg,7,7/18,SHO,910.0,169.0 -NGC 6829,,10.0,Galaxy,296.7833,59.9069,Dra,7,7/19,L,2800.0, -NGC 6830,,12.0,Open Cl,297.75,23.0667,Vul,7,7/20,,, -NGC 6834,,5.0,Open Cl,298.05,29.4167,Cyg,7,7/21,,, -NGC 6835,,3.0,Galaxy,298.6375,-12.5675,Sgr,7,7/21,L,2800.0, -NGC 6842,,1.0,PN,298.7583,29.2889,Vul,7,7/21,HOO,2800.0, -NGC 6845,,50.0,Gal Group,300.2417,-47.07,Tel,7,7/22,,, -NGC 6852,,0.5,PN,300.1625,1.7281,Aql,7,7/22,HOO,2800.0, -NGC 6857,,1.3,PN,300.45,33.5258,Cyg,7,7/23,H,1000.0, -NGC 6866,Frigate (Pirate) Bird Cluster,15.0,Open Cl,300.9792,44.1583,Cyg,7,7/23,L,1000.0, -NGC 6881,,0.1,PN,302.7167,37.4117,Cyg,7,7/25,,, -NGC 6882,,18.0,Open Cl,302.925,26.55,Vul,7,7/25,,, -NGC 6883,,15.0,Open Cl,302.8333,35.8319,Cyg,7,7/25,,, -NGC 6884,,0.1,PN,302.6,46.4608,Cyg,7,7/25,,, -NGC 6885,20 Vulpeculae Cluster,7.0,Open Cl,302.9917,26.4833,Vul,7,7/25,RGB,910.0, -NGC 6886,,0.1,PN,303.1792,19.9894,Sge,7,7/25,,, -NGC 6888,Crescent Nebula,20.0,WR Neb,303.025,38.3547,Cyg,7,7/25,HOO,2800.0,9.0 -NGC 6891,,0.3,PN,303.7875,12.7044,Del,7,7/26,RGB,1000.0, -NGC 6894,Little Ring Nebula,1.0,PN,304.1,30.5653,Cyg,7,7/26,HOO,1000.0, -NGC 6901,,2.0,Galaxy,305.5917,6.4297,Aql,7,7/28,,, -NGC 6905,Blue Flash Nebula,1.0,PN,305.5958,20.1044,Del,7,7/28,L,2800.0, -NGC 6906,,1.8,Galaxy,305.8917,6.4436,Aql,7,7/28,,, -NGC 6907,NGC6908,3.4,Galaxy,306.2792,-24.8089,Cap,7,7/29,L,1000.0, -NGC 6910,Inchworm Cluster,8.0,Open Cl,305.8,40.7783,Cyg,7,7/28,RGB,1000.0,160.0 -NGC 6911,,2.0,Galaxy,304.9125,66.7281,Dra,7,7/27,L,2800.0, -NGC 6914,,13.0,Ref Neb,306.1792,42.4825,Cyg,7,7/28,HL,1000.0, -NGC 6916,,2.0,Galaxy,305.8875,58.3439,Cyg,7,7/28,,, -NGC 6922,,2.0,Galaxy,307.4708,-2.1914,Aql,7,7/30,L,2800.0, -NGC 6925,,4.0,Galaxy,308.5875,-31.9806,Mic,7,7/31,L,1000.0, -NGC 6926,,2.0,Galaxy,308.275,-2.0281,Aql,7,7/31,L,2800.0, -NGC 6928,,2.0,Gal Group,308.2083,9.9272,Del,7,7/30,L,2800.0, -NGC 6934,,6.0,Glob Cl,308.5458,7.4047,Del,7,7/31,RGB,910.0, -NGC 6939,Flying Geese Cluster,8.0,Open Cl,307.875,60.6617,Cep,7,7/30,L,1000.0, -NGC 6940,Mothra Cluster,31.0,Open Cl,308.6083,28.2833,Vul,7,7/31,RGB,1000.0, -NGC 6946,Fireworks Galaxy,11.0,Galaxy,308.7167,60.1539,Cyg,7,7/31,L,2800.0,172.0 -NGC 6949,,1.4,Galaxy,308.7792,64.8025,Cep,7,7/31,L,2800.0, -NGC 6951,,4.0,Galaxy,309.3083,66.1058,Cep,8,8/1,L,1000.0, -NGC 6956,,2.0,Gal Group,310.975,12.5114,Del,8,8/2,L,2800.0, -NGC 6960,"Western Veil, Witch's Broom",70.0,SNR,311.4917,30.595,Cyg,8,8/3,HOO,1000.0,26.0 -NGC 6962,,15.0,Galaxy,311.8292,0.3208,Aql,8,8/3,L,1000.0, -NGC 6979,Pickering`s Triangle,60.0,SNR,312.6167,32.0267,Cyg,8,8/4,HOO,1000.0,16.0 -NGC 6985,,2.0,Galaxy,311.2625,-11.1044,Aql,8,8/3,L,2800.0, -NGC 6991,,15.0,Ref Neb,313.7333,47.3217,Cyg,8,8/5,L,1000.0, -NGC 6992,Eastern Veil Nebula,60.0,SNR,314.0792,31.7433,Cyg,8,8/5,HOO,1000.0,101.0 -NGC 6995,Bat Nebula,12.0,Em Neb,314.2917,31.235,Cyg,8,8/6,HOO,1000.0, -NGC 7000,North America Nebula,120.0,Em Neb,314.8208,44.5167,Cyg,8,8/6,SHO,1000.0,50.0 -NGC 7006,,2.8,Glob Cl,315.3708,16.1875,Del,8,8/7,RGB,910.0, -NGC 7008,Fetus Nebula ,1.4,PN,315.1375,54.5431,Cyg,8,8/7,HOO,2800.0,107.0 -NGC 7009,Saturn Nebula,1.0,PN,316.0458,-11.3639,Aql,8,8/7,L,2800.0,74.0 -NGC 7013,,4.4,Galaxy,315.8875,29.8969,Cyg,8,8/7,L,1000.0, -NGC 7023,Iris Nebula,60.0,Ref Neb,315.4,68.1694,Cep,8,8/7,L,2800.0,76.0 -NGC 7025,Toadstool Asterism,2.0,Galaxy,316.9458,16.3356,Del,8,8/8,L,2800.0, -NGC 7026,Cheeseburger Nebula,0.5,PN,316.5792,47.8522,Cyg,8,8/8,L,1000.0, -NGC 7027,Magic Carpet Nebula,0.3,PN,316.7583,42.2361,Cyg,8,8/8,L,1000.0, -NGC 7042,,2.0,Galaxy,318.4417,13.5747,Peg,8,8/10,,, -NGC 7044,,20.0,Open Cl,318.2875,42.4961,Cyg,8,8/10,,, -NGC 7048,Disk Ghost Nebula,1.0,PN,318.5625,46.2883,Cyg,8,8/10,HOO,2800.0, -NGC 7051,,1.0,Galaxy,319.9625,-8.7828,Aql,8,8/11,,, -NGC 7062,,6.0,Open Cl,320.8,46.3833,Cyg,8,8/12,,, -NGC 7063,,8.0,Open Cl,321.0875,36.4867,Cyg,8,8/13,,, -NGC 7077,,2.0,Galaxy,322.5,2.4142,Aql,8,8/14,,, -NGC 7080,,2.0,Galaxy,322.5083,26.7178,Vul,8,8/14,L,2800.0, -NGC 7081,,20.0,Galaxy,322.85,2.4908,Aql,8,8/14,L,1000.0, -NGC 7086,,9.0,Open Cl,322.625,51.5833,Cyg,8,8/14,,, -NGC 7094,,2.0,PN,324.2208,12.7886,Peg,8,8/16,HOO,910.0, -NGC 7102,,2.0,Galaxy,324.9375,6.2861,Peg,8,8/17,L,2800.0, -NGC 7127,,5.0,Open Cl,325.9208,54.615,Cyg,8,8/17,L,1000.0, -NGC 7128,,3.1,Open Cl,326.0,53.7167,Cyg,8,8/18,,, -NGC 7129,Cosmic Rosebud,10.0,Ref Neb,325.7458,66.1133,Cep,8,8/17,L,2800.0, -NGC 7130,,15.0,Galaxy,327.0792,-34.9528,PsA,8,8/19,L,2800.0, -NGC 7132,,2.0,Galaxy,326.8208,10.2411,Peg,8,8/18,,, -NGC 7135,Comet Galaxy,3.0,Gal-Ell,327.4417,-34.8764,PsA,8,8/19,L,910.0, -NGC 7137,,1.5,Galaxy,327.0542,22.1597,Peg,8,8/19,L,2800.0, -NGC 7139,,1.2,PN,326.5375,63.7917,Cep,8,8/18,HOO,1000.0, -NGC 7142,,4.3,Open Cl,326.475,65.8,Cep,8,8/18,,, -NGC 7146,with NGC 7147,9.0,Galaxy,327.9458,3.0164,Peg,8,8/20,,, -NGC 7154,,1.3,Galaxy,328.8375,-34.8142,PsA,8,8/20,,, -NGC 7156,,2.0,Galaxy,328.6417,2.9428,Peg,8,8/20,,, -NGC 7160,"Swimming Alligator, Bruce Lee Cluster",7.0,Open Cl,328.4167,62.6033,Cep,8,8/20,RGB,1000.0, -NGC 7171,,3.0,Galaxy,330.2583,-13.2694,Aql,8,8/22,L,2800.0, -NGC 7177,,3.0,Galaxy,330.1708,17.7378,Peg,8,8/22,L,2800.0, -NGC 7183,,5.0,Galaxy,330.5917,-18.9167,Aql,8,8/22,L,1000.0, -NGC 7184,,4.5,Galaxy,330.6667,-20.8128,Aql,8,8/22,L,1000.0, -NGC 7187,,2.0,Galaxy,330.6833,-32.8033,PsA,8,8/22,L,2800.0, -NGC 7204,,2.0,Galaxy,331.725,-31.05,PsA,8,8/23,L,2800.0, -NGC 7209,,40.0,Open Cl,331.2792,46.4833,Lac,8,8/23,RGB,1000.0, -NGC 7212,,2.0,Galaxy,331.7583,10.2336,Peg,8,8/23,L,1000.0, -NGC 7217,,4.0,Galaxy,331.9667,31.3592,Peg,8,8/24,L,1000.0, -NGC 7223,,3.0,Galaxy,332.5375,41.0167,Lac,8,8/24,,, -NGC 7225,,2.0,Galaxy,333.2833,-26.1478,PsA,8,8/25,L,2800.0, -NGC 7228,,3.0,Gal Group,332.95,38.6992,Lac,8,8/25,L,2800.0, -NGC 7235,,4.0,Open Cl,333.1042,57.2711,Cep,8,8/25,,, -NGC 7241,,3.5,Galaxy,333.9583,19.2311,Peg,8,8/26,L,1000.0, -NGC 7242,,10.0,Galaxy,333.9167,37.2989,Lac,8,8/26,L,1000.0, -NGC 7243,,21.0,Open Cl,333.7833,49.8983,Lac,8,8/26,RGB,910.0, -NGC 7246,,2.0,Galaxy,334.4292,-15.5711,Aql,8,8/26,,, -NGC 7250,,3.0,Gal-Mag,334.575,40.5631,Lac,8,8/26,L,1000.0, -NGC 7260,,3.0,Galaxy,335.65,-4.1203,Aql,8,8/27,,, -NGC 7265,,20.0,Galaxy,335.6125,36.2097,Lac,8,8/27,,, -NGC 7282,,3.0,Galaxy,336.475,40.3153,Lac,8,8/28,L,1000.0, -NGC 7292,,2.0,Gal-Mag,337.1083,30.2919,Peg,8,8/29,L,1000.0, -NGC 7293,Helix Nebula,12.0,PN,337.4083,-20.8369,Aql,8,8/29,L,2800.0,3.0 -NGC 7296,,4.0,Open Cl,337.05,52.2833,Lac,8,8/29,,, -NGC 7303,,1.5,Galaxy,337.8875,30.9561,Peg,8,8/30,L,1000.0, -NGC 7309,,2.0,Galaxy,338.5833,-10.3569,Aql,8,8/30,L,2800.0, -NGC 7319,,2.0,Galaxy,339.0167,33.9758,Peg,8,8/31,L,2800.0, -NGC 7321,,2.0,Galaxy,339.1167,21.6211,Peg,8,8/31,L,2800.0, -NGC 7331,Deer Lick Galaxy Group,10.0,Galaxy,339.2667,34.4158,Peg,8,8/31,L,2800.0,117.0 -NGC 7332,,4.0,Galaxy,339.3542,23.7983,Peg,8,8/31,L,2800.0, -NGC 7339,,4.0,Galaxy,339.4458,23.7867,Peg,8,8/31,L,2800.0, -NGC 7342,WBL 685,30.0,Gal Group,339.5542,35.4986,Peg,8,8/31,L,2800.0, -NGC 7354,,0.7,PN,340.0833,61.2853,Cep,9,9/1,RGB,1000.0, -NGC 7361,,4.0,Galaxy,340.575,-30.0581,PsA,9,9/1,,, -NGC 7377,,2.0,Gal-Lent,341.9458,-22.3119,Aql,9,9/3,L,1000.0, -NGC 7380,Wizard Nebula,25.0,Em Neb,341.8375,58.1317,Cep,9,9/3,SHO,1000.0,48.0 -NGC 7385,,20.0,Gal Group,342.4792,11.6083,Peg,9,9/3,L,2800.0, -NGC 7419,,2.0,Open Cl,343.5833,60.8153,Cep,9,9/4,,, -NGC 7424,Crab Galaxy,8.0,Galaxy,344.325,-41.0711,Gru,9,9/5,L,1000.0, -NGC 7428,,4.0,Galaxy,344.3333,-1.0489,Psc,9,9/5,L,2800.0, -NGC 7436,Holmberg 800,4.0,Galaxy,344.4917,26.1497,Peg,9,9/5,L,1000.0, -NGC 7437,,2.0,Galaxy,344.5417,14.3086,Peg,9,9/5,,, -NGC 7457,,4.0,Galaxy,345.25,30.1447,Peg,9,9/6,L,2800.0, -NGC 7462,,4.0,Galaxy,345.6917,-40.835,Gru,9,9/7,,, -NGC 7463,,10.0,Galaxy,345.4667,15.9819,Peg,9,9/6,L,2800.0, -NGC 7479,Snake Galaxy,4.0,Galaxy,346.2375,12.3222,Peg,9,9/7,L,2800.0, -NGC 7489,,2.0,Galaxy,346.8875,22.9975,Peg,9,9/8,L,2800.0, -NGC 7490,,2.0,Galaxy,346.8542,32.3753,Peg,9,9/8,L,2800.0, -NGC 7492,,6.0,Glob Cl,347.1125,-15.6114,Aql,9,9/8,L,2800.0, -NGC 7497,,5.0,Galaxy,347.2667,18.1767,Peg,9,9/8,L,1000.0, -NGC 7499,,8.0,Galaxy,347.5917,7.5808,Psc,9,9/9,,, -NGC 7510,Dormouse Cluster,4.0,Asterism,347.7667,60.5708,Cep,9,9/9,L,1000.0, -NGC 7518,,2.0,Galaxy,348.3042,6.3217,Psc,9,9/9,L,2800.0, -NGC 7541,,10.0,Galaxy,348.6833,4.5339,Psc,9,9/10,L,1000.0, -NGC 7562,,2.0,Galaxy,348.9917,6.6875,Psc,9,9/10,,, -NGC 7567,,1.5,Galaxy,349.0458,15.8506,Peg,9,9/10,,, -NGC 7569,,1.2,Galaxy,349.1875,8.9061,Peg,9,9/10,L,2800.0, -NGC 7582,Grus Trio ,4.6,Galaxy,349.5958,-42.3706,Gru,9,9/11,L,2800.0, -NGC 7589,,2.0,Galaxy,349.5667,0.2611,Psc,9,9/11,L,2800.0, -NGC 7591,,3.0,Galaxy,349.5667,6.5858,Psc,9,9/11,,, -NGC 7592,,1.4,Galaxy,349.5917,-4.4164,Aql,9,9/11,L,2800.0, -NGC 7594,,16.0,Gal Group,349.5542,10.3022,Peg,9,9/11,L,2800.0, -NGC 7606,Cyclops Galaxy,5.8,Galaxy,349.7708,-8.4858,Aql,9,9/11,L,2800.0,180.0 -NGC 7610,,4.0,Galaxy,349.9208,10.185,Peg,9,9/11,L,2800.0, -NGC 7619,,3.0,Galaxy,350.0625,8.2064,Peg,9,9/11,L,2800.0, -NGC 7626,,3.0,Galaxy,350.175,8.2169,Peg,9,9/11,L,2800.0, -NGC 7631,,3.0,Galaxy,350.3625,8.2175,Peg,9,9/11,L,2800.0, -NGC 7635,Bubble Nebula,15.0,Em Neb,350.1875,61.2117,Cas,9,9/11,SHO,2800.0,24.0 -NGC 7638,,1.0,Galaxy,350.6375,11.3297,Peg,9,9/12,L,2800.0, -NGC 7640,,15.0,Galaxy,350.5292,40.8453,And,9,9/12,L,1000.0, -NGC 7656,,2.0,Galaxy,351.1292,-19.0597,Aql,9,9/12,L,1000.0, -NGC 7662,Blue Snowball,1.0,PN,351.475,42.535,And,9,9/13,HOO,2800.0, -NGC 7667,,2.0,Galaxy,351.8417,-0.1867,Psc,9,9/13,L,2800.0, -NGC 7673,,2.0,Galaxy,351.9208,23.5894,Peg,9,9/13,L,1000.0, -NGC 7677,,2.0,Galaxy,352.025,23.5314,Peg,9,9/13,L,1000.0, -NGC 7686,,15.0,Open Cl,352.5292,49.1333,And,9,9/14,,, -NGC 7694,,2.0,Galaxy,353.3167,-2.7033,Psc,9,9/14,,, -NGC 7700,,30.0,Galaxy,353.625,-2.9539,Psc,9,9/15,L,2800.0, -NGC 7711,,4.0,Galaxy,353.9125,15.3014,Peg,9,9/15,L,1000.0, -NGC 7721,,3.4,Galaxy,354.7042,-6.5181,Aql,9,9/16,,, -NGC 7723,,3.6,Galaxy,354.7375,-12.9611,Aql,9,9/16,L,2800.0, -NGC 7732,,2.0,Galaxy,355.3917,3.7244,Psc,9,9/16,L,2800.0, -NGC 7741,,4.0,Galaxy,355.975,26.0756,Peg,9,9/17,L,1000.0, -NGC 7742,Fried Egg Galaxy,2.0,Galaxy,356.0667,10.7669,Peg,9,9/17,L,2800.0, -NGC 7743,,3.0,Galaxy,356.0875,9.9336,Peg,9,9/17,,, -NGC 7750,,2.0,Galaxy,356.6583,3.7994,Psc,9,9/18,,, -NGC 7769,,12.0,Galaxy,357.7667,20.1503,Peg,9,9/19,L,2800.0, -NGC 7771,,20.0,Gal Group,357.8542,20.1119,Peg,9,9/19,L,1000.0, -NGC 7782,,12.0,Gal Group,358.475,7.9706,Psc,9,9/19,L,2800.0, -NGC 7789,Caroline's Rose,25.0,Open Cl,359.35,56.7083,Cas,9,9/21,RGB,1000.0,103.0 -NGC 7790,,17.0,Open Cl,359.6,61.2083,Cas,9,9/21,RGB,1000.0, -NGC 7793,Bond's Galaxy,9.1,Galaxy,359.4583,-32.5911,Scl,9,9/21,L,1000.0, -NGC 7800,,2.6,Gal-Mag,359.9042,14.8069,Peg,9,9/21,L,2800.0, -NGC 7814,Electric Arc Galaxy,6.3,Galaxy,0.8125,16.1453,Peg,9,9/21,L,2800.0, -NGC 7819,,2.0,Galaxy,1.1042,31.4722,Peg,9,9/21,,, -NGC 7822,Ced214,60.0,Em Neb,0.9,67.15,Cep,9,9/21,SHO,1000.0,92.0 -NGC 884,,29.0,Open Cl,35.6,57.1167,Per,10,10/26,,, -Northern Coalsack,,480.0,Dark Neb,310.0,41.0,Cyg,8,8/1,DSLR,50.0, -Orion,,400.0,Asterism,84.5875,-2.0967,Ori,12,12/15,DSLR,50.0, -OU 4,"Squid Nebula, Flying Bat",60.0,Em Neb,317.9458,59.9503,Cep,8,8/9,HOO,455.0,25.0 -Pakan's 3,,30.0,Asterism,103.0,-10.1667,Mon,1,1/3,,, -Palomar 12,,3.0,Glob Cl,326.65,-21.25,Cap,8,8/18,RGB,2800.0, -Parsamian 21,,2.0,YSO,292.2542,9.6453,Aql,7,7/14,L,2800.0, -Parsamian 22,,2.0,YSO,306.1208,42.2339,Cyg,7,7/28,L,2800.0, -PB 10,,1.0,PN,292.0583,12.3267,Aql,7,7/14,,, -PC 22,,1.0,PN,295.5167,13.8431,Aql,7,7/18,L,2800.0, -PFP 1,,25.0,PN,110.5,-6.3,Mon,1,1/11,,, -PGC 02248,Cartwheel Galaxy,1.1,Galaxy,9.4208,-33.7164,Scl,9,9/30,L,1000.0, -PGC 02493,Incorrectly ident. as NGC 218,1.0,Galaxy,10.4375,36.3592,And,10,10/1,L,1000.0, -PGC 03182,,2.0,Galaxy,13.5167,73.0842,Cas,10,10/4,L,2800.0, -PGC 03589,,40.0,Gal-Dwarf,15.0375,-33.7092,Scl,10,10/5,L,1000.0, -PGC 08896,,2.5,Galaxy,35.0292,-19.7511,Cet,10,10/26,L,2800.0, -PGC 09408,,1.3,Galaxy,37.0875,-31.8822,For,10,10/28,,, -PGC 16572,II ZW 28,0.2,Galaxy,75.425,3.5744,Ori,12,12/6,L,2800.0, -PGC 17588,,0.9,Galaxy,85.1792,49.6947,Aur,12,12/16,L,2800.0, -PGC 25926,,4.0,Galaxy,137.975,-20.1175,Hya,2,2/8,,, -PGC 30708,,1.0,Galaxy,156.7375,-24.0903,Hya,2,2/27,,, -PGC 32550,,3.4,Galaxy,162.8542,-19.8889,Hya,3,3/5,,, -PGC 35214,ESO503-17,1.0,Galaxy,171.7208,-27.7053,Hya,3,3/14,,, -PGC 37680, UGCA 258,1.0,Galaxy,179.6042,-14.5247,Crv,3,3/22,L,2800.0, -PGC 42951,,1.6,Galaxy,191.2083,-40.715,Cen,4,4/3,,, -PGC 44358,,3.0,Galaxy,194.4458,-9.6333,Vir,4,4/6,,, -PGC 45043,,1.3,Galaxy,195.7208,-23.9233,Hya,4,4/7,,, -PGC 46461,,0.5,Galaxy,199.8875,-24.4892,Hya,4,4/12,,, -PGC 48609,,1.0,Galaxy,205.8417,-25.9314,Hya,4,4/18,,, -PGC 49473,,2.0,Galaxy,208.7708,-26.78,Hya,4,4/21,,, -PGC 49930,,1.0,Galaxy,210.3583,-22.5711,Vir,4,4/22,,, -PGC 52809,,3.0,Galaxy,221.8458,-17.4419,Lib,5,5/4,,, -PGC 53093,,1.6,Galaxy,223.0417,-10.7411,Lib,5,5/5,,, -PGC 53134,,3.0,Gal-Mag,223.1458,-3.5614,Lib,5,5/5,L,2800.0, -PGC 54617,VV705,0.8,Galaxy,229.5125,43.8683,Boo,5,5/12,,, -PGC 60230,,0.8,Galaxy,261.1167,56.9064,Dra,6,6/13,,, -PGC 62946,The Bird,0.5,Galaxy,288.6333,-21.3178,Sgr,7,7/11,L,2800.0, -PGC 65817,,0.7,Galaxy,314.6125,-42.6492,Mic,8,8/6,,, -PGC 67110,,1.0,Galaxy,324.8583,-49.1603,Gru,8,8/16,,, -PGC 72600,,0.5,Galaxy,357.7333,27.2947,Peg,9,9/19,,, -PGC 90367,,1.0,Galaxy,309.325,25.5275,Vul,8,8/1,,, -PHL 932,,4.0,PN,14.975,15.7333,Psc,10,10/5,H,2800.0, -Picot 1,Napoleon's Hat Asterism,20.0,Asterism,213.5,18.55,Boo,4,4/25,RGB,1000.0, -PM 1-295,,0.3,PN,289.825,17.1333,Sge,7,7/12,,, -PP40,,10.0,HII Neb,85.2208,35.6833,Aur,12,12/16,H,2800.0, -Pu 1,,1.0,PN,88.2,28.1,Tau,12,12/19,,, -Puppis A,,8.0,SNR,126.0292,-42.9967,Pup,1,1/26,HOO,1000.0, -PuWe 1,,20.0,PN,95.0,55.6167,Lyn,12,12/26,,, -PV Cep,,2.0,YSO,311.4708,67.7658,Cep,8,8/3,L,2800.0, -Q0957+561,Lensed quasar,0.1,Quasar,150.4917,55.6808,UMa,2,2/20,L,2800.0, -R Mon,,2.0,YSO,99.7875,8.7444,Mon,12,12/31,L,1000.0, -Red Rectangle,HD 44179,0.2,PPN,94.9917,-10.6375,Mon,12,12/26,RGB,1000.0,64.0 -Rho Ophiuchi,ρ Ophiuchi,300.0,Em Neb,246.3958,-23.4472,Oph,5,5/29,RGB,455.0,37.0 -RY Tau,,3.0,YSO,65.4875,28.4433,Tau,11,11/25,L,455.0, -Sa 2-21,,0.7,PN,122.175,-19.1333,Pup,1,1/22,HOO,2800.0, -Saurer 1,,2.6,Open Cl,110.225,1.8,CMi,1,1/10,L,2800.0, -SaWe 3,,2.0,PN,276.525,-18.1167,Sgr,6,6/28,,, -SaWe 4,,1.5,PN,285.5083,-21.3,Sgr,7,7/7,,, -SCG2 0045-2043,Burbidge's Galaxy Chain,6.0,Gal Chain,11.8917,-20.4594,Cet,10,10/2,L,1000.0, -Scorpius Dark Nebula,,120.0,Dark Neb,269.175,-30.5,Sco,6,6/21,L,1000.0, -Sd 1,,0.2,PN,307.3292,40.2567,Cyg,7,7/30,,, -Seyfert's Sextet,,2.5,Gal Group,239.8042,20.7633,Ser,5,5/22,L,2800.0, -Sh1-089,,3.0,PN,318.525,47.7667,Cyg,8,8/10,HOO,1000.0, -Sh1-118,,3.0,PN,1.8333,64.9558,Cas,9,9/22,H,1000.0, -Sh2-003,Sh2-3,6.0,HII Neb,258.1042,-38.4594,Sco,6,6/10,SHO,910.0,185.0 -Sh2-004,,2.0,HII Neb,259.5,-39.3,Sco,6,6/11,,, -Sh2-005,,100.0,HII Neb,259.9583,-38.4,Sco,6,6/11,,, -Sh2-007,,270.0,Em Neb,239.75,-38.4,Sco,5,5/21,,, -Sh2-010,,55.0,Em Neb,259.25,-34.0833,Sco,6,6/10,,, -Sh2-014,dubious entry,1.0,HII Neb,262.575,-30.2717,Sco,6,6/14,,, -Sh2-015,,45.0,HII Neb,267.325,-31.255,Sco,6,6/19,H,1000.0, -Sh2-016,,45.0,HII Neb,266.6542,-29.3853,Sgr,6,6/18,H,1000.0, -Sh2-017,,25.0,HII Neb,266.55,-28.85,Sgr,6,6/18,,, -Sh2-018,,4.0,HII Neb,267.2,-29.25,Sgr,6,6/19,H,1000.0, -Sh2-019,,15.0,HII Neb,267.35,-29.1167,Sgr,6,6/19,H,1000.0, -Sh2-020,,10.0,HII Neb,266.7833,-28.775,Sgr,6,6/18,,, -Sh2-021,,4.0,HII Neb,267.5,-28.8833,Sgr,6,6/19,,, -Sh2-022,,55.0,HII Neb,268.25,-25.1,Sgr,6,6/19,,, -Sh2-023,,50.0,HII Neb,243.35,-8.3667,Sco,5,5/26,,, -Sh2-024,,30.0,Ref Neb,242.7542,-7.0267,Oph,5,5/25,,, -Sh2-027,,700.0,HII Neb,248.75,-10.4006,Oph,6,6/1,,, -Sh2-029,,25.0,HII Neb,272.3,-24.0711,Sgr,6,6/24,HL,2800.0, -Sh2-031,,9.0,HII Neb,272.85,-23.7831,Sgr,6,6/24,HL,2800.0, -Sh2-032,,9.0,HII Neb,272.75,-23.5667,Sgr,6,6/24,HL,2800.0, -Sh2-033,,35.0,Ref Neb,239.975,-1.6,Ser,5,5/22,,, -Sh2-034,,90.0,HII Neb,271.6,-21.65,Sgr,6,6/23,H,1000.0, -Sh2-035,,20.0,HII Neb,273.975,-20.25,Sgr,6,6/26,,, -Sh2-036,,45.0,Ref Neb,241.4,0.3833,Ser,5,5/24,,, -Sh2-037,,40.0,Ref Neb,274.225,-19.7775,Sgr,6,6/26,HL,1000.0, -Sh2-038,faint,3.0,HII Neb,272.0458,-18.25,Sgr,6,6/24,,, -Sh2-039,dubious entry,1.0,HII Neb,274.25,-18.7167,Sgr,6,6/26,,, -Sh2-040,,15.0,HII Neb,273.0458,-17.7133,Sgr,6,6/25,,, -Sh2-041,,60.0,HII Neb,273.95,-18.2333,Sgr,6,6/26,,, -Sh2-042,faint,4.0,HII Neb,272.5,-16.7667,Sgr,6,6/25,,, -Sh2-043,faint,15.0,HII Neb,274.0,-17.3833,Sgr,6,6/26,,, -Sh2-044,,50.0,HII Neb,274.125,-16.7333,Sgr,6,6/26,,, -Sh2-046,,25.0,HII Neb,271.525,-14.15,Ser,6,6/23,,, -Sh2-047,faint,7.0,HII Neb,274.5,-15.6,Ser,6,6/26,,, -Sh2-048,,10.0,HII Neb,275.5917,-14.5347,Sct,6,6/27,,, -Sh2-050,,35.0,HII Neb,276.4,-14.7,Sct,6,6/28,,, -Sh2-051,faint,28.0,HII Neb,280.0,-16.6667,Sct,7,7/2,,, -Sh2-054,Nest Nebula,120.0,HII Neb,274.4667,-11.6828,Ser,6,6/26,H,455.0,139.0 -Sh2-055,,4.0,HII Neb,278.0,-11.75,Sct,6,6/30,,, -Sh2-056,,7.0,HII Neb,277.75,-9.7,Sct,6,6/30,,, -Sh2-057,,3.0,HII Neb,277.5,-8.6167,Sct,6,6/29,,, -Sh2-058,,10.0,HII Neb,277.75,-8.4667,Sct,6,6/30,,, -Sh2-059,,28.0,HII Neb,279.25,-7.5833,Sct,7,7/1,,, -Sh2-060,,20.0,HII Neb,279.175,-6.6244,Sct,7,7/1,,, -Sh2-061,,2.0,HII Neb,278.3375,-4.9681,Sct,6,6/30,,, -Sh2-062,,4.0,HII Neb,291.875,-3.7833,Aql,7,7/14,,, -Sh2-063,,60.0,Mol Cld,299.425,-14.1167,Sgr,7,7/22,L,455.0, -Sh2-064,,25.0,HII Neb,277.8583,-2.0728,Ser,6,6/30,H,1000.0, -Sh2-065,,7.0,HII Neb,281.7667,-3.8011,Aql,7,7/4,,, -Sh2-066,,10.0,HII Neb,281.2667,-2.0011,Aql,7,7/3,,, -Sh2-067,faint,14.0,HII Neb,282.25,-2.3511,Aql,7,7/4,,, -Sh2-068,Flaming Skull Nebula,8.0,PN,276.2417,0.86,Ser,6,6/28,HOO,2800.0, -Sh2-069,,20.0,HII Neb,281.0583,-0.3147,Aql,7,7/3,H,1000.0, -Sh2-070,faint,9.0,HII Neb,273.5,7.0833,Aql,6,6/25,,, -Sh2-071,,2.0,PN,285.5,2.1531,Aql,7,7/7,HOO,910.0, -Sh2-072,,25.0,HII Neb,285.95,2.3167,Aql,7,7/8,,, -Sh2-073,,75.0,Ref Neb,242.5583,21.8689,Her,5,5/25,L,455.0, -Sh2-074,,17.0,HII Neb,287.325,5.55,Aql,7,7/9,,, -Sh2-075,faint,7.0,HII Neb,284.825,7.1167,Aql,7,7/7,,, -Sh2-076,,7.0,HII Neb,284.075,7.8,Aql,7,7/6,,, -Sh2-077,faint,13.0,HII Neb,297.075,1.1167,Aql,7,7/19,,, -Sh2-078,faint,7.0,HII Neb,285.825,14.1167,Aql,7,7/8,,, -Sh2-079,,40.0,HII Neb,290.825,13.9667,Aql,7,7/13,,, -Sh2-080,,2.0,WR Neb,287.8792,16.8606,Sge,7,7/10,H,1000.0, -Sh2-081,faint,10.0,Mol Cld,300.25,11.8167,Sge,7,7/22,,, -Sh2-082,Little Cocoon Nebula,9.0,HII Neb,292.5625,18.2917,Sge,7,7/15,H,910.0, -Sh2-083,,2.0,HII Neb,291.075,20.7833,Aql,7,7/13,,, -Sh2-084,,5.0,HII Neb,297.325,18.3833,Aql,7,7/19,,, -Sh2-085,dubious entry,3.0,HII Neb,285.825,25.8333,Aql,7,7/8,,, -Sh2-087,,10.0,HII Neb,296.5875,24.5875,Vul,7,7/19,H,1000.0, -Sh2-088,,25.0,HII Neb,296.6917,25.2156,Vul,7,7/19,H,1000.0, -Sh2-089,,30.0,HII Neb,297.55,26.4267,Vul,7,7/20,,, -Sh2-090,,5.0,HII Neb,297.3,26.86,Vul,7,7/19,,, -Sh2-091,,120.0,SNR,293.9,29.6,Cyg,7,7/16,HOO,455.0, -Sh2-092,,50.0,HII Neb,296.6667,28.1994,Vul,7,7/19,,, -Sh2-093,,2.0,HII Neb,298.8167,27.215,Cyg,7,7/20,,, -Sh2-094,,100.0,SNR,292.0667,31.465,Cyg,7,7/14,,, -Sh2-096,,100.0,SNR,292.175,32.6833,Cyg,7,7/14,,, -Sh2-097,,10.0,HII Neb,299.2542,29.3344,Cyg,7,7/21,,, -Sh2-098,,15.0,HII Neb,299.7542,31.375,Cyg,7,7/22,H,1000.0, -Sh2-099,,6.0,HII Neb,300.0042,33.5011,Cyg,7,7/21,,, -Sh2-101,Tulip Nebula,20.0,Em Neb,299.9792,35.2767,Cyg,7,7/22,SHO,1000.0,69.0 -Sh2-102,,40.0,HII Neb,307.925,30.6,Cyg,7,7/30,H,1000.0, -Sh2-104,,7.0,HII Neb,306.1542,38.5317,Cyg,7,7/28,,, -Sh2-106,Hourglass Nebula,3.0,HII Neb,306.8625,37.3803,Cyg,7,7/29,H,2800.0,134.0 -Sh2-107,,10.0,HII Neb,310.6542,36.3467,Cyg,8,8/2,,, -Sh2-109,Cygnus Area,1000.0,HII Neb,308.4042,40.3333,Cyg,7,7/30,,, -Sh2-110,,84.0,HII Neb,319.9042,32.35,Cyg,8,8/11,,, -Sh2-111,,24.0,HII Neb,325.1542,30.25,Cyg,8,8/17,,, -Sh2-112,Hermit Crab,15.0,Em Neb,308.4542,45.6333,Cyg,7,7/31,SHO,1000.0,198.0 -Sh2-113,,60.0,HII Neb,320.2,38.0833,Cyg,8,8/12,,, -Sh2-114,Flying Dragon Nebula,60.0,HII Neb,320.3,38.7,Cyg,8,8/12,H,1000.0,55.0 -Sh2-115,,100.0,HII Neb,308.7583,47.04,Cyg,7,7/31,SHO,455.0, -Sh2-118,unclear definition,360.0,HII Neb,324.375,40.2,Cyg,8,8/16,,, -Sh2-119,,120.0,HII Neb,319.625,43.9333,Cyg,8,8/11,HOO,455.0, -Sh2-120,tiny,1.0,HII Neb,315.75,49.8667,Cyg,8,8/7,,, -Sh2-121,tiny,2.0,HII Neb,316.375,49.65,Cyg,8,8/7,,, -Sh2-122,,40.0,Mol Cld,347.2,14.9167,Peg,9,9/8,L,1000.0, -Sh2-123,,13.0,HII Neb,325.575,44.5333,Cyg,8,8/17,,, -Sh2-124,,20.0,HII Neb,324.5708,50.33,Cyg,8,8/16,H,1000.0, -Sh2-127,,2.0,HII Neb,322.0,54.6167,Cep,8,8/13,,, -Sh2-130,,3.0,HII Neb,310.75,63.2167,Cep,8,8/2,,, -Sh2-132,Lion Nebula,60.0,WR Neb,334.7875,56.0792,Cep,8,8/27,SHO,1000.0,44.0 -Sh2-133,faint,27.0,HII Neb,321.75,64.0667,Cep,8,8/13,,, -Sh2-134,,200.0,HII Neb,334.5,58.9667,Cep,8,8/26,,, -Sh2-135,,15.0,HII Neb,335.55,58.7383,Cep,8,8/27,H,2800.0, -Sh2-137,,50.0,HII Neb,329.5,64.7,Cep,8,8/21,,, -Sh2-138,,1.0,HII Neb,338.1917,58.4722,Cep,8,8/30,H,2800.0, -Sh2-139,,11.0,HII Neb,338.5,58.2167,Cep,8,8/29,,, -Sh2-140,,30.0,HII Neb,334.7833,63.2853,Cep,8,8/27,H,2800.0, -Sh2-141,,5.0,HII Neb,337.0,61.6167,Cep,8,8/28,,, -Sh2-143,,13.0,HII Neb,342.25,57.75,Cep,9,9/3,,, -Sh2-144,,7.0,HII Neb,341.0,59.8833,Cep,9,9/1,,, -Sh2-145,,10.0,HII Neb,336.375,64.3,Cep,8,8/28,HL,1000.0, -Sh2-146,,2.0,HII Neb,342.3708,59.9156,Cep,9,9/3,H,2800.0, -Sh2-147,,4.0,HII Neb,343.75,58.4667,Cep,9,9/4,,, -Sh2-148,,3.0,HII Neb,344.0,58.5167,Cep,9,9/4,,, -Sh2-149,,1.0,HII Neb,344.0,58.5333,Cep,9,9/4,,, -Sh2-150,,90.0,HII Neb,337.3167,64.8522,Cep,8,8/29,HL,1000.0, -Sh2-151,,30.0,HII Neb,345.75,57.0833,Cep,9,9/4,,, -Sh2-152,,10.0,HII Neb,344.6708,58.7831,Cas,9,9/6,H,1000.0, -Sh2-153,,4.0,HII Neb,344.6708,58.7889,Cas,9,9/6,H,1000.0, -Sh2-154,,40.0,HII Neb,343.0,61.2167,Cas,9,9/3,,, -Sh2-155,Cave Nebula,40.0,Dark Neb,344.475,62.5183,Cep,9,9/5,HL,2800.0,96.0 -Sh2-156,,15.0,HII Neb,346.2917,60.2419,Cep,9,9/7,SHO,2800.0, -Sh2-157,Lobster Claw Nebula,70.0,WR Neb,349.0167,60.035,Cas,9,9/10,SHO,1000.0,110.0 -Sh2-158,Northern Lagoon Nebula,8.0,Em Neb,348.4042,61.5,Cep,9,9/9,SHO,2800.0,200.0 -Sh2-159,,7.0,HII Neb,348.75,61.1167,Cas,9,9/9,,, -Sh2-160,,40.0,HII Neb,346.0,64.6,Cas,9,9/6,,, -Sh2-161,,55.0,HII Neb,348.75,61.85,Cas,9,9/9,,, -Sh2-163,,10.0,HII Neb,353.2417,60.8003,Cas,9,9/14,H,1000.0, -Sh2-164,,5.0,HII Neb,354.5,59.9667,Cas,9,9/15,,, -Sh2-165,,10.0,HII Neb,354.95,61.9333,Cas,9,9/16,,, -Sh2-166,,14.0,HII Neb,355.5,60.9333,Cas,9,9/16,,, -Sh2-167,,3.0,HII Neb,353.75,64.8667,Cas,9,9/14,,, -Sh2-168,,7.0,HII Neb,358.2333,60.4844,Cas,9,9/19,H,1000.0, -Sh2-169,,9.0,HII Neb,358.5,60.3667,Cas,9,9/19,,, -Sh2-170,,20.0,HII Neb,0.3917,64.6117,Cas,9,9/21,HOO,910.0, -Sh2-172,,3.0,HII Neb,3.75,61.25,Cas,9,9/24,,, -Sh2-173,Phantom of the Opera Nebula,25.0,HII Neb,5.3167,61.725,Cas,9,9/26,H,1000.0,120.0 -Sh2-174,Valentine Rose Nebula,10.0,PN,356.7833,80.8228,Cep,9,9/18,HOO,1000.0,187.0 -Sh2-175,,3.0,HII Neb,6.75,64.7,Cas,9,9/27,,, -Sh2-176,,20.0,HII Neb,7.975,57.3767,Cas,9,9/28,H,1000.0, -Sh2-177,,14.0,HII Neb,355.5,60.9333,Cas,9,9/16,,, -Sh2-178,,420.0,HII Neb,334.75,87.75,Cas,8,8/26,,, -Sh2-179,Böhm-Vitense 5-2,0.7,PN,10.1,62.85,Cas,9,9/30,HOO,2800.0, -Sh2-180,,15.0,HII Neb,12.2,62.9167,Cas,10,10/3,H,1000.0, -Sh2-181,,15.0,HII Neb,0.2042,65.3,Cas,9,9/20,,, -Sh2-182,tiny reflection nebula,2.0,Ref Neb,12.5,64.75,Cas,10,10/3,,, -Sh2-183,,45.0,HII Neb,13.5,65.6833,Cas,10,10/4,,, -Sh2-186,tiny,1.0,HII Neb,17.075,63.1167,Cas,10,10/8,,, -Sh2-187,,10.0,HII Neb,20.825,61.8167,Cas,10,10/11,L,1000.0, -Sh2-188,Dolphin Nebula,9.0,PN,22.6375,58.4142,Cas,10,10/13,HOO,1000.0,135.0 -Sh2-192,,2.0,HII Neb,41.75,61.9167,Cas,11,11/2,,, -Sh2-193,,3.0,HII Neb,41.75,61.9667,Cas,11,11/2,,, -Sh2-194,,2.0,HII Neb,41.75,61.95,Cas,11,11/2,,, -Sh2-195,dubious entry,6.0,HII Neb,40.0,59.6167,Cas,10,10/31,,, -Sh2-196,,6.0,HII Neb,42.75,62.2167,Cas,11,11/3,,, -Sh2-198,,11.0,HII Neb,42.5,59.7167,Cas,11,11/3,,, -Sh2-200,HDW 2,6.0,PN,47.7542,62.7958,Cas,11,11/8,HOO,1000.0,194.0 -Sh2-201,,14.0,HII Neb,45.75,60.4667,Cas,11,11/6,,, -Sh2-202,,180.0,HII Neb,49.725,59.6333,Cam,11,11/10,HL,455.0, -Sh2-203,,120.0,HII Neb,50.7458,54.8283,Per,11,11/11,,, -Sh2-204,,90.0,HII Neb,58.925,57.4333,Cam,11,11/19,,, -Sh2-205,Peanut Nebula,180.0,HII Neb,58.0583,53.4167,Cam,11,11/18,,, -Sh2-207,,4.0,HII Neb,64.9208,53.1414,Cam,11,11/25,H,1000.0, -Sh2-208,,4.0,HII Neb,64.8875,52.9783,Cam,11,11/25,H,1000.0, -Sh2-209,,9.0,HII Neb,62.75,51.0,Aur,11,11/23,,, -Sh2-210,,21.0,HII Neb,74.6917,51.0,Aur,11,11/28,,, -Sh2-211,,2.0,HII Neb,69.2375,50.8767,Per,11,11/30,H,2800.0, -Sh2-212,,5.0,HII Neb,70.15,50.4622,Per,12,12/1,H,1000.0, -Sh2-213,,7.0,HII Neb,70.0,50.45,Aur,12,12/1,,, -Sh2-214,dubious entry,4.0,HII Neb,65.5,44.3667,Aur,11,11/25,,, -Sh2-215,,3.0,HII Neb,64.25,42.6,Aur,11,11/25,,, -Sh2-216,Simeiz 288,120.0,PN,70.8375,46.7017,Per,12,12/1,HOO,455.0, -Sh2-217,,9.0,HII Neb,74.6917,47.9933,Aur,12,12/5,,, -Sh2-218,,66.0,Mol Cld,85.25,52.1667,Aur,12,12/5,,, -Sh2-219,,3.0,HII Neb,74.025,47.3758,Aur,12,12/4,,, -Sh2-221,,120.0,HII Neb,75.425,46.3333,Aur,12,12/6,,, -Sh2-223,Sh2-223,90.0,HII Neb,79.325,42.2,Aur,12,12/10,H,327.0,189.0 -Sh2-224,Sh2-224,60.0,SNR,81.65,42.9167,Aur,12,12/12,HOO,327.0,159.0 -Sh2-225,,24.0,HII Neb,81.75,40.5169,Aur,12,12/12,,, -Sh2-226,,5.0,HII Neb,77.75,37.9836,Aur,12,12/9,,, -Sh2-227,,25.0,HII Neb,79.75,38.9169,Aur,12,12/10,,, -Sh2-228,,8.0,HII Neb,78.3583,37.4503,Aur,12,12/9,,, -Sh2-230,,300.0,HII Neb,80.5,34.0003,Aur,12,12/11,,, -Sh2-231,,12.0,HII Neb,84.8042,35.765,Aur,12,12/15,H,1000.0, -Sh2-232,Jelly Doughnut Nebula,45.0,HII Neb,85.625,36.1833,Aur,12,12/16,H,1000.0, -Sh2-233,,2.0,HII Neb,85.125,35.8511,Aur,12,12/16,H,1000.0, -Sh2-235,,20.0,HII Neb,85.275,35.8333,Aur,12,12/16,H,1000.0, -Sh2-239,,5.0,HII Neb,67.825,18.1,Tau,11,11/28,L,1000.0, -Sh2-240,"Simeis 147, Spaghetti Nebula",180.0,SNR,85.275,28.0833,Tau,12,12/16,HOO,327.0,19.0 -Sh2-241,,10.0,HII Neb,91.025,30.25,Aur,12,12/22,L,1000.0, -Sh2-242,,7.0,HII Neb,87.975,27.0317,Tau,12,12/19,HOO,327.0, -Sh2-245,,1800.0,Dark Neb,55.025,-3.4667,Ori,11,11/15,,, -Sh2-246,,65.0,Dark Neb,75.525,14.0833,Ori,12,12/6,,, -Sh2-247,,9.0,HII Neb,92.125,21.6,Gem,12,12/23,,, -Sh2-249,,80.0,HII Neb,95.6333,22.975,Gem,12,12/26,H,910.0, -Sh2-250,,10.0,HII Neb,70.05,7.3667,Tau,11,11/30,,, -Sh2-251,,35.0,HII Neb,68.225,5.85,Tau,11,11/29,,, -Sh2-253,,5.0,HII Neb,96.45,20.0167,Gem,12,12/27,,, -Sh2-254,Mushroom Nebula,20.0,HII Neb,92.9958,18.055,Ori,12,12/24,H,1000.0,192.0 -Sh2-255,,6.0,Ref Neb,93.2625,17.9828,Ori,12,12/24,H,1000.0, -Sh2-256,,8.0,Ref Neb,93.15,17.9483,Ori,12,12/24,H,1000.0, -Sh2-257,,5.0,Ref Neb,93.1833,17.9886,Ori,12,12/24,H,1000.0, -Sh2-258,,7.0,Ref Neb,93.3667,17.925,Ori,12,12/24,H,1000.0, -Sh2-259,,2.0,HII Neb,92.8583,17.4403,Ori,12,12/24,,, -Sh2-260,,55.0,HII Neb,73.8,5.6667,Ori,12,12/4,H,1000.0, -Sh2-261,Lower's Nebula,45.0,Em Neb,92.15,15.7833,Ori,12,12/23,HOO,1000.0,147.0 -Sh2-262,,20.0,HII Neb,76.7,6.1667,Ori,12,12/7,,, -Sh2-263,Moldy Strawberry Nebula,110.0,Em Neb,80.4375,8.3992,Ori,12,12/10,HL,455.0, -Sh2-264,,420.0,HII Neb,84.2,10.1667,Ori,12,12/15,,, -Sh2-265,,60.0,HII Neb,79.65,7.4333,Ori,12,12/10,HL,455.0, -Sh2-266,,2.0,HII Neb,94.6917,15.2811,Ori,12,12/26,H,1000.0, -Sh2-267,,6.0,HII Neb,93.75,14.2667,Ori,12,12/25,,, -Sh2-268,,72.0,HII Neb,92.5,13.2833,Ori,12,12/23,,, -Sh2-269,,4.0,HII Neb,93.6583,13.8292,Ori,12,12/24,,, -Sh2-270,,1.0,HII Neb,92.5,12.8,Ori,12,12/24,,, -Sh2-271,,2.0,HII Neb,93.8,12.3667,Ori,12,12/25,,, -Sh2-272,,1.0,HII Neb,93.75,12.3333,Ori,12,12/25,,, -Sh2-276,,90.0,HII Neb,88.125,0.75,Ori,12,12/19,H,455.0, -Sh2-278,,55.0,HII Neb,79.975,-5.65,Ori,12,12/11,HL,1000.0, -Sh2-280,,40.0,Em Neb,98.5917,2.4683,Mon,12,12/29,SHO,1000.0, -Sh2-282,,35.0,HII Neb,99.5333,1.42,Mon,12,12/30,,, -Sh2-283,,9.0,HII Neb,99.5333,0.7367,Mon,12,12/30,,, -Sh2-284,,60.0,HII Neb,101.3667,0.2967,Mon,1,1/1,H,1000.0, -Sh2-285,,5.0,HII Neb,103.75,-0.5333,Mon,1,1/4,,, -Sh2-286,faint,7.0,HII Neb,103.5,-4.5167,Mon,1,1/3,,, -Sh2-287,faint,16.0,HII Neb,104.75,-4.7667,Mon,1,1/5,,, -Sh2-288,,3.0,HII Neb,107.0,-4.3033,Mon,1,1/7,,, -Sh2-289,,19.0,HII Neb,101.25,-7.3367,Mon,1,1/1,,, -Sh2-291,,10.0,HII Neb,103.75,-8.0033,Mon,1,1/4,,, -Sh2-293,,14.0,HII Neb,105.4583,-11.3008,CMa,1,1/5,H,327.0, -Sh2-294,,40.0,HII Neb,109.125,-9.435,Mon,1,1/9,H,1000.0, -Sh2-295,,10.0,HII Neb,105.6625,-11.4567,CMa,1,1/6,H,327.0, -Sh2-297,,23.0,HII Neb,106.3042,-12.3167,CMa,1,1/6,H,327.0, -Sh2-299,,2.0,HII Neb,112.5,-15.2867,Mon,1,1/12,,, -Sh2-300,,6.0,HII Neb,112.75,-15.4033,Mon,1,1/13,,, -Sh2-301,Teapot Nebula,9.0,Em Neb,107.475,-18.4981,CMa,1,1/8,SHO,1500.0,165.0 -Sh2-302,Snowman Nebula,30.0,HII Neb,112.8833,-16.9861,Pup,1,1/13,H,1000.0,190.0 -Sh2-303,,72.0,HII Neb,108.0,-19.7867,Mon,1,1/8,,, -Sh2-304,,180.0,HII Neb,101.0,-23.9033,Mon,1,1/1,,, -Sh2-305,,4.0,HII Neb,112.5167,-18.5369,Pup,1,1/13,H,2800.0, -Sh2-306,,28.0,HII Neb,112.5,-19.1367,Mon,1,1/12,,, -Sh2-307,,6.0,HII Neb,113.8917,-18.7597,Pup,1,1/14,H,2800.0, -Sh2-308,Gourd Nebula,50.0,WR Neb,103.5,-23.9333,CMa,1,1/3,HOO,1000.0,6.0 -Sh2-309,,14.0,HII Neb,113.0,-19.4367,Mon,1,1/13,,, -Sh2-310,,660.0,HII Neb,108.75,-26.77,Mon,1,1/9,,, -Sh2-312,,800.0,HII Neb,134.75,-24.77,Mon,1,1/4,,, -Shakhbazian 001,,1.4,Gal Clus,163.775,40.4581,UMa,3,3/6,L,2800.0, -Shakhbazian 049,,5.0,Gal Chain,153.4625,38.7647,LMi,2,2/23,L,2800.0, -Simeis 57,Propeller Nebula,20.0,HII Neb,304.0417,43.6697,Cyg,7,7/26,H,1000.0,113.0 -Soap Bubble,G75.5+1.7,1.0,PN,303.8583,38.0467,Cyg,7,7/26,HOO,1000.0, -Stargate,,15.0,Asterism,189.0,-12.0333,Crv,3,3/31,,, -Stock 2,Strong Man Cluster,130.0,Open Cl,33.6708,59.4833,Cas,10,10/24,RGB,455.0, -SU Aur,,3.0,YSO,73.9958,30.5669,Aur,12,12/4,L,1000.0, -T Tau,,3.0,YSO,65.4958,19.5353,Tau,11,11/26,HL,1000.0, -Te 2337,,0.5,PN,267.2,-26.4333,Sgr,6,6/19,,, -Teacup Nebula,,0.5,HII Neb,217.625,13.6533,Boo,4,4/30,,, -Terzan 7,,1.5,Glob Cl,289.4333,-34.6578,Sgr,7,7/11,RGB,2800.0, -Terzan 8,,1.9,Glob Cl,295.4333,-33.9994,Sgr,7,7/17,RGB,2800.0, -Tiny Dipper,,15.0,Asterism,355.175,7.95,Psc,9,9/16,RGB,1000.0, -Tr 5,Trumpler 5 Cluster,7.0,Open Cl,99.175,9.4333,Mon,12,12/30,,, -Trapezium,,20.0,Asterism,83.8208,-5.3872,Ori,12,12/14,RGB,2800.0, -UGC 00006,,1.0,Galaxy,0.7917,21.9597,Peg,9,9/21,,, -UGC 00711,,3.4,Galaxy,17.1542,1.6406,Cet,10,10/8,L,2800.0, -UGC 00829,,1.6,Galaxy,19.4417,10.1969,Psc,10,10/10,L,2800.0, -UGC 01651,,2.2,Galaxy,32.4125,35.7978,Tri,10,10/23,,, -UGC 02238,,1.7,Galaxy,41.575,13.095,Ari,11,11/1,,, -UGC 02369,,2.0,Galaxy,43.5083,14.9761,Ari,11,11/3,,, -UGC 02411,,4.0,Galaxy,44.7,75.7436,Cas,11,11/5,L,2800.0, -UGC 02885,,5.0,Galaxy,58.2583,35.5892,Per,11,11/18,L,2800.0, -UGC 03697,Integral Sign Galaxy,3.2,Galaxy,107.8417,71.8361,Cam,1,1/8,L,2800.0, -UGC 03789,VII Zw 140,1.6,Galaxy,109.8792,59.355,Lyn,1,1/10,L,2800.0, -UGC 03904,,1.3,Galaxy,113.3833,30.5631,Gem,1,1/14,,, -UGC 04133,,2.0,Galaxy,120.0375,56.3653,Lyn,1,1/20,L,2800.0, -UGC 04171,,2.0,Galaxy,120.3792,9.7075,Cnc,1,1/21,,, -UGC 04186,,1.4,Galaxy,121.0583,62.9808,Cam,1,1/21,,, -UGC 04277,,3.5,Galaxy,123.4875,52.6478,Lyn,1,1/24,L,2800.0, -UGC 04332,,3.0,Galaxy,124.9083,21.1142,Cnc,1,1/25,L,2800.0, -UGC 04596,,2.0,Galaxy,131.7875,19.6311,Cnc,2,2/1,,, -UGC 04599,,0.4,Gal-Ell,131.925,13.4192,Cnc,2,2/1,L,2800.0, -UGC 04703,,4.0,Gal-BCD,134.6042,6.3347,Hya,2,2/4,L,2800.0, -UGC 04719,,2.2,Galaxy,135.1583,50.6781,UMa,2,2/5,,, -UGC 04722,,1.6,Galaxy,135.1,25.6114,Cnc,2,2/5,L,2800.0, -UGC 05055,,1.3,Galaxy,142.55,55.8525,UMa,2,2/12,L,1960.0, -UGC 05101,,2.0,Galaxy,143.9667,61.3533,UMa,2,2/14,L,2800.0, -UGC 05119,,0.8,Galaxy,144.3042,38.0922,LMi,2,2/14,,, -UGC 05164,,1.0,Galaxy,145.2083,11.5517,Leo,2,2/15,,, -UGC 05173,,2.2,Galaxy,145.3833,11.4128,Leo,2,2/15,,, -UGC 05267,,1.6,Galaxy,147.4708,9.0953,Leo,2,2/17,,, -UGC 05341,,3.0,Galaxy,149.15,20.645,Leo,2,2/19,,, -UGC 05391,,2.2,Galaxy,150.4208,37.2478,LMi,2,2/20,,, -UGC 05495,,2.6,Galaxy,152.9708,16.4394,Leo,2,2/23,,, -UGC 05509,,1.5,Galaxy,153.3833,20.175,Leo,2,2/23,,, -UGC 05609,,1.2,Gal-Mag,156.0917,78.6089,Dra,2,2/26,L,2800.0, -UGC 05662,,3.0,Galaxy,156.7542,28.6394,LMi,2,2/27,,, -UGC 05708,,3.0,Galaxy,157.8042,4.4722,Sex,2,2/28,,, -UGC 05936,,1.0,Galaxy,162.5292,36.3419,LMi,3,3/5,,, -UGC 06307,,1.3,Galaxy,169.4208,38.0492,UMa,3,3/12,,, -UGC 06309,,1.6,Galaxy,169.4458,51.4761,UMa,3,3/12,L,2800.0, -UGC 06332,,0.6,Galaxy,169.8208,20.8136,Leo,3,3/12,,, -UGC 06334,,1.0,Galaxy,169.875,28.6519,UMa,3,3/12,,, -UGC 06378,,2.0,Galaxy,170.5292,69.6336,UMa,3,3/13,,, -UGC 06614,,1.5,Galaxy,174.8125,17.1436,Leo,3,3/17,L,2800.0, -UGC 06667,,3.3,Galaxy,175.6042,51.5975,UMa,3,3/18,,, -UGC 07170,,3.0,Galaxy,182.6542,18.8283,Com,3,3/25,,, -UGC 07321,,6.0,Galaxy,184.3917,22.5403,Com,3,3/27,,, -UGC 07342,,1.0,Galaxy,184.5792,29.2533,Com,3,3/27,,, -UGC 07388,,1.0,Galaxy,185.0667,33.6608,CVn,3,3/27,,, -UGC 07576,,1.2,Galaxy,186.925,28.6967,Com,3,3/29,,, -UGC 08040,,1.4,Galaxy,193.6792,58.7761,UMa,4,4/5,,, -UGC 08058,Mrk 231,0.7,Galaxy,194.0625,56.8731,UMa,4,4/6,L,2800.0, -UGC 08146,,3.5,Galaxy,195.5333,58.6986,UMa,4,4/7,,, -UGC 08155,,2.0,Galaxy,195.8125,7.8019,Vir,4,4/7,,, -UGC 08303,Holmberg VIII Galaxy,30.0,Gal-Mag,198.325,36.2167,CVn,4,4/10,L,1000.0, -UGC 08696,Mrk 273,1.2,Galaxy,206.175,55.8864,UMa,4,4/18,L,2800.0, -UGC 08740,,1.0,Galaxy,207.4125,4.2383,Vir,4,4/19,,, -UGC 09002,,1.0,Galaxy,211.225,12.7217,Boo,4,4/23,,, -UGC 09169,,3.5,Galaxy,214.9375,9.3625,Boo,4,4/27,,, -UGC 09242,,4.5,Galaxy,216.3375,39.5386,Boo,4,4/28,L,2800.0, -UGC 09511,I Zw 96,1.3,Gal-Ell,221.225,51.3406,Boo,5,5/3,L,2800.0, -UGC 09562,,0.5,Gal-BCD,222.8083,35.5425,Boo,5,5/5,L,2800.0, -UGC 09749,Ursa Minor Dwarf Galaxy,30.0,Gal-Dwarf,227.2833,67.2225,UMi,5,5/9,RGB,1000.0, -UGC 09796,II Zw 073 ,1.6,Galaxy,228.9833,43.1667,Boo,5,5/11,L,2800.0, -UGC 09856,,2.0,Galaxy,231.625,41.2908,Boo,5,5/14,,, -UGC 09977,,4.0,Galaxy,235.5,0.7131,Ser,5,5/18,,, -UGC 10043,,2.2,Galaxy,237.1708,21.8692,Ser,5,5/19,L,2800.0, -UGC 10168,,0.6,Galaxy,240.8833,49.3381,Her,5,5/23,,, -UGC 10273,,1.4,Galaxy,243.1875,28.2853,CrB,5,5/25,L,2800.0, -UGC 10288,,5.0,Galaxy,243.6042,-0.2078,Ser,5,5/26,,, -UGC 10548,,1.5,Galaxy,251.4667,59.6211,Dra,6,6/3,L,2800.0, -UGC 10822,Draco Dwarf Galaxy ,40.0,Gal-Dwarf,260.05,57.9153,Dra,6,6/11,RGB,1000.0, -UGC 11093,,3.4,Galaxy,270.4667,6.9672,Oph,6,6/22,,, -UGC 11185,,2.0,Galaxy,274.0375,42.6564,Lyr,6,6/26,L,2800.0, -UGC 11585,,2.0,Galaxy,308.0667,-2.2486,Aql,7,7/30,,, -UGC 11871,,1.5,Gal-Ell,330.175,10.5497,Peg,8,8/22,L,2800.0, -UGC 11905,,2.0,Galaxy,331.4792,20.6394,Peg,8,8/23,L,2800.0, -UGC 12040,,0.7,Galaxy,336.775,36.3617,Lac,8,8/28,,, -UGC 12071,,1.1,Galaxy,338.1042,30.8356,Peg,8,8/30,L,1000.0, -UGC 12137,,2.0,Galaxy,339.9583,38.2153,Lac,9,9/1,L,2800.0, -UGC 12342,Seagull Galaxy,1.3,Galaxy,346.225,16.6783,Peg,9,9/7,L,1000.0, -UGC 12423,,2.0,Galaxy,348.3042,6.4303,Psc,9,9/9,L,2800.0, -UGC 12525,,2.0,Galaxy,350.1083,1.5636,Psc,9,9/11,,, -UGC 12588,,2.0,Galaxy,351.1792,41.3481,And,9,9/12,,, -UGC 12812,,1.0,Galaxy,357.8292,20.5781,Peg,9,9/19,,, -UGC 12915,,2.0,Galaxy,0.425,23.4958,Peg,9,9/21,L,1000.0, -UGCA 258,,1.0,Galaxy,179.6083,-14.5239,Crv,3,3/22,,, -UGCA 320,,2.0,Galaxy,195.8167,-17.4203,Vir,4,4/7,,, -V0375 Lac,,3.0,YSO,338.6708,40.6683,Lac,8,8/31,HL,455.0, -V0376 Cas,,3.0,YSO,2.8625,58.8344,Cas,9,9/23,L,1000.0, -V0380 Ori,,2.0,YSO,84.1083,-6.7158,Ori,12,12/15,H,1000.0, -V0565 Mon,,2.0,YSO,104.5083,-7.945,Mon,1,1/5,L,2800.0, -V0628 Cas,,3.0,YSO,349.3583,60.8453,Cas,9,9/10,SHO,1000.0, -V0633 Cas,,3.0,YSO,2.8583,58.8244,Cas,9,9/23,L,1000.0, -V1023 Tau,,3.0,YSO,64.6958,28.3353,Tau,11,11/25,L,455.0, -V1331 Cyg,,1.5,YSO,315.2833,50.3628,Cyg,8,8/7,L,2800.0, -V1352 Aql,,3.0,YSO,290.1292,11.0319,Aql,7,7/12,L,1000.0, -V1793 Ori,,3.0,YSO,88.5125,1.6708,Ori,12,12/19,HL,1000.0, -V1982 Cyg,,2.0,YSO,315.9708,50.2528,Cyg,8,8/7,L,2800.0, -vdB 001,,8.6,Ref Neb,2.6917,58.7753,Cas,9,9/23,L,1000.0, -vdB 002,,4.4,Ref Neb,3.3417,65.6133,Cas,9,9/24,,, -vdB 003,,3.0,Ref Neb,8.6417,69.4303,Cas,9,9/29,,, -vdB 004,,12.0,Open Cl,10.8167,61.915,Cas,10,10/1,L,1000.0, -vdB 005,,60.0,Ref Neb,11.7167,60.7167,Cas,10,10/1,,, -vdB 007,,7.0,Ref Neb,42.2292,69.6264,Cas,11,11/2,L,455.0, -vdB 008,,4.0,Ref Neb,42.8917,67.8,Cas,11,11/3,,, -vdB 009,,7.0,Ref Neb,42.9958,68.8825,Cas,11,11/3,L,455.0, -vdB 010,,19.0,Ref Neb,48.8125,57.1719,Cam,11,11/9,,, -vdB 011,,6.2,Ref Neb,51.0625,61.5386,Cam,11,11/11,,, -vdB 012,,5.0,Ref Neb,51.3542,31.7297,Per,11,11/11,L,2800.0, -vdB 013,,9.0,Ref Neb,51.4583,30.9317,Ari,11,11/12,L,455.0, -vdB 014,,46.0,Ref Neb,52.2667,59.9436,Cam,11,11/12,L,455.0, -vdB 015,,90.0,Ref Neb,52.475,58.8761,Cam,11,11/13,L,455.0, -vdB 016,,9.0,Ref Neb,52.0875,29.7833,Ari,11,11/12,L,455.0, -vdB 020,Electra Nebula,10.0,Ref Neb,56.2208,24.1131,Tau,11,11/16,L,1000.0, -vdB 021,Maia Nebula,10.0,Ref Neb,56.4542,24.3703,Tau,11,11/17,L,1000.0, -vdB 022,Merope Nebula,15.0,Ref Neb,56.5792,23.9472,Tau,11,11/17,L,1000.0, -vdB 023,Alcyone Nebula,12.0,Ref Neb,56.8708,24.1089,Tau,11,11/17,L,1000.0, -vdB 024,,9.0,Ref Neb,57.3917,38.9642,Per,11,11/18,L,1000.0, -vdB 025,faint,8.0,Ref Neb,63.1458,23.5839,Tau,11,11/24,,, -vdB 026,,11.4,Ref Neb,63.3958,10.2172,Tau,11,11/24,,, -vdB 027,,8.6,Ref Neb,65.4792,28.4511,Tau,11,11/26,L,455.0, -vdB 029,,12.0,Ref Neb,72.1458,29.7339,Tau,12,12/3,,, -vdB 030,,46.0,Ref Neb,73.5042,66.3117,Cam,12,12/4,H,1000.0, -vdB 031,Blackbird Nebula,40.0,Ref Neb,73.9417,30.5606,Aur,12,12/4,L,1000.0,89.0 -vdB 032,,1.0,Ref Neb,75.5,44.9172,Tau,12,12/6,,, -vdB 035,,4.0,Ref Neb,78.7458,13.02,Ori,12,12/9,L,2800.0, -vdB 036,,60.0,Ref Neb,78.6333,-8.2006,Ori,12,12/9,,, -vdB 037,,15.4,Ref Neb,79.525,13.4158,Ori,12,12/10,L,2800.0, -vdB 039,faint,1.0,Ref Neb,81.0,39.8172,Tau,12,12/12,,, -vdB 040,faint,2.0,Ref Neb,81.25,6.5839,Tau,12,12/12,,, -vdB 041,faint,1.0,Ref Neb,82.25,23.6839,Tau,12,12/13,,, -vdB 042,,6.0,Ref Neb,82.75,-5.6839,Tau,12,12/13,,, -vdB 043,,2.0,Ref Neb,83.0,6.0339,Tau,12,12/14,,, -vdB 044,faint,8.0,Ref Neb,83.0,-4.5172,Tau,12,12/14,,, -vdB 045,,1.0,Ref Neb,84.1708,31.8553,Aur,12,12/15,L,1960.0, -vdB 047,,12.0,Ref Neb,84.825,23.2833,Tau,12,12/15,L,1000.0, -vdB 048,,11.0,Ref Neb,84.5,-0.1839,Tau,12,12/15,,, -vdB 049,,10.0,Ref Neb,84.75,4.1506,Tau,12,12/15,,, -vdB 050,,6.2,Ref Neb,85.0583,-1.4525,Ori,12,12/16,RGB,327.0, -vdB 051,,10.2,Ref Neb,85.2417,-1.4869,Ori,12,12/16,RGB,327.0, -vdB 052,,8.6,Ref Neb,85.4125,-2.2511,Ori,12,12/16,RGB,327.0, -vdB 053,dubious entry,3.0,Ref Neb,85.25,-10.3172,Ori,12,12/16,,, -vdB 054,,12.0,Ref Neb,85.5,-4.2672,Ori,12,12/16,,, -vdB 055,faint,2.0,Ref Neb,85.5,-8.1339,Ori,12,12/16,,, -vdB 056,faint,2.0,Ref Neb,85.7542,16.3506,Ori,12,12/16,,, -vdB 057,,5.2,Ref Neb,85.75,-2.3056,Ori,12,12/16,RGB,327.0, -vdB 058,faint,1.0,Ref Neb,86.075,-8.7,Ori,12,12/17,,, -vdB 059,,8.0,Ref Neb,86.6792,0.0767,Ori,12,12/17,L,1000.0, -vdB 060,,8.0,Ref Neb,86.7833,0.2989,Ori,12,12/17,L,1000.0, -vdB 061,,3.0,Ref Neb,88.0,5.1667,Ori,12,12/19,,, -vdB 062,,8.0,Ref Neb,88.5167,1.6733,Ori,12,12/19,HL,1000.0, -vdB 063,,7.0,Ref Neb,89.075,1.8647,Ori,12,12/19,,, -vdB 064,,1.2,Ref Neb,89.4792,-14.0611,Lep,12,12/20,L,2800.0, -vdB 065,,4.6,Ref Neb,91.1375,30.5019,Aur,12,12/22,L,1000.0, -vdB 066,,1.8,Ref Neb,90.7667,-9.7103,Mon,12,12/22,L,1000.0, -vdB 067,,2.2,Ref Neb,91.8833,-6.4092,Mon,12,12/23,HL,1000.0, -vdB 068,,6.8,Ref Neb,92.0167,-6.2175,Mon,12,12/23,HL,1000.0, -vdB 069,,6.2,Ref Neb,92.0208,-6.3661,Mon,12,12/23,HL,1000.0, -vdB 070,,8.0,Em Neb,92.075,-5.3167,Mon,12,12/23,,, -vdB 071,faint,2.0,Ref Neb,92.575,14.0667,Mon,12,12/23,,, -vdb 072,,6.0,Ref Neb,92.3792,-6.3258,Mon,12,12/23,HL,1000.0, -vdB 073,,7.0,Ref Neb,89.075,1.8647,Ori,12,12/19,,, -vdB 074,,2.0,Ref Neb,92.825,-6.15,Mon,12,12/24,,, -vdB 075,,9.0,Ref Neb,94.825,23.2833,Mon,12,12/19,,, -vdB 076,,60.0,Ref Neb,97.7,10.0628,Mon,12,12/29,L,1000.0, -vdB 077,,60.0,Ref Neb,97.7417,9.8097,Mon,12,12/29,L,1000.0, -vdB 078,,60.0,Ref Neb,97.8125,9.7903,Mon,12,12/29,L,1000.0, -vdB 079,,60.0,Ref Neb,97.9292,10.3392,Mon,12,12/29,L,1000.0, -vdB 080,,9.0,Ref Neb,97.575,-9.6333,Mon,12,12/28,,, -vdB 081,,15.0,Ref Neb,98.075,7.35,Mon,12,12/29,,, -vdB 083,,2.0,Ref Neb,99.825,-27.2333,CMa,12,12/31,,, -vdB 084,,3.0,Ref Neb,100.075,-27.3833,CMa,12,12/31,,, -vdB 086,,3.0,Ref Neb,104.325,-10.2667,Mon,1,1/4,,, -vdB 087,,5.0,Ref Neb,105.075,-8.85,Mon,1,1/5,,, -vdB 089,faint,9.0,Ref Neb,105.575,-12.2167,CMa,1,1/5,,, -vdB 091,,9.0,Ref Neb,105.825,-10.7,CMa,1,1/6,,, -vdB 092,,4.0,Ref Neb,105.9833,-11.5725,CMa,1,1/6,H,327.0, -vdB 095,,6.0,Ref Neb,106.6708,-11.2867,CMa,1,1/7,H,327.0, -vdB 096,,6.0,Ref Neb,109.9042,-24.0378,CMa,1,1/10,L,1000.0, -vdB 098,,11.0,Ref Neb,114.0,-25.3,CMa,1,1/14,,, -vdB 099,,200.0,Ref Neb,239.7167,-26.1158,Sco,5,5/22,,, -vdB 100,,11.0,Ref Neb,242.9958,-19.4531,Sco,5,5/25,L,327.0, -vdB 101,,11.0,Ref Neb,244.7792,-20.2158,Sco,5,5/27,L,327.0, -vdB 102,,14.0,Ref Neb,245.0167,-20.0411,Sco,5,5/27,L,327.0, -vdB 103,,9.0,Ref Neb,245.125,-20.1147,Sco,5,5/27,L,327.0, -vdB 104,,56.0,Ref Neb,245.3042,-25.5861,Sco,5,5/27,RGB,455.0, -vdB 105,,28.0,Ref Neb,246.3542,-24.4614,Oph,5,5/29,RGB,455.0, -vdB 106,,62.0,Ref Neb,246.4,-23.4422,Oph,5,5/29,RGB,455.0, -vdB 107,,234.0,Ref Neb,247.3583,-26.4269,Sco,5,5/30,RGB,455.0, -vdB 108,,28.0,Ref Neb,247.5542,-25.1181,Sco,5,5/30,RGB,455.0, -vdB 109,,36.0,Ref Neb,250.3917,-17.7414,Oph,6,6/2,,, -vdB 110,,4.0,Ref Neb,259.025,-21.0286,Oph,6,6/10,L,2800.0, -vdB 111,,12.0,Ref Neb,259.7208,6.0919,Oph,6,6/11,,, -vdB 112,faint,1.0,Ref Neb,268.25,-5.6,Oph,6,6/19,,, -vdB 113,,17.0,Ref Neb,272.1583,-21.4483,Sgr,6,6/24,,, -vdB 114,dubious entry,1.0,Ref Neb,272.2833,-18.3889,Sgr,6,6/24,,, -vdB 115,dubious entry,2.0,Ref Neb,272.2833,-23.4389,Sgr,6,6/24,,, -vdB 116,tiny,1.0,Ref Neb,272.5333,-17.7222,Sgr,6,6/24,,, -vdB 117,faint,2.0,Ref Neb,273.5333,-17.3556,Sgr,6,6/25,,, -vdB 118,,5.0,Ref Neb,274.2167,-19.7842,Sgr,6,6/26,HL,1000.0, -vdB 119,,6.0,Ref Neb,274.275,-19.8733,Sgr,6,6/26,HL,1000.0, -vdB 120,,2.0,Ref Neb,274.25,-16.9231,Sgr,6,6/26,,, -vdB 121,,1.0,Ref Neb,275.0667,-16.9986,Sgr,6,6/27,RGB,910.0, -vdB 122,,1.0,Ref Neb,276.1375,-13.6564,Sct,6,6/28,,, -vdB 123,Serpens Cloud,90.0,Ref Neb,277.6042,1.2222,Ser,6,6/29,L,455.0, -vdB 124,,36.0,Ref Neb,277.8583,-10.7936,Sct,6,6/30,L,1000.0, -vdB 125,faint,5.0,Ref Neb,291.5,15.5731,Sct,7,7/13,,, -vdB 126,Loch Ness Nebula,100.0,Ref Neb,291.5458,22.7547,Vul,7,7/14,L,455.0,154.0 -vdB 127,dubious entry,33.0,Ref Neb,296.9208,18.5336,Cyg,7,7/19,,, -vdB 128,,7.0,Ref Neb,301.0,32.2336,Cyg,7,7/23,,, -vdB 129,,55.0,Ref Neb,303.0,-0.9836,Cyg,7,7/25,,, -vdB 130,,1.0,Ref Neb,304.4208,39.3336,Cyg,7,7/27,,, -vdB 131,,5.6,Ref Neb,306.0667,42.2964,Cyg,7,7/28,HL,1000.0, -vdB 132,,5.6,Ref Neb,306.2,42.3831,Cyg,7,7/28,HL,1000.0, -vdB 133,,11.4,Ref Neb,307.7458,36.9347,Cyg,7,7/30,L,1000.0, -vdB 134,,10.0,Ref Neb,307.5,48.9522,Cyg,7,7/29,,, -vdB 135,,8.0,Ref Neb,309.0,32.4522,Cyg,7,7/31,,, -vdB 136,Diamond Ring Cluster,8.6,Ref Neb,309.575,42.0722,Cyg,8,8/1,HL,1000.0, -vdB 137,,13.6,Ref Neb,313.9583,47.4192,Cyg,8,8/5,L,1000.0, -vdB 138,,4.0,Ref Neb,314.25,48.2856,Cyg,8,8/5,,, -vdB 140,,20.0,Ref Neb,319.3333,58.5894,Cep,8,8/11,L,2800.0, -vdB 141,Ghost Nebula,20.0,Ref Neb,319.1125,68.2644,Cep,8,8/11,L,2800.0,93.0 -vdB 142,,1.2,Em Neb,324.1667,57.5,Cep,8,8/16,SHO,2800.0, -vdB 143,,9.6,Ref Neb,324.2375,68.1856,Cep,8,8/16,,, -vdB 144,,3.4,Ref Neb,325.1833,54.8781,Cyg,8,8/17,L,1000.0, -vdB 145,,3.0,Ref Neb,325.75,48.8856,Cyg,8,8/17,,, -vdB 146,,7.0,Ref Neb,325.7083,66.1119,Cep,8,8/17,L,2800.0, -vdB 147,,1.8,Ref Neb,328.1417,47.2256,Cyg,8,8/20,H,1000.0, -vdB 148,faint,3.0,Ref Neb,331.75,56.2333,Lac,8,8/23,,, -vdB 149,,5.2,Ref Neb,332.2792,72.8892,Cep,8,8/24,L,1000.0, -vdB 150,,8.0,Ref Neb,332.4167,73.3903,Cep,8,8/24,L,1000.0, -vdB 151,faint,10.8,Ref Neb,333.4708,39.7139,Lac,8,8/25,,, -vdB 152,Wolf's Cave,60.0,Ref Neb,333.5083,69.9333,Cep,8,8/25,L,1000.0,80.0 -vdB 153,,3.0,Ref Neb,335.75,62.7,Lac,8,8/25,,, -vdB 154,,10.2,Ref Neb,337.7958,65.4725,Cep,8,8/30,L,1000.0, -vdB 155,,6.2,Ref Neb,343.3,62.1336,Cep,9,9/3,HL,2800.0, -vdB 156,,90.0,Mol Cld,343.9292,41.3667,Lac,9,9/4,HL,455.0, -vdB 156d,LBN477,90.0,Mol Cld,347.2167,41.8,And,9,9/5,L,455.0, -vdB 157,,4.6,Ref Neb,345.5625,72.7181,Cep,9,9/6,,, -vdB 158,LBN534,3.4,Ref Neb,354.4583,48.4956,And,9,9/16,L,327.0, -vdB 159,,5.0,Ref Neb,359.3875,61.9914,Cas,9,9/21,HOO,1000.0, -vdB 18,,4.0,Ref Neb,53.75,38.0167,Per,11,11/14,,, -Vela Bridge,Vela Bridge,60.0,SNR,129.4125,-42.9892,Vel,1,1/30,HOO,455.0,127.0 -Vela Bypass,Twin Crescents,80.0,SNR,131.0,-44.9386,Vel,1,1/31,HOO,455.0, -Vela Highway,Vela Spur ,80.0,SNR,127.5,-44.9717,Vel,1,1/28,HOO,455.0, -Vela Spiral Flame,Vela SNR,60.0,SNR,133.5875,-43.8453,Vel,2,2/3,HOO,1000.0,71.0 -VII Zw 466,VV 788,4.0,Galaxy,188.0208,66.4033,Dra,3,3/30,L,2800.0, -VV283,,0.6,Galaxy,195.4583,4.3339,Vir,4,4/7,,, -VV705,,0.7,Galaxy,229.525,42.745,Boo,5,5/12,L,2800.0, -We 1-01,,0.3,PN,9.725,66.3969,Cas,9,9/30,HOO,2800.0, -We 1-04,,0.7,PN,93.6417,7.575,Ori,12,12/24,H,2800.0, -We 1-06,,1.0,PN,109.35,-10.1167,Mon,1,1/9,HOO,2800.0, -We 1-07,,0.3,PN,281.025,-12.1333,Sct,7,7/3,,, -We 1-09,,0.4,PN,302.275,26.25,Vul,7,7/24,,, -We 1-10,,3.0,PN,307.975,48.8833,Cyg,7,7/30,HOO,1000.0, -We 1-11,,0.4,PN,317.725,50.5,Cyg,8,8/8,,, -We 2-245,,2.2,PN,319.525,43.5,Cyg,8,8/11,,, -We 3-01,,0.6,PN,278.5,14.5,Her,6,6/30,,, -WeBo 1,,1.5,PN,40.0583,61.1547,Cas,10,10/31,H,1000.0, -WeDe 1,,15.0,PN,89.75,10.7,Ori,12,12/20,,, -WeSb 2,,2.0,PN,94.05,28.3667,Aur,12,12/25,,, -WeSb 3,,0.6,PN,271.5,0.2,Oph,6,6/23,,, -WeSb 4,,0.5,PN,282.675,-1.0333,Aql,7,7/5,,, -WeSb 5,,2.5,PN,300.425,19.6,Sge,7,7/23,,, -Whiting 1,,0.5,Glob Cl,30.725,-3.25,Cet,10,10/21,L,2800.0, -WLM,Wolf–Lundmark–Melotte,20.0,Gal-Dwarf,0.4875,-15.4503,Cet,9,9/21,L,1000.0, -WR 134,WR 134,25.0,WR Neb,302.5,36.1833,Cyg,7,7/25,HOO,1000.0,105.0 -Wray 16-423,,1.0,PN,290.55,-31.5167,Sgr,7,7/13,,, -XY Per,,3.0,YSO,57.4,38.9822,Per,11,11/18,L,1000.0, -YM 16,,6.0,PN,283.7375,6.0419,Ser,7,7/6,HOO,1000.0, -Zw I 136,,2.0,Galaxy,243.3792,51.0608,Her,5,5/26,L,2800.0, -ZW II 33,,1.0,Gal-BCD,77.7,-2.6808,Ori,12,12/8,L,2800.0, -ZW II 96,,1.0,Galaxy,314.3542,17.1272,Del,8,8/6,L,2800.0, -ZW III 33,,1.0,Galaxy,25.9875,17.0619,Psc,10,10/17,L,2800.0, diff --git a/pysrc/database/createdb.py b/pysrc/database/createdb.py deleted file mode 100644 index 9006c182..00000000 --- a/pysrc/database/createdb.py +++ /dev/null @@ -1,252 +0,0 @@ -import csv -import os -import numpy as np -import re -import sqlite3 -from typing import Dict, List, Tuple, Optional -from loguru import logger -import argparse - -# 默认输出数据库文件路径 -default_db_path = os.path.join(os.path.dirname( - __file__), os.pardir, 'src', 'pyongc', 'ongc.db') - -# Object Types -objectTypes: Dict[str, str] = { - '*': 'Star', - '**': 'Double star', - '*Ass': 'Association of stars', - 'OCl': 'Open Cluster', - 'GCl': 'Globular Cluster', - 'Cl+N': 'Star cluster + Nebula', - 'G': 'Galaxy', - 'GPair': 'Galaxy Pair', - 'GTrpl': 'Galaxy Triplet', - 'GGroup': 'Group of galaxies', - 'PN': 'Planetary Nebula', - 'HII': 'HII Ionized region', - 'DrkN': 'Dark Nebula', - 'EmN': 'Emission Nebula', - 'Neb': 'Nebula', - 'RfN': 'Reflection Nebula', - 'SNR': 'Supernova remnant', - 'Nova': 'Nova star', - 'NonEx': 'Nonexistent object', - 'Other': 'Object of other/unknown type', - 'Dup': 'Duplicated record' -} - -PATTERNS: Dict[str, str] = { - 'NGC|IC': r'^((?:NGC|IC)\s?)(\d{1,4})\s?((NED)(\d{1,2})|[A-Z]{1,2})?$', - 'Messier': r'^(M\s?)(\d{1,3})$', - 'Barnard': r'^(B\s?)(\d{1,3})$', - 'Caldwell': r'^(C\s?)(\d{1,3})$', - 'Collinder': r'^(CL\s?)(\d{1,3})$', - 'ESO': r'^(ESO\s?)(\d{1,3})-(\d{1,3})$', - 'Harvard': r'^(H\s?)(\d{1,2})$', - 'Hickson': r'^(HCG\s?)(\d{1,3})$', - 'LBN': r'^(LBN\s?)(\d{1,3})$', - 'MCG': r'^(MCG\s?)([+-]\d{2}-\d{2}-\d{3,4})$', - 'Melotte': r'^(MEL\s?)(\d{1,3})$', - 'MWSC': r'^(MWSC\s?)(\d{1,4})$', - 'PGC': r'^((?:PGC|LEDA)\s?)(\d{1,6})$', - 'UGC': r'^(UGC\s?)(\d{1,5})$', - 'UGCA': r'^(UGCA\s?)(\d{1,3})$', -} - - -def setup_logging(): - """Set up the loguru logging configuration to log both to console and to a file.""" - logger.add("create_db.log", level="DEBUG", - format="{time} {level} {message}", rotation="10 MB") - logger.info("Logging setup complete.") - - -def parse_ra_dec(ra_str: str, dec_str: str) -> Tuple[Optional[float], Optional[float]]: - if ra_str: - ra_array = np.array([float(x) for x in ra_str.split(':')]) - ra_rad = np.radians(np.sum(ra_array * [15, 1 / 4, 1 / 240])) - logger.debug(f"Parsed RA: {ra_str} to radians: {ra_rad}") - else: - ra_rad = None - - if dec_str: - dec_array = np.array([float(x) for x in dec_str.split(':')]) - sign = -1 if np.signbit(dec_array[0]) else 1 - dec_rad = np.radians(np.sum(dec_array * [1, sign / 60, sign / 3600])) - logger.debug(f"Parsed Dec: {dec_str} to radians: {dec_rad}") - else: - dec_rad = None - - return ra_rad, dec_rad - - -def insert_object_identifiers(cursor: sqlite3.Cursor, name: str, identifier: str) -> None: - for cat, pat in PATTERNS.items(): - if match := re.match(pat, identifier): - match cat: - case 'NGC|IC': - if match.group(3): - if match.group(4): - objectname = f"{match.group(1).strip()}{int(match.group(2)):04d} {match.group(4)}{int(match.group(5)):02d}" - else: - objectname = f"{match.group(1).strip()}{int(match.group(2)):04d}{match.group(3).strip()}" - else: - objectname = f"{match.group(1).strip()}{int(match.group(2)):04d}" - case 'ESO': - objectname = f"{match.group(1).strip()}{int(match.group(2)):03d}-{int(match.group(3)):03d}" - case 'Harvard': - objectname = f"{match.group(1).strip()}{int(match.group(2)):02d}" - case 'UGC': - objectname = f"{match.group(1).strip()}{int(match.group(2)):05d}" - case 'PGC': - objectname = f"PGC{int(match.group(2)):06d}" - case 'MCG': - objectname = f"{match.group(1).strip()}{match.group(2).strip()}" - case _: - objectname = f"{match.group(1).strip()}{int(match.group(2)):03d}" - - logger.debug( - f"Inserting identifier: {objectname} for object: {name}") - cursor.execute( - 'INSERT INTO objIdentifiers(name, identifier) VALUES(?, ?)', (name, objectname)) - - -def create_database(db_path: str, filenames: List[str]) -> None: - """Creates the SQLite database from CSV files.""" - try: - with sqlite3.connect(db_path) as db: - cursor = db.cursor() - - logger.info("Creating tables in database...") - # Create objects types table - cursor.execute('DROP TABLE IF EXISTS objTypes') - cursor.execute('''CREATE TABLE IF NOT EXISTS objTypes( - type TEXT PRIMARY KEY NOT NULL, - typedesc TEXT NOT NULL)''') - cursor.executemany( - 'INSERT INTO objTypes VALUES(?, ?)', objectTypes.items()) - - # Create main objects table - cursor.execute('DROP TABLE IF EXISTS objects') - cursor.execute('''CREATE TABLE IF NOT EXISTS objects( - id INTEGER PRIMARY KEY NOT NULL, - name TEXT NOT NULL UNIQUE, - type TEXT NOT NULL, - ra REAL, - dec REAL, - const TEXT, - majax REAL, - minax REAL, - pa INTEGER, - bmag REAL, - vmag REAL, - jmag REAL, - hmag REAL, - kmag REAL, - sbrightn REAL, - hubble TEXT, - parallax REAL, - pmra REAL, - pmdec REAL, - radvel INTEGER, - redshift REAL, - cstarumag REAL, - cstarbmag REAL, - cstarvmag REAL, - messier TEXT, - ngc TEXT, - ic TEXT, - cstarnames TEXT, - identifiers TEXT, - commonnames TEXT, - nednotes TEXT, - ongcnotes TEXT, - notngc BOOL DEFAULT FALSE)''') - - # Create object identifiers table - cursor.execute('DROP TABLE IF EXISTS objIdentifiers') - cursor.execute('''CREATE TABLE IF NOT EXISTS objIdentifiers( - id INTEGER PRIMARY KEY NOT NULL, - name TEXT NOT NULL, - identifier TEXT NOT NULL UNIQUE)''') - - columns_maybe_null: List[str] = [ - 'MajAx', 'MinAx', 'PosAng', 'B-Mag', 'V-Mag', 'J-Mag', 'H-Mag', 'K-Mag', - 'SurfBr', 'Pax', 'Pm-RA', 'Pm-Dec', 'RadVel', 'Redshift', 'Cstar U-Mag', - 'Cstar B-Mag', 'Cstar V-Mag' - ] - - for filename in filenames: - notngc = filename != 'NGC.csv' - logger.info(f"Processing file: {filename}") - - with open(filename, 'r', encoding="utf-8") as csvFile: - reader = csv.DictReader(csvFile, delimiter=';') - - for line in reader: - for column in columns_maybe_null: - if line[column] == '': - line[column] = None - - ra_rad, dec_rad = parse_ra_dec(line['RA'], line['Dec']) - - cursor.execute('''INSERT INTO objects(name, type, ra, dec, const, majax, minax, pa, bmag, vmag, - jmag, hmag, kmag, sbrightn, hubble, parallax, pmra, - pmdec, radvel, redshift, cstarumag, cstarbmag, cstarvmag, - messier, ngc, ic, cstarnames, identifiers, commonnames, - nednotes, ongcnotes, notngc) - VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)''', - (line['Name'], line['Type'], ra_rad, dec_rad, line['Const'], - line['MajAx'], line['MinAx'], line['PosAng'], line['B-Mag'], - line['V-Mag'], line['J-Mag'], line['H-Mag'], line['K-Mag'], - line['SurfBr'], line['Hubble'], line['Pax'], line['Pm-RA'], - line['Pm-Dec'], line['RadVel'], line['Redshift'], - line['Cstar U-Mag'], line['Cstar B-Mag'], line['Cstar V-Mag'], - line['M'], line['NGC'], line['IC'], line['Cstar Names'], - line['Identifiers'], line['Common names'], line['NED notes'], - line['OpenNGC notes'], notngc)) - - logger.debug(f"Inserted object: {line['Name']}") - - # Insert primary identifier (name) into objIdentifiers table - cursor.execute('INSERT INTO objIdentifiers(name, identifier) VALUES(?, ?)', - (line['Name'], line['Name'].upper())) - - # Insert other identifiers into objIdentifiers table - for identifier in line['Identifiers'].split(','): - insert_object_identifiers( - cursor, line['Name'], identifier) - - # Create index on objIdentifiers table for faster searches - cursor.execute( - 'CREATE UNIQUE INDEX "idx_identifiers" ON "objIdentifiers" ("identifier");') - logger.info("Index created on objIdentifiers table.") - - db.commit() - logger.info(f"Database created successfully at {db_path}") - - except Exception as e: - db.rollback() - logger.error(f"Error occurred: {e}") - raise e - - -def main(): - parser = argparse.ArgumentParser( - description="Creates an SQLite database from OpenNGC CSV files.") - parser.add_argument('--db_path', type=str, default=default_db_path, - help="Output SQLite database file path.") - parser.add_argument('--csv_files', type=str, nargs='+', - required=True, help="List of input CSV files.") - args = parser.parse_args() - - # Set up logging - setup_logging() - - # Create the database - create_database(args.db_path, args.csv_files) - - -if __name__ == "__main__": - main() diff --git a/pysrc/database/ngc_download.py b/pysrc/database/ngc_download.py deleted file mode 100644 index e4db6012..00000000 --- a/pysrc/database/ngc_download.py +++ /dev/null @@ -1,184 +0,0 @@ -import os -from threading import Thread, Lock -from queue import Queue -import argparse -import time -import requests -from loguru import logger - - -# Global constants -DOWNLOAD_DIR = 'images' # Directory to save downloaded images -# Base URL for image downloading -BASE_URL = "https://ngcicproject.observers.org/dss/n/{}/n{:04d}.jpg" -THREAD_COUNT = 10 # Default number of threads for concurrent downloading -RETRY_LIMIT = 3 # Maximum number of retry attempts for downloading - -# Initialize a lock for logging to ensure thread-safe log access -log_lock = Lock() - -# Initialize task queue -queue = Queue() - - -def setup_logging(): - """ - Set up the loguru logging configuration to log both to console and to a file. - - The log messages will include timestamps and the severity level. - The logs will be saved in 'download.log' file, - and will also be output to the console. - """ - logger.add("download.log", level="DEBUG", - format="{time} {level} {message}", rotation="10 MB") - logger.info("Logging setup complete.") - - -def download_image(image_id, retry_count=0): - """ - Download an image from the server based on the image ID. - - Args: - image_id (int): The ID of the image to download. - retry_count (int): The current retry attempt count for this image. - - This function constructs the URL for the specified image ID, - makes an HTTP GET request to download the image, - and saves it to the specified directory. - If the download fails, it will retry up to the specified limit - before giving up and logging an error message. - """ - prefix = image_id // 1000 # Calculate the prefix for the URL based on the image ID - # Format the URL with the prefix and image ID - url = BASE_URL.format(prefix, image_id) - - try: - logger.debug(f"Attempting to download image ID {image_id} from {url}") - # Perform the HTTP request to download the image - response = requests.get(url, timeout=10) - if response.status_code == 200: # Check for a successful response - # Construct the filename - filename = os.path.join(DOWNLOAD_DIR, f"n{image_id:04d}.jpg") - with open(filename, 'wb') as file: # Save the content to a file - file.write(response.content) - logger.info(f"Downloaded: {filename}") - else: - raise requests.RequestException( - f"Failed with status code: {response.status_code}") - except requests.RequestException as e: - if retry_count < RETRY_LIMIT: # Check if we can retry - logger.warning(f"Retry {retry_count + 1} for {url}: {e}") - # Retry downloading the image - download_image(image_id, retry_count + 1) - else: - logger.error( - f"Failed to download {url} after {RETRY_LIMIT} retries.") - - -def worker(): - """ - Worker function that processes the queue and downloads images. - - This function continually retrieves image IDs from the queue, - calls the 'download_image' function to download the corresponding image, - and marks the task as done once the download is complete. - """ - while not queue.empty(): # Process until the queue is empty - image_id = queue.get() # Get the next image ID from the queue - download_image(image_id) # Download the image - queue.task_done() # Indicate that the task is completed - logger.debug(f"Task for image ID {image_id} completed.") - - -def create_download_dir(): - """ - Create the download directory if it does not exist. - - This function checks if the specified download directory exists, - and if it doesn't, it creates the directory to ensure that - there is a place to save the downloaded images. - """ - if not os.path.exists(DOWNLOAD_DIR): - os.makedirs(DOWNLOAD_DIR) # Create the directory if it doesn't exist - logger.info(f"Created directory: {DOWNLOAD_DIR}") - else: - logger.info(f"Directory already exists: {DOWNLOAD_DIR}") - - -def show_progress(start, end): - """ - Display download progress in the console. - - Args: - start (int): The starting image ID. - end (int): The ending image ID. - """ - total_images = end - start + 1 - while not queue.empty(): - downloaded = total_images - queue.qsize() - progress = (downloaded / total_images) * 100 - logger.info(f"Progress: {downloaded}/{total_images} ({progress:.2f}%)") - time.sleep(5) - - -def main(start, end): - """ - Main function to start the download process. - - Args: - start (int): The starting image ID (inclusive). - end (int): The ending image ID (inclusive). - - This function fills the queue with image IDs, starts a number of worker threads - to process the downloads concurrently, and waits for all tasks to complete before exiting. - """ - # Fill the queue with image IDs - for i in range(start, end + 1): - queue.put(i) - - # Start worker threads - threads = [] - for _ in range(THREAD_COUNT): - thread = Thread(target=worker) - thread.start() - threads.append(thread) - - # Start progress monitor thread - progress_thread = Thread(target=show_progress, args=(start, end)) - progress_thread.start() - - # Wait for all tasks to be completed - queue.join() - - # Ensure all threads have finished execution - for thread in threads: - thread.join() - - # Wait for progress thread to finish - progress_thread.join() - logger.info("All downloads completed.") - - -if __name__ == "__main__": - parser = argparse.ArgumentParser( - description="Download images with multi-threading.") - parser.add_argument('--start', type=int, default=1, - help='Starting image ID (inclusive).') - parser.add_argument('--end', type=int, default=7840, - help='Ending image ID (inclusive).') - parser.add_argument('--threads', type=int, default=10, - help='Number of threads to use.') - - args = parser.parse_args() - - # Update thread count based on user input - THREAD_COUNT = args.threads - - # Set up logging - setup_logging() - - # Create download directory if necessary - create_download_dir() - - # Start the main download process - main(args.start, args.end) diff --git a/pysrc/image/adaptive_stretch/preview.py b/pysrc/image/adaptive_stretch/preview.py deleted file mode 100644 index 522a740e..00000000 --- a/pysrc/image/adaptive_stretch/preview.py +++ /dev/null @@ -1,26 +0,0 @@ -import matplotlib.pyplot as plt -import cv2 -import numpy as np -from .stretch import AdaptiveStretch -from typing import Optional, Tuple - -def apply_real_time_preview(image: np.ndarray, noise_threshold: float = 1e-4, contrast_protection: Optional[float] = None, max_curve_points: int = 106, roi: Optional[Tuple[int, int, int, int]] = None): - """ - Simulate real-time preview by iteratively applying the adaptive stretch - transformation and displaying the result. - - :param image: Input image as a numpy array (grayscale or color). - :param noise_threshold: Threshold for treating brightness differences as noise. - :param contrast_protection: Optional contrast protection parameter. - :param max_curve_points: Maximum points for the transformation curve. - :param roi: Tuple (x, y, width, height) defining the region of interest. - """ - adaptive_stretch = AdaptiveStretch(noise_threshold, contrast_protection, max_curve_points) - preview_image = adaptive_stretch.stretch(image, roi) - - if len(preview_image.shape) == 3: - preview_image = cv2.cvtColor(preview_image, cv2.COLOR_BGR2RGB) - - plt.imshow(preview_image, cmap='gray' if len(preview_image.shape) == 2 else None) - plt.title(f"Noise Threshold: {noise_threshold}, Contrast Protection: {contrast_protection}") - plt.show() diff --git a/pysrc/image/adaptive_stretch/stretch.py b/pysrc/image/adaptive_stretch/stretch.py deleted file mode 100644 index c8483be6..00000000 --- a/pysrc/image/adaptive_stretch/stretch.py +++ /dev/null @@ -1,97 +0,0 @@ -import numpy as np -import cv2 -from typing import Optional, Tuple - - -class AdaptiveStretch: - def __init__(self, noise_threshold: float = 1e-4, contrast_protection: Optional[float] = None, max_curve_points: int = 106): - """ - Initialize the AdaptiveStretch object with specific parameters. - - :param noise_threshold: Threshold for treating brightness differences as noise. - :param contrast_protection: Optional contrast protection parameter. - :param max_curve_points: Maximum points for the transformation curve. - """ - self.noise_threshold = noise_threshold - self.contrast_protection = contrast_protection - self.max_curve_points = max_curve_points - - def compute_brightness_diff(self, image: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: - """ - Compute brightness differences between adjacent pixels. - Returns matrices of differences along the x and y axes. - - :param image: Input image as a numpy array (grayscale). - :return: Tuple of differences along x and y axes. - """ - diff_x = np.diff(image, axis=1) # differences between columns - diff_y = np.diff(image, axis=0) # differences between rows - - # Pad the differences to match the original image size - diff_x = np.pad(diff_x, ((0, 0), (0, 1)), mode='constant') - diff_y = np.pad(diff_y, ((0, 1), (0, 0)), mode='constant') - - return diff_x, diff_y - - def stretch(self, image: np.ndarray, roi: Optional[Tuple[int, int, int, int]] = None) -> np.ndarray: - """ - Apply the AdaptiveStretch transformation to the image. - - :param image: Input image as a numpy array (grayscale or color). - :param roi: Tuple (x, y, width, height) defining the region of interest. - :return: Stretched image. - """ - if len(image.shape) == 3: - channels = cv2.split(image) - else: - channels = [image] - - stretched_channels = [] - - for channel in channels: - # Normalize the channel to the range [0, 1] - channel = channel.astype(np.float32) / 255.0 - - if roi is not None: - x, y, w, h = roi - channel_roi = channel[y:y+h, x:x+w] - else: - channel_roi = channel - - diff_x, diff_y = self.compute_brightness_diff(channel_roi) - - positive_forces = np.maximum(diff_x, 0) + np.maximum(diff_y, 0) - negative_forces = np.minimum(diff_x, 0) + np.minimum(diff_y, 0) - - positive_forces[positive_forces < self.noise_threshold] = 0 - negative_forces[negative_forces > -self.noise_threshold] = 0 - - transformation_curve = positive_forces + negative_forces - - if self.contrast_protection is not None: - transformation_curve = np.clip( - transformation_curve, -self.contrast_protection, self.contrast_protection) - - resampled_curve = cv2.resize( - transformation_curve, (self.max_curve_points, 1), interpolation=cv2.INTER_LINEAR) - - interpolated_curve = cv2.resize( - resampled_curve, (channel_roi.shape[1], channel_roi.shape[0]), interpolation=cv2.INTER_LINEAR) - - stretched_channel = channel_roi + interpolated_curve - - stretched_channel = np.clip( - stretched_channel * 255, 0, 255).astype(np.uint8) - - if roi is not None: - channel[y:y+h, x:x+w] = stretched_channel - stretched_channel = channel - - stretched_channels.append(stretched_channel) - - if len(stretched_channels) > 1: - stretched_image = cv2.merge(stretched_channels) - else: - stretched_image = stretched_channels[0] - - return stretched_image diff --git a/pysrc/image/api/strecth_count.py b/pysrc/image/api/strecth_count.py deleted file mode 100644 index 0e05b936..00000000 --- a/pysrc/image/api/strecth_count.py +++ /dev/null @@ -1,200 +0,0 @@ -from pathlib import Path -from typing import Tuple, Dict, Optional, List -import json -import numpy as np -import cv2 -from astropy.io import fits -from scipy import ndimage - - -def debayer_image(img: np.ndarray, bayer_pattern: Optional[str] = None) -> np.ndarray: - bayer_patterns = { - "RGGB": cv2.COLOR_BAYER_RGGB2BGR, - "GBRG": cv2.COLOR_BAYER_GBRG2BGR, - "BGGR": cv2.COLOR_BAYER_BGGR2BGR, - "GRBG": cv2.COLOR_BAYER_GRBG2BGR - } - return cv2.cvtColor(img, bayer_patterns.get(bayer_pattern, cv2.COLOR_BAYER_RGGB2BGR)) - - -def resize_image(img: np.ndarray, target_size: int) -> np.ndarray: - scale = min(target_size / max(img.shape[:2]), 1) - if scale < 1: - return cv2.resize(img, None, fx=scale, fy=scale, interpolation=cv2.INTER_AREA) - return img - - -def normalize_image(img: np.ndarray) -> np.ndarray: - if not np.allclose(img, img.astype(np.uint8)): - img = cv2.normalize(img, None, alpha=0, beta=255, - norm_type=cv2.NORM_MINMAX) - return img.astype(np.uint8) - - -def stretch_image(img: np.ndarray, is_color: bool) -> np.ndarray: - if is_color: - return ComputeAndStretch_ThreeChannels(img, True) - return ComputeStretch_OneChannels(img, True) - - -def detect_stars(img: np.ndarray, remove_hotpixel: bool, remove_noise: bool, do_star_mark: bool, mark_img: Optional[np.ndarray] = None) -> Tuple[np.ndarray, float, float, Dict[str, float]]: - return StarDetectAndHfr(img, remove_hotpixel, remove_noise, do_star_mark, down_sample_mean_std=True, mark_img=mark_img) - -# New functions for enhanced image processing - - -def apply_gaussian_blur(img: np.ndarray, kernel_size: int = 5) -> np.ndarray: - """Apply Gaussian blur to reduce noise.""" - return cv2.GaussianBlur(img, (kernel_size, kernel_size), 0) - - -def apply_unsharp_mask(img: np.ndarray, kernel_size: int = 5, amount: float = 1.5) -> np.ndarray: - """Apply unsharp mask to enhance image details.""" - blurred = cv2.GaussianBlur(img, (kernel_size, kernel_size), 0) - return cv2.addWeighted(img, amount + 1, blurred, -amount, 0) - - -def equalize_histogram(img: np.ndarray) -> np.ndarray: - """Apply histogram equalization to improve contrast.""" - if len(img.shape) == 2: - return cv2.equalizeHist(img) - else: - ycrcb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb) - ycrcb[:, :, 0] = cv2.equalizeHist(ycrcb[:, :, 0]) - return cv2.cvtColor(ycrcb, cv2.COLOR_YCrCb2BGR) - - -def remove_hot_pixels(img: np.ndarray, threshold: float = 3.0) -> np.ndarray: - """Remove hot pixels using median filter and thresholding.""" - median = ndimage.median_filter(img, size=3) - diff = np.abs(img - median) - mask = diff > (threshold * np.std(diff)) - img[mask] = median[mask] - return img - - -def adjust_gamma(img: np.ndarray, gamma: float = 1.0) -> np.ndarray: - """Adjust image gamma.""" - inv_gamma = 1.0 / gamma - table = np.array([((i / 255.0) ** inv_gamma) * - 255 for i in np.arange(0, 256)]).astype("uint8") - return cv2.LUT(img, table) - - -def apply_clahe(img: np.ndarray, clip_limit: float = 2.0, tile_grid_size: Tuple[int, int] = (8, 8)) -> np.ndarray: - """Apply Contrast Limited Adaptive Histogram Equalization (CLAHE).""" - if len(img.shape) == 2: - clahe = cv2.createCLAHE(clipLimit=clip_limit, - tileGridSize=tile_grid_size) - return clahe.apply(img) - else: - lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) - l, a, b = cv2.split(lab) - clahe = cv2.createCLAHE(clipLimit=clip_limit, - tileGridSize=tile_grid_size) - cl = clahe.apply(l) - limg = cv2.merge((cl, a, b)) - return cv2.cvtColor(limg, cv2.COLOR_LAB2BGR) - - -def denoise_image(img: np.ndarray, h: float = 10) -> np.ndarray: - """Apply Non-Local Means Denoising.""" - return cv2.fastNlMeansDenoisingColored(img, None, h, h, 7, 21) - - -def enhance_image(img: np.ndarray, config: Dict[str, bool]) -> np.ndarray: - """Apply a series of image enhancements based on the configuration.""" - if config.get('remove_hot_pixels', False): - img = remove_hot_pixels(img) - if config.get('denoise', False): - img = denoise_image(img) - if config.get('equalize_histogram', False): - img = equalize_histogram(img) - if config.get('apply_clahe', False): - img = apply_clahe(img) - if config.get('unsharp_mask', False): - img = apply_unsharp_mask(img) - if config.get('adjust_gamma', False): - img = adjust_gamma(img, gamma=config.get('gamma', 1.0)) - return img - - -def process_image(filepath: Path, config: Dict[str, bool], resize_size: int = 2048) -> Tuple[Optional[np.ndarray], Dict[str, float]]: - try: - img, header = fits.getdata(filepath, header=True) - except Exception: - return None, {"star_count": -1, "average_hfr": -1, "max_star": -1, "min_star": -1, "average_star": -1} - - is_color = 'BAYERPAT' in header - if is_color: - img = debayer_image(img, header['BAYERPAT']) - - img = resize_image(img, resize_size) - img = normalize_image(img) - - # Apply image enhancements - img = enhance_image(img, config) - - if config['do_stretch']: - img = stretch_image(img, is_color) - - if config['do_star_count']: - img, star_count, avg_hfr, area_range = detect_stars( - img, config['remove_hotpixel'], config['remove_noise'], config['do_star_mark']) - return img, { - "star_count": float(star_count), - "average_hfr": avg_hfr, - "max_star": area_range['max'], - "min_star": area_range['min'], - "average_star": area_range['average'] - } - - return img, {"star_count": -1, "average_hfr": -1, "max_star": -1, "min_star": -1, "average_star": -1} - - -def ImageStretchAndStarCount_Optim(filepath: Path, config: Dict[str, bool], resize_size: int = 2048, - jpg_file: Optional[Path] = None, star_file: Optional[Path] = None) -> Tuple[Optional[np.ndarray], Dict[str, float]]: - img, result = process_image(filepath, config, resize_size) - - if jpg_file and img is not None: - cv2.imwrite(str(jpg_file), img) - if star_file: - with star_file.open('w') as f: - json.dump(result, f) - - return img, result - - -def StreamingDebayerAndStretch(fits_data: bytearray, width: int, height: int, config: Dict[str, bool], - resize_size: int = 2048, bayer_type: Optional[str] = None) -> Optional[np.ndarray]: - img = np.frombuffer(fits_data, dtype=np.uint16).reshape(height, width) - - if bayer_type: - img = debayer_image(img, bayer_type) - - img = resize_image(img, resize_size) - img = normalize_image(img) - - # Apply image enhancements - img = enhance_image(img, config) - - if config.get('do_stretch', True): - img = stretch_image(img, len(img.shape) == 3) - - return img - - -def StreamingDebayer(fits_data: bytearray, width: int, height: int, config: Dict[str, bool], - resize_size: int = 2048, bayer_type: Optional[str] = None) -> Optional[np.ndarray]: - img = np.frombuffer(fits_data, dtype=np.uint16).reshape(height, width) - - if bayer_type: - img = debayer_image(img, bayer_type) - - img = resize_image(img, resize_size) - img = normalize_image(img) - - # Apply image enhancements - img = enhance_image(img, config) - - return img diff --git a/pysrc/image/astroalign/astroalign.py b/pysrc/image/astroalign/astroalign.py deleted file mode 100644 index 2e52a688..00000000 --- a/pysrc/image/astroalign/astroalign.py +++ /dev/null @@ -1,553 +0,0 @@ -""" -Module for starfield image registration using triangle-based invariants. - -This module provides functions to estimate and apply geometric transformations between -two sets of starfield images. The core technique relies on computing invariant features -(triangle invariants) from sets of nearest neighbors of stars in both images. The -transformation between the two images is then estimated using these invariant features. - -The key functionalities include: -- Estimating transformation between two images -- Applying the estimated transformation to align images -- Extracting source positions (stars) from images -- RANSAC algorithm for robust model estimation - -Author: Max Qian -Version: 2.6.0 (lithium) -""" - -__version__ = "2.6.0" - -__all__ = [ - "MIN_MATCHES_FRACTION", - "MaxIterError", - "NUM_NEAREST_NEIGHBORS", - "PIXEL_TOL", - "apply_transform", - "estimate_transform", - "find_transform", - "matrix_transform", - "register", -] - -from collections import Counter -from functools import partial -from itertools import combinations -from typing import Any, Tuple, Union - -import sep_pjw as sep -import numpy as np -from numpy.typing import NDArray -from scipy.spatial import KDTree -from skimage.transform import estimate_transform, matrix_transform, warp - -try: - import bottleneck as bn -except ImportError: - HAS_BOTTLENECK = False -else: - HAS_BOTTLENECK = True - -PIXEL_TOL = 2 -"""The pixel distance tolerance to assume two invariant points are the same. - -Default: 2 -""" - -MIN_MATCHES_FRACTION = 0.8 -"""The minimum fraction of triangle matches to accept a transformation. - -If the minimum fraction yields more than 10 triangles, 10 is used instead. - -Default: 0.8 -""" - -NUM_NEAREST_NEIGHBORS = 5 -""" -The number of nearest neighbors of a given star (including itself) to construct -the triangle invariants. - -Default: 5 -""" - -_default_median = bn.nanmedian if HAS_BOTTLENECK else np.nanmedian # pragma: no cover -""" -Default median function when/if optional bottleneck is available -""" - -_default_average = bn.nanmean if HAS_BOTTLENECK else np.nanmean # pragma: no cover -""" -Default mean function when/if optional bottleneck is available -""" - - -def _invariantfeatures(x1: NDArray, x2: NDArray, x3: NDArray) -> list[float]: - """ - Given 3 points x1, x2, x3, return the invariant features for the set. - - Invariant features are ratios of side lengths of the triangles formed by these points, - sorted by size. These features are scale-invariant and can be used to compare star - positions between images. - - Args: - x1, x2, x3: 2D coordinates of points in the source image. - - Returns: - List containing two invariant feature values derived from the triangle side ratios. - """ - sides = np.sort( - [np.linalg.norm(x1 - x2), np.linalg.norm(x2 - x3), np.linalg.norm(x1 - x3)]) - return [sides[2] / sides[1], sides[1] / sides[0]] - - -def _arrangetriplet(sources: NDArray, vertex_indices: tuple[int, int, int]) -> NDArray: - """ - Reorder the given triplet of vertex indices according to the length of their sides. - - This function returns the indices in a consistent order based on the triangle's side - lengths. It ensures that the triangle invariants are consistently computed. - - Args: - sources: Array of source star positions. - vertex_indices: Indices of the three vertices that form the triangle. - - Returns: - Reordered array of vertex indices based on side lengths. - """ - ind1, ind2, ind3 = vertex_indices - x1, x2, x3 = sources[vertex_indices] - - side_ind = np.array([(ind1, ind2), (ind2, ind3), (ind3, ind1)]) - side_lengths = [np.linalg.norm( - x1 - x2), np.linalg.norm(x2 - x3), np.linalg.norm(x3 - x1)] - l1_ind, l2_ind, l3_ind = np.argsort(side_lengths) - - count = Counter(side_ind[[l1_ind, l2_ind]].flatten()) - a = count.most_common(1)[0][0] - count = Counter(side_ind[[l2_ind, l3_ind]].flatten()) - b = count.most_common(1)[0][0] - count = Counter(side_ind[[l3_ind, l1_ind]].flatten()) - c = count.most_common(1)[0][0] - - return np.array([a, b, c]) - - -def _generate_invariants(sources: NDArray) -> Tuple[NDArray, NDArray]: - """ - Generate invariant features and the corresponding triangles from a set of source points. - - This function constructs triangles from the nearest neighbors of each source point and - calculates their invariant features. The invariants are used for matching between images. - - Args: - sources: Array of source star positions. - - Returns: - A tuple containing the unique invariant features and the corresponding triangle vertices. - """ - arrange = partial(_arrangetriplet, sources=sources) - - inv = [] - triang_vrtx = [] - coordtree = KDTree(sources) - knn = min(len(sources), NUM_NEAREST_NEIGHBORS) - for asrc in sources: - _, indx = coordtree.query(asrc, knn) - - all_asterism_triang = [arrange(vertex_indices=list(cmb)) - for cmb in combinations(indx, 3)] - triang_vrtx.extend(all_asterism_triang) - - inv.extend([_invariantfeatures(*sources[triplet]) - for triplet in all_asterism_triang]) - - uniq_ind = [pos for (pos, elem) in enumerate(inv) - if elem not in inv[pos + 1:]] - inv_uniq = np.array(inv)[uniq_ind] - triang_vrtx_uniq = np.array(triang_vrtx)[uniq_ind] - - return inv_uniq, triang_vrtx_uniq - - -class _MatchTransform: - """ - A class to manage the fitting of a geometric transformation using matched invariant points. - - This class handles the estimation of the 2D similarity transformation between - two sets of points, and computes errors between estimated and actual points. - """ - - def __init__(self, source: NDArray, target: NDArray): - """ - Initialize the transformation model with source and target control points. - - Args: - source: Source control points. - target: Target control points. - """ - self.source = source - self.target = target - - def fit(self, data: NDArray) -> Any: - """ - Estimate the best 2D similarity transformation from the matched points in data. - - Args: - data: Matched point pairs from source and target. - - Returns: - A similarity transform object. - """ - d1, d2, d3 = data.shape - s, d = data.reshape(d1 * d2, d3).T - return estimate_transform("similarity", self.source[s], self.target[d]) - - def get_error(self, data: NDArray, approx_t: Any) -> NDArray: - """ - Calculate the maximum residual error for the matched points given the estimated transform. - - Args: - data: Matched point pairs. - approx_t: Estimated transformation model. - - Returns: - Maximum residual error for each set of matched points. - """ - d1, d2, d3 = data.shape - s, d = data.reshape(d1 * d2, d3).T - resid = approx_t.residuals( - self.source[s], self.target[d]).reshape(d1, d2) - return resid.max(axis=1) - - -def _data(image: Union[NDArray, Any]) -> NDArray: - """ - Retrieve the underlying 2D pixel data from the image. - - Args: - image: The input image. - - Returns: - The pixel data as a 2D NumPy array. - """ - if hasattr(image, "data") and isinstance(image.data, np.ndarray): - return image.data - return np.asarray(image) - - -def _mask(image: Union[NDArray, Any]) -> Union[NDArray, None]: - """ - Retrieve the mask from the image, if available. - - Args: - image: The input image. - - Returns: - The mask as a 2D NumPy array, or None if no mask is present. - """ - if hasattr(image, "mask"): - thenp_mask = np.asarray(image.mask) - return thenp_mask if thenp_mask.ndim == 2 else np.logical_or.reduce(thenp_mask, axis=-1) - return None - - -def _bw(image: NDArray) -> NDArray: - """ - Convert the input image to a 2D grayscale image. - - Args: - image: Input image, possibly with multiple channels. - - Returns: - Grayscale 2D NumPy array. - """ - return image if image.ndim == 2 else _default_average(image, axis=-1) - - -def _shape(image: NDArray) -> tuple[int, int]: - """ - Get the shape of the image, ignoring channels. - - Args: - image: Input image. - - Returns: - A tuple representing the 2D shape (height, width) of the image. - """ - return image.shape if image.ndim == 2 else image.shape[:2] - - -def find_transform( - source: Union[NDArray, Any], - target: Union[NDArray, Any], - max_control_points: int = 50, - detection_sigma: int = 5, - min_area: int = 5 -) -> Tuple[Any, Tuple[NDArray, NDArray]]: - """ - Estimate the geometric transformation between the source and target images. - - This function identifies control points (stars) in both the source and target images, - computes their triangle-based invariant features, and finds the best transformation - to align the source to the target using a RANSAC-based method. - - Args: - source: The source image to be transformed. - target: The target image to match the source to. - max_control_points: Maximum number of control points to use for transformation. - detection_sigma: Sigma threshold for detecting control points. - min_area: Minimum area for detecting sources in the image. - - Returns: - A tuple containing the estimated transformation object and a tuple of matched control points - from the source and target images. - - Raises: - ValueError: If fewer than 3 control points are found in either image. - TypeError: If the input type of source or target is unsupported. - """ - try: - source_controlp = (np.array(source)[:max_control_points] if len(_data(source)[0]) == 2 - else _find_sources(_bw(_data(source)), detection_sigma, min_area, _mask(source))[:max_control_points]) - except Exception: - raise TypeError("Input type for source not supported.") - - try: - target_controlp = (np.array(target)[:max_control_points] if len(_data(target)[0]) == 2 - else _find_sources(_bw(_data(target)), detection_sigma, min_area, _mask(target))[:max_control_points]) - except Exception: - raise TypeError("Input type for target not supported.") - - if len(source_controlp) < 3 or len(target_controlp) < 3: - raise ValueError( - "Reference stars in source or target image are less than the minimum value (3).") - - source_invariants, source_asterisms = _generate_invariants(source_controlp) - target_invariants, target_asterisms = _generate_invariants(target_controlp) - - source_tree = KDTree(source_invariants) - target_tree = KDTree(target_invariants) - - matches_list = source_tree.query_ball_tree(target_tree, r=0.1) - - matches = [list(zip(t1, t2)) for t1, t2_list in zip( - source_asterisms, matches_list) for t2 in target_asterisms[t2_list]] - matches = np.array(matches) - - inv_model = _MatchTransform(source_controlp, target_controlp) - n_invariants = len(matches) - min_matches = max(1, min(10, int(n_invariants * MIN_MATCHES_FRACTION))) - - if (len(source_controlp) == 3 or len(target_controlp) == 3) and len(matches) == 1: - best_t = inv_model.fit(matches) - inlier_ind = np.arange(len(matches)) - else: - best_t, inlier_ind = _ransac( - matches, inv_model, PIXEL_TOL, min_matches) - - triangle_inliers = matches[inlier_ind] - inl_arr = triangle_inliers.reshape(-1, 2) - inl_unique = set(map(tuple, inl_arr)) - - inl_dict = {} - for s_i, t_i in inl_unique: - s_vertex = source_controlp[s_i] - t_vertex = target_controlp[t_i] - t_vertex_pred = matrix_transform(s_vertex, best_t.params) - error = np.linalg.norm(t_vertex_pred - t_vertex) - - if s_i not in inl_dict or error < inl_dict[s_i][1]: - inl_dict[s_i] = (t_i, error) - - inl_arr_unique = np.array([[s_i, t_i] - for s_i, (t_i, _) in inl_dict.items()]) - s, d = inl_arr_unique.T - - return best_t, (source_controlp[s], target_controlp[d]) - - -def apply_transform( - transform: Any, - source: Union[NDArray, Any], - target: Union[NDArray, Any], - fill_value: Union[float, None] = None, - propagate_mask: bool = False -) -> Tuple[NDArray, NDArray]: - """ - Apply the estimated transformation to align the source image to the target image. - - The transformation is applied to the source image, and an optional mask is propagated - if requested. The function returns the aligned source image and a binary footprint - of the transformed region. - - Args: - transform: The transformation to apply. - source: The source image to be transformed. - target: The target image to align the source to. - fill_value: Value to fill in regions outside the source image after transformation. - propagate_mask: Whether to propagate the source mask after transformation. - - Returns: - A tuple containing the aligned source image and the transformation footprint. - """ - source_data = _data(source) - target_shape = _data(target).shape - - aligned_image = warp( - source_data, - inverse_map=transform.inverse, - output_shape=target_shape, - order=3, - mode="constant", - cval=_default_median(source_data), - clip=True, - preserve_range=True, - ) - - footprint = warp( - np.zeros(_shape(source_data), dtype="float32"), - inverse_map=transform.inverse, - output_shape=target_shape, - cval=1.0, - ) - footprint = footprint > 0.4 - - source_mask = _mask(source) - if source_mask is not None and propagate_mask: - if source_mask.shape == source_data.shape: - source_mask_rot = warp( - source_mask.astype("float32"), - inverse_map=transform.inverse, - output_shape=target_shape, - cval=1.0, - ) - source_mask_rot = source_mask_rot > 0.4 - footprint |= source_mask_rot - - if fill_value is not None: - aligned_image[footprint] = fill_value - - return aligned_image, footprint - - -def register( - source: Union[NDArray, Any], - target: Union[NDArray, Any], - fill_value: Union[float, None] = None, - propagate_mask: bool = False, - max_control_points: int = 50, - detection_sigma: int = 5, - min_area: int = 5 -) -> Tuple[NDArray, NDArray]: - """ - Register and align the source image to the target image using triangle invariants. - - This function estimates the transformation between the source and target images, - applies the transformation, and returns the aligned source image along with - the transformation footprint. - - Args: - source: The source image to be aligned. - target: The target image for alignment. - fill_value: Value to fill in regions outside the source image after transformation. - propagate_mask: Whether to propagate the source mask after transformation. - max_control_points: Maximum number of control points to use for transformation. - detection_sigma: Sigma threshold for detecting control points. - min_area: Minimum area for detecting sources in the image. - - Returns: - A tuple containing the aligned source image and the transformation footprint. - """ - t, _ = find_transform( - source=source, - target=target, - max_control_points=max_control_points, - detection_sigma=detection_sigma, - min_area=min_area, - ) - return apply_transform(t, source, target, fill_value, propagate_mask) - - -def _find_sources(img: NDArray, detection_sigma: int = 5, min_area: int = 5, mask: Union[NDArray, None] = None) -> NDArray: - """ - Detect bright sources (e.g., stars) in the image using SEP (Source Extractor). - - This function returns the coordinates of sources sorted by brightness. - - Args: - img: The input image in which to detect sources. - detection_sigma: Sigma threshold for source detection. - min_area: Minimum area for detecting sources. - mask: Optional mask for ignoring certain parts of the image. - - Returns: - A NumPy array of detected source coordinates (x, y), sorted by brightness. - """ - image = img.astype("float32") - bkg = sep.Background(image, mask=mask) - thresh = detection_sigma * bkg.globalrms - sources = sep.extract(image - bkg.back(), thresh, - minarea=min_area, mask=mask) - sources.sort(order="flux") - return np.array([[asrc["x"], asrc["y"]] for asrc in sources[::-1]]) - - -class MaxIterError(RuntimeError): - """ - Custom error raised if the maximum number of iterations is reached during the RANSAC process. - - This exception indicates that the RANSAC algorithm has exhausted all possible - matching triangles without finding an acceptable transformation. - """ - pass - - -def _ransac(data: NDArray, model: Any, thresh: float, min_matches: int) -> Tuple[Any, NDArray]: - """ - Fit a model to data using the RANSAC (Random Sample Consensus) algorithm. - - This robust method estimates the transformation model by iteratively fitting - to subsets of data and discarding outliers. - - Args: - data: Matched point pairs. - model: The transformation model to fit. - thresh: Error threshold to consider a data point as an inlier. - min_matches: Minimum number of inliers required to accept the model. - - Returns: - A tuple containing the best-fit model and the indices of inliers. - - Raises: - MaxIterError: If the maximum number of iterations is reached without finding - an acceptable transformation. - """ - n_data = data.shape[0] - all_idxs = np.arange(n_data) - np.random.default_rng().shuffle(all_idxs) - - for iter_i in range(n_data): - maybe_idxs = all_idxs[iter_i:iter_i + 1] - test_idxs = np.concatenate([all_idxs[:iter_i], all_idxs[iter_i + 1:]]) - maybeinliers = data[maybe_idxs, :] - test_points = data[test_idxs, :] - maybemodel = model.fit(maybeinliers) - test_err = model.get_error(test_points, maybemodel) - also_idxs = test_idxs[test_err < thresh] - alsoinliers = data[also_idxs, :] - if len(alsoinliers) >= min_matches: - good_data = np.concatenate((maybeinliers, alsoinliers)) - good_fit = model.fit(good_data) - break - else: - raise MaxIterError( - "List of matching triangles exhausted before an acceptable transformation was found") - - better_fit = good_fit - for _ in range(3): - test_err = model.get_error(data, better_fit) - better_inlier_idxs = np.arange(n_data)[test_err < thresh] - better_data = data[better_inlier_idxs] - better_fit = model.fit(better_data) - - return better_fit, better_inlier_idxs diff --git a/pysrc/image/auto_histogram/histogram.py b/pysrc/image/auto_histogram/histogram.py deleted file mode 100644 index a402b7ff..00000000 --- a/pysrc/image/auto_histogram/histogram.py +++ /dev/null @@ -1,111 +0,0 @@ -import cv2 -import numpy as np -from typing import Optional, List, Tuple -from .utils import save_image, load_image - - -def auto_histogram(image: Optional[np.ndarray] = None, clip_shadow: float = 0.01, clip_highlight: float = 0.01, - target_median: int = 128, method: str = 'gamma', apply_clahe: bool = False, - clahe_clip_limit: float = 2.0, clahe_tile_grid_size: Tuple[int, int] = (8, 8), - apply_noise_reduction: bool = False, noise_reduction_method: str = 'median', - apply_sharpening: bool = False, sharpening_strength: float = 1.0, - batch_process: bool = False, file_list: Optional[List[str]] = None) -> Optional[List[np.ndarray]]: - """ - Apply automated histogram transformations and enhancements to an image or a batch of images. - - Parameters: - - image: Input image, grayscale or RGB. - - clip_shadow: Percentage of shadow pixels to clip. - - clip_highlight: Percentage of highlight pixels to clip. - - target_median: Target median value for histogram stretching. - - method: Stretching method ('gamma', 'logarithmic', 'mtf'). - - apply_clahe: Apply CLAHE (Contrast Limited Adaptive Histogram Equalization). - - clahe_clip_limit: CLAHE clip limit. - - clahe_tile_grid_size: CLAHE grid size. - - apply_noise_reduction: Apply noise reduction. - - noise_reduction_method: Noise reduction method ('median', 'gaussian'). - - apply_sharpening: Apply image sharpening. - - sharpening_strength: Strength of sharpening. - - batch_process: Enable batch processing mode. - - file_list: List of file paths for batch processing. - - Returns: - - Processed image or list of processed images. - """ - def histogram_clipping(image: np.ndarray, clip_shadow: float, clip_highlight: float) -> np.ndarray: - flat = image.flatten() - low_val = np.percentile(flat, clip_shadow * 100) - high_val = np.percentile(flat, 100 - clip_highlight * 100) - return np.clip(image, low_val, high_val) - - def gamma_transformation(image: np.ndarray, target_median: int) -> np.ndarray: - mean_val = np.median(image) - gamma = np.log(target_median / 255.0) / np.log(mean_val / 255.0) - return np.array(255 * (image / 255.0) ** gamma, dtype='uint8') - - def logarithmic_transformation(image: np.ndarray) -> np.ndarray: - c = 255 / np.log(1 + np.max(image)) - return np.array(c * np.log(1 + image), dtype='uint8') - - def mtf_transformation(image: np.ndarray, target_median: int) -> np.ndarray: - mean_val = np.median(image) - mtf = target_median / mean_val - return np.array(image * mtf, dtype='uint8') - - def apply_clahe_method(image: np.ndarray, clip_limit: float, tile_grid_size: Tuple[int, int]) -> np.ndarray: - clahe = cv2.createCLAHE(clipLimit=clip_limit, - tileGridSize=tile_grid_size) - if len(image.shape) == 2: - return clahe.apply(image) - else: - return cv2.merge([clahe.apply(channel) for channel in cv2.split(image)]) - - def noise_reduction(image: np.ndarray, method: str) -> np.ndarray: - if method == 'median': - return cv2.medianBlur(image, 3) - elif method == 'gaussian': - return cv2.GaussianBlur(image, (3, 3), 0) - else: - raise ValueError("Invalid noise reduction method specified.") - - def sharpen_image(image: np.ndarray, strength: float) -> np.ndarray: - kernel = np.array([[-1, -1, -1], [-1, 9 + strength, -1], [-1, -1, -1]]) - return cv2.filter2D(image, -1, kernel) - - def process_single_image(image: np.ndarray) -> np.ndarray: - if apply_noise_reduction: - image = noise_reduction(image, noise_reduction_method) - - image = histogram_clipping(image, clip_shadow, clip_highlight) - - if method == 'gamma': - image = gamma_transformation(image, target_median) - elif method == 'logarithmic': - image = logarithmic_transformation(image) - elif method == 'mtf': - image = mtf_transformation(image, target_median) - else: - raise ValueError("Invalid method specified.") - - if apply_clahe: - image = apply_clahe_method( - image, clahe_clip_limit, clahe_tile_grid_size) - - if apply_sharpening: - image = sharpen_image(image, sharpening_strength) - - return image - - if batch_process: - if file_list is None: - raise ValueError( - "File list cannot be None when batch processing is enabled.") - processed_images = [] - for file_path in file_list: - image = load_image(file_path, method != 'mtf') - processed_image = process_single_image(image) - processed_images.append(processed_image) - save_image(f'processed_{file_path}', processed_image) - return processed_images - else: - return process_single_image(image) diff --git a/pysrc/image/auto_histogram/processing.py b/pysrc/image/auto_histogram/processing.py deleted file mode 100644 index 3e64425d..00000000 --- a/pysrc/image/auto_histogram/processing.py +++ /dev/null @@ -1,28 +0,0 @@ -from .histogram import auto_histogram -from .utils import save_image, load_image -import os -from typing import List - - -def process_directory(directory: str, output_directory: str, method: str = 'gamma', **kwargs): - """ - Process all images in a directory using the auto_histogram function. - - :param directory: Input directory containing images to process. - :param output_directory: Directory to save processed images. - :param method: Histogram stretching method ('gamma', 'logarithmic', 'mtf'). - :param kwargs: Additional parameters for auto_histogram. - """ - if not os.path.exists(output_directory): - os.makedirs(output_directory) - - file_list = [os.path.join(directory, file) for file in os.listdir( - directory) if file.endswith(('.jpg', '.png'))] - - processed_images = auto_histogram( - None, method=method, batch_process=True, file_list=file_list, **kwargs) - - for file, image in zip(file_list, processed_images): - output_path = os.path.join( - output_directory, f'processed_{os.path.basename(file)}') - save_image(output_path, image) diff --git a/pysrc/image/auto_histogram/utils.py b/pysrc/image/auto_histogram/utils.py deleted file mode 100644 index f62a21c4..00000000 --- a/pysrc/image/auto_histogram/utils.py +++ /dev/null @@ -1,23 +0,0 @@ -import cv2 -import numpy as np -from typing import Tuple, Union - -def save_image(filepath: str, image: np.ndarray): - """ - Save an image to the specified filepath. - - :param filepath: Path to save the image. - :param image: Image data. - """ - cv2.imwrite(filepath, image) - -def load_image(filepath: str, grayscale: bool = False) -> np.ndarray: - """ - Load an image from the specified filepath. - - :param filepath: Path to load the image from. - :param grayscale: Load image as grayscale if True. - :return: Loaded image. - """ - flags = cv2.IMREAD_GRAYSCALE if grayscale else cv2.IMREAD_COLOR - return cv2.imread(filepath, flags) diff --git a/pysrc/image/channel/combination.py b/pysrc/image/channel/combination.py deleted file mode 100644 index a072018c..00000000 --- a/pysrc/image/channel/combination.py +++ /dev/null @@ -1,67 +0,0 @@ -from PIL import Image -import numpy as np -from skimage import color -import cv2 - -def resize_to_match(image, target_size): - return image.resize(target_size, Image.ANTIALIAS) - -def load_image_as_gray(path): - return Image.open(path).convert('L') - -def combine_channels(channels, color_space='RGB'): - match color_space: - case 'RGB': - return Image.merge("RGB", channels) - - case 'LAB': - lab_image = Image.merge("LAB", channels) - return lab_image.convert('RGB') - - case 'HSV': - hsv_image = Image.merge("HSV", channels) - return hsv_image.convert('RGB') - - case 'HSI': - hsi_image = np.dstack([np.array(ch) / 255.0 for ch in channels]) - rgb_image = color.hsv2rgb(hsi_image) # Scikit-image doesn't have direct HSI support; using HSV as proxy - return Image.fromarray((rgb_image * 255).astype(np.uint8)) - - case _: - raise ValueError(f"Unsupported color space: {color_space}") - -def channel_combination(src1_path, src2_path, src3_path, color_space='RGB'): - # Load and resize images to match - channel_1 = load_image_as_gray(src1_path) - channel_2 = load_image_as_gray(src2_path) - channel_3 = load_image_as_gray(src3_path) - - # Automatically resize images to match the size of the first image - size = channel_1.size - channel_2 = resize_to_match(channel_2, size) - channel_3 = resize_to_match(channel_3, size) - - # Combine the channels - combined_image = combine_channels([channel_1, channel_2, channel_3], color_space=color_space) - - return combined_image - -# 示例用法 -if __name__ == "__main__": - # 指定通道对应的图像路径 - src1_path = 'channel_R.png' # 对应于RGB空间的R通道或Lab空间的L通道 - src2_path = 'channel_G.png' # 对应于RGB空间的G通道或Lab空间的a*通道 - src3_path = 'channel_B.png' # 对应于RGB空间的B通道或Lab空间的b*通道 - - # 执行通道组合,保存结果 - combined_rgb = channel_combination(src1_path, src2_path, src3_path, color_space='RGB') - combined_rgb.save('combined_rgb.png') - - combined_lab = channel_combination(src1_path, src2_path, src3_path, color_space='LAB') - combined_lab.save('combined_lab.png') - - combined_hsv = channel_combination(src1_path, src2_path, src3_path, color_space='HSV') - combined_hsv.save('combined_hsv.png') - - combined_hsi = channel_combination(src1_path, src2_path, src3_path, color_space='HSI') - combined_hsi.save('combined_hsi.png') diff --git a/pysrc/image/channel/extraction.py b/pysrc/image/channel/extraction.py deleted file mode 100644 index fd85d782..00000000 --- a/pysrc/image/channel/extraction.py +++ /dev/null @@ -1,138 +0,0 @@ -import cv2 -import numpy as np -import os -from matplotlib import pyplot as plt - - -def extract_channels(image, color_space='RGB'): - channels = {} - - if color_space == 'RGB': - channels['R'], channels['G'], channels['B'] = cv2.split(image) - - elif color_space == 'XYZ': - xyz_image = cv2.cvtColor(image, cv2.COLOR_BGR2XYZ) - channels['X'], channels['Y'], channels['Z'] = cv2.split(xyz_image) - - elif color_space == 'Lab': - lab_image = cv2.cvtColor(image, cv2.COLOR_BGR2Lab) - channels['L*'], channels['a*'], channels['b*'] = cv2.split(lab_image) - - elif color_space == 'LCh': - lab_image = cv2.cvtColor(image, cv2.COLOR_BGR2Lab) - L, a, b = cv2.split(lab_image) - h, c = cv2.cartToPolar(a, b) - channels['L*'] = L - channels['c*'] = c - channels['h*'] = h - - elif color_space == 'HSV': - hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) - channels['H'], channels['S'], channels['V'] = cv2.split(hsv_image) - - elif color_space == 'HSI': - hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) - H, S, V = cv2.split(hsv_image) - I = V.copy() - channels['H'] = H - channels['Si'] = S - channels['I'] = I - - elif color_space == 'YUV': - yuv_image = cv2.cvtColor(image, cv2.COLOR_BGR2YUV) - channels['Y'], channels['U'], channels['V'] = cv2.split(yuv_image) - - elif color_space == 'YCbCr': - ycbcr_image = cv2.cvtColor(image, cv2.COLOR_BGR2YCrCb) - channels['Y'], channels['Cb'], channels['Cr'] = cv2.split(ycbcr_image) - - elif color_space == 'HSL': - hsl_image = cv2.cvtColor(image, cv2.COLOR_BGR2HLS) - channels['H'], channels['S'], channels['L'] = cv2.split(hsl_image) - - elif color_space == 'CMYK': - # Trick: Convert to CMY via XYZ - cmyk_image = cv2.cvtColor(image, cv2.COLOR_BGR2XYZ) - C, M, Y = cv2.split(255 - cmyk_image) - K = np.minimum(C, np.minimum(M, Y)) - channels['C'] = C - channels['M'] = M - channels['Y'] = Y - channels['K'] = K - - return channels - - -def show_histogram(channel_data, title='Channel Histogram'): - plt.figure() - plt.title(title) - plt.xlabel('Pixel Value') - plt.ylabel('Frequency') - plt.hist(channel_data.ravel(), bins=256, range=[0, 256]) - plt.show() - - -def merge_channels(channels): - merged_image = None - channel_list = list(channels.values()) - if len(channel_list) >= 3: - merged_image = cv2.merge(channel_list[:3]) - elif len(channel_list) == 2: - merged_image = cv2.merge( - [channel_list[0], channel_list[1], np.zeros_like(channel_list[0])]) - elif len(channel_list) == 1: - merged_image = channel_list[0] - return merged_image - - -def process_directory(input_dir, output_dir, color_space='RGB'): - if not os.path.exists(output_dir): - os.makedirs(output_dir) - - for filename in os.listdir(input_dir): - if filename.endswith(('.png', '.jpg', '.jpeg', '.bmp', '.tiff')): - image_path = os.path.join(input_dir, filename) - image = cv2.imread(image_path) - base_name = os.path.splitext(filename)[0] - extracted_channels = extract_channels(image, color_space) - for channel_name, channel_data in extracted_channels.items(): - save_path = os.path.join( - output_dir, f"{base_name}_{channel_name}.png") - cv2.imwrite(save_path, channel_data) - show_histogram( - channel_data, title=f"{base_name} - {channel_name}") - print(f"Saved {save_path}") - - -def save_channels(channels, base_name='output'): - for channel_name, channel_data in channels.items(): - filename = f"{base_name}_{channel_name}.png" - cv2.imwrite(filename, channel_data) - print(f"Saved {filename}") - - -def display_image(title, image): - cv2.imshow(title, image) - cv2.waitKey(0) - cv2.destroyAllWindows() - - -# Example usage: -image = cv2.imread('input_image.png') -extracted_channels = extract_channels(image, color_space='Lab') - -# Show histograms -for name, channel in extracted_channels.items(): - show_histogram(channel, title=f"{name} Histogram") - -# Save channels -save_channels(extracted_channels, base_name='output_image') - -# Merge channels -merged_image = merge_channels(extracted_channels) -if merged_image is not None: - display_image('Merged Image', merged_image) - cv2.imwrite('merged_image.png', merged_image) - -# Process directory -process_directory('input_images', 'output_images', color_space='HSV') diff --git a/pysrc/image/color_calibration/calibration.py b/pysrc/image/color_calibration/calibration.py deleted file mode 100644 index 6ca4cb2c..00000000 --- a/pysrc/image/color_calibration/calibration.py +++ /dev/null @@ -1,65 +0,0 @@ -import cv2 -import numpy as np -from typing import Tuple -from dataclasses import dataclass - -@dataclass -class ColorCalibration: - """Class to handle color calibration tasks for astronomical images.""" - image: np.ndarray - - def calculate_color_factors(self, white_reference: np.ndarray) -> np.ndarray: - """ - Calculate the color calibration factors based on a white reference image. - - Parameters: - white_reference (np.ndarray): The white reference region. - - Returns: - np.ndarray: The calibration factors for the RGB channels. - """ - mean_values = np.mean(white_reference, axis=(0, 1)) - factors = 1.0 / mean_values - return factors - - def apply_color_calibration(self, factors: np.ndarray) -> np.ndarray: - """ - Apply color calibration to the image using provided factors. - - Parameters: - factors (np.ndarray): The RGB calibration factors. - - Returns: - np.ndarray: Color calibrated image. - """ - calibrated_image = np.zeros_like(self.image) - for i in range(3): - calibrated_image[:, :, i] = self.image[:, :, i] * factors[i] - return calibrated_image - - def automatic_white_balance(self) -> np.ndarray: - """ - Perform automatic white balance using the Gray World algorithm. - - Returns: - np.ndarray: White balanced image. - """ - mean_values = np.mean(self.image, axis=(0, 1)) - gray_value = np.mean(mean_values) - factors = gray_value / mean_values - return self.apply_color_calibration(factors) - - def match_histograms(self, reference_image: np.ndarray) -> np.ndarray: - """ - Match the color histogram of the image to a reference image. - - Parameters: - reference_image (np.ndarray): The reference image whose histogram is to be matched. - - Returns: - np.ndarray: Histogram matched image. - """ - matched_image = np.zeros_like(self.image) - for i in range(3): - matched_image[:, :, i] = exposure.match_histograms(self.image[:, :, i], reference_image[:, :, i], multichannel=False) - return matched_image diff --git a/pysrc/image/debayer/__init__.py b/pysrc/image/debayer/__init__.py deleted file mode 100644 index e21f4ef2..00000000 --- a/pysrc/image/debayer/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .debayer import Debayer -from .metrics import calculate_image_quality, evaluate_image_quality diff --git a/pysrc/image/debayer/debayer.py b/pysrc/image/debayer/debayer.py deleted file mode 100644 index bde2fcce..00000000 --- a/pysrc/image/debayer/debayer.py +++ /dev/null @@ -1,247 +0,0 @@ -import numpy as np -import cv2 -from concurrent.futures import ThreadPoolExecutor -from typing import Optional, Tuple -import time - - -class Debayer: - def __init__(self, method: str = 'bilinear', pattern: Optional[str] = None): - """ - Initialize Debayer object with method and optional Bayer pattern. - - :param method: Debayering method ('superpixel', 'bilinear', 'vng', 'ahd', 'laplacian') - :param pattern: Bayer pattern ('BGGR', 'RGGB', 'GBRG', 'GRBG'), None for auto-detection - """ - self.method = method - self.pattern = pattern - - def detect_bayer_pattern(self, image: np.ndarray) -> str: - """ - Automatically detect Bayer pattern from the CFA image. - """ - height, width = image.shape - - # 初始化统计信息 - patterns = {'BGGR': 0, 'RGGB': 0, 'GBRG': 0, 'GRBG': 0} - - # 检测边缘并增强检测精度 - edges = cv2.Canny(image, 50, 150) - - for i in range(0, height - 1, 2): - for j in range(0, width - 1, 2): - # BGGR - patterns['BGGR'] += (image[i, j] + image[i+1, j+1]) + \ - (edges[i, j] + edges[i+1, j+1]) - # RGGB - patterns['RGGB'] += (image[i+1, j] + image[i, j+1]) + \ - (edges[i+1, j] + edges[i, j+1]) - # GBRG - patterns['GBRG'] += (image[i, j+1] + image[i+1, j]) + \ - (edges[i, j+1] + edges[i+1, j]) - # GRBG - patterns['GRBG'] += (image[i, j] + image[i+1, j+1]) + \ - (edges[i, j] + edges[i+1, j+1]) - - # 分析颜色通道的分布,进一步强化检测 - color_sums = {'BGGR': 0, 'RGGB': 0, 'GBRG': 0, 'GRBG': 0} - - # 遍历整个图像并分析色彩通道的强度分布 - for i in range(0, height - 1, 2): - for j in range(0, width - 1, 2): - block = image[i:i+2, j:j+2] - color_sums['BGGR'] += block[0, 0] + block[1, 1] # 蓝-绿对 - color_sums['RGGB'] += block[1, 0] + block[0, 1] # 红-绿对 - color_sums['GBRG'] += block[0, 1] + block[1, 0] # 绿-蓝对 - color_sums['GRBG'] += block[0, 0] + block[1, 1] # 绿-红对 - - # 综合所有信息,选择最有可能的Bayer模式 - for pattern in patterns.keys(): - patterns[pattern] += color_sums[pattern] - - detected_pattern = max(patterns, key=patterns.get) - - return detected_pattern - - def debayer_image(self, cfa_image: np.ndarray) -> np.ndarray: - """ - Perform the debayering process using the specified method. - """ - if self.pattern is None: - self.pattern = self.detect_bayer_pattern(cfa_image) - - cfa_image = self.extend_image_edges(cfa_image, pad_width=2) - print(f"Using Bayer pattern: {self.pattern}") - - if self.method == 'superpixel': - return self.debayer_superpixel(cfa_image) - elif self.method == 'bilinear': - return self.debayer_bilinear(cfa_image) - elif self.method == 'vng': - return self.debayer_vng(cfa_image) - elif self.method == 'ahd': - return self.parallel_debayer_ahd(cfa_image) - elif self.method == 'laplacian': - return self.debayer_laplacian_harmonization(cfa_image) - else: - raise ValueError(f"Unknown debayer method: {self.method}") - - def debayer_superpixel(self, cfa_image: np.ndarray) -> np.ndarray: - red = cfa_image[0::2, 0::2] - green = (cfa_image[0::2, 1::2] + cfa_image[1::2, 0::2]) / 2 - blue = cfa_image[1::2, 1::2] - - rgb_image = np.stack((red, green, blue), axis=-1) - return rgb_image - - def debayer_bilinear(self, cfa_image, pattern='BGGR'): - """ - 使用双线性插值法进行去拜耳处理。 - - :param cfa_image: 输入的CFA图像 - :param pattern: Bayer模式 ('BGGR', 'RGGB', 'GBRG', 'GRBG') - :return: 去拜耳处理后的RGB图像 - """ - if pattern == 'BGGR': - return cv2.cvtColor(cfa_image, cv2.COLOR_BayerBG2BGR) - elif pattern == 'RGGB': - return cv2.cvtColor(cfa_image, cv2.COLOR_BayerRG2BGR) - elif pattern == 'GBRG': - return cv2.cvtColor(cfa_image, cv2.COLOR_BayerGB2BGR) - elif pattern == 'GRBG': - return cv2.cvtColor(cfa_image, cv2.COLOR_BayerGR2BGR) - else: - raise ValueError(f"Unsupported Bayer pattern: {pattern}") - - def debayer_vng(self, cfa_image: np.ndarray) -> np.ndarray: - code = cv2.COLOR_BayerBG2BGR_VNG if pattern == 'BGGR' else cv2.COLOR_BayerRG2BGR_VNG - rgb_image = cv2.cvtColor(cfa_image, code) - return rgb_image - - def parallel_debayer_ahd(self, cfa_image: np.ndarray, num_threads: int = 4) -> np.ndarray: - height, width = cfa_image.shape - chunk_size = height // num_threads - - # 用于存储每个线程处理的部分图像 - results = [None] * num_threads - - def process_chunk(start_row, end_row, index): - chunk = cfa_image[start_row:end_row, :] - gradient_x, gradient_y = calculate_gradients(chunk) - green_channel = interpolate_green_channel( - chunk, gradient_x, gradient_y) - red_channel, blue_channel = interpolate_red_blue_channel( - chunk, green_channel, pattern) - rgb_chunk = np.stack( - (red_channel, green_channel, blue_channel), axis=-1) - results[index] = np.clip(rgb_chunk, 0, 255).astype(np.uint8) - - with concurrent.futures.ThreadPoolExecutor(max_workers=num_threads) as executor: - futures = [] - for i in range(num_threads): - start_row = i * chunk_size - end_row = (i + 1) * chunk_size if i < num_threads - \ - 1 else height - futures.append(executor.submit( - process_chunk, start_row, end_row, i)) - - concurrent.futures.wait(futures) - - # 合并处理后的块 - rgb_image = np.vstack(results) - return rgb_image - - def calculate_laplacian(self, image): - """ - 计算图像的拉普拉斯算子,用于增强边缘检测。 - - :param image: 输入的图像(灰度图像) - :return: 拉普拉斯图像 - """ - laplacian = cv2.Laplacian(image, cv2.CV_64F) - return laplacian - - def harmonize_edges(self, original, interpolated, laplacian): - """ - 使用拉普拉斯算子结果来调整插值后的图像,增强边缘细节。 - - :param original: 原始CFA图像 - :param interpolated: 双线性插值后的图像 - :param laplacian: 计算的拉普拉斯图像 - :return: 经过拉普拉斯调和的图像 - """ - return np.clip(interpolated + 0.2 * laplacian, 0, 255).astype(np.uint8) - - def debayer_laplacian_harmonization(self, cfa_image, pattern='BGGR'): - """ - 使用简化的拉普拉斯调和方法进行去拜耳处理,以增强边缘处理。 - - :param cfa_image: 输入的CFA图像 - :param pattern: Bayer模式 ('BGGR', 'RGGB', 'GBRG', 'GRBG') - :return: 去拜耳处理后的RGB图像 - """ - # Step 1: 双线性插值 - interpolated_image = self.debayer_bilinear(cfa_image, pattern) - - # Step 2: 计算每个通道的拉普拉斯图像 - laplacian_b = self.calculate_laplacian(interpolated_image[:, :, 0]) - laplacian_g = self.calculate_laplacian(interpolated_image[:, :, 1]) - laplacian_r = self.calculate_laplacian(interpolated_image[:, :, 2]) - - # Step 3: 使用拉普拉斯结果调和插值后的图像 - harmonized_b = self.harmonize_edges(cfa_image, interpolated_image[:, :, 0], laplacian_b) - harmonized_g = self.harmonize_edges(cfa_image, interpolated_image[:, :, 1], laplacian_g) - harmonized_r = self.harmonize_edges(cfa_image, interpolated_image[:, :, 2], laplacian_r) - - # Step 4: 合并调和后的通道 - harmonized_image = np.stack((harmonized_b, harmonized_g, harmonized_r), axis=-1) - - return harmonized_image - - def extend_image_edges(self, image: np.ndarray, pad_width: int) -> np.ndarray: - """ - Extend image edges using mirror padding to handle boundary issues during interpolation. - """ - return np.pad(image, pad_width, mode='reflect') - - def visualize_intermediate_steps(self, cfa_image: np.ndarray): - """ - Visualize intermediate steps in the debayering process. - """ - gradient_x, gradient_y = calculate_gradients(cfa_image) - green_channel = interpolate_green_channel( - cfa_image, gradient_x, gradient_y) - red_channel, blue_channel = interpolate_red_blue_channel( - cfa_image, green_channel, pattern) - - # 显示梯度和各通道图像 - cv2.imshow("Gradient X", gradient_x) - cv2.imshow("Gradient Y", gradient_y) - cv2.imshow("Green Channel", green_channel) - cv2.imshow("Red Channel", red_channel) - cv2.imshow("Blue Channel", blue_channel) - cv2.waitKey(0) - cv2.destroyAllWindows() - - def process_batch(self, image_paths: list, num_threads: int = 4): - """ - Batch processing for multiple CFA images using multithreading. - """ - start_time = time.time() - with ThreadPoolExecutor(max_workers=num_threads) as executor: - results = executor.map( - lambda path: self.process_single_image(path), image_paths) - - elapsed_time = time.time() - start_time - print(f"Batch processing completed in {elapsed_time:.2f} seconds.") - - def process_single_image(self, path: str) -> np.ndarray: - """ - Helper function for processing a single image. - """ - cfa_image = cv2.imread(path, cv2.IMREAD_GRAYSCALE) - rgb_image = self.debayer_image(cfa_image) - output_path = path.replace('.png', f'_{self.method}.png') - cv2.imwrite(output_path, rgb_image) - print(f"Processed {path} -> {output_path}") - return rgb_image diff --git a/pysrc/image/debayer/metrics.py b/pysrc/image/debayer/metrics.py deleted file mode 100644 index 0f27e42c..00000000 --- a/pysrc/image/debayer/metrics.py +++ /dev/null @@ -1,27 +0,0 @@ -import cv2 -import numpy as np -from skimage.metrics import peak_signal_noise_ratio as psnr, structural_similarity as ssim - -def evaluate_image_quality(rgb_image: np.ndarray) -> dict: - """ - Evaluate the quality of the debayered image. - """ - gray_image = cv2.cvtColor(rgb_image, cv2.COLOR_BGR2GRAY) - laplacian_var = cv2.Laplacian(gray_image, cv2.CV_64F).var() - - mean_colors = cv2.mean(rgb_image)[:3] - - return { - "sharpness": laplacian_var, - "mean_red": mean_colors[2], - "mean_green": mean_colors[1], - "mean_blue": mean_colors[0] - } - -def calculate_image_quality(original: np.ndarray, processed: np.ndarray) -> Tuple[float, float]: - """ - Calculate PSNR and SSIM between the original and processed images. - """ - psnr_value = psnr(original, processed, data_range=processed.max() - processed.min()) - ssim_value = ssim(original, processed, multichannel=True) - return psnr_value, ssim_value diff --git a/pysrc/image/debayer/utils.py b/pysrc/image/debayer/utils.py deleted file mode 100644 index 4ef5e83a..00000000 --- a/pysrc/image/debayer/utils.py +++ /dev/null @@ -1,117 +0,0 @@ -from typing import Tuple -import numpy as np - -def calculate_gradients(cfa_image: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: - """ - Calculate the gradients of a CFA image. - """ - gradient_x = np.abs(np.diff(cfa_image, axis=1)) - gradient_y = np.abs(np.diff(cfa_image, axis=0)) - - gradient_x = np.pad(gradient_x, ((0, 0), (0, 1)), 'constant') - gradient_y = np.pad(gradient_y, ((0, 1), (0, 0)), 'constant') - - return gradient_x, gradient_y - -def interpolate_green_channel(cfa_image: np.ndarray, gradient_x: np.ndarray, gradient_y: np.ndarray) -> np.ndarray: - """ - Interpolate the green channel of the CFA image. - """ - height, width = cfa_image.shape - green_channel = np.zeros((height, width)) - - for i in range(1, height - 1): - for j in range(1, width - 1): - if (i % 2 == 0 and j % 2 == 1) or (i % 2 == 1 and j % 2 == 0): - # 当前点是绿色通道点,直接赋值 - green_channel[i, j] = cfa_image[i, j] - else: - # 当前点不是绿色通道点,需要插值 - if gradient_x[i, j] < gradient_y[i, j]: - green_channel[i, j] = 0.5 * \ - (cfa_image[i, j-1] + cfa_image[i, j+1]) - else: - green_channel[i, j] = 0.5 * \ - (cfa_image[i-1, j] + cfa_image[i+1, j]) - - return green_channel - -def interpolate_red_blue_channel(cfa_image: np.ndarray, green_channel: np.ndarray, pattern: str) -> Tuple[np.ndarray, np.ndarray]: - """ - Interpolate the red and blue channels of the CFA image. - """ - height, width = cfa_image.shape - red_channel = np.zeros((height, width)) - blue_channel = np.zeros((height, width)) - - if pattern == 'BGGR': - for i in range(0, height, 2): - for j in range(0, width, 2): - blue_channel[i, j] = cfa_image[i, j] - red_channel[i+1, j+1] = cfa_image[i+1, j+1] - - green_r = 0.5 * (green_channel[i+1, j] + green_channel[i, j+1]) - green_b = 0.5 * (green_channel[i, j] + green_channel[i+1, j+1]) - - blue_channel[i+1, j] = cfa_image[i+1, j] - \ - green_b + green_channel[i+1, j] - blue_channel[i, j+1] = cfa_image[i, j+1] - \ - green_b + green_channel[i, j+1] - red_channel[i, j] = cfa_image[i, j] - \ - green_r + green_channel[i, j] - red_channel[i+1, j+1] = cfa_image[i+1, j+1] - \ - green_r + green_channel[i+1, j+1] - - elif pattern == 'RGGB': - for i in range(0, height, 2): - for j in range(0, width, 2): - red_channel[i, j] = cfa_image[i, j] - blue_channel[i+1, j+1] = cfa_image[i+1, j+1] - - green_r = 0.5 * (green_channel[i, j+1] + green_channel[i+1, j]) - green_b = 0.5 * (green_channel[i+1, j] + green_channel[i, j+1]) - - red_channel[i+1, j] = cfa_image[i+1, j] - \ - green_r + green_channel[i+1, j] - red_channel[i, j+1] = cfa_image[i, j+1] - \ - green_r + green_channel[i, j+1] - blue_channel[i, j] = cfa_image[i, j] - \ - green_b + green_channel[i, j] - blue_channel[i+1, j+1] = cfa_image[i+1, j+1] - \ - green_b + green_channel[i+1, j+1] - - elif pattern == 'GBRG': - for i in range(0, height, 2): - for j in range(0, width, 2): - green_channel[i, j+1] = cfa_image[i, j+1] - blue_channel[i+1, j] = cfa_image[i+1, j] - - green_r = 0.5 * (green_channel[i, j] + green_channel[i+1, j+1]) - green_b = 0.5 * (green_channel[i+1, j] + green_channel[i, j+1]) - - red_channel[i, j] = cfa_image[i, j] - \ - green_r + green_channel[i, j] - red_channel[i+1, j+1] = cfa_image[i+1, j+1] - \ - green_r + green_channel[i+1, j+1] - blue_channel[i, j] = cfa_image[i, j] - \ - green_b + green_channel[i, j] - blue_channel[i+1, j+1] = cfa_image[i+1, j+1] - \ - green_b + green_channel[i+1, j+1] - - elif pattern == 'GRBG': - for i in range(0, height, 2): - for j in range(0, width, 2): - green_channel[i, j] = cfa_image[i, j] - red_channel[i+1, j] = cfa_image[i+1, j] - - green_r = 0.5 * (green_channel[i, j] + green_channel[i+1, j+1]) - green_b = 0.5 * (green_channel[i+1, j] + green_channel[i, j+1]) - - red_channel[i, j] = cfa_image[i, j] - \ - green_r + green_channel[i, j] - red_channel[i+1, j+1] = cfa_image[i+1, j+1] - \ - green_r + green_channel[i+1, j+1] - blue_channel[i+1, j] = cfa_image[i+1, j] - \ - green_b + green_channel[i+1, j] - blue_channel[i, j+1] = cfa_image[i, j+1] - \ - green_b + green_channel[i, j+1] diff --git a/pysrc/image/fluxcalibration/calibration.py b/pysrc/image/fluxcalibration/calibration.py deleted file mode 100644 index b3d3b02b..00000000 --- a/pysrc/image/fluxcalibration/calibration.py +++ /dev/null @@ -1,68 +0,0 @@ -import numpy as np -from astropy.io import fits -from .core import CalibrationParams -from .utils import instrument_response_correction, background_noise_correction - -def compute_flx2dn(params: CalibrationParams) -> float: - """ - Compute the flux conversion factor (FLX2DN). - :param params: Calibration parameters. - :return: Flux conversion factor. - """ - c = 3.0e8 # Speed of light in m/s - h = 6.626e-34 # Planck's constant in J·s - wavelength_m = params.wavelength * 1e-9 # Convert nm to meters - - aperture_area = np.pi * (params.aperture**2 - params.obstruction**2) / 4 - FLX2DN = (params.exposure_time * aperture_area * params.filter_width * - params.transmissivity * params.gain * params.quantum_efficiency * - (1 - params.extinction) * (wavelength_m / (c * h))) - return FLX2DN - -def flux_calibration(image: np.ndarray, params: CalibrationParams, - response_function: Optional[np.ndarray] = None) -> np.ndarray: - """ - Perform flux calibration on an astronomical image. - :param image: Input image (numpy array). - :param params: Calibration parameters. - :param response_function: Optional instrument response function (numpy array). - :return: Flux-calibrated and rescaled image. - """ - if response_function is not None: - image = instrument_response_correction(image, response_function) - - FLX2DN = compute_flx2dn(params) - calibrated_image = image / FLX2DN - calibrated_image = background_noise_correction(calibrated_image) - - # Rescale the image to the range [0, 1] - min_val = np.min(calibrated_image) - max_val = np.max(calibrated_image) - FLXRANGE = max_val - min_val - FLXMIN = min_val - rescaled_image = (calibrated_image - min_val) / FLXRANGE - - return rescaled_image, FLXMIN, FLXRANGE, FLX2DN - -def save_to_fits(image: np.ndarray, filename: str, FLXMIN: float, FLXRANGE: float, - FLX2DN: float, header_info: dict = {}) -> None: - """ - Save the calibrated image to a FITS file with necessary header information. - :param image: Calibrated image (numpy array). - :param filename: Output FITS file name. - :param FLXMIN: Minimum flux value used for rescaling. - :param FLXRANGE: Range of flux values used for rescaling. - :param FLX2DN: Flux conversion factor. - :param header_info: Dictionary of additional header information to include. - """ - hdu = fits.PrimaryHDU(image) - hdr = hdu.header - hdr['FLXMIN'] = FLXMIN - hdr['FLXRANGE'] = FLXRANGE - hdr['FLX2DN'] = FLX2DN - - # Add additional header information - for key, value in header_info.items(): - hdr[key] = value - - hdu.writeto(filename, overwrite=True) diff --git a/pysrc/image/fluxcalibration/core.py b/pysrc/image/fluxcalibration/core.py deleted file mode 100644 index af7773d5..00000000 --- a/pysrc/image/fluxcalibration/core.py +++ /dev/null @@ -1,15 +0,0 @@ -from dataclasses import dataclass -import numpy as np -from typing import Optional - -@dataclass -class CalibrationParams: - wavelength: float # Effective filter wavelength in nm - transmissivity: float # Filter transmissivity in the range (0,1) - filter_width: float # Filter bandwidth in nm - aperture: float # Telescope aperture diameter in mm - obstruction: float # Telescope central obstruction diameter in mm - exposure_time: float # Exposure time in seconds - extinction: float # Atmospheric extinction in the range [0,1) - gain: float # Sensor gain in e-/ADU - quantum_efficiency: float # Sensor quantum efficiency in the range (0,1) diff --git a/pysrc/image/fluxcalibration/utils.py b/pysrc/image/fluxcalibration/utils.py deleted file mode 100644 index b3c3739b..00000000 --- a/pysrc/image/fluxcalibration/utils.py +++ /dev/null @@ -1,41 +0,0 @@ -import numpy as np -from astropy.stats import sigma_clipped_stats - -def instrument_response_correction(image: np.ndarray, response_function: np.ndarray) -> np.ndarray: - """ - Apply instrument response correction to the image. - :param image: Input image (numpy array). - :param response_function: Instrument response function (numpy array of the same shape as the image). - :return: Corrected image. - """ - return image / response_function - -def background_noise_correction(image: np.ndarray) -> np.ndarray: - """ - Estimate and subtract the background noise from the image. - :param image: Input image (numpy array). - :return: Image with background noise subtracted. - """ - _, median, _ = sigma_clipped_stats(image, sigma=3.0) # Estimate background - return image - median - -def read_fits_header(file_path: str) -> dict: - """ - Reads the FITS header and returns the necessary calibration parameters. - :param file_path: Path to the FITS file. - :return: Dictionary containing calibration parameters. - """ - with fits.open(file_path) as hdul: - header = hdul[0].header - params = { - 'wavelength': header.get('WAVELEN', 550), # nm - 'transmissivity': header.get('TRANSMIS', 0.8), - 'filter_width': header.get('FILTWDTH', 100), # nm - 'aperture': header.get('APERTURE', 200), # mm - 'obstruction': header.get('OBSTRUCT', 50), # mm - 'exposure_time': header.get('EXPTIME', 60), # seconds - 'extinction': header.get('EXTINCT', 0.1), - 'gain': header.get('GAIN', 1.5), # e-/ADU - 'quantum_efficiency': header.get('QUANTEFF', 0.9), - } - return params diff --git a/pysrc/image/image_io/io.py b/pysrc/image/image_io/io.py deleted file mode 100644 index 0b857551..00000000 --- a/pysrc/image/image_io/io.py +++ /dev/null @@ -1,86 +0,0 @@ -import cv2 -import numpy as np -from dataclasses import dataclass -from typing import Tuple - - -@dataclass -class ImageProcessor: - """ - A class that provides various image processing functionalities. - """ - - @staticmethod - def save_image(filepath: str, image: np.ndarray) -> None: - """ - Save an image to a specified file path. - - Parameters: - - filepath: str, The file path where the image should be saved. - - image: np.ndarray, The image data to be saved. - """ - cv2.imwrite(filepath, image) - - @staticmethod - def display_image(window_name: str, image: np.ndarray) -> None: - """ - Display an image in a new window. - - Parameters: - - window_name: str, The name of the window where the image will be displayed. - - image: np.ndarray, The image data to be displayed. - """ - cv2.imshow(window_name, image) - cv2.waitKey(0) - cv2.destroyAllWindows() - - @staticmethod - def load_image(filepath: str, color_mode: int = cv2.IMREAD_COLOR) -> np.ndarray: - """ - Load an image from a specified file path. - - Parameters: - - filepath: str, The file path from where the image will be loaded. - - color_mode: int, The color mode in which to load the image (default: cv2.IMREAD_COLOR). - - Returns: - - np.ndarray, The loaded image data. - """ - return cv2.imread(filepath, color_mode) - - @staticmethod - def resize_image(image: np.ndarray, size: Tuple[int, int]) -> np.ndarray: - """ - Resize an image to a new size. - - Parameters: - - image: np.ndarray, The image data to be resized. - - size: Tuple[int, int], The new size as (width, height). - - Returns: - - np.ndarray, The resized image data. - """ - return cv2.resize(image, size) - - @staticmethod - def crop_image(image: np.ndarray, start: Tuple[int, int], size: Tuple[int, int]) -> np.ndarray: - """ - Crop a region from an image. - - Parameters: - - image: np.ndarray, The image data to be cropped. - - start: Tuple[int, int], The top-left corner of the crop region as (x, y). - - size: Tuple[int, int], The size of the crop region as (width, height). - - Returns: - - np.ndarray, The cropped image data. - """ - x, y = start - w, h = size - return image[y:y+h, x:x+w] - - -# Defining the public API of the module -__all__ = [ - 'ImageProcessor' -] diff --git a/pysrc/image/raw/raw.py b/pysrc/image/raw/raw.py deleted file mode 100644 index eb159edc..00000000 --- a/pysrc/image/raw/raw.py +++ /dev/null @@ -1,90 +0,0 @@ -import rawpy -import cv2 -import numpy as np - -class RawImageProcessor: - def __init__(self, raw_path): - """初始化并读取RAW图像""" - self.raw_path = raw_path - self.raw = rawpy.imread(raw_path) - self.rgb_image = self.raw.postprocess( - gamma=(1.0, 1.0), - no_auto_bright=True, - use_camera_wb=True, - output_bps=8 - ) - # 转换为OpenCV使用的BGR格式 - self.bgr_image = cv2.cvtColor(self.rgb_image, cv2.COLOR_RGB2BGR) - - def adjust_contrast(self, alpha=1.0): - """调整图像对比度""" - self.bgr_image = cv2.convertScaleAbs(self.bgr_image, alpha=alpha) - - def adjust_brightness(self, beta=0): - """调整图像亮度""" - self.bgr_image = cv2.convertScaleAbs(self.bgr_image, beta=beta) - - def apply_sharpening(self): - """应用图像锐化""" - kernel = np.array([[0, -1, 0], - [-1, 5,-1], - [0, -1, 0]]) - self.bgr_image = cv2.filter2D(self.bgr_image, -1, kernel) - - def apply_gamma_correction(self, gamma=1.0): - """应用Gamma校正""" - inv_gamma = 1.0 / gamma - table = np.array([((i / 255.0) ** inv_gamma) * 255 - for i in np.arange(0, 256)]).astype("uint8") - self.bgr_image = cv2.LUT(self.bgr_image, table) - - def save_image(self, output_path, file_format="png", jpeg_quality=90): - """保存图像为指定格式""" - if file_format.lower() == "jpg" or file_format.lower() == "jpeg": - cv2.imwrite(output_path, self.bgr_image, [cv2.IMWRITE_JPEG_QUALITY, jpeg_quality]) - else: - cv2.imwrite(output_path, self.bgr_image) - - def show_image(self, window_name="Image"): - """显示处理后的图像""" - cv2.imshow(window_name, self.bgr_image) - cv2.waitKey(0) - cv2.destroyAllWindows() - - def get_bgr_image(self): - """返回处理后的BGR图像""" - return self.bgr_image - - def reset(self): - """重置图像到最初的状态""" - self.bgr_image = cv2.cvtColor(self.rgb_image, cv2.COLOR_RGB2BGR) - -# 使用示例 -if __name__ == "__main__": - # 初始化RAW图像处理器 - processor = RawImageProcessor('path_to_your_image.raw') - - # 调整对比度 - processor.adjust_contrast(alpha=1.3) - - # 调整亮度 - processor.adjust_brightness(beta=20) - - # 应用锐化 - processor.apply_sharpening() - - # 应用Gamma校正 - processor.apply_gamma_correction(gamma=1.2) - - # 显示处理后的图像 - processor.show_image() - - # 保存处理后的图像 - processor.save_image('output_image.png') - - # 重置图像 - processor.reset() - - # 进行其他处理并保存为JPEG - processor.adjust_contrast(alpha=1.1) - processor.save_image('output_image.jpg', file_format="jpg", jpeg_quality=85) diff --git a/pysrc/image/resample/resample.py b/pysrc/image/resample/resample.py deleted file mode 100644 index 95481218..00000000 --- a/pysrc/image/resample/resample.py +++ /dev/null @@ -1,185 +0,0 @@ -import cv2 -import numpy as np -from PIL import Image -import os -from typing import Optional, Tuple, Literal - - -def resample_image(input_image_path: str, - output_image_path: str, - width: Optional[int] = None, - height: Optional[int] = None, - scale: Optional[float] = None, - resolution: Optional[Tuple[int, int]] = None, - interpolation: int = cv2.INTER_LINEAR, - preserve_aspect_ratio: bool = True, - crop_area: Optional[Tuple[int, int, int, int]] = None, - edge_detection: bool = False, - color_space: Literal['BGR', 'GRAY', 'HSV', 'RGB'] = 'BGR', - add_watermark: bool = False, - watermark_text: str = '', - watermark_position: Tuple[int, int] = (0, 0), - watermark_opacity: float = 0.5, - batch_mode: bool = False, - output_format: str = 'jpg', - brightness: float = 1.0, - contrast: float = 1.0, - sharpen: bool = False, - rotate_angle: Optional[float] = None): - """ - Resamples an image with given dimensions, scale, resolution, and additional processing options. - - :param input_image_path: Path to the input image (or directory in batch mode) - :param output_image_path: Path to save the resampled image(s) - :param width: Desired width in pixels - :param height: Desired height in pixels - :param scale: Scale factor for resizing (e.g., 0.5 for half size, 2.0 for double size) - :param resolution: Tuple of horizontal and vertical resolution (in dpi) - :param interpolation: Interpolation method (e.g., cv2.INTER_LINEAR, cv2.INTER_CUBIC, cv2.INTER_NEAREST) - :param preserve_aspect_ratio: Whether to preserve the aspect ratio of the original image - :param crop_area: Tuple defining the crop area (x, y, w, h) - :param edge_detection: Whether to apply edge detection before resizing - :param color_space: Color space to convert the image to (e.g., 'GRAY', 'HSV', 'RGB') - :param add_watermark: Whether to add a watermark to the image - :param watermark_text: The text to be used as a watermark - :param watermark_position: Position tuple (x, y) for the watermark - :param watermark_opacity: Opacity level for the watermark (0.0 to 1.0) - :param batch_mode: Whether to process multiple images in a directory - :param output_format: Output image format (e.g., 'jpg', 'png', 'tiff') - :param brightness: Brightness adjustment factor (1.0 = no change) - :param contrast: Contrast adjustment factor (1.0 = no change) - :param sharpen: Whether to apply sharpening to the image - :param rotate_angle: Angle to rotate the image (in degrees) - """ - - def adjust_brightness_contrast(image: np.ndarray, brightness: float = 1.0, contrast: float = 1.0) -> np.ndarray: - # Clip the pixel values to be in the valid range after adjustment - adjusted = cv2.convertScaleAbs( - image, alpha=contrast, beta=(brightness - 1.0) * 255) - return adjusted - - def add_text_watermark(image: np.ndarray, text: str, position: Tuple[int, int], opacity: float) -> np.ndarray: - overlay = image.copy() - output = image.copy() - font = cv2.FONT_HERSHEY_SIMPLEX - font_scale = 1 - thickness = 2 - text_size = cv2.getTextSize(text, font, font_scale, thickness)[0] - text_x = position[0] - text_y = position[1] + text_size[1] - cv2.putText(overlay, text, (text_x, text_y), font, - font_scale, (255, 255, 255), thickness) - # Combine original image with overlay - cv2.addWeighted(overlay, opacity, output, 1 - opacity, 0, output) - return output - - def sharpen_image(image: np.ndarray) -> np.ndarray: - kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]]) - sharpened = cv2.filter2D(image, -1, kernel) - return sharpened - - def process_image(image_path: str, output_path: str): - img = cv2.imread(image_path) - if img is None: - raise ValueError(f"Cannot load image from {image_path}") - - original_height, original_width = img.shape[:2] - - # Crop if needed - if crop_area: - x, y, w, h = crop_area - img = img[y:y+h, x:x+w] - - # Edge detection - if edge_detection: - img = cv2.Canny(img, 100, 200) - - # Convert color space if needed - # Only convert if image is not already grayscale - if color_space == 'GRAY' and len(img.shape) == 3: - img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) - # Only convert if image has 3 channels - elif color_space == 'HSV' and len(img.shape) == 3: - img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) - # Convert to RGB if required - elif color_space == 'RGB' and len(img.shape) == 3: - img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) - - # Calculate new dimensions - if scale: - new_width = int(original_width * scale) - new_height = int(original_height * scale) - else: - if width and height: - new_width = width - new_height = height - elif width: - new_width = width - new_height = int( - (width / original_width) * original_height) if preserve_aspect_ratio else height - elif height: - new_height = height - new_width = int((height / original_height) * - original_width) if preserve_aspect_ratio else width - else: - new_width, new_height = original_width, original_height - - # Perform resizing - resized_img = cv2.resize( - img, (new_width, new_height), interpolation=interpolation) - - # Adjust brightness and contrast - resized_img = adjust_brightness_contrast( - resized_img, brightness, contrast) - - # Apply sharpening if needed - if sharpen: - resized_img = sharpen_image(resized_img) - - # Rotate the image if needed - if rotate_angle: - center = (new_width // 2, new_height // 2) - rotation_matrix = cv2.getRotationMatrix2D( - center, rotate_angle, 1.0) - resized_img = cv2.warpAffine( - resized_img, rotation_matrix, (new_width, new_height)) - - # Add watermark if needed - if add_watermark: - resized_img = add_text_watermark( - resized_img, watermark_text, watermark_position, watermark_opacity) - - # Save the image - if resolution: - dpi_x, dpi_y = resolution - pil_img = Image.fromarray(cv2.cvtColor(resized_img, cv2.COLOR_BGR2RGB) if len( - resized_img.shape) == 3 else resized_img) - pil_img.save(output_path, dpi=(dpi_x, dpi_y), format=output_format) - else: - cv2.imwrite(output_path, resized_img) - - # Batch processing mode - if batch_mode: - if not os.path.isdir(input_image_path): - raise ValueError( - "In batch mode, input_image_path must be a directory") - if not os.path.exists(output_image_path): - os.makedirs(output_image_path) - for filename in os.listdir(input_image_path): - file_path = os.path.join(input_image_path, filename) - output_file_path = os.path.join( - output_image_path, f"{os.path.splitext(filename)[0]}.{output_format}") - process_image(file_path, output_file_path) - else: - process_image(input_image_path, output_image_path) - - -# Example usage: -input_path = 'star_image.png' -output_path = './output/star_image_processed.png' - -# Resize image, apply edge detection, adjust brightness/contrast, add watermark, sharpen, and rotate -resample_image(input_path, output_path, width=800, height=600, interpolation=cv2.INTER_CUBIC, resolution=(300, 300), - crop_area=(100, 100, 400, 400), edge_detection=True, color_space='GRAY', add_watermark=True, - watermark_text='Sample Watermark', watermark_position=(10, 10), watermark_opacity=0.7, - brightness=1.2, contrast=1.5, output_format='png', sharpen=True, rotate_angle=45) diff --git a/pysrc/image/star_detection/clustering.py b/pysrc/image/star_detection/clustering.py deleted file mode 100644 index 365b9db3..00000000 --- a/pysrc/image/star_detection/clustering.py +++ /dev/null @@ -1,32 +0,0 @@ -import numpy as np -from sklearn.cluster import DBSCAN -from typing import List, Tuple - -def cluster_stars(stars: List[Tuple[int, int]], dbscan_eps: float, dbscan_min_samples: int) -> List[Tuple[int, int]]: - """ - Cluster stars using the DBSCAN algorithm. - - Parameters: - - stars: List of star positions as (x, y) tuples. - - dbscan_eps: The maximum distance between two stars for them to be considered in the same neighborhood. - - dbscan_min_samples: The number of stars in a neighborhood for a point to be considered a core point. - - Returns: - - List of clustered star positions as (x, y) tuples. - """ - if len(stars) == 0: - return [] - - clustering = DBSCAN(eps=dbscan_eps, min_samples=dbscan_min_samples).fit(stars) - labels = clustering.labels_ - - unique_labels = set(labels) - clustered_stars = [] - for label in unique_labels: - if label == -1: # -1 indicates noise - continue - class_members = [stars[i] for i in range(len(stars)) if labels[i] == label] - centroid = np.mean(class_members, axis=0).astype(int) - clustered_stars.append(tuple(centroid)) - - return clustered_stars diff --git a/pysrc/image/star_detection/detection.py b/pysrc/image/star_detection/detection.py deleted file mode 100644 index e4a84298..00000000 --- a/pysrc/image/star_detection/detection.py +++ /dev/null @@ -1,84 +0,0 @@ -import cv2 -import numpy as np -from .preprocessing import apply_median_filter, wavelet_transform, inverse_wavelet_transform, binarize, detect_stars, background_subtraction -from typing import List, Tuple - -class StarDetectionConfig: - """ - Configuration class for star detection settings. - """ - def __init__(self, - median_filter_size: int = 3, - wavelet_levels: int = 4, - binarization_threshold: int = 30, - min_star_size: int = 10, - min_star_brightness: int = 20, - min_circularity: float = 0.7, - max_circularity: float = 1.3, - scales: List[float] = [1.0, 0.75, 0.5], - dbscan_eps: float = 10, - dbscan_min_samples: int = 2): - self.median_filter_size = median_filter_size - self.wavelet_levels = wavelet_levels - self.binarization_threshold = binarization_threshold - self.min_star_size = min_star_size - self.min_star_brightness = min_star_brightness - self.min_circularity = min_circularity - self.max_circularity = max_circularity - self.scales = scales - self.dbscan_eps = dbscan_eps - self.dbscan_min_samples = dbscan_min_samples - - -def multiscale_detect_stars(image: np.ndarray, config: StarDetectionConfig) -> List[Tuple[int, int]]: - """ - Detect stars in an image using multiscale analysis. - - Parameters: - - image: Grayscale input image as a numpy array. - - config: Configuration object containing detection settings. - - Returns: - - List of detected star positions as (x, y) tuples. - """ - all_stars = [] - for scale in config.scales: - resized_image = cv2.resize(image, None, fx=scale, fy=scale, interpolation=cv2.INTER_LINEAR) - filtered_image = apply_median_filter(resized_image, config) - pyramid = wavelet_transform(filtered_image, config.wavelet_levels) - background = pyramid[-1] - subtracted_image = background_subtraction(filtered_image, background) - pyramid = pyramid[:2] - processed_image = inverse_wavelet_transform(pyramid) - binary_image = binarize(processed_image, config) - _, star_properties = detect_stars(binary_image) - filtered_stars = filter_stars(star_properties, binary_image, config) - # Adjust star positions back to original scale - filtered_stars = [(int(x / scale), int(y / scale)) for (x, y) in filtered_stars] - all_stars.extend(filtered_stars) - return all_stars - -def filter_stars(star_properties: List[Tuple[Tuple[int, int], float, float]], binary_image: np.ndarray, config: StarDetectionConfig) -> List[Tuple[int, int]]: - """ - Filter detected stars based on shape, size, and brightness. - - Parameters: - - star_properties: List of tuples containing star properties (center, area, perimeter). - - binary_image: Binary image used for star detection. - - config: Configuration object containing filter settings. - - Returns: - - List of filtered star positions as (x, y) tuples. - """ - filtered_stars = [] - for (center, area, perimeter) in star_properties: - circularity = (4 * np.pi * area) / (perimeter ** 2) - mask = np.zeros_like(binary_image) - cv2.circle(mask, center, 5, 255, -1) - star_pixels = cv2.countNonZero(mask) - brightness = np.mean(binary_image[mask == 255]) - if (star_pixels > config.min_star_size and - brightness > config.min_star_brightness and - config.min_circularity <= circularity <= config.max_circularity): - filtered_stars.append(center) - return filtered_stars diff --git a/pysrc/image/star_detection/preprocessing.py b/pysrc/image/star_detection/preprocessing.py deleted file mode 100644 index 16753dbe..00000000 --- a/pysrc/image/star_detection/preprocessing.py +++ /dev/null @@ -1,179 +0,0 @@ -import cv2 -import numpy as np -from astropy.io import fits -from typing import List, Tuple - -def load_fits_image(file_path: str) -> np.ndarray: - """ - Load a FITS image from the specified file path. - - Parameters: - - file_path: Path to the FITS file. - - Returns: - - Image data as a numpy array. - """ - with fits.open(file_path) as hdul: - image_data = hdul[0].data - return image_data - -def preprocess_fits_image(image_data: np.ndarray) -> np.ndarray: - """ - Preprocess FITS image by normalizing to the 0-255 range. - - Parameters: - - image_data: Raw image data from the FITS file. - - Returns: - - Preprocessed image data as a numpy array. - """ - image_data = np.nan_to_num(image_data) - image_data = image_data.astype(np.float64) - image_data -= np.min(image_data) - image_data /= np.max(image_data) - image_data *= 255 - return image_data.astype(np.uint8) - -def load_image(file_path: str) -> np.ndarray: - """ - Load an image from the specified file path. Supports FITS and standard image formats. - - Parameters: - - file_path: Path to the image file. - - Returns: - - Loaded image as a numpy array. - """ - if file_path.endswith('.fits'): - image_data = load_fits_image(file_path) - if image_data.ndim == 2: - return preprocess_fits_image(image_data) - elif image_data.ndim == 3: - channels = [preprocess_fits_image(image_data[..., i]) for i in range(image_data.shape[2])] - return cv2.merge(channels) - else: - image = cv2.imread(file_path, cv2.IMREAD_UNCHANGED) - if image is None: - raise ValueError("Unable to load image file: {}".format(file_path)) - return image - -def apply_median_filter(image: np.ndarray, config) -> np.ndarray: - """ - Apply median filtering to the image. - - Parameters: - - image: Input image. - - config: Configuration object containing median filter settings. - - Returns: - - Filtered image. - """ - return cv2.medianBlur(image, config.median_filter_size) - -def wavelet_transform(image: np.ndarray, levels: int) -> List[np.ndarray]: - """ - Perform wavelet transform using a Laplacian pyramid. - - Parameters: - - image: Input image. - - levels: Number of levels in the wavelet transform. - - Returns: - - List of wavelet transformed images at each level. - """ - pyramid = [] - current_image = image.copy() - for _ in range(levels): - down = cv2.pyrDown(current_image) - up = cv2.pyrUp(down, current_image.shape[:2]) - - # Resize up to match the original image size - up = cv2.resize(up, (current_image.shape[1], current_image.shape[0])) - - # Calculate the difference to get the detail layer - layer = cv2.subtract(current_image, up) - pyramid.append(layer) - current_image = down - - pyramid.append(current_image) # Add the final low-resolution image - return pyramid - -def inverse_wavelet_transform(pyramid: List[np.ndarray]) -> np.ndarray: - """ - Reconstruct the image from its wavelet pyramid representation. - - Parameters: - - pyramid: List of wavelet transformed images at each level. - - Returns: - - Reconstructed image. - """ - image = pyramid.pop() - while pyramid: - up = cv2.pyrUp(image, pyramid[-1].shape[:2]) - - # Resize up to match the size of the current level - up = cv2.resize(up, (pyramid[-1].shape[1], pyramid[-1].shape[0])) - - # Add the detail layer to reconstruct the image - image = cv2.add(up, pyramid.pop()) - - return image - -def background_subtraction(image: np.ndarray, background: np.ndarray) -> np.ndarray: - """ - Subtract the background from the image using the provided background image. - - Parameters: - - image: Original image. - - background: Background image to subtract. - - Returns: - - Image with background subtracted. - """ - # Resize the background to match the original image size - background_resized = cv2.resize(background, (image.shape[1], image.shape[0])) - - # Subtract background and ensure no negative values - result = cv2.subtract(image, background_resized) - result[result < 0] = 0 - return result - -def binarize(image: np.ndarray, config) -> np.ndarray: - """ - Binarize the image using a fixed threshold. - - Parameters: - - image: Input image. - - config: Configuration object containing binarization settings. - - Returns: - - Binarized image. - """ - _, binary_image = cv2.threshold(image, config.binarization_threshold, 255, cv2.THRESH_BINARY) - return binary_image - -def detect_stars(binary_image: np.ndarray) -> Tuple[List[Tuple[int, int]], List[Tuple[Tuple[int, int], float, float]]]: - """ - Detect stars in a binary image by finding contours. - - Parameters: - - binary_image: Binarized image. - - Returns: - - Tuple containing a list of star centers and a list of star properties (center, area, perimeter). - """ - contours, _ = cv2.findContours(binary_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) - star_centers = [] - star_properties = [] - - for contour in contours: - M = cv2.moments(contour) - if M['m00'] != 0: - center = (int(M['m10'] / M['m00']), int(M['m01'] / M['m00'])) - star_centers.append(center) - area = cv2.contourArea(contour) - perimeter = cv2.arcLength(contour, True) - star_properties.append((center, area, perimeter)) - - return star_centers, star_properties diff --git a/pysrc/image/transformation/curve.py b/pysrc/image/transformation/curve.py deleted file mode 100644 index 8275158a..00000000 --- a/pysrc/image/transformation/curve.py +++ /dev/null @@ -1,154 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt -from scipy.interpolate import CubicSpline, Akima1DInterpolator - - -class CurvesTransformation: - def __init__(self, interpolation='akima'): - self.points = [] - self.interpolation = interpolation - self.curve = None - self.stored_curve = None - - def add_point(self, x, y): - self.points.append((x, y)) - self.points.sort() # Sort points by x value - self._update_curve() - - def remove_point(self, index): - if 0 <= index < len(self.points): - self.points.pop(index) - self._update_curve() - - def _update_curve(self): - if len(self.points) < 2: - self.curve = None - return - - x, y = zip(*self.points) - - if self.interpolation == 'cubic': - self.curve = CubicSpline(x, y) - elif self.interpolation == 'akima': - self.curve = Akima1DInterpolator(x, y) - elif self.interpolation == 'linear': - self.curve = lambda x_new: np.interp(x_new, x, y) - else: - raise ValueError("Unsupported interpolation method") - - def transform(self, image, channel=None): - if self.curve is None: - raise ValueError("No valid curve defined") - - if len(image.shape) == 2: # Grayscale image - transformed_image = self.curve(image) - elif len(image.shape) == 3: # RGB image - if channel is None: - raise ValueError("Channel must be specified for color images") - transformed_image = image.copy() - transformed_image[:, :, channel] = self.curve(image[:, :, channel]) - else: - raise ValueError("Unsupported image format") - - transformed_image = np.clip(transformed_image, 0, 1) - return transformed_image - - def plot_curve(self): - if self.curve is None: - print("No curve to plot") - return - - x_vals = np.linspace(0, 1, 100) - y_vals = self.curve(x_vals) - - plt.plot(x_vals, y_vals, label=f'Interpolation: {self.interpolation}') - plt.scatter(*zip(*self.points), color='red') - plt.title('Curves Transformation') - plt.xlabel('Input') - plt.ylabel('Output') - plt.grid(True) - plt.legend() - plt.show() - - def store_curve(self): - self.stored_curve = self.points.copy() - print("Curve stored.") - - def restore_curve(self): - if self.stored_curve: - self.points = self.stored_curve.copy() - self._update_curve() - print("Curve restored.") - else: - print("No stored curve to restore.") - - def invert_curve(self): - if self.curve is None: - print("No curve to invert") - return - - self.points = [(x, 1 - y) for x, y in self.points] - self._update_curve() - print("Curve inverted.") - - def reset_curve(self): - self.points = [(0, 0), (1, 1)] - self._update_curve() - print("Curve reset to default.") - - def pixel_readout(self, x): - if self.curve is None: - print("No curve defined") - return None - return self.curve(x) - - -# Example Usage -if __name__ == "__main__": - # Create a CurvesTransformation object - curve_transform = CurvesTransformation(interpolation='akima') - - # Add points to the curve - curve_transform.add_point(0.0, 0.0) - curve_transform.add_point(0.3, 0.5) - curve_transform.add_point(0.7, 0.8) - curve_transform.add_point(1.0, 1.0) - - # Plot the curve - curve_transform.plot_curve() - - # Store the curve - curve_transform.store_curve() - - # Invert the curve - curve_transform.invert_curve() - curve_transform.plot_curve() - - # Restore the original curve - curve_transform.restore_curve() - curve_transform.plot_curve() - - # Reset the curve to default - curve_transform.reset_curve() - curve_transform.plot_curve() - - # Generate a test image - test_image = np.linspace(0, 1, 256).reshape(16, 16) - - # Apply the transformation - transformed_image = curve_transform.transform(test_image) - - # Plot original and transformed images - plt.figure(figsize=(8, 4)) - plt.subplot(1, 2, 1) - plt.title("Original Image") - plt.imshow(test_image, cmap='gray') - - plt.subplot(1, 2, 2) - plt.title("Transformed Image") - plt.imshow(transformed_image, cmap='gray') - plt.show() - - # Pixel readout - readout_value = curve_transform.pixel_readout(0.5) - print(f"Pixel readout at x=0.5: {readout_value}") diff --git a/pysrc/image/transformation/histogram.py b/pysrc/image/transformation/histogram.py deleted file mode 100644 index 80f8f390..00000000 --- a/pysrc/image/transformation/histogram.py +++ /dev/null @@ -1,121 +0,0 @@ -import cv2 -import numpy as np -import matplotlib.pyplot as plt - -# 1. 直方图计算 - - -def calculate_histogram(image, channel=0): - histogram = cv2.calcHist([image], [channel], None, [256], [0, 256]) - return histogram - -# 2. 显示直方图 - - -def display_histogram(histogram, title="Histogram"): - plt.plot(histogram) - plt.title(title) - plt.xlabel('Pixel Intensity') - plt.ylabel('Frequency') - plt.show() - -# 3. 直方图变换功能 - - -def apply_histogram_transformation(image, shadows_clip=0.0, highlights_clip=1.0, midtones_balance=0.5, lower_bound=-1.0, upper_bound=2.0): - # 归一化 - normalized_image = image.astype(np.float32) / 255.0 - - # 阴影和高光裁剪 - clipped_image = np.clip( - (normalized_image - shadows_clip) / (highlights_clip - shadows_clip), 0, 1) - - # 中间调平衡 - def mtf(x): return (x**midtones_balance) / \ - ((x**midtones_balance + (1-x)**midtones_balance)**(1/midtones_balance)) - transformed_image = mtf(clipped_image) - - # 动态范围扩展 - expanded_image = np.clip( - (transformed_image - lower_bound) / (upper_bound - lower_bound), 0, 1) - - # 重新缩放至[0, 255] - output_image = (expanded_image * 255).astype(np.uint8) - return output_image - -# 4. 自动裁剪功能 - - -def auto_clip(image, clip_percent=0.01): - # 计算累积分布函数 (CDF) - hist, bins = np.histogram(image.flatten(), 256, [0, 256]) - cdf = hist.cumsum() - - # 计算裁剪点 - total_pixels = image.size - lower_clip = np.searchsorted(cdf, total_pixels * clip_percent) - upper_clip = np.searchsorted(cdf, total_pixels * (1 - clip_percent)) - - # 应用裁剪 - auto_clipped_image = apply_histogram_transformation( - image, shadows_clip=lower_clip/255.0, highlights_clip=upper_clip/255.0) - - return auto_clipped_image - -# 5. 显示原始RGB直方图 - - -def display_rgb_histogram(image): - color = ('b', 'g', 'r') - for i, col in enumerate(color): - hist = calculate_histogram(image, channel=i) - plt.plot(hist, color=col) - plt.title('RGB Histogram') - plt.xlabel('Pixel Intensity') - plt.ylabel('Frequency') - plt.show() - -# 6. 实时预览功能(简单模拟) - - -def real_time_preview(image, transformation_function, **kwargs): - preview_image = transformation_function(image, **kwargs) - cv2.imshow('Real-Time Preview', preview_image) - - -# 主程序入口 -if __name__ == "__main__": - # 加载图像 - image = cv2.imread('image.jpg') - - # 转换为灰度图像 - grayscale_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) - - # 显示原始图像和直方图 - cv2.imshow('Original Image', image) - histogram = calculate_histogram(grayscale_image) - display_histogram(histogram, title="Original Grayscale Histogram") - - # 显示RGB直方图 - display_rgb_histogram(image) - - # 应用直方图变换 - transformed_image = apply_histogram_transformation( - grayscale_image, shadows_clip=0.1, highlights_clip=0.9, midtones_balance=0.4, lower_bound=-0.5, upper_bound=1.5) - cv2.imshow('Transformed Image', transformed_image) - - # 显示变换后的直方图 - transformed_histogram = calculate_histogram(transformed_image) - display_histogram(transformed_histogram, - title="Transformed Grayscale Histogram") - - # 应用自动裁剪 - auto_clipped_image = auto_clip(grayscale_image, clip_percent=0.01) - cv2.imshow('Auto Clipped Image', auto_clipped_image) - - # 实时预览模拟 - real_time_preview(grayscale_image, apply_histogram_transformation, - shadows_clip=0.05, highlights_clip=0.95, midtones_balance=0.5) - - cv2.waitKey(0) - cv2.destroyAllWindows() diff --git a/pysrc/main.py b/pysrc/main.py deleted file mode 100644 index 8398c8ef..00000000 --- a/pysrc/main.py +++ /dev/null @@ -1,197 +0,0 @@ -import asyncio -from contextlib import asynccontextmanager -from datetime import datetime -from fastapi import FastAPI, WebSocket, WebSocketDisconnect, HTTPException, Depends, UploadFile, File, APIRouter -from fastapi.middleware.cors import CORSMiddleware -from fastapi.security import HTTPBasic, HTTPBasicCredentials -from loguru import logger -from config.config import config -from app.connection_manager import ConnectionManager -from app.plugin_manager import load_plugins, start_plugin_watcher, stop_plugin_watcher, update_plugin, install_plugin, get_plugin_info, check_plugin_dependencies - -from router import websocket - -# 配置 loguru 日志系统 -logger.add("server.log", level="DEBUG", format="{time} {level} {message}", rotation="10 MB") - -# 使用 lifespan 事件处理器替代 startup 和 shutdown 事件 -@asynccontextmanager -async def lifespan(app: FastAPI): - """ - FastAPI lifespan event for startup and shutdown. - """ - # Startup - logger.info("Starting up the application") - load_plugins(config.plugin_directory, app) # 同步加载插件 - - - observer = start_plugin_watcher(config.plugin_directory, app) - app.state.plugin_observer = observer - logger.info("Plugin watcher started") - - # Shutdown - yield # The point between startup and shutdown - - logger.info("Shutting down the application") - observer = app.state.plugin_observer - if observer: - stop_plugin_watcher(observer) - logger.info("Plugin watcher stopped") - -app = FastAPI(lifespan=lifespan) -router = APIRouter() - -# Enable CORS for all domains -origins = ["*"] -app.add_middleware( - CORSMiddleware, - allow_origins=origins, - allow_credentials=True, - allow_methods=["*"], - allow_headers=["*"], -) - -# Initialize connection manager -manager = ConnectionManager(max_connections=config.max_connections) - -# Security setup -security = HTTPBasic() - -def get_current_username(credentials: HTTPBasicCredentials = Depends(security)): - """ - Basic authentication check. - """ - correct_username = credentials.username == config.auth_username - correct_password = credentials.password == config.auth_password - if not (correct_username and correct_password): - logger.warning(f"Unauthorized access attempt with username: {credentials.username}") - raise HTTPException( - status_code=HTTP_403_FORBIDDEN, - detail="Incorrect username or password", - headers={"WWW-Authenticate": "Basic"}, - ) - logger.info(f"Authenticated user: {credentials.username}") - return credentials.username - -# Heartbeat function to check if clients are still connected -async def ping(): - """ - Regularly sends a ping to all clients to check if they are still connected. - """ - while True: - for client_id, connection in list(manager.active_connections.items()): - try: - await connection.send_text("ping") - except Exception: - manager.disconnect(client_id) - await manager.broadcast(f'{{"type": "Server_msg", "message": "Client {client_id} disconnected"}}') - logger.warning(f"Client {client_id} did not respond to a ping, terminating.") - await asyncio.sleep(config.broadcast_interval) - -@router.post("/upload/") -async def upload_file(file: UploadFile = File(...), username: str = Depends(get_current_username)): - """ - Endpoint for handling file uploads. - """ - file_location = f"/dev/shm/{file.filename}" - try: - with open(file_location, "wb+") as file_object: - file_object.write(file.file.read()) - logger.info(f"File '{file.filename}' saved at '{file_location}'") - await manager.broadcast(f'{{"type": "File_msg", "message": "{file.filename} uploaded"}}') - return {"info": f"file '{file.filename}' saved at '{file_location}'"} - except Exception as e: - logger.error(f"Error saving file {file.filename}: {e}") - raise HTTPException(status_code=500, detail="File upload failed") - -# Register plugin management endpoints -@app.get("/plugins/") -async def list_plugins(username: str = Depends(get_current_username)): - """ - Lists all currently loaded plugins. - """ - from app.plugin_manager import list_plugins - plugins = list_plugins() - logger.info(f"Loaded plugins: {plugins}") - return {"loaded_plugins": plugins} - -@app.get("/plugins/info/") -async def get_plugin_info_endpoint(plugin_name: str, username: str = Depends(get_current_username)): - """ - Endpoint to get detailed information about a plugin. - """ - plugin_info = get_plugin_info(plugin_name) - logger.info(f"Retrieved info for plugin '{plugin_name}': {plugin_info}") - return plugin_info - -@app.post("/plugins/load/") -async def load_plugin_endpoint(plugin_name: str, username: str = Depends(get_current_username)): - """ - Endpoint to load a plugin dynamically. - """ - from app.plugin_manager import load_plugin - load_plugin(config.plugin_directory, plugin_name, app) - logger.info(f"Plugin '{plugin_name}' loaded") - return {"status": f"Plugin {plugin_name} loaded"} - -@app.post("/plugins/unload/") -async def unload_plugin_endpoint(plugin_name: str, username: str = Depends(get_current_username)): - """ - Endpoint to unload a plugin dynamically. - """ - from app.plugin_manager import unload_plugin - unload_plugin(plugin_name, app) - logger.info(f"Plugin '{plugin_name}' unloaded") - return {"status": f"Plugin {plugin_name} unloaded"} - -@app.post("/plugins/reload/") -async def reload_plugin_endpoint(plugin_name: str, username: str = Depends(get_current_username)): - """ - Endpoint to reload a plugin dynamically. - """ - from app.plugin_manager import reload_plugin - reload_plugin(plugin_name, config.plugin_directory, app) - logger.info(f"Plugin '{plugin_name}' reloaded") - return {"status": f"Plugin {plugin_name} reloaded"} - -@app.post("/plugins/update/") -async def update_plugin_endpoint(plugin_name: str, username: str = Depends(get_current_username)): - """ - Endpoint to update a plugin dynamically. - """ - update_plugin(plugin_name, app) - logger.info(f"Plugin '{plugin_name}' updated") - return {"status": f"Plugin {plugin_name} updated"} - -@app.post("/plugins/install/") -async def install_plugin_endpoint(plugin_name: str, repository: str, username: str = Depends(get_current_username)): - """ - Endpoint to install a plugin from an external repository. - """ - install_plugin(plugin_name, repository, app) - logger.info(f"Plugin '{plugin_name}' installed from {repository}") - return {"status": f"Plugin {plugin_name} installed from {repository}"} - -@app.get("/plugins/dependencies/") -async def check_plugin_dependencies_endpoint(plugin_name: str, username: str = Depends(get_current_username)): - """ - Endpoint to check the dependencies of a plugin. - """ - missing_dependencies = check_plugin_dependencies(plugin_name) - if missing_dependencies: - logger.warning(f"Plugin '{plugin_name}' is missing dependencies: {missing_dependencies}") - return {"plugin": plugin_name, "missing_dependencies": missing_dependencies} - else: - logger.info(f"Plugin '{plugin_name}' has all dependencies satisfied") - return {"plugin": plugin_name, "status": "All dependencies satisfied"} - - - -# Include router -app.include_router(router) - -if __name__ == "__main__": - startup_time = datetime.now() # Track server startup time - logger.info(f"Server starting at {startup_time}") - import uvicorn - uvicorn.run(app, host="0.0.0.0", port=8600) diff --git a/pysrc/plugins/backup_plugin.py b/pysrc/plugins/backup_plugin.py deleted file mode 100644 index 93867e6e..00000000 --- a/pysrc/plugins/backup_plugin.py +++ /dev/null @@ -1,164 +0,0 @@ -import os -import shutil -import zipfile -from datetime import datetime, timedelta -from fastapi import APIRouter, HTTPException -from loguru import logger - -# 配置loguru日志 -logger.add("backup_manager.log", level="DEBUG", - format="{time} {level} {message}", rotation="10 MB") - -router = APIRouter() - -BACKUP_DIR = "./backups/" - - -@router.post("/backup/create/") -async def create_backup(file_path: str, compress: bool = False): - """ - Creates a backup of a specified file, with an option to compress it. - """ - logger.debug( - f"Received request to create backup for file: {file_path}, compress={compress}") - - if not os.path.exists(file_path): - logger.error(f"File not found: {file_path}") - raise HTTPException(status_code=404, detail="File not found") - - if not os.path.exists(BACKUP_DIR): - os.makedirs(BACKUP_DIR) - logger.info(f"Backup directory created at {BACKUP_DIR}") - - timestamp = datetime.now().strftime("%Y%m%d%H%M%S") - backup_file_name = f"{os.path.basename(file_path)}_{timestamp}" - backup_path = os.path.join(BACKUP_DIR, backup_file_name) - - try: - if compress: - backup_path += ".zip" - with zipfile.ZipFile(backup_path, 'w') as zipf: - zipf.write(file_path, os.path.basename(file_path)) - logger.info( - f"File {file_path} backed up and compressed to {backup_path}") - else: - shutil.copy(file_path, backup_path) - logger.info(f"File {file_path} backed up to {backup_path}") - - backup_size = os.path.getsize(backup_path) - logger.debug( - f"Backup created successfully with size: {backup_size} bytes") - - return {"status": "success", "backup_path": backup_path, "size": backup_size} - - except Exception as e: - logger.error(f"Failed to create backup: {e}") - raise HTTPException(status_code=500, detail="Failed to create backup") - - -@router.post("/backup/restore/") -async def restore_backup(file_name: str, decompress: bool = False, restore_dir: str = "./"): - """ - Restores a file from its backup, with an option to decompress it if it's a zip file. - """ - logger.debug( - f"Received request to restore backup: {file_name}, decompress={decompress}, restore_dir={restore_dir}") - - backup_path = os.path.join(BACKUP_DIR, file_name) - if not os.path.exists(backup_path): - logger.error(f"Backup not found: {backup_path}") - raise HTTPException(status_code=404, detail="Backup not found") - - if not os.path.exists(restore_dir): - os.makedirs(restore_dir) - logger.info(f"Restore directory created at {restore_dir}") - - original_path = os.path.join(restore_dir, file_name.split('_')[0]) - - try: - if decompress and backup_path.endswith(".zip"): - with zipfile.ZipFile(backup_path, 'r') as zipf: - zipf.extractall(restore_dir) - restored_files = zipf.namelist() - logger.info( - f"Backup {backup_path} decompressed and restored to {restore_dir}") - return {"status": "success", "restored_files": restored_files} - else: - shutil.copy(backup_path, original_path) - logger.info(f"Backup {backup_path} restored to {original_path}") - return {"status": "success", "restored_path": original_path} - - except Exception as e: - logger.error(f"Failed to restore backup: {e}") - raise HTTPException(status_code=500, detail="Failed to restore backup") - - -@router.get("/backup/list/") -async def list_backups(): - """ - Lists all backup files. - """ - logger.debug("Received request to list all backups") - - if not os.path.exists(BACKUP_DIR): - logger.info("No backups found, backup directory does not exist.") - return {"backups": []} - - backups = os.listdir(BACKUP_DIR) - logger.info(f"Found {len(backups)} backups") - return {"backups": backups} - - -@router.delete("/backup/delete/") -async def delete_backup(file_name: str): - """ - Deletes a specific backup file. - """ - logger.debug(f"Received request to delete backup: {file_name}") - - backup_path = os.path.join(BACKUP_DIR, file_name) - if not os.path.exists(backup_path): - logger.error(f"Backup not found: {backup_path}") - raise HTTPException(status_code=404, detail="Backup not found") - - try: - os.remove(backup_path) - logger.info(f"Backup {file_name} deleted successfully") - return {"status": "success", "message": f"Backup '{file_name}' deleted"} - - except Exception as e: - logger.error(f"Failed to delete backup: {e}") - raise HTTPException(status_code=500, detail="Failed to delete backup") - - -@router.post("/backup/cleanup/") -async def cleanup_backups(max_backups: int = 5, days: int = 30): - """ - Cleans up old backups, keeping only the latest `max_backups` or backups within `days` days. - """ - logger.debug( - f"Received request to clean up backups, max_backups={max_backups}, days={days}") - - if not os.path.exists(BACKUP_DIR): - logger.info("No backups to clean up, backup directory does not exist.") - return {"status": "success", "message": "No backups to clean up"} - - backups = os.listdir(BACKUP_DIR) - backups.sort(key=lambda x: os.path.getctime(os.path.join(BACKUP_DIR, x))) - - cutoff_time = datetime.now() - timedelta(days=days) - old_backups = [b for b in backups if datetime.fromtimestamp( - os.path.getctime(os.path.join(BACKUP_DIR, b))) < cutoff_time] - - backups_to_delete = old_backups[:- - max_backups] if len(backups) > max_backups else [] - - for backup in backups_to_delete: - try: - os.remove(os.path.join(BACKUP_DIR, backup)) - logger.info(f"Deleted old backup: {backup}") - except Exception as e: - logger.error(f"Failed to delete old backup {backup}: {e}") - - logger.info(f"Cleanup complete, deleted {len(backups_to_delete)} backups") - return {"status": "success", "deleted_backups": backups_to_delete} diff --git a/pysrc/plugins/caching_plugin.py b/pysrc/plugins/caching_plugin.py deleted file mode 100644 index 2a9f75b2..00000000 --- a/pysrc/plugins/caching_plugin.py +++ /dev/null @@ -1,121 +0,0 @@ -from fastapi import APIRouter, HTTPException -from cachetools import LRUCache, cached -from cachetools.keys import hashkey -from typing import Optional, Dict, Any -from loguru import logger - -# 配置 loguru 日志系统 -logger.add("caching_plugin.log", level="DEBUG", - format="{time} {level} {message}", rotation="10 MB") - -router = APIRouter() -cache = LRUCache(maxsize=100) # LRU 缓存,最大容量为100 - - -@router.get("/cache/get") -async def get_cache(key: str) -> Optional[str]: - """ - Retrieves a value from the cache. - """ - logger.debug(f"Retrieving value for key: {key}") - value = cache.get(key) - if value is not None: - logger.info(f"Cache hit for key: {key}") - else: - logger.warning(f"Cache miss for key: {key}") - return value - - -@router.post("/cache/set") -async def set_cache(key: str, value: str): - """ - Sets a value in the cache. - """ - logger.debug(f"Setting value for key: {key}, value: {value}") - cache[key] = value - logger.info(f"Value set in cache for key: {key}") - return {"status": "success", "key": key, "value": value} - - -@router.delete("/cache/delete") -async def delete_cache(key: str): - """ - Deletes a value from the cache. - """ - logger.debug(f"Deleting value for key: {key}") - if key in cache: - del cache[key] - logger.info(f"Value deleted from cache for key: {key}") - return {"status": "success", "key": key} - else: - logger.warning(f"Attempted to delete non-existent key: {key}") - return {"status": "error", "message": "Key not found"} - - -@router.get("/cache/stats") -async def cache_stats() -> Dict[str, Any]: - """ - Returns cache statistics. - """ - logger.debug("Fetching cache statistics") - stats = { - "maxsize": cache.maxsize, - "currsize": cache.currsize, - "hits": getattr(cache, 'hits', 0), - "misses": getattr(cache, 'misses', 0) - } - logger.info(f"Cache statistics: {stats}") - return stats - - -@router.post("/cache/clear") -async def clear_cache(): - """ - Clears all values from the cache. - """ - logger.debug("Clearing all values from cache") - cache.clear() - logger.info("Cache cleared successfully") - return {"status": "success", "message": "Cache cleared"} - - -def cache_hit_miss_decorator(func): - """ - Decorator to track cache hits and misses. - """ - cache.hits = 0 - cache.misses = 0 - - @cached(cache=cache, key=lambda *args, **kwargs: hashkey(*args, **kwargs)) - async def wrapped(*args, **kwargs): - key = hashkey(*args, **kwargs) - if key in cache: - cache.hits += 1 - logger.info(f"Cache hit for key: {key}") - else: - cache.misses += 1 - logger.info(f"Cache miss for key: {key}") - return await func(*args, **kwargs) - - return wrapped - -# Example decorated function - - -@cache_hit_miss_decorator -async def example_cached_function(key: str) -> str: - """ - Example function that uses the cache with hit/miss tracking. - """ - return f"Data for {key}" - - -@router.get("/cache/example") -async def get_example(key: str): - """ - Retrieves data using the example cached function. - """ - logger.debug( - f"Retrieving data using example_cached_function for key: {key}") - result = await example_cached_function(key) - return {"key": key, "data": result} diff --git a/pysrc/plugins/cli_tool_plugin.py b/pysrc/plugins/cli_tool_plugin.py deleted file mode 100644 index 058dfc59..00000000 --- a/pysrc/plugins/cli_tool_plugin.py +++ /dev/null @@ -1,261 +0,0 @@ -import subprocess -from fastapi import APIRouter, HTTPException, Query, Body, BackgroundTasks -from typing import Optional, List, Dict, Any -from loguru import logger -import os -import time -import json - -router = APIRouter() - -# 插件配置:定义不同CLI工具的路径和默认命令 -CLI_TOOLS = { - "tool1": { - "path": "/usr/bin/tool1", # 替换为实际的命令行工具路径 - "default_command": "status" - }, - "tool2": { - "path": "/usr/bin/tool2", # 替换为实际的命令行工具路径 - "default_command": "info" - } -} -MAX_RETRIES = 3 # 定义命令执行的最大重试次数 - -# 用于保存命令历史记录 -command_history: List[Dict[str, Any]] = [] - -# 命令别名和权限 -command_aliases = { - "status": "status", - "info": "status", - "start": "run", - "stop": "terminate" -} - -command_permissions = { - "status": ["admin", "user"], - "run": ["admin"], - "terminate": ["admin"] -} - -# 用于保存正在执行的命令 -running_commands: Dict[str, subprocess.Popen] = {} - - -@router.get("/cli-tool/") -async def execute_cli_tool( - tool_name: str = Query(..., description="Name of the CLI tool to use"), - command: Optional[str] = None, - timeout: Optional[int] = Query( - default=30, description="Command execution timeout in seconds"), - retries: Optional[int] = Query( - default=0, description="Number of retries on failure"), - env_vars: Optional[Dict[str, str]] = Body( - default=None, description="Environment variables for the command"), - output_format: Optional[str] = Query( - default="text", description="Output format: 'text' or 'json'"), - user_role: Optional[str] = Query( - default="user", description="User role for permission check"), -): - """ - Endpoint to execute a CLI tool with a given command. - - Args: - tool_name (str): The name of the CLI tool to use. - command (str): The command to execute with the CLI tool. - timeout (int): The execution timeout in seconds. - retries (int): Number of retries on failure. - env_vars (dict): Custom environment variables to use during command execution. - output_format (str): The format of the command output ('text' or 'json'). - user_role (str): The role of the user executing the command. - - Returns: - dict: A dictionary containing the CLI tool's output or error message. - """ - if tool_name not in CLI_TOOLS: - raise HTTPException(status_code=404, detail="CLI tool not found") - - tool_path = CLI_TOOLS[tool_name]["path"] - default_command = CLI_TOOLS[tool_name]["default_command"] - command = command or default_command - - # 检查命令别名 - command = command_aliases.get(command, command) - - # 检查命令权限 - if command not in command_permissions or user_role not in command_permissions[command]: - raise HTTPException( - status_code=403, detail="Permission denied for this command") - - retries = min(retries, MAX_RETRIES) - env = os.environ.copy() - if env_vars: - env.update(env_vars) - logger.debug(f"Custom environment variables: {env_vars}") - - # 构建完整的命令 - full_command = [tool_path] + command.split() - - for attempt in range(retries + 1): - try: - logger.info(f"Executing command: {' '.join( - full_command)}, attempt {attempt + 1}") - - # 使用 subprocess.Popen 运行命令行工具 - process = subprocess.Popen( - full_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, env=env) - running_commands[command] = process - - try: - stdout, stderr = process.communicate(timeout=timeout) - except subprocess.TimeoutExpired: - process.kill() - stdout, stderr = process.communicate() - raise subprocess.TimeoutExpired( - cmd=full_command, timeout=timeout) - - if process.returncode != 0: - raise subprocess.CalledProcessError( - returncode=process.returncode, cmd=full_command, output=stdout, stderr=stderr) - - logger.info(f"Command executed successfully: { - ' '.join(full_command)}") - - # 保存命令历史记录 - command_history.append({ - "tool_name": tool_name, - "command": ' '.join(full_command), - "output": stdout, - "success": True, - "attempt": attempt + 1, - "timestamp": time.time() - }) - - # 格式化输出 - if output_format == "json": - return {"output": json.loads(stdout)} - else: - return {"output": stdout} - - except subprocess.TimeoutExpired: - logger.error(f"Command '{' '.join(full_command)}' timed out after { - timeout} seconds, attempt {attempt + 1}") - command_history.append({ - "tool_name": tool_name, - "command": ' '.join(full_command), - "output": "Timeout", - "success": False, - "attempt": attempt + 1, - "timestamp": time.time() - }) - if attempt >= retries: - raise HTTPException( - status_code=504, detail="Command execution timed out") - - except subprocess.CalledProcessError as e: - logger.error(f"Command failed with error: { - e}, attempt {attempt + 1}") - command_history.append({ - "tool_name": tool_name, - "command": ' '.join(full_command), - "output": e.stderr, - "success": False, - "attempt": attempt + 1, - "timestamp": time.time() - }) - if attempt >= retries: - raise HTTPException( - status_code=500, detail=f"Command execution failed: {e.stderr}") - - except FileNotFoundError: - logger.error(f"CLI tool not found at path: {tool_path}") - command_history.append({ - "tool_name": tool_name, - "command": ' '.join(full_command), - "output": "CLI tool not found", - "success": False, - "attempt": attempt + 1, - "timestamp": time.time() - }) - raise HTTPException(status_code=404, detail="CLI tool not found") - - finally: - if command in running_commands: - del running_commands[command] - - -@router.get("/cli-tool/history") -async def get_command_history(tool_name: Optional[str] = None, command: Optional[str] = None): - """ - Retrieve the history of executed commands and their outputs. - - Args: - tool_name (str): Optional tool name to filter history by. - command (str): Optional command to filter history by. - - Returns: - dict: A dictionary containing the history of executed commands. - """ - logger.debug("Fetching command history") - filtered_history = command_history - if tool_name: - filtered_history = [ - entry for entry in filtered_history if entry["tool_name"] == tool_name] - if command: - filtered_history = [ - entry for entry in filtered_history if command in entry["command"]] - logger.info(f"Found {len(filtered_history)} entries for tool: { - tool_name}, command: {command}") - return {"history": filtered_history} - - -@router.delete("/cli-tool/history") -async def clear_command_history(): - """ - Clears the history of executed commands. - - Returns: - dict: A success message confirming history deletion. - """ - global command_history - logger.debug("Clearing command history") - command_history = [] - logger.info("Command history cleared") - return {"status": "success", "message": "Command history cleared"} - - -@router.delete("/cli-tool/cancel") -async def cancel_command(command: str): - """ - Cancels a running command. - - Args: - command (str): The command to cancel. - - Returns: - dict: A success message confirming command cancellation. - """ - if command in running_commands: - process = running_commands[command] - process.terminate() - logger.info(f"Cancelled command: {command}") - return {"status": "success", "message": f"Cancelled command: {command}"} - else: - logger.warning(f"Command not found or not running: {command}") - raise HTTPException( - status_code=404, detail="Command not found or not running") - - -@router.get("/cli-tool/tools") -async def get_cli_tools(): - """ - Retrieve the list of available CLI tools. - - Returns: - dict: A dictionary containing the available CLI tools. - """ - logger.debug("Fetching CLI tools list") - tools_list = [{"name": name, "path": info["path"], - "default_command": info["default_command"]} for name, info in CLI_TOOLS.items()] - logger.info(f"Available CLI tools: {tools_list}") - return {"tools": tools_list} diff --git a/pysrc/plugins/logging_plugin.py b/pysrc/plugins/logging_plugin.py deleted file mode 100644 index e924dcc0..00000000 --- a/pysrc/plugins/logging_plugin.py +++ /dev/null @@ -1,99 +0,0 @@ -from fastapi import APIRouter, Query, HTTPException -from typing import Optional, List -from loguru import logger -from datetime import datetime, timedelta - -router = APIRouter() - -# 配置 loguru 日志系统 -logger.add("server.log", level="INFO", - format="{time} {level} {message}", rotation="10 MB") - - -@router.get("/logs/search") -async def search_logs( - level: Optional[str] = Query( - None, description="Log level to filter by (e.g., INFO, ERROR)"), - keyword: Optional[str] = Query( - None, description="Keyword to search for in logs"), - start_date: Optional[str] = Query( - None, description="Start date (YYYY-MM-DD) for filtering logs"), - end_date: Optional[str] = Query( - None, description="End date (YYYY-MM-DD) for filtering logs") -): - """ - Searches logs for a specific level, keyword, and/or date range. - """ - logger.debug( - f"Searching logs with level={level}, keyword={keyword}, start_date={start_date}, end_date={end_date}") - - try: - with open("server.log", "r") as f: - lines = f.readlines() - - filtered_logs = [] - for line in lines: - log_time_str = line.split(" ")[0] - log_time = datetime.fromisoformat(log_time_str) - - if start_date: - start_datetime = datetime.fromisoformat(start_date) - if log_time < start_datetime: - continue - - if end_date: - end_datetime = datetime.fromisoformat( - end_date) + timedelta(days=1) - if log_time >= end_datetime: - continue - - if (level is None or level.upper() in line) and (keyword is None or keyword in line): - filtered_logs.append(line) - - logger.info(f"Found {len(filtered_logs)} matching log entries") - return {"logs": filtered_logs} - - except Exception as e: - logger.error(f"Error while searching logs: {e}") - raise HTTPException(status_code=500, detail="Failed to search logs") - - -@router.get("/logs/list") -async def list_log_files(): - """ - Lists all log files in the current directory. - """ - from os import listdir - from os.path import isfile, join - - logger.debug("Listing all log files") - log_files = [f for f in listdir('.') if isfile( - join('.', f)) and f.endswith('.log')] - - logger.info(f"Found {len(log_files)} log files") - return {"log_files": log_files} - - -@router.delete("/logs/delete") -async def delete_log_file(file_name: str): - """ - Deletes a specific log file. - """ - from os import remove - from os.path import exists - - logger.debug(f"Request to delete log file: {file_name}") - - if not exists(file_name): - logger.error(f"Log file not found: {file_name}") - raise HTTPException(status_code=404, detail="Log file not found") - - try: - remove(file_name) - logger.info(f"Log file deleted: {file_name}") - return {"status": "success", "message": f"Log file '{file_name}' deleted"} - - except Exception as e: - logger.error(f"Failed to delete log file: {e}") - raise HTTPException( - status_code=500, detail="Failed to delete log file") diff --git a/pysrc/plugins/monitoring_plugin.py b/pysrc/plugins/monitoring_plugin.py deleted file mode 100644 index 21e20974..00000000 --- a/pysrc/plugins/monitoring_plugin.py +++ /dev/null @@ -1,254 +0,0 @@ -import os -import psutil -import time -from fastapi import APIRouter, HTTPException, Query -from typing import List, Dict -from loguru import logger - -# 配置 loguru 日志系统 -logger.add("monitoring.log", level="DEBUG", - format="{time} {level} {message}", rotation="10 MB") - -router = APIRouter() - - -class MonitoringException(Exception): - def __init__(self, message: str, status_code: int = 500): - self.message = message - self.status_code = status_code - super().__init__(self.message) - - -@router.get("/monitoring/status") -async def get_server_status(): - """ - Returns the current server status including CPU, memory, and disk usage. - """ - try: - status = { - "cpu_usage": psutil.cpu_percent(interval=1), - "memory_usage": psutil.virtual_memory().percent, - "disk_usage": psutil.disk_usage('/').percent, - "uptime": time.time() - psutil.boot_time() - } - logger.info(f"Retrieved server status: {status}") - return status - except Exception as e: - logger.error(f"Failed to retrieve server status: {e}") - raise MonitoringException("Failed to retrieve server status") - - -@router.get("/monitoring/requests") -async def get_request_statistics(): - """ - Returns statistics about the number of requests handled. - """ - # Example implementation, replace with actual statistics gathering - try: - stats = { - "total_requests": 100, - "requests_per_second": 2, - "successful_requests": 95, - "failed_requests": 5, - "average_response_time_ms": 200 - } - logger.info(f"Retrieved request statistics: {stats}") - return stats - except Exception as e: - logger.error(f"Failed to retrieve request statistics: {e}") - raise MonitoringException("Failed to retrieve request statistics") - - -@router.get("/monitoring/network") -async def get_network_statistics(): - """ - Returns current network statistics including bytes sent/received and connection count. - """ - try: - net_io = psutil.net_io_counters() - connections = psutil.net_connections() - network_stats = { - "bytes_sent": net_io.bytes_sent, - "bytes_received": net_io.bytes_recv, - "active_connections": len(connections) - } - logger.info(f"Retrieved network statistics: {network_stats}") - return network_stats - except Exception as e: - logger.error(f"Failed to retrieve network statistics: {e}") - raise MonitoringException("Failed to retrieve network statistics") - - -@router.get("/monitoring/processes") -async def get_top_processes(limit: int = 5): - """ - Returns a list of the top N processes by CPU usage. - """ - try: - processes = [] - for proc in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_percent']): - processes.append(proc.info) - - # 按CPU使用率排序,并返回前N个进程 - processes.sort(key=lambda x: x['cpu_percent'], reverse=True) - top_processes = processes[:limit] - logger.info( - f"Retrieved top {limit} processes by CPU usage: {top_processes}") - return {"top_processes": top_processes} - except Exception as e: - logger.error(f"Failed to retrieve top processes: {e}") - raise MonitoringException("Failed to retrieve top processes") - - -@router.get("/monitoring/temperature") -async def get_temperature(): - """ - Returns the current system temperatures (if available). - """ - try: - temperatures = psutil.sensors_temperatures() - if not temperatures: - logger.warning("Temperature sensors not available") - raise MonitoringException( - "Temperature sensors not available", status_code=404) - logger.info(f"Retrieved system temperatures: {temperatures}") - return temperatures - except MonitoringException as e: - raise e - except Exception as e: - logger.error(f"Failed to retrieve system temperatures: {e}") - raise MonitoringException("Failed to retrieve system temperatures") - - -@router.get("/monitoring/logs") -async def get_recent_logs(lines: int = 10): - """ - Returns the last N lines from the log file. - """ - log_file_path = "/var/log/syslog" # Replace with the actual log file path - try: - with open(log_file_path, 'r') as file: - logs = file.readlines() - recent_logs = logs[-lines:] - logger.info(f"Retrieved last {lines} lines from log file") - return {"recent_logs": recent_logs} - except FileNotFoundError: - logger.error(f"Log file not found: {log_file_path}") - raise MonitoringException("Log file not found", status_code=404) - except Exception as e: - logger.error(f"Failed to retrieve recent logs: {e}") - raise MonitoringException("Failed to retrieve recent logs") - - -@router.get("/monitoring/io") -async def get_io_statistics(): - """ - Returns I/O statistics including read/write bytes. - """ - try: - io_stats = psutil.disk_io_counters() - io_data = { - "read_bytes": io_stats.read_bytes, - "write_bytes": io_stats.write_bytes - } - logger.info(f"Retrieved I/O statistics: {io_data}") - return io_data - except Exception as e: - logger.error(f"Failed to retrieve I/O statistics: {e}") - raise MonitoringException("Failed to retrieve I/O statistics") - - -@router.get("/monitoring/load") -async def get_load_avg(): - """ - Returns the system load averages over the last 1, 5, and 15 minutes. - """ - try: - load_avg = psutil.getloadavg() - load_data = { - "1_min": load_avg[0], - "5_min": load_avg[1], - "15_min": load_avg[2] - } - logger.info(f"Retrieved system load averages: {load_data}") - return load_data - except Exception as e: - logger.error(f"Failed to retrieve system load averages: {e}") - raise MonitoringException("Failed to retrieve system load averages") - - -@router.get("/monitoring/threads") -async def get_thread_statistics(limit: int = 5): - """ - Returns a list of the top N processes by thread count. - """ - try: - processes = [] - for proc in psutil.process_iter(['pid', 'name', 'num_threads']): - processes.append(proc.info) - - # 按线程数排序,并返回前N个进程 - processes.sort(key=lambda x: x['num_threads'], reverse=True) - top_threads = processes[:limit] - logger.info( - f"Retrieved top {limit} processes by thread count: {top_threads}") - return {"top_processes_by_threads": top_threads} - except Exception as e: - logger.error(f"Failed to retrieve top processes by thread count: {e}") - raise MonitoringException( - "Failed to retrieve top processes by thread count") - - -@router.get("/monitoring/uptime") -async def get_system_uptime(): - """ - Returns the system uptime. - """ - try: - uptime = time.time() - psutil.boot_time() - logger.info(f"Retrieved system uptime: {uptime}") - return {"uptime": uptime} - except Exception as e: - logger.error(f"Failed to retrieve system uptime: {e}") - raise MonitoringException("Failed to retrieve system uptime") - - -@router.get("/monitoring/users") -async def get_system_users(): - """ - Returns the list of users currently logged into the system. - """ - try: - users = psutil.users() - user_info = [{"name": user.name, "terminal": user.terminal, - "host": user.host, "started": user.started} for user in users] - logger.info(f"Retrieved system users: {user_info}") - return {"users": user_info} - except Exception as e: - logger.error(f"Failed to retrieve system users: {e}") - raise MonitoringException("Failed to retrieve system users") - - -@router.get("/monitoring/battery") -async def get_battery_status(): - """ - Returns the current battery status (if available). - """ - try: - battery = psutil.sensors_battery() - if not battery: - logger.warning("Battery information not available") - raise MonitoringException( - "Battery information not available", status_code=404) - battery_info = { - "percent": battery.percent, - "secsleft": battery.secsleft, - "power_plugged": battery.power_plugged - } - logger.info(f"Retrieved battery status: {battery_info}") - return battery_info - except MonitoringException as e: - raise e - except Exception as e: - logger.error(f"Failed to retrieve battery status: {e}") - raise MonitoringException("Failed to retrieve battery status") diff --git a/pysrc/plugins/rate_limiting_plugin.py b/pysrc/plugins/rate_limiting_plugin.py deleted file mode 100644 index d542055c..00000000 --- a/pysrc/plugins/rate_limiting_plugin.py +++ /dev/null @@ -1,39 +0,0 @@ -# plugins/rate_limiting_plugin.py - -from fastapi import FastAPI, HTTPException, Request -from time import time -from collections import defaultdict -from starlette.middleware.base import BaseHTTPMiddleware - -# 使用简单的字典来跟踪请求时间戳 -request_times = defaultdict(list) -RATE_LIMIT = 10 # 每分钟最大请求数 -TIME_WINDOW = 60 # 时间窗口,单位:秒 - -class RateLimitingMiddleware(BaseHTTPMiddleware): - """ - Middleware to check rate limit for incoming requests. - """ - async def dispatch(self, request: Request, call_next): - client_ip = request.client.host - current_time = time() - - # 过滤超过时间窗口的请求 - request_times[client_ip] = [ - timestamp for timestamp in request_times[client_ip] - if timestamp > current_time - TIME_WINDOW - ] - - if len(request_times[client_ip]) >= RATE_LIMIT: - raise HTTPException(status_code=429, detail="Rate limit exceeded") - - request_times[client_ip].append(current_time) - response = await call_next(request) - return response - -# Then, you apply this middleware to the FastAPI app instance in your main application file. - -app = FastAPI() - -# Apply the rate limiting middleware -app.add_middleware(RateLimitingMiddleware) diff --git a/pysrc/plugins/security_plugin.py b/pysrc/plugins/security_plugin.py deleted file mode 100644 index f5ba4ce3..00000000 --- a/pysrc/plugins/security_plugin.py +++ /dev/null @@ -1,82 +0,0 @@ -from fastapi import FastAPI, APIRouter, HTTPException, Request, Response -from hashlib import sha256 -from time import time -from starlette.middleware.base import BaseHTTPMiddleware -from collections import defaultdict -import logging - -app = FastAPI() -router = APIRouter() - -SECRET_KEY = "your_secret_key" -REQUEST_LIMIT = 100 # 每分钟允许的最大请求数 -SIGNATURE_EXPIRATION = 300 # 签名有效期(秒) -IP_BLACKLIST = {"192.168.1.10", "10.0.0.1"} # 示例黑名单 - -# 存储IP地址的请求计数和时间戳 -request_counts = defaultdict(lambda: {"count": 0, "start_time": time()}) - -# 设置日志记录 -logging.basicConfig(level=logging.INFO) -logger = logging.getLogger(__name__) - -async def verify_signature(request: Request): - """ - Verifies the request signature. - """ - signature = request.headers.get("X-Signature") - timestamp = request.headers.get("X-Timestamp") - data = await request.body() - - if not signature or not timestamp: - raise HTTPException(status_code=400, detail="Missing signature or timestamp") - - if abs(time() - int(timestamp)) > SIGNATURE_EXPIRATION: - raise HTTPException(status_code=403, detail="Signature expired") - - expected_signature = sha256((SECRET_KEY + timestamp + data.decode()).encode()).hexdigest() - if expected_signature != signature: - raise HTTPException(status_code=403, detail="Invalid signature") - - -async def rate_limiter(request: Request): - """ - Rate limits incoming requests based on IP address. - """ - client_ip = request.client.host - if client_ip in IP_BLACKLIST: - raise HTTPException(status_code=403, detail="Forbidden IP address") - - current_time = time() - request_info = request_counts[client_ip] - - # Reset count every minute - if current_time - request_info["start_time"] > 60: - request_counts[client_ip] = {"count": 1, "start_time": current_time} - else: - request_info["count"] += 1 - - if request_info["count"] > REQUEST_LIMIT: - raise HTTPException(status_code=429, detail="Too many requests") - - -class SecurityMiddleware(BaseHTTPMiddleware): - async def dispatch(self, request: Request, call_next): - """ - Middleware to enhance security for incoming requests. - """ - try: - await rate_limiter(request) # Check rate limits - await verify_signature(request) # Verify request signature - except HTTPException as e: - return Response(content=str(e.detail), status_code=e.status_code) - - # Log the request details - logger.info(f"Request from {request.client.host} to {request.url.path} at {time()}") - - response = await call_next(request) - return response - - -# Add the middleware to the FastAPI app -app.add_middleware(SecurityMiddleware) diff --git a/pysrc/router/websocket.py b/pysrc/router/websocket.py deleted file mode 100644 index ee8db87f..00000000 --- a/pysrc/router/websocket.py +++ /dev/null @@ -1,97 +0,0 @@ -from fastapi import APIRouter, WebSocket, WebSocketDisconnect, Depends -from app.connection_manager import ConnectionManager -from app.dependence import get_current_username -from app.command_dispatcher import CommandDispatcher -from loguru import logger -import json -import asyncio -from typing import Dict, Any -from datetime import datetime - -router = APIRouter() -manager = ConnectionManager() -command_dispatcher = CommandDispatcher() - - -@router.websocket("/ws") -async def websocket_endpoint(websocket: WebSocket, username: str = Depends(get_current_username)): - client_id = await manager.connect(websocket) - await manager.broadcast(json.dumps({"type": "Server_msg", "message": f"Client {client_id} connected"})) - - try: - # Start a background task for handling heartbeats - heartbeat_task = asyncio.create_task( - handle_heartbeat(client_id, websocket)) - - while True: - data = await websocket.receive_text() - await process_message(client_id, data) - except WebSocketDisconnect: - await handle_disconnect(client_id, "Client disconnected") - except Exception as e: - logger.error(f"Unexpected error with client {client_id}: {e}") - await handle_disconnect(client_id, f"Client disconnected due to error: {str(e)}") - finally: - heartbeat_task.cancel() - - -async def process_message(client_id: str, data: str): - logger.info(f"Received message from {client_id}: {data}") - try: - message = json.loads(data) - if isinstance(message, dict) and "command" in message: - response = await command_dispatcher.dispatch(message["command"], message.get("params", {})) - await manager.send_personal_message(json.dumps(response), client_id) - else: - await manager.broadcast(data) - except json.JSONDecodeError: - logger.warning(f"Received invalid JSON from client {client_id}") - await manager.send_personal_message(json.dumps({"error": "Invalid JSON"}), client_id) - - -async def handle_disconnect(client_id: str, message: str): - manager.disconnect(client_id) - await manager.broadcast(json.dumps({"type": "Server_msg", "message": message})) - - -async def handle_heartbeat(client_id: str, websocket: WebSocket): - while True: - try: - await asyncio.sleep(30) # Send heartbeat every 30 seconds - await websocket.send_text(json.dumps({"type": "heartbeat"})) - except Exception as e: - logger.error(f"Heartbeat failed for client {client_id}: {e}") - break - -# Register commands - - -@command_dispatcher.register("echo") -async def echo_command(params: Dict[str, Any]) -> Dict[str, Any]: - return {"result": params.get("message", "No message provided")} - - -@command_dispatcher.register("get_active_clients") -async def get_active_clients_command(params: Dict[str, Any]) -> Dict[str, Any]: - return {"result": len(manager.active_connections)} - - -@command_dispatcher.register("get_server_time") -async def get_server_time_command(params: Dict[str, Any]) -> Dict[str, Any]: - return {"result": datetime.utcnow().isoformat()} - - -@command_dispatcher.register("broadcast_message") -async def broadcast_message_command(params: Dict[str, Any]) -> Dict[str, Any]: - message = params.get("message", "") - await manager.broadcast(json.dumps({"type": "broadcast", "message": message})) - return {"result": "Message broadcasted"} - - -@command_dispatcher.register("get_client_status") -async def get_client_status_command(params: Dict[str, Any]) -> Dict[str, Any]: - client_id = params.get("client_id") - if client_id in manager.active_connections: - return {"result": "Client is connected"} - else: - return {"result": "Client is not connected"} diff --git a/pysrc/target/calc_alt.py b/pysrc/target/calc_alt.py deleted file mode 100644 index 61f2b2f3..00000000 --- a/pysrc/target/calc_alt.py +++ /dev/null @@ -1,271 +0,0 @@ -from astropy.coordinates import EarthLocation, AltAz, SkyCoord -import datetime -from astroplan import Observer, FixedTarget, moon_illumination -from astropy.time import Time -import astropy.units as u -import numpy as np -from dataclasses import dataclass -from loguru import logger - - -@dataclass -class ObservationResult: - altitude: float - azimuth: float - highest_altitude: float | None - available_shoot_time: float | None - is_above_horizon: bool - - -def calculate_current_alt(observation_start_time: datetime.datetime, observer_location: EarthLocation, ra: float, dec: float) -> ObservationResult: - """ - Calculate the current altitude and azimuth of a celestial object. - - :param observation_start_time: The start time of the observation. - :param observer_location: The location of the observer on Earth. - :param ra: Right Ascension of the celestial object in degrees. - :param dec: Declination of the celestial object in degrees. - :return: An ObservationResult containing the altitude, azimuth, highest altitude, available shoot time, and whether the object is above the horizon. - """ - logger.debug( - f"Calculating current altitude and azimuth for RA: {ra}, Dec: {dec} at {observation_start_time}") - - try: - # Create a SkyCoord object for the celestial object - sky_obj = SkyCoord(ra, dec, unit='deg', frame='icrs') - observation_time_astropy = Time(observation_start_time) - altaz_frame = AltAz(obstime=observation_time_astropy, - location=observer_location) - sky_obj_altaz = sky_obj.transform_to(altaz_frame) - - # Check if the object is above the horizon - is_above_horizon = sky_obj_altaz.alt > 0 * u.deg - - # Calculate the highest altitude and available shoot time - highest_alt = calculate_highest_alt( - observation_start_time, observer_location, ra, dec) - available_shoot_time = calculate_available_shoot_time( - observation_start_time, observer_location, ra, dec) - - logger.info( - f"Calculated altitude: {sky_obj_altaz.alt.value}°, azimuth: {sky_obj_altaz.az.value}°, highest altitude: {highest_alt}, available shoot time: {available_shoot_time} hours, is above horizon: {bool(is_above_horizon)}") - return ObservationResult( - altitude=sky_obj_altaz.alt.value, - azimuth=sky_obj_altaz.az.value, - highest_altitude=highest_alt, - available_shoot_time=available_shoot_time, - is_above_horizon=bool(is_above_horizon) - ) - except Exception as e: - logger.error(f"Error in calculating current altitude: {e}") - return ObservationResult(altitude=None, azimuth=None, highest_altitude=None, available_shoot_time=None, is_above_horizon=False) - - -def calculate_highest_alt(observation_start_time: datetime.datetime, observer_location: EarthLocation, ra: float, dec: float) -> float | None: - """ - Calculate the highest altitude of a celestial object during the night. - - :param observation_start_time: The start time of the observation. - :param observer_location: The location of the observer on Earth. - :param ra: Right Ascension of the celestial object in degrees. - :param dec: Declination of the celestial object in degrees. - :return: The highest altitude in degrees, or None if the object is not observable. - """ - logger.debug( - f"Calculating highest altitude for RA: {ra}, Dec: {dec} during the night of {observation_start_time}") - - try: - target = FixedTarget(coord=SkyCoord( - ra, dec, unit='deg', frame='icrs'), name="Target") - observer = Observer(location=observer_location) - observation_time = Time(observation_start_time) - - # Calculate the beginning and end of the night - begin_night = observer.twilight_evening_astronomical( - observation_time, which='nearest') - end_night = observer.twilight_morning_astronomical( - observation_time, which='next') - - if begin_night < end_night: - # Calculate the time of the object's meridian transit (highest point in the sky) - midnight = observer.target_meridian_transit_time( - observation_time, target, which='nearest') - - if begin_night < midnight < end_night: - max_altitude = observer.altaz(midnight, target).alt - else: - nighttime_altitudes = [observer.altaz(time, target).alt for time in [ - begin_night, end_night]] - max_altitude = max(nighttime_altitudes) - logger.info(f"Calculated highest altitude: {max_altitude.value}°") - return max_altitude.value - else: - logger.warning("The celestial object is not observable tonight.") - return None - except Exception as e: - logger.error(f"Error in calculating highest altitude: {e}") - return None - - -def calculate_available_shoot_time(observation_start_time: datetime.datetime, observer_location: EarthLocation, ra: float, dec: float) -> float | None: - """ - Calculate the available shooting time for a celestial object during the night. - - :param observation_start_time: The start time of the observation. - :param observer_location: The location of the observer on Earth. - :param ra: Right Ascension of the celestial object in degrees. - :param dec: Declination of the celestial object in degrees. - :return: The available shooting time in hours, or None if the object is not observable. - """ - logger.debug( - f"Calculating available shooting time for RA: {ra}, Dec: {dec} during the night of {observation_start_time}") - - try: - target = FixedTarget(coord=SkyCoord( - ra, dec, unit=u.deg), name="Target") - observer = Observer(location=observer_location) - observation_time = Time(observation_start_time) - begin_of_night = observer.twilight_evening_astronomical( - observation_time, which='nearest') - end_of_night = observer.twilight_morning_astronomical( - observation_time, which='next') - - step_size = 15 # minutes - delta_t = end_of_night - begin_of_night - if delta_t.sec <= 0: - logger.warning( - "Invalid time period: Begin of night is after the end of night.") - return None - - times = begin_of_night + delta_t * \ - np.arange(0, 1, step_size * 60.0 / delta_t.sec) - altitudes = observer.altaz(times, target).alt - - # Determine the times when the object is above 50 degrees altitude - observable_time_indices = altitudes > 50 * u.deg - observable_times = times[observable_time_indices] - - observable_time_estimate = len(observable_times) * step_size / 60 - logger.info( - f"Calculated available shooting time: {observable_time_estimate} hours") - return observable_time_estimate - except Exception as e: - logger.error(f"Error in calculating available shooting time: {e}") - return None - - -def calculate_moon_phase(observation_time: datetime.datetime) -> float: - """ - Calculate the moon phase as a percentage of illumination. - - :param observation_time: The time of the observation. - :return: The moon phase as a percentage, or -1 if an error occurs. - """ - logger.debug(f"Calculating moon phase for {observation_time}") - - try: - moon_phase = moon_illumination(Time(observation_time)) - logger.info(f"Calculated moon phase: {moon_phase * 100:.2f}%") - return moon_phase * 100 # Convert to percentage - except Exception as e: - logger.error(f"Error in calculating moon phase: {e}") - return -1 - - -def evaluate_observation_conditions(observer_location: EarthLocation, observation_time: datetime.datetime, ra: float, dec: float) -> dict: - """ - Evaluate the observation conditions for a celestial object. - - :param observer_location: The location of the observer on Earth. - :param observation_time: The time of the observation. - :param ra: Right Ascension of the celestial object in degrees. - :param dec: Declination of the celestial object in degrees. - :return: A dictionary containing the current altitude, azimuth, highest altitude, available shoot time, whether the object is above the horizon, moon phase, and an overall score. - """ - logger.debug( - f"Evaluating observation conditions for RA: {ra}, Dec: {dec} at {observation_time}") - - try: - result = calculate_current_alt( - observation_time, observer_location, ra, dec) - moon_phase_percent = calculate_moon_phase(observation_time) - - # Initialize score - score = 100 - - # Adjust score based on altitude - if result.altitude is not None and result.altitude < 30: - score -= 20 # Lower score if altitude is less than 30 degrees - - # Adjust score based on moon phase - if moon_phase_percent > 50: - score -= 30 # Lower score if the moon is more than 50% illuminated - - # Ensure the score is not negative - score = max(score, 0) - - logger.info(f"Evaluation complete with score: {score}") - return { - "current_altitude": result.altitude, - "current_azimuth": result.azimuth, - "highest_altitude": result.highest_altitude, - "available_shoot_time": result.available_shoot_time, - "is_above_horizon": result.is_above_horizon, - "moon_phase": moon_phase_percent, - "overall_score": score - } - except Exception as e: - logger.error(f"Error in evaluating observation conditions: {e}") - return {} - - -def plan_multiple_observations(observer_location: EarthLocation, start_time: datetime.datetime, ra_dec_list: list, days: int = 1) -> dict: - """ - Plan observations for multiple celestial objects over a specified number of days. - - :param observer_location: The location of the observer on Earth. - :param start_time: The start time of the observation period. - :param ra_dec_list: A list of tuples containing the Right Ascension and Declination of the celestial objects. - :param days: The number of days over which to plan the observations. - :return: A dictionary containing the observation schedule. - """ - logger.debug( - f"Planning observations for multiple objects over {days} days starting from {start_time}") - - schedule = {} - try: - for day in range(days): - current_time = start_time + datetime.timedelta(days=day) - for ra, dec in ra_dec_list: - key = f"{ra}_{dec}_{current_time.date()}" - schedule[key] = evaluate_observation_conditions( - observer_location, current_time, ra, dec) - logger.info("Multiple observation planning completed.") - return schedule - except Exception as e: - logger.error(f"Error in planning multiple observations: {e}") - return {} - - -# Example usage: -if __name__ == "__main__": - try: - location = EarthLocation( - lat=34.0522*u.deg, lon=-118.2437*u.deg, height=71*u.m) - observation_time = datetime.datetime.now() - ra, dec = 10.684, 41.269 # Example coordinates (RA, Dec in degrees) - - result = calculate_current_alt(observation_time, location, ra, dec) - print( - f"Current Altitude: {result.altitude} degrees, Azimuth: {result.azimuth} degrees") - print(f"Highest Altitude: {result.highest_altitude} degrees") - print(f"Available Shooting Time: {result.available_shoot_time} hours") - print(f"Is Above Horizon: {result.is_above_horizon}") - - # Plan observations for the next 3 days - ra_dec_list = [(10.684, 41.269), (83.822, -5.391)] - schedule = plan_multiple_observations( - location, observation_time, ra_dec_list, days=3) - print(schedule) - except Exception as e: - logger.error(f"Error in main execution: {e}") diff --git a/pysrc/target/calc_fov.py b/pysrc/target/calc_fov.py deleted file mode 100644 index ff251b75..00000000 --- a/pysrc/target/calc_fov.py +++ /dev/null @@ -1,153 +0,0 @@ -import numpy as np -from loguru import logger - - -def setup_logging(): - """Set up the loguru logging configuration to log both to console and to a file.""" - logger.add("fov_calculation.log", level="DEBUG", - format="{time} {level} {message}", rotation="10 MB") - logger.info("Logging setup complete.") - - -def ra_dec2fixed_xyz(ra: float, dec: float) -> np.ndarray: - """ - Convert RA/DEC to fixed XYZ coordinates in the celestial coordinate system. - - Args: - ra: Right ascension in degrees. - dec: Declination in degrees. - - Returns: - A numpy array representing the [x, y, z] coordinates. - """ - ra_rad = np.radians(ra) - dec_rad = np.radians(dec) - - x = np.cos(ra_rad) * np.cos(dec_rad) - y = np.sin(ra_rad) * np.cos(dec_rad) - z = np.sin(dec_rad) - - logger.debug(f"RA: {ra}°, Dec: {dec}° -> X: {x}, Y: {y}, Z: {z}") - - return np.array([x, y, z]) - - -def fixed_xyz2ra_dec(vector: np.ndarray) -> tuple[float, float]: - """ - Convert fixed XYZ coordinates to RA/DEC. - - Args: - vector: A numpy array with the [x, y, z] coordinates. - - Returns: - A tuple containing RA and DEC in degrees. - """ - x, y, z = vector - - ra = np.arctan2(y, x) - ra = np.degrees(ra) - - r = np.sqrt(x**2 + y**2) - dec = np.arctan2(z, r) - dec = np.degrees(dec) - - logger.debug(f"X: {x}, Y: {y}, Z: {z} -> RA: {ra}°, Dec: {dec}°") - - return ra, dec - - -def calc_fov_points(x_pixels: int, x_pixel_size: float, y_pixels: int, y_pixel_size: float, focal_length: int, - target_ra: float, target_dec: float, camera_rotation: float) -> tuple[tuple[float, float], - tuple[float, - float], - tuple[float, - float], - tuple[float, float]]: - """ - Calculate the field of view (FOV) points in RA/DEC coordinates for a camera given its parameters. - - Args: - x_pixels: Number of pixels in the x direction. - x_pixel_size: Size of each pixel in the x direction in micrometers. - y_pixels: Number of pixels in the y direction. - y_pixel_size: Size of each pixel in the y direction in micrometers. - focal_length: Focal length of the camera in millimeters. - target_ra: Target right ascension in degrees. - target_dec: Target declination in degrees. - camera_rotation: Rotation of the camera in degrees. - - Returns: - A tuple containing four tuples, each representing the RA/DEC coordinates of a corner of the FOV. - """ - if focal_length <= 0: - raise ValueError("Focal length must be a positive value.") - - logger.info(f"Calculating FOV points for target RA: {target_ra}°, Dec: {target_dec}°, " - f"Camera rotation: {camera_rotation}°, Focal length: {focal_length}mm") - - # Convert pixel sizes to millimeters - x_length = x_pixels * x_pixel_size / 1000 - y_length = y_pixels * y_pixel_size / 1000 - logger.debug(f"Sensor size: {x_length}mm x {y_length}mm") - - # Calculate FOV angles - FOV_x = np.degrees(np.arctan(x_length / (2 * focal_length)) * 2) - FOV_y = np.degrees(np.arctan(y_length / (2 * focal_length)) * 2) - logger.debug(f"FOV angles: FOV_x = {FOV_x}°, FOV_y = {FOV_y}°") - - FOV_x = np.radians(FOV_x) - FOV_y = np.radians(FOV_y) - - # Define corner points in the camera's field of view - A = np.array([1, np.tan(FOV_x / 2), np.tan(FOV_y / 2)]).reshape([3, 1]) - B = np.array([1, -np.tan(FOV_x / 2), np.tan(FOV_y / 2)]).reshape([3, 1]) - C = np.array([1, -np.tan(FOV_x / 2), -np.tan(FOV_y / 2)]).reshape([3, 1]) - D = np.array([1, np.tan(FOV_x / 2), -np.tan(FOV_y / 2)]).reshape([3, 1]) - - # Convert target RA/DEC and rotation to radians - RA = np.radians(target_ra) - DEC = np.radians(target_dec) - THETA = np.radians(camera_rotation) - - # Rotation matrices - Rx = np.array([[1, 0, 0], - [0, np.cos(THETA), -np.sin(THETA)], - [0, np.sin(THETA), np.cos(THETA)]]) - - Ry = np.array([[np.cos(DEC), 0, np.sin(DEC)], - [0, 1, 0], - [-np.sin(DEC), 0, np.cos(DEC)]]) - - Rz = np.array([[np.cos(RA), -np.sin(RA), 0], - [np.sin(RA), np.cos(RA), 0], - [0, 0, 1]]) - - # Combined rotation matrix - R = Rz @ Ry @ Rx - logger.debug(f"Combined rotation matrix: \n{R}") - - # Apply the rotation to each corner point - R_A = R @ A - R_B = R @ B - R_C = R @ C - R_D = R @ D - - corners = (fixed_xyz2ra_dec(R_A.flatten()), - fixed_xyz2ra_dec(R_B.flatten()), - fixed_xyz2ra_dec(R_C.flatten()), - fixed_xyz2ra_dec(R_D.flatten())) - - logger.info(f"Calculated FOV corners: {corners}") - - return corners - - -# Example usage: -if __name__ == "__main__": - # Set up logging - setup_logging() - - fov_points = calc_fov_points(x_pixels=4000, x_pixel_size=3.75, y_pixels=3000, y_pixel_size=3.75, focal_length=500, - target_ra=180.0, target_dec=45.0, camera_rotation=0.0) - for idx, point in enumerate(fov_points, start=1): - print(f"Corner {idx}: RA = {point[0]:.6f}°, DEC = {point[1]:.6f}°") diff --git a/pysrc/target/find_all.py b/pysrc/target/find_all.py deleted file mode 100644 index 1ac0b72a..00000000 --- a/pysrc/target/find_all.py +++ /dev/null @@ -1,220 +0,0 @@ -from astropy.coordinates import EarthLocation -import pandas as pd -from pathlib import Path -import numpy as np -from astropy.coordinates import AltAz, SkyCoord -from astropy.time import Time -import datetime -import re -from pydantic import BaseModel, field_validator -from typing import List, Optional, Dict, Tuple -from loguru import logger - -from calc_alt import calculate_star_info - -# File paths -this_file_path = Path(__file__).resolve().parent -full_list_file = this_file_path / 'TargetListAll.csv' - -too_big_search_string = [ - 'Minkowski', 'M', 'NGC', 'PGC', 'Sh', 'UGC', 'vdB', 'IC' -] - - -class DSO(BaseModel): - """Data model for Deep Sky Object (DSO).""" - name: str - ra: Optional[float] = None # 赤经 (0 <= ra <= 360) - dec: Optional[float] = None # 赤纬 (-90 <= dec <= 90) - alias: Optional[str] = None - magnitude: Optional[float] = None # 星等 - altitude_curve: Optional[List[float]] = None - azimuth_curve: Optional[List[float]] = None - - @field_validator('ra', mode='before') - def validate_ra(cls, v, info): - """Validate that RA is within the range 0 to 360 degrees.""" - if v is not None and not (0 <= v <= 360): - raise ValueError( - f"{info.field_name.capitalize()} value {v} out of range (0 <= value <= 360).") - return v - - @field_validator('dec', mode='before') - def validate_dec(cls, v, info): - """Validate that Dec is within the range -90 to 90 degrees.""" - if v is not None and not (-90 <= v <= 90): - raise ValueError( - f"{info.field_name.capitalize()} value {v} out of range (-90 <= value <= 90).") - return v - - -def setup_logging(): - """ - Set up the loguru logging configuration to log both to console and to a file. - """ - logger.add("dso_search.log", level="DEBUG", - format="{time} {level} {message}", rotation="10 MB") - logger.info("Logging setup complete.") - - -def read_csv(file_path: Path) -> pd.DataFrame: - """Read the CSV file and handle potential errors.""" - try: - logger.info(f"Reading CSV file from {file_path}") - df = pd.read_csv(file_path) - df = df.replace({np.nan: None}) - return df - except Exception as e: - logger.error(f"Error reading the CSV file at {file_path}: {e}") - raise FileNotFoundError( - f"Error reading the CSV file at {file_path}: {e}") - - -def sort_search_result(search_result: List[DSO]) -> List[DSO]: - """Sort the search results based on priority (NGC, M, IC first).""" - logger.debug("Sorting search results based on priority.") - first_prior = [res for res in search_result if any( - prefix in res.name for prefix in ('NGC', 'M ', 'IC'))] - second_prior = [res for res in search_result if res not in first_prior] - return first_prior + second_prior - - -def search_DSO(to_search_name: str, observer_location: EarthLocation, date_time_string: datetime.datetime, - magnitude_range: Optional[Tuple[float, float]] = None, - ra_range: Optional[Tuple[float, float]] = None, - dec_range: Optional[Tuple[float, float]] = None, - alias: Optional[str] = None) -> List[DSO]: - logger.info( - f"Starting DSO search for {to_search_name} at {date_time_string}") - df = read_csv(full_list_file) - - results = None - if to_search_name.isdigit(): - pattern = rf"\b0*{to_search_name}\b" - results = df[df['name'].str.contains(pattern, na=False, regex=True)] - elif to_search_name.isalpha(): - if len(to_search_name) > 1 and to_search_name not in too_big_search_string: - results = df[(df['name'].str.contains(to_search_name, na=False)) | - (df['alias'].str.contains(to_search_name, case=False, na=False))] - else: - match = re.match(r"([a-z]+)([0-9]+)", to_search_name, re.I) - if match: - letters, digit = match.groups() - letters = letters.lower() - pattern = rf"\b0*{digit}\b" - mask_letter = df['name'].str.lower( - ).str.contains(letters, na=False) - mask_digit = df['name'].str.contains(pattern, na=False, regex=True) - results = df[mask_letter & mask_digit] - - if results is not None and not results.empty: - if magnitude_range: - results = results[(results['magnitude'] >= magnitude_range[0]) & ( - results['magnitude'] <= magnitude_range[1])] - if ra_range: - results = results[(results['ra'] >= ra_range[0]) & ( - results['ra'] <= ra_range[1])] - if dec_range: - results = results[(results['dec'] >= dec_range[0]) & ( - results['dec'] <= dec_range[1])] - if alias: - results = results[results['alias'].str.contains( - alias, case=False, na=False)] - - result_dicts = results.to_dict('records') - dsos = [DSO(**res) for res in result_dicts] - dsos = sort_search_result(dsos) - - for dso in dsos: - if dso.ra and dso.dec: - dso.altitude_curve, dso.azimuth_curve = calculate_alt_and_az_curve( - dso.ra, dso.dec, observer_location, date_time_string) - logger.debug(f"Calculated Alt/Az for {dso.name}") - - logger.info(f"Found {len(dsos)} matching DSOs.") - return dsos - else: - logger.info("No matching DSOs found.") - return [] - - -def calculate_alt_and_az_curve(ra: float, dec: float, observer_location: EarthLocation, - date_time_string: datetime.datetime) -> Tuple[List[float], List[float]]: - """Calculate the altitude and azimuth curve for given coordinates.""" - logger.debug( - f"Calculating altitude and azimuth curve for RA: {ra}, Dec: {dec}") - try: - # Convert datetime to astropy Time object - time = Time(date_time_string) - - # Create SkyCoord object - sky_coord = SkyCoord(ra=ra, dec=dec, unit="deg") - - # Calculate AltAz object for each hour in the given datetime - altaz_frame = AltAz(obstime=time, location=observer_location) - altaz = sky_coord.transform_to(altaz_frame) - - # Extract altitude and azimuth - altitude_curve = altaz.alt.deg - azimuth_curve = altaz.az.deg - - logger.debug(f"Altitude: {altitude_curve}, Azimuth: {azimuth_curve}") - - return altitude_curve, azimuth_curve - except Exception as e: - logger.error(f"Error calculating altitude and azimuth curve: {e}") - return [], [] - - -def batch_search_DSO(names: List[str], observer_location: EarthLocation, date_time_string: datetime.datetime, - magnitude_range: Optional[Tuple[float, float]] = None, - ra_range: Optional[Tuple[float, float]] = None, - dec_range: Optional[Tuple[float, float]] = None, - alias: Optional[str] = None) -> Dict[str, List[DSO]]: - """Search multiple DSOs in batch mode.""" - logger.info(f"Starting batch search for {len(names)} DSOs.") - results = {} - for name in names: - results[name] = search_DSO(name, observer_location, date_time_string, - magnitude_range=magnitude_range, - ra_range=ra_range, - dec_range=dec_range, - alias=alias) - logger.info("Batch search completed.") - return results - - -# 调用示例 -if __name__ == "__main__": - # 设置日志 - setup_logging() - - # 定义观测者位置和时间 - observer_location = EarthLocation( - lat=34.0522, lon=-118.2437, height=100) # 例如洛杉矶 - date_time_string = datetime.datetime( - 2024, 8, 29, 22, 0, 0) # 2024年8月29日22点 - - # 单一DSO搜索 - dso_name = "M42" - dso_results = search_DSO(dso_name, observer_location, date_time_string, - magnitude_range=(0, 10), - ra_range=(0, 360), - dec_range=(-90, 90), - alias="Orion") - for dso in dso_results: - print( - f"Name: {dso.name}, Altitude Curve: {dso.altitude_curve}, Azimuth Curve: {dso.azimuth_curve}") - - # 批量DSO搜索 - dso_names = ["M42", "NGC224"] - batch_results = batch_search_DSO(dso_names, observer_location, date_time_string, - magnitude_range=(0, 10), - ra_range=(0, 360), - dec_range=(-90, 90), - alias="Andromeda") - for name, results in batch_results.items(): - print(f"Results for {name}:") - for dso in results: - print( - f"Name: {dso.name}, Altitude Curve: {dso.altitude_curve}, Azimuth Curve: {dso.azimuth_curve}") diff --git a/pysrc/utils/__init__.py b/pysrc/utils/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/pysrc/utils/client.py b/pysrc/utils/client.py deleted file mode 100644 index 05e77cf2..00000000 --- a/pysrc/utils/client.py +++ /dev/null @@ -1,171 +0,0 @@ -""" -This module provides a JSONTCPClient class for communicating with a server over TCP using JSON messages. -""" - -import asyncio -import json - - -class JSONTCPClient: - """ - A client for communicating with a server over TCP using JSON messages. - - Attributes: - host (str): The server's hostname or IP address. - port (int): The server's port number. - max_retries (int): The maximum number of connection retries. - reader (StreamReader): The stream reader for the connection. - writer (StreamWriter): The stream writer for the connection. - """ - - def __init__(self, host='127.0.0.1', port=8888, max_retries=5): - """ - Initialize the JSONTCPClient with the server's host, port, and maximum number of retries. - - Args: - host (str): The server's hostname or IP address. - port (int): The server's port number. - max_retries (int): The maximum number of connection retries. - """ - self.host = host - self.port = port - self.max_retries = max_retries - self.reader = None - self.writer = None - - async def connect(self): - """ - Attempt to connect to the server with retry logic. - - Returns: - bool: True if connected successfully, False otherwise. - """ - retries = 0 - while retries < self.max_retries: - try: - self.reader, self.writer = await asyncio.open_connection(self.host, self.port) - print(f'Connected to server at {self.host}:{self.port}') - return True - except (ConnectionRefusedError, asyncio.TimeoutError): - retries += 1 - print(f'Retrying to connect ({retries}/{self.max_retries})...') - await asyncio.sleep(2) - print('Connection failed. Please check the server.') - return False - - async def disconnect(self): - """ - Disconnect from the server. - """ - if self.writer: - self.writer.close() - await self.writer.wait_closed() - self.writer = None - print('Disconnected from server.') - - async def reconnect(self): - """ - Attempt to reconnect to the server. - """ - await self.disconnect() - await self.connect() - - async def send_message(self, message): - """ - Send a JSON message to the server. - - Args: - message (dict): The message to send. - """ - if self.writer is None: - if not await self.connect(): - return - - try: - request = json.dumps(message) + '\n' - print(f'Sending: {request.strip()}') - self.writer.write(request.encode()) - await self.writer.drain() - - response = await self.receive_message() - print(f'Received: {response}') - except (ConnectionResetError, BrokenPipeError) as e: - print(f'Connection error: {e}') - await self.reconnect() - except json.JSONDecodeError as e: - print(f'JSON error: {e}') - except Exception as e: - print(f'Unexpected error: {e}') - await self.reconnect() - - async def receive_message(self): - """ - Receive a message from the server. - - Returns: - str: The received message. - """ - try: - response = await self.reader.readline() - return response.decode().strip() - except (ConnectionResetError, BrokenPipeError) as e: - print(f'Connection error: {e}') - return None - except Exception as e: - print(f'Unexpected error receiving message: {e}') - return None - - async def ping(self): - """ - Send a ping message to the server to check its availability. - - Returns: - bool: True if the server responds, False otherwise. - """ - try: - await self.send_message({"command": "ping"}) - response = await self.receive_message() - return response == "pong" - except (ConnectionResetError, BrokenPipeError) as e: - print(f'Ping connection error: {e}') - return False - except Exception as e: - print(f'Unexpected ping error: {e}') - return False - - def set_max_retries(self, max_retries): - """ - Set the maximum number of connection retries. - - Args: - max_retries (int): The new maximum number of retries. - """ - self.max_retries = max_retries - - async def close(self): - """ - Close the connection to the server. - """ - await self.disconnect() - - -async def main(): - """ - Main function to run the JSONTCPClient and send predefined commands. - """ - client = JSONTCPClient(host='127.0.0.1', port=8888) - - commands = [ - {"command": "echo", "message": "Hello, Server!"}, - {"command": "run", "cmd": "echo 'Running command!'"}, - {"command": "run", "cmd": "ls -l"} - ] - - for cmd in commands: - await client.send_message(cmd) - await asyncio.sleep(1) - - await client.close() - -if __name__ == '__main__': - asyncio.run(main()) diff --git a/pysrc/utils/server.py b/pysrc/utils/server.py deleted file mode 100644 index 7aef28f7..00000000 --- a/pysrc/utils/server.py +++ /dev/null @@ -1,154 +0,0 @@ -""" -This module provides a JSONTCPServer class for handling JSON-formatted commands over TCP. -""" - -import asyncio -import json -import subprocess -from typing import Dict, Any -from loguru import logger - - -class JSONTCPServer: - """ - An asynchronous TCP server that handles JSON-formatted commands and sends back JSON-formatted responses. - """ - - def __init__(self, host='127.0.0.1', port=8888, max_clients=10): - """ - Initialize the JSONTCPServer with the server's host, port, and maximum number of clients. - - Args: - host (str): The server's hostname or IP address. - port (int): The server's port number. - max_clients (int): The maximum number of concurrent clients. - """ - self.host = host - self.port = port - self.max_clients = max_clients - self.active_clients = 0 - self.semaphore = asyncio.Semaphore( - max_clients) # Limit concurrent connections - self.server = None - self.clients = [] - - async def handle_client(self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter): - """ - Handle incoming client connections and process their requests. - - Args: - reader (asyncio.StreamReader): The stream reader for the client connection. - writer (asyncio.StreamWriter): The stream writer for the client connection. - """ - async with self.semaphore: - self.active_clients += 1 - client_info = writer.get_extra_info('peername') - self.clients.append(writer) - self.log_client_activity(client_info, "connected") - - try: - while True: - data = await reader.readline() - if not data: - break - message = data.decode().strip() - logger.info("Received {} from {}", message, client_info) - response = await self.process_command(json.loads(message)) - writer.write((json.dumps(response) + '\n').encode()) - await writer.drain() - except (json.JSONDecodeError, subprocess.SubprocessError) as e: - logger.error("Error handling client {}: {}", client_info, e) - finally: - self.disconnect_client(writer) - self.log_client_activity(client_info, "disconnected") - - async def process_command(self, command: Dict[str, Any]) -> Dict[str, Any]: - """ - Process a JSON command and return a JSON response. - - Args: - command (Dict[str, Any]): The JSON command received from the client. - - Returns: - Dict[str, Any]: The JSON response to send back to the client. - """ - try: - if command['command'] == 'echo': - return {"response": command['message']} - elif command['command'] == 'run': - result = subprocess.run( - command['cmd'], shell=True, capture_output=True, text=True, check=True) - return {"response": result.stdout} - else: - return {"error": "Unknown command"} - except (subprocess.CalledProcessError, KeyError) as e: - logger.error("Error processing command: {}", e) - return {"error": str(e)} - - async def start_server(self): - """ - Start the TCP server and accept incoming connections. - """ - self.server = await asyncio.start_server(self.handle_client, self.host, self.port) - addr = self.server.sockets[0].getsockname() - logger.info("Serving on {}", addr) - - async with self.server: - await self.server.serve_forever() - - async def stop_server(self): - """ - Stop the TCP server and disconnect all clients. - """ - if self.server: - self.server.close() - await self.server.wait_closed() - logger.info("Server stopped") - - for client in self.clients: - client.close() - await client.wait_closed() - - def disconnect_client(self, writer: asyncio.StreamWriter): - """ - Disconnect a client and remove it from the list of active clients. - - Args: - writer (asyncio.StreamWriter): The stream writer for the client connection. - """ - if writer in self.clients: - self.clients.remove(writer) - self.active_clients -= 1 - writer.close() - - async def broadcast_message(self, message: str): - """ - Broadcast a message to all connected clients. - - Args: - message (str): The message to broadcast. - """ - for client in self.clients: - client.write((message + '\n').encode()) - await client.drain() - - def log_client_activity(self, client_info, activity): - """ - Log client connection and disconnection activities. - - Args: - client_info: Information about the client. - activity (str): The activity to log (e.g., "connected", "disconnected"). - """ - logger.info("Client {} {}", client_info, activity) - - -async def main(): - """ - Main function to run the JSONTCPServer. - """ - server = JSONTCPServer(host='127.0.0.1', port=8888) - await server.start_server() - -if __name__ == '__main__': - asyncio.run(main()) diff --git a/scripts/ci_release.py b/scripts/ci_release.py index b4586837..80bb203c 100644 --- a/scripts/ci_release.py +++ b/scripts/ci_release.py @@ -1,3 +1,4 @@ +# python #!/usr/bin/env python """ GitHub Release Script @@ -26,30 +27,37 @@ import time import traceback import threading -from github import Github +from typing import Optional +from github import Github, Repository, PullRequest from github.GithubException import UnknownObjectException +from rich.console import Console +from rich.traceback import install + +# Initialize rich traceback +install() +console = Console() # Constants -MAX_PR_WALKING = int(os.getenv('MAX_PR_WALKING', '5')) -GITHUB_OAUTH_TOKEN = os.getenv('GITHUB_OAUTH_TOKEN') -TRAVIS_REPO_SLUG = os.getenv('TRAVIS_REPO_SLUG') -PROJECT_VERSION = os.getenv('PROJECT_VERSION') -TRAVIS_COMMIT_MESSAGE = os.getenv('TRAVIS_COMMIT_MESSAGE') -TRAVIS_COMMIT = os.getenv('TRAVIS_COMMIT') -GITHUB_DRAFT_RELEASE = os.getenv('GITHUB_DRAFT_RELEASE', '0') -GITHUB_PRERELEASE = os.getenv('GITHUB_PRERELEASE', '1') -TRAVIS_PULL_REQUEST = os.getenv('TRAVIS_PULL_REQUEST', 'false') - - -def get_github_repo(): +MAX_PR_WALKING: int = int(os.getenv('MAX_PR_WALKING', '5')) +GITHUB_OAUTH_TOKEN: str = os.getenv('GITHUB_OAUTH_TOKEN', '') +TRAVIS_REPO_SLUG: str = os.getenv('TRAVIS_REPO_SLUG', '') +PROJECT_VERSION: str = os.getenv('PROJECT_VERSION', '') +TRAVIS_COMMIT_MESSAGE: str = os.getenv('TRAVIS_COMMIT_MESSAGE', '') +TRAVIS_COMMIT: str = os.getenv('TRAVIS_COMMIT', '') +GITHUB_DRAFT_RELEASE: str = os.getenv('GITHUB_DRAFT_RELEASE', '0') +GITHUB_PRERELEASE: str = os.getenv('GITHUB_PRERELEASE', '1') +TRAVIS_PULL_REQUEST: str = os.getenv('TRAVIS_PULL_REQUEST', 'false') + + +def get_github_repo() -> Repository.Repository: """ - Get the GitHub repository object. - - Returns: - github.Repository.Repository: The repository object. + Retrieve the GitHub repository object using the provided OAuth token and repository slug. Raises: ValueError: If the GitHub token or repository slug is not provided. + + Returns: + Repository.Repository: The GitHub repository object. """ if not GITHUB_OAUTH_TOKEN or not TRAVIS_REPO_SLUG: raise ValueError("GitHub token or repository slug not provided") @@ -57,29 +65,29 @@ def get_github_repo(): return github.get_repo(TRAVIS_REPO_SLUG) -def is_true(env_var): +def is_true(env_var: str) -> bool: """ - Convert an environment variable to a boolean value. + Determine if the environment variable represents a true value. Args: env_var (str): The environment variable value. Returns: - bool: True if the environment variable represents a true value, False otherwise. + bool: True if the value is '1' or 'true' (case-insensitive), else False. """ return env_var == '1' or env_var.lower() == 'true' -def find_pr(repo, commit_id): +def find_pr(repo: Repository.Repository, commit_id: str) -> Optional[PullRequest.PullRequest]: """ Find the pull request associated with a given commit ID. Args: - repo (github.Repository.Repository): The repository object. + repo (Repository.Repository): The GitHub repository object. commit_id (str): The commit SHA to search for. Returns: - github.PullRequest.PullRequest or None: The pull request object if found, None otherwise. + Optional[PullRequest.PullRequest]: The pull request object if found, else None. """ all_pulls = list(repo.get_pulls(state='closed', sort='updated'))[::-1] for index, merged_pr in enumerate(all_pulls): @@ -90,76 +98,82 @@ def find_pr(repo, commit_id): return None -def get_pr(repo, pr_number, commit_id): +def get_pr(repo: Repository.Repository, pr_number: str, commit_id: str) -> Optional[PullRequest.PullRequest]: """ - Get the pull request object. + Retrieve the pull request object either by PR number or commit ID. Args: - repo (github.Repository.Repository): The repository object. + repo (Repository.Repository): The GitHub repository object. pr_number (str): The pull request number. - commit_id (str): The commit SHA to search for if the PR number is not valid. + commit_id (str): The commit SHA to search for if PR number is invalid. Returns: - github.PullRequest.PullRequest or None: The pull request object if found, None otherwise. + Optional[PullRequest.PullRequest]: The pull request object if found, else None. """ - pr = None + pr: Optional[PullRequest.PullRequest] = None if pr_number and pr_number != 'false': try: pr = repo.get_pull(int(pr_number)) - except ValueError: - print("Invalid pull request number") + except (ValueError, UnknownObjectException): + console.print( + "[red]Invalid or non-existent pull request number.[/red]") if not pr: retry = 0 while not pr and retry < 5: time.sleep(retry * 10) try: pr = find_pr(repo, commit_id) - break + if pr: + break except Exception: traceback.print_exc() retry += 1 return pr -def create_or_update_release(repo, tag, name, body, is_draft, is_prerelease, commit): +def create_or_update_release(repo: Repository.Repository, tag: str, name: str, body: str, + is_draft: bool, is_prerelease: bool, commit: str): """ - Create or update a GitHub release. + Create a new release or update an existing one on GitHub. Args: - repo (github.Repository.Repository): The repository object. - tag (str): The tag for the release. + repo (Repository.Repository): The GitHub repository object. + tag (str): The tag name for the release. name (str): The name of the release. - body (str): The body description of the release. - is_draft (bool): Whether the release is a draft. - is_prerelease (bool): Whether the release is a pre-release. - commit (str): The commit SHA for the release. + body (str): The body content of the release. + is_draft (bool): Flag indicating if the release is a draft. + is_prerelease (bool): Flag indicating if the release is a pre-release. + commit (str): The commit SHA the release is based on. Returns: - github.GitRelease.GitRelease: The created or updated release object. + GitRelease.GitRelease: The created or updated release object. """ try: release = repo.get_release(tag) release.update_release(name=name, message=body, draft=is_draft, prerelease=is_prerelease, target_commitish=commit) + console.print(f"[green]Updated release: {tag}[/green]") except UnknownObjectException: release = repo.create_git_release( tag, name, body, draft=is_draft, prerelease=is_prerelease, target_commitish=commit) + console.print(f"[green]Created release: {tag}[/green]") return release -def upload_asset(release, asset): +def upload_asset(release, asset: str): """ - Upload an asset to the GitHub release. + Upload an asset to the specified GitHub release. Args: - release (github.GitRelease.GitRelease): The release object. + release (GitRelease.GitRelease): The GitHub release object. asset (str): The file path of the asset to upload. """ try: release.upload_asset(asset) - print(f'Successfully uploaded asset: {asset}') + console.print(f"[blue]Successfully uploaded asset: {asset}[/blue]") except Exception as e: - print(f'Failed to upload asset: {asset}, error: {e}') + console.print( + f"[red]Failed to upload asset: {asset}, error: {e}[/red]") def main(): diff --git a/scripts/conan.py b/scripts/conan.py index 71837422..6d6358d8 100644 --- a/scripts/conan.py +++ b/scripts/conan.py @@ -1,102 +1,157 @@ +""" +Advanced Conan Dependency Management Tool with Rich Enhancements +""" + import subprocess import argparse +from typing import Optional +from dataclasses import dataclass +from rich.console import Console +from rich.progress import Progress, SpinnerColumn, TextColumn +from rich.table import Table +from rich import box -# Helper function to run system commands +console = Console() def run_command(command: str) -> bool: """ - Run a system command and return whether it was successful. + Execute a system command and return whether it was successful. Args: - command (str): The system command to run. + command (str): The system command to execute. Returns: bool: True if the command was successful, False otherwise. """ - result = subprocess.run(command, shell=True, text=True, check=False) - if result.returncode != 0: - print(f"Error: Command '{command}' failed with exit code { - result.returncode}") - return result.returncode == 0 - -# Install dependencies with optional configuration + try: + result = subprocess.run(command, shell=True, text=True, check=True) + console.log(f"[green]Command succeeded:[/green] {command}") + return True + except subprocess.CalledProcessError as e: + console.log(f"[red]Command failed:[/red] {command}") + console.log(f"[red]Error Output:[/red] {e.stderr.strip()}") + return False -def install_dependencies(build_type: str = "Release"): +def install_dependencies(build_type: str = "Release") -> bool: """ - Install dependencies with optional configuration. + Install dependencies with an optional build configuration. Args: - build_type (str): The build type (e.g., Release, Debug). Default is "Release". + build_type (str, optional): The build type (e.g., Release, Debug). Defaults to "Release". Returns: - bool: True if the installation was successful, False otherwise. + bool: True if installation was successful, False otherwise. """ - print(f"Installing dependencies for {build_type}...") - return run_command(f"conan install . --build=missing -s build_type={build_type}") - -# Uninstall dependencies + console.print( + f"[bold green]Installing dependencies for {build_type}...[/bold green]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Installing dependencies...", start=True) + success = run_command( + f"conan install . --build=missing -s build_type={build_type}") + progress.update( + task, description="Installation completed.", completed=100) + if success: + console.print( + f"[green]Dependencies installed successfully for {build_type} build.[/green]") + else: + console.print( + f"[red]Failed to install dependencies for {build_type} build.[/red]") + return success -def uninstall_dependencies(): +def uninstall_dependencies() -> bool: """ - Uninstall dependencies by cleaning the build folder. + Uninstall dependencies by removing the build directory. Returns: - bool: True if the uninstallation was successful, False otherwise. + bool: True if uninstallation was successful, False otherwise. """ - print("Uninstalling dependencies (cleaning build folder)...") - return run_command("rm -rf build") - -# Update dependencies with optional configuration + console.print( + "[bold red]Uninstalling dependencies (cleaning build folder)...[/bold red]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Uninstalling dependencies...", start=True) + success = run_command("rm -rf build") + progress.update( + task, description="Uninstallation completed.", completed=100) + if success: + console.print("[green]Dependencies uninstalled successfully.[/green]") + else: + console.print("[red]Failed to uninstall dependencies.[/red]") + return success -def update_dependencies(build_type: str = "Release"): +def update_dependencies(build_type: str = "Release") -> bool: """ - Update dependencies with optional configuration. + Update dependencies with an optional build configuration. Args: - build_type (str): The build type (e.g., Release, Debug). Default is "Release". + build_type (str, optional): The build type (e.g., Release, Debug). Defaults to "Release". Returns: - bool: True if the update was successful, False otherwise. + bool: True if update was successful, False otherwise. """ - print(f"Updating dependencies for {build_type}...") - return run_command(f"conan install . --update --build=missing -s build_type={build_type}") - -# Clean build files + console.print( + f"[bold yellow]Updating dependencies for {build_type}...[/bold yellow]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Updating dependencies...", start=True) + success = run_command( + f"conan install . --update --build=missing -s build_type={build_type}") + progress.update(task, description="Update completed.", completed=100) + if success: + console.print( + f"[green]Dependencies updated successfully for {build_type} build.[/green]") + else: + console.print( + f"[red]Failed to update dependencies for {build_type} build.[/red]") + return success -def clean_build(): +def clean_build() -> bool: """ - Clean build files. + Clean build files by removing specific directories and files. Returns: - bool: True if the cleaning was successful, False otherwise. + bool: True if cleaning was successful, False otherwise. """ - print("Cleaning build files...") - return run_command("rm -rf build CMakeFiles CMakeCache.txt") - -# Show dependency information + console.print("[bold magenta]Cleaning build files...[/bold magenta]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Cleaning build files...", start=True) + success = run_command("rm -rf build CMakeFiles CMakeCache.txt") + progress.update(task, description="Cleaning completed.", completed=100) + if success: + console.print("[green]Build files cleaned successfully.[/green]") + else: + console.print("[red]Failed to clean build files.[/red]") + return success -def show_dependency_info(): +def show_dependency_info() -> bool: """ - Display the dependency tree information. + Display the dependency tree information using Conan. Returns: bool: True if the information was displayed successfully, False otherwise. """ - print("Displaying dependency tree...") - return run_command("conan info .") - -# Add a remote repository + console.print("[bold blue]Displaying dependency tree...[/bold blue]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Fetching dependency info...", start=True) + success = run_command("conan info .") + progress.update( + task, description="Dependency info displayed.", completed=100) + if success: + console.print( + "[green]Dependency tree information displayed successfully.[/green]") + else: + console.print( + "[red]Failed to display dependency tree information.[/red]") + return success -def add_remote(remote_name: str, remote_url: str): +def add_remote(remote_name: str, remote_url: str) -> bool: """ - Add a remote repository. + Add a new remote repository to Conan. Args: remote_name (str): The name of the remote repository. @@ -105,28 +160,44 @@ def add_remote(remote_name: str, remote_url: str): Returns: bool: True if the remote was added successfully, False otherwise. """ - print(f"Adding remote: {remote_name} -> {remote_url}") - return run_command(f"conan remote add {remote_name} {remote_url}") - -# List all remote repositories + console.print( + f"[bold green]Adding remote: {remote_name} -> {remote_url}[/bold green]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Adding remote repository...", start=True) + success = run_command(f"conan remote add {remote_name} {remote_url}") + progress.update( + task, description="Remote repository added.", completed=100) + if success: + console.print( + f"[green]Remote '{remote_name}' added successfully.[/green]") + else: + console.print(f"[red]Failed to add remote '{remote_name}'.[/red]") + return success -def list_remotes(): +def list_remotes() -> bool: """ - List all remote repositories. + List all remote repositories configured in Conan. Returns: - bool: True if the remotes were listed successfully, False otherwise. + bool: True if remotes were listed successfully, False otherwise. """ - print("Listing all remotes...") - return run_command("conan remote list") - -# Remove a remote repository + console.print("[bold cyan]Listing all remote repositories...[/bold cyan]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Listing remotes...", start=True) + success = run_command("conan remote list") + progress.update(task, description="Remotes listed.", completed=100) + if success: + console.print( + "[green]Remote repositories listed successfully.[/green]") + else: + console.print("[red]Failed to list remote repositories.[/red]") + return success -def remove_remote(remote_name: str): +def remove_remote(remote_name: str) -> bool: """ - Remove a remote repository. + Remove an existing remote repository from Conan. Args: remote_name (str): The name of the remote repository to remove. @@ -134,108 +205,148 @@ def remove_remote(remote_name: str): Returns: bool: True if the remote was removed successfully, False otherwise. """ - print(f"Removing remote: {remote_name}") - return run_command(f"conan remote remove {remote_name}") - -# Build the project + console.print(f"[bold red]Removing remote: {remote_name}[/bold red]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Removing remote repository...", start=True) + success = run_command(f"conan remote remove {remote_name}") + progress.update( + task, description="Remote repository removed.", completed=100) + if success: + console.print( + f"[green]Remote '{remote_name}' removed successfully.[/green]") + else: + console.print(f"[red]Failed to remove remote '{remote_name}'.[/red]") + return success -def build_project(build_type: str = "Release"): +def build_project(build_type: str = "Release") -> bool: """ - Build the project with the specified build type. + Build the project with the specified build type using CMake. Args: - build_type (str): The build type (e.g., Release, Debug). Default is "Release". + build_type (str, optional): The build type (e.g., Release, Debug). Defaults to "Release". Returns: bool: True if the build was successful, False otherwise. """ - print(f"Building project in {build_type} mode...") - return run_command(f"cmake -DCMAKE_BUILD_TYPE={build_type} . && cmake --build .") - -# Run unit tests + console.print( + f"[bold green]Building project in {build_type} mode...[/bold green]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Building project...", start=True) + success = run_command( + f"cmake -DCMAKE_BUILD_TYPE={build_type} . && cmake --build .") + progress.update(task, description="Build completed.", completed=100) + if success: + console.print( + f"[green]Project built successfully in {build_type} mode.[/green]") + else: + console.print( + f"[red]Failed to build project in {build_type} mode.[/red]") + return success -def run_tests(): +def run_tests() -> bool: """ - Run unit tests. + Run unit tests using CTest. Returns: bool: True if the tests ran successfully, False otherwise. """ - print("Running tests...") - return run_command("ctest") - -# Generate project documentation (assuming Doxygen is used) + console.print("[bold blue]Running unit tests...[/bold blue]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Executing tests...", start=True) + success = run_command("ctest") + progress.update(task, description="Tests completed.", completed=100) + if success: + console.print("[green]All unit tests passed successfully.[/green]") + else: + console.print("[red]Some unit tests failed.[/red]") + return success -def generate_docs(): +def generate_docs() -> bool: """ - Generate project documentation. + Generate project documentation using Doxygen. Returns: - bool: True if the documentation was generated successfully, False otherwise. + bool: True if documentation was generated successfully, False otherwise. """ - print("Generating project documentation...") - return run_command("doxygen Doxyfile") - -# Main function to handle command-line arguments using argparse + console.print( + "[bold magenta]Generating project documentation...[/bold magenta]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Generating documentation...", start=True) + success = run_command("doxygen Doxyfile") + progress.update( + task, description="Documentation generated.", completed=100) + if success: + console.print("[green]Documentation generated successfully.[/green]") + else: + console.print("[red]Failed to generate documentation.[/red]") + return success -def main(): +def main() -> None: """ - Main function to handle command-line arguments and execute corresponding functions. + Main function to parse command-line arguments and execute corresponding functions. """ parser = argparse.ArgumentParser( - description="Conan Dependency Management Script") - subparsers = parser.add_subparsers(dest="command") + description="Conan Dependency Management Script with Rich Enhancements" + ) + subparsers = parser.add_subparsers( + dest="command", help="Available commands") - # install command + # Install command parser_install = subparsers.add_parser( "install", help="Install dependencies") parser_install.add_argument( - "--build-type", default="Release", help="Specify build type (Release/Debug)") + "--build-type", type=str, default="Release", choices=["Release", "Debug"], + help="Specify build type (Release/Debug). Default is Release." + ) - # uninstall command + # Uninstall command subparsers.add_parser("uninstall", help="Uninstall dependencies") - # update command + # Update command parser_update = subparsers.add_parser("update", help="Update dependencies") parser_update.add_argument( - "--build-type", default="Release", help="Specify build type (Release/Debug)") + "--build-type", type=str, default="Release", choices=["Release", "Debug"], + help="Specify build type (Release/Debug). Default is Release." + ) - # clean command + # Clean command subparsers.add_parser("clean", help="Clean build files") - # info command + # Info command subparsers.add_parser("info", help="Show dependency tree information") - # add-remote command + # Add-remote command parser_add_remote = subparsers.add_parser( "add-remote", help="Add a new remote repository") parser_add_remote.add_argument( - "remote_name", help="The name of the remote repository") + "remote_name", type=str, help="Name of the remote repository") parser_add_remote.add_argument( - "remote_url", help="The URL of the remote repository") + "remote_url", type=str, help="URL of the remote repository") - # list-remotes command + # List-remotes command subparsers.add_parser("list-remotes", help="List all remote repositories") - # remove-remote command + # Remove-remote command parser_remove_remote = subparsers.add_parser( "remove-remote", help="Remove a remote repository") parser_remove_remote.add_argument( - "remote_name", help="The name of the remote repository to remove") + "remote_name", type=str, help="Name of the remote repository to remove") - # build command + # Build command parser_build = subparsers.add_parser("build", help="Build the project") parser_build.add_argument( - "--build-type", default="Release", help="Specify build type (Release/Debug)") + "--build-type", type=str, default="Release", choices=["Release", "Debug"], + help="Specify build type (Release/Debug). Default is Release." + ) - # test command + # Test command subparsers.add_parser("test", help="Run unit tests") - # docs command + # Docs command subparsers.add_parser("docs", help="Generate project documentation") # Parse arguments @@ -243,23 +354,23 @@ def main(): # Execute corresponding function based on the command if args.command == "install": - install_dependencies(args.build_type) + install_dependencies(build_type=args.build_type) elif args.command == "uninstall": uninstall_dependencies() elif args.command == "update": - update_dependencies(args.build_type) + update_dependencies(build_type=args.build_type) elif args.command == "clean": clean_build() elif args.command == "info": show_dependency_info() elif args.command == "add-remote": - add_remote(args.remote_name, args.remote_url) + add_remote(remote_name=args.remote_name, remote_url=args.remote_url) elif args.command == "list-remotes": list_remotes() elif args.command == "remove-remote": - remove_remote(args.remote_name) + remove_remote(remote_name=args.remote_name) elif args.command == "build": - build_project(args.build_type) + build_project(build_type=args.build_type) elif args.command == "test": run_tests() elif args.command == "docs": diff --git a/scripts/conda.py b/scripts/conda.py index d2bde23d..479da218 100644 --- a/scripts/conda.py +++ b/scripts/conda.py @@ -1,237 +1,498 @@ """ -Advanced Conda Environment Management Tool +Advanced Conda Environment Management Tool with Rich Enhancements """ import sys import subprocess import json import argparse -from loguru import logger - - -def run_command(command): - """Run a shell command and return the output with error handling and logging.""" - result = subprocess.run(command, shell=True, - capture_output=True, text=True, check=True) - if result.returncode != 0: - logger.error(f"Command failed: {result.stderr}") +from typing import Union, List, Optional +from dataclasses import dataclass, asdict +from rich.table import Table +from rich.console import Console +from rich.progress import Progress, SpinnerColumn, TextColumn +from rich import box +from rich.prompt import Prompt +from rich.text import Text + +console = Console() + + +@dataclass +class ContainerInfo: + id: str + name: str + status: str + image: str + ports: dict + cpu_usage: float + memory_usage: float + + +def run_command(command: str) -> Optional[str]: + """ + Execute a shell command and return its output. + + Args: + command (str): The command to execute. + + Returns: + Optional[str]: The standard output of the command if successful, None otherwise. + """ + try: + result = subprocess.run( + command, + shell=True, + capture_output=True, + text=True, + check=True + ) + console.log(f"[green]Command succeeded:[/green] {command}") + return result.stdout.strip() + except subprocess.CalledProcessError as e: + console.log(f"[red]Command failed:[/red] {command}\nError: {e.stderr}") return None - logger.debug(f"Command succeeded: {result.stdout}") - return result.stdout.strip() -def list_environments(): - """List all available Conda environments.""" +def list_environments() -> List[str]: + """ + Retrieve a list of all available Conda environments. + + Returns: + List[str]: A list of environment paths. + """ envs = run_command("conda env list --json") if envs: try: - return json.loads(envs)["envs"] + envs_dict = json.loads(envs) + environments = envs_dict.get("envs", []) + return environments except json.JSONDecodeError as e: - logger.error(f"Failed to parse environment list: {e}") + console.log(f"[red]Failed to parse environment list:[/red] {e}") return [] return [] -def create_environment(env_name, packages=None): - """Create a new Conda environment with optional specified packages.""" +def create_environment(env_name: str, packages: Optional[List[str]] = None) -> Optional[str]: + """ + Create a new Conda environment with optional packages. + + Args: + env_name (str): The name of the environment to create. + packages (Optional[List[str]]): A list of packages to install in the environment. + + Returns: + Optional[str]: The command output if successful, None otherwise. + """ cmd = f"conda create -n {env_name} -y" if packages: cmd += f" {' '.join(packages)}" return run_command(cmd) -def remove_environment(env_name): - """Remove a specified Conda environment.""" +def remove_environment(env_name: str) -> Optional[str]: + """ + Remove an existing Conda environment. + + Args: + env_name (str): The name of the environment to remove. + + Returns: + Optional[str]: The command output if successful, None otherwise. + """ return run_command(f"conda env remove -n {env_name} -y") -def install_package(package_name, env_name=None): - """Install a package in a specified Conda environment.""" +def install_package(package_name: str, env_name: Optional[str] = None) -> Optional[str]: + """ + Install a package into a specified Conda environment. + + Args: + package_name (str): The name of the package to install. + env_name (Optional[str]): The target environment name. If None, installs in the current environment. + + Returns: + Optional[str]: The command output if successful, None otherwise. + """ cmd = f"conda install {package_name} -y" if env_name: cmd = f"conda run -n {env_name} {cmd}" return run_command(cmd) -def list_packages(env_name=None): - """List packages in the specified or current Conda environment.""" +def list_packages(env_name: Optional[str] = None) -> Optional[str]: + """ + List all packages in a specified Conda environment. + + Args: + env_name (Optional[str]): The name of the environment. If None, lists packages in the current environment. + + Returns: + Optional[str]: The command output if successful, None otherwise. + """ cmd = "conda list" if env_name: cmd = f"conda run -n {env_name} {cmd}" return run_command(cmd) -def update_package(package_name, env_name=None): - """Update a package in the specified or current Conda environment.""" +def update_package(package_name: str, env_name: Optional[str] = None) -> Optional[str]: + """ + Update a specific package in a Conda environment. + + Args: + package_name (str): The name of the package to update. + env_name (Optional[str]): The target environment name. If None, updates in the current environment. + + Returns: + Optional[str]: The command output if successful, None otherwise. + """ cmd = f"conda update {package_name} -y" if env_name: cmd = f"conda run -n {env_name} {cmd}" return run_command(cmd) -def export_environment(env_name, output_file): - """Export the specified environment to a YAML file.""" +def export_environment(env_name: str, output_file: str) -> Optional[str]: + """ + Export a Conda environment to a YAML file. + + Args: + env_name (str): The name of the environment to export. + output_file (str): The file path to save the exported environment. + + Returns: + Optional[str]: The command output if successful, None otherwise. + """ cmd = f"conda env export -n {env_name} > {output_file}" return run_command(cmd) -def import_environment(input_file, env_name): - """Create a Conda environment from a provided YAML file.""" +def import_environment(input_file: str, env_name: str) -> Optional[str]: + """ + Import a Conda environment from a YAML file. + + Args: + input_file (str): The path to the YAML file. + env_name (str): The name of the new environment to create. + + Returns: + Optional[str]: The command output if successful, None otherwise. + """ cmd = f"conda env create -f {input_file} -n {env_name}" return run_command(cmd) -def update_all_packages(env_name=None): - """Update all packages in the specified or current Conda environment.""" +def update_all_packages(env_name: Optional[str] = None) -> Optional[str]: + """ + Update all packages in a specified Conda environment. + + Args: + env_name (Optional[str]): The target environment name. If None, updates in the current environment. + + Returns: + Optional[str]: The command output if successful, None otherwise. + """ cmd = "conda update --all -y" if env_name: cmd = f"conda run -n {env_name} {cmd}" return run_command(cmd) -def clone_environment(source_env, dest_env): - """Clone an existing Conda environment to a new environment name.""" +def clone_environment(source_env: str, dest_env: str) -> Optional[str]: + """ + Clone an existing Conda environment to a new environment. + + Args: + source_env (str): The name of the source environment. + dest_env (str): The name of the destination environment. + + Returns: + Optional[str]: The command output if successful, None otherwise. + """ cmd = f"conda create --name {dest_env} --clone {source_env} -y" return run_command(cmd) -def handle_list_command(): - """Handle the 'list' command.""" - logger.info("Listing Conda environments...") +def handle_list_command() -> None: + """ + Handle the 'list' command to display all Conda environments. + """ + console.print("[bold cyan]Listing Conda environments...[/bold cyan]") environments = list_environments() - for env in environments: - logger.info(env) - - -def handle_create_command(args): - """Handle the 'create' command.""" - logger.info(f"Creating environment '{args.name}'...") - result = create_environment(args.name, args.packages) - logger.info(result if result else f"Environment '{ - args.name}' created successfully") - - -def handle_remove_command(args): - """Handle the 'remove' command.""" - logger.info(f"Removing environment '{args.name}'...") - result = remove_environment(args.name) - logger.info(result if result else f"Environment '{ - args.name}' removed successfully") - + if environments: + table = Table(title="Conda Environments", box=box.MINIMAL_DOUBLE_EDGE) + table.add_column("Environment Path", style="cyan") + for env in environments: + table.add_row(env) + console.print(table) + else: + console.print("[red]No environments found.[/red]") + + +def handle_create_command(args: argparse.Namespace) -> None: + """ + Handle the 'create' command to create a new Conda environment. + + Args: + args (argparse.Namespace): The parsed command-line arguments. + """ + console.print( + f"[bold green]Creating environment '{args.name}'...[/bold green]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Creating environment...", start=False) + progress.start_task(task.id) + result = create_environment(args.name, args.packages) + if result: + console.print( + f"[green]Environment '{args.name}' created successfully.[/green]") + else: + console.print( + f"[red]Failed to create environment '{args.name}'.[/red]") + + +def handle_remove_command(args: argparse.Namespace) -> None: + """ + Handle the 'remove' command to delete an existing Conda environment. + + Args: + args (argparse.Namespace): The parsed command-line arguments. + """ + console.print( + f"[bold red]Removing environment '{args.name}'...[/bold red]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Removing environment...", start=False) + progress.start_task(task.id) + result = remove_environment(args.name) + if result: + console.print( + f"[green]Environment '{args.name}' removed successfully.[/green]") + else: + console.print( + f"[red]Failed to remove environment '{args.name}'.[/red]") + + +def handle_install_command(args: argparse.Namespace) -> None: + """ + Handle the 'install' command to add a package to a Conda environment. + + Args: + args (argparse.Namespace): The parsed command-line arguments. + """ + console.print( + f"[bold green]Installing package '{args.package}'...[/bold green]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Installing package...", start=False) + progress.start_task(task.id) + result = install_package(args.package, args.env) + if result: + console.print( + f"[green]Package '{args.package}' installed successfully.[/green]") + else: + console.print( + f"[red]Failed to install package '{args.package}'.[/red]") -def handle_install_command(args): - """Handle the 'install' command.""" - logger.info(f"Installing package '{args.package}'...") - result = install_package(args.package, args.env) - logger.info(result if result else f"Package '{ - args.package}' installed successfully") +def handle_list_packages_command(args: argparse.Namespace) -> None: + """ + Handle the 'list-packages' command to display all packages in a Conda environment. -def handle_list_packages_command(args): - """Handle the 'list-packages' command.""" - logger.info("Listing packages...") + Args: + args (argparse.Namespace): The parsed command-line arguments. + """ + env = args.env if args.env else "current" + console.print( + f"[bold cyan]Listing packages in environment '{env}'...[/bold cyan]") result = list_packages(args.env) - logger.info(result if result else f"No packages found in environment '{ - args.env or 'current'}'") - - -def handle_update_command(args): - """Handle the 'update' command.""" - logger.info(f"Updating package '{args.package}'...") - result = update_package(args.package, args.env) - logger.info(result if result else f"Package '{ - args.package}' updated successfully") - - -def handle_export_command(args): - """Handle the 'export' command.""" - logger.info(f"Exporting environment '{args.name}'...") - result = export_environment(args.name, args.output) - logger.info(result if result else f"Environment '{ - args.name}' exported to '{args.output}' successfully") - - -def handle_import_command(args): - """Handle the 'import' command.""" - logger.info(f"Importing environment from '{args.input}'...") - result = import_environment(args.input, args.name) - logger.info(result if result else f"Environment '{ - args.name}' imported successfully") - - -def handle_update_all_command(args): - """Handle the 'update-all' command.""" - logger.info("Updating all packages...") - result = update_all_packages(args.env) - logger.info(result if result else "All packages updated successfully") - - -def handle_clone_command(args): - """Handle the 'clone' command.""" - logger.info(f"Cloning environment '{ - args.source}' to '{args.destination}'...") - result = clone_environment(args.source, args.destination) - logger.info(result if result else f"Environment '{ - args.source}' cloned to '{args.destination}' successfully") + if result: + table = Table( + title=f"Packages in '{env}'", box=box.MINIMAL_DOUBLE_EDGE) + for line in result.splitlines(): + parts = line.split() + if len(parts) >= 3: + table.add_row(parts[0], parts[1], parts[2]) + console.print(table) + else: + console.print(f"[red]No packages found in environment '{env}'.[/red]") + + +def handle_update_command(args: argparse.Namespace) -> None: + """ + Handle the 'update' command to update a specific package in a Conda environment. + + Args: + args (argparse.Namespace): The parsed command-line arguments. + """ + console.print( + f"[bold green]Updating package '{args.package}'...[/bold green]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Updating package...", start=False) + progress.start_task(task.id) + result = update_package(args.package, args.env) + if result: + console.print( + f"[green]Package '{args.package}' updated successfully.[/green]") + else: + console.print(f"[red]Failed to update package '{args.package}'.[/red]") + + +def handle_export_command(args: argparse.Namespace) -> None: + """ + Handle the 'export' command to export a Conda environment to a YAML file. + + Args: + args (argparse.Namespace): The parsed command-line arguments. + """ + console.print( + f"[bold cyan]Exporting environment '{args.name}' to '{args.output}'...[/bold cyan]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Exporting environment...", start=False) + progress.start_task(task.id) + result = export_environment(args.name, args.output) + if result: + console.print( + f"[green]Environment '{args.name}' exported to '{args.output}' successfully.[/green]") + else: + console.print( + f"[red]Failed to export environment '{args.name}'.[/red]") + + +def handle_import_command(args: argparse.Namespace) -> None: + """ + Handle the 'import' command to create a Conda environment from a YAML file. + + Args: + args (argparse.Namespace): The parsed command-line arguments. + """ + console.print( + f"[bold cyan]Importing environment from '{args.input}' to '{args.name}'...[/bold cyan]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Importing environment...", start=False) + progress.start_task(task.id) + result = import_environment(args.input, args.name) + if result: + console.print( + f"[green]Environment '{args.name}' imported successfully.[/green]") + else: + console.print( + f"[red]Failed to import environment '{args.name}'.[/red]") + + +def handle_update_all_command(args: argparse.Namespace) -> None: + """ + Handle the 'update-all' command to update all packages in a Conda environment. + + Args: + args (argparse.Namespace): The parsed command-line arguments. + """ + env = args.env if args.env else "current" + console.print( + f"[bold green]Updating all packages in environment '{env}'...[/bold green]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Updating all packages...", start=False) + progress.start_task(task.id) + result = update_all_packages(args.env) + if result: + console.print( + f"[green]All packages in environment '{env}' updated successfully.[/green]") + else: + console.print( + f"[red]Failed to update packages in environment '{env}'.[/red]") + + +def handle_clone_command(args: argparse.Namespace) -> None: + """ + Handle the 'clone' command to duplicate a Conda environment. + + Args: + args (argparse.Namespace): The parsed command-line arguments. + """ + console.print( + f"[bold cyan]Cloning environment '{args.source}' to '{args.destination}'...[/bold cyan]") + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task("Cloning environment...", start=False) + progress.start_task(task.id) + result = clone_environment(args.source, args.destination) + if result: + console.print( + f"[green]Environment '{args.source}' cloned to '{args.destination}' successfully.[/green]") + else: + console.print( + f"[red]Failed to clone environment '{args.source}'.[/red]") -def main(): - """Main entry point for the Conda environment management tool.""" +def main() -> None: + """ + Main function to parse command-line arguments and execute corresponding commands. + """ parser = argparse.ArgumentParser( - description="Advanced Conda Environment Management Tool") + description="Advanced Conda Environment Management Tool with Rich Enhancements" + ) subparsers = parser.add_subparsers( - dest="command", help="Available commands") + dest="command", help="Available commands" + ) # Define subparsers for various commands subparsers.add_parser("list", help="List all Conda environments") create_parser = subparsers.add_parser( - "create", help="Create a new Conda environment") + "create", help="Create a new Conda environment" + ) create_parser.add_argument("name", help="Environment name") create_parser.add_argument( - "-p", "--packages", nargs="+", help="Packages to install") + "-p", "--packages", nargs="+", help="Packages to install" + ) remove_parser = subparsers.add_parser( - "remove", help="Remove a Conda environment") + "remove", help="Remove a Conda environment" + ) remove_parser.add_argument("name", help="Environment name") install_parser = subparsers.add_parser( - "install", help="Install a package in an environment") + "install", help="Install a package in an environment" + ) install_parser.add_argument("package", help="Package name") install_parser.add_argument("-e", "--env", help="Environment name") list_packages_parser = subparsers.add_parser( - "list-packages", help="List packages in an environment") + "list-packages", help="List packages in an environment" + ) list_packages_parser.add_argument("-e", "--env", help="Environment name") update_parser = subparsers.add_parser( - "update", help="Update a package in an environment") + "update", help="Update a package in an environment" + ) update_parser.add_argument("package", help="Package name") update_parser.add_argument("-e", "--env", help="Environment name") export_parser = subparsers.add_parser( - "export", help="Export an environment to a YAML file") + "export", help="Export an environment to a YAML file" + ) export_parser.add_argument("name", help="Environment name") export_parser.add_argument("output", help="Output file name") import_parser = subparsers.add_parser( - "import", help="Create an environment from a YAML file") + "import", help="Create an environment from a YAML file" + ) import_parser.add_argument("input", help="Input YAML file") import_parser.add_argument("name", help="New environment name") update_all_parser = subparsers.add_parser( - "update-all", help="Update all packages in an environment") + "update-all", help="Update all packages in an environment" + ) update_all_parser.add_argument("-e", "--env", help="Environment name") clone_parser = subparsers.add_parser( - "clone", help="Clone an existing environment") + "clone", help="Clone an existing environment" + ) clone_parser.add_argument("source", help="Source environment name") clone_parser.add_argument( - "destination", help="Destination environment name") + "destination", help="Destination environment name" + ) args = parser.parse_args() - # Command execution using parsed arguments + # Execute the appropriate handler based on the command if args.command == "list": handle_list_command() elif args.command == "create": diff --git a/scripts/docker.py b/scripts/docker.py index de22a67a..355a9cf9 100644 --- a/scripts/docker.py +++ b/scripts/docker.py @@ -1,16 +1,24 @@ +# docker.py + import docker import argparse import sys import json from typing import Literal, Union from dataclasses import dataclass, asdict -from prettytable import PrettyTable +from rich.table import Table +from rich.console import Console +from rich.progress import Progress, SpinnerColumn, TextColumn +from rich import box import os import tempfile import tarfile import yaml +console = Console() + + @dataclass class ContainerInfo: id: str @@ -56,9 +64,11 @@ def manage_container(self, action: Literal["start", "stop", "restart", "remove", try: container = self.client.containers.get(container_id) getattr(container, action)() - return f"Container {container_id} {action}ed" + return f"Container {container_id} {action}ed successfully." except docker.errors.NotFound: - return f"Container {container_id} not found" + return f"Container {container_id} not found." + except docker.errors.APIError as e: + return f"Docker API Error: {str(e)}" def create_container(self, image: str, name: str, ports: dict = None, volumes: list = None, environment: dict = None) -> Union[str, ContainerInfo]: try: @@ -76,24 +86,35 @@ def create_container(self, image: str, name: str, ports: dict = None, volumes: l container.ports, cpu_usage, memory_usage ) except docker.errors.ImageNotFound: - return f"Image {image} not found" + return f"Image {image} not found." + except docker.errors.APIError as e: + return f"Docker API Error: {str(e)}" def pull_image(self, image: str) -> str: try: - self.client.images.pull(image) - return f"Image {image} pulled successfully" + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task( + f"Pulling image {image}...", start=False) + self.client.images.pull(image) + progress.start_task(task.id) + return f"Image {image} pulled successfully." except docker.errors.ImageNotFound: - return f"Image {image} not found" + return f"Image {image} not found." + except docker.errors.APIError as e: + return f"Docker API Error: {str(e)}" def list_images(self) -> list[str]: - return [image.tags[0] for image in self.client.images.list() if image.tags] + images = self.client.images.list() + return [tag if tag else "None" for image in images for tag in image.tags] def get_container_logs(self, container_id: str, lines: int = 50) -> str: try: container = self.client.containers.get(container_id) return container.logs(tail=lines).decode('utf-8') except docker.errors.NotFound: - return f"Container {container_id} not found" + return f"Container {container_id} not found." + except docker.errors.APIError as e: + return f"Docker API Error: {str(e)}" def exec_command(self, container_id: str, cmd: str) -> str: try: @@ -101,7 +122,9 @@ def exec_command(self, container_id: str, cmd: str) -> str: exit_code, output = container.exec_run(cmd) return f"Exit Code: {exit_code}\nOutput:\n{output.decode('utf-8')}" except docker.errors.NotFound: - return f"Container {container_id} not found" + return f"Container {container_id} not found." + except docker.errors.APIError as e: + return f"Docker API Error: {str(e)}" def get_container_stats(self, container_id: str) -> Union[str, dict]: try: @@ -114,7 +137,11 @@ def get_container_stats(self, container_id: str) -> Union[str, dict]: "Block I/O": f"In: {stats['blkio_stats']['io_service_bytes_recursive'][0]['value']/1024/1024:.2f}MB, Out: {stats['blkio_stats']['io_service_bytes_recursive'][1]['value']/1024/1024:.2f}MB" } except docker.errors.NotFound: - return f"Container {container_id} not found" + return f"Container {container_id} not found." + except KeyError: + return f"Error retrieving stats for container {container_id}." + except docker.errors.APIError as e: + return f"Docker API Error: {str(e)}" def copy_to_container(self, container_id: str, src: str, dest: str) -> str: try: @@ -122,12 +149,15 @@ def copy_to_container(self, container_id: str, src: str, dest: str) -> str: with tempfile.NamedTemporaryFile() as tmp: with tarfile.open(tmp.name, "w:gz") as tar: tar.add(src, arcname=os.path.basename(src)) - container.put_archive(os.path.dirname(dest), tmp.read()) - return f"File {src} copied to container {container_id} at {dest}" + with open(tmp.name, 'rb') as f: + container.put_archive(os.path.dirname(dest), f.read()) + return f"File {src} copied to container {container_id} at {dest}." except docker.errors.NotFound: - return f"Container {container_id} not found" + return f"Container {container_id} not found." except FileNotFoundError: - return f"Source file {src} not found" + return f"Source file {src} not found." + except docker.errors.APIError as e: + return f"Docker API Error: {str(e)}" def copy_from_container(self, container_id: str, src: str, dest: str) -> str: try: @@ -139,11 +169,13 @@ def copy_from_container(self, container_id: str, src: str, dest: str) -> str: tmp.seek(0) with tarfile.open(fileobj=tmp) as tar: tar.extractall(path=dest) - return f"File {src} copied from container {container_id} to {dest}" + return f"File {src} copied from container {container_id} to {dest}." except docker.errors.NotFound: - return f"Container {container_id} not found" + return f"Container {container_id} not found." except KeyError: - return f"Source file {src} not found in container" + return f"Source file {src} not found in container." + except docker.errors.APIError as e: + return f"Docker API Error: {str(e)}" def export_container(self, container_id: str, output_path: str) -> str: try: @@ -151,33 +183,47 @@ def export_container(self, container_id: str, output_path: str) -> str: with open(output_path, 'wb') as f: for chunk in container.export(): f.write(chunk) - return f"Container {container_id} exported to {output_path}" + return f"Container {container_id} exported to {output_path}." except docker.errors.NotFound: - return f"Container {container_id} not found" + return f"Container {container_id} not found." + except docker.errors.APIError as e: + return f"Docker API Error: {str(e)}" def import_image(self, image_path: str, repository: str, tag: str) -> str: try: with open(image_path, 'rb') as f: - image = self.client.images.import_image( + self.client.images.import_image( f, repository=repository, tag=tag) - return f"Image imported as {repository}:{tag}" + return f"Image imported as {repository}:{tag}." except FileNotFoundError: - return f"Image file {image_path} not found" + return f"Image file {image_path} not found." + except docker.errors.APIError as e: + return f"Docker API Error: {str(e)}" def build_image(self, dockerfile_path: str, tag: str) -> str: try: - image, logs = self.client.images.build(path=os.path.dirname( - dockerfile_path), dockerfile=os.path.basename(dockerfile_path), tag=tag) - return f"Image built successfully with tag {tag}" + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task( + f"Building image {tag}...", start=False) + image, logs = self.client.images.build(path=os.path.dirname( + dockerfile_path), dockerfile=os.path.basename(dockerfile_path), tag=tag) + progress.start_task(task.id) + return f"Image built successfully with tag {tag}." except docker.errors.BuildError as e: return f"Error building image: {str(e)}" + except docker.errors.APIError as e: + return f"Docker API Error: {str(e)}" def compose_up(self, compose_file: str) -> str: try: project = self.client.compose.project.from_config( project_name="myproject", config_files=[compose_file]) - project.up() - return f"Docker Compose services started from {compose_file}" + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task( + f"Starting Docker Compose services from {compose_file}...", start=False) + project.up() + progress.start_task(task.id) + return f"Docker Compose services started from {compose_file}." except docker.errors.APIError as e: return f"Error starting Docker Compose services: {str(e)}" @@ -185,24 +231,35 @@ def compose_down(self, compose_file: str) -> str: try: project = self.client.compose.project.from_config( project_name="myproject", config_files=[compose_file]) - project.down() - return f"Docker Compose services stopped from {compose_file}" + with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress: + task = progress.add_task( + f"Stopping Docker Compose services from {compose_file}...", start=False) + project.down() + progress.start_task(task.id) + return f"Docker Compose services stopped from {compose_file}." except docker.errors.APIError as e: return f"Error stopping Docker Compose services: {str(e)}" def print_table(data, headers): - table = PrettyTable() - table.field_names = headers + table = Table(show_header=True, header_style="bold magenta", + box=box.MINIMAL_DOUBLE_EDGE) + for header in headers: + table.add_column(header, style="dim", overflow="fold") for row in data: - table.add_row(row) - print(table) + table.add_row(*row) + console.print(table) def parse_key_value_pairs(s: str) -> dict: if not s: return {} - return dict(item.split("=") for item in s.split(",")) + try: + return dict(item.split("=") for item in s.split(",")) + except ValueError: + console.print( + "[red]Invalid format for key-value pairs. Use 'KEY=VALUE' separated by commas.[/red]") + sys.exit(1) def main(): @@ -314,7 +371,8 @@ def main(): if args.command == "list": containers = manager.list_containers(all=args.all) if args.format == "json": - print(json.dumps([asdict(c) for c in containers], indent=2)) + console.print(json.dumps([asdict(c) + for c in containers], indent=2)) else: data = [[c.id[:12], c.name, c.status, c.image, f"{c.cpu_usage:.2f}%", f"{c.memory_usage:.2f}%"] for c in containers] @@ -324,7 +382,10 @@ def main(): elif args.command == "manage": result = manager.manage_container(args.action, args.container_id) - print(result) + if "successfully" in result: + console.print(f"[green]{result}[/green]") + else: + console.print(f"[red]{result}[/red]") elif args.command == "create": ports = parse_key_value_pairs(args.ports) @@ -333,73 +394,108 @@ def main(): result = manager.create_container( args.image, args.name, ports, volumes, env) if isinstance(result, ContainerInfo): - print( - f"Container created - ID: {result.id}, Name: {result.name}, Status: {result.status}") + console.print( + f"[green]Container created - ID: {result.id}, Name: {result.name}, Status: {result.status}[/green]") else: - print(result) + console.print(f"[red]{result}[/red]") elif args.command == "pull": result = manager.pull_image(args.image) - print(result) + if "successfully" in result: + console.print(f"[green]{result}[/green]") + else: + console.print(f"[red]{result}[/red]") elif args.command == "images": images = manager.list_images() - print("Available images:") + table = Table(title="Available Images", + box=box.MINIMAL_DOUBLE_EDGE) + table.add_column("Image", style="cyan") for image in images: - print(image) + table.add_row(image) + console.print(table) elif args.command == "logs": logs = manager.get_container_logs(args.container_id, args.lines) - print(f"Logs for container {args.container_id}:") - print(logs) + console.print( + f"[bold]Logs for container {args.container_id}[/bold]:") + console.print(logs) elif args.command == "exec": result = manager.exec_command(args.container_id, args.command) - print(result) + console.print(result) elif args.command == "stats": stats = manager.get_container_stats(args.container_id) if isinstance(stats, dict): + table = Table( + title=f"Statistics for {args.container_id}", box=box.MINIMAL_DOUBLE_EDGE) for key, value in stats.items(): - print(f"{key}: {value}") + table.add_row(key, value) + console.print(table) else: - print(stats) + console.print(f"[red]{stats}[/red]") elif args.command == "cp-to": result = manager.copy_to_container( args.container_id, args.src, args.dest) - print(result) + if "copied" in result: + console.print(f"[green]{result}[/green]") + else: + console.print(f"[red]{result}[/red]") elif args.command == "cp-from": result = manager.copy_from_container( args.container_id, args.src, args.dest) - print(result) + if "copied" in result: + console.print(f"[green]{result}[/green]") + else: + console.print(f"[red]{result}[/red]") elif args.command == "export": result = manager.export_container(args.container_id, args.output) - print(result) + if "exported" in result: + console.print(f"[green]{result}[/green]") + else: + console.print(f"[red]{result}[/red]") elif args.command == "import": result = manager.import_image( args.image_path, args.repository, args.tag) - print(result) + if "imported" in result: + console.print(f"[green]{result}[/green]") + else: + console.print(f"[red]{result}[/red]") elif args.command == "build": result = manager.build_image(args.dockerfile, args.tag) - print(result) + if "successfully" in result: + console.print(f"[green]{result}[/green]") + else: + console.print(f"[red]{result}[/red]") elif args.command == "compose-up": result = manager.compose_up(args.compose_file) - print(result) + if "started" in result: + console.print(f"[green]{result}[/green]") + else: + console.print(f"[red]{result}[/red]") elif args.command == "compose-down": result = manager.compose_down(args.compose_file) - print(result) + if "stopped" in result: + console.print(f"[green]{result}[/green]") + else: + console.print(f"[red]{result}[/red]") + + else: + console.print("[red]Invalid command.[/red]") + sys.exit(1) except docker.errors.APIError as e: - print(f"Docker API Error: {str(e)}") + console.print(f"[red]Docker API Error: {str(e)}[/red]") except Exception as e: - print(f"An unexpected error occurred: {str(e)}") + console.print(f"[red]An unexpected error occurred: {str(e)}[/red]") if __name__ == "__main__": diff --git a/scripts/package.py b/scripts/package.py index 3db5e0cd..bbec71bd 100644 --- a/scripts/package.py +++ b/scripts/package.py @@ -1,72 +1,126 @@ +# package.py + +#!/usr/bin/env python3 +""" +package.py + +A comprehensive Python package manager for downloading, building, and installing software packages on Linux. +Supports renaming, listing, copying, deleting, moving, and more advanced features, with Rich library for beautified output. + +Usage: + python package.py {install|update|list|check-updates|export-config} [package names...] [--config ConfigFilePath] [--export-file ExportConfigFilePath] [--jobs NumberOfParallelTasks] + +Commands: + install : Install specified packages or all packages defined in the configuration file. + update : Check and update all packages to the latest versions. + list : List all configured packages and their versions. + check-updates : Check if there are updates available for all packages. + export-config : Export the current configuration to a YAML file. + +Options: + --config : Specify the configuration file path (default: packages.yaml). + --export-file : Specify the path to export the configuration file (default: exported_config.yaml). + --jobs : Specify the number of parallel build tasks (default: number of CPU cores). + +Examples: + Install packages: + python package.py install package1 package2 + + Update all packages: + python package.py update + + List all packages: + python package.py list + + Check for updates: + python package.py check-updates + + Export configuration file: + python package.py export-config --export-file my_config.yaml +""" + import argparse import subprocess +import sys import tarfile import os import hashlib from concurrent.futures import ThreadPoolExecutor, as_completed from pathlib import Path -from typing import Dict, List, Optional +from typing import Dict, List, Optional, Tuple from dataclasses import dataclass import requests import yaml import semver -from loguru import logger -from tqdm import tqdm +from rich.console import Console +from rich.logging import RichHandler +from rich.progress import Progress, BarColumn, TextColumn, TimeElapsedColumn, SpinnerColumn +from rich.prompt import Prompt, Confirm +from rich.table import Table +import logging + +# Configure Rich logging +logging.basicConfig( + level=logging.INFO, + format="%(message)s", + datefmt="[%X]", + handlers=[RichHandler()] +) +logger = logging.getLogger("package_manager") + +console = Console() @dataclass class Source: - """Represents a source for a package, typically a Git repository or custom URL.""" + """Represents the source of a package, typically a Git repository or custom URL.""" url: str type: str # 'github', 'gitlab', 'custom' @dataclass class Package: - """Represents metadata and configuration for a software package.""" + """Represents the metadata and configuration of a software package.""" name: str sources: List[Source] version: str dependencies: List[str] # List of package dependencies checksum: Optional[Dict[str, str]] # e.g., {'md5': '...', 'sha256': '...'} - # Arguments passed to the build system - build_args: Optional[Dict[str, str]] + build_args: Optional[Dict[str, str]] # Build system parameters class PackageManager: - """Central class for managing the download, building, and installation of software packages.""" + """Core class for managing package downloading, building, and installation.""" def __init__(self, config_file: str = "packages.yaml"): self.config_file = config_file self.packages: Dict[str, Package] = {} - # Define directories for caching, installation, and logs + # Define directories for cache, installation, and logs self.cache_dir = Path(os.getenv("CPP_PACKAGE_CACHE", "./cache")) self.install_dir = Path(os.getenv("CPP_PACKAGE_INSTALL", "./install")) self.log_dir = Path(os.getenv("CPP_PACKAGE_LOGS", "./logs")) self.config_version = "1.0" def load_config(self): - """Loads the package configuration from a YAML file.""" + """Load package configuration from a YAML file.""" try: with open(self.config_file, 'r', encoding='utf-8') as f: config = yaml.safe_load(f) - # Validate the configuration format + # Validate configuration format if not isinstance(config, dict) or 'version' not in config or 'packages' not in config: raise ValueError("Invalid configuration format") if config['version'] != self.config_version: - logger.warning(f"Config file version mismatch. Expected { - self.config_version}, got {config.get('version')}") + logger.warning( + f"Configuration file version mismatch. Expected: {self.config_version}, Found: {config.get('version')}") # Parse package information into objects for name, info in config['packages'].items(): if not all(k in info for k in ('sources', 'version')): - raise ValueError( - f"Missing required fields for package {name}") + raise ValueError(f"Package {name} is missing required fields") - sources = [Source(url=s['url'], type=s['type']) - for s in info['sources']] + sources = [Source(url=s['url'], type=s['type']) for s in info['sources']] self.packages[name] = Package( name=name, sources=sources, @@ -75,47 +129,55 @@ def load_config(self): checksum=info.get('checksum'), build_args=info.get('build_args', {}) ) + logger.info("[bold green]Configuration file loaded successfully.[/bold green]") except Exception as e: logger.error(f"Failed to load configuration: {e}") raise def download_package(self, package: Package) -> Optional[Path]: - """Downloads the package archive from its sources.""" + """Download the package archive from its sources.""" cache_dir = self.cache_dir / package.name / package.version cache_dir.mkdir(parents=True, exist_ok=True) archive_path = cache_dir / f"{package.name}-{package.version}.tar.gz" if archive_path.exists(): - logger.info(f"Using cached version of { - package.name} {package.version}") + logger.info(f"Using cached version {package.name} {package.version}") return archive_path for source in package.sources: try: url = self.construct_download_url(source, package) - response = requests.get(url, stream=True, timeout=20) - if response.status_code == 200: - with open(archive_path, 'wb') as f: - for chunk in tqdm(response.iter_content(chunk_size=8192), desc=f'Downloading {package.name}'): - f.write(chunk) - - if package.checksum and not self.verify_checksum(archive_path, package.checksum): - logger.error(f"Checksum verification failed for { - package.name}. Retrying other sources.") - archive_path.unlink() - continue - logger.info(f"Downloaded {package.name} version { - package.version} from {source.type}") - return archive_path + with Progress(SpinnerColumn(), TextColumn("{task.description}"), BarColumn(), + "[progress.percentage]{task.percentage:>3.1f}%", TimeElapsedColumn(), + transient=True) as progress: + task = progress.add_task( + f"Downloading {package.name} …", total=None) + response = requests.get(url, stream=True, timeout=30) + if response.status_code == 200: + with open(archive_path, 'wb') as f: + for chunk in response.iter_content(chunk_size=8192): + if chunk: + f.write(chunk) + progress.remove_task(task) + + if package.checksum and not self.verify_checksum(archive_path, package.checksum): + logger.error(f"Checksum mismatch for {package.name}, trying next source.") + archive_path.unlink() + continue + logger.info( + f"[green]Download successful: {package.name} version {package.version} from {source.type}[/green]") + return archive_path + else: + logger.error( + f"Failed to download {package.name} from {source.url}, status code: {response.status_code}") except requests.RequestException as e: - logger.error(f"Error downloading { - package.name} from {source.url}: {e}") + logger.error(f"Error downloading {package.name} from {source.url}: {e}") - logger.error(f"Failed to download {package.name} from all sources") + logger.error(f"[red]Failed to download {package.name} from all sources.[/red]") return None def construct_download_url(self, source: Source, package: Package) -> str: - """Constructs the appropriate URL to download the package source archive.""" + """Construct the URL to download the package's source code archive.""" if source.type == 'github': return f"{source.url}/archive/refs/tags/v{package.version}.tar.gz" elif source.type == 'gitlab': @@ -124,7 +186,7 @@ def construct_download_url(self, source: Source, package: Package) -> str: return source.url.format(version=package.version) def verify_checksum(self, file_path: Path, checksums: Dict[str, str]) -> bool: - """Verifies the checksum of the downloaded file.""" + """Verify the checksum of the downloaded file.""" for algorithm, expected in checksums.items(): if algorithm not in ['md5', 'sha256']: logger.warning(f"Unsupported checksum algorithm: {algorithm}") @@ -136,19 +198,20 @@ def verify_checksum(self, file_path: Path, checksums: Dict[str, str]) -> bool: hash_obj.update(chunk) if hash_obj.hexdigest() != expected: - logger.error( - f"{algorithm.upper()} checksum mismatch for {file_path}") + logger.error(f"{algorithm.upper()} checksum mismatch: {file_path}") return False return True def extract_package(self, archive_path: Path, package: Package) -> Optional[Path]: - """Extracts the package archive to a directory.""" + """Extract the package archive to the specified directory.""" extract_dir = self.cache_dir / package.name / package.version try: with tarfile.open(archive_path, "r:gz") as tar: tar.extractall(path=extract_dir) - logger.info(f"Extracted {package.name} to {extract_dir}") - return next(extract_dir.glob(f"{package.name}*"), None) + logger.info(f"[green]Extracted {package.name} to {extract_dir}[/green]") + # Assume the extracted directory starts with the package name + extracted_dirs = list(extract_dir.glob(f"{package.name}*")) + return extracted_dirs[0] if extracted_dirs else None except (tarfile.TarError, OSError) as e: logger.error(f"Failed to extract {package.name}: {e}") return None @@ -162,14 +225,13 @@ def detect_build_system(self, source_dir: Path) -> str: elif (source_dir / 'configure').exists(): return 'autotools' else: - logger.warning(f"No recognized build system found in { - source_dir}. Defaulting to 'manual'.") + logger.warning(f"Unrecognized build system in {source_dir}, defaulting to 'manual'.") return 'manual' - def build_package(self, package: Package, source_dir: Optional[Path]): - """Builds the package using the detected build system.""" + def build_package(self, package: Package, source_dir: Optional[Path], jobs: int): + """Build the package using the detected build system.""" if source_dir is None: - logger.error(f"Source directory for {package.name} is not valid") + logger.error(f"Invalid source directory for {package.name}.") return build_system = self.detect_build_system(source_dir) @@ -177,6 +239,7 @@ def build_package(self, package: Package, source_dir: Optional[Path]): build_dir.mkdir(parents=True, exist_ok=True) install_dir = self.install_dir / package.name / package.version + install_dir.mkdir(parents=True, exist_ok=True) if build_system == 'cmake': cmake_command = [ @@ -185,31 +248,41 @@ def build_package(self, package: Package, source_dir: Optional[Path]): "-DCMAKE_BUILD_TYPE=Release" ] + [f"-D{key}={value}" for key, value in package.build_args.items()] - self.run_build_commands([cmake_command, [ - "cmake", "--build", ".", "--target", "install", f"-j{os.cpu_count()}"]], build_dir) + build_commands = [ + cmake_command, + ["cmake", "--build", ".", "--target", "install", f"-j{jobs}"] + ] + self.run_build_commands(build_commands, build_dir) elif build_system == 'make': - self.run_build_commands( - [["make"], ["make", "install"]], source_dir) + build_commands = [ + ["make", f"-j{jobs}"], + ["make", "install"] + ] + self.run_build_commands(build_commands, source_dir) elif build_system == 'autotools': - self.run_build_commands([ + build_commands = [ ["./configure", f"--prefix={install_dir}"], - ["make"], ["make", "install"] - ], source_dir) + ["make", f"-j{jobs}"], + ["make", "install"] + ] + self.run_build_commands(build_commands, source_dir) else: - logger.error(f"Cannot build { - package.name} as no supported build system was found.") + logger.error(f"Cannot build {package.name}, unsupported build system.") def run_build_commands(self, commands: List[List[str]], cwd: Path): - """Executes a list of shell commands for building the package.""" + """Execute a list of build commands for the package.""" try: for command in commands: - subprocess.run(command, cwd=cwd, check=True) - logger.info("Build successful") + logger.debug(f"Executing command: {' '.join(command)} in {cwd}") + subprocess.run(command, cwd=cwd, check=True, + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + logger.info("[green]Build succeeded.[/green]") except subprocess.CalledProcessError as e: logger.error(f"Build failed: {e}") + raise - def process_package(self, package: Package, processed: set): - """Processes (downloads, extracts, builds) the package and its dependencies.""" + def process_package(self, package: Package, processed: set, jobs: int): + """Process (download, extract, build) a package and its dependencies.""" if package.name in processed: return @@ -217,48 +290,50 @@ def process_package(self, package: Package, processed: set): dependency, dep_version = self.parse_dependency(dep_name) dep_package = self.packages.get(dependency) if dep_package: - if semver.compare(dep_package.version, dep_version) < 0: - logger.warning(f"Dependency {dep_name} version mismatch for { - package.name}. Required: {dep_version}, found: {dep_package.version}") - else: - self.process_package(dep_package, processed) + if dep_version and semver.compare(dep_package.version, dep_version) < 0: + logger.warning( + f"Dependency {dep_name} version mismatch. Required: {dep_version}, Found: {dep_package.version}") + self.process_package(dep_package, processed, jobs) else: - logger.warning( - f"Dependency {dep_name} not found for {package.name}") + logger.warning(f"Dependency package {dep_name} for {package.name} not found") archive_path = self.download_package(package) if archive_path: source_dir = self.extract_package(archive_path, package) - self.build_package(package, source_dir) + self.build_package(package, source_dir, jobs) processed.add(package.name) - def parse_dependency(self, dependency: str) -> (str, str): - """Parses a dependency string to extract its name and version.""" + def parse_dependency(self, dependency: str) -> Tuple[str, Optional[str]]: + """Parse a dependency string to extract its name and version.""" if '==' in dependency: return tuple(dependency.split('==')) - return (dependency, '') + return (dependency, None) - def run(self, packages_to_install: Optional[List[str]] = None): - """Runs the package manager to install the specified packages.""" + def run(self, packages_to_install: Optional[List[str]] = None, jobs: int = 1): + """Run the package manager to install specified packages.""" self.load_config() processed = set() - with ThreadPoolExecutor(max_workers=os.cpu_count() or 1) as executor: + with ThreadPoolExecutor(max_workers=jobs) as executor: if packages_to_install: - futures = {executor.submit(self.process_package, self.packages[name], processed): name + futures = {executor.submit(self.process_package, self.packages[name], processed, jobs) for name in packages_to_install if name in self.packages} + not_found = [ + name for name in packages_to_install if name not in self.packages] + if not_found: + for name in not_found: + logger.warning(f"Package {name} not found in configuration.") else: - futures = {executor.submit(self.process_package, package, processed): package.name + futures = {executor.submit(self.process_package, package, processed, jobs) for package in self.packages.values()} for future in as_completed(futures): try: future.result() except Exception as e: - logger.error(f"Error processing package { - futures[future]}: {e}") + logger.error(f"Error processing package: {e}") def check_for_updates(self): - """Checks if newer versions are available for all packages.""" + """Check if any packages have updates available.""" for name, package in self.packages.items(): for source in package.sources: if source.type == 'github': @@ -266,24 +341,21 @@ def check_for_updates(self): try: response = requests.get(url, timeout=10) if response.status_code == 200: - latest_version = response.url.split( - '/')[-1].lstrip('v') + latest_version = response.url.rstrip('/').split('/')[-1].lstrip('v') if semver.compare(latest_version, package.version) > 0: - logger.info(f"Update available for {name}: { - package.version} -> {latest_version}") + logger.info( + f"[yellow]Update available: {name} {package.version} -> {latest_version}[/yellow]") else: logger.info( f"{name} is up to date ({package.version})") break except requests.RequestException as e: - logger.error(f"Error checking updates for { - name} from {source.type}: {e}") + logger.error(f"Error checking updates for {name}: {e}") else: - logger.warning( - f"Update check not supported for source type: {source.type}") + logger.warning(f"Unsupported source type for update check: {source.type}") def export_config(self, output_file: str): - """Exports the current package configuration to a YAML file.""" + """Export the current package configuration to a YAML file.""" config = { 'version': self.config_version, 'packages': {name: { @@ -294,25 +366,89 @@ def export_config(self, output_file: str): 'build_args': package.build_args } for name, package in self.packages.items()} } - with open(output_file, 'w', encoding='utf-8') as f: - yaml.dump(config, f) - logger.info(f"Exported config to {output_file}") + try: + with open(output_file, 'w', encoding='utf-8') as f: + yaml.dump(config, f) + logger.info(f"Configuration exported to {output_file}") + except Exception as e: + logger.error(f"Failed to export configuration: {e}") + + def list_packages(self): + """List all configured packages and their versions.""" + table = Table(title="Configured Packages", show_lines=True) + table.add_column("Package Name", style="cyan", no_wrap=True) + table.add_column("Version", style="magenta") + for name, package in self.packages.items(): + table.add_row(name, package.version) + console.print(table) def parse_args(): - """Parses command-line arguments for the package manager.""" + """Parse command-line arguments for the package manager.""" parser = argparse.ArgumentParser( - description="Advanced C++ Package Manager") - parser.add_argument("command", choices=["install", "update", "list", "check-updates", "export-config"], - help="Command to execute") - parser.add_argument("packages", nargs="*", - help="Packages to install or update") - parser.add_argument("--config", default="packages.yaml", - help="Path to the config file") - parser.add_argument("--export-file", default="exported_config.yaml", - help="Path to export the config file") - parser.add_argument("--jobs", type=int, default=os.cpu_count(), - help="Number of parallel jobs for building") + description="Advanced C++ Package Manager", + formatter_class=argparse.RawTextHelpFormatter, + epilog=""" +Examples: + Install packages: + python package.py install package1 package2 + + Update all packages: + python package.py update + + List all packages: + python package.py list + + Check for updates: + python package.py check-updates + + Export configuration file: + python package.py export-config --export-file my_config.yaml + """ + ) + subparsers = parser.add_subparsers( + title="Commands", dest="command", required=True) + + # Install command + install_parser = subparsers.add_parser( + "install", help="Install specified packages or all packages.") + install_parser.add_argument( + "packages", nargs="*", help="Names of packages to install. If empty, install all packages.") + install_parser.add_argument( + "--config", default="packages.yaml", help="Path to the configuration file (default: packages.yaml).") + install_parser.add_argument( + "--jobs", type=int, default=os.cpu_count(), help="Number of parallel build tasks (default: number of CPU cores).") + + # Update command + update_parser = subparsers.add_parser( + "update", help="Check and update all packages to the latest versions.") + update_parser.add_argument( + "packages", nargs="*", help="Names of packages to update. If empty, update all packages.") + update_parser.add_argument( + "--config", default="packages.yaml", help="Path to the configuration file (default: packages.yaml).") + update_parser.add_argument( + "--jobs", type=int, default=os.cpu_count(), help="Number of parallel build tasks (default: number of CPU cores).") + + # List command + list_parser = subparsers.add_parser( + "list", help="List all configured packages and their versions.") + list_parser.add_argument( + "--config", default="packages.yaml", help="Path to the configuration file (default: packages.yaml).") + + # Check updates command + check_updates_parser = subparsers.add_parser( + "check-updates", help="Check if there are updates available for all packages.") + check_updates_parser.add_argument( + "--config", default="packages.yaml", help="Path to the configuration file (default: packages.yaml).") + + # Export configuration command + export_config_parser = subparsers.add_parser( + "export-config", help="Export the current configuration to a YAML file.") + export_config_parser.add_argument( + "--config", default="packages.yaml", help="Path to the configuration file (default: packages.yaml).") + export_config_parser.add_argument( + "--export-file", default="exported_config.yaml", help="Path to export the configuration file (default: exported_config.yaml).") + return parser.parse_args() @@ -322,21 +458,26 @@ def main(): manager = PackageManager(config_file=args.config) if args.command == "install": - manager.run(args.packages) + manager.run( + packages_to_install=args.packages if args.packages else None, jobs=args.jobs) elif args.command == "update": manager.check_for_updates() if args.packages: - manager.run(args.packages) + manager.run(packages_to_install=args.packages, jobs=args.jobs) + else: + manager.run(packages_to_install=None, jobs=args.jobs) elif args.command == "list": manager.load_config() - for name, package in manager.packages.items(): - print(f"{name} ({package.version})") + manager.list_packages() elif args.command == "check-updates": manager.check_for_updates() elif args.command == "export-config": manager.load_config() manager.export_config(args.export_file) + else: + logger.error("[red]Invalid command.[/red]") + sys.exit(1) if __name__ == "__main__": - main() + main() \ No newline at end of file diff --git a/scripts/pip.py b/scripts/pip.py new file mode 100644 index 00000000..8842dc9c --- /dev/null +++ b/scripts/pip.py @@ -0,0 +1,317 @@ +#!/usr/bin/env python3 + +import argparse +import subprocess +import json +from datetime import datetime +import logging +import sys +import shutil +from pathlib import Path +from concurrent.futures import ThreadPoolExecutor, as_completed + +try: + from rich import print + from rich.console import Console + from rich.table import Table + from rich.progress import Progress, BarColumn, TimeRemainingColumn, TextColumn +except ImportError: + print("[red]Please install the 'rich' library: pip install rich[/red]") + sys.exit(1) + + +# Initialize Rich Console +console = Console() + +# Configure Logging +logger = logging.getLogger('PythonPackageUpdater') +logger.setLevel(logging.INFO) +log_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') +file_handler = logging.FileHandler('PythonPackageUpdater.log') +file_handler.setFormatter(log_formatter) +logger.addHandler(file_handler) + + +def check_pip(): + """Check if pip is available.""" + if shutil.which("pip") is None: + console.print( + "[red]pip not found. Please ensure Python is correctly installed and added to PATH.[/red]") + logger.error("pip is not installed or not in PATH.") + sys.exit(1) + + +def get_installed_packages(update_all): + """ + Retrieve a list of installed or outdated packages. + :param update_all: Whether to retrieve all installed packages + :return: List of package names + """ + try: + if update_all: + result = subprocess.run( + ['pip', 'list', '--format=json'], capture_output=True, text=True, check=True) + else: + result = subprocess.run( + ['pip', 'list', '--outdated', '--format=json'], capture_output=True, text=True, check=True) + packages = json.loads(result.stdout) + return [pkg['name'] for pkg in packages] + except subprocess.CalledProcessError as e: + console.print(f"[red]Failed to retrieve package list: {e}[/red]") + logger.error(f"Failed to retrieve package list: {e}") + sys.exit(1) + except json.JSONDecodeError as e: + console.print(f"[red]Error parsing package list: {e}[/red]") + logger.error(f"Error parsing package list: {e}") + sys.exit(1) + + +def update_package(package): + """ + Update a single package. + :param package: Package name + :return: (Package name, Success/Failure) + """ + try: + subprocess.run(['pip', 'install', '--upgrade', package], check=True, + stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + logger.info(f"Package updated successfully: {package}") + return (package, True) + except subprocess.CalledProcessError: + logger.error(f"Failed to update package: {package}") + return (package, False) + + +def update_python_packages(excluded_packages, update_all, parallel, dry_run): + """ + Update Python packages, excluding specified ones. + :param excluded_packages: List of packages to exclude + :param update_all: Whether to update all packages + :param parallel: Whether to perform updates in parallel + :param dry_run: Whether to perform a dry run without actual updates + :return: (List of updated packages, List of failed packages) + """ + packages = get_installed_packages(update_all) + updated_packages = [] + failed_packages = [] + + # Exclude packages + packages_to_update = [pkg for pkg in packages if pkg.lower() + not in [ex.lower() for ex in excluded_packages]] + excluded = set(packages) - set(packages_to_update) + + if excluded: + console.print( + "[yellow]The following packages will be skipped based on the exclusion list:[/yellow]") + for pkg in excluded: + console.print(f"- {pkg}") + + if dry_run: + console.print( + "[cyan]Dry run mode: No packages will be actually updated.[/cyan]") + console.print( + f"Total packages detected for update: {len(packages_to_update)}.") + return updated_packages, failed_packages + + if not packages_to_update: + console.print("[green]No packages need to be updated.[/green]") + return updated_packages, failed_packages + + console.print( + f"[bold]Starting update of {len(packages_to_update)} packages...[/bold]") + + if parallel: + # Limit the number of threads + max_workers = min(4, len(packages_to_update)) + with ThreadPoolExecutor(max_workers=max_workers) as executor: + future_to_pkg = {executor.submit( + update_package, pkg): pkg for pkg in packages_to_update} + with Progress( + TextColumn("[progress.description]{task.description}"), + BarColumn(), + "[progress.percentage]{task.percentage:>3.0f}%", + TimeRemainingColumn(), + console=console, + ) as progress: + task = progress.add_task( + "Updating packages...", total=len(future_to_pkg)) + for future in as_completed(future_to_pkg): + pkg, success = future.result() + if success: + updated_packages.append(pkg) + else: + failed_packages.append(pkg) + progress.advance(task) + else: + with Progress( + TextColumn("[progress.description]{task.description}"), + BarColumn(), + "[progress.percentage]{task.percentage:>3.0f}%", + TimeRemainingColumn(), + console=console, + ) as progress: + task = progress.add_task( + "Updating packages...", total=len(packages_to_update)) + for pkg in packages_to_update: + success = update_package(pkg)[1] + if success: + updated_packages.append(pkg) + else: + failed_packages.append(pkg) + progress.advance(task) + + return updated_packages, failed_packages + + +def generate_report(excluded_packages, updated_packages, failed_packages): + """ + Generate an update report. + :param excluded_packages: List of excluded packages + :param updated_packages: List of updated packages + :param failed_packages: List of failed packages + """ + report_file = f"PythonPackageUpdateReport_{datetime.now().strftime('%Y%m%d_%H%M%S')}.txt" + try: + with open(report_file, 'w') as f: + f.write("Python Package Update Report\n") + f.write("============================\n\n") + f.write(f"Date: {datetime.now()}\n\n") + f.write("Excluded Packages:\n") + f.write('\n'.join(excluded_packages) + '\n\n') + f.write("Updated Packages:\n") + f.write('\n'.join(updated_packages) + '\n\n') + f.write("Failed Packages:\n") + f.write('\n'.join(failed_packages) + '\n\n') + f.write("Summary:\n") + f.write("--------\n") + f.write( + f"Total packages processed: {len(updated_packages) + len(failed_packages)}\n") + f.write(f"Successfully updated: {len(updated_packages)}\n") + f.write(f"Failed to update: {len(failed_packages)}\n") + console.print(f"[green]Update report saved to: {report_file}[/green]") + logger.info(f"Generated update report: {report_file}") + except Exception as e: + console.print(f"[red]Failed to generate report: {e}[/red]") + logger.error(f"Failed to generate report: {e}") + + +def display_summary(updated_packages, failed_packages): + """ + Display an update summary. + :param updated_packages: List of updated packages + :param failed_packages: List of failed packages + """ + table = Table(title="Update Summary") + table.add_column("Status", style="cyan", no_wrap=True) + table.add_column("Package Name", style="magenta") + + if updated_packages: + for pkg in updated_packages: + table.add_row("Success", pkg) + if failed_packages: + for pkg in failed_packages: + table.add_row("Failure", pkg) + + console.print(table) + console.print( + f"[bold green]Total packages successfully updated: {len(updated_packages)}[/bold green]") + if failed_packages: + console.print( + f"[bold red]Packages failed to update: {len(failed_packages)}[/bold red]") + + +def validate_requirements_file(file_path): + """ + Validate the existence of a requirements.txt file. + :param file_path: File path + """ + path = Path(file_path) + if not path.is_file(): + console.print( + f"[red]The specified requirements file does not exist: {file_path}[/red]") + logger.error(f"Requirements file does not exist: {file_path}") + sys.exit(1) + + +def install_requirements(file_path): + """ + Install packages listed in a requirements.txt file. + :param file_path: Path to requirements.txt + """ + try: + subprocess.run(['pip', 'install', '-r', file_path], check=True) + logger.info( + f"Successfully installed packages from requirements file: {file_path}") + except subprocess.CalledProcessError as e: + console.print( + f"[red]Failed to install packages from requirements file: {e}[/red]") + logger.error(f"Failed to install packages from requirements file: {e}") + sys.exit(1) + + +def main(): + check_pip() + + parser = argparse.ArgumentParser( + description="Python Package Updater Tool", + formatter_class=argparse.RawTextHelpFormatter, + epilog=""" +Examples: + Update all packages and generate a report: + python pip_updater.py --update-all --generate-report + + Update outdated packages, excluding specified packages: + python pip_updater.py --exclude package1,package2 + + Update outdated packages in parallel: + python pip_updater.py --parallel + + Dry run mode, no actual updates: + python pip_updater.py --dry-run + + Install packages from a requirements.txt file: + python pip_updater.py --install-requirements requirements.txt +""" + ) + parser.add_argument('--exclude', type=str, + help="Comma-separated list of package names to exclude from updating.") + parser.add_argument('--update-all', action='store_true', + help="Update all installed packages, not just outdated ones.") + parser.add_argument('--generate-report', + action='store_true', help="Generate a report of the update process.") + parser.add_argument('--parallel', action='store_true', + help="Update packages in parallel.") + parser.add_argument('--dry-run', action='store_true', + help="Dry run mode: do not actually update any packages.") + parser.add_argument('--install-requirements', type=str, + help="Install packages from the specified requirements.txt file.") + + args = parser.parse_args() + + # Parse excluded packages + excluded_packages = [pkg.strip() + for pkg in args.exclude.split(',')] if args.exclude else [] + + if args.install_requirements: + validate_requirements_file(args.install_requirements) + install_requirements(args.install_requirements) + sys.exit(0) + + # Update packages + updated_packages, failed_packages = update_python_packages( + excluded_packages=excluded_packages, + update_all=args.update_all, + parallel=args.parallel, + dry_run=args.dry_run + ) + + # Display summary + display_summary(updated_packages, failed_packages) + + # Generate report + if args.generate_report: + generate_report(excluded_packages, updated_packages, failed_packages) + + +if __name__ == "__main__": + main() diff --git a/scripts/rename.py b/scripts/rename.py new file mode 100644 index 00000000..6d8b4159 --- /dev/null +++ b/scripts/rename.py @@ -0,0 +1,360 @@ +# rename.py + +#!/usr/bin/env python3 +""" +rename.py + +A comprehensive Python-based tool for managing files and directories on Linux. +Supports renaming, listing, copying, deleting, moving, and additional advanced features. + +Usage: + python rename.py {rename|list|copy|delete|move} [--destination ] [--dry-run] [--verbose] + +Commands: + rename : Rename files and directories by replacing OldElement with NewElement. + list : List all files and directories under RootDirectory. + copy : Copy RootDirectory to DestinationDirectory. + delete : Delete RootDirectory and its contents. + move : Move RootDirectory to DestinationDirectory. + +Options: + --destination : Specify destination directory for copy and move operations. + --dry-run : Show actions without making any changes. + --verbose : Enable verbose output for detailed operation logs. + +Examples: + Rename files: + python rename.py rename /path/to/directory old new + + List files and directories: + python rename.py list /path/to/directory + + Copy files and directories with dry run: + python rename.py copy /path/to/source /path/to/destination --dry-run + + Delete files and directories with confirmation: + python rename.py delete /path/to/directory + + Move files and directories with verbose output: + python rename.py move /path/to/source /path/to/destination --verbose +""" + +import os +import sys +import argparse +import shutil +from pathlib import Path +from rich.console import Console +from rich.logging import RichHandler +import logging + +# Configure Rich logging +logging.basicConfig( + level=logging.INFO, + format="%(message)s", + datefmt="[%X]", + handlers=[RichHandler()] +) +logger = logging.getLogger("rename_tool") + +console = Console() + + +def rename_files(root_directory: str, old_element: str, new_element: str, dry_run: bool): + """ + Recursively rename files and directories by replacing old_element with new_element. + + Args: + root_directory (str): The root directory to start renaming. + old_element (str): The string to be replaced in filenames. + new_element (str): The string to replace with in filenames. + dry_run (bool): If True, only show actions without renaming. + """ + logger.info( + f"[bold cyan]Starting rename operation in '{root_directory}'[/bold cyan] replacing '{old_element}' with '{new_element}'") + for dirpath, dirnames, filenames in os.walk(root_directory, topdown=False): + # Rename files + for filename in filenames: + if old_element in filename: + old_path = Path(dirpath) / filename + new_filename = filename.replace(old_element, new_element) + new_path = Path(dirpath) / new_filename + logger.debug(f"Renaming file: {old_path} -> {new_path}") + if dry_run: + logger.info( + f"[yellow][Dry Run][/yellow] Rename file: {old_path} -> {new_path}") + else: + try: + old_path.rename(new_path) + logger.info( + f"[green]Renamed file:[/green] {old_path} -> {new_path}") + except Exception as e: + logger.error( + f"[red]Error renaming file {old_path}: {e}[/red]") + + # Rename directories + for dirname in dirnames: + if old_element in dirname: + old_dir = Path(dirpath) / dirname + new_dirname = dirname.replace(old_element, new_element) + new_dir = Path(dirpath) / new_dirname + logger.debug(f"Renaming directory: {old_dir} -> {new_dir}") + if dry_run: + logger.info( + f"[yellow][Dry Run][/yellow] Rename directory: {old_dir} -> {new_dir}") + else: + try: + old_dir.rename(new_dir) + logger.info( + f"[green]Renamed directory:[/green] {old_dir} -> {new_dir}") + except Exception as e: + logger.error( + f"[red]Error renaming directory {old_dir}: {e}[/red]") + + +def list_files(root_directory: str): + """ + List all files and directories under the root_directory. + + Args: + root_directory (str): The directory to list contents of. + """ + logger.info( + f"[bold cyan]Listing contents of '{root_directory}'[/bold cyan]") + for path in Path(root_directory).rglob('*'): + if path.is_dir(): + console.print(f"[blue]{path}[/blue]") + else: + console.print(f"[green]{path}[/green]") + + +def copy_files(root_directory: str, destination_directory: str, dry_run: bool): + """ + Copy the root_directory to the destination_directory. + + Args: + root_directory (str): The directory to copy. + destination_directory (str): The directory to copy to. + dry_run (bool): If True, only show actions without copying. + """ + if dry_run: + logger.info( + f"[yellow][Dry Run][/yellow] Would copy '{root_directory}' to '{destination_directory}'") + return + + try: + shutil.copytree(root_directory, destination_directory) + logger.info( + f"[green]Copied '{root_directory}' to '{destination_directory}'[/green]") + except FileExistsError: + logger.error( + f"[red]Destination directory '{destination_directory}' already exists.[/red]") + except Exception as e: + logger.error(f"[red]Error copying directory: {e}[/red]") + + +def delete_files(root_directory: str, dry_run: bool): + """ + Delete the root_directory and all its contents. + + Args: + root_directory (str): The directory to delete. + dry_run (bool): If True, only show actions without deleting. + """ + if dry_run: + logger.info( + f"[yellow][Dry Run][/yellow] Would delete '{root_directory}'") + return + + confirm = console.input( + f"Are you sure you want to delete '{root_directory}'? [y/N]: ") + if confirm.lower() == 'y': + try: + shutil.rmtree(root_directory) + logger.info(f"[green]Deleted '{root_directory}'[/green]") + except FileNotFoundError: + logger.error( + f"[red]Directory '{root_directory}' does not exist.[/red]") + except Exception as e: + logger.error(f"[red]Error deleting directory: {e}[/red]") + else: + logger.info("Deletion cancelled.") + + +def move_files(root_directory: str, destination_directory: str, dry_run: bool): + """ + Move the root_directory to the destination_directory. + + Args: + root_directory (str): The directory to move. + destination_directory (str): The directory to move to. + dry_run (bool): If True, only show actions without moving. + """ + if dry_run: + logger.info( + f"[yellow][Dry Run][/yellow] Would move '{root_directory}' to '{destination_directory}'") + return + + try: + shutil.move(root_directory, destination_directory) + logger.info( + f"[green]Moved '{root_directory}' to '{destination_directory}'[/green]") + except FileNotFoundError: + logger.error( + f"[red]Source directory '{root_directory}' does not exist.[/red]") + except Exception as e: + logger.error(f"[red]Error moving directory: {e}[/red]") + + +def parse_arguments(): + """ + Parse command-line arguments. + + Returns: + argparse.Namespace: Parsed arguments. + """ + parser = argparse.ArgumentParser( + description="Manage files and directories: rename, list, copy, delete, move.", + formatter_class=argparse.RawTextHelpFormatter, + epilog=""" +Examples: + Rename files: + python rename.py rename /path/to/directory old new + + List files and directories: + python rename.py list /path/to/directory + + Copy files and directories with dry run: + python rename.py copy /path/to/source /path/to/destination --dry-run + + Delete files and directories with confirmation: + python rename.py delete /path/to/directory + + Move files and directories with verbose output: + python rename.py move /path/to/source /path/to/destination --verbose + """ + ) + + subparsers = parser.add_subparsers( + title="Commands", dest="command", required=True) + + # Rename command + rename_parser = subparsers.add_parser( + "rename", help="Rename files and directories by replacing a string.") + rename_parser.add_argument( + "RootDirectory", type=str, help="The root directory to perform rename operations.") + rename_parser.add_argument( + "OldElement", type=str, help="The string to be replaced in filenames.") + rename_parser.add_argument( + "NewElement", type=str, help="The string to replace with in filenames.") + rename_parser.add_argument( + "--dry-run", action="store_true", help="Show actions without making any changes.") + rename_parser.add_argument( + "--verbose", action="store_true", help="Enable verbose output.") + + # List command + list_parser = subparsers.add_parser( + "list", help="List all files and directories under the root directory.") + list_parser.add_argument( + "RootDirectory", type=str, help="The directory to list contents of.") + + # Copy command + copy_parser = subparsers.add_parser( + "copy", help="Copy files and directories to a destination.") + copy_parser.add_argument( + "RootDirectory", type=str, help="The directory to copy.") + copy_parser.add_argument( + "DestinationDirectory", type=str, help="The directory to copy to.") + copy_parser.add_argument( + "--dry-run", action="store_true", help="Show actions without copying.") + copy_parser.add_argument( + "--verbose", action="store_true", help="Enable verbose output.") + + # Delete command + delete_parser = subparsers.add_parser( + "delete", help="Delete files and directories.") + delete_parser.add_argument( + "RootDirectory", type=str, help="The directory to delete.") + delete_parser.add_argument( + "--dry-run", action="store_true", help="Show actions without deleting.") + delete_parser.add_argument( + "--verbose", action="store_true", help="Enable verbose output.") + + # Move command + move_parser = subparsers.add_parser( + "move", help="Move files and directories to a destination.") + move_parser.add_argument( + "RootDirectory", type=str, help="The directory to move.") + move_parser.add_argument( + "DestinationDirectory", type=str, help="The directory to move to.") + move_parser.add_argument( + "--dry-run", action="store_true", help="Show actions without moving.") + move_parser.add_argument( + "--verbose", action="store_true", help="Enable verbose output.") + + return parser.parse_args() + + +def main(): + args = parse_arguments() + + # Set logging level + if hasattr(args, 'verbose') and args.verbose: + logger.setLevel(logging.DEBUG) + + if args.command == "rename": + if not Path(args.RootDirectory).is_dir(): + logger.error( + f"[red]'{args.RootDirectory}' is not a valid directory.[/red]") + sys.exit(1) + rename_files(args.RootDirectory, args.OldElement, + args.NewElement, args.dry_run) + + elif args.command == "list": + if not Path(args.RootDirectory).is_dir(): + logger.error( + f"[red]'{args.RootDirectory}' is not a valid directory.[/red]") + sys.exit(1) + list_files(args.RootDirectory) + + elif args.command == "copy": + src = Path(args.RootDirectory) + dest = Path(args.DestinationDirectory) + if not src.is_dir(): + logger.error( + f"[red]Source directory '{args.RootDirectory}' does not exist.[/red]") + sys.exit(1) + if dest.exists(): + logger.error( + f"[red]Destination directory '{args.DestinationDirectory}' already exists.[/red]") + sys.exit(1) + copy_files(args.RootDirectory, args.DestinationDirectory, args.dry_run) + + elif args.command == "delete": + target = Path(args.RootDirectory) + if not target.is_dir(): + logger.error( + f"[red]Directory '{args.RootDirectory}' does not exist.[/red]") + sys.exit(1) + delete_files(args.RootDirectory, args.dry_run) + + elif args.command == "move": + src = Path(args.RootDirectory) + dest = Path(args.DestinationDirectory) + if not src.is_dir(): + logger.error( + f"[red]Source directory '{args.RootDirectory}' does not exist.[/red]") + sys.exit(1) + if dest.exists(): + logger.error( + f"[red]Destination directory '{args.DestinationDirectory}' already exists.[/red]") + sys.exit(1) + move_files(args.RootDirectory, args.DestinationDirectory, args.dry_run) + + else: + logger.error("[red]Invalid command.[/red]") + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/scripts/vcpkg.py b/scripts/vcpkg.py index 4d566c60..79b514f7 100644 --- a/scripts/vcpkg.py +++ b/scripts/vcpkg.py @@ -1,23 +1,29 @@ +#!/usr/bin/env python3 """ -VcpkgManager: A Python-based package manager inspired by vcpkg +VcpkgManager: An Enhanced Python-based Package Manager Inspired by vcpkg -This script provides a command-line interface for managing packages in a way similar to vcpkg. -It allows users to install, remove, update, and search for packages, as well as list installed packages -and view package information. +This script provides a command-line interface for managing packages similarly to vcpkg. +It allows users to install, remove, update, search for packages, list installed packages, +view package information, and manage package repositories. Usage: python vcpkg_manager.py [] Commands: - install : Install a package - remove : Remove a package - list : List all installed packages - update : Update all installed packages - search : Search for packages - info : Show information about a package + install : Install a package + remove : Remove a package + list : List all installed packages + update : Update all installed packages + search : Search for packages + info : Show information about a package + add-repo : Add a new package repository + remove-repo : Remove an existing package repository + list-repos : List all configured package repositories Options: - --root : Specify the root directory for package management (default: /path/to/vcpkg) + --root : Specify the root directory for package management (default: ~/.vcpkg) + --verbose : Enable verbose logging + --config : Specify a custom configuration file Examples: python vcpkg_manager.py install boost @@ -26,22 +32,36 @@ python vcpkg_manager.py update python vcpkg_manager.py search matrix python vcpkg_manager.py info opencv + python vcpkg_manager.py add-repo https://example.com/repo.json python vcpkg_manager.py --root /custom/path install boost -Note: This is a simplified version of a package manager and does not include all the features -of a full-fledged package management system. Use it for educational purposes or as a starting -point for more complex systems. +Note: + This is an enhanced version of a package manager inspired by vcpkg. It includes additional + features for better package management and repository handling. Use it responsibly and + consider contributing to its development. """ import os import json import shutil import argparse -from dataclasses import dataclass -from typing import List +from dataclasses import dataclass, field +from typing import List, Dict import sys from loguru import logger +try: + from rich import print + from rich.console import Console + from rich.table import Table + from rich.progress import Progress, BarColumn, TimeRemainingColumn, TextColumn +except ImportError: + print("[red]Please install the 'rich' and 'loguru' libraries: pip install rich loguru[/red]") + sys.exit(1) + +# Initialize Rich Console +console = Console() + @dataclass class Package: @@ -52,10 +72,29 @@ class Package: name (str): The name of the package. version (str): The version of the package. dependencies (List[str]): A list of package names that this package depends on. + description (str): A brief description of the package. """ name: str version: str dependencies: List[str] + description: str = "No description available." + + +@dataclass +class Repository: + """ + Represents a package repository. + + Attributes: + url (str): The URL of the repository. + name (str): The name of the repository. + """ + url: str + name: str = field(init=False) + + def __post_init__(self): + self.name = os.path.basename(self.url.rstrip( + '/')).replace('.json', '').capitalize() class VcpkgManagerError(Exception): @@ -73,73 +112,205 @@ class InstallationError(VcpkgManagerError): pass +class RepositoryError(VcpkgManagerError): + """Raised when there's an error with repository management""" + pass + + class VcpkgManager: """ - A class that manages package installation, removal, updating, and information retrieval. + A class that manages package installation, removal, updating, + information retrieval, and repository management. Attributes: root_dir (str): The root directory for package management. packages_dir (str): The directory where packages are stored. installed_file (str): The JSON file that keeps track of installed packages. + repos_file (str): The JSON file that keeps track of repositories. log_file (str): The file where logs are written. + repositories (List[Repository]): List of configured repositories. """ - def __init__(self, root_dir): + def __init__(self, root_dir, verbose=False, config_file=None): """ Initialize the VcpkgManager with the given root directory. Args: root_dir (str): The root directory for package management. + verbose (bool): Enable verbose logging. + config_file (str): Path to a custom configuration file. """ - self.root_dir = root_dir - self.packages_dir = os.path.join(root_dir, "packages") - self.installed_file = os.path.join(root_dir, "installed.json") - self.log_file = os.path.join(root_dir, "vcpkg.log") - - if not os.path.exists(self.packages_dir): - os.makedirs(self.packages_dir) - + self.root_dir = os.path.expanduser(root_dir) + self.packages_dir = os.path.join(self.root_dir, "packages") + self.installed_file = os.path.join(self.root_dir, "installed.json") + self.repos_file = os.path.join(self.root_dir, "repositories.json") + self.log_file = os.path.join(self.root_dir, "vcpkg.log") + + # Setup logging + logger.remove() + log_level = "DEBUG" if verbose else "INFO" + logger.add(self.log_file, level=log_level, + rotation="10 MB", compression="zip") + logger.add(sys.stderr, level=log_level) + + # Create necessary directories and files + self._initialize_directories() + self.repositories = self._load_repositories() + + def _initialize_directories(self): + """Initialize required directories and files.""" + os.makedirs(self.packages_dir, exist_ok=True) if not os.path.exists(self.installed_file): with open(self.installed_file, 'w', encoding='utf-8') as f: - json.dump({}, f) + json.dump({}, f, indent=2) + if not os.path.exists(self.repos_file): + with open(self.repos_file, 'w', encoding='utf-8') as f: + json.dump([], f, indent=2) + + def _load_repositories(self) -> List[Repository]: + """Load configured repositories from the repositories file.""" + try: + with open(self.repos_file, 'r', encoding='utf-8') as f: + repos_data = json.load(f) + return [Repository(**repo) for repo in repos_data] + except Exception as e: + logger.error("Failed to load repositories: %s", str(e)) + return [] + + def _save_repositories(self): + """Save the current list of repositories to the repositories file.""" + try: + with open(self.repos_file, 'w', encoding='utf-8') as f: + json.dump( + [repo.__dict__ for repo in self.repositories], f, indent=2) + logger.info("Repositories saved successfully.") + except Exception as e: + logger.error("Failed to save repositories: %s", str(e)) + raise RepositoryError( + f"Failed to save repositories: {str(e)}") from e + + def add_repo(self, repo_url: str): + """ + Add a new package repository. + + Args: + repo_url (str): The URL of the repository to add. + + Raises: + RepositoryError: If the repository cannot be added. + """ + try: + if any(repo.url == repo_url for repo in self.repositories): + console.print( + f"[yellow]Repository '{repo_url}' is already added.[/yellow]") + return + # Simulate fetching repository data + # In a real-world scenario, you would fetch and validate the repository's package data + new_repo = Repository(url=repo_url) + self.repositories.append(new_repo) + self._save_repositories() + console.print( + f"[green]Repository '{new_repo.name}' added successfully.[/green]") + logger.info("Repository '%s' added.", new_repo.name) + except Exception as e: + logger.error("Error adding repository %s: %s", repo_url, str(e)) + raise RepositoryError( + f"Failed to add repository '{repo_url}': {str(e)}") from e - def install(self, package_name): + def remove_repo(self, repo_url: str): + """ + Remove an existing package repository. + + Args: + repo_url (str): The URL of the repository to remove. + + Raises: + RepositoryError: If the repository cannot be removed. + """ + try: + repo_to_remove = next( + (repo for repo in self.repositories if repo.url == repo_url), None) + if not repo_to_remove: + console.print(f"[red]Repository '{repo_url}' not found.[/red]") + return + self.repositories.remove(repo_to_remove) + self._save_repositories() + console.print( + f"[green]Repository '{repo_to_remove.name}' removed successfully.[/green]") + logger.info("Repository '%s' removed.", repo_to_remove.name) + except Exception as e: + logger.error("Error removing repository %s: %s", repo_url, str(e)) + raise RepositoryError( + f"Failed to remove repository '{repo_url}': {str(e)}") from e + + def list_repos(self): + """List all configured package repositories.""" + if not self.repositories: + console.print("[yellow]No repositories configured.[/yellow]") + return + table = Table(title="Configured Repositories") + table.add_column("Name", style="cyan", no_wrap=True) + table.add_column("URL", style="magenta") + for repo in self.repositories: + table.add_row(repo.name, repo.url) + console.print(table) + + def install(self, package_name: str, version: str = None): """ Install a package and its dependencies. Args: package_name (str): The name of the package to install. + version (str, optional): Specific version to install. Defaults to latest. Raises: InstallationError: If there's an error during the installation process. """ try: - logger.info("Installing %s", package_name) - package = self._fetch_package_info(package_name) + logger.info("Installing package: %s", package_name) + package = self._fetch_package_info(package_name, version) self._install_dependencies(package.dependencies) - package_dir = os.path.join(self.packages_dir, package_name) + package_dir = os.path.join(self.packages_dir, package.name) os.makedirs(package_dir, exist_ok=True) - with open(os.path.join(package_dir, f"{package_name}.h"), 'w', encoding='utf-8') as f: - f.write(f"// Header for {package_name} v{package.version}") + # Simulate package installation by creating dummy files + with open(os.path.join(package_dir, f"{package.name}.h"), 'w', encoding='utf-8') as f: + f.write(f"// Header for {package.name} v{package.version}\n") + with open(os.path.join(package_dir, f"{package.name}.txt"), 'w', encoding='utf-8') as f: + f.write( + f"{package.name} version {package.version} installed successfully.\nDescription: {package.description}") + + # Update installed packages with open(self.installed_file, 'r+', encoding='utf-8') as f: installed = json.load(f) - installed[package_name] = { - "version": package.version, "dependencies": package.dependencies} + installed[package.name] = { + "version": package.version, + "dependencies": package.dependencies, + "description": package.description + } f.seek(0) json.dump(installed, f, indent=2) - - print(f"{package_name} v{package.version} installed successfully.") - logger.info("%s v%s installed successfully", - package_name, package.version) + f.truncate() + + console.print( + f"[green]{package.name} v{package.version} installed successfully.[/green]") + logger.info("Package '%s' v%s installed successfully.", + package.name, package.version) + except PackageNotFoundError as e: + console.print(f"[red]{str(e)}[/red]") + logger.error("Installation failed: %s", str(e)) + except InstallationError as e: + console.print(f"[red]{str(e)}[/red]") + logger.error("Installation failed: %s", str(e)) except Exception as e: - logger.error("Error installing %s: %s", package_name, str(e)) - raise InstallationError( - f"Failed to install {package_name}: {str(e)}") from e + console.print( + f"[red]Unexpected error during installation: {str(e)}[/red]") + logger.error( + "Unexpected error during installation of %s: %s", package_name, str(e)) - def _install_dependencies(self, dependencies): + def _install_dependencies(self, dependencies: List[str]): """ Install all dependencies of a package. @@ -148,10 +319,10 @@ def _install_dependencies(self, dependencies): """ for dep in dependencies: if not self._is_installed(dep): - print(f"Installing dependency: {dep}") + console.print(f"[cyan]Installing dependency: {dep}[/cyan]") self.install(dep) - def _is_installed(self, package_name): + def _is_installed(self, package_name: str) -> bool: """ Check if a package is already installed. @@ -165,31 +336,117 @@ def _is_installed(self, package_name): installed = json.load(f) return package_name in installed - def _fetch_package_info(self, package_name) -> Package: + def _fetch_package_info(self, package_name: str, version: str = None) -> Package: """ - Fetch information about a package from a simulated online repository. + Fetch information about a package from configured repositories. Args: package_name (str): The name of the package to fetch information for. + version (str, optional): Specific version to fetch. Defaults to latest. Returns: Package: A Package object containing the package information. + Raises: + PackageNotFoundError: If the package is not found in any repository. + """ + # Search through all configured repositories + for repo in self.repositories: + try: + # Simulate fetching package info from repository + # In a real-world scenario, you would perform HTTP requests to the repository's API + package = self._simulate_repo_fetch( + repo, package_name, version) + return package + except PackageNotFoundError: + continue + # If not found in any repository + raise PackageNotFoundError( + f"Package '{package_name}' not found in any configured repository.") + + def _simulate_repo_fetch(self, repo: Repository, package_name: str, version: str = None) -> Package: + """ + Simulate fetching package information from a repository. + + Args: + repo (Repository): The repository to fetch from. + package_name (str): The name of the package. + version (str, optional): Specific version to fetch. + + Returns: + Package: A Package object with package information. + Raises: PackageNotFoundError: If the package is not found in the repository. """ - # Simulating an API call to an online repository - if package_name == "boost": - return Package("boost", "1.76.0", ["zlib", "bzip2"]) - elif package_name == "eigen": - return Package("eigen", "3.4.0", []) - elif package_name in ["zlib", "bzip2"]: - return Package(package_name, "1.0.0", []) - else: + # Simulated repository data + simulated_repo = { + "boost": { + "latest": { + "version": "1.76.0", + "dependencies": ["zlib", "bzip2"], + "description": "Boost C++ Libraries" + }, + "1.75.0": { + "version": "1.75.0", + "dependencies": ["zlib", "bzip2"], + "description": "Boost C++ Libraries" + } + }, + "eigen": { + "latest": { + "version": "3.4.0", + "dependencies": [], + "description": "C++ Template Library for Linear Algebra" + } + }, + "zlib": { + "latest": { + "version": "1.2.11", + "dependencies": [], + "description": "Compression Library" + } + }, + "bzip2": { + "latest": { + "version": "1.0.8", + "dependencies": [], + "description": "Compression Utility" + } + }, + "opencv": { + "latest": { + "version": "4.5.3", + "dependencies": ["zlib"], + "description": "Open Source Computer Vision Library" + } + } + } + + packages = simulated_repo.get(package_name.lower()) + if not packages: raise PackageNotFoundError( - f"Package {package_name} not found in repository") + f"Package '{package_name}' not found in repository '{repo.name}'.") - def remove(self, package_name): + if version: + pkg_info = packages.get(version) + if not pkg_info: + raise PackageNotFoundError( + f"Version '{version}' of package '{package_name}' not found in repository '{repo.name}'.") + else: + pkg_info = packages.get("latest") + if not pkg_info: + raise PackageNotFoundError( + f"Latest version of package '{package_name}' not found in repository '{repo.name}'.") + + return Package( + name=package_name, + version=pkg_info["version"], + dependencies=pkg_info["dependencies"], + description=pkg_info["description"] + ) + + def remove(self, package_name: str): """ Remove an installed package. @@ -198,11 +455,21 @@ def remove(self, package_name): Raises: PackageNotFoundError: If the package is not installed. + InstallationError: If there's an error during the removal process. """ try: - logger.info("Removing %s", package_name) + logger.info("Removing package: %s", package_name) package_dir = os.path.join(self.packages_dir, package_name) if os.path.exists(package_dir): + # Check if other packages depend on this package + dependents = self._find_dependents(package_name) + if dependents: + console.print( + f"[red]Cannot remove '{package_name}' as it is required by: {', '.join(dependents)}[/red]") + logger.warning( + "Removal failed: '%s' is required by %s", package_name, dependents) + return + shutil.rmtree(package_dir) with open(self.installed_file, 'r+', encoding='utf-8') as f: @@ -210,16 +477,44 @@ def remove(self, package_name): if package_name in installed: del installed[package_name] f.seek(0) - f.truncate() json.dump(installed, f, indent=2) + f.truncate() - print(f"{package_name} removed successfully.") - logger.info("%s removed successfully", package_name) + console.print( + f"[green]{package_name} removed successfully.[/green]") + logger.info("Package '%s' removed successfully.", package_name) else: - raise PackageNotFoundError(f"{package_name} is not installed.") + raise PackageNotFoundError( + f"Package '{package_name}' is not installed.") + except PackageNotFoundError as e: + console.print(f"[red]{str(e)}[/red]") + logger.error("Removal failed: %s", str(e)) + except InstallationError as e: + console.print(f"[red]{str(e)}[/red]") + logger.error("Removal failed: %s", str(e)) except Exception as e: - logger.error("Error removing %s: %s", package_name, str(e)) - print(f"Error removing {package_name}: {str(e)}") + console.print( + f"[red]Unexpected error during removal: {str(e)}[/red]") + logger.error("Unexpected error during removal of %s: %s", + package_name, str(e)) + + def _find_dependents(self, package_name: str) -> List[str]: + """ + Find all installed packages that depend on the given package. + + Args: + package_name (str): The package to check dependencies for. + + Returns: + List[str]: A list of package names that depend on the given package. + """ + dependents = [] + with open(self.installed_file, 'r', encoding='utf-8') as f: + installed = json.load(f) + for pkg, info in installed.items(): + if package_name in [dep.lower() for dep in info.get("dependencies", [])]: + dependents.append(pkg) + return dependents def list_installed(self): """ @@ -230,14 +525,21 @@ def list_installed(self): installed = json.load(f) if installed: - print("Installed packages:") + table = Table(title="Installed Packages") + table.add_column("Package Name", style="cyan", no_wrap=True) + table.add_column("Version", style="magenta") + table.add_column("Description", style="green") + for package, info in installed.items(): - print(f" {package} (version: {info['version']})") + table.add_row(package, info['version'], info.get( + 'description', 'No description')) + console.print(table) else: - print("No packages installed.") + console.print("[yellow]No packages installed.[/yellow]") except Exception as e: logger.error("Error listing installed packages: %s", str(e)) - print(f"Error listing installed packages: {str(e)}") + console.print( + f"[red]Error listing installed packages: {str(e)}[/red]") def update(self): """ @@ -245,53 +547,140 @@ def update(self): """ try: logger.info("Updating installed packages") - print("Updating installed packages...") + console.print("[bold]Updating installed packages...[/bold]") with open(self.installed_file, 'r', encoding='utf-8') as f: installed = json.load(f) - for package in installed: - print(f"Checking for updates: {package}...") - new_info = self._fetch_package_info(package) - if new_info.version > installed[package]["version"]: - print( - f"Updating {package} from {installed[package]['version']} to {new_info.version}") - self.remove(package) - self.install(package) - else: - print( - f"{package} is already up to date (version {installed[package]['version']}).") - - print("All packages are up to date.") - logger.info("All packages updated") + for package in list(installed.keys()): + try: + console.print(f"Checking for updates: {package}...") + current_version = installed[package]["version"] + latest_package = self._fetch_package_info(package) + if self._is_newer_version(latest_package.version, current_version): + console.print( + f"[cyan]Updating {package} from v{current_version} to v{latest_package.version}[/cyan]") + self.remove(package) + self.install(package) + else: + console.print( + f"[green]{package} is already up to date (v{current_version}).[/green]") + except PackageNotFoundError: + console.print( + f"[yellow]Package '{package}' not found in repositories. Skipping update.[/yellow]") + except InstallationError as e: + console.print( + f"[red]Failed to update '{package}': {str(e)}[/red]") + logger.error("Failed to update '%s': %s", package, str(e)) + + console.print( + "[bold green]All packages are up to date.[/bold green]") + logger.info("All packages updated successfully.") except Exception as e: logger.error("Error updating packages: %s", str(e)) - print(f"Error updating packages: {str(e)}") + console.print(f"[red]Error updating packages: {str(e)}[/red]") + + def _is_newer_version(self, latest: str, current: str) -> bool: + """ + Compare two version strings to determine if the latest is newer than the current. + + Args: + latest (str): The latest version string. + current (str): The current version string. + + Returns: + bool: True if latest is newer than current, False otherwise. + """ + from packaging import version + return version.parse(latest) > version.parse(current) - def search(self, query): + def search(self, query: str): """ - Search for packages matching the given query. + Search for packages matching the given query across all repositories. Args: query (str): The search query string. """ try: logger.info("Searching for packages matching '%s'", query) - print(f"Searching for packages matching '{query}'...") - # This is a simplified search. In a real-world scenario, this would query an online package database. - results = [ - {"name": f"{query}-lib", - "description": f"A library for {query}", "version": "1.0.0"}, - {"name": f"{query}-tools", - "description": f"Tools for working with {query}", "version": "2.1.0"}, - ] - for result in results: - print( - f" {result['name']} (v{result['version']}): {result['description']}") + console.print(f"Searching for packages matching '{query}'...") + results = [] + + # Simulate searching through all repositories + for repo in self.repositories: + # In a real-world scenario, perform API calls to search packages + # Here, we simulate search results + simulated_search = self._simulate_repo_search(repo, query) + results.extend(simulated_search) + + if results: + table = Table(title="Search Results") + table.add_column("Package Name", style="cyan", no_wrap=True) + table.add_column("Version", style="magenta") + table.add_column("Description", style="green") + + for result in results: + table.add_row( + result['name'], result['version'], result['description']) + console.print(table) + else: + console.print( + "[yellow]No packages found matching your query.[/yellow]") except Exception as e: logger.error("Error searching for packages: %s", str(e)) - print(f"Error searching for packages: {str(e)}") + console.print(f"[red]Error searching for packages: {str(e)}[/red]") + + def _simulate_repo_search(self, repo: Repository, query: str) -> List[Dict]: + """ + Simulate searching for packages within a repository. + + Args: + repo (Repository): The repository to search in. + query (str): The search query. - def info(self, package_name): + Returns: + List[Dict]: A list of matching package dictionaries. + """ + # Simulated package data + simulated_packages = { + "boost": { + "name": "boost", + "version": "1.76.0", + "description": "Boost C++ Libraries" + }, + "eigen": { + "name": "eigen", + "version": "3.4.0", + "description": "C++ Template Library for Linear Algebra" + }, + "zlib": { + "name": "zlib", + "version": "1.2.11", + "description": "Compression Library" + }, + "bzip2": { + "name": "bzip2", + "version": "1.0.8", + "description": "Compression Utility" + }, + "opencv": { + "name": "opencv", + "version": "4.5.3", + "description": "Open Source Computer Vision Library" + }, + "matrixlib": { + "name": "matrixlib", + "version": "2.0.0", + "description": "Matrix Operations Library" + } + } + + matching_packages = [] + for pkg in simulated_packages.values(): + if query.lower() in pkg['name'].lower() or query.lower() in pkg['description'].lower(): + matching_packages.append(pkg) + return matching_packages + + def info(self, package_name: str): """ Display detailed information about a specific package. @@ -304,61 +693,147 @@ def info(self, package_name): if package_name in installed: info = installed[package_name] - print(f"Package: {package_name}") - print(f"Version: {info['version']}") - print("Status: Installed") - print(f"Dependencies: {', '.join(info['dependencies'])}") + table = Table(title=f"Information for {package_name}") + table.add_column("Attribute", style="cyan", no_wrap=True) + table.add_column("Details", style="magenta") + + table.add_row("Package Name", package_name) + table.add_row("Version", info['version']) + table.add_row("Description", info.get( + 'description', 'No description available.')) + table.add_row("Dependencies", ", ".join( + info['dependencies']) if info['dependencies'] else "None") + table.add_row("Status", "Installed") + + console.print(table) else: - print(f"Package '{package_name}' is not installed.") - print("Fetching online information...") + console.print( + f"[yellow]Package '{package_name}' is not installed.[/yellow]") + console.print("Fetching online information...") try: package = self._fetch_package_info(package_name) - print(f"Package: {package.name}") - print(f"Version: {package.version} (latest)") - print("Status: Not installed") - print(f"Dependencies: {', '.join(package.dependencies)}") + table = Table(title=f"Information for {package_name}") + table.add_column("Attribute", style="cyan", no_wrap=True) + table.add_column("Details", style="magenta") + + table.add_row("Package Name", package.name) + table.add_row("Version", package.version) + table.add_row("Description", package.description) + table.add_row("Dependencies", ", ".join( + package.dependencies) if package.dependencies else "None") + table.add_row("Status", "Not Installed") + + console.print(table) except PackageNotFoundError: - print( - f"No information found for package '{package_name}'.") + console.print( + f"[red]No information found for package '{package_name}'.[/red]") except Exception as e: logger.error("Error retrieving package info: %s", str(e)) - print(f"Error retrieving package info: {str(e)}") + console.print( + f"[red]Error retrieving package info: {str(e)}[/red]") def main(): """ Main function to handle command-line arguments and execute corresponding actions. """ - parser = argparse.ArgumentParser(description="vcpkg-like package manager") - parser.add_argument("--root", default="/path/to/vcpkg", - help="Root directory for vcpkg") + default_root = os.path.join(os.path.expanduser("~"), ".vcpkg") + parser = argparse.ArgumentParser( + description="vcpkg-like Package Manager", + formatter_class=argparse.RawTextHelpFormatter, + epilog=""" +Examples: + Install a package: + python vcpkg_manager.py install boost + + Remove a package: + python vcpkg_manager.py remove eigen + + List installed packages: + python vcpkg_manager.py list + + Update all installed packages: + python vcpkg_manager.py update + + Search for packages: + python vcpkg_manager.py search matrix + + Show package information: + python vcpkg_manager.py info opencv + + Add a new repository: + python vcpkg_manager.py add-repo https://example.com/repo.json + + Remove an existing repository: + python vcpkg_manager.py remove-repo https://example.com/repo.json + + List all repositories: + python vcpkg_manager.py list-repos + + Specify a custom root directory and enable verbose logging: + python vcpkg_manager.py --root /custom/path --verbose install boost +""" + ) + + parser.add_argument("--root", default=default_root, + help=f"Root directory for vcpkg (default: {default_root})") + parser.add_argument("--verbose", action="store_true", + help="Enable verbose logging") + parser.add_argument("--config", type=str, + help="Specify a custom configuration file") subparsers = parser.add_subparsers( dest="command", help="Available commands") + # Install command install_parser = subparsers.add_parser("install", help="Install a package") install_parser.add_argument("package", help="Package name to install") + install_parser.add_argument( + "--version", type=str, help="Specify package version to install") + # Remove command remove_parser = subparsers.add_parser("remove", help="Remove a package") remove_parser.add_argument("package", help="Package name to remove") + # List command subparsers.add_parser("list", help="List installed packages") + + # Update command subparsers.add_parser("update", help="Update all installed packages") + # Search command search_parser = subparsers.add_parser("search", help="Search for packages") search_parser.add_argument("query", help="Search query") + # Info command info_parser = subparsers.add_parser( "info", help="Show package information") info_parser.add_argument("package", help="Package name") + # Add Repository command + add_repo_parser = subparsers.add_parser( + "add-repo", help="Add a new package repository") + add_repo_parser.add_argument( + "repo_url", help="URL of the repository to add") + + # Remove Repository command + remove_repo_parser = subparsers.add_parser( + "remove-repo", help="Remove an existing package repository") + remove_repo_parser.add_argument( + "repo_url", help="URL of the repository to remove") + + # List Repositories command + subparsers.add_parser( + "list-repos", help="List all configured package repositories") + args = parser.parse_args() - manager = VcpkgManager(args.root) + manager = VcpkgManager( + root_dir=args.root, verbose=args.verbose, config_file=args.config) try: if args.command == "install": - manager.install(args.package) + manager.install(args.package, version=args.version) elif args.command == "remove": manager.remove(args.package) elif args.command == "list": @@ -369,10 +844,16 @@ def main(): manager.search(args.query) elif args.command == "info": manager.info(args.package) + elif args.command == "add-repo": + manager.add_repo(args.repo_url) + elif args.command == "remove-repo": + manager.remove_repo(args.repo_url) + elif args.command == "list-repos": + manager.list_repos() else: parser.print_help() except VcpkgManagerError as e: - print(f"Error: {str(e)}") + console.print(f"[red]Error: {str(e)}[/red]") sys.exit(1) diff --git a/src/App.cpp b/src/App.cpp index 4a82fffe..28f93ff5 100644 --- a/src/App.cpp +++ b/src/App.cpp @@ -13,10 +13,14 @@ Description: Main Entry **************************************************/ #include "LithiumApp.hpp" - #include "preload.hpp" +#include "config/configor.hpp" + +#include "atom/error/exception.hpp" +#include "atom/function/concept.hpp" #include "atom/function/global_ptr.hpp" +#include "atom/function/invoke.hpp" #include "atom/log/loguru.hpp" #include "atom/system/crash.hpp" #include "atom/web/utils.hpp" @@ -43,7 +47,7 @@ using namespace lithium::debug; #ifdef _WIN32 #include #else -#include +#include #endif #include "atom/utils/argsview.hpp" @@ -55,16 +59,27 @@ using namespace std::literals; * @note This is called in main function */ void setupLogFile() { - std::filesystem::path logsFolder = std::filesystem::current_path() / "logs"; - if (!std::filesystem::exists(logsFolder)) { - std::filesystem::create_directory(logsFolder); + using namespace std::chrono; + using namespace std::filesystem; + + path logsFolder = current_path() / "logs"; + if (!exists(logsFolder)) { + create_directory(logsFolder); } - auto now = std::chrono::system_clock::now(); - auto nowTimeT = std::chrono::system_clock::to_time_t(now); - std::tm *localTime = std::localtime(&nowTimeT); - char filename[100]; - std::strftime(filename, sizeof(filename), "%Y%m%d_%H%M%S.log", localTime); - std::filesystem::path logFilePath = logsFolder / filename; + + auto now = system_clock::now(); + auto nowTimeT = system_clock::to_time_t(now); + std::tm localTime; +#ifdef _WIN32 + localtime_s(&localTime, &nowTimeT); +#else + localtime_r(&nowTimeT, &localTime); +#endif + + std::ostringstream filenameStream; + filenameStream << std::put_time(&localTime, "%Y%m%d_%H%M%S.log"); + path logFilePath = logsFolder / filenameStream.str(); + loguru::add_file(logFilePath.string().c_str(), loguru::Append, loguru::Verbosity_MAX); @@ -74,6 +89,15 @@ void setupLogFile() { }); } +auto convertArgs(int argc, char **argv) -> std::vector { + std::vector args; + args.reserve(argc); + for (int i = 0; i < argc; ++i) { + args.emplace_back(argv[i]); + } + return args; +} + /** * @brief main function * @param argc number of arguments @@ -125,70 +149,37 @@ auto main(int argc, char *argv[]) -> int { program.addDescription("Lithium Command Line Interface:"); program.addEpilog("End."); - program.parse(argc, argv); + program.parse(argc, convertArgs(argc, argv)); lithium::initLithiumApp(argc, argv); // Create shared instance lithium::myApp = lithium::LithiumApp::createShared(); // Parse arguments try { - auto cmdHost = program.get("host"); - auto cmdPort = program.get("port"); - auto cmdConfigPath = program.get("config"); - auto cmdModulePath = program.get("module-path"); - auto cmdWebPanel = program.get("web-panel"); - auto cmdDebug = program.get("debug"); - - // TODO: We need a new way to handle command line arguments. - // Maybe we will generate a json object or a map and then given to the - // lithiumapp for initialization. - /* - if (!cmd_host.empty()) { - lithium::MyApp->SetConfig( - {{"key", "config/server/host"}, {"value", cmd_host}}); - DLOG_F(INFO, "Set server host to {}", cmd_host); - } - if (cmd_port != 8000) { - DLOG_F(INFO, "Command line server port : {}", cmd_port); - - auto port = lithium::MyApp->GetConfig("config/server") - .value("port", 8000); - if (port != cmd_port) { - lithium::MyApp->SetConfig( - {{"key", "config/server/port"}, {"value", cmd_port}}); - DLOG_F(INFO, "Set server port to {}", cmd_port); - } - } - if (!cmd_config_path.empty()) { - lithium::MyApp->SetConfig({{"key", "config/server/configpath"}, - {"value", cmd_config_path}}); - DLOG_F(INFO, "Set server config path to {}", cmd_config_path); - } - if (!cmd_module_path.empty()) { - lithium::MyApp->SetConfig({{"key", "config/server/modulepath"}, - {"value", cmd_module_path}}); - DLOG_F(INFO, "Set server module path to {}", cmd_module_path); - } - - if (!cmd_web_panel) { - if (lithium::MyApp->GetConfig("config/server/web").get()) { - lithium::MyApp->SetConfig( - {{"key", "config/server/web"}, {"value", false}}); - DLOG_F(INFO, "Disable web panel"); - } - } - - if (cmd_debug) { - if (!lithium::MyApp->GetConfig("config/server/debug").get()) { - lithium::MyApp->SetConfig( - {{"key", "config/server/debug"}, {"value", true}}); + auto setConfig = [](const std::string &key, T value) + requires IsBuiltIn + { + if (!key.empty()) { + lithium::myApp->setValue(key, value); + } else { + THROW_INVALID_ARGUMENT("Invalid key: " + key); } - } else { - lithium::MyApp->SetConfig( - {{"key", "config/server/debug"}, {"value", false}}); - DLOG_F(INFO, "Disable debug mode"); - } - */ + }; + + setConfig("/lithium/server/host"_valid, + program.get("host").value()); + setConfig("/lithium/server/port"_valid, + program.get("port").value()); + setConfig("/lithium/server/configpath"_valid, + program.get("config").value()); + setConfig("/lithium/server/modulepath"_valid, + program.get("module-path").value()); + setConfig("/lithium/server/web"_valid, + program.get("web-panel").value()); + setConfig("/lithium/server/debug"_valid, + program.get("debug").value()); + setConfig("/lithium/server/logfile"_valid, + program.get("log-file").value()); } catch (const std::bad_any_cast &e) { LOG_F(ERROR, "Invalid args format! Error: {}", e.what()); diff --git a/src/LithiumApp.cpp b/src/LithiumApp.cpp index 88946109..28da9040 100644 --- a/src/LithiumApp.cpp +++ b/src/LithiumApp.cpp @@ -14,31 +14,24 @@ Description: Lithium App Enter #include "LithiumApp.hpp" -#include "components/component.hpp" -#include "config.h" - #include "addon/addons.hpp" #include "addon/loader.hpp" #include "addon/manager.hpp" #include "config/configor.hpp" -#include "device/manager.hpp" - #include "task/container.hpp" #include "task/generator.hpp" #include "task/loader.hpp" #include "task/manager.hpp" -#include "script/manager.hpp" - +#include "atom/components/component.hpp" #include "atom/components/dispatch.hpp" #include "atom/error/exception.hpp" #include "atom/function/global_ptr.hpp" #include "atom/log/loguru.hpp" #include "atom/system/env.hpp" -#include "atom/system/process.hpp" -#include "atom/utils/time.hpp" +#include "atom/utils/error_stack.hpp" #include "utils/constant.hpp" #include "utils/marco.hpp" @@ -96,8 +89,7 @@ LithiumApp::LithiumApp() : Component("lithium.main") { CHECK_WEAK_PTR_EXPIRED(m_messagebus_, "load message bus from gpm: lithium.bus"); - m_task_interpreter_ = - GetWeakPtr("lithium.task.manager"); + m_task_interpreter_ = GetWeakPtr("lithium.task.manager"); CHECK_WEAK_PTR_EXPIRED( m_task_interpreter_, "load task manager from gpm: lithium.task.manager"); @@ -132,18 +124,12 @@ LithiumApp::LithiumApp() : Component("lithium.main") { def("get_component_list", &LithiumApp::getComponentList, "Get a list of all components"); - def("load_script", &LithiumApp::loadScript, "script", "Load a script"); - def("unload_script", &LithiumApp::unloadScript, "script", - "Unload a script"); - def("has_script", &LithiumApp::hasScript, "script", - "Check if a script is "); - def("get_script", &LithiumApp::getScript, "script", "Get a script"); + // def("load_script", &LithiumApp::loadScript, "script", "Load a script"); DLOG_F(INFO, "Lithium App Initialized"); } -LithiumApp::~LithiumApp() { -} +LithiumApp::~LithiumApp() {} auto LithiumApp::createShared() -> std::shared_ptr { return std::make_shared(); @@ -195,82 +181,61 @@ auto LithiumApp::getComponentList() -> std::vector { return m_component_manager_.lock()->getComponentList(); } -void LithiumApp::loadScript(const std::string &name, const json &script) { - m_task_interpreter_.lock()->loadScript(name, script); +auto LithiumApp::getValue(const std::string &key_path) const + -> std::optional { + return m_config_manager_.lock()->getValue(key_path); } -void LithiumApp::unloadScript(const std::string &name) { - m_task_interpreter_.lock()->unloadScript(name); +auto LithiumApp::setValue(const std::string &key_path, + const json &value) -> bool { + return m_config_manager_.lock()->setValue(key_path, value); } -auto LithiumApp::hasScript(const std::string &name) const -> bool { - return m_task_interpreter_.lock()->hasScript(name); +auto LithiumApp::appendValue(const std::string &key_path, + const json &value) -> bool { + return m_config_manager_.lock()->appendValue(key_path, value); } -auto LithiumApp::getScript(const std::string &name) const - -> std::optional { - return m_task_interpreter_.lock()->getScript(name); +auto LithiumApp::deleteValue(const std::string &key_path) -> bool { + return m_config_manager_.lock()->deleteValue(key_path); } -void LithiumApp::registerFunction(const std::string &name, - std::function func) { - m_task_interpreter_.lock()->registerFunction(name, func); +auto LithiumApp::hasValue(const std::string &key_path) const -> bool { + return m_config_manager_.lock()->hasValue(key_path); } -void LithiumApp::registerExceptionHandler( - const std::string &name, - std::function handler) { - m_task_interpreter_.lock()->registerExceptionHandler(name, handler); +auto LithiumApp::loadFromFile(const fs::path &path) -> bool { + return m_config_manager_.lock()->loadFromFile(path); } -void LithiumApp::setVariable(const std::string &name, const json &value) { - m_task_interpreter_.lock()->setVariable(name, value, determineType(value)); +auto LithiumApp::loadFromDir(const fs::path &dir_path, bool recursive) -> bool { + return m_config_manager_.lock()->loadFromDir(dir_path, recursive); } -auto LithiumApp::getVariable(const std::string &name) -> json { - return m_task_interpreter_.lock()->getVariable(name); +auto LithiumApp::saveToFile(const fs::path &file_path) const -> bool { + return m_config_manager_.lock()->saveToFile(file_path); } -void LithiumApp::parseLabels(const json &script) { - m_task_interpreter_.lock()->parseLabels(script); +auto LithiumApp::getKeys() const -> std::vector { + return m_config_manager_.lock()->getKeys(); } -void LithiumApp::execute(const std::string &scriptName) { - m_task_interpreter_.lock()->execute(scriptName); +auto LithiumApp::listPaths() const -> std::vector { + return m_config_manager_.lock()->listPaths(); } -void LithiumApp::stop() { m_task_interpreter_.lock()->stop(); } +void LithiumApp::tidyConfig() { m_config_manager_.lock()->tidyConfig(); } -void LithiumApp::pause() { m_task_interpreter_.lock()->pause(); } +void LithiumApp::clearConfig() { m_config_manager_.lock()->clearConfig(); } -void LithiumApp::resume() { m_task_interpreter_.lock()->resume(); } - -void LithiumApp::queueEvent(const std::string &eventName, - const json &eventData) { - m_task_interpreter_.lock()->queueEvent(eventName, eventData); +void LithiumApp::mergeConfig(const json &src) { + m_config_manager_.lock()->mergeConfig(src); } -auto LithiumApp::getValue(const std::string &key_path) const - -> std::optional {} -auto LithiumApp::setValue(const std::string &key_path, - const nlohmann::json &value) -> bool {} - -auto LithiumApp::appendValue(const std::string &key_path, - const nlohmann::json &value) -> bool {} -auto LithiumApp::deleteValue(const std::string &key_path) -> bool {} -auto LithiumApp::hasValue(const std::string &key_path) const -> bool {} -auto LithiumApp::loadFromFile(const fs::path &path) -> bool {} -auto LithiumApp::loadFromDir(const fs::path &dir_path, - bool recursive) -> bool {} -auto LithiumApp::saveToFile(const fs::path &file_path) const -> bool {} -void LithiumApp::tidyConfig() {} -void LithiumApp::clearConfig() {} -void LithiumApp::mergeConfig(const nlohmann::json &src) {} - void initLithiumApp(int argc, char **argv) { LOG_F(INFO, "Init Lithium App"); // Message Bus - AddPtr("lithium.bus", atom::async::MessageBus::createShared()); + // AddPtr("lithium.bus", atom::async::MessageBus::createShared()); // AddPtr("ModuleLoader", ModuleLoader::createShared()); // AddPtr("lithium.async.thread", // Atom::Async::ThreadManager::createShared(GetIntConfig("config/server/maxthread"))); @@ -289,7 +254,7 @@ void initLithiumApp(int argc, char **argv) { AddPtr("lithium.task.container", TaskContainer::createShared()); AddPtr("lithiun.task.generator", TaskGenerator::createShared()); AddPtr("lithium.task.loader", TaskLoader::createShared()); - AddPtr("lithium.task.manager", TaskInterpreter::createShared()); + AddPtr("lithium.task.manager", Interpreter::createShared()); AddPtr("lithium.utils.env", atom::utils::Env::createShared(argc, argv)); diff --git a/src/LithiumApp.hpp b/src/LithiumApp.hpp index a5461d53..a4283830 100644 --- a/src/LithiumApp.hpp +++ b/src/LithiumApp.hpp @@ -22,7 +22,6 @@ Description: Lithium App Enter #include "atom/async/message_bus.hpp" #include "atom/components/component.hpp" #include "atom/type/json_fwd.hpp" -#include "atom/type/message.hpp" #include "atom/macro.hpp" @@ -58,7 +57,8 @@ class ConfigManager; class TaskPool; -class TaskInterpreter; +struct Program; +class Interpreter; class LithiumApp : public Component { public: @@ -102,6 +102,8 @@ class LithiumApp : public Component { auto loadFromFile(const fs::path& path) -> bool; auto loadFromDir(const fs::path& dir_path, bool recursive = false) -> bool; ATOM_NODISCARD auto saveToFile(const fs::path& file_path) const -> bool; + [[nodiscard]] auto getKeys() const -> std::vector; + [[nodiscard]] auto listPaths() const -> std::vector; void tidyConfig(); void clearConfig(); void mergeConfig(const nlohmann::json& src); @@ -110,35 +112,19 @@ class LithiumApp : public Component { // Task methods // ------------------------------------------------------------------- - void loadScript(const std::string& name, const json& script); - void unloadScript(const std::string& name); + void loadScript(const std::string& filename); - ATOM_NODISCARD auto hasScript(const std::string& name) const -> bool; - ATOM_NODISCARD auto getScript(const std::string& name) const - -> std::optional; + void interpretScript(const std::string& filename); - void registerFunction(const std::string& name, - std::function func); - void registerExceptionHandler( - const std::string& name, - std::function handler); - - void setVariable(const std::string& name, const json& value); - auto getVariable(const std::string& name) -> json; - - void parseLabels(const json& script); - void execute(const std::string& scriptName); - void stop(); - void pause(); - void resume(); - void queueEvent(const std::string& eventName, const json& eventData); + void interpret(const std::shared_ptr& ast); private: std::weak_ptr m_taskpool_; std::weak_ptr m_messagebus_; std::weak_ptr m_errorstack_; std::weak_ptr m_component_manager_; - std::weak_ptr m_task_interpreter_; + std::weak_ptr m_task_interpreter_; + std::weak_ptr m_config_manager_; std::weak_ptr m_py_script_manager_; }; diff --git a/src/addon/CMakeLists.txt b/src/addon/CMakeLists.txt index 5d3a28af..03a7c359 100644 --- a/src/addon/CMakeLists.txt +++ b/src/addon/CMakeLists.txt @@ -15,36 +15,93 @@ project(lithium-addons VERSION 1.0.0 LANGUAGES C CXX) if (NOT MINGW OR NOT WIN32) find_package(Seccomp REQUIRED) +find_package(LibGit2 REQUIRED) + +if (LIBGIT2_FOUND) + message(STATUS "LibGit2 found!") + include_directories(${LIBGIT2_INCLUDE_DIRS}) +else () + message(FATAL_ERROR "LibGit2 not found!") +endif () endif() # Project sources set(PROJECT_SOURCES addons.cpp + build_manager.cpp + compile_command_generator.cpp + compiler_output_parser.cpp compiler.cpp dependency.cpp + generator.cpp loader.cpp manager.cpp sandbox.cpp + system_dependency.cpp toolchain.cpp + tracker.cpp version.cpp + debug/dump.cpp + debug/dynamic.cpp + debug/elf.cpp + debug/pdb.cpp + + platform/cmake.cpp + platform/meson.cpp + platform/xmake.cpp + + remote/github_impl.cpp + remote/github.cpp + + template/remote.cpp template/standalone.cpp ) # Project headers set(PROJECT_HEADERS addons.hpp + build_manager.hpp + compile_command_generator.hpp + compiler_output_parser.hpp compiler.hpp dependency.hpp + generator.hpp loader.hpp manager.hpp sandbox.hpp + system_dependency.hpp toolchain.hpp + tracker.hpp version.hpp + debug/dump.hpp + debug/dynamic.hpp + debug/elf.hpp + debug/pdb.hpp + + platform/cmake.hpp + platform/meson.hpp + platform/xmake.hpp + + remote/github_impl.hpp + remote/github.hpp + + template/remote.hpp template/standalone.hpp ) +if (NOT MINGW OR NOT WIN32) +set(PROJECT_SOURCES ${PROJECT_SOURCES} + project/git_impl.cpp + project/git.cpp +) +set(PROJECT_HEADERS ${PROJECT_HEADERS} + project/git_impl.hpp + project/git.hpp +) +endif() + # Required libraries for the project set(PROJECT_LIBS atom-io @@ -52,12 +109,19 @@ set(PROJECT_LIBS atom-function atom-system atom-utils + atom-component loguru lithium-utils ${CMAKE_THREAD_LIBS_INIT} ${Seccomp_LIBRARIES} ) +if (NOT MINGW OR NOT WIN32) +set(PROJECT_LIBS ${PROJECT_LIBS} + ${LIBGIT2_LIBRARIES} +) +endif() + # Create object library add_library(${PROJECT_NAME}_OBJECT OBJECT ${PROJECT_SOURCES} ${PROJECT_HEADERS}) diff --git a/src/addon/build_manager.cpp b/src/addon/build_manager.cpp index 39ebd73f..980665d3 100644 --- a/src/addon/build_manager.cpp +++ b/src/addon/build_manager.cpp @@ -4,6 +4,8 @@ #include "platform/meson.hpp" #include "platform/xmake.hpp" +#include +#include #include "atom/error/exception.hpp" #include "atom/log/loguru.hpp" @@ -13,34 +15,41 @@ namespace lithium { Project::Project(std::filesystem::path sourceDir, std::filesystem::path buildDirectory, BuildSystemType type) - : sourceDir_(std::move(sourceDir)), buildDir_(std::move(buildDirectory)), buildSystemType_(type) { + : sourceDir_(std::move(sourceDir)), + buildDir_(std::move(buildDirectory)), + buildSystemType_(type) { if (buildSystemType_ == BuildSystemType::Unknown) { detectBuildSystem(); } } void Project::detectBuildSystem() { - if (std::filesystem::exists(sourceDir_ / "CMakeLists.txt")) { - buildSystemType_ = BuildSystemType::CMake; - } else if (std::filesystem::exists(sourceDir_ / "meson.build")) { - buildSystemType_ = BuildSystemType::Meson; - } else if (std::filesystem::exists(sourceDir_ / "xmake.lua")) { - buildSystemType_ = BuildSystemType::XMake; - } else { + try { + if (std::filesystem::exists(sourceDir_ / "CMakeLists.txt")) { + buildSystemType_ = BuildSystemType::CMake; + } else if (std::filesystem::exists(sourceDir_ / "meson.build")) { + buildSystemType_ = BuildSystemType::Meson; + } else if (std::filesystem::exists(sourceDir_ / "xmake.lua")) { + buildSystemType_ = BuildSystemType::XMake; + } else { + buildSystemType_ = BuildSystemType::Unknown; + THROW_INVALID_ARGUMENT( + "Unable to detect a supported build system type"); + } + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception during build system detection: {}", e.what()); buildSystemType_ = BuildSystemType::Unknown; - THROW_INVALID_ARGUMENT("Unable to detect a supported build system type"); + THROW_INVALID_ARGUMENT("Build system detection failed."); } } -auto Project::getSourceDir() const -> const std::filesystem::path& { +const std::filesystem::path& Project::getSourceDir() const { return sourceDir_; } -auto Project::getBuildDir() const -> const std::filesystem::path& { - return buildDir_; -} +const std::filesystem::path& Project::getBuildDir() const { return buildDir_; } -auto Project::getBuildSystemType() const -> BuildSystemType { +Project::BuildSystemType Project::getBuildSystemType() const { return buildSystemType_; } @@ -49,232 +58,296 @@ auto Project::getBuildSystemType() const -> BuildSystemType { BuildManager::BuildManager() = default; void BuildManager::scanForProjects(const std::filesystem::path& rootDir) { - LOG_F(INFO, "Scanning for projects in directory %s...", rootDir.string().c_str()); - for (const auto& entry : std::filesystem::recursive_directory_iterator(rootDir)) { - if (entry.is_directory()) { - const auto& path = entry.path(); - if (std::filesystem::exists(path / "CMakeLists.txt") || - std::filesystem::exists(path / "meson.build") || - std::filesystem::exists(path / "xmake.lua")) { - try { - Project project(path, path / "build"); - projects_.push_back(project); - LOG_F(INFO, "Found project: %s", path.string().c_str()); - } catch (const std::exception& e) { - LOG_F(WARNING, "Unable to add project %s: %s", path.string().c_str(), e.what()); - } + LOG_F(INFO, "Scanning for projects in directory {}...", rootDir.string()); + + try { + std::vector> futures; + for (const auto& entry : + std::filesystem::recursive_directory_iterator(rootDir)) { + if (entry.is_directory()) { + futures.emplace_back(std::async(std::launch::async, [this, + &entry]() { + const auto& path = entry.path(); + if (std::filesystem::exists(path / "CMakeLists.txt") || + std::filesystem::exists(path / "meson.build") || + std::filesystem::exists(path / "xmake.lua")) { + try { + Project project(path, path / "build"); + std::lock_guard lock(projectsMutex_); + projects_.push_back(project); + LOG_F(INFO, "Found project: {}", path.string()); + } catch (const std::exception& e) { + LOG_F(WARNING, "Unable to add project {}: {}", + path.string(), e.what()); + } + } + })); } } + + for (auto& fut : futures) { + fut.get(); + } + } catch (const std::exception& e) { + LOG_F(ERROR, "Exception during project scanning: {}", e.what()); + THROW_INVALID_ARGUMENT("Project scanning failed."); } } void BuildManager::addProject(const Project& project) { - projects_.push_back(project); - LOG_F(INFO, "Added project: %s", project.getSourceDir().string().c_str()); + try { + std::lock_guard lock(projectsMutex_); + projects_.push_back(project); + LOG_F(INFO, "Added project: {}", project.getSourceDir().string()); + } catch (const std::exception& e) { + LOG_F(ERROR, "Failed to add project {}: {}", + project.getSourceDir().string(), e.what()); + throw; + } } -auto BuildManager::getProjects() const -> const std::vector& { +const std::vector& BuildManager::getProjects() const { return projects_; } -auto BuildManager::configureProject(const Project& project, BuildType buildType, - const std::vector& options, - const std::map& envVars) -> BuildResult { - LOG_F(INFO, "Configuring project: %s", project.getSourceDir().string().c_str()); +BuildResult BuildManager::configureProject( + const Project& project, BuildType buildType, + const std::vector& options, + const std::map& envVars) { + LOG_F(INFO, "Configuring project: {}", project.getSourceDir().string()); std::unique_ptr builder; - switch (project.getBuildSystemType()) { - case Project::BuildSystemType::CMake: - builder = std::make_unique(); - break; - case Project::BuildSystemType::Meson: - builder = std::make_unique(); - break; - case Project::BuildSystemType::XMake: - builder = std::make_unique(); - break; - default: - return BuildResult(false, "Unsupported build system type", -1); - } - try { - auto result = builder->configureProject(project.getSourceDir(), project.getBuildDir(), buildType, options, envVars); + switch (project.getBuildSystemType()) { + case Project::BuildSystemType::CMake: + builder = std::make_unique(); + break; + case Project::BuildSystemType::Meson: + builder = std::make_unique(); + break; + case Project::BuildSystemType::XMake: + builder = std::make_unique(); + break; + default: + LOG_F(ERROR, "Unsupported build system type for project: {}", + project.getSourceDir().string()); + return BuildResult(false, "Unsupported build system type", -1); + } + + auto result = builder->configureProject(project.getSourceDir(), + project.getBuildDir(), + buildType, options, envVars); if (result.isSuccess()) { - LOG_F(INFO, "Configuration successful."); + LOG_F(INFO, "Configuration successful for project: {}", + project.getSourceDir().string()); } else { - LOG_F(ERROR, "Configuration failed: %s", result.getMessage().c_str()); + LOG_F(ERROR, "Configuration failed for project {}: {}", + project.getSourceDir().string(), result.getMessage()); } return result; } catch (const std::exception& e) { - LOG_F(ERROR, "Configuration exception: %s", e.what()); + LOG_F(ERROR, "Configuration exception for project {}: {}", + project.getSourceDir().string(), e.what()); return BuildResult(false, e.what(), -1); } } -auto BuildManager::buildProject(const Project& project, std::optional jobs) -> BuildResult { - LOG_F(INFO, "Building project: %s", project.getSourceDir().string().c_str()); +BuildResult BuildManager::buildProject(const Project& project, + std::optional jobs) { + LOG_F(INFO, "Building project: {}", project.getSourceDir().string()); std::unique_ptr builder; - switch (project.getBuildSystemType()) { - case Project::BuildSystemType::CMake: - builder = std::make_unique(); - break; - case Project::BuildSystemType::Meson: - builder = std::make_unique(); - break; - case Project::BuildSystemType::XMake: - builder = std::make_unique(); - break; - default: - return BuildResult(false, "Unsupported build system type", -1); - } - try { + switch (project.getBuildSystemType()) { + case Project::BuildSystemType::CMake: + builder = std::make_unique(); + break; + case Project::BuildSystemType::Meson: + builder = std::make_unique(); + break; + case Project::BuildSystemType::XMake: + builder = std::make_unique(); + break; + default: + LOG_F(ERROR, "Unsupported build system type for project: {}", + project.getSourceDir().string()); + return BuildResult(false, "Unsupported build system type", -1); + } + auto result = builder->buildProject(project.getBuildDir(), jobs); if (result.isSuccess()) { - LOG_F(INFO, "Build successful."); + LOG_F(INFO, "Build successful for project: {}", + project.getSourceDir().string()); } else { - LOG_F(ERROR, "Build failed: %s", result.getMessage().c_str()); + LOG_F(ERROR, "Build failed for project {}: {}", + project.getSourceDir().string(), result.getMessage()); } return result; } catch (const std::exception& e) { - LOG_F(ERROR, "Build exception: %s", e.what()); + LOG_F(ERROR, "Build exception for project {}: {}", + project.getSourceDir().string(), e.what()); return BuildResult(false, e.what(), -1); } } -auto BuildManager::cleanProject(const Project& project) -> BuildResult { - LOG_F(INFO, "Cleaning project: %s", project.getSourceDir().string().c_str()); +BuildResult BuildManager::cleanProject(const Project& project) { + LOG_F(INFO, "Cleaning project: {}", project.getSourceDir().string()); std::unique_ptr builder; - switch (project.getBuildSystemType()) { - case Project::BuildSystemType::CMake: - builder = std::make_unique(); - break; - case Project::BuildSystemType::Meson: - builder = std::make_unique(); - break; - case Project::BuildSystemType::XMake: - builder = std::make_unique(); - break; - default: - return BuildResult(false, "Unsupported build system type", -1); - } - try { + switch (project.getBuildSystemType()) { + case Project::BuildSystemType::CMake: + builder = std::make_unique(); + break; + case Project::BuildSystemType::Meson: + builder = std::make_unique(); + break; + case Project::BuildSystemType::XMake: + builder = std::make_unique(); + break; + default: + LOG_F(ERROR, "Unsupported build system type for project: {}", + project.getSourceDir().string()); + return BuildResult(false, "Unsupported build system type", -1); + } + auto result = builder->cleanProject(project.getBuildDir()); if (result.isSuccess()) { - LOG_F(INFO, "Clean successful."); + LOG_F(INFO, "Clean successful for project: {}", + project.getSourceDir().string()); } else { - LOG_F(ERROR, "Clean failed: %s", result.getMessage().c_str()); + LOG_F(ERROR, "Clean failed for project {}: {}", + project.getSourceDir().string(), result.getMessage()); } return result; } catch (const std::exception& e) { - LOG_F(ERROR, "Clean exception: %s", e.what()); + LOG_F(ERROR, "Clean exception for project {}: {}", + project.getSourceDir().string(), e.what()); return BuildResult(false, e.what(), -1); } } -auto BuildManager::installProject(const Project& project, const std::filesystem::path& installDir) -> BuildResult { - LOG_F(INFO, "Installing project: %s", project.getSourceDir().string().c_str()); +BuildResult BuildManager::installProject( + const Project& project, const std::filesystem::path& installDir) { + LOG_F(INFO, "Installing project: {}", project.getSourceDir().string()); std::unique_ptr builder; - switch (project.getBuildSystemType()) { - case Project::BuildSystemType::CMake: - builder = std::make_unique(); - break; - case Project::BuildSystemType::Meson: - builder = std::make_unique(); - break; - case Project::BuildSystemType::XMake: - builder = std::make_unique(); - break; - default: - return BuildResult(false, "Unsupported build system type", -1); - } - try { - auto result = builder->installProject(project.getBuildDir(), installDir); + switch (project.getBuildSystemType()) { + case Project::BuildSystemType::CMake: + builder = std::make_unique(); + break; + case Project::BuildSystemType::Meson: + builder = std::make_unique(); + break; + case Project::BuildSystemType::XMake: + builder = std::make_unique(); + break; + default: + LOG_F(ERROR, "Unsupported build system type for project: {}", + project.getSourceDir().string()); + return BuildResult(false, "Unsupported build system type", -1); + } + + auto result = + builder->installProject(project.getBuildDir(), installDir); if (result.isSuccess()) { - LOG_F(INFO, "Install successful."); + LOG_F(INFO, "Install successful for project: {}", + project.getSourceDir().string()); } else { - LOG_F(ERROR, "Install failed: %s", result.getMessage().c_str()); + LOG_F(ERROR, "Install failed for project {}: {}", + project.getSourceDir().string(), result.getMessage()); } return result; } catch (const std::exception& e) { - LOG_F(ERROR, "Install exception: %s", e.what()); + LOG_F(ERROR, "Install exception for project {}: {}", + project.getSourceDir().string(), e.what()); return BuildResult(false, e.what(), -1); } } -auto BuildManager::runTests(const Project& project, const std::vector& testNames) -> BuildResult { - LOG_F(INFO, "Running tests for project: %s", project.getSourceDir().string().c_str()); +BuildResult BuildManager::runTests(const Project& project, + const std::vector& testNames) { + LOG_F(INFO, "Running tests for project: {}", + project.getSourceDir().string()); std::unique_ptr builder; - switch (project.getBuildSystemType()) { - case Project::BuildSystemType::CMake: - builder = std::make_unique(); - break; - case Project::BuildSystemType::Meson: - builder = std::make_unique(); - break; - case Project::BuildSystemType::XMake: - builder = std::make_unique(); - break; - default: - return BuildResult(false, "Unsupported build system type", -1); - } - try { + switch (project.getBuildSystemType()) { + case Project::BuildSystemType::CMake: + builder = std::make_unique(); + break; + case Project::BuildSystemType::Meson: + builder = std::make_unique(); + break; + case Project::BuildSystemType::XMake: + builder = std::make_unique(); + break; + default: + LOG_F(ERROR, "Unsupported build system type for project: {}", + project.getSourceDir().string()); + return BuildResult(false, "Unsupported build system type", -1); + } + auto result = builder->runTests(project.getBuildDir(), testNames); if (result.isSuccess()) { - LOG_F(INFO, "Tests passed."); + LOG_F(INFO, "Tests passed for project: {}", + project.getSourceDir().string()); } else { - LOG_F(ERROR, "Tests failed: %s", result.getMessage().c_str()); + LOG_F(ERROR, "Tests failed for project {}: {}", + project.getSourceDir().string(), result.getMessage()); } return result; } catch (const std::exception& e) { - LOG_F(ERROR, "Test exception: %s", e.what()); + LOG_F(ERROR, "Test exception for project {}: {}", + project.getSourceDir().string(), e.what()); return BuildResult(false, e.what(), -1); } } -auto BuildManager::generateDocs(const Project& project, const std::filesystem::path& outputDir) -> BuildResult { - LOG_F(INFO, "Generating docs for project: %s", project.getSourceDir().string().c_str()); +BuildResult BuildManager::generateDocs(const Project& project, + const std::filesystem::path& outputDir) { + LOG_F(INFO, "Generating docs for project: {}", + project.getSourceDir().string()); std::unique_ptr builder; - switch (project.getBuildSystemType()) { - case Project::BuildSystemType::CMake: - builder = std::make_unique(); - break; - case Project::BuildSystemType::Meson: - builder = std::make_unique(); - break; - case Project::BuildSystemType::XMake: - builder = std::make_unique(); - break; - default: - return BuildResult(false, "Unsupported build system type", -1); - } - try { + switch (project.getBuildSystemType()) { + case Project::BuildSystemType::CMake: + builder = std::make_unique(); + break; + case Project::BuildSystemType::Meson: + builder = std::make_unique(); + break; + case Project::BuildSystemType::XMake: + builder = std::make_unique(); + break; + default: + LOG_F(ERROR, "Unsupported build system type for project: {}", + project.getSourceDir().string()); + return BuildResult(false, "Unsupported build system type", -1); + } + auto result = builder->generateDocs(project.getBuildDir(), outputDir); if (result.isSuccess()) { - LOG_F(INFO, "Docs generation successful."); + LOG_F(INFO, "Docs generation successful for project: {}", + project.getSourceDir().string()); } else { - LOG_F(ERROR, "Docs generation failed: %s", result.getMessage().c_str()); + LOG_F(ERROR, "Docs generation failed for project {}: {}", + project.getSourceDir().string(), result.getMessage()); } return result; } catch (const std::exception& e) { - LOG_F(ERROR, "Docs generation exception: %s", e.what()); + LOG_F(ERROR, "Docs generation exception for project {}: {}", + project.getSourceDir().string(), e.what()); return BuildResult(false, e.what(), -1); } } -} // namespace lithium +} // namespace lithium \ No newline at end of file diff --git a/src/addon/build_manager.hpp b/src/addon/build_manager.hpp index a996267b..ae8b580e 100644 --- a/src/addon/build_manager.hpp +++ b/src/addon/build_manager.hpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -14,55 +15,57 @@ namespace lithium { /** * @class Project - * @brief 表示一个项目,包含源代码目录、构建目录和构建系统类型。 + * @brief Represents a project with source directory, build directory, and build + * system type. */ class Project { public: /** * @enum BuildSystemType - * @brief 表示构建系统的类型。 + * @brief Represents the type of build system. */ enum class BuildSystemType { - CMake, /**< CMake 构建系统。 */ - Meson, /**< Meson 构建系统。 */ - XMake, /**< XMake 构建系统。 */ - Unknown /**< 未知的构建系统。 */ + CMake, /**< CMake build system. */ + Meson, /**< Meson build system. */ + XMake, /**< XMake build system. */ + Unknown /**< Unknown build system. */ }; /** - * @brief 构造函数,创建一个项目对象。 + * @brief Constructor to create a Project object. * - * @param sourceDir 项目的源代码目录。 - * @param buildDir 项目的构建目录。 - * @param type 构建系统类型,可选,默认为 Unknown,将自动检测。 + * @param sourceDir Path to the project's source directory. + * @param buildDir Path to the project's build directory. + * @param type Build system type, optional. Defaults to Unknown and + * auto-detects. */ Project(std::filesystem::path sourceDir, std::filesystem::path buildDirectory, BuildSystemType type = BuildSystemType::Unknown); /** - * @brief 自动检测构建系统类型。 + * @brief Automatically detects the build system type. */ void detectBuildSystem(); /** - * @brief 获取源代码目录。 + * @brief Gets the source directory. * - * @return 源代码目录的路径。 + * @return Path to the source directory. */ const std::filesystem::path& getSourceDir() const; /** - * @brief 获取构建目录。 + * @brief Gets the build directory. * - * @return 构建目录的路径。 + * @return Path to the build directory. */ const std::filesystem::path& getBuildDir() const; /** - * @brief 获取构建系统类型。 + * @brief Gets the build system type. * - * @return 构建系统类型。 + * @return Build system type. */ BuildSystemType getBuildSystemType() const; @@ -74,45 +77,47 @@ class Project { /** * @class BuildManager - * @brief 管理多个项目的构建过程,支持各种构建系统。 + * @brief Manages the build processes of multiple projects, supporting various + * build systems. */ class BuildManager { public: /** * @typedef BuildTask - * @brief 定义了一个构建任务类型,使用 std::function。 + * @brief Defines a build task type using std::function. * - * 每个构建任务是返回 BuildResult 的可调用对象。 + * Each build task is a callable object that returns a BuildResult. */ using BuildTask = std::function; /** - * @brief 构造函数,创建一个 BuildManager 对象。 + * @brief Constructor to create a BuildManager object. */ BuildManager(); /** - * @brief 扫描指定目录,自动检测并管理项目。 + * @brief Scans the specified directory to automatically detect and manage + * projects. * - * @param rootDir 要扫描的根目录。 + * @param rootDir Root directory to scan. */ void scanForProjects(const std::filesystem::path& rootDir); /** - * @brief 添加一个项目到管理器。 + * @brief Adds a project to the manager. * - * @param project 要添加的项目。 + * @param project The project to add. */ void addProject(const Project& project); /** - * @brief 获取所有管理的项目。 + * @brief Retrieves all managed projects. * - * @return 项目列表。 + * @return List of projects. */ const std::vector& getProjects() const; - // 针对单个项目的构建操作 + // Build operations for individual projects BuildResult configureProject( const Project& project, BuildType buildType, const std::vector& options = {}, @@ -132,12 +137,12 @@ class BuildManager { BuildResult generateDocs(const Project& project, const std::filesystem::path& outputDir); - // 异常处理和性能优化已在实现中考虑 - private: - std::vector projects_; /**< 管理的项目列表。 */ + std::vector projects_; /**< List of managed projects. */ + mutable std::mutex + projectsMutex_; /**< Mutex for thread-safe access to projects. */ }; } // namespace lithium -#endif // LITHIUM_ADDON_BUILDER_HPP +#endif // LITHIUM_ADDON_BUILDER_HPP \ No newline at end of file diff --git a/src/addon/compile_command_generator.cpp b/src/addon/compile_command_generator.cpp index bba6ac53..f4612ad8 100644 --- a/src/addon/compile_command_generator.cpp +++ b/src/addon/compile_command_generator.cpp @@ -1,10 +1,12 @@ #include "compile_command_generator.hpp" +#include #include #include #include #include #include +// #include // Removed unused include #include "atom/log/loguru.hpp" #include "atom/type/json.hpp" @@ -13,8 +15,15 @@ using json = nlohmann::json; namespace lithium { +// Constants constexpr int K_ALIGNMENT = 128; +/** + * @brief Structure representing a compile command. + * + * Each compile command includes the working directory, the compile command, + * and the source file associated with the command. + */ struct alignas(K_ALIGNMENT) CompileCommand { private: std::string directory_; @@ -22,227 +31,573 @@ struct alignas(K_ALIGNMENT) CompileCommand { std::string file_; public: - [[nodiscard]] auto toJson() const -> json { + /** + * @brief Converts the compile command to a JSON object. + * + * @return JSON representation of the compile command. + */ + [[nodiscard]] json toJson() const { return json{ {"directory", directory_}, {"command", command_}, {"file", file_}}; } - void fromJson(const json& json_obj) { - directory_ = json_obj["directory"].get(); - command_ = json_obj["command"].get(); - file_ = json_obj["file"].get(); + /** + * @brief Initializes the compile command from a JSON object. + * + * @param jsonObj The JSON object containing compile command data. + */ + void fromJson(const json& jsonObj) { + directory_ = jsonObj.at("directory").get(); + command_ = jsonObj.at("command").get(); + file_ = jsonObj.at("file").get(); } CompileCommand() = default; + + /** + * @brief Constructs a compile command with specified directory, command, + * and file. + * + * @param directory The working directory for the compile command. + * @param command The compile command string. + * @param file The source file to compile. + */ CompileCommand(std::string directory, std::string command, std::string file) : directory_(std::move(directory)), command_(std::move(command)), file_(std::move(file)) {} }; +/** + * @brief Implementation structure for CompileCommandGenerator using the Pimpl + * idiom. + */ struct alignas(K_ALIGNMENT) CompileCommandGenerator::Impl { - std::string sourceDir = "./src"; - std::vector extensions = {".cpp", ".c"}; - std::unordered_map options; +private: + std::string sourceDir_ = "./src"; + std::vector extensions_ = {".cpp", ".c"}; + std::unordered_map options_; std::unordered_map> - targetOptions; + targetOptions_; std::unordered_map> - conditionalOptions; - std::vector defines; - std::vector flags; - std::vector libraries; - std::string commandTemplate = "{compiler} {include} {output} {file}"; - std::string compiler = "g++"; // 默认编译器 - std::mutex commandMutex; - - auto getSourceFiles() -> std::vector { - LOG_F(INFO, "Scanning source directory: {}", sourceDir); - std::vector source_files; + conditionalOptions_; + std::vector defines_; + std::vector flags_; + std::vector libraries_; + std::string commandTemplate_ = "{compiler} {include} {output} {file}"; + std::string compiler_ = "g++"; // Default compiler + std::mutex commandMutex_; + + /** + * @brief Retrieves all source files from the specified source directory. + * + * @return A vector of source file paths. + * @throws std::runtime_error if the source directory does not exist. + */ + std::vector getSourceFiles() { + LOG_F(INFO, "Scanning source directory: {}", sourceDir_); + std::vector sourceFiles; + if (!std::filesystem::exists(sourceDir_)) { + LOG_F(ERROR, "Source directory does not exist: {}", sourceDir_); + throw std::runtime_error("Source directory does not exist: " + + sourceDir_); + } for (const auto& entry : - std::filesystem::directory_iterator(sourceDir)) { + std::filesystem::recursive_directory_iterator(sourceDir_)) { if (entry.is_regular_file()) { const auto& path = entry.path(); - for (const auto& ext : extensions) { + for (const auto& ext : extensions_) { if (path.extension() == ext) { - source_files.push_back(path.string()); + sourceFiles.emplace_back(path.string()); LOG_F(INFO, "Found source file: {}", path.string()); + break; } } } } - LOG_F(INFO, "Total source files found: {}", source_files.size()); - return source_files; + LOG_F(INFO, "Total source files found: {}", sourceFiles.size()); + return sourceFiles; } - auto applyOptions(const std::string& target_name, - const std::string& file_path) -> std::string { - LOG_F(INFO, "Applying options for target: {}, file: {}", target_name, - file_path); - std::string command = commandTemplate; + /** + * @brief Applies configured options to generate a compile command for a + * specific target and file. + * + * @param targetName The target name for which to generate the command. + * @param filePath The source file path. + * @return The generated compile command string. + * @throws std::invalid_argument if required options are missing. + */ + std::string applyOptions(const std::string& targetName, + const std::string& filePath) { + LOG_F(INFO, "Applying options for target: {}, file: {}", targetName, + filePath); + std::lock_guard lock(commandMutex_); + std::string command = commandTemplate_; - // 处理通用选项、目标选项和条件选项 - options["file"] = file_path; - options["compiler"] = compiler; // 使用设置的编译器 - auto& targetOpts = targetOptions[target_name]; - for (const auto& [key, value] : options) { + // Replace placeholders with actual values + std::unordered_map placeholders = { + {"compiler", compiler_}, + {"file", filePath}, + {"directory", options_.at("directory")}, + {"output", options_.at("output")}}; + + for (const auto& [key, value] : placeholders) { command = std::regex_replace( command, std::regex("\\{" + key + "\\}"), value); } - for (const auto& [key, value] : targetOpts) { - command = std::regex_replace( - command, std::regex("\\{" + key + "\\}"), value); + + // Apply global options + for (const auto& [key, value] : options_) { + if (key != "compiler" && key != "file" && key != "directory" && + key != "output") { + command = std::regex_replace( + command, std::regex("\\{" + key + "\\}"), value); + } + } + + // Apply target-specific options + auto targetIt = targetOptions_.find(targetName); + if (targetIt != targetOptions_.end()) { + for (const auto& [key, value] : targetIt->second) { + command = std::regex_replace( + command, std::regex("\\{" + key + "\\}"), value); + } + } + + // Apply conditional options + for (const auto& [condition, opts] : conditionalOptions_) { + if (evaluateCondition(condition)) { + for (const auto& [key, value] : opts) { + command = std::regex_replace( + command, std::regex("\\{" + key + "\\}"), value); + } + } } - // 处理宏定义和编译标志 - for (const auto& define : defines) { + // Append defines + for (const auto& define : defines_) { command += " -D" + define; } - for (const auto& flag : flags) { + + // Append flags + for (const auto& flag : flags_) { command += " " + flag; } - // 添加库依赖 - for (const auto& lib : libraries) { + // Append libraries + for (const auto& lib : libraries_) { command += " -l" + lib; } - LOG_F(INFO, "Generated command: {}", command); + LOG_F(INFO, "Generated command for target {}: {}", targetName, command); return command; } + /** + * @brief Evaluates a condition string. + * + * @param condition The condition to evaluate. + * @return True if the condition is met, false otherwise. + * + * @note Currently supports simple environment variable checks. + */ + static bool evaluateCondition(const std::string& condition) { + LOG_F(INFO, "Evaluating condition: {}", condition); + // Example implementation: check if an environment variable is set + if (condition.find("ENV:") == 0) { + std::string envVar = condition.substr(4); + // getenv is not thread-safe; consider using thread-safe + // alternatives if available + const char* val = std::getenv(envVar.c_str()); + return val != nullptr; + } + LOG_F(WARNING, "Unsupported condition format: {}", condition); + return false; + } + + /** + * @brief Saves the generated compile commands to a JSON file. + * + * @param commands The list of compile commands to save. + * @param outputPath The path to the output JSON file. + * @throws std::runtime_error if the file cannot be opened. + */ static void saveCommandsToFile(const std::vector& commands, - const std::string& output_path) { - LOG_F(INFO, "Saving commands to file: {}", output_path); + const std::string& outputPath) { + LOG_F(INFO, "Saving compile commands to file: {}", outputPath); json jCommands = json::array(); for (const auto& cmd : commands) { jCommands.push_back(cmd.toJson()); } - std::ofstream ofs(output_path); - if (ofs.is_open()) { - ofs << json{{"commands", jCommands}}.dump(4); - LOG_F(INFO, "Commands successfully saved to {}", output_path); - } else { - LOG_F(ERROR, "Failed to open file: {}", output_path); + json outputJson = {{"commands", jCommands}}; + + std::ofstream ofs(outputPath); + if (!ofs.is_open()) { + LOG_F(ERROR, "Failed to open output file: {}", outputPath); + throw std::runtime_error("Failed to open output file: " + + outputPath); + } + ofs << outputJson.dump(4); + ofs.close(); + LOG_F(INFO, "Compile commands successfully saved to {}", outputPath); + } + +public: + /** + * @brief Loads and parses the configuration from a JSON file. + * + * @param configPath The path to the configuration JSON file. + * @throws std::runtime_error if the file cannot be opened or parsed. + */ + void loadConfiguration(const std::string& configPath) { + LOG_F(INFO, "Loading configuration from file: {}", configPath); + std::ifstream ifs(configPath); + if (!ifs.is_open()) { + LOG_F(ERROR, "Cannot open configuration file: {}", configPath); + throw std::runtime_error("Cannot open configuration file: " + + configPath); + } + + json config; + try { + ifs >> config; + } catch (const json::parse_error& e) { + LOG_F(ERROR, "JSON parsing error in file {}: {}", configPath, + e.what()); + throw std::runtime_error("JSON parsing error in file " + + configPath + ": " + e.what()); + } + + // Set global options + if (config.contains("options")) { + for (const auto& [key, value] : config["options"].items()) { + if (value.is_string()) { + setOption(key, value.get()); + } + } + } + + // Set defines + if (config.contains("defines") && config["defines"].is_array()) { + for (const auto& def : config["defines"]) { + if (def.is_string()) { + addDefine(def.get()); + } + } + } + + // Set flags + if (config.contains("flags") && config["flags"].is_array()) { + for (const auto& flag : config["flags"]) { + if (flag.is_string()) { + addFlag(flag.get()); + } + } + } + + // Set libraries + if (config.contains("libraries") && config["libraries"].is_array()) { + for (const auto& lib : config["libraries"]) { + if (lib.is_string()) { + addLibrary(lib.get()); + } + } + } + + // Set command template + if (config.contains("commandTemplate") && + config["commandTemplate"].is_string()) { + setCommandTemplate(config["commandTemplate"].get()); + } + + // Set compiler + if (config.contains("compiler") && config["compiler"].is_string()) { + setCompiler(config["compiler"].get()); + } + + // Add targets + if (config.contains("targets") && config["targets"].is_object()) { + for (const auto& [targetName, targetConfig] : + config["targets"].items()) { + addTarget(targetName); + if (targetConfig.contains("options") && + targetConfig["options"].is_object()) { + for (const auto& [key, value] : + targetConfig["options"].items()) { + if (value.is_string()) { + setTargetOption(targetName, key, + value.get()); + } + } + } + if (targetConfig.contains("conditionalOptions") && + targetConfig["conditionalOptions"].is_object()) { + for (const auto& [condition, opts] : + targetConfig["conditionalOptions"].items()) { + if (opts.is_object()) { + for (const auto& [key, value] : opts.items()) { + if (value.is_string()) { + addConditionalOption( + condition, key, + value.get()); + } + } + } + } + } + } + } + + LOG_F(INFO, "Configuration loaded successfully from {}", configPath); + } + +public: + /** + * @brief Sets a global option. + * + * @param key The option key. + * @param value The option value. + */ + void setOption(const std::string& key, const std::string& value) { + LOG_F(INFO, "Setting global option: {} = {}", key, value); + options_[key] = value; + } + + /** + * @brief Adds a target. + * + * @param targetName The name of the target to add. + */ + void addTarget(const std::string& targetName) { + LOG_F(INFO, "Adding target: {}", targetName); + if (targetOptions_.find(targetName) != targetOptions_.end()) { + LOG_F(WARNING, "Target {} already exists. Overwriting options.", + targetName); + } + targetOptions_[targetName] = {}; + } + + /** + * @brief Sets an option for a specific target. + * + * @param targetName The target name. + * @param key The option key. + * @param value The option value. + */ + void setTargetOption(const std::string& targetName, const std::string& key, + const std::string& value) { + LOG_F(INFO, "Setting option for target {}: {} = {}", targetName, key, + value); + if (targetOptions_.find(targetName) == targetOptions_.end()) { + LOG_F(WARNING, "Target {} does not exist. Adding target.", + targetName); + addTarget(targetName); + } + targetOptions_[targetName][key] = value; + } + + /** + * @brief Adds a conditional option. + * + * @param condition The condition string. + * @param key The option key. + * @param value The option value. + */ + void addConditionalOption(const std::string& condition, + const std::string& key, + const std::string& value) { + LOG_F(INFO, "Adding conditional option: if ({}) then {} = {}", + condition, key, value); + conditionalOptions_[condition][key] = value; + } + + /** + * @brief Adds a define directive. + * + * @param define The define string. + */ + void addDefine(const std::string& define) { + LOG_F(INFO, "Adding define: {}", define); + defines_.emplace_back(define); + } + + /** + * @brief Adds a compiler flag. + * + * @param flag The flag string. + */ + void addFlag(const std::string& flag) { + LOG_F(INFO, "Adding flag: {}", flag); + flags_.emplace_back(flag); + } + + /** + * @brief Adds a library. + * + * @param libraryPath The path to the library. + */ + void addLibrary(const std::string& libraryPath) { + LOG_F(INFO, "Adding library: {}", libraryPath); + libraries_.emplace_back(libraryPath); + } + + /** + * @brief Sets the command template. + * + * @param templateStr The command template string. + */ + void setCommandTemplate(const std::string& templateStr) { + LOG_F(INFO, "Setting command template: {}", templateStr); + commandTemplate_ = templateStr; + } + + /** + * @brief Sets the compiler. + * + * @param compiler The compiler string. + */ + void setCompiler(const std::string& compiler) { + LOG_F(INFO, "Setting compiler: {}", compiler); + compiler_ = compiler; + } + + /** + * @brief Generates compile commands and saves them to the specified output + * path. + */ + void generate() { + LOG_F(INFO, "Starting generation of compile commands."); + try { + auto sourceFiles = getSourceFiles(); + if (sourceFiles.empty()) { + LOG_F(WARNING, "No source files found in directory: {}", + sourceDir_); + return; + } + + std::vector commands; + commands.reserve(sourceFiles.size()); + + // Determine output path + std::string outputPath; + if (options_.find("outputPath") != options_.end()) { + outputPath = options_.at("outputPath"); + } else { + LOG_F(ERROR, + "Output path not specified. Set 'outputPath' option."); + throw std::runtime_error( + "Output path not specified. Set 'outputPath' option."); + } + + // Generate compile commands for each target + for (const auto& [targetName, _] : targetOptions_) { + for (const auto& file : sourceFiles) { + std::string command = applyOptions(targetName, file); + commands.emplace_back(options_.at("directory"), command, + file); + } + } + + // Handle default target if no targets are defined + if (targetOptions_.empty()) { + for (const auto& file : sourceFiles) { + std::string command = applyOptions("default", file); + commands.emplace_back(options_.at("directory"), command, + file); + } + } + + // Save commands to file + saveCommandsToFile(commands, outputPath); + LOG_F(INFO, "Compile commands generated successfully."); + } catch (const std::exception& e) { + LOG_F(ERROR, "Error during compile command generation: {}", + e.what()); + throw; // Re-throw exception after logging } } }; +/** + * @brief Constructs a CompileCommandGenerator instance. + */ CompileCommandGenerator::CompileCommandGenerator() : impl_(std::make_unique()) { - LOG_F(INFO, "CompileCommandGenerator created"); + LOG_F(INFO, "CompileCommandGenerator instance created."); } +/** + * @brief Destructs the CompileCommandGenerator instance. + */ CompileCommandGenerator::~CompileCommandGenerator() { - LOG_F(INFO, "CompileCommandGenerator destroyed"); + LOG_F(INFO, "CompileCommandGenerator instance destroyed."); } auto CompileCommandGenerator::setOption(const std::string& key, const std::string& value) -> CompileCommandGenerator& { - LOG_F(INFO, "Setting option: {} = {}", key, value); - impl_->options[key] = value; + impl_->setOption(key, value); return *this; } auto CompileCommandGenerator::addTarget(const std::string& target_name) -> CompileCommandGenerator& { - LOG_F(INFO, "Adding target: {}", target_name); - impl_->targetOptions[target_name] = {}; + impl_->addTarget(target_name); return *this; } auto CompileCommandGenerator::setTargetOption( const std::string& target_name, const std::string& key, const std::string& value) -> CompileCommandGenerator& { - LOG_F(INFO, "Setting target option for target: {}, {} = {}", target_name, - key, value); - impl_->targetOptions[target_name][key] = value; + impl_->setTargetOption(target_name, key, value); return *this; } auto CompileCommandGenerator::addConditionalOption( const std::string& condition, const std::string& key, const std::string& value) -> CompileCommandGenerator& { - LOG_F(INFO, "Adding conditional option: if {} then {} = {}", condition, key, - value); - impl_->conditionalOptions[condition][key] = value; + impl_->addConditionalOption(condition, key, value); return *this; } auto CompileCommandGenerator::addDefine(const std::string& define) -> CompileCommandGenerator& { - LOG_F(INFO, "Adding define: {}", define); - impl_->defines.push_back(define); + impl_->addDefine(define); return *this; } auto CompileCommandGenerator::addFlag(const std::string& flag) -> CompileCommandGenerator& { - LOG_F(INFO, "Adding flag: {}", flag); - impl_->flags.push_back(flag); + impl_->addFlag(flag); return *this; } -auto CompileCommandGenerator::addLibrary(const std::string& library_path) +auto CompileCommandGenerator::addLibrary(const std::string& libraryPath) -> CompileCommandGenerator& { - LOG_F(INFO, "Adding library: {}", library_path); - impl_->libraries.push_back(library_path); + impl_->addLibrary(libraryPath); return *this; } -auto CompileCommandGenerator::setCommandTemplate( - const std::string& template_str) -> CompileCommandGenerator& { - LOG_F(INFO, "Setting command template: {}", template_str); - impl_->commandTemplate = template_str; +auto CompileCommandGenerator::setCommandTemplate(const std::string& templateStr) + -> CompileCommandGenerator& { + impl_->setCommandTemplate(templateStr); return *this; } auto CompileCommandGenerator::setCompiler(const std::string& compiler) -> CompileCommandGenerator& { - LOG_F(INFO, "Setting compiler: {}", compiler); - impl_->compiler = compiler; + impl_->setCompiler(compiler); return *this; } void CompileCommandGenerator::loadConfigFromFile( - const std::string& config_path) { - LOG_F(INFO, "Loading config from file: {}", config_path); - std::ifstream ifs(config_path); - if (ifs.is_open()) { - json config; - ifs >> config; - for (const auto& [key, value] : config.items()) { - if (value.is_string()) { - setOption(key, value.get()); - } else if (key == "defines" && value.is_array()) { - for (const auto& def : value) { - addDefine(def.get()); - } - } else if (key == "libraries" && value.is_array()) { - for (const auto& lib : value) { - addLibrary(lib.get()); - } - } - } - LOG_F(INFO, "Config successfully loaded from {}", config_path); - } else { - LOG_F(ERROR, "Failed to open config file: {}", config_path); - } + const std::string& configPath) { + impl_->loadConfiguration(configPath); } -void CompileCommandGenerator::generate() { - LOG_F(INFO, "Generating compile commands"); - auto source_files = impl_->getSourceFiles(); - std::vector commands; - commands.reserve(source_files.size()); - for (const auto& file : source_files) { - commands.emplace_back(impl_->sourceDir, - impl_->applyOptions("default", file), file); - } - Impl::saveCommandsToFile(commands, impl_->options["outputPath"]); - LOG_F(INFO, "Compile commands generation complete"); -} +void CompileCommandGenerator::generate() { impl_->generate(); } -} // namespace lithium +} // namespace lithium \ No newline at end of file diff --git a/src/addon/compile_command_generator.hpp b/src/addon/compile_command_generator.hpp index d04029a9..41b8286c 100644 --- a/src/addon/compile_command_generator.hpp +++ b/src/addon/compile_command_generator.hpp @@ -3,34 +3,124 @@ #include #include -#include -#include namespace lithium { +/** + * @brief A class to generate compile commands based on configured options. + * + * This class facilitates the generation of compile commands by allowing users + * to set various compiler options, define targets, add conditional options, + * and manage dependencies. It supports loading configurations from files and + * generating compile commands in a structured JSON format. + */ class CompileCommandGenerator { public: CompileCommandGenerator(); ~CompileCommandGenerator(); + /** + * @brief Sets a global option for the compile commands. + * + * @param key The option key. + * @param value The option value. + * @return Reference to the current instance for method chaining. + */ auto setOption(const std::string& key, const std::string& value) -> CompileCommandGenerator&; + + /** + * @brief Adds a new target to the generator. + * + * @param target_name The name of the target. + * @return Reference to the current instance for method chaining. + */ auto addTarget(const std::string& target_name) -> CompileCommandGenerator&; + + /** + * @brief Sets an option specific to a target. + * + * @param target_name The name of the target. + * @param key The option key. + * @param value The option value. + * @return Reference to the current instance for method chaining. + */ auto setTargetOption(const std::string& target_name, const std::string& key, const std::string& value) -> CompileCommandGenerator&; + + /** + * @brief Adds a conditional option based on a specified condition. + * + * @param condition The condition string. + * @param key The option key. + * @param value The option value. + * @return Reference to the current instance for method chaining. + */ auto addConditionalOption(const std::string& condition, const std::string& key, const std::string& value) -> CompileCommandGenerator&; + + /** + * @brief Adds a macro definition to the compile commands. + * + * @param define The macro definition. + * @return Reference to the current instance for method chaining. + */ auto addDefine(const std::string& define) -> CompileCommandGenerator&; + + /** + * @brief Adds a compiler flag to the compile commands. + * + * @param flag The compiler flag. + * @return Reference to the current instance for method chaining. + */ auto addFlag(const std::string& flag) -> CompileCommandGenerator&; - auto addLibrary(const std::string& library_path) + + /** + * @brief Adds a library dependency to the compile commands. + * + * @param library_path The path to the library. + * @return Reference to the current instance for method chaining. + */ + auto addLibrary(const std::string& libraryPath) -> CompileCommandGenerator&; - auto setCommandTemplate(const std::string& template_str) + + /** + * @brief Sets the command template for generating compile commands. + * + * The template can include placeholders like {compiler}, {include}, + * {output}, and {file}. + * + * @param template_str The command template string. + * @return Reference to the current instance for method chaining. + */ + auto setCommandTemplate(const std::string& templateStr) -> CompileCommandGenerator&; - auto setCompiler(const std::string& compiler) - -> CompileCommandGenerator&; // 新增方法声明 - void loadConfigFromFile(const std::string& config_path); + /** + * @brief Sets the compiler to be used for generating compile commands. + * + * @param compiler The compiler executable name or path. + * @return Reference to the current instance for method chaining. + */ + auto setCompiler(const std::string& compiler) -> CompileCommandGenerator&; + + /** + * @brief Loads configuration options from a JSON file. + * + * The configuration file can specify options, defines, libraries, targets, + * etc. + * + * @param config_path The path to the configuration file. + */ + void loadConfigFromFile(const std::string& configPath); + + /** + * @brief Generates the compile commands based on the configured options. + * + * The generated commands are saved to a specified output path in JSON + * format. + */ void generate(); private: @@ -40,4 +130,4 @@ class CompileCommandGenerator { } // namespace lithium -#endif // COMPILE_COMMAND_GENERATOR_HPP +#endif // COMPILE_COMMAND_GENERATOR_HPP \ No newline at end of file diff --git a/src/addon/debug/apk.cpp b/src/addon/debug/apk.cpp new file mode 100644 index 00000000..67c9f220 --- /dev/null +++ b/src/addon/debug/apk.cpp @@ -0,0 +1,237 @@ +#include "apk.hpp" + +#include +#include + +#include +#include + +#include "atom/log/loguru.hpp" + +namespace fs = std::filesystem; + +const int PACKAGE_NAME_OFFSET = 9; +const int VERSION_NAME_OFFSET = 21; +const int PERMISSION_OFFSET = 30; +const int ARCHIVE_BLOCK_SIZE = 10240; + +APKTool::APKTool(const std::string& apkPath, const std::string& outputDir) + : apkPath(apkPath), + outputDir(outputDir), + logFile(outputDir + "/apktool.log") { + fs::create_directories(outputDir); + loguru::add_file(logFile.c_str(), loguru::Append, loguru::Verbosity_MAX); + LOG_F(INFO, + "APKTool initialized with APK path: {} and output directory: {}", + apkPath, outputDir); +} + +APKTool::~APKTool() { LOG_F(INFO, "APKTool instance destroyed."); } + +void APKTool::extract(bool parseManifest) { + LOG_F(INFO, "Starting to extract APK file."); + struct archive* archivePtr = archive_read_new(); + struct archive_entry* entry; + int result; + + archive_read_support_format_zip(archivePtr); + + result = archive_read_open_filename(archivePtr, apkPath.c_str(), + ARCHIVE_BLOCK_SIZE); + if (result) { + LOG_F(ERROR, "Failed to open APK file: {}, error code: {}", apkPath, + result); + return; + } + + std::vector fileList; + std::vector threads; + std::mutex mtx; + + while (archive_read_next_header(archivePtr, &entry) == ARCHIVE_OK) { + std::string entryName = archive_entry_pathname(entry); + fileList.push_back(entryName); + + threads.emplace_back([this, entryName, &archivePtr, &mtx]() { + std::string outputFilePath = + (fs::path(outputDir) / entryName).string(); + fs::create_directories(fs::path(outputFilePath).parent_path()); + + std::ofstream outFile(outputFilePath, std::ios::binary); + const void* buff; + size_t size; + la_int64_t offset; + + while (true) { + int result = + archive_read_data_block(archivePtr, &buff, &size, &offset); + if (result == ARCHIVE_EOF) + break; + if (result < ARCHIVE_OK) { + std::lock_guard lock(mtx); + LOG_F(ERROR, "Failed to extract file: {}, error code: {}", + entryName, result); + return; + } + outFile.write(static_cast(buff), + static_cast(size)); + } + + outFile.close(); + std::lock_guard lock(mtx); + LOG_F(INFO, "Successfully extracted file: {}", entryName); + }); + + archive_read_data_skip(archivePtr); + } + + for (auto& thread : threads) { + if (thread.joinable()) { + thread.join(); + } + } + + if (parseManifest) { + parseManifestFile(fs::path(outputDir) / "AndroidManifest.xml"); + } + + writeFileList(fileList); + archive_read_free(archivePtr); + LOG_F(INFO, "Extraction completed."); +} + +void APKTool::repack() { + LOG_F(INFO, "Starting to repack APK."); + std::string command = + "apktool b " + outputDir + " -o " + outputDir + "/output.apk"; + std::system(command.c_str()); + LOG_F(INFO, "APK repacking completed: {}/output.apk", outputDir); +} + +void APKTool::optimizeResources() { + LOG_F(INFO, "Starting resource optimization."); + for (const auto& entry : fs::recursive_directory_iterator(outputDir)) { + if (entry.path().extension() == ".png") { + std::string cmd = "optipng -o2 " + entry.path().string(); + std::system(cmd.c_str()); + LOG_F(INFO, "Optimized resource: {}", entry.path().string()); + } + } + LOG_F(INFO, "Resource optimization completed."); +} + +void APKTool::analyzeObfuscation() { + LOG_F(INFO, "Starting obfuscation analysis."); + std::string command = "jadx -d " + outputDir + "/jadx_output " + apkPath; + std::system(command.c_str()); + LOG_F(INFO, "Obfuscation analysis completed."); +} + +void APKTool::analyzeDependencies() { + LOG_F(INFO, "Starting dependency analysis."); + std::string gradleFile = outputDir + "/build.gradle"; + if (!fs::exists(gradleFile)) { + LOG_F(ERROR, "build.gradle file not found."); + return; + } + + std::ifstream file(gradleFile); + std::string line; + std::vector dependencies; + + while (std::getline(file, line)) { + if (line.find("implementation") != std::string::npos) { + dependencies.push_back(line); + } + } + + LOG_F(INFO, "Dependency analysis results:"); + for (const auto& dep : dependencies) { + LOG_F(INFO, "{}", dep); + } +} + +void APKTool::scanVulnerabilities() { + LOG_F(INFO, "Starting vulnerability scan."); + std::string command = + "dependency-check --project APKTool --scan " + outputDir; + std::system(command.c_str()); + LOG_F(INFO, "Vulnerability scan completed."); +} + +void APKTool::performanceAnalysis() { + LOG_F(INFO, "Starting performance analysis."); + std::string command = "adb shell am start -n " + apkPath; + std::system(command.c_str()); + LOG_F(INFO, "Performance analysis completed."); +} + +void APKTool::signAPK(const std::string& keystore, const std::string& alias, + const std::string& keystorePassword) { + LOG_F(INFO, "Starting APK signing."); + std::string command = + "jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore " + + keystore + " -storepass " + keystorePassword + " " + outputDir + + "/output.apk " + alias; + std::system(command.c_str()); + LOG_F(INFO, "APK signing completed."); +} + +void APKTool::verifySignature() { + LOG_F(INFO, "Starting APK signature verification."); + std::string command = "apksigner verify " + outputDir + "/output.apk"; + std::system(command.c_str()); + LOG_F(INFO, "APK signature verification completed."); +} + +void APKTool::parseManifestFile(const std::string& manifestPath) { + LOG_F(INFO, "Parsing AndroidManifest.xml."); + std::ifstream manifestFile(manifestPath); + if (!manifestFile) { + LOG_F(ERROR, "Failed to open AndroidManifest.xml."); + return; + } + + std::stringstream buffer; + buffer << manifestFile.rdbuf(); + std::string manifestContent = buffer.str(); + manifestFile.close(); + + std::size_t pos = manifestContent.find("package=\""); + if (pos != std::string::npos) { + pos += PACKAGE_NAME_OFFSET; + std::size_t end = manifestContent.find('\"', pos); + std::string packageName = manifestContent.substr(pos, end - pos); + LOG_F(INFO, "Package name: {}", packageName); + } + + pos = manifestContent.find("android:versionName=\""); + if (pos != std::string::npos) { + pos += VERSION_NAME_OFFSET; + std::size_t end = manifestContent.find('\"', pos); + std::string versionName = manifestContent.substr(pos, end - pos); + LOG_F(INFO, "Version name: {}", versionName); + } + + LOG_F(INFO, "Extracting application permissions:"); + std::size_t current = 0; + while ((pos = manifestContent.find("& fileList) { + std::ofstream listFile(outputDir + "/file_list.txt"); + for (const auto& fileName : fileList) { + listFile << fileName << std::endl; + } + listFile.close(); + LOG_F(INFO, "File list written."); +} + +void APKTool::log(const std::string& message) { LOG_F(INFO, "{}", message); } \ No newline at end of file diff --git a/src/addon/debug/apk.hpp b/src/addon/debug/apk.hpp new file mode 100644 index 00000000..ca83b157 --- /dev/null +++ b/src/addon/debug/apk.hpp @@ -0,0 +1,36 @@ +#ifndef LITHIUM_ADDON_DEBUG_APK_HPP +#define LITHIUM_ADDON_DEBUG_APK_HPP + +#include +#include +#include +#include + +class APKTool { +public: + APKTool(const std::string& apkPath, const std::string& outputDir); + ~APKTool(); + + void extract(bool parseManifest = false); + void repack(); + void optimizeResources(); + void analyzeObfuscation(); + void analyzeDependencies(); + void scanVulnerabilities(); + void performanceAnalysis(); + void signAPK(const std::string& keystore, const std::string& alias, + const std::string& keystorePassword); + void verifySignature(); + +private: + std::string apkPath; + std::string outputDir; + std::string logFile; + std::ofstream logStream; + + void parseManifestFile(const std::string& manifestPath); + void writeFileList(const std::vector& fileList); + void log(const std::string& message); +}; + +#endif // LITHIUM_ADDON_DEBUG_APK_HPP \ No newline at end of file diff --git a/src/addon/debug/dynamic.cpp b/src/addon/debug/dynamic.cpp new file mode 100644 index 00000000..95ec203e --- /dev/null +++ b/src/addon/debug/dynamic.cpp @@ -0,0 +1,205 @@ +#include "dynamic.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __linux__ +#include +#elif defined(__APPLE__) +// Apple-specific includes can go here if needed +#else +#include +#include +#include +#endif + +#include "atom/error/exception.hpp" +#include "atom/log/loguru.hpp" +#include "atom/system/command.hpp" +#include "atom/type/json.hpp" + +namespace lithium::addon { +using json = nlohmann::json; + +class DynamicLibraryParser::Impl { +public: + explicit Impl(std::string executable) : executable_(std::move(executable)) { + LOG_F(INFO, "Initialized DynamicLibraryParser for executable: {}", + executable_); + } + + void setJsonOutput(bool json_output) { + json_output_ = json_output; + LOG_F(INFO, "Set JSON output to: {}", json_output_ ? "true" : "false"); + } + + void setOutputFilename(const std::string &filename) { + output_filename_ = filename; + LOG_F(INFO, "Set output filename to: {}", output_filename_); + } + + void parse() { + LOG_SCOPE_FUNCTION(INFO); + try { +#ifdef __linux__ + readDynamicLibraries(); +#endif + executePlatformCommand(); + if (json_output_) { + handleJsonOutput(); + } + LOG_F(INFO, "Parse process completed successfully."); + } catch (const std::exception &e) { + LOG_F(ERROR, "Exception caught during parsing: {}", e.what()); + throw; + } + } + +private: + std::string executable_; + bool json_output_{}; + std::string output_filename_; + std::vector libraries_; + std::string command_output_; + + void readDynamicLibraries() { + LOG_SCOPE_FUNCTION(INFO); + std::ifstream file(executable_, std::ios::binary); + if (!file) { + LOG_F(ERROR, "Failed to open file: {}", executable_); + THROW_FAIL_TO_OPEN_FILE("Failed to open file: " + executable_); + } + + // Read ELF header + Elf64_Ehdr elfHeader; + file.read(reinterpret_cast(&elfHeader), sizeof(elfHeader)); + if (std::memcmp(elfHeader.e_ident, ELFMAG, SELFMAG) != 0) { + LOG_F(ERROR, "Not a valid ELF file: {}", executable_); + THROW_RUNTIME_ERROR("Not a valid ELF file: " + executable_); + } + + // Read section headers + file.seekg(static_cast(elfHeader.e_shoff), + std::ios::beg); + std::vector sectionHeaders(elfHeader.e_shnum); + file.read(reinterpret_cast(sectionHeaders.data()), + static_cast(elfHeader.e_shnum * + sizeof(Elf64_Shdr))); + + // Find the dynamic section + for (const auto §ion : sectionHeaders) { + if (section.sh_type == SHT_DYNAMIC) { + file.seekg( + static_cast(section.sh_offset), + std::ios::beg); + std::vector dynamic_entries(section.sh_size / + sizeof(Elf64_Dyn)); + file.read(reinterpret_cast(dynamic_entries.data()), + static_cast(section.sh_size)); + + // Read dynamic string table + Elf64_Shdr strtabHeader = sectionHeaders[section.sh_link]; + std::vector strtab(strtabHeader.sh_size); + file.seekg(static_cast( + strtabHeader.sh_offset), + std::ios::beg); + file.read(strtab.data(), + static_cast(strtabHeader.sh_size)); + + // Collect needed libraries + LOG_F(INFO, "Needed libraries from ELF:"); + for (const auto &entry : dynamic_entries) { + if (entry.d_tag == DT_NEEDED) { + std::string lib(&strtab[entry.d_un.d_val]); + libraries_.emplace_back(lib); + LOG_F(INFO, " - {}", lib); + } + } + break; + } + } + + if (libraries_.empty()) { + LOG_F(WARNING, "No dynamic libraries found in ELF file."); + } + } + + void executePlatformCommand() { + LOG_SCOPE_FUNCTION(INFO); + std::string command; + +#ifdef __APPLE__ + command = "otool -L "; +#elif __linux__ + command = "ldd "; +#elif defined(_WIN32) + command = "dumpbin /dependents "; +#else +#error "Unsupported OS" +#endif + + command += executable_; + LOG_F(INFO, "Running command: {}", command); + + auto [output, status] = atom::system::executeCommandWithStatus(command); + + command_output_ = output; + LOG_F(INFO, "Command output: \n{}", command_output_); + } + + void handleJsonOutput() { + LOG_SCOPE_FUNCTION(INFO); + std::string jsonContent = getDynamicLibrariesAsJson(); + if (!output_filename_.empty()) { + writeOutputToFile(jsonContent); + } else { + LOG_F(INFO, "JSON output:\n{}", jsonContent); + } + } + + std::string getDynamicLibrariesAsJson() const { + LOG_SCOPE_FUNCTION(INFO); + json jsonOutput; + jsonOutput["executable"] = executable_; + jsonOutput["libraries"] = libraries_; + jsonOutput["command_output"] = command_output_; + return jsonOutput.dump(4); + } + + void writeOutputToFile(const std::string &content) const { + LOG_SCOPE_FUNCTION(INFO); + std::ofstream outFile(output_filename_); + if (outFile) { + outFile << content; + outFile.close(); + LOG_F(INFO, "Output successfully written to {}", output_filename_); + } else { + LOG_F(ERROR, "Failed to write to file: {}", output_filename_); + throw std::runtime_error("Failed to write to file: " + + output_filename_); + } + } +}; + +DynamicLibraryParser::DynamicLibraryParser(const std::string &executable) + : impl_(std::make_unique(executable)) {} + +DynamicLibraryParser::~DynamicLibraryParser() = default; + +void DynamicLibraryParser::setJsonOutput(bool json_output) { + impl_->setJsonOutput(json_output); +} + +void DynamicLibraryParser::setOutputFilename(const std::string &filename) { + impl_->setOutputFilename(filename); +} + +void DynamicLibraryParser::parse() { impl_->parse(); } + +} // namespace lithium::addon diff --git a/src/addon/debug/dynamic.hpp b/src/addon/debug/dynamic.hpp new file mode 100644 index 00000000..e8cf15ec --- /dev/null +++ b/src/addon/debug/dynamic.hpp @@ -0,0 +1,24 @@ +#ifndef LITHIUM_ADDON_DEBUG_DYNAMIC_HPP +#define LITHIUM_ADDON_DEBUG_DYNAMIC_HPP + +#include +#include + +namespace lithium::addon { +class DynamicLibraryParser { +public: + DynamicLibraryParser(const std::string &executable); + ~DynamicLibraryParser(); + + void setJsonOutput(bool json_output); + void setOutputFilename(const std::string &filename); + void parse(); + +private: + class Impl; + std::unique_ptr impl_; +}; + +} // namespace lithium::addon + +#endif // LITHIUM_ADDON_DEBUG_DYNAMIC_HPP diff --git a/src/addon/debug/elf.cpp b/src/addon/debug/elf.cpp index 0ded532a..8291e19c 100644 --- a/src/addon/debug/elf.cpp +++ b/src/addon/debug/elf.cpp @@ -231,8 +231,10 @@ class ElfParser::Impl { Symbol{.name = std::string(strtab + symtab[i].st_name), .value = symtab[i].st_value, .size = symtab[i].st_size, - .bind = ELF64_ST_BIND(symtab[i].st_info), - .type = ELF64_ST_TYPE(symtab[i].st_info), + .bind = static_cast( + ELF64_ST_BIND(symtab[i].st_info)), + .type = static_cast( + ELF64_ST_TYPE(symtab[i].st_info)), .shndx = symtab[i].st_shndx}); } diff --git a/src/addon/dependency.cpp b/src/addon/dependency.cpp index 507c5f59..65fa5d6b 100644 --- a/src/addon/dependency.cpp +++ b/src/addon/dependency.cpp @@ -1,21 +1,41 @@ #include "dependency.hpp" #include "version.hpp" +#include +#include #include +#include +#include #include #include #include "atom/error/exception.hpp" #include "atom/log/loguru.hpp" #include "atom/type/json.hpp" +#include "atom/utils/container.hpp" #if __has_include() #include #endif +#if __has_include() +#include +#elif __has_include() +#include +#else +#include "extra/tinyxml2/tinyxml2.h" +#endif +using namespace tinyxml2; + +#include "utils/constant.hpp" namespace lithium { +DependencyGraph::DependencyGraph() { + LOG_F(INFO, "Creating dependency graph."); +} + void DependencyGraph::addNode(const Node& node, const Version& version) { + std::unique_lock lock(mutex_); LOG_F(INFO, "Adding node: {} with version: {}", node, version.toString()); adjList_.try_emplace(node); incomingEdges_.try_emplace(node); @@ -23,19 +43,35 @@ void DependencyGraph::addNode(const Node& node, const Version& version) { LOG_F(INFO, "Node {} added successfully.", node); } +void DependencyGraph::validateVersion(const Node& from, const Node& to, + const Version& requiredVersion) const { + std::shared_lock lock(mutex_); + if (nodeVersions_.find(to) != nodeVersions_.end()) { + if (nodeVersions_.at(to) < requiredVersion) { + LOG_F(ERROR, + "Version requirement not satisfied for dependency {} -> {}. " + "Required: {}, Found: {}", + from, to, requiredVersion.toString(), + nodeVersions_.at(to).toString()); + THROW_INVALID_ARGUMENT( + "Version requirement not satisfied for dependency " + from + + " -> " + to + ". Required: " + requiredVersion.toString() + + ", Found: " + nodeVersions_.at(to).toString()); + } + } else { + LOG_F(ERROR, "Dependency {} not found for node {}.", to, from); + THROW_INVALID_ARGUMENT("Dependency " + to + " not found for node " + + from); + } +} + void DependencyGraph::addDependency(const Node& from, const Node& to, const Version& requiredVersion) { + std::unique_lock lock(mutex_); LOG_F(INFO, "Adding dependency from {} to {} with required version: {}", from, to, requiredVersion.toString()); - if (nodeVersions_.contains(to) && nodeVersions_[to] < requiredVersion) { - LOG_F(ERROR, - "Version requirement not satisfied for dependency {} -> {}", from, - to); - THROW_INVALID_ARGUMENT( - "Version requirement not satisfied for dependency " + from + - " -> " + to); - } + validateVersion(from, to, requiredVersion); adjList_[from].insert(to); incomingEdges_[to].insert(from); @@ -43,10 +79,12 @@ void DependencyGraph::addDependency(const Node& from, const Node& to, } void DependencyGraph::removeNode(const Node& node) { + std::unique_lock lock(mutex_); LOG_F(INFO, "Removing node: {}", node); adjList_.erase(node); incomingEdges_.erase(node); + nodeVersions_.erase(node); for (auto& [key, neighbors] : adjList_) { neighbors.erase(node); @@ -55,25 +93,51 @@ void DependencyGraph::removeNode(const Node& node) { sources.erase(node); } - nodeVersions_.erase(node); - LOG_F(INFO, "Node {} removed successfully.", node); } void DependencyGraph::removeDependency(const Node& from, const Node& to) { + std::unique_lock lock(mutex_); LOG_F(INFO, "Removing dependency from {} to {}", from, to); - if (adjList_.contains(from)) { + if (adjList_.find(from) != adjList_.end()) { adjList_[from].erase(to); } - if (incomingEdges_.contains(to)) { + if (incomingEdges_.find(to) != incomingEdges_.end()) { incomingEdges_[to].erase(from); } LOG_F(INFO, "Dependency from {} to {} removed successfully.", from, to); } +auto DependencyGraph::getDependencies(const Node& node) const + -> std::vector { + std::shared_lock lock(mutex_); + if (adjList_.find(node) == adjList_.end()) { + LOG_F(WARNING, "Node {} not found when retrieving dependencies.", node); + return {}; + } + std::vector deps(adjList_.at(node).begin(), adjList_.at(node).end()); + LOG_F(INFO, "Retrieved {} dependencies for node {}.", deps.size(), node); + return deps; +} + +auto DependencyGraph::getDependents(const Node& node) const + -> std::vector { + std::shared_lock lock(mutex_); + if (incomingEdges_.find(node) == incomingEdges_.end()) { + LOG_F(WARNING, "Node {} not found when retrieving dependents.", node); + return {}; + } + std::vector dependents(incomingEdges_.at(node).begin(), + incomingEdges_.at(node).end()); + LOG_F(INFO, "Retrieved {} dependents for node {}.", dependents.size(), + node); + return dependents; +} + auto DependencyGraph::hasCycle() const -> bool { + std::shared_lock lock(mutex_); LOG_F(INFO, "Checking for cycles in the dependency graph."); std::unordered_set visited; std::unordered_set recStack; @@ -90,6 +154,7 @@ auto DependencyGraph::hasCycle() const -> bool { auto DependencyGraph::topologicalSort() const -> std::optional> { + std::shared_lock lock(mutex_); LOG_F(INFO, "Performing topological sort."); std::unordered_set visited; std::stack stack; @@ -105,60 +170,45 @@ auto DependencyGraph::topologicalSort() const std::vector sortedNodes; while (!stack.empty()) { - sortedNodes.push_back(stack.top()); + sortedNodes.emplace_back(stack.top()); stack.pop(); } - LOG_F(INFO, "Topological sort completed successfully."); + LOG_F(INFO, "Topological sort completed successfully with {} nodes.", + sortedNodes.size()); return sortedNodes; } -auto DependencyGraph::resolveDependencies( - const std::vector& directories) -> std::vector { +auto DependencyGraph::resolveDependencies(const std::vector& directories) + -> std::vector { LOG_F(INFO, "Resolving dependencies for directories."); DependencyGraph graph; - for (const auto& dir : directories) { - std::string packageJsonPath = dir + "/package.json"; - std::string packageXmlPath = dir + "/package.xml"; - std::string packageYamlPath = dir + "/package.yaml"; - - if (std::filesystem::exists(packageJsonPath)) { - LOG_F(INFO, "Parsing package.json in directory: {}", dir); - auto [package_name, deps] = parsePackageJson(packageJsonPath); - graph.addNode(package_name, deps.at(package_name)); - - for (const auto& dep : deps) { - if (dep.first != package_name) { - graph.addNode(dep.first, dep.second); - graph.addDependency(package_name, dep.first, dep.second); - } - } - } - - if (std::filesystem::exists(packageXmlPath)) { - LOG_F(INFO, "Parsing package.xml in directory: {}", dir); - auto [package_name, deps] = parsePackageXml(packageXmlPath); - graph.addNode(package_name, deps.at(package_name)); + const std::vector FILE_TYPES = {"package.json", "package.xml", + "package.yaml"}; - for (const auto& dep : deps) { - if (dep.first != package_name) { - graph.addNode(dep.first, dep.second); - graph.addDependency(package_name, dep.first, dep.second); - } - } - } - - if (std::filesystem::exists(packageYamlPath)) { - LOG_F(INFO, "Parsing package.yaml in directory: {}", dir); - auto [package_name, deps] = parsePackageYaml(packageYamlPath); - graph.addNode(package_name, deps.at(package_name)); - - for (const auto& dep : deps) { - if (dep.first != package_name) { - graph.addNode(dep.first, dep.second); - graph.addDependency(package_name, dep.first, dep.second); + for (const auto& dir : directories) { + for (const auto& file : FILE_TYPES) { + std::string filePath = dir; + filePath.append(Constants::PATH_SEPARATOR).append(file); + if (std::filesystem::exists(filePath)) { + LOG_F(INFO, "Parsing {} in directory: {}", file, dir); + auto [package_name, deps] = + (file == "package.json") ? parsePackageJson(filePath) + : (file == "package.xml") ? parsePackageXml(filePath) + : parsePackageYaml(filePath); + + graph.addNode(package_name, deps.at(package_name)); + + for (const auto& [depName, version] : deps) { + if (depName != package_name) { + graph.addNode(depName, version); + graph.addDependency(package_name, depName, version); + } } + } else { + LOG_F(WARNING, "File {} does not exist in directory: {}", file, + dir); } } } @@ -174,12 +224,81 @@ auto DependencyGraph::resolveDependencies( return {}; } - LOG_F(INFO, "Dependencies resolved successfully."); + LOG_F(INFO, "Dependencies resolved successfully with {} packages.", + sortedPackagesOpt->size()); return removeDuplicates(sortedPackagesOpt.value()); } -auto DependencyGraph::parsePackageJson(const std::string& path) - -> std::pair> { +auto DependencyGraph::resolveSystemDependencies( + const std::vector& directories) + -> std::unordered_map { + LOG_F(INFO, "Resolving system dependencies for directories."); + std::unordered_map systemDeps; + const std::vector FILE_TYPES = {"package.json", "package.xml", + "package.yaml"}; + + for (const auto& dir : directories) { + for (const auto& file : FILE_TYPES) { + std::string filePath = dir; + filePath.append(Constants::PATH_SEPARATOR).append(file); + if (std::filesystem::exists(filePath)) { + LOG_F(INFO, "Parsing {} in directory: {}", file, dir); + auto [package_name, deps] = + (file == "package.json") ? parsePackageJson(filePath) + : (file == "package.xml") ? parsePackageXml(filePath) + : parsePackageYaml(filePath); + + for (const auto& [depName, version] : deps) { + if (depName.rfind("system:", 0) == 0) { + std::string systemDepName = depName.substr(7); + if (systemDeps.find(systemDepName) == + systemDeps.end()) { + systemDeps[systemDepName] = version; + LOG_F(INFO, + "Added system dependency: {} with version {}", + systemDepName, version.toString()); + } else { + if (systemDeps[systemDepName] < version) { + systemDeps[systemDepName] = version; + LOG_F(INFO, + "Updated system dependency: {} to " + "version {}", + systemDepName, version.toString()); + } + } + } + } + } else { + LOG_F(WARNING, "File {} does not exist in directory: {}", file, + dir); + } + } + } + + LOG_F(INFO, + "System dependencies resolved successfully with {} system " + "dependencies.", + systemDeps.size()); + return atom::utils::unique(systemDeps); +} + +auto DependencyGraph::removeDuplicates(const std::vector& input) + -> std::vector { + LOG_F(INFO, "Removing duplicates from dependency list."); + std::unordered_set uniqueNodes; + std::vector result; + for (const auto& node : input) { + if (uniqueNodes.find(node) == uniqueNodes.end()) { + uniqueNodes.insert(node); + result.emplace_back(node); + } + } + LOG_F(INFO, "Duplicates removed. {} unique nodes remain.", result.size()); + return result; +} + +auto DependencyGraph::parsePackageJson(const Node& path) + -> std::pair> { LOG_F(INFO, "Parsing package.json file: {}", path); std::ifstream file(path); if (!file.is_open()) { @@ -206,7 +325,15 @@ auto DependencyGraph::parsePackageJson(const std::string& path) if (packageJson.contains("dependencies")) { for (const auto& dep : packageJson["dependencies"].items()) { - deps[dep.key()] = Version::parse(dep.value().get()); + try { + deps[dep.key()] = + Version::parse(dep.value().get()); + } catch (const std::exception& e) { + LOG_F(ERROR, "Error parsing version for dependency {}: {}", + dep.key(), e.what()); + THROW_INVALID_ARGUMENT("Error parsing version for dependency " + + dep.key() + ": " + e.what()); + } } } @@ -215,8 +342,8 @@ auto DependencyGraph::parsePackageJson(const std::string& path) return {packageName, deps}; } -auto DependencyGraph::parsePackageXml(const std::string& path) - -> std::pair> { +auto DependencyGraph::parsePackageXml(const Node& path) + -> std::pair> { LOG_F(INFO, "Parsing package.xml file: {}", path); XMLDocument doc; if (doc.LoadFile(path.c_str()) != XML_SUCCESS) { @@ -230,18 +357,19 @@ auto DependencyGraph::parsePackageXml(const std::string& path) THROW_MISSING_ARGUMENT("Missing root element in " + path); } - const char* packageName = root->FirstChildElement("name")->GetText(); - if (packageName == nullptr) { + XMLElement* nameElement = root->FirstChildElement("name"); + if (nameElement == nullptr || nameElement->GetText() == nullptr) { LOG_F(ERROR, "Missing package name in package.xml file: {}", path); THROW_MISSING_ARGUMENT("Missing package name in " + path); } + std::string packageName = nameElement->GetText(); std::unordered_map deps; XMLElement* dependElement = root->FirstChildElement("depend"); while (dependElement != nullptr) { - const char* depName = dependElement->GetText(); - if (depName != nullptr) { + if (dependElement->GetText() != nullptr) { + std::string depName = dependElement->GetText(); deps[depName] = Version{}; // Assuming no version info in XML, // could extend if needed. } @@ -274,8 +402,16 @@ auto DependencyGraph::parsePackageYaml(const std::string& path) if (config["dependencies"]) { for (const auto& dep : config["dependencies"]) { - deps[dep.first.as()] = - Version::parse(dep.second.as()); + try { + deps[dep.first.as()] = + Version::parse(dep.second.as()); + } catch (const std::exception& e) { + LOG_F(ERROR, "Error parsing version for dependency {}: {}", + dep.first.as(), e.what()); + THROW_INVALID_ARGUMENT("Error parsing version for dependency " + + dep.first.as() + ": " + + e.what()); + } } } @@ -283,38 +419,6 @@ auto DependencyGraph::parsePackageYaml(const std::string& path) return {packageName, deps}; } -void DependencyGraph::generatePackageYaml(const std::string& path) const { - LOG_F(INFO, "Generating package.yaml file: {}", path); - YAML::Emitter out; - - out << YAML::BeginMap; - out << YAML::Key << "name" << YAML::Value << "my-cpp-package"; - out << YAML::Key << "version" << YAML::Value << "1.0.0"; - out << YAML::Key << "description" << YAML::Value - << "A sample C++20 package"; - out << YAML::Key << "author" << YAML::Value - << "Your Name "; - out << YAML::Key << "license" << YAML::Value << "MIT"; - - out << YAML::Key << "dependencies" << YAML::Value << YAML::BeginMap; - for (const auto& [node, version] : nodeVersions_) { - out << YAML::Key << node << YAML::Value << version.toString(); - } - out << YAML::EndMap; - - out << YAML::EndMap; - - std::ofstream fout(path); - if (!fout.is_open()) { - LOG_F(ERROR, "Failed to open file: {}", path); - THROW_FAIL_TO_OPEN_FILE("Failed to open " + path); - } - fout << out.c_str(); - fout.close(); - - LOG_F(INFO, "Generated package.yaml file: {} successfully.", path); -} - auto DependencyGraph::hasCycleUtil( const Node& node, std::unordered_set& visited, std::unordered_set& recStack) const -> bool { @@ -326,7 +430,8 @@ auto DependencyGraph::hasCycleUtil( if (!visited.contains(neighbor) && hasCycleUtil(neighbor, visited, recStack)) { return true; - } else if (recStack.contains(neighbor)) { + } + if (recStack.contains(neighbor)) { return true; } } @@ -352,4 +457,46 @@ auto DependencyGraph::topologicalSortUtil( return true; } -} // namespace lithium +auto DependencyGraph::getAllDependencies(const Node& node) const + -> std::unordered_set { + std::shared_lock lock(mutex_); + LOG_F(INFO, "Getting all dependencies for node: {}", node); + std::unordered_set allDependencies; + getAllDependenciesUtil(node, allDependencies); + LOG_F(INFO, + "All dependencies for node {} retrieved successfully. {} " + "dependencies found.", + node, allDependencies.size()); + return allDependencies; +} + +void DependencyGraph::getAllDependenciesUtil( + const Node& node, std::unordered_set& allDependencies) const { + for (const auto& neighbor : adjList_.at(node)) { + if (allDependencies.find(neighbor) == allDependencies.end()) { + allDependencies.insert(neighbor); + getAllDependenciesUtil(neighbor, allDependencies); + } + } +} + +void DependencyGraph::loadNodesInParallel( + std::function loadFunction) const { + LOG_F(INFO, "Loading nodes in parallel."); + std::shared_lock lock(mutex_); + std::vector> futures; + for (const auto& [node, _] : adjList_) { + futures.emplace_back( + std::async(std::launch::async, loadFunction, node)); + } + for (auto& fut : futures) { + try { + fut.get(); + } catch (const std::exception& e) { + LOG_F(ERROR, "Error loading node: {}", e.what()); + } + } + LOG_F(INFO, "All nodes loaded in parallel successfully."); +} + +} // namespace lithium \ No newline at end of file diff --git a/src/addon/dependency.hpp b/src/addon/dependency.hpp index f21ce2cc..9ac85edc 100644 --- a/src/addon/dependency.hpp +++ b/src/addon/dependency.hpp @@ -1,21 +1,20 @@ +// DEPENDENCY.hpp #ifndef LITHIUM_ADDON_DEPENDENCY_HPP #define LITHIUM_ADDON_DEPENDENCY_HPP #include #include +#include #include #include #include #include #include -#include "tinyxml2/tinyxml2.h" - #include "atom/type/json_fwd.hpp" #include "version.hpp" using json = nlohmann::json; -using namespace tinyxml2; namespace lithium { /** @@ -27,12 +26,15 @@ namespace lithium { */ class DependencyGraph { public: + DependencyGraph(); + using Node = std::string; /** * @brief Adds a node to the dependency graph. * * @param node The name of the node to be added. + * @param version The version of the node. */ void addNode(const Node& node, const Version& version); @@ -43,6 +45,7 @@ class DependencyGraph { * * @param from The node that has a dependency. * @param to The node that is being depended upon. + * @param requiredVersion The required version of the dependent node. */ void addDependency(const Node& from, const Node& to, const Version& requiredVersion); @@ -127,7 +130,18 @@ class DependencyGraph { auto resolveDependencies(const std::vector& directories) -> std::vector; + /** + * @brief Resolves system dependencies for a given list of directories. + * + * @param directories A vector containing the paths of directories to + * resolve. + * @return A map containing system dependency names and their versions. + */ + auto resolveSystemDependencies(const std::vector& directories) + -> std::unordered_map; + private: + mutable std::shared_mutex mutex_; std::unordered_map> adjList_; ///< Adjacency list representation of the graph. std::unordered_map> @@ -157,7 +171,17 @@ class DependencyGraph { static auto parsePackageYaml(const std::string& path) -> std::pair>; - void generatePackageYaml(const std::string& path) const; + /** + * @brief Validates the version compatibility between dependent and + * dependency. + * + * @param from The dependent node. + * @param to The dependency node. + * @param requiredVersion The required version of the dependency. + */ + void validateVersion(const Node& from, const Node& to, + const Version& requiredVersion) const; }; } // namespace lithium -#endif // LITHIUM_ADDON_DEPENDENCY_HPP + +#endif // LITHIUM_ADDON_DEPENDENCY_HPP \ No newline at end of file diff --git a/src/addon/loader.hpp b/src/addon/loader.hpp index 15b0aeec..118f0738 100644 --- a/src/addon/loader.hpp +++ b/src/addon/loader.hpp @@ -24,7 +24,6 @@ Description: C++20 and Modules Loader #include #include "atom/function/ffi.hpp" -#include "atom/log/loguru.hpp" #include "atom/type/json_fwd.hpp" #include "module.hpp" @@ -34,55 +33,189 @@ using json = nlohmann::json; #define MODULE_HANDLE void* namespace lithium { + +/** + * @class ModuleLoader + * @brief Class to load and manage modules. + */ class ModuleLoader { public: + /** + * @brief Constructs a ModuleLoader with a specified directory name. + * @param dirName The directory name where modules are located. + */ explicit ModuleLoader(std::string dirName); + + /** + * @brief Destructs the ModuleLoader. + */ ~ModuleLoader(); + /** + * @brief Creates a shared pointer to a ModuleLoader. + * @return A shared pointer to a ModuleLoader. + */ static auto createShared() -> std::shared_ptr; + + /** + * @brief Creates a shared pointer to a ModuleLoader with a specified + * directory name. + * @param dirName The directory name where modules are located. + * @return A shared pointer to a ModuleLoader. + */ static auto createShared(std::string dirName) -> std::shared_ptr; + /** + * @brief Loads a module from a specified path. + * @param path The path to the module. + * @param name The name of the module. + * @return True if the module was loaded successfully, false otherwise. + */ auto loadModule(const std::string& path, const std::string& name) -> bool; + + /** + * @brief Unloads a module by name. + * @param name The name of the module. + * @return True if the module was unloaded successfully, false otherwise. + */ auto unloadModule(const std::string& name) -> bool; + + /** + * @brief Unloads all loaded modules. + * @return True if all modules were unloaded successfully, false otherwise. + */ auto unloadAllModules() -> bool; + + /** + * @brief Checks if a module is loaded. + * @param name The name of the module. + * @return True if the module is loaded, false otherwise. + */ auto hasModule(const std::string& name) const -> bool; + + /** + * @brief Gets a module by name. + * @param name The name of the module. + * @return A shared pointer to the ModuleInfo of the module. + */ auto getModule(const std::string& name) const -> std::shared_ptr; + + /** + * @brief Enables a module by name. + * @param name The name of the module. + * @return True if the module was enabled successfully, false otherwise. + */ auto enableModule(const std::string& name) -> bool; + + /** + * @brief Disables a module by name. + * @param name The name of the module. + * @return True if the module was disabled successfully, false otherwise. + */ auto disableModule(const std::string& name) -> bool; + + /** + * @brief Checks if a module is enabled. + * @param name The name of the module. + * @return True if the module is enabled, false otherwise. + */ auto isModuleEnabled(const std::string& name) const -> bool; + + /** + * @brief Gets the names of all existing modules. + * @return A vector of strings containing the names of all existing modules. + */ auto getAllExistedModules() const -> std::vector; + /** + * @brief Gets a function from a module. + * @tparam T The type of the function. + * @param name The name of the module. + * @param functionName The name of the function. + * @return A std::function object representing the function. + */ template auto getFunction(const std::string& name, const std::string& functionName) -> std::function; + /** + * @brief Gets an instance of a class from a module. + * @tparam T The type of the class. + * @param name The name of the module. + * @param config The configuration for the instance. + * @param symbolName The name of the symbol representing the instance. + * @return A shared pointer to the instance. + */ template auto getInstance(const std::string& name, const json& config, const std::string& symbolName) -> std::shared_ptr; + /** + * @brief Gets a unique instance of a class from a module. + * @tparam T The type of the class. + * @param name The name of the module. + * @param config The configuration for the instance. + * @param instanceFunctionName The name of the function to create the + * instance. + * @return A unique pointer to the instance. + */ template auto getUniqueInstance(const std::string& name, const json& config, const std::string& instanceFunctionName) -> std::unique_ptr; + /** + * @brief Gets a pointer to an instance of a class from a module. + * @tparam T The type of the class. + * @param name The name of the module. + * @param config The configuration for the instance. + * @param instanceFunctionName The name of the function to create the + * instance. + * @return A shared pointer to the instance. + */ template auto getInstancePointer(const std::string& name, const json& config, const std::string& instanceFunctionName) -> std::shared_ptr; + /** + * @brief Checks if a function exists in a module. + * @param name The name of the module. + * @param functionName The name of the function. + * @return True if the function exists, false otherwise. + */ auto hasFunction(const std::string& name, const std::string& functionName) -> bool; private: - std::unordered_map> modules_; - mutable std::shared_mutex sharedMutex_; + std::unordered_map> + modules_; ///< Map of module names to ModuleInfo objects. + mutable std::shared_mutex + sharedMutex_; ///< Mutex for thread-safe access to modules. + /** + * @brief Loads functions from a module. + * @param name The name of the module. + * @return A vector of unique pointers to FunctionInfo objects. + */ auto loadModuleFunctions(const std::string& name) -> std::vector>; + + /** + * @brief Gets the handle of a module. + * @param name The name of the module. + * @return A shared pointer to the DynamicLibrary of the module. + */ auto getHandle(const std::string& name) const -> std::shared_ptr; + + /** + * @brief Checks if a module exists. + * @param name The name of the module. + * @return True if the module exists, false otherwise. + */ auto checkModuleExists(const std::string& name) const -> bool; }; @@ -93,15 +226,12 @@ auto ModuleLoader::getFunction(const std::string& name, std::shared_lock lock(sharedMutex_); auto it = modules_.find(name); if (it == modules_.end()) { - LOG_F(ERROR, "Module {} not found", name); return nullptr; } try { return it->second->mLibrary->getFunction(functionName); } catch (const FFIException& e) { - LOG_F(ERROR, "Failed to load function {} from module {}: {}", - functionName, name, e.what()); } return nullptr; } @@ -139,4 +269,4 @@ auto ModuleLoader::getInstancePointer( } // namespace lithium -#endif // LITHIUM_ADDON_LOADER_HPP +#endif // LITHIUM_ADDON_LOADER_HPP \ No newline at end of file diff --git a/src/addon/manager.cpp b/src/addon/manager.cpp index 5bf6ecc4..31357160 100644 --- a/src/addon/manager.cpp +++ b/src/addon/manager.cpp @@ -15,14 +15,18 @@ #include #include +#include "addon/dependency.hpp" #include "addons.hpp" #include "compiler.hpp" #include "component.hpp" -#include "config/configor.hpp" #include "loader.hpp" #include "sandbox.hpp" +#include "system_dependency.hpp" #include "tracker.hpp" +#include "config/configor.hpp" + +#include "template/remote.hpp" #include "template/standalone.hpp" #include "atom/components/registry.hpp" @@ -33,6 +37,7 @@ #include "atom/system/command.hpp" #include "atom/system/env.hpp" #include "atom/system/process.hpp" +#include "atom/system/process_manager.hpp" #include "atom/type/json.hpp" #include "atom/utils/string.hpp" @@ -69,6 +74,7 @@ class ComponentManagerImpl { std::shared_ptr compiler; std::shared_ptr fileTracker; std::weak_ptr addonManager; + std::shared_ptr dependencyManager; std::unordered_map> componentEntries; std::weak_ptr processManager; @@ -90,6 +96,7 @@ ComponentManager::ComponentManager() GetWeakPtr(Constants::PROCESS_MANAGER); impl_->sandbox = std::make_shared(); impl_->compiler = std::make_shared(); + impl_->dependencyManager = std::make_shared(); GET_OR_CREATE_WEAK_PTR(impl_->configManager, ConfigManager, Constants::CONFIG_MANAGER); @@ -173,7 +180,7 @@ auto ComponentManager::loadComponentDirectory() -> bool { LOG_F( ERROR, "Component directory loaded from config does not exist: {}", - value.value()); + value.value().dump()); return false; } } catch (const json::parse_error& e) { @@ -205,6 +212,16 @@ void ComponentManager::initializeRegistryComponents() { } auto ComponentManager::loadModules() -> bool { + // Resolve system dependencies first, then resolve other dependencies + auto systemDeps = impl_->dependencyGraph.resolveSystemDependencies( + getQualifiedSubDirs(impl_->modulePath)); + + for (const auto& [dep, version] : systemDeps) { + impl_->dependencyManager->addDependency( + {dep, version.toString(), "default"}); + } + impl_->dependencyManager->checkAndInstallDependencies(); + auto qualifiedSubdirs = impl_->dependencyGraph.resolveDependencies( getQualifiedSubDirs(impl_->modulePath)); if (qualifiedSubdirs.empty()) { @@ -933,6 +950,42 @@ auto ComponentManager::reloadStandaloneComponent( return true; } +auto ComponentManager::loadRemoteComponent( + const std::string& component_name, const std::string& addon_name, + const std::string& module_path, const std::string& entry, + const std::vector& dependencies) -> bool { + std::lock_guard lock(impl_->mutex); + for (const auto& [name, component] : impl_->components) { + if (name == component_name) { + LOG_F(ERROR, "Component {} is already loaded", component_name); + return false; + } + } + if (atom::system::isProcessRunning(component_name)) { + LOG_F(ERROR, "Component {} is already running, killing it", + component_name); + atom::system::killProcessByName(component_name, SIGTERM); + LOG_F(INFO, "Killed process {}", component_name); + if (atom::system::isProcessRunning(component_name)) { + LOG_F(ERROR, "Failed to kill process {}", component_name); + return false; + } + } + for (const auto& dependency : dependencies) { + if (!atom::system::isProcessRunning(dependency)) { + LOG_F(ERROR, "Dependency {} is not running", dependency); + return false; + } + } + auto componentFullPath = module_path + Constants::PATH_SEPARATOR + + component_name + Constants::EXECUTABLE_EXTENSION; + auto remoteComponent = + std::make_shared(component_name); + + LOG_F(INFO, "Successfully loaded remote component {}", component_name); + return true; +} + void ComponentManager::updateDependencyGraph( const std::string& component_name, const std::string& version, const std::vector& dependencies, @@ -1009,9 +1062,11 @@ auto ComponentManager::getComponentDoc(const std::string& component_name) return impl_->components[component_name].lock()->getDoc(); } -auto ComponentManager::compileAndLoadComponent(const std::string& code, const std::string& moduleName, - const std::string& functionName) -> bool { - if (!impl_->compiler->compileToSharedLibrary(code, moduleName, functionName)) { +auto ComponentManager::compileAndLoadComponent( + const std::string& code, const std::string& moduleName, + const std::string& functionName) -> bool { + if (!impl_->compiler->compileToSharedLibrary(code, moduleName, + functionName)) { LOG_F(ERROR, "Failed to compile component: {}", moduleName); return false; } diff --git a/src/addon/manager.hpp b/src/addon/manager.hpp index 3a71dbe6..1fc49af2 100644 --- a/src/addon/manager.hpp +++ b/src/addon/manager.hpp @@ -99,6 +99,16 @@ class ComponentManager { bool forced) -> bool; auto reloadStandaloneComponent(const std::string& component_name) -> bool; + auto loadRemoteComponent(const std::string& component_name, + const std::string& addon_name, + const std::string& module_path, + const std::string& entry, + const std::vector& dependencies) + -> bool; + auto unloadRemoteComponent(const std::string& component_name, + bool forced) -> bool; + auto reloadRemoteComponent(const std::string& component_name) -> bool; + void updateDependencyGraph( const std::string& component_name, const std::string& version, const std::vector& dependencies, diff --git a/src/addon/system_dependency.cpp b/src/addon/system_dependency.cpp index 33bc289d..34c76ccc 100644 --- a/src/addon/system_dependency.cpp +++ b/src/addon/system_dependency.cpp @@ -1,13 +1,13 @@ #include "system_dependency.hpp" -#include "atom/system/command.hpp" - +#include #include -#include +#include #include +#include #include #include -#include +#include #if defined(__linux__) #define PLATFORM_LINUX @@ -19,526 +19,627 @@ #error "Unsupported platform" #endif +#include "atom/async/pool.hpp" +#include "atom/function/global_ptr.hpp" +#include "atom/log/loguru.hpp" +#include "atom/system/command.hpp" #include "atom/type/json.hpp" -namespace lithium { +#include "utils/constant.hpp" +namespace lithium { using json = nlohmann::json; -// 匿名命名空间用于私有变量 -namespace { -const std::string CACHE_FILE = "dependency_cache.json"; -std::mutex cacheMutex; -} // namespace - -DependencyManager::DependencyManager(std::vector dependencies) - : dependencies_(std::move(dependencies)) { - detectPlatform(); - configurePackageManager(); - loadCacheFromFile(); -} +class DependencyManager::Impl { +public: + Impl() { + detectPlatform(); + loadSystemPackageManagers(); + configurePackageManagers(); + loadCacheFromFile(); + } -void DependencyManager::setLogCallback( - std::function callback) { - logCallback_ = std::move(callback); -} + ~Impl() { saveCacheToFile(); } -void DependencyManager::detectPlatform() { -#ifdef PLATFORM_LINUX - // 检测具体的 Linux 发行版 - std::ifstream osReleaseFile("/etc/os-release"); - std::string line; - std::regex debianRegex(R"(ID=debian|ID=ubuntu|ID=linuxmint)"); - std::regex fedoraRegex(R"(ID=fedora|ID=rhel|ID=centos)"); - std::regex archRegex(R"(ID=arch|ID=manjaro)"); - std::regex opensuseRegex(R"(ID=opensuse|ID=suse)"); - std::regex gentooRegex(R"(ID=gentoo)"); - - if (osReleaseFile.is_open()) { - while (std::getline(osReleaseFile, line)) { - if (std::regex_search(line, debianRegex)) { - distroType_ = DistroType::DEBIAN; - return; + void checkAndInstallDependencies() { + auto threadPool = + GetPtr>(Constants::THREAD_POOL).value(); + if (!threadPool) { + LOG_F(ERROR, "Failed to get thread pool"); + return; + } + std::vector> futures; + futures.reserve(dependencies_.size()); + for (const auto& dep : dependencies_) { + futures.emplace_back( + threadPool->enqueue([this, dep]() { installDependency(dep); })); + } + + for (auto& fut : futures) { + if (fut.valid()) { + fut.get(); } - if (std::regex_search(line, fedoraRegex)) { - distroType_ = DistroType::FEDORA; - return; + } + } + + void installDependencyAsync(const DependencyInfo& dep) { + std::lock_guard lock(asyncMutex_); + asyncFutures_.emplace_back(std::async( + std::launch::async, [this, dep]() { installDependency(dep); })); + } + + void cancelInstallation(const std::string& depName) { + // 取消逻辑实现(示例中未具体实现) + LOG_F(INFO, "Cancel installation not implemented for: {}", depName); + } + + void setCustomInstallCommand(const std::string& dep, + const std::string& command) { + customInstallCommands_[dep] = command; + } + + auto generateDependencyReport() -> std::string { + std::ostringstream report; + for (const auto& dep : dependencies_) { + report << "Dependency: " << dep.name; + if (!dep.version.empty()) { + report << ", Version: " << dep.version; } - if (std::regex_search(line, archRegex)) { - distroType_ = DistroType::ARCH; - return; + report << ", Package Manager: " << dep.packageManager << "\n"; + } + return report.str(); + } + + void uninstallDependency(const std::string& depName) { + auto it = std::ranges::find_if( + dependencies_, + [&](const DependencyInfo& info) { return info.name == depName; }); + if (it == dependencies_.end()) { + LOG_F(WARNING, "Dependency {} not managed.", depName); + return; + } + + if (!isDependencyInstalled(*it)) { + LOG_F(INFO, "Dependency {} is not installed.", depName); + return; + } + + try { + auto pkgMgr = getPackageManager(it->packageManager); + if (!pkgMgr) { + throw DependencyException("Package manager not found."); +} + auto res = atom::system::executeCommandWithStatus( + pkgMgr->getUninstallCommand(*it)); + if (res.second != 0) { + throw DependencyException("Failed to uninstall dependency."); } - if (std::regex_search(line, opensuseRegex)) { - distroType_ = DistroType::OPENSUSE; - return; + installedCache_[depName] = false; + LOG_F(INFO, "Uninstalled dependency: {}", depName); + } catch (const DependencyException& ex) { + LOG_F(ERROR, "Error uninstalling {}: {}", depName, ex.what()); + } + } + + auto getCurrentPlatform() const -> std::string { return platform_; } + + void addDependency(const DependencyInfo& dep) { + std::lock_guard lock(cacheMutex_); + dependencies_.emplace_back(dep); + installedCache_.emplace(dep.name, false); + LOG_F(INFO, "Added dependency: {}", dep.name); + } + + void removeDependency(const std::string& depName) { + std::lock_guard lock(cacheMutex_); + dependencies_.erase( + std::ranges::remove_if( + dependencies_, + [&](const DependencyInfo& dep) { return dep.name == depName; }) + .begin(), + dependencies_.end()); + installedCache_.erase(depName); + LOG_F(INFO, "Removed dependency: {}", depName); + } + + auto searchDependency(const std::string& depName) + -> std::vector { + std::vector results; + for (const auto& pkgMgr : packageManagers_) { + auto res = atom::system::executeCommandWithStatus( + pkgMgr.getSearchCommand(depName)); + if (res.second != 0) { + LOG_F(ERROR, "Failed to search for dependency: {}", depName); + continue; } - if (std::regex_search(line, gentooRegex)) { - distroType_ = DistroType::GENTOO; - return; + std::istringstream iss(res.first); + std::string line; + while (std::getline(iss, line)) { + results.emplace_back(line); } } + return results; } - distroType_ = DistroType::UNKNOWN; -#elif defined(PLATFORM_MAC) - distroType_ = DistroType::MACOS; -#elif defined(PLATFORM_WINDOWS) - distroType_ = DistroType::WINDOWS; -#else - distroType_ = DistroType::UNKNOWN; -#endif -} -void DependencyManager::configurePackageManager() { + void loadSystemPackageManagers() { #ifdef PLATFORM_LINUX - switch (distroType_) { - case DistroType::DEBIAN: - packageManager_.getCheckCommand = - [](const DependencyInfo& dep) -> std::string { - std::string cmd = "dpkg -s " + dep.name + " > /dev/null 2>&1"; - if (!dep.version.empty()) { - cmd += " && dpkg -s " + dep.name + - " | grep Version | grep " + dep.version; + // Debian/Ubuntu 系 + packageManagers_.emplace_back( + PackageManagerInfo{"apt", + [](const DependencyInfo& dep) -> std::string { + return "dpkg -l " + dep.name; + }, + [&](const DependencyInfo& dep) -> std::string { + if (customInstallCommands_.contains(dep.name)) { + return customInstallCommands_[dep.name]; + } + return "sudo apt-get install -y " + dep.name; + }, + [](const DependencyInfo& dep) -> std::string { + return "sudo apt-get remove -y " + dep.name; + }, + [](const std::string& dep) -> std::string { + return "apt-cache search " + dep; + }}); + + // DNF (新版 Fedora/RHEL) + packageManagers_.emplace_back( + PackageManagerInfo{"dnf", + [](const DependencyInfo& dep) -> std::string { + return "rpm -q " + dep.name; + }, + [&](const DependencyInfo& dep) -> std::string { + if (customInstallCommands_.contains(dep.name)) { + return customInstallCommands_[dep.name]; + } + return "sudo dnf install -y " + dep.name; + }, + [](const DependencyInfo& dep) -> std::string { + return "sudo dnf remove -y " + dep.name; + }, + [](const std::string& dep) -> std::string { + return "dnf search " + dep; + }}); + + // Pacman (Arch Linux) + packageManagers_.emplace_back(PackageManagerInfo{ + "pacman", + [](const DependencyInfo& dep) -> std::string { + return "pacman -Qs " + dep.name; + }, + [&](const DependencyInfo& dep) -> std::string { + if (customInstallCommands_.contains(dep.name)) { + return customInstallCommands_[dep.name]; + } + return "sudo pacman -S --noconfirm " + dep.name; + }, + [](const DependencyInfo& dep) -> std::string { + return "sudo pacman -R --noconfirm " + dep.name; + }, + [](const std::string& dep) -> std::string { + return "pacman -Ss " + dep; + }}); + + // Zypper (openSUSE) + packageManagers_.emplace_back( + PackageManagerInfo{"zypper", + [](const DependencyInfo& dep) -> std::string { + return "rpm -q " + dep.name; + }, + [&](const DependencyInfo& dep) -> std::string { + if (customInstallCommands_.contains(dep.name)) { + return customInstallCommands_[dep.name]; + } + return "sudo zypper install -y " + dep.name; + }, + [](const DependencyInfo& dep) -> std::string { + return "sudo zypper remove -y " + dep.name; + }, + [](const std::string& dep) -> std::string { + return "zypper search " + dep; + }}); + + // Flatpak + packageManagers_.emplace_back( + PackageManagerInfo{"flatpak", + [](const DependencyInfo& dep) -> std::string { + return "flatpak list | grep " + dep.name; + }, + [&](const DependencyInfo& dep) -> std::string { + if (customInstallCommands_.contains(dep.name)) { + return customInstallCommands_[dep.name]; + } + return "flatpak install -y " + dep.name; + }, + [](const DependencyInfo& dep) -> std::string { + return "flatpak uninstall -y " + dep.name; + }, + [](const std::string& dep) -> std::string { + return "flatpak search " + dep; + }}); + + // Snap + packageManagers_.emplace_back( + PackageManagerInfo{"snap", + [](const DependencyInfo& dep) -> std::string { + return "snap list " + dep.name; + }, + [&](const DependencyInfo& dep) -> std::string { + if (customInstallCommands_.contains(dep.name)) { + return customInstallCommands_[dep.name]; + } + return "sudo snap install " + dep.name; + }, + [](const DependencyInfo& dep) -> std::string { + return "sudo snap remove " + dep.name; + }, + [](const std::string& dep) -> std::string { + return "snap find " + dep; + }}); +#endif + +#ifdef PLATFORM_MAC + // Homebrew + packageManagers_.emplace_back( + PackageManagerInfo{"brew", + [](const DependencyInfo& dep) -> std::string { + return "brew list " + dep.name; + }, + [&](const DependencyInfo& dep) -> std::string { + if (customInstallCommands_.count(dep.name)) { + return customInstallCommands_[dep.name]; + } + return "brew install " + dep.name; + }, + [](const DependencyInfo& dep) -> std::string { + return "brew uninstall " + dep.name; + }, + [](const std::string& dep) -> std::string { + return "brew search " + dep; + }}); + + // MacPorts + packageManagers_.emplace_back( + PackageManagerInfo{"port", + [](const DependencyInfo& dep) -> std::string { + return "port installed " + dep.name; + }, + [&](const DependencyInfo& dep) -> std::string { + if (customInstallCommands_.count(dep.name)) { + return customInstallCommands_[dep.name]; + } + return "sudo port install " + dep.name; + }, + [](const DependencyInfo& dep) -> std::string { + return "sudo port uninstall " + dep.name; + }, + [](const std::string& dep) -> std::string { + return "port search " + dep; + }}); +#endif + +#ifdef PLATFORM_WINDOWS + // Chocolatey + packageManagers_.emplace_back( + PackageManagerInfo{"choco", + [](const DependencyInfo& dep) -> std::string { + return "choco list --local-only " + dep.name; + }, + [&](const DependencyInfo& dep) -> std::string { + if (customInstallCommands_.count(dep.name)) { + return customInstallCommands_[dep.name]; + } + return "choco install " + dep.name + " -y"; + }, + [](const DependencyInfo& dep) -> std::string { + return "choco uninstall " + dep.name + " -y"; + }, + [](const std::string& dep) -> std::string { + return "choco search " + dep; + }}); + + // Scoop + packageManagers_.emplace_back( + PackageManagerInfo{"scoop", + [](const DependencyInfo& dep) -> std::string { + return "scoop list " + dep.name; + }, + [&](const DependencyInfo& dep) -> std::string { + if (customInstallCommands_.count(dep.name)) { + return customInstallCommands_[dep.name]; + } + return "scoop install " + dep.name; + }, + [](const DependencyInfo& dep) -> std::string { + return "scoop uninstall " + dep.name; + }, + [](const std::string& dep) -> std::string { + return "scoop search " + dep; + }}); + + // Winget + packageManagers_.emplace_back(PackageManagerInfo{ + "winget", + [](const DependencyInfo& dep) -> std::string { + return "winget list " + dep.name; + }, + [&](const DependencyInfo& dep) -> std::string { + if (customInstallCommands_.count(dep.name)) { + return customInstallCommands_[dep.name]; } - return cmd; - }; - packageManager_.getInstallCommand = - [this](const DependencyInfo& dep) -> std::string { - if (!customInstallCommands_.contains(dep.name)) { - return "sudo apt-get install -y " + dep.name + - (dep.version.empty() ? "" : "=" + dep.version); + return "winget install -e --id " + dep.name; + }, + [](const DependencyInfo& dep) -> std::string { + return "winget uninstall -e --id " + dep.name; + }, + [](const std::string& dep) -> std::string { + return "winget search " + dep; + }}); +#endif + } + + auto getPackageManagers() const -> std::vector { + return packageManagers_; + } + +private: + std::vector dependencies_; + std::unordered_map installedCache_; + std::unordered_map customInstallCommands_; + mutable std::mutex cacheMutex_; + std::mutex asyncMutex_; + std::vector> asyncFutures_; + std::vector packageManagers_; + + enum class DistroType { + UNKNOWN, + DEBIAN, + REDHAT, + ARCH, + OPENSUSE, + GENTOO, + SLACKWARE, + VOID, + ALPINE, + CLEAR, + SOLUS, + EMBEDDED, + OTHER, + MACOS, + WINDOWS + }; + + DistroType distroType_ = DistroType::UNKNOWN; + std::string platform_; + + const std::string CACHE_FILE = "dependency_cache.json"; + + void detectPlatform() { +#ifdef PLATFORM_LINUX + std::ifstream osReleaseFile("/etc/os-release"); + std::string line; + // Debian 系 + std::regex debianRegex( + R"(ID=(?:debian|ubuntu|linuxmint|elementary|pop|zorin|deepin|kali|parrot|mx|raspbian))"); + // Red Hat 系 + std::regex redhatRegex( + R"(ID=(?:fedora|rhel|centos|rocky|alma|oracle|scientific|amazon))"); + // Arch 系 + std::regex archRegex( + R"(ID=(?:arch|manjaro|endeavouros|artix|garuda|blackarch))"); + // SUSE 系 + std::regex suseRegex( + R"(ID=(?:opensuse|opensuse-leap|opensuse-tumbleweed|suse|sled|sles))"); + // 其他主流发行版 + std::regex gentooRegex(R"(ID=(?:gentoo|calculate|redcore|sabayon))"); + std::regex slackwareRegex(R"(ID=(?:slackware))"); + std::regex voidRegex(R"(ID=(?:void))"); + std::regex alpineRegex(R"(ID=(?:alpine))"); + std::regex clearRegex(R"(ID=(?:clear-linux-os))"); + std::regex solusRegex(R"(ID=(?:solus))"); + // 嵌入式/专用发行版 + std::regex embeddedRegex(R"(ID=(?:openwrt|buildroot|yocto))"); + + if (osReleaseFile.is_open()) { + while (std::getline(osReleaseFile, line)) { + if (std::regex_search(line, debianRegex)) { + distroType_ = DistroType::DEBIAN; + platform_ = "Debian-based Linux"; + return; } - return customInstallCommands_.at(dep.name); - }; - packageManager_.getUninstallCommand = - [](const DependencyInfo& dep) -> std::string { - return "sudo apt-get remove -y " + dep.name; - }; - break; - case DistroType::FEDORA: - packageManager_.getCheckCommand = - [](const DependencyInfo& dep) -> std::string { - std::string cmd = "rpm -q " + dep.name + " > /dev/null 2>&1"; - if (!dep.version.empty()) { - cmd += " && rpm -q " + dep.name + "-" + dep.version + - " > /dev/null 2>&1"; + if (std::regex_search(line, redhatRegex)) { + distroType_ = DistroType::REDHAT; + platform_ = "RedHat-based Linux"; + return; } - return cmd; - }; - packageManager_.getInstallCommand = - [this](const DependencyInfo& dep) -> std::string { - if (!customInstallCommands_.contains(dep.name)) { - return "sudo dnf install -y " + dep.name + - (dep.version.empty() ? "" : "-" + dep.version); + if (std::regex_search(line, archRegex)) { + distroType_ = DistroType::ARCH; + platform_ = "Arch-based Linux"; + return; } - return customInstallCommands_.at(dep.name); - }; - packageManager_.getUninstallCommand = - [](const DependencyInfo& dep) -> std::string { - return "sudo dnf remove -y " + dep.name; - }; - break; - case DistroType::ARCH: - packageManager_.getCheckCommand = - [](const DependencyInfo& dep) -> std::string { - std::string cmd = - "pacman -Qi " + dep.name + " > /dev/null 2>&1"; - if (!dep.version.empty()) { - cmd += " && pacman -Qi " + dep.name + - " | grep Version | grep " + dep.version; + if (std::regex_search(line, suseRegex)) { + distroType_ = DistroType::OPENSUSE; + platform_ = "SUSE Linux"; + return; } - return cmd; - }; - packageManager_.getInstallCommand = - [this](const DependencyInfo& dep) -> std::string { - if (!customInstallCommands_.contains(dep.name)) { - return "sudo pacman -S --noconfirm " + dep.name + - (dep.version.empty() ? "" : "=" + dep.version); + if (std::regex_search(line, gentooRegex)) { + distroType_ = DistroType::GENTOO; + platform_ = "Gentoo-based Linux"; + return; } - return customInstallCommands_.at(dep.name); - }; - packageManager_.getUninstallCommand = - [](const DependencyInfo& dep) -> std::string { - return "sudo pacman -R --noconfirm " + dep.name; - }; - break; - case DistroType::OPENSUSE: - packageManager_.getCheckCommand = - [](const DependencyInfo& dep) -> std::string { - std::string cmd = "zypper se --installed-only " + dep.name + - " > /dev/null 2>&1"; - if (!dep.version.empty()) { - cmd += " && zypper se --installed-only " + dep.name + - " | grep " + dep.version; + if (std::regex_search(line, slackwareRegex)) { + distroType_ = DistroType::SLACKWARE; + platform_ = "Slackware Linux"; + return; } - return cmd; - }; - packageManager_.getInstallCommand = - [this](const DependencyInfo& dep) -> std::string { - if (!customInstallCommands_.contains(dep.name)) { - return "sudo zypper install -y " + dep.name + - (dep.version.empty() ? "" : "=" + dep.version); + if (std::regex_search(line, voidRegex)) { + distroType_ = DistroType::VOID; + platform_ = "Void Linux"; + return; } - return customInstallCommands_.at(dep.name); - }; - packageManager_.getUninstallCommand = - [](const DependencyInfo& dep) -> std::string { - return "sudo zypper remove -y " + dep.name; - }; - break; - case DistroType::GENTOO: - packageManager_.getCheckCommand = - [](const DependencyInfo& dep) -> std::string { - std::string cmd = - "equery list " + dep.name + " > /dev/null 2>&1"; - if (!dep.version.empty()) { - cmd += " && equery list " + dep.name + "/" + dep.version + - " > /dev/null 2>&1"; + if (std::regex_search(line, alpineRegex)) { + distroType_ = DistroType::ALPINE; + platform_ = "Alpine Linux"; + return; } - return cmd; - }; - packageManager_.getInstallCommand = - [this](const DependencyInfo& dep) -> std::string { - if (!customInstallCommands_.contains(dep.name)) { - return "sudo emerge " + dep.name + - (dep.version.empty() ? "" : "/" + dep.version); + if (std::regex_search(line, clearRegex)) { + distroType_ = DistroType::CLEAR; + platform_ = "Clear Linux"; + return; } - return customInstallCommands_.at(dep.name); - }; - packageManager_.getUninstallCommand = - [](const DependencyInfo& dep) -> std::string { - return "sudo emerge --unmerge " + dep.name; - }; - break; - default: - // 默认使用 apt-get - packageManager_.getCheckCommand = - [](const DependencyInfo& dep) -> std::string { - std::string cmd = "pkg-config --exists " + dep.name; - if (!dep.version.empty()) { - // pkg-config 支持特定版本检查 - cmd += " && pkg-config --atleast-version=" + dep.version + - " " + dep.name; + if (std::regex_search(line, solusRegex)) { + distroType_ = DistroType::SOLUS; + platform_ = "Solus"; + return; } - return cmd; - }; - packageManager_.getInstallCommand = - [this](const DependencyInfo& dep) -> std::string { - if (!customInstallCommands_.contains(dep.name)) { - return "sudo apt-get install -y " + dep.name + - (dep.version.empty() ? "" : "=" + dep.version); + if (std::regex_search(line, embeddedRegex)) { + distroType_ = DistroType::EMBEDDED; + platform_ = "Embedded Linux"; + return; } - return customInstallCommands_.at(dep.name); - }; - packageManager_.getUninstallCommand = - [](const DependencyInfo& dep) -> std::string { - return "sudo apt-get remove -y " + dep.name; - }; - break; - } -#elif defined(PLATFORM_MAC) - packageManager_.getCheckCommand = - [this](const DependencyInfo& dep) -> std::string { - std::string cmd = "brew list " + dep.name + " > /dev/null 2>&1"; - if (!dep.version.empty()) { - cmd += " && brew info " + dep.name + " | grep " + dep.version; - } - return cmd; - }; - packageManager_.getInstallCommand = - [this](const DependencyInfo& dep) -> std::string { - if (!customInstallCommands_.count(dep.name)) { - return "brew install " + dep.name + - (dep.version.empty() ? "" : "@" + dep.version); + } } - return customInstallCommands_.at(dep.name); - }; - packageManager_.getUninstallCommand = - [this](const DependencyInfo& dep) -> std::string { - return "brew uninstall " + dep.name; - }; + distroType_ = DistroType::UNKNOWN; + platform_ = "Unknown Linux"; +#elif defined(PLATFORM_MAC) + distroType_ = DistroType::MACOS; + platform_ = "macOS"; #elif defined(PLATFORM_WINDOWS) - packageManager_.getCheckCommand = - [this](const DependencyInfo& dep) -> std::string { - std::string cmd; - if (!dep.version.empty()) { - cmd = "choco list --local-only " + dep.name + " | findstr " + - dep.version + " > nul 2>&1"; - } else { - cmd = "choco list --local-only " + dep.name + " > nul 2>&1"; - } - return cmd; - }; - packageManager_.getInstallCommand = - [this](const DependencyInfo& dep) -> std::string { - if (customInstallCommands_.count(dep.name)) { - return customInstallCommands_.at(dep.name); - } - // 优先使用 Chocolatey,其次是 winget 和 scoop - if (isCommandAvailable("choco")) { - return "choco install " + dep.name + " -y" + - (dep.version.empty() ? "" : " --version " + dep.version); - } else if (isCommandAvailable("winget")) { - return "winget install --id " + dep.name + " -e --silent" + - (dep.version.empty() ? "" : " --version " + dep.version); - } else if (isCommandAvailable("scoop")) { - return "scoop install " + dep.name + - (dep.version.empty() ? "" : "@" + dep.version); - } else { - return "echo 'No supported package manager found for installing " + - dep.name + "'"; - } - }; - packageManager_.getUninstallCommand = - [this](const DependencyInfo& dep) -> std::string { - if (customInstallCommands_.count(dep.name)) { - // 假设自定义命令也适用于卸载 - return customInstallCommands_.at(dep.name); - } - if (isCommandAvailable("choco")) { - return "choco uninstall " + dep.name + " -y"; - } else if (isCommandAvailable("winget")) { - return "winget uninstall --id " + dep.name + " -e --silent"; - } else if (isCommandAvailable("scoop")) { - return "scoop uninstall " + dep.name; - } else { - return "echo 'No supported package manager found for " - "uninstalling " + - dep.name + "'"; - } - }; + distroType_ = DistroType::WINDOWS; + platform_ = "Windows"; +#else + distroType_ = DistroType::UNKNOWN; + platform_ = "Unknown"; #endif -} - -void DependencyManager::checkAndInstallDependencies() { - std::vector threads; - threads.reserve(dependencies_.size()); - for (const auto& dep : dependencies_) { - threads.emplace_back([this, dep]() { - try { - if (!isDependencyInstalled(dep)) { - log(LogLevel::INFO, - "Dependency " + dep.name + - " not found, attempting to install..."); - installDependency(dep); - log(LogLevel::INFO, - "Successfully installed dependency: " + dep.name); - } else { - log(LogLevel::INFO, - "Dependency " + dep.name + " is already installed."); - } - } catch (const DependencyException& ex) { - log(LogLevel::ERROR, "Error installing dependency " + dep.name + - ": " + ex.what()); - } - }); - } - - for (auto& thread : threads) { - thread.join(); - } - - saveCacheToFile(); -} - -auto DependencyManager::isDependencyInstalled(const DependencyInfo& dep) - -> bool { - std::lock_guard lock(cacheMutex); - if (installedCache_.find(dep.name) != installedCache_.end()) { - return installedCache_[dep.name]; } - std::string checkCommand = packageManager_.getCheckCommand(dep); - bool isInstalled = false; - try { - isInstalled = atom::system::executeCommandSimple(checkCommand); - } catch (...) { - isInstalled = false; + void configurePackageManagers() { + // 已由loadSystemPackageManagers配置 } - installedCache_[dep.name] = isInstalled; - return isInstalled; -} -void DependencyManager::installDependency(const DependencyInfo& dep) { - std::string installCommand = packageManager_.getInstallCommand(dep); - bool success = atom::system::executeCommandSimple(installCommand); - if (!success) { - throw DependencyException("Failed to install " + dep.name); + bool isDependencyInstalled(const DependencyInfo& dep) { + auto it = installedCache_.find(dep.name); + return it != installedCache_.end() && it->second; } - // 更新缓存 - std::lock_guard lock(cacheMutex); - installedCache_[dep.name] = true; -} -void DependencyManager::uninstallDependency(const std::string& depName) { - // 查找依赖项 - auto it = std::find_if(dependencies_.begin(), dependencies_.end(), - [&depName](const DependencyInfo& info) { - return info.name == depName; - }); - if (it == dependencies_.end()) { - log(LogLevel::WARNING, "Dependency " + depName + " not managed."); - return; + void installDependency(const DependencyInfo& dep) { + try { + auto pkgMgr = getPackageManager(dep.packageManager); + if (!pkgMgr) + throw DependencyException("Package manager not found."); + if (!isDependencyInstalled(dep)) { + auto res = atom::system::executeCommandWithStatus( + pkgMgr->getInstallCommand(dep)); + if (res.second != 0) { + throw DependencyException("Failed to install dependency."); + } + installedCache_[dep.name] = true; + LOG_F(INFO, "Installed dependency: {}", dep.name); + } + } catch (const DependencyException& ex) { + LOG_F(ERROR, "Error installing {}: {}", dep.name, ex.what()); + } } - if (!isDependencyInstalled(*it)) { - log(LogLevel::INFO, "Dependency " + depName + " is not installed."); - return; + std::optional getPackageManager( + const std::string& name) const { + auto it = std::ranges::find_if( + packageManagers_, + [&](const PackageManagerInfo& pm) { return pm.name == name; }); + if (it != packageManagers_.end()) { + return *it; + } + return std::nullopt; } - try { - log(LogLevel::INFO, "Uninstalling dependency: " + depName); - uninstallDependencyInternal(depName); - // 更新缓存 - std::lock_guard lock(cacheMutex); - installedCache_[depName] = false; - log(LogLevel::INFO, "Successfully uninstalled dependency: " + depName); - } catch (const DependencyException& ex) { - log(LogLevel::ERROR, - "Error uninstalling dependency " + depName + ": " + ex.what()); + void loadCacheFromFile() { + std::ifstream cacheFile(CACHE_FILE); + if (!cacheFile.is_open()) { + LOG_F(WARNING, "Cache file not found."); + return; + } + json j; + cacheFile >> j; + for (const auto& dep : j["dependencies"]) { + dependencies_.emplace_back(DependencyInfo{ + dep["name"].get(), dep.value("version", ""), + dep.value("packageManager", "")}); + installedCache_[dep["name"].get()] = + dep.value("installed", false); + } } - saveCacheToFile(); -} - -void DependencyManager::uninstallDependencyInternal( - const std::string& depName) { - // 查找依赖项 - auto it = std::find_if(dependencies_.begin(), dependencies_.end(), - [&depName](const DependencyInfo& info) { - return info.name == depName; - }); - if (it == dependencies_.end()) { - throw DependencyException("Dependency " + depName + " not found."); + void saveCacheToFile() const { + std::ofstream cacheFile(CACHE_FILE); + if (!cacheFile.is_open()) { + LOG_F(ERROR, "Failed to open cache file for writing."); + return; + } + json j; + for (const auto& dep : dependencies_) { + j["dependencies"].push_back( + {{"name", dep.name}, + {"version", dep.version}, + {"packageManager", dep.packageManager}, + {"installed", installedCache_.at(dep.name)}}); + } + cacheFile << j.dump(4); } +}; - std::string uninstallCommand = packageManager_.getUninstallCommand(*it); - bool success = atom::system::executeCommandSimple(uninstallCommand); - if (!success) { - throw DependencyException("Failed to uninstall " + depName); - } -} +DependencyManager::DependencyManager() : pImpl_(std::make_unique()) {} -auto DependencyManager::getCheckCommand(const DependencyInfo& /*dep*/) const - -> std::string { - // 已通过包管理器配置 - return ""; -} +DependencyManager::~DependencyManager() = default; -auto DependencyManager::getInstallCommand(const DependencyInfo& /*dep*/) const - -> std::string { - // 已通过包管理器配置 - return ""; +void DependencyManager::checkAndInstallDependencies() { + pImpl_->checkAndInstallDependencies(); } -auto DependencyManager::getUninstallCommand(const DependencyInfo& /*dep*/) const - -> std::string { - // 已通过包管理器配置 - return ""; +void DependencyManager::installDependencyAsync(const DependencyInfo& dep) { + pImpl_->installDependencyAsync(dep); } -auto DependencyManager::isCommandAvailable(const std::string& command) const - -> bool { - std::string checkCommand; -#ifdef PLATFORM_WINDOWS - checkCommand = "where " + command + " > nul 2>&1"; -#else - checkCommand = "command -v " + command + " > /dev/null 2>&1"; -#endif - return atom::system::executeCommandSimple(checkCommand); +void DependencyManager::cancelInstallation(const std::string& dep) { + pImpl_->cancelInstallation(dep); } void DependencyManager::setCustomInstallCommand(const std::string& dep, const std::string& command) { - customInstallCommands_[dep] = command; + pImpl_->setCustomInstallCommand(dep, command); } auto DependencyManager::generateDependencyReport() const -> std::string { - std::ostringstream report; - for (const auto& dep : dependencies_) { - std::lock_guard lock(cacheMutex); - report << "Dependency: " << dep.name; - if (!dep.version.empty()) { - report << " (" << dep.version << ")"; - } - report << " - " - << (installedCache_.at(dep.name) ? "Installed" : "Not Installed") - << "\n"; - } - return report.str(); + return pImpl_->generateDependencyReport(); } -void DependencyManager::loadCacheFromFile() { - std::lock_guard lock(cacheMutex); - std::ifstream cacheFile(CACHE_FILE); - if (!cacheFile.is_open()) { - return; - } +void DependencyManager::uninstallDependency(const std::string& dep) { + pImpl_->uninstallDependency(dep); +} - try { - json j; - cacheFile >> j; - for (auto& [key, value] : j.items()) { - installedCache_[key] = value.get(); - } - } catch (const json::parse_error& ex) { - log(LogLevel::ERROR, - "Failed to parse cache file: " + std::string(ex.what())); - } +auto DependencyManager::getCurrentPlatform() const -> std::string { + return pImpl_->getCurrentPlatform(); } -void DependencyManager::saveCacheToFile() const { - std::lock_guard lock(cacheMutex); - std::ofstream cacheFile(CACHE_FILE); - if (!cacheFile.is_open()) { - log(LogLevel::WARNING, "Failed to open cache file for writing."); - return; - } +void DependencyManager::addDependency(const DependencyInfo& dep) { + pImpl_->addDependency(dep); +} - json j; - for (const auto& [dep, status] : installedCache_) { - j[dep] = status; - } - cacheFile << j.dump(4); +void DependencyManager::removeDependency(const std::string& depName) { + pImpl_->removeDependency(depName); } -void DependencyManager::log(LogLevel level, const std::string& message) const { - if (logCallback_) { - logCallback_(level, message); - } else { - // 默认输出到标准输出 - switch (level) { - case LogLevel::INFO: - std::cout << "[INFO] " << message << "\n"; - break; - case LogLevel::WARNING: - std::cout << "[WARNING] " << message << "\n"; - break; - case LogLevel::ERROR: - std::cerr << "[ERROR] " << message << "\n"; - break; - } - } +auto DependencyManager::searchDependency(const std::string& depName) + -> std::vector { + return pImpl_->searchDependency(depName); } -auto DependencyManager::getCurrentPlatform() const -> std::string { - switch (distroType_) { - case DistroType::DEBIAN: - return "Debian-based Linux"; - case DistroType::FEDORA: - return "Fedora-based Linux"; - case DistroType::ARCH: - return "Arch-based Linux"; - case DistroType::OPENSUSE: - return "openSUSE"; - case DistroType::GENTOO: - return "Gentoo"; - case DistroType::MACOS: - return "macOS"; - case DistroType::WINDOWS: - return "Windows"; - default: - return "Unknown"; - } +void DependencyManager::loadSystemPackageManagers() { + pImpl_->loadSystemPackageManagers(); +} + +auto DependencyManager::getPackageManagers() const + -> std::vector { + return pImpl_->getPackageManagers(); } -} // namespace lithium +} // namespace lithium \ No newline at end of file diff --git a/src/addon/system_dependency.hpp b/src/addon/system_dependency.hpp index dbf1287b..5f3084a6 100644 --- a/src/addon/system_dependency.hpp +++ b/src/addon/system_dependency.hpp @@ -3,121 +3,162 @@ #include #include +#include #include -#include #include namespace lithium { -// 日志级别定义 -enum class LogLevel { INFO, WARNING, ERROR }; - -// 自定义异常类 +/** + * @class DependencyException + * @brief Exception class for dependency-related errors. + */ class DependencyException : public std::exception { public: + /** + * @brief Constructs a DependencyException with a given message. + * @param message The error message. + */ explicit DependencyException(std::string message) : message_(std::move(message)) {} + + /** + * @brief Returns the error message. + * @return The error message as a C-string. + */ [[nodiscard]] auto what() const noexcept -> const char* override { return message_.c_str(); } private: - std::string message_; + std::string message_; ///< The error message. +}; + +/** + * @struct DependencyInfo + * @brief Structure to hold information about a dependency. + */ +struct DependencyInfo { + std::string name; ///< The name of the dependency. + std::string version; ///< The version of the dependency (optional). + std::string packageManager; ///< The specified package manager. }; -// 依赖项信息结构 -struct alignas(64) DependencyInfo { - std::string name; - std::string version; // 可选 +/** + * @struct PackageManagerInfo + * @brief Structure to hold information about a package manager. + */ +struct PackageManagerInfo { + std::string name; ///< The name of the package manager. + std::function + getCheckCommand; ///< Function to get the check command. + std::function + getInstallCommand; ///< Function to get the install command. + std::function + getUninstallCommand; ///< Function to get the uninstall command. + std::function + getSearchCommand; ///< Function to get the search command. }; -// 依赖管理器类 +/** + * @class DependencyManager + * @brief Class to manage dependencies. + */ class DependencyManager { public: - explicit DependencyManager(std::vector dependencies); - - // 设置日志回调函数,包含日志级别 - void setLogCallback( - std::function callback); - - // 检查并安装所有依赖项 + /** + * @brief Constructs a DependencyManager. + */ + DependencyManager(); + + /** + * @brief Destructs the DependencyManager. + */ + ~DependencyManager(); + + // Delete copy constructor and copy assignment operator + DependencyManager(const DependencyManager&) = delete; + DependencyManager& operator=(const DependencyManager&) = delete; + + /** + * @brief Checks and installs dependencies. + */ void checkAndInstallDependencies(); - // 设置自定义安装命令 + /** + * @brief Sets a custom install command for a dependency. + * @param dep The name of the dependency. + * @param command The custom install command. + */ void setCustomInstallCommand(const std::string& dep, const std::string& command); - // 生成依赖项报告 + /** + * @brief Generates a report of the dependencies. + * @return A string containing the dependency report. + */ auto generateDependencyReport() const -> std::string; - // 卸载依赖项 + /** + * @brief Uninstalls a dependency. + * @param dep The name of the dependency to uninstall. + */ void uninstallDependency(const std::string& dep); - // 获取当前支持的平台类型 + /** + * @brief Gets the current platform. + * @return A string representing the current platform. + */ auto getCurrentPlatform() const -> std::string; -private: - std::vector dependencies_; - std::function logCallback_; - std::unordered_map installedCache_; - std::unordered_map customInstallCommands_; - - // 系统发行版类型 - enum class DistroType { - DEBIAN, - FEDORA, - ARCH, - OPENSUSE, - GENTOO, - MACOS, - WINDOWS, - UNKNOWN - }; - - DistroType distroType_ = DistroType::UNKNOWN; - - // 检测当前的操作系统和发行版 - void detectPlatform(); - - // 检查依赖项是否已安装 - auto isDependencyInstalled(const DependencyInfo& dep) -> bool; + /** + * @brief Installs a dependency asynchronously. + * @param dep The dependency information. + */ + void installDependencyAsync(const DependencyInfo& dep); + + /** + * @brief Cancels the installation of a dependency. + * @param dep The name of the dependency to cancel installation for. + */ + void cancelInstallation(const std::string& dep); + + /** + * @brief Adds a dependency. + * @param dep The dependency information. + */ + void addDependency(const DependencyInfo& dep); + + /** + * @brief Removes a dependency. + * @param depName The name of the dependency to remove. + */ + void removeDependency(const std::string& depName); + + /** + * @brief Searches for a dependency. + * @param depName The name of the dependency to search for. + * @return A vector of strings containing search results. + */ + auto searchDependency(const std::string& depName) + -> std::vector; + + /** + * @brief Loads system package managers. + */ + void loadSystemPackageManagers(); + + /** + * @brief Gets the package managers. + * @return A vector of PackageManagerInfo structures. + */ + auto getPackageManagers() const -> std::vector; - // 安装依赖项 - void installDependency(const DependencyInfo& dep); - - // 卸载依赖项 - void uninstallDependencyInternal(const std::string& dep); - - // 根据平台获取检查、安装和卸载命令 - auto getCheckCommand(const DependencyInfo& dep) const -> std::string; - auto getInstallCommand(const DependencyInfo& dep) const -> std::string; - auto getUninstallCommand(const DependencyInfo& dep) const -> std::string; - - // 检查命令是否可用 - auto isCommandAvailable(const std::string& command) const -> bool; - - // 从文件加载缓存 - void loadCacheFromFile(); - - // 保存缓存到文件 - void saveCacheToFile() const; - - // 日志记录函数 - void log(LogLevel level, const std::string& message) const; - - // 包管理器接口 - struct alignas(128) PackageManager { - std::function getCheckCommand; - std::function getInstallCommand; - std::function getUninstallCommand; - }; - - PackageManager packageManager_; - - // 根据发行版设置包管理器命令 - void configurePackageManager(); +private: + class Impl; ///< Forward declaration of the implementation class. + std::unique_ptr pImpl_; ///< Pointer to the implementation. }; } // namespace lithium -#endif // LITHIUM_ADDON_DEPENDENCY_MANAGER_HPP +#endif // LITHIUM_ADDON_DEPENDENCY_MANAGER_HPP \ No newline at end of file diff --git a/src/addon/template/remote.cpp b/src/addon/template/remote.cpp index 96c3292a..21c43f39 100644 --- a/src/addon/template/remote.cpp +++ b/src/addon/template/remote.cpp @@ -1,6 +1,8 @@ #include "remote.hpp" #include +#include + #include #include #include @@ -12,6 +14,7 @@ using asio::ip::tcp; using asio::ip::udp; +namespace ssl = asio::ssl; class RemoteStandAloneComponentImpl { public: @@ -32,6 +35,18 @@ class RemoteStandAloneComponentImpl { std::atomic heartbeatEnabled{false}; ProtocolType protocol{ProtocolType::TCP}; + // SSL支持 + std::optional sslContext; + std::optional> sslSocket; + bool sslEnabled{false}; + + // 压缩支持 + bool compressionEnabled{false}; + + // 身份验证信息 + std::string username; + std::string password; + // Reconnection strategy std::chrono::milliseconds initialReconnectDelay{1000}; std::chrono::milliseconds maxReconnectDelay{30000}; @@ -54,14 +69,25 @@ RemoteStandAloneComponent::RemoteStandAloneComponent(std::string name) "TCP or UDP"); def("connect", &RemoteStandAloneComponent::connectToRemoteDriver); def("disconnect", &RemoteStandAloneComponent::disconnectRemoteDriver); - def("send", &RemoteStandAloneComponent::sendMessageToDriver); - def("send_async", - &RemoteStandAloneComponent::sendMessageAsync); + // def("send", + // &RemoteStandAloneComponent::sendMessageToDriver); + // def("send_async", + // &RemoteStandAloneComponent::sendMessageAsync); def("listen", &RemoteStandAloneComponent::toggleDriverListening); def("print", &RemoteStandAloneComponent::printDriver); def("heartbeat_on", &RemoteStandAloneComponent::enableHeartbeat); def("heartbeat_off", &RemoteStandAloneComponent::disableHeartbeat); - def("execute", &RemoteStandAloneComponent::executeCommand); + // TODO: Implement executeCommand + // def("execute", &RemoteStandAloneComponent::executeCommand); + + def("enable_ssl", &RemoteStandAloneComponent::enableSSL); + def("disable_ssl", &RemoteStandAloneComponent::disableSSL); + def("enable_compression", &RemoteStandAloneComponent::enableCompression); + def("disable_compression", &RemoteStandAloneComponent::disableCompression); + def("authenticate", &RemoteStandAloneComponent::authenticate); + def("GetStatus", &RemoteStandAloneComponent::GetStatus); + def("RestartDriver", &RemoteStandAloneComponent::RestartDriver); + def("UpdateConfig", &RemoteStandAloneComponent::UpdateConfig); } RemoteStandAloneComponent::~RemoteStandAloneComponent() { @@ -169,7 +195,17 @@ void RemoteStandAloneComponent::sendMessageToDriver(T&& message) { std::visit( [&](auto&& socket) { if (socket && socket->is_open()) { - asio::write(*socket, asio::buffer(std::forward(message))); + if constexpr (std::is_same_v, + asio::ip::tcp::socket>) { + asio::write(*socket, + asio::buffer(std::forward(message))); + } else if constexpr (std::is_same_v< + std::decay_t, + asio::ip::udp::socket>) { + socket->send(asio::buffer(std::forward(message))); + } else { + LOG_F(ERROR, "Unsupported socket type"); + } } else { LOG_F(ERROR, "No active connection to send message"); } @@ -187,12 +223,27 @@ auto RemoteStandAloneComponent::sendMessageAsync(T&& message) std::visit( [&](auto&& socket) { if (socket && socket->is_open()) { - asio::async_write( - *socket, asio::buffer(std::forward(message)), - [promise](const asio::error_code& ec, - std::size_t bytes_transferred) { - promise->setValue({ec, bytes_transferred}); - }); + if constexpr (std::is_same_v, + asio::ip::tcp::socket>) { + asio::async_write( + *socket, asio::buffer(std::forward(message)), + [promise](const asio::error_code& ec, + std::size_t bytes_transferred) { + promise->setValue({ec, bytes_transferred}); + }); + } else if constexpr (std::is_same_v< + std::decay_t, + asio::ip::udp::socket>) { + socket->async_send_to( + asio::buffer(std::forward(message)), + *impl_->udpEndpoint, + [promise](const asio::error_code& ec, + std::size_t bytes_transferred) { + promise->setValue({ec, bytes_transferred}); + }); + } else { + promise->setValue({asio::error::not_connected, 0}); + } } else { promise->setValue({asio::error::not_connected, 0}); } @@ -436,6 +487,98 @@ void RemoteStandAloneComponent::attemptReconnection() { impl_->currentReconnectAttempts++; } +void RemoteStandAloneComponent::enableSSL(const std::string& certFile, + const std::string& keyFile) { + impl_->sslEnabled = true; + impl_->sslContext.emplace(ssl::context::tlsv12_client); + impl_->sslContext->load_verify_file(certFile); + impl_->sslContext->use_private_key_file(keyFile, ssl::context::pem); + LOG_F(INFO, "SSL enabled with cert file: {} and key file: {}", certFile, + keyFile); +} + +void RemoteStandAloneComponent::disableSSL() { + impl_->sslEnabled = false; + impl_->sslContext.reset(); + impl_->sslSocket.reset(); + LOG_F(INFO, "SSL disabled"); +} + +void RemoteStandAloneComponent::enableCompression() { + impl_->compressionEnabled = true; + LOG_F(INFO, "Compression enabled"); +} + +void RemoteStandAloneComponent::disableCompression() { + impl_->compressionEnabled = false; + LOG_F(INFO, "Compression disabled"); +} + +void RemoteStandAloneComponent::authenticate(const std::string& username, + const std::string& password) { + impl_->username = username; + impl_->password = password; + std::string authMessage = "AUTH " + username + " " + password; + // sendMessageToDriver(authMessage); + LOG_F(INFO, "Authentication message sent for user: {}", username); +} + +atom::async::EnhancedFuture +RemoteStandAloneComponent::GetStatus() { + auto promise = + std::make_shared>(); + auto future = promise->getEnhancedFuture(); + + sendMessageAsync("GET_STATUS").then([promise](auto&& result) { + if (!result.first) { + // promise->set_value(result.second); + } else { + // promise->set_exception(std::make_exception_ptr( + // std::runtime_error("Failed to get status"))); + } + }); + + return future; +} + +atom::async::EnhancedFuture RemoteStandAloneComponent::RestartDriver() { + auto promise = std::make_shared>(); + auto future = promise->getEnhancedFuture(); + + sendMessageAsync("RESTART_DRIVER").then([promise](auto&& result) { + if (!result.first) { + // promise->set_value(true); + } else { + // promise->set_exception(std::make_exception_ptr( + // std::runtime_error("Failed to restart driver"))); + } + }); + + return future; +} + +atom::async::EnhancedFuture RemoteStandAloneComponent::UpdateConfig( + const std::string& config) { + auto promise = std::make_shared>(); + auto future = promise->getEnhancedFuture(); + + sendMessageAsync("UPDATE_CONFIG " + config).then([promise](auto&& result) { + if (!result.first) { + // promise->set_value(true); + } else { + // promise->set_exception(std::make_exception_ptr( + // std::runtime_error("Failed to update config"))); + } + }); + + return future; +} + +void RemoteStandAloneComponent::initializeRPC() { + // 初始化RPC框架,如gRPC + LOG_F(INFO, "RPC system initialized"); +} + // Explicit template instantiations template void RemoteStandAloneComponent::sendMessageToDriver( std::string&&); diff --git a/src/addon/template/remote.hpp b/src/addon/template/remote.hpp index 321c80a0..d5c58d39 100644 --- a/src/addon/template/remote.hpp +++ b/src/addon/template/remote.hpp @@ -3,7 +3,6 @@ #include #include -#include #include #include @@ -58,6 +57,24 @@ class RemoteStandAloneComponent : public Component { std::chrono::milliseconds maxDelay, int maxAttempts); + void enableSSL(const std::string& certFile, const std::string& keyFile); + + void disableSSL(); + + void enableCompression(); + + void disableCompression(); + + void authenticate(const std::string& username, const std::string& password); + + atom::async::EnhancedFuture GetStatus(); + + atom::async::EnhancedFuture RestartDriver(); + + atom::async::EnhancedFuture UpdateConfig(const std::string& config); + + void initializeRPC(); + private: void backgroundProcessing(); void monitorConnection(); diff --git a/src/addon/toolchain.cpp b/src/addon/toolchain.cpp index 902f89e5..ab017e79 100644 --- a/src/addon/toolchain.cpp +++ b/src/addon/toolchain.cpp @@ -4,10 +4,17 @@ #include #include +#include +#include +#include +#include +#include +#include #include "atom/error/exception.hpp" #include "atom/function/global_ptr.hpp" #include "atom/log/loguru.hpp" +#include "atom/memory/utils.hpp" #include "atom/system/command.hpp" #include "atom/system/env.hpp" #include "atom/utils/to_string.hpp" @@ -20,7 +27,14 @@ #include "utils/constant.hpp" -// Toolchain implementation +// 重载输出操作符 +template ::value, int> = 0> +std::ostream& operator<<(std::ostream& os, const T& value) { + return os << static_cast(value); +} + +// 工具链实现 class Toolchain::Impl { public: std::string name; @@ -28,10 +42,10 @@ class Toolchain::Impl { std::string buildTool; std::string version; std::string path; - Type type; + Toolchain::ToolchainType type; Impl(std::string name, std::string compiler, std::string buildTool, - std::string version, std::string path, Type type) + std::string version, std::string path, Toolchain::ToolchainType type) : name(std::move(name)), compiler(std::move(compiler)), buildTool(std::move(buildTool)), @@ -42,7 +56,7 @@ class Toolchain::Impl { Toolchain::Toolchain(std::string name, std::string compiler, std::string buildTool, std::string version, - std::string path, Type type) + std::string path, Toolchain::ToolchainType type) : impl_(std::make_unique(std::move(name), std::move(compiler), std::move(buildTool), std::move(version), std::move(path), type)) { @@ -58,7 +72,7 @@ Toolchain::Toolchain(const Toolchain& other) Toolchain::Toolchain(Toolchain&& other) noexcept = default; -auto Toolchain::operator=(const Toolchain& other) -> Toolchain& { +Toolchain& Toolchain::operator=(const Toolchain& other) { if (this != &other) { impl_ = std::make_unique(*other.impl_); LOG_F(INFO, "Assigned Toolchain: {}", impl_->name); @@ -66,7 +80,7 @@ auto Toolchain::operator=(const Toolchain& other) -> Toolchain& { return *this; } -auto Toolchain::operator=(Toolchain&& other) noexcept -> Toolchain& = default; +Toolchain& Toolchain::operator=(Toolchain&& other) noexcept = default; void Toolchain::displayInfo() const { LOG_F(INFO, "Displaying Toolchain info: {}", impl_->name); @@ -74,80 +88,100 @@ void Toolchain::displayInfo() const { LOG_F(INFO, "Build Tool: {}", impl_->buildTool); LOG_F(INFO, "Version: {}", impl_->version); LOG_F(INFO, "Path: {}", impl_->path); - LOG_F(INFO, "Type: {}", - impl_->type == Type::Compiler - ? "Compiler" - : (impl_->type == Type::BuildTool ? "Build Tool" : "Unknown")); + LOG_F( + INFO, "Type: {}", + impl_->type == Toolchain::ToolchainType::Compiler + ? "Compiler" + : (impl_->type == Toolchain::ToolchainType::BuildTool ? "Build Tool" + : "Unknown")); } -auto Toolchain::getName() const -> const std::string& { +const std::string& Toolchain::getName() const { LOG_F(INFO, "Getting Toolchain name: {}", impl_->name); return impl_->name; } -auto Toolchain::getCompiler() const -> const std::string& { +const std::string& Toolchain::getCompiler() const { LOG_F(INFO, "Getting compiler: {}", impl_->compiler); return impl_->compiler; } -auto Toolchain::getBuildTool() const -> const std::string& { +const std::string& Toolchain::getBuildTool() const { LOG_F(INFO, "Getting build tool: {}", impl_->buildTool); return impl_->buildTool; } -auto Toolchain::getVersion() const -> const std::string& { +const std::string& Toolchain::getVersion() const { LOG_F(INFO, "Getting version: {}", impl_->version); return impl_->version; } -auto Toolchain::getPath() const -> const std::string& { +const std::string& Toolchain::getPath() const { LOG_F(INFO, "Getting path: {}", impl_->path); return impl_->path; } -auto Toolchain::getType() const -> Type { - LOG_F(INFO, "Getting type: {}", impl_->type); +Toolchain::ToolchainType Toolchain::getType() const { + LOG_F(INFO, "Getting type: {}", + (impl_->type == Toolchain::ToolchainType::Compiler + ? "Compiler" + : (impl_->type == Toolchain::ToolchainType::BuildTool + ? "Build Tool" + : "Unknown"))); return impl_->type; } void Toolchain::setVersion(const std::string& version) { + if (version.empty()) { + LOG_F(ERROR, "Version cannot be empty."); + throw std::invalid_argument("Version cannot be empty."); + } LOG_F(INFO, "Setting version: {} -> {}", impl_->version, version); impl_->version = version; } void Toolchain::setPath(const std::string& path) { + if (path.empty()) { + LOG_F(ERROR, "Path cannot be empty."); + throw std::invalid_argument("Path cannot be empty."); + } LOG_F(INFO, "Setting path: {} -> {}", impl_->path, path); impl_->path = path; } -void Toolchain::setType(Type type) { - LOG_F(INFO, "Setting type: {} -> {}", impl_->type, type); +void Toolchain::setType(Toolchain::ToolchainType type) { + LOG_F(INFO, "Setting type: {} -> {}", static_cast(impl_->type), + type == Toolchain::ToolchainType::Compiler + ? "Compiler" + : (type == Toolchain::ToolchainType::BuildTool ? "Build Tool" + : "Unknown")); impl_->type = type; } -auto Toolchain::isCompatibleWith(const Toolchain& other) const -> bool { - LOG_F(INFO, "Checking compatibility with {}", other.getName()); - // Implement compatibility logic, e.g., check if compiler versions are - // compatible - bool compatible = (impl_->compiler == other.impl_->compiler); +bool Toolchain::isCompatibleWith( + const std::shared_ptr& other) const { + if (!other) { + LOG_F(ERROR, "Other toolchain is null."); + return false; + } + LOG_F(INFO, "Checking compatibility with {}", other->getName()); + bool compatible = (impl_->compiler == other->impl_->compiler); LOG_F(INFO, "Compatibility result: {}", compatible ? "Compatible" : "Incompatible"); return compatible; } -// ToolchainManager implementation +// ToolchainManager实现 class ToolchainManager::Impl { public: - std::vector toolchains; + std::vector> toolchains; std::vector searchPaths; std::unordered_map toolchainAliases; std::optional defaultToolchain; - static auto getCompilerVersion(const std::string& path) -> std::string; + static std::string getCompilerVersion(const std::string& path); void scanBuildTools(); void initializeDefaultSearchPaths(); - - // New feature: Load toolchain paths from environment variables void loadToolchainsFromEnvironment(); }; @@ -162,8 +196,9 @@ ToolchainManager::~ToolchainManager() { } ToolchainManager::ToolchainManager(ToolchainManager&&) noexcept = default; -auto ToolchainManager::operator=(ToolchainManager&&) noexcept - -> ToolchainManager& = default; + +ToolchainManager& ToolchainManager::operator=(ToolchainManager&&) noexcept = + default; void ToolchainManager::scanForToolchains() { LOG_F(INFO, "Scanning for toolchains"); @@ -182,9 +217,11 @@ void ToolchainManager::scanForToolchains() { Impl::getCompilerVersion(entry.path().string()); LOG_F(INFO, "Found compiler: {} version: {}", filename, version); - addToolchain(Toolchain(filename, filename, "", version, - entry.path().string(), - Toolchain::Type::Compiler)); + auto toolchain = std::make_shared( + filename, filename, filename, version, + entry.path().string(), + Toolchain::ToolchainType::Compiler); + addToolchain(*toolchain); } } } @@ -206,8 +243,10 @@ void ToolchainManager::Impl::scanBuildTools() { if (std::filesystem::exists(toolPath)) { std::string version = getCompilerVersion(toolPath); LOG_F(INFO, "Found build tool: {} version: {}", tool, version); - toolchains.emplace_back(tool, "", tool, version, toolPath, - Toolchain::Type::BuildTool); + auto toolchain = std::make_shared( + tool, "", tool, version, toolPath, + Toolchain::ToolchainType::BuildTool); + toolchains.emplace_back(toolchain); } else { LOG_F(INFO, "Build tool not found: {}", tool); } @@ -216,23 +255,28 @@ void ToolchainManager::Impl::scanBuildTools() { void ToolchainManager::listToolchains() const { LOG_F(INFO, "Listing available toolchains"); - for (const auto& tc : impl_->toolchains) { - LOG_F(INFO, "- {} ({}) [{}]", tc.getName(), tc.getVersion(), - tc.getType() == Toolchain::Type::Compiler - ? "Compiler" - : (tc.getType() == Toolchain::Type::BuildTool ? "Build Tool" - : "Unknown")); + for (const auto& stc : impl_->toolchains) { + if (stc) { + auto tc = *stc; + LOG_F(INFO, "- {} ({}) [{}]", tc.getName(), tc.getVersion(), + tc.getType() == Toolchain::ToolchainType::Compiler + ? "Compiler" + : (tc.getType() == Toolchain::ToolchainType::BuildTool + ? "Build Tool" + : "Unknown")); + } } } -auto ToolchainManager::selectToolchain(const std::string& name) const - -> std::optional { +std::optional> ToolchainManager::selectToolchain( + const std::string& name) const { LOG_F(INFO, "Selecting toolchain: {}", name); - auto it = std::find_if( - impl_->toolchains.begin(), impl_->toolchains.end(), - [&name](const Toolchain& tc) { return tc.getName() == name; }); - if (it != impl_->toolchains.end()) { - it->displayInfo(); + auto it = std::find_if(impl_->toolchains.begin(), impl_->toolchains.end(), + [&name](const std::shared_ptr& tc) { + return tc && tc->getName() == name; + }); + if (it != impl_->toolchains.end() && *it) { + (*it)->displayInfo(); return *it; } LOG_F(ERROR, "Toolchain not found: {}", name); @@ -247,17 +291,21 @@ void ToolchainManager::saveConfig(const std::string& filename) const { THROW_FAIL_TO_CLOSE_FILE("Unable to open file for writing: " + filename); } - for (const auto& tc : impl_->toolchains) { - file << tc.getName() << "," << tc.getCompiler() << "," - << tc.getBuildTool() << "," << tc.getVersion() << "," - << tc.getPath() << "," << static_cast(tc.getType()) << "\n"; + for (const auto& stc : impl_->toolchains) { + if (stc) { + auto tc = *stc; + file << tc.getName() << "," << tc.getCompiler() << "," + << tc.getBuildTool() << "," << tc.getVersion() << "," + << tc.getPath() << "," << static_cast(tc.getType()) + << "\n"; + } } - // Save aliases + // 保存别名 file << "--- Aliases ---\n"; for (const auto& [alias, toolchainName] : impl_->toolchainAliases) { file << alias << "," << toolchainName << "\n"; } - // Save default toolchain + // 保存默认工具链 file << "--- Default ---\n"; if (impl_->defaultToolchain) { file << *impl_->defaultToolchain << "\n"; @@ -306,57 +354,68 @@ void ToolchainManager::loadConfig(const std::string& filename) { std::istringstream iss(line); std::string part; while (std::getline(iss, part, ',')) { - parts.push_back(part); + parts.emplace_back(part); } if (parts.size() == 6) { - addToolchain(Toolchain( - parts[0], parts[1], parts[2], parts[3], parts[4], - static_cast(std::stoi(parts[5])))); + Toolchain::ToolchainType type = + Toolchain::ToolchainType::Unknown; + try { + type = static_cast( + std::stoi(parts[5])); + } catch (...) { + LOG_F(WARNING, "Invalid toolchain type for {}", parts[0]); + } + addToolchain(Toolchain(parts[0], parts[1], parts[2], parts[3], + parts[4], type)); } } } LOG_F(INFO, "Config loaded from {}", filename); } -auto ToolchainManager::getToolchains() const -> const std::vector& { +const std::vector>& ToolchainManager::getToolchains() + const { LOG_F(INFO, "Getting all toolchains"); return impl_->toolchains; } -auto ToolchainManager::getAvailableCompilers() const - -> std::vector { +std::vector ToolchainManager::getAvailableCompilers() const { LOG_F(INFO, "Getting available compilers"); std::vector compilers; - for (const auto& tc : impl_->toolchains) { - if (tc.getType() == Toolchain::Type::Compiler) { - compilers.push_back(tc.getName()); + for (const auto& stc : impl_->toolchains) { + if (stc && stc->getType() == Toolchain::ToolchainType::Compiler) { + compilers.emplace_back(stc->getName()); } } return compilers; } -auto ToolchainManager::getAvailableBuildTools() const - -> std::vector { +std::vector ToolchainManager::getAvailableBuildTools() const { LOG_F(INFO, "Getting available build tools"); std::vector buildTools; - for (const auto& tc : impl_->toolchains) { - if (tc.getType() == Toolchain::Type::BuildTool) { - buildTools.push_back(tc.getName()); + for (const auto& stc : impl_->toolchains) { + if (stc && stc->getType() == Toolchain::ToolchainType::BuildTool) { + buildTools.emplace_back(stc->getName()); } } return buildTools; } void ToolchainManager::addToolchain(const Toolchain& toolchain) { + if (toolchain.getName().empty()) { + LOG_F(ERROR, "Toolchain name cannot be empty."); + throw std::invalid_argument("Toolchain name cannot be empty."); + } LOG_F(INFO, "Adding toolchain: {}", toolchain.getName()); - auto it = std::find_if(impl_->toolchains.begin(), impl_->toolchains.end(), - [&](const Toolchain& tc) { - return tc.getName() == toolchain.getName(); - }); + auto it = + std::find_if(impl_->toolchains.begin(), impl_->toolchains.end(), + [&](const std::shared_ptr& tc) { + return tc && tc->getName() == toolchain.getName(); + }); if (it == impl_->toolchains.end()) { - impl_->toolchains.push_back(toolchain); + impl_->toolchains.emplace_back(std::make_shared(toolchain)); } else { - *it = toolchain; + *it = std::make_shared(toolchain); LOG_F(INFO, "Toolchain already exists, updated: {}", toolchain.getName()); } @@ -365,32 +424,39 @@ void ToolchainManager::addToolchain(const Toolchain& toolchain) { void ToolchainManager::removeToolchain(const std::string& name) { LOG_F(INFO, "Removing toolchain: {}", name); impl_->toolchains.erase( - std::remove_if( - impl_->toolchains.begin(), impl_->toolchains.end(), - [&](const Toolchain& tc) { return tc.getName() == name; }), + std::remove_if(impl_->toolchains.begin(), impl_->toolchains.end(), + [&](const std::shared_ptr& tc) { + return tc && tc->getName() == name; + }), impl_->toolchains.end()); } void ToolchainManager::updateToolchain(const std::string& name, const Toolchain& updatedToolchain) { + if (updatedToolchain.getName() != name) { + LOG_F(ERROR, "Toolchain name mismatch."); + throw std::invalid_argument("Toolchain name mismatch."); + } LOG_F(INFO, "Updating toolchain: {}", name); - auto it = - std::find_if(impl_->toolchains.begin(), impl_->toolchains.end(), - [&](const Toolchain& tc) { return tc.getName() == name; }); - if (it != impl_->toolchains.end()) { - *it = updatedToolchain; + auto it = std::find_if(impl_->toolchains.begin(), impl_->toolchains.end(), + [&](const std::shared_ptr& tc) { + return tc && tc->getName() == name; + }); + if (it != impl_->toolchains.end() && *it) { + *it = std::make_shared(updatedToolchain); LOG_F(INFO, "Toolchain updated: {}", name); } else { LOG_F(ERROR, "Toolchain not found: {}", name); } } -auto ToolchainManager::findToolchain(const std::string& name) const - -> std::optional { +std::optional> ToolchainManager::findToolchain( + const std::string& name) const { LOG_F(INFO, "Finding toolchain: {}", name); - auto it = - std::find_if(impl_->toolchains.begin(), impl_->toolchains.end(), - [&](const Toolchain& tc) { return tc.getName() == name; }); + auto it = std::find_if(impl_->toolchains.begin(), impl_->toolchains.end(), + [&](const std::shared_ptr& tc) { + return tc && tc->getName() == name; + }); if (it != impl_->toolchains.end()) { return *it; } @@ -398,59 +464,67 @@ auto ToolchainManager::findToolchain(const std::string& name) const return std::nullopt; } -auto ToolchainManager::findToolchains(const ToolchainFilter& filter) const - -> std::vector { +std::vector> ToolchainManager::findToolchains( + const ToolchainFilter& filter) const { LOG_F(INFO, "Finding toolchains with filter"); - std::vector result; - std::copy_if(impl_->toolchains.begin(), impl_->toolchains.end(), - std::back_inserter(result), filter); + std::vector> result; + for (const auto& tc : impl_->toolchains) { + if (tc && filter(tc)) { + result.emplace_back(tc); + } + } return result; } -auto ToolchainManager::suggestCompatibleToolchains(const Toolchain& base) const - -> std::vector { +std::vector> +ToolchainManager::suggestCompatibleToolchains(const Toolchain& base) const { LOG_F(INFO, "Suggesting compatible toolchains for {}", base.getName()); - return findToolchains( - [&base](const Toolchain& tc) { return base.isCompatibleWith(tc); }); + return findToolchains([&base](const std::shared_ptr& tc) { + return tc && base.isCompatibleWith(tc); + }); } void ToolchainManager::registerCustomToolchain(const std::string& name, const std::string& path) { + if (name.empty() || path.empty()) { + LOG_F(ERROR, "Name and path cannot be empty."); + throw std::invalid_argument("Name and path cannot be empty."); + } LOG_F(INFO, "Registering custom toolchain: {} path: {}", name, path); #if ENABLE_ASYNC std::weak_ptr ioContext; GET_OR_CREATE_WEAK_PTR(ioContext, asio::io_context, Constants::ASYNC_IO); - auto ioContextPtr = ioContext.lock(); - if (!ioContextPtr) { + if (auto ioContextPtr = ioContext.lock()) { + atom::async::io::AsyncDirectory asyncDir(*ioContextPtr); + asyncDir.asyncExists(path, [this, name, path](bool exists) { + if (exists) { + std::string version = Impl::getCompilerVersion(path); + Toolchain::ToolchainType type = + (path.find("make") != std::string::npos || + path.find("ninja") != std::string::npos) + ? Toolchain::ToolchainType::BuildTool + : Toolchain::ToolchainType::Compiler; + addToolchain(Toolchain(name, name, "", version, path, type)); + } else { + LOG_F(ERROR, "Custom toolchain path does not exist: {}", path); + THROW_NOT_FOUND("Custom toolchain path does not exist: " + + path); + } + }); + } else { LOG_F(ERROR, "Failed to lock ioContext"); THROW_OBJ_NOT_EXIST("ioContext"); } - atom::async::io::AsyncDirectory asyncDir(*ioContextPtr); - asyncDir.asyncExists(path, [this, name, path](bool exists) { - if (exists) { - std::string version = Impl::getCompilerVersion(path); - Toolchain::Type type = - path.find("make") != std::string::npos || - path.find("ninja") != std::string::npos - ? Toolchain::Type::BuildTool - : Toolchain::Type::Compiler; - addToolchain(Toolchain(name, name, "", version, path, type)); - } else { - LOG_F(ERROR, "Custom toolchain path does not exist: {}", path); - THROW_NOT_FOUND("Custom toolchain path does not exist: " + path); - } - }); #else if (!atom::io::isFolderExists(path)) { LOG_F(ERROR, "Custom toolchain path does not exist: {}", path); THROW_NOT_FOUND("Custom toolchain path does not exist: " + path); } - addCustomToolchain(name, path); std::string version = Impl::getCompilerVersion(path); - Toolchain::Type type = path.find("make") != std::string::npos || - path.find("ninja") != std::string::npos - ? Toolchain::Type::BuildTool - : Toolchain::Type::Compiler; + Toolchain::ToolchainType type = (path.find("make") != std::string::npos || + path.find("ninja") != std::string::npos) + ? Toolchain::ToolchainType::BuildTool + : Toolchain::ToolchainType::Compiler; addToolchain(Toolchain(name, name, "", version, path, type)); #endif } @@ -465,7 +539,8 @@ void ToolchainManager::setDefaultToolchain(const std::string& name) { } } -auto ToolchainManager::getDefaultToolchain() const -> std::optional { +std::optional> +ToolchainManager::getDefaultToolchain() const { LOG_F(INFO, "Getting default toolchain"); if (impl_->defaultToolchain) { return findToolchain(*impl_->defaultToolchain); @@ -474,10 +549,14 @@ auto ToolchainManager::getDefaultToolchain() const -> std::optional { } void ToolchainManager::addSearchPath(const std::string& path) { + if (path.empty()) { + LOG_F(ERROR, "Search path cannot be empty."); + throw std::invalid_argument("Search path cannot be empty."); + } LOG_F(INFO, "Adding search path: {}", path); if (std::find(impl_->searchPaths.begin(), impl_->searchPaths.end(), path) == impl_->searchPaths.end()) { - impl_->searchPaths.push_back(path); + impl_->searchPaths.emplace_back(path); } } @@ -488,14 +567,18 @@ void ToolchainManager::removeSearchPath(const std::string& path) { impl_->searchPaths.end()); } -auto ToolchainManager::getSearchPaths() const - -> const std::vector& { +const std::vector& ToolchainManager::getSearchPaths() const { LOG_F(INFO, "Getting search paths"); return impl_->searchPaths; } void ToolchainManager::setToolchainAlias(const std::string& alias, const std::string& toolchainName) { + if (alias.empty() || toolchainName.empty()) { + LOG_F(ERROR, "Alias and toolchain name cannot be empty."); + throw std::invalid_argument( + "Alias and toolchain name cannot be empty."); + } LOG_F(INFO, "Setting toolchain alias: {} -> {}", alias, toolchainName); if (findToolchain(toolchainName)) { impl_->toolchainAliases[alias] = toolchainName; @@ -505,8 +588,8 @@ void ToolchainManager::setToolchainAlias(const std::string& alias, } } -auto ToolchainManager::getToolchainByAlias(const std::string& alias) const - -> std::optional { +std::optional> ToolchainManager::getToolchainByAlias( + const std::string& alias) const { LOG_F(INFO, "Getting toolchain by alias: {}", alias); auto it = impl_->toolchainAliases.find(alias); if (it != impl_->toolchainAliases.end()) { @@ -516,8 +599,8 @@ auto ToolchainManager::getToolchainByAlias(const std::string& alias) const return std::nullopt; } -auto ToolchainManager::Impl::getCompilerVersion(const std::string& path) - -> std::string { +std::string ToolchainManager::Impl::getCompilerVersion( + const std::string& path) { LOG_F(INFO, "Getting compiler version, path: {}", path); std::string command = "\"" + path + "\" --version"; std::string result = atom::system::executeCommand(command); @@ -550,17 +633,22 @@ void ToolchainManager::Impl::loadToolchainsFromEnvironment() { std::weak_ptr envPtr; GET_OR_CREATE_WEAK_PTR(envPtr, atom::utils::Env, Constants::ENVIRONMENT); auto env = envPtr.lock(); - if (auto envP = env->get("TOOLCHAIN_PATHS"); !envP.empty()) { - std::istringstream envPaths(envP); - std::string path; - while (std::getline(envPaths, path, ':')) { - if (!path.empty()) { - searchPaths.push_back(path); - LOG_F(INFO, "Added search path from environment variable: {}", - path); + if (env) { + if (auto envP = env->get("TOOLCHAIN_PATHS"); !envP.empty()) { + std::istringstream envPaths(envP); + std::string path; + while (std::getline(envPaths, path, ':')) { + if (!path.empty()) { + searchPaths.emplace_back(path); + LOG_F(INFO, + "Added search path from environment variable: {}", + path); + } } + } else { + LOG_F(INFO, "Environment variable TOOLCHAIN_PATHS not set"); } } else { - LOG_F(INFO, "Environment variable TOOLCHAIN_PATHS not set"); + LOG_F(WARNING, "Environment pointer is expired."); } -} +} \ No newline at end of file diff --git a/src/addon/toolchain.hpp b/src/addon/toolchain.hpp index 4f218f4c..1847c879 100644 --- a/src/addon/toolchain.hpp +++ b/src/addon/toolchain.hpp @@ -7,85 +7,315 @@ #include #include +/** + * @class Toolchain + * @brief Represents a toolchain used for building software. + */ class Toolchain { public: - enum class Type { Compiler, BuildTool, Unknown }; + /** + * @enum ToolchainType + * @brief Enum representing the type of the toolchain. + */ + enum class ToolchainType { Compiler, BuildTool, Unknown }; + /** + * @brief Constructs a Toolchain object. + * @param name The name of the toolchain. + * @param compiler The compiler used by the toolchain. + * @param buildTool The build tool used by the toolchain. + * @param version The version of the toolchain. + * @param path The installation path of the toolchain. + * @param type The type of the toolchain. + */ Toolchain(std::string name, std::string compiler, std::string buildTool, - std::string version, std::string path, Type type = Type::Unknown); + std::string version, std::string path, ToolchainType type = ToolchainType::Unknown); + + /** + * @brief Destructor for the Toolchain object. + */ ~Toolchain(); + + /** + * @brief Copy constructor for the Toolchain object. + * @param other The Toolchain object to copy from. + */ Toolchain(const Toolchain& other); + + /** + * @brief Move constructor for the Toolchain object. + * @param other The Toolchain object to move from. + */ Toolchain(Toolchain&& other) noexcept; + + /** + * @brief Copy assignment operator for the Toolchain object. + * @param other The Toolchain object to copy from. + * @return A reference to the assigned Toolchain object. + */ auto operator=(const Toolchain& other) -> Toolchain&; + + /** + * @brief Move assignment operator for the Toolchain object. + * @param other The Toolchain object to move from. + * @return A reference to the assigned Toolchain object. + */ auto operator=(Toolchain&& other) noexcept -> Toolchain&; + /** + * @brief Displays information about the toolchain. + */ void displayInfo() const; + + /** + * @brief Gets the name of the toolchain. + * @return A constant reference to the name of the toolchain. + */ [[nodiscard]] auto getName() const -> const std::string&; + + /** + * @brief Gets the compiler used by the toolchain. + * @return A constant reference to the compiler used by the toolchain. + */ [[nodiscard]] auto getCompiler() const -> const std::string&; + + /** + * @brief Gets the build tool used by the toolchain. + * @return A constant reference to the build tool used by the toolchain. + */ [[nodiscard]] auto getBuildTool() const -> const std::string&; + + /** + * @brief Gets the version of the toolchain. + * @return A constant reference to the version of the toolchain. + */ [[nodiscard]] auto getVersion() const -> const std::string&; + + /** + * @brief Gets the installation path of the toolchain. + * @return A constant reference to the installation path of the toolchain. + */ [[nodiscard]] auto getPath() const -> const std::string&; - [[nodiscard]] auto getType() const -> Type; + /** + * @brief Gets the type of the toolchain. + * @return The type of the toolchain. + */ + [[nodiscard]] auto getType() const -> ToolchainType; + + /** + * @brief Sets the version of the toolchain. + * @param version The new version of the toolchain. + */ void setVersion(const std::string& version); + + /** + * @brief Sets the installation path of the toolchain. + * @param path The new installation path of the toolchain. + */ void setPath(const std::string& path); - void setType(Type type); - [[nodiscard]] auto isCompatibleWith(const Toolchain& other) const -> bool; + /** + * @brief Sets the type of the toolchain. + * @param type The new type of the toolchain. + */ + void setType(ToolchainType type); + + /** + * @brief Checks if the toolchain is compatible with another toolchain. + * @param other The other toolchain to check compatibility with. + * @return True if the toolchains are compatible, false otherwise. + */ + [[nodiscard]] auto isCompatibleWith(const std::shared_ptr& other) const -> bool; private: class Impl; std::unique_ptr impl_; }; +/** + * @class ToolchainManager + * @brief Manages a collection of toolchains. + */ class ToolchainManager { public: - using ToolchainFilter = std::function; + using ToolchainFilter = std::function&)>; + /** + * @brief Constructs a ToolchainManager object. + */ ToolchainManager(); + + /** + * @brief Destructor for the ToolchainManager object. + */ ~ToolchainManager(); - ToolchainManager(const ToolchainManager&) = delete; - ToolchainManager& operator=(const ToolchainManager&) = delete; + + /** + * @brief Move constructor for the ToolchainManager object. + * @param other The ToolchainManager object to move from. + */ ToolchainManager(ToolchainManager&&) noexcept; + + /** + * @brief Move assignment operator for the ToolchainManager object. + * @param other The ToolchainManager object to move from. + * @return A reference to the assigned ToolchainManager object. + */ ToolchainManager& operator=(ToolchainManager&&) noexcept; + /** + * @brief Scans for available toolchains. + */ void scanForToolchains(); + + /** + * @brief Lists all available toolchains. + */ void listToolchains() const; + + /** + * @brief Selects a toolchain by name. + * @param name The name of the toolchain to select. + * @return An optional Toolchain object if found. + */ [[nodiscard]] auto selectToolchain(const std::string& name) const - -> std::optional; + -> std::optional>; + + /** + * @brief Saves the current configuration to a file. + * @param filename The name of the file to save the configuration to. + */ void saveConfig(const std::string& filename) const; + + /** + * @brief Loads a configuration from a file. + * @param filename The name of the file to load the configuration from. + */ void loadConfig(const std::string& filename); - [[nodiscard]] auto getToolchains() const -> const std::vector&; + + /** + * @brief Gets all available toolchains. + * @return A constant reference to a vector of toolchains. + */ + [[nodiscard]] auto getToolchains() const -> const std::vector>&; + + /** + * @brief Gets all available compilers. + * @return A vector of available compilers. + */ [[nodiscard]] auto getAvailableCompilers() const -> std::vector; + + /** + * @brief Gets all available build tools. + * @return A vector of available build tools. + */ [[nodiscard]] auto getAvailableBuildTools() const -> std::vector; + + /** + * @brief Adds a new toolchain. + * @param toolchain The toolchain to add. + */ void addToolchain(const Toolchain& toolchain); + + /** + * @brief Removes a toolchain by name. + * @param name The name of the toolchain to remove. + */ void removeToolchain(const std::string& name); + + /** + * @brief Updates an existing toolchain. + * @param name The name of the toolchain to update. + * @param updatedToolchain The updated toolchain object. + */ void updateToolchain(const std::string& name, const Toolchain& updatedToolchain); + + /** + * @brief Finds a toolchain by name. + * @param name The name of the toolchain to find. + * @return An optional Toolchain object if found. + */ [[nodiscard]] auto findToolchain(const std::string& name) const - -> std::optional; + -> std::optional>; + + /** + * @brief Finds toolchains that match a given filter. + * @param filter The filter function to apply. + * @return A vector of toolchains that match the filter. + */ [[nodiscard]] auto findToolchains(const ToolchainFilter& filter) const - -> std::vector; + -> std::vector>; + + /** + * @brief Suggests toolchains that are compatible with a given toolchain. + * @param base The base toolchain to check compatibility with. + * @return A vector of compatible toolchains. + */ [[nodiscard]] auto suggestCompatibleToolchains(const Toolchain& base) const - -> std::vector; + -> std::vector>; + + /** + * @brief Registers a custom toolchain. + * @param name The name of the custom toolchain. + * @param path The installation path of the custom toolchain. + */ void registerCustomToolchain(const std::string& name, const std::string& path); + + /** + * @brief Sets the default toolchain. + * @param name The name of the toolchain to set as default. + */ void setDefaultToolchain(const std::string& name); - [[nodiscard]] auto getDefaultToolchain() const -> std::optional; + + /** + * @brief Gets the default toolchain. + * @return An optional Toolchain object if a default is set. + */ + [[nodiscard]] auto getDefaultToolchain() const -> std::optional>; + + /** + * @brief Adds a search path for toolchains. + * @param path The search path to add. + */ void addSearchPath(const std::string& path); + + /** + * @brief Removes a search path for toolchains. + * @param path The search path to remove. + */ void removeSearchPath(const std::string& path); + + /** + * @brief Gets all search paths for toolchains. + * @return A constant reference to a vector of search paths. + */ [[nodiscard]] auto getSearchPaths() const -> const std::vector&; + + /** + * @brief Sets an alias for a toolchain. + * @param alias The alias to set. + * @param toolchainName The name of the toolchain to alias. + */ void setToolchainAlias(const std::string& alias, const std::string& toolchainName); + + /** + * @brief Gets a toolchain by its alias. + * @param alias The alias of the toolchain to get. + * @return An optional Toolchain object if found. + */ [[nodiscard]] auto getToolchainByAlias(const std::string& alias) const - -> std::optional; + -> std::optional>; private: class Impl; std::unique_ptr impl_; }; -#endif // LITHIUM_ADDON_TOOLCHAIN_HPP +#endif // LITHIUM_ADDON_TOOLCHAIN_HPP \ No newline at end of file diff --git a/src/addon/tracker.cpp b/src/addon/tracker.cpp index e294da5a..5f5ffea7 100644 --- a/src/addon/tracker.cpp +++ b/src/addon/tracker.cpp @@ -1,18 +1,81 @@ #include "tracker.hpp" #include +#include +#include #include #include #include +#include +#include #include #include -#include +#include +#include +#include +#include +#include #include "atom/error/exception.hpp" #include "atom/type/json.hpp" #include "atom/utils/aes.hpp" +#include "atom/utils/difflib.hpp" +#include "atom/utils/string.hpp" #include "atom/utils/time.hpp" +namespace lithium { +class FailToScanDirectory : public atom::error::Exception { +public: + using Exception::Exception; +}; + +#define THROW_FAIL_TO_SCAN_DIRECTORY(...) \ + throw lithium::FailToScanDirectory(ATOM_FILE_NAME, ATOM_FILE_LINE, \ + ATOM_FUNC_NAME, __VA_ARGS__) + +#define THROW_NESTED_FAIL_TO_SCAN_DIRECTORY(...) \ + lithium::FailToScanDirectory::rethrowNested( \ + ATOM_FILE_NAME, ATOM_FILE_LINE, ATOM_FUNC_NAME, __VA_ARGS__) + +class FailToCompareJSON : public atom::error::Exception { +public: + using Exception::Exception; +}; + +#define THROW_FAIL_TO_COMPARE_JSON(...) \ + throw lithium::FailToCompareJSON(ATOM_FILE_NAME, ATOM_FILE_LINE, \ + ATOM_FUNC_NAME, __VA_ARGS__) + +#define THROW_NESTED_FAIL_TO_COMPARE_JSON(...) \ + lithium::FailToCompareJSON::rethrowNested(ATOM_FILE_NAME, ATOM_FILE_LINE, \ + ATOM_FUNC_NAME, __VA_ARGS__) + +class FailToLogDifferences : public atom::error::Exception { +public: + using Exception::Exception; +}; + +#define THROW_FAIL_TO_LOG_DIFFERENCES(...) \ + throw lithium::FailToLogDifferences(ATOM_FILE_NAME, ATOM_FILE_LINE, \ + ATOM_FUNC_NAME, __VA_ARGS__) + +#define THROW_NESTED_FAIL_TO_LOG_DIFFERENCES(...) \ + lithium::FailToLogDifferences::rethrowNested( \ + ATOM_FILE_NAME, ATOM_FILE_LINE, ATOM_FUNC_NAME, __VA_ARGS__) + +class FailToRecoverFiles : public atom::error::Exception { +public: + using Exception::Exception; +}; + +#define THROW_FAIL_TO_RECOVER_FILES(...) \ + throw lithium::FailToRecoverFiles(ATOM_FILE_NAME, ATOM_FILE_LINE, \ + ATOM_FUNC_NAME, __VA_ARGS__) + +#define THROW_NESTED_FAIL_TO_RECOVER_FILES(...) \ + lithium::FailToRecoverFiles::rethrowNested(ATOM_FILE_NAME, ATOM_FILE_LINE, \ + ATOM_FUNC_NAME, __VA_ARGS__) + struct FileTracker::Impl { std::string directory; std::string jsonFilePath; @@ -21,15 +84,69 @@ struct FileTracker::Impl { json newJson; json oldJson; json differences; - std::mutex mtx; + std::shared_mutex mtx; std::optional encryptionKey; + // Thread pool members + std::vector threadPool; + std::queue> tasks; + std::mutex queueMutex; + std::condition_variable condition; + bool stop; + Impl(std::string_view dir, std::string_view jFilePath, std::span types, bool rec) : directory(dir), jsonFilePath(jFilePath), recursive(rec), - fileTypes(types.begin(), types.end()) {} + fileTypes(types.begin(), types.end()), + stop(false) { + // Initialize thread pool with hardware concurrency + size_t threadCount = std::thread::hardware_concurrency(); + for (size_t i = 0; i < threadCount; ++i) { + threadPool.emplace_back([this]() { + while (true) { + std::function task; + { + std::unique_lock lock(queueMutex); + condition.wait( + lock, [this]() { return stop || !tasks.empty(); }); + if (stop && tasks.empty()) + return; + task = std::move(tasks.front()); + tasks.pop(); + } + try { + task(); + } catch (const std::exception& e) { + // Log or handle task exceptions + // For simplicity, we'll ignore here + } + } + }); + } + } + + ~Impl() { + { + std::unique_lock lock(queueMutex); + stop = true; + } + condition.notify_all(); + for (std::thread& thread : threadPool) { + if (thread.joinable()) { + thread.join(); + } + } + } + + void enqueueTask(std::function task) { + { + std::unique_lock lock(queueMutex); + tasks.emplace(std::move(task)); + } + condition.notify_one(); + } static void saveJSON(const json& j, const std::string& filePath, const std::optional& key) { @@ -70,13 +187,16 @@ struct FileTracker::Impl { } void generateJSON() { - using DirIterVariant = std::variant; + using DirIterVariant = + std::variant; DirIterVariant fileRange = recursive - ? DirIterVariant(fs::recursive_directory_iterator(directory)) - : DirIterVariant(fs::directory_iterator(directory)); + ? DirIterVariant( + std::filesystem::recursive_directory_iterator(directory)) + : DirIterVariant( + std::filesystem::directory_iterator(directory)); std::visit( [&](auto&& iter) { @@ -84,24 +204,37 @@ struct FileTracker::Impl { if (std::ranges::find(fileTypes, entry.path().extension().string()) != fileTypes.end()) { - processFile(entry.path()); + enqueueTask( + [this, entry]() { processFile(entry.path()); }); } } }, fileRange); + // Wait for all tasks to finish + { + std::unique_lock lock(queueMutex); + condition.wait(lock, [this]() { return tasks.empty(); }); + } + saveJSON(newJson, jsonFilePath, encryptionKey); } - void processFile(const fs::path& entry) { - std::string hash = atom::utils::calculateSha256(entry.string()); - std::string lastWriteTime = atom::utils::getChinaTimestampString(); - - std::lock_guard lock(mtx); - newJson[entry.string()] = {{"last_write_time", lastWriteTime}, - {"hash", hash}, - {"size", fs::file_size(entry)}, - {"type", entry.extension().string()}}; + void processFile(const std::filesystem::path& entry) { + try { + std::string hash = atom::utils::calculateSha256(entry.string()); + std::string lastWriteTime = atom::utils::getChinaTimestampString(); + + std::unique_lock lock(mtx); + newJson[entry.string()] = { + {"last_write_time", lastWriteTime}, + {"hash", hash}, + {"size", std::filesystem::file_size(entry)}, + {"type", entry.extension().string()}}; + } catch (const std::exception& e) { + // Handle file processing exceptions + // For simplicity, we'll ignore here + } } auto compareJSON() -> json { @@ -109,9 +242,16 @@ struct FileTracker::Impl { for (const auto& [filePath, newFileInfo] : newJson.items()) { if (oldJson.contains(filePath)) { if (oldJson[filePath]["hash"] != newFileInfo["hash"]) { + // 使用 difflib 生成详细的差异 + std::vector oldLines = + atom::utils::splitString(oldJson[filePath].dump(), + '\n'); + std::vector newLines = + atom::utils::splitString(newFileInfo.dump(), '\n'); + auto differences = atom::utils::Differ::unifiedDiff( + oldLines, newLines, "old", "new"); diff[filePath] = {{"status", "modified"}, - {"new", newFileInfo}, - {"old", oldJson[filePath]}}; + {"diff", differences}}; } } else { diff[filePath] = {{"status", "new"}}; @@ -127,12 +267,17 @@ struct FileTracker::Impl { void recoverFiles() { for (const auto& [filePath, fileInfo] : oldJson.items()) { - if (!fs::exists(filePath)) { - std::ofstream outFile(filePath); - if (outFile.is_open()) { - outFile << "This file was recovered based on version: " - << fileInfo["last_write_time"] << std::endl; - outFile.close(); + if (!std::filesystem::exists(filePath)) { + try { + std::ofstream outFile(filePath); + if (outFile.is_open()) { + outFile << "This file was recovered based on version: " + << fileInfo["last_write_time"] << std::endl; + outFile.close(); + } + } catch (const std::exception& e) { + // Handle recovery exceptions + // For simplicity, we'll ignore here } } } @@ -151,38 +296,68 @@ FileTracker::FileTracker(FileTracker&&) noexcept = default; auto FileTracker::operator=(FileTracker&&) noexcept -> FileTracker& = default; void FileTracker::scan() { - if (fs::exists(pImpl->jsonFilePath)) { - pImpl->oldJson = - pImpl->loadJSON(pImpl->jsonFilePath, pImpl->encryptionKey); + try { + if (std::filesystem::exists(pImpl->jsonFilePath)) { + pImpl->oldJson = + pImpl->loadJSON(pImpl->jsonFilePath, pImpl->encryptionKey); + } + pImpl->generateJSON(); + } catch (const std::exception& e) { + // Handle scan exceptions + THROW_FAIL_TO_SCAN_DIRECTORY("Scan failed: " + std::string(e.what())); } - pImpl->generateJSON(); } -void FileTracker::compare() { pImpl->differences = pImpl->compareJSON(); } +void FileTracker::compare() { + try { + pImpl->differences = pImpl->compareJSON(); + } catch (const std::exception& e) { + // Handle compare exceptions + THROW_FAIL_TO_COMPARE_JSON("Compare failed: " + std::string(e.what())); + } +} void FileTracker::logDifferences(std::string_view logFilePath) const { - std::ofstream logFile(logFilePath.data(), std::ios_base::app); - if (!logFile.is_open()) { - THROW_FAIL_TO_OPEN_FILE("Failed to open log file: " + - std::string(logFilePath)); - } - for (const auto& [filePath, info] : pImpl->differences.items()) { - logFile << "File: " << filePath << ", Status: " << info["status"] - << std::endl; + try { + std::ofstream logFile(logFilePath.data(), std::ios_base::app); + if (!logFile.is_open()) { + THROW_FAIL_TO_OPEN_FILE("Failed to open log file: " + + std::string(logFilePath)); + } + for (const auto& [filePath, info] : pImpl->differences.items()) { + logFile << "File: " << filePath << ", Status: " << info["status"] + << std::endl; + if (info.contains("diff")) { + for (const auto& line : info["diff"]) { + logFile << line << std::endl; + } + } + } + } catch (const std::exception& e) { + // Handle logging exceptions + THROW_FAIL_TO_LOG_DIFFERENCES("Logging failed: " + + std::string(e.what())); } } void FileTracker::recover(std::string_view jsonFilePath) { - pImpl->oldJson = pImpl->loadJSON(jsonFilePath.data(), pImpl->encryptionKey); - pImpl->recoverFiles(); + try { + pImpl->oldJson = + pImpl->loadJSON(jsonFilePath.data(), pImpl->encryptionKey); + pImpl->recoverFiles(); + } catch (const std::exception& e) { + // Handle recovery exceptions + THROW_FAIL_TO_RECOVER_FILES("Recovery failed: " + + std::string(e.what())); + } } auto FileTracker::asyncScan() -> std::future { - return std::async(std::launch::async, [this] { scan(); }); + return std::async(std::launch::async, [this]() { scan(); }); } auto FileTracker::asyncCompare() -> std::future { - return std::async(std::launch::async, [this] { compare(); }); + return std::async(std::launch::async, [this]() { compare(); }); } auto FileTracker::getDifferences() const noexcept -> const json& { @@ -194,31 +369,40 @@ auto FileTracker::getTrackedFileTypes() const noexcept return pImpl->fileTypes; } -template Func> +template Func> void FileTracker::forEachFile(Func&& func) const { - using DirIterVariant = - std::variant; - - DirIterVariant fileRange = - pImpl->recursive - ? DirIterVariant(fs::recursive_directory_iterator(pImpl->directory)) - : DirIterVariant(fs::directory_iterator(pImpl->directory)); - - std::visit( - [&](auto&& iter) { - for (const auto& entry : iter) { - if (std::ranges::find(pImpl->fileTypes, - entry.path().extension().string()) != - pImpl->fileTypes.end()) { - func(entry.path()); + try { + using DirIterVariant = + std::variant; + + DirIterVariant fileRange = + pImpl->recursive + ? DirIterVariant(std::filesystem::recursive_directory_iterator( + pImpl->directory)) + : DirIterVariant( + std::filesystem::directory_iterator(pImpl->directory)); + + std::visit( + [&](auto&& iter) { + for (const auto& entry : iter) { + if (std::ranges::find(pImpl->fileTypes, + entry.path().extension().string()) != + pImpl->fileTypes.end()) { + func(entry.path()); + } } - } - }, - fileRange); + }, + fileRange); + } catch (const std::exception& e) { + // Handle forEachFile exceptions + // For simplicity, we'll ignore here + } } -auto FileTracker::getFileInfo(const fs::path& filePath) const +auto FileTracker::getFileInfo(const std::filesystem::path& filePath) const -> std::optional { + std::shared_lock lock(pImpl->mtx); if (auto it = pImpl->newJson.find(filePath.string()); it != pImpl->newJson.end()) { return *it; @@ -227,19 +411,24 @@ auto FileTracker::getFileInfo(const fs::path& filePath) const } void FileTracker::addFileType(std::string_view fileType) { + std::unique_lock lock(pImpl->mtx); pImpl->fileTypes.emplace_back(fileType); } void FileTracker::removeFileType(std::string_view fileType) { + std::unique_lock lock(pImpl->mtx); pImpl->fileTypes.erase( std::remove(pImpl->fileTypes.begin(), pImpl->fileTypes.end(), fileType), pImpl->fileTypes.end()); } void FileTracker::setEncryptionKey(std::string_view key) { + std::unique_lock lock(pImpl->mtx); pImpl->encryptionKey = std::string(key); } // Explicitly instantiate the template function to avoid linker errors -template void FileTracker::forEachFile>( - std::function&&) const; +template void +FileTracker::forEachFile>( + std::function&&) const; +} // namespace lithium diff --git a/src/addon/tracker.hpp b/src/addon/tracker.hpp index 0ba30f6f..0a8eeecd 100644 --- a/src/addon/tracker.hpp +++ b/src/addon/tracker.hpp @@ -15,44 +15,135 @@ using json = nlohmann::json; namespace fs = std::filesystem; +namespace lithium { + +/** + * @class FileTracker + * @brief Class to track files in a directory. + */ class FileTracker { public: + /** + * @brief Constructs a FileTracker. + * @param directory The directory to track. + * @param jsonFilePath The path to the JSON file for storing file + * information. + * @param fileTypes The types of files to track. + * @param recursive Whether to track files recursively in subdirectories. + */ FileTracker(std::string_view directory, std::string_view jsonFilePath, std::span fileTypes, bool recursive = false); + /** + * @brief Destructs the FileTracker. + */ ~FileTracker(); + // Delete copy constructor and copy assignment operator FileTracker(const FileTracker&) = delete; FileTracker& operator=(const FileTracker&) = delete; + + /** + * @brief Move constructor. + * @param other The other FileTracker to move from. + */ FileTracker(FileTracker&&) noexcept; + + /** + * @brief Move assignment operator. + * @param other The other FileTracker to move from. + * @return A reference to this FileTracker. + */ FileTracker& operator=(FileTracker&&) noexcept; + /** + * @brief Scans the directory for files. + */ void scan(); + + /** + * @brief Compares the current state of the directory with the stored state. + */ void compare(); + + /** + * @brief Logs the differences between the current and stored state to a + * file. + * @param logFilePath The path to the log file. + */ void logDifferences(std::string_view logFilePath) const; + + /** + * @brief Recovers the state of the directory from a JSON file. + * @param jsonFilePath The path to the JSON file. + */ void recover(std::string_view jsonFilePath); + /** + * @brief Asynchronously scans the directory for files. + * @return A future that completes when the scan is done. + */ [[nodiscard]] std::future asyncScan(); + + /** + * @brief Asynchronously compares the current state of the directory with + * the stored state. + * @return A future that completes when the comparison is done. + */ [[nodiscard]] std::future asyncCompare(); + /** + * @brief Gets the differences between the current and stored state. + * @return A JSON object containing the differences. + */ [[nodiscard]] const json& getDifferences() const noexcept; + + /** + * @brief Gets the types of files being tracked. + * @return A vector of strings containing the tracked file types. + */ [[nodiscard]] const std::vector& getTrackedFileTypes() const noexcept; + /** + * @brief Applies a function to each file in the directory. + * @tparam Func The type of the function to apply. + * @param func The function to apply to each file. + */ template Func> void forEachFile(Func&& func) const; + /** + * @brief Gets information about a file. + * @param filePath The path to the file. + * @return An optional JSON object containing the file information. + */ [[nodiscard]] std::optional getFileInfo( const fs::path& filePath) const; + /** + * @brief Adds a file type to track. + * @param fileType The file type to add. + */ void addFileType(std::string_view fileType); + + /** + * @brief Removes a file type from tracking. + * @param fileType The file type to remove. + */ void removeFileType(std::string_view fileType); + /** + * @brief Sets the encryption key for storing file information. + * @param key The encryption key. + */ void setEncryptionKey(std::string_view key); private: - struct Impl; - std::unique_ptr pImpl; + struct Impl; ///< Forward declaration of the implementation struct. + std::unique_ptr pImpl; ///< Pointer to the implementation. }; -#endif // LITHIUM_ADDON_TRACKER_HPP +} // namespace lithium + +#endif // LITHIUM_ADDON_TRACKER_HPP \ No newline at end of file diff --git a/src/addon/version.hpp b/src/addon/version.hpp index 5657ba4a..bf750848 100644 --- a/src/addon/version.hpp +++ b/src/addon/version.hpp @@ -12,15 +12,32 @@ namespace lithium { +/** + * @struct Version + * @brief Represents a semantic version. + */ struct Version { - int major; - int minor; - int patch; - std::string prerelease; // alpha, beta, rc etc. - std::string build; // build metadata - + int major; ///< Major version number. + int minor; ///< Minor version number. + int patch; ///< Patch version number. + std::string + prerelease; ///< Prerelease information (e.g., alpha, beta, rc). + std::string build; ///< Build metadata. + + /** + * @brief Default constructor initializing version to 0.0.0. + */ constexpr Version() : major(0), minor(0), patch(0) {} + /** + * @brief Constructs a Version with specified major, minor, patch, + * prerelease, and build. + * @param maj Major version number. + * @param min Minor version number. + * @param pat Patch version number. + * @param pre Prerelease information. + * @param bld Build metadata. + */ constexpr Version(int maj, int min, int pat, std::string pre = "", std::string bld = "") : major(maj), @@ -29,41 +46,156 @@ struct Version { prerelease(std::move(pre)), build(std::move(bld)) {} + /** + * @brief Parses a version string into a Version object. + * @param versionStr The version string to parse. + * @return The parsed Version object. + */ static constexpr auto parse(std::string_view versionStr) -> Version; + + /** + * @brief Converts the Version object to a string. + * @return The version as a string. + */ [[nodiscard]] auto toString() const -> std::string; + /** + * @brief Less-than comparison operator. + * @param other The other Version to compare to. + * @return True if this version is less than the other version. + */ constexpr auto operator<(const Version& other) const -> bool; + + /** + * @brief Greater-than comparison operator. + * @param other The other Version to compare to. + * @return True if this version is greater than the other version. + */ constexpr auto operator>(const Version& other) const -> bool; + + /** + * @brief Equality comparison operator. + * @param other The other Version to compare to. + * @return True if this version is equal to the other version. + */ constexpr auto operator==(const Version& other) const -> bool; + + /** + * @brief Less-than-or-equal-to comparison operator. + * @param other The other Version to compare to. + * @return True if this version is less than or equal to the other version. + */ constexpr auto operator<=(const Version& other) const -> bool; + + /** + * @brief Greater-than-or-equal-to comparison operator. + * @param other The other Version to compare to. + * @return True if this version is greater than or equal to the other + * version. + */ constexpr auto operator>=(const Version& other) const -> bool; } ATOM_ALIGNAS(128); +/** + * @brief Stream insertion operator for Version. + * @param os The output stream. + * @param version The Version object to insert. + * @return The output stream. + */ auto operator<<(std::ostream& os, const Version& version) -> std::ostream&; +/** + * @struct DateVersion + * @brief Represents a date-based version. + */ struct DateVersion { - int year; - int month; - int day; - + int year; ///< Year component of the date. + int month; ///< Month component of the date. + int day; ///< Day component of the date. + + /** + * @brief Constructs a DateVersion with specified year, month, and day. + * @param y Year component. + * @param m Month component. + * @param d Day component. + */ constexpr DateVersion(int y, int m, int d) : year(y), month(m), day(d) {} + /** + * @brief Parses a date string into a DateVersion object. + * @param dateStr The date string to parse. + * @return The parsed DateVersion object. + */ static constexpr auto parse(std::string_view dateStr) -> DateVersion; + /** + * @brief Less-than comparison operator. + * @param other The other DateVersion to compare to. + * @return True if this date is less than the other date. + */ constexpr auto operator<(const DateVersion& other) const -> bool; + + /** + * @brief Greater-than comparison operator. + * @param other The other DateVersion to compare to. + * @return True if this date is greater than the other date. + */ constexpr auto operator>(const DateVersion& other) const -> bool; + + /** + * @brief Equality comparison operator. + * @param other The other DateVersion to compare to. + * @return True if this date is equal to the other date. + */ constexpr auto operator==(const DateVersion& other) const -> bool; + + /** + * @brief Less-than-or-equal-to comparison operator. + * @param other The other DateVersion to compare to. + * @return True if this date is less than or equal to the other date. + */ constexpr auto operator<=(const DateVersion& other) const -> bool; + + /** + * @brief Greater-than-or-equal-to comparison operator. + * @param other The other DateVersion to compare to. + * @return True if this date is greater than or equal to the other date. + */ constexpr auto operator>=(const DateVersion& other) const -> bool; } ATOM_ALIGNAS(16); +/** + * @brief Stream insertion operator for DateVersion. + * @param os The output stream. + * @param version The DateVersion object to insert. + * @return The output stream. + */ auto operator<<(std::ostream& os, const DateVersion& version) -> std::ostream&; +/** + * @brief Checks if the actual version meets the required version. + * @param actualVersion The actual Version object. + * @param requiredVersionStr The required version string. + * @return True if the actual version meets the required version. + */ auto checkVersion(const Version& actualVersion, const std::string& requiredVersionStr) -> bool; + +/** + * @brief Checks if the actual date version meets the required date version. + * @param actualVersion The actual DateVersion object. + * @param requiredVersionStr The required date version string. + * @return True if the actual date version meets the required date version. + */ auto checkDateVersion(const DateVersion& actualVersion, const std::string& requiredVersionStr) -> bool; +/** + * @brief Parses a string into an integer. + * @param str The string to parse. + * @return The parsed integer. + * @throws std::invalid_argument if the string is not a valid integer. + */ constexpr auto parseInt(std::string_view str) -> int { int result = 0; auto [ptr, ec] = @@ -74,6 +206,12 @@ constexpr auto parseInt(std::string_view str) -> int { return result; } +/** + * @brief Parses a version string into a Version object. + * @param versionStr The version string to parse. + * @return The parsed Version object. + * @throws std::invalid_argument if the version string is not valid. + */ constexpr auto Version::parse(std::string_view versionStr) -> Version { size_t pos = 0; auto nextDot = versionStr.find('.', pos); @@ -135,13 +273,16 @@ constexpr auto Version::operator<(const Version& other) const -> bool { constexpr auto Version::operator>(const Version& other) const -> bool { return other < *this; } + constexpr auto Version::operator==(const Version& other) const -> bool { return major == other.major && minor == other.minor && patch == other.patch && prerelease == other.prerelease; } + constexpr auto Version::operator<=(const Version& other) const -> bool { return *this < other || *this == other; } + constexpr auto Version::operator>=(const Version& other) const -> bool { return *this > other || *this == other; } @@ -160,16 +301,19 @@ constexpr auto DateVersion::operator<(const DateVersion& other) const -> bool { constexpr auto DateVersion::operator>(const DateVersion& other) const -> bool { return other < *this; } + constexpr auto DateVersion::operator==(const DateVersion& other) const -> bool { return year == other.year && month == other.month && day == other.day; } + constexpr auto DateVersion::operator<=(const DateVersion& other) const -> bool { return *this < other || *this == other; } + constexpr auto DateVersion::operator>=(const DateVersion& other) const -> bool { return *this > other || *this == other; } } // namespace lithium -#endif +#endif // LITHIUM_ADDON_VERSION_HPP \ No newline at end of file diff --git a/src/atom b/src/atom new file mode 160000 index 00000000..5901acb5 --- /dev/null +++ b/src/atom @@ -0,0 +1 @@ +Subproject commit 5901acb5eb15c6bdc24338c66477fc644c86a5fc diff --git a/src/atom/CMakeLists.txt b/src/atom/CMakeLists.txt deleted file mode 100644 index e27e0463..00000000 --- a/src/atom/CMakeLists.txt +++ /dev/null @@ -1,105 +0,0 @@ -# CMakeLists.txt for Atom -# This project is licensed under the terms of the GPL3 license. -# -# Project Name: Atom -# Description: Atom Library for all of the Element Astro Project -# Author: Max Qian -# License: GPL3 - -cmake_minimum_required(VERSION 3.20) -project(atom C CXX) - -# Versioning -set(ATOM_VERSION_MAJOR 1) -set(ATOM_VERSION_MINOR 0) -set(ATOM_VERSION_PATCH 0) -set(ATOM_SOVERSION ${ATOM_VERSION_MAJOR}) -set(ATOM_VERSION_STRING "${ATOM_VERSION_MAJOR}.${ATOM_VERSION_MINOR}.${ATOM_VERSION_PATCH}") - -# Python Support -option(ATOM_BUILD_PYTHON "Build Atom with Python support" OFF) -if(ATOM_BUILD_PYTHON) - find_package(Python COMPONENTS Interpreter Development REQUIRED) - if(PYTHON_FOUND) - message("-- Found Python ${PYTHON_VERSION_STRING}: ${PYTHON_EXECUTABLE}") - find_package(pybind11 QUIET) - if(pybind11_FOUND) - message(STATUS "Found pybind11: ${pybind11_INCLUDE_DIRS}") - else() - message(FATAL_ERROR "pybind11 not found") - endif() - else() - message(FATAL_ERROR "Python not found") - endif() -endif() - -# Subdirectories -add_subdirectory(algorithm) -add_subdirectory(async) -add_subdirectory(components) -add_subdirectory(connection) -add_subdirectory(error) -add_subdirectory(function) -add_subdirectory(io) -add_subdirectory(log) -add_subdirectory(search) -add_subdirectory(secret) -add_subdirectory(sysinfo) -add_subdirectory(system) -add_subdirectory(tests) -add_subdirectory(type) -add_subdirectory(utils) -add_subdirectory(web) - -# Sources and Headers -set(ATOM_SOURCES - log/atomlog.cpp - log/logger.cpp -) - -set(ATOM_HEADERS - log/atomlog.hpp - log/logger.hpp -) - -# Libraries -set(ATOM_LIBS - loguru - cpp_httplib - atom-function - atom-algorithm - atom-async - atom-io - atom-component - atom-type - atom-utils - atom-search - atom-web - atom-system - atom-sysinfo -) - -# Object Library -add_library(atom_object OBJECT ${ATOM_SOURCES} ${ATOM_HEADERS}) - -if(WIN32) - target_link_libraries(atom_object setupapi wsock32 ws2_32 shlwapi iphlpapi) -endif() - -target_link_libraries(atom_object ${ATOM_LIBS}) - -# Static Library -add_library(atom STATIC) -set_target_properties(atom PROPERTIES - IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}atom${CMAKE_STATIC_LIBRARY_SUFFIX}" - VERSION ${ATOM_VERSION_STRING} - SOVERSION ${ATOM_SOVERSION} -) - -target_link_libraries(atom atom_object ${CMAKE_THREAD_LIBS_INIT} ${ATOM_LIBS}) - -# Install -install(TARGETS atom - DESTINATION ${CMAKE_INSTALL_LIBDIR} - COMPONENT library -) diff --git a/src/atom/algorithm/CMakeLists.txt b/src/atom/algorithm/CMakeLists.txt deleted file mode 100644 index 779c235c..00000000 --- a/src/atom/algorithm/CMakeLists.txt +++ /dev/null @@ -1,75 +0,0 @@ -# CMakeLists.txt for Atom-Algorithm -# This project is licensed under the terms of the GPL3 license. -# -# Project Name: Atom-Algorithm -# Description: A collection of algorithms -# Author: Max Qian -# License: GPL3 - -cmake_minimum_required(VERSION 3.20) -project(atom-algorithm C CXX) - -# Sources -set(${PROJECT_NAME}_SOURCES - algorithm.cpp - base.cpp - bignumber.cpp - convolve.cpp - fnmatch.cpp - fraction.cpp - huffman.cpp - math.cpp - md5.cpp - mhash.cpp - tea.cpp -) - -# Headers -set(${PROJECT_NAME}_HEADERS - algorithm.hpp - base.hpp - bignumber.hpp - convolve.hpp - fnmatch.hpp - fraction.hpp - hash.hpp - huffman.hpp - math.hpp - md5.hpp - mhash.hpp - tea.hpp -) - -# Build Object Library -add_library(${PROJECT_NAME}_OBJECT OBJECT) -set_property(TARGET ${PROJECT_NAME}_OBJECT PROPERTY POSITION_INDEPENDENT_CODE 1) - -target_sources(${PROJECT_NAME}_OBJECT - PUBLIC - ${${PROJECT_NAME}_HEADERS} - PRIVATE - ${${PROJECT_NAME}_SOURCES} -) - -target_link_libraries(${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) - -add_library(${PROJECT_NAME} STATIC) - -target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) -target_link_libraries(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT}) -target_include_directories(${PROJECT_NAME} PUBLIC .) - -set_target_properties(${PROJECT_NAME} PROPERTIES - VERSION ${CMAKE_HYDROGEN_VERSION_STRING} - SOVERSION ${HYDROGEN_SOVERSION} - OUTPUT_NAME ${PROJECT_NAME} -) - -install(TARGETS ${PROJECT_NAME} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -) - -if (ATOM_BUILD_PYTHON) -pybind11_add_module(${PROJECT_NAME}-py _pybind.cpp) -target_link_libraries(${PROJECT_NAME}-py PRIVATE ${PROJECT_NAME}) -endif() diff --git a/src/atom/algorithm/algorithm.cpp b/src/atom/algorithm/algorithm.cpp deleted file mode 100644 index 233cc8ea..00000000 --- a/src/atom/algorithm/algorithm.cpp +++ /dev/null @@ -1,204 +0,0 @@ -#include "algorithm.hpp" -#ifdef USE_OPENMP -#include -#endif - -namespace atom::algorithm { - -KMP::KMP(std::string_view pattern) { setPattern(pattern); } - -auto KMP::search(std::string_view text) const -> std::vector { - std::vector occurrences; - auto n = static_cast(text.length()); - auto m = static_cast(pattern_.length()); - if (m == 0) { - return occurrences; - } - -#ifdef USE_SIMD - int i = 0; - int j = 0; - while (i <= n - m) { - __m256i text_chunk = _mm256_loadu_si256(reinterpret_cast(&text[i])); - __m256i pattern_chunk = _mm256_loadu_si256(reinterpret_cast(&pattern_[0])); - __m256i result = _mm256_cmpeq_epi8(text_chunk, pattern_chunk); - int mask = _mm256_movemask_epi8(result); - if (mask == 0xFFFFFFFF) { - occurrences.push_back(i); - i += m; - } else { - ++i; - } - } -#elif defined(USE_OPENMP) - std::vector local_occurrences[omp_get_max_threads()]; -#pragma omp parallel - { - int i = omp_get_thread_num(); - int j = 0; - while (i < n) { - if (text[i] == pattern_[j]) { - ++i; - ++j; - if (j == m) { - local_occurrences[omp_get_thread_num()].push_back(i - m); - j = failure_[j - 1]; - } - } else if (j > 0) { - j = failure_[j - 1]; - } else { - ++i; - } - } - } - for (int t = 0; t < omp_get_max_threads(); ++t) { - occurrences.insert(occurrences.end(), local_occurrences[t].begin(), - local_occurrences[t].end()); - } -#else - int i = 0; - int j = 0; - while (i < n) { - if (text[i] == pattern_[j]) { - ++i; - ++j; - if (j == m) { - occurrences.push_back(i - m); - j = failure_[j - 1]; - } - } else if (j > 0) { - j = failure_[j - 1]; - } else { - ++i; - } - } -#endif - return occurrences; -} - -void KMP::setPattern(std::string_view pattern) { - pattern_ = pattern; - failure_ = computeFailureFunction(pattern_); -} - -auto KMP::computeFailureFunction(std::string_view pattern) -> std::vector { - auto m = static_cast(pattern.length()); - std::vector failure(m, 0); - int j = 0; - for (int i = 1; i < m; ++i) { - if (pattern[i] == pattern[j]) { - failure[i] = ++j; - } else if (j > 0) { - j = failure[j - 1]; - --i; // stay in the same position - } - } - return failure; -} - -BoyerMoore::BoyerMoore(std::string_view pattern) { setPattern(pattern); } - -auto BoyerMoore::search(std::string_view text) const -> std::vector { - std::vector occurrences; - auto n = static_cast(text.length()); - auto m = static_cast(pattern_.length()); - if (m == 0) { - return occurrences; - } - -#ifdef USE_OPENMP - std::vector local_occurrences[omp_get_max_threads()]; -#pragma omp parallel - { - int i = omp_get_thread_num(); - while (i <= n - m) { - int j = m - 1; - while (j >= 0 && pattern_[j] == text[i + j]) { - --j; - } - if (j < 0) { - local_occurrences[omp_get_thread_num()].push_back(i); - i += good_suffix_shift_[0]; - } else { - int badCharShift = - bad_char_shift_.find(text[i + j]) != bad_char_shift_.end() - ? bad_char_shift_.at(text[i + j]) - : m; - i += std::max(good_suffix_shift_[j + 1], - badCharShift - m + 1 + j); - } - } - } - for (int t = 0; t < omp_get_max_threads(); ++t) { - occurrences.insert(occurrences.end(), local_occurrences[t].begin(), - local_occurrences[t].end()); - } -#else - int i = 0; - while (i <= n - m) { - int j = m - 1; - while (j >= 0 && pattern_[j] == text[i + j]) { - --j; - } - if (j < 0) { - occurrences.push_back(i); - i += good_suffix_shift_[0]; - } else { - int badCharShift = - bad_char_shift_.find(text[i + j]) != bad_char_shift_.end() - ? bad_char_shift_.at(text[i + j]) - : m; - i += std::max(good_suffix_shift_[j + 1], badCharShift - m + 1 + j); - } - } -#endif - return occurrences; -} - -void BoyerMoore::setPattern(std::string_view pattern) { - pattern_ = std::string(pattern); - computeBadCharacterShift(); - computeGoodSuffixShift(); -} - -void BoyerMoore::computeBadCharacterShift() { - bad_char_shift_.clear(); - for (int i = 0; i < static_cast(pattern_.length()) - 1; ++i) { - bad_char_shift_[pattern_[i]] = - static_cast(pattern_.length()) - 1 - i; - } -} - -void BoyerMoore::computeGoodSuffixShift() { - auto m = static_cast(pattern_.length()); - good_suffix_shift_.resize(m + 1, m); - std::vector suffix(m + 1, 0); - suffix[m] = m + 1; - - for (int i = m; i > 0; --i) { - int j = i - 1; - while (j >= 0 && pattern_[j] != pattern_[m - 1 - (i - 1 - j)]) { - --j; - } - suffix[i - 1] = j + 1; - } - - for (int i = 0; i <= m; ++i) { - good_suffix_shift_[i] = m; - } - - for (int i = m; i > 0; --i) { - if (suffix[i - 1] == i) { - for (int j = 0; j < m - i; ++j) { - if (good_suffix_shift_[j] == m) { - good_suffix_shift_[j] = m - i; - } - } - } - } - - for (int i = 0; i < m - 1; ++i) { - good_suffix_shift_[m - suffix[i]] = m - 1 - i; - } -} -} // namespace atom::algorithm diff --git a/src/atom/algorithm/algorithm.hpp b/src/atom/algorithm/algorithm.hpp deleted file mode 100644 index c4057d89..00000000 --- a/src/atom/algorithm/algorithm.hpp +++ /dev/null @@ -1,209 +0,0 @@ -/* - * algorithm.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-4-5 - -Description: A collection of algorithms for C++ - -**************************************************/ - -#ifndef ATOM_ALGORITHM_ALGORITHM_HPP -#define ATOM_ALGORITHM_ALGORITHM_HPP - -#include -#include -#include -#include -#include - -namespace atom::algorithm { -/** - * @brief Implements the Knuth-Morris-Pratt (KMP) string searching algorithm. - * - * This class provides methods to search for occurrences of a pattern within a - * text using the KMP algorithm, which preprocesses the pattern to achieve - * efficient string searching. - */ -class KMP { -public: - /** - * @brief Constructs a KMP object with the given pattern. - * - * @param pattern The pattern to search for in text. - */ - explicit KMP(std::string_view pattern); - - /** - * @brief Searches for occurrences of the pattern in the given text. - * - * @param text The text to search within. - * @return std::vector Vector containing positions where the pattern - * starts in the text. - */ - [[nodiscard]] auto search(std::string_view text) const -> std::vector; - - /** - * @brief Sets a new pattern for searching. - * - * @param pattern The new pattern to search for. - */ - void setPattern(std::string_view pattern); - -private: - /** - * @brief Computes the failure function (partial match table) for the given - * pattern. - * - * This function preprocesses the pattern to determine the length of the - * longest proper prefix which is also a suffix at each position in the - * pattern. - * - * @param pattern The pattern for which to compute the failure function. - * @return std::vector The computed failure function (partial match - * table). - */ - auto computeFailureFunction(std::string_view pattern) -> std::vector; - - std::string pattern_; ///< The pattern to search for. - std::vector - failure_; ///< Failure function (partial match table) for the pattern. -}; - -/** - * @brief The BloomFilter class implements a Bloom filter data structure. - * @tparam N The size of the Bloom filter (number of bits). - */ -template -class BloomFilter { -public: - /** - * @brief Constructs a new BloomFilter object with the specified number of - * hash functions. - * @param num_hash_functions The number of hash functions to use for the - * Bloom filter. - */ - explicit BloomFilter(std::size_t num_hash_functions); - - /** - * @brief Inserts an element into the Bloom filter. - * @param element The element to insert. - */ - void insert(std::string_view element); - - /** - * @brief Checks if an element might be present in the Bloom filter. - * @param element The element to check. - * @return True if the element might be present, false otherwise. - */ - [[nodiscard]] auto contains(std::string_view element) const -> bool; - -private: - std::bitset m_bits_; /**< The bitset representing the Bloom filter. */ - std::size_t - m_num_hash_functions_; /**< The number of hash functions used. */ - - /** - * @brief Computes the hash value of an element using a specific seed. - * @param element The element to hash. - * @param seed The seed value for the hash function. - * @return The hash value of the element. - */ - auto hash(std::string_view element, std::size_t seed) const -> std::size_t; -}; - -/** - * @brief Implements the Boyer-Moore string searching algorithm. - * - * This class provides methods to search for occurrences of a pattern within a - * text using the Boyer-Moore algorithm, which preprocesses the pattern to - * achieve efficient string searching. - */ -class BoyerMoore { -public: - /** - * @brief Constructs a BoyerMoore object with the given pattern. - * - * @param pattern The pattern to search for in text. - */ - explicit BoyerMoore(std::string_view pattern); - - /** - * @brief Searches for occurrences of the pattern in the given text. - * - * @param text The text to search within. - * @return std::vector Vector containing positions where the pattern - * starts in the text. - */ - auto search(std::string_view text) const -> std::vector; - - /** - * @brief Sets a new pattern for searching. - * - * @param pattern The new pattern to search for. - */ - void setPattern(std::string_view pattern); - -private: - /** - * @brief Computes the bad character shift table for the current pattern. - * - * This table determines how far to shift the pattern relative to the text - * based on the last occurrence of a mismatched character. - */ - void computeBadCharacterShift(); - - /** - * @brief Computes the good suffix shift table for the current pattern. - * - * This table helps determine how far to shift the pattern when a mismatch - * occurs based on the occurrence of a partial match (suffix of the - * pattern). - */ - void computeGoodSuffixShift(); - - std::string pattern_; ///< The pattern to search for. - std::unordered_map - bad_char_shift_; ///< Bad character shift table. - std::vector good_suffix_shift_; ///< Good suffix shift table. -}; - -template -BloomFilter::BloomFilter(std::size_t num_hash_functions) - : m_num_hash_functions_(num_hash_functions) {} - -template -void BloomFilter::insert(std::string_view element) { - for (std::size_t i = 0; i < m_num_hash_functions_; ++i) { - std::size_t hashValue = hash(element, i); - m_bits_.set(hashValue % N); - } -} - -template -auto BloomFilter::contains(std::string_view element) const -> bool { - for (std::size_t i = 0; i < m_num_hash_functions_; ++i) { - std::size_t hashValue = hash(element, i); - if (!m_bits_.test(hashValue % N)) { - return false; - } - } - return true; -} - -template -auto BloomFilter::hash(std::string_view element, - std::size_t seed) const -> std::size_t { - std::size_t hashValue = seed; - for (char c : element) { - hashValue = hashValue * 31 + static_cast(c); - } - return hashValue; -} -} // namespace atom::algorithm - -#endif diff --git a/src/atom/algorithm/annealing.hpp b/src/atom/algorithm/annealing.hpp deleted file mode 100644 index ce1314f6..00000000 --- a/src/atom/algorithm/annealing.hpp +++ /dev/null @@ -1,302 +0,0 @@ -#ifndef ATOM_ALGORITHM_ANNEALING_HPP -#define ATOM_ALGORITHM_ANNEALING_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef USE_SIMD -#ifdef __x86_64__ -#include -#elif __aarch64__ -#include -#endif -#endif - -// Define a concept for a problem that Simulated Annealing can solve -template -concept AnnealingProblem = - requires(ProblemType problemInstance, SolutionType solutionInstance) { - { - problemInstance.energy(solutionInstance) - } -> std::convertible_to; - { - problemInstance.neighbor(solutionInstance) - } -> std::same_as; - { problemInstance.random_solution() } -> std::same_as; - }; - -// Different cooling strategies for temperature reduction -enum class AnnealingStrategy { LINEAR, EXPONENTIAL, LOGARITHMIC }; - -// Simulated Annealing algorithm implementation -template - requires AnnealingProblem -class SimulatedAnnealing { -private: - ProblemType& problem_instance_; - std::function cooling_schedule_; - int max_iterations_; - double initial_temperature_; - AnnealingStrategy cooling_strategy_; - std::function progress_callback_; - std::function stop_condition_; - std::atomic should_stop_{false}; - - std::mutex best_mutex_; - SolutionType best_solution_; - double best_energy_ = std::numeric_limits::max(); - - static constexpr int K_DEFAULT_MAX_ITERATIONS = 1000; - static constexpr double K_DEFAULT_INITIAL_TEMPERATURE = 100.0; - static constexpr double K_COOLING_RATE = 0.95; - - void optimizeThread(); - -public: - explicit SimulatedAnnealing( - ProblemType& problemInstance, - AnnealingStrategy coolingStrategy = AnnealingStrategy::EXPONENTIAL, - int maxIterations = K_DEFAULT_MAX_ITERATIONS, - double initialTemperature = K_DEFAULT_INITIAL_TEMPERATURE); - - void setCoolingSchedule(AnnealingStrategy strategy); - - void setProgressCallback( - std::function callback); - - void setStopCondition( - std::function condition); - - auto optimize(int numThreads = 1) -> SolutionType; - - [[nodiscard]] auto getBestEnergy() const -> double; -}; - -// Example TSP (Traveling Salesman Problem) implementation -class TSP { -private: - std::vector> cities_; - -public: - explicit TSP(const std::vector>& cities); - - [[nodiscard]] auto energy(const std::vector& solution) const -> double; - - [[nodiscard]] static auto neighbor(const std::vector& solution) - -> std::vector; - - [[nodiscard]] auto randomSolution() const -> std::vector; -}; - -// SimulatedAnnealing class implementation -template - requires AnnealingProblem -SimulatedAnnealing::SimulatedAnnealing( - ProblemType& problemInstance, AnnealingStrategy coolingStrategy, - int maxIterations, double initialTemperature) - : problem_instance_(problemInstance), - max_iterations_(maxIterations), - initial_temperature_(initialTemperature), - cooling_strategy_(coolingStrategy) { - setCoolingSchedule(coolingStrategy); -} - -template - requires AnnealingProblem -void SimulatedAnnealing::setCoolingSchedule( - AnnealingStrategy strategy) { - cooling_strategy_ = strategy; - switch (cooling_strategy_) { - case AnnealingStrategy::LINEAR: - cooling_schedule_ = [this](int iteration) { - return initial_temperature_ * - (1 - static_cast(iteration) / max_iterations_); - }; - break; - case AnnealingStrategy::EXPONENTIAL: - cooling_schedule_ = [this](int iteration) { - return initial_temperature_ * - std::pow(K_COOLING_RATE, iteration); - }; - break; - case AnnealingStrategy::LOGARITHMIC: - cooling_schedule_ = [this](int iteration) { - return initial_temperature_ / std::log(iteration + 2); - }; - break; - } -} - -template - requires AnnealingProblem -void SimulatedAnnealing::setProgressCallback( - std::function callback) { - progress_callback_ = callback; -} - -template - requires AnnealingProblem -void SimulatedAnnealing::setStopCondition( - std::function condition) { - stop_condition_ = condition; -} - -template - requires AnnealingProblem -void SimulatedAnnealing::optimizeThread() { - std::random_device randomDevice; - std::mt19937 generator(randomDevice()); - std::uniform_real_distribution distribution(0.0, 1.0); - - auto currentSolution = problem_instance_.random_solution(); - double currentEnergy = problem_instance_.energy(currentSolution); - - for (int iteration = 0; iteration < max_iterations_ && !should_stop_.load(); - ++iteration) { - double temperature = cooling_schedule_(iteration); - - auto neighborSolution = problem_instance_.neighbor(currentSolution); - double neighborEnergy = problem_instance_.energy(neighborSolution); - - if (double energyDifference = neighborEnergy - currentEnergy; - energyDifference < 0 || - distribution(generator) < - std::exp(-energyDifference / temperature)) { - currentSolution = std::move(neighborSolution); - currentEnergy = neighborEnergy; - - std::lock_guard lock(best_mutex_); - if (currentEnergy < best_energy_) { - best_solution_ = currentSolution; - best_energy_ = currentEnergy; - } - } - - if (progress_callback_) { - progress_callback_(iteration, currentEnergy, currentSolution); - } - - if (stop_condition_ && - stop_condition_(iteration, currentEnergy, currentSolution)) { - should_stop_.store(true); - break; - } - } -} - -template - requires AnnealingProblem -auto SimulatedAnnealing::optimize(int numThreads) - -> SolutionType { - std::vector> futures; - - futures.reserve(numThreads); - for (int threadIndex = 0; threadIndex < numThreads; ++threadIndex) { - futures.push_back( - std::async(std::launch::async, [this]() { optimizeThread(); })); - } - - for (auto& future : futures) { - future.wait(); - } - - return best_solution_; -} - -template - requires AnnealingProblem -auto SimulatedAnnealing::getBestEnergy() const - -> double { - return best_energy_; -} - -// TSP class implementation -inline TSP::TSP(const std::vector>& cities) - : cities_(cities) {} - -inline auto TSP::energy(const std::vector& solution) const -> double { - double totalDistance = 0.0; - size_t numCities = solution.size(); - -#ifdef USE_SIMD - __m256d totalDistanceVec = _mm256_setzero_pd(); - size_t i = 0; - for (; i + 3 < numCities; i += 4) { - __m256d x1 = _mm256_set_pd( - cities_[solution[i]].first, cities_[solution[i + 1]].first, - cities_[solution[i + 2]].first, cities_[solution[i + 3]].first); - __m256d y1 = _mm256_set_pd( - cities_[solution[i]].second, cities_[solution[i + 1]].second, - cities_[solution[i + 2]].second, cities_[solution[i + 3]].second); - - __m256d x2 = - _mm256_set_pd(cities_[solution[(i + 1) % numCities]].first, - cities_[solution[(i + 2) % numCities]].first, - cities_[solution[(i + 3) % numCities]].first, - cities_[solution[(i + 4) % numCities]].first); - __m256d y2 = - _mm256_set_pd(cities_[solution[(i + 1) % numCities]].second, - cities_[solution[(i + 2) % numCities]].second, - cities_[solution[(i + 3) % numCities]].second, - cities_[solution[(i + 4) % numCities]].second); - - __m256d deltaX = _mm256_sub_pd(x1, x2); - __m256d deltaY = _mm256_sub_pd(y1, y2); - - __m256d distance = _mm256_sqrt_pd(_mm256_add_pd( - _mm256_mul_pd(deltaX, deltaX), _mm256_mul_pd(deltaY, deltaY))); - totalDistanceVec = _mm256_add_pd(totalDistanceVec, distance); - } - - // Horizontal addition to sum up the total distance in vector - double distances[4]; - _mm256_storeu_pd(distances, totalDistanceVec); - for (double d : distances) { - totalDistance += d; - } -#endif - - // Handle leftover cities that couldn't be processed in sets of 4 - for (size_t index = numCities - numCities % 4; index < numCities; ++index) { - auto [x1, y1] = cities_[solution[index]]; - auto [x2, y2] = cities_[solution[(index + 1) % numCities]]; - double deltaX = x1 - x2; - double deltaY = y1 - y2; - totalDistance += std::sqrt(deltaX * deltaX + deltaY * deltaY); - } - - return totalDistance; -} - -inline auto TSP::neighbor(const std::vector& solution) - -> std::vector { - std::vector newSolution = solution; - std::random_device randomDevice; - std::mt19937 generator(randomDevice()); - std::uniform_int_distribution distribution( - 0, static_cast(solution.size()) - 1); - int index1 = distribution(generator); - int index2 = distribution(generator); - std::swap(newSolution[index1], newSolution[index2]); - return newSolution; -} - -inline auto TSP::randomSolution() const -> std::vector { - std::vector solution(cities_.size()); - std::iota(solution.begin(), solution.end(), 0); - std::random_device randomDevice; - std::mt19937 generator(randomDevice()); - std::ranges::shuffle(solution, generator); - return solution; -} - -#endif // ATOM_ALGORITHM_ANNEALING_HPP diff --git a/src/atom/algorithm/base.cpp b/src/atom/algorithm/base.cpp deleted file mode 100644 index 58889c40..00000000 --- a/src/atom/algorithm/base.cpp +++ /dev/null @@ -1,723 +0,0 @@ -/* - * base.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-4-5 - -Description: A collection of algorithms for C++ - -**************************************************/ - -#include "base.hpp" - -#include -#include - -#include "atom/error/exception.hpp" - -#ifdef _WIN32 -#include -#else -#include -#endif - -#ifdef USE_SIMD -#if defined(__AVX2__) || defined(USE_AVX) -#include -#define SIMD_WIDTH 32 -#elif defined(__SSE4_1__) || defined(USE_SSE) -#include -#define SIMD_WIDTH 16 -#elif defined(__ARM_NEON) || defined(USE_NEON) -#include -#define SIMD_WIDTH 16 -#endif -#endif - -#if USE_OPENCL -#include -constexpr bool HAS_OPEN_CL = true; -#else -constexpr bool HAS_OPEN_CL = false; -#endif - -namespace atom::algorithm { -namespace detail { -#if USE_OPENCL -const char* base64EncodeKernelSource = R"( - __kernel void base64EncodeKernel(__global const uchar* input, __global char* output, int size) { - int i = get_global_id(0); - if (i < size / 3) { - uchar3 in = vload3(i, input); - output[i * 4 + 0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(in.s0 >> 2) & 0x3F]; - output[i * 4 + 1] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[((in.s0 & 0x03) << 4) | ((in.s1 >> 4) & 0x0F)]; - output[i * 4 + 2] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[((in.s1 & 0x0F) << 2) | ((in.s2 >> 6) & 0x03)]; - output[i * 4 + 3] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[in.s2 & 0x3F]; - } - } - )"; - -const char* base64DecodeKernelSource = R"( - __kernel void base64DecodeKernel(__global const char* input, __global uchar* output, int size) { - int i = get_global_id(0); - if (i < size / 4) { - char4 in = vload4(i, input); - output[i * 3 + 0] = (uchar)((in.s0 << 2) | ((in.s1 >> 4) & 0x03)); - output[i * 3 + 1] = (uchar)(((in.s1 & 0x0F) << 4) | ((in.s2 >> 2) & 0x0F)); - output[i * 3 + 2] = (uchar)(((in.s2 & 0x03) << 6) | (in.s3 & 0x3F)); - } - } - )"; - -// OpenCL kernel for XOR encryption/decryption -const char* xorKernelSource = R"( - __kernel void xorKernel(__global const char* input, __global char* output, uchar key, int size) { - int i = get_global_id(0); - if (i < size) { - output[i] = input[i] ^ key; - } - } - )"; - -// OpenCL setup and context management -cl_context context; -cl_command_queue queue; -cl_program program; -cl_kernel base64EncodeKernel, base64DecodeKernel, xorKernel; - -void initializeOpenCL() { - // Initialize OpenCL context, compile the kernels, etc. - // Error handling omitted for brevity - cl_platform_id platform; - cl_device_id device; - clGetPlatformIDs(1, &platform, nullptr); - clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &device, nullptr); - context = clCreateContext(nullptr, 1, &device, nullptr, nullptr, nullptr); - queue = clCreateCommandQueue(context, device, 0, nullptr); - - // Compile the kernels - const char* sources[] = {base64EncodeKernelSource, base64DecodeKernelSource, - xorKernelSource}; - program = clCreateProgramWithSource(context, 3, sources, nullptr, nullptr); - clBuildProgram(program, 1, &device, nullptr, nullptr, nullptr); - - base64EncodeKernel = clCreateKernel(program, "base64EncodeKernel", nullptr); - base64DecodeKernel = clCreateKernel(program, "base64DecodeKernel", nullptr); - xorKernel = clCreateKernel(program, "xorKernel", nullptr); -} - -void cleanupOpenCL() { - // Cleanup OpenCL resources - clReleaseKernel(base64EncodeKernel); - clReleaseKernel(base64DecodeKernel); - clReleaseKernel(xorKernel); - clReleaseProgram(program); - clReleaseCommandQueue(queue); - clReleaseContext(context); -} - -void base64EncodeOpenCL(const unsigned char* input, char* output, size_t size) { - cl_mem inputBuffer = - clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, size, - (void*)input, nullptr); - cl_mem outputBuffer = clCreateBuffer(context, CL_MEM_WRITE_ONLY, - (size + 2) / 3 * 4, nullptr, nullptr); - - clSetKernelArg(base64EncodeKernel, 0, sizeof(cl_mem), &inputBuffer); - clSetKernelArg(base64EncodeKernel, 1, sizeof(cl_mem), &outputBuffer); - clSetKernelArg(base64EncodeKernel, 2, sizeof(int), &size); - - size_t globalWorkSize = (size + 2) / 3; - clEnqueueNDRangeKernel(queue, base64EncodeKernel, 1, nullptr, - &globalWorkSize, nullptr, 0, nullptr, nullptr); - - clEnqueueReadBuffer(queue, outputBuffer, CL_TRUE, 0, (size + 2) / 3 * 4, - output, 0, nullptr, nullptr); - - clReleaseMemObject(inputBuffer); - clReleaseMemObject(outputBuffer); -} - -void base64DecodeOpenCL(const char* input, unsigned char* output, size_t size) { - cl_mem inputBuffer = - clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, size, - (void*)input, nullptr); - cl_mem outputBuffer = clCreateBuffer(context, CL_MEM_WRITE_ONLY, - size / 4 * 3, nullptr, nullptr); - - clSetKernelArg(base64DecodeKernel, 0, sizeof(cl_mem), &inputBuffer); - clSetKernelArg(base64DecodeKernel, 1, sizeof(cl_mem), &outputBuffer); - clSetKernelArg(base64DecodeKernel, 2, sizeof(int), &size); - - size_t globalWorkSize = size / 4; - clEnqueueNDRangeKernel(queue, base64DecodeKernel, 1, nullptr, - &globalWorkSize, nullptr, 0, nullptr, nullptr); - - clEnqueueReadBuffer(queue, outputBuffer, CL_TRUE, 0, size / 4 * 3, output, - 0, nullptr, nullptr); - - clReleaseMemObject(inputBuffer); - clReleaseMemObject(outputBuffer); -} - -void xorEncryptOpenCL(const char* input, char* output, uint8_t key, - size_t size) { - cl_mem inputBuffer = - clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, size, - (void*)input, nullptr); - cl_mem outputBuffer = - clCreateBuffer(context, CL_MEM_WRITE_ONLY, size, nullptr, nullptr); - - clSetKernelArg(xorKernel, 0, sizeof(cl_mem), &inputBuffer); - clSetKernelArg(xorKernel, 1, sizeof(cl_mem), &outputBuffer); - clSetKernelArg(xorKernel, 2, sizeof(uint8_t), &key); - clSetKernelArg(xorKernel, 3, sizeof(int), &size); - - size_t globalWorkSize = size; - clEnqueueNDRangeKernel(queue, xorKernel, 1, nullptr, &globalWorkSize, - nullptr, 0, nullptr, nullptr); - - clEnqueueReadBuffer(queue, outputBuffer, CL_TRUE, 0, size, output, 0, - nullptr, nullptr); - - clReleaseMemObject(inputBuffer); - clReleaseMemObject(outputBuffer); -} -#endif -template -void base64Encode(InputIt begin, InputIt end, OutputIt dest) { - std::array charArray3{}; - std::array charArray4{}; - - size_t i = 0; - auto it = begin; - -#ifdef SIMD_AVAILABLE - // SIMD优化部分 - constexpr size_t simdSize = 16; // 处理16字节的输入 - std::array inputBuffer{}; - std::array outputBuffer{}; - - while (std::distance(it, end) >= simdSize) { - std::copy_n(it, simdSize, inputBuffer.begin()); - -#if defined(__x86_64__) || defined(_M_X64) - // x86 SIMD实现 - __m128i input = _mm_loadu_si128( - reinterpret_cast(inputBuffer.data())); - __m128i mask = _mm_set1_epi32(0x3F); - - __m128i result1 = _mm_srli_epi32(input, 2); - __m128i result2 = _mm_and_si128(_mm_slli_epi32(input, 4), mask); - __m128i result3 = _mm_and_si128(_mm_slli_epi32(input, 2), mask); - __m128i result4 = _mm_and_si128(input, mask); - - // 查表并存储结果 - for (int j = 0; j < 16; j += 4) { - outputBuffer[j] = BASE64_CHARS[_mm_extract_epi8(result1, j)]; - outputBuffer[j + 1] = - BASE64_CHARS[_mm_extract_epi8(result2, j + 1)]; - outputBuffer[j + 2] = - BASE64_CHARS[_mm_extract_epi8(result3, j + 2)]; - outputBuffer[j + 3] = - BASE64_CHARS[_mm_extract_epi8(result4, j + 3)]; - } -#elif defined(__ARM_NEON) - // ARM NEON实现 - uint8x16_t input = vld1q_u8(inputBuffer.data()); - uint8x16_t mask = vdupq_n_u8(0x3F); - - uint8x16_t result1 = vshrq_n_u8(input, 2); - uint8x16_t result2 = vandq_u8(vshlq_n_u8(input, 4), mask); - uint8x16_t result3 = vandq_u8(vshlq_n_u8(input, 2), mask); - uint8x16_t result4 = vandq_u8(input, mask); - - // 查表并存储结果 - for (int j = 0; j < 16; j += 4) { - outputBuffer[j] = BASE64_CHARS[vgetq_lane_u8(result1, j)]; - outputBuffer[j + 1] = BASE64_CHARS[vgetq_lane_u8(result2, j + 1)]; - outputBuffer[j + 2] = BASE64_CHARS[vgetq_lane_u8(result3, j + 2)]; - outputBuffer[j + 3] = BASE64_CHARS[vgetq_lane_u8(result4, j + 3)]; - } -#endif - - std::copy_n(outputBuffer.begin(), (simdSize / 3) * 4, dest); - std::advance(dest, (simdSize / 3) * 4); - std::advance(it, simdSize); - i += simdSize; - } -#endif - - // 处理剩余的字节(原始实现) - for (; it != end; ++it, ++i) { - charArray3[i % 3] = static_cast(*it); - if (i % 3 == 2) { - charArray4[0] = (charArray3[0] & 0xfc) >> 2; - charArray4[1] = - ((charArray3[0] & 0x03) << 4) + ((charArray3[1] & 0xf0) >> 4); - charArray4[2] = - ((charArray3[1] & 0x0f) << 2) + ((charArray3[2] & 0xc0) >> 6); - charArray4[3] = charArray3[2] & 0x3f; - - for (int j = 0; j < 4; ++j) { - *dest++ = BASE64_CHARS[charArray4[j]]; - } - } - } - - if (i % 3 != 0) { - for (size_t j = i % 3; j < 3; ++j) { - charArray3[j] = '\0'; - } - - charArray4[0] = (charArray3[0] & 0xfc) >> 2; - charArray4[1] = - ((charArray3[0] & 0x03) << 4) + ((charArray3[1] & 0xf0) >> 4); - charArray4[2] = - ((charArray3[1] & 0x0f) << 2) + ((charArray3[2] & 0xc0) >> 6); - charArray4[3] = charArray3[2] & 0x3f; - - for (size_t j = 0; j < i % 3 + 1; ++j) { - *dest++ = BASE64_CHARS[charArray4[j]]; - } - - while (i++ % 3 != 0) { - *dest++ = '='; - } - } -} - -std::array createReverseLookupTable() { - std::array table{}; - for (int i = 0; i < 64; ++i) { - table[static_cast(BASE64_CHARS[i])] = i; - } - return table; -} - -const auto REVERSE_LOOKUP = createReverseLookupTable(); - -template -void base64Decode(InputIt begin, InputIt end, OutputIt dest) { - std::array charArray4{}; - std::array charArray3{}; - - size_t i = 0; - auto it = begin; - -#ifdef SIMD_AVAILABLE - // SIMD优化部分 - constexpr size_t simdSize = 16; // 处理16字节的输入 - std::array inputBuffer{}; - std::array outputBuffer{}; - - while (std::distance(it, end) >= simdSize && - *std::next(it, simdSize - 1) != '=') { - std::copy_n(it, simdSize, inputBuffer.begin()); - -#if defined(__x86_64__) || defined(_M_X64) - // x86 SIMD实现 - __m128i input = _mm_loadu_si128( - reinterpret_cast(inputBuffer.data())); - __m128i lookup = _mm_setr_epi8( - REVERSE_LOOKUP[inputBuffer[0]], REVERSE_LOOKUP[inputBuffer[1]], - REVERSE_LOOKUP[inputBuffer[2]], REVERSE_LOOKUP[inputBuffer[3]], - REVERSE_LOOKUP[inputBuffer[4]], REVERSE_LOOKUP[inputBuffer[5]], - REVERSE_LOOKUP[inputBuffer[6]], REVERSE_LOOKUP[inputBuffer[7]], - REVERSE_LOOKUP[inputBuffer[8]], REVERSE_LOOKUP[inputBuffer[9]], - REVERSE_LOOKUP[inputBuffer[10]], REVERSE_LOOKUP[inputBuffer[11]], - REVERSE_LOOKUP[inputBuffer[12]], REVERSE_LOOKUP[inputBuffer[13]], - REVERSE_LOOKUP[inputBuffer[14]], REVERSE_LOOKUP[inputBuffer[15]]); - - __m128i merged = _mm_or_si128( - _mm_or_si128(_mm_slli_epi32(lookup, 18), - _mm_slli_epi32(_mm_and_si128(_mm_srli_epi32(lookup, 8), - _mm_set1_epi32(0x3F)), - 12)), - _mm_or_si128( - _mm_slli_epi32(_mm_and_si128(_mm_srli_epi32(lookup, 16), - _mm_set1_epi32(0x3F)), - 6), - _mm_and_si128(_mm_srli_epi32(lookup, 24), - _mm_set1_epi32(0x3F)))); - - __m128i result = - _mm_shuffle_epi8(merged, _mm_setr_epi8(2, 1, 0, 6, 5, 4, 10, 9, 8, - 14, 13, 12, -1, -1, -1, -1)); - _mm_storeu_si128(reinterpret_cast<__m128i*>(outputBuffer.data()), - result); - -#elif defined(__ARM_NEON) - // ARM NEON实现 - uint8x16_t input = vld1q_u8(inputBuffer.data()); - uint8x16_t lookup = vcreate_u8(0); - for (int j = 0; j < 16; ++j) { - lookup = vsetq_lane_u8(REVERSE_LOOKUP[inputBuffer[j]], lookup, j); - } - - uint32x4_t merged = vorrq_u32( - vorrq_u32( - vshlq_n_u32(vreinterpretq_u32_u8(lookup), 18), - vshlq_n_u32( - vandq_u32(vshrq_n_u32(vreinterpretq_u32_u8(lookup), 8), - vdupq_n_u32(0x3F)), - 12)), - vorrq_u32( - vshlq_n_u32( - vandq_u32(vshrq_n_u32(vreinterpretq_u32_u8(lookup), 16), - vdupq_n_u32(0x3F)), - 6), - vandq_u32(vshrq_n_u32(vreinterpretq_u32_u8(lookup), 24), - vdupq_n_u32(0x3F)))); - - uint8x16_t result = vqtbl1q_u8(vreinterpretq_u8_u32(merged), - vld1q_u8({2, 1, 0, 6, 5, 4, 10, 9, 8, 14, - 13, 12, 255, 255, 255, 255})); - vst1q_u8(outputBuffer.data(), result); -#endif - - std::copy_n(outputBuffer.begin(), (simdSize / 4) * 3, dest); - std::advance(dest, (simdSize / 4) * 3); - std::advance(it, simdSize); - } -#endif - - for (; it != end && *it != '='; ++it) { - charArray4[i++] = REVERSE_LOOKUP[static_cast(*it)]; - if (i == 4) { - charArray3[0] = - (charArray4[0] << 2) + ((charArray4[1] & 0x30) >> 4); - charArray3[1] = - ((charArray4[1] & 0xf) << 4) + ((charArray4[2] & 0x3c) >> 2); - charArray3[2] = ((charArray4[2] & 0x3) << 6) + charArray4[3]; - - for (i = 0; i < 3; ++i) { - *dest++ = charArray3[i]; - } - i = 0; - } - } - - if (i != 0) { - for (size_t j = i; j < 4; ++j) { - charArray4[j] = 0; - } - - charArray3[0] = (charArray4[0] << 2) + ((charArray4[1] & 0x30) >> 4); - charArray3[1] = - ((charArray4[1] & 0xf) << 4) + ((charArray4[2] & 0x3c) >> 2); - - for (size_t j = 0; j < i - 1; ++j) { - *dest++ = charArray3[j]; - } - } -} -} // namespace detail - -auto base64Encode(std::string_view bytes_to_encode) -> std::string { - std::string ret; - ret.reserve((bytes_to_encode.size() + 2) / 3 * 4); - - if (HAS_OPEN_CL) { -#if USE_OPENCL - detail::base64EncodeOpenCL( - reinterpret_cast(bytes_to_encode.data()), - ret.data(), bytes_to_encode.size()); -#endif - } else { - detail::base64Encode(bytes_to_encode.begin(), bytes_to_encode.end(), - std::back_inserter(ret)); - } - - return ret; -} - -auto base64Decode(std::string_view encoded_string) -> std::string { - std::string ret; - ret.reserve(encoded_string.size() / 4 * 3); - - if (HAS_OPEN_CL) { -#if USE_OPENCL - detail::base64DecodeOpenCL(encoded_string.data(), - reinterpret_cast(ret.data()), - encoded_string.size()); -#endif - } else { - detail::base64Decode(encoded_string.begin(), encoded_string.end(), - std::back_inserter(ret)); - } - - return ret; -} - -auto fbase64Encode(std::span input) -> std::string { - std::string output; - output.reserve((input.size() + 2) / 3 * 4); - - if (HAS_OPEN_CL) { -#if USE_OPENCL - detail::base64EncodeOpenCL(input.data(), output.data(), input.size()); -#endif - } else { - detail::base64Encode(input.begin(), input.end(), - std::back_inserter(output)); - } - - return output; -} - -auto fbase64Decode(std::span input) -> std::vector { - if (input.size() % 4 != 0) { - THROW_INVALID_ARGUMENT("Invalid base64 input length"); - } - - std::vector output; - output.reserve(input.size() / 4 * 3); - - if (HAS_OPEN_CL) { -#if USE_OPENCL - detail::base64DecodeOpenCL(input.data(), output.data(), input.size()); -#endif - } else { - detail::base64Decode(input.begin(), input.end(), - std::back_inserter(output)); - } - - return output; -} - -auto xorEncrypt(std::string_view plaintext, uint8_t key) -> std::string { - std::string ciphertext; - ciphertext.reserve(plaintext.size()); - - if (HAS_OPEN_CL) { -#if USE_OPENCL - detail::xorEncryptOpenCL(plaintext.data(), ciphertext.data(), key, - plaintext.size()); -#endif - } else { - for (char c : plaintext) { - ciphertext.push_back( - static_cast(static_cast(c) ^ key)); - } - } - - return ciphertext; -} - -auto xorDecrypt(std::string_view ciphertext, uint8_t key) -> std::string { - return xorEncrypt(ciphertext, key); -} - -constexpr std::string_view BASE32_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"; -constexpr int BITS_PER_BYTE = 8; -constexpr int BITS_PER_BASE32_CHAR = 5; -constexpr uint32_t BASE32_MASK = 0x1F; -constexpr uint32_t BYTE_MASK = 0xFF; - -#ifdef USE_MP -#pragma omp parallel for -#endif -auto encodeBase32(const std::vector& data) -> std::string { - std::string encoded; - size_t bitCount = 0; - uint32_t buffer = 0; - -#ifdef USE_SIMD - size_t simdChunkSize = SIMD_WIDTH / BITS_PER_BYTE; // 每个SIMD块的字节数 - - for (size_t i = 0; i + simdChunkSize <= data.size(); i += simdChunkSize) { -#if defined(USE_AVX) || defined(__AVX2__) - __m256i simdData = - _mm256_loadu_si256(reinterpret_cast(&data[i])); - uint32_t simdVal = _mm256_extract_epi32(simdData, 0); // 提取低32位 -#elif defined(USE_SSE) || defined(__SSE4_1__) - __m128i simdData = - _mm_loadu_si128(reinterpret_cast(&data[i])); - uint32_t simdVal = _mm_extract_epi32(simdData, 0); // 提取低32位 -#elif defined(USE_NEON) || defined(__ARM_NEON) - uint8x16_t simdData = vld1q_u8(&data[i]); - uint32_t simdVal = vgetq_lane_u32(vreinterpretq_u32_u8(simdData), 0); -#endif - - for (int j = 0; j < 5; ++j) { - uint8_t index = - (simdVal >> (27 - j * BITS_PER_BASE32_CHAR)) & BASE32_MASK; - encoded += BASE32_ALPHABET[index]; - } - } - - for (size_t i = (data.size() / simdChunkSize) * simdChunkSize; - i < data.size(); ++i) { - buffer = (buffer << BITS_PER_BYTE) | data[i]; - bitCount += BITS_PER_BYTE; - while (bitCount >= BITS_PER_BASE32_CHAR) { - bitCount -= BITS_PER_BASE32_CHAR; - encoded += BASE32_ALPHABET[(buffer >> bitCount) & BASE32_MASK]; - } - } -#else - // 非SIMD编码流程 -#ifdef USE_MP -#pragma omp parallel for -#endif - for (uint8_t byte : data) { - buffer = (buffer << BITS_PER_BYTE) | byte; - bitCount += BITS_PER_BYTE; - while (bitCount >= BITS_PER_BASE32_CHAR) { - bitCount -= BITS_PER_BASE32_CHAR; - encoded += BASE32_ALPHABET[(buffer >> bitCount) & BASE32_MASK]; - } - } -#endif - - if (bitCount > 0) { - encoded += - BASE32_ALPHABET[(buffer << (BITS_PER_BASE32_CHAR - bitCount)) & - BASE32_MASK]; - } - - while (encoded.size() % 8 != 0) { - encoded += '='; - } - - return encoded; -} - -// 解码函数 -#ifdef USE_MP -#pragma omp parallel for -#endif -auto decodeBase32(const std::string& encoded) -> std::vector { - std::vector decoded; - size_t bitCount = 0; - uint32_t buffer = 0; - -#ifdef USE_SIMD - size_t simdChunkSize = SIMD_WIDTH / BITS_PER_BYTE; - - for (size_t i = 0; i + simdChunkSize <= encoded.size(); - i += simdChunkSize) { -#if defined(USE_AVX) || defined(__AVX2__) - __m256i simdEncoded = - _mm256_loadu_si256(reinterpret_cast(&encoded[i])); -#elif defined(USE_SSE) || defined(__SSE4_1__) - __m128i simdEncoded = - _mm_loadu_si128(reinterpret_cast(&encoded[i])); -#elif defined(USE_NEON) || defined(__ARM_NEON) - uint8x16_t simdEncoded = - vld1q_u8(reinterpret_cast(&encoded[i])); -#endif - - for (int j = 0; j < simdChunkSize; ++j) { - int idx = BASE32_ALPHABET.find(encoded[i + j]); - if (idx == std::string::npos) { - throw std::invalid_argument("无效字符在Base32编码中"); - } - buffer = (buffer << BITS_PER_BASE32_CHAR) | idx; - bitCount += BITS_PER_BASE32_CHAR; - if (bitCount >= BITS_PER_BYTE) { - bitCount -= BITS_PER_BYTE; - decoded.push_back( - static_cast((buffer >> bitCount) & BYTE_MASK)); - } - } - } -#else - for (char character : encoded) { - if (character == '=') { - break; - } - auto index = BASE32_ALPHABET.find(character); - if (index == std::string::npos) { - THROW_INVALID_ARGUMENT("Invalid character in Base32 encoding"); - } - - buffer = (buffer << BITS_PER_BASE32_CHAR) | index; - bitCount += BITS_PER_BASE32_CHAR; - if (bitCount >= BITS_PER_BYTE) { - bitCount -= BITS_PER_BYTE; - decoded.push_back( - static_cast((buffer >> bitCount) & BYTE_MASK)); - } - } -#endif - - return decoded; -} - -#ifdef USE_CL -// 读取OpenCL内核文件 -auto readKernelSource(const std::string& filename) -> std::string { - std::ifstream file(filename); - if (!file.is_open()) { - throw std::runtime_error("无法打开内核文件"); - } - std::stringstream buffer; - buffer << file.rdbuf(); - return buffer.str(); -} - -// 使用OpenCL进行Base32编码 -auto encodeBase32CL(const std::vector& data) -> std::string { - // OpenCL平台和设备初始化 - std::vector platforms; - cl::Platform::get(&platforms); - if (platforms.empty()) { - throw std::runtime_error("没有可用的OpenCL平台"); - } - - // 选择第一个平台和设备 - cl::Platform platform = platforms[0]; - std::vector devices; - platform.getDevices(CL_DEVICE_TYPE_GPU, &devices); - if (devices.empty()) { - throw std::runtime_error("没有可用的GPU设备"); - } - cl::Device device = devices[0]; - - // 创建OpenCL上下文和命令队列 - cl::Context context(device); - cl::CommandQueue queue(context, device); - - // 读取内核源代码 - std::string kernelSource = readKernelSource("base32_encode_kernel.cl"); - cl::Program::Sources sources(1, std::make_pair(kernelSource.c_str(), kernelSource.size())); - - // 构建程序 - cl::Program program(context, sources); - if (program.build({device}) != CL_SUCCESS) { - throw std::runtime_error("内核程序构建失败"); - } - - // 分配输入和输出缓冲区 - size_t dataSize = data.size(); - size_t encodedSize = ((dataSize * 8) + 4) / 5; // Base32输出大小 - - cl::Buffer inputBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, dataSize, (void*)data.data()); - cl::Buffer outputBuffer(context, CL_MEM_WRITE_ONLY, encodedSize); - - // 设置内核参数 - cl::Kernel kernel(program, "base32_encode"); - kernel.setArg(0, inputBuffer); - kernel.setArg(1, outputBuffer); - kernel.setArg(2, static_cast(dataSize)); - - // 执行内核 - cl::NDRange global(dataSize); // 数据大小定义全局工作量 - queue.enqueueNDRangeKernel(kernel, cl::NullRange, global, cl::NullRange); - queue.finish(); - - // 读取结果 - std::vector encoded(encodedSize); - queue.enqueueReadBuffer(outputBuffer, CL_TRUE, 0, encodedSize, encoded.data()); - - // 将编码结果转成字符串 - return std::string(encoded.begin(), encoded.end()); -} -#endif -} // namespace atom::algorithm diff --git a/src/atom/algorithm/base.hpp b/src/atom/algorithm/base.hpp deleted file mode 100644 index 3985d93e..00000000 --- a/src/atom/algorithm/base.hpp +++ /dev/null @@ -1,207 +0,0 @@ -/* - * base.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-4-5 - -Description: A collection of algorithms for C++ - -**************************************************/ - -#ifndef ATOM_ALGORITHM_BASE16_HPP -#define ATOM_ALGORITHM_BASE16_HPP - -#include -#include -#include -#include - -#include "atom/type/static_string.hpp" - -#include "atom/macro.hpp" - -namespace atom::algorithm { -namespace detail { -constexpr std::string_view BASE64_CHARS = - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz" - "0123456789+/"; - -constexpr size_t BASE64_CHAR_COUNT = 64; -constexpr uint8_t MASK_6_BITS = 0x3F; -constexpr uint8_t MASK_4_BITS = 0x0F; -constexpr uint8_t MASK_2_BITS = 0x03; -constexpr uint8_t MASK_8_BITS = 0xFC; -constexpr uint8_t MASK_12_BITS = 0xF0; -constexpr uint8_t MASK_14_BITS = 0xC0; -constexpr uint8_t MASK_16_BITS = 0x30; -constexpr uint8_t MASK_18_BITS = 0x3C; -} // namespace detail - -/** - * @brief Base64编码函数 - * - * @param bytes_to_encode 待编码数据 - * @return std::string 编码后的字符串 - */ -[[nodiscard("The result of base64Encode is not used.")]] auto base64Encode( - std::string_view bytes_to_encode) -> std::string; - -/** - * @brief Base64解码函数 - * - * @param encoded_string 待解码字符串 - * @return std::vector 解码后的数据 - */ -[[nodiscard("The result of base64Decode is not used.")]] auto base64Decode( - std::string_view encoded_string) -> std::string; - -/** - * @brief Faster Base64 Encode - * - * @param input - * @return std::string - */ -auto fbase64Encode(std::span input) -> std::string; - -/** - * @brief Faster Base64 Decode - * - * @param input - * @return std::vector - */ -auto fbase64Decode(std::span input) -> std::vector; - -/** - * @brief Encrypts a string using the XOR algorithm. - * - * @param data The string to be encrypted. - * @param key The encryption key. - * @return The encrypted string. - */ -[[nodiscard("The result of xorEncrypt is not used.")]] auto xorEncrypt( - std::string_view plaintext, uint8_t key) -> std::string; - -/** - * @brief Decrypts a string using the XOR algorithm. - * - * @param data The string to be decrypted. - * @param key The decryption key. - * @return The decrypted string. - */ -[[nodiscard("The result of xorDecrypt is not used.")]] auto xorDecrypt( - std::string_view ciphertext, uint8_t key) -> std::string; - -ATOM_INLINE constexpr auto findBase64Char(char character) -> size_t { - for (size_t index = 0; index < detail::BASE64_CHAR_COUNT; ++index) { - if (detail::BASE64_CHARS[index] == character) { - return index; - } - } - return detail::BASE64_CHAR_COUNT; // Indicates not found, should not happen - // with valid input -} - -template -constexpr auto cbase64Encode(const StaticString &input) { - constexpr size_t ENCODED_SIZE = ((N + 2) / 3) * 4; - StaticString ret; - - auto addCharacter = [&](char character) constexpr { ret += character; }; - - std::array charArray3{}; - std::array charArray4{}; - - size_t index = 0; - for (auto it = input.begin(); it != input.end(); ++it, ++index) { - charArray3[index % 3] = static_cast(*it); - if (index % 3 == 2) { - charArray4[0] = (charArray3[0] & detail::MASK_8_BITS) >> 2; - charArray4[1] = ((charArray3[0] & detail::MASK_2_BITS) << 4) + - ((charArray3[1] & detail::MASK_12_BITS) >> 4); - charArray4[2] = ((charArray3[1] & detail::MASK_4_BITS) << 2) + - ((charArray3[2] & detail::MASK_14_BITS) >> 6); - charArray4[3] = charArray3[2] & detail::MASK_6_BITS; - - for (int j = 0; j < 4; ++j) { - addCharacter(detail::BASE64_CHARS[charArray4[j]]); - } - } - } - - if (index % 3 != 0) { - for (size_t j = index % 3; j < 3; ++j) { - charArray3[j] = '\0'; - } - - charArray4[0] = (charArray3[0] & detail::MASK_8_BITS) >> 2; - charArray4[1] = ((charArray3[0] & detail::MASK_2_BITS) << 4) + - ((charArray3[1] & detail::MASK_12_BITS) >> 4); - charArray4[2] = ((charArray3[1] & detail::MASK_4_BITS) << 2) + - ((charArray3[2] & detail::MASK_14_BITS) >> 6); - charArray4[3] = charArray3[2] & detail::MASK_6_BITS; - - for (size_t j = 0; j < index % 3 + 1; ++j) { - addCharacter(detail::BASE64_CHARS[charArray4[j]]); - } - - while (index++ % 3 != 0) { - addCharacter('='); - } - } - - return ret; -} - -template -constexpr auto cbase64Decode(const StaticString &input) { - constexpr size_t DECODED_SIZE = (N / 4) * 3; - StaticString ret; - - auto addCharacter = [&](char character) constexpr { ret += character; }; - - std::array charArray4{}; - std::array charArray3{}; - - size_t index = 0; - for (auto it = input.begin(); it != input.end() && *it != '='; ++it) { - charArray4[index++] = static_cast(findBase64Char(*it)); - if (index == 4) { - charArray3[0] = (charArray4[0] << 2) + - ((charArray4[1] & detail::MASK_16_BITS) >> 4); - charArray3[1] = ((charArray4[1] & detail::MASK_4_BITS) << 4) + - ((charArray4[2] & detail::MASK_18_BITS) >> 2); - charArray3[2] = - ((charArray4[2] & detail::MASK_2_BITS) << 6) + charArray4[3]; - - for (index = 0; index < 3; ++index) { - addCharacter(static_cast(charArray3[index])); - } - index = 0; - } - } - - if (index != 0) { - for (size_t j = index; j < 4; ++j) { - charArray4[j] = 0; - } - - charArray3[0] = (charArray4[0] << 2) + - ((charArray4[1] & detail::MASK_16_BITS) >> 4); - charArray3[1] = ((charArray4[1] & detail::MASK_4_BITS) << 4) + - ((charArray4[2] & detail::MASK_18_BITS) >> 2); - - for (size_t j = 0; j < index - 1; ++j) { - addCharacter(static_cast(charArray3[j])); - } - } - - return ret; -} -} // namespace atom::algorithm - -#endif diff --git a/src/atom/algorithm/bignumber.cpp b/src/atom/algorithm/bignumber.cpp deleted file mode 100644 index 2cd2dd51..00000000 --- a/src/atom/algorithm/bignumber.cpp +++ /dev/null @@ -1,194 +0,0 @@ -#include "bignumber.hpp" - -#include - -#include "atom/log/loguru.hpp" - -namespace atom::algorithm { -auto BigNumber::add(const BigNumber& other) const -> BigNumber { - if (isNegative() && other.isNegative()) { - return negate().add(other.negate()).negate(); - } - if (isNegative()) { - return other.subtract(abs()); - } - if (other.isNegative()) { - return subtract(other.abs()); - } - - std::string result; - int carry = 0; - int i = numberString_.length() - 1; - int j = other.numberString_.length() - 1; - - while (i >= 0 || j >= 0 || (carry != 0)) { - int digit1 = (i >= 0) ? numberString_[i--] - '0' : 0; - int digit2 = (j >= 0) ? other.numberString_[j--] - '0' : 0; - int sum = digit1 + digit2 + carry; - result.insert(result.begin(), '0' + (sum % 10)); - carry = sum / 10; - } - - return {result}; -} - -auto BigNumber::subtract(const BigNumber& other) const -> BigNumber { - if (isNegative() && other.isNegative()) { - return other.negate().subtract(negate()); - } - if (isNegative()) { - return negate().add(other).negate(); - } - if (other.isNegative()) { - return add(other.negate()); - } - if (*this < other) { - return other.subtract(*this).negate(); - } - - std::string result; - int carry = 0; - int i = numberString_.length() - 1; - int j = other.numberString_.length() - 1; - - while (i >= 0 || j >= 0) { - int digit1 = (i >= 0) ? numberString_[i--] - '0' : 0; - int digit2 = (j >= 0) ? other.numberString_[j--] - '0' : 0; - int diff = digit1 - digit2 - carry; - if (diff < 0) { - diff += 10; - carry = 1; - } else { - carry = 0; - } - result.insert(result.begin(), '0' + diff); - } - - return BigNumber(result).trimLeadingZeros(); -} - -auto BigNumber::multiply(const BigNumber& other) const -> BigNumber { - if (*this == 0 || other == 0) { - return {"0"}; - } - - bool resultNegative = isNegative() != other.isNegative(); - BigNumber b1 = abs(); - BigNumber b2 = other.abs(); - - std::vector result(b1.numberString_.size() + b2.numberString_.size(), - 0); - - for (int i = b1.numberString_.size() - 1; i >= 0; --i) { - for (int j = b2.numberString_.size() - 1; j >= 0; --j) { - int mul = (b1.numberString_[i] - '0') * (b2.numberString_[j] - '0'); - int sum = mul + result[i + j + 1]; - - result[i + j + 1] = sum % 10; - result[i + j] += sum / 10; - } - } - - std::string resultStr; - for (int num : result) { - if (!resultStr.empty() || num != 0) { - resultStr.push_back(num + '0'); - } - } - - if (resultStr.empty()) { - resultStr = "0"; - } - - if (resultNegative && resultStr != "0") { - resultStr.insert(resultStr.begin(), '-'); - } - - return {resultStr}; -} - -auto BigNumber::divide(const BigNumber& other) const -> BigNumber { - if (other == 0) { - throw std::invalid_argument("Division by zero"); - } - - bool resultNegative = isNegative() != other.isNegative(); - BigNumber dividend = abs(); - BigNumber divisor = other.abs(); - BigNumber quotient("0"); - BigNumber current("0"); - - for (char i : dividend.numberString_) { - current = current * 10 + BigNumber(std::string(1, i)); - int count = 0; - while (current >= divisor) { - current = current - divisor; - ++count; - } - quotient = quotient * 10 + BigNumber(std::to_string(count)); - } - - quotient = quotient.trimLeadingZeros(); - if (resultNegative && quotient != 0) { - quotient = quotient.negate(); - } - - return quotient; -} - -auto BigNumber::pow(int exponent) const -> BigNumber { - if (exponent < 0) { - LOG_F(ERROR, "Powers less than 0 are not supported"); - return {"0"}; - } - if (exponent == 0) { - return {"1"}; - } - if (exponent == 1) { - return *this; - } - BigNumber result = std::string("1"); - BigNumber base = *this; - while (exponent != 0) { - if ((exponent & 1) != 0) { - result = result.multiply(base); - } - exponent >>= 1; - base = base.multiply(base); - } - return result; -} - -auto BigNumber::trimLeadingZeros() const -> BigNumber { - BigNumber b = *this; - bool negative = b.isNegative(); - if (negative) { - b.numberString_.erase(0, 1); // Remove the negative sign temporarily - } - size_t nonZeroPos = b.numberString_.find_first_not_of('0'); - if (nonZeroPos != std::string::npos) { - b.numberString_ = b.numberString_.substr(nonZeroPos); - } else { - b.numberString_ = "0"; - } - if (negative && b.numberString_ != "0") { - b.numberString_.insert(b.numberString_.begin(), '-'); - } - return b; -} - -auto operator>(const BigNumber& b1, const BigNumber& b2) -> bool { - if (b1.isNegative() || b2.isNegative()) { - if (b1.isNegative() && b2.isNegative()) { - return b2.abs() > b1.abs(); - } - return !b1.isNegative(); - } - BigNumber b1Trimmed = b1.trimLeadingZeros(); - BigNumber b2Trimmed = b2.trimLeadingZeros(); - if (b1Trimmed.numberString_.size() != b2Trimmed.numberString_.size()) { - return b1Trimmed.numberString_.size() > b2Trimmed.numberString_.size(); - } - return b1Trimmed.numberString_ > b2Trimmed.numberString_; -} -} // namespace atom::algorithm diff --git a/src/atom/algorithm/bignumber.hpp b/src/atom/algorithm/bignumber.hpp deleted file mode 100644 index c4d41ad9..00000000 --- a/src/atom/algorithm/bignumber.hpp +++ /dev/null @@ -1,380 +0,0 @@ -#ifndef ATOM_ALGORITHM_BIGNUMBER_HPP -#define ATOM_ALGORITHM_BIGNUMBER_HPP - -#include - -#include "atom/macro.hpp" - -namespace atom::algorithm { - -/** - * @class BigNumber - * @brief A class to represent and manipulate large numbers. - */ -class BigNumber { -public: - /** - * @brief Constructs a BigNumber from a string. - * @param number The string representation of the number. - */ - BigNumber(std::string number) : numberString_(std::move(number)) { - numberString_ = trimLeadingZeros().numberString_; - } - - /** - * @brief Constructs a BigNumber from a long long integer. - * @param number The long long integer representation of the number. - */ - BigNumber(long long number) : numberString_(std::to_string(number)) {} - - /** - * @brief Adds two BigNumber objects. - * @param other The other BigNumber to add. - * @return The result of the addition. - */ - ATOM_NODISCARD auto add(const BigNumber& other) const -> BigNumber; - - /** - * @brief Subtracts one BigNumber from another. - * @param other The other BigNumber to subtract. - * @return The result of the subtraction. - */ - ATOM_NODISCARD auto subtract(const BigNumber& other) const -> BigNumber; - - /** - * @brief Multiplies two BigNumber objects. - * @param other The other BigNumber to multiply. - * @return The result of the multiplication. - */ - ATOM_NODISCARD auto multiply(const BigNumber& other) const -> BigNumber; - - /** - * @brief Divides one BigNumber by another. - * @param other The other BigNumber to divide by. - * @return The result of the division. - */ - ATOM_NODISCARD auto divide(const BigNumber& other) const -> BigNumber; - - /** - * @brief Raises the BigNumber to the power of an exponent. - * @param exponent The exponent to raise the number to. - * @return The result of the exponentiation. - */ - ATOM_NODISCARD auto pow(int exponent) const -> BigNumber; - - /** - * @brief Gets the string representation of the BigNumber. - * @return The string representation of the number. - */ - ATOM_NODISCARD auto getString() const -> std::string { - return numberString_; - } - - /** - * @brief Sets the string representation of the BigNumber. - * @param newStr The new string representation of the number. - * @return A reference to the updated BigNumber. - */ - auto setString(const std::string& newStr) -> BigNumber { - numberString_ = newStr; - return *this; - } - - /** - * @brief Negates the BigNumber. - * @return The negated BigNumber. - */ - ATOM_NODISCARD auto negate() const -> BigNumber { - return numberString_[0] == '-' ? BigNumber(numberString_.substr(1)) - : BigNumber("-" + numberString_); - } - - /** - * @brief Trims leading zeros from the BigNumber. - * @return The BigNumber with leading zeros removed. - */ - ATOM_NODISCARD auto trimLeadingZeros() const -> BigNumber; - - /** - * @brief Checks if two BigNumber objects are equal. - * @param other The other BigNumber to compare with. - * @return True if the numbers are equal, false otherwise. - */ - ATOM_NODISCARD auto equals(const BigNumber& other) const -> bool { - return numberString_ == other.numberString_; - } - - /** - * @brief Checks if the BigNumber is equal to a long long integer. - * @param other The long long integer to compare with. - * @return True if the number is equal to the integer, false otherwise. - */ - ATOM_NODISCARD auto equals(const long long& other) const -> bool { - return numberString_ == std::to_string(other); - } - - /** - * @brief Checks if the BigNumber is equal to a string. - * @param other The string to compare with. - * @return True if the number is equal to the string, false otherwise. - */ - ATOM_NODISCARD auto equals(const std::string& other) const -> bool { - return numberString_ == other; - } - - /** - * @brief Gets the number of digits in the BigNumber. - * @return The number of digits. - */ - ATOM_NODISCARD auto digits() const -> unsigned int { - return numberString_.length() - static_cast(isNegative()); - } - - /** - * @brief Checks if the BigNumber is negative. - * @return True if the number is negative, false otherwise. - */ - ATOM_NODISCARD auto isNegative() const -> bool { - return numberString_[0] == '-'; - } - - /** - * @brief Checks if the BigNumber is positive. - * @return True if the number is positive, false otherwise. - */ - ATOM_NODISCARD auto isPositive() const -> bool { return !isNegative(); } - - /** - * @brief Checks if the BigNumber is even. - * @return True if the number is even, false otherwise. - */ - ATOM_NODISCARD auto isEven() const -> bool { - return (numberString_.back() - '0') % 2 == 0; - } - - /** - * @brief Checks if the BigNumber is odd. - * @return True if the number is odd, false otherwise. - */ - ATOM_NODISCARD auto isOdd() const -> bool { return !isEven(); } - - /** - * @brief Gets the absolute value of the BigNumber. - * @return The absolute value of the number. - */ - ATOM_NODISCARD auto abs() const -> BigNumber { - return isNegative() ? BigNumber(numberString_.substr(1)) : *this; - } - - /** - * @brief Overloads the stream insertion operator for BigNumber. - * @param os The output stream. - * @param num The BigNumber to insert into the stream. - * @return The output stream. - */ - friend auto operator<<(std::ostream& os, - const BigNumber& num) -> std::ostream& { - os << num.numberString_; - return os; - } - - /** - * @brief Overloads the addition operator for BigNumber. - * @param b1 The first BigNumber. - * @param b2 The second BigNumber. - * @return The result of the addition. - */ - friend auto operator+(const BigNumber& b1, - const BigNumber& b2) -> BigNumber { - return b1.add(b2); - } - - /** - * @brief Overloads the subtraction operator for BigNumber. - * @param b1 The first BigNumber. - * @param b2 The second BigNumber. - * @return The result of the subtraction. - */ - friend auto operator-(const BigNumber& b1, - const BigNumber& b2) -> BigNumber { - return b1.subtract(b2); - } - - /** - * @brief Overloads the multiplication operator for BigNumber. - * @param b1 The first BigNumber. - * @param b2 The second BigNumber. - * @return The result of the multiplication. - */ - friend auto operator*(const BigNumber& b1, - const BigNumber& b2) -> BigNumber { - return b1.multiply(b2); - } - - /** - * @brief Overloads the division operator for BigNumber. - * @param b1 The first BigNumber. - * @param b2 The second BigNumber. - * @return The result of the division. - */ - friend auto operator/(const BigNumber& b1, - const BigNumber& b2) -> BigNumber { - return b1.divide(b2); - } - - /** - * @brief Overloads the exponentiation operator for BigNumber. - * @param b1 The BigNumber base. - * @param b2 The exponent. - * @return The result of the exponentiation. - */ - friend auto operator^(const BigNumber& b1, int b2) -> BigNumber { - return b1.pow(b2); - } - - /** - * @brief Overloads the equality operator for BigNumber. - * @param b1 The first BigNumber. - * @param b2 The second BigNumber. - * @return True if the numbers are equal, false otherwise. - */ - friend auto operator==(const BigNumber& b1, const BigNumber& b2) -> bool { - return b1.equals(b2); - } - - /** - * @brief Overloads the greater than operator for BigNumber. - * @param b1 The first BigNumber. - * @param b2 The second BigNumber. - * @return True if the first number is greater than the second, false - * otherwise. - */ - friend auto operator>(const BigNumber& b1, const BigNumber& b2) -> bool; - - /** - * @brief Overloads the less than operator for BigNumber. - * @param b1 The first BigNumber. - * @param b2 The second BigNumber. - * @return True if the first number is less than the second, false - * otherwise. - */ - friend auto operator<(const BigNumber& b1, const BigNumber& b2) -> bool { - return !(b1 == b2) && !(b1 > b2); - } - - /** - * @brief Overloads the greater than or equal to operator for BigNumber. - * @param b1 The first BigNumber. - * @param b2 The second BigNumber. - * @return True if the first number is greater than or equal to the second, - * false otherwise. - */ - friend auto operator>=(const BigNumber& b1, const BigNumber& b2) -> bool { - return b1 > b2 || b1 == b2; - } - - /** - * @brief Overloads the less than or equal to operator for BigNumber. - * @param b1 The first BigNumber. - * @param b2 The second BigNumber. - * @return True if the first number is less than or equal to the second, - * false otherwise. - */ - friend auto operator<=(const BigNumber& b1, const BigNumber& b2) -> bool { - return b1 < b2 || b1 == b2; - } - - /** - * @brief Overloads the addition assignment operator for BigNumber. - * @param other The other BigNumber to add. - * @return A reference to the updated BigNumber. - */ - auto operator+=(const BigNumber& other) -> BigNumber& { - *this = *this + other; - return *this; - } - - /** - * @brief Overloads the subtraction assignment operator for BigNumber. - * @param other The other BigNumber to subtract. - * @return A reference to the updated BigNumber. - */ - auto operator-=(const BigNumber& other) -> BigNumber& { - *this = *this - other; - return *this; - } - - /** - * @brief Overloads the multiplication assignment operator for BigNumber. - * @param other The other BigNumber to multiply. - * @return A reference to the updated BigNumber. - */ - auto operator*=(const BigNumber& other) -> BigNumber& { - *this = *this * other; - return *this; - } - - /** - * @brief Overloads the division assignment operator for BigNumber. - * @param other The other BigNumber to divide by. - * @return A reference to the updated BigNumber. - */ - auto operator/=(const BigNumber& other) -> BigNumber& { - *this = *this / other; - return *this; - } - - /** - * @brief Overloads the prefix increment operator for BigNumber. - * @return A reference to the incremented BigNumber. - */ - auto operator++() -> BigNumber& { - *this += BigNumber("1"); - return *this; - } - - /** - * @brief Overloads the prefix decrement operator for BigNumber. - * @return A reference to the decremented BigNumber. - */ - auto operator--() -> BigNumber& { - *this -= BigNumber("1"); - return *this; - } - - /** - * @brief Overloads the postfix increment operator for BigNumber. - * @return The BigNumber before incrementing. - */ - auto operator++(int) -> BigNumber { - BigNumber t(*this); - ++(*this); - return t; - } - - /** - * @brief Overloads the postfix decrement operator for BigNumber. - * @return The BigNumber before decrementing. - */ - auto operator--(int) -> BigNumber { - BigNumber t(*this); - --(*this); - return t; - } - - /** - * @brief Overloads the subscript operator for BigNumber. - * @param index The index of the digit to access. - * @return The digit at the specified index. - */ - auto operator[](int index) const -> unsigned int { - return static_cast(numberString_[index] - '0'); - } - -private: - std::string numberString_; ///< The string representation of the number. -}; - -} // namespace atom::algorithm - -#endif // ATOM_ALGORITHM_BIGNUMBER_HPP diff --git a/src/atom/algorithm/convolve.cpp b/src/atom/algorithm/convolve.cpp deleted file mode 100644 index dc16fb88..00000000 --- a/src/atom/algorithm/convolve.cpp +++ /dev/null @@ -1,905 +0,0 @@ -/* - * convolve.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-11-10 - -Description: Implementation of one-dimensional and two-dimensional convolution -and deconvolution with optional OpenCL support. - -**************************************************/ - -#include "convolve.hpp" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if USE_SIMD -#ifdef _MSC_VER -#include -#define SIMD_ALIGNED __declspec(align(32)) -#else -#include -#define SIMD_ALIGNED __attribute__((aligned(32))) -#endif - -#ifdef __AVX__ -#define SIMD_ENABLED -#define SIMD_WIDTH 4 -#elif defined(__SSE__) -#define SIMD_ENABLED -#define SIMD_WIDTH 2 -#endif -#endif - -#if USE_OPENCL -#include -#endif - -#ifdef __GNUC__ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wsign-compare" -#elif defined(__clang__) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wsign-compare" -#elif defined(_MSC_VER) -#pragma warning(push) -#pragma warning(disable : 4996) -#endif - -// Code that might generate warnings - -#ifdef __GNUC__ -#pragma GCC diagnostic pop -#elif defined(__clang__) -#pragma clang diagnostic pop -#elif defined(_MSC_VER) -#pragma warning(pop) -#endif - -#include "atom/error/exception.hpp" - -namespace atom::algorithm { - -// Function to convolve a 1D input with a kernel -auto convolve(const std::vector &input, - const std::vector &kernel) -> std::vector { - auto inputSize = input.size(); - auto kernelSize = kernel.size(); - auto outputSize = inputSize + kernelSize - 1; - std::vector output(outputSize, 0.0); - -#ifdef SIMD_ENABLED - const int simd_width = SIMD_WIDTH; - SIMD_ALIGNED double aligned_kernel[kernelSize]; - std::memcpy(aligned_kernel, kernel.data(), kernelSize * sizeof(double)); - - for (std::size_t i = 0; i < outputSize; i += simd_width) { - __m256d sum = _mm256_setzero_pd(); - - for (std::size_t j = 0; j < kernelSize; ++j) { - if (i >= j && (i - j + simd_width) <= inputSize) { - __m256d input_vec = _mm256_loadu_pd(&input[i - j]); - __m256d kernel_val = _mm256_set1_pd(aligned_kernel[j]); - sum = _mm256_add_pd(sum, _mm256_mul_pd(input_vec, kernel_val)); - } - } - - _mm256_storeu_pd(&output[i], sum); - } - - // Handle remaining elements - for (std::size_t i = (outputSize / simd_width) * simd_width; i < outputSize; - ++i) { - for (std::size_t j = 0; j < kernelSize; ++j) { - if (i >= j && (i - j) < inputSize) { - output[i] += input[i - j] * kernel[j]; - } - } - } -#else - // Fallback to non-SIMD version - for (std::size_t i = 0; i < outputSize; ++i) { - for (std::size_t j = 0; j < kernelSize; ++j) { - if (i >= j && (i - j) < inputSize) { - output[i] += input[i - j] * kernel[j]; - } - } - } -#endif - - return output; -} - -// Function to deconvolve a 1D input with a kernel -auto deconvolve(const std::vector &input, - const std::vector &kernel) -> std::vector { - auto inputSize = input.size(); - auto kernelSize = kernel.size(); - if (kernelSize > inputSize) { - THROW_INVALID_ARGUMENT("Kernel size cannot be larger than input size."); - } - - auto outputSize = inputSize - kernelSize + 1; - std::vector output(outputSize, 0.0); - -#ifdef SIMD_ENABLED - const int simd_width = SIMD_WIDTH; - SIMD_ALIGNED double aligned_kernel[kernelSize]; - std::memcpy(aligned_kernel, kernel.data(), kernelSize * sizeof(double)); - - for (std::size_t i = 0; i < outputSize; i += simd_width) { - __m256d sum = _mm256_setzero_pd(); - - for (std::size_t j = 0; j < kernelSize; ++j) { - __m256d input_vec = _mm256_loadu_pd(&input[i + j]); - __m256d kernel_val = _mm256_set1_pd(aligned_kernel[j]); - sum = _mm256_add_pd(sum, _mm256_mul_pd(input_vec, kernel_val)); - } - - _mm256_storeu_pd(&output[i], sum); - } - - // Handle remaining elements - for (std::size_t i = (outputSize / simd_width) * simd_width; i < outputSize; - ++i) { - for (std::size_t j = 0; j < kernelSize; ++j) { - output[i] += input[i + j] * kernel[j]; - } - } -#else - // Fallback to non-SIMD version - for (std::size_t i = 0; i < outputSize; ++i) { - for (std::size_t j = 0; j < kernelSize; ++j) { - output[i] += input[i + j] * kernel[j]; - } - } -#endif - - return output; -} - -// Helper function to extend 2D vectors -template -auto extend2D(const std::vector> &input, std::size_t newRows, - std::size_t newCols) -> std::vector> { - std::vector> extended(newRows, std::vector(newCols, 0.0)); - auto inputRows = input.size(); - auto inputCols = input[0].size(); - for (std::size_t i = 0; i < inputRows; ++i) { - for (std::size_t j = 0; j < inputCols; ++j) { - extended[i + newRows / 2][j + newCols / 2] = input[i][j]; - } - } - return extended; -} - -#if USE_OPENCL -// OpenCL initialization and helper functions -auto initializeOpenCL() -> cl_context { - cl_uint numPlatforms; - cl_platform_id platform = nullptr; - clGetPlatformIDs(1, &platform, &numPlatforms); - - cl_context_properties properties[] = {CL_CONTEXT_PLATFORM, - (cl_context_properties)platform, 0}; - - cl_int err; - cl_context context = clCreateContextFromType(properties, CL_DEVICE_TYPE_GPU, - nullptr, nullptr, &err); - if (err != CL_SUCCESS) { - THROW_RUNTIME_ERROR("Failed to create OpenCL context."); - } - return context; -} - -auto createCommandQueue(cl_context context) -> cl_command_queue { - cl_device_id device_id; - clGetDeviceIDs(nullptr, CL_DEVICE_TYPE_GPU, 1, &device_id, nullptr); - cl_int err; - cl_command_queue commandQueue = - clCreateCommandQueue(context, device_id, 0, &err); - if (err != CL_SUCCESS) { - THROW_RUNTIME_ERROR("Failed to create OpenCL command queue."); - } - return commandQueue; -} - -auto createProgram(const std::string &source, - cl_context context) -> cl_program { - const char *sourceStr = source.c_str(); - cl_int err; - cl_program program = - clCreateProgramWithSource(context, 1, &sourceStr, nullptr, &err); - if (err != CL_SUCCESS) { - THROW_RUNTIME_ERROR("Failed to create OpenCL program."); - } - return program; -} - -void checkErr(cl_int err, const char *operation) { - if (err != CL_SUCCESS) { - std::string errMsg = "OpenCL Error during operation: "; - errMsg += operation; - THROW_RUNTIME_ERROR(errMsg.c_str()); - } -} - -// OpenCL kernel code for 2D convolution -const std::string convolve2DKernelSrc = R"CLC( -__kernel void convolve2D(__global const float* input, - __global const float* kernel, - __global float* output, - const int inputRows, - const int inputCols, - const int kernelRows, - const int kernelCols) { - int row = get_global_id(0); - int col = get_global_id(1); - - int halfKernelRows = kernelRows / 2; - int halfKernelCols = kernelCols / 2; - - float sum = 0.0; - for (int i = -halfKernelRows; i <= halfKernelRows; ++i) { - for (int j = -halfKernelCols; j <= halfKernelCols; ++j) { - int x = clamp(row + i, 0, inputRows - 1); - int y = clamp(col + j, 0, inputCols - 1); - sum += input[x * inputCols + y] * kernel[(i + halfKernelRows) * kernelCols + (j + halfKernelCols)]; - } - } - output[row * inputCols + col] = sum; -} -)CLC"; - -// Function to convolve a 2D input with a 2D kernel using OpenCL -auto convolve2DOpenCL(const std::vector> &input, - const std::vector> &kernel, - int numThreads) -> std::vector> { - auto context = initializeOpenCL(); - auto queue = createCommandQueue(context); - - auto inputRows = input.size(); - auto inputCols = input[0].size(); - auto kernelRows = kernel.size(); - auto kernelCols = kernel[0].size(); - - std::vector inputFlattened(inputRows * inputCols); - std::vector kernelFlattened(kernelRows * kernelCols); - std::vector outputFlattened(inputRows * inputCols, 0.0); - - for (size_t i = 0; i < inputRows; ++i) - for (size_t j = 0; j < inputCols; ++j) - inputFlattened[i * inputCols + j] = static_cast(input[i][j]); - - for (size_t i = 0; i < kernelRows; ++i) - for (size_t j = 0; j < kernelCols; ++j) - kernelFlattened[i * kernelCols + j] = - static_cast(kernel[i][j]); - - cl_int err; - cl_mem inputBuffer = clCreateBuffer( - context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, - sizeof(float) * inputFlattened.size(), inputFlattened.data(), &err); - checkErr(err, "Creating input buffer"); - - cl_mem kernelBuffer = clCreateBuffer( - context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, - sizeof(float) * kernelFlattened.size(), kernelFlattened.data(), &err); - checkErr(err, "Creating kernel buffer"); - - cl_mem outputBuffer = - clCreateBuffer(context, CL_MEM_WRITE_ONLY, - sizeof(float) * outputFlattened.size(), nullptr, &err); - checkErr(err, "Creating output buffer"); - - cl_program program = createProgram(convolve2DKernelSrc, context); - err = clBuildProgram(program, 0, nullptr, nullptr, nullptr, nullptr); - checkErr(err, "Building program"); - - cl_kernel kernel = clCreateKernel(program, "convolve2D", &err); - checkErr(err, "Creating kernel"); - - err = clSetKernelArg(kernel, 0, sizeof(cl_mem), &inputBuffer); - err |= clSetKernelArg(kernel, 1, sizeof(cl_mem), &kernelBuffer); - err |= clSetKernelArg(kernel, 2, sizeof(cl_mem), &outputBuffer); - err |= clSetKernelArg(kernel, 3, sizeof(int), &inputRows); - err |= clSetKernelArg(kernel, 4, sizeof(int), &inputCols); - err |= clSetKernelArg(kernel, 5, sizeof(int), &kernelRows); - err |= clSetKernelArg(kernel, 6, sizeof(int), &kernelCols); - checkErr(err, "Setting kernel arguments"); - - size_t globalWorkSize[2] = {static_cast(inputRows), - static_cast(inputCols)}; - err = clEnqueueNDRangeKernel(queue, kernel, 2, nullptr, globalWorkSize, - nullptr, 0, nullptr, nullptr); - checkErr(err, "Enqueueing kernel"); - - err = clEnqueueReadBuffer(queue, outputBuffer, CL_TRUE, 0, - sizeof(float) * outputFlattened.size(), - outputFlattened.data(), 0, nullptr, nullptr); - checkErr(err, "Reading back output buffer"); - - // Convert output back to 2D vector - std::vector> output( - inputRows, std::vector(inputCols, 0.0)); - for (size_t i = 0; i < inputRows; ++i) - for (size_t j = 0; j < inputCols; ++j) - output[i][j] = - static_cast(outputFlattened[i * inputCols + j]); - - // Clean up OpenCL resources - clReleaseMemObject(inputBuffer); - clReleaseMemObject(kernelBuffer); - clReleaseMemObject(outputBuffer); - clReleaseKernel(kernel); - clReleaseProgram(program); - clReleaseCommandQueue(queue); - clReleaseContext(context); - - return output; -} -#endif - -// Function to convolve a 2D input with a 2D kernel using multithreading or -// OpenCL -auto convolve2D(const std::vector> &input, - const std::vector> &kernel, - int numThreads) -> std::vector> { -#if USE_OPENCL - return convolve2DOpenCL(input, kernel, numThreads); -#else - auto inputRows = input.size(); - auto inputCols = input[0].size(); - auto kernelRows = kernel.size(); - auto kernelCols = kernel[0].size(); - - auto extendedInput = - extend2D(input, inputRows + kernelRows - 1, inputCols + kernelCols - 1); - auto extendedKernel = extend2D(kernel, inputRows + kernelRows - 1, - inputCols + kernelCols - 1); - - std::vector> output( - inputRows, std::vector(inputCols, 0.0)); - - // Function to compute a block of the convolution using SIMD - auto computeBlock = [&](std::size_t blockStartRow, - std::size_t blockEndRow) { -#if USE_SIMD - SIMD_ALIGNED -#endif - double aligned_kernel[kernelRows * kernelCols]; - for (std::size_t i = 0; i < kernelRows; ++i) { - std::memcpy(&aligned_kernel[i * kernelCols], kernel[i].data(), - kernelCols * sizeof(double)); - } - -#ifdef SIMD_ENABLED - const int simd_width = SIMD_WIDTH; - for (std::size_t i = blockStartRow; i < blockEndRow; ++i) { - for (std::size_t j = kernelCols / 2; j < inputCols + kernelCols / 2; - j += simd_width) { - __m256d sum = _mm256_setzero_pd(); - - for (std::size_t k = 0; k < kernelRows; ++k) { - for (std::size_t colOffset = 0; colOffset < kernelCols; - ++colOffset) { - __m256d input_vec = _mm256_loadu_pd( - &extendedInput[i + k - kernelRows / 2] - [j + colOffset - kernelCols / 2]); - __m256d kernel_val = _mm256_set1_pd( - aligned_kernel[k * kernelCols + colOffset]); - sum = _mm256_add_pd( - sum, _mm256_mul_pd(input_vec, kernel_val)); - } - } - - _mm256_storeu_pd( - &output[i - kernelRows / 2][j - kernelCols / 2], sum); - } - - // Handle remaining elements - for (std::size_t j = - ((inputCols + kernelCols / 2) / simd_width) * simd_width + - kernelCols / 2; - j < inputCols + kernelCols / 2; ++j) { - double sum = 0.0; - for (std::size_t k = 0; k < kernelRows; ++k) { - for (std::size_t colOffset = 0; colOffset < kernelCols; - ++colOffset) { - sum += extendedInput[i + k - kernelRows / 2] - [j + colOffset - kernelCols / 2] * - aligned_kernel[k * kernelCols + colOffset]; - } - } - output[i - kernelRows / 2][j - kernelCols / 2] = sum; - } - } -#else - // Fallback to non-SIMD version - for (std::size_t i = blockStartRow; i < blockEndRow; ++i) { - for (std::size_t j = kernelCols / 2; j < inputCols + kernelCols / 2; - ++j) { - double sum = 0.0; - for (std::size_t k = 0; k < kernelRows; ++k) { - for (std::size_t colOffset = 0; colOffset < kernelCols; - ++colOffset) { - sum += extendedInput[i + k - kernelRows / 2] - [j + colOffset - kernelCols / 2] * - aligned_kernel[k * kernelCols + colOffset]; - } - } - output[i - kernelRows / 2][j - kernelCols / 2] = sum; - } - } -#endif - }; - - // Use multiple threads if requested - if (numThreads > 1) { - std::vector threads; - std::size_t blockSize = (inputRows + numThreads - 1) / numThreads; - std::size_t blockStartRow = kernelRows / 2; - - for (int i = 0; i < numThreads; ++i) { - std::size_t blockEndRow = - std::min(blockStartRow + blockSize, inputRows + kernelRows / 2); - threads.emplace_back(computeBlock, blockStartRow, blockEndRow); - blockStartRow = blockEndRow; - } - - for (auto &thread : threads) { - thread.join(); - } - } else { - // Single-threaded execution - computeBlock(kernelRows / 2, inputRows + kernelRows / 2); - } - - return output; -#endif -} - -// Function to deconvolve a 2D input with a 2D kernel using multithreading or -// OpenCL -auto deconvolve2D(const std::vector> &signal, - const std::vector> &kernel, - int numThreads) -> std::vector> { -#if USE_OPENCL - // Implement OpenCL support if necessary - return deconvolve2DOpenCL(signal, kernel, numThreads); -#else - int M = signal.size(); - int N = signal[0].size(); - int K = kernel.size(); - int L = kernel[0].size(); - - auto extendedSignal = extend2D(signal, M + K - 1, N + L - 1); - auto extendedKernel = extend2D(kernel, M + K - 1, N + L - 1); - - auto dfT2DWrapper = [&](const std::vector> &input) { - return dfT2D(input, - numThreads); // Assume DFT2D supports multithreading - }; - - auto x = dfT2DWrapper(extendedSignal); - auto h = dfT2DWrapper(extendedKernel); - - std::vector>> g( - M + K - 1, std::vector>(N + L - 1)); - double alpha = 0.1; // Prevent division by zero - - // SIMD-optimized computation of g -#ifdef SIMD_ENABLED - const int simd_width = SIMD_WIDTH; - __m256d alpha_vec = _mm256_set1_pd(alpha); - - for (int u = 0; u < M + K - 1; ++u) { - for (int v = 0; v < N + L - 1; v += simd_width) { - __m256d h_real = _mm256_loadu_pd(&h[u][v].real()); - __m256d h_imag = _mm256_loadu_pd(&h[u][v].imag()); - - __m256d h_abs = _mm256_sqrt_pd(_mm256_add_pd( - _mm256_mul_pd(h_real, h_real), _mm256_mul_pd(h_imag, h_imag))); - __m256d mask = _mm256_cmp_pd(h_abs, alpha_vec, _CMP_GT_OQ); - - __m256d norm = _mm256_add_pd(_mm256_mul_pd(h_real, h_real), - _mm256_mul_pd(h_imag, h_imag)); - norm = _mm256_add_pd(norm, alpha_vec); - - __m256d g_real = _mm256_div_pd(h_real, norm); - __m256d g_imag = _mm256_div_pd( - _mm256_xor_pd(h_imag, _mm256_set1_pd(-0.0)), norm); - - g_real = _mm256_blendv_pd(h_real, g_real, mask); - g_imag = _mm256_blendv_pd(h_imag, g_imag, mask); - - _mm256_storeu_pd(&g[u][v].real(), g_real); - _mm256_storeu_pd(&g[u][v].imag(), g_imag); - } - - // Handle remaining elements - for (int v = ((N + L - 1) / simd_width) * simd_width; v < N + L - 1; - ++v) { - if (std::abs(h[u][v]) > alpha) { - g[u][v] = std::conj(h[u][v]) / (std::norm(h[u][v]) + alpha); - } else { - g[u][v] = std::conj(h[u][v]); - } - } - } -#else - // Fallback to non-SIMD version - for (int u = 0; u < M + K - 1; ++u) { - for (int v = 0; v < N + L - 1; ++v) { - if (std::abs(h[u][v]) > alpha) { - g[u][v] = std::conj(h[u][v]) / (std::norm(h[u][v]) + alpha); - } else { - g[u][v] = std::conj(h[u][v]); - } - } - } -#endif - - std::vector>> Y( - M + K - 1, std::vector>(N + L - 1)); - - // SIMD-optimized computation of Y -#ifdef SIMD_ENABLED - for (int u = 0; u < M + K - 1; ++u) { - for (int v = 0; v < N + L - 1; v += simd_width) { - __m256d g_real = _mm256_loadu_pd(&g[u][v].real()); - __m256d g_imag = _mm256_loadu_pd(&g[u][v].imag()); - __m256d x_real = _mm256_loadu_pd(&x[u][v].real()); - __m256d x_imag = _mm256_loadu_pd(&x[u][v].imag()); - - __m256d y_real = _mm256_sub_pd(_mm256_mul_pd(g_real, x_real), - _mm256_mul_pd(g_imag, x_imag)); - __m256d y_imag = _mm256_add_pd(_mm256_mul_pd(g_real, x_imag), - _mm256_mul_pd(g_imag, x_real)); - - _mm256_storeu_pd(&Y[u][v].real(), y_real); - _mm256_storeu_pd(&Y[u][v].imag(), y_imag); - } - - // Handle remaining elements - for (int v = ((N + L - 1) / simd_width) * simd_width; v < N + L - 1; - ++v) { - Y[u][v] = g[u][v] * x[u][v]; - } - } -#else - // Fallback to non-SIMD version - for (int u = 0; u < M + K - 1; ++u) { - for (int v = 0; v < N + L - 1; ++v) { - Y[u][v] = g[u][v] * x[u][v]; - } - } -#endif - - auto y = idfT2D(Y, numThreads); - - std::vector> result(M, std::vector(N, 0.0)); - for (int i = 0; i < M; ++i) { - for (int j = 0; j < N; ++j) { - result[i][j] = y[i][j]; - } - } - - return result; -#endif -} - -// 2D Discrete Fourier Transform (2D DFT) -auto dfT2D(const std::vector> &signal, - int numThreads) -> std::vector>> { - const auto M = signal.size(); - const auto N = signal[0].size(); - std::vector>> X( - M, std::vector>(N, {0, 0})); - - // Lambda function to compute the DFT for a block of rows - auto computeDFT = [&M, &N, &signal, &X](int startRow, int endRow) { - for (int u = startRow; u < endRow; ++u) { - for (int v = 0; v < N; ++v) { -#if USE_SIMD - __m256d sum_real = _mm256_setzero_pd(); - __m256d sum_imag = _mm256_setzero_pd(); - for (int m = 0; m < M; ++m) { - for (int n = 0; n < N; n += SIMD_WIDTH) { - __m256d theta = _mm256_set_pd( - -2 * std::numbers::pi * - ((u * m / static_cast(M)) + - (v * (n + 3) / static_cast(N))), - -2 * std::numbers::pi * - ((u * m / static_cast(M)) + - (v * (n + 2) / static_cast(N))), - -2 * std::numbers::pi * - ((u * m / static_cast(M)) + - (v * (n + 1) / static_cast(N))), - -2 * std::numbers::pi * - ((u * m / static_cast(M)) + - (v * n / static_cast(N)))); - __m256d w_real = _mm256_cos_pd(theta); - __m256d w_imag = _mm256_sin_pd(theta); - __m256d signal_val = _mm256_loadu_pd(&signal[m][n]); - - sum_real = - _mm256_fmadd_pd(signal_val, w_real, sum_real); - sum_imag = - _mm256_fmadd_pd(signal_val, w_imag, sum_imag); - } - } - X[u][v] = std::complex(_mm256_reduce_add_pd(sum_real), - _mm256_reduce_add_pd(sum_imag)); -#else - std::complex sum(0, 0); - for (int m = 0; m < M; ++m) { - for (int n = 0; n < N; ++n) { - double theta = -2 * std::numbers::pi * - ((u * m / static_cast(M)) + - (v * n / static_cast(N))); - std::complex w(cos(theta), sin(theta)); - sum += signal[m][n] * w; - } - } - X[u][v] = sum; -#endif - } - } - }; - - // Multithreading support - if (numThreads > 1) { - std::vector threads; - auto rowsPerThread = M / numThreads; - for (int i = 0; i < numThreads; ++i) { - auto startRow = i * rowsPerThread; - auto endRow = (i == numThreads - 1) ? M : startRow + rowsPerThread; - threads.emplace_back(computeDFT, startRow, endRow); - } - for (auto &thread : threads) { - thread.join(); - } - } else { - // Single-threaded execution - computeDFT(0, M); - } - - return X; -} - -// 2D Inverse Discrete Fourier Transform (2D IDFT) -auto idfT2D(const std::vector>> &spectrum, - int numThreads) -> std::vector> { - const auto M = spectrum.size(); - const auto N = spectrum[0].size(); - std::vector> x(M, std::vector(N, 0.0)); - - // Lambda function to compute the IDFT for a block of rows - auto computeIDFT = [&M, &N, &spectrum, &x](int startRow, int endRow) { - for (int m = startRow; m < endRow; ++m) { - for (int n = 0; n < N; ++n) { -#if USE_SIMD - __m256d sum_real = _mm256_setzero_pd(); - __m256d sum_imag = _mm256_setzero_pd(); - for (int u = 0; u < M; ++u) { - for (int v = 0; v < N; v += SIMD_WIDTH) { - __m256d theta = _mm256_set_pd( - 2 * std::numbers::pi * - ((u * m / static_cast(M)) + - (v * (n + 3) / static_cast(N))), - 2 * std::numbers::pi * - ((u * m / static_cast(M)) + - (v * (n + 2) / static_cast(N))), - 2 * std::numbers::pi * - ((u * m / static_cast(M)) + - (v * (n + 1) / static_cast(N))), - 2 * std::numbers::pi * - ((u * m / static_cast(M)) + - (v * n / static_cast(N)))); - __m256d w_real = _mm256_cos_pd(theta); - __m256d w_imag = _mm256_sin_pd(theta); - __m256d spectrum_real = _mm256_loadu_pd( - reinterpret_cast(&spectrum[u][v])); - __m256d spectrum_imag = _mm256_loadu_pd( - reinterpret_cast(&spectrum[u][v]) + - 4); - - sum_real = - _mm256_fmadd_pd(spectrum_real, w_real, sum_real); - sum_imag = - _mm256_fmadd_pd(spectrum_imag, w_imag, sum_imag); - } - } - x[m][n] = (_mm256_reduce_add_pd(sum_real) + - _mm256_reduce_add_pd(sum_imag)) / - (M * N); -#else - std::complex sum(0.0, 0.0); - for (int u = 0; u < M; ++u) { - for (int v = 0; v < N; ++v) { - double theta = 2 * std::numbers::pi * - ((u * m / static_cast(M)) + - (v * n / static_cast(N))); - std::complex w(cos(theta), sin(theta)); - sum += spectrum[u][v] * w; - } - } - x[m][n] = - std::real(sum) / (M * N); // Normalize by dividing by M*N -#endif - } - } - }; - - // Multithreading support - if (numThreads > 1) { - std::vector threads; - auto rowsPerThread = M / numThreads; - for (int i = 0; i < numThreads; ++i) { - auto startRow = i * rowsPerThread; - auto endRow = (i == numThreads - 1) ? M : startRow + rowsPerThread; - threads.emplace_back(computeIDFT, startRow, endRow); - } - for (auto &thread : threads) { - thread.join(); - } - } else { - // Single-threaded execution - computeIDFT(0, M); - } - - return x; -} - -auto generateGaussianKernel(int size, - double sigma) -> std::vector> { - std::vector> kernel(size, std::vector(size)); - double sum = 0.0; - int center = size / 2; - -#if USE_SIMD - SIMD_ALIGNED double temp_buffer[SIMD_WIDTH]; - __m256d sigma_vec = _mm256_set1_pd(sigma); - __m256d two_sigma_squared = - _mm256_mul_pd(_mm256_set1_pd(2.0), _mm256_mul_pd(sigma_vec, sigma_vec)); - __m256d scale = _mm256_div_pd( - _mm256_set1_pd(1.0), - _mm256_mul_pd(_mm256_set1_pd(2 * std::numbers::pi), two_sigma_squared)); - - for (int i = 0; i < size; ++i) { - __m256d i_vec = _mm256_set1_pd(i - center); - for (int j = 0; j < size; j += SIMD_WIDTH) { - __m256d j_vec = _mm256_set_pd(j + 3 - center, j + 2 - center, - j + 1 - center, j - center); - - __m256d x_squared = _mm256_mul_pd(i_vec, i_vec); - __m256d y_squared = _mm256_mul_pd(j_vec, j_vec); - __m256d exponent = _mm256_div_pd( - _mm256_add_pd(x_squared, y_squared), two_sigma_squared); - __m256d kernel_values = _mm256_mul_pd( - scale, - exp256_pd(_mm256_mul_pd(_mm256_set1_pd(-0.5), exponent))); - - _mm256_store_pd(temp_buffer, kernel_values); - for (int k = 0; k < SIMD_WIDTH && j + k < size; ++k) { - kernel[i][j + k] = temp_buffer[k]; - sum += temp_buffer[k]; - } - } - } - - // Normalize to ensure the sum of the weights is 1 - __m256d sum_vec = _mm256_set1_pd(sum); - for (int i = 0; i < size; ++i) { - for (int j = 0; j < size; j += SIMD_WIDTH) { - __m256d kernel_values = _mm256_loadu_pd(&kernel[i][j]); - kernel_values = _mm256_div_pd(kernel_values, sum_vec); - _mm256_storeu_pd(&kernel[i][j], kernel_values); - } - } -#else - for (int i = 0; i < size; ++i) { - for (int j = 0; j < size; ++j) { - kernel[i][j] = exp(-0.5 * (pow((i - center) / sigma, 2.0) + - pow((j - center) / sigma, 2.0))) / - (2 * std::numbers::pi * sigma * sigma); - sum += kernel[i][j]; - } - } - - // Normalize to ensure the sum of the weights is 1 - for (int i = 0; i < size; ++i) { - for (int j = 0; j < size; ++j) { - kernel[i][j] /= sum; - } - } -#endif - - return kernel; -} - -auto applyGaussianFilter(const std::vector> &image, - const std::vector> &kernel) - -> std::vector> { - auto imageHeight = image.size(); - auto imageWidth = image[0].size(); - auto kernelSize = kernel.size(); - auto kernelRadius = kernelSize / 2; - std::vector> filteredImage( - imageHeight, std::vector(imageWidth, 0)); - -#if USE_SIMD - SIMD_ALIGNED double temp_buffer[SIMD_WIDTH]; - - for (auto i = 0; i < imageHeight; ++i) { - for (auto j = 0; j < imageWidth; j += SIMD_WIDTH) { - __m256d sum_vec = _mm256_setzero_pd(); - - for (auto k = -kernelRadius; k <= kernelRadius; ++k) { - for (auto l = -kernelRadius; l <= kernelRadius; ++l) { - __m256d kernel_val = _mm256_set1_pd( - kernel[kernelRadius + k][kernelRadius + l]); - - for (int m = 0; m < SIMD_WIDTH; ++m) { - auto x = std::clamp(static_cast(i + k), 0, - static_cast(imageHeight) - 1); - auto y = std::clamp(static_cast(j + l + m), 0, - static_cast(imageWidth) - 1); - temp_buffer[m] = image[x][y]; - } - - __m256d image_val = _mm256_loadu_pd(temp_buffer); - sum_vec = _mm256_add_pd( - sum_vec, _mm256_mul_pd(image_val, kernel_val)); - } - } - - _mm256_storeu_pd(temp_buffer, sum_vec); - for (int m = 0; m < SIMD_WIDTH && j + m < imageWidth; ++m) { - filteredImage[i][j + m] = temp_buffer[m]; - } - } - } -#else - for (auto i = 0; i < imageHeight; ++i) { - for (auto j = 0; j < imageWidth; ++j) { - double sum = 0.0; - for (auto k = -kernelRadius; k <= kernelRadius; ++k) { - for (auto l = -kernelRadius; l <= kernelRadius; ++l) { - auto x = std::clamp(static_cast(i + k), 0, - static_cast(imageHeight) - 1); - auto y = std::clamp(static_cast(j + l), 0, - static_cast(imageWidth) - 1); - sum += image[x][y] * - kernel[kernelRadius + k][kernelRadius + l]; - } - } - filteredImage[i][j] = sum; - } - } -#endif - return filteredImage; -} - -} // namespace atom::algorithm - -#ifdef __GNUC__ -#pragma GCC diagnostic pop -#elif defined(__clang__) -#pragma clang diagnostic pop -#elif defined(_MSC_VER) -#pragma warning(pop) -#endif diff --git a/src/atom/algorithm/convolve.hpp b/src/atom/algorithm/convolve.hpp deleted file mode 100644 index 4b8d7592..00000000 --- a/src/atom/algorithm/convolve.hpp +++ /dev/null @@ -1,133 +0,0 @@ -/* - * convolve.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-11-10 - -Description: Implementation of one-dimensional and two-dimensional convolution -and deconvolution. - -**************************************************/ - -#ifndef ATOM_ALGORITHM_CONVOLVE_HPP -#define ATOM_ALGORITHM_CONVOLVE_HPP - -#include -#include - -namespace atom::algorithm { -/** - * @brief Performs 1D convolution operation. - * - * This function convolves the input signal with the given kernel. - * - * @param input The input signal. - * @param kernel The convolution kernel. - * @return The convolved signal. - */ -[[nodiscard("The result of convolve is not used.")]] auto convolve( - const std::vector &input, - const std::vector &kernel) -> std::vector; - -/** - * @brief Performs 1D deconvolution operation. - * - * This function deconvolves the input signal with the given kernel. - * - * @param input The input signal. - * @param kernel The deconvolution kernel. - * @return The deconvolved signal. - */ -[[nodiscard("The result of deconvolve is not used.")]] auto deconvolve( - const std::vector &input, - const std::vector &kernel) -> std::vector; - -/** - * @brief Performs 2D convolution operation. - * - * This function convolves the input image with the given kernel. - * - * @param input The input image. - * @param kernel The convolution kernel. - * @param numThreads Number of threads for parallel execution (default: 1). - * @return The convolved image. - */ -[[nodiscard("The result of convolve2D is not used.")]] auto convolve2D( - const std::vector> &input, - const std::vector> &kernel, - int numThreads = 1) -> std::vector>; - -/** - * @brief Performs 2D deconvolution operation. - * - * This function deconvolves the input image with the given kernel. - * - * @param signal The input image. - * @param kernel The deconvolution kernel. - * @param numThreads Number of threads for parallel execution (default: 1). - * @return The deconvolved image. - */ -[[nodiscard("The result of deconvolve2D is not used.")]] auto deconvolve2D( - const std::vector> &signal, - const std::vector> &kernel, - int numThreads = 1) -> std::vector>; - -/** - * @brief Performs 2D Discrete Fourier Transform (DFT). - * - * This function computes the 2D DFT of the input image. - * - * @param signal The input image. - * @param numThreads Number of threads for parallel execution (default: 1). - * @return The 2D DFT spectrum. - */ -[[nodiscard("The result of DFT2D is not used.")]] auto dfT2D( - const std::vector> &signal, - int numThreads = 1) -> std::vector>>; - -/** - * @brief Performs 2D Inverse Discrete Fourier Transform (IDFT). - * - * This function computes the 2D IDFT of the input spectrum. - * - * @param spectrum The input spectrum. - * @param numThreads Number of threads for parallel execution (default: 1). - * @return The 2D IDFT image. - */ -[[nodiscard("The result of IDFT2D is not used.")]] auto idfT2D( - const std::vector>> &spectrum, - int numThreads = 1) -> std::vector>; - -/** - * @brief Generates a Gaussian kernel for 2D convolution. - * - * This function generates a Gaussian kernel for 2D convolution. - * - * @param size The size of the kernel. - * @param sigma The standard deviation of the Gaussian distribution. - * @return The generated Gaussian kernel. - */ -[[nodiscard("The result of generateGaussianKernel is not used.")]] auto -generateGaussianKernel(int size, - double sigma) -> std::vector>; - -/** - * @brief Applies a Gaussian filter to an image. - * - * This function applies a Gaussian filter to an image. - * - * @param image The input image. - * @param kernel The Gaussian kernel. - * @return The filtered image. - */ -[[nodiscard("The result of applyGaussianFilter is not used.")]] auto -applyGaussianFilter(const std::vector> &image, - const std::vector> &kernel) - -> std::vector>; -} // namespace atom::algorithm - -#endif diff --git a/src/atom/algorithm/error_calibration.hpp b/src/atom/algorithm/error_calibration.hpp deleted file mode 100644 index 7b460bb7..00000000 --- a/src/atom/algorithm/error_calibration.hpp +++ /dev/null @@ -1,509 +0,0 @@ -#ifndef ATOM_ALGORITHM_ERROR_CALIBRATION_HPP -#define ATOM_ALGORITHM_ERROR_CALIBRATION_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef USE_SIMD -#ifdef __AVX__ -#include -#elif defined(__ARM_NEON) -#include -#endif -#endif - -#include "atom/error/exception.hpp" -#include "atom/log/loguru.hpp" - -namespace atom::algorithm { -template -class AdvancedErrorCalibration { -private: - T slope_ = 1.0; - T intercept_ = 0.0; - std::optional r_squared_; - std::vector residuals_; - T mse_ = 0.0; // Mean Squared Error - T mae_ = 0.0; // Mean Absolute Error - - /** - * Calculate calibration metrics - * @param measured Vector of measured values - * @param actual Vector of actual values - */ - void calculateMetrics(const std::vector& measured, - const std::vector& actual) { - T sumSquaredError = 0.0; - T sumAbsoluteError = 0.0; - T meanActual = - std::accumulate(actual.begin(), actual.end(), T(0)) / actual.size(); - T ssTotal = 0; - T ssResidual = 0; - - residuals_.clear(); - -#ifdef USE_SIMD -#ifdef __AVX__ - // SIMD optimized loop for x86 using AVX - __m256d sumSquaredErrorVec = _mm256_setzero_pd(); - __m256d sumAbsoluteErrorVec = _mm256_setzero_pd(); - size_t i = 0; - - for (; i + 4 <= actual.size(); i += 4) { - __m256d measuredVec = _mm256_loadu_pd(&measured[i]); - __m256d actualVec = _mm256_loadu_pd(&actual[i]); - - __m256d predictedVec = _mm256_add_pd( - _mm256_mul_pd(_mm256_set1_pd(slope_), measuredVec), - _mm256_set1_pd(intercept_)); - - __m256d errorVec = _mm256_sub_pd(actualVec, predictedVec); - - sumSquaredErrorVec = _mm256_add_pd( - sumSquaredErrorVec, _mm256_mul_pd(errorVec, errorVec)); - sumAbsoluteErrorVec = - _mm256_add_pd(sumAbsoluteErrorVec, - _mm256_andnot_pd(_mm256_set1_pd(-0.0), errorVec)); - - ssTotal += std::pow(actual[i] - meanActual, 2); - ssResidual += std::pow(predictedVec[i] - actual[i], 2); - } - - double tempSquaredError[4]; - _mm256_storeu_pd(tempSquaredError, sumSquaredErrorVec); - sumSquaredError = std::accumulate( - tempSquaredError, tempSquaredError + 4, sumSquaredError); - - double tempAbsoluteError[4]; - _mm256_storeu_pd(tempAbsoluteError, sumAbsoluteErrorVec); - sumAbsoluteError = std::accumulate( - tempAbsoluteError, tempAbsoluteError + 4, sumAbsoluteError); - -#elif defined(__ARM_NEON) - // SIMD optimized loop for ARM using NEON - float64x2_t sumSquaredErrorVec = vdupq_n_f64(0.0); - float64x2_t sumAbsoluteErrorVec = vdupq_n_f64(0.0); - size_t i = 0; - - for (; i + 2 <= actual.size(); i += 2) { - float64x2_t measuredVec = vld1q_f64(&measured[i]); - float64x2_t actualVec = vld1q_f64(&actual[i]); - - float64x2_t predictedVec = - vmlaq_n_f64(vdupq_n_f64(intercept_), measuredVec, slope_); - - float64x2_t errorVec = vsubq_f64(actualVec, predictedVec); - - sumSquaredErrorVec = - vmlaq_f64(sumSquaredErrorVec, errorVec, errorVec); - sumAbsoluteErrorVec = - vaddq_f64(sumAbsoluteErrorVec, vabsq_f64(errorVec)); - - ssTotal += std::pow(actual[i] - meanActual, 2); - ssResidual += std::pow(predictedVec[i] - actual[i], 2); - } - - double tempSquaredError[2]; - vst1q_f64(tempSquaredError, sumSquaredErrorVec); - sumSquaredError = std::accumulate( - tempSquaredError, tempSquaredError + 2, sumSquaredError); - - double tempAbsoluteError[2]; - vst1q_f64(tempAbsoluteError, sumAbsoluteErrorVec); - sumAbsoluteError = std::accumulate( - tempAbsoluteError, tempAbsoluteError + 2, sumAbsoluteError); - -#endif -#endif - - for (auto i = 0; i < actual.size(); ++i) { - T predicted = apply(measured[i]); - T error = actual[i] - predicted; - residuals_.push_back(error); - - sumSquaredError += error * error; - sumAbsoluteError += std::abs(error); - ssTotal += std::pow(actual[i] - meanActual, 2); - ssResidual += std::pow(error, 2); - } - - mse_ = sumSquaredError / actual.size(); - mae_ = sumAbsoluteError / actual.size(); - r_squared_ = 1 - (ssResidual / ssTotal); - } - - using NonlinearFunction = std::function&)>; - - /** - * Solve a system of linear equations using the Levenberg-Marquardt method - * @param x Vector of x values - * @param y Vector of y values - * @param func Nonlinear function to fit - * @param initial_params Initial guess for the parameters - * @param max_iterations Maximum number of iterations - * @param lambda Regularization parameter - * @param epsilon Convergence criterion - * @return Vector of optimized parameters - */ - auto levenbergMarquardt(const std::vector& x, const std::vector& y, - NonlinearFunction func, - std::vector initial_params, - int max_iterations = 100, T lambda = 0.01, - T epsilon = 1e-8) -> std::vector { - int n = x.size(); - int m = initial_params.size(); - std::vector params = initial_params; - std::vector prevParams(m); - std::vector> jacobian(n, std::vector(m)); - - for (int iteration = 0; iteration < max_iterations; ++iteration) { - std::vector residuals(n); - for (int i = 0; i < n; ++i) { - residuals[i] = y[i] - func(x[i], params); - for (int j = 0; j < m; ++j) { - T h = std::max(1e-6, std::abs(params[j]) * 1e-6); - std::vector paramsPlusH = params; - paramsPlusH[j] += h; - jacobian[i][j] = - (func(x[i], paramsPlusH) - func(x[i], params)) / h; - } - } - - std::vector> JTJ(m, std::vector(m)); - std::vector jTr(m); - for (int i = 0; i < m; ++i) { - for (int j = 0; j < m; ++j) { - JTJ[i][j] = 0; - for (int k = 0; k < n; ++k) { - JTJ[i][j] += jacobian[k][i] * jacobian[k][j]; - } - if (i == j) - JTJ[i][j] += lambda; - } - jTr[i] = 0; - for (int k = 0; k < n; ++k) { - jTr[i] += jacobian[k][i] * residuals[k]; - } - } - - std::vector delta = solveLinearSystem(JTJ, jTr); - - prevParams = params; - for (int i = 0; i < m; ++i) { - params[i] += delta[i]; - } - - T diff = 0; - for (int i = 0; i < m; ++i) { - diff += std::abs(params[i] - prevParams[i]); - } - if (diff < epsilon) { - break; - } - } - - return params; - } - - /** - * Solve a system of linear equations using Gaussian elimination - * @param A Coefficient matrix - * @param b Right-hand side vector - * @return Solution vector - */ - auto solveLinearSystem(const std::vector>& A, - const std::vector& b) -> std::vector { - int n = A.size(); - std::vector> augmented(n, std::vector(n + 1)); - for (int i = 0; i < n; ++i) { - for (int j = 0; j < n; ++j) { - augmented[i][j] = A[i][j]; - } - augmented[i][n] = b[i]; - } - - for (int i = 0; i < n; ++i) { - int maxRow = i; - for (int k = i + 1; k < n; ++k) { - if (std::abs(augmented[k][i]) > - std::abs(augmented[maxRow][i])) { - maxRow = k; - } - } - std::swap(augmented[i], augmented[maxRow]); - - for (int k = i + 1; k < n; ++k) { - T factor = augmented[k][i] / augmented[i][i]; - for (int j = i; j <= n; ++j) { - augmented[k][j] -= factor * augmented[i][j]; - } - } - } - - std::vector x(n); - for (int i = n - 1; i >= 0; --i) { - x[i] = augmented[i][n]; - for (int j = i + 1; j < n; ++j) { - x[i] -= augmented[i][j] * x[j]; - } - x[i] /= augmented[i][i]; - } - - return x; - } - -public: - /** - * Linear calibration using the least squares method - * @param measured Vector of measured values - * @param actual Vector of actual values - */ - void linearCalibrate(const std::vector& measured, - const std::vector& actual) { - if (measured.size() != actual.size() || measured.empty()) { - THROW_INVALID_ARGUMENT( - "Input vectors must be non-empty and of equal size"); - } - - T sumX = std::accumulate(measured.begin(), measured.end(), T(0)); - T sumY = std::accumulate(actual.begin(), actual.end(), T(0)); - T sumXy = std::inner_product(measured.begin(), measured.end(), - actual.begin(), T(0)); - T sumXx = std::inner_product(measured.begin(), measured.end(), - measured.begin(), T(0)); - - T n = static_cast(measured.size()); - slope_ = (n * sumXy - sumX * sumY) / (n * sumXx - sumX * sumX); - intercept_ = (sumY - slope_ * sumX) / n; - - calculateMetrics(measured, actual); - } - - /** - * Polynomial calibration using the least squares method - * @param measured Vector of measured values - * @param actual Vector of actual values - * @param degree Degree of the polynomial - */ - void polynomialCalibrate(const std::vector& measured, - const std::vector& actual, int degree) { - if (measured.size() != actual.size() || measured.empty()) { - THROW_INVALID_ARGUMENT( - "Input vectors must be non-empty and of equal size"); - } - - auto polyFunc = [degree](T x, const std::vector& params) { - T result = 0; - for (int i = 0; i <= degree; ++i) { - result += params[i] * std::pow(x, i); - } - return result; - }; - - std::vector initialParams(degree + 1, 1.0); - auto params = - levenbergMarquardt(measured, actual, polyFunc, initialParams); - - slope_ = params[1]; // First-order coefficient as slope - intercept_ = params[0]; // Constant term as intercept - - calculateMetrics(measured, actual); - } - - /** - * Exponential calibration using the least squares method - * @param measured Vector of measured values - * @param actual Vector of actual values - */ - [[nodiscard]] auto apply(T value) const -> T { - return slope_ * value + intercept_; - } - - void printParameters() const { - LOG_F(INFO, "Calibration parameters: slope = {}, intercept = {}", - slope_, intercept_); - if (r_squared_.has_value()) { - LOG_F(INFO, "R-squared = {}", r_squared_.value()); - } - LOG_F(INFO, "MSE = {}, MAE = {}", mse_, mae_); - } - - [[nodiscard]] auto getResiduals() const -> std::vector { - return residuals_; - } - - void plotResiduals(const std::string& filename) const { - std::ofstream file(filename); - if (!file.is_open()) { - THROW_FAIL_TO_OPEN_FILE("Failed to open file: " + filename); - } - - file << "Index,Residual\n"; - for (size_t i = 0; i < residuals_.size(); ++i) { - file << i << "," << residuals_[i] << "\n"; - } - } - - /** - * Bootstrap confidence interval for the slope - * @param measured Vector of measured values - * @param actual Vector of actual values - * @param n_iterations Number of bootstrap iterations - * @param confidence_level Confidence level for the interval - * @return Pair of lower and upper bounds of the confidence interval - */ - auto bootstrapConfidenceInterval( - const std::vector& measured, const std::vector& actual, - int n_iterations = 1000, - double confidence_level = 0.95) -> std::pair { - std::vector bootstrapSlopes; - std::random_device rd; - std::mt19937 gen(rd()); - std::uniform_int_distribution<> dis(0, measured.size() - 1); - - for (int i = 0; i < n_iterations; ++i) { - std::vector bootMeasured; - std::vector bootActual; - for (size_t j = 0; j < measured.size(); ++j) { - int idx = dis(gen); - bootMeasured.push_back(measured[idx]); - bootActual.push_back(actual[idx]); - } - - AdvancedErrorCalibration bootCalibrator; - bootCalibrator.linearCalibrate(bootMeasured, bootActual); - bootstrapSlopes.push_back(bootCalibrator.getSlope()); - } - - std::sort(bootstrapSlopes.begin(), bootstrapSlopes.end()); - int lowerIdx = - static_cast((1 - confidence_level) / 2 * n_iterations); - int upperIdx = - static_cast((1 + confidence_level) / 2 * n_iterations); - - return {bootstrapSlopes[lowerIdx], bootstrapSlopes[upperIdx]}; - } - - /** - * Detect outliers using the residuals of the calibration - * @param measured Vector of measured values - * @param actual Vector of actual values - * @param threshold Threshold for outlier detection - * @return Tuple of mean residual, standard deviation, and threshold - */ - auto outlierDetection(const std::vector& measured, - const std::vector& actual, - T threshold = 2.0) -> std::tuple { - if (residuals_.empty()) { - THROW_RUNTIME_ERROR("Please call calculate_metrics() first"); - } - - T meanResidual = - std::accumulate(residuals_.begin(), residuals_.end(), T(0)) / - residuals_.size(); - T std_dev = std::sqrt( - std::accumulate(residuals_.begin(), residuals_.end(), T(0), - [meanResidual](T acc, T val) { - return acc + std::pow(val - meanResidual, 2); - }) / - residuals_.size()); - -#if ENABLE_DEBUG - std::cout << "Detected outliers:" << std::endl; - for (size_t i = 0; i < residuals_.size(); ++i) { - if (std::abs(residuals_[i] - meanResidual) > threshold * std_dev) { - std::cout << "Index: " << i << ", Measured: " << measured[i] - << ", Actual: " << actual[i] - << ", Residual: " << residuals_[i] << std::endl; - } - } -#endif - return {meanResidual, std_dev, threshold}; - } - - void crossValidation(const std::vector& measured, - const std::vector& actual, int k = 5) { - if (measured.size() != actual.size() || measured.size() < k) { - THROW_INVALID_ARGUMENT( - "Input vectors must be non-empty and of size greater than k"); - } - - std::vector mseValues; - std::vector maeValues; - std::vector rSquaredValues; - - for (int i = 0; i < k; ++i) { - std::vector trainMeasured; - std::vector trainActual; - std::vector testMeasured; - std::vector testActual; - for (size_t j = 0; j < measured.size(); ++j) { - if (j % k == i) { - testMeasured.push_back(measured[j]); - testActual.push_back(actual[j]); - } else { - trainMeasured.push_back(measured[j]); - trainActual.push_back(actual[j]); - } - } - - AdvancedErrorCalibration cvCalibrator; - cvCalibrator.linearCalibrate(trainMeasured, trainActual); - - T foldMse = 0; - T foldMae = 0; - T foldSsTotal = 0; - T foldSsResidual = 0; - T meanTestActual = - std::accumulate(testActual.begin(), testActual.end(), T(0)) / - testActual.size(); - for (size_t j = 0; j < testMeasured.size(); ++j) { - T predicted = cvCalibrator.apply(testMeasured[j]); - T error = testActual[j] - predicted; - foldMse += error * error; - foldMae += std::abs(error); - foldSsTotal += std::pow(testActual[j] - meanTestActual, 2); - foldSsResidual += std::pow(error, 2); - } - - mseValues.push_back(foldMse / testMeasured.size()); - maeValues.push_back(foldMae / testMeasured.size()); - rSquaredValues.push_back(1 - (foldSsResidual / foldSsTotal)); - } - - T avgMse = - std::accumulate(mseValues.begin(), mseValues.end(), T(0)) / k; - T avgMae = - std::accumulate(maeValues.begin(), maeValues.end(), T(0)) / k; - T avgRSquared = std::accumulate(rSquaredValues.begin(), - rSquaredValues.end(), T(0)) / - k; - -#if ENABLE_DEBUG - std::cout << "K-fold cross-validation results (k = " << k - << "):" << std::endl; - std::cout << "Average MSE: " << avgMse << std::endl; - std::cout << "Average MAE: " << avgMae << std::endl; - std::cout << "Average R-squared: " << avgRSquared << std::endl; -#endif - } - - [[nodiscard]] auto getSlope() const -> T { return slope_; } - [[nodiscard]] auto getIntercept() const -> T { return intercept_; } - [[nodiscard]] auto getRSquared() const -> std::optional { - return r_squared_; - } - [[nodiscard]] auto getMse() const -> T { return mse_; } - [[nodiscard]] auto getMae() const -> T { return mae_; } -}; -} // namespace atom::algorithm - -#endif // ATOM_ALGORITHM_ERROR_CALIBRATION_HPP diff --git a/src/atom/algorithm/fnmatch.cpp b/src/atom/algorithm/fnmatch.cpp deleted file mode 100644 index 9e537a76..00000000 --- a/src/atom/algorithm/fnmatch.cpp +++ /dev/null @@ -1,205 +0,0 @@ -/* - * fnmatch.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-5-2 - -Description: Python Like fnmatch for C++ - -**************************************************/ - -#include "fnmatch.hpp" - -#include -#include -#include -#include - -#ifdef _WIN32 -#include -#else -#include -#endif - -namespace atom::algorithm { - -#ifdef _WIN32 -constexpr int FNM_NOESCAPE = 0x01; -constexpr int FNM_PATHNAME = 0x02; -constexpr int FNM_PERIOD = 0x04; -constexpr int FNM_CASEFOLD = 0x08; -#endif - -auto fnmatch(std::string_view pattern, std::string_view string, - int flags) -> bool { -#ifdef _WIN32 - auto p = pattern.begin(); - auto s = string.begin(); - - while (p != pattern.end() && s != string.end()) { - switch (*p) { - case '?': - ++s; - break; - case '*': - if (++p == pattern.end()) { - return true; - } - while (s != string.end()) { - if (fnmatch({p, pattern.end()}, {s, string.end()}, flags)) { - return true; - } - ++s; - } - return false; - case '[': { - if (++p == pattern.end()) { - return false; - } - bool invert = false; - if (*p == '!') { - invert = true; - ++p; - } - bool matched = false; - char last_char = 0; - while (p != pattern.end() && *p != ']') { - if (*p == '-' && last_char != 0 && p + 1 != pattern.end() && - *(p + 1) != ']') { - ++p; - if (*s >= last_char && *s <= *p) { - matched = true; - break; - } - } else { - if (*s == *p) { - matched = true; - break; - } - last_char = *p; - } - ++p; - } - if (invert) { - matched = !matched; - } - if (!matched) { - return false; - } - ++s; - break; - } - case '\\': - if (!(flags & FNM_NOESCAPE) && ++p == pattern.end()) { - return false; - } - [[fallthrough]]; - default: - if ((flags & FNM_CASEFOLD) - ? (std::tolower(*p) != std::tolower(*s)) - : (*p != *s)) { - return false; - } - ++s; - break; - } - ++p; - } - - if (p == pattern.end() && s == string.end()) { - return true; - } - if (p != pattern.end() && *p == '*') { - ++p; - } - return p == pattern.end() && s == string.end(); -#else - return ::fnmatch(pattern.data(), string.data(), flags) == 0; -#endif -} - -auto filter(const std::vector& names, std::string_view pattern, - int flags) -> bool { - return std::ranges::any_of(names, [&](const std::string& name) { - return fnmatch(pattern, name, flags); - }); -} - -auto filter(const std::vector& names, - const std::vector& patterns, - int flags) -> std::vector { - std::vector result; - for (const auto& name : names) { - if (std::ranges::any_of(patterns, [&](std::string_view pattern) { - return fnmatch(pattern, name, flags); - })) { - result.push_back(name); - } - } - return result; -} - -auto translate(std::string_view pattern, std::string& result, - int flags) -> bool { - result.clear(); - for (auto it = pattern.begin(); it != pattern.end(); ++it) { - switch (*it) { - case '*': - result += ".*"; - break; - case '?': - result += '.'; - break; - case '[': { - result += '['; - if (++it == pattern.end()) { - return false; - } - if (*it == '!') { - result += '^'; - ++it; - } - if (it == pattern.end()) { - return false; - } - char lastChar = *it; - result += *it; - while (++it != pattern.end() && *it != ']') { - if (*it == '-' && it + 1 != pattern.end() && - *(it + 1) != ']') { - result += *it; - result += *(++it); - lastChar = *it; - } else { - result += *it; - lastChar = *it; - } - } - result += ']'; - break; - } - case '\\': - if (!(flags & FNM_NOESCAPE) && ++it == pattern.end()) { - return false; - } - [[fallthrough]]; - default: - if ((flags & FNM_CASEFOLD) && std::isalpha(*it)) { - result += '['; - result += std::tolower(*it); - result += std::toupper(*it); - result += ']'; - } else { - result += *it; - } - break; - } - } - return true; -} - -} // namespace atom::algorithm diff --git a/src/atom/algorithm/fnmatch.hpp b/src/atom/algorithm/fnmatch.hpp deleted file mode 100644 index 56cab250..00000000 --- a/src/atom/algorithm/fnmatch.hpp +++ /dev/null @@ -1,88 +0,0 @@ -/* - * fnmatch.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-5-2 - -Description: Python Like fnmatch for C++ - -**************************************************/ - -#ifndef ATOM_SYSTEM_FNMATCH_HPP -#define ATOM_SYSTEM_FNMATCH_HPP - -#include -#include -#include - -namespace atom::algorithm { -/** - * @brief Matches a string against a specified pattern. - * - * This function compares the given `string` against the specified `pattern` - * using shell-style pattern matching. The `flags` parameter can be used to - * modify the behavior of the matching process. - * - * @param pattern The pattern to match against. - * @param string The string to match. - * @param flags Optional flags to modify the matching behavior (default is 0). - * @return True if the `string` matches the `pattern`, false otherwise. - */ -auto fnmatch(std::string_view pattern, std::string_view string, int flags = 0) -> bool; - -/** - * @brief Filters a vector of strings based on a specified pattern. - * - * This function filters the given vector of `names` based on the specified - * `pattern` using shell-style pattern matching. The `flags` parameter can be - * used to modify the filtering behavior. - * - * @param names The vector of strings to filter. - * @param pattern The pattern to filter with. - * @param flags Optional flags to modify the filtering behavior (default is 0). - * @return True if any element of `names` matches the `pattern`, false - * otherwise. - */ -auto filter(const std::vector& names, std::string_view pattern, - int flags = 0) -> bool; - -/** - * @brief Filters a vector of strings based on multiple patterns. - * - * This function filters the given vector of `names` based on the specified - * `patterns` using shell-style pattern matching. The `flags` parameter can be - * used to modify the filtering behavior. - * - * @param names The vector of strings to filter. - * @param patterns The vector of patterns to filter with. - * @param flags Optional flags to modify the filtering behavior (default is 0). - * @return A vector containing strings from `names` that match any pattern in - * `patterns`. - */ -auto filter(const std::vector& names, - const std::vector& patterns, - int flags = 0) -> std::vector; - -/** - * @brief Translates a pattern into a different representation. - * - * This function translates the specified `pattern` into a different - * representation and stores the result in the `result` parameter. The `flags` - * parameter can be used to modify the translation behavior. - * - * @param pattern The pattern to translate. - * @param result A reference to a string where the translated pattern will be - * stored. - * @param flags Optional flags to modify the translation behavior (default is - * 0). - * @return True if the translation was successful, false otherwise. - */ -auto translate(std::string_view pattern, std::string& result, int flags = 0) -> bool; - -} // namespace atom::algorithm - -#endif // ATOM_SYSTEM_FNMATCH_HPP diff --git a/src/atom/algorithm/fraction.cpp b/src/atom/algorithm/fraction.cpp deleted file mode 100644 index acb6d16b..00000000 --- a/src/atom/algorithm/fraction.cpp +++ /dev/null @@ -1,142 +0,0 @@ -#include "fraction.hpp" - -#include -#include -#include - -#include "atom/error/exception.hpp" - -namespace atom::algorithm { - -int Fraction::gcd(int a, int b) { return std::gcd(a, b); } - -void Fraction::reduce() { - int g = gcd(numerator, denominator); - numerator /= g; - denominator /= g; - if (denominator < 0) { - numerator = -numerator; - denominator = -denominator; - } -} - -Fraction::Fraction(int n, int d) : numerator(n), denominator(d) { - if (denominator == 0) { - THROW_INVALID_ARGUMENT("Denominator cannot be zero."); - } - reduce(); -} - -auto Fraction::operator+=(const Fraction &other) -> Fraction & { - numerator = numerator * other.denominator + other.numerator * denominator; - denominator *= other.denominator; - reduce(); - return *this; -} - -auto Fraction::operator-=(const Fraction &other) -> Fraction & { - numerator = numerator * other.denominator - other.numerator * denominator; - denominator *= other.denominator; - reduce(); - return *this; -} - -auto Fraction::operator*=(const Fraction &other) -> Fraction & { - numerator *= other.numerator; - denominator *= other.denominator; - reduce(); - return *this; -} - -auto Fraction::operator/=(const Fraction &other) -> Fraction & { - if (other.numerator == 0) { - THROW_INVALID_ARGUMENT("Division by zero."); - } - numerator *= other.denominator; - denominator *= other.numerator; - reduce(); - return *this; -} - -auto Fraction::operator+(const Fraction &other) const -> Fraction { - Fraction result = *this; - result += other; - return result; -} - -auto Fraction::operator-(const Fraction &other) const -> Fraction { - Fraction result = *this; - result -= other; - return result; -} - -auto Fraction::operator*(const Fraction &other) const -> Fraction { - Fraction result = *this; - result *= other; - return result; -} - -auto Fraction::operator/(const Fraction &other) const -> Fraction { - Fraction result = *this; - result /= other; - return result; -} - -auto Fraction::operator==(const Fraction &other) const -> bool { - return (numerator == other.numerator) && (denominator == other.denominator); -} - -Fraction::operator double() const { return toDouble(); } - -Fraction::operator float() const { return static_cast(toDouble()); } - -Fraction::operator int() const { return numerator / denominator; } - -auto Fraction::toString() const -> std::string { - if (denominator == 1) { - return std::to_string(numerator); - } - return std::to_string(numerator) + "/" + std::to_string(denominator); -} - -auto Fraction::toDouble() const -> double { - return static_cast(numerator) / denominator; -} - -auto operator<<(std::ostream &os, const Fraction &f) -> std::ostream & { - os << f.toString(); - return os; -} - -auto operator>>(std::istream &is, Fraction &f) -> std::istream & { - std::string input; - is >> input; - std::istringstream iss(input); - - if (input.find('/') != std::string::npos) { - int n, d; - char slash; - if (iss >> n >> slash >> d && slash == '/') { - if (d == 0) { - is.setstate(std::ios::failbit); - } else { - f = Fraction(n, d); - } - } else { - is.setstate(std::ios::failbit); - } - } else { - double value; - if (iss >> value) { - int n = static_cast(value * 10000); - int d = 10000; - f = Fraction(n, d); - } else { - is.setstate(std::ios::failbit); - } - } - - return is; -} - -} // namespace atom::algorithm diff --git a/src/atom/algorithm/fraction.hpp b/src/atom/algorithm/fraction.hpp deleted file mode 100644 index 2e0a2262..00000000 --- a/src/atom/algorithm/fraction.hpp +++ /dev/null @@ -1,184 +0,0 @@ -/* - * fraction.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-3-28 - -Description: Implementation of fraction class - -**************************************************/ - -#ifndef ATOM_ALGORITHM_FRACTION_HPP -#define ATOM_ALGORITHM_FRACTION_HPP - -#include -#include -#include - -namespace atom::algorithm { -/** - * @brief Represents a fraction with numerator and denominator. - */ -class Fraction { - /** - * @brief Computes the greatest common divisor (GCD) of two numbers. - * @param a The first number. - * @param b The second number. - * @return The GCD of the two numbers. - */ - static int gcd(int a, int b); - - /** - * @brief Reduces the fraction to its simplest form. - */ - void reduce(); - - // For pybind11 compatibility -public: - int numerator; /**< The numerator of the fraction. */ - int denominator; /**< The denominator of the fraction. */ - - /** - * @brief Constructs a new Fraction object with the given numerator and - * denominator. - * @param n The numerator (default is 0). - * @param d The denominator (default is 1). - */ - explicit Fraction(int n = 0, int d = 1); - - /** - * @brief Adds another fraction to this fraction. - * @param other The fraction to add. - * @return Reference to the modified fraction. - */ - auto operator+=(const Fraction& other) -> Fraction&; - - /** - * @brief Subtracts another fraction from this fraction. - * @param other The fraction to subtract. - * @return Reference to the modified fraction. - */ - auto operator-=(const Fraction& other) -> Fraction&; - - /** - * @brief Multiplies this fraction by another fraction. - * @param other The fraction to multiply by. - * @return Reference to the modified fraction. - */ - auto operator*=(const Fraction& other) -> Fraction&; - - /** - * @brief Divides this fraction by another fraction. - * @param other The fraction to divide by. - * @return Reference to the modified fraction. - */ - auto operator/=(const Fraction& other) -> Fraction&; - - /** - * @brief Adds another fraction to this fraction. - * @param other The fraction to add. - * @return The result of addition. - */ - auto operator+(const Fraction& other) const -> Fraction; - - /** - * @brief Subtracts another fraction from this fraction. - * @param other The fraction to subtract. - * @return The result of subtraction. - */ - auto operator-(const Fraction& other) const -> Fraction; - - /** - * @brief Multiplies this fraction by another fraction. - * @param other The fraction to multiply by. - * @return The result of multiplication. - */ - auto operator*(const Fraction& other) const -> Fraction; - - /** - * @brief Divides this fraction by another fraction. - * @param other The fraction to divide by. - * @return The result of division. - */ - auto operator/(const Fraction& other) const -> Fraction; - -#if __cplusplus >= 202002L - /** - * @brief Compares this fraction with another fraction. - * @param other The fraction to compare with. - * @return An integer indicating the comparison result. - */ - auto operator<=>(const Fraction& other) const { - double diff = this->toDouble() - other.toDouble(); - if (diff > 0) { - return std::strong_ordering::greater; - } - if (diff < 0) { - return std::strong_ordering::less; - } - return std::strong_ordering::equal; - } -#endif - - /** - * @brief Checks if this fraction is equal to another fraction. - * @param other The fraction to compare with. - * @return True if fractions are equal, false otherwise. - */ - auto operator==(const Fraction& other) const -> bool; - - /** - * @brief Converts the fraction to a double value. - * @return The fraction as a double. - */ - explicit operator double() const; - - /** - * @brief Converts the fraction to a float value. - * @return The fraction as a float. - */ - explicit operator float() const; - - /** - * @brief Converts the fraction to an integer value. - * @return The fraction as an integer. - */ - explicit operator int() const; - - /** - * @brief Converts the fraction to a string representation. - * @return The string representation of the fraction. - */ - [[nodiscard]] auto toString() const -> std::string; - - /** - * @brief Converts the fraction to a double value. - * @return The fraction as a double. - */ - [[nodiscard]] auto toDouble() const -> double; - - /** - * @brief Outputs the fraction to the output stream. - * @param os The output stream. - * @param f The fraction to output. - * @return Reference to the output stream. - */ - friend auto operator<<(std::ostream& os, - const Fraction& f) -> std::ostream&; - - /** - * @brief Inputs the fraction from the input stream. - * @param is The input stream. - * @param f The fraction to input. - * @return Reference to the input stream. - */ - friend auto operator>>(std::istream& is, Fraction& f) -> std::istream&; -}; - -} // namespace atom::algorithm - -#endif diff --git a/src/atom/algorithm/hash.hpp b/src/atom/algorithm/hash.hpp deleted file mode 100644 index d9af5d38..00000000 --- a/src/atom/algorithm/hash.hpp +++ /dev/null @@ -1,146 +0,0 @@ -/* - * hash.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-3-28 - -Description: A collection of hash algorithms - -**************************************************/ - -#ifndef ATOM_ALGORITHM_HASH_HPP -#define ATOM_ALGORITHM_HASH_HPP - -#include -#include -#include -#include -#include - -namespace atom::algorithm { - -/** - * @brief Concept for types that can be hashed. - * - * A type is Hashable if it supports hashing via std::hash and the result is - * convertible to std::size_t. - */ -template -concept Hashable = requires(T a) { - { std::hash{}(a) } -> std::convertible_to; -}; - -/** - * @brief Computes the hash value for a single Hashable value. - * - * @tparam T Type of the value to hash, must satisfy Hashable concept. - * @param value The value to hash. - * @return std::size_t Hash value of the input value. - */ -template -auto computeHash(const T& value) -> std::size_t { - return std::hash{}(value); -} - -/** - * @brief Computes the hash value for a vector of Hashable values. - * - * @tparam T Type of the elements in the vector, must satisfy Hashable concept. - * @param values The vector of values to hash. - * @return std::size_t Hash value of the vector of values. - */ -template -auto computeHash(const std::vector& values) -> std::size_t { - std::size_t result = 0; - for (const auto& value : values) { - result ^= - computeHash(value) + 0x9e3779b9 + (result << 6) + (result >> 2); - } - return result; -} - -/** - * @brief Computes the hash value for a tuple of Hashable values. - * - * @tparam Ts Types of the elements in the tuple, all must satisfy Hashable - * concept. - * @param tuple The tuple of values to hash. - * @return std::size_t Hash value of the tuple of values. - */ -template -auto computeHash(const std::tuple& tuple) -> std::size_t { - std::size_t result = 0; - std::apply( - [&result](const Ts&... values) { - ((result ^= - computeHash(values) + 0x9e3779b9 + (result << 6) + (result >> 2)), - ...); - }, - tuple); - return result; -} - -/** - * @brief Computes the hash value for an array of Hashable values. - * - * @tparam T Type of the elements in the array, must satisfy Hashable concept. - * @tparam N Size of the array. - * @param array The array of values to hash. - * @return std::size_t Hash value of the array of values. - */ -template -auto computeHash(const std::array& array) -> std::size_t { - std::size_t result = 0; - for (const auto& value : array) { - result ^= - computeHash(value) + 0x9e3779b9 + (result << 6) + (result >> 2); - } - return result; -} - -inline auto computeHash(const std::any& value) -> std::size_t { - if (value.has_value()) { - return value.type().hash_code(); - } - return 0; -} -} // namespace atom::algorithm - -/** - * @brief Computes a hash value for a null-terminated string using FNV-1a - * algorithm. - * - * @param str Pointer to the null-terminated string to hash. - * @param basis Initial basis value for hashing. - * @return constexpr unsigned int Hash value of the string. - */ -constexpr auto hash(const char* str, - unsigned int basis = 2166136261U) -> unsigned int { - while (*str != 0) { - basis = (basis ^ static_cast(*str)) * 16777619u; - ++str; - } - return basis; -} - -/** - * @brief User-defined literal for computing hash values of string literals. - * - * Example usage: "example"_hash - * - * @param str Pointer to the string literal to hash. - * @param size Size of the string literal (unused). - * @return constexpr unsigned int Hash value of the string literal. - */ -constexpr auto operator""_hash(const char* str, - std::size_t size) -> unsigned int { - // The size parameter is not used in this implementation - static_cast(size); - return hash(str); -} - -#endif // ATOM_ALGORITHM_HASH_HPP diff --git a/src/atom/algorithm/huffman.cpp b/src/atom/algorithm/huffman.cpp deleted file mode 100644 index 89d5f742..00000000 --- a/src/atom/algorithm/huffman.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* - * huffman.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-11-24 - -Description: Simple implementation of Huffman encoding - -**************************************************/ - -#include "huffman.hpp" - -#include - -#ifdef USE_OPENMP -#include -#endif - -namespace atom::algorithm { -HuffmanNode::HuffmanNode(char data, int frequency) - : data(data), frequency(frequency), left(nullptr), right(nullptr) {} - -auto createHuffmanTree(const std::unordered_map& frequencies) - -> std::shared_ptr { - auto compare = [](const std::shared_ptr& a, - const std::shared_ptr& b) { - return a->frequency > b->frequency; - }; - - std::priority_queue, - std::vector>, - decltype(compare)> - minHeap(compare); - - for (const auto& [data, frequency] : frequencies) { - minHeap.push(std::make_unique(data, frequency)); - } - - while (minHeap.size() > 1) { - auto left = minHeap.top(); - minHeap.pop(); - auto right = minHeap.top(); - minHeap.pop(); - - auto newNode = std::make_unique( - '$', left->frequency + right->frequency); - newNode->left = std::move(left); - newNode->right = std::move(right); - - minHeap.push(std::move(newNode)); - } - - return minHeap.empty() ? nullptr : minHeap.top(); -} - -void generateHuffmanCodes(const HuffmanNode* root, const std::string& code, - std::unordered_map& huffmanCodes) { - if (root == nullptr) { - return; - } - if (!root->left && !root->right) { - huffmanCodes[root->data] = code; - } else { - generateHuffmanCodes(root->left.get(), code + "0", huffmanCodes); - generateHuffmanCodes(root->right.get(), code + "1", huffmanCodes); - } - if (!root->left && !root->right) { - huffmanCodes[root->data] = code; - } else { - generateHuffmanCodes(root->left.get(), code + "0", huffmanCodes); - generateHuffmanCodes(root->right.get(), code + "1", huffmanCodes); - } -} - -auto compressText(std::string_view TEXT, - const std::unordered_map& huffmanCodes) - -> std::string { - std::string compressedText; - -#ifdef USE_OPENMP -#pragma omp parallel - { - std::string local_compressed; -#pragma omp for nowait schedule(static) - for (std::size_t i = 0; i < TEXT.size(); ++i) { - local_compressed += huffmanCodes.at(TEXT[i]); - } -#pragma omp critical - compressedText += local_compressed; - } -#else - for (char c : TEXT) { - compressedText += huffmanCodes.at(c); - } -#endif - - return compressedText; -} - -auto decompressText(std::string_view COMPRESSED_TEXT, - const HuffmanNode* root) -> std::string { - std::string decompressedText; - const HuffmanNode* current = root; - - for (char bit : COMPRESSED_TEXT) { - current = (bit == '0') ? current->left.get() : current->right.get(); - if ((current != nullptr) && !current->left && !current->right) { - decompressedText += current->data; - current = root; - } - } - - return decompressedText; -} -} // namespace atom::algorithm diff --git a/src/atom/algorithm/huffman.hpp b/src/atom/algorithm/huffman.hpp deleted file mode 100644 index 73973d39..00000000 --- a/src/atom/algorithm/huffman.hpp +++ /dev/null @@ -1,109 +0,0 @@ -/* - * huffman.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-11-24 - -Description: Simple implementation of Huffman encoding - -**************************************************/ - -#ifndef ATOM_ALGORITHM_HUFFMAN_HPP -#define ATOM_ALGORITHM_HUFFMAN_HPP - -#include -#include -#include - -namespace atom::algorithm { -/** - * @brief Represents a node in the Huffman tree. - * - * This structure is used to construct the Huffman tree for encoding and - * decoding text based on character frequencies. - */ -struct HuffmanNode { - char data; ///< Character stored in this node (used only in leaf nodes). - int frequency; ///< Frequency of the character or sum of frequencies for - ///< internal nodes. - std::shared_ptr left; ///< Pointer to the left child node. - std::shared_ptr right; ///< Pointer to the right child node. - - /** - * @brief Constructs a new Huffman Node. - * - * @param data Character to store in the node. - * @param frequency Frequency of the character or combined frequency for a - * parent node. - */ - explicit HuffmanNode(char data, int frequency); -}; - -/** - * @brief Creates a Huffman tree based on the frequency of characters. - * - * This function builds a Huffman tree using the frequencies of characters in - * the input text. It employs a priority queue to build the tree from the bottom - * up by merging the two least frequent nodes until only one node remains, which - * becomes the root. - * - * @param frequencies A map of characters and their corresponding frequencies. - * @return A shared pointer to the root of the Huffman tree. - */ -[[nodiscard]] auto createHuffmanTree( - const std::unordered_map& frequencies) - -> std::shared_ptr; - -/** - * @brief Generates Huffman codes for each character from the Huffman tree. - * - * This function recursively traverses the Huffman tree and assigns a binary - * code to each character. These codes are derived from the path taken to reach - * the character: left child gives '0' and right child gives '1'. - * - * @param root Pointer to the root node of the Huffman tree. - * @param code Current Huffman code generated during the traversal. - * @param huffmanCodes A reference to a map where the character and its - * corresponding Huffman code will be stored. - */ -void generateHuffmanCodes(const HuffmanNode* root, const std::string& code, - std::unordered_map& huffmanCodes); - -/** - * @brief Compresses text using Huffman codes. - * - * This function converts a string of text into a string of binary codes based - * on the Huffman codes provided. Each character in the input text is replaced - * by its corresponding Huffman code. - * - * @param text The original text to compress. - * @param huffmanCodes The map of characters to their corresponding Huffman - * codes. - * @return A string representing the compressed text. - */ -[[nodiscard]] auto compressText( - std::string_view TEXT, - const std::unordered_map& huffmanCodes) -> std::string; - -/** - * @brief Decompresses Huffman encoded text back to its original form. - * - * This function decodes a string of binary codes back into the original text - * using the provided Huffman tree. It traverses the Huffman tree from the root - * to the leaf nodes based on the binary string, reconstructing the original - * text. - * - * @param compressedText The Huffman encoded text. - * @param root Pointer to the root of the Huffman tree. - * @return The original decompressed text. - */ -[[nodiscard]] auto decompressText(std::string_view COMPRESSED_TEXT, - const HuffmanNode* root) -> std::string; - -} // namespace atom::algorithm - -#endif diff --git a/src/atom/algorithm/math.cpp b/src/atom/algorithm/math.cpp deleted file mode 100644 index 2578861b..00000000 --- a/src/atom/algorithm/math.cpp +++ /dev/null @@ -1,261 +0,0 @@ -/* - * mathutils.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-11-10 - -Description: Extra Math Library with SIMD support - -**************************************************/ - -#include "math.hpp" - -#include // For std::bit_width -#include // For std::sqrt -#include // For std::gcd -#ifdef _MSC_VER -#include // For std::runtime_error -#endif - -#include "atom/error/exception.hpp" - -// SIMD headers -#ifdef USE_SIMD -#if defined(__x86_64__) || defined(_M_X64) -#include -#elif defined(__ARM_NEON) -#include -#endif -#endif - -namespace atom::algorithm { - -#if defined(__GNUC__) && defined(__SIZEOF_INT128__) -auto mulDiv64(uint64_t operand, uint64_t multiplier, - uint64_t divider) -> uint64_t { - if (divider == 0) { - THROW_INVALID_ARGUMENT("Division by zero"); - } - - __uint128_t a = operand; - __uint128_t b = multiplier; - __uint128_t c = divider; - - return static_cast((a * b) / c); -} -#elif defined(_MSC_VER) -#include // For _umul128 and _BitScanReverse - -uint64_t mulDiv64(uint64_t operand, uint64_t multiplier, uint64_t divider) { - if (divider == 0) { - THROW_INVALID_ARGUMENT("Division by zero"); - } - - uint64_t highProd; - uint64_t lowProd = _umul128(operand, multiplier, &highProd); - - unsigned long shift = 63 - std::bit_width(divider - 1); - uint64_t normDiv = divider << shift; - - highProd = (highProd << shift) | (lowProd >> (64 - shift)); - lowProd <<= shift; - - uint64_t quotient; - _udiv128(highProd, lowProd, normDiv, "ient); - - return quotient; -} -#else -#error "Platform not supported for mulDiv64 function!" -#endif - -auto safeAdd(uint64_t a, uint64_t b) -> uint64_t { - uint64_t result; - if (__builtin_add_overflow(a, b, &result)) { - THROW_OVERFLOW("Overflow in addition"); - } - return result; -} - -auto safeMul(uint64_t a, uint64_t b) -> uint64_t { - uint64_t result; - if (__builtin_mul_overflow(a, b, &result)) { - THROW_OVERFLOW("Overflow in multiplication"); - } - return result; -} - -auto rotl64(uint64_t n, unsigned int c) -> uint64_t { return std::rotl(n, c); } - -auto rotr64(uint64_t n, unsigned int c) -> uint64_t { return std::rotr(n, c); } - -auto clz64(uint64_t x) -> int { - if (x == 0) { - return 64; - } - return __builtin_clzll(x); -} - -auto normalize(uint64_t x) -> uint64_t { - if (x == 0) { - return 0; - } - int n = clz64(x); - return x << n; -} - -auto safeSub(uint64_t a, uint64_t b) -> uint64_t { - uint64_t result; - if (__builtin_sub_overflow(a, b, &result)) { - THROW_UNDERFLOW("Underflow in subtraction"); - } - return result; -} - -auto safeDiv(uint64_t a, uint64_t b) -> uint64_t { - if (b == 0) { - THROW_INVALID_ARGUMENT("Division by zero"); - } - return a / b; -} - -auto bitReverse64(uint64_t n) -> uint64_t { -#ifdef USE_SIMD -#if defined(__x86_64__) || defined(_M_X64) - return _byteswap_uint64(n); -#elif defined(__ARM_NEON) - return vrev64_u8(vcreate_u8(n)); -#else - // Fallback to non-SIMD implementation -#endif -#endif - n = ((n & 0xAAAAAAAAAAAAAAAA) >> 1) | ((n & 0x5555555555555555) << 1); - n = ((n & 0xCCCCCCCCCCCCCCCC) >> 2) | ((n & 0x3333333333333333) << 2); - n = ((n & 0xF0F0F0F0F0F0F0F0) >> 4) | ((n & 0x0F0F0F0F0F0F0F0F) << 4); - n = ((n & 0xFF00FF00FF00FF00) >> 8) | ((n & 0x00FF00FF00FF00FF) << 8); - n = ((n & 0xFFFF0000FFFF0000) >> 16) | ((n & 0x0000FFFF0000FFFF) << 16); - n = (n >> 32) | (n << 32); - return n; -} - -auto approximateSqrt(uint64_t n) -> uint64_t { -#ifdef USE_SIMD -#if defined(__x86_64__) || defined(_M_X64) - return _mm_cvtsd_si64( - _mm_sqrt_sd(_mm_setzero_pd(), _mm_set_sd(static_cast(n)))); -#elif defined(__ARM_NEON) - float32x2_t x = vdup_n_f32(static_cast(n)); - float32x2_t sqrt_reciprocal = vrsqrte_f32(x); - float32x2_t result = vmul_f32(x, sqrt_reciprocal); - return static_cast(vget_lane_f32(result, 0)); -#else - // Fallback to non-SIMD implementation -#endif -#endif - if (n == 0 || n == 1) { - return n; - } - double x = n; - double y = 1; - double e = 0.000001; - while (x - y > e) { - x = (x + y) / 2; - y = n / x; - } - return static_cast(x); -} - -auto gcd64(uint64_t a, uint64_t b) -> uint64_t { return std::gcd(a, b); } - -auto lcm64(uint64_t a, uint64_t b) -> uint64_t { return a / gcd64(a, b) * b; } - -auto isPowerOfTwo(uint64_t n) -> bool { return n != 0 && (n & (n - 1)) == 0; } - -auto nextPowerOfTwo(uint64_t n) -> uint64_t { -#ifdef USE_SIMD -#if defined(__x86_64__) || defined(_M_X64) - if (n == 0) - return 1; - unsigned long index; - _BitScanReverse64(&index, n); - return 1ULL << (index + 1); -#elif defined(__ARM_NEON) - if (n == 0) - return 1; - return 1ULL << (64 - __builtin_clzll(n - 1)); -#else - // Fallback to non-SIMD implementation -#endif -#endif - if (n == 0) { - return 1; - } - --n; - n |= n >> 1; - n |= n >> 2; - n |= n >> 4; - n |= n >> 8; - n |= n >> 16; - n |= n >> 32; - return n + 1; -} - -// New SIMD-optimized functions - -#ifdef USE_SIMD - -template -void vectorAdd(const T* a, const T* b, T* result, size_t size) { -#if defined(__x86_64__) || defined(_M_X64) - for (size_t i = 0; i < size; i += N) { - __m256i va = - _mm256_loadu_si256(reinterpret_cast(a + i)); - __m256i vb = - _mm256_loadu_si256(reinterpret_cast(b + i)); - __m256i vr = _mm256_add_epi32(va, vb); - _mm256_storeu_si256(reinterpret_cast<__m256i*>(result + i), vr); - } -#elif defined(__ARM_NEON) - for (size_t i = 0; i < size; i += N) { - int32x4_t va = vld1q_s32(reinterpret_cast(a + i)); - int32x4_t vb = vld1q_s32(reinterpret_cast(b + i)); - int32x4_t vr = vaddq_s32(va, vb); - vst1q_s32(reinterpret_cast(result + i), vr); - } -#endif -} - -template -void vectorMul(const T* a, const T* b, T* result, size_t size) { -#if defined(__x86_64__) || defined(_M_X64) - for (size_t i = 0; i < size; i += N) { - __m256i va = - _mm256_loadu_si256(reinterpret_cast(a + i)); - __m256i vb = - _mm256_loadu_si256(reinterpret_cast(b + i)); - __m256i vr = _mm256_mullo_epi32(va, vb); - _mm256_storeu_si256(reinterpret_cast<__m256i*>(result + i), vr); - } -#elif defined(__ARM_NEON) - for (size_t i = 0; i < size; i += N) { - int32x4_t va = vld1q_s32(reinterpret_cast(a + i)); - int32x4_t vb = vld1q_s32(reinterpret_cast(b + i)); - int32x4_t vr = vmulq_s32(va, vb); - vst1q_s32(reinterpret_cast(result + i), vr); - } -#endif -} - -// Explicit instantiations for common types -template void vectorAdd(const int32_t*, const int32_t*, int32_t*, - size_t); -template void vectorMul(const int32_t*, const int32_t*, int32_t*, - size_t); - -#endif // USE_SIMD - -} // namespace atom::algorithm diff --git a/src/atom/algorithm/math.hpp b/src/atom/algorithm/math.hpp deleted file mode 100644 index 92a17f2f..00000000 --- a/src/atom/algorithm/math.hpp +++ /dev/null @@ -1,192 +0,0 @@ -/* - * math.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-11-10 - -Description: Extra Math Library - -**************************************************/ - -#ifndef ATOM_ALGORITHM_MATH_HPP -#define ATOM_ALGORITHM_MATH_HPP - -#include - -namespace atom::algorithm { -/** - * @brief Performs a 64-bit multiplication followed by division. - * - * This function calculates the result of (operant * multiplier) / divider. - * - * @param operant The first operand for multiplication. - * @param multiplier The second operand for multiplication. - * @param divider The divisor for the division operation. - * @return The result of (operant * multiplier) / divider. - */ -auto mulDiv64(uint64_t operant, uint64_t multiplier, - uint64_t divider) -> uint64_t; - -/** - * @brief Performs a safe addition operation. - * - * This function adds two unsigned 64-bit integers, handling potential overflow. - * - * @param a The first operand for addition. - * @param b The second operand for addition. - * @return The result of a + b, or 0 if there is an overflow. - */ -auto safeAdd(uint64_t a, uint64_t b) -> uint64_t; - -/** - * @brief Performs a safe multiplication operation. - * - * This function multiplies two unsigned 64-bit integers, handling potential - * overflow. - * - * @param a The first operand for multiplication. - * @param b The second operand for multiplication. - * @return The result of a * b, or 0 if there is an overflow. - */ -auto safeMul(uint64_t a, uint64_t b) -> uint64_t; - -/** - * @brief Rotates a 64-bit integer to the left. - * - * This function rotates a 64-bit integer to the left by a specified number of - * bits. - * - * @param n The 64-bit integer to rotate. - * @param c The number of bits to rotate. - * @return The rotated 64-bit integer. - */ -auto rotl64(uint64_t n, unsigned int c) -> uint64_t; - -/** - * @brief Rotates a 64-bit integer to the right. - * - * This function rotates a 64-bit integer to the right by a specified number of - * bits. - * - * @param n The 64-bit integer to rotate. - * @param c The number of bits to rotate. - * @return The rotated 64-bit integer. - */ -auto rotr64(uint64_t n, unsigned int c) -> uint64_t; - -/** - * @brief Counts the leading zeros in a 64-bit integer. - * - * This function counts the number of leading zeros in a 64-bit integer. - * - * @param x The 64-bit integer to count leading zeros in. - * @return The number of leading zeros in the 64-bit integer. - */ -auto clz64(uint64_t x) -> int; - -/** - * @brief Normalizes a 64-bit integer. - * - * This function normalizes a 64-bit integer by shifting it to the right until - * the most significant bit is set. - * - * @param x The 64-bit integer to normalize. - * @return The normalized 64-bit integer. - */ -auto normalize(uint64_t x) -> uint64_t; - -/** - * @brief Performs a safe subtraction operation. - * - * This function subtracts two unsigned 64-bit integers, handling potential - * underflow. - * - * @param a The first operand for subtraction. - * @param b The second operand for subtraction. - * @return The result of a - b, or 0 if there is an underflow. - */ -auto safeSub(uint64_t a, uint64_t b) -> uint64_t; - -/** - * @brief Performs a safe division operation. - * - * This function divides two unsigned 64-bit integers, handling potential - * division by zero. - * - * @param a The numerator for division. - * @param b The denominator for division. - * @return The result of a / b, or 0 if there is a division by zero. - */ -auto safeDiv(uint64_t a, uint64_t b) -> uint64_t; - -/** - * @brief Calculates the bitwise reverse of a 64-bit integer. - * - * This function calculates the bitwise reverse of a 64-bit integer. - * - * @param n The 64-bit integer to reverse. - * @return The bitwise reverse of the 64-bit integer. - */ -auto bitReverse64(uint64_t n) -> uint64_t; - -/** - * @brief Approximates the square root of a 64-bit integer. - * - * This function approximates the square root of a 64-bit integer using a fast - * algorithm. - * - * @param n The 64-bit integer for which to approximate the square root. - * @return The approximate square root of the 64-bit integer. - */ -auto approximateSqrt(uint64_t n) -> uint64_t; - -/** - * @brief Calculates the greatest common divisor (GCD) of two 64-bit integers. - * - * This function calculates the greatest common divisor (GCD) of two 64-bit - * integers. - * - * @param a The first 64-bit integer. - * @param b The second 64-bit integer. - * @return The greatest common divisor of the two 64-bit integers. - */ -auto gcd64(uint64_t a, uint64_t b) -> uint64_t; - -/** - * @brief Calculates the least common multiple (LCM) of two 64-bit integers. - * - * This function calculates the least common multiple (LCM) of two 64-bit - * integers. - * - * @param a The first 64-bit integer. - * @param b The second 64-bit integer. - * @return The least common multiple of the two 64-bit integers. - */ -auto lcm64(uint64_t a, uint64_t b) -> uint64_t; - -/** - * @brief Checks if a 64-bit integer is a power of two. - * - * This function checks if a 64-bit integer is a power of two. - * - * @param n The 64-bit integer to check. - * @return True if the 64-bit integer is a power of two, false otherwise. - */ -auto isPowerOfTwo(uint64_t n) -> bool; - -/** - * @brief Calculates the next power of two for a 64-bit integer. - * - * This function calculates the next power of two for a 64-bit integer. - * - * @param n The 64-bit integer for which to calculate the next power of two. - * @return The next power of two for the 64-bit integer. - */ -auto nextPowerOfTwo(uint64_t n) -> uint64_t; -} // namespace atom::algorithm - -#endif diff --git a/src/atom/algorithm/matrix.hpp b/src/atom/algorithm/matrix.hpp deleted file mode 100644 index f79976ba..00000000 --- a/src/atom/algorithm/matrix.hpp +++ /dev/null @@ -1,369 +0,0 @@ -#ifndef ATOM_ALGORITHM_MATRIX_HPP -#define ATOM_ALGORITHM_MATRIX_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "atom/error/exception.hpp" - -namespace atom::algorithm { -template -class Matrix; - -template -constexpr Matrix identity(); - -// 矩阵模板类,支持编译期矩阵计算 -template -class Matrix { -private: - std::array data_{}; - -public: - // 构造函数 - constexpr Matrix() = default; - constexpr explicit Matrix(const std::array& arr) - : data_(arr) {} - - // 访问矩阵元素 - constexpr auto operator()(std::size_t row, std::size_t col) -> T& { - return data_[row * Cols + col]; - } - - constexpr auto operator()(std::size_t row, - std::size_t col) const -> const T& { - return data_[row * Cols + col]; - } - - // 数据访问器 - auto getData() const -> const std::array& { return data_; } - - auto getData() -> std::array& { return data_; } - - // 打印矩阵 - void print(int width = 8, int precision = 2) const { - for (std::size_t i = 0; i < Rows; ++i) { - for (std::size_t j = 0; j < Cols; ++j) { - std::cout << std::setw(width) << std::fixed - << std::setprecision(precision) << (*this)(i, j) - << ' '; - } - std::cout << '\n'; - } - } - - // 矩阵的迹(对角线元素之和) - constexpr auto trace() const -> T { - static_assert(Rows == Cols, - "Trace is only defined for square matrices"); - T result = T{}; - for (std::size_t i = 0; i < Rows; ++i) { - result += (*this)(i, i); - } - return result; - } - - // Frobenius范数 - auto freseniusNorm() const -> T { - T sum = T{}; - for (const auto& elem : data_) { - sum += std::norm(elem); - } - return std::sqrt(sum); - } - - // 矩阵的最大元素 - auto maxElement() const -> T { - return *std::max_element( - data_.begin(), data_.end(), - [](const T& a, const T& b) { return std::abs(a) < std::abs(b); }); - } - - // 矩阵的最小元素 - auto minElement() const -> T { - return *std::min_element( - data_.begin(), data_.end(), - [](const T& a, const T& b) { return std::abs(a) < std::abs(b); }); - } - - // 判断矩阵是否为对称矩阵 - [[nodiscard]] auto isSymmetric() const -> bool { - static_assert(Rows == Cols, - "Symmetry is only defined for square matrices"); - for (std::size_t i = 0; i < Rows; ++i) { - for (std::size_t j = i + 1; j < Cols; ++j) { - if ((*this)(i, j) != (*this)(j, i)) { - return false; - } - } - } - return true; - } - - // 矩阵的幂运算 - auto pow(unsigned int n) const -> Matrix { - static_assert(Rows == Cols, - "Matrix power is only defined for square matrices"); - if (n == 0) { - return identity(); - } - if (n == 1) { - return *this; - } - Matrix result = *this; - for (unsigned int i = 1; i < n; ++i) { - result = result * (*this); - } - return result; - } - - // 矩阵的行列式(使用LU分解) - auto determinant() const -> T { - static_assert(Rows == Cols, - "Determinant is only defined for square matrices"); - auto [L, U] = lu_decomposition(*this); - T det = T{1}; - for (std::size_t i = 0; i < Rows; ++i) { - det *= U(i, i); - } - return det; - } - - // 矩阵的秩(使用高斯消元) - [[nodiscard]] auto rank() const -> std::size_t { - Matrix temp = *this; - std::size_t rank = 0; - for (std::size_t i = 0; i < Rows && i < Cols; ++i) { - // 找主元 - std::size_t pivot = i; - for (std::size_t j = i + 1; j < Rows; ++j) { - if (std::abs(temp(j, i)) > std::abs(temp(pivot, i))) { - pivot = j; - } - } - if (std::abs(temp(pivot, i)) < 1e-10) { - continue; - } - // 交换行 - if (pivot != i) { - for (std::size_t j = i; j < Cols; ++j) { - std::swap(temp(i, j), temp(pivot, j)); - } - } - // 消元 - for (std::size_t j = i + 1; j < Rows; ++j) { - T factor = temp(j, i) / temp(i, i); - for (std::size_t k = i; k < Cols; ++k) { - temp(j, k) -= factor * temp(i, k); - } - } - ++rank; - } - return rank; - } - - // 矩阵的条件数(使用2范数) - auto conditionNumber() const -> T { - static_assert(Rows == Cols, - "Condition number is only defined for square matrices"); - auto svd = singular_value_decomposition(*this); - return svd[0] / svd[svd.size() - 1]; - } -}; - -// 矩阵加法 -template -constexpr auto operator+(const Matrix& a, - const Matrix& b) - -> Matrix { - Matrix result{}; - for (std::size_t i = 0; i < Rows * Cols; ++i) { - result.get_data()[i] = a.get_data()[i] + b.get_data()[i]; - } - return result; -} - -// 矩阵减法 -template -constexpr auto operator-(const Matrix& a, - const Matrix& b) - -> Matrix { - Matrix result{}; - for (std::size_t i = 0; i < Rows * Cols; ++i) { - result.get_data()[i] = a.get_data()[i] - b.get_data()[i]; - } - return result; -} - -// 矩阵乘法 -template -auto operator*(const Matrix& a, - const Matrix& b) - -> Matrix { - Matrix result{}; - for (std::size_t i = 0; i < RowsA; ++i) { - for (std::size_t j = 0; j < ColsB; ++j) { - for (std::size_t k = 0; k < ColsA_RowsB; ++k) { - result(i, j) += a(i, k) * b(k, j); - } - } - } - return result; -} - -// 标量乘法(左乘和右乘) -template -constexpr auto operator*(const Matrix& m, U scalar) { - Matrix result; - for (std::size_t i = 0; i < Rows * Cols; ++i) { - result.get_data()[i] = m.get_data()[i] * scalar; - } - return result; -} - -template -constexpr auto operator*(U scalar, const Matrix& m) { - return m * scalar; -} - -// 矩阵逐元素乘法(Hadamard积) -template -constexpr auto hadamardProduct(const Matrix& a, - const Matrix& b) - -> Matrix { - Matrix result{}; - for (std::size_t i = 0; i < Rows * Cols; ++i) { - result.get_data()[i] = a.get_data()[i] * b.get_data()[i]; - } - return result; -} - -// 矩阵转置 -template -constexpr auto transpose(const Matrix& m) - -> Matrix { - Matrix result{}; - for (std::size_t i = 0; i < Rows; ++i) { - for (std::size_t j = 0; j < Cols; ++j) { - result(j, i) = m(i, j); - } - } - return result; -} - -// 创建单位矩阵 -template -constexpr auto identity() -> Matrix { - Matrix result{}; - for (std::size_t i = 0; i < Size; ++i) { - result(i, i) = T{1}; - } - return result; -} - -// 矩阵的LU分解 -template -auto luDecomposition(const Matrix& m) - -> std::pair, Matrix> { - Matrix L = identity(); - Matrix U = m; - - for (std::size_t k = 0; k < Size - 1; ++k) { - for (std::size_t i = k + 1; i < Size; ++i) { - if (std::abs(U(k, k)) < 1e-10) { - THROW_RUNTIME_ERROR( - "LU decomposition failed: division by zero"); - } - T factor = U(i, k) / U(k, k); - L(i, k) = factor; - for (std::size_t j = k; j < Size; ++j) { - U(i, j) -= factor * U(k, j); - } - } - } - - return {L, U}; -} - -// 矩阵的奇异值分解(仅返回奇异值) -template -auto singularValueDecomposition(const Matrix& m) - -> std::vector { - const std::size_t n = std::min(Rows, Cols); - Matrix mt = transpose(m); - Matrix mtm = mt * m; - - // 使用幂法计算最大特征值和对应的特征向量 - auto powerIteration = [&mtm](std::size_t max_iter = 100, T tol = 1e-10) { - std::vector v(Cols); - std::generate(v.begin(), v.end(), - []() { return static_cast(rand()) / RAND_MAX; }); - T lambdaOld = 0; - for (std::size_t iter = 0; iter < max_iter; ++iter) { - std::vector vNew(Cols); - for (std::size_t i = 0; i < Cols; ++i) { - for (std::size_t j = 0; j < Cols; ++j) { - vNew[i] += mtm(i, j) * v[j]; - } - } - T lambda = 0; - for (std::size_t i = 0; i < Cols; ++i) { - lambda += vNew[i] * v[i]; - } - T norm = std::sqrt(std::inner_product(vNew.begin(), vNew.end(), - vNew.begin(), T(0))); - for (auto& x : vNew) { - x /= norm; - } - if (std::abs(lambda - lambdaOld) < tol) { - return std::sqrt(lambda); - } - lambdaOld = lambda; - v = vNew; - } - THROW_RUNTIME_ERROR("Power iteration did not converge"); - }; - - std::vector singularValues; - for (std::size_t i = 0; i < n; ++i) { - T sigma = powerIteration(); - singularValues.push_back(sigma); - // Deflate the matrix - Matrix vvt; - for (std::size_t j = 0; j < Cols; ++j) { - for (std::size_t k = 0; k < Cols; ++k) { - vvt(j, k) = mtm(j, k) / (sigma * sigma); - } - } - mtm = mtm - vvt; - } - - std::sort(singularValues.begin(), singularValues.end(), std::greater()); - return singularValues; -} - -// 生成随机矩阵 -template -auto randomMatrix(T min = 0, T max = 1) -> Matrix { - static std::random_device rd; - static std::mt19937 gen(rd()); - std::uniform_real_distribution<> dis(min, max); - - Matrix result; - for (auto& elem : result.get_data()) { - elem = dis(gen); - } - return result; -} - -} // namespace atom::algorithm - -#endif diff --git a/src/atom/algorithm/matrix_compress.cpp b/src/atom/algorithm/matrix_compress.cpp deleted file mode 100644 index 0fc3ec7b..00000000 --- a/src/atom/algorithm/matrix_compress.cpp +++ /dev/null @@ -1,272 +0,0 @@ -#include "matrix_compress.hpp" - -#include -#include -#include -#include -#include "error/exception.hpp" - -#if USE_SIMD -#include -#endif - -namespace atom::algorithm { -auto MatrixCompressor::compress(const Matrix& matrix) -> CompressedData { - CompressedData compressed; - if (matrix.empty() || matrix[0].empty()) { - return compressed; - } - - char currentChar = matrix[0][0]; - int count = 0; - -#ifdef USE_SIMD - // 使用 SIMD 优化压缩 - for (const auto& row : matrix) { - for (size_t i = 0; i < row.size(); i += 16) { - __m128i chars = - _mm_loadu_si128(reinterpret_cast(&row[i])); - for (int j = 0; j < 16; ++j) { - char ch = reinterpret_cast(&chars)[j]; - if (ch == currentChar) { - count++; - } else { - compressed.emplace_back(currentChar, count); - currentChar = ch; - count = 1; - } - } - } - } -#else - // 常规压缩 - for (const auto& row : matrix) { - for (char ch : row) { - if (ch == currentChar) { - count++; - } else { - compressed.emplace_back(currentChar, count); - currentChar = ch; - count = 1; - } - } - } -#endif - compressed.emplace_back(currentChar, count); - - return compressed; -} - -auto MatrixCompressor::decompress(const CompressedData& compressed, int rows, - int cols) -> Matrix { - Matrix matrix(rows, std::vector(cols)); - int index = 0; - -#ifdef USE_SIMD - // 使用 SIMD 优化解压缩 - for (const auto& [ch, count] : compressed) { - __m128i chars = _mm_set1_epi8(ch); - for (int i = 0; i < count; i += 16) { - int remaining = std::min(16, count - i); - for (int j = 0; j < remaining; ++j) { - int row = index / cols; - int col = index % cols; - if (row >= rows || col >= cols) { - THROW_MATRIX_DECOMPRESS_EXCEPTION( - "Decompression error: Invalid matrix size"); - } - matrix[row][col] = reinterpret_cast(&chars)[j]; - index++; - } - } - } -#else - // 常规解压缩 - for (const auto& [ch, count] : compressed) { - for (int i = 0; i < count; ++i) { - int row = index / cols; - int col = index % cols; - if (row >= rows || col >= cols) { - THROW_MATRIX_DECOMPRESS_EXCEPTION( - "Decompression error: Invalid matrix size"); - } - matrix[row][col] = ch; - index++; - } - } -#endif - - if (index != rows * cols) { - THROW_MATRIX_DECOMPRESS_EXCEPTION( - "Decompression error: Incorrect number of elements"); - } - - return matrix; -} - -void MatrixCompressor::printMatrix(const Matrix& matrix) { - for (const auto& row : matrix) { - for (char ch : row) { - std::cout << ch << ' '; - } - std::cout << '\n'; - } -} - -auto MatrixCompressor::generateRandomMatrix( - int rows, int cols, const std::string& charset) -> Matrix { - std::random_device randomDevice; - std::mt19937 generator(randomDevice()); - std::uniform_int_distribution distribution( - 0, static_cast(charset.length()) - 1); - - Matrix matrix(rows, std::vector(cols)); - for (auto& row : matrix) { - std::ranges::generate(row.begin(), row.end(), [&]() { - return charset[distribution(generator)]; - }); - } - return matrix; -} - -void MatrixCompressor::saveCompressedToFile(const CompressedData& compressed, - const std::string& filename) { - std::ofstream file(filename, std::ios::binary); - if (!file) { - THROW_FAIL_TO_OPEN_FILE("Unable to open file for writing: " + filename); - } - - for (const auto& [ch, count] : compressed) { - file.write(reinterpret_cast(&ch), sizeof(ch)); - file.write(reinterpret_cast(&count), sizeof(count)); - } -} - -auto MatrixCompressor::loadCompressedFromFile(const std::string& filename) - -> CompressedData { - std::ifstream file(filename, std::ios::binary); - if (!file) { - THROW_FAIL_TO_OPEN_FILE("Unable to open file for reading: " + filename); - } - - CompressedData compressed; - char ch; - int count; - while (file.read(reinterpret_cast(&ch), sizeof(ch)) && - file.read(reinterpret_cast(&count), sizeof(count))) { - compressed.emplace_back(ch, count); - } - - return compressed; -} - -auto MatrixCompressor::calculateCompressionRatio( - const Matrix& original, const CompressedData& compressed) -> double { - size_t originalSize = original.size() * original[0].size() * sizeof(char); - size_t compressedSize = compressed.size() * (sizeof(char) + sizeof(int)); - return static_cast(compressedSize) / - static_cast(originalSize); -} - -auto MatrixCompressor::downsample(const Matrix& matrix, int factor) -> Matrix { - if (factor <= 0) { - THROW_INVALID_ARGUMENT("Downsampling factor must be positive"); - } - - int rows = static_cast(matrix.size()); - int cols = static_cast(matrix[0].size()); - int newRows = std::max(1, rows / factor); - int newCols = std::max(1, cols / factor); - - Matrix downsampled(newRows, std::vector(newCols)); - - for (int i = 0; i < newRows; ++i) { - for (int j = 0; j < newCols; ++j) { - // 使用简单的平均值作为降采样策略 - int sum = 0; - int count = 0; - for (int di = 0; di < factor && i * factor + di < rows; ++di) { - for (int dj = 0; dj < factor && j * factor + dj < cols; ++dj) { - sum += matrix[i * factor + di][j * factor + dj]; - count++; - } - } - downsampled[i][j] = static_cast(sum / count); - } - } - - return downsampled; -} - -auto MatrixCompressor::upsample(const Matrix& matrix, int factor) -> Matrix { - if (factor <= 0) { - THROW_INVALID_ARGUMENT("Upsampling factor must be positive"); - } - - int rows = static_cast(matrix.size()); - int cols = static_cast(matrix[0].size()); - int newRows = rows * factor; - int newCols = cols * factor; - - Matrix upsampled(newRows, std::vector(newCols)); - - for (int i = 0; i < newRows; ++i) { - for (int j = 0; j < newCols; ++j) { - // 使用最近邻插值 - upsampled[i][j] = matrix[i / factor][j / factor]; - } - } - - return upsampled; -} - -auto MatrixCompressor::calculateMSE(const Matrix& matrix1, - const Matrix& matrix2) -> double { - if (matrix1.size() != matrix2.size() || - matrix1[0].size() != matrix2[0].size()) { - THROW_INVALID_ARGUMENT("Matrices must have the same dimensions"); - } - - double mse = 0.0; - auto rows = static_cast(matrix1.size()); - auto cols = static_cast(matrix1[0].size()); - - for (int i = 0; i < rows; ++i) { - for (int j = 0; j < cols; ++j) { - double diff = static_cast(matrix1[i][j]) - - static_cast(matrix2[i][j]); - mse += diff * diff; - } - } - - return mse / (rows * cols); -} - -#if ATOM_ENABLE_DEBUG -void performanceTest(int rows, int cols) { - auto matrix = MatrixCompressor::generateRandomMatrix(rows, cols); - - auto start = std::chrono::high_resolution_clock::now(); - auto compressed = MatrixCompressor::compress(matrix); - auto end = std::chrono::high_resolution_clock::now(); - - std::chrono::duration compression_time = end - start; - - start = std::chrono::high_resolution_clock::now(); - auto decompressed = MatrixCompressor::decompress(compressed, rows, cols); - end = std::chrono::high_resolution_clock::now(); - - std::chrono::duration decompression_time = end - start; - - double compression_ratio = - MatrixCompressor::calculateCompressionRatio(matrix, compressed); - - std::cout << "Matrix size: " << rows << "x" << cols << "\n"; - std::cout << "Compression time: " << compression_time.count() << " ms\n"; - std::cout << "Decompression time: " << decompression_time.count() - << " ms\n"; - std::cout << "Compression ratio: " << compression_ratio << "\n"; - std::cout << "Compressed size: " << compressed.size() << " elements\n"; -} -#endif -} // namespace atom::algorithm diff --git a/src/atom/algorithm/matrix_compress.hpp b/src/atom/algorithm/matrix_compress.hpp deleted file mode 100644 index 26441547..00000000 --- a/src/atom/algorithm/matrix_compress.hpp +++ /dev/null @@ -1,139 +0,0 @@ -#ifndef MATRIX_COMPRESS_HPP -#define MATRIX_COMPRESS_HPP - -#include -#include - -#include "atom/error/exception.hpp" - -class MatrixCompressException : public atom::error::Exception { -public: - using atom::error::Exception::Exception; -}; - -#define THROW_MATRIX_COMPRESS_EXCEPTION(...) \ - throw MatrixCompressException(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__); - -#define THROW_NESTED_MATRIX_COMPRESS_EXCEPTION(...) \ - MatrixCompressException::rethrowNested(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__); - -class MatrixDecompressException : public atom::error::Exception { -public: - using atom::error::Exception::Exception; -}; - -#define THROW_MATRIX_DECOMPRESS_EXCEPTION(...) \ - throw MatrixDecompressException(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__); - -#define THROW_NESTED_MATRIX_DECOMPRESS_EXCEPTION(...) \ - MatrixDecompressException::rethrowNested(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__); - -namespace atom::algorithm { -/** - * @class MatrixCompressor - * @brief A class for compressing and decompressing matrices. - */ -class MatrixCompressor { -public: - using Matrix = std::vector>; - using CompressedData = std::vector>; - - /** - * @brief Compresses a matrix using run-length encoding. - * @param matrix The matrix to compress. - * @return The compressed data. - */ - static auto compress(const Matrix& matrix) -> CompressedData; - - /** - * @brief Decompresses data into a matrix. - * @param compressed The compressed data. - * @param rows The number of rows in the decompressed matrix. - * @param cols The number of columns in the decompressed matrix. - * @return The decompressed matrix. - */ - static auto decompress(const CompressedData& compressed, int rows, - int cols) -> Matrix; - - /** - * @brief Prints the matrix to the standard output. - * @param matrix The matrix to print. - */ - static void printMatrix(const Matrix& matrix); - - /** - * @brief Generates a random matrix. - * @param rows The number of rows in the matrix. - * @param cols The number of columns in the matrix. - * @param charset The set of characters to use for generating the matrix. - * @return The generated random matrix. - */ - static auto generateRandomMatrix( - int rows, int cols, const std::string& charset = "ABCD") -> Matrix; - - /** - * @brief Saves the compressed data to a file. - * @param compressed The compressed data to save. - * @param filename The name of the file to save the data to. - */ - static void saveCompressedToFile(const CompressedData& compressed, - const std::string& filename); - - /** - * @brief Loads compressed data from a file. - * @param filename The name of the file to load the data from. - * @return The loaded compressed data. - */ - static auto loadCompressedFromFile(const std::string& filename) - -> CompressedData; - - /** - * @brief Calculates the compression ratio. - * @param original The original matrix. - * @param compressed The compressed data. - * @return The compression ratio. - */ - static auto calculateCompressionRatio( - const Matrix& original, const CompressedData& compressed) -> double; - - /** - * @brief Downsamples a matrix by a given factor. - * @param matrix The matrix to downsample. - * @param factor The downsampling factor. - * @return The downsampled matrix. - */ - static auto downsample(const Matrix& matrix, int factor) -> Matrix; - - /** - * @brief Upsamples a matrix by a given factor. - * @param matrix The matrix to upsample. - * @param factor The upsampling factor. - * @return The upsampled matrix. - */ - static auto upsample(const Matrix& matrix, int factor) -> Matrix; - - /** - * @brief Calculates the mean squared error (MSE) between two matrices. - * @param matrix1 The first matrix. - * @param matrix2 The second matrix. - * @return The mean squared error. - */ - static auto calculateMSE(const Matrix& matrix1, - const Matrix& matrix2) -> double; -}; - -#if ATOM_ENABLE_DEBUG -/** - * @brief Runs a performance test on matrix compression and decompression. - * @param rows The number of rows in the test matrix. - * @param cols The number of columns in the test matrix. - */ -void performanceTest(int rows, int cols); -#endif -} // namespace atom::algorithm - -#endif // MATRIX_COMPRESS_HPP diff --git a/src/atom/algorithm/md5.cpp b/src/atom/algorithm/md5.cpp deleted file mode 100644 index cbe7741d..00000000 --- a/src/atom/algorithm/md5.cpp +++ /dev/null @@ -1,171 +0,0 @@ -/* - * md5.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-11-10 - -Description: Self implemented MD5 algorithm. - -**************************************************/ - -#include "md5.hpp" - -#include -#include -#include -#include -#include -#include - -#ifdef USE_OPENMP -#include -#endif - -namespace atom::algorithm { - -constexpr std::array T{ - 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a, - 0xa8304613, 0xfd469501, 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, - 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821, 0xf61e2562, 0xc040b340, - 0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8, - 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8, - 0x676f02d9, 0x8d2a4c8a, 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c, - 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, 0x289b7ec6, 0xeaa127fa, - 0xd4ef3085, 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665, - 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92, - 0xffeff47d, 0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, - 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391}; - -constexpr std::array s{ - 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, - 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, - 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, - 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21}; - -void MD5::init() { - a_ = 0x67452301; - b_ = 0xefcdab89; - c_ = 0x98badcfe; - d_ = 0x10325476; - count_ = 0; - buffer_.clear(); -} - -void MD5::update(const std::string &input) { - auto update_length = [this](size_t length) { count_ += length * 8; }; - - update_length(input.size()); - - for (char ch : input) { - buffer_.push_back(static_cast(ch)); - if (buffer_.size() == 64) { - processBlock(buffer_.data()); - buffer_.clear(); - } - } - - // Padding - buffer_.push_back(0x80); - while (buffer_.size() < 56) { - buffer_.push_back(0x00); - } - - for (int i = 0; i < 8; ++i) { - buffer_.push_back(static_cast((count_ >> (i * 8)) & 0xff)); - } - - processBlock(buffer_.data()); -} - -auto MD5::finalize() -> std::string { - std::stringstream ss; - ss << std::hex << std::setfill('0'); - ss << std::setw(8) << std::byteswap(a_); - ss << std::setw(8) << std::byteswap(b_); - ss << std::setw(8) << std::byteswap(c_); - ss << std::setw(8) << std::byteswap(d_); - return ss.str(); -} - -void MD5::processBlock(const uint8_t *block) { - std::array M; - for (size_t i = 0; i < 16; ++i) { - M[i] = std::bit_cast( - std::array{block[i * 4], block[i * 4 + 1], - block[i * 4 + 2], block[i * 4 + 3]}); - } - - uint32_t a = a_; - uint32_t b = b_; - uint32_t c = c_; - uint32_t d = d_; - -#ifdef USE_OPENMP -#pragma omp parallel for -#endif - for (uint32_t i = 0; i < 64; ++i) { - uint32_t f, g; - if (i < 16) { - f = F(b, c, d); - g = i; - } else if (i < 32) { - f = G(b, c, d); - g = (5 * i + 1) % 16; - } else if (i < 48) { - f = H(b, c, d); - g = (3 * i + 5) % 16; - } else { - f = I(b, c, d); - g = (7 * i) % 16; - } - - uint32_t temp = d; - d = c; - c = b; - b += leftRotate(a + f + T[i] + M[g], s[i]); - a = temp; - } - -#ifdef USE_OPENMP -#pragma omp critical -#endif - { - a_ += a; - b_ += b; - c_ += c; - d_ += d; - } -} - -auto MD5::F(uint32_t x, uint32_t y, uint32_t z) -> uint32_t { - return (x & y) | (~x & z); -} - -auto MD5::G(uint32_t x, uint32_t y, uint32_t z) -> uint32_t { - return (x & z) | (y & ~z); -} - -auto MD5::H(uint32_t x, uint32_t y, uint32_t z) -> uint32_t { - return x ^ y ^ z; -} - -auto MD5::I(uint32_t x, uint32_t y, uint32_t z) -> uint32_t { - return y ^ (x | ~z); -} - -auto MD5::leftRotate(uint32_t x, uint32_t n) -> uint32_t { - return std::rotl(x, n); -} - -auto MD5::encrypt(const std::string &input) -> std::string { - MD5 md5; - md5.init(); - md5.update(input); - return md5.finalize(); -} - -} // namespace atom::algorithm diff --git a/src/atom/algorithm/md5.hpp b/src/atom/algorithm/md5.hpp deleted file mode 100644 index 05120581..00000000 --- a/src/atom/algorithm/md5.hpp +++ /dev/null @@ -1,119 +0,0 @@ -/* - * md5.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-11-10 - -Description: Self implemented MD5 algorithm. - -**************************************************/ - -#ifndef ATOM_UTILS_MD5_HPP -#define ATOM_UTILS_MD5_HPP - -#include -#include -#include - -namespace atom::algorithm { - -/** - * @class MD5 - * @brief A class that implements the MD5 hashing algorithm. - */ -class MD5 { -public: - /** - * @brief Encrypts the input string using the MD5 algorithm. - * @param input The input string to be hashed. - * @return The MD5 hash of the input string. - */ - static auto encrypt(const std::string &input) -> std::string; - -private: - /** - * @brief Initializes the MD5 context. - */ - void init(); - - /** - * @brief Updates the MD5 context with a new input string. - * @param input The input string to update the context with. - */ - void update(const std::string &input); - - /** - * @brief Finalizes the MD5 hash and returns the result. - * @return The finalized MD5 hash as a string. - */ - auto finalize() -> std::string; - - /** - * @brief Processes a 512-bit block of the input. - * @param block A pointer to the 512-bit block. - */ - void processBlock(const uint8_t *block); - - /** - * @brief MD5 auxiliary function F. - * @param x Input value. - * @param y Input value. - * @param z Input value. - * @return The result of the function. - */ - static auto F(uint32_t x, uint32_t y, uint32_t z) -> uint32_t; - - /** - * @brief MD5 auxiliary function G. - * @param x Input value. - * @param y Input value. - * @param z Input value. - * @return The result of the function. - */ - static auto G(uint32_t x, uint32_t y, uint32_t z) -> uint32_t; - - /** - * @brief MD5 auxiliary function H. - * @param x Input value. - * @param y Input value. - * @param z Input value. - * @return The result of the function. - */ - static auto H(uint32_t x, uint32_t y, uint32_t z) -> uint32_t; - - /** - * @brief MD5 auxiliary function I. - * @param x Input value. - * @param y Input value. - * @param z Input value. - * @return The result of the function. - */ - static auto I(uint32_t x, uint32_t y, uint32_t z) -> uint32_t; - - /** - * @brief Rotates the bits of x to the left by n positions. - * @param x The value to be rotated. - * @param n The number of positions to rotate. - * @return The rotated value. - */ - static auto leftRotate(uint32_t x, uint32_t n) -> uint32_t; - - /** - * @brief Reverses the byte order of a 32-bit value. - * @param x The value to reverse. - * @return The byte-reversed value. - */ - static auto reverseBytes(uint32_t x) -> uint32_t; - - uint32_t a_, b_, c_, d_; ///< MD5 state variables. - uint64_t count_; ///< Number of bits processed. - std::vector buffer_; ///< Input buffer. -}; - -} // namespace atom::algorithm - -#endif // ATOM_UTILS_MD5_HPP diff --git a/src/atom/algorithm/mhash.cpp b/src/atom/algorithm/mhash.cpp deleted file mode 100644 index 05026c3e..00000000 --- a/src/atom/algorithm/mhash.cpp +++ /dev/null @@ -1,335 +0,0 @@ -/* - * mhash.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-12-16 - -Description: Implementation of murmur3 hash and quick hash - -**************************************************/ - -#include "mhash.hpp" - -#include -#include -#include -#include -#include - -#include "atom/error/exception.hpp" -#include "atom/utils/random.hpp" - -#include -#include -#include -#include - -namespace atom::algorithm { -// Keccak state constants -constexpr size_t K_KECCAK_F_RATE = 1088; // For Keccak-256 -constexpr size_t K_ROUNDS = 24; -constexpr size_t K_STATE_SIZE = 5; -constexpr size_t K_RATE_IN_BYTES = K_KECCAK_F_RATE / 8; -constexpr uint8_t K_PADDING_BYTE = 0x06; -constexpr uint8_t K_PADDING_LAST_BYTE = 0x80; - -// Round constants for Keccak -constexpr std::array K_ROUND_CONSTANTS = { - 0x0000000000000001ULL, 0x0000000000008082ULL, 0x800000000000808aULL, - 0x8000000080008000ULL, 0x000000000000808bULL, 0x0000000080000001ULL, - 0x8000000080008081ULL, 0x8000000000008009ULL, 0x000000000000008aULL, - 0x0000000000000088ULL, 0x0000000080008009ULL, 0x000000008000000aULL, - 0x000000008000808bULL, 0x800000000000008bULL, 0x8000000000008089ULL, - 0x8000000000008003ULL, 0x8000000000008002ULL, 0x8000000000000080ULL, - 0x000000000000800aULL, 0x800000008000000aULL, 0x8000000080008081ULL, - 0x8000000000008080ULL, 0x0000000080000001ULL, 0x8000000080008008ULL}; - -// Rotation offsets -constexpr std::array, K_STATE_SIZE> - K_ROTATION_CONSTANTS = {{{0, 1, 62, 28, 27}, - {36, 44, 6, 55, 20}, - {3, 10, 43, 25, 39}, - {41, 45, 15, 21, 8}, - {18, 2, 61, 56, 14}}}; - -// Keccak state as 5x5 matrix of 64-bit integers -using StateArray = std::array, K_STATE_SIZE>; - -namespace { -#if USE_OPENCL -const char *minhashKernelSource = R"CLC( -__kernel void minhash_kernel(__global const size_t* hashes, __global size_t* signature, __global const size_t* a_values, __global const size_t* b_values, const size_t p, const size_t num_hashes, const size_t num_elements) { - int gid = get_global_id(0); - if (gid < num_hashes) { - size_t min_hash = SIZE_MAX; - size_t a = a_values[gid]; - size_t b = b_values[gid]; - for (size_t i = 0; i < num_elements; ++i) { - size_t h = (a * hashes[i] + b) % p; - if (h < min_hash) { - min_hash = h; - } - } - signature[gid] = min_hash; - } -} -)CLC"; -#endif -} // anonymous namespace - -MinHash::MinHash(size_t num_hashes) -#if USE_OPENCL - : opencl_available_(false) -#endif -{ - hash_functions_.reserve(num_hashes); - for (size_t i = 0; i < num_hashes; ++i) { - hash_functions_.emplace_back(generateHashFunction()); - } -#if USE_OPENCL - initializeOpenCL(); -#endif -} - -MinHash::~MinHash() { -#if USE_OPENCL - cleanupOpenCL(); -#endif -} - -#if USE_OPENCL -void MinHash::initializeOpenCL() { - cl_int err; - cl_platform_id platform; - cl_device_id device; - - err = clGetPlatformIDs(1, &platform, nullptr); - if (err != CL_SUCCESS) { - return; - } - - err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &device, nullptr); - if (err != CL_SUCCESS) { - return; - } - - context_ = clCreateContext(nullptr, 1, &device, nullptr, nullptr, &err); - if (err != CL_SUCCESS) { - return; - } - - queue_ = clCreateCommandQueue(context_, device, 0, &err); - if (err != CL_SUCCESS) { - return; - } - - program_ = clCreateProgramWithSource(context_, 1, &minhashKernelSource, - nullptr, &err); - if (err != CL_SUCCESS) { - return; - } - - err = clBuildProgram(program_, 1, &device, nullptr, nullptr, nullptr); - if (err != CL_SUCCESS) { - return; - } - - minhash_kernel_ = clCreateKernel(program_, "minhash_kernel", &err); - if (err == CL_SUCCESS) { - opencl_available_ = true; - } -} - -void MinHash::cleanupOpenCL() { - if (opencl_available_) { - clReleaseKernel(minhash_kernel_); - clReleaseProgram(program_); - clReleaseCommandQueue(queue_); - clReleaseContext(context_); - } -} -#endif - -auto MinHash::generateHashFunction() -> HashFunction { - utils::Random> rand( - 0, std::numeric_limits::max()); - - size_t a = rand(); - size_t b = rand(); - size_t p = std::numeric_limits::max(); - - return [a, b, p](size_t x) -> size_t { return (a * x + b) % p; }; -} - -auto MinHash::jaccardIndex(const std::vector &sig1, - const std::vector &sig2) -> double { - size_t equalCount = 0; - - for (size_t i = 0; i < sig1.size(); ++i) { - if (sig1[i] == sig2[i]) { - ++equalCount; - } - } - - return static_cast(equalCount) / sig1.size(); -} - -auto hexstringFromData(const std::string &data) -> std::string { - const char *hexChars = "0123456789ABCDEF"; - std::string output; - output.reserve(data.size() * 2); // Reserve space for the hex string - - for (unsigned char byte : data) { - output.push_back(hexChars[(byte >> 4) & 0x0F]); - output.push_back(hexChars[byte & 0x0F]); - } - - return output; -} - -auto dataFromHexstring(const std::string &data) -> std::string { - if (data.size() % 2 != 0) { - THROW_INVALID_ARGUMENT("Hex string length must be even"); - } - - std::string result; - result.resize(data.size() / 2); - - size_t outputIndex = 0; - for (size_t i = 0; i < data.size(); i += 2) { - int byte = 0; - auto [ptr, ec] = - std::from_chars(data.data() + i, data.data() + i + 2, byte, 16); - - if (ec == std::errc::invalid_argument || ptr != data.data() + i + 2) { - THROW_INVALID_ARGUMENT("Invalid hex character"); - } - - result[outputIndex++] = static_cast(byte); - } - - return result; -} - -// θ step: XOR each column and then propagate changes across the state -inline void theta(StateArray &stateArray) { - std::array column, diff; - for (size_t colIndex = 0; colIndex < K_STATE_SIZE; ++colIndex) { - column[colIndex] = stateArray[colIndex][0] ^ stateArray[colIndex][1] ^ - stateArray[colIndex][2] ^ stateArray[colIndex][3] ^ - stateArray[colIndex][4]; - } - for (size_t colIndex = 0; colIndex < K_STATE_SIZE; ++colIndex) { - diff[colIndex] = column[(colIndex + 4) % K_STATE_SIZE] ^ - std::rotl(column[(colIndex + 1) % K_STATE_SIZE], 1); - for (size_t rowIndex = 0; rowIndex < K_STATE_SIZE; ++rowIndex) { - stateArray[colIndex][rowIndex] ^= diff[colIndex]; - } - } -} - -// ρ step: Rotate each bit-plane by pre-determined offsets -inline void rho(StateArray &stateArray) { - for (size_t colIndex = 0; colIndex < K_STATE_SIZE; ++colIndex) { - for (size_t rowIndex = 0; rowIndex < K_STATE_SIZE; ++rowIndex) { - stateArray[colIndex][rowIndex] = std::rotl( - stateArray[colIndex][rowIndex], - static_cast(K_ROTATION_CONSTANTS[colIndex][rowIndex])); - } - } -} - -// π step: Permute bits to new positions based on a fixed pattern -inline void pi(StateArray &stateArray) { - StateArray temp = stateArray; - for (size_t colIndex = 0; colIndex < K_STATE_SIZE; ++colIndex) { - for (size_t rowIndex = 0; rowIndex < K_STATE_SIZE; ++rowIndex) { - stateArray[colIndex][rowIndex] = - temp[(colIndex + 3 * rowIndex) % K_STATE_SIZE][colIndex]; - } - } -} - -// χ step: Non-linear step XORs data across rows, producing diffusion -inline void chi(StateArray &stateArray) { - for (size_t rowIndex = 0; rowIndex < K_STATE_SIZE; ++rowIndex) { - std::array temp = stateArray[rowIndex]; - for (size_t colIndex = 0; colIndex < K_STATE_SIZE; ++colIndex) { - stateArray[colIndex][rowIndex] ^= - (~temp[(colIndex + 1) % K_STATE_SIZE] & - temp[(colIndex + 2) % K_STATE_SIZE]); - } - } -} - -// ι step: XOR a round constant into the first state element -inline void iota(StateArray &stateArray, size_t round) { - stateArray[0][0] ^= K_ROUND_CONSTANTS[round]; -} - -// Keccak-p permutation: 24 rounds of transformations on the state -inline void keccakP(StateArray &stateArray) { - for (size_t round = 0; round < K_ROUNDS; ++round) { - theta(stateArray); - rho(stateArray); - pi(stateArray); - chi(stateArray); - iota(stateArray, round); - } -} - -// Absorb phase: XOR input into the state and permute -void absorb(StateArray &state, const uint8_t *input, size_t length) { - while (length >= K_RATE_IN_BYTES) { - for (size_t i = 0; i < K_RATE_IN_BYTES / 8; ++i) { - state[i % K_STATE_SIZE][i / K_STATE_SIZE] ^= - std::bit_cast(input + i * 8); - } - keccakP(state); - input += K_RATE_IN_BYTES; - length -= K_RATE_IN_BYTES; - } -} - -// Padding and absorbing the last block -void padAndAbsorb(StateArray &state, const uint8_t *input, size_t length) { - std::array paddedBlock = {}; - std::memcpy(paddedBlock.data(), input, length); - paddedBlock[length] = K_PADDING_BYTE; // Keccak padding - paddedBlock.back() |= K_PADDING_LAST_BYTE; // Set last bit to 1 - absorb(state, paddedBlock.data(), paddedBlock.size()); -} - -// Squeeze phase: Extract output from the state -void squeeze(StateArray &state, uint8_t *output, size_t outputLength) { - while (outputLength >= K_RATE_IN_BYTES) { - for (size_t i = 0; i < K_RATE_IN_BYTES / 8; ++i) { - std::memcpy(output + i * 8, - &state[i % K_STATE_SIZE][i / K_STATE_SIZE], 8); - } - keccakP(state); - output += K_RATE_IN_BYTES; - outputLength -= K_RATE_IN_BYTES; - } - for (size_t i = 0; i < outputLength / 8; ++i) { - std::memcpy(output + i * 8, &state[i % K_STATE_SIZE][i / K_STATE_SIZE], - 8); - } -} - -// Keccak-256 hashing function -auto keccak256(const uint8_t *input, - size_t length) -> std::array { - StateArray state = {}; - padAndAbsorb(state, input, length); - - std::array hash = {}; - squeeze(state, hash.data(), hash.size()); - return hash; -} - -} // namespace atom::algorithm diff --git a/src/atom/algorithm/mhash.hpp b/src/atom/algorithm/mhash.hpp deleted file mode 100644 index 881176c5..00000000 --- a/src/atom/algorithm/mhash.hpp +++ /dev/null @@ -1,223 +0,0 @@ -/* - * mhash.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-12-16 - -Description: Implementation of murmur3 hash and quick hash - -**************************************************/ - -#ifndef ATOM_ALGORITHM_MHASH_HPP -#define ATOM_ALGORITHM_MHASH_HPP - -#include -#include -#include -#include -#include -#include - -#if USE_OPENCL -#include -#endif - -#include "atom/macro.hpp" - -namespace atom::algorithm { -constexpr size_t K_HASH_SIZE = 32; - -/** - * @brief Converts a string to a hexadecimal string representation. - * - * @param data The input string. - * @return std::string The hexadecimal string representation. - */ -ATOM_NODISCARD auto hexstringFromData(const std::string& data) -> std::string; - -/** - * @brief Converts a hexadecimal string representation to binary data. - * - * @param data The input hexadecimal string. - * @return std::string The binary data. - * @throw std::invalid_argument If the input hexstring is not a valid - * hexadecimal string. - */ -ATOM_NODISCARD auto dataFromHexstring(const std::string& data) -> std::string; - -/** - * @brief Implements the MinHash algorithm for estimating Jaccard similarity. - * - * The MinHash algorithm generates hash signatures for sets and estimates the - * Jaccard index between sets based on these signatures. - */ -class MinHash { -public: - /** - * @brief Type definition for a hash function used in MinHash. - */ - using HashFunction = std::function; - - /** - * @brief Constructs a MinHash object with a specified number of hash - * functions. - * - * @param num_hashes The number of hash functions to use for MinHash. - */ - explicit MinHash(size_t num_hashes); - - /** - * @brief Destructor to clean up OpenCL resources. - */ - ~MinHash(); - - /** - * @brief Computes the MinHash signature (hash values) for a given set. - * - * @tparam Range Type of the range representing the set elements. - * @param set The set for which to compute the MinHash signature. - * @return std::vector MinHash signature (hash values) for the set. - */ - template - auto computeSignature(const Range& set) const -> std::vector { - std::vector signature(hash_functions_.size(), - std::numeric_limits::max()); -#if USE_OPENCL - if (opencl_available_) { - computeSignatureOpenCL(set, signature); - } else { -#endif - for (const auto& element : set) { - size_t elementHash = - std::hash{}(element); - for (size_t i = 0; i < hash_functions_.size(); ++i) { - signature[i] = - std::min(signature[i], hash_functions_[i](elementHash)); - } - } -#if USE_OPENCL - } -#endif - return signature; - } - - /** - * @brief Computes the Jaccard index between two sets based on their MinHash - * signatures. - * - * @param sig1 MinHash signature of the first set. - * @param sig2 MinHash signature of the second set. - * @return double Estimated Jaccard index between the two sets. - */ - static auto jaccardIndex(const std::vector& sig1, - const std::vector& sig2) -> double; - -private: - /** - * @brief Vector of hash functions used for MinHash. - */ - std::vector hash_functions_; - - /** - * @brief Generates a hash function suitable for MinHash. - * - * @return HashFunction Generated hash function. - */ - static auto generateHashFunction() -> HashFunction; - -#if USE_OPENCL - /** - * @brief OpenCL resources and state. - */ - cl_context context_; - cl_command_queue queue_; - cl_program program_; - cl_kernel minhash_kernel_; - bool opencl_available_; - - /** - * @brief Initializes OpenCL context and resources. - */ - void initializeOpenCL(); - - /** - * @brief Cleans up OpenCL resources. - */ - void cleanupOpenCL(); - - /** - * @brief Computes the MinHash signature using OpenCL. - * - * @tparam Range Type of the range representing the set elements. - * @param set The set for which to compute the MinHash signature. - * @param signature The vector to store the computed signature. - */ - template - void computeSignatureOpenCL(const Range& set, - std::vector& signature) const { - cl_int err; - size_t numHashes = hash_functions_.size(); - size_t numElements = set.size(); - - std::vector hashes; - hashes.reserve(numElements); - for (const auto& element : set) { - hashes.push_back(std::hash{}(element)); - } - - std::vector aValues(numHashes); - std::vector bValues(numHashes); - for (size_t i = 0; i < numHashes; ++i) { - aValues; // Use the generated hash function's "a" value - bValues; // Use the generated hash function's "b" value - } - - cl_mem hashesBuffer = - clCreateBuffer(context_, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, - numElements * sizeof(size_t), hashes.data(), &err); - cl_mem signatureBuffer = - clCreateBuffer(context_, CL_MEM_WRITE_ONLY, - numHashes * sizeof(size_t), nullptr, &err); - cl_mem aValuesBuffer = - clCreateBuffer(context_, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, - numHashes * sizeof(size_t), aValues.data(), &err); - cl_mem bValuesBuffer = - clCreateBuffer(context_, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, - numHashes * sizeof(size_t), bValues.data(), &err); - - size_t p = std::numeric_limits::max(); - - clSetKernelArg(minhash_kernel_, 0, sizeof(cl_mem), &hashesBuffer); - clSetKernelArg(minhash_kernel_, 1, sizeof(cl_mem), &signatureBuffer); - clSetKernelArg(minhash_kernel_, 2, sizeof(cl_mem), &aValuesBuffer); - clSetKernelArg(minhash_kernel_, 3, sizeof(cl_mem), &bValuesBuffer); - clSetKernelArg(minhash_kernel_, 4, sizeof(size_t), &p); - clSetKernelArg(minhash_kernel_, 5, sizeof(size_t), &numHashes); - clSetKernelArg(minhash_kernel_, 6, sizeof(size_t), &numElements); - - size_t globalWorkSize = numHashes; - clEnqueueNDRangeKernel(queue_, minhash_kernel_, 1, nullptr, - &globalWorkSize, nullptr, 0, nullptr, nullptr); - - clEnqueueReadBuffer(queue_, signatureBuffer, CL_TRUE, 0, - numHashes * sizeof(size_t), signature.data(), 0, - nullptr, nullptr); - - clReleaseMemObject(hashesBuffer); - clReleaseMemObject(signatureBuffer); - clReleaseMemObject(aValuesBuffer); - clReleaseMemObject(bValuesBuffer); - } -#endif -}; - -auto keccak256(const uint8_t *input, - size_t length) -> std::array; - -} // namespace atom::algorithm - -#endif // ATOM_ALGORITHM_MHASH_HPP diff --git a/src/atom/algorithm/perlin.hpp b/src/atom/algorithm/perlin.hpp deleted file mode 100644 index 68e423c1..00000000 --- a/src/atom/algorithm/perlin.hpp +++ /dev/null @@ -1,335 +0,0 @@ -#ifndef ATOM_ALGORITHM_PERLIN_HPP -#define ATOM_ALGORITHM_PERLIN_HPP - -#include -#include -#include -#include -#include -#include -#include - -#ifdef USE_OPENCL // 宏定义:是否启用OpenCL -#include -#endif - -namespace atom::algorithm { -class PerlinNoise { -public: - explicit PerlinNoise( - unsigned int seed = std::default_random_engine::default_seed) { - p.resize(512); - std::iota(p.begin(), p.begin() + 256, 0); - - std::default_random_engine engine(seed); - std::ranges::shuffle(std::span(p.begin(), p.begin() + 256), engine); - - std::ranges::copy(std::span(p.begin(), p.begin() + 256), - p.begin() + 256); - -#ifdef USE_OPENCL - initializeOpenCL(); -#endif - } - - ~PerlinNoise() { -#ifdef USE_OPENCL - cleanupOpenCL(); -#endif - } - - template - [[nodiscard]] auto noise(T x, T y, T z) const -> T { -#ifdef USE_OPENCL - if (opencl_available_) { - return noiseOpenCL(x, y, z); - } -#endif - return noiseCPU(x, y, z); - } - - template - [[nodiscard]] auto octaveNoise(T x, T y, T z, int octaves, - T persistence) const -> T { - T total = 0; - T frequency = 1; - T amplitude = 1; - T maxValue = 0; - - for (int i = 0; i < octaves; ++i) { - total += - noise(x * frequency, y * frequency, z * frequency) * amplitude; - maxValue += amplitude; - amplitude *= persistence; - frequency *= 2; - } - - return total / maxValue; - } - - [[nodiscard]] auto generateNoiseMap( - int width, int height, double scale, int octaves, double persistence, - double /*lacunarity*/, - int seed = std::default_random_engine::default_seed) const - -> std::vector> { - std::vector> noiseMap(height, - std::vector(width)); - std::default_random_engine prng(seed); - std::uniform_real_distribution dist(-10000, 10000); - double offsetX = dist(prng); - double offsetY = dist(prng); - - for (int y = 0; y < height; ++y) { - for (int x = 0; x < width; ++x) { - double sampleX = (x - width / 2.0 + offsetX) / scale; - double sampleY = (y - height / 2.0 + offsetY) / scale; - noiseMap[y][x] = - octaveNoise(sampleX, sampleY, 0.0, octaves, persistence); - } - } - - return noiseMap; - } - -private: - std::vector p; - -#ifdef USE_OPENCL - cl_context context_; - cl_command_queue queue_; - cl_program program_; - cl_kernel noise_kernel_; - bool opencl_available_; - - void initializeOpenCL() { - cl_int err; - cl_platform_id platform; - cl_device_id device; - - err = clGetPlatformIDs(1, &platform, nullptr); - if (err != CL_SUCCESS) { - opencl_available_ = false; - return; - } - - err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &device, nullptr); - if (err != CL_SUCCESS) { - opencl_available_ = false; - return; - } - - context_ = clCreateContext(nullptr, 1, &device, nullptr, nullptr, &err); - if (err != CL_SUCCESS) { - opencl_available_ = false; - return; - } - - queue_ = clCreateCommandQueue(context_, device, 0, &err); - if (err != CL_SUCCESS) { - opencl_available_ = false; - return; - } - - const char* kernel_source = R"CLC( - __kernel void noise_kernel(__global const float* coords, - __global float* result, - __constant int* p) { - int gid = get_global_id(0); - - float x = coords[gid * 3]; - float y = coords[gid * 3 + 1]; - float z = coords[gid * 3 + 2]; - - int X = ((int)floor(x)) & 255; - int Y = ((int)floor(y)) & 255; - int Z = ((int)floor(z)) & 255; - - x -= floor(x); - y -= floor(y); - z -= floor(z); - - float u = x * x * x * (x * (x * 6 - 15) + 10); - float v = y * y * y * (y * (y * 6 - 15) + 10); - float w = z * z * z * (z * (z * 6 - 15) + 10); - - int A = p[X] + Y; - int AA = p[A] + Z; - int AB = p[A + 1] + Z; - int B = p[X + 1] + Y; - int BA = p[B] + Z; - int BB = p[B + 1] + Z; - - float res = lerp(w, - lerp(v, lerp(u, grad(p[AA], x, y, z), - grad(p[BA], x - 1, y, z)), - lerp(u, grad(p[AB], x, y - 1, z), - grad(p[BB], x - 1, y - 1, z))), - lerp(v, lerp(u, grad(p[AA + 1], x, y, z - 1), - grad(p[BA + 1], x - 1, y, z - 1)), - lerp(u, grad(p[AB + 1], x, y - 1, z - 1), - grad(p[BB + 1], x - 1, y - 1, - z - 1)))); - result[gid] = (res + 1) / 2; - } - - float lerp(float t, float a, float b) { - return a + t * (b - a); - } - - float grad(int hash, float x, float y, float z) { - int h = hash & 15; - float u = h < 8 ? x : y; - float v = h < 4 ? y : (h == 12 || h == 14 ? x : z); - return ((h & 1) == 0 ? u : -u) + ((h & 2) == 0 ? v : -v); - } - )CLC"; - - program_ = clCreateProgramWithSource(context_, 1, &kernel_source, - nullptr, &err); - if (err != CL_SUCCESS) { - opencl_available_ = false; - return; - } - - err = clBuildProgram(program_, 1, &device, nullptr, nullptr, nullptr); - if (err != CL_SUCCESS) { - opencl_available_ = false; - return; - } - - noise_kernel_ = clCreateKernel(program_, "noise_kernel", &err); - if (err != CL_SUCCESS) { - opencl_available_ = false; - return; - } - - opencl_available_ = true; - } - - void cleanupOpenCL() { - if (opencl_available_) { - clReleaseKernel(noise_kernel_); - clReleaseProgram(program_); - clReleaseCommandQueue(queue_); - clReleaseContext(context_); - } - } - - template - auto noiseOpenCL(T x, T y, T z) const -> T { - float coords[] = {static_cast(x), static_cast(y), - static_cast(z)}; - float result; - - cl_mem coords_buffer = - clCreateBuffer(context_, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, - sizeof(coords), coords, nullptr); - cl_mem result_buffer = clCreateBuffer(context_, CL_MEM_WRITE_ONLY, - sizeof(float), nullptr, nullptr); - cl_mem p_buffer = - clCreateBuffer(context_, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, - p.size() * sizeof(int), p.data(), nullptr); - - clSetKernelArg(noise_kernel_, 0, sizeof(cl_mem), &coords_buffer); - clSetKernelArg(noise_kernel_, 1, sizeof(cl_mem), &result_buffer); - clSetKernelArg(noise_kernel_, 2, sizeof(cl_mem), &p_buffer); - - size_t global_work_size = 1; - clEnqueueNDRangeKernel(queue_, noise_kernel_, 1, nullptr, - &global_work_size, nullptr, 0, nullptr, nullptr); - - clEnqueueReadBuffer(queue_, result_buffer, CL_TRUE, 0, sizeof(float), - &result, 0, nullptr, nullptr); - - clReleaseMemObject(coords_buffer); - clReleaseMemObject(result_buffer); - clReleaseMemObject(p_buffer); - - return static_cast(result); - } -#endif // USE_OPENCL - - template - [[nodiscard]] auto noiseCPU(T x, T y, T z) const -> T { - // Find unit cube containing point - int X = static_cast(std::floor(x)) & 255; - int Y = static_cast(std::floor(y)) & 255; - int Z = static_cast(std::floor(z)) & 255; - - // Find relative x, y, z of point in cube - x -= std::floor(x); - y -= std::floor(y); - z -= std::floor(z); - -// Compute fade curves for each of x, y, z -#ifdef USE_SIMD - // SIMD-based fade function calculations - __m256d xSimd = _mm256_set1_pd(x); - __m256d ySimd = _mm256_set1_pd(y); - __m256d zSimd = _mm256_set1_pd(z); - - __m256d uSimd = - _mm256_mul_pd(xSimd, _mm256_sub_pd(xSimd, _mm256_set1_pd(15))); - uSimd = _mm256_mul_pd( - uSimd, _mm256_add_pd(_mm256_set1_pd(10), - _mm256_mul_pd(xSimd, _mm256_set1_pd(6)))); - // Apply similar SIMD operations for v and w if needed - __m256d vSimd = - _mm256_mul_pd(ySimd, _mm256_sub_pd(ySimd, _mm256_set1_pd(15))); - vSimd = _mm256_mul_pd( - vSimd, _mm256_add_pd(_mm256_set1_pd(10), - _mm256_mul_pd(ySimd, _mm256_set1_pd(6)))); - __m256d wSimd = - _mm256_mul_pd(zSimd, _mm256_sub_pd(zSimd, _mm256_set1_pd(15))); - wSimd = _mm256_mul_pd( - wSimd, _mm256_add_pd(_mm256_set1_pd(10), - _mm256_mul_pd(zSimd, _mm256_set1_pd(6)))); -#else - T u = fade(x); - T v = fade(y); - T w = fade(z); -#endif - - // Hash coordinates of the 8 cube corners - int A = p[X] + Y; - int AA = p[A] + Z; - int AB = p[A + 1] + Z; - int B = p[X + 1] + Y; - int BA = p[B] + Z; - int BB = p[B + 1] + Z; - - // Add blended results from 8 corners of cube - T res = lerp( - w, - lerp(v, lerp(u, grad(p[AA], x, y, z), grad(p[BA], x - 1, y, z)), - lerp(u, grad(p[AB], x, y - 1, z), - grad(p[BB], x - 1, y - 1, z))), - lerp(v, - lerp(u, grad(p[AA + 1], x, y, z - 1), - grad(p[BA + 1], x - 1, y, z - 1)), - lerp(u, grad(p[AB + 1], x, y - 1, z - 1), - grad(p[BB + 1], x - 1, y - 1, z - 1)))); - return (res + 1) / 2; // Normalize to [0,1] - } - - static constexpr auto fade(double t) noexcept -> double { - return t * t * t * (t * (t * 6 - 15) + 10); - } - - static constexpr auto lerp(double t, double a, - double b) noexcept -> double { - return a + t * (b - a); - } - - static constexpr auto grad(int hash, double x, double y, - double z) noexcept -> double { - int h = hash & 15; - double u = h < 8 ? x : y; - double v = h < 4 ? y : (h == 12 || h == 14 ? x : z); - return ((h & 1) == 0 ? u : -u) + ((h & 2) == 0 ? v : -v); - } -}; - -} // namespace atom::algorithm - -#endif // ATOM_ALGORITHM_PERLIN_HPP diff --git a/src/atom/algorithm/tea.cpp b/src/atom/algorithm/tea.cpp deleted file mode 100644 index 78253976..00000000 --- a/src/atom/algorithm/tea.cpp +++ /dev/null @@ -1,179 +0,0 @@ -#include "tea.hpp" - -namespace atom::algorithm { -// Constants for TEA -constexpr uint32_t DELTA = 0x9E3779B9; -constexpr int NUM_ROUNDS = 32; -constexpr int SHIFT_4 = 4; -constexpr int SHIFT_5 = 5; -constexpr int BYTE_SHIFT = 8; -constexpr size_t MIN_ROUNDS = 6; -constexpr size_t MAX_ROUNDS = 52; -constexpr int SHIFT_3 = 3; -constexpr int SHIFT_2 = 2; -constexpr uint32_t KEY_MASK = 3; -constexpr int SHIFT_11 = 11; - -// TEA encryption function -auto teaEncrypt(uint32_t &value0, uint32_t &value1, - const std::array &key) -> void { - uint32_t sum = 0; - for (int i = 0; i < NUM_ROUNDS; ++i) { - sum += DELTA; - value0 += ((value1 << SHIFT_4) + key[0]) ^ (value1 + sum) ^ - ((value1 >> SHIFT_5) + key[1]); - value1 += ((value0 << SHIFT_4) + key[2]) ^ (value0 + sum) ^ - ((value0 >> SHIFT_5) + key[3]); - } -} - -// TEA decryption function -auto teaDecrypt(uint32_t &value0, uint32_t &value1, - const std::array &key) -> void { - uint32_t sum = DELTA * NUM_ROUNDS; - for (int i = 0; i < NUM_ROUNDS; ++i) { - value1 -= ((value0 << SHIFT_4) + key[2]) ^ (value0 + sum) ^ - ((value0 >> SHIFT_5) + key[3]); - value0 -= ((value1 << SHIFT_4) + key[0]) ^ (value1 + sum) ^ - ((value1 >> SHIFT_5) + key[1]); - sum -= DELTA; - } -} - -// Helper function to convert a byte array to a vector of uint32_t -auto toUint32Vector(const std::vector &data) -> std::vector { - size_t numElements = (data.size() + 3) / 4; - std::vector result(numElements); - - for (size_t index = 0; index < data.size(); ++index) { - result[index / 4] |= static_cast(data[index]) - << ((index % 4) * BYTE_SHIFT); - } - - return result; -} - -// Helper function to convert a vector of uint32_t back to a byte array -auto toByteArray(const std::vector &data) -> std::vector { - std::vector result(data.size() * 4); - - for (size_t index = 0; index < data.size() * 4; ++index) { - result[index] = - static_cast(data[index / 4] >> ((index % 4) * BYTE_SHIFT)); - } - - return result; -} - -// XXTEA encrypt function -auto xxteaEncrypt(const std::vector &inputData, - const std::vector &inputKey) - -> std::vector { - size_t numElements = inputData.size(); - if (numElements < 2) { - return inputData; - } - - uint32_t sum = 0; - uint32_t lastElement = inputData[numElements - 1]; - uint32_t currentElement; - size_t numRounds = MIN_ROUNDS + MAX_ROUNDS / numElements; - - std::vector result = inputData; - - for (size_t roundIndex = 0; roundIndex < numRounds; ++roundIndex) { - sum += DELTA; - uint32_t keyIndex = (sum >> SHIFT_2) & KEY_MASK; - for (size_t elementIndex = 0; elementIndex < numElements - 1; - ++elementIndex) { - currentElement = result[elementIndex + 1]; - result[elementIndex] += - ((lastElement >> SHIFT_5) ^ (currentElement << SHIFT_2)) + - ((currentElement >> SHIFT_3) ^ (lastElement << SHIFT_4)) ^ - ((sum ^ currentElement) + - (inputKey[(elementIndex & KEY_MASK) ^ keyIndex] ^ - lastElement)); - lastElement = result[elementIndex]; - } - currentElement = result[0]; - result[numElements - 1] += - ((lastElement >> SHIFT_5) ^ (currentElement << SHIFT_2)) + - ((currentElement >> SHIFT_3) ^ (lastElement << SHIFT_4)) ^ - ((sum ^ currentElement) + - (inputKey[((numElements - 1) & KEY_MASK) ^ keyIndex] ^ - lastElement)); - lastElement = result[numElements - 1]; - } - - return result; -} - -// XXTEA decrypt function -auto xxteaDecrypt(const std::vector &inputData, - const std::vector &inputKey) - -> std::vector { - size_t numElements = inputData.size(); - if (numElements < 2) { - return inputData; - } - - uint32_t sum = (MIN_ROUNDS + MAX_ROUNDS / numElements) * DELTA; - uint32_t lastElement = inputData[numElements - 1]; - uint32_t currentElement; - - std::vector result = inputData; - - for (size_t roundIndex = 0; - roundIndex < MIN_ROUNDS + MAX_ROUNDS / numElements; ++roundIndex) { - uint32_t keyIndex = (sum >> SHIFT_2) & KEY_MASK; - for (size_t elementIndex = numElements - 1; elementIndex > 0; - --elementIndex) { - lastElement = result[elementIndex - 1]; - result[elementIndex] -= - ((lastElement >> SHIFT_5) ^ (currentElement << SHIFT_2)) + - ((currentElement >> SHIFT_3) ^ (lastElement << SHIFT_4)) ^ - ((sum ^ currentElement) + - (inputKey[(elementIndex & KEY_MASK) ^ keyIndex] ^ - lastElement)); - currentElement = result[elementIndex]; - } - lastElement = result[numElements - 1]; - result[0] -= - ((lastElement >> SHIFT_5) ^ (currentElement << SHIFT_2)) + - ((currentElement >> SHIFT_3) ^ (lastElement << SHIFT_4)) ^ - ((sum ^ currentElement) + - (inputKey[((numElements - 1) & KEY_MASK) ^ keyIndex] ^ - lastElement)); - sum -= DELTA; - currentElement = result[0]; - } - - return result; -} - -// XTEA encryption function -auto xteaEncrypt(uint32_t &value0, uint32_t &value1, - const XTEAKey &key) -> void { - uint32_t sum = 0; - for (int i = 0; i < NUM_ROUNDS; ++i) { - value0 += ((value1 << SHIFT_4) ^ (value1 >> SHIFT_5)) + value1 ^ - (sum + key[sum & KEY_MASK]); - sum += DELTA; - value1 += ((value0 << SHIFT_4) ^ (value0 >> SHIFT_5)) + value0 ^ - (sum + key[(sum >> SHIFT_11) & KEY_MASK]); - } -} - -// XTEA decryption function -auto xteaDecrypt(uint32_t &value0, uint32_t &value1, - const XTEAKey &key) -> void { - uint32_t sum = DELTA * NUM_ROUNDS; - for (int i = 0; i < NUM_ROUNDS; ++i) { - value1 -= ((value0 << SHIFT_4) ^ (value0 >> SHIFT_5)) + value0 ^ - (sum + key[(sum >> SHIFT_11) & KEY_MASK]); - sum -= DELTA; - value0 -= ((value1 << SHIFT_4) ^ (value1 >> SHIFT_5)) + value1 ^ - (sum + key[sum & KEY_MASK]); - } -} -} // namespace atom::algorithm diff --git a/src/atom/algorithm/tea.hpp b/src/atom/algorithm/tea.hpp deleted file mode 100644 index 6e6fae88..00000000 --- a/src/atom/algorithm/tea.hpp +++ /dev/null @@ -1,90 +0,0 @@ -#ifndef ATOM_ALGORITHM_TEA_HPP -#define ATOM_ALGORITHM_TEA_HPP - -#include -#include -#include - -namespace atom::algorithm { -using XTEAKey = std::array; - -/** - * @brief Encrypts two 32-bit values using the TEA algorithm. - * - * @param value0 The first 32-bit value to be encrypted. - * @param value1 The second 32-bit value to be encrypted. - * @param key The 128-bit key used for encryption. - */ -auto teaEncrypt(uint32_t &value0, uint32_t &value1, - const std::array &key) -> void; - -/** - * @brief Decrypts two 32-bit values using the TEA algorithm. - * - * @param value0 The first 32-bit value to be decrypted. - * @param value1 The second 32-bit value to be decrypted. - * @param key The 128-bit key used for decryption. - */ -auto teaDecrypt(uint32_t &value0, uint32_t &value1, - const std::array &key) -> void; - -/** - * @brief Encrypts a vector of 32-bit values using the XXTEA algorithm. - * - * @param inputData The vector of 32-bit values to be encrypted. - * @param inputKey The 128-bit key used for encryption. - * @return A vector of encrypted 32-bit values. - */ -auto xxteaEncrypt(const std::vector &inputData, - const std::vector &inputKey) - -> std::vector; - -/** - * @brief Decrypts a vector of 32-bit values using the XXTEA algorithm. - * - * @param inputData The vector of 32-bit values to be decrypted. - * @param inputKey The 128-bit key used for decryption. - * @return A vector of decrypted 32-bit values. - */ -auto xxteaDecrypt(const std::vector &inputData, - const std::vector &inputKey) - -> std::vector; - -/** - * @brief Encrypts two 32-bit values using the XTEA algorithm. - * - * @param value0 The first 32-bit value to be encrypted. - * @param value1 The second 32-bit value to be encrypted. - * @param key The 128-bit key used for encryption. - */ -auto xteaEncrypt(uint32_t &value0, uint32_t &value1, - const XTEAKey &key) -> void; - -/** - * @brief Decrypts two 32-bit values using the XTEA algorithm. - * - * @param value0 The first 32-bit value to be decrypted. - * @param value1 The second 32-bit value to be decrypted. - * @param key The 128-bit key used for decryption. - */ -auto xteaDecrypt(uint32_t &value0, uint32_t &value1, - const XTEAKey &key) -> void; - -/** - * @brief Converts a byte array to a vector of 32-bit unsigned integers. - * - * @param data The byte array to be converted. - * @return A vector of 32-bit unsigned integers. - */ -auto toUint32Vector(const std::vector &data) -> std::vector; - -/** - * @brief Converts a vector of 32-bit unsigned integers back to a byte array. - * - * @param data The vector of 32-bit unsigned integers to be converted. - * @return A byte array. - */ -auto toByteArray(const std::vector &data) -> std::vector; -} // namespace atom::algorithm - -#endif diff --git a/src/atom/algorithm/weight.hpp b/src/atom/algorithm/weight.hpp deleted file mode 100644 index bdf0d78b..00000000 --- a/src/atom/algorithm/weight.hpp +++ /dev/null @@ -1,243 +0,0 @@ -#ifndef ATOM_ALGORITHM_WEIGHT_HPP -#define ATOM_ALGORITHM_WEIGHT_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "atom/utils/random.hpp" -#include "error/exception.hpp" -#include "function/concept.hpp" - -namespace atom::algorithm { -template -class WeightSelector { -public: - class SelectionStrategy { - public: - virtual ~SelectionStrategy() = default; - virtual auto select(std::span cumulative_weights, - T total_weight) -> size_t = 0; - }; - - class DefaultSelectionStrategy : public SelectionStrategy { - private: - utils::Random> random_; - - public: - DefaultSelectionStrategy() : random_(0.0, 1.0) {} - - auto select(std::span cumulative_weights, - T total_weight) -> size_t override { - T randomValue = random_() * total_weight; - auto it = std::ranges::upper_bound(cumulative_weights, randomValue); - return std::distance(cumulative_weights.begin(), it); - } - }; - - class BottomHeavySelectionStrategy : public SelectionStrategy { - private: - utils::Random> random_; - - public: - BottomHeavySelectionStrategy() : random_(0.0, 1.0) {} - - auto select(std::span cumulative_weights, - T total_weight) -> size_t override { - T randomValue = std::sqrt(random_()) * total_weight; - auto it = std::ranges::upper_bound(cumulative_weights, randomValue); - return std::distance(cumulative_weights.begin(), it); - } - }; - - class RandomSelectionStrategy : public SelectionStrategy { - private: - utils::Random> - random_index_; - - public: - explicit RandomSelectionStrategy(size_t max_index) - : random_index_(0, max_index - 1) {} - - auto select(std::span /*cumulative_weights*/, - T /*total_weight*/) -> size_t override { - return random_index_(); - } - }; - - class WeightedRandomSampler { - public: - auto sample(std::span weights, size_t n) -> std::vector { - std::vector indices(weights.size()); - std::iota(indices.begin(), indices.end(), 0); - - utils::Random> random( - weights); - std::vector results(n); - std::generate(results.begin(), results.end(), - [&]() { return random(); }); - - return results; - } - }; - -private: - std::vector weights_; - std::vector cumulative_weights_; - std::unique_ptr strategy_; - - void updateCumulativeWeights() { - cumulative_weights_.resize(weights_.size()); - std::exclusive_scan(weights_.begin(), weights_.end(), - cumulative_weights_.begin(), T{0}); - } - -public: - explicit WeightSelector(std::span input_weights, - std::unique_ptr custom_strategy = - std::make_unique()) - : weights_(input_weights.begin(), input_weights.end()), - strategy_(std::move(custom_strategy)) { - updateCumulativeWeights(); - } - - void setSelectionStrategy(std::unique_ptr new_strategy) { - strategy_ = std::move(new_strategy); - } - - auto select() -> size_t { - T totalWeight = std::reduce(weights_.begin(), weights_.end()); - return strategy_->select(cumulative_weights_, totalWeight); - } - - auto selectMultiple(size_t n) -> std::vector { - std::vector results; - results.reserve(n); - for (size_t i = 0; i < n; ++i) { - results.push_back(select()); - } - return results; - } - - void updateWeight(size_t index, T new_weight) { - if (index >= weights_.size()) { - THROW_OUT_OF_RANGE("Index out of range"); - } - weights_[index] = new_weight; - updateCumulativeWeights(); - } - - void addWeight(T new_weight) { - weights_.push_back(new_weight); - updateCumulativeWeights(); - } - - void removeWeight(size_t index) { - if (index >= weights_.size()) { - THROW_OUT_OF_RANGE("Index out of range"); - } - weights_.erase(weights_.begin() + index); - updateCumulativeWeights(); - } - - void normalizeWeights() { - T sum = std::reduce(weights_.begin(), weights_.end()); - if (sum > T{0}) { - std::ranges::transform(weights_, weights_.begin(), - [sum](T w) { return w / sum; }); - updateCumulativeWeights(); - } - } - - void applyFunctionToWeights(std::invocable auto&& func) { - std::ranges::transform(weights_, weights_.begin(), - std::forward(func)); - updateCumulativeWeights(); - } - - void batchUpdateWeights(const std::vector>& updates) { - for (const auto& [index, new_weight] : updates) { - if (index >= weights_.size()) { - THROW_OUT_OF_RANGE("Index out of range"); - } - weights_[index] = new_weight; - } - updateCumulativeWeights(); - } - - [[nodiscard]] auto getWeight(size_t index) const -> std::optional { - if (index >= weights_.size()) { - return std::nullopt; - } - return weights_[index]; - } - - [[nodiscard]] auto getMaxWeightIndex() const -> size_t { - return std::distance(weights_.begin(), - std::ranges::max_element(weights_)); - } - - [[nodiscard]] auto getMinWeightIndex() const -> size_t { - return std::distance(weights_.begin(), - std::ranges::min_element(weights_)); - } - - [[nodiscard]] auto size() const -> size_t { return weights_.size(); } - - [[nodiscard]] auto getWeights() const -> std::span { - return weights_; - } - - [[nodiscard]] auto getTotalWeight() const -> T { - return std::reduce(weights_.begin(), weights_.end()); - } - - void resetWeights(const std::vector& new_weights) { - weights_ = new_weights; - updateCumulativeWeights(); - } - - void scaleWeights(T factor) { - std::ranges::transform(weights_, weights_.begin(), - [factor](T w) { return w * factor; }); - updateCumulativeWeights(); - } - - [[nodiscard]] auto getAverageWeight() const -> T { - return getTotalWeight() / static_cast(weights_.size()); - } - - void printWeights(std::ostream& oss) const { - oss << std::format("[{:.2f}", weights_.front()); - for (auto it = weights_.begin() + 1; it != weights_.end(); ++it) { - oss << std::format(", {:.2f}", *it); - } - oss << "]\n"; - } -}; - -template -class TopHeavySelectionStrategy : public WeightSelector::SelectionStrategy { -private: - utils::Random> random_; - -public: - TopHeavySelectionStrategy() : random_(0.0, 1.0) {} - - auto select(std::span cumulative_weights, - T total_weight) -> size_t override { - T randomValue = std::pow(random_(), 2) * total_weight; - auto it = std::ranges::upper_bound(cumulative_weights, randomValue); - return std::distance(cumulative_weights.begin(), it); - } -}; - -} // namespace atom::algorithm - -#endif diff --git a/src/atom/algorithm/xmake.lua b/src/atom/algorithm/xmake.lua deleted file mode 100644 index 45f56012..00000000 --- a/src/atom/algorithm/xmake.lua +++ /dev/null @@ -1,21 +0,0 @@ --- xmake.lua for Atom-Algorithm --- This project is licensed under the terms of the GPL3 license. --- --- Project Name: Atom-Algorithm --- Description: A collection of algorithms --- Author: Max Qian --- License: GPL3 - -package("foo") - add_deps("cmake") - set_sourcedir(path.join(os.scriptdir(), "foo")) - on_install(function (package) - local configs = {} - table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release")) - table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF")) - import("package.tools.cmake").install(package, configs) - end) - on_test(function (package) - assert(package:has_cfuncs("add", {includes = "foo.h"})) - end) -package_end() diff --git a/src/atom/async/CMakeLists.txt b/src/atom/async/CMakeLists.txt deleted file mode 100644 index 58a470f8..00000000 --- a/src/atom/async/CMakeLists.txt +++ /dev/null @@ -1,73 +0,0 @@ -# CMakeLists.txt for Atom-Async -# This project is licensed under the terms of the GPL3 license. -# -# Project Name: Atom-Async -# Description: Async Implementation of Lithium Server and Driver -# Author: Max Qian -# License: GPL3 - -cmake_minimum_required(VERSION 3.20) -project(atom-async C CXX) - -# Sources -set(${PROJECT_NAME}_SOURCES - daemon.cpp - limiter.cpp - lock.cpp - timer.cpp -) - -# Headers -set(${PROJECT_NAME}_HEADERS - async.hpp - daemon.hpp - eventstack.hpp - limiter.hpp - lock.hpp - message_bus.hpp - message_queue.hpp - pool.hpp - queue.hpp - safetype.hpp - thread_wrapper.hpp - timer.hpp - trigger.hpp -) - -set(${PROJECT_NAME}_LIBS - loguru - ${CMAKE_THREAD_LIBS_INIT} -) - -# Build Object Library -add_library(${PROJECT_NAME}_OBJECT OBJECT) -set_property(TARGET ${PROJECT_NAME}_OBJECT PROPERTY POSITION_INDEPENDENT_CODE 1) - -target_sources(${PROJECT_NAME}_OBJECT - PUBLIC - ${${PROJECT_NAME}_HEADERS} - PRIVATE - ${${PROJECT_NAME}_SOURCES} -) - -target_link_libraries(${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) - -add_library(${PROJECT_NAME} STATIC) - -target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) -target_include_directories(${PROJECT_NAME} PUBLIC .) - -set_target_properties(${PROJECT_NAME} PROPERTIES - VERSION ${CMAKE_HYDROGEN_VERSION_STRING} - SOVERSION ${HYDROGEN_SOVERSION} - OUTPUT_NAME ${PROJECT_NAME} -) - -install(TARGETS ${PROJECT_NAME} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -) - -if (ATOM_BUILD_PYTHON) -pybind11_add_module(${PROJECT_NAME}-py _pybind.cpp) -target_link_libraries(${PROJECT_NAME}-py PRIVATE ${PROJECT_NAME}) -endif() diff --git a/src/atom/async/async.hpp b/src/atom/async/async.hpp deleted file mode 100644 index d1c3903f..00000000 --- a/src/atom/async/async.hpp +++ /dev/null @@ -1,417 +0,0 @@ -/* - * async.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-11-10 - -Description: A simple but useful async worker manager - -**************************************************/ - -#ifndef ATOM_ASYNC_ASYNC_HPP -#define ATOM_ASYNC_ASYNC_HPP - -#include -#include -#include -#include -#include -#include - -#include "atom/error/exception.hpp" - -class TimeoutException : public atom::error::RuntimeError { -public: - using atom::error::RuntimeError::RuntimeError; -}; - -#define THROW_TIMEOUT_EXCEPTION(...) \ - throw TimeoutException(ATOM_FILE_NAME, ATOM_FILE_LINE, ATOM_FUNC_NAME, \ - __VA_ARGS__); - -namespace atom::async { -/** - * @brief Class for performing asynchronous tasks. - * - * This class allows you to start a task asynchronously and get the result when - * it's done. It also provides functionality to cancel the task, check if it's - * done or active, validate the result, set a callback function, and set a - * timeout. - * - * @tparam ResultType The type of the result returned by the task. - */ -template -class AsyncWorker { -public: - /** - * @brief Starts the task asynchronously. - * - * @tparam Func The type of the function to be executed asynchronously. - * @tparam Args The types of the arguments to be passed to the function. - * @param func The function to be executed asynchronously. - * @param args The arguments to be passed to the function. - */ - template - void startAsync(Func &&func, Args &&...args); - - /** - * @brief Gets the result of the task. - * - * @throw std::runtime_error if the task is not valid. - * @return The result of the task. - */ - auto getResult() -> ResultType; - - /** - * @brief Cancels the task. - * - * If the task is valid, this function waits for the task to complete. - */ - void cancel(); - - /** - * @brief Checks if the task is done. - * - * @return True if the task is done, false otherwise. - */ - [[nodiscard]] auto isDone() const -> bool; - - /** - * @brief Checks if the task is active. - * - * @return True if the task is active, false otherwise. - */ - [[nodiscard]] auto isActive() const -> bool; - - /** - * @brief Validates the result of the task using a validator function. - * - * @param validator The function used to validate the result. - * @return True if the result is valid, false otherwise. - */ - auto validate(std::function validator) -> bool; - - /** - * @brief Sets a callback function to be called when the task is done. - * - * @param callback The callback function to be set. - */ - void setCallback(std::function callback); - - /** - * @brief Sets a timeout for the task. - * - * @param timeout The timeout duration. - */ - void setTimeout(std::chrono::seconds timeout); - - /** - * @brief Waits for the task to complete. - * - * If a timeout is set, this function waits until the task is done or the - * timeout is reached. If a callback function is set and the task is done, - * the callback function is called with the result. - */ - void waitForCompletion(); - -private: - std::future - task_; ///< The future representing the asynchronous task. - std::function - callback_; ///< The callback function to be called when the task is - ///< done. - std::chrono::seconds timeout_{0}; ///< The timeout duration for the task. -}; - -/** - * @brief Class for managing multiple AsyncWorker instances. - * - * This class provides functionality to create and manage multiple AsyncWorker - * instances. - * - * @tparam ResultType The type of the result returned by the tasks managed by - * this class. - */ -template -class AsyncWorkerManager { -public: - /** - * @brief Default constructor. - */ - AsyncWorkerManager() = default; - - /** - * @brief Creates a new AsyncWorker instance and starts the task - * asynchronously. - * - * @tparam Func The type of the function to be executed asynchronously. - * @tparam Args The types of the arguments to be passed to the function. - * @param func The function to be executed asynchronously. - * @param args The arguments to be passed to the function. - * @return A shared pointer to the created AsyncWorker instance. - */ - template - auto createWorker(Func &&func, Args &&...args) - -> std::shared_ptr>; - - /** - * @brief Cancels all the managed tasks. - */ - void cancelAll(); - - /** - * @brief Checks if all the managed tasks are done. - * - * @return True if all tasks are done, false otherwise. - */ - auto allDone() const -> bool; - - /** - * @brief Waits for all the managed tasks to complete. - */ - void waitForAll(); - - /** - * @brief Checks if a specific task is done. - * - * @param worker The AsyncWorker instance to check. - * @return True if the task is done, false otherwise. - */ - bool isDone(std::shared_ptr> worker) const; - - /** - * @brief Cancels a specific task. - * - * @param worker The AsyncWorker instance to cancel. - */ - void cancel(std::shared_ptr> worker); - -private: - std::vector>> - workers_; ///< The list of managed AsyncWorker instances. -}; - -/** - * @brief Gets the result of the task with a timeout. - * - * @param future The future representing the asynchronous task. - * @param timeout The timeout duration. - * @return The result of the task. - */ -template -auto getWithTimeout(std::future &future, - std::chrono::milliseconds timeout) -> ReturnType; - -template -template -void AsyncWorker::startAsync(Func &&func, Args &&...args) { - static_assert(std::is_invocable_r_v, - "Function must return a result"); - task_ = std::async(std::launch::async, std::forward(func), - std::forward(args)...); -} - -template -[[nodiscard]] auto AsyncWorker::getResult() -> ResultType { - if (!task_.valid()) { - throw std::invalid_argument("Task is not valid"); - } - return task_.get(); -} - -template -void AsyncWorker::cancel() { - if (task_.valid()) { - task_.wait(); // 等待任务完成 - } -} - -template -auto AsyncWorker::isDone() const -> bool { - return task_.valid() && (task_.wait_for(std::chrono::seconds(0)) == - std::future_status::ready); -} - -template -auto AsyncWorker::isActive() const -> bool { - return task_.valid() && (task_.wait_for(std::chrono::seconds(0)) == - std::future_status::timeout); -} - -template -auto AsyncWorker::validate( - std::function validator) -> bool { - if (!isDone()) { - } - ResultType result = getResult(); - return validator(result); -} - -template -void AsyncWorker::setCallback( - std::function callback) { - callback_ = callback; -} - -template -void AsyncWorker::setTimeout(std::chrono::seconds timeout) { - timeout_ = timeout; -} - -template -void AsyncWorker::waitForCompletion() { - if (timeout_ != std::chrono::seconds(0)) { - auto startTime = std::chrono::steady_clock::now(); - while (!isDone()) { - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - if (std::chrono::steady_clock::now() - startTime > timeout_) { - cancel(); - break; - } - } - } else { - while (!isDone()) { - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - } - } - - if (callback_ && isDone()) { - callback_(getResult()); - } -} - -template -template -[[nodiscard]] auto AsyncWorkerManager::createWorker( - Func &&func, Args &&...args) -> std::shared_ptr> { - auto worker = std::make_shared>(); - workers_.push_back(worker); - worker->StartAsync(std::forward(func), std::forward(args)...); - return worker; -} - -template -void AsyncWorkerManager::cancelAll() { - for (auto &worker : workers_) { - worker->Cancel(); - } -} - -template -auto AsyncWorkerManager::allDone() const -> bool { - return std::all_of(workers_.begin(), workers_.end(), - [](const auto &worker) { return worker->IsDone(); }); -} - -template -void AsyncWorkerManager::waitForAll() { - while (!allDone()) { - } -} - -template -auto AsyncWorkerManager::isDone( - std::shared_ptr> worker) const -> bool { - return worker->IsDone(); -} - -template -void AsyncWorkerManager::cancel( - std::shared_ptr> worker) { - worker->Cancel(); -} - -template -using EnableIfNotVoid = typename std::enable_if_t, T>; - -// Retry strategy enum for different backoff strategies -enum class BackoffStrategy { FIXED, LINEAR, EXPONENTIAL }; - -/** - * @brief Async execution with retry. - * - * @tparam Func The type of the function to be executed asynchronously. - * @tparam Args The types of the arguments to be passed to the function. - * @param func The function to be executed asynchronously. - * @param args The arguments to be passed to the function. - * @return A shared pointer to the created AsyncWorker instance. - */ -template -auto asyncRetry(Func &&func, int attemptsLeft, - std::chrono::milliseconds initialDelay, - BackoffStrategy strategy, - std::chrono::milliseconds maxTotalDelay, Callback &&callback, - ExceptionHandler &&exceptionHandler, - CompleteHandler &&completeHandler, Args &&...args) - -> std::future> { - using ReturnType = typename std::invoke_result_t; - - auto attempt = std::async(std::launch::async, std::forward(func), - std::forward(args)...); - - try { - if constexpr (std::is_same_v) { - attempt.get(); - callback(); - completeHandler(); - return std::async(std::launch::async, [] {}); - } else { - auto result = attempt.get(); - callback(); - completeHandler(); - return std::async(std::launch::async, - [result = std::move(result)]() mutable { - return std::move(result); - }); - } - } catch (const std::exception &e) { - exceptionHandler(e); // Call custom exception handler - - if (attemptsLeft <= 1 || maxTotalDelay.count() <= 0) { - completeHandler(); // Invoke complete handler on final failure - throw; - } - - switch (strategy) { - case BackoffStrategy::LINEAR: - initialDelay *= 2; - break; - case BackoffStrategy::EXPONENTIAL: - initialDelay = std::chrono::milliseconds(static_cast( - initialDelay.count() * std::pow(2, (5 - attemptsLeft)))); - break; - default: - break; - } - - std::this_thread::sleep_for(initialDelay); - - // Decrease the maximum total delay by the time spent in the last - // attempt - maxTotalDelay -= initialDelay; - - return asyncRetry(std::forward(func), attemptsLeft - 1, - initialDelay, strategy, maxTotalDelay, - std::forward(callback), - std::forward(exceptionHandler), - std::forward(completeHandler), - std::forward(args)...); - } -} - -// getWithTimeout function for C++17 -template -auto getWithTimeout(std::future &future, - Duration timeout) -> EnableIfNotVoid { - if (future.wait_for(timeout) == std::future_status::ready) { - return future.get(); - } - THROW_TIMEOUT_EXCEPTION("Timeout occurred while waiting for future result"); -} -} // namespace atom::async -#endif diff --git a/src/atom/async/daemon.cpp b/src/atom/async/daemon.cpp deleted file mode 100644 index 3ca3ef74..00000000 --- a/src/atom/async/daemon.cpp +++ /dev/null @@ -1,213 +0,0 @@ -/* - * daemon.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-11-11 - -Description: Daemon process implementation for Linux and Windows. But there is -still some problems on Windows, especially the console. - -**************************************************/ - -#include "daemon.hpp" - -#include -#include -#include -#include -#include "atom/macro.hpp" - -#ifndef _WIN32 -#include -#endif - -#include "atom/log/loguru.hpp" -#include "atom/utils/time.hpp" - -constexpr int kDaemonRestartInterval = 10; -const std::string kPidFilePath = "lithium-daemon"; - -bool gIsDaemon = false; - -namespace atom::async { -auto DaemonGuard::toString() const -> std::string { - std::stringstream stringStream; - stringStream << "[DaemonGuard parentId=" << m_parentId - << " mainId=" << m_mainId << " parentStartTime=" - << utils::timeStampToString(m_parentStartTime) - << " mainStartTime=" - << utils::timeStampToString(m_mainStartTime) - << " restartCount=" << m_restartCount.load() << "]"; - return stringStream.str(); -} - -auto DaemonGuard::realStart(int /*argc*/, char **argv, - const std::function &mainCb) - -> int { -#ifdef _WIN32 - m_mainId = reinterpret_cast(static_cast(getpid())); -#else - m_mainId = getpid(); -#endif - m_mainStartTime = time(nullptr); - return mainCb(0, argv); -} - -auto DaemonGuard::realDaemon(int /*argc*/, char **argv, - const std::function &mainCb) - -> int { -#ifdef _WIN32 - // 在 Windows 平台下模拟守护进程 - FreeConsole(); - m_parentId = - reinterpret_cast(static_cast(GetCurrentProcessId())); - m_parentStartTime = time(nullptr); - while (true) { - PROCESS_INFORMATION processInfo; - STARTUPINFO startupInfo; - memset(&processInfo, 0, sizeof(processInfo)); - memset(&startupInfo, 0, sizeof(startupInfo)); - startupInfo.cb = sizeof(startupInfo); - if (!CreateProcess(nullptr, argv[0], nullptr, nullptr, FALSE, - CREATE_NEW_CONSOLE, nullptr, nullptr, &startupInfo, - &processInfo)) { - LOG_F(ERROR, "Create process failed with error code {}", - GetLastError()); - return -1; - } - WaitForSingleObject(processInfo.hProcess, INFINITE); - CloseHandle(processInfo.hProcess); - CloseHandle(processInfo.hThread); - - // 等待一段时间后重新启动子进程 - m_restartCount++; - Sleep(kDaemonRestartInterval * 1000); - } -#else - if (daemon(1, 0) == -1) { - perror("daemon"); - exit(EXIT_FAILURE); - } - - m_parentId = getpid(); - m_parentStartTime = time(nullptr); - while (true) { - pid_t pid = fork(); // 创建子进程 - if (pid == 0) { // 子进程 - m_mainId = getpid(); - m_mainStartTime = time(nullptr); - LOG_F(INFO, "daemon process start pid={}", - reinterpret_cast(getpid())); - return realStart(0, argv, mainCb); - } - if (pid < 0) { // 创建子进程失败 - LOG_F(ERROR, "fork fail return={} errno={} errstr={}", pid, errno, - strerror(errno)); - return -1; - } // 父进程 - int status = 0; - waitpid(pid, &status, 0); // 等待子进程退出 - - // 子进程异常退出 - if (status != 0) { - if (status == 9) { // SIGKILL 信号杀死子进程,不需要重新启动 - LOG_F(INFO, "daemon process killed pid={}", getpid()); - break; - } // 记录日志并重新启动子进程 - LOG_F(ERROR, "child crash pid={} status={}", pid, status); - - } else { // 正常退出,直接退出程序 - LOG_F(INFO, "daemon process exit pid={}", getpid()); - break; - } - - // 等待一段时间后重新启动子进程 - m_restartCount++; - sleep(kDaemonRestartInterval); - } -#endif - return 0; -} - -// 启动进程,如果需要创建守护进程,则先创建守护进程 -auto DaemonGuard::startDaemon(int argc, char **argv, - const std::function &mainCb, - bool isDaemon) -> int { -#ifdef _WIN32 - if (isDaemon) { - AllocConsole(); - if (!freopen("CONOUT$", "w", stdout)) { - LOG_F(ERROR, "Failed to redirect stdout"); - return -1; - } - if (!freopen("CONOUT$", "w", stderr)) { - LOG_F(ERROR, "Failed to redirect stderr"); - return -1; - } - } -#endif - - if (!isDaemon) { // 不需要创建守护进程 -#ifdef _WIN32 - m_parentId = reinterpret_cast(static_cast(getpid())); -#else - m_parentId = getpid(); -#endif - m_parentStartTime = time(nullptr); - return realStart(argc, argv, mainCb); - } - // 创建守护进程 - return realDaemon(argc, argv, mainCb); -} - -void signalHandler(int signum) { -#ifdef _WIN32 - if (signum == SIGTERM || signum == SIGINT) { - if (remove(kPidFilePath.c_str()) != 0) { - LOG_F(ERROR, "Failed to remove PID file"); - } - exit(0); - } -#else - if (signum == SIGTERM || signum == SIGINT) { - ATOM_UNREF_PARAM(remove(kPidFilePath.c_str())); - exit(0); - } -#endif -} - -void writePidFile() { - std::ofstream ofs(kPidFilePath); - if (!ofs) { - LOG_F(ERROR, "open pid file {} failed", kPidFilePath); - exit(-1); - } - ofs << getpid(); - ofs.close(); -} - -// 检查 PID 文件是否存在,并检查文件中的 PID 是否有效 -auto checkPidFile() -> bool { -#ifdef _WIN32 - // Windows 平台下不检查 PID 文件是否存在以及文件中的 PID 是否有效 - return false; -#else - struct stat st {}; - if (stat(kPidFilePath.c_str(), &st) != 0) { - return false; - } - std::ifstream ifs(kPidFilePath); - if (!ifs) { - return false; - } - pid_t pid = -1; - ifs >> pid; - ifs.close(); - return kill(pid, 0) != -1 || errno != ESRCH; -#endif -} -} // namespace atom::async diff --git a/src/atom/async/daemon.hpp b/src/atom/async/daemon.hpp deleted file mode 100644 index fda4c2f8..00000000 --- a/src/atom/async/daemon.hpp +++ /dev/null @@ -1,122 +0,0 @@ -/* - * daemon.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-11-11 - -Description: Daemon process implementation - -**************************************************/ - -#ifndef ATOM_SERVER_DAEMON_HPP -#define ATOM_SERVER_DAEMON_HPP - -#include -#include -#include -#include -#include - -#ifdef _WIN32 -#include -#else -#include -#include -#include -#endif - -namespace atom::async { -// Class for managing process information -class DaemonGuard { -public: - /** - * @brief Default constructor. - */ - DaemonGuard() = default; - - /** - * @brief Converts process information to a string. - * - * @return The process information as a string. - */ - [[nodiscard]] auto toString() const -> std::string; - - /** - * @brief Starts a child process to execute the actual task. - * - * @param argc The number of command line arguments. - * @param argv An array of command line arguments. - * @param mainCb The main callback function to be executed in the child - * process. - * @return The return value of the main callback function. - */ - auto realStart(int argc, char **argv, - const std::function &mainCb) - -> int; - - /** - * @brief Starts a child process to execute the actual task. - * - * @param argc The number of command line arguments. - * @param argv An array of command line arguments. - * @param mainCb The main callback function to be executed in the child - * process. - * @return The return value of the main callback function. - */ - auto realDaemon(int argc, char **argv, - const std::function &mainCb) - -> int; - - /** - * @brief Starts the process. If a daemon process needs to be created, it - * will create the daemon process first. - * - * @param argc The number of command line arguments. - * @param argv An array of command line arguments. - * @param mainCb The main callback function to be executed. - * @param isDaemon Determines if a daemon process should be created. - * @return The return value of the main callback function. - */ - auto startDaemon(int argc, char **argv, - const std::function &mainCb, - bool isDaemon) -> int; - -private: -#ifdef _WIN32 - HANDLE m_parentId = 0; - HANDLE m_mainId = 0; -#else - pid_t m_parentId = 0; /**< The parent process ID. */ - pid_t m_mainId = 0; /**< The child process ID. */ -#endif - time_t m_parentStartTime = 0; /**< The start time of the parent process. */ - time_t m_mainStartTime = 0; /**< The start time of the child process. */ - std::atomic m_restartCount{0}; /**< The number of restarts. */ -}; - -/** - * @brief Signal handler function. - * - * @param signum The signal number. - */ -void signalHandler(int signum); - -/** - * @brief Writes the process ID to a file. - */ -void writePidFile(); - -/** - * @brief Checks if the process ID file exists. - * - * @return True if the process ID file exists, false otherwise. - */ -auto checkPidFile() -> bool; - -} // namespace atom::async - -#endif diff --git a/src/atom/async/eventstack.hpp b/src/atom/async/eventstack.hpp deleted file mode 100644 index cd07bd78..00000000 --- a/src/atom/async/eventstack.hpp +++ /dev/null @@ -1,380 +0,0 @@ -/* - * eventstack.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-3-26 - -Description: A thread-safe stack data structure for managing events. - -**************************************************/ - -#ifndef ATOM_ASYNC_EVENTSTACK_HPP -#define ATOM_ASYNC_EVENTSTACK_HPP - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace atom::async { -/** - * @brief A thread-safe stack data structure for managing events. - * - * @tparam T The type of events to store. - */ -template -class EventStack { -public: - EventStack() = default; - ~EventStack() = default; - - // Rule of five: explicitly define copy constructor, copy assignment - // operator, move constructor, and move assignment operator. - EventStack(const EventStack& other); - EventStack& operator=(const EventStack& other); - EventStack(EventStack&& other) noexcept; - EventStack& operator=(EventStack&& other) noexcept; - - /** - * @brief Pushes an event onto the stack. - * - * @param event The event to push. - */ - void pushEvent(T event); - - /** - * @brief Pops an event from the stack. - * - * @return The popped event, or std::nullopt if the stack is empty. - */ - auto popEvent() -> std::optional; - -#if ENABLE_DEBUG - /** - * @brief Prints all events in the stack. - */ - void printEvents() const; -#endif - - /** - * @brief Checks if the stack is empty. - * - * @return true if the stack is empty, false otherwise. - */ - auto isEmpty() const -> bool; - - /** - * @brief Returns the number of events in the stack. - * - * @return The number of events. - */ - auto size() const -> size_t; - - /** - * @brief Clears all events from the stack. - */ - void clearEvents(); - - /** - * @brief Returns the top event in the stack without removing it. - * - * @return The top event, or std::nullopt if the stack is empty. - */ - auto peekTopEvent() const -> std::optional; - - /** - * @brief Copies the current stack. - * - * @return A copy of the stack. - */ - auto copyStack() const -> EventStack; - - /** - * @brief Filters events based on a custom filter function. - * - * @param filterFunc The filter function. - */ - void filterEvents(std::function filterFunc); - - /** - * @brief Serializes the stack into a string. - * - * @return The serialized stack. - */ - auto serializeStack() const -> std::string; - - /** - * @brief Deserializes a string into the stack. - * - * @param serializedData The serialized stack data. - */ - void deserializeStack(std::string_view serializedData); - - /** - * @brief Removes duplicate events from the stack. - */ - void removeDuplicates(); - - /** - * @brief Sorts the events in the stack based on a custom comparison - * function. - * - * @param compareFunc The comparison function. - */ - void sortEvents(std::function compareFunc); - - /** - * @brief Reverses the order of events in the stack. - */ - void reverseEvents(); - - /** - * @brief Counts the number of events that satisfy a predicate. - * - * @param predicate The predicate function. - * @return The count of events satisfying the predicate. - */ - auto countEvents(std::function predicate) const -> size_t; - - /** - * @brief Finds the first event that satisfies a predicate. - * * - * @param predicate The predicate function. - * @return The first event satisfying the predicate, or std::nullopt if not - * found. - */ - auto findEvent(std::function predicate) const - -> std::optional; - - /** - * @brief Checks if any event in the stack satisfies a predicate. - * - * @param predicate The predicate function. - * @return true if any event satisfies the predicate, false otherwise. - */ - auto anyEvent(std::function predicate) const -> bool; - - /** - * @brief Checks if all events in the stack satisfy a predicate. - * - * @param predicate The predicate function. - * @return true if all events satisfy the predicate, false otherwise. - */ - auto allEvents(std::function predicate) const -> bool; - -private: - std::vector events_; /**< Vector to store events. */ - mutable std::shared_mutex mtx_; /**< Mutex for thread safety. */ - std::atomic eventCount_{0}; /**< Atomic counter for event count. */ -}; - -// Copy constructor -template -EventStack::EventStack(const EventStack& other) { - std::shared_lock lock(other.mtx_); - events_ = other.events_; - eventCount_.store(other.eventCount_.load()); -} - -// Copy assignment operator -template -EventStack& EventStack::operator=(const EventStack& other) { - if (this != &other) { - std::unique_lock lock1(mtx_, std::defer_lock); - std::shared_lock lock2(other.mtx_, std::defer_lock); - std::lock(lock1, lock2); - events_ = other.events_; - eventCount_.store(other.eventCount_.load()); - } - return *this; -} - -// Move constructor -template -EventStack::EventStack(EventStack&& other) noexcept { - std::unique_lock lock(other.mtx_); - events_ = std::move(other.events_); - eventCount_.store(other.eventCount_.load()); - other.eventCount_.store(0); -} - -// Move assignment operator -template -EventStack& EventStack::operator=(EventStack&& other) noexcept { - if (this != &other) { - std::unique_lock lock1(mtx_, std::defer_lock); - std::unique_lock lock2(other.mtx_, std::defer_lock); - std::lock(lock1, lock2); - events_ = std::move(other.events_); - eventCount_.store(other.eventCount_.load()); - other.eventCount_.store(0); - } - return *this; -} - -template -void EventStack::pushEvent(T event) { - std::unique_lock lock(mtx_); - events_.push_back(std::move(event)); - ++eventCount_; -} - -template -auto EventStack::popEvent() -> std::optional { - std::unique_lock lock(mtx_); - if (!events_.empty()) { - T event = std::move(events_.back()); - events_.pop_back(); - --eventCount_; - return event; - } - return std::nullopt; -} - -#if ENABLE_DEBUG -template -void EventStack::printEvents() const { - std::shared_lock lock(mtx_); - std::cout << "Events in stack:" << std::endl; - for (const T& event : events_) { - std::cout << event << std::endl; - } -} -#endif - -template -auto EventStack::isEmpty() const -> bool { - std::shared_lock lock(mtx_); - return events_.empty(); -} - -template -auto EventStack::size() const -> size_t { - return eventCount_.load(); -} - -template -void EventStack::clearEvents() { - std::unique_lock lock(mtx_); - events_.clear(); - eventCount_.store(0); -} - -template -auto EventStack::peekTopEvent() const -> std::optional { - std::shared_lock lock(mtx_); - if (!events_.empty()) { - return events_.back(); - } - return std::nullopt; -} - -template -auto EventStack::copyStack() const -> EventStack { - std::shared_lock lock(mtx_); - EventStack newStack; - newStack.events_ = events_; - newStack.eventCount_.store(eventCount_.load()); - return newStack; -} - -template -void EventStack::filterEvents(std::function filterFunc) { - std::unique_lock lock(mtx_); - events_.erase( - std::remove_if(events_.begin(), events_.end(), - [&](const T& event) { return !filterFunc(event); }), - events_.end()); - eventCount_.store(events_.size()); -} - -template -auto EventStack::serializeStack() const -> std::string { - std::shared_lock lock(mtx_); - std::string serializedStack; - serializedStack.reserve(events_.size() * - sizeof(T)); // Reserve space to improve performance - for (const T& event : events_) { - serializedStack += event + ";"; - } - return serializedStack; -} - -template -void EventStack::deserializeStack(std::string_view serializedData) { - std::unique_lock lock(mtx_); - events_.clear(); - size_t pos = 0; - size_t nextPos = 0; - while ((nextPos = serializedData.find(';', pos)) != - std::string_view::npos) { - T event = serializedData.substr(pos, nextPos - pos); - events_.push_back(std::move(event)); - pos = nextPos + 1; - } - eventCount_.store(events_.size()); -} - -template -void EventStack::removeDuplicates() { - std::unique_lock lock(mtx_); - std::sort(events_.begin(), events_.end()); - events_.erase(std::unique(events_.begin(), events_.end()), events_.end()); - eventCount_.store(events_.size()); -} - -template -void EventStack::sortEvents( - std::function compareFunc) { - std::unique_lock lock(mtx_); - std::sort(events_.begin(), events_.end(), compareFunc); -} - -template -void EventStack::reverseEvents() { - std::unique_lock lock(mtx_); - std::reverse(events_.begin(), events_.end()); -} - -template -auto EventStack::countEvents(std::function predicate) const - -> size_t { - std::shared_lock lock(mtx_); - return std::count_if(events_.begin(), events_.end(), predicate); -} - -template -auto EventStack::findEvent(std::function predicate) const - -> std::optional { - std::shared_lock lock(mtx_); - auto iterator = std::find_if(events_.begin(), events_.end(), predicate); - if (iterator != events_.end()) { - return *iterator; - } - return std::nullopt; -} - -template -auto EventStack::anyEvent(std::function predicate) const - -> bool { - std::shared_lock lock(mtx_); - return std::any_of(events_.begin(), events_.end(), predicate); -} - -template -auto EventStack::allEvents(std::function predicate) const - -> bool { - std::shared_lock lock(mtx_); - return std::all_of(events_.begin(), events_.end(), predicate); -} -} // namespace atom::async - -#endif // ATOM_ASYNC_EVENTSTACK_HPP diff --git a/src/atom/async/future.hpp b/src/atom/async/future.hpp deleted file mode 100644 index c3e3ef7c..00000000 --- a/src/atom/async/future.hpp +++ /dev/null @@ -1,453 +0,0 @@ -#ifndef ATOM_ASYNC_FUTURE_HPP -#define ATOM_ASYNC_FUTURE_HPP - -#include -#include - -#include "atom/error/exception.hpp" - -namespace atom::async { - -/** - * @class InvalidFutureException - * @brief Exception thrown when an invalid future is encountered. - */ -class InvalidFutureException : public atom::error::RuntimeError { -public: - using atom::error::RuntimeError::RuntimeError; -}; - -/** - * @def THROW_INVALID_FUTURE_EXCEPTION - * @brief Macro to throw an InvalidFutureException with file, line, and function - * information. - */ -#define THROW_INVALID_FUTURE_EXCEPTION(...) \ - throw InvalidFutureException(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__); - -/** - * @def THROW_NESTED_INVALID_FUTURE_EXCEPTION - * @brief Macro to rethrow a nested InvalidFutureException with file, line, and - * function information. - */ -#define THROW_NESTED_INVALID_FUTURE_EXCEPTION(...) \ - InvalidFutureException::rethrowNested(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, \ - "Invalid future: " __VA_ARGS__); - -/** - * @class EnhancedFuture - * @brief A template class that extends the standard future with additional - * features. - * @tparam T The type of the value that the future will hold. - */ -template -class EnhancedFuture { -public: - /** - * @brief Constructs an EnhancedFuture from a shared future. - * @param fut The shared future to wrap. - */ - explicit EnhancedFuture(std::shared_future &&fut) - : future_(std::move(fut)), cancelled_(false) {} - - explicit EnhancedFuture(const std::shared_future &fut) - : future_(fut), cancelled_(false) {} - - /** - * @brief Chains another operation to be called after the future is done. - * @tparam F The type of the function to call. - * @param func The function to call when the future is done. - * @return An EnhancedFuture for the result of the function. - */ - template - auto then(F &&func) { - using ResultType = std::invoke_result_t; - return EnhancedFuture( - std::async(std::launch::async, [fut = future_, - func = std::forward( - func)]() mutable { - if (fut.valid()) { - return func(fut.get()); - } - THROW_INVALID_FUTURE_EXCEPTION( - "Future is invalid or cancelled"); - }).share()); - } - - /** - * @brief Waits for the future with a timeout and auto-cancels if not ready. - * @param timeout The timeout duration. - * @return An optional containing the value if ready, or nullopt if timed - * out. - */ - auto waitFor(std::chrono::milliseconds timeout) -> std::optional { - if (future_.wait_for(timeout) == std::future_status::ready && - !cancelled_) { - return future_.get(); - } - cancel(); - return std::nullopt; - } - - /** - * @brief Checks if the future is done. - * @return True if the future is done, false otherwise. - */ - [[nodiscard]] auto isDone() const -> bool { - return future_.wait_for(std::chrono::milliseconds(0)) == - std::future_status::ready; - } - - /** - * @brief Sets a completion callback to be called when the future is done. - * @tparam F The type of the callback function. - * @param func The callback function to add. - */ - template - void onComplete(F &&func) { - if (!cancelled_) { - callbacks_.emplace_back(std::forward(func)); - std::async(std::launch::async, [this]() { - try { - if (future_.valid()) { - auto result = future_.get(); - for (auto &callback : callbacks_) { - callback(result); - } - } - } catch (const std::exception &e) { - } - }).get(); - } - } - - /** - * @brief Waits synchronously for the future to complete. - * @return The value of the future. - * @throws InvalidFutureException if the future is cancelled. - */ - auto wait() -> T { - if (cancelled_) { - THROW_OBJ_NOT_EXIST("Future has been cancelled"); - } - return future_.get(); - } - - /** - * @brief Cancels the future. - */ - void cancel() { cancelled_ = true; } - - /** - * @brief Checks if the future has been cancelled. - * @return True if the future has been cancelled, false otherwise. - */ - [[nodiscard]] auto isCancelled() const -> bool { return cancelled_; } - - /** - * @brief Gets the exception associated with the future, if any. - * @return A pointer to the exception, or nullptr if no exception. - */ - auto getException() -> std::exception_ptr { - try { - future_.get(); - } catch (...) { - return std::current_exception(); - } - return nullptr; - } - - /** - * @brief Retries the operation associated with the future. - * @tparam F The type of the function to call. - * @param func The function to call when retrying. - * @param max_retries The maximum number of retries. - * @return An EnhancedFuture for the result of the function. - */ - template - auto retry(F &&func, int max_retries) { - using ResultType = std::invoke_result_t; - return EnhancedFuture( - std::async(std::launch::async, [fut = future_, - func = std::forward(func), - max_retries]() mutable { - for (int attempt = 0; attempt < max_retries; ++attempt) { - if (fut.valid()) { - try { - return func(fut.get()); - } catch (const std::exception &e) { - if (attempt == max_retries - 1) { - throw; - } - } - } else { - THROW_UNLAWFUL_OPERATION( - "Future is invalid or cancelled"); - } - } - }).share()); - } - - auto isReady() -> bool { - return future_.wait_for(std::chrono::milliseconds(0)) == - std::future_status::ready; - } - - auto get() -> T { return future_.get(); } - -protected: - std::shared_future future_; ///< The underlying shared future. - std::vector> - callbacks_; ///< List of callbacks to be called on completion. - bool cancelled_; ///< Flag indicating if the future has been cancelled. -}; - -/** - * @class EnhancedFuture - * @brief Specialization of the EnhancedFuture class for void type. - */ -template <> -class EnhancedFuture { -public: - /** - * @brief Constructs an EnhancedFuture from a shared future. - * @param fut The shared future to wrap. - */ - explicit EnhancedFuture(std::shared_future &&fut) - : future_(std::move(fut)), cancelled_(false) {} - - explicit EnhancedFuture(const std::shared_future &fut) - : future_(fut), cancelled_(false) {} - - /** - * @brief Chains another operation to be called after the future is done. - * @tparam F The type of the function to call. - * @param func The function to call when the future is done. - * @return An EnhancedFuture for the result of the function. - */ - template - auto then(F &&func) { - using ResultType = std::invoke_result_t; - return EnhancedFuture( - std::async(std::launch::async, [fut = future_, - func = std::forward( - func)]() mutable { - if (fut.valid()) { - fut.get(); - return func(); - } - THROW_UNLAWFUL_OPERATION("Future is invalid or cancelled"); - }).share()); - } - - /** - * @brief Waits for the future with a timeout and auto-cancels if not ready. - * @param timeout The timeout duration. - * @return True if the future is ready, false otherwise. - */ - auto waitFor(std::chrono::milliseconds timeout) -> bool { - if (future_.wait_for(timeout) == std::future_status::ready && - !cancelled_) { - future_.get(); - return true; - } - cancel(); - return false; - } - - /** - * @brief Checks if the future is done. - * @return True if the future is done, false otherwise. - */ - [[nodiscard]] auto isDone() const -> bool { - return future_.wait_for(std::chrono::milliseconds(0)) == - std::future_status::ready; - } - - /** - * @brief Sets a completion callback to be called when the future is done. - * @tparam F The type of the callback function. - * @param func The callback function to add. - */ - template - void onComplete(F &&func) { - if (!cancelled_) { - callbacks_.emplace_back(std::forward(func)); - std::async(std::launch::async, [this]() { - try { - if (future_.valid()) { - future_.get(); - for (auto &callback : callbacks_) { - callback(); - } - } - } catch (const std::exception &e) { - } - }).get(); - } - } - - /** - * @brief Waits synchronously for the future to complete. - * @throws InvalidFutureException if the future is cancelled. - */ - void wait() { - if (cancelled_) { - THROW_OBJ_NOT_EXIST("Future has been cancelled"); - } - future_.get(); - } - - /** - * @brief Cancels the future. - */ - void cancel() { cancelled_ = true; } - - /** - * @brief Checks if the future has been cancelled. - * @return True if the future has been cancelled, false otherwise. - */ - [[nodiscard]] auto isCancelled() const -> bool { return cancelled_; } - - /** - * @brief Gets the exception associated with the future, if any. - * @return A pointer to the exception, or nullptr if no exception. - */ - auto getException() -> std::exception_ptr { - try { - future_.get(); - } catch (...) { - return std::current_exception(); - } - return nullptr; - } - - auto isReady() -> bool { - return future_.wait_for(std::chrono::milliseconds(0)) == - std::future_status::ready; - } - - auto get() -> void { future_.get(); } - -protected: - std::shared_future future_; ///< The underlying shared future. - std::vector> - callbacks_; ///< List of callbacks to be called on completion. - std::atomic - cancelled_; ///< Flag indicating if the future has been cancelled. -}; - -/** - * @brief Helper function to create an EnhancedFuture. - * @tparam F The type of the function to call. - * @tparam Args The types of the arguments to pass to the function. - * @param f The function to call. - * @param args The arguments to pass to the function. - * @return An EnhancedFuture for the result of the function. - */ -template -auto makeEnhancedFuture(F &&f, Args &&...args) { - using result_type = std::invoke_result_t; - return EnhancedFuture(std::async(std::launch::async, - std::forward(f), - std::forward(args)...) - .share()); -} - -/** - * @brief Helper function to get a future for a range of futures. - * @tparam InputIt The type of the input iterator. - * @param first The beginning of the range. - * @param last The end of the range. - * @param timeout An optional timeout duration. - * @return A future containing a vector of the results of the input futures. - */ -template -auto whenAll(InputIt first, InputIt last, - std::optional timeout = std::nullopt) - -> std::future< - std::vector::value_type>> { - using FutureType = typename std::iterator_traits::value_type; - using ResultType = std::vector; - - std::promise promise; - std::future resultFuture = promise.get_future(); - - // Launch an async task to wait for all the futures - auto asyncTask = std::async([promise = std::move(promise), first, last, - timeout]() mutable { - ResultType results; - try { - for (auto it = first; it != last; ++it) { - if (timeout) { - // Check each future with timeout (if specified) - if (it->wait_for(*timeout) == std::future_status::timeout) { - THROW_INVALID_ARGUMENT( - "Timeout while waiting for a future."); - } - } - results.push_back(std::move(*it)); - } - promise.set_value(std::move(results)); - } catch (const std::exception &e) { - promise.set_exception( - std::current_exception()); // Pass the exception to the future - } - }); - - // Optionally, store the future or use it if needed - asyncTask.wait(); // Wait for the async task to finish - - return resultFuture; -} - -/** - * @brief Helper to get the return type of a future. - * @tparam T The type of the future. - */ -template -using future_value_t = decltype(std::declval().get()); - -/** - * @brief Helper function for a variadic template version (when_all for futures - * as arguments). - * @tparam Futures The types of the futures. - * @param futures The futures to wait for. - * @return A future containing a tuple of the results of the input futures. - */ -template -auto whenAll(Futures &&...futures) - -> std::future...>> { - std::promise...>> promise; - std::future...>> resultFuture = - promise.get_future(); - - // Use async to wait for all futures and gather results - auto asyncTask = - std::async([promise = std::move(promise), - futures = std::make_tuple( - std::forward(futures)...)]() mutable { - try { - auto results = std::apply( - [](auto &&...fs) { - return std::make_tuple( - fs.get()...); // Wait for each future and collect - // the results - }, - futures); - promise.set_value(std::move(results)); - } catch (const std::exception &e) { - promise.set_exception(std::current_exception()); - } - }); - - asyncTask.wait(); // Wait for the async task to finish - - return resultFuture; -} - -} // namespace atom::async - -#endif // ATOM_ASYNC_FUTURE_HPP diff --git a/src/atom/async/limiter.cpp b/src/atom/async/limiter.cpp deleted file mode 100644 index 5a885694..00000000 --- a/src/atom/async/limiter.cpp +++ /dev/null @@ -1,290 +0,0 @@ -#include "limiter.hpp" - -#include "atom/log/loguru.hpp" - -namespace atom::async { -RateLimiter::Settings::Settings(size_t max_requests, - std::chrono::seconds time_window) - : maxRequests(max_requests), timeWindow(time_window) { - LOG_F(INFO, "Settings created: max_requests=%zu, time_window=%lld seconds", - max_requests, time_window.count()); -} - -// Implementation of RateLimiter constructor -RateLimiter::RateLimiter() { LOG_F(INFO, "RateLimiter created"); } - -// Implementation of Awaiter constructor -RateLimiter::Awaiter::Awaiter(RateLimiter& limiter, - const std::string& function_name) - : limiter_(limiter), function_name_(function_name) { - LOG_F(INFO, "Awaiter created for function: %s", function_name.c_str()); -} - -// Implementation of Awaiter::await_ready -auto RateLimiter::Awaiter::await_ready() -> bool { - LOG_F(INFO, "Awaiter::await_ready called for function: %s", - function_name_.c_str()); - return false; -} - -// Implementation of Awaiter::await_suspend -void RateLimiter::Awaiter::await_suspend(std::coroutine_handle<> handle) { - LOG_F(INFO, "Awaiter::await_suspend called for function: %s", - function_name_.c_str()); - std::unique_lock lock(limiter_.mutex_); - auto& settings = limiter_.settings_[function_name_]; - limiter_.cleanup(function_name_, settings.timeWindow); - if (limiter_.paused_ || - limiter_.requests_[function_name_].size() >= settings.maxRequests) { - limiter_.waiters_[function_name_].emplace_back(handle); - limiter_.rejected_requests_[function_name_]++; - LOG_F(WARNING, "Request for function %s rejected. Total rejected: %zu", - function_name_.c_str(), - limiter_.rejected_requests_[function_name_]); - } else { - limiter_.requests_[function_name_].emplace_back( - std::chrono::steady_clock::now()); - lock.unlock(); - LOG_F(INFO, "Request for function %s accepted", function_name_.c_str()); - handle.resume(); - } -} - -// Implementation of Awaiter::await_resume -void RateLimiter::Awaiter::await_resume() { - LOG_F(INFO, "Awaiter::await_resume called for function: %s", - function_name_.c_str()); -} - -// Implementation of RateLimiter::acquire -RateLimiter::Awaiter RateLimiter::acquire(const std::string& function_name) { - LOG_F(INFO, "RateLimiter::acquire called for function: %s", - function_name.c_str()); - return Awaiter(*this, function_name); -} - -// Implementation of RateLimiter::setFunctionLimit -void RateLimiter::setFunctionLimit(const std::string& function_name, - size_t max_requests, - std::chrono::seconds time_window) { - LOG_F(INFO, - "RateLimiter::setFunctionLimit called for function: %s, " - "max_requests=%zu, time_window=%lld seconds", - function_name.c_str(), max_requests, time_window.count()); - std::unique_lock lock(mutex_); - settings_[function_name] = Settings(max_requests, time_window); -} - -// Implementation of RateLimiter::pause -void RateLimiter::pause() { - LOG_F(INFO, "RateLimiter::pause called"); - std::unique_lock lock(mutex_); - paused_ = true; -} - -// Implementation of RateLimiter::resume -void RateLimiter::resume() { - LOG_F(INFO, "RateLimiter::resume called"); - std::unique_lock lock(mutex_); - paused_ = false; - processWaiters(); -} - -// Implementation of RateLimiter::printLog -void RateLimiter::printLog() { -#if ENABLE_DEBUG - LOG_F(INFO, "RateLimiter::printLog called"); - std::unique_lock lock(mutex_); - for (const auto& [function_name, timestamps] : log_) { - std::cout << "Request log for " << function_name << ":\n"; - for (const auto& timestamp : timestamps) { - std::cout << "Request at " << timestamp.time_since_epoch().count() - << std::endl; - } - } -#endif -} - -// Implementation of RateLimiter::getRejectedRequests -auto RateLimiter::getRejectedRequests(const std::string& function_name) - -> size_t { - LOG_F(INFO, "RateLimiter::getRejectedRequests called for function: %s", - function_name.c_str()); - std::unique_lock lock(mutex_); - return rejected_requests_[function_name]; -} - -// Implementation of RateLimiter::cleanup -void RateLimiter::cleanup(const std::string& function_name, - const std::chrono::seconds& time_window) { - LOG_F(INFO, - "RateLimiter::cleanup called for function: %s, time_window=%lld " - "seconds", - function_name.c_str(), time_window.count()); - auto now = std::chrono::steady_clock::now(); - auto& reqs = requests_[function_name]; - while (!reqs.empty() && now - reqs.front() > time_window) { - reqs.pop_front(); - } -} - -// Implementation of RateLimiter::processWaiters -void RateLimiter::processWaiters() { - LOG_F(INFO, "RateLimiter::processWaiters called"); - for (auto& [function_name, wait_queue] : waiters_) { - auto& settings = settings_[function_name]; - while (!wait_queue.empty() && - requests_[function_name].size() < settings.maxRequests) { - auto waiter = wait_queue.front(); - wait_queue.pop_front(); - requests_[function_name].emplace_back( - std::chrono::steady_clock::now()); - mutex_.unlock(); - LOG_F(INFO, "Resuming waiter for function: %s", - function_name.c_str()); - waiter.resume(); - mutex_.lock(); - } - } -} - -Debounce::Debounce(std::function func, std::chrono::milliseconds delay, - bool leading, - std::optional maxWait) - : func_(std::move(func)), - delay_(delay), - leading_(leading), - maxWait_(maxWait) { - LOG_F(INFO, "Debounce created: delay=%lld ms, leading=%d, maxWait=%lld ms", - delay.count(), leading, maxWait ? maxWait->count() : 0); -} - -void Debounce::operator()() { - LOG_F(INFO, "Debounce operator() called"); - auto now = std::chrono::steady_clock::now(); - std::unique_lock lock(mutex_); - - if (leading_ && !scheduled_) { - scheduled_ = true; - func_(); - ++call_count_; - } - - last_call_ = now; - if (!thread_.joinable()) { - thread_ = std::jthread([this]() { this->run(); }); - } -} - -void Debounce::cancel() { - LOG_F(INFO, "Debounce::cancel called"); - std::unique_lock lock(mutex_); - scheduled_ = false; - last_call_.reset(); -} - -void Debounce::flush() { - LOG_F(INFO, "Debounce::flush called"); - std::unique_lock lock(mutex_); - if (scheduled_) { - func_(); - ++call_count_; - scheduled_ = false; - } -} - -void Debounce::reset() { - LOG_F(INFO, "Debounce::reset called"); - std::unique_lock lock(mutex_); - last_call_.reset(); - scheduled_ = false; -} - -size_t Debounce::callCount() const { - std::unique_lock lock(mutex_); - return call_count_; -} - -void Debounce::run() { - LOG_F(INFO, "Debounce::run started"); - while (true) { - std::this_thread::sleep_for(delay_); - std::unique_lock lock(mutex_); - auto now = std::chrono::steady_clock::now(); - if (last_call_ && now - last_call_.value() >= delay_) { - if (scheduled_) { - func_(); - ++call_count_; - scheduled_ = false; - } - LOG_F(INFO, "Debounce::run finished"); - return; - } - if (maxWait_ && now - last_call_.value() >= maxWait_) { - if (scheduled_) { - func_(); - ++call_count_; - scheduled_ = false; - } - LOG_F(INFO, "Debounce::run finished"); - return; - } - } -} - -Throttle::Throttle(std::function func, - std::chrono::milliseconds interval, bool leading, - std::optional maxWait) - : func_(std::move(func)), - interval_(interval), - last_call_(std::chrono::steady_clock::now() - interval), - leading_(leading), - maxWait_(maxWait) { - LOG_F(INFO, - "Throttle created: interval=%lld ms, leading=%d, maxWait=%lld ms", - interval.count(), leading, maxWait ? maxWait->count() : 0); -} - -void Throttle::operator()() { - LOG_F(INFO, "Throttle operator() called"); - auto now = std::chrono::steady_clock::now(); - std::unique_lock lock(mutex_); - - if (leading_ && !called_) { - called_ = true; - func_(); - last_call_ = now; - ++call_count_; - return; - } - - if (now - last_call_ >= interval_) { - last_call_ = now; - func_(); - ++call_count_; - } else if (maxWait_ && (now - last_call_ >= maxWait_)) { - last_call_ = now; - func_(); - ++call_count_; - } -} - -void Throttle::cancel() { - LOG_F(INFO, "Throttle::cancel called"); - std::unique_lock lock(mutex_); - called_ = false; -} - -void Throttle::reset() { - LOG_F(INFO, "Throttle::reset called"); - std::unique_lock lock(mutex_); - last_call_ = std::chrono::steady_clock::now() - interval_; - called_ = false; -} - -auto Throttle::callCount() const -> size_t { - std::unique_lock lock(mutex_); - return call_count_; -} - -} // namespace atom::async diff --git a/src/atom/async/limiter.hpp b/src/atom/async/limiter.hpp deleted file mode 100644 index 24c6ea52..00000000 --- a/src/atom/async/limiter.hpp +++ /dev/null @@ -1,329 +0,0 @@ -#ifndef ATOM_ASYNC_LIMITER_HPP -#define ATOM_ASYNC_LIMITER_HPP - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace atom::async { -/** - * @brief A rate limiter class to control the rate of function executions. - */ -class RateLimiter { -public: - /** - * @brief Settings for the rate limiter. - */ - struct Settings { - size_t maxRequests; ///< Maximum number of requests allowed in the time - ///< window. - std::chrono::seconds - timeWindow; ///< The time window in which maxRequests are allowed. - - /** - * @brief Constructor for Settings. - * @param max_requests Maximum number of requests. - * @param time_window Duration of the time window. - */ - explicit Settings( - size_t max_requests = 5, - std::chrono::seconds time_window = std::chrono::seconds(1)); - }; - - /** - * @brief Constructor for RateLimiter. - */ - RateLimiter(); - - /** - * @brief Awaiter class for handling coroutines. - */ - class Awaiter { - public: - /** - * @brief Constructor for Awaiter. - * @param limiter Reference to the rate limiter. - * @param function_name Name of the function to be rate-limited. - */ - Awaiter(RateLimiter& limiter, const std::string& function_name); - - /** - * @brief Checks if the awaiter is ready. - * @return Always returns false. - */ - auto await_ready() -> bool; - - /** - * @brief Suspends the coroutine. - * @param handle Coroutine handle. - */ - void await_suspend(std::coroutine_handle<> handle); - - /** - * @brief Resumes the coroutine. - */ - void await_resume(); - - private: - RateLimiter& limiter_; - std::string function_name_; - }; - - /** - * @brief Acquires the rate limiter for a specific function. - * @param function_name Name of the function to be rate-limited. - * @return An Awaiter object. - */ - Awaiter acquire(const std::string& function_name); - - /** - * @brief Sets the rate limit for a specific function. - * @param function_name Name of the function to be rate-limited. - * @param max_requests Maximum number of requests allowed. - * @param time_window Duration of the time window. - */ - void setFunctionLimit(const std::string& function_name, size_t max_requests, - std::chrono::seconds time_window); - - /** - * @brief Pauses the rate limiter. - */ - void pause(); - - /** - * @brief Resumes the rate limiter. - */ - void resume(); - - /** - * @brief Prints the log of requests. - */ - void printLog(); - - /** - * @brief Gets the number of rejected requests for a specific function. - * @param function_name Name of the function. - * @return Number of rejected requests. - */ - auto getRejectedRequests(const std::string& function_name) -> size_t; - -#if !defined(TEST_F) && !defined(TEST) -private: -#endif - /** - * @brief Cleans up old requests outside the time window. - * @param function_name Name of the function. - * @param time_window Duration of the time window. - */ - void cleanup(const std::string& function_name, - const std::chrono::seconds& time_window); - - /** - * @brief Processes waiting coroutines. - */ - void processWaiters(); - - std::unordered_map settings_; - std::unordered_map> - requests_; - std::unordered_map>> - waiters_; - std::unordered_map> - log_; - std::unordered_map rejected_requests_; - bool paused_ = false; - std::mutex mutex_; -}; - -/** - * @class Debounce - * @brief A class that implements a debouncing mechanism for function calls. - * - * The `Debounce` class ensures that the given function is not invoked more - * frequently than a specified delay interval. It postpones the function call - * until the delay has elapsed since the last call. If a new call occurs before - * the delay expires, the previous call is canceled and the delay starts over. - * This is useful for situations where you want to limit the rate of function - * invocations, such as handling user input events. - */ -class Debounce { -public: - /** - * @brief Constructs a Debounce object. - * - * @param func The function to be debounced. - * @param delay The time delay to wait before invoking the function. - * @param leading If true, the function will be invoked immediately on the - * first call and then debounced for subsequent calls. If false, the - * function will be debounced and invoked only after the delay has passed - * since the last call. - * @param maxWait Optional maximum wait time before invoking the function if - * it has been called frequently. If not provided, there is no maximum wait - * time. - */ - Debounce(std::function func, std::chrono::milliseconds delay, - bool leading = false, - std::optional maxWait = std::nullopt); - - /** - * @brief Invokes the debounced function if the delay has elapsed since the - * last call. - * - * This method schedules the function call if the delay period has passed - * since the last call. If the leading flag is set, the function will be - * called immediately on the first call. Subsequent calls will reset the - * delay timer. - */ - void operator()(); - - /** - * @brief Cancels any pending function calls. - * - * This method cancels any pending invocation of the function that is - * scheduled to occur based on the debouncing mechanism. - */ - void cancel(); - - /** - * @brief Immediately invokes the function if it is scheduled to be called. - * - * This method flushes any pending function calls, ensuring the function is - * called immediately. - */ - void flush(); - - /** - * @brief Resets the debouncer, clearing any pending function call and - * timer. - * - * This method resets the internal state of the debouncer, allowing it to - * start fresh and schedule new function calls based on the debounce delay. - */ - void reset(); - - /** - * @brief Returns the number of times the function has been invoked. - * - * @return The count of function invocations. - */ - size_t callCount() const; - -private: - /** - * @brief Runs the function in a separate thread after the debounce delay. - * - * This method is used internally to handle the scheduling and execution of - * the function after the specified delay. - */ - void run(); - - std::function func_; ///< The function to be debounced. - std::chrono::milliseconds - delay_; ///< The time delay before invoking the function. - std::optional - last_call_; ///< The timestamp of the last call. - std::jthread thread_; ///< A thread used to handle delayed function calls. - mutable std::mutex - mutex_; ///< Mutex to protect concurrent access to internal state. - bool leading_; ///< Indicates if the function should be called immediately - ///< upon the first call. - bool scheduled_ = - false; ///< Flag to track if the function is scheduled for execution. - std::optional - maxWait_; ///< Optional maximum wait time before invocation. - size_t - call_count_{}; ///< Counter to keep track of function call invocations. -}; - -/** - * @class Throttle - * @brief A class that provides throttling for function calls, ensuring they are - * not invoked more frequently than a specified interval. - * - * This class is useful for rate-limiting function calls. It ensures that the - * given function is not called more frequently than the specified interval. - * Additionally, it can be configured to either throttle function calls to be - * executed at most once per interval or to execute the function immediately - * upon the first call and then throttle subsequent calls. - */ -class Throttle { -public: - /** - * @brief Constructs a Throttle object. - * - * @param func The function to be throttled. - * @param interval The minimum time interval between calls to the function. - * @param leading If true, the function will be called immediately upon the - * first call, then throttled. If false, the function will be throttled and - * called at most once per interval. - * @param maxWait Optional maximum wait time before invoking the function if - * it has been called frequently. If not provided, there is no maximum wait - * time. - */ - Throttle(std::function func, std::chrono::milliseconds interval, - bool leading = false, - std::optional maxWait = std::nullopt); - - /** - * @brief Invokes the throttled function if the interval has elapsed. - * - * This method will check if enough time has passed since the last function - * call. If so, it will invoke the function and update the last call - * timestamp. If the function is being invoked immediately as per the - * leading configuration, it will be executed at once, and subsequent calls - * will be throttled. - */ - void operator()(); - - /** - * @brief Cancels any pending function calls. - * - * This method cancels any pending function invocations that are scheduled - * to occur based on the throttling mechanism. - */ - void cancel(); - - /** - * @brief Resets the throttle, clearing the last call timestamp and allowing - * the function to be invoked immediately if required. - * - * This method can be used to reset the throttle state, allowing the - * function to be called immediately if the leading flag is set or to reset - * the interval for subsequent function calls. - */ - void reset(); - - /** - * @brief Returns the number of times the function has been called. - * - * @return The count of function invocations. - */ - auto callCount() const -> size_t; - -private: - std::function func_; ///< The function to be throttled. - std::chrono::milliseconds - interval_; ///< The time interval between allowed function calls. - std::chrono::steady_clock::time_point - last_call_; ///< The timestamp of the last function call. - mutable std::mutex - mutex_; ///< Mutex to protect concurrent access to internal state. - bool leading_; ///< Indicates if the function should be called immediately - ///< upon first call. - bool called_ = false; ///< Flag to track if the function has been called. - std::optional - maxWait_; ///< Optional maximum wait time before invocation. - size_t - call_count_{}; ///< Counter to keep track of function call invocations. -}; - -} // namespace atom::async - -#endif diff --git a/src/atom/async/lock.cpp b/src/atom/async/lock.cpp deleted file mode 100644 index f03056ef..00000000 --- a/src/atom/async/lock.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * lock.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-2-13 - -Description: Some useful spinlock implementations - -**************************************************/ - -#include "lock.hpp" - -namespace atom::async { -void Spinlock::lock() { - while (flag_.test_and_set(std::memory_order_acquire)) { - cpu_relax(); - } -} - -auto Spinlock::tryLock() -> bool { - return !flag_.test_and_set(std::memory_order_acquire); -} - -void Spinlock::unlock() { flag_.clear(std::memory_order_release); } - -auto TicketSpinlock::lock() -> uint64_t { - const auto TICKET = ticket_.fetch_add(1, std::memory_order_acq_rel); - while (serving_.load(std::memory_order_acquire) != TICKET) { - cpu_relax(); - } - return TICKET; -} - -void TicketSpinlock::unlock(uint64_t TICKET) { - serving_.store(TICKET + 1, std::memory_order_release); -} - -void UnfairSpinlock::lock() { - while (flag_.test_and_set(std::memory_order_acquire)) { - cpu_relax(); - } -} - -void UnfairSpinlock::unlock() { flag_.clear(std::memory_order_release); } -} // namespace atom::async diff --git a/src/atom/async/lock.hpp b/src/atom/async/lock.hpp deleted file mode 100644 index a6073fb2..00000000 --- a/src/atom/async/lock.hpp +++ /dev/null @@ -1,214 +0,0 @@ -/* - * lock.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-2-13 - -Description: Some useful spinlock implementations - -**************************************************/ - -#ifndef ATOM_ASYNC_LOCK_HPP -#define ATOM_ASYNC_LOCK_HPP - -#include - -#include "atom/type/noncopyable.hpp" - -namespace atom::async { - -// Pause instruction to prevent excess processor bus usage -#if defined(_MSC_VER) -#define cpu_relax() std::this_thread::yield() -#elif defined(__i386__) || defined(__x86_64__) -#define cpu_relax() asm volatile("pause\n" : : : "memory") -#elif defined(__aarch64__) -#define cpu_relax() asm volatile("yield\n" : : : "memory") -#elif defined(__arm__) -#define cpu_relax() asm volatile("nop\n" : : : "memory") -#else -#error "Unknown architecture, CPU relax code required" -#endif - -/** - * @brief A simple spinlock implementation using atomic_flag. - */ -class Spinlock : public NonCopyable { - std::atomic_flag flag_ = ATOMIC_FLAG_INIT; - -public: - /** - * @brief Default constructor. - */ - Spinlock() = default; - - /** - * @brief Acquires the lock. - */ - void lock(); - - /** - * @brief Releases the lock. - */ - void unlock(); - - /** - * @brief Tries to acquire the lock. - * - * @return true if the lock was acquired, false otherwise. - */ - auto tryLock() -> bool; -}; - -/** - * @brief A ticket spinlock implementation using atomic operations. - */ -class TicketSpinlock : public NonCopyable { - std::atomic ticket_{0}; - std::atomic serving_{0}; - -public: - TicketSpinlock() = default; - /** - * @brief Lock guard for TicketSpinlock. - */ - class LockGuard { - TicketSpinlock &spinlock_; - const uint64_t TICKET; - - public: - /** - * @brief Constructs the lock guard and acquires the lock. - * - * @param spinlock The TicketSpinlock to guard. - */ - explicit LockGuard(TicketSpinlock &spinlock) - : spinlock_(spinlock), TICKET(spinlock_.lock()) {} - - /** - * @brief Destructs the lock guard and releases the lock. - */ - ~LockGuard() { spinlock_.unlock(TICKET); } - }; - - using scoped_lock = LockGuard; - - /** - * @brief Acquires the lock and returns the ticket number. - * - * @return The acquired ticket number. - */ - auto lock() -> uint64_t; - - /** - * @brief Releases the lock given a specific ticket number. - * - * @param ticket The ticket number to release. - */ - void unlock(uint64_t TICKET); -}; - -/** - * @brief An unfair spinlock implementation using atomic_flag. - */ -class UnfairSpinlock : public NonCopyable { - std::atomic_flag flag_ = ATOMIC_FLAG_INIT; - -public: - UnfairSpinlock() = default; - /** - * @brief Acquires the lock. - */ - void lock(); - - /** - * @brief Releases the lock. - */ - void unlock(); -}; - -/** - * @brief Scoped lock for any type of spinlock. - * - * @tparam Mutex Type of the spinlock (e.g., Spinlock, TicketSpinlock, - * UnfairSpinlock). - */ -template -class ScopedLock { - Mutex &mutex_; - -public: - /** - * @brief Constructs the scoped lock and acquires the lock on the provided - * mutex. - * - * @param mutex The mutex to lock. - */ - explicit ScopedLock(Mutex &mutex) : mutex_(mutex) { mutex_.lock(); } - - /** - * @brief Destructs the scoped lock and releases the lock. - */ - ~ScopedLock() { mutex_.unlock(); } - - ScopedLock(const ScopedLock &) = delete; - ScopedLock &operator=(const ScopedLock &) = delete; -}; - -/** - * @brief Scoped lock for TicketSpinlock. - * - * @tparam Mutex Type of the spinlock (i.e., TicketSpinlock). - */ -template -class ScopedTicketLock : public NonCopyable { - Mutex &mutex_; - const uint64_t TICKET; - -public: - /** - * @brief Constructs the scoped lock and acquires the lock on the provided - * mutex. - * - * @param mutex The mutex to lock. - */ - explicit ScopedTicketLock(Mutex &mutex) - : mutex_(mutex), TICKET(mutex_.lock()) {} - - /** - * @brief Destructs the scoped lock and releases the lock. - */ - ~ScopedTicketLock() { mutex_.unlock(TICKET); } -}; - -/** - * @brief Scoped lock for UnfairSpinlock. - * - * @tparam Mutex Type of the spinlock (i.e., UnfairSpinlock). - */ -template -class ScopedUnfairLock : public NonCopyable { - Mutex &mutex_; - -public: - /** - * @brief Constructs the scoped lock and acquires the lock on the provided - * mutex. - * - * @param mutex The mutex to lock. - */ - explicit ScopedUnfairLock(Mutex &mutex) : mutex_(mutex) { mutex_.lock(); } - - /** - * @brief Destructs the scoped lock and releases the lock. - */ - ~ScopedUnfairLock() { mutex_.unlock(); } -}; - -} // namespace atom::async - -#endif diff --git a/src/atom/async/message_bus.hpp b/src/atom/async/message_bus.hpp deleted file mode 100644 index 91de4489..00000000 --- a/src/atom/async/message_bus.hpp +++ /dev/null @@ -1,397 +0,0 @@ -/* - * message_bus.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-7-23 - -Description: Main Message Bus with Asio support and additional features - -**************************************************/ - -#ifndef ATOM_ASYNC_MESSAGE_BUS_HPP -#define ATOM_ASYNC_MESSAGE_BUS_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "atom/macro.hpp" - -namespace atom::async { - -/** - * @brief The MessageBus class provides a message bus system with Asio support. - */ -class MessageBus { -public: - using Token = std::size_t; - static constexpr std::size_t K_MAX_HISTORY_SIZE = - 100; ///< Maximum number of messages to keep in history. - - /** - * @brief Constructs a MessageBus with the given io_context. - * @param io_context The Asio io_context to use for asynchronous operations. - */ - explicit MessageBus(asio::io_context& io_context) - : io_context_(io_context) {} - - /** - * @brief Creates a shared instance of MessageBus. - * @param io_context The Asio io_context to use for asynchronous operations. - * @return A shared pointer to the created MessageBus instance. - */ - static auto createShared(asio::io_context& io_context) - -> std::shared_ptr { - return std::make_shared(io_context); - } - - /** - * @brief Publishes a message to the bus, optionally with a delay. - * @tparam MessageType The type of the message. - * @param name The name of the message. - * @param message The message to publish. - * @param delay Optional delay before publishing the message. - */ - template - void publish( - const std::string& name, const MessageType& message, - std::optional delay = std::nullopt) { - auto publishTask = [this, name, message]() { - std::shared_lock lock(mutex_); - std::unordered_set - calledSubscribers; // Track called subscribers - - // Publish to directly matching subscribers - publishToSubscribers(name, message, calledSubscribers); - - // Publish to namespace matching subscribers - for (const auto& namespaceName : namespaces_) { - if (name.find(namespaceName + ".") == - 0) { // Namespace match must start with namespaceName + dot - publishToSubscribers(namespaceName, message, - calledSubscribers); - } - } - - // Record the message in history - recordMessageHistory(name, message); - - // 记录日志 - std::cout << "[MessageBus] Published message: " << name - << std::endl; - }; - - if (delay) { - // Use Asio's steady_timer for delayed publishing - auto timer = - std::make_shared(io_context_, *delay); - timer->async_wait( - [timer, publishTask](const asio::error_code& errorCode) { - if (!errorCode) { - publishTask(); - } - }); - } else { - // Immediately publish asynchronously using asio::post - asio::post(io_context_, publishTask); - } - } - - /** - * @brief Publishes a message to all subscribers globally. - * @tparam MessageType The type of the message. - * @param message The message to publish. - */ - template - void publishGlobal(const MessageType& message) { - std::shared_lock lock(mutex_); - for (const auto& [type, subscribersMap] : subscribers_) { - for (const auto& [name, subscribersList] : subscribersMap) { - publish(name, message); - } - } - } - - /** - * @brief Subscribes to a message. - * @tparam MessageType The type of the message. - * @param name The name of the message or namespace (supports wildcard). - * @param handler The handler function to call when the message is received. - * @param async Whether to call the handler asynchronously. - * @param once Whether to unsubscribe after the first message is received. - * @param filter Optional filter function to determine whether to call the - * handler. - * @return A token representing the subscription. - */ - template - auto subscribe( - const std::string& name, - std::function handler, bool async = true, - bool once = false, - std::function filter = - [](const MessageType&) { return true; }) -> Token { - std::unique_lock lock(mutex_); - Token token = nextToken_++; - subscribers_[std::type_index(typeid(MessageType))][name].emplace_back( - Subscriber{std::move(handler), async, once, std::move(filter), - token}); - namespaces_.insert(extractNamespace(name)); // Record namespace - std::cout << "[MessageBus] Subscribed to: " << name - << " with token: " << token << std::endl; - return token; - } - - /** - * @brief Unsubscribes from a message using the given token. - * @tparam MessageType The type of the message. - * @param token The token representing the subscription. - */ - template - void unsubscribe(Token token) { - std::unique_lock lock(mutex_); - auto iterator = subscribers_.find(std::type_index(typeid(MessageType))); - if (iterator != subscribers_.end()) { - for (auto& [name, subscribersList] : iterator->second) { - removeSubscription(subscribersList, token); - } - } - std::cout << "[MessageBus] Unsubscribed token: " << token << std::endl; - } - - /** - * @brief Unsubscribes all handlers for a given message name or namespace. - * @tparam MessageType The type of the message. - * @param name The name of the message or namespace. - */ - template - void unsubscribeAll(const std::string& name) { - std::unique_lock lock(mutex_); - auto iterator = subscribers_.find(std::type_index(typeid(MessageType))); - if (iterator != subscribers_.end()) { - auto nameIterator = iterator->second.find(name); - if (nameIterator != iterator->second.end()) { - size_t count = nameIterator->second.size(); - iterator->second.erase(nameIterator); - std::cout << "[MessageBus] Unsubscribed all handlers for: " - << name << " (" << count << " subscribers)" - << std::endl; - } - } - } - - /** - * @brief Gets the number of subscribers for a given message name or - * namespace. - * @tparam MessageType The type of the message. - * @param name The name of the message or namespace. - * @return The number of subscribers. - */ - template - auto getSubscriberCount(const std::string& name) -> std::size_t { - std::shared_lock lock(mutex_); - auto iterator = subscribers_.find(std::type_index(typeid(MessageType))); - if (iterator != subscribers_.end()) { - auto nameIterator = iterator->second.find(name); - if (nameIterator != iterator->second.end()) { - return nameIterator->second.size(); - } - } - return 0; - } - - /** - * @brief Checks if there are any subscribers for a given message name or - * namespace. - * @tparam MessageType The type of the message. - * @param name The name of the message or namespace. - * @return True if there are subscribers, false otherwise. - */ - template - auto hasSubscriber(const std::string& name) -> bool { - std::shared_lock lock(mutex_); - auto iterator = subscribers_.find(std::type_index(typeid(MessageType))); - if (iterator != subscribers_.end()) { - auto nameIterator = iterator->second.find(name); - return nameIterator != iterator->second.end() && - !nameIterator->second.empty(); - } - return false; - } - - /** - * @brief Clears all subscribers. - */ - void clearAllSubscribers() { - std::unique_lock lock(mutex_); - subscribers_.clear(); - namespaces_.clear(); - std::cout << "[MessageBus] Cleared all subscribers." << std::endl; - } - - /** - * @brief Gets the list of active namespaces. - * @return A vector of active namespace names. - */ - auto getActiveNamespaces() const -> std::vector { - std::shared_lock lock(mutex_); - return {namespaces_.begin(), namespaces_.end()}; - } - - /** - * @brief Gets the message history for a given message name. - * @tparam MessageType The type of the message. - * @param name The name of the message. - * @return A vector of messages. - */ - template - auto getMessageHistory(const std::string& name, - std::size_t count = K_MAX_HISTORY_SIZE) const - -> std::vector { - std::shared_lock lock(mutex_); - auto iterator = - messageHistory_.find(std::type_index(typeid(MessageType))); - if (iterator != messageHistory_.end()) { - auto nameIterator = iterator->second.find(name); - if (nameIterator != iterator->second.end()) { - std::vector history; - std::size_t start = (nameIterator->second.size() > count) - ? nameIterator->second.size() - count - : 0; - for (std::size_t i = start; i < nameIterator->second.size(); - ++i) { - history.emplace_back( - std::any_cast(nameIterator->second[i])); - } - return history; - } - } - return {}; - } - -private: - struct Subscriber { - std::function - handler; ///< The handler function. - bool async; ///< Whether to call the handler asynchronously. - bool once; ///< Whether to unsubscribe after the first message. - std::function filter; ///< The filter function. - Token token; ///< The subscription token. - } ATOM_ALIGNAS(64); - - /** - * @brief Publishes a message to the subscribers. - * @tparam MessageType The type of the message. - * @param name The name of the message. - * @param message The message to publish. - * @param calledSubscribers The set of already called subscribers. - */ - template - void publishToSubscribers(const std::string& name, - const MessageType& message, - std::unordered_set& calledSubscribers) { - auto iterator = subscribers_.find(std::type_index(typeid(MessageType))); - if (iterator != subscribers_.end()) { - auto nameIterator = iterator->second.find(name); - if (nameIterator != iterator->second.end()) { - auto& subscribersList = nameIterator->second; - for (auto it = subscribersList.begin(); - it != subscribersList.end();) { - if (it->filter(message) && - calledSubscribers.insert(it->token).second) { - auto handler = [handlerFunc = it->handler, message]() { - std::any msg = message; - handlerFunc(msg); - }; - if (it->async) { - asio::post(io_context_, handler); - } else { - handler(); - } - if (it->once) { - it = subscribersList.erase(it); - continue; - } - } - ++it; - } - } - } - } - - /** - * @brief Removes a subscription from the list. - * @param subscribersList The list of subscribers. - * @param token The token representing the subscription. - */ - static void removeSubscription(std::vector& subscribersList, - Token token) { - subscribersList.erase( - std::remove_if( - subscribersList.begin(), subscribersList.end(), - [token](const Subscriber& sub) { return sub.token == token; }), - subscribersList.end()); - } - - /** - * @brief Records a message in the history. - * @tparam MessageType The type of the message. - * @param name The name of the message. - * @param message The message to record. - */ - template - void recordMessageHistory(const std::string& name, - const MessageType& message) { - auto& history = - messageHistory_[std::type_index(typeid(MessageType))][name]; - history.emplace_back(message); - if (history.size() > K_MAX_HISTORY_SIZE) { - history.erase(history.begin()); - } - } - - /** - * @brief Extracts the namespace from the message name. - * @param name The message name. - * @return The namespace part of the name. - */ - std::string extractNamespace(const std::string& name) const { - auto pos = name.find('.'); - if (pos != std::string::npos) { - return name.substr(0, pos); - } - return name; - } - - std::unordered_map>> - subscribers_; ///< Map of subscribers. - std::unordered_map>> - messageHistory_; ///< Map of message history. - std::unordered_set namespaces_; ///< Set of namespaces. - mutable std::shared_mutex mutex_; ///< Mutex for thread safety. - Token nextToken_ = 0; ///< Next token value. - - asio::io_context& - io_context_; ///< Asio io_context for asynchronous operations. -}; - -} // namespace atom::async - -#endif // ATOM_ASYNC_MESSAGE_BUS_HPP diff --git a/src/atom/async/message_queue.hpp b/src/atom/async/message_queue.hpp deleted file mode 100644 index 45ddfb77..00000000 --- a/src/atom/async/message_queue.hpp +++ /dev/null @@ -1,301 +0,0 @@ -/* - * message_queue.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -#ifndef ATOM_ASYNC_MESSAGE_QUEUE_HPP -#define ATOM_ASYNC_MESSAGE_QUEUE_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace atom::async { - -/** - * @brief A message queue that allows subscribers to receive messages of type T. - * - * @tparam T The type of messages that can be published and subscribed to. - */ -template -class MessageQueue { -public: - using CallbackType = std::function; - using FilterType = std::function; - - /** - * @brief Constructs a MessageQueue with the given io_context. - * @param ioContext The Asio io_context to use for asynchronous operations. - */ - explicit MessageQueue(asio::io_context& ioContext) - : ioContext_(ioContext) {} - - /** - * @brief Subscribe to messages with a callback and optional filter and - * timeout. - * - * @param callback The callback function to be called when a new message is - * received. - * @param subscriberName The name of the subscriber. - * @param priority The priority of the subscriber. Higher priority receives - * messages first. - * @param filter An optional filter to only receive messages that match the - * criteria. - * @param timeout The maximum time allowed for the subscriber to process a - * message. - */ - void subscribe( - CallbackType callback, const std::string& subscriberName, - int priority = 0, FilterType filter = nullptr, - std::chrono::milliseconds timeout = std::chrono::milliseconds::zero()); - - /** - * @brief Unsubscribe from messages using the given callback. - * - * @param callback The callback function used during subscription. - */ - void unsubscribe(CallbackType callback); - - /** - * @brief Publish a message to the queue, with an optional priority. - * - * @param message The message to publish. - * @param priority The priority of the message, higher priority messages are - * handled first. - */ - void publish(const T& message, int priority = 0); - - /** - * @brief Start processing messages in the queue. - */ - void startProcessing(); - - /** - * @brief Stop processing messages in the queue. - */ - void stopProcessing(); - - /** - * @brief Get the number of messages currently in the queue. - * @return The number of messages in the queue. - */ - auto getMessageCount() const -> size_t; - - /** - * @brief Get the number of subscribers currently subscribed to the queue. - * @return The number of subscribers. - */ - auto getSubscriberCount() const -> size_t; - - /** - * @brief Cancel specific messages that meet a given condition. - * - * @param cancelCondition The condition to cancel certain messages. - */ - void cancelMessages(std::function cancelCondition); - -private: - struct Subscriber { - std::string name; - CallbackType callback; - int priority; - FilterType filter; - std::chrono::milliseconds timeout; - - Subscriber(std::string name, const CallbackType& callback, int priority, - FilterType filter, std::chrono::milliseconds timeout) - : name(std::move(name)), - callback(callback), - priority(priority), - filter(filter), - timeout(timeout) {} - - auto operator<(const Subscriber& other) const -> bool { - return priority > other.priority; - } - }; - - struct Message { - T data; - int priority; - - Message(T data, int priority) - : data(std::move(data)), priority(priority) {} - - auto operator<(const Message& other) const -> bool { - return priority > other.priority; - } - }; - - std::deque m_messages_; - std::vector m_subscribers_; - mutable std::mutex m_mutex_; - std::condition_variable m_condition_; - std::atomic m_isRunning_{true}; - asio::io_context& ioContext_; - - /** - * @brief Process messages in the queue. - */ - void processMessages(); - - /** - * @brief Apply the filter to a message for a given subscriber. - * @param subscriber The subscriber to apply the filter for. - * @param message The message to filter. - * @return True if the message passes the filter, false otherwise. - */ - bool applyFilter(const Subscriber& subscriber, const T& message); - - /** - * @brief Handle the timeout for a given subscriber and message. - * @param subscriber The subscriber to handle the timeout for. - * @param message The message to process. - * @return True if the message was processed within the timeout, false - * otherwise. - */ - bool handleTimeout(const Subscriber& subscriber, const T& message); -}; - -template -void MessageQueue::subscribe(CallbackType callback, - const std::string& subscriberName, int priority, - FilterType filter, - std::chrono::milliseconds timeout) { - std::lock_guard lock(m_mutex_); - m_subscribers_.emplace_back(subscriberName, callback, priority, filter, - timeout); - std::ranges::sort(m_subscribers_, std::greater{}); -} - -template -void MessageQueue::unsubscribe(CallbackType callback) { - std::lock_guard lock(m_mutex_); - auto iterator = std::ranges::remove_if( - m_subscribers_, [&callback](const auto& subscriber) { - return subscriber.callback.target_type() == callback.target_type(); - }); - m_subscribers_.erase(iterator.begin(), iterator.end()); -} - -template -void MessageQueue::publish(const T& message, int priority) { - { - std::lock_guard lock(m_mutex_); - m_messages_.emplace_back(message, priority); - } - ioContext_.post([this]() { processMessages(); }); -} - -template -void MessageQueue::startProcessing() { - m_isRunning_.store(true); - ioContext_.run(); -} - -template -void MessageQueue::stopProcessing() { - m_isRunning_.store(false); - ioContext_.stop(); -} - -template -auto MessageQueue::getMessageCount() const -> size_t { - std::lock_guard lock(m_mutex_); - return m_messages_.size(); -} - -template -auto MessageQueue::getSubscriberCount() const -> size_t { - std::lock_guard lock(m_mutex_); - return m_subscribers_.size(); -} - -template -void MessageQueue::cancelMessages( - std::function cancelCondition) { - std::lock_guard lock(m_mutex_); - auto iterator = std::remove_if(m_messages_.begin(), m_messages_.end(), - [&cancelCondition](const auto& msg) { - return cancelCondition(msg.data); - }); - m_messages_.erase(iterator, m_messages_.end()); -} - -template -bool MessageQueue::applyFilter(const Subscriber& subscriber, - const T& message) { - if (!subscriber.filter) { - return true; - } - return subscriber.filter(message); -} - -template -bool MessageQueue::handleTimeout(const Subscriber& subscriber, - const T& message) { - if (subscriber.timeout == std::chrono::milliseconds::zero()) { - subscriber.callback(message); - return true; - } - - std::packaged_task task( - [&subscriber, &message]() { subscriber.callback(message); }); - auto future = task.get_future(); - asio::post(ioContext_, std::move(task)); - - if (future.wait_for(subscriber.timeout) == std::future_status::timeout) { - return false; // Timeout occurred. - } - - return true; // Process completed within timeout. -} - -template -void MessageQueue::processMessages() { - while (m_isRunning_.load()) { - std::optional message; - - { - std::lock_guard lock(m_mutex_); - if (m_messages_.empty()) { - return; - } - message = std::move(m_messages_.front()); - m_messages_.pop_front(); - } - - if (message) { - std::vector subscribersCopy; - - { - std::lock_guard lock(m_mutex_); - subscribersCopy.reserve(m_subscribers_.size()); - for (const auto& subscriber : m_subscribers_) { - subscribersCopy.emplace_back(subscriber); - } - } - - for (const auto& subscriber : subscribersCopy) { - if (applyFilter(subscriber, message->data)) { - handleTimeout(subscriber, message->data); - } - } - } - } -} - -} // namespace atom::async - -#endif // ATOM_ASYNC_MESSAGE_QUEUE_HPP diff --git a/src/atom/async/packaged_task.hpp b/src/atom/async/packaged_task.hpp deleted file mode 100644 index 5f378791..00000000 --- a/src/atom/async/packaged_task.hpp +++ /dev/null @@ -1,231 +0,0 @@ -#ifndef ATOM_ASYNC_PACKAGED_TASK_HPP -#define ATOM_ASYNC_PACKAGED_TASK_HPP - -#include -#include -#include -#include - -#include "atom/async/future.hpp" - -namespace atom::async { - -/** - * @class InvalidPackagedTaskException - * @brief Exception thrown when an invalid packaged task is encountered. - */ -class InvalidPackagedTaskException : public atom::error::RuntimeError { -public: - using atom::error::RuntimeError::RuntimeError; -}; - -/** - * @def THROW_INVALID_PACKAGED_TASK_EXCEPTION - * @brief Macro to throw an InvalidPackagedTaskException with file, line, and - * function information. - */ -#define THROW_INVALID_PACKAGED_TASK_EXCEPTION(...) \ - throw InvalidPackagedTaskException(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__); - -/** - * @def THROW_NESTED_INVALID_PACKAGED_TASK_EXCEPTION - * @brief Macro to rethrow a nested InvalidPackagedTaskException with file, - * line, and function information. - */ -#define THROW_NESTED_INVALID_PACKAGED_TASK_EXCEPTION(...) \ - InvalidPackagedTaskException::rethrowNested( \ - ATOM_FILE_NAME, ATOM_FILE_LINE, ATOM_FUNC_NAME, \ - "Invalid packaged task: " __VA_ARGS__); - -/** - * @class EnhancedPackagedTask - * @brief A template class that extends the standard packaged task with - * additional features. - * @tparam ResultType The type of the result that the task will produce. - * @tparam Args The types of the arguments that the task will accept. - */ -template -class EnhancedPackagedTask { -public: - using TaskType = std::function; - - /** - * @brief Constructs an EnhancedPackagedTask with the given task. - * @param task The task to be executed. - */ - explicit EnhancedPackagedTask(TaskType task) - : task_(std::move(task)), cancelled_(false) { - promise_ = std::promise(); - future_ = promise_.get_future().share(); - } - - /** - * @brief Gets the enhanced future associated with this task. - * @return An EnhancedFuture object. - */ - EnhancedFuture getEnhancedFuture() { - return EnhancedFuture(std::move(future_)); - } - - /** - * @brief Executes the task with the given arguments. - * @param args The arguments to pass to the task. - */ - void operator()(Args... args) { - if (cancelled_) { - promise_.set_exception(std::make_exception_ptr( - std::runtime_error("Task has been cancelled"))); - return; - } - - try { - if (task_) { - ResultType result = task_(std::forward(args)...); - promise_.set_value(result); - runCallbacks(result); - } - } catch (...) { - promise_.set_exception(std::current_exception()); - } - } - - /** - * @brief Adds a callback to be called upon task completion. - * @tparam F The type of the callback function. - * @param func The callback function to add. - */ - template - void onComplete(F &&func) { - callbacks_.emplace_back(std::forward(func)); - } - - /** - * @brief Cancels the task. - */ - void cancel() { cancelled_ = true; } - - /** - * @brief Checks if the task is cancelled. - * @return True if the task is cancelled, false otherwise. - */ - [[nodiscard]] bool isCancelled() const { return cancelled_; } - -protected: - TaskType task_; ///< The task to be executed. - std::promise - promise_; ///< The promise associated with the task. - std::shared_future - future_; ///< The shared future associated with the task. - std::vector> - callbacks_; ///< List of callbacks to be called on completion. - std::atomic - cancelled_; ///< Flag indicating if the task has been cancelled. - -private: - /** - * @brief Runs all the registered callbacks with the given result. - * @param result The result to pass to the callbacks. - */ - void runCallbacks(ResultType result) { - for (auto &callback : callbacks_) { - callback(result); - } - } -}; - -/** - * @class EnhancedPackagedTask - * @brief Specialization of the EnhancedPackagedTask class for void result type. - * @tparam Args The types of the arguments that the task will accept. - */ -template -class EnhancedPackagedTask { -public: - using TaskType = std::function; - - /** - * @brief Constructs an EnhancedPackagedTask with the given task. - * @param task The task to be executed. - */ - explicit EnhancedPackagedTask(TaskType task) - : task_(std::move(task)), cancelled_(false) { - promise_ = std::promise(); - future_ = promise_.get_future().share(); - } - - /** - * @brief Gets the enhanced future associated with this task. - * @return An EnhancedFuture object. - */ - EnhancedFuture getEnhancedFuture() { - return EnhancedFuture(std::move(future_)); - } - - /** - * @brief Executes the task with the given arguments. - * @param args The arguments to pass to the task. - */ - void operator()(Args... args) { - if (cancelled_) { - promise_.set_exception(std::make_exception_ptr( - std::runtime_error("Task has been cancelled"))); - return; - } - - try { - if (task_) { - task_(std::forward(args)...); - promise_.set_value(); - runCallbacks(); - } - } catch (...) { - promise_.set_exception(std::current_exception()); - } - } - - /** - * @brief Adds a callback to be called upon task completion. - * @tparam F The type of the callback function. - * @param func The callback function to add. - */ - template - void onComplete(F &&func) { - callbacks_.emplace_back(std::forward(func)); - } - - /** - * @brief Cancels the task. - */ - void cancel() { cancelled_ = true; } - - /** - * @brief Checks if the task is cancelled. - * @return True if the task is cancelled, false otherwise. - */ - [[nodiscard]] bool isCancelled() const { return cancelled_; } - -protected: - TaskType task_; ///< The task to be executed. - std::promise promise_; ///< The promise associated with the task. - std::shared_future - future_; ///< The shared future associated with the task. - std::vector> - callbacks_; ///< List of callbacks to be called on completion. - std::atomic - cancelled_; ///< Flag indicating if the task has been cancelled. - -private: - /** - * @brief Runs all the registered callbacks. - */ - void runCallbacks() { - for (auto &callback : callbacks_) { - callback(); - } - } -}; - -} // namespace atom::async - -#endif // ATOM_ASYNC_PACKAGED_TASK_HPP diff --git a/src/atom/async/pool.hpp b/src/atom/async/pool.hpp deleted file mode 100644 index 249be0cc..00000000 --- a/src/atom/async/pool.hpp +++ /dev/null @@ -1,394 +0,0 @@ -/* - * pool.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-2-13 - -Description: A very simple thread pool for preload - -**************************************************/ - -#ifndef ATOM_ASYNC_POOL_HPP -#define ATOM_ASYNC_POOL_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "atom/macro.hpp" -#ifdef __has_include -#if __has_include() -#include -#endif -#endif - -namespace atom::async { -/** - * @brief Simple concept for the Lockable and Basic Lockable types as defined by - * the C++ standard. - * @details See https://en.cppreference.com/w/cpp/named_req/Lockable and - * https://en.cppreference.com/w/cpp/named_req/BasicLockable for details. - */ -template -concept is_lockable = requires(Lock&& lock) { - lock.lock(); - lock.unlock(); - { lock.try_lock() } -> std::convertible_to; -}; - -template - requires is_lockable -class ThreadSafeQueue { -public: - using value_type = T; - using size_type = typename std::deque::size_type; - - ThreadSafeQueue() = default; - - // Copy constructor - ThreadSafeQueue(const ThreadSafeQueue& other) { - std::scoped_lock lock(other.mutex_); - data_ = other.data_; - } - - // Copy assignment operator - auto operator=(const ThreadSafeQueue& other) -> ThreadSafeQueue& { - if (this != &other) { - std::scoped_lock lockThis(mutex_, std::defer_lock); - std::scoped_lock lockOther(other.mutex_, std::defer_lock); - std::lock(lockThis, lockOther); - data_ = other.data_; - } - return *this; - } - - // Move constructor - ThreadSafeQueue(ThreadSafeQueue&& other) noexcept { - std::scoped_lock lock(other.mutex_); - data_ = std::move(other.data_); - } - - // Move assignment operator - auto operator=(ThreadSafeQueue&& other) noexcept -> ThreadSafeQueue& { - if (this != &other) { - std::scoped_lock lockThis(mutex_, std::defer_lock); - std::scoped_lock lockOther(other.mutex_, std::defer_lock); - std::lock(lockThis, lockOther); - data_ = std::move(other.data_); - } - return *this; - } - - void pushBack(T&& value) { - std::scoped_lock lock(mutex_); - data_.push_back(std::forward(value)); - } - - void pushFront(T&& value) { - std::scoped_lock lock(mutex_); - data_.push_front(std::forward(value)); - } - - [[nodiscard]] auto empty() const -> bool { - std::scoped_lock lock(mutex_); - return data_.empty(); - } - - [[nodiscard]] auto size() const -> size_type { - std::scoped_lock lock(mutex_); - return data_.size(); - } - - [[nodiscard]] auto popFront() -> std::optional { - std::scoped_lock lock(mutex_); - if (data_.empty()) { - return std::nullopt; - } - - auto front = std::move(data_.front()); - data_.pop_front(); - return front; - } - - [[nodiscard]] auto popBack() -> std::optional { - std::scoped_lock lock(mutex_); - if (data_.empty()) { - return std::nullopt; - } - - auto back = std::move(data_.back()); - data_.pop_back(); - return back; - } - - [[nodiscard]] auto steal() -> std::optional { - std::scoped_lock lock(mutex_); - if (data_.empty()) { - return std::nullopt; - } - - auto back = std::move(data_.back()); - data_.pop_back(); - return back; - } - - void rotateToFront(const T& item) { - std::scoped_lock lock(mutex_); - auto iter = std::find(data_.begin(), data_.end(), item); - - if (iter != data_.end()) { - std::ignore = data_.erase(iter); - } - - data_.push_front(item); - } - - [[nodiscard]] auto copyFrontAndRotateToBack() -> std::optional { - std::scoped_lock lock(mutex_); - - if (data_.empty()) { - return std::nullopt; - } - - auto front = data_.front(); - data_.pop_front(); - - data_.push_back(front); - - return front; - } - - void clear() { - std::scoped_lock lock(mutex_); - data_.clear(); - } - -private: - std::deque data_; - mutable Lock mutex_; -}; - -namespace details { -#ifdef __cpp_lib_move_only_function -using default_function_type = std::move_only_function; -#else -using default_function_type = std::function; -#endif -} // namespace details - -template - requires std::invocable && - std::is_same_v> -class ThreadPool { -public: - template < - typename InitializationFunction = std::function> - requires std::invocable && - std::is_same_v> - explicit ThreadPool( - const unsigned int& number_of_threads = - std::thread::hardware_concurrency(), - InitializationFunction init = [](std::size_t) {}) - : tasks_(number_of_threads) { - std::size_t currentId = 0; - for (std::size_t i = 0; i < number_of_threads; ++i) { - priority_queue_.pushBack(std::move(currentId)); - try { - threads_.emplace_back([&, threadId = currentId, - init](const std::stop_token& stop_tok) { - try { - std::invoke(init, threadId); - } catch (...) { - } - - do { - tasks_[threadId].signal.acquire(); - - do { - while (auto task = - tasks_[threadId].tasks.popFront()) { - unassigned_tasks_.fetch_sub( - 1, std::memory_order_release); - std::invoke(std::move(task.value())); - in_flight_tasks_.fetch_sub( - 1, std::memory_order_release); - } - - for (std::size_t j = 1; j < tasks_.size(); ++j) { - const std::size_t INDEX = - (threadId + j) % tasks_.size(); - if (auto task = tasks_[INDEX].tasks.steal()) { - unassigned_tasks_.fetch_sub( - 1, std::memory_order_release); - std::invoke(std::move(task.value())); - in_flight_tasks_.fetch_sub( - 1, std::memory_order_release); - break; - } - } - } while (unassigned_tasks_.load( - std::memory_order_acquire) > 0); - - priority_queue_.rotateToFront(threadId); - - if (in_flight_tasks_.load(std::memory_order_acquire) == - 0) { - threads_complete_signal_.store( - true, std::memory_order_release); - threads_complete_signal_.notify_one(); - } - - } while (!stop_tok.stop_requested()); - }); - ++currentId; - - } catch (...) { - tasks_.pop_back(); - std::ignore = priority_queue_.popBack(); - } - } - } - - ~ThreadPool() { - waitForTasks(); - - for (auto& thread : threads_) { - thread.request_stop(); - } - - for (auto& task : tasks_) { - task.signal.release(); - } - - for (auto& thread : threads_) { - thread.join(); - } - } - - ThreadPool(const ThreadPool&) = delete; - auto operator=(const ThreadPool&) -> ThreadPool& = delete; - - // Define move constructor and move assignment operator - ThreadPool(ThreadPool&& other) noexcept = default; - auto operator=(ThreadPool&& other) noexcept -> ThreadPool& = default; - - template > - requires std::invocable - [[nodiscard]] auto enqueue(Function func, - Args... args) -> std::future { -#ifdef __cpp_lib_move_only_function - std::promise promise; - auto future = promise.get_future(); - auto task = [func = std::move(func), ... largs = std::move(args), - promise = std::move(promise)]() mutable { - try { - if constexpr (std::is_same_v) { - func(largs...); - promise.set_value(); - } else { - promise.set_value(func(largs...)); - } - } catch (...) { - promise.set_exception(std::current_exception()); - } - }; - enqueueTask(std::move(task)); - return future; -#else - auto shared_promise = std::make_shared>(); - auto task = [func = std::move(func), ... largs = std::move(args), - promise = shared_promise]() { - try { - if constexpr (std::is_same_v) { - func(largs...); - promise->set_value(); - } else { - promise->set_value(func(largs...)); - } - } catch (...) { - promise->set_exception(std::current_exception()); - } - }; - - auto future = shared_promise->get_future(); - enqueue_task(std::move(task)); - return future; -#endif - } - - template - requires std::invocable - void enqueueDetach(Function&& func, Args&&... args) { - enqueueTask([func = std::forward(func), - ... largs = std::forward(args)]() mutable { - try { - if constexpr (std::is_same_v>) { - std::invoke(func, largs...); - } else { - std::ignore = std::invoke(func, largs...); - } - } catch (...) { - } - }); - } - - [[nodiscard]] auto size() const -> std::size_t { return threads_.size(); } - - void waitForTasks() { - if (in_flight_tasks_.load(std::memory_order_acquire) > 0) { - threads_complete_signal_.wait(false); - } - } - -private: - template - void enqueueTask(Function&& func) { - auto iOpt = priority_queue_.copyFrontAndRotateToBack(); - if (!iOpt.has_value()) { - return; - } - auto index = *(iOpt); - - unassigned_tasks_.fetch_add(1, std::memory_order_release); - const auto PREV_IN_FLIGHT = - in_flight_tasks_.fetch_add(1, std::memory_order_release); - - if (PREV_IN_FLIGHT == 0) { - threads_complete_signal_.store(false, std::memory_order_release); - } - - tasks_[index].tasks.pushBack(std::forward(func)); - tasks_[index].signal.release(); - } - - struct TaskItem { - atom::async::ThreadSafeQueue tasks{}; - std::binary_semaphore signal{0}; - } ATOM_ALIGNAS(128); - - std::vector threads_; - std::deque tasks_; - atom::async::ThreadSafeQueue priority_queue_; - std::atomic_int_fast64_t unassigned_tasks_{0}, in_flight_tasks_{0}; - std::atomic_bool threads_complete_signal_{false}; -}; -} // namespace atom::async - -#endif // ATOM_ASYNC_POOL_HPP diff --git a/src/atom/async/promise.hpp b/src/atom/async/promise.hpp deleted file mode 100644 index 044bcfe7..00000000 --- a/src/atom/async/promise.hpp +++ /dev/null @@ -1,332 +0,0 @@ -#ifndef ATOM_ASYNC_PROMISE_HPP -#define ATOM_ASYNC_PROMISE_HPP - -#include -#include -#include -#include -#include - -#include "atom/async/future.hpp" - -namespace atom::async { - -/** - * @class PromiseCancelledException - * @brief Exception thrown when a promise is cancelled. - */ -class PromiseCancelledException : public atom::error::RuntimeError { -public: - using atom::error::RuntimeError::RuntimeError; -}; - -/** - * @def THROW_PROMISE_CANCELLED_EXCEPTION - * @brief Macro to throw a PromiseCancelledException with file, line, and - * function information. - */ -#define THROW_PROMISE_CANCELLED_EXCEPTION(...) \ - throw PromiseCancelledException(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__); - -/** - * @def THROW_NESTED_PROMISE_CANCELLED_EXCEPTION - * @brief Macro to rethrow a nested PromiseCancelledException with file, line, - * and function information. - */ -#define THROW_NESTED_PROMISE_CANCELLED_EXCEPTION(...) \ - PromiseCancelledException::rethrowNested( \ - ATOM_FILE_NAME, ATOM_FILE_LINE, ATOM_FUNC_NAME, \ - "Promise cancelled: " __VA_ARGS__); - -/** - * @class EnhancedPromise - * @brief A template class that extends the standard promise with additional - * features. - * @tparam T The type of the value that the promise will hold. - */ -template -class EnhancedPromise { -public: - /** - * @brief Constructor that initializes the promise and shared future. - */ - EnhancedPromise(); - - /** - * @brief Gets the enhanced future associated with this promise. - * @return An EnhancedFuture object. - */ - auto getEnhancedFuture() -> EnhancedFuture; - - /** - * @brief Sets the value of the promise. - * @param value The value to set. - * @throws PromiseCancelledException if the promise has been cancelled. - */ - void setValue(T value); - - /** - * @brief Sets an exception for the promise. - * @param exception The exception to set. - * @throws PromiseCancelledException if the promise has been cancelled. - */ - void setException(std::exception_ptr exception); - - /** - * @brief Adds a callback to be called when the promise is completed. - * @tparam F The type of the callback function. - * @param func The callback function to add. - */ - template - void onComplete(F &&func); - - /** - * @brief Cancels the promise. - */ - void cancel(); - - /** - * @brief Checks if the promise has been cancelled. - * @return True if the promise has been cancelled, false otherwise. - */ - [[nodiscard]] auto isCancelled() const -> bool; - - /** - * @brief Gets the shared future associated with this promise. - * @return A shared future object. - */ - auto getFuture() -> std::shared_future; - -private: - /** - * @brief Runs all the registered callbacks. - */ - void runCallbacks(); - - std::promise promise_; ///< The underlying promise object. - std::shared_future - future_; ///< The shared future associated with the promise. - std::vector> - callbacks_; ///< List of callbacks to be called on completion. - std::atomic - cancelled_; ///< Flag indicating if the promise has been cancelled. -}; - -/** - * @class EnhancedPromise - * @brief Specialization of the EnhancedPromise class for void type. - */ -template <> -class EnhancedPromise { -public: - /** - * @brief Constructor that initializes the promise and shared future. - */ - EnhancedPromise(); - - /** - * @brief Gets the enhanced future associated with this promise. - * @return An EnhancedFuture object. - */ - auto getEnhancedFuture() -> EnhancedFuture; - - /** - * @brief Sets the value of the promise. - * @throws PromiseCancelledException if the promise has been cancelled. - */ - void setValue(); - - /** - * @brief Sets an exception for the promise. - * @param exception The exception to set. - * @throws PromiseCancelledException if the promise has been cancelled. - */ - void setException(std::exception_ptr exception); - - /** - * @brief Adds a callback to be called when the promise is completed. - * @tparam F The type of the callback function. - * @param func The callback function to add. - */ - template - void onComplete(F &&func); - - /** - * @brief Cancels the promise. - */ - void cancel(); - - /** - * @brief Checks if the promise has been cancelled. - * @return True if the promise has been cancelled, false otherwise. - */ - [[nodiscard]] auto isCancelled() const -> bool; - - /** - * @brief Gets the shared future associated with this promise. - * @return A shared future object. - */ - auto getFuture() -> std::shared_future { return future_; } - -private: - /** - * @brief Runs all the registered callbacks. - */ - void runCallbacks(); - - std::promise promise_; ///< The underlying promise object. - std::shared_future - future_; ///< The shared future associated with the promise. - std::vector> - callbacks_; ///< List of callbacks to be called on completion. - std::atomic - cancelled_; ///< Flag indicating if the promise has been cancelled. -}; - -template -EnhancedPromise::EnhancedPromise() - : future_(promise_.get_future().share()), cancelled_(false) {} - -template -auto EnhancedPromise::getEnhancedFuture() -> EnhancedFuture { - return EnhancedFuture(future_); -} - -template -void EnhancedPromise::setValue(T value) { - if (isCancelled()) { - THROW_PROMISE_CANCELLED_EXCEPTION( - "Cannot set value, promise was cancelled."); - } - promise_.set_value(value); - runCallbacks(); // Execute callbacks -} - -template -void EnhancedPromise::setException(std::exception_ptr exception) { - if (isCancelled()) { - THROW_PROMISE_CANCELLED_EXCEPTION( - "Cannot set exception, promise was cancelled."); - } - promise_.set_exception(exception); - runCallbacks(); // Execute callbacks -} - -template -template -void EnhancedPromise::onComplete(F &&func) { - if (isCancelled()) { - return; // No callbacks should be added if the promise is cancelled - } - callbacks_.emplace_back(std::forward(func)); - - // If the promise is already set, run the callback immediately - if (future_.valid() && future_.wait_for(std::chrono::seconds(0)) == - std::future_status::ready) { - runCallbacks(); - } -} - -template -void EnhancedPromise::cancel() { - cancelled_ = true; -} - -template -auto EnhancedPromise::isCancelled() const -> bool { - return cancelled_.load(); -} - -template -auto EnhancedPromise::getFuture() -> std::shared_future { - return future_; -} - -template -void EnhancedPromise::runCallbacks() { - if (isCancelled()) { - return; - } - if (future_.valid() && future_.wait_for(std::chrono::seconds(0)) == - std::future_status::ready) { - try { - T value = - future_.get(); // Get the value and pass it to the callbacks - for (auto &callback : callbacks_) { - callback(value); - } - } catch (...) { - // Handle the case where the future contains an exception. - // We don't invoke callbacks in this case. - } - } -} - -EnhancedPromise::EnhancedPromise() - : future_(promise_.get_future().share()), cancelled_(false) {} - -auto EnhancedPromise::getEnhancedFuture() -> EnhancedFuture { - return EnhancedFuture(future_); -} - -void EnhancedPromise::setValue() { - if (isCancelled()) { - THROW_PROMISE_CANCELLED_EXCEPTION( - "Cannot set value, promise was cancelled."); - } - promise_.set_value(); - runCallbacks(); // Execute callbacks -} - -void EnhancedPromise::setException(std::exception_ptr exception) { - if (isCancelled()) { - THROW_PROMISE_CANCELLED_EXCEPTION( - "Cannot set exception, promise was cancelled."); - } - promise_.set_exception(exception); - runCallbacks(); // Execute callbacks -} - -template -void EnhancedPromise::onComplete(F &&func) { - if (isCancelled()) { - return; // No callbacks should be added if the promise is cancelled - } - callbacks_.emplace_back(std::forward(func)); - - // If the promise is already set, run the callback immediately - if (future_.valid() && future_.wait_for(std::chrono::seconds(0)) == - std::future_status::ready) { - runCallbacks(); - } -} - -void EnhancedPromise::cancel() { cancelled_ = true; } - -auto EnhancedPromise::isCancelled() const -> bool { - return cancelled_.load(); -} - -void EnhancedPromise::runCallbacks() { - if (isCancelled()) { - return; - } - if (future_.valid() && future_.wait_for(std::chrono::seconds(0)) == - std::future_status::ready) { - try { - future_.get(); // Get the value and execute callbacks (for void, - // there's no value to pass) - for (auto &callback : callbacks_) { - callback(); - } - } catch (...) { - // Handle the case where the future contains an exception. - // We don't invoke callbacks in this case. - } - } -} - -} // namespace atom::async - -#endif // ATOM_ASYNC_PROMISE_HPP diff --git a/src/atom/async/queue.hpp b/src/atom/async/queue.hpp deleted file mode 100644 index 247ffc37..00000000 --- a/src/atom/async/queue.hpp +++ /dev/null @@ -1,317 +0,0 @@ -/* - * queue.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-2-13 - -Description: A simple thread safe queue - -**************************************************/ - -#ifndef ATOM_ASYNC_QUEUE_HPP -#define ATOM_ASYNC_QUEUE_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace atom::async { -template -class ThreadSafeQueue { -public: - ThreadSafeQueue() = default; - - void put(T element) { - { - std::lock_guard lock(m_mutex_); - m_queue_.push(std::move(element)); - } - m_conditionVariable_.notify_one(); - } - - auto take() -> std::optional { - std::unique_lock lock(m_mutex_); - m_conditionVariable_.wait( - lock, [this] { return m_mustReturnNullptr_ || !m_queue_.empty(); }); - - if (m_mustReturnNullptr_) { - return std::nullopt; - } - - T ret = std::move(m_queue_.front()); - m_queue_.pop(); - - return ret; - } - - auto destroy() -> std::queue { - { - std::lock_guard lock(m_mutex_); - m_mustReturnNullptr_ = true; - } - m_conditionVariable_.notify_all(); - - std::queue result; - { - std::lock_guard lock(m_mutex_); - std::swap(result, m_queue_); - } - return result; - } - - [[nodiscard]] auto size() const -> size_t { - std::lock_guard lock(m_mutex_); - return m_queue_.size(); - } - - [[nodiscard]] auto empty() const -> bool { - std::lock_guard lock(m_mutex_); - return m_queue_.empty(); - } - - void clear() { - std::lock_guard lock(m_mutex_); - std::queue empty; - std::swap(m_queue_, empty); - } - - auto front() -> std::optional { - std::lock_guard lock(m_mutex_); - if (m_queue_.empty()) { - return std::nullopt; - } - return m_queue_.front(); - } - - auto back() -> std::optional { - std::lock_guard lock(m_mutex_); - if (m_queue_.empty()) { - return std::nullopt; - } - return m_queue_.back(); - } - - template - void emplace(Args&&... args) { - { - std::lock_guard lock(m_mutex_); - m_queue_.emplace(std::forward(args)...); - } - m_conditionVariable_.notify_one(); - } - - template Predicate> - auto waitFor(Predicate predicate) -> std::optional { - std::unique_lock lock(m_mutex_); - m_conditionVariable_.wait(lock, [this, &predicate] { - return m_mustReturnNullptr_ || - (!m_queue_.empty() && predicate(m_queue_.front())); - }); - - if (m_mustReturnNullptr_) - return std::nullopt; - - T ret = std::move(m_queue_.front()); - m_queue_.pop(); - - return ret; - } - - void waitUntilEmpty() { - std::unique_lock lock(m_mutex_); - m_conditionVariable_.wait( - lock, [this] { return m_mustReturnNullptr_ || m_queue_.empty(); }); - } - - template UnaryPredicate> - auto extractIf(UnaryPredicate pred) -> std::vector { - std::vector result; - { - std::lock_guard lock(m_mutex_); - std::queue remaining; - while (!m_queue_.empty()) { - T& item = m_queue_.front(); - if (pred(item)) { - result.push_back(std::move(item)); - } else { - remaining.push(std::move(item)); - } - m_queue_.pop(); - } - std::swap(m_queue_, remaining); - } - return result; - } - - template - requires std::is_invocable_r_v - void sort(Compare comp) { - std::lock_guard lock(m_mutex_); - std::vector temp; - temp.reserve(m_queue_.size()); - while (!m_queue_.empty()) { - temp.push_back(std::move(m_queue_.front())); - m_queue_.pop(); - } - std::sort(temp.begin(), temp.end(), comp); - for (auto& elem : temp) { - m_queue_.push(std::move(elem)); - } - } - - template - auto transform(std::function func) - -> std::shared_ptr> { - std::shared_ptr> resultQueue; - { - std::lock_guard lock(m_mutex_); - std::vector original; - original.reserve(m_queue_.size()); - - while (!m_queue_.empty()) { - original.push_back(std::move(m_queue_.front())); - m_queue_.pop(); - } - - std::vector transformed(original.size()); - std::transform(original.begin(), original.end(), - transformed.begin(), func); - - for (auto& item : transformed) { - resultQueue->put(std::move(item)); - } - } - return resultQueue; - } - - template - auto groupBy(std::function func) - -> std::vector>> { - std::unordered_map>> - resultMap; - { - std::lock_guard lock(m_mutex_); - while (!m_queue_.empty()) { - T item = std::move(m_queue_.front()); - m_queue_.pop(); - GroupKey key = func(item); - if (!resultMap.contains(key)) { - resultMap[key] = std::make_shared>(); - } - resultMap[key]->put(std::move(item)); - } - } - - std::vector>> resultQueues; - resultQueues.reserve(resultMap.size()); - for (auto& [_, queue_ptr] : resultMap) { - resultQueues.push_back(queue_ptr); - } - - return resultQueues; - } - - auto toVector() const -> std::vector { - std::lock_guard lock(m_mutex_); - return std::vector(m_queue_.front(), m_queue_.back()); - } - - template - requires std::is_invocable_r_v - void forEach(Func func, bool parallel = false) { - std::lock_guard lock(m_mutex_); - if (parallel) { - std::vector vec; - vec.reserve(m_queue_.size()); - while (!m_queue_.empty()) { - vec.push_back(std::move(m_queue_.front())); - m_queue_.pop(); - } - -#pragma omp parallel for - for (size_t i = 0; i < vec.size(); ++i) { - func(vec[i]); - } - - for (auto& item : vec) { - m_queue_.push(std::move(item)); - } - } else { - std::queue tempQueue; - while (!m_queue_.empty()) { - T& item = m_queue_.front(); - func(item); - tempQueue.push(std::move(item)); - m_queue_.pop(); - } - m_queue_ = std::move(tempQueue); - } - } - - auto tryTake() -> std::optional { - std::lock_guard lock(m_mutex_); - if (m_queue_.empty()) { - return std::nullopt; - } - T ret = std::move(m_queue_.front()); - m_queue_.pop(); - return ret; - } - - template - auto takeFor(const std::chrono::duration& timeout) - -> std::optional { - std::unique_lock lock(m_mutex_); - if (m_conditionVariable_.wait_for(lock, timeout, [this] { - return !m_queue_.empty() || m_mustReturnNullptr_; - })) { - if (m_mustReturnNullptr_) { - return std::nullopt; - } - T ret = std::move(m_queue_.front()); - m_queue_.pop(); - return ret; - } - return std::nullopt; - } - - template - auto takeUntil(const std::chrono::time_point& timeout_time) - -> std::optional { - std::unique_lock lock(m_mutex_); - if (m_conditionVariable_.wait_until(lock, timeout_time, [this] { - return !m_queue_.empty() || m_mustReturnNullptr_; - })) { - if (m_mustReturnNullptr_) { - return std::nullopt; - } - T ret = std::move(m_queue_.front()); - m_queue_.pop(); - return ret; - } - return std::nullopt; - } - -private: - std::queue m_queue_; - mutable std::mutex m_mutex_; - std::condition_variable m_conditionVariable_; - std::atomic m_mustReturnNullptr_{false}; -}; - -} // namespace atom::async - -#endif // ATOM_ASYNC_QUEUE_HPP diff --git a/src/atom/async/safetype.hpp b/src/atom/async/safetype.hpp deleted file mode 100644 index e7a16d61..00000000 --- a/src/atom/async/safetype.hpp +++ /dev/null @@ -1,680 +0,0 @@ -#ifndef ATOM_ASYNC_SAFETYPE_HPP -#define ATOM_ASYNC_SAFETYPE_HPP - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "atom/error/exception.hpp" - -namespace atom::async { -/** - * @brief A lock-free stack implementation suitable for concurrent use. - * - * @tparam T Type of elements stored in the stack. - */ -template -class LockFreeStack { -private: - struct Node { - T value; ///< The stored value of type T. - std::atomic next = - nullptr; ///< Pointer to the next node in the stack. - - /** - * @brief Construct a new Node object. - * - * @param value_ The value to store in the node. - */ - explicit Node(T value_); - }; - - std::atomic head_; ///< Atomic pointer to the top of the stack. - std::atomic approximateSize_ = - 0; ///< An approximate count of the stack's elements. - -public: - /** - * @brief Construct a new Lock Free Stack object. - */ - LockFreeStack(); - - /** - * @brief Destroy the Lock Free Stack object. - */ - ~LockFreeStack(); - - /** - * @brief Pushes a value onto the stack. Thread-safe. - * - * @param value The value to push onto the stack. - */ - void push(const T& value); - - /** - * @brief Pushes a value onto the stack using move semantics. Thread-safe. - * - * @param value The value to move onto the stack. - */ - void push(T&& value); - - /** - * @brief Attempts to pop the top value off the stack. Thread-safe. - * - * @return std::optional The popped value if stack is not empty, - * otherwise nullopt. - */ - auto pop() -> std::optional; - - /** - * @brief Get the top value of the stack without removing it. Thread-safe. - * - * @return std::optional The top value if stack is not empty, otherwise - * nullopt. - */ - auto top() const -> std::optional; - - /** - * @brief Check if the stack is empty. Thread-safe. - * - * @return true If the stack is empty. - * @return false If the stack has one or more elements. - */ - [[nodiscard]] auto empty() const -> bool; - - /** - * @brief Get the approximate size of the stack. Thread-safe. - * - * @return int The approximate number of elements in the stack. - */ - [[nodiscard]] auto size() const -> int; -}; - -template -class LockFreeHashTable { -private: - struct Node { - Key key; - Value value; - std::atomic next; - - Node(Key k, Value v) : key(k), value(v), next(nullptr) {} - }; - - struct Bucket { - std::atomic head; - - Bucket() : head(nullptr) {} - - ~Bucket() { - Node* node = head.load(); - while (node) { - Node* next = node->next.load(); - delete node; - node = next; - } - } - - auto find(const Key& key) const -> std::optional { - Node* node = head.load(); - while (node) { - if (node->key == key) { - return node->value; - } - node = node->next.load(); - } - return std::nullopt; - } - - void insert(const Key& key, const Value& value) { - Node* newNode = new Node(key, value); - newNode->next = head.load(); - Node* expected = newNode->next.load(); - while (!head.compare_exchange_weak(expected, newNode)) { - newNode->next = expected; - } - } - - void erase(const Key& key) { - Node* node = head.load(); - Node* prev = nullptr; - while (node) { - if (node->key == key) { - Node* next = node->next.load(); - if (prev) { - prev->next.compare_exchange_strong(node, next); - } else { - head.compare_exchange_strong(node, next); - } - delete node; - return; - } - prev = node; - node = node->next.load(); - } - } - }; - - std::vector> buckets_; - std::hash hasher_; - - auto getBucket(const Key& key) const -> Bucket& { - auto bucketIndex = hasher_(key) % buckets_.size(); - return *buckets_[bucketIndex]; - } - -public: - explicit LockFreeHashTable(size_t num_buckets = 16) - : buckets_(num_buckets) { - for (size_t i = 0; i < num_buckets; ++i) { - buckets_[i] = std::make_unique(); - } - } - - auto find(const Key& key) const -> std::optional { - return getBucket(key).find(key); - } - - void insert(const Key& key, const Value& value) { - getBucket(key).insert(key, value); - } - - void erase(const Key& key) { getBucket(key).erase(key); } - - [[nodiscard]] auto empty() const -> bool { - for (const auto& bucket : buckets_) { - if (bucket->head.load() != nullptr) { - return false; - } - } - return true; - } - - [[nodiscard]] auto size() const -> size_t { - size_t totalSize = 0; - for (const auto& bucket : buckets_) { - Node* node = bucket->head.load(); - while (node) { - ++totalSize; - node = node->next.load(); - } - } - return totalSize; - } - - void clear() { - for (const auto& bucket : buckets_) { - Node* node = bucket->head.load(); - while (node) { - Node* next = node->next.load(); - delete node; - node = next; - } - bucket->head.store(nullptr); - } - } - - // 迭代器类 - class Iterator { - public: - using iterator_category = std::forward_iterator_tag; - using value_type = std::pair; - using difference_type = std::ptrdiff_t; - using pointer = value_type*; - using reference = value_type&; - - Iterator( - typename std::vector>::iterator bucket_iter, - typename std::vector>::iterator bucket_end, - Node* node) - : bucket_iter_(bucket_iter), bucket_end_(bucket_end), node_(node) { - advancePastEmptyBuckets(); - } - - auto operator++() -> Iterator& { - if (node_) { - node_ = node_->next.load(); - if (!node_) { - ++bucket_iter_; - advancePastEmptyBuckets(); - } - } - return *this; - } - - auto operator++(int) -> Iterator { - Iterator tmp = *this; - ++(*this); - return tmp; - } - - auto operator==(const Iterator& other) const -> bool { - return bucket_iter_ == other.bucket_iter_ && node_ == other.node_; - } - - auto operator!=(const Iterator& other) const -> bool { - return !(*this == other); - } - - auto operator*() const -> reference { - return *reinterpret_cast(node_); - } - - auto operator->() const -> pointer { - return reinterpret_cast(node_); - } - - private: - void advancePastEmptyBuckets() { - while (bucket_iter_ != bucket_end_ && !node_) { - node_ = (*bucket_iter_)->head.load(); - if (!node_) { - ++bucket_iter_; - } - } - } - - typename std::vector>::iterator bucket_iter_; - typename std::vector>::iterator bucket_end_; - Node* node_; - }; - - auto begin() -> Iterator { - auto bucketIter = buckets_.begin(); - auto bucketEnd = buckets_.end(); - Node* node = - bucketIter != bucketEnd ? (*bucketIter)->head.load() : nullptr; - return Iterator(bucketIter, bucketEnd, node); - } - - auto end() -> Iterator { - return Iterator(buckets_.end(), buckets_.end(), nullptr); - } -}; - -template -class ThreadSafeVector { - std::atomic data_; - std::atomic capacity_; - std::atomic size_; - mutable std::shared_mutex resize_mutex_; - - void resize() { - std::unique_lock lock(resize_mutex_); - - size_t oldCapacity = capacity_.load(std::memory_order_relaxed); - size_t newCapacity = oldCapacity * 2; - T* newData = new T[newCapacity]; - - for (size_t i = 0; i < size_.load(std::memory_order_relaxed); ++i) { - newData[i] = std::move(data_.load(std::memory_order_relaxed)[i]); - } - - T* oldData = data_.exchange(newData, std::memory_order_acq_rel); - capacity_.store(newCapacity, std::memory_order_release); - - delete[] oldData; - } - -public: - explicit ThreadSafeVector(size_t initial_capacity = 16) - : data_(new T[initial_capacity]), - capacity_(initial_capacity), - size_(0) {} - - ~ThreadSafeVector() { delete[] data_.load(std::memory_order_relaxed); } - - void pushBack(const T& value) { - size_t currentSize = size_.load(std::memory_order_relaxed); - while (true) { - if (currentSize < capacity_.load(std::memory_order_relaxed)) { - if (size_.compare_exchange_weak(currentSize, currentSize + 1, - std::memory_order_acq_rel)) { - data_.load(std::memory_order_relaxed)[currentSize] = value; - return; - } - } else { - resize(); - } - currentSize = size_.load(std::memory_order_relaxed); - } - } - - void pushBack(T&& value) { - size_t currentSize = size_.load(std::memory_order_relaxed); - while (true) { - if (currentSize < capacity_.load(std::memory_order_relaxed)) { - if (size_.compare_exchange_weak(currentSize, currentSize + 1, - std::memory_order_acq_rel)) { - data_.load(std::memory_order_relaxed)[currentSize] = - std::move(value); - return; - } - } else { - resize(); - } - currentSize = size_.load(std::memory_order_relaxed); - } - } - - auto popBack() -> std::optional { - size_t currentSize = size_.load(std::memory_order_relaxed); - while (currentSize > 0) { - if (size_.compare_exchange_weak(currentSize, currentSize - 1, - std::memory_order_acq_rel)) { - return data_.load(std::memory_order_relaxed)[currentSize - 1]; - } - currentSize = size_.load(std::memory_order_relaxed); - } - return std::nullopt; - } - - auto at(size_t index) const -> std::optional { - if (index >= size_.load(std::memory_order_relaxed)) { - return std::nullopt; - } - return data_.load(std::memory_order_relaxed)[index]; - } - - auto empty() const -> bool { - return size_.load(std::memory_order_relaxed) == 0; - } - - auto getSize() const -> size_t { - return size_.load(std::memory_order_relaxed); - } - - auto getCapacity() const -> size_t { - return capacity_.load(std::memory_order_relaxed); - } - - void clear() { size_.store(0, std::memory_order_relaxed); } - - void shrinkToFit() { - std::unique_lock lock(resize_mutex_); - - size_t currentSize = size_.load(std::memory_order_relaxed); - T* newData = new T[currentSize]; - - for (size_t i = 0; i < currentSize; ++i) { - newData[i] = std::move(data_.load(std::memory_order_relaxed)[i]); - } - - T* oldData = data_.exchange(newData, std::memory_order_acq_rel); - capacity_.store(currentSize, std::memory_order_release); - - delete[] oldData; - } - - auto front() const -> T { - if (empty()) { - THROW_OUT_OF_RANGE("Vector is empty"); - } - return data_.load(std::memory_order_relaxed)[0]; - } - - auto back() const -> T { - if (empty()) { - THROW_OUT_OF_RANGE("Vector is empty"); - } - return data_.load( - std::memory_order_relaxed)[size_.load(std::memory_order_relaxed) - - 1]; - } - - auto operator[](size_t index) const -> T { - if (index >= size_.load(std::memory_order_relaxed)) { - THROW_OUT_OF_RANGE("Index out of range"); - } - return data_.load(std::memory_order_relaxed)[index]; - } -}; - -template -class LockFreeList { -private: - struct Node { - std::shared_ptr value; - std::atomic next; - explicit Node(T val) : value(std::make_shared(val)), next(nullptr) {} - }; - - std::atomic head_; - - // Hazard pointers structure - struct HazardPointer { - std::atomic id; - std::atomic pointer; - }; - - static const int MAX_HAZARD_POINTERS = 100; - HazardPointer hazard_pointers_[MAX_HAZARD_POINTERS]; - - // Get hazard pointer for current thread - auto getHazardPointerForCurrentThread() -> std::atomic& { - std::thread::id thisId = std::this_thread::get_id(); - for (auto& hazardPointer : hazard_pointers_) { - std::thread::id oldId; - if (hazardPointer.id.compare_exchange_strong(oldId, thisId)) { - return hazardPointer.pointer; - } - if (hazardPointer.id == thisId) { - return hazardPointer.pointer; - } - } - THROW_RUNTIME_ERROR("No hazard pointers available"); - } - - // Reclaim list - void reclaimLater(Node* node) { - retired_nodes_.push_back(node); - if (retired_nodes_.size() >= MAX_HAZARD_POINTERS) { - doReclamation(); - } - } - - // Reclaim retired nodes - void doReclamation() { - std::vector toReclaim; - for (Node* node : retired_nodes_) { - if (!isHazard(node)) { - toReclaim.push_back(node); - } - } - retired_nodes_.clear(); - for (Node* node : toReclaim) { - delete node; - } - } - - // Check if node is a hazard - auto isHazard(Node* node) -> bool { - for (auto& hazardPointer : hazard_pointers_) { - if (hazardPointer.pointer.load() == node) { - return true; - } - } - return false; - } - - std::vector retired_nodes_; - -public: - LockFreeList() : head_(nullptr) {} - - ~LockFreeList() { - while (head_.load()) { - Node* oldHead = head_.load(); - head_.store(oldHead->next); - delete oldHead; - } - } - - void pushFront(T value) { - Node* newNode = new Node(value); - newNode->next = head_.load(); - while (!head_.compare_exchange_weak(newNode->next, newNode)) { - } - } - - auto popFront() -> std::optional { - std::atomic& hazardPointer = getHazardPointerForCurrentThread(); - Node* oldHead = head_.load(); - do { - Node* temp; - do { - temp = oldHead; - hazardPointer.store(oldHead); - oldHead = head_.load(); - } while (oldHead != temp); - if (!oldHead) { - hazardPointer.store(nullptr); - return std::nullopt; - } - } while (!head_.compare_exchange_strong(oldHead, oldHead->next)); - hazardPointer.store(nullptr); - std::shared_ptr res = oldHead->value; - if (res.use_count() == 1) { - reclaimLater(oldHead); - } - return *res; - } - - [[nodiscard]] auto empty() const -> bool { return head_.load() == nullptr; } - - class Iterator { - public: - using iterator_category = std::forward_iterator_tag; - using value_type = T; - using difference_type = std::ptrdiff_t; - using pointer = T*; - using reference = T&; - - Iterator(Node* node, LockFreeList* list) : node_(node), list_(list) {} - - auto operator++() -> Iterator& { - if (node_) { - node_ = node_->next.load(); - } - return *this; - } - - auto operator++(int) -> Iterator { - Iterator tmp = *this; - ++(*this); - return tmp; - } - - auto operator==(const Iterator& other) const -> bool { - return node_ == other.node_; - } - - auto operator!=(const Iterator& other) const -> bool { - return node_ != other.node_; - } - - auto operator*() const -> reference { return *(node_->value); } - - auto operator->() const -> pointer { return node_->value.get(); } - - private: - Node* node_; - LockFreeList* list_; - }; - - auto begin() -> Iterator { return Iterator(head_.load(), this); } - - auto end() -> Iterator { return Iterator(nullptr, this); } -}; - -template -LockFreeStack::Node::Node(T value_) : value(std::move(value_)) {} - -// 构造函数 -template -LockFreeStack::LockFreeStack() : head_(nullptr) {} - -// 析构函数 -template -LockFreeStack::~LockFreeStack() { - while (auto node = head_.load(std::memory_order_relaxed)) { - head_.store(node->next.load(std::memory_order_relaxed), - std::memory_order_relaxed); - delete node; - } -} - -// push 常量左值引用 -template -void LockFreeStack::push(const T& value) { - auto newNode = new Node(value); - newNode->next = head_.load(std::memory_order_relaxed); - Node* expected = newNode->next.load(std::memory_order_relaxed); - while (!head_.compare_exchange_weak(expected, newNode, - std::memory_order_release, - std::memory_order_relaxed)) { - newNode->next = expected; - } - approximateSize_.fetch_add(1, std::memory_order_relaxed); -} - -// push 右值引用 -template -void LockFreeStack::push(T&& value) { - auto newNode = new Node(std::move(value)); - newNode->next = head_.load(std::memory_order_relaxed); - Node* expected = newNode->next.load(std::memory_order_relaxed); - while (!head_.compare_exchange_weak(expected, newNode, - std::memory_order_release, - std::memory_order_relaxed)) { - newNode->next = expected; - } - approximateSize_.fetch_add(1, std::memory_order_relaxed); -} - -// pop -template -auto LockFreeStack::pop() -> std::optional { - Node* oldHead = head_.load(std::memory_order_relaxed); - while (oldHead && !head_.compare_exchange_weak(oldHead, oldHead->next, - std::memory_order_acquire, - std::memory_order_relaxed)) { - } - if (oldHead) { - T value = std::move(oldHead->value); - delete oldHead; - approximateSize_.fetch_sub(1, std::memory_order_relaxed); - return value; - } - return std::nullopt; -} - -// top -template -auto LockFreeStack::top() const -> std::optional { - Node* topNode = head_.load(std::memory_order_relaxed); - if (head_.load(std::memory_order_relaxed)) { - return std::optional(topNode->value); - } - return std::nullopt; -} - -// empty -template -auto LockFreeStack::empty() const -> bool { - return head_.load(std::memory_order_relaxed) == nullptr; -} - -// size -template -auto LockFreeStack::size() const -> int { - return approximateSize_.load(std::memory_order_relaxed); -} -} // namespace atom::async - -#endif // ATOM_ASYNC_SAFETYPE_HPP diff --git a/src/atom/async/slot.hpp b/src/atom/async/slot.hpp deleted file mode 100644 index 8fd29c6f..00000000 --- a/src/atom/async/slot.hpp +++ /dev/null @@ -1,569 +0,0 @@ -#ifndef ATOM_ASYNC_SIGNAL_HPP -#define ATOM_ASYNC_SIGNAL_HPP - -#include -#include -#include -#include -#include -#include -#include - -namespace atom::async { - -/** - * @brief A signal class that allows connecting, disconnecting, and emitting - * slots. - * - * @tparam Args The argument types for the slots. - */ -template -class Signal { -public: - using SlotType = std::function; - - /** - * @brief Connect a slot to the signal. - * - * @param slot The slot to connect. - */ - void connect(SlotType slot) { - std::lock_guard lock(mutex_); - slots_.push_back(std::move(slot)); - } - - /** - * @brief Disconnect a slot from the signal. - * - * @param slot The slot to disconnect. - */ - void disconnect(const SlotType& slot) { - std::lock_guard lock(mutex_); - slots_.erase(std::remove_if(slots_.begin(), slots_.end(), - [&](const SlotType& s) { - return s.target_type() == - slot.target_type(); - }), - slots_.end()); - } - - /** - * @brief Emit the signal, calling all connected slots. - * - * @param args The arguments to pass to the slots. - */ - void emit(Args... args) { - std::lock_guard lock(mutex_); - for (const auto& slot : slots_) { - slot(args...); - } - } - -private: - std::vector slots_; - std::mutex mutex_; -}; - -/** - * @brief A signal class that allows asynchronous slot execution. - * - * @tparam Args The argument types for the slots. - */ -template -class AsyncSignal { -public: - using SlotType = std::function; - - /** - * @brief Connect a slot to the signal. - * - * @param slot The slot to connect. - */ - void connect(SlotType slot) { - std::lock_guard lock(mutex_); - slots_.push_back(std::move(slot)); - } - - /** - * @brief Disconnect a slot from the signal. - * - * @param slot The slot to disconnect. - */ - void disconnect(const SlotType& slot) { - std::lock_guard lock(mutex_); - slots_.erase(std::remove_if(slots_.begin(), slots_.end(), - [&](const SlotType& s) { - return s.target_type() == - slot.target_type(); - }), - slots_.end()); - } - - /** - * @brief Emit the signal asynchronously, calling all connected slots. - * - * @param args The arguments to pass to the slots. - */ - void emit(Args... args) { - std::vector> futures; - { - std::lock_guard lock(mutex_); - for (const auto& slot : slots_) { - futures.push_back( - std::async(std::launch::async, slot, args...)); - } - } - for (auto& future : futures) { - future.get(); - } - } - -private: - std::vector slots_; - std::mutex mutex_; -}; - -/** - * @brief A signal class that allows automatic disconnection of slots. - * - * @tparam Args The argument types for the slots. - */ -template -class AutoDisconnectSignal { -public: - using SlotType = std::function; - - /** - * @brief Connect a slot to the signal and return its unique ID. - * - * @param slot The slot to connect. - * @return int The unique ID of the connected slot. - */ - auto connect(SlotType slot) -> int { - std::lock_guard lock(mutex_); - auto id = nextId_++; - slots_.emplace(id, std::move(slot)); - return id; - } - - /** - * @brief Disconnect a slot from the signal using its unique ID. - * - * @param id The unique ID of the slot to disconnect. - */ - void disconnect(int id) { - std::lock_guard lock(mutex_); - slots_.erase(id); - } - - /** - * @brief Emit the signal, calling all connected slots. - * - * @param args The arguments to pass to the slots. - */ - void emit(Args... args) { - std::lock_guard lock(mutex_); - for (const auto& [id, slot] : slots_) { - slot(args...); - } - } - -private: - std::map slots_; - std::mutex mutex_; - int nextId_ = 0; -}; - -/** - * @brief A signal class that allows chaining of signals. - * - * @tparam Args The argument types for the slots. - */ -template -class ChainedSignal { -public: - using SlotType = std::function; - - /** - * @brief Connect a slot to the signal. - * - * @param slot The slot to connect. - */ - void connect(SlotType slot) { - std::lock_guard lock(mutex_); - slots_.push_back(std::move(slot)); - } - - /** - * @brief Add a chained signal to be emitted after this signal. - * - * @param nextSignal The next signal to chain. - */ - void addChain(ChainedSignal& nextSignal) { - std::lock_guard lock(mutex_); - chains_.push_back(&nextSignal); - } - - /** - * @brief Emit the signal, calling all connected slots and chained signals. - * - * @param args The arguments to pass to the slots. - */ - void emit(Args... args) { - std::lock_guard lock(mutex_); - for (const auto& slot : slots_) { - slot(args...); - } - for (auto& chain : chains_) { - chain->emit(args...); - } - } - -private: - std::vector slots_; - std::vector*> chains_; - std::mutex mutex_; -}; - -/** - * @brief A signal class that allows connecting, disconnecting, and emitting - * slots. - * - * @tparam Args The argument types for the slots. - */ -template -class TemplateSignal { -public: - using SlotType = std::function; - - /** - * @brief Connect a slot to the signal. - * - * @param slot The slot to connect. - */ - void connect(SlotType slot) { - std::lock_guard lock(mutex_); - slots_.push_back(std::move(slot)); - } - - /** - * @brief Disconnect a slot from the signal. - * - * @param slot The slot to disconnect. - */ - void disconnect(const SlotType& slot) { - std::lock_guard lock(mutex_); - slots_.erase(std::remove_if(slots_.begin(), slots_.end(), - [&](const SlotType& s) { - return s.target_type() == - slot.target_type(); - }), - slots_.end()); - } - - /** - * @brief Emit the signal, calling all connected slots. - * - * @param args The arguments to pass to the slots. - */ - void emit(Args... args) { - std::lock_guard lock(mutex_); - for (const auto& slot : slots_) { - slot(args...); - } - } - -private: - std::vector slots_; - std::mutex mutex_; -}; - -/** - * @brief A signal class that ensures thread-safe slot execution. - * - * @tparam Args The argument types for the slots. - */ -template -class ThreadSafeSignal { -public: - using SlotType = std::function; - - /** - * @brief Connect a slot to the signal. - * - * @param slot The slot to connect. - */ - void connect(SlotType slot) { - std::lock_guard lock(mutex_); - slots_.push_back(std::move(slot)); - } - - /** - * @brief Disconnect a slot from the signal. - * - * @param slot The slot to disconnect. - */ - void disconnect(const SlotType& slot) { - std::lock_guard lock(mutex_); - slots_.erase(std::remove_if(slots_.begin(), slots_.end(), - [&](const SlotType& s) { - return s.target_type() == - slot.target_type(); - }), - slots_.end()); - } - - /** - * @brief Emit the signal, calling all connected slots in a thread-safe - * manner. - * - * @param args The arguments to pass to the slots. - */ - void emit(Args... args) { - std::vector> tasks; - { - std::lock_guard lock(mutex_); - for (const auto& slot : slots_) { - tasks.emplace_back([slot, args...]() { slot(args...); }); - } - } - for (auto& task : tasks) { - std::async(std::launch::async, task).get(); - } - } - -private: - std::vector slots_; - std::mutex mutex_; -}; - -/** - * @brief A signal class that allows broadcasting to chained signals. - * - * @tparam Args The argument types for the slots. - */ -template -class BroadcastSignal { -public: - using SlotType = std::function; - - /** - * @brief Connect a slot to the signal. - * - * @param slot The slot to connect. - */ - void connect(SlotType slot) { - std::lock_guard lock(mutex_); - slots_.push_back(std::move(slot)); - } - - /** - * @brief Disconnect a slot from the signal. - * - * @param slot The slot to disconnect. - */ - void disconnect(const SlotType& slot) { - std::lock_guard lock(mutex_); - slots_.erase(std::remove_if(slots_.begin(), slots_.end(), - [&](const SlotType& s) { - return s.target_type() == - slot.target_type(); - }), - slots_.end()); - } - - /** - * @brief Emit the signal, calling all connected slots and chained signals. - * - * @param args The arguments to pass to the slots. - */ - void emit(Args... args) { - std::lock_guard lock(mutex_); - for (const auto& slot : slots_) { - slot(args...); - } - for (const auto& signal : chainedSignals_) { - signal->emit(args...); - } - } - - /** - * @brief Add a chained signal to be emitted after this signal. - * - * @param signal The next signal to chain. - */ - void addChain(BroadcastSignal& signal) { - std::lock_guard lock(mutex_); - chainedSignals_.push_back(&signal); - } - -private: - std::vector slots_; - std::vector*> chainedSignals_; - std::mutex mutex_; -}; - -/** - * @brief A signal class that limits the number of times it can be emitted. - * - * @tparam Args The argument types for the slots. - */ -template -class LimitedSignal { -public: - using SlotType = std::function; - - /** - * @brief Construct a new Limited Signal object. - * - * @param maxCalls The maximum number of times the signal can be emitted. - */ - explicit LimitedSignal(size_t maxCalls) : maxCalls_(maxCalls) {} - - /** - * @brief Connect a slot to the signal. - * - * @param slot The slot to connect. - */ - void connect(SlotType slot) { - std::lock_guard lock(mutex_); - slots_.push_back(std::move(slot)); - } - - /** - * @brief Disconnect a slot from the signal. - * - * @param slot The slot to disconnect. - */ - void disconnect(const SlotType& slot) { - std::lock_guard lock(mutex_); - slots_.erase(std::remove_if(slots_.begin(), slots_.end(), - [&](const SlotType& s) { - return s.target_type() == - slot.target_type(); - }), - slots_.end()); - } - - /** - * @brief Emit the signal, calling all connected slots up to the maximum - * number of calls. - * - * @param args The arguments to pass to the slots. - */ - void emit(Args... args) { - std::lock_guard lock(mutex_); - if (callCount_ >= maxCalls_) { - return; - } - for (const auto& slot : slots_) { - slot(args...); - } - ++callCount_; - } - -private: - std::vector slots_; - size_t maxCalls_; - size_t callCount_{}; - std::mutex mutex_; -}; - -/** - * @brief A signal class that allows dynamic slot management. - * - * @tparam Args The argument types for the slots. - */ -template -class DynamicSignal { -public: - using SlotType = std::function; - - /** - * @brief Connect a slot to the signal. - * - * @param slot The slot to connect. - */ - void connect(SlotType slot) { - std::lock_guard lock(mutex_); - slots_.push_back(std::move(slot)); - } - - /** - * @brief Disconnect a slot from the signal. - * - * @param slot The slot to disconnect. - */ - void disconnect(const SlotType& slot) { - std::lock_guard lock(mutex_); - slots_.erase(std::remove_if(slots_.begin(), slots_.end(), - [&](const SlotType& s) { - return s.target_type() == - slot.target_type(); - }), - slots_.end()); - } - - /** - * @brief Emit the signal, calling all connected slots. - * - * @param args The arguments to pass to the slots. - */ - void emit(Args... args) { - std::lock_guard lock(mutex_); - for (const auto& slot : slots_) { - slot(args...); - } - } - -private: - std::vector slots_; - std::mutex mutex_; -}; - -/** - * @brief A signal class that allows scoped slot management. - * - * @tparam Args The argument types for the slots. - */ -template -class ScopedSignal { -public: - using SlotType = std::function; - - /** - * @brief Connect a slot to the signal using a shared pointer. - * - * @param slotPtr The shared pointer to the slot to connect. - */ - void connect(std::shared_ptr slotPtr) { - std::lock_guard lock(mutex_); - slots_.push_back(slotPtr); - } - - /** - * @brief Emit the signal, calling all connected slots. - * - * @param args The arguments to pass to the slots. - */ - void emit(Args... args) { - std::lock_guard lock(mutex_); - auto it = slots_.begin(); - while (it != slots_.end()) { - if (auto slot = *it; slot) { - (*slot)(args...); - ++it; - } else { - it = slots_.erase(it); - } - } - } - -private: - std::vector> slots_; - std::mutex mutex_; -}; - -} // namespace atom::async - -#endif diff --git a/src/atom/async/thread_wrapper.hpp b/src/atom/async/thread_wrapper.hpp deleted file mode 100644 index 3c3fd8c9..00000000 --- a/src/atom/async/thread_wrapper.hpp +++ /dev/null @@ -1,140 +0,0 @@ -/* - * thread_wrapper.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-2-13 - -Description: A simple wrapper of std::jthread - -**************************************************/ - -#ifndef ATOM_ASYNC_THREAD_WRAPPER_HPP -#define ATOM_ASYNC_THREAD_WRAPPER_HPP - -#include -#include -#include -#include -#include "type/noncopyable.hpp" - -namespace atom::async { -/** - * @brief A wrapper class for managing a C++20 jthread. - * - * This class provides a convenient interface for managing a C++20 jthread, - * allowing for starting, stopping, and joining threads easily. - */ -class Thread : public NonCopyable { -public: - /** - * @brief Default constructor. - */ - Thread() = default; - - /** - * @brief Starts a new thread with the specified callable object and - * arguments. - * - * If the callable object is invocable with a std::stop_token and the - * provided arguments, it will be invoked with a std::stop_token as the - * first argument. Otherwise, it will be invoked with the provided - * arguments. - * - * @tparam Callable The type of the callable object. - * @tparam Args The types of the arguments. - * @param func The callable object to execute in the new thread. - * @param args The arguments to pass to the callable object. - */ - template - void start(Callable&& func, Args&&... args) { - thread_ = - std::jthread([func = std::forward(func), - ... args = std::forward(args), this]() mutable { - if constexpr (std::is_invocable_v) { - func(std::stop_token(thread_.get_stop_token()), - std::move(args)...); - } else { - func(std::move(args)...); - } - }); - } - - /** - * @brief Requests the thread to stop execution. - */ - void requestStop() { thread_.request_stop(); } - - /** - * @brief Waits for the thread to finish execution. - */ - void join() { thread_.join(); } - - /** - * @brief Checks if the thread is currently running. - * @return True if the thread is running, false otherwise. - */ - [[nodiscard]] auto running() const noexcept -> bool { - return thread_.joinable(); - } - - /** - * @brief Swaps the content of this Thread object with another Thread - * object. - * @param other The Thread object to swap with. - */ - void swap(Thread& other) noexcept { thread_.swap(other.thread_); } - - /** - * @brief Gets the underlying std::jthread object. - * @return Reference to the underlying std::jthread object. - */ - [[nodiscard]] auto getThread() noexcept -> std::jthread& { return thread_; } - - /** - * @brief Gets the underlying std::jthread object (const version). - * @return Constant reference to the underlying std::jthread object. - */ - [[nodiscard]] auto getThread() const noexcept -> const std::jthread& { - return thread_; - } - - /** - * @brief Gets the ID of the thread. - * @return The ID of the thread. - */ - [[nodiscard]] auto getId() const noexcept -> std::thread::id { - return thread_.get_id(); - } - - /** - * @brief Gets the underlying std::stop_source object. - * @return The underlying std::stop_source object. - */ - [[nodiscard]] auto getStopSource() noexcept -> std::stop_source { - return thread_.get_stop_source(); - } - - /** - * @brief Gets the underlying std::stop_token object. - * @return The underlying std::stop_token object. - */ - [[nodiscard]] auto getStopToken() const noexcept -> std::stop_token { - return thread_.get_stop_token(); - } - - /** - * @brief Default destructor. - */ - ~Thread() = default; - -private: - std::jthread thread_; ///< The underlying jthread object. -}; -} // namespace atom::async - -#endif diff --git a/src/atom/async/threadlocal.hpp b/src/atom/async/threadlocal.hpp deleted file mode 100644 index c7746b82..00000000 --- a/src/atom/async/threadlocal.hpp +++ /dev/null @@ -1,262 +0,0 @@ -/* - * threadlocal.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-4-16 - -Description: ThreadLocal - -**************************************************/ - -#ifndef ATOM_ASYNC_THREADLOCAL_HPP -#define ATOM_ASYNC_THREADLOCAL_HPP - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "atom/type/noncopyable.hpp" - -namespace atom::async { -/** - * @brief A thread-local storage class template that provides thread-specific - * storage for objects of type T. - * - * This class allows each thread to maintain its own independent instance of T, - * with optional initialization and a variety of access methods. It is not - * copyable to ensure each instance is unique per thread. - * - * @tparam T The type of the value that will be stored in thread-local storage. - */ -template -class ThreadLocal : public NonCopyable { -public: - using InitializerFn = - std::function; ///< Type definition for the initializer function. - - /** - * @brief Default constructor for ThreadLocal. - * - * Initializes an instance of ThreadLocal without an initializer. - */ - ThreadLocal() = default; - - /** - * @brief Constructs a ThreadLocal instance with an initializer function. - * - * @param initializer A function that is called to initialize the value the - * first time it is accessed. - */ - explicit ThreadLocal(InitializerFn initializer); - - // Move constructor - ThreadLocal(ThreadLocal&&) noexcept = default; - - /** - * @brief Move assignment operator. - * - * @param other The ThreadLocal instance to move from. - * @return A reference to this instance after the move. - */ - auto operator=(ThreadLocal&&) noexcept -> ThreadLocal& = default; - - /** - * @brief Retrieves the thread-local value. - * - * If the value has not been initialized for the current thread, the - * initializer function is called to create it. - * - * @return A reference to the thread-local value of type T. - */ - auto get() -> T&; - - /** - * @brief Access the thread-local value using the arrow operator. - * - * @return A pointer to the thread-local value of type T. - */ - auto operator->() -> T*; - - /** - * @brief Access the thread-local value using the arrow operator (const - * version). - * - * @return A pointer to the thread-local value of type T (const version). - */ - auto operator->() const -> const T*; - - /** - * @brief Dereference the thread-local value. - * - * @return A reference to the thread-local value of type T. - */ - auto operator*() -> T&; - - /** - * @brief Dereference the thread-local value (const version). - * - * @return A const reference to the thread-local value of type T. - */ - auto operator*() const -> const T&; - - /** - * @brief Resets the value in thread-local storage. - * - * If a value is provided, it will be set to the thread-local value. If no - * value is provided, the thread-local value will be reset to its default - * constructed value. - * - * @param value The value to set; the default is T(), which is the default - * constructed value of T. - */ - void reset(T value = T()); - - /** - * @brief Checks if the current thread has a value. - * - * @return true if the current thread has an initialized value, otherwise - * false. - */ - auto hasValue() const -> bool; - - /** - * @brief Retrieves a pointer to the thread-local value. - * - * If the value has not been initialized, this will return a nullptr. - * - * @return A pointer to the thread-local value of type T. - */ - auto getPointer() -> T*; - - /** - * @brief Retrieves a pointer to the thread-local value (const version). - * - * @return A const pointer to the thread-local value of type T. - */ - auto getPointer() const -> const T*; - - /** - * @brief Executes a function for each thread-local value. - * - * This allows the caller to provide a function that will be called with the - * value of type T for each thread that has an initialized value. - * - * @tparam Func A callable type (e.g., a lambda or a function pointer) that - * takes a reference to T. - * @param func The function to execute for each thread-local value. - */ - template Func> - void forEach(Func&& func); - - /** - * @brief Clears the thread-local storage for the current thread. - * - * This will remove the value associated with the current thread. - */ - void clear(); - -private: - InitializerFn initializer_; ///< The function used to initialize T. - mutable std::shared_mutex mutex_; ///< Mutex for thread-safe access. - std::unordered_map> - values_; ///< Store values by thread ID. -}; - -template -ThreadLocal::ThreadLocal(InitializerFn initializer) - : initializer_(std::move(initializer)) {} - -template -auto ThreadLocal::get() -> T& { - auto tid = std::this_thread::get_id(); - std::unique_lock lock(mutex_); - auto [it, inserted] = values_.try_emplace(tid); - if (inserted && initializer_) { - it->second = std::make_optional(initializer_()); - } - lock.unlock(); - return it->second.value(); -} - -template -auto ThreadLocal::operator->() -> T* { - return &get(); -} - -template -auto ThreadLocal::operator->() const -> const T* { - return &get(); -} - -template -auto ThreadLocal::operator*() -> T& { - return get(); -} - -template -auto ThreadLocal::operator*() const -> const T& { - return get(); -} - -template -void ThreadLocal::reset(T value) { - auto tid = std::this_thread::get_id(); - std::unique_lock lock(mutex_); - values_[tid] = std::make_optional(std::move(value)); -} - -template -auto ThreadLocal::hasValue() const -> bool { - auto tid = std::this_thread::get_id(); - std::shared_lock lock(mutex_); - auto it = values_.find(tid); - return it != values_.end() && it->second.has_value(); -} - -template -auto ThreadLocal::getPointer() -> T* { - auto tid = std::this_thread::get_id(); - std::shared_lock lock(mutex_); - auto it = values_.find(tid); - return it != values_.end() && it->second.has_value() ? &it->second.value() - : nullptr; -} - -template -auto ThreadLocal::getPointer() const -> const T* { - auto tid = std::this_thread::get_id(); - std::shared_lock lock(mutex_); - auto it = values_.find(tid); - return it != values_.end() && it->second.has_value() ? &it->second.value() - : nullptr; -} - -template -template Func> -void ThreadLocal::forEach(Func&& func) { - std::unique_lock lock(mutex_); - for (auto& [tid, value_opt] : values_) { - if (value_opt.has_value()) { - func(value_opt.value()); - } - } -} - -template -void ThreadLocal::clear() { - std::unique_lock lock(mutex_); - values_.clear(); -} - -} // namespace atom::async - -#endif // ATOM_ASYNC_THREADLOCAL_HPP diff --git a/src/atom/async/timer.cpp b/src/atom/async/timer.cpp deleted file mode 100644 index 85fe72e3..00000000 --- a/src/atom/async/timer.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/* - * timer.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-12-14 - -Description: Timer class for C++ - -**************************************************/ - -#include "timer.hpp" -#include -#include "error/exception.hpp" - -namespace atom::async { -TimerTask::TimerTask(std::function func, unsigned int delay, - int repeatCount, int priority) - : m_func(func), - m_delay(delay), - m_repeatCount(repeatCount), - m_priority(priority) { - m_nextExecutionTime = - std::chrono::steady_clock::now() + std::chrono::milliseconds(m_delay); -} - -auto TimerTask::operator<(const TimerTask &other) const -> bool { - if (m_priority != other.m_priority) { - return m_priority > other.m_priority; - } - return m_nextExecutionTime > other.m_nextExecutionTime; -} - -void TimerTask::run() { - try { - m_func(); - } catch (const std::exception &e) { - THROW_RUNTIME_ERROR("Failed to run timer task: ", e.what()); - } - if (m_repeatCount > 0) { - --m_repeatCount; - if (m_repeatCount > 0) { - m_nextExecutionTime = std::chrono::steady_clock::now() + - std::chrono::milliseconds(m_delay); - } - } -} - -std::chrono::steady_clock::time_point TimerTask::getNextExecutionTime() const { - return m_nextExecutionTime; -} - -Timer::Timer() : m_stop(false), m_paused(false) { - m_thread = std::thread(&Timer::run, this); -} - -Timer::~Timer() { - stop(); - if (m_thread.joinable()) { - m_thread.join(); - } -} - -void Timer::cancelAllTasks() { - std::unique_lock lock(m_mutex); - m_taskQueue = std::priority_queue(); - m_cond.notify_all(); -} - -void Timer::pause() { m_paused = true; } - -void Timer::resume() { - m_paused = false; - m_cond.notify_all(); -} - -void Timer::stop() { - m_stop = true; - m_cond.notify_all(); -} - -auto Timer::now() const -> std::chrono::steady_clock::time_point { - return std::chrono::steady_clock::now(); -} - -void Timer::run() { - while (!m_stop) { - std::unique_lock lock(m_mutex); - while (!m_stop && m_paused && m_taskQueue.empty()) { - m_cond.wait(lock, [&]() { - return m_stop || !m_paused || !m_taskQueue.empty(); - }); - } - if (m_stop) { - break; - } - if (!m_taskQueue.empty()) { - TimerTask task = m_taskQueue.top(); - if (std::chrono::steady_clock::now() >= - task.getNextExecutionTime()) { - m_taskQueue.pop(); - lock.unlock(); - task.run(); - if (task.m_repeatCount > 0) { - std::unique_lock lock(m_mutex); - m_taskQueue.emplace(task.m_func, task.m_delay, - task.m_repeatCount, task.m_priority); - } - if (m_callback) { - m_callback(); - } - } else { - m_cond.wait_until(lock, task.getNextExecutionTime()); - } - } - } -} - -auto Timer::getTaskCount() const -> size_t { - std::unique_lock lock(m_mutex); - return m_taskQueue.size(); -} -} // namespace atom::async diff --git a/src/atom/async/timer.hpp b/src/atom/async/timer.hpp deleted file mode 100644 index b0563b5a..00000000 --- a/src/atom/async/timer.hpp +++ /dev/null @@ -1,235 +0,0 @@ -/* - * timer.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-12-14 - -Description: Timer class for C++ - -**************************************************/ - -#ifndef ATOM_ASYNC_TIMER_HPP -#define ATOM_ASYNC_TIMER_HPP - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace atom::async { -/** - * @brief Represents a task to be scheduled and executed by the Timer. - */ -class TimerTask { -public: - /** - * @brief Constructor for TimerTask. - * - * @param func The function to be executed when the task runs. - * @param delay The delay in milliseconds before the first execution. - * @param repeatCount The number of times the task should be repeated. -1 - * for infinite repetition. - * @param priority The priority of the task. - */ - explicit TimerTask(std::function func, unsigned int delay, - int repeatCount, int priority); - - /** - * @brief Comparison operator for comparing two TimerTask objects based on - * their next execution time. - * - * @param other Another TimerTask object to compare to. - * @return True if this task's next execution time is earlier than the other - * task's next execution time. - */ - auto operator<(const TimerTask &other) const -> bool; - - /** - * @brief Executes the task's associated function. - */ - void run(); - - /** - * @brief Get the next scheduled execution time of the task. - * - * @return The steady clock time point representing the next execution time. - */ - auto getNextExecutionTime() const -> std::chrono::steady_clock::time_point; - - std::function m_func; ///< The function to be executed. - unsigned int m_delay; ///< The delay before the first execution. - int m_repeatCount; ///< The number of repetitions remaining. - int m_priority; ///< The priority of the task. - std::chrono::steady_clock::time_point - m_nextExecutionTime; ///< The next execution time. -}; - -/** - * @brief Represents a timer for scheduling and executing tasks. - */ -class Timer { -public: - /** - * @brief Constructor for Timer. - */ - Timer(); - - /** - * @brief Destructor for Timer. - */ - ~Timer(); - - /** - * @brief Schedules a task to be executed once after a specified delay. - * - * @tparam Function The type of the function to be executed. - * @tparam Args The types of the arguments to be passed to the function. - * @param func The function to be executed. - * @param delay The delay in milliseconds before the function is executed. - * @param args The arguments to be passed to the function. - * @return A future representing the result of the function execution. - */ - template - [[nodiscard]] auto setTimeout(Function &&func, unsigned int delay, - Args &&...args) - -> std::future::type>; - - /** - * @brief Schedules a task to be executed repeatedly at a specified - * interval. - * - * @tparam Function The type of the function to be executed. - * @tparam Args The types of the arguments to be passed to the function. - * @param func The function to be executed. - * @param interval The interval in milliseconds between executions. - * @param repeatCount The number of times the function should be repeated. - * -1 for infinite repetition. - * @param priority The priority of the task. - * @param args The arguments to be passed to the function. - */ - template - void setInterval(Function &&func, unsigned int interval, int repeatCount, - int priority, Args &&...args); - - [[nodiscard]] auto now() const -> std::chrono::steady_clock::time_point; - - /** - * @brief Cancels all scheduled tasks. - */ - void cancelAllTasks(); - - /** - * @brief Pauses the execution of scheduled tasks. - */ - void pause(); - - /** - * @brief Resumes the execution of scheduled tasks after pausing. - */ - void resume(); - - /** - * @brief Stops the timer and cancels all tasks. - */ - void stop(); - - /** - * @brief Sets a callback function to be called when a task is executed. - * - * @tparam Function The type of the callback function. - * @param func The callback function to be set. - */ - template - void setCallback(Function &&func); - - [[nodiscard]] auto getTaskCount() const -> size_t; - -private: - /** - * @brief Adds a task to the task queue. - * - * @tparam Function The type of the function to be executed. - * @tparam Args The types of the arguments to be passed to the function. - * @param func The function to be executed. - * @param delay The delay in milliseconds before the function is executed. - * @param repeatCount The number of repetitions remaining. - * @param priority The priority of the task. - * @param args The arguments to be passed to the function. - * @return A future representing the result of the function execution. - */ - template - auto addTask(Function &&func, unsigned int delay, int repeatCount, - int priority, Args &&...args) - -> std::future::type>; - - /** - * @brief Main execution loop for processing and running tasks. - */ - void run(); - -#if _cplusplus >= 202203L - std::jthread - m_thread; ///< The thread for running the timer loop (C++20 or later). -#else - std::thread m_thread; ///< The thread for running the timer loop. -#endif - std::priority_queue - m_taskQueue; ///< The priority queue for scheduled tasks. - mutable std::mutex m_mutex; ///< Mutex for thread synchronization. - std::condition_variable - m_cond; ///< Condition variable for thread synchronization. - std::function m_callback; ///< The callback function to be called - ///< when a task is executed. - bool m_stop; ///< Flag indicating whether the timer should stop. - bool m_paused; ///< Flag indicating whether the timer is paused. -}; - -template -auto Timer::setTimeout(Function &&func, unsigned int delay, Args &&...args) - -> std::future::type> { - using ReturnType = typename std::result_of::type; - auto task = std::make_shared>( - std::bind(std::forward(func), std::forward(args)...)); - std::future result = task->get_future(); - std::unique_lock lock(m_mutex); - m_taskQueue.emplace([task]() { (*task)(); }, delay, 1, 0); - m_cond.notify_all(); - return result; -} - -template -void Timer::setInterval(Function &&func, unsigned int interval, int repeatCount, - int priority, Args &&...args) { - addTask(std::forward(func), interval, repeatCount, priority, - std::forward(args)...); -} - -template -std::future::type> Timer::addTask( - Function &&func, unsigned int delay, int repeatCount, int priority, - Args &&...args) { - using ReturnType = typename std::result_of::type; - auto task = std::make_shared>( - std::bind(std::forward(func), std::forward(args)...)); - std::future result = task->get_future(); - std::unique_lock lock(m_mutex); - m_taskQueue.emplace([task]() { (*task)(); }, delay, repeatCount, priority); - m_cond.notify_all(); - return result; -} - -template -void Timer::setCallback(Function &&func) { - m_callback = std::forward(func); -} -} // namespace atom::async - -#endif diff --git a/src/atom/async/trigger.hpp b/src/atom/async/trigger.hpp deleted file mode 100644 index 7719855e..00000000 --- a/src/atom/async/trigger.hpp +++ /dev/null @@ -1,236 +0,0 @@ -/* - * trigger.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-12-14 - -Description: Trigger class for C++ - -**************************************************/ - -#ifndef ATOM_ASYNC_TRIGGER_HPP -#define ATOM_ASYNC_TRIGGER_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace atom::async { - -/** - * @brief Concept to check if a type can be invoked with a given parameter type. - * - * This concept checks if a std::function taking a parameter of type ParamType - * is invocable with an instance of ParamType. - * - * @tparam ParamType The parameter type to check for. - */ -template -concept CallableWithParam = requires(ParamType p) { - std::invoke(std::declval>(), p); -}; - -/** - * @brief A class for handling event-driven callbacks with parameter support. - * - * This class allows users to register, unregister, and trigger callbacks for - * different events, providing a mechanism to manage callbacks with priorities - * and delays. - * - * @tparam ParamType The type of parameter to be passed to the callbacks. - */ -template - requires CallableWithParam -class Trigger { -public: - using Callback = std::function; ///< Type alias for the - ///< callback function. - - /// Enumeration for callback priority levels. - enum class CallbackPriority { High, Normal, Low }; - - /** - * @brief Registers a callback for a specified event. - * - * @param event The name of the event for which the callback is registered. - * @param callback The callback function to be executed when the event is - * triggered. - * @param priority The priority level of the callback (default is Normal). - */ - void registerCallback(const std::string& event, Callback callback, - CallbackPriority priority = CallbackPriority::Normal); - - /** - * @brief Unregisters a callback for a specified event. - * - * @param event The name of the event from which the callback is - * unregistered. - * @param callback The callback function to be removed. - * - * If the callback is not registered for the event, no action is taken. - */ - void unregisterCallback(const std::string& event, Callback callback); - - /** - * @brief Triggers the callbacks associated with a specified event. - * - * @param event The name of the event to trigger. - * @param param The parameter to be passed to the callbacks. - * - * All callbacks registered for the event are executed with the provided - * parameter. - */ - void trigger(const std::string& event, const ParamType& param); - - /** - * @brief Schedules a trigger for a specified event after a delay. - * - * @param event The name of the event to trigger. - * @param param The parameter to be passed to the callbacks. - * @param delay The delay after which to trigger the event, specified in - * milliseconds. - */ - void scheduleTrigger(const std::string& event, const ParamType& param, - std::chrono::milliseconds delay); - - /** - * @brief Schedules an asynchronous trigger for a specified event. - * - * @param event The name of the event to trigger. - * @param param The parameter to be passed to the callbacks. - * @return A future representing the ongoing operation to trigger the event. - */ - auto scheduleAsyncTrigger(const std::string& event, - const ParamType& param) -> std::future; - - /** - * @brief Cancels the scheduled trigger for a specified event. - * - * @param event The name of the event for which to cancel the trigger. - * - * This will prevent the execution of any scheduled callbacks for the event. - */ - void cancelTrigger(const std::string& event); - - /** - * @brief Cancels all scheduled triggers. - * - * This method clears all scheduled callbacks for any events. - */ - void cancelAllTriggers(); - -private: - std::mutex m_mutex_; ///< Mutex for thread-safe access to the internal - ///< callback structures. - std::unordered_map>> - m_callbacks_; ///< Map of events to their callbacks and priorities. -}; - -template - requires CallableWithParam -void Trigger::registerCallback(const std::string& event, - Callback callback, - CallbackPriority priority) { - std::scoped_lock lock(m_mutex_); - auto& callbacks = m_callbacks_[event]; - if (auto pos = std::ranges::find_if( - callbacks, - [&callback](const auto& cb) { - return cb.second.target_type() == callback.target_type() && - cb.second.template target() == - callback.template target(); - }); - pos != callbacks.end()) { - pos->first = priority; - } else { - callbacks.emplace_back(priority, callback); - } -} - -template - requires CallableWithParam -void Trigger::unregisterCallback(const std::string& event, - Callback callback) { - std::scoped_lock lock(m_mutex_); - auto& callbacks = m_callbacks_[event]; - std::erase_if(callbacks, [&callback](const auto& cb) { - return cb.second.target_type() == callback.target_type() && - cb.second.template target() == - callback.template target(); - }); -} - -template - requires CallableWithParam -void Trigger::trigger(const std::string& event, - const ParamType& param) { - std::scoped_lock lock(m_mutex_); - auto& callbacks = m_callbacks_[event]; - std::ranges::sort(callbacks, [](const auto& cb1, const auto& cb2) { - return static_cast(cb1.first) > static_cast(cb2.first); - }); - for (auto& [priority, callback] : callbacks) { - try { - callback(param); - } catch (...) { - // Swallow exceptions in callbacks - } - } -} - -template - requires CallableWithParam -void Trigger::scheduleTrigger(const std::string& event, - const ParamType& param, - std::chrono::milliseconds delay) { - std::jthread([this, event, param, delay]() { - std::this_thread::sleep_for(delay); - trigger(event, param); - }).detach(); -} - -template - requires CallableWithParam -auto Trigger::scheduleAsyncTrigger( - const std::string& event, const ParamType& param) -> std::future { - auto promise = std::make_shared>(); - auto future = promise->get_future(); - std::jthread([this, event, param, promise]() mutable { - try { - trigger(event, param); - promise->set_value(); - } catch (...) { - promise->set_exception(std::current_exception()); - } - }).detach(); - return future; -} - -template - requires CallableWithParam -void Trigger::cancelTrigger(const std::string& event) { - std::scoped_lock lock(m_mutex_); - m_callbacks_.erase(event); -} - -template - requires CallableWithParam -void Trigger::cancelAllTriggers() { - std::scoped_lock lock(m_mutex_); - m_callbacks_.clear(); -} - -} // namespace atom::async - -#endif // ATOM_ASYNC_TRIGGER_HPP diff --git a/src/atom/async/xmake.lua b/src/atom/async/xmake.lua deleted file mode 100644 index 6af35683..00000000 --- a/src/atom/async/xmake.lua +++ /dev/null @@ -1,48 +0,0 @@ --- xmake.lua for Atom-Async --- This project is licensed under the terms of the GPL3 license. --- --- Project Name: Atom-Async --- Description: Async Implementation of Lithium Server and Driver --- Author: Max Qian --- License: GPL3 - -add_rules("mode.debug", "mode.release") - --- Set project name -set_project("atom-async") - --- Set languages -set_languages("cxx17") - --- Set source files -add_files("lock.cpp", "timer.cpp") - --- Set header files -add_headerfiles("*.hpp", "*.inl") - --- Set link libraries -add_linkdirs("path/to/loguru/library") -- Replace with actual path to loguru library -add_links("loguru") - --- Build static library -target("atom-async") - set_kind("static") - add_deps("atom-async-object") - add_files("lock.cpp", "timer.cpp") - add_headerfiles("*.hpp", "*.inl") - add_includedirs(".") - add_linkdirs(".") - add_links("loguru") - --- Build object library -target("atom-async-object") - set_kind("object") - add_files("lock.cpp", "timer.cpp") - add_headerfiles("*.hpp", "*.inl") - add_includedirs(".") - add_linkdirs(".") - add_links("loguru") - --- Install target -set_configvar("xmake", "installdir", "/path/to/installation/directory") -- Replace with actual installation directory -add_installfiles("build/lib/*.a", {prefixdir = "lib"}) diff --git a/src/atom/components/CMakeLists.txt b/src/atom/components/CMakeLists.txt deleted file mode 100644 index e0ed6b83..00000000 --- a/src/atom/components/CMakeLists.txt +++ /dev/null @@ -1,54 +0,0 @@ -# CMakeLists.txt for Atom-Component -# This project adheres to the GPL3 license. -# -# Project Details: -# Name: Atom-Component -# Description: Central component library for the Atom framework -# Author: Max Qian -# License: GPL3 - -cmake_minimum_required(VERSION 3.20) -project(atom-component LANGUAGES C CXX) -# Source files with project-specific prefix -set(${PROJECT_NAME}_SOURCES - component.cpp - dispatch.cpp - registry.cpp - var.cpp -) - -set(${PROJECT_NAME}_HEADERS - component.hpp - dispatch.hpp - types.hpp - var.hpp -) - -# Dependencies -set(${PROJECT_NAME}_LIBS - loguru - atom-error - atom-type - atom-utils -) - -# Include directories -include_directories(.) - -# Object library for headers and sources with project prefix -add_library(${PROJECT_NAME}_OBJECT OBJECT ${${PROJECT_NAME}_HEADERS} ${${PROJECT_NAME}_SOURCES}) -# set_target_properties(${PROJECT_NAME}_OBJECT PROPERTIES LINKER_LANGUAGE CXX) - -# Static library target -add_library(${PROJECT_NAME} SHARED $) - -# Set project properties and definitions -# set_property(TARGET ${PROJECT_NAME} PROPERTY POSITION_INDEPENDENT_CODE ON) - -# Link dependencies to the main target -target_link_libraries(${PROJECT_NAME} PRIVATE ${${PROJECT_NAME}_LIBS} ${CMAKE_THREAD_LIBS_INIT}) - -# Install rules -install(TARGETS ${PROJECT_NAME} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -) diff --git a/src/atom/components/component.cpp b/src/atom/components/component.cpp deleted file mode 100644 index ca862f8c..00000000 --- a/src/atom/components/component.cpp +++ /dev/null @@ -1,236 +0,0 @@ -/* - * component.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-12-26 - -Description: Basic Component Definition - -**************************************************/ - -#include "component.hpp" - -#include "atom/log/loguru.hpp" - -Component::Component(std::string name) : m_name_(std::move(name)) { - LOG_F(INFO, "Component created: {}", m_name_); -} - -auto Component::getInstance() const -> std::weak_ptr { - LOG_SCOPE_FUNCTION(INFO); - return shared_from_this(); -} - -auto Component::initialize() -> bool { - LOG_SCOPE_FUNCTION(INFO); - LOG_F(INFO, "Initializing component: {}", m_name_); - return true; -} - -auto Component::destroy() -> bool { - LOG_SCOPE_FUNCTION(INFO); - LOG_F(INFO, "Destroying component: {}", m_name_); - return true; -} - -auto Component::getName() const -> std::string { - LOG_SCOPE_FUNCTION(INFO); - return m_name_; -} - -auto Component::getTypeInfo() const -> atom::meta::TypeInfo { - LOG_SCOPE_FUNCTION(INFO); - return m_typeInfo_; -} - -void Component::setTypeInfo(atom::meta::TypeInfo typeInfo) { - LOG_SCOPE_FUNCTION(INFO); - m_typeInfo_ = typeInfo; -} - -void Component::addAlias(const std::string& name, - const std::string& alias) const { - LOG_SCOPE_FUNCTION(INFO); - LOG_F(INFO, "Adding alias '{}' for command '{}'", alias, name); - m_CommandDispatcher_->addAlias(name, alias); -} - -void Component::addGroup(const std::string& name, - const std::string& group) const { - LOG_SCOPE_FUNCTION(INFO); - LOG_F(INFO, "Adding command '{}' to group '{}'", name, group); - m_CommandDispatcher_->addGroup(name, group); -} - -void Component::setTimeout(const std::string& name, - std::chrono::milliseconds timeout) const { - LOG_SCOPE_FUNCTION(INFO); - LOG_F(INFO, "Setting timeout for command '{}': {} ms", name, - timeout.count()); - m_CommandDispatcher_->setTimeout(name, timeout); -} - -void Component::removeCommand(const std::string& name) const { - LOG_SCOPE_FUNCTION(INFO); - LOG_F(INFO, "Removing command '{}'", name); - m_CommandDispatcher_->removeCommand(name); -} - -auto Component::getCommandsInGroup(const std::string& group) const - -> std::vector { - LOG_SCOPE_FUNCTION(INFO); - return m_CommandDispatcher_->getCommandsInGroup(group); -} - -auto Component::getCommandDescription(const std::string& name) const - -> std::string { - LOG_SCOPE_FUNCTION(INFO); - return m_CommandDispatcher_->getCommandDescription(name); -} - -#if ENABLE_FASTHASH -emhash::HashSet Component::getCommandAliases( - const std::string& name) const -#else -auto Component::getCommandAliases(const std::string& name) const - -> std::unordered_set -#endif -{ - LOG_SCOPE_FUNCTION(INFO); - return m_CommandDispatcher_->getCommandAliases(name); -} - -auto Component::getCommandArgAndReturnType(const std::string& name) - -> std::pair, std::string> { - LOG_SCOPE_FUNCTION(INFO); - return m_CommandDispatcher_->getCommandArgAndReturnType(name); -} - -auto Component::getNeededComponents() -> std::vector { - LOG_SCOPE_FUNCTION(INFO); - return {}; -} - -void Component::addOtherComponent(const std::string& name, - const std::weak_ptr& component) { - LOG_SCOPE_FUNCTION(INFO); - if (m_OtherComponents_.contains(name)) { - LOG_F(ERROR, "Component '{}' already exists", name); - THROW_OBJ_ALREADY_EXIST(name); - } - LOG_F(INFO, "Adding other component '{}'", name); - m_OtherComponents_[name] = component; -} - -void Component::removeOtherComponent(const std::string& name) { - LOG_SCOPE_FUNCTION(INFO); - LOG_F(INFO, "Removing other component '{}'", name); - m_OtherComponents_.erase(name); -} - -void Component::clearOtherComponents() { - LOG_SCOPE_FUNCTION(INFO); - LOG_F(INFO, "Clearing all other components"); - m_OtherComponents_.clear(); -} - -auto Component::getOtherComponent(const std::string& name) - -> std::weak_ptr { - LOG_SCOPE_FUNCTION(INFO); - if (m_OtherComponents_.contains(name)) { - return m_OtherComponents_[name]; - } - return {}; -} - -bool Component::has(const std::string& name) const { - LOG_SCOPE_FUNCTION(INFO); - return m_CommandDispatcher_->has(name); -} - -bool Component::hasType(std::string_view name) const { - LOG_SCOPE_FUNCTION(INFO); - if (auto it = m_classes_.find(name); it != m_classes_.end()) { - return true; - } - return false; -} - -auto Component::getAllCommands() const -> std::vector { - LOG_SCOPE_FUNCTION(INFO); - if (m_CommandDispatcher_ == nullptr) { - LOG_F(ERROR, "Component command dispatch is not initialized"); - THROW_OBJ_UNINITIALIZED( - "Component command dispatch is not initialized"); - } - return m_CommandDispatcher_->getAllCommands(); -} - -auto Component::getRegisteredTypes() const -> std::vector { - LOG_SCOPE_FUNCTION(INFO); - return m_TypeCaster_->getRegisteredTypes(); -} - -auto Component::runCommand(const std::string& name, - const std::vector& args) -> std::any { - LOG_SCOPE_FUNCTION(INFO); - auto cmd = getAllCommands(); - - if (auto it = std::ranges::find(cmd, name); it != cmd.end()) { - LOG_F(INFO, "Running command '{}'", name); - return m_CommandDispatcher_->dispatch(name, args); - } - for (const auto& [key, value] : m_OtherComponents_) { - if (!value.expired() && value.lock()->has(name)) { - LOG_F(INFO, "Running command '{}' in other component '{}'", name, - key); - return value.lock()->dispatch(name, args); - } - LOG_F(ERROR, "Component '{}' has expired", key); - m_OtherComponents_.erase(key); - } - - LOG_F(ERROR, "Command '{}' not found", name); - THROW_EXCEPTION("Component ", name, " not found"); -} - -void Component::doc(const std::string& description) { - LOG_SCOPE_FUNCTION(INFO); - m_doc_ = description; -} - -auto Component::getDoc() const -> std::string { - LOG_SCOPE_FUNCTION(INFO); - return m_doc_; -} - -void Component::defClassConversion( - const std::shared_ptr& conversion) { - LOG_SCOPE_FUNCTION(INFO); - m_TypeConverter_->addConversion(conversion); -} - -auto Component::hasVariable(const std::string& name) const -> bool { - LOG_SCOPE_FUNCTION(INFO); - return m_VariableManager_->has(name); -} - -auto Component::getVariableDescription(const std::string& name) const - -> std::string { - LOG_SCOPE_FUNCTION(INFO); - return m_VariableManager_->getDescription(name); -} - -auto Component::getVariableAlias(const std::string& name) const -> std::string { - LOG_SCOPE_FUNCTION(INFO); - return m_VariableManager_->getAlias(name); -} - -auto Component::getVariableGroup(const std::string& name) const -> std::string { - LOG_SCOPE_FUNCTION(INFO); - return m_VariableManager_->getGroup(name); -} diff --git a/src/atom/components/component.hpp b/src/atom/components/component.hpp deleted file mode 100644 index d33abe63..00000000 --- a/src/atom/components/component.hpp +++ /dev/null @@ -1,748 +0,0 @@ -/* - * component.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-12-26 - -Description: Basic Component Definition - -**************************************************/ - -#ifndef ATOM_COMPONENT_HPP -#define ATOM_COMPONENT_HPP - -#include -#include -#include -#include -#include - -#include "dispatch.hpp" -#include "module_macro.hpp" -#include "var.hpp" - -#include "atom/function/concept.hpp" -#include "atom/function/constructor.hpp" -#include "atom/function/conversion.hpp" -#include "atom/function/func_traits.hpp" -#include "atom/function/type_caster.hpp" -#include "atom/function/type_info.hpp" -#include "atom/log/loguru.hpp" -#include "atom/type/pointer.hpp" - -class Component : public std::enable_shared_from_this { -public: - /** - * @brief Type definition for initialization function. - */ - using InitFunc = std::function; - - /** - * @brief Type definition for cleanup function. - */ - using CleanupFunc = std::function; - - /** - * @brief Constructs a new Component object. - */ - explicit Component(std::string name); - - /** - * @brief Destroys the Component object. - */ - virtual ~Component() = default; - - // ------------------------------------------------------------------- - // Inject methods - // ------------------------------------------------------------------- - - auto getInstance() const -> std::weak_ptr; - - auto getSharedInstance() -> std::shared_ptr { - return shared_from_this(); - } - - // ------------------------------------------------------------------- - // Common methods - // ------------------------------------------------------------------- - - /** - * @brief Initializes the plugin. - * - * @return True if the plugin was initialized successfully, false otherwise. - * @note This function is called by the server when the plugin is loaded. - * @note This function should be overridden by the plugin. - */ - virtual auto initialize() -> bool; - - /** - * @brief Destroys the plugin. - * - * @return True if the plugin was destroyed successfully, false otherwise. - * @note This function is called by the server when the plugin is unloaded. - * @note This function should be overridden by the plugin. - * @note The plugin should not be used after this function is called. - * @note This is for the plugin to release any resources it has allocated. - */ - virtual auto destroy() -> bool; - - /** - * @brief Gets the name of the plugin. - * - * @return The name of the plugin. - */ - auto getName() const -> std::string; - - /** - * @brief Gets the type information of the plugin. - * - * @return The type information of the plugin. - */ - auto getTypeInfo() const -> atom::meta::TypeInfo; - - /** - * @brief Sets the type information of the plugin. - * - * @param typeInfo The type information of the plugin. - */ - void setTypeInfo(atom::meta::TypeInfo typeInfo); - - // ------------------------------------------------------------------- - // Variable methods - // ------------------------------------------------------------------- - - /** - * @brief Adds a variable to the component. - * @param name The name of the variable. - * @param initialValue The initial value of the variable. - * @param description The description of the variable. - * @param alias The alias of the variable. - * @param group The group of the variable. - */ - template - void addVariable(const std::string& name, T initialValue, - const std::string& description = "", - const std::string& alias = "", - const std::string& group = "") { - m_VariableManager_->addVariable(name, initialValue, description, alias, - group); - } - - /** - * @brief Sets the range of a variable. - * @param name The name of the variable. - * @param min The minimum value of the variable. - * @param max The maximum value of the variable. - */ - template - void setRange(const std::string& name, T min, T max) { - m_VariableManager_->setRange(name, min, max); - } - - /** - * @brief Sets the options of a variable. - * @param name The name of the variable. - * @param options The options of the variable. - */ - void setStringOptions(const std::string& name, - const std::vector& options) { - m_VariableManager_->setStringOptions(name, options); - } - - /** - * @brief Gets a variable by name. - * @param name The name of the variable. - * @return A shared pointer to the variable. - */ - template - auto getVariable(const std::string& name) -> std::shared_ptr> { - return m_VariableManager_->getVariable(name); - } - - /** - * @brief Gets a variable by name. - * @param name The name of the variable. - * @return A shared pointer to the variable. - */ - [[nodiscard]] auto hasVariable(const std::string& name) const -> bool; - - /** - * @brief Sets the value of a variable. - * @param name The name of the variable. - * @param newValue The new value of the variable. - * @note const char * is not equivalent to std::string, please use - * std::string - */ - template - void setValue(const std::string& name, T newValue) { - m_VariableManager_->setValue(name, newValue); - } - - /** - * @brief Gets the value of a variable. - * @param name The name of the variable. - * @return The value of the variable. - */ - auto getVariableNames() const -> std::vector; - - /** - * @brief Gets the description of a variable. - * @param name The name of the variable. - * @return The description of the variable. - */ - auto getVariableDescription(const std::string& name) const -> std::string; - - /** - * @brief Gets the alias of a variable. - * @param name The name of the variable. - * @return The alias of the variable. - */ - auto getVariableAlias(const std::string& name) const -> std::string; - - /** - * @brief Gets the group of a variable. - * @param name The name of the variable. - * @return The group of the variable. - */ - auto getVariableGroup(const std::string& name) const -> std::string; - - // ------------------------------------------------------------------- - // Function methods - // ------------------------------------------------------------------- - - void doc(const std::string& description); - - auto getDoc() const -> std::string; - - // ------------------------------------------------------------------- - // No Class - // ------------------------------------------------------------------- - - template - void def(const std::string& name, Callable&& func, - const std::string& group = "", - const std::string& description = ""); - - template - void def(const std::string& name, Ret (*func)(), - const std::string& group = "", - const std::string& description = ""); - - template - void def(const std::string& name, Ret (*func)(Args...), - const std::string& group = "", - const std::string& description = ""); - - // ------------------------------------------------------------------- - // Without instance - // ------------------------------------------------------------------- - -#define DEF_MEMBER_FUNC(cv_qualifier) \ - template \ - void def( \ - const std::string& name, Ret (Class::*func)(Args...) cv_qualifier, \ - const std::string& group = "", const std::string& description = ""); - - DEF_MEMBER_FUNC() // Non-const, non-volatile - DEF_MEMBER_FUNC(const) // Const - DEF_MEMBER_FUNC(volatile) // Volatile - DEF_MEMBER_FUNC(const volatile) // Const volatile - DEF_MEMBER_FUNC(noexcept) - DEF_MEMBER_FUNC(const noexcept) - DEF_MEMBER_FUNC(const volatile noexcept) - - template - void def(const std::string& name, VarType Class::*var, - const std::string& group = "", - const std::string& description = ""); - - // ------------------------------------------------------------------- - // With instance - // ------------------------------------------------------------------- - - template - requires Pointer || SmartPointer || - std::is_same_v> - void def(const std::string& name, Ret (Class::*func)(), - const InstanceType& instance, const std::string& group = "", - const std::string& description = ""); - -#define DEF_MEMBER_FUNC_WITH_INSTANCE(cv_qualifier) \ - template \ - requires Pointer || SmartPointer || \ - std::is_same_v> \ - void def(const std::string& name, \ - Ret (Class::*func)(Args...) cv_qualifier, \ - const InstanceType& instance, const std::string& group = "", \ - const std::string& description = ""); - - DEF_MEMBER_FUNC_WITH_INSTANCE() - DEF_MEMBER_FUNC_WITH_INSTANCE(const) - DEF_MEMBER_FUNC_WITH_INSTANCE(volatile) - DEF_MEMBER_FUNC_WITH_INSTANCE(const volatile) - DEF_MEMBER_FUNC_WITH_INSTANCE(noexcept) - DEF_MEMBER_FUNC_WITH_INSTANCE(const noexcept) - DEF_MEMBER_FUNC_WITH_INSTANCE(const volatile noexcept) - - template - requires Pointer || SmartPointer || - std::is_same_v> - void def(const std::string& name, MemberType Class::*var, - const InstanceType& instance, const std::string& group = "", - const std::string& description = ""); - - template - requires Pointer || SmartPointer || - std::is_same_v> - void def(const std::string& name, const MemberType Class::*var, - const InstanceType& instance, const std::string& group = "", - const std::string& description = ""); - - template - requires Pointer || SmartPointer || - std::is_same_v> - void def(const std::string& name, Ret (Class::*getter)() const, - void (Class::*setter)(Ret), const InstanceType& instance, - const std::string& group, const std::string& description); - - // Register a static member variable - template - void def(const std::string& name, MemberType* var, - const std::string& group = "", - const std::string& description = ""); - - // Register a const & static member variable - template - void def(const std::string& name, const MemberType* var, - const std::string& group = "", - const std::string& description = ""); - - template - void def(const std::string& name, const std::string& group = "", - const std::string& description = ""); - - template - void def(const std::string& name, const std::string& group = "", - const std::string& description = ""); - - template - void defConstructor(const std::string& name, const std::string& group = "", - const std::string& description = ""); - - template - void defDefaultConstructor(const std::string& name, - const std::string& group = "", - const std::string& description = ""); - - template - void defType(std::string_view name, const std::string& group = "", - const std::string& description = ""); - - template - void defEnum(const std::string& name, - const std::unordered_map& enumMap); - - template - void defConversion(std::function func); - - template - void defBaseClass(); - - void defClassConversion( - const std::shared_ptr& conversion); - - void addAlias(const std::string& name, const std::string& alias) const; - - void addGroup(const std::string& name, const std::string& group) const; - - void setTimeout(const std::string& name, - std::chrono::milliseconds timeout) const; - - template - auto dispatch(const std::string& name, Args&&... args) -> std::any { - return m_CommandDispatcher_->dispatch(name, - std::forward(args)...); - } - - auto dispatch(const std::string& name, - const std::vector& args) const -> std::any { - return m_CommandDispatcher_->dispatch(name, args); - } - - [[nodiscard]] auto has(const std::string& name) const -> bool; - - [[nodiscard]] auto hasType(std::string_view name) const -> bool; - - template - [[nodiscard]] auto hasConversion() const -> bool; - - void removeCommand(const std::string& name) const; - - auto getCommandsInGroup(const std::string& group) const - -> std::vector; - - auto getCommandDescription(const std::string& name) const -> std::string; - - auto getCommandArgAndReturnType(const std::string& name) - -> std::pair, std::string>; - -#if ENABLE_FASTHASH - emhash::HashSet getCommandAliases( - const std::string& name) const; -#else - auto getCommandAliases(const std::string& name) const - -> std::unordered_set; -#endif - - auto getAllCommands() const -> std::vector; - - auto getRegisteredTypes() const -> std::vector; - - // ------------------------------------------------------------------- - // Other Components methods - // ------------------------------------------------------------------- - /** - * @note This method is not thread-safe. And we must make sure the pointer - * is valid. The PointerSentinel will help you to avoid this problem. We - * will directly get the std::weak_ptr from the pointer. - */ - - /** - * @return The names of the components that are needed by this component. - * @note This will be called when the component is initialized. - */ - static auto getNeededComponents() -> std::vector; - - void addOtherComponent(const std::string& name, - const std::weak_ptr& component); - - void removeOtherComponent(const std::string& name); - - void clearOtherComponents(); - - auto getOtherComponent(const std::string& name) -> std::weak_ptr; - - auto runCommand(const std::string& name, - const std::vector& args) -> std::any; - - InitFunc initFunc; /**< The initialization function for the component. */ - CleanupFunc cleanupFunc; /**< The cleanup function for the component. */ - -private: - std::string m_name_; - std::string m_doc_; - std::string m_configPath_; - std::string m_infoPath_; - atom::meta::TypeInfo m_typeInfo_{atom::meta::userType()}; - std::unordered_map m_classes_; - - ///< managing commands. - std::shared_ptr m_VariableManager_{ - std::make_shared()}; ///< The variable registry for - ///< managing variables. - - std::unordered_map> - m_OtherComponents_; - - std::shared_ptr m_TypeCaster_{ - atom::meta::TypeCaster::createShared()}; - std::shared_ptr m_TypeConverter_{ - atom::meta::TypeConversions::createShared()}; - - std::shared_ptr m_CommandDispatcher_{ - std::make_shared( - m_TypeCaster_)}; ///< The command dispatcher for -}; - -template -auto Component::hasConversion() const -> bool { - if constexpr (std::is_same_v) { - return true; - } - return m_TypeConverter_->canConvert( - atom::meta::userType(), - atom::meta::userType()); -} - -template -void Component::defType(std::string_view name, - [[maybe_unused]] const std::string& group, - [[maybe_unused]] const std::string& description) { - m_classes_[name] = atom::meta::userType(); - m_TypeCaster_->registerType(std::string(name)); -} - -template -void Component::defConversion(std::function func) { - static_assert(!std::is_same_v, - "SourceType and DestinationType must be not the same"); - m_TypeCaster_->registerConversion(func); -} - -template -void Component::defBaseClass() { - static_assert(std::is_base_of_v, - "Derived must be derived from Base"); - m_TypeConverter_->addBaseClass(); -} - -template -void Component::def(const std::string& name, Callable&& func, - const std::string& group, const std::string& description) { - using Traits = atom::meta::FunctionTraits; - - m_CommandDispatcher_->def( - name, group, description, - std::function(std::forward(func))); -} - -template -void Component::def(const std::string& name, Ret (*func)(), - const std::string& group, const std::string& description) { - m_CommandDispatcher_->def(name, group, description, - std::function(func)); -} - -template -void Component::def(const std::string& name, Ret (*func)(Args...), - const std::string& group, const std::string& description) { - m_CommandDispatcher_->def(name, group, description, - std::function([func](Args... args) { - return func(std::forward(args)...); - })); -} - -#define DEF_MEMBER_FUNC_IMPL(cv_qualifier) \ - template \ - void Component::def( \ - const std::string& name, Ret (Class::*func)(Args...) cv_qualifier, \ - const std::string& group, const std::string& description) { \ - auto boundFunc = atom::meta::bindMemberFunction(func); \ - m_CommandDispatcher_->def( \ - name, group, description, \ - std::function, Args...)>( \ - [boundFunc](std::reference_wrapper instance, \ - Args... args) -> Ret { \ - return boundFunc(instance, std::forward(args)...); \ - })); \ - } - -DEF_MEMBER_FUNC_IMPL() -DEF_MEMBER_FUNC_IMPL(const) -DEF_MEMBER_FUNC_IMPL(volatile) -DEF_MEMBER_FUNC_IMPL(const volatile) -DEF_MEMBER_FUNC_IMPL(noexcept) -DEF_MEMBER_FUNC_IMPL(const noexcept) -DEF_MEMBER_FUNC_IMPL(const volatile noexcept) - -template - requires Pointer || SmartPointer || - std::is_same_v> -void Component::def(const std::string& name, Ret (Class::*func)(), - const InstanceType& instance, const std::string& group, - const std::string& description) { - m_CommandDispatcher_->def(name, group, description, - std::function([instance, func]() { - return std::invoke(func, instance.get()); - })); -} - -template - requires Pointer || SmartPointer || - std::is_same_v> -void Component::def(const std::string& name, Ret (Class::*func)(Args...), - const InstanceType& instance, const std::string& group, - const std::string& description) { - m_CommandDispatcher_->def( - name, group, description, - std::function([instance, func](Args... args) { - return std::invoke(func, instance.get(), - std::forward(args)...); - })); -} - -template - requires Pointer || SmartPointer || - std::is_same_v> -void Component::def(const std::string& name, Ret (Class::*func)(Args...) const, - const InstanceType& instance, const std::string& group, - const std::string& description) { - if constexpr (SmartPointer || - std::is_same_v>) { - m_CommandDispatcher_->def( - name, group, description, - std::function([instance, func](Args... args) { - return std::invoke(func, instance.get(), - std::forward(args)...); - })); - } else { - m_CommandDispatcher_->def( - name, group, description, - std::function([instance, func](Args... args) { - return std::invoke(func, instance, std::forward(args)...); - })); - } -} - -template - requires Pointer || SmartPointer || - std::is_same_v> -void Component::def(const std::string& name, - Ret (Class::*func)(Args...) noexcept, - const InstanceType& instance, const std::string& group, - const std::string& description) { - m_CommandDispatcher_->def( - name, group, description, - std::function([instance, func](Args... args) { - return std::invoke(func, instance.get(), - std::forward(args)...); - })); -} - -template - requires Pointer || SmartPointer || - std::is_same_v> -void Component::def(const std::string& name, - Ret (Class::*func)(Args...) const noexcept, - const InstanceType& instance, const std::string& group, - const std::string& description) { - m_CommandDispatcher_->def( - name, group, description, - std::function([instance, func](Args... args) { - return std::invoke(func, instance.get(), - std::forward(args)...); - })); -} - -template - requires Pointer || SmartPointer || - std::is_same_v> -void Component::def(const std::string& name, MemberType Class::*member_var, - const InstanceType& instance, const std::string& group, - const std::string& description) { - m_CommandDispatcher_->def( - "get_" + name, group, "Get " + description, - std::function([instance, member_var]() { - return atom::meta::bindMemberVariable(member_var)(*instance); - })); - m_CommandDispatcher_->def( - "set_" + name, group, "Set " + description, - std::function( - [instance, member_var](MemberType value) { - atom::meta::bindMemberVariable(member_var)(*instance) = value; - })); -} - -template - requires Pointer || SmartPointer || - std::is_same_v> -void Component::def(const std::string& name, - const MemberType Class::*member_var, - const InstanceType& instance, const std::string& group, - const std::string& description) { - m_CommandDispatcher_->def( - "get_" + name, group, "Get " + description, - std::function([instance, member_var]() { - return atom::meta::bindMemberVariable(member_var)(*instance); - })); -} - -template - requires Pointer || SmartPointer || - std::is_same_v> -void Component::def(const std::string& name, Ret (Class::*getter)() const, - void (Class::*setter)(Ret), const InstanceType& instance, - const std::string& group, const std::string& description) { - m_CommandDispatcher_->def("get_" + name, group, "Get " + description, - std::function([instance, getter]() { - return std::invoke(getter, instance.get()); - })); - m_CommandDispatcher_->def( - "set_" + name, group, "Set " + description, - std::function([instance, setter](Ret value) { - std::invoke(setter, instance.get(), value); - })); -} - -template -void Component::def(const std::string& name, MemberType* member_var, - const std::string& group, const std::string& description) { - m_CommandDispatcher_->def( - name, group, description, - std::function( - [member_var]() -> MemberType& { return *member_var; })); -} - -template -void Component::def(const std::string& name, const MemberType* member_var, - const std::string& group, const std::string& description) { - m_CommandDispatcher_->def( - name, group, description, - std::function( - [member_var]() -> const MemberType& { return *member_var; })); -} - -template -void Component::defConstructor(const std::string& name, - const std::string& group, - const std::string& description) { - m_CommandDispatcher_->def(name, group, description, - std::function(Args...)>( - atom::meta::constructor())); -} - -template -void Component::defEnum( - const std::string& name, - const std::unordered_map& enumMap) { - m_TypeCaster_->registerType(std::string(name)); - - for (const auto& [key, value] : enumMap) { - m_TypeCaster_->registerEnumValue(name, key, value); - } - - defConversion( - [this, name](const std::any& enumValue) -> std::any { - const EnumType& value = std::any_cast(enumValue); - return m_TypeCaster_->enumToString(value, name); - }); - - defConversion( - [this, name](const std::any& strValue) -> std::any { - const std::string& value = std::any_cast(strValue); - return m_TypeCaster_->stringToEnum(value, name); - }); -} - -template -void Component::defDefaultConstructor(const std::string& name, - const std::string& group, - const std::string& description) { - m_CommandDispatcher_->def( - name, group, description, - std::function()>([]() -> std::shared_ptr { - return std::make_shared(); - })); -} - -template -void Component::def(const std::string& name, const std::string& group, - const std::string& description) { - auto constructor = atom::meta::defaultConstructor(); - def(name, constructor, group, description); -} - -template -void Component::def(const std::string& name, const std::string& group, - const std::string& description) { - auto constructor_ = atom::meta::constructor(); - def(name, constructor_, group, description); -} - -#endif diff --git a/src/atom/components/dispatch.cpp b/src/atom/components/dispatch.cpp deleted file mode 100644 index 50e7b3c6..00000000 --- a/src/atom/components/dispatch.cpp +++ /dev/null @@ -1,286 +0,0 @@ -#include "dispatch.hpp" - -#include "atom/log/loguru.hpp" -#include "atom/utils/to_string.hpp" - -void CommandDispatcher::checkPrecondition(const Command& cmd, - const std::string& name) { - LOG_SCOPE_FUNCTION(INFO); - if (!cmd.precondition.has_value()) { - LOG_F(INFO, "No precondition for command: {}", name); - return; - } - try { - std::invoke(cmd.precondition.value()); - LOG_F(INFO, "Precondition for command '{}' passed.", name); - } catch (const std::bad_function_call& e) { - LOG_F(INFO, "Bad precondition function invoke for command '{}': {}", - name, e.what()); - } catch (const std::bad_optional_access& e) { - LOG_F(INFO, "Bad precondition function access for command '{}': {}", - name, e.what()); - } catch (const std::exception& e) { - LOG_F(ERROR, "Precondition for command '{}' failed: {}", name, - e.what()); - THROW_DISPATCH_EXCEPTION("Precondition failed for command '{}': {}", - name, e.what()); - } -} - -void CommandDispatcher::checkPostcondition(const Command& cmd, - const std::string& name) { - LOG_SCOPE_FUNCTION(INFO); - if (!cmd.postcondition.has_value()) { - LOG_F(INFO, "No postcondition for command: {}", name); - return; - } - try { - std::invoke(cmd.postcondition.value()); - LOG_F(INFO, "Postcondition for command '{}' passed.", name); - } catch (const std::bad_function_call& e) { - LOG_F(INFO, "Bad postcondition function invoke for command '{}': {}", - name, e.what()); - } catch (const std::bad_optional_access& e) { - LOG_F(INFO, "Bad postcondition function access for command '{}': {}", - name, e.what()); - } catch (const std::exception& e) { - LOG_F(ERROR, "Postcondition for command '{}' failed: {}", name, - e.what()); - THROW_DISPATCH_EXCEPTION("Postcondition failed for command '{}': {}", - name, e.what()); - } -} - -auto CommandDispatcher::executeCommand( - const Command& cmd, const std::string& name, - const std::vector& args) -> std::any { - LOG_SCOPE_FUNCTION(INFO); - if (auto timeoutIt = timeoutMap_.find(name); - timeoutIt != timeoutMap_.end()) { - LOG_F(INFO, "Executing command '{}' with timeout.", name); - return executeWithTimeout(cmd, name, args, timeoutIt->second); - } - LOG_F(INFO, "Executing command '{}' without timeout.", name); - return executeWithoutTimeout(cmd, name, args); -} - -auto CommandDispatcher::executeWithTimeout( - const Command& cmd, const std::string& name, - const std::vector& args, - const std::chrono::duration& timeout) -> std::any { - LOG_SCOPE_FUNCTION(INFO); - auto future = std::async(std::launch::async, - [&]() { return executeFunctions(cmd, args); }); - - if (future.wait_for(timeout) == std::future_status::timeout) { - LOG_F(ERROR, "Command '{}' timed out.", name); - THROW_DISPATCH_TIMEOUT("Command '{}' timed out.", name); - } - - return future.get(); -} - -auto CommandDispatcher::executeWithoutTimeout( - const Command& cmd, const std::string& name, - const std::vector& args) -> std::any { - LOG_SCOPE_FUNCTION(INFO); - if (!args.empty()) { - if (args.size() == 1 && - args[0].type() == typeid(std::vector)) { - LOG_F(INFO, "Executing command '{}' with nested arguments.", name); - return executeFunctions( - cmd, std::any_cast>(args[0])); - } - } - - LOG_F(INFO, "Executing command '{}' with arguments.", name); - return executeFunctions(cmd, args); -} - -auto CommandDispatcher::executeFunctions( - const Command& cmd, const std::vector& args) -> std::any { - LOG_SCOPE_FUNCTION(INFO); - if (std::string funcHash = computeFunctionHash(args); - cmd.hash == funcHash) { - try { - LOG_F(INFO, "Executing function for command with hash: {}", - funcHash); - return std::invoke(cmd.func, args); - } catch (const std::bad_any_cast&) { - LOG_F(ERROR, "Failed to call function for command with hash: {}", - funcHash); - THROW_DISPATCH_EXCEPTION( - "Failed to call function for command with hash {}", funcHash); - } - } - - LOG_F(ERROR, "No matching overload found for command"); - THROW_INVALID_ARGUMENT("No matching overload found for command "); -} - -auto CommandDispatcher::computeFunctionHash(const std::vector& args) - -> std::string { - LOG_SCOPE_FUNCTION(INFO); - std::vector argTypes; - argTypes.reserve(args.size()); - for (const auto& arg : args) { - argTypes.emplace_back( - atom::meta::DemangleHelper::demangle(arg.type().name())); - } - auto hash = atom::utils::toString(atom::algorithm::computeHash(argTypes)); - LOG_F(INFO, "Computed function hash: {}", hash); - return hash; -} - -auto CommandDispatcher::has(const std::string& name) const -> bool { - LOG_SCOPE_FUNCTION(INFO); - if (commands_.find(name) != commands_.end()) { - LOG_F(INFO, "Command '{}' found.", name); - return true; - } - for (const auto& command : commands_) { - if (command.second.aliases.find(name) != command.second.aliases.end()) { - LOG_F(INFO, "Alias '{}' found for command '{}'.", name, - command.first); - return true; - } - } - LOG_F(INFO, "Command '{}' not found.", name); - return false; -} - -void CommandDispatcher::addAlias(const std::string& name, - const std::string& alias) { - LOG_SCOPE_FUNCTION(INFO); - auto it = commands_.find(name); - if (it != commands_.end()) { - it->second.aliases.insert(alias); - commands_[alias] = it->second; - groupMap_[alias] = groupMap_[name]; - LOG_F(INFO, "Alias '{}' added for command '{}'.", alias, name); - } else { - LOG_F(WARNING, "Command '{}' not found. Alias '{}' not added.", name, - alias); - } -} - -void CommandDispatcher::addGroup(const std::string& name, - const std::string& group) { - LOG_SCOPE_FUNCTION(INFO); - groupMap_[name] = group; - LOG_F(INFO, "Command '{}' added to group '{}'.", name, group); -} - -void CommandDispatcher::setTimeout(const std::string& name, - std::chrono::milliseconds timeout) { - LOG_SCOPE_FUNCTION(INFO); - timeoutMap_[name] = timeout; - LOG_F(INFO, "Timeout set for command '{}': {} ms.", name, timeout.count()); -} - -void CommandDispatcher::removeCommand(const std::string& name) { - LOG_SCOPE_FUNCTION(INFO); - commands_.erase(name); - groupMap_.erase(name); - timeoutMap_.erase(name); - LOG_F(INFO, "Command '{}' removed.", name); -} - -auto CommandDispatcher::getCommandsInGroup(const std::string& group) const - -> std::vector { - LOG_SCOPE_FUNCTION(INFO); - std::vector result; - for (const auto& pair : groupMap_) { - if (pair.second == group) { - result.push_back(pair.first); - } - } - LOG_F(INFO, "Commands in group '{}': {}", group, - atom::utils::toString(result)); - return result; -} - -auto CommandDispatcher::getCommandDescription(const std::string& name) const - -> std::string { - LOG_SCOPE_FUNCTION(INFO); - auto it = commands_.find(name); - if (it != commands_.end()) { - LOG_F(INFO, "Description for command '{}': {}", name, - it->second.description); - return it->second.description; - } - LOG_F(INFO, "No description found for command '{}'.", name); - return ""; -} - -auto CommandDispatcher::getCommandAliases(const std::string& name) const - -> std::unordered_set { - LOG_SCOPE_FUNCTION(INFO); - auto it = commands_.find(name); - if (it != commands_.end()) { - LOG_F(INFO, "Aliases for command '{}': {}", name, - atom::utils::toString(it->second.aliases)); - return it->second.aliases; - } - LOG_F(INFO, "No aliases found for command '{}'.", name); - return {}; -} - -auto CommandDispatcher::dispatch( - const std::string& name, const std::vector& args) -> std::any { - LOG_SCOPE_FUNCTION(INFO); - LOG_F(INFO, "Dispatching command '{}'.", name); - return dispatchHelper(name, args); -} - -auto CommandDispatcher::dispatch(const std::string& name, - const atom::meta::FunctionParams& params) - -> std::any { - LOG_SCOPE_FUNCTION(INFO); - LOG_F(INFO, "Dispatching command '{}' with FunctionParams.", name); - return dispatchHelper(name, params.toAnyVector()); -} - -auto CommandDispatcher::getAllCommands() const -> std::vector { - LOG_SCOPE_FUNCTION(INFO); - std::vector result; - result.reserve(commands_.size()); - for (const auto& pair : commands_) { - result.push_back(pair.first); - } - for (const auto& command : commands_) { - for (const auto& alias : command.second.aliases) { - result.push_back(alias); - } - } - auto it = std::unique(result.begin(), result.end()); - result.erase(it, result.end()); - LOG_F(INFO, "All commands: {}", atom::utils::toString(result)); - return result; -} - -namespace atom::utils { - auto toString(const std::vector &arg) -> std::string{ - std::string result; - for (const auto& a : arg) { - result += a.getName() + " "; - } - return result; - } -} - -auto CommandDispatcher::getCommandArgAndReturnType(const std::string& name) - -> std::pair, std::string> { - LOG_SCOPE_FUNCTION(INFO); - auto it = commands_.find(name); - if (it != commands_.end()) { - LOG_F(INFO, - "Argument and return types for command '{}': args = [{}], return " - "= {}", - name, atom::utils::toString(it->second.argTypes), - it->second.returnType); - return {it->second.argTypes, it->second.returnType}; - } - LOG_F(INFO, "No argument and return types found for command '{}'.", name); - return {{}, ""}; -} diff --git a/src/atom/components/dispatch.hpp b/src/atom/components/dispatch.hpp deleted file mode 100644 index f1943f84..00000000 --- a/src/atom/components/dispatch.hpp +++ /dev/null @@ -1,487 +0,0 @@ -#ifndef ATOM_COMMAND_DISPATCH_HPP -#define ATOM_COMMAND_DISPATCH_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if ENABLE_FASTHASH -#include "emhash/hash_set8.hpp" -#include "emhash/hash_table8.hpp" -#else -#include -#include -#endif - -#include "atom/error/exception.hpp" -#include "atom/function/proxy.hpp" -#include "atom/function/type_caster.hpp" -#include "atom/type/json.hpp" - -#include "atom/macro.hpp" - -using json = nlohmann::json; - -// ------------------------------------------------------------------- -// Command Exception -// ------------------------------------------------------------------- - -class DispatchException : public atom::error::Exception { -public: - using atom::error::Exception::Exception; -}; - -#define THROW_DISPATCH_EXCEPTION(...) \ - throw DispatchException(ATOM_FILE_NAME, ATOM_FILE_LINE, ATOM_FUNC_NAME, \ - __VA_ARGS__); - -class DispatchTimeout : public atom::error::Exception { -public: - using atom::error::Exception::Exception; -}; - -#define THROW_DISPATCH_TIMEOUT(...) \ - throw DispatchTimeout(ATOM_FILE_NAME, ATOM_FILE_LINE, ATOM_FUNC_NAME, \ - __VA_ARGS__); - -// ------------------------------------------------------------------- -// Command Dispatcher -// ------------------------------------------------------------------- - -/** - * @brief Manages and dispatches commands. - */ -class CommandDispatcher { -public: - /** - * @brief Constructs a CommandDispatcher with a TypeCaster. - * @param typeCaster A weak pointer to a TypeCaster. - */ - explicit CommandDispatcher(std::weak_ptr typeCaster) - : typeCaster_(std::move(typeCaster)) {} - - /** - * @brief Defines a command. - * @tparam Ret The return type of the command function. - * @tparam Args The argument types of the command function. - * @param name The name of the command. - * @param group The group of the command. - * @param description The description of the command. - * @param func The command function. - * @param precondition An optional precondition function. - * @param postcondition An optional postcondition function. - * @param arg_info Information about the arguments. - */ - template - void def(const std::string& name, const std::string& group, - const std::string& description, std::function func, - std::optional> precondition = std::nullopt, - std::optional> postcondition = std::nullopt, - std::vector arg_info = {}, bool isTimed = false); - - /** - * @brief Checks if a command exists. - * @param name The name of the command. - * @return True if the command exists, false otherwise. - */ - [[nodiscard]] auto has(const std::string& name) const -> bool; - - /** - * @brief Adds an alias for a command. - * @param name The name of the command. - * @param alias The alias for the command. - */ - void addAlias(const std::string& name, const std::string& alias); - - /** - * @brief Adds a command to a group. - * @param name The name of the command. - * @param group The group of the command. - */ - void addGroup(const std::string& name, const std::string& group); - - /** - * @brief Sets a timeout for a command. - * @param name The name of the command. - * @param timeout The timeout duration. - */ - void setTimeout(const std::string& name, std::chrono::milliseconds timeout); - - /** - * @brief Dispatches a command with arguments. - * @tparam Args The argument types. - * @param name The name of the command. - * @param args The arguments for the command. - * @return The result of the command execution. - */ - template - auto dispatch(const std::string& name, Args&&... args) -> std::any; - - /** - * @brief Dispatches a command with a vector of arguments. - * @param name The name of the command. - * @param args The arguments for the command. - * @return The result of the command execution. - */ - auto dispatch(const std::string& name, - const std::vector& args) -> std::any; - - /** - * @brief Dispatches a command with function parameters. - * @param name The name of the command. - * @param params The function parameters. - * @return The result of the command execution. - */ - auto dispatch(const std::string& name, - const atom::meta::FunctionParams& params) -> std::any; - - /** - * @brief Removes a command. - * @param name The name of the command. - */ - void removeCommand(const std::string& name); - - /** - * @brief Gets the commands in a group. - * @param group The group name. - * @return A vector of command names in the group. - */ - [[nodiscard]] auto getCommandsInGroup(const std::string& group) const - -> std::vector; - - /** - * @brief Gets the description of a command. - * @param name The name of the command. - * @return The description of the command. - */ - [[nodiscard]] auto getCommandDescription(const std::string& name) const - -> std::string; - -#if ENABLE_FASTHASH - /** - * @brief Gets the aliases of a command. - * @param name The name of the command. - * @return A set of aliases for the command. - */ - emhash::HashSet getCommandAliases( - const std::string& name) const; -#else - /** - * @brief Gets the aliases of a command. - * @param name The name of the command. - * @return A set of aliases for the command. - */ - [[nodiscard]] auto getCommandAliases(const std::string& name) const - -> std::unordered_set; -#endif - - /** - * @brief Gets all commands. - * @return A vector of all command names. - */ - [[nodiscard]] auto getAllCommands() const -> std::vector; - - [[nodiscard]] auto getCommandArgAndReturnType(const std::string& name) - -> std::pair, std::string>; - - struct Command { - std::function&)> func; - std::string returnType; - std::vector argTypes; - std::string hash; - std::string description; -#if ENABLE_FASTHASH - emhash::HashSet aliases; -#else - std::unordered_set aliases; -#endif - std::optional> precondition; - std::optional> postcondition; - } ATOM_ALIGNAS(128); - -private: - /** - * @brief Helper function to dispatch a command. - * @tparam ArgsType The type of the arguments. - * @param name The name of the command. - * @param args The arguments for the command. - * @return The result of the command execution. - */ - template - auto dispatchHelper(const std::string& name, - const ArgsType& args) -> std::any; - - /** - * @brief Converts a tuple to a vector of arguments. - * @tparam Args The types of the arguments. - * @param tuple The tuple of arguments. - * @return A vector of arguments. - */ - template - auto convertToArgsVector(std::tuple&& tuple) - -> std::vector; - - /** - * @brief Finds a command by name. - * @param name The name of the command. - * @return An iterator to the command. - */ - auto findCommand(const std::string& name); - - /** - * @brief Completes the arguments for a command. - * @tparam ArgsType The type of the arguments. - * @param cmd The command. - * @param args The arguments for the command. - * @return A vector of completed arguments. - */ - template - auto completeArgs(const Command& cmd, - const ArgsType& args) -> std::vector; - - /** - * @brief Checks the precondition of a command. - * @param cmd The command. - * @param name The name of the command. - */ - static void checkPrecondition(const Command& cmd, const std::string& name); - - /** - * @brief Checks the postcondition of a command. - * @param cmd The command. - * @param name The name of the command. - */ - static void checkPostcondition(const Command& cmd, const std::string& name); - - /** - * @brief Executes a command. - * @param cmd The command. - * @param name The name of the command. - * @param args The arguments for the command. - * @return The result of the command execution. - */ - auto executeCommand(const Command& cmd, const std::string& name, - const std::vector& args) -> std::any; - - /** - * @brief Executes a command with a timeout. - * @param cmd The command. - * @param name The name of the command. - * @param args The arguments for the command. - * @param timeout The timeout duration. - * @return The result of the command execution. - */ - static auto executeWithTimeout(const Command& cmd, const std::string& name, - const std::vector& args, - const std::chrono::duration& timeout) - -> std::any; - - /** - * @brief Executes a command without a timeout. - * @param cmd The command. - * @param name The name of the command. - * @param args The arguments for the command. - * @return The result of the command execution. - */ - static auto executeWithoutTimeout(const Command& cmd, const std::string& name, - const std::vector& args) -> std::any; - - /** - * @brief Executes the functions of a command. - * @param cmd The command. - * @param args The arguments for the command. - * @return The result of the command execution. - */ - static auto executeFunctions(const Command& cmd, - const std::vector& args) -> std::any; - - /** - * @brief Computes the hash of the function arguments. - * @param args The arguments for the command. - * @return The hash of the function arguments. - */ - static auto computeFunctionHash(const std::vector& args) -> std::string; - -#if ENABLE_FASTHASH - emhash8::HashMap commands; - emhash8::HashMap groupMap; - emhash8::HashMap timeoutMap; -#else - std::unordered_map commands_; - std::unordered_map groupMap_; - std::unordered_map timeoutMap_; -#endif - - std::weak_ptr typeCaster_; -}; - -inline void to_json(json& j, const CommandDispatcher::Command& cmd) { - j = json{ - {"returnType", cmd.returnType}, - {"argTypes", cmd.argTypes}, - {"hash", cmd.hash}, - {"description", cmd.description}, - {"aliases", cmd.aliases} - }; - - if (cmd.precondition) { - j["precondition"] = true; - } else { - j["precondition"] = false; - } - - if (cmd.postcondition) { - j["postcondition"] = true; - } else { - j["postcondition"] = false; - } -} - -inline void from_json(const json& j, CommandDispatcher::Command& cmd) { - j.at("returnType").get_to(cmd.returnType); - j.at("argTypes").get_to(cmd.argTypes); - j.at("hash").get_to(cmd.hash); - j.at("description").get_to(cmd.description); - j.at("aliases").get_to(cmd.aliases); - - if (j.at("precondition").get()) { - cmd.precondition = []() { return true; }; // Placeholder function - } else { - cmd.precondition.reset(); - } - - if (j.at("postcondition").get()) { - cmd.postcondition = []() {}; // Placeholder function - } else { - cmd.postcondition.reset(); - } -} - -ATOM_INLINE auto CommandDispatcher::findCommand(const std::string& name) { - auto it = commands_.find(name); - if (it == commands_.end()) { - for (const auto& [cmdName, cmd] : commands_) { - if (std::ranges::find(cmd.aliases.begin(), cmd.aliases.end(), name) != - cmd.aliases.end()) { -#if ENABLE_DEBUG - std::cout << "Command '" << name - << "' not found, did you mean '" << cmdName << "'?\n"; -#endif - return commands_.find(cmdName); - } - } - } - return it; -} - -template -void CommandDispatcher::def(const std::string& name, const std::string& group, - const std::string& description, - std::function func, - std::optional> precondition, - std::optional> postcondition, - std::vector arg_info, - bool isTimed) { - std::function&)> wrappedFunc; - atom::meta::FunctionInfo info; - if (isTimed) { - // TODO: Custom timeout duration for each command - auto _func = atom::meta::TimerProxyFunction(std::move(func)); - info = _func.getFunctionInfo(); - wrappedFunc = - [_func](const std::vector& args) mutable -> std::any { - std::chrono::milliseconds defaultTimeout(1000); - return _func(args, defaultTimeout); - }; - } else { - auto _func = atom::meta::ProxyFunction(std::move(func)); - wrappedFunc = - [_func](const std::vector& args) mutable -> std::any { - return _func(args); - }; - } - Command cmd{{std::move(wrappedFunc)}, - {info.getReturnType()}, - arg_info, - {info.getHash()}, - description, - {}, - std::move(precondition), - std::move(postcondition)}; - commands_[name] = std::move(cmd); - groupMap_[name] = group; -} - -template -auto CommandDispatcher::dispatch(const std::string& name, - Args&&... args) -> std::any { - auto argsTuple = std::make_tuple(std::forward(args)...); - auto argsVec = convertToArgsVector(std::move(argsTuple)); - return dispatchHelper(name, argsVec); -} - -template -auto CommandDispatcher::convertToArgsVector(std::tuple&& tuple) - -> std::vector { - std::vector argsVec; - argsVec.reserve(sizeof...(Args)); - std::apply( - [&argsVec](auto&&... args) { - ((argsVec.emplace_back(std::forward(args))), ...); - }, - std::move(tuple)); - return argsVec; -} - -template -auto CommandDispatcher::dispatchHelper(const std::string& name, - const ArgsType& args) -> std::any { - auto it = findCommand(name); - if (it == commands_.end()) { - THROW_INVALID_ARGUMENT("Unknown command: " + name); - } - - const auto& cmd = it->second; - std::vector fullArgs; - fullArgs = completeArgs(cmd, args); - - if constexpr (std::is_same_v>) { - auto it1 = args.begin(); - auto it2 = cmd.argTypes.begin(); - for (; it1 != args.end() && it2 != cmd.argTypes.end(); ++it1, ++it2) { - } - } - - checkPrecondition(cmd, name); - - auto result = executeCommand(cmd, name, fullArgs); - - checkPostcondition(cmd, name); - - return result; -} - -template -auto CommandDispatcher::completeArgs(const Command& cmd, const ArgsType& args) - -> std::vector { - std::vector fullArgs(args.begin(), args.end()); - for (size_t i = args.size(); i < cmd.argTypes.size(); ++i) { - if (cmd.argTypes[i].getDefaultValue()) { - fullArgs.push_back(cmd.argTypes[i].getDefaultValue().value()); - } else { - THROW_INVALID_ARGUMENT("Missing argument: " + - cmd.argTypes[i].getName()); - } - } - return fullArgs; -} - -#endif diff --git a/src/atom/components/module_macro.hpp b/src/atom/components/module_macro.hpp deleted file mode 100644 index f8279763..00000000 --- a/src/atom/components/module_macro.hpp +++ /dev/null @@ -1,155 +0,0 @@ -// Helper macros for registering initializers, dependencies, and modules -#ifndef REGISTER_INITIALIZER -#define REGISTER_INITIALIZER(name, init_func, cleanup_func) \ - namespace { \ - struct Initializer_##name { \ - Initializer_##name() { \ - LOG_F(INFO, "Registering initializer: {}", #name); \ - Registry::instance().addInitializer(#name, init_func, \ - cleanup_func); \ - } \ - }; \ - static Initializer_##name initializer_##name; \ - } -#endif - -#ifndef REGISTER_DEPENDENCY -#define REGISTER_DEPENDENCY(name, dependency) \ - namespace { \ - struct Dependency_##name { \ - Dependency_##name() { \ - LOG_F(INFO, "Registering dependency: {} -> {}", #name, \ - #dependency); \ - Registry::instance().addDependency(#name, #dependency); \ - } \ - }; \ - static Dependency_##name dependency_##name; \ - } -#endif - -// Nested macro for module initialization -#ifndef ATOM_MODULE_INIT -#define ATOM_MODULE_INIT(module_name, init_func) \ - namespace module_name { \ - struct ModuleManager { \ - static void init() { \ - LOG_F(INFO, "Initializing module: {}", #module_name); \ - Registry::instance().registerModule(#module_name, init_func); \ - Registry::instance().addInitializer(#module_name, init_func); \ - Registry::instance().initializeAll(); \ - } \ - static void cleanup() { \ - static std::once_flag flag; \ - std::call_once(flag, []() { \ - LOG_F(INFO, "Cleaning up module: {}", #module_name); \ - Registry::instance().cleanupAll(); \ - }); \ - } \ - }; \ - } -#endif - -// Macro for dynamic library module -#ifndef ATOM_MODULE -#define ATOM_MODULE(module_name, init_func) \ - ATOM_MODULE_INIT(module_name, init_func) \ - extern "C" void module_name##_initialize_registry() { \ - LOG_F(INFO, "Initializing registry for module: {}", #module_name); \ - module_name::ModuleManager::init(); \ - LOG_F(INFO, "Initialized registry for module: {}", #module_name); \ - } \ - extern "C" void module_name##_cleanup_registry() { \ - LOG_F(INFO, "Cleaning up registry for module: {}", #module_name); \ - module_name::ModuleManager::cleanup(); \ - LOG_F(INFO, "Cleaned up registry for module: {}", #module_name); \ - } \ - extern "C" auto module_name##_getInstance()->std::shared_ptr { \ - LOG_F(INFO, "Getting instance of module: {}", #module_name); \ - return Registry::instance().getComponent(#module_name); \ - } -#endif - -// Macro for embedded module -#ifndef ATOM_EMBED_MODULE -#define ATOM_EMBED_MODULE(module_name, init_func) \ - ATOM_MODULE_INIT(module_name, init_func) \ - namespace module_name { \ - inline std::optional init_flag; \ - struct ModuleInitializer { \ - ModuleInitializer() { \ - if (!init_flag.has_value()) { \ - LOG_F(INFO, "Embedding module: {}", #module_name); \ - init_flag.emplace(); \ - Registry::instance().registerModule(#module_name, init_func); \ - Registry::instance().addInitializer(#module_name, init_func); \ - } \ - } \ - ~ModuleInitializer() { \ - if (init_flag.has_value()) { \ - LOG_F(INFO, "Cleaning up embedded module: {}", #module_name); \ - init_flag.reset(); \ - } \ - } \ - }; \ - static ModuleInitializer module_initializer; \ - } -#endif - -// Macro for dynamic library module with test support -// Max: This means that the module is a dynamic library that can be loaded at -// runtime. -// And the test function should hava a signature like void -// test_func(std::shared_ptr instance). -#ifndef ATOM_MODULE_TEST -#define ATOM_MODULE_TEST(module_name, test_func) \ - extern "C" void module_name##_run_tests() { \ - LOG_F(INFO, "Running tests for module: {}", #module_name); \ - try { \ - test_func(module_name##_getInstance()); \ - } catch (const atom::error::ObjectNotExist& e) { \ - LOG_F(ERROR, "{} not found", #module_name); \ - } catch (const std::exception& e) { \ - LOG_F(ERROR, "Exception thrown: {} in {}'s tests", e.what(), \ - #module_name); \ - } \ - LOG_F(INFO, "Finished running tests for module: {}", #module_name); \ - } -#endif - -// Macro for embedded module with test support -#ifndef ATOM_EMBED_MODULE_TEST -#define ATOM_EMBED_MODULE_TEST(module_name, init_func, test_func) \ - ATOM_MODULE_INIT(module_name, init_func) \ - namespace module_name { \ - inline std::optional init_flag; \ - struct ModuleInitializer { \ - ModuleInitializer() { \ - if (!init_flag.has_value()) { \ - LOG_F(INFO, "Embedding module: {}", #module_name); \ - init_flag.emplace(); \ - Registry::instance().registerModule(#module_name, init_func); \ - Registry::instance().addInitializer(#module_name, init_func); \ - } \ - } \ - ~ModuleInitializer() { \ - if (init_flag.has_value()) { \ - LOG_F(INFO, "Cleaning up embedded module: {}", #module_name); \ - init_flag.reset(); \ - } \ - } \ - }; \ - static ModuleInitializer module_initializer; \ - } \ - extern "C" void run_tests() { \ - LOG_F(INFO, "Running tests for module: {}", #module_name); \ - try { \ - test_func(module_name::getInstance()); \ - } catch (const atom::error::ObjectNotExist& e) { \ - LOG_F(ERROR, "{} not found", #module_name); \ - } catch (const std::exception& e) { \ - LOG_F(ERROR, "Exception thrown: {} in {}'s tests", e.what(), \ - #module_name); \ - } \ - LOG_F(INFO, "Finished running tests for module: {}", #module_name); \ - } -#endif diff --git a/src/atom/components/package.hpp b/src/atom/components/package.hpp deleted file mode 100644 index 61e451f3..00000000 --- a/src/atom/components/package.hpp +++ /dev/null @@ -1,215 +0,0 @@ -#ifndef ATOM_COMPONENTS_PACKAGE_HPP -#define ATOM_COMPONENTS_PACKAGE_HPP - -#include -#include -#include -#include -#include -#include - -// Constants -constexpr size_t ALIGNMENT = 64; -constexpr size_t MAX_ELEMENTS = 10; - -// Enum for JSON value types -enum class JsonValueType { STRING, OBJECT, ARRAY, NUMBER, BOOLEAN, UNKNOWN }; - -// Structure for JSON key-value pair -struct alignas(ALIGNMENT) JsonKeyValue { - std::string_view key; - std::string_view value; - JsonValueType type; -}; - -// Helper function to compare strings -constexpr auto Equals(std::string_view str1, std::string_view str2) -> bool { - return str1 == str2; -} - -// Trim leading and trailing spaces -constexpr auto Trim(std::string_view str) -> std::string_view { - auto isSpace = [](char character) { - return character == ' ' || character == '\n' || character == '\t'; - }; - str.remove_prefix(std::ranges::find_if_not(str, isSpace) - str.begin()); - str.remove_suffix( - std::ranges::find_if_not(str | std::views::reverse, isSpace).base() - - str.end()); - return str; -} - -// Remove ']' from a string -constexpr auto RemoveBrackets(std::string_view str) -> std::string_view { - size_t position = 0; - while ((position = str.find(']')) != std::string_view::npos) { - str.remove_suffix(str.size() - position); - } - while ((position = str.find('{')) != std::string_view::npos || - (position = str.find('}')) != std::string_view::npos) { - str.remove_suffix(str.size() - position); - } - return str; -} - -// Parse key-value pair from a JSON line -constexpr auto ParseKeyValue(std::string_view jsonLine) - -> std::pair { - auto colonPosition = jsonLine.find(':'); - if (colonPosition == std::string_view::npos) { - return {JsonKeyValue{}, "Invalid JSON line: no colon found"}; - } - - std::string_view key = Trim(jsonLine.substr(0, colonPosition)); - std::string_view value = Trim(jsonLine.substr(colonPosition + 1)); - - // Remove quotes from key - if (key.front() == '"' && key.back() == '"') { - key.remove_prefix(1); - key.remove_suffix(1); - } - - JsonValueType type = JsonValueType::STRING; - - // Detect value type (OBJECT, ARRAY, STRING, NUMBER, BOOLEAN) - if (value.front() == '{' && value.back() == '}') { - type = JsonValueType::OBJECT; - } else if (value.front() == '[' && value.back() == ']') { - type = JsonValueType::ARRAY; - } else if (value.front() == '"' && value.back() == '"') { - value.remove_prefix(1); - value.remove_suffix(1); - } else if (value == "true" || value == "false") { - type = JsonValueType::BOOLEAN; - } else if (std::all_of(value.begin(), value.end(), ::isdigit)) { - type = JsonValueType::NUMBER; - } else { - type = JsonValueType::UNKNOWN; - } - - return {JsonKeyValue{key, value, type}, ""}; -} - -// Parse a JSON array -constexpr auto ParseArray(std::string_view arrayString) - -> std::pair, std::string> { - std::array result = {}; - size_t currentPosition = 0; - size_t elementIndex = 0; - - // Remove square brackets - arrayString.remove_prefix(1); - arrayString.remove_suffix(1); - - while (currentPosition < arrayString.size() && - elementIndex < result.size()) { - size_t nextCommaPosition = arrayString.find(',', currentPosition); - if (nextCommaPosition == std::string_view::npos) { - nextCommaPosition = arrayString.size(); - } - - std::string_view element = Trim(arrayString.substr( - currentPosition, nextCommaPosition - currentPosition)); - if (element.front() == '"' && element.back() == '"') { - element.remove_prefix(1); - element.remove_suffix(1); - } - result[elementIndex++] = element; - - currentPosition = nextCommaPosition + 1; - } - - return {result, ""}; -} - -// Parse a JSON object -constexpr auto ParseObject(std::string_view objectString) - -> std::pair, std::string> { - std::array result = {}; - size_t currentPosition = 0; - size_t lineIndex = 0; - - // Remove curly braces - objectString.remove_prefix(1); - objectString.remove_suffix(1); - - while (currentPosition < objectString.size() && lineIndex < result.size()) { - size_t nextCommaPosition = objectString.find(',', currentPosition); - if (nextCommaPosition == std::string_view::npos) { - nextCommaPosition = objectString.size(); - } - - std::string_view line = Trim(objectString.substr( - currentPosition, nextCommaPosition - currentPosition)); - if (!line.empty() && absl::StrContains(line, ':')) { - auto [kv, error] = ParseKeyValue(line); - if (!error.empty()) { - return {result, error}; - } - result[lineIndex++] = kv; - } - - currentPosition = nextCommaPosition + 1; - } - - return {result, ""}; -} - -// Parse the entire JSON document -constexpr auto ParseJson(std::string_view json) - -> std::pair, std::string> { - std::array result = {}; - size_t currentPosition = 0; - size_t lineIndex = 0; - - while (currentPosition < json.size() && lineIndex < result.size()) { - size_t nextLinePosition = json.find('\n', currentPosition); - if (nextLinePosition == std::string_view::npos) { - nextLinePosition = json.size(); - } - - std::string_view line = Trim( - json.substr(currentPosition, nextLinePosition - currentPosition)); - if (!line.empty() && absl::StrContains(line, ':')) { - auto [kv, error] = ParseKeyValue(line); - if (!error.empty()) { - return {result, error}; - } - - // If it's an array, parse it - if (kv.type == JsonValueType::ARRAY) { - auto [arrayValues, arrayError] = ParseArray(kv.value); - if (!arrayError.empty()) { - return {result, arrayError}; - } - // Handle array values if needed - } - // If it's an object, parse it - else if (kv.type == JsonValueType::OBJECT) { - auto [objectValues, objectError] = ParseObject(kv.value); - if (!objectError.empty()) { - return {result, objectError}; - } - // Handle object values if needed - } - - result[lineIndex++] = kv; - } - - currentPosition = nextLinePosition + 1; - } - - return {result, ""}; -} - -// Split array elements and get internal values -constexpr void SplitArrayElements( - const std::span& arrayElements) { - for (const auto& element : arrayElements) { - if (!element.empty()) { - std::cout << " Array Element: " << element << '\n'; - } - } -} - -#endif // ATOM_COMPONENTS_PACKAGE_HPP diff --git a/src/atom/components/registry.cpp b/src/atom/components/registry.cpp deleted file mode 100644 index 2b183db3..00000000 --- a/src/atom/components/registry.cpp +++ /dev/null @@ -1,199 +0,0 @@ -/* - * registry.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-3-1 - -Description: Registry Pattern Implementation - -**************************************************/ - -#include "registry.hpp" - -#include "atom/log/loguru.hpp" - -auto Registry::instance() -> Registry& { - static Registry instance; - return instance; -} - -void Registry::registerModule(const std::string& name, - Component::InitFunc init_func) { - std::scoped_lock lock(mutex_); - LOG_F(INFO, "Registering module: {}", name); - module_initializers_[name] = std::move(init_func); -} - -void Registry::addInitializer(const std::string& name, - Component::InitFunc init_func, - Component::CleanupFunc cleanup_func) { - std::scoped_lock lock(mutex_); - if (initializers_.contains(name)) { - return; - } - initializers_[name] = std::make_shared(name); - initializers_[name]->initFunc = std::move(init_func); - initializers_[name]->cleanupFunc = std::move(cleanup_func); - initialized_[name] = false; -} - -void Registry::addDependency(const std::string& name, - const std::string& dependency) { - std::unique_lock lock(mutex_); - if (hasCircularDependency(name, dependency)) { - THROW_RUNTIME_ERROR("Circular dependency detected: " + name + " -> " + - dependency); - } - dependencies_[name].insert(dependency); -} - -void Registry::initializeAll() { - std::unique_lock lock(mutex_); - LOG_F(INFO, "Initializing all components"); - determineInitializationOrder(); - for (const auto& name : initializationOrder_) { - std::unordered_set initStack; - LOG_F(INFO, "Initializing component: {}", name); - initializeComponent(name, initStack); - } -} - -void Registry::cleanupAll() { - std::unique_lock lock(mutex_); - for (const auto& name : std::ranges::reverse_view(initializationOrder_)) { - if (initializers_[name]->cleanupFunc && initialized_[name]) { - initializers_[name]->cleanupFunc(); - initialized_[name] = false; - } - } -} - -auto Registry::isInitialized(const std::string& name) const -> bool { - std::shared_lock lock(mutex_); - auto it = initialized_.find(name); - return it != initialized_.end() && it->second; -} - -void Registry::reinitializeComponent(const std::string& name) { - std::scoped_lock lock(mutex_); - if (initialized_[name]) { - if (auto it = initializers_.find(name); - it != initializers_.end() && it->second->cleanupFunc) { - it->second->cleanupFunc(); - } - } - auto it = module_initializers_.find(name); - if (it != module_initializers_.end()) { - auto component = std::make_shared(name); - it->second(*component); - initializers_[name] = component; - initialized_[name] = true; - } -} - -auto Registry::getComponent(const std::string& name) const - -> std::shared_ptr { - std::shared_lock lock(mutex_); - if (!initializers_.contains(name)) { - THROW_OBJ_NOT_EXIST("Component not registered: " + name); - } - return initializers_.at(name); -} - -auto Registry::getAllComponents() const - -> std::vector> { - std::shared_lock lock(mutex_); - std::vector> components; - for (const auto& pair : initializers_) { - if (pair.second) { - components.push_back(pair.second); - } - } - return components; -} - -auto Registry::getAllComponentNames() const -> std::vector { - std::shared_lock lock(mutex_); - std::vector names; - names.reserve(initializers_.size()); - for (const auto& pair : initializers_) { - names.push_back(pair.first); - } - return names; -} - -void Registry::removeComponent(const std::string& name) { - std::scoped_lock lock(mutex_); - if (initializers_.contains(name)) { - if (initialized_[name] && initializers_[name]->cleanupFunc) { - initializers_[name]->cleanupFunc(); - } - initializers_.erase(name); - initialized_.erase(name); - dependencies_.erase(name); - initializationOrder_.erase( - std::remove(initializationOrder_.begin(), - initializationOrder_.end(), name), - initializationOrder_.end()); - } -} - -bool Registry::hasCircularDependency(const std::string& name, - const std::string& dependency) { - if (dependencies_[dependency].contains(name)) { - return true; - } - for (const auto& dep : dependencies_[dependency]) { - if (hasCircularDependency(name, dep)) { - return true; - } - } - return false; -} - -void Registry::initializeComponent( - const std::string& name, std::unordered_set& init_stack) { - if (initialized_[name]) { - if (init_stack.contains(name)) { - THROW_RUNTIME_ERROR( - "Circular dependency detected while initializing component " - "'{}'", - name); - } - return; - } - if (init_stack.contains(name)) { - THROW_RUNTIME_ERROR( - "Circular dependency detected while initializing: " + name); - } - init_stack.insert(name); - for (const auto& dep : dependencies_[name]) { - initializeComponent(dep, init_stack); - } - if (initializers_[name]->initFunc) { - initializers_[name]->initFunc(*initializers_[name]); - } - initialized_[name] = true; - init_stack.erase(name); -} - -void Registry::determineInitializationOrder() { - std::unordered_set visited; - std::function visit = - [&](const std::string& name) { - if (!visited.contains(name)) { - visited.insert(name); - for (const auto& dep : dependencies_[name]) { - visit(dep); - } - initializationOrder_.push_back(name); - } - }; - for (const auto& pair : initializers_) { - visit(pair.first); - } -} diff --git a/src/atom/components/registry.hpp b/src/atom/components/registry.hpp deleted file mode 100644 index 13c5948b..00000000 --- a/src/atom/components/registry.hpp +++ /dev/null @@ -1,151 +0,0 @@ -/* - * registry.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-3-1 - -Description: Registry Pattern - -**************************************************/ - -#ifndef ATOM_COMPONENT_REGISTRY_HPP -#define ATOM_COMPONENT_REGISTRY_HPP - -#include -#include -#include -#include -#include -#include - -#include "component.hpp" - -/** - * @class Registry - * @brief Manages initialization and cleanup of components in a registry - * pattern. - */ -class Registry { -public: - /** - * @brief Gets the singleton instance of the Registry. - * @return Reference to the singleton instance of the Registry. - */ - static auto instance() -> Registry&; - - /** - * @brief Registers a module's initialization function. - * @param name The name of the module. - * @param init_func The initialization function for the module. - */ - void registerModule(const std::string& name, Component::InitFunc init_func); - - /** - * @brief Adds an initializer function for a component to the registry. - * @param name The name of the component. - * @param init_func The initialization function for the component. - * @param cleanup_func The cleanup function for the component (optional). - */ - void addInitializer(const std::string& name, Component::InitFunc init_func, - Component::CleanupFunc cleanup_func = nullptr); - - /** - * @brief Adds a dependency between two components. - * @param name The name of the component. - * @param dependency The name of the component's dependency. - */ - void addDependency(const std::string& name, const std::string& dependency); - - /** - * @brief Initializes all components in the registry. - */ - void initializeAll(); - - /** - * @brief Cleans up all components in the registry. - */ - void cleanupAll(); - - /** - * @brief Checks if a component is initialized. - * @param name The name of the component to check. - * @return True if the component is initialized, false otherwise. - */ - auto isInitialized(const std::string& name) const -> bool; - - /** - * @brief Reinitializes a component in the registry. - * @param name The name of the component to reinitialize. - */ - void reinitializeComponent(const std::string& name); - - /** - * @brief Gets a component by name. - * @param name The name of the component. - * @return Shared pointer to the component. - */ - auto getComponent(const std::string& name) const - -> std::shared_ptr; - - /** - * @brief Gets all components. - * @return Vector of shared pointers to all components. - */ - auto getAllComponents() const -> std::vector>; - - /** - * @brief Gets the names of all components. - * @return Vector of all component names. - */ - auto getAllComponentNames() const -> std::vector; - - /** - * @brief Removes a component from the registry. - * @param name The name of the component to remove. - */ - void removeComponent(const std::string& name); - -private: - /** - * @brief Private constructor to prevent instantiation. - */ - Registry() = default; - - std::unordered_map> initializers_; - std::unordered_map> - dependencies_; - std::unordered_map initialized_; - std::vector initializationOrder_; - std::unordered_map module_initializers_; - mutable std::shared_mutex mutex_; - - /** - * @brief Checks if adding a dependency creates a circular dependency. - * @param name The name of the component. - * @param dependency The name of the dependency. - * @return True if adding the dependency creates a circular dependency, - * false otherwise. - */ - bool hasCircularDependency(const std::string& name, - const std::string& dependency); - - /** - * @brief Initializes a component and its dependencies recursively. - * @param name The name of the component to initialize. - * @param init_stack Stack to keep track of components being initialized to - * detect circular dependencies. - */ - void initializeComponent(const std::string& name, - std::unordered_set& init_stack); - - /** - * @brief Determines the order of initialization based on dependencies. - */ - void determineInitializationOrder(); -}; - -#endif // ATOM_COMPONENT_REGISTRY_HPP diff --git a/src/atom/components/types.hpp b/src/atom/components/types.hpp deleted file mode 100644 index ed8ad7a9..00000000 --- a/src/atom/components/types.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/* - * types.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-3-1 - -Description: Basic Component Types Definition and Some Utilities - -**************************************************/ - -#ifndef ATOM_COMPONENT_TYPES_HPP -#define ATOM_COMPONENT_TYPES_HPP - -#include "atom/function/enum.hpp" - -enum class ComponentType { - NONE, - SHARED, - SHARED_INJECTED, - SCRIPT, - EXECUTABLE, - TASK, - LAST_ENUM_VALUE -}; - -template <> -struct EnumTraits { - static constexpr std::array VALUES = { - ComponentType::NONE, - ComponentType::SHARED, - ComponentType::SHARED_INJECTED, - ComponentType::SCRIPT, - ComponentType::EXECUTABLE, - ComponentType::TASK, - ComponentType::LAST_ENUM_VALUE}; - - static constexpr std::array NAMES = { - "NONE", "SHARED", "SHARED_INJECTED", "SCRIPT", - "EXECUTABLE", "TASK", "LAST_ENUM_VALUE"}; -}; - -#endif // ATOM_COMPONENT_TYPES_HPP diff --git a/src/atom/components/var.cpp b/src/atom/components/var.cpp deleted file mode 100644 index 82abe757..00000000 --- a/src/atom/components/var.cpp +++ /dev/null @@ -1,77 +0,0 @@ -#include "var.hpp" - -void VariableManager::setStringOptions(const std::string& name, - std::span options) { - LOG_F(INFO, "Setting string options for variable: {}", name); - if (auto variable = getVariable(name)) { - stringOptions_[name] = - std::vector(options.begin(), options.end()); - } -} - -void VariableManager::setValue(const std::string& name, const char* newValue) { - LOG_F(INFO, "Setting value for variable: {}", name); - setValue(name, std::string(newValue)); -} - -auto VariableManager::has(const std::string& name) const -> bool { - LOG_F(INFO, "Checking if variable exists: {}", name); - return variables_.contains(name); -} - -auto VariableManager::getDescription(const std::string& name) const - -> std::string { - LOG_F(INFO, "Getting description for variable: {}", name); - if (auto it = variables_.find(name); it != variables_.end()) { - return it->second.description; - } - for (const auto& [key, value] : variables_) { - if (value.alias == name) { - return value.description; - } - } - return ""; -} - -auto VariableManager::getAlias(const std::string& name) const -> std::string { - LOG_F(INFO, "Getting alias for variable: {}", name); - if (auto it = variables_.find(name); it != variables_.end()) { - return it->second.alias; - } - for (const auto& [key, value] : variables_) { - if (value.alias == name) { - return key; - } - } - return ""; -} - -auto VariableManager::getGroup(const std::string& name) const -> std::string { - LOG_F(INFO, "Getting group for variable: {}", name); - if (auto it = variables_.find(name); it != variables_.end()) { - return it->second.group; - } - for (const auto& [key, value] : variables_) { - if (value.alias == name) { - return value.group; - } - } - return ""; -} - -void VariableManager::removeVariable(const std::string& name) { - LOG_F(INFO, "Removing variable: {}", name); - variables_.erase(name); - ranges_.erase(name); - stringOptions_.erase(name); -} - -auto VariableManager::getAllVariables() const -> std::vector { - LOG_F(INFO, "Getting all variables"); - std::vector variableNames; - variableNames.reserve(variables_.size()); - for (const auto& [name, _] : variables_) { - variableNames.push_back(name); - } - return variableNames; -} diff --git a/src/atom/components/var.hpp b/src/atom/components/var.hpp deleted file mode 100644 index 63085872..00000000 --- a/src/atom/components/var.hpp +++ /dev/null @@ -1,183 +0,0 @@ -/* - * var.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-3-1 - -Description: Variable Manager - -**************************************************/ - -#ifndef ATOM_COMPONENT_VAR_HPP -#define ATOM_COMPONENT_VAR_HPP - -#include -#include -#include -#include -#include -#include - -#include "atom/macro.hpp" - -#if ENABLE_FASTHASH -#include "emhash/hash_table8.hpp" -#else -#include -#endif - -#include "atom/error/exception.hpp" -#include "atom/log/loguru.hpp" -#include "atom/type/trackable.hpp" - -class VariableManager { -public: - template - requires std::is_copy_constructible_v - void addVariable(const std::string& name, T initialValue, - const std::string& description = "", - const std::string& alias = "", - const std::string& group = ""); - - template - requires std::is_copy_constructible_v - void addVariable(const std::string& name, T C::*memberPointer, C& instance, - const std::string& description = "", - const std::string& alias = "", - const std::string& group = ""); - - template - requires std::is_arithmetic_v - void setRange(const std::string& name, T min, T max); - - void setStringOptions(const std::string& name, - std::span options); - - template - [[nodiscard]] auto getVariable(const std::string& name) - -> std::shared_ptr>; - - void setValue(const std::string& name, const char* newValue); - - template - void setValue(const std::string& name, T newValue); - - [[nodiscard]] bool has(const std::string& name) const; - - [[nodiscard]] std::string getDescription(const std::string& name) const; - - [[nodiscard]] std::string getAlias(const std::string& name) const; - - [[nodiscard]] std::string getGroup(const std::string& name) const; - - // New functionalities - void removeVariable(const std::string& name); - [[nodiscard]] std::vector getAllVariables() const; - -private: - struct VariableInfo { - std::any variable; - std::string description; - std::string alias; - std::string group; - } ATOM_ALIGNAS(128); - -#if ENABLE_FASTHASH - emhash8::HashMap variables_; - emhash8::HashMap ranges_; - emhash8::HashMap> stringOptions_; -#else - std::unordered_map variables_; - std::unordered_map ranges_; - std::unordered_map> stringOptions_; -#endif -}; - -template - requires std::is_copy_constructible_v -void VariableManager::addVariable(const std::string& name, T initialValue, - const std::string& description, - const std::string& alias, - const std::string& group) { - LOG_F(INFO, "Adding variable: {}", name); - auto variable = std::make_shared>(std::move(initialValue)); - variables_[name] = {std::move(variable), description, alias, group}; -} - -template - requires std::is_copy_constructible_v -void VariableManager::addVariable(const std::string& name, T C::*memberPointer, - C& instance, const std::string& description, - const std::string& alias, - const std::string& group) { - LOG_F(INFO, "Adding variable with member pointer: {}", name); - auto variable = std::make_shared>(instance.*memberPointer); - variable->setOnChangeCallback( - [&instance, memberPointer](const T& newValue) { - instance.*memberPointer = newValue; - }); - variables_[name] = {std::move(variable), description, alias, group}; -} - -template - requires std::is_arithmetic_v -void VariableManager::setRange(const std::string& name, T min, T max) { - LOG_F(INFO, "Setting range for variable: {}", name); - if (auto variable = getVariable(name)) { - ranges_[name] = std::make_pair(std::move(min), std::move(max)); - } -} - -template -[[nodiscard]] auto VariableManager::getVariable(const std::string& name) - -> std::shared_ptr> { - LOG_F(INFO, "Getting variable: {}", name); - if (auto it = variables_.find(name); it != variables_.end()) { - try { - return std::any_cast>>( - it->second.variable); - } catch (const std::bad_any_cast& e) { - LOG_F(ERROR, "Type mismatch for variable: {}", name); - THROW_INVALID_ARGUMENT("Type mismatch: ", name); - } - } - return nullptr; -} - -template -void VariableManager::setValue(const std::string& name, T newValue) { - LOG_F(INFO, "Setting value for variable: {}", name); - if (auto variable = getVariable(name)) { - if constexpr (std::is_arithmetic_v) { - if (ranges_.contains(name)) { - auto [min, max] = std::any_cast>(ranges_[name]); - if (newValue < min || newValue > max) { - LOG_F(ERROR, "Value out of range for variable: {}", - name); - THROW_OUT_OF_RANGE("Value out of range"); - } - } - } else if constexpr (std::is_same_v || - std::is_same_v) { - if (stringOptions_.contains(name)) { - auto& options = stringOptions_[name]; - if (std::ranges::find(options.begin(), options.end(), newValue) == - options.end()) { - LOG_F(ERROR, "Invalid string option for variable: {}", - name); - THROW_INVALID_ARGUMENT("Invalid string option"); - } - } - } - *variable = std::move(newValue); - } else { - LOG_F(ERROR, "Variable not found: {}", name); - THROW_OBJ_NOT_EXIST("Variable not found"); - } -} - -#endif // ATOM_COMPONENT_VAR_HPP diff --git a/src/atom/components/xmake.lua b/src/atom/components/xmake.lua deleted file mode 100644 index e18b8b9e..00000000 --- a/src/atom/components/xmake.lua +++ /dev/null @@ -1,58 +0,0 @@ -set_project("atom-component") -set_version("1.0.0") - --- Set the C++ standard -set_languages("cxx20") - --- Add required packages -add_requires("loguru") - --- Define libraries -local atom_component_libs = { - "atom-error", - "atom-type", - "atom-utils" -} - -local atom_component_packages = { - "loguru", - "pthread" -} - --- Source files -local source_files = { - "registry.cpp" -} - --- Header files -local header_files = { - "component.hpp", - "dispatch.hpp", - "types.hpp", - "var.hpp" -} - --- Object Library -target("atom-component_object") - set_kind("object") - add_files(table.unpack(source_files)) - add_headerfiles(table.unpack(header_files)) - add_deps(table.unpack(atom_component_libs)) - add_packages(table.unpack(atom_component_packages)) -target_end() - --- Static Library -target("atom-component") - set_kind("static") - add_deps("atom-component_object") - add_files(table.unpack(source_files)) - add_headerfiles(table.unpack(header_files)) - add_packages(table.unpack(atom_component_libs)) - add_includedirs(".") - set_targetdir("$(buildir)/lib") - set_installdir("$(installdir)/lib") - set_version("1.0.0", {build = "%Y%m%d%H%M"}) - on_install(function (target) - os.cp(target:targetfile(), path.join(target:installdir(), "lib")) - end) -target_end() diff --git a/src/atom/connection/CMakeLists.txt b/src/atom/connection/CMakeLists.txt deleted file mode 100644 index f0d6b718..00000000 --- a/src/atom/connection/CMakeLists.txt +++ /dev/null @@ -1,98 +0,0 @@ -# CMakeLists.txt for Atom-Connection -# This project is licensed under the terms of the GPL3 license. -# -# Project Name: Atom-Connection -# Description: Connection Between Lithium Drivers, TCP and IPC -# Author: Max Qian -# License: GPL3 - -cmake_minimum_required(VERSION 3.20) -project(atom-connection C CXX) - -# Sources -list(APPEND ${PROJECT_NAME}_SOURCES - fifoclient.cpp - fifoserver.cpp - sockethub.cpp - tcpclient.cpp - udpclient.cpp - udpserver.cpp -) - -# Headers -list(APPEND ${PROJECT_NAME}_HEADERS - fifoclient.hpp - fifoserver.hpp - sockethub.hpp - tcpclient.hpp - udpclient.hpp - udpserver.hpp -) - -if (ENABLE_LIBSSH) -list(APPEND ${PROJECT_NAME}_SOURCES - sshclient.cpp - sshserver.cpp -) -list(APPEND ${PROJECT_NAME}_HEADERS - sshclient.hpp - sshserver.hpp -) -endif() - -set(${PROJECT_NAME}_LIBS - loguru - ${CMAKE_THREAD_LIBS_INIT} -) - -if (WIN32) -list(APPEND ${PROJECT_NAME}_LIBS - ws2_32 -) -endif() - -if (ENABLE_SSH) -find_package(LibSSH REQUIRED) -list(APPEND ${PROJECT_NAME}_LIBS - ${LIBSSH_LIBRARIES} -) -link_directories(${LIBSSH_LIBRARY_DIRS}) -endif() - -# Build Object Library -add_library(${PROJECT_NAME}_OBJECT OBJECT) -set_property(TARGET ${PROJECT_NAME}_OBJECT PROPERTY POSITION_INDEPENDENT_CODE 1) - -target_sources(${PROJECT_NAME}_OBJECT - PUBLIC - ${${PROJECT_NAME}_HEADERS} - PRIVATE - ${${PROJECT_NAME}_SOURCES} -) - -target_link_libraries(${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) - -add_library(${PROJECT_NAME} STATIC) - -target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) -target_include_directories(${PROJECT_NAME} PUBLIC .) - - - -set_target_properties(${PROJECT_NAME} PROPERTIES - VERSION ${CMAKE_HYDROGEN_VERSION_STRING} - SOVERSION ${HYDROGEN_SOVERSION} - OUTPUT_NAME ${PROJECT_NAME} -) - -install(TARGETS ${PROJECT_NAME} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -) - -if (ATOM_BUILD_PYTHON) -pybind11_add_module(${PROJECT_NAME}-py _pybind.cpp) -target_link_libraries(${PROJECT_NAME}-py PRIVATE ${PROJECT_NAME}) -if (WIN32) -target_link_libraries(${PROJECT_NAME}-py PRIVATE ws2_32) -endif() -endif() diff --git a/src/atom/connection/async_fifoclient.cpp b/src/atom/connection/async_fifoclient.cpp deleted file mode 100644 index 421851d1..00000000 --- a/src/atom/connection/async_fifoclient.cpp +++ /dev/null @@ -1,204 +0,0 @@ -#include "async_fifoclient.hpp" - -#include -#include -#include -#include - -#ifdef _WIN32 -#include -#else -#include -#include -#include -#include -#endif - -namespace atom::connection { - -struct FifoClient::Impl { - asio::io_context io_context; -#ifdef _WIN32 - HANDLE fifoHandle{nullptr}; -#else - int fifoFd{-1}; -#endif - std::string fifoPath; - asio::steady_timer timer; - - Impl(std::string_view path) : fifoPath(path), timer(io_context) { - openFifo(); - } - - ~Impl() { close(); } - - void openFifo() { -#ifdef _WIN32 - fifoHandle = - CreateFileA(fifoPath.c_str(), GENERIC_READ | GENERIC_WRITE, 0, - nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); - if (fifoHandle == INVALID_HANDLE_VALUE) { - throw std::runtime_error("Failed to open FIFO pipe"); - } -#else - if (mkfifo(fifoPath.c_str(), 0666) == -1 && errno != EEXIST) { - throw std::system_error(errno, std::generic_category(), - "Failed to create FIFO"); - } - fifoFd = open(fifoPath.c_str(), O_RDWR | O_NONBLOCK); - if (fifoFd == -1) { - throw std::system_error(errno, std::generic_category(), - "Failed to open FIFO pipe"); - } -#endif - } - - bool isOpen() const { -#ifdef _WIN32 - return fifoHandle != INVALID_HANDLE_VALUE; -#else - return fifoFd != -1; -#endif - } - - void close() { -#ifdef _WIN32 - if (isOpen()) { - CloseHandle(fifoHandle); - fifoHandle = INVALID_HANDLE_VALUE; - } -#else - if (isOpen()) { - ::close(fifoFd); - fifoFd = -1; - } -#endif - } - - bool write(std::string_view data, - const std::optional& timeout) { - if (!isOpen()) - return false; - - // Convert data to buffer - std::vector buffer(data.begin(), data.end()); - buffer.push_back('\0'); - -#ifdef _WIN32 - // Windows specific writing logic - DWORD bytesWritten; - if (timeout) { - timer.expires_after(*timeout); - timer.async_wait( - [this, &buffer, &bytesWritten](const asio::error_code&) { - WriteFile(fifoHandle, buffer.data(), - static_cast(buffer.size()), &bytesWritten, - nullptr); - }); - } else { - return WriteFile(fifoHandle, buffer.data(), - static_cast(buffer.size()), &bytesWritten, - nullptr) != 0; - } - io_context.run(); - io_context.reset(); - return true; -#else - if (timeout) { - fd_set writeFds; - FD_ZERO(&writeFds); - FD_SET(fifoFd, &writeFds); - timeval tv{}; - tv.tv_sec = timeout->count() / 1000; - tv.tv_usec = (timeout->count() % 1000) * 1000; - int result = select(fifoFd + 1, nullptr, &writeFds, nullptr, &tv); - if (result > 0) { - return ::write(fifoFd, buffer.data(), buffer.size()) != -1; - } - return false; - } else { - return ::write(fifoFd, buffer.data(), buffer.size()) != -1; - } -#endif - } - - std::optional read( - const std::optional& timeout) { - if (!isOpen()) - return std::nullopt; - - std::string data; - char buffer[1024]; - -#ifdef _WIN32 - // Windows specific reading logic - DWORD bytesRead; - if (timeout) { - timer.expires_after(*timeout); - timer.async_wait( - [this, &data, &buffer, &bytesRead](const asio::error_code&) { - if (ReadFile(fifoHandle, buffer, sizeof(buffer) - 1, - &bytesRead, nullptr) && - bytesRead > 0) { - buffer[bytesRead] = '\0'; - data += buffer; - } - }); - } else { - while (ReadFile(fifoHandle, buffer, sizeof(buffer) - 1, &bytesRead, - nullptr) && - bytesRead > 0) { - buffer[bytesRead] = '\0'; - data += buffer; - } - } -#else - if (timeout) { - fd_set readFds; - FD_ZERO(&readFds); - FD_SET(fifoFd, &readFds); - timeval tv{}; - tv.tv_sec = timeout->count() / 1000; - tv.tv_usec = (timeout->count() % 1000) * 1000; - int result = select(fifoFd + 1, &readFds, nullptr, nullptr, &tv); - if (result > 0) { - ssize_t bytesRead = ::read(fifoFd, buffer, sizeof(buffer) - 1); - if (bytesRead > 0) { - buffer[bytesRead] = '\0'; - data += buffer; - } - } - } else { - ssize_t bytesRead; - while ((bytesRead = ::read(fifoFd, buffer, sizeof(buffer) - 1)) > - 0) { - buffer[bytesRead] = '\0'; - data += buffer; - } - } -#endif - - return data.empty() ? std::nullopt : std::make_optional(data); - } -}; - -FifoClient::FifoClient(std::string fifoPath) - : m_impl(std::make_unique(fifoPath)) {} - -FifoClient::~FifoClient() = default; - -bool FifoClient::write(std::string_view data, - std::optional timeout) { - return m_impl->write(data, timeout); -} - -std::optional FifoClient::read( - std::optional timeout) { - return m_impl->read(timeout); -} - -bool FifoClient::isOpen() const { return m_impl->isOpen(); } - -void FifoClient::close() { m_impl->close(); } - -} // namespace atom::connection diff --git a/src/atom/connection/async_fifoclient.hpp b/src/atom/connection/async_fifoclient.hpp deleted file mode 100644 index ff8c39f8..00000000 --- a/src/atom/connection/async_fifoclient.hpp +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef ATOM_CONNECTION_ASYNC_FIFOCLIENT_HPP -#define ATOM_CONNECTION_ASYNC_FIFOCLIENT_HPP - -#include -#include -#include -#include -#include - -namespace atom::connection { - -/** - * @brief A class for interacting with a FIFO (First In, First Out) pipe. - * - * This class provides methods to read from and write to a FIFO pipe, - * handling timeouts and ensuring proper resource management. - */ -class FifoClient { -public: - /** - * @brief Constructs a FifoClient with the specified FIFO path. - * - * @param fifoPath The path to the FIFO file to be used for communication. - */ - explicit FifoClient(std::string fifoPath); - - /** - * @brief Destroys the FifoClient and closes the FIFO if it is open. - */ - ~FifoClient(); - - /** - * @brief Writes data to the FIFO. - * - * @param data The data to be written to the FIFO, as a string view. - * @param timeout Optional timeout for the write operation, in milliseconds. - * @return true if the data was successfully written, false if there was an - * error. - */ - auto write(std::string_view data, - std::optional timeout = std::nullopt) - -> bool; - - /** - * @brief Reads data from the FIFO. - * - * @param timeout Optional timeout for the read operation, in milliseconds. - * @return An optional string containing the data read from the FIFO. - */ - auto read(std::optional timeout = std::nullopt) - -> std::optional; - - /** - * @brief Checks if the FIFO is currently open. - * - * @return true if the FIFO is open, false otherwise. - */ - [[nodiscard]] auto isOpen() const -> bool; - - /** - * @brief Closes the FIFO. - */ - void close(); - -private: - struct Impl; ///< Forward declaration of the implementation details - std::unique_ptr m_impl; ///< Pointer to the implementation -}; - -} // namespace atom::connection - -#endif // ATOM_CONNECTION_ASYNC_FIFOCLIENT_HPP diff --git a/src/atom/connection/async_fifoserver.cpp b/src/atom/connection/async_fifoserver.cpp deleted file mode 100644 index eff8f4b0..00000000 --- a/src/atom/connection/async_fifoserver.cpp +++ /dev/null @@ -1,108 +0,0 @@ -/* - * fifoserver.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-6-1 - -Description: FIFO Server - -*************************************************/ - -#include "async_fifoserver.hpp" - -#include -#include -#include - -namespace atom::async::connection { - -class FifoServer::Impl { -public: - explicit Impl(std::string_view fifo_path) - : fifo_path_(fifo_path), io_context_(), fifo_stream_(io_context_) { -#if __APPLE__ || __linux__ - // Create FIFO if it doesn't exist - if (!std::filesystem::exists(fifo_path_)) { - mkfifo(fifo_path_.c_str(), 0666); - } -#endif - } - - ~Impl() { - stop(); -#if __APPLE__ || __linux__ - std::filesystem::remove(fifo_path_); -#endif - } - - void start() { - if (!isRunning()) { - running_ = true; - io_thread_ = std::thread([this]() { io_context_.run(); }); - acceptConnection(); - } - } - - void stop() { - if (isRunning()) { - running_ = false; - io_context_.stop(); - if (io_thread_.joinable()) { - io_thread_.join(); - } - } - } - - [[nodiscard]] bool isRunning() const { return running_; } - -private: - void acceptConnection() { -#if __APPLE__ || __linux__ - fifo_stream_.assign(open(fifo_path_.c_str(), O_RDWR | O_NONBLOCK)); - readMessage(); -#endif - } - - void readMessage() { -#if __APPLE__ || __linux__ - asio::async_read_until( - fifo_stream_, asio::dynamic_buffer(buffer_), '\n', - [this](std::error_code ec, std::size_t length) { - if (!ec) { - std::string message(buffer_.substr(0, length)); - buffer_.erase(0, length); - std::cout << "Received message: " << message << std::endl; - readMessage(); // Continue reading - } - }); -#endif - } - - std::string fifo_path_; - asio::io_context io_context_; -#ifdef _WIN32 - asio::windows::stream_handle fifo_stream_; -#else - asio::posix::stream_descriptor fifo_stream_; -#endif - std::thread io_thread_; - std::string buffer_; - bool running_ = false; -}; - -FifoServer::FifoServer(std::string_view fifo_path) - : impl_(std::make_unique(fifo_path)) {} - -FifoServer::~FifoServer() = default; - -void FifoServer::start() { impl_->start(); } - -void FifoServer::stop() { impl_->stop(); } - -bool FifoServer::isRunning() const { return impl_->isRunning(); } - -} // namespace atom::async::connection diff --git a/src/atom/connection/async_fifoserver.hpp b/src/atom/connection/async_fifoserver.hpp deleted file mode 100644 index 2935872e..00000000 --- a/src/atom/connection/async_fifoserver.hpp +++ /dev/null @@ -1,64 +0,0 @@ -/* - * fifoserver.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-6-1 - -Description: FIFO Server - -*************************************************/ - -#ifndef ATOM_CONNECTION_ASYNC_FIFOSERVER_HPP -#define ATOM_CONNECTION_ASYNC_FIFOSERVER_HPP - -#include -#include - -namespace atom::async::connection { - -/** - * @brief A class representing a server for handling FIFO messages. - */ -class FifoServer { -public: - /** - * @brief Constructs a new FifoServer object. - * - * @param fifo_path The path to the FIFO pipe. - */ - explicit FifoServer(std::string_view fifo_path); - - /** - * @brief Destroys the FifoServer object. - */ - ~FifoServer(); - - /** - * @brief Starts the server to listen for messages. - */ - void start(); - - /** - * @brief Stops the server. - */ - void stop(); - - /** - * @brief Checks if the server is running. - * - * @return True if the server is running, false otherwise. - */ - [[nodiscard]] bool isRunning() const; - -private: - class Impl; - std::unique_ptr impl_; -}; - -} // namespace atom::async::connection - -#endif // ATOM_CONNECTION_ASYNC_FIFOSERVER_HPP diff --git a/src/atom/connection/async_sockethub.cpp b/src/atom/connection/async_sockethub.cpp deleted file mode 100644 index fd096f9b..00000000 --- a/src/atom/connection/async_sockethub.cpp +++ /dev/null @@ -1,259 +0,0 @@ -#include "async_sockethub.hpp" -#include -#include -#include - -namespace atom::async::connection { - -class SocketHub::Impl { -public: - Impl(bool use_ssl) - : io_context_(), - acceptor_(io_context_), - ssl_context_(asio::ssl::context::sslv23), - use_ssl_(use_ssl), - is_running_(false) {} - - void start(int port); - void stop(); - - void addHandler( - const std::function& handler); - void addConnectHandler(const std::function& handler); - void addDisconnectHandler(const std::function& handler); - - void broadcastMessage(const std::string& message); - void sendMessageToClient(size_t client_id, const std::string& message); - - [[nodiscard]] auto isRunning() const -> bool; - -private: - void doAccept(); - void handleNewConnection(std::shared_ptr socket); - void doRead(std::shared_ptr socket); - void handleIncomingMessage(const std::string& message, - std::shared_ptr socket); - void handleDisconnect(std::shared_ptr socket); - void disconnectAllClients(); - size_t getClientId(const std::shared_ptr& socket); - void log(const std::string& message); - - asio::io_context io_context_; - asio::ip::tcp::acceptor acceptor_; - asio::ssl::context ssl_context_; - bool use_ssl_; - bool is_running_; - std::unordered_map> clients_; - std::mutex client_mutex_; - std::vector> handlers_; - std::mutex handler_mutex_; - std::vector> connect_handlers_; - std::mutex connect_handler_mutex_; - std::vector> disconnect_handlers_; - std::mutex disconnect_handler_mutex_; - size_t next_client_id_ = 1; - std::thread io_thread_; -}; - -SocketHub::SocketHub(bool use_ssl) : impl_(std::make_unique(use_ssl)) {} - -SocketHub::~SocketHub() = default; - -void SocketHub::start(int port) { impl_->start(port); } - -void SocketHub::stop() { impl_->stop(); } - -void SocketHub::addHandler( - const std::function& handler) { - impl_->addHandler(handler); -} - -void SocketHub::addConnectHandler(const std::function& handler) { - impl_->addConnectHandler(handler); -} - -void SocketHub::addDisconnectHandler( - const std::function& handler) { - impl_->addDisconnectHandler(handler); -} - -void SocketHub::broadcastMessage(const std::string& message) { - impl_->broadcastMessage(message); -} - -void SocketHub::sendMessageToClient(size_t client_id, - const std::string& message) { - impl_->sendMessageToClient(client_id, message); -} - -auto SocketHub::isRunning() const -> bool { return impl_->isRunning(); } - -// Definitions for Impl -void SocketHub::Impl::start(int port) { - asio::ip::tcp::endpoint endpoint(asio::ip::tcp::v4(), port); - acceptor_.open(endpoint.protocol()); - acceptor_.set_option(asio::ip::tcp::acceptor::reuse_address(true)); - acceptor_.bind(endpoint); - acceptor_.listen(); - - is_running_ = true; - doAccept(); - - io_thread_ = std::thread([this]() { io_context_.run(); }); - log("SocketHub started."); -} - -void SocketHub::Impl::stop() { - if (is_running_) { - is_running_ = false; - io_context_.stop(); - disconnectAllClients(); - if (io_thread_.joinable()) - io_thread_.join(); - log("SocketHub stopped."); - } -} - -void SocketHub::Impl::addHandler( - const std::function& handler) { - std::lock_guard lock(handler_mutex_); - handlers_.push_back(handler); -} - -void SocketHub::Impl::addConnectHandler( - const std::function& handler) { - std::lock_guard lock(connect_handler_mutex_); - connect_handlers_.push_back(handler); -} - -void SocketHub::Impl::addDisconnectHandler( - const std::function& handler) { - std::lock_guard lock(disconnect_handler_mutex_); - disconnect_handlers_.push_back(handler); -} - -void SocketHub::Impl::broadcastMessage(const std::string& message) { - std::lock_guard lock(client_mutex_); - for (const auto& [id, socket] : clients_) { - asio::async_write(*socket, asio::buffer(message), - [](std::error_code ec, std::size_t) { - if (ec) { - std::cerr - << "Broadcast error: " << ec.message() - << std::endl; - } - }); - } - log("Broadcasted message: " + message); -} - -void SocketHub::Impl::sendMessageToClient(size_t client_id, - const std::string& message) { - std::lock_guard lock(client_mutex_); - auto it = clients_.find(client_id); - if (it != clients_.end()) { - asio::async_write(*it->second, asio::buffer(message), - [](std::error_code ec, std::size_t) { - if (ec) { - std::cerr << "Send error: " << ec.message() - << std::endl; - } - }); - log("Sent message to client " + std::to_string(client_id) + ": " + - message); - } -} - -[[nodiscard]] auto SocketHub::Impl::isRunning() const -> bool { - return is_running_; -} - -// Private members and methods -void SocketHub::Impl::doAccept() { - auto socket = std::make_shared(io_context_); - acceptor_.async_accept(*socket, [this, socket](std::error_code ec) { - if (!ec) { - handleNewConnection(socket); - doRead(socket); - log("New client connected."); - } - if (is_running_) { - doAccept(); - } - }); -} - -void SocketHub::Impl::handleNewConnection( - std::shared_ptr socket) { - std::lock_guard lock(client_mutex_); - size_t client_id = next_client_id_++; - clients_[client_id] = socket; - for (const auto& handler : connect_handlers_) { - handler(client_id); - } -} - -void SocketHub::Impl::doRead(std::shared_ptr socket) { - auto buffer = std::make_shared>(1024); - socket->async_read_some( - asio::buffer(*buffer), - [this, socket, buffer](std::error_code ec, std::size_t length) { - if (!ec) { - std::string message(buffer->data(), length); - handleIncomingMessage(message, socket); - doRead(socket); - } else { - handleDisconnect(socket); - } - }); -} - -void SocketHub::Impl::handleIncomingMessage( - const std::string& message, std::shared_ptr socket) { - size_t client_id = getClientId(socket); - std::lock_guard lock(handler_mutex_); - for (const auto& handler : handlers_) { - handler(message, client_id); - } - log("Received message from client " + std::to_string(client_id) + ": " + - message); -} - -void SocketHub::Impl::handleDisconnect( - std::shared_ptr socket) { - size_t client_id = getClientId(socket); - { - std::lock_guard lock(client_mutex_); - clients_.erase(client_id); - } - for (const auto& handler : disconnect_handlers_) { - handler(client_id); - } - log("Client " + std::to_string(client_id) + " disconnected."); -} - -void SocketHub::Impl::disconnectAllClients() { - std::lock_guard lock(client_mutex_); - for (auto& [id, socket] : clients_) { - socket->close(); - } - clients_.clear(); -} - -size_t SocketHub::Impl::getClientId( - const std::shared_ptr& socket) { - std::lock_guard lock(client_mutex_); - for (const auto& [id, sock] : clients_) { - if (sock == socket) { - return id; - } - } - return 0; // Should not happen unless the socket is not tracked (edge case) -} - -void SocketHub::Impl::log(const std::string& message) { - // Simple console logging - std::cout << "[SocketHub] " << message << std::endl; -} - -} // namespace atom::async::connection diff --git a/src/atom/connection/async_sockethub.hpp b/src/atom/connection/async_sockethub.hpp deleted file mode 100644 index 2ff861ca..00000000 --- a/src/atom/connection/async_sockethub.hpp +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef ATOM_CONNECTION_ASYNC_SOCKETHUB_HPP -#define ATOM_CONNECTION_ASYNC_SOCKETHUB_HPP - -#include -#include -#include -#include -#include - -namespace atom::async::connection { - -class SocketHub { -public: - SocketHub(bool use_ssl = false); - ~SocketHub(); - - void start(int port); - void stop(); - - void addHandler( - const std::function& handler); - void addConnectHandler(const std::function& handler); - void addDisconnectHandler(const std::function& handler); - - void broadcastMessage(const std::string& message); - void sendMessageToClient(size_t client_id, const std::string& message); - - [[nodiscard]] auto isRunning() const -> bool; - -private: - class Impl; - std::unique_ptr impl_; -}; - -} // namespace atom::async::connection - -#endif // ATOM_CONNECTION_ASYNC_SOCKETHUB_HPP diff --git a/src/atom/connection/async_tcpclient.cpp b/src/atom/connection/async_tcpclient.cpp deleted file mode 100644 index 231c87a5..00000000 --- a/src/atom/connection/async_tcpclient.cpp +++ /dev/null @@ -1,313 +0,0 @@ -#include "async_tcpclient.hpp" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace atom::async::connection { - -class TcpClient::Impl { -public: - Impl(bool use_ssl) - : io_context_(), - ssl_context_(asio::ssl::context::sslv23), - socket_(use_ssl ? (asio::ip::tcp::socket(io_context_)) - : (ssl_socket_t(io_context_, ssl_context_))), - use_ssl_(use_ssl), - connected_(false), - reconnect_attempts_(0), - heartbeat_interval_(5000), - total_bytes_sent_(0), - total_bytes_received_(0) { - if (use_ssl_) { - ssl_context_.set_verify_mode(asio::ssl::verify_peer); - } - } - - ~Impl() { disconnect(); } - - bool connect( - const std::string& host, int port, - std::chrono::milliseconds timeout = std::chrono::milliseconds::zero()) { - last_host_ = host; - last_port_ = port; - - try { - asio::ip::tcp::resolver resolver(io_context_); - auto endpoints = resolver.resolve(host, std::to_string(port)); - - asio::error_code ec; - asio::connect(socket_, endpoints, ec); - - if (ec) { - logError(ec.message()); - return false; - } - - if (use_ssl_) { - asio::error_code ssl_ec; - socket_.handshake(asio::ssl::stream_base::client, ssl_ec); - if (ssl_ec) { - logError(ssl_ec.message()); - return false; - } - } - - connected_ = true; - if (on_connected_) - on_connected_(); - - startReceiving(1024); - startHeartbeat(); - - io_thread_ = std::thread([this]() { io_context_.run(); }); - - logInfo("Connected to server."); - return true; - } catch (const std::exception& e) { - logError(e.what()); - return false; - } - } - - void disconnect() { - if (connected_) { - if (use_ssl_) { - socket_.lowest_layer().close(); - } else { - socket_.lowest_layer().close(); - } - connected_ = false; - if (on_disconnected_) - on_disconnected_(); - logInfo("Disconnected from server."); - } - - if (io_thread_.joinable()) { - io_context_.stop(); - io_thread_.join(); - } - } - - void enableReconnection(int attempts) { reconnect_attempts_ = attempts; } - - void setHeartbeatInterval(std::chrono::milliseconds interval) { - heartbeat_interval_ = interval; - } - - bool send(const std::vector& data) { - if (!connected_) { - logError("Not connected to any server."); - return false; - } - - try { - auto bytes_written = asio::write(socket_, asio::buffer(data)); - total_bytes_sent_ += bytes_written; - logInfo("Sent data of size: " + std::to_string(bytes_written)); - return true; - } catch (const std::exception& e) { - logError(e.what()); - return false; - } - } - - std::future> receive( - size_t size, - std::chrono::milliseconds timeout = std::chrono::milliseconds::zero()) { - return std::async(std::launch::async, [=, this]() { - std::vector data(size); - try { - auto bytes_read = asio::read(socket_, asio::buffer(data, size)); - total_bytes_received_ += bytes_read; - logInfo("Received data of size: " + std::to_string(bytes_read)); - return data; - } catch (const std::exception& e) { - logError(e.what()); - } - return data; - }); - } - - [[nodiscard]] bool isConnected() const { return connected_; } - - [[nodiscard]] std::string getErrorMessage() const { return last_error_; } - - void setOnConnectedCallback(const OnConnectedCallback& callback) { - on_connected_ = callback; - } - - void setOnDisconnectedCallback(const OnDisconnectedCallback& callback) { - on_disconnected_ = callback; - } - - void setOnDataReceivedCallback(const OnDataReceivedCallback& callback) { - on_data_received_ = callback; - } - - void setOnErrorCallback(const OnErrorCallback& callback) { - on_error_ = callback; - } - -private: - using ssl_socket_t = asio::ssl::stream; - - void startReceiving(size_t bufferSize) { - receive_buffer_.resize(bufferSize); - doReceive(); - } - - void doReceive() { - socket_.async_read_some( - asio::buffer(receive_buffer_), - [this](std::error_code ec, std::size_t length) { - if (!ec) { - total_bytes_received_ += length; - if (on_data_received_) { - on_data_received_(std::vector( - receive_buffer_.begin(), - receive_buffer_.begin() + length)); - } - doReceive(); - } else { - handleDisconnect(ec.message()); - } - }); - } - - void startHeartbeat() { - heartbeat_timer_.expires_after(heartbeat_interval_); - heartbeat_timer_.async_wait([this](const std::error_code& ec) { - if (!ec && connected_) { - send(std::vector{'P'}); // Example ping message - startHeartbeat(); // Re-schedule the heartbeat - } - }); - } - - void handleDisconnect(const std::string& error) { - connected_ = false; - if (on_disconnected_) - on_disconnected_(); - - logError("Disconnected due to: " + error); - - reconnect(); - } - - void reconnect() { - int attempts = 0; - while (attempts < reconnect_attempts_ && !connected_) { - attempts++; - if (connect(last_host_, last_port_)) { - logInfo("Reconnected after " + std::to_string(attempts) + - " attempts."); - return; - } - - std::this_thread::sleep_for(std::chrono::seconds(1) * - attempts); - } - - if (!connected_ && on_error_) { - on_error_("Reconnection failed after " + - std::to_string(reconnect_attempts_) + " attempts."); - } - } - - void logInfo(const std::string& message) { - std::cout << "[INFO] " << message << std::endl; - } - - void logError(const std::string& message) { - std::cerr << "[ERROR] " << message << std::endl; - last_error_ = message; - } - - asio::io_context io_context_; - asio::ssl::context ssl_context_; - ssl_socket_t socket_; - asio::steady_timer heartbeat_timer_{io_context_}; - std::thread io_thread_; - - bool use_ssl_; - bool connected_; - std::string last_error_; - std::vector receive_buffer_; - - std::string last_host_; - int last_port_; - - OnConnectedCallback on_connected_; - OnDisconnectedCallback on_disconnected_; - OnDataReceivedCallback on_data_received_; - OnErrorCallback on_error_; - - int reconnect_attempts_; - std::chrono::milliseconds heartbeat_interval_; - - std::atomic total_bytes_sent_; - std::atomic total_bytes_received_; -}; - -TcpClient::TcpClient(bool use_ssl) : impl_(std::make_unique(use_ssl)) {} - -TcpClient::~TcpClient() = default; - -bool TcpClient::connect(const std::string& host, int port, - std::chrono::milliseconds timeout) { - return impl_->connect(host, port, timeout); -} - -void TcpClient::disconnect() { impl_->disconnect(); } - -void TcpClient::enableReconnection(int attempts) { - impl_->enableReconnection(attempts); -} - -void TcpClient::setHeartbeatInterval(std::chrono::milliseconds interval) { - impl_->setHeartbeatInterval(interval); -} - -bool TcpClient::send(const std::vector& data) { - return impl_->send(data); -} - -std::future> TcpClient::receive( - size_t size, std::chrono::milliseconds timeout) { - return impl_->receive(size, timeout); -} - -bool TcpClient::isConnected() const { return impl_->isConnected(); } - -std::string TcpClient::getErrorMessage() const { - return impl_->getErrorMessage(); -} - -void TcpClient::setOnConnectedCallback(const OnConnectedCallback& callback) { - impl_->setOnConnectedCallback(callback); -} - -void TcpClient::setOnDisconnectedCallback( - const OnDisconnectedCallback& callback) { - impl_->setOnDisconnectedCallback(callback); -} - -void TcpClient::setOnDataReceivedCallback( - const OnDataReceivedCallback& callback) { - impl_->setOnDataReceivedCallback(callback); -} - -void TcpClient::setOnErrorCallback(const OnErrorCallback& callback) { - impl_->setOnErrorCallback(callback); -} - -} // namespace atom::async::connection diff --git a/src/atom/connection/async_tcpclient.hpp b/src/atom/connection/async_tcpclient.hpp deleted file mode 100644 index e8634c6b..00000000 --- a/src/atom/connection/async_tcpclient.hpp +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef ATOM_CONNECTION_ASYNC_TCPCLIENT_HPP -#define ATOM_CONNECTION_ASYNC_TCPCLIENT_HPP - -#include -#include -#include -#include -#include -#include - -namespace atom::async::connection { - -class TcpClient { -public: - using OnConnectedCallback = std::function; - using OnDisconnectedCallback = std::function; - using OnDataReceivedCallback = - std::function&)>; - using OnErrorCallback = std::function; - - TcpClient(bool use_ssl = false); - ~TcpClient(); - - bool connect( - const std::string& host, int port, - std::chrono::milliseconds timeout = std::chrono::milliseconds::zero()); - - void disconnect(); - - void enableReconnection(int attempts); - void setHeartbeatInterval(std::chrono::milliseconds interval); - - bool send(const std::vector& data); - - std::future> receive( - size_t size, - std::chrono::milliseconds timeout = std::chrono::milliseconds::zero()); - - [[nodiscard]] bool isConnected() const; - [[nodiscard]] std::string getErrorMessage() const; - - void setOnConnectedCallback(const OnConnectedCallback& callback); - void setOnDisconnectedCallback(const OnDisconnectedCallback& callback); - void setOnDataReceivedCallback(const OnDataReceivedCallback& callback); - void setOnErrorCallback(const OnErrorCallback& callback); - -private: - class Impl; - std::unique_ptr impl_; -}; - -} // namespace atom::async::connection - -#endif // ATOM_CONNECTION_ASYNC_TCPCLIENT_HPP diff --git a/src/atom/connection/async_udpclient.cpp b/src/atom/connection/async_udpclient.cpp deleted file mode 100644 index b2106700..00000000 --- a/src/atom/connection/async_udpclient.cpp +++ /dev/null @@ -1,142 +0,0 @@ -#include "async_udpclient.hpp" - -#include -#include -#include - -namespace atom::async::connection { - -class UdpClient::Impl { -public: - Impl() : io_context_(), socket_(io_context_), is_receiving_(false) {} - - bool bind(int port) { - try { - asio::ip::udp::endpoint endpoint(asio::ip::udp::v4(), port); - socket_.open(endpoint.protocol()); - socket_.bind(endpoint); - return true; - } catch (...) { - return false; - } - } - - bool send(const std::string& host, int port, - const std::vector& data) { - try { - asio::ip::udp::resolver resolver(io_context_); - asio::ip::udp::endpoint destination = - *resolver.resolve(host, std::to_string(port)).begin(); - socket_.send_to(asio::buffer(data), destination); - return true; - } catch (...) { - return false; - } - } - - std::vector receive(size_t size, std::string& remoteHost, - int& remotePort, - std::chrono::milliseconds timeout) { - std::vector data(size); - asio::ip::udp::endpoint senderEndpoint; - asio::error_code ec; - socket_.receive_from(asio::buffer(data), senderEndpoint, 0, ec); - if (!ec) { - remoteHost = senderEndpoint.address().to_string(); - remotePort = senderEndpoint.port(); - return data; - } - return {}; - } - - void setOnDataReceivedCallback(const OnDataReceivedCallback& callback) { - onDataReceivedCallback_ = callback; - } - - void setOnErrorCallback(const OnErrorCallback& callback) { - onErrorCallback_ = callback; - } - - void startReceiving(size_t bufferSize) { - is_receiving_ = true; - receive_buffer_.resize(bufferSize); - doReceive(); - receive_thread_ = std::thread([this] { io_context_.run(); }); - } - - void stopReceiving() { - is_receiving_ = false; - socket_.close(); - if (receive_thread_.joinable()) { - receive_thread_.join(); - } - } - -private: - void doReceive() { - if (!is_receiving_) - return; - - socket_.async_receive_from( - asio::buffer(receive_buffer_), remote_endpoint_, - [this](std::error_code ec, std::size_t bytes_recvd) { - if (!ec && bytes_recvd > 0) { - if (onDataReceivedCallback_) { - auto data = std::vector( - receive_buffer_.begin(), - receive_buffer_.begin() + bytes_recvd); - onDataReceivedCallback_( - data, remote_endpoint_.address().to_string(), - remote_endpoint_.port()); - } - doReceive(); - } else { - if (onErrorCallback_) { - onErrorCallback_("Receive error"); - } - } - }); - } - - asio::io_context io_context_; - asio::ip::udp::socket socket_; - asio::ip::udp::endpoint remote_endpoint_; - std::vector receive_buffer_; - std::thread receive_thread_; - bool is_receiving_; - OnDataReceivedCallback onDataReceivedCallback_; - OnErrorCallback onErrorCallback_; -}; - -UdpClient::UdpClient() : impl_(std::make_unique()) {} -UdpClient::~UdpClient() = default; - -bool UdpClient::bind(int port) { return impl_->bind(port); } - -bool UdpClient::send(const std::string& host, int port, - const std::vector& data) { - return impl_->send(host, port, data); -} - -std::vector UdpClient::receive(size_t size, std::string& remoteHost, - int& remotePort, - std::chrono::milliseconds timeout) { - return impl_->receive(size, remoteHost, remotePort, timeout); -} - -void UdpClient::setOnDataReceivedCallback( - const OnDataReceivedCallback& callback) { - impl_->setOnDataReceivedCallback(callback); -} - -void UdpClient::setOnErrorCallback(const OnErrorCallback& callback) { - impl_->setOnErrorCallback(callback); -} - -void UdpClient::startReceiving(size_t bufferSize) { - impl_->startReceiving(bufferSize); -} - -void UdpClient::stopReceiving() { impl_->stopReceiving(); } - -} // namespace atom::async::connection diff --git a/src/atom/connection/async_udpclient.hpp b/src/atom/connection/async_udpclient.hpp deleted file mode 100644 index 1a2eb20a..00000000 --- a/src/atom/connection/async_udpclient.hpp +++ /dev/null @@ -1,58 +0,0 @@ -/* - * udpclient.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* -Date: 2024-5-24 -Description: UDP Client Class -*************************************************/ - -#ifndef ATOM_CONNECTION_ASYNC_UDPCLIENT_HPP -#define ATOM_CONNECTION_ASYNC_UDPCLIENT_HPP - -#include -#include -#include -#include -#include -#include - -namespace atom::async::connection { - -/** - * @class UdpClient - * @brief Represents a UDP client for sending and receiving datagrams. - */ -class UdpClient { -public: - using OnDataReceivedCallback = - std::function&, const std::string&, int)>; - using OnErrorCallback = std::function; - - UdpClient(); - ~UdpClient(); - - UdpClient(const UdpClient&) = delete; - UdpClient& operator=(const UdpClient&) = delete; - - bool bind(int port); - bool send(const std::string& host, int port, const std::vector& data); - std::vector receive( - size_t size, std::string& remoteHost, int& remotePort, - std::chrono::milliseconds timeout = std::chrono::milliseconds::zero()); - - void setOnDataReceivedCallback(const OnDataReceivedCallback& callback); - void setOnErrorCallback(const OnErrorCallback& callback); - - void startReceiving(size_t bufferSize); - void stopReceiving(); - -private: - class Impl; - std::unique_ptr impl_; -}; - -} // namespace atom::async::connection -#endif // ATOM_CONNECTION_ASYNC_UDPCLIENT_HPP diff --git a/src/atom/connection/async_udpserver.cpp b/src/atom/connection/async_udpserver.cpp deleted file mode 100644 index 43b443d6..00000000 --- a/src/atom/connection/async_udpserver.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/* - * udp_server.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-1-4 - -Description: A simple Asio-based UDP server. - -*************************************************/ - -#include "async_udpserver.hpp" - -#include -#include -#include -#include - - -namespace atom::connection { - -constexpr std::size_t BUFFER_SIZE = 1024; - -class UdpSocketHub::Impl { -public: - Impl() : socket_(io_context_), running_(false), data_{} {} - - ~Impl() { stop(); } - - Impl(const Impl&) = delete; - Impl& operator=(const Impl&) = delete; - Impl(Impl&&) = delete; - Impl& operator=(Impl&&) = delete; - - void start(unsigned short port) { - if (running_) { - return; - } - - asio::ip::udp::endpoint endpoint(asio::ip::udp::v4(), port); - socket_.open(endpoint.protocol()); - socket_.bind(endpoint); - - running_ = true; - doReceive(); - - io_thread_ = std::thread([this] { io_context_.run(); }); - } - - void stop() { - if (!running_) { - return; - } - - running_ = false; - socket_.close(); - io_context_.stop(); - - if (io_thread_.joinable()) { - io_thread_.join(); - } - } - - [[nodiscard]] auto isRunning() const -> bool { return running_; } - - void addMessageHandler(MessageHandler handler) { - handlers_.push_back(std::move(handler)); - } - - void removeMessageHandler(MessageHandler handler) { - handlers_.erase( - std::remove_if( - handlers_.begin(), handlers_.end(), - [&](const MessageHandler& handlerToRemove) { - return handler.target() == - handlerToRemove.target(); - }), - handlers_.end()); - } - - void sendTo(const std::string& message, const std::string& ipAddress, - unsigned short port) { - if (!running_) { - std::cerr << "Server is not running." << std::endl; - return; - } - - asio::ip::udp::endpoint endpoint(asio::ip::make_address(ipAddress), - port); - socket_.async_send_to( - asio::buffer(message), endpoint, - [](std::error_code /*errorCode*/, std::size_t /*bytesSent*/) {}); - } - -private: - void doReceive() { - socket_.async_receive_from( - asio::buffer(data_), senderEndpoint_, - [this](std::error_code errorCode, std::size_t bytesReceived) { - if (!errorCode && bytesReceived > 0) { - std::string message(data_.data(), bytesReceived); - std::string senderIp = - senderEndpoint_.address().to_string(); - unsigned short senderPort = senderEndpoint_.port(); - - for (const auto& handler : handlers_) { - handler(message, senderIp, senderPort); - } - doReceive(); - } - }); - } - - asio::io_context io_context_; - asio::ip::udp::socket socket_; - asio::ip::udp::endpoint senderEndpoint_; - std::array data_; - std::vector handlers_; - std::thread io_thread_; - bool running_ = false; -}; - -UdpSocketHub::UdpSocketHub() : impl_(std::make_unique()) {} - -UdpSocketHub::~UdpSocketHub() = default; - -void UdpSocketHub::start(unsigned short port) { impl_->start(port); } - -void UdpSocketHub::stop() { impl_->stop(); } - -auto UdpSocketHub::isRunning() const -> bool { return impl_->isRunning(); } - -void UdpSocketHub::addMessageHandler(MessageHandler handler) { - impl_->addMessageHandler(std::move(handler)); -} - -void UdpSocketHub::removeMessageHandler(MessageHandler handler) { - impl_->removeMessageHandler(std::move(handler)); -} - -void UdpSocketHub::sendTo(const std::string& message, - const std::string& ipAddress, unsigned short port) { - impl_->sendTo(message, ipAddress, port); -} - -} // namespace atom::connection diff --git a/src/atom/connection/async_udpserver.hpp b/src/atom/connection/async_udpserver.hpp deleted file mode 100644 index f348b704..00000000 --- a/src/atom/connection/async_udpserver.hpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - * udp_server.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-1-4 - -Description: A simple Asio-based UDP server. - -*************************************************/ - -#ifndef ATOM_CONNECTION_ASYNC_UDPSERVER_HPP -#define ATOM_CONNECTION_ASYNC_UDPSERVER_HPP - -#include -#include -#include - -namespace atom::connection { - -/** - * @class UdpSocketHub - * @brief Represents a hub for managing UDP sockets and message handling using - * Asio. - */ -class UdpSocketHub { -public: - using MessageHandler = std::function; - - UdpSocketHub(); - ~UdpSocketHub(); - - UdpSocketHub(const UdpSocketHub&) = delete; - UdpSocketHub& operator=(const UdpSocketHub&) = delete; - - void start(unsigned short port); - void stop(); - bool isRunning() const; - - void addMessageHandler(MessageHandler handler); - void removeMessageHandler(MessageHandler handler); - void sendTo(const std::string& message, const std::string& ip, - unsigned short port); - -private: - class Impl; - std::unique_ptr impl_; -}; - -} // namespace atom::connection - -#endif diff --git a/src/atom/connection/fifoclient.cpp b/src/atom/connection/fifoclient.cpp deleted file mode 100644 index c85f6c16..00000000 --- a/src/atom/connection/fifoclient.cpp +++ /dev/null @@ -1,195 +0,0 @@ -/* - * fifoclient.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-6-1 - -Description: FIFO Client - -*************************************************/ - -#include "fifoclient.hpp" - -#include -#include - -#ifdef _WIN32 -#include -#else -#include -#include -#include -#include -#endif - -namespace atom::connection { -struct FifoClient::Impl { -#ifdef _WIN32 - HANDLE fifoHandle{nullptr}; -#else - int fifoFd{-1}; -#endif - std::string fifoPath; - -#ifdef _WIN32 - Impl(std::string_view path) : fifoPath(path) { - fifoHandle = - CreateFileA(fifoPath.c_str(), GENERIC_READ | GENERIC_WRITE, 0, - nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); - if (fifoHandle == INVALID_HANDLE_VALUE) - throw std::runtime_error("Failed to open FIFO pipe"); - } -#else - Impl(std::string_view path) : fifoPath(path) { - fifoFd = open(fifoPath.c_str(), O_RDWR | O_NONBLOCK); - if (fifoFd == -1) - throw std::system_error(errno, std::generic_category(), - "Failed to open FIFO pipe"); - } -#endif - - ~Impl() { close(); } - - bool isOpen() const { -#ifdef _WIN32 - return fifoHandle != INVALID_HANDLE_VALUE; -#else - return fifoFd != -1; -#endif - } - - void close() { -#ifdef _WIN32 - if (isOpen()) { - CloseHandle(fifoHandle); - fifoHandle = INVALID_HANDLE_VALUE; - } -#else - if (isOpen()) { - ::close(fifoFd); - fifoFd = -1; - } -#endif - } - - bool write(std::string_view data, - std::optional timeout) { - std::vector buffer(data.begin(), data.end()); - buffer.push_back('\0'); - -#ifdef _WIN32 - DWORD bytesWritten; - if (timeout) { - COMMTIMEOUTS timeouts{}; - timeouts.WriteTotalTimeoutConstant = - static_cast(timeout->count()); - SetCommTimeouts(fifoHandle, &timeouts); - bool success = WriteFile(fifoHandle, buffer.data(), - static_cast(buffer.size()), - &bytesWritten, nullptr) != 0; - timeouts.WriteTotalTimeoutConstant = 0; - SetCommTimeouts(fifoHandle, &timeouts); - return success; - } - return WriteFile(fifoHandle, buffer.data(), - static_cast(buffer.size()), &bytesWritten, - nullptr) != 0; -#else - if (!timeout) { - return ::write(fifoFd, buffer.data(), buffer.size()) != -1; - } else { - fd_set writeFds; - FD_ZERO(&writeFds); - FD_SET(fifoFd, &writeFds); - timeval tv{}; - tv.tv_sec = timeout->count() / 1000; - tv.tv_usec = (timeout->count() % 1000) * 1000; - int result = select(fifoFd + 1, nullptr, &writeFds, nullptr, &tv); - if (result <= 0) - return false; - return ::write(fifoFd, buffer.data(), buffer.size()) != -1; - } -#endif - } - - std::optional read( - std::optional timeout) { - std::string data; - char buffer[1024]; - -#ifdef _WIN32 - DWORD bytesRead; - if (timeout) { - COMMTIMEOUTS timeouts{}; - timeouts.ReadTotalTimeoutConstant = - static_cast(timeout->count()); - SetCommTimeouts(fifoHandle, &timeouts); - if (ReadFile(fifoHandle, buffer, sizeof(buffer) - 1, &bytesRead, - nullptr) && - bytesRead > 0) { - buffer[bytesRead] = '\0'; - data += buffer; - } - timeouts.ReadTotalTimeoutConstant = 0; - SetCommTimeouts(fifoHandle, &timeouts); - } else { - while (ReadFile(fifoHandle, buffer, sizeof(buffer) - 1, &bytesRead, - nullptr) && - bytesRead > 0) { - buffer[bytesRead] = '\0'; - data += buffer; - } - } -#else - if (!timeout) { - ssize_t bytesRead; - while ((bytesRead = ::read(fifoFd, buffer, sizeof(buffer) - 1)) > - 0) { - buffer[bytesRead] = '\0'; - data += buffer; - } - } else { - fd_set readFds; - FD_ZERO(&readFds); - FD_SET(fifoFd, &readFds); - timeval tv{}; - tv.tv_sec = timeout->count() / 1000; - tv.tv_usec = (timeout->count() % 1000) * 1000; - int result = select(fifoFd + 1, &readFds, nullptr, nullptr, &tv); - if (result > 0) { - ssize_t bytesRead = ::read(fifoFd, buffer, sizeof(buffer) - 1); - if (bytesRead > 0) { - buffer[bytesRead] = '\0'; - data += buffer; - } - } - } -#endif - - return data.empty() ? std::nullopt : std::make_optional(data); - } -}; - -FifoClient::FifoClient(std::string fifoPath) - : m_impl(std::make_unique(fifoPath)) {} -FifoClient::~FifoClient() = default; - -bool FifoClient::write(std::string_view data, - std::optional timeout) { - return m_impl->write(data, timeout); -} - -std::optional FifoClient::read( - std::optional timeout) { - return m_impl->read(timeout); -} - -bool FifoClient::isOpen() const { return m_impl->isOpen(); } - -void FifoClient::close() { m_impl->close(); } - -} // namespace atom::connection diff --git a/src/atom/connection/fifoclient.hpp b/src/atom/connection/fifoclient.hpp deleted file mode 100644 index 27cec8fa..00000000 --- a/src/atom/connection/fifoclient.hpp +++ /dev/null @@ -1,117 +0,0 @@ -/* - * fifoclient.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-6-1 - -Description: FIFO Client - -*************************************************/ - -#ifndef ATOM_CONNECTION_FIFOCLIENT_HPP -#define ATOM_CONNECTION_FIFOCLIENT_HPP - -#include -#include -#include -#include -#include - -namespace atom::connection { - -#include -#include -#include -#include - -/** - * @brief A class for interacting with a FIFO (First In, First Out) pipe. - * - * This class provides methods to read from and write to a FIFO pipe, - * handling timeouts and ensuring proper resource management. - */ -class FifoClient { -public: - /** - * @brief Constructs a FifoClient with the specified FIFO path. - * - * @param fifoPath The path to the FIFO file to be used for communication. - * - * This constructor opens the FIFO and prepares the client for - * reading and writing operations. - */ - explicit FifoClient(std::string fifoPath); - - /** - * @brief Destroys the FifoClient and closes the FIFO if it is open. - * - * This destructor ensures that all resources are released and the FIFO - * is properly closed to avoid resource leaks. - */ - ~FifoClient(); - - /** - * @brief Writes data to the FIFO. - * - * @param data The data to be written to the FIFO, as a string view. - * @param timeout Optional timeout for the write operation, in milliseconds. - * If not provided, the default is no timeout. - * @return true if the data was successfully written, false if there was an - * error. - * - * This method will attempt to write the specified data to the FIFO. - * If a timeout is specified, the operation will fail if it cannot complete - * within the given duration. - */ - auto write(std::string_view data, - std::optional timeout = std::nullopt) - -> bool; - - /** - * @brief Reads data from the FIFO. - * - * @param timeout Optional timeout for the read operation, in milliseconds. - * If not provided, the default is no timeout. - * @return An optional string containing the data read from the FIFO. - * If there is an error or no data is available, returns - * std::nullopt. - * - * This method will read data from the FIFO. If a timeout is specified, - * it will return std::nullopt if the operation cannot complete within the - * specified time. - */ - auto read(std::optional timeout = std::nullopt) - -> std::optional; - - /** - * @brief Checks if the FIFO is currently open. - * - * @return true if the FIFO is open, false otherwise. - * - * This method can be used to determine if the FIFO client is ready for - * operations. - */ - [[nodiscard]] auto isOpen() const -> bool; - - /** - * @brief Closes the FIFO. - * - * This method closes the FIFO and releases any associated resources. - * It is good practice to call this when you are done using the FIFO - * to ensure proper cleanup. - */ - void close(); - -private: - struct Impl; ///< Forward declaration of the implementation details. - std::unique_ptr m_impl; ///< Pointer to the implementation, using - ///< PImpl idiom for encapsulation. -}; - -} // namespace atom::connection - -#endif // ATOM_CONNECTION_FIFOCLIENT_HPP diff --git a/src/atom/connection/fifoserver.cpp b/src/atom/connection/fifoserver.cpp deleted file mode 100644 index cbcd3927..00000000 --- a/src/atom/connection/fifoserver.cpp +++ /dev/null @@ -1,145 +0,0 @@ -/* - * fifoserver.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-6-1 - -Description: FIFO Server - -*************************************************/ - -#include "fifoserver.hpp" - -#include -#include -#include -#include -#include -#include - -#ifdef _WIN32 -#include -#else -#include -#include -#include -#include -#endif - -namespace atom::connection { - -class FIFOServer::Impl { -public: - explicit Impl(std::string_view fifo_path) - : fifo_path_(fifo_path), stop_server_(false) { - // 创建 FIFO 文件 -#ifdef _WIN32 - CreateNamedPipeA(fifo_path_.c_str(), PIPE_ACCESS_DUPLEX, - PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, - PIPE_UNLIMITED_INSTANCES, 4096, 4096, 0, NULL); -#elif __APPLE__ || __linux__ - mkfifo(fifo_path_.c_str(), 0666); -#endif - } - - ~Impl() { - stop(); - // 删除 FIFO 文件 -#ifdef _WIN32 - DeleteFileA(fifo_path_.c_str()); -#elif __APPLE__ || __linux__ - std::filesystem::remove(fifo_path_); -#endif - } - - void sendMessage(std::string message) { - { - std::scoped_lock lock(queue_mutex_); - message_queue_.emplace(std::move(message)); - } - message_cv_.notify_one(); - } - - void start() { - if (!server_thread_.joinable()) { - stop_server_ = false; - server_thread_ = std::jthread([this] { serverLoop(); }); - } - } - - void stop() { - if (server_thread_.joinable()) { - stop_server_ = true; - message_cv_.notify_one(); - server_thread_.join(); - } - } - - [[nodiscard]] bool isRunning() const { return server_thread_.joinable(); } - -private: - void serverLoop() { - while (!stop_server_) { - std::string message; - { - std::unique_lock lock(queue_mutex_); - message_cv_.wait(lock, [this] { - return stop_server_ || !message_queue_.empty(); - }); - if (stop_server_ && message_queue_.empty()) { - break; - } - if (!message_queue_.empty()) { - message = std::move(message_queue_.front()); - message_queue_.pop(); - } - } - -#ifdef _WIN32 - HANDLE pipe = CreateFileA(fifo_path_.c_str(), GENERIC_WRITE, 0, - NULL, OPEN_EXISTING, 0, NULL); - if (pipe != INVALID_HANDLE_VALUE) { - DWORD bytes_written; - WriteFile(pipe, message.c_str(), - static_cast(message.length()), &bytes_written, - NULL); - CloseHandle(pipe); - } -#elif __APPLE__ || __linux__ - int fd = open(fifo_path_.c_str(), O_WRONLY); - if (fd != -1) { - write(fd, message.c_str(), message.length()); - close(fd); - } -#endif - } - } - - std::string fifo_path_; - std::jthread server_thread_; - std::atomic_bool stop_server_; - std::queue message_queue_; - std::mutex queue_mutex_; - std::condition_variable message_cv_; -}; - -FIFOServer::FIFOServer(std::string_view fifo_path) - : impl_(std::make_unique(fifo_path)) {} - -FIFOServer::~FIFOServer() = default; - -void FIFOServer::sendMessage(std::string message) { - impl_->sendMessage(std::move(message)); -} - -void FIFOServer::start() { impl_->start(); } - -void FIFOServer::stop() { impl_->stop(); } - -bool FIFOServer::isRunning() const { return impl_->isRunning(); } - -} // namespace atom::connection diff --git a/src/atom/connection/fifoserver.hpp b/src/atom/connection/fifoserver.hpp deleted file mode 100644 index 2b71e241..00000000 --- a/src/atom/connection/fifoserver.hpp +++ /dev/null @@ -1,71 +0,0 @@ -/* - * fifoserver.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-6-1 - -Description: FIFO Server - -*************************************************/ - -#ifndef ATOM_CONNECTION_FIFOSERVER_HPP -#define ATOM_CONNECTION_FIFOSERVER_HPP - -#include -#include - -namespace atom::connection { - -/** - * @brief A class representing a server for handling FIFO messages. - */ -class FIFOServer { -public: - /** - * @brief Constructs a new FIFOServer object. - * - * @param fifo_path The path to the FIFO pipe. - */ - explicit FIFOServer(std::string_view fifo_path); - - /** - * @brief Destroys the FIFOServer object. - */ - ~FIFOServer(); - - /** - * @brief Sends a message through the FIFO pipe. - * - * @param message The message to be sent. - */ - void sendMessage(std::string message); - - /** - * @brief Starts the server. - */ - void start(); - - /** - * @brief Stops the server. - */ - void stop(); - - /** - * @brief Checks if the server is running. - * - * @return True if the server is running, false otherwise. - */ - [[nodiscard]] bool isRunning() const; - -private: - class Impl; - std::unique_ptr impl_; -}; - -} // namespace atom::connection - -#endif // ATOM_CONNECTION_FIFOSERVER_HPP diff --git a/src/atom/connection/sockethub.cpp b/src/atom/connection/sockethub.cpp deleted file mode 100644 index 0c942b47..00000000 --- a/src/atom/connection/sockethub.cpp +++ /dev/null @@ -1,356 +0,0 @@ -/* - * sockethub.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-6-1 - -Description: SocketHub类用于管理socket连接的类。 - -*************************************************/ - -#include "sockethub.hpp" - -#include -#include -#include -#include -#include -#include -#include - -#include "atom/log/loguru.hpp" - -#ifdef _WIN32 -#include -#include -#pragma comment(lib, "ws2_32.lib") -#else -#include -#include -#include -#include -#endif - -namespace atom::connection { - -class SocketHubImpl { -public: - SocketHubImpl() - : running_(false), - serverSocket(-1) -#ifdef __linux__ - , - epoll_fd(-1) -#endif - { - } - - ~SocketHubImpl() { stop(); } - - void start(int port); - void stop(); - void addHandler(std::function handler); - [[nodiscard]] auto isRunning() const -> bool; - -private: - static const int maxConnections = 10; - std::atomic running_; -#ifdef _WIN32 - SOCKET serverSocket; - std::vector clients; -#else - int serverSocket; - std::vector clients; - int epoll_fd; -#endif - std::map clientThreads_; - std::mutex clientMutex; -#if __cplusplus >= 202002L - std::jthread acceptThread; -#else - std::unique_ptr acceptThread; -#endif - - std::function handler; - - bool initWinsock(); - void cleanupWinsock(); -#ifdef _WIN32 - void closeSocket(SOCKET socket); -#else - void closeSocket(int socket); -#endif - void acceptConnections(); -#ifdef _WIN32 - void handleClientMessages(SOCKET clientSocket); -#else - void handleClientMessages(int clientSocket); -#endif - void cleanupSocket(); -}; - -SocketHub::SocketHub() : impl_(std::make_unique()) {} - -SocketHub::~SocketHub() = default; - -void SocketHub::start(int port) { impl_->start(port); } - -void SocketHub::stop() { impl_->stop(); } - -void SocketHub::addHandler(std::function handler) { - impl_->addHandler(std::move(handler)); -} - -auto SocketHub::isRunning() const -> bool { return impl_->isRunning(); } - -void SocketHubImpl::start(int port) { - if (running_.load()) { - LOG_F(WARNING, "SocketHub is already running."); - return; - } - - if (!initWinsock()) { - return; - } - - serverSocket = socket(AF_INET, SOCK_STREAM, 0); -#ifdef _WIN32 - if (serverSocket == INVALID_SOCKET) -#else - if (serverSocket < 0) -#endif - { - LOG_F(ERROR, "Failed to create server socket."); - cleanupWinsock(); - return; - } - - sockaddr_in serverAddress{}; - serverAddress.sin_family = AF_INET; - serverAddress.sin_addr.s_addr = INADDR_ANY; - serverAddress.sin_port = htons(port); - -#ifdef _WIN32 - if (bind(serverSocket, reinterpret_cast(&serverAddress), - sizeof(serverAddress)) == SOCKET_ERROR) -#else - if (bind(serverSocket, reinterpret_cast(&serverAddress), - sizeof(serverAddress)) < 0) -#endif - { - LOG_F(ERROR, "Failed to bind server socket."); - cleanupSocket(); - return; - } - -#ifdef _WIN32 - if (listen(serverSocket, maxConnections) == SOCKET_ERROR) -#else - if (listen(serverSocket, maxConnections) < 0) -#endif - { - LOG_F(ERROR, "Failed to listen on server socket."); - cleanupSocket(); - return; - } - -#ifdef __linux__ - epoll_fd = epoll_create1(0); - if (epoll_fd == -1) { - LOG_F(ERROR, "Failed to create epoll file descriptor."); - cleanupSocket(); - return; - } - - struct epoll_event event; - event.events = EPOLLIN; - event.data.fd = serverSocket; - if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, serverSocket, &event) == -1) { - LOG_F(ERROR, "Failed to add server socket to epoll."); - cleanupSocket(); - return; - } -#endif - - running_.store(true); - DLOG_F(INFO, "SocketHub started on port {}", port); - -#if __cplusplus >= 202002L - acceptThread = std::jthread(&SocketHubImpl::acceptConnections, this); -#else - acceptThread = - std::make_unique(&SocketHubImpl::acceptConnections, this); -#endif -} - -void SocketHubImpl::stop() { - if (!running_.load()) { - LOG_F(WARNING, "SocketHub is not running."); - return; - } - - running_.store(false); - - if (acceptThread.joinable()) { - acceptThread.join(); - } - - cleanupSocket(); - cleanupWinsock(); - DLOG_F(INFO, "SocketHub stopped."); -} - -void SocketHubImpl::addHandler(std::function handler) { - this->handler = std::move(handler); -} - -bool SocketHubImpl::initWinsock() { -#ifdef _WIN32 - WSADATA wsaData; - if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { - LOG_F(ERROR, "Failed to initialize Winsock."); - return false; - } -#endif - return true; -} - -void SocketHubImpl::cleanupWinsock() { -#ifdef _WIN32 - WSACleanup(); -#endif -} - -#ifdef _WIN32 -void SocketHubImpl::closeSocket(SOCKET socket) { closesocket(socket); } -#else -void SocketHubImpl::closeSocket(int socket) { close(socket); } -#endif - -void SocketHubImpl::acceptConnections() { -#ifdef __linux__ - struct epoll_event events[maxConnections]; - while (running_.load()) { - int n = epoll_wait(epoll_fd, events, maxConnections, -1); - for (int i = 0; i < n; i++) { - if (events[i].data.fd == serverSocket) { - sockaddr_in clientAddress{}; - socklen_t clientAddressLength = sizeof(clientAddress); - int clientSocket = accept( - serverSocket, reinterpret_cast(&clientAddress), - &clientAddressLength); - - if (clientSocket < 0) { - if (running_.load()) { - LOG_F(ERROR, "Failed to accept client connection."); - } - continue; - } - - struct epoll_event event; - event.events = EPOLLIN | EPOLLET; - event.data.fd = clientSocket; - if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, clientSocket, &event) == - -1) { - LOG_F(ERROR, "Failed to add client socket to epoll."); - closeSocket(clientSocket); - continue; - } - - std::scoped_lock lock(clientMutex); - clients.push_back(clientSocket); - - clientThreads_[clientSocket] = std::jthread( - &SocketHubImpl::handleClientMessages, this, clientSocket); - } else { - handleClientMessages(events[i].data.fd); - } - } - } -#else - while (running_.load()) { - sockaddr_in clientAddress{}; - socklen_t clientAddressLength = sizeof(clientAddress); - - SOCKET clientSocket = - accept(serverSocket, reinterpret_cast(&clientAddress), - &clientAddressLength); - if (clientSocket == INVALID_SOCKET) { - if (running_.load()) { - LOG_F(ERROR, "Failed to accept client connection."); - } - continue; - } - - std::scoped_lock lock(clientMutex); - clients.push_back(clientSocket); - - std::jthread(&SocketHubImpl::handleClientMessages, this, clientSocket) - .detach(); - } -#endif -} - -#ifdef _WIN32 -void SocketHubImpl::handleClientMessages(SOCKET clientSocket) { -#else -void SocketHubImpl::handleClientMessages(int clientSocket) { -#endif - char buffer[1024]; - while (running_.load()) { - memset(buffer, 0, sizeof(buffer)); - int bytesRead = recv(clientSocket, buffer, sizeof(buffer), 0); - if (bytesRead <= 0) { - { - std::scoped_lock lock(clientMutex); - closeSocket(clientSocket); - clients.erase( - std::remove(clients.begin(), clients.end(), clientSocket), - clients.end()); - } -#ifdef __linux__ - clientThreads_.erase(clientSocket); -#endif - break; - } - - std::string message(buffer, bytesRead); - if (handler) { - handler(message); - } - } -} - -void SocketHubImpl::cleanupSocket() { - { - std::scoped_lock lock(clientMutex); - for (const auto &client : clients) { - closeSocket(client); - } - clients.clear(); - } - - closeSocket(serverSocket); - -#ifdef __linux__ - if (epoll_fd != -1) { - close(epoll_fd); - epoll_fd = -1; - } -#endif - - for (auto &pair : clientThreads_) { - if (pair.second.joinable()) { - pair.second.join(); - } - } - clientThreads_.clear(); -} - -auto SocketHubImpl::isRunning() const -> bool { return running_.load(); } - -} // namespace atom::connection diff --git a/src/atom/connection/sockethub.hpp b/src/atom/connection/sockethub.hpp deleted file mode 100644 index 1f3b2f32..00000000 --- a/src/atom/connection/sockethub.hpp +++ /dev/null @@ -1,96 +0,0 @@ -/* - * sockethub.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-6-1 - -Description: SocketHub class for managing socket connections. - -*************************************************/ - -#ifndef ATOM_CONNECTION_SOCKETHUB_HPP -#define ATOM_CONNECTION_SOCKETHUB_HPP - -#include -#include -#include - -namespace atom::connection { - -class SocketHubImpl; - -/** - * @class SocketHub - * @brief Manages socket connections. - * - * The SocketHub class is responsible for managing socket connections. - * It provides functionality to start and stop the socket service, and - * handles multiple client connections. For each client, it spawns a - * thread to handle incoming messages. The class allows for adding - * custom message handlers that are called when a message is received - * from a client. - */ -class SocketHub { -public: - /** - * @brief Constructs a SocketHub instance. - */ - SocketHub(); - - /** - * @brief Destroys the SocketHub instance. - * - * Cleans up resources and stops any ongoing socket operations. - */ - ~SocketHub(); - - /** - * @brief Starts the socket service. - * @param port The port number on which the socket service will listen. - * - * Initializes the socket service and starts listening for incoming - * connections on the specified port. It spawns threads to handle - * each connected client. - */ - void start(int port); - - /** - * @brief Stops the socket service. - * - * Shuts down the socket service, closes all client connections, - * and stops any running threads associated with handling client - * messages. - */ - void stop(); - - /** - * @brief Adds a message handler. - * @param handler A function to handle incoming messages from clients. - * - * The provided handler function will be called with the received - * message as a string parameter. Multiple handlers can be added - * and will be called in the order they are added. - */ - void addHandler(std::function handler); - - /** - * @brief Checks if the socket service is currently running. - * @return True if the socket service is running, false otherwise. - * - * This method returns the status of the socket service, indicating - * whether it is currently active and listening for connections. - */ - [[nodiscard]] auto isRunning() const -> bool; - -private: - std::unique_ptr - impl_; ///< Pointer to the implementation details of SocketHub. -}; - -} // namespace atom::connection - -#endif // ATOM_CONNECTION_SOCKETHUB_HPP diff --git a/src/atom/connection/sshclient.cpp b/src/atom/connection/sshclient.cpp deleted file mode 100644 index f634c464..00000000 --- a/src/atom/connection/sshclient.cpp +++ /dev/null @@ -1,308 +0,0 @@ -/* - * sshclient.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-6-1 - -Description: SSH Client - -*************************************************/ - -#include "sshclient.hpp" - -#include - -#include "atom/error/exception.hpp" - -namespace fs = std::filesystem; - -namespace atom::connection { -SSHClient::SSHClient(const std::string &host, int port) - : host_(host), port_(port), ssh_session_(nullptr), sftp_session_(nullptr) {} - -SSHClient::~SSHClient() { - if (sftp_session_) { - sftp_free(sftp_session_); - } - if (ssh_session_) { - ssh_disconnect(ssh_session_); - ssh_free(ssh_session_); - } -} - -void SSHClient::connect(const std::string &username, - const std::string &password, int timeout) { - ssh_session_ = ssh_new(); - if (!ssh_session_) { - THROW_RUNTIME_ERROR("Failed to create SSH session."); - } - - ssh_options_set(ssh_session_, SSH_OPTIONS_HOST, host_.c_str()); - ssh_options_set(ssh_session_, SSH_OPTIONS_PORT, &port_); - ssh_options_set(ssh_session_, SSH_OPTIONS_USER, username.c_str()); - ssh_options_set(ssh_session_, SSH_OPTIONS_TIMEOUT, &timeout); - - int rc = ssh_connect(ssh_session_); - if (rc != SSH_OK) { - THROW_RUNTIME_ERROR("Failed to connect to SSH server: " + - std::string(ssh_get_error(ssh_session_))); - } - - rc = ssh_userauth_password(ssh_session_, nullptr, password.c_str()); - if (rc != SSH_AUTH_SUCCESS) { - THROW_RUNTIME_ERROR("Failed to authenticate with SSH server: " + - std::string(ssh_get_error(ssh_session_))); - } - - sftp_session_ = sftp_new(ssh_session_); - if (!sftp_session_) { - THROW_RUNTIME_ERROR("Failed to create SFTP session."); - } - - rc = sftp_init(sftp_session_); - if (rc != SSH_OK) { - THROW_RUNTIME_ERROR("Failed to initialize SFTP session: " + - std::string(ssh_get_error(ssh_session_))); - } -} - -bool SSHClient::isConnected() const { - return (ssh_session_ != nullptr && sftp_session_ != nullptr); -} - -void SSHClient::disconnect() { - if (sftp_session_) { - sftp_free(sftp_session_); - sftp_session_ = nullptr; - } - if (ssh_session_) { - ssh_disconnect(ssh_session_); - ssh_free(ssh_session_); - ssh_session_ = nullptr; - } -} - -void SSHClient::executeCommand(const std::string &command, - std::vector &output) { - ssh_channel channel = ssh_channel_new(ssh_session_); - if (!channel) { - THROW_RUNTIME_ERROR("Failed to create SSH channel."); - } - - int rc = ssh_channel_open_session(channel); - if (rc != SSH_OK) { - ssh_channel_free(channel); - THROW_RUNTIME_ERROR("Failed to open SSH channel: " + - std::string(ssh_get_error(ssh_session_))); - } - - rc = ssh_channel_request_exec(channel, command.c_str()); - if (rc != SSH_OK) { - ssh_channel_close(channel); - ssh_channel_free(channel); - THROW_RUNTIME_ERROR("Failed to execute command: " + - std::string(ssh_get_error(ssh_session_))); - } - - char buffer[256]; - int nbytes = 0; - while ((nbytes = ssh_channel_read(channel, buffer, sizeof(buffer), 0)) > - 0) { - output.emplace_back(buffer, nbytes); - } - - if (nbytes < 0) { - ssh_channel_close(channel); - ssh_channel_free(channel); - THROW_RUNTIME_ERROR("Failed to read command output: " + - std::string(ssh_get_error(ssh_session_))); - } - - ssh_channel_send_eof(channel); - ssh_channel_close(channel); - ssh_channel_free(channel); -} - -void SSHClient::executeCommands(const std::vector &commands, - std::vector> &output) { - ssh_channel channel = ssh_channel_new(ssh_session_); - if (!channel) { - THROW_RUNTIME_ERROR("Failed to create SSH channel."); - } - - int rc = ssh_channel_open_session(channel); - if (rc != SSH_OK) { - ssh_channel_free(channel); - THROW_RUNTIME_ERROR("Failed to open SSH channel: " + - std::string(ssh_get_error(ssh_session_))); - } - - for (const auto &cmd : commands) { - rc = ssh_channel_request_exec(channel, cmd.c_str()); - if (rc != SSH_OK) { - ssh_channel_close(channel); - ssh_channel_free(channel); - THROW_RUNTIME_ERROR("Failed to execute command: " + - std::string(ssh_get_error(ssh_session_))); - } - - std::vector cmd_output; - char buffer[256]; - int nbytes = 0; - while ((nbytes = ssh_channel_read(channel, buffer, sizeof(buffer), 0)) > - 0) { - cmd_output.emplace_back(buffer, nbytes); - } - - if (nbytes < 0) { - ssh_channel_close(channel); - ssh_channel_free(channel); - THROW_RUNTIME_ERROR("Failed to read command output: " + - std::string(ssh_get_error(ssh_session_))); - } - - ssh_channel_send_eof(channel); - output.push_back(std::move(cmd_output)); - } - - ssh_channel_close(channel); - ssh_channel_free(channel); -} - -bool SSHClient::fileExists(const std::string &remote_path) const { - sftp_attributes attrs = sftp_stat(sftp_session_, remote_path.c_str()); - if (attrs) { - sftp_attributes_free(attrs); - return true; - } else { - return false; - } -} - -void SSHClient::createDirectory(const std::string &remote_path, int mode) { - int rc = sftp_mkdir(sftp_session_, remote_path.c_str(), mode); - if (rc != SSH_OK) { - THROW_RUNTIME_ERROR("Failed to create remote directory: " + - remote_path); - } -} - -void SSHClient::removeFile(const std::string &remote_path) { - int rc = sftp_unlink(sftp_session_, remote_path.c_str()); - if (rc != SSH_OK) { - THROW_RUNTIME_ERROR("Failed to remove remote file: " + remote_path); - } -} - -void SSHClient::removeDirectory(const std::string &remote_path) { - int rc = sftp_rmdir(sftp_session_, remote_path.c_str()); - if (rc != SSH_OK) { - THROW_RUNTIME_ERROR("Failed to remove remote directory: " + - remote_path); - } -} - -std::vector SSHClient::listDirectory( - const std::string &remote_path) const { - std::vector file_list; - sftp_dir dir = sftp_opendir(sftp_session_, remote_path.c_str()); - if (dir) { - sftp_attributes attributes; - while ((attributes = sftp_readdir(sftp_session_, dir)) != NULL) { - file_list.push_back(attributes->name); - sftp_attributes_free(attributes); - } - sftp_closedir(dir); - } - return file_list; -} - -void SSHClient::rename(const std::string &old_path, - const std::string &new_path) { - int rc = sftp_rename(sftp_session_, old_path.c_str(), new_path.c_str()); - if (rc != SSH_OK) { - THROW_RUNTIME_ERROR("Failed to rename remote file or directory: " + - old_path + " to " + new_path); - } -} - -void SSHClient::getFileInfo(const std::string &remote_path, - sftp_attributes &attrs) { - attrs = sftp_stat(sftp_session_, remote_path.c_str()); - if (!attrs) { - THROW_RUNTIME_ERROR("Failed to get file info for remote path: " + - remote_path); - } -} - -void SSHClient::downloadFile(const std::string &remote_path, - const std::string &local_path) { - sftp_file file = - sftp_open(sftp_session_, remote_path.c_str(), OFN_READONLY, 0); - if (!file) { - THROW_RUNTIME_ERROR("Failed to open remote file for download: " + - remote_path); - } - - FILE *fp = fopen(local_path.c_str(), "wb"); - if (!fp) { - sftp_close(file); - THROW_RUNTIME_ERROR("Failed to open local file for download: " + - local_path); - } - - char buffer[256]; - int nbytes = 0; - while ((nbytes = sftp_read(file, buffer, sizeof(buffer))) > 0) { - fwrite(buffer, 1, nbytes, fp); - } - - fclose(fp); - sftp_close(file); -} - -void SSHClient::uploadFile(const std::string &local_path, - const std::string &remote_path) { - sftp_file file = - sftp_open(sftp_session_, remote_path.c_str(), OF_CREATE, OF_WRITE); - if (!file) { - THROW_RUNTIME_ERROR("Failed to open remote file for upload: " + - remote_path); - } - - FILE *fp = fopen(local_path.c_str(), "rb"); - if (!fp) { - sftp_close(file); - THROW_RUNTIME_ERROR("Failed to open local file for upload: " + - local_path); - } - - char buffer[256]; - int nbytes = 0; - while ((nbytes = fread(buffer, 1, sizeof(buffer), fp)) > 0) { - sftp_write(file, buffer, nbytes); - } - - fclose(fp); - sftp_close(file); -} - -void SSHClient::uploadDirectory(const std::string &local_path, - const std::string &remote_path) { - for (const auto &entry : fs::recursive_directory_iterator(local_path)) { - const auto &path = entry.path(); - auto relativePath = fs::relative(path, local_path); - auto remoteFilePath = remote_path + "/" + relativePath.string(); - - if (entry.is_directory()) { - createDirectory(remoteFilePath); - } else if (entry.is_regular_file()) { - uploadFile(path.string(), remoteFilePath); - } - } -} -} // namespace atom::connection diff --git a/src/atom/connection/sshclient.hpp b/src/atom/connection/sshclient.hpp deleted file mode 100644 index 3bd17e8b..00000000 --- a/src/atom/connection/sshclient.hpp +++ /dev/null @@ -1,195 +0,0 @@ -/* - * sshclient.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-6-1 - -Description: SSH Client - -*************************************************/ - -#ifndef ATOM_CONNECTION_SSHCLIENT_HPP -#define ATOM_CONNECTION_SSHCLIENT_HPP - -#include -#include -#include -#include -#include -#include - -#if __has_include() -#include -#include - -namespace atom::connection { - -constexpr int DEFAULT_SSH_PORT = 22; -constexpr int DEFAULT_TIMEOUT = 10; -constexpr int DEFAULT_MODE = S_NORMAL; - -/** - * @class SSHClient - * @brief A class for SSH client connection and file operations. - */ -class SSHClient { -public: - /** - * @brief Constructor. - * @param host The hostname or IP address of the SSH server. - * @param port The port number of the SSH server. Default is 22. - */ - explicit SSHClient(const std::string &host, int port = DEFAULT_SSH_PORT); - - /** - * @brief Destructor. - */ - ~SSHClient(); - - // Copy constructor - SSHClient(const SSHClient &other) = default; - - // Copy assignment operator - auto operator=(const SSHClient &other) -> SSHClient & = default; - - // Move constructor - SSHClient(SSHClient &&other) noexcept = default; - - // Move assignment operator - auto operator=(SSHClient &&other) noexcept -> SSHClient & = default; - - /** - * @brief Connects to the SSH server. - * @param username The username for authentication. - * @param password The password for authentication. - * @param timeout The connection timeout in seconds. Default is 10 seconds. - * @throws std::runtime_error if connection or authentication fails. - */ - void connect(const std::string &username, const std::string &password, - int timeout = DEFAULT_TIMEOUT); - - /** - * @brief Checks if the SSH client is connected to the server. - * @return true if connected, false otherwise. - */ - [[nodiscard]] auto isConnected() const -> bool; - - /** - * @brief Disconnects from the SSH server. - */ - void disconnect(); - - /** - * @brief Executes a single command on the SSH server. - * @param command The command to execute. - * @param output Output vector to store the command output. - * @throws std::runtime_error if command execution fails. - */ - void executeCommand(const std::string &command, - std::vector &output); - - /** - * @brief Executes multiple commands on the SSH server. - * @param commands Vector of commands to execute. - * @param output Vector of vectors to store the command outputs. - * @throws std::runtime_error if any command execution fails. - */ - void executeCommands(const std::vector &commands, - std::vector> &output); - - /** - * @brief Checks if a file exists on the remote server. - * @param remote_path The path of the remote file. - * @return true if the file exists, false otherwise. - */ - [[nodiscard]] auto fileExists(const std::string &remote_path) const -> bool; - - /** - * @brief Creates a directory on the remote server. - * @param remote_path The path of the remote directory. - * @param mode The permissions of the directory. Default is S_NORMAL. - * @throws std::runtime_error if directory creation fails. - */ - void createDirectory(const std::string &remote_path, - int mode = DEFAULT_MODE); - - /** - * @brief Removes a file from the remote server. - * @param remote_path The path of the remote file. - * @throws std::runtime_error if file removal fails. - */ - void removeFile(const std::string &remote_path); - - /** - * @brief Removes a directory from the remote server. - * @param remote_path The path of the remote directory. - * @throws std::runtime_error if directory removal fails. - */ - void removeDirectory(const std::string &remote_path); - - /** - * @brief Lists the contents of a directory on the remote server. - * @param remote_path The path of the remote directory. - * @return Vector of strings containing the names of the directory contents. - * @throws std::runtime_error if listing directory fails. - */ - auto listDirectory(const std::string &remote_path) const - -> std::vector; - - /** - * @brief Renames a file or directory on the remote server. - * @param old_path The current path of the remote file or directory. - * @param new_path The new path of the remote file or directory. - * @throws std::runtime_error if renaming fails. - */ - void rename(const std::string &old_path, const std::string &new_path); - - /** - * @brief Retrieves file information for a remote file. - * @param remote_path The path of the remote file. - * @param attrs Attribute struct to store the file information. - * @throws std::runtime_error if getting file information fails. - */ - void getFileInfo(const std::string &remote_path, sftp_attributes &attrs); - - /** - * @brief Downloads a file from the remote server. - * @param remote_path The path of the remote file. - * @param local_path The path of the local destination file. - * @throws std::runtime_error if file download fails. - */ - void downloadFile(const std::string &remote_path, - const std::string &local_path); - - /** - * @brief Uploads a file to the remote server. - * @param local_path The path of the local source file. - * @param remote_path The path of the remote destination file. - * @throws std::runtime_error if file upload fails. - */ - void uploadFile(const std::string &local_path, - const std::string &remote_path); - - /** - * @brief Uploads a directory to the remote server. - * @param local_path The path of the local source directory. - * @param remote_path The path of the remote destination directory. - * @throws std::runtime_error if directory upload fails. - */ - void uploadDirectory(const std::string &local_path, - const std::string &remote_path); - -private: - std::string host_; - int port_; - ssh_session ssh_session_; - sftp_session sftp_session_; -}; -} // namespace atom::connection -#endif - -#endif diff --git a/src/atom/connection/sshserver.cpp b/src/atom/connection/sshserver.cpp deleted file mode 100644 index 07d869ae..00000000 --- a/src/atom/connection/sshserver.cpp +++ /dev/null @@ -1,296 +0,0 @@ -/* - * sshserver.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-5-24 - -Description: SSH Server - -*************************************************/ - -#include "sshserver.hpp" - -#include -#include -#include -#include -#include -#include -#include - -#ifdef _WIN32 -#include -#include -#else -#include -#include -#endif - -#include "atom/error/exception.hpp" - -namespace atom::connection { -class SshServer::Impl { -public: - explicit Impl(const std::filesystem::path& configFile) - : configFile_(configFile) { - loadConfig(); - } - - void start() { - if (isRunning()) { - THROW_RUNTIME_ERROR("SSH server is already running"); - } - - saveConfig(); - -#ifdef _WIN32 - std::string command = - "start /b sshd -f \"" + configFile_.string() + "\""; - system(command.c_str()); -#else - std::string command = - "/usr/sbin/sshd -f \"" + configFile_.string() + "\" -D &"; - system(command.c_str()); -#endif - } - - void stop() { - if (!isRunning()) { - THROW_RUNTIME_ERROR("SSH server is not running"); - } - -#ifdef _WIN32 - system("taskkill /F /IM sshd.exe > nul"); -#else - system("pkill -f sshd"); -#endif - } - - bool isRunning() const { -#ifdef _WIN32 - HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); - if (snapshot == INVALID_HANDLE_VALUE) { - return false; - } - - PROCESSENTRY32 entry{}; - entry.dwSize = sizeof(entry); - - if (!Process32First(snapshot, &entry)) { - CloseHandle(snapshot); - return false; - } - - do { - if (_stricmp(entry.szExeFile, "sshd.exe") == 0) { - CloseHandle(snapshot); - return true; - } - } while (Process32Next(snapshot, &entry)); - - CloseHandle(snapshot); - return false; -#else - std::array buffer{}; - std::string result; - std::unique_ptr pipe(popen("pgrep sshd", "r"), - pclose); - if (!pipe) { - THROW_RUNTIME_ERROR("Failed to execute pgrep command"); - } - while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) { - result += buffer.data(); - } - return !result.empty(); -#endif - } - - void setPort(int port) { port_ = port; } - - int getPort() const { return port_; } - - void setListenAddress(const std::string& address) { - listenAddress_ = address; - } - - std::string getListenAddress() const { return listenAddress_; } - - void setHostKey(const std::filesystem::path& keyFile) { - hostKey_ = keyFile; - } - - std::filesystem::path getHostKey() const { return hostKey_; } - - void setAuthorizedKeys(const std::vector& keyFiles) { - authorizedKeys_ = keyFiles; - } - - std::vector getAuthorizedKeys() const { - return authorizedKeys_; - } - - void allowRootLogin(bool allow) { allowRootLogin_ = allow; } - - bool isRootLoginAllowed() const { return allowRootLogin_; } - - void setPasswordAuthentication(bool enable) { - passwordAuthentication_ = enable; - } - - bool isPasswordAuthenticationEnabled() const { - return passwordAuthentication_; - } - - void setSubsystem(const std::string& name, const std::string& command) { - subsystems_[name] = command; - } - - void removeSubsystem(const std::string& name) { subsystems_.erase(name); } - - std::string getSubsystem(const std::string& name) const { - auto it = subsystems_.find(name); - if (it != subsystems_.end()) { - return it->second; - } - return {}; - } - -private: - void loadConfig() { - std::ifstream file(configFile_); - if (!file) { - THROW_RUNTIME_ERROR( - "Failed to open SSH server configuration file"); - } - - std::string line; - while (std::getline(file, line)) { - std::istringstream iss(line); - std::string key, value; - if (std::getline(iss, key, ' ') && std::getline(iss, value)) { - if (key == "Port") { - port_ = std::stoi(value); - } else if (key == "ListenAddress") { - listenAddress_ = value; - } else if (key == "HostKey") { - hostKey_ = value; - } else if (key == "AuthorizedKeysFile") { - authorizedKeys_.push_back(value); - } else if (key == "PermitRootLogin") { - allowRootLogin_ = (value == "yes"); - } else if (key == "PasswordAuthentication") { - passwordAuthentication_ = (value == "yes"); - } else if (key == "Subsystem") { - std::istringstream subsystemIss(value); - std::string subsystemName, subsystemCommand; - if (std::getline(subsystemIss, subsystemName, ' ') && - std::getline(subsystemIss, subsystemCommand)) { - subsystems_[subsystemName] = subsystemCommand; - } - } - } - } - } - - void saveConfig() { - std::ofstream file(configFile_); - if (!file) { - THROW_RUNTIME_ERROR( - "Failed to save SSH server configuration file"); - } - - file << "Port " << port_ << '\n'; - file << "ListenAddress " << listenAddress_ << '\n'; - file << "HostKey " << hostKey_.string() << '\n'; - for (const auto& keyFile : authorizedKeys_) { - file << "AuthorizedKeysFile " << keyFile.string() << '\n'; - } - file << "PermitRootLogin " << (allowRootLogin_ ? "yes" : "no") << '\n'; - file << "PasswordAuthentication " - << (passwordAuthentication_ ? "yes" : "no") << '\n'; - for (const auto& [name, command] : subsystems_) { - file << "Subsystem " << name << " " << command << '\n'; - } - } - - std::filesystem::path configFile_; - int port_ = 22; - std::string listenAddress_ = "0.0.0.0"; - std::filesystem::path hostKey_; - std::vector authorizedKeys_; - bool allowRootLogin_ = false; - bool passwordAuthentication_ = false; - std::unordered_map subsystems_; -}; - -SshServer::SshServer(const std::filesystem::path& configFile) - : impl_(std::make_unique(configFile)) {} - -SshServer::~SshServer() = default; - -void SshServer::start() { impl_->start(); } - -void SshServer::stop() { impl_->stop(); } - -bool SshServer::isRunning() const { return impl_->isRunning(); } - -void SshServer::setPort(int port) { impl_->setPort(port); } - -int SshServer::getPort() const { return impl_->getPort(); } - -void SshServer::setListenAddress(const std::string& address) { - impl_->setListenAddress(address); -} - -std::string SshServer::getListenAddress() const { - return impl_->getListenAddress(); -} - -void SshServer::setHostKey(const std::filesystem::path& keyFile) { - impl_->setHostKey(keyFile); -} - -std::filesystem::path SshServer::getHostKey() const { - return impl_->getHostKey(); -} - -void SshServer::setAuthorizedKeys( - const std::vector& keyFiles) { - impl_->setAuthorizedKeys(keyFiles); -} - -std::vector SshServer::getAuthorizedKeys() const { - return impl_->getAuthorizedKeys(); -} - -void SshServer::allowRootLogin(bool allow) { impl_->allowRootLogin(allow); } - -bool SshServer::isRootLoginAllowed() const { - return impl_->isRootLoginAllowed(); -} - -void SshServer::setPasswordAuthentication(bool enable) { - impl_->setPasswordAuthentication(enable); -} - -bool SshServer::isPasswordAuthenticationEnabled() const { - return impl_->isPasswordAuthenticationEnabled(); -} - -void SshServer::setSubsystem(const std::string& name, - const std::string& command) { - impl_->setSubsystem(name, command); -} - -void SshServer::removeSubsystem(const std::string& name) { - impl_->removeSubsystem(name); -} - -std::string SshServer::getSubsystem(const std::string& name) const { - return impl_->getSubsystem(name); -} -} // namespace atom::connection diff --git a/src/atom/connection/sshserver.hpp b/src/atom/connection/sshserver.hpp deleted file mode 100644 index b36ea71e..00000000 --- a/src/atom/connection/sshserver.hpp +++ /dev/null @@ -1,216 +0,0 @@ -/* - * sshserver.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-5-24 - -Description: SSH Server - -*************************************************/ - -#ifndef ATOM_CONNECTION_SSHSERVER_HPP -#define ATOM_CONNECTION_SSHSERVER_HPP - -#include -#include -#include -#include - -#include "atom/type/noncopyable.hpp" - -#include "atom/macro.hpp" - -namespace atom::connection { -/** - * @class SshServer - * @brief Represents an SSH server for handling secure shell connections. - * - * This class provides methods to configure and manage an SSH server, handling - * client connections and user authentication through various methods including - * public key and password authentication. - */ -class SshServer : public NonCopyable { -public: - /** - * @brief Constructor for SshServer. - * - * Initializes the SSH server with a specified configuration file. - * - * @param configFile The path to the configuration file for the SSH server. - */ - explicit SshServer(const std::filesystem::path& configFile); - - /** - * @brief Destructor for SshServer. - * - * Cleans up resources used by the SSH server. - */ - ~SshServer() override; - - /** - * @brief Starts the SSH server. - * - * This method will begin listening for incoming connections on the - * configured port and address. - */ - void start(); - - /** - * @brief Stops the SSH server. - * - * This method will stop the server from accepting new connections and - * cleanly shut down any existing connections. - */ - void stop(); - - /** - * @brief Checks if the SSH server is currently running. - * - * @return true if the server is running, false otherwise. - */ - ATOM_NODISCARD auto isRunning() const -> bool; - - /** - * @brief Sets the port on which the SSH server listens for connections. - * - * @param port The port number to listen on. - * - * This method updates the server's listening port to the specified value. - */ - void setPort(int port); - - /** - * @brief Gets the port on which the SSH server is listening. - * - * @return The current listening port. - */ - ATOM_NODISCARD auto getPort() const -> int; - - /** - * @brief Sets the address on which the SSH server listens for connections. - * - * @param address The IP address or hostname for listening. - * - * The server will bind to this address, allowing connections from it. - */ - void setListenAddress(const std::string& address); - - /** - * @brief Gets the address on which the SSH server is listening. - * - * @return The current listening address as a string. - */ - ATOM_NODISCARD auto getListenAddress() const -> std::string; - - /** - * @brief Sets the host key file used for SSH connections. - * - * @param keyFile The path to the host key file. - * - * The host key is used to establish the identity of the server, - * enabling secure communication with clients. - */ - void setHostKey(const std::filesystem::path& keyFile); - - /** - * @brief Gets the path to the host key file. - * - * @return The current host key file path. - */ - ATOM_NODISCARD auto getHostKey() const -> std::filesystem::path; - - /** - * @brief Sets the list of authorized public key files for user - * authentication. - * - * @param keyFiles A vector of paths to public key files. - * - * This method updates the SSH server to allow authentication using the - * specified public keys. - */ - void setAuthorizedKeys(const std::vector& keyFiles); - - /** - * @brief Gets the list of authorized public key files. - * - * @return A vector of paths to authorized public key files. - */ - ATOM_NODISCARD auto getAuthorizedKeys() const - -> std::vector; - - /** - * @brief Enables or disables root login to the SSH server. - * - * @param allow true to permit root login, false to deny it. - * - * This method must be configured with caution, as enabling root login - * can pose a security risk. - */ - void allowRootLogin(bool allow); - - /** - * @brief Checks if root login is allowed. - * - * @return true if root login is permitted, false otherwise. - */ - ATOM_NODISCARD auto isRootLoginAllowed() const -> bool; - - /** - * @brief Enables or disables password authentication for the SSH server. - * - * @param enable true to enable password authentication, false to disable - * it. - */ - void setPasswordAuthentication(bool enable); - - /** - * @brief Checks if password authentication is enabled. - * - * @return true if password authentication is enabled, false otherwise. - */ - ATOM_NODISCARD auto isPasswordAuthenticationEnabled() const -> bool; - - /** - * @brief Sets a subsystem for handling a specific command. - * - * @param name The name of the subsystem. - * @param command The command that the subsystem will execute. - * - * This allows for additional functionality to be added to the SSH server, - * such as file transfers or other custom commands. - */ - void setSubsystem(const std::string& name, const std::string& command); - - /** - * @brief Removes a previously set subsystem by name. - * - * @param name The name of the subsystem to remove. - * - * After this method is called, the subsystem will no longer be available. - */ - void removeSubsystem(const std::string& name); - - /** - * @brief Gets the command associated with a subsystem by name. - * - * @param name The name of the subsystem. - * @return The command associated with the subsystem. - * - * If the subsystem does not exist, an empty string may be returned. - */ - ATOM_NODISCARD auto getSubsystem(const std::string& name) const - -> std::string; - -private: - class Impl; ///< Forward declaration of the implementation class. - std::unique_ptr impl_; ///< Pointer to the implementation object - ///< holding the core functionalities. -}; - -} // namespace atom::connection - -#endif // ATOM_CONNECTION_SSHSERVER_HPP diff --git a/src/atom/connection/tcpclient.cpp b/src/atom/connection/tcpclient.cpp deleted file mode 100644 index da33e119..00000000 --- a/src/atom/connection/tcpclient.cpp +++ /dev/null @@ -1,300 +0,0 @@ -/* - * tcpclient.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-5-24 - -Description: TCP Client Class - -*************************************************/ - -#include "tcpclient.hpp" - -#include -#include -#include -#include - -#ifdef _WIN32 -#include -#include -#pragma comment(lib, "ws2_32.lib") -#else -#include -#include -#include -#include -#include -#endif - -#include "atom/error/exception.hpp" - -namespace atom::connection { -class TcpClient::Impl { -public: - Impl() { -#ifdef _WIN32 - WSADATA wsaData; - int result = WSAStartup(MAKEWORD(2, 2), &wsaData); - if (result != 0) { - THROW_RUNTIME_ERROR("WSAStartup failed"); - } -#endif - socket_ = socket(AF_INET, SOCK_STREAM, 0); - if (socket_ < 0) { - THROW_RUNTIME_ERROR("Socket creation failed"); - } - -#ifdef __linux__ - epoll_fd_ = epoll_create1(0); - if (epoll_fd_ == -1) { - THROW_RUNTIME_ERROR("Failed to create epoll file descriptor"); - } -#endif - } - - ~Impl() { - disconnect(); -#ifdef _WIN32 - WSACleanup(); -#endif -#ifdef __linux__ - close(epoll_fd_); -#endif - } - - bool connect(const std::string& host, int port, - std::chrono::milliseconds timeout) { - struct hostent* server = gethostbyname(host.c_str()); - if (server == nullptr) { - errorMessage_ = "Host not found"; - return false; - } - - struct sockaddr_in serverAddress {}; - serverAddress.sin_family = AF_INET; - std::memcpy(&serverAddress.sin_addr.s_addr, server->h_addr, - server->h_length); - serverAddress.sin_port = htons(port); - - if (timeout > std::chrono::milliseconds::zero()) { -#ifdef _WIN32 - DWORD tv = timeout.count(); - setsockopt(socket_, SOL_SOCKET, SO_RCVTIMEO, - reinterpret_cast(&tv), sizeof(tv)); - setsockopt(socket_, SOL_SOCKET, SO_SNDTIMEO, - reinterpret_cast(&tv), sizeof(tv)); -#else - struct timeval tv; - tv.tv_sec = timeout.count() / 1000; - tv.tv_usec = (timeout.count() % 1000) * 1000; - setsockopt(socket_, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)); - setsockopt(socket_, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)); -#endif - } - - if (::connect(socket_, - reinterpret_cast(&serverAddress), - sizeof(serverAddress)) < 0) { - errorMessage_ = "Connection failed"; - return false; - } - - connected_ = true; - -#ifdef __linux__ - struct epoll_event event; - event.events = EPOLLIN | EPOLLOUT; - event.data.fd = socket_; - if (epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, socket_, &event) == -1) { - errorMessage_ = "Failed to add file descriptor to epoll"; - return false; - } -#endif - - return true; - } - - void disconnect() { - if (connected_) { -#ifdef _WIN32 - closesocket(socket_); -#else - close(socket_); -#endif - connected_ = false; - } - } - - bool send(const std::vector& data) { - if (!connected_) { - errorMessage_ = "Not connected"; - return false; - } - - if (::send(socket_, data.data(), data.size(), 0) < 0) { - errorMessage_ = "Send failed"; - return false; - } - - return true; - } - - std::future> receive( - size_t size, - std::chrono::milliseconds timeout = std::chrono::milliseconds::zero()) { - return std::async(std::launch::async, [this, size, timeout] { - if (timeout > std::chrono::milliseconds::zero()) { -#ifdef _WIN32 - DWORD tv = timeout.count(); - setsockopt(socket_, SOL_SOCKET, SO_RCVTIMEO, - reinterpret_cast(&tv), sizeof(tv)); -#else - struct timeval tv; - tv.tv_sec = timeout.count() / 1000; - tv.tv_usec = (timeout.count() % 1000) * 1000; - setsockopt(socket_, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)); -#endif - } - - std::vector data(size); - ssize_t bytesRead = ::recv(socket_, data.data(), size, 0); - if (bytesRead < 0) { - errorMessage_ = "Receive failed"; - return std::vector{}; - } - data.resize(bytesRead); - return data; - }); - } - - [[nodiscard]] bool isConnected() const { return connected_; } - - [[nodiscard]] std::string getErrorMessage() const { return errorMessage_; } - - void setOnConnectedCallback(const OnConnectedCallback& callback) { - onConnectedCallback_ = callback; - } - - void setOnDisconnectedCallback(const OnDisconnectedCallback& callback) { - onDisconnectedCallback_ = callback; - } - - void setOnDataReceivedCallback(const OnDataReceivedCallback& callback) { - onDataReceivedCallback_ = callback; - } - - void setOnErrorCallback(const OnErrorCallback& callback) { - onErrorCallback_ = callback; - } - - void startReceiving(size_t bufferSize) { - stopReceiving(); - receivingThread_ = std::thread(&Impl::receivingLoop, this, bufferSize); - } - - void stopReceiving() { - if (receivingThread_.joinable()) { - receivingStopped_ = true; - receivingThread_.join(); - receivingStopped_ = false; - } - } - -private: - void receivingLoop(size_t bufferSize) { -#ifdef __linux__ - struct epoll_event events[10]; -#endif - while (!receivingStopped_) { -#ifdef __linux__ - int n = epoll_wait(epoll_fd_, events, 10, -1); - for (int i = 0; i < n; i++) { - if (events[i].events & EPOLLIN) { - std::vector data = receive(bufferSize).get(); - if (!data.empty() && onDataReceivedCallback_) { - onDataReceivedCallback_(data); - } - } - } -#else - std::vector data = receive(bufferSize).get(); - if (!data.empty() && onDataReceivedCallback_) { - onDataReceivedCallback_(data); - } -#endif - } - } - -#ifdef _WIN32 - SOCKET socket_; -#else - int socket_; - int epoll_fd_; -#endif - bool connected_ = false; - std::string errorMessage_; - - OnConnectedCallback onConnectedCallback_; - OnDisconnectedCallback onDisconnectedCallback_; - OnDataReceivedCallback onDataReceivedCallback_; - OnErrorCallback onErrorCallback_; - - std::thread receivingThread_; - bool receivingStopped_ = false; -}; - -TcpClient::TcpClient() : impl_(std::make_unique()) {} - -TcpClient::~TcpClient() = default; - -bool TcpClient::connect(const std::string& host, int port, - std::chrono::milliseconds timeout) { - return impl_->connect(host, port, timeout); -} - -void TcpClient::disconnect() { impl_->disconnect(); } - -bool TcpClient::send(const std::vector& data) { - return impl_->send(data); -} - -std::future> TcpClient::receive( - size_t size, std::chrono::milliseconds timeout) { - return impl_->receive(size, timeout); -} - -bool TcpClient::isConnected() const { return impl_->isConnected(); } - -std::string TcpClient::getErrorMessage() const { - return impl_->getErrorMessage(); -} - -void TcpClient::setOnConnectedCallback(const OnConnectedCallback& callback) { - impl_->setOnConnectedCallback(callback); -} - -void TcpClient::setOnDisconnectedCallback( - const OnDisconnectedCallback& callback) { - impl_->setOnDisconnectedCallback(callback); -} - -void TcpClient::setOnDataReceivedCallback( - const OnDataReceivedCallback& callback) { - impl_->setOnDataReceivedCallback(callback); -} - -void TcpClient::setOnErrorCallback(const OnErrorCallback& callback) { - impl_->setOnErrorCallback(callback); -} - -void TcpClient::startReceiving(size_t bufferSize) { - impl_->startReceiving(bufferSize); -} - -void TcpClient::stopReceiving() { impl_->stopReceiving(); } -} // namespace atom::connection diff --git a/src/atom/connection/tcpclient.hpp b/src/atom/connection/tcpclient.hpp deleted file mode 100644 index 580705b9..00000000 --- a/src/atom/connection/tcpclient.hpp +++ /dev/null @@ -1,147 +0,0 @@ -/* - * tcpclient.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-5-24 - -Description: TCP Client Class - -*************************************************/ - -#ifndef ATOM_CONNECTION_TCPCLIENT_HPP -#define ATOM_CONNECTION_TCPCLIENT_HPP - -#include -#include -#include -#include -#include -#include - -#include "atom/type/noncopyable.hpp" - -namespace atom::connection { -/** - * @class TcpClient - * @brief Represents a TCP client for connecting to a server and - * sending/receiving data. - */ -class TcpClient : public NonCopyable { -public: - using OnConnectedCallback = - std::function; /**< Type definition for connected callback - function. */ - using OnDisconnectedCallback = - std::function; /**< Type definition for disconnected callback - function. */ - using OnDataReceivedCallback = std::function&)>; /**< Type definition for data received - callback function. */ - using OnErrorCallback = - std::function; /**< Type definition for error - callback function. */ - - /** - * @brief Constructor. - */ - TcpClient(); - - /** - * @brief Destructor. - */ - ~TcpClient() override; - - /** - * @brief Connects to a TCP server. - * @param host The hostname or IP address of the server. - * @param port The port number of the server. - * @param timeout The connection timeout duration. - * @return True if the connection is successful, false otherwise. - */ - auto connect(const std::string& host, int port, - std::chrono::milliseconds timeout = - std::chrono::milliseconds::zero()) -> bool; - - /** - * @brief Disconnects from the server. - */ - void disconnect(); - - /** - * @brief Sends data to the server. - * @param data The data to be sent. - * @return True if the data is sent successfully, false otherwise. - */ - auto send(const std::vector& data) -> bool; - - /** - * @brief Receives data from the server. - * @param size The number of bytes to receive. - * @param timeout The receive timeout duration. - * @return The received data. - */ - auto receive(size_t size, std::chrono::milliseconds timeout = - std::chrono::milliseconds::zero()) - -> std::future>; - - /** - * @brief Checks if the client is connected to the server. - * @return True if connected, false otherwise. - */ - [[nodiscard]] auto isConnected() const -> bool; - - /** - * @brief Gets the error message in case of any error. - * @return The error message. - */ - [[nodiscard]] auto getErrorMessage() const -> std::string; - - /** - * @brief Sets the callback function to be called when connected to the - * server. - * @param callback The callback function. - */ - void setOnConnectedCallback(const OnConnectedCallback& callback); - - /** - * @brief Sets the callback function to be called when disconnected from the - * server. - * @param callback The callback function. - */ - void setOnDisconnectedCallback(const OnDisconnectedCallback& callback); - - /** - * @brief Sets the callback function to be called when data is received from - * the server. - * @param callback The callback function. - */ - void setOnDataReceivedCallback(const OnDataReceivedCallback& callback); - - /** - * @brief Sets the callback function to be called when an error occurs. - * @param callback The callback function. - */ - void setOnErrorCallback(const OnErrorCallback& callback); - - /** - * @brief Starts receiving data from the server. - * @param bufferSize The size of the receive buffer. - */ - void startReceiving(size_t bufferSize); - - /** - * @brief Stops receiving data from the server. - */ - void stopReceiving(); - -private: - class Impl; /**< Forward declaration of the implementation class. */ - std::unique_ptr impl_; /**< Pointer to the implementation object. */ -}; -} // namespace atom::connection - -#endif // ATOM_CONNECTION_TCPCLIENT_HPP diff --git a/src/atom/connection/ttybase.cpp b/src/atom/connection/ttybase.cpp deleted file mode 100644 index 0f5924a7..00000000 --- a/src/atom/connection/ttybase.cpp +++ /dev/null @@ -1,696 +0,0 @@ -#include "ttybase.hpp" - -#if defined(_WIN32) || defined(_WIN64) -#include -#else -#include -#include -#include -#include -#endif - -#include "atom/log/loguru.hpp" - -TTYBase::~TTYBase() { - if (m_PortFD != -1) { - disconnect(); - } -} - -TTYBase::TTYResponse TTYBase::checkTimeout(uint8_t timeout) { -#ifdef _WIN32 - // Windows specific implementation - COMMTIMEOUTS timeouts = {0}; - timeouts.ReadIntervalTimeout = timeout; - timeouts.ReadTotalTimeoutConstant = timeout * 1000; - timeouts.ReadTotalTimeoutMultiplier = 0; - timeouts.WriteTotalTimeoutConstant = timeout * 1000; - timeouts.WriteTotalTimeoutMultiplier = 0; - - if (!SetCommTimeouts(reinterpret_cast(m_PortFD), &timeouts)) - return TTYResponse::Errno; - - return TTYResponse::OK; -#else - if (m_PortFD == -1) { - return TTYResponse::Errno; - } - - struct timeval tv; - fd_set readout; - int retval; - - FD_ZERO(&readout); - FD_SET(m_PortFD, &readout); - - tv.tv_sec = timeout; - tv.tv_usec = 0; - - retval = select(m_PortFD + 1, &readout, nullptr, nullptr, &tv); - - if (retval > 0) { - return TTYResponse::OK; - } - if (retval == -1) { - return TTYResponse::SelectError; - } - return TTYResponse::Timeout; -#endif -} - -TTYBase::TTYResponse TTYBase::write(const uint8_t* buffer, uint32_t nbytes, - uint32_t& nbytesWritten) { - if (m_PortFD == -1) - return TTYResponse::Errno; - -#ifdef _WIN32 - // Windows specific write implementation - DWORD bytesWritten; - if (!WriteFile(reinterpret_cast(m_PortFD), buffer, nbytes, - &bytesWritten, nullptr)) - return TTYResponse::WriteError; - - nbytesWritten = bytesWritten; - return TTYResponse::OK; -#else - int bytesW = 0; - nbytesWritten = 0; - - while (nbytes > 0) { - bytesW = ::write(m_PortFD, buffer + nbytesWritten, nbytes); - - if (bytesW < 0) { - return TTYResponse::WriteError; - } - - nbytesWritten += bytesW; - nbytes -= bytesW; - } - - return TTYResponse::OK; -#endif -} - -TTYBase::TTYResponse TTYBase::writeString(std::string_view string, - uint32_t& nbytesWritten) { - return write(reinterpret_cast(string.data()), string.size(), - nbytesWritten); -} - -TTYBase::TTYResponse TTYBase::read(uint8_t* buffer, uint32_t nbytes, - uint8_t timeout, uint32_t& nbytesRead) { - if (m_PortFD == -1) { - return TTYResponse::Errno; - } - -#ifdef _WIN32 - // Windows specific read implementation - DWORD bytesRead; - if (!ReadFile(reinterpret_cast(m_PortFD), buffer, nbytes, - &bytesRead, nullptr)) - return TTYResponse::ReadError; - - nbytesRead = bytesRead; - return TTYResponse::OK; -#else - uint32_t numBytesToRead = nbytes; - int bytesRead = 0; - TTYResponse timeoutResponse = TTYResponse::OK; - nbytesRead = 0; - - while (numBytesToRead > 0) { - if ((timeoutResponse = checkTimeout(timeout)) != TTYResponse::OK) { - return timeoutResponse; - } - - bytesRead = ::read(m_PortFD, buffer + nbytesRead, numBytesToRead); - - if (bytesRead < 0) { - return TTYResponse::ReadError; - } - - nbytesRead += bytesRead; - numBytesToRead -= bytesRead; - } - - return TTYResponse::OK; -#endif -} - -TTYBase::TTYResponse TTYBase::readSection(uint8_t* buffer, uint32_t nsize, - uint8_t stopByte, uint8_t timeout, - uint32_t& nbytesRead) { - if (m_PortFD == -1) { - return TTYResponse::Errno; - } - - nbytesRead = 0; - memset(buffer, 0, nsize); - - while (nbytesRead < nsize) { - if (auto timeoutResponse = checkTimeout(timeout); - timeoutResponse != TTYResponse::OK) { - return timeoutResponse; - } - - uint8_t readChar; - int bytesRead = ::read(m_PortFD, &readChar, 1); - - if (bytesRead < 0) { - return TTYResponse::ReadError; - } - - buffer[nbytesRead++] = readChar; - - if (readChar == stopByte) { - return TTYResponse::OK; - } - } - - return TTYResponse::Overflow; -} - -TTYBase::TTYResponse TTYBase::connect(std::string_view device, uint32_t bitRate, - uint8_t wordSize, uint8_t parity, - uint8_t stopBits) { -#ifdef _WIN32 - // Windows specific implementation - HANDLE hSerial = - CreateFile(device.data(), GENERIC_READ | GENERIC_WRITE, 0, nullptr, - OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); - if (hSerial == INVALID_HANDLE_VALUE) - return TTYResponse::PortFailure; - - DCB dcbSerialParams = {0}; - dcbSerialParams.DCBlength = sizeof(dcbSerialParams); - - if (!GetCommState(hSerial, &dcbSerialParams)) { - CloseHandle(hSerial); - return TTYResponse::PortFailure; - } - - dcbSerialParams.BaudRate = bitRate; - dcbSerialParams.ByteSize = wordSize; - dcbSerialParams.StopBits = (stopBits == 1) ? ONESTOPBIT : TWOSTOPBITS; - dcbSerialParams.Parity = parity; - - if (!SetCommState(hSerial, &dcbSerialParams)) { - CloseHandle(hSerial); - return TTYResponse::PortFailure; - } - - m_PortFD = reinterpret_cast(hSerial); - return TTYResponse::OK; -#elif defined(BSD) && !defined(__GNU__) - int t_fd = -1; - int bps; - int handshake; - struct termios tty_setting; - - // Open the serial port read/write, with no controlling terminal, and don't - // wait for a connection. The O_NONBLOCK flag also causes subsequent I/O on - // the device to be non-blocking. See open(2) ("man 2 open") for details. - - t_fd = open(device, O_RDWR | O_NOCTTY | O_NONBLOCK); - if (t_fd == -1) { - DEBUGFDEVICE(m_DriverName, m_DebugChannel, - "Error opening serial port (%s) - %s(%d).", device, - strerror(errno), errno); - goto error; - } - - // Note that open() follows POSIX semantics: multiple open() calls to the - // same file will succeed unless the TIOCEXCL ioctl is issued. This will - // prevent additional opens except by root-owned processes. See tty(4) ("man - // 4 tty") and ioctl(2) ("man 2 ioctl") for details. - - if (ioctl(t_fd, TIOCEXCL) == -1) { - DEBUGFDEVICE(m_DriverName, m_DebugChannel, - "Error setting TIOCEXCL on %s - %s(%d).", device, - strerror(errno), errno); - goto error; - } - - // Now that the device is open, clear the O_NONBLOCK flag so subsequent I/O - // will block. See fcntl(2) ("man 2 fcntl") for details. - - if (fcntl(t_fd, F_SETFL, 0) == -1) { - DEBUGFDEVICE(m_DriverName, m_DebugChannel, - "Error clearing O_NONBLOCK %s - %s(%d).", device, - strerror(errno), errno); - goto error; - } - - // Get the current options and save them so we can restore the default - // settings later. - if (tcgetattr(t_fd, &tty_setting) == -1) { - DEBUGFDEVICE(m_DriverName, m_DebugChannel, - "Error getting tty attributes %s - %s(%d).", device, - strerror(errno), errno); - goto error; - } - - // Set raw input (non-canonical) mode, with reads blocking until either a - // single character has been received or a one second timeout expires. See - // tcsetattr(4) ("man 4 tcsetattr") and termios(4) ("man 4 termios") for - // details. - - cfmakeraw(&tty_setting); - tty_setting.c_cc[VMIN] = 1; - tty_setting.c_cc[VTIME] = 10; - - // The baud rate, word length, and handshake options can be set as follows: - switch (bit_rate) { - case 0: - bps = B0; - break; - case 50: - bps = B50; - break; - case 75: - bps = B75; - break; - case 110: - bps = B110; - break; - case 134: - bps = B134; - break; - case 150: - bps = B150; - break; - case 200: - bps = B200; - break; - case 300: - bps = B300; - break; - case 600: - bps = B600; - break; - case 1200: - bps = B1200; - break; - case 1800: - bps = B1800; - break; - case 2400: - bps = B2400; - break; - case 4800: - bps = B4800; - break; - case 9600: - bps = B9600; - break; - case 19200: - bps = B19200; - break; - case 38400: - bps = B38400; - break; - case 57600: - bps = B57600; - break; - case 115200: - bps = B115200; - break; - case 230400: - bps = B230400; - break; - default: - DEBUGFDEVICE(m_DriverName, m_DebugChannel, - "connect: %d is not a valid bit rate.", bit_rate); - return TTY_PARAM_ERROR; - } - - cfsetspeed(&tty_setting, bps); // Set baud rate - /* word size */ - switch (word_size) { - case 5: - tty_setting.c_cflag |= CS5; - break; - case 6: - tty_setting.c_cflag |= CS6; - break; - case 7: - tty_setting.c_cflag |= CS7; - break; - case 8: - tty_setting.c_cflag |= CS8; - break; - default: - DEBUGFDEVICE(m_DriverName, m_DebugChannel, - "connect: %d is not a valid data bit count.", - word_size); - return TTY_PARAM_ERROR; - } - - /* parity */ - switch (parity) { - case PARITY_NONE: - break; - case PARITY_EVEN: - tty_setting.c_cflag |= PARENB; - break; - case PARITY_ODD: - tty_setting.c_cflag |= PARENB | PARODD; - break; - default: - DEBUGFDEVICE(m_DriverName, m_DebugChannel, - "connect: %d is not a valid parity selection value.", - parity); - return TTY_PARAM_ERROR; - } - - /* stop_bits */ - switch (stop_bits) { - case 1: - break; - case 2: - tty_setting.c_cflag |= CSTOPB; - break; - default: - DEBUGFDEVICE(m_DriverName, m_DebugChannel, - "connect: %d is not a valid stop bit count.", - stop_bits); - return TTY_PARAM_ERROR; - } - -#if defined(MAC_OS_X_VERSION_10_4) && \ - (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4) - // Starting with Tiger, the IOSSIOSPEED ioctl can be used to set arbitrary - // baud rates other than those specified by POSIX. The driver for the - // underlying serial hardware ultimately determines which baud rates can be - // used. This ioctl sets both the input and output speed. - - speed_t speed = 14400; // Set 14400 baud - if (ioctl(t_fd, IOSSIOSPEED, &speed) == -1) { - IDLog("Error calling ioctl(..., IOSSIOSPEED, ...) - %s(%d).\n", - strerror(errno), errno); - } -#endif - - // Cause the new options to take effect immediately. - if (tcsetattr(t_fd, TCSANOW, &tty_setting) == -1) { - DEBUGFDEVICE(m_DriverName, m_DebugChannel, - "Error setting tty attributes %s - %s(%d).", device, - strerror(errno), errno); - goto error; - } - - // To set the modem handshake lines, use the following ioctls. - // See tty(4) ("man 4 tty") and ioctl(2) ("man 2 ioctl") for details. - - if (ioctl(t_fd, TIOCSDTR) == -1) // Assert Data Terminal Ready (DTR) - { - DEBUGFDEVICE(m_DriverName, m_DebugChannel, - "Error asserting DTR %s - %s(%d).", device, - strerror(errno), errno); - } - - if (ioctl(t_fd, TIOCCDTR) == -1) // Clear Data Terminal Ready (DTR) - { - DEBUGFDEVICE(m_DriverName, m_DebugChannel, - "Error clearing DTR %s - %s(%d).", device, strerror(errno), - errno); - } - - handshake = TIOCM_DTR | TIOCM_RTS | TIOCM_CTS | TIOCM_DSR; - if (ioctl(t_fd, TIOCMSET, &handshake) == -1) - // Set the modem lines depending on the bits set in handshake - { - DEBUGFDEVICE(m_DriverName, m_DebugChannel, - "Error setting handshake lines %s - %s(%d).", device, - strerror(errno), errno); - } - - // To read the state of the modem lines, use the following ioctl. - // See tty(4) ("man 4 tty") and ioctl(2) ("man 2 ioctl") for details. - - if (ioctl(t_fd, TIOCMGET, &handshake) == -1) - // Store the state of the modem lines in handshake - { - DEBUGFDEVICE(m_DriverName, m_DebugChannel, - "Error getting handshake lines %s - %s(%d).", device, - strerror(errno), errno); - } - - DEBUGFDEVICE(m_DriverName, m_DebugChannel, - "Handshake lines currently set to %d", handshake); - -#if defined(MAC_OS_X_VERSION_10_3) && \ - (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3) - unsigned long mics = 1UL; - - // Set the receive latency in microseconds. Serial drivers use this value to - // determine how often to dequeue characters received by the hardware. Most - // applications don't need to set this value: if an app reads lines of - // characters, the app can't do anything until the line termination - // character has been received anyway. The most common applications which - // are sensitive to read latency are MIDI and IrDA applications. - - if (ioctl(t_fd, IOSSDATALAT, &mics) == -1) { - // set latency to 1 microsecond - DEBUGFDEVICE(m_DriverName, m_DebugChannel, - "Error setting read latency %s - %s(%d).\n", device, - strerror(errno), errno); - goto error; - } -#endif - - m_PortFD = t_fd; - /* return success */ - return TTY_OK; - - // Failure path -error: - if (t_fd != -1) { - close(t_fd); - m_PortFD = -1; - } - - return TTY_PORT_FAILURE; -#else - int tFd = open(device.data(), O_RDWR | O_NOCTTY); - if (tFd == -1) { - LOG_F(ERROR, "Error opening {}: {}", device.data(), strerror(errno)); - m_PortFD = -1; - return TTYResponse::PortFailure; - } - - termios ttySetting{}; - if (tcgetattr(tFd, &ttySetting) == -1) { - LOG_F(ERROR, "Error getting {} tty attributes: {}", device.data(), - strerror(errno)); - return TTYResponse::PortFailure; - } - - int bps; - switch (bitRate) { - case 0: - bps = B0; - break; - case 50: - bps = B50; - break; - case 75: - bps = B75; - break; - case 110: - bps = B110; - break; - case 134: - bps = B134; - break; - case 150: - bps = B150; - break; - case 200: - bps = B200; - break; - case 300: - bps = B300; - break; - case 600: - bps = B600; - break; - case 1200: - bps = B1200; - break; - case 1800: - bps = B1800; - break; - case 2400: - bps = B2400; - break; - case 4800: - bps = B4800; - break; - case 9600: - bps = B9600; - break; - case 19200: - bps = B19200; - break; - case 38400: - bps = B38400; - break; - case 57600: - bps = B57600; - break; - case 115200: - bps = B115200; - break; - case 230400: - bps = B230400; - break; - default: - LOG_F(ERROR, "connect: {} is not a valid bit rate.", bitRate); - return TTYResponse::ParamError; - } - - // Set baud rate - if ((cfsetispeed(&ttySetting, bps) < 0) || - (cfsetospeed(&ttySetting, bps) < 0)) { - LOG_F(ERROR, "connect: failed setting bit rate."); - return TTYResponse::PortFailure; - } - - ttySetting.c_cflag &= ~(CSIZE | CSTOPB | PARENB | PARODD | HUPCL | CRTSCTS); - ttySetting.c_cflag |= (CLOCAL | CREAD); - - // Set word size - switch (wordSize) { - case 5: - ttySetting.c_cflag |= CS5; - break; - case 6: - ttySetting.c_cflag |= CS6; - break; - case 7: - ttySetting.c_cflag |= CS7; - break; - case 8: - ttySetting.c_cflag |= CS8; - break; - default: - LOG_F(ERROR, "connect: {} is not a valid data bit count.", - wordSize); - return TTYResponse::ParamError; - } - - // Set parity - if (parity == 1) { - ttySetting.c_cflag |= PARENB; - } else if (parity == 2) { - ttySetting.c_cflag |= PARENB | PARODD; - } else { - LOG_F(ERROR, "connect: {} is not a valid parity setting.", parity); - return TTYResponse::ParamError; - } - - // Set stop bits - if (stopBits == 2) { - ttySetting.c_cflag |= CSTOPB; - } else if (stopBits != 1) { - LOG_F(ERROR, "connect: {} is not a valid stop bit count.", stopBits); - return TTYResponse::ParamError; - } - - /* Ignore bytes with parity errors and make terminal raw and dumb.*/ - ttySetting.c_iflag &= - ~(PARMRK | ISTRIP | IGNCR | ICRNL | INLCR | IXOFF | IXON | IXANY); - ttySetting.c_iflag |= INPCK | IGNPAR | IGNBRK; - - /* Raw output.*/ - ttySetting.c_oflag &= ~(OPOST | ONLCR); - - /* Local Modes - Don't echo characters. Don't generate signals. - Don't process any characters.*/ - ttySetting.c_lflag &= - ~(ICANON | ECHO | ECHOE | ISIG | IEXTEN | NOFLSH | TOSTOP); - ttySetting.c_lflag |= NOFLSH; - - /* blocking read until 1 char arrives */ - ttySetting.c_cc[VMIN] = 1; - ttySetting.c_cc[VTIME] = 0; - - tcflush(tFd, TCIOFLUSH); - - // Set raw input mode (non-canonical) - cfmakeraw(&ttySetting); - - // Set the new attributes for the port - if (tcsetattr(tFd, TCSANOW, &ttySetting) != 0) { - close(tFd); - return TTYResponse::PortFailure; - } - - m_PortFD = tFd; - return TTYResponse::OK; -#endif -} - -TTYBase::TTYResponse TTYBase::disconnect() { - if (m_PortFD == -1) { - return TTYResponse::Errno; - } - -#ifdef _WIN32 - // Windows specific disconnection - if (!CloseHandle(reinterpret_cast(m_PortFD))) - return TTYResponse::Errno; - - m_PortFD = -1; - return TTYResponse::OK; -#else - if (tcflush(m_PortFD, TCIOFLUSH) != 0 || close(m_PortFD) != 0) { - return TTYResponse::Errno; - } - - m_PortFD = -1; - return TTYResponse::OK; -#endif -} - -void TTYBase::setDebug(bool enabled) { - m_Debug = enabled; - if (m_Debug) - LOG_F(INFO, "Debugging enabled."); - else - LOG_F(INFO, "Debugging disabled."); -} - -std::string TTYBase::getErrorMessage(TTYResponse code) const { - switch (code) { - case TTYResponse::OK: - return "No Error"; - case TTYResponse::ReadError: - return "Read Error: " + std::string(strerror(errno)); - case TTYResponse::WriteError: - return "Write Error: " + std::string(strerror(errno)); - case TTYResponse::SelectError: - return "Select Error: " + std::string(strerror(errno)); - case TTYResponse::Timeout: - return "Timeout Error"; - case TTYResponse::PortFailure: - if (errno == EACCES) { - return "Port failure: Access denied. Try adding your user to " - "the dialout group and restart (sudo adduser $USER " - "dialout)"; - } else { - return "Port failure: " + std::string(strerror(errno)) + - ". Check if the device is connected to this port."; - } - case TTYResponse::ParamError: - return "Parameter Error"; - case TTYResponse::Errno: - return "Error: " + std::string(strerror(errno)); - case TTYResponse::Overflow: - return "Read Overflow Error"; - default: - return "Unknown Error"; - } -} diff --git a/src/atom/connection/ttybase.hpp b/src/atom/connection/ttybase.hpp deleted file mode 100644 index 93fced49..00000000 --- a/src/atom/connection/ttybase.hpp +++ /dev/null @@ -1,165 +0,0 @@ -#ifndef ATOM_CONNECTION_TTYBASE_HPP -#define ATOM_CONNECTION_TTYBASE_HPP - -#include -#include -#include -#include -#include -#include -#include -#include - -// Windows specific includes -#ifdef _WIN32 -#include -#undef min -#undef max -#endif - -/** - * @class TTYBase - * @brief Provides a base class for handling TTY (Teletypewriter) connections. - * - * This class serves as an interface for reading from and writing to TTY - * devices, handling various responses and errors associated with the - * communication. - */ -class TTYBase { -public: - /** - * @enum TTYResponse - * @brief Enumerates possible responses from TTY operations. - */ - enum class TTYResponse { - OK = 0, ///< Operation completed successfully. - ReadError = -1, ///< Error occurred while reading from the TTY. - WriteError = -2, ///< Error occurred while writing to the TTY. - SelectError = -3, ///< Error occurred while selecting the TTY device. - Timeout = -4, ///< Operation timed out. - PortFailure = -5, ///< Failed to connect to the TTY port. - ParamError = -6, ///< Invalid parameters provided to a function. - Errno = -7, ///< An error occurred as indicated by errno. - Overflow = -8 ///< Buffer overflow occurred during an operation. - }; - - /** - * @brief Constructs a TTYBase instance with the specified driver name. - * - * @param driverName The name of the TTY driver to be used. - */ - explicit TTYBase(std::string_view driverName) : m_DriverName(driverName) {} - - /** - * @brief Destructor for TTYBase. - * - * Cleans up resources associated with the TTY connection. - */ - virtual ~TTYBase(); - - /** - * @brief Reads data from the TTY device. - * - * @param buffer Pointer to the buffer where read data will be stored. - * @param nbytes The number of bytes to read from the TTY. - * @param timeout Timeout duration for the read operation in seconds. - * @param nbytesRead Reference to store the actual number of bytes read. - * @return TTYResponse indicating the result of the read operation. - */ - TTYResponse read(uint8_t* buffer, uint32_t nbytes, uint8_t timeout, - uint32_t& nbytesRead); - - /** - * @brief Reads a section of data from the TTY until a stop byte is - * encountered. - * - * @param buffer Pointer to the buffer where read data will be stored. - * @param nsize The maximum number of bytes to read. - * @param stopByte The byte value that will stop the reading. - * @param timeout Timeout duration for the read operation in seconds. - * @param nbytesRead Reference to store the actual number of bytes read. - * @return TTYResponse indicating the result of the read operation. - */ - TTYResponse readSection(uint8_t* buffer, uint32_t nsize, uint8_t stopByte, - uint8_t timeout, uint32_t& nbytesRead); - - /** - * @brief Writes data to the TTY device. - * - * @param buffer Pointer to the data to be written. - * @param nbytes The number of bytes to write to the TTY. - * @param nbytesWritten Reference to store the actual number of bytes - * written. - * @return TTYResponse indicating the result of the write operation. - */ - TTYResponse write(const uint8_t* buffer, uint32_t nbytes, - uint32_t& nbytesWritten); - - /** - * @brief Writes a string to the TTY device. - * - * @param string The string to be written to the TTY. - * @param nbytesWritten Reference to store the actual number of bytes - * written. - * @return TTYResponse indicating the result of the write operation. - */ - TTYResponse writeString(std::string_view string, uint32_t& nbytesWritten); - - /** - * @brief Connects to the specified TTY device. - * - * @param device The device name or path to connect to. - * @param bitRate The baud rate for the connection. - * @param wordSize The data size (in bits) of each character. - * @param parity The parity checking mode (e.g. none, odd, even). - * @param stopBits The number of stop bits to use in communication. - * @return TTYResponse indicating the result of the connection attempt. - */ - TTYResponse connect(std::string_view device, uint32_t bitRate, - uint8_t wordSize, uint8_t parity, uint8_t stopBits); - - /** - * @brief Disconnects from the TTY device. - * - * @return TTYResponse indicating the result of the disconnection. - */ - TTYResponse disconnect(); - - /** - * @brief Enables or disables debugging information. - * - * @param enabled true to enable debugging, false to disable it. - */ - void setDebug(bool enabled); - - /** - * @brief Retrieves an error message corresponding to a given TTYResponse - * code. - * - * @param code The TTYResponse code for which to get the error message. - * @return A string containing the error message. - */ - std::string getErrorMessage(TTYResponse code) const; - - /** - * @brief Gets the file descriptor for the TTY port. - * - * @return The integer file descriptor for the TTY port. - */ - int getPortFD() const { return m_PortFD; } - -private: - /** - * @brief Checks for timeouts. - * - * @param timeout The timeout duration to check. - * @return TTYResponse indicating the result of the timeout check. - */ - TTYResponse checkTimeout(uint8_t timeout); - - int m_PortFD{-1}; ///< File descriptor for the TTY port. - bool m_Debug{false}; ///< Flag indicating whether debugging is enabled. - std::string_view m_DriverName; ///< The name of the driver for this TTY. -}; - -#endif diff --git a/src/atom/connection/udpclient.cpp b/src/atom/connection/udpclient.cpp deleted file mode 100644 index 17b1f62a..00000000 --- a/src/atom/connection/udpclient.cpp +++ /dev/null @@ -1,237 +0,0 @@ -/* - * udpclient.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-5-24 - -Description: UDP Client Class - -*************************************************/ - -#include "udpclient.hpp" -#include -#include -#include - -#ifdef _WIN32 -#include -#include -#pragma comment(lib, "ws2_32.lib") -#include -#else -#include -#include -#include -#include -#include -#endif - -#include "atom/error/exception.hpp" - -namespace atom::connection { -class UdpClient::Impl { -public: - Impl() { -#ifdef _WIN32 - WSADATA wsaData; - int result = WSAStartup(MAKEWORD(2, 2), &wsaData); - if (result != 0) { - THROW_RUNTIME_ERROR("WSAStartup failed"); - } -#endif - socket_ = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); - if (socket_ < 0) { - THROW_RUNTIME_ERROR("Socket creation failed"); - } -#ifdef __linux__ - epoll_fd_ = epoll_create1(0); - if (epoll_fd_ == -1) { - THROW_RUNTIME_ERROR("Epoll creation failed"); - } -#endif - } - - ~Impl() { - stopReceiving(); -#ifdef _WIN32 - closesocket(socket_); - WSACleanup(); -#else - close(socket_); - close(epoll_fd_); -#endif - } - - bool bind(int port) { - struct sockaddr_in address {}; - address.sin_family = AF_INET; - address.sin_addr.s_addr = INADDR_ANY; - address.sin_port = htons(port); - - if (::bind(socket_, reinterpret_cast(&address), - sizeof(address)) < 0) { - errorMessage_ = "Bind failed"; - return false; - } - - return true; - } - - bool send(const std::string& host, int port, - const std::vector& data) { - struct hostent* server = gethostbyname(host.c_str()); - if (server == nullptr) { - errorMessage_ = "Host not found"; - return false; - } - - struct sockaddr_in address {}; - address.sin_family = AF_INET; - std::memcpy(&address.sin_addr.s_addr, server->h_addr, server->h_length); - address.sin_port = htons(port); - - if (sendto(socket_, data.data(), data.size(), 0, - reinterpret_cast(&address), - sizeof(address)) < 0) { - errorMessage_ = "Send failed"; - return false; - } - - return true; - } - - std::vector receive( - size_t size, std::string& remoteHost, int& remotePort, - std::chrono::milliseconds timeout = std::chrono::milliseconds::zero()) { - if (timeout > std::chrono::milliseconds::zero()) { -#ifdef _WIN32 - DWORD timeout_ms = static_cast(timeout.count()); - setsockopt(socket_, SOL_SOCKET, SO_RCVTIMEO, - reinterpret_cast(&timeout_ms), - sizeof(timeout_ms)); -#else - struct epoll_event event; - event.events = EPOLLIN; - event.data.fd = socket_; - if (epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, socket_, &event) == -1) { - errorMessage_ = "Epoll control failed"; - return {}; - } - - struct epoll_event events[1]; - int nfds = epoll_wait(epoll_fd_, events, 1, timeout.count()); - if (nfds == 0) { - errorMessage_ = "Receive timeout"; - return {}; - } else if (nfds == -1) { - errorMessage_ = "Epoll wait failed"; - return {}; - } -#endif - } - - std::vector data(size); - struct sockaddr_in clientAddress {}; - socklen_t clientAddressLength = sizeof(clientAddress); - - ssize_t bytesRead = - recvfrom(socket_, data.data(), size, 0, - reinterpret_cast(&clientAddress), - &clientAddressLength); - if (bytesRead < 0) { - errorMessage_ = "Receive failed"; - return {}; - } - - data.resize(bytesRead); - remoteHost = inet_ntoa(clientAddress.sin_addr); - remotePort = ntohs(clientAddress.sin_port); - - return data; - } - - void setOnDataReceivedCallback(const OnDataReceivedCallback& callback) { - onDataReceivedCallback_ = callback; - } - - void setOnErrorCallback(const OnErrorCallback& callback) { - onErrorCallback_ = callback; - } - - void startReceiving(size_t bufferSize) { - stopReceiving(); - receivingThread_ = std::jthread(&Impl::receivingLoop, this, bufferSize); - } - - void stopReceiving() { - if (receivingThread_.joinable()) { - receivingStopped_ = true; - receivingThread_.join(); - receivingStopped_ = false; - } - } - -private: - void receivingLoop(size_t bufferSize) { - while (!receivingStopped_) { - std::string remoteHost; - int remotePort; - std::vector data = - receive(bufferSize, remoteHost, remotePort); - if (!data.empty() && onDataReceivedCallback_) { - onDataReceivedCallback_(data, remoteHost, remotePort); - } - } - } - -#ifdef _WIN32 - SOCKET socket_; -#else - int socket_; - int epoll_fd_; -#endif - std::string errorMessage_; - - OnDataReceivedCallback onDataReceivedCallback_; - OnErrorCallback onErrorCallback_; - - std::jthread receivingThread_; - std::atomic receivingStopped_ = false; -}; - -UdpClient::UdpClient() : impl_(std::make_unique()) {} - -UdpClient::~UdpClient() = default; - -bool UdpClient::bind(int port) { return impl_->bind(port); } - -bool UdpClient::send(const std::string& host, int port, - const std::vector& data) { - return impl_->send(host, port, data); -} - -std::vector UdpClient::receive(size_t size, std::string& remoteHost, - int& remotePort, - std::chrono::milliseconds timeout) { - return impl_->receive(size, remoteHost, remotePort, timeout); -} - -void UdpClient::setOnDataReceivedCallback( - const OnDataReceivedCallback& callback) { - impl_->setOnDataReceivedCallback(callback); -} - -void UdpClient::setOnErrorCallback(const OnErrorCallback& callback) { - impl_->setOnErrorCallback(callback); -} - -void UdpClient::startReceiving(size_t bufferSize) { - impl_->startReceiving(bufferSize); -} - -void UdpClient::stopReceiving() { impl_->stopReceiving(); } -} // namespace atom::connection diff --git a/src/atom/connection/udpclient.hpp b/src/atom/connection/udpclient.hpp deleted file mode 100644 index 42fa90f3..00000000 --- a/src/atom/connection/udpclient.hpp +++ /dev/null @@ -1,114 +0,0 @@ -/* - * udpclient.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-5-24 - -Description: UDP Client Class - -*************************************************/ - -#ifndef ATOM_CONNECTION_UDPCLIENT_HPP -#define ATOM_CONNECTION_UDPCLIENT_HPP - -#include -#include -#include -#include -#include - -namespace atom::connection { -/** - * @class UdpClient - * @brief Represents a UDP client for sending and receiving datagrams. - */ -class UdpClient { -public: - using OnDataReceivedCallback = std::function&, const std::string&, - int)>; /**< Type definition for data received callback function. */ - using OnErrorCallback = - std::function; /**< Type definition for error - callback function. */ - - /** - * @brief Constructor. - */ - UdpClient(); - - /** - * @brief Destructor. - */ - ~UdpClient(); - - /** - * @brief Deleted copy constructor to prevent copying. - */ - UdpClient(const UdpClient&) = delete; - - /** - * @brief Deleted copy assignment operator to prevent copying. - */ - UdpClient& operator=(const UdpClient&) = delete; - - /** - * @brief Binds the client to a specific port for receiving data. - * @param port The port number to bind to. - * @return True if the binding is successful, false otherwise. - */ - bool bind(int port); - - /** - * @brief Sends data to a specified host and port. - * @param host The destination host address. - * @param port The destination port number. - * @param data The data to be sent. - * @return True if the data is sent successfully, false otherwise. - */ - bool send(const std::string& host, int port, const std::vector& data); - - /** - * @brief Receives data from a remote host. - * @param size The number of bytes to receive. - * @param remoteHost The hostname or IP address of the remote host. - * @param remotePort The port number of the remote host. - * @param timeout The receive timeout duration. - * @return The received data. - */ - std::vector receive( - size_t size, std::string& remoteHost, int& remotePort, - std::chrono::milliseconds timeout = std::chrono::milliseconds::zero()); - - /** - * @brief Sets the callback function to be called when data is received. - * @param callback The callback function. - */ - void setOnDataReceivedCallback(const OnDataReceivedCallback& callback); - - /** - * @brief Sets the callback function to be called when an error occurs. - * @param callback The callback function. - */ - void setOnErrorCallback(const OnErrorCallback& callback); - - /** - * @brief Starts receiving data asynchronously. - * @param bufferSize The size of the receive buffer. - */ - void startReceiving(size_t bufferSize); - - /** - * @brief Stops receiving data. - */ - void stopReceiving(); - -private: - class Impl; /**< Forward declaration of the implementation class. */ - std::unique_ptr impl_; /**< Pointer to the implementation object. */ -}; -} // namespace atom::connection -#endif // ATOM_CONNECTION_UDPCLIENT_HPP diff --git a/src/atom/connection/udpserver.cpp b/src/atom/connection/udpserver.cpp deleted file mode 100644 index 6955393a..00000000 --- a/src/atom/connection/udpserver.cpp +++ /dev/null @@ -1,209 +0,0 @@ -/* - * udp_server.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-1-4 - -Description: A simple UDP server. - -*************************************************/ - -#include "udpserver.hpp" - -#include -#include -#include - -#ifdef _WIN32 -#include -#include -#pragma comment(lib, "Ws2_32.lib") -#else -#include -#include -#include -#include -#endif - -#include "atom/log/loguru.hpp" - -namespace atom::connection { -class UdpSocketHub::Impl { -public: - Impl() : running_(false), socket_(INVALID_SOCKET) {} - - ~Impl() { stop(); } - - void start(int port) { - if (running_.load()) { - return; - } - - if (!initNetworking()) { - LOG_F(ERROR, "Networking initialization failed."); - return; - } - - socket_ = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); - if (socket_ == INVALID_SOCKET) { - LOG_F(ERROR, "Failed to create socket."); - cleanupNetworking(); - return; - } - - sockaddr_in serverAddr{}; - serverAddr.sin_family = AF_INET; - serverAddr.sin_port = htons(port); - serverAddr.sin_addr.s_addr = INADDR_ANY; - - if (bind(socket_, reinterpret_cast(&serverAddr), - sizeof(serverAddr)) == SOCKET_ERROR) { - LOG_F(ERROR, "Bind failed with error."); - closeSocket(); - cleanupNetworking(); - return; - } - - running_.store(true); - receiverThread_ = std::jthread([this] { receiveMessages(); }); - } - - void stop() { - if (!running_.load()) { - return; - } - - running_.store(false); - closeSocket(); - cleanupNetworking(); - - if (receiverThread_.joinable()) { - receiverThread_.join(); - } - } - - bool isRunning() const { return running_.load(); } - - void addMessageHandler(MessageHandler handler) { - std::scoped_lock lock(handlersMutex_); - handlers_.push_back(std::move(handler)); - } - - void removeMessageHandler(MessageHandler handler) { - std::scoped_lock lock(handlersMutex_); - auto it = std::find_if( - handlers_.begin(), handlers_.end(), - [&handler](const MessageHandler& h) { - return handler.target_type() == h.target_type() && - handler.target() == - h.target(); - }); - if (it != handlers_.end()) { - handlers_.erase(it); - } - } - - void sendTo(const std::string& message, const std::string& ip, int port) { - if (!running_.load()) { - LOG_F(ERROR, "Server is not running."); - return; - } - - sockaddr_in targetAddr{}; - targetAddr.sin_family = AF_INET; - targetAddr.sin_port = htons(port); - inet_pton(AF_INET, ip.c_str(), &targetAddr.sin_addr); - - if (sendto(socket_, message.data(), message.size(), 0, - reinterpret_cast(&targetAddr), - sizeof(targetAddr)) == SOCKET_ERROR) { - LOG_F(ERROR, "Failed to send message."); - } - } - -private: - bool initNetworking() { -#ifdef _WIN32 - WSADATA wsaData; - return WSAStartup(MAKEWORD(2, 2), &wsaData) == 0; -#else - return true; -#endif - } - - void cleanupNetworking() { -#ifdef _WIN32 - WSACleanup(); -#endif - } - - void closeSocket() { -#ifdef _WIN32 - closesocket(socket_); -#else - close(socket_); -#endif - socket_ = INVALID_SOCKET; - } - - void receiveMessages() { - char buffer[1024]; - sockaddr_in clientAddr{}; - socklen_t clientAddrSize = sizeof(clientAddr); - - while (running_.load()) { - const auto bytesReceived = recvfrom( - socket_, buffer, sizeof(buffer), 0, - reinterpret_cast(&clientAddr), &clientAddrSize); - if (bytesReceived == SOCKET_ERROR) { - LOG_F(ERROR, "recvfrom failed with error."); - continue; - } - - std::string message(buffer, bytesReceived); - std::string clientIp = inet_ntoa(clientAddr.sin_addr); - int clientPort = ntohs(clientAddr.sin_port); - - std::scoped_lock lock(handlersMutex_); - for (const auto& handler : handlers_) { - handler(message, clientIp, clientPort); - } - } - } - - std::atomic running_; - SOCKET socket_; - std::jthread receiverThread_; - std::vector handlers_; - std::mutex handlersMutex_; -}; - -UdpSocketHub::UdpSocketHub() : impl_(std::make_unique()) {} - -UdpSocketHub::~UdpSocketHub() = default; - -void UdpSocketHub::start(int port) { impl_->start(port); } - -void UdpSocketHub::stop() { impl_->stop(); } - -bool UdpSocketHub::isRunning() const { return impl_->isRunning(); } - -void UdpSocketHub::addMessageHandler(MessageHandler handler) { - impl_->addMessageHandler(std::move(handler)); -} - -void UdpSocketHub::removeMessageHandler(MessageHandler handler) { - impl_->removeMessageHandler(std::move(handler)); -} - -void UdpSocketHub::sendTo(const std::string& message, const std::string& ip, - int port) { - impl_->sendTo(message, ip, port); -} -} // namespace atom::connection diff --git a/src/atom/connection/udpserver.hpp b/src/atom/connection/udpserver.hpp deleted file mode 100644 index e3114a99..00000000 --- a/src/atom/connection/udpserver.hpp +++ /dev/null @@ -1,97 +0,0 @@ -/* - * udp_server.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2024-1-4 - -Description: A simple UDP server. - -*************************************************/ - -#ifndef ATOM_CONNECTION_UDP_HPP -#define ATOM_CONNECTION_UDP_HPP - -#include -#include -#include - -namespace atom::connection { -/** - * @class UdpSocketHub - * @brief Represents a hub for managing UDP sockets and message handling. - */ -class UdpSocketHub { -public: - /** - * @brief Type definition for message handler function. - * @param message The message received. - * @param ip The IP address of the sender. - * @param port The port of the sender. - */ - using MessageHandler = - std::function; - - /** - * @brief Constructor. - */ - UdpSocketHub(); - - /** - * @brief Destructor. - */ - ~UdpSocketHub(); - - UdpSocketHub(const UdpSocketHub&) = - delete; /**< Deleted copy constructor to prevent copying. */ - UdpSocketHub& operator=(const UdpSocketHub&) = - delete; /**< Deleted copy assignment operator to prevent copying. */ - - /** - * @brief Starts the UDP socket hub and binds it to the specified port. - * @param port The port on which the UDP socket hub will listen for incoming - * messages. - */ - void start(int port); - - /** - * @brief Stops the UDP socket hub. - */ - void stop(); - - /** - * @brief Checks if the UDP socket hub is currently running. - * @return True if the UDP socket hub is running, false otherwise. - */ - bool isRunning() const; - - /** - * @brief Adds a message handler function to the UDP socket hub. - * @param handler The message handler function to add. - */ - void addMessageHandler(MessageHandler handler); - - /** - * @brief Removes a message handler function from the UDP socket hub. - * @param handler The message handler function to remove. - */ - void removeMessageHandler(MessageHandler handler); - - /** - * @brief Sends a message to the specified IP address and port. - * @param message The message to send. - * @param ip The IP address of the recipient. - * @param port The port of the recipient. - */ - void sendTo(const std::string& message, const std::string& ip, int port); - -private: - class Impl; /**< Forward declaration of the implementation class. */ - std::unique_ptr impl_; /**< Pointer to the implementation object. */ -}; -} // namespace atom::connection - -#endif diff --git a/src/atom/connection/xmake.lua b/src/atom/connection/xmake.lua deleted file mode 100644 index 852da1b2..00000000 --- a/src/atom/connection/xmake.lua +++ /dev/null @@ -1,69 +0,0 @@ --- 设置项目信息 -set_project("atom-connection") -set_version("1.0.0") -set_description("Connection Between Lithium Drivers, TCP and IPC") -set_license("GPL3") - --- 添加构建模式 -add_rules("mode.debug", "mode.release") - --- 设置构建选项 -option("enable_ssh") - set_default(false) - set_showmenu(true) - set_description("Enable SSH support") -option_end() - -option("enable_libssh") - set_default(false) - set_showmenu(true) - set_description("Enable LibSSH support") -option_end() - -option("enable_python") - set_default(false) - set_showmenu(true) - set_description("Enable Python bindings") -option_end() - --- 设置构建目标 -target("atom-connection") - set_kind("static") - add_files("*.cpp") - add_headerfiles("*.hpp") - add_packages("loguru") - if is_plat("windows") then - add_syslinks("ws2_32") - end - if has_config("enable_ssh") then - add_packages("libssh") - end - if has_config("enable_libssh") then - add_files("sshclient.cpp") - add_headerfiles("sshclient.hpp") - end - if has_config("enable_python") then - add_rules("python.pybind11_module") - add_files("_pybind.cpp") - add_deps("python") - end - --- 安装目标文件 -target("install") - set_kind("phony") - add_deps("atom-connection") - on_install(function (target) - import("package.tools.install") - local installx = package.tools.install - installx.static("atom-connection", {destdir = "/usr/local/lib"}) - end) - --- 构建项目 -target("build") - set_kind("phony") - add_deps("atom-connection") - --- 清理构建产物 -target("clean") - set_kind("phony") - add_rules("utils.clean.clean") diff --git a/src/atom/error/CMakeLists.txt b/src/atom/error/CMakeLists.txt deleted file mode 100644 index 80c0ed19..00000000 --- a/src/atom/error/CMakeLists.txt +++ /dev/null @@ -1,55 +0,0 @@ -# CMakeLists.txt for Atom-Error -# This project is licensed under the terms of the GPL3 license. -# -# Project Name: Atom-Error -# Description: Atom Error Library -# Author: Max Qian -# License: GPL3 - -cmake_minimum_required(VERSION 3.20) -project(atom-error C CXX) - -list(APPEND ${PROJECT_NAME}_SOURCES - exception.cpp - stacktrace.cpp -) - -# Headers -list(APPEND ${PROJECT_NAME}_HEADERS - error_code.hpp - stacktrace.hpp -) - -list(APPEND ${PROJECT_NAME}_LIBS - loguru -) - -if (LINUX) -list (APPEND ${PROJECT_NAME}_LIBS - dl -) -endif() - -# Build Object Library -add_library(${PROJECT_NAME}_OBJECT OBJECT) -set_property(TARGET ${PROJECT_NAME}_OBJECT PROPERTY POSITION_INDEPENDENT_CODE 1) - -target_link_libraries(${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) - -target_sources(${PROJECT_NAME}_OBJECT - PUBLIC - ${${PROJECT_NAME}_HEADERS} - PRIVATE - ${${PROJECT_NAME}_SOURCES} -) - -target_link_libraries(${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) - -add_library(${PROJECT_NAME} STATIC) - -target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) -target_include_directories(${PROJECT_NAME} PUBLIC .) - -install(TARGETS ${PROJECT_NAME} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -) diff --git a/src/atom/error/error_code.hpp b/src/atom/error/error_code.hpp deleted file mode 100644 index 8a9e012f..00000000 --- a/src/atom/error/error_code.hpp +++ /dev/null @@ -1,195 +0,0 @@ -/* - * error_code.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-8-10 - -Description: All of the error code - -**************************************************/ - -#ifndef ATOM_ERROR_CODE_HPP -#define ATOM_ERROR_CODE_HPP - -// 基础错误码(可选) -enum class ErrorCodeBase { - Success = 0, // 成功 - Failed = 1, // 失败 - Cancelled = 2, // 操作被取消 -}; - -// 文件操作错误 -enum class FileError : int { - None = static_cast(ErrorCodeBase::Success), - NotFound = 100, // 文件未找到 - OpenError = 101, // 无法打开 - AccessDenied = 102, // 访问被拒绝 - ReadError = 103, // 读取错误 - WriteError = 104, // 写入错误 - PermissionDenied = 105, // 权限被拒绝 - ParseError = 106, // 解析错误 - InvalidPath = 107, // 无效路径 - FileExists = 108, // 文件已存在 - DirectoryNotEmpty = 109, // 目录非空 - TooManyOpenFiles = 110, // 打开的文件过多 - DiskFull = 111, // 磁盘已满 - LoadError = 112, // 动态库加载错误 - UnLoadError = 113, // 动态卸载错误 - LockError = 114, // 文件锁错误 - FormatError = 115, // 文件格式错误 - PathTooLong = 116, // 路径过长 - FileCorrupted = 117, // 文件损坏 - UnsupportedFormat = 118, // 不支持的文件格式 -}; - -// 设备错误 -enum class DeviceError : int { - None = static_cast(ErrorCodeBase::Success), - NotSpecific = 200, - NotFound = 201, // 设备未找到 - NotSupported = 202, // 不支持的设备 - NotConnected = 203, // 设备未连接 - MissingValue = 204, // 缺少必要的值 - InvalidValue = 205, // 无效的值 - Busy = 206, // 设备忙 - - // 相机特有错误 - ExposureError = 210, - GainError = 211, - OffsetError = 212, - ISOError = 213, - CoolingError = 214, - - // 望远镜特有错误 - GotoError = 220, - ParkError = 221, - UnParkError = 222, - ParkedError = 223, - HomeError = 224, - - InitializationError = 230, // 初始化错误 - ResourceExhausted = 231, // 资源耗尽 - FirmwareUpdateFailed = 232, // 固件更新失败 - CalibrationError = 233, // 校准错误 - Overheating = 234, // 设备过热 - PowerFailure = 235, // 电源故障 -}; - -// 网络错误 -enum class NetworkError : int { - None = static_cast(ErrorCodeBase::Success), - ConnectionLost = 400, // 网络连接丢失 - ConnectionRefused = 401, // 连接被拒绝 - DNSLookupFailed = 402, // DNS查询失败 - ProtocolError = 403, // 协议错误 - SSLHandshakeFailed = 404, // SSL握手失败 - AddressInUse = 405, // 地址已在使用 - AddressNotAvailable = 406, // 地址不可用 - NetworkDown = 407, // 网络已关闭 - HostUnreachable = 408, // 主机不可达 - MessageTooLarge = 409, // 消息过大 - BufferOverflow = 410, // 缓冲区溢出 - TimeoutError = 411, // 网络超时 - BandwidthExceeded = 412, // 带宽超限 - NetworkCongested = 413, // 网络拥塞 -}; - -// 数据库错误 -enum class DatabaseError : int { - None = static_cast(ErrorCodeBase::Success), - ConnectionFailed = 500, // 数据库连接失败 - QueryFailed = 501, // 查询失败 - TransactionFailed = 502, // 事务失败 - IntegrityConstraintViolation = 503, // 违反完整性约束 - NoSuchTable = 504, // 表不存在 - DuplicateEntry = 505, // 重复条目 - DataTooLong = 506, // 数据过长 - DataTruncated = 507, // 数据被截断 - Deadlock = 508, // 死锁 - LockTimeout = 509, // 锁超时 - IndexOutOfBounds = 510, // 索引越界 - ConnectionTimeout = 511, // 连接超时 - InvalidQuery = 512, // 无效查询 -}; - -// 内存管理错误 -enum class MemoryError : int { - None = static_cast(ErrorCodeBase::Success), - AllocationFailed = 600, // 内存分配失败 - OutOfMemory = 601, // 内存不足 - AccessViolation = 602, // 内存访问违例 - BufferOverflow = 603, // 缓冲区溢出 - DoubleFree = 604, // 双重释放 - InvalidPointer = 605, // 无效指针 - MemoryLeak = 606, // 内存泄漏 - StackOverflow = 607, // 栈溢出 - CorruptedHeap = 608, // 堆损坏 -}; - -// 用户输入错误 -enum class UserInputError : int { - None = static_cast(ErrorCodeBase::Success), - InvalidInput = 700, // 无效输入 - OutOfRange = 701, // 输入值超出范围 - MissingInput = 702, // 缺少输入 - FormatError = 703, // 输入格式错误 - UnsupportedType = 704, // 不支持的输入类型 - InputTooLong = 705, // 输入过长 - InputTooShort = 706, // 输入过短 - InvalidCharacter = 707, // 无效字符 -}; - -// 配置错误 -enum class ConfigError : int { - None = static_cast(ErrorCodeBase::Success), - MissingConfig = 800, // 缺少配置文件 - InvalidConfig = 801, // 无效的配置 - ConfigParseError = 802, // 配置解析错误 - UnsupportedConfig = 803, // 不支持的配置 - ConfigConflict = 804, // 配置冲突 - InvalidOption = 805, // 无效选项 - ConfigNotSaved = 806, // 配置未保存 - ConfigLocked = 807, // 配置被锁定 -}; - -// 进程和线程错误 -enum class ProcessError : int { - None = static_cast(ErrorCodeBase::Success), - ProcessNotFound = 900, // 进程未找到 - ProcessFailed = 901, // 进程失败 - ThreadCreationFailed = 902, // 线程创建失败 - ThreadJoinFailed = 903, // 线程合并失败 - ThreadTimeout = 904, // 线程超时 - DeadlockDetected = 905, // 检测到死锁 - ProcessTerminated = 906, // 进程被终止 - InvalidProcessState = 907, // 无效的进程状态 - InsufficientResources = 908, // 资源不足 - InvalidThreadPriority = 909, // 无效的线程优先级 -}; - -// 服务器错误 -enum class ServerError : int { - None = static_cast(ErrorCodeBase::Success), - InvalidParameters = 300, // 无效参数 - InvalidFormat = 301, // 无效格式 - MissingParameters = 302, // 缺少参数 - RunFailed = 303, // 运行失败 - UnknownError = 310, // 未知错误 - UnknownCommand = 311, // 未知命令 - UnknownDevice = 312, // 未知设备 - UnknownDeviceType = 313, // 未知设备类型 - UnknownDeviceName = 314, // 未知设备名称 - UnknownDeviceID = 315, // 未知设备ID - NetworkError = 320, // 网络错误 - TimeoutError = 321, // 请求超时 - AuthenticationError = 322, // 认证失败 - PermissionDenied = 323, // 权限被拒绝 - ServerOverload = 324, // 服务器过载 - MaintenanceMode = 325, // 维护模式 -}; - -#endif diff --git a/src/atom/error/exception.cpp b/src/atom/error/exception.cpp deleted file mode 100644 index 9bfc0ab8..00000000 --- a/src/atom/error/exception.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* - * exception.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-11-10 - -Description: Better Exception Library - -**************************************************/ - -#include "exception.hpp" - -#include -#include -#include - -#if ENABLE_CPPTRACE -#include -#endif -#ifdef ENABLE_BOOST_STACKTRACE -#include -#endif - -namespace atom::error { -auto Exception::what() const noexcept -> const char* { - if (full_message_.empty()) { - std::ostringstream oss; - oss << "Exception at " << file_ << ":" << line_ << " in " << func_ - << "()"; - oss << " (thread " << thread_id_ << ")"; - oss << "\n\tMessage: " << message_; -#if ENABLE_CPPTRACE - oss << "\n\tStack trace:\n" - << cpptrace::generate() -#elif defined(ENABLE_BOOST_STACKTRACE) - full_message_ += std::format( - "\n\tStack trace:\n{}", boost::stacktrace::to_string(stack_trace_)); -#else - oss << "\n\tStack trace:\n" << stack_trace_.toString(); -#endif - full_message_ = oss.str(); - } - return full_message_.c_str(); -} - -auto Exception::getFile() const -> std::string { return file_; } -auto Exception::getLine() const -> int { return line_; } -auto Exception::getFunction() const -> std::string { return func_; } -auto Exception::getMessage() const -> std::string { return message_; } -auto Exception::getThreadId() const -> std::thread::id { return thread_id_; } -} // namespace atom::error diff --git a/src/atom/error/exception.hpp b/src/atom/error/exception.hpp deleted file mode 100644 index 65e07bbc..00000000 --- a/src/atom/error/exception.hpp +++ /dev/null @@ -1,564 +0,0 @@ -/* - * exception.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-11-10 - -Description: Better Exception Library - -**************************************************/ - -#ifndef ATOM_ERROR_EXCEPTION_HPP -#define ATOM_ERROR_EXCEPTION_HPP - -#include -#include -#include -#include - -#include "atom/macro.hpp" -#include "stacktrace.hpp" - -namespace atom::error { - -/** - * @brief Custom exception class with detailed information about the error. - */ -class Exception : public std::exception { -public: - /** - * @brief Constructs an Exception object. - * @param file The file where the exception occurred. - * @param line The line number in the file where the exception occurred. - * @param func The function where the exception occurred. - * @param args Additional arguments to provide context for the exception. - */ - template - Exception(const char *file, int line, const char *func, Args &&...args) - : file_(file), line_(line), func_(func) { - std::ostringstream oss; - ((oss << std::forward(args)), ...); - message_ = oss.str(); - } - - template - static void rethrowNested(Args &&...args) { - try { - throw; // 捕获当前异常 - } catch (...) { - std::throw_with_nested(Exception(std::forward(args)...)); - } - } - - /** - * @brief Returns a C-style string describing the exception. - * @return A pointer to a string describing the exception. - */ - auto what() const ATOM_NOEXCEPT -> const char * override; - - /** - * @brief Gets the file where the exception occurred. - * @return The file where the exception occurred. - */ - auto getFile() const -> std::string; - - /** - * @brief Gets the line number where the exception occurred. - * @return The line number where the exception occurred. - */ - auto getLine() const -> int; - - /** - * @brief Gets the function where the exception occurred. - * @return The function where the exception occurred. - */ - auto getFunction() const -> std::string; - - /** - * @brief Gets the message associated with the exception. - * @return The message associated with the exception. - */ - auto getMessage() const -> std::string; - - /** - * @brief Gets the ID of the thread where the exception occurred. - * @return The ID of the thread where the exception occurred. - */ - auto getThreadId() const -> std::thread::id; - -private: - std::string file_; /**< The file where the exception occurred. */ - int line_; /**< The line number in the file where the exception occurred. */ - std::string func_; /**< The function where the exception occurred. */ - std::string message_; /**< The message associated with the exception. */ - mutable std::string - full_message_; /**< The full message including additional context. */ - std::thread::id thread_id_ = - std::this_thread::get_id(); /**< The ID of the thread where the - exception occurred. */ - StackTrace stack_trace_; -}; - -// System error exception class -class SystemErrorException : public Exception { -public: - SystemErrorException(const char *file, int line, const char *func, - int err_code, std::string msg) - : Exception(file, line, func, msg), - error_code_(err_code), - error_message_( - std::error_code(err_code, std::generic_category()).message()) {} - - const char *what() const noexcept override { - if (what_message_.empty()) { - what_message_ = "System error [" + std::to_string(error_code_) + - "]: " + error_message_ + "\n" + Exception::what(); - } - return what_message_.c_str(); - } - -private: - int error_code_; - std::string error_message_; - mutable std::string what_message_; -}; - -// Nested exception handling -class NestedException : public Exception { -public: - explicit NestedException(const char *file, int line, const char *func, - std::exception_ptr ptr) - : Exception(file, line, func), exception_ptr_(std::move(ptr)) {} - - const char *what() const noexcept override { - if (what_message_.empty()) { - try { - std::rethrow_exception(exception_ptr_); - } catch (const std::exception &e) { - what_message_ = "Nested exception: " + std::string(e.what()); - } catch (...) { - what_message_ = "Nested unknown exception"; - } - } - return what_message_.c_str(); - } - -private: - std::exception_ptr exception_ptr_; - mutable std::string what_message_; -}; - -#define THROW_EXCEPTION(...) \ - throw atom::error::Exception(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -#define THROW_NESTED_EXCEPTION(...) \ - atom::error::Exception::rethrowNested(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -#define THROW_SYSTEM_ERROR(error_code, ...) \ - static_assert(std::is_integral::value, \ - "Error code must be an integral type"); \ - static_assert(error_code != 0, "Error code must be non-zero"); \ - throw atom::error::SystemErrorException(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, error_code, \ - __VA_ARGS__) - -// ------------------------------------------------------------------- -// Common -// ------------------------------------------------------------------- - -class RuntimeError : public Exception { -public: - using Exception::Exception; -}; - -namespace internal { -template -struct are_all_printable; - -// Base case: Empty parameter pack is printable -template <> -struct are_all_printable<> { - static constexpr bool value = true; -}; - -// Recursive case: Check if the first argument is printable and recursively -// check the rest -template -struct are_all_printable { - // Check if std::ostream can output the type - static constexpr bool value = - std::is_convertible() - << std::declval()), - std::ostream &>::value && - are_all_printable::value; -}; -} // namespace internal - -#define THROW_RUNTIME_ERROR(...) \ - throw atom::error::RuntimeError(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -#define THROW_NESTED_RUNTIME_ERROR(...) \ - atom::error::RuntimeError::rethrowNested(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class LogicError : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_LOGIC_ERROR(...) \ - throw atom::error::LogicError(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class UnlawfulOperation : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_UNLAWFUL_OPERATION(...) \ - throw atom::error::UnlawfulOperation(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class OutOfRange : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_OUT_OF_RANGE(...) \ - throw atom::error::OutOfRange(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__); - -class OverflowException : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_OVERFLOW(...) \ - throw atom::error::OverflowException(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__); - -class UnderflowException : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_UNDERFLOW(...) \ - throw atom::error::UnderflowException(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__); - -class Unkown : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_UNKOWN(...) \ - throw atom::error::Unkown(ATOM_FILE_NAME, ATOM_FILE_LINE, ATOM_FUNC_NAME, \ - __VA_ARGS__); - -// ------------------------------------------------------------------- -// Object -// ------------------------------------------------------------------- - -class ObjectAlreadyExist : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_OBJ_ALREADY_EXIST(...) \ - throw atom::error::ObjectAlreadyExist(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class ObjectAlreadyInitialized : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_OBJ_ALREADY_INITIALIZED(...) \ - throw atom::error::ObjectAlreadyInitialized( \ - ATOM_FILE_NAME, ATOM_FILE_LINE, ATOM_FUNC_NAME, __VA_ARGS__) - -class ObjectNotExist : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_OBJ_NOT_EXIST(...) \ - throw atom::error::ObjectNotExist(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class ObjectUninitialized : public Exception { -public: - using Exception::Exception; -}; - -class SystemCollapse : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_SYSTEM_COLLAPSE(...) \ - throw atom::error::SystemCollapse(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class NullPointer : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_NULL_POINTER(...) \ - throw atom::error::NullPointer(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class NotFound : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_NOT_FOUND(...) \ - throw atom::error::NotFound(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -// ------------------------------------------------------------------- -// Argument -// ------------------------------------------------------------------- - -#define THROW_OBJ_UNINITIALIZED(...) \ - throw atom::error::ObjectUninitialized(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class WrongArgument : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_WRONG_ARGUMENT(...) \ - throw atom::error::WrongArgument(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class InvalidArgument : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_INVALID_ARGUMENT(...) \ - throw atom::error::InvalidArgument(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class MissingArgument : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_MISSING_ARGUMENT(...) \ - throw atom::error::MissingArgument(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -// ------------------------------------------------------------------- -// File -// ------------------------------------------------------------------- - -class FileNotFound : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_FILE_NOT_FOUND(...) \ - throw atom::error::FileNotFound(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class FileNotReadable : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_FILE_NOT_READABLE(...) \ - throw atom::error::FileNotReadable(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class FileNotWritable : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_FILE_NOT_WRITABLE(...) \ - throw atom::error::FileNotWritable(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class FailToOpenFile : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_FAIL_TO_OPEN_FILE(...) \ - throw atom::error::FailToOpenFile(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class FailToCloseFile : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_FAIL_TO_CLOSE_FILE(...) \ - throw atom::error::FailToCloseFile(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class FailToCreateFile : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_FAIL_TO_CREATE_FILE(...) \ - throw atom::error::FailToCreateFile(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class FailToDeleteFile : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_FAIL_TO_DELETE_FILE(...) \ - throw atom::error::FailToDeleteFile(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class FailToCopyFile : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_FAIL_TO_COPY_FILE(...) \ - throw atom::error::FailToCopyFile(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class FailToMoveFile : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_FAIL_TO_MOVE_FILE(...) \ - throw atom::error::FailToMoveFile(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class FailToReadFile : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_FAIL_TO_READ_FILE(...) \ - throw atom::error::FailToReadFile(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class FailToWriteFile : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_FAIL_TO_WRITE_FILE(...) \ - throw atom::error::FailToWriteFile(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -// ------------------------------------------------------------------- -// Dynamic Library -// ------------------------------------------------------------------- - -class FailToLoadDll : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_FAIL_TO_LOAD_DLL(...) \ - throw atom::error::FailToLoadDll(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class FailToUnloadDll : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_FAIL_TO_UNLOAD_DLL(...) \ - throw atom::error::FailToUnloadDll(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class FailToLoadSymbol : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_FAIL_TO_LOAD_SYMBOL(...) \ - throw atom::error::FailToLoadSymbol(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -// ------------------------------------------------------------------- -// Proccess Library -// ------------------------------------------------------------------- - -class FailToCreateProcess : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_FAIL_TO_CREATE_PROCESS(...) \ - throw atom::error::FailToCreateProcess(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class FailToTerminateProcess : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_FAIL_TO_TERMINATE_PROCESS(...) \ - throw atom::error::FailToTerminateProcess(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -// ------------------------------------------------------------------- -// JSON Error -// ------------------------------------------------------------------- - -class JsonParseError : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_JSON_PARSE_ERROR(...) \ - throw atom::error::JsonParseError(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class JsonValueError : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_JSON_VALUE_ERROR(...) \ - throw atom::error::JsonValueError(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -// ------------------------------------------------------------------- -// Network Error -// ------------------------------------------------------------------- - -class CurlInitializationError : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_CURL_INITIALIZATION_ERROR(...) \ - throw atom::error::CurlInitializationError(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class CurlRuntimeError : public Exception { -public: - using Exception::Exception; -}; - -#define THROW_CURL_RUNTIME_ERROR(...) \ - throw atom::error::CurlRuntimeError(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) -} // namespace atom::error - -#endif diff --git a/src/atom/error/stacktrace.cpp b/src/atom/error/stacktrace.cpp deleted file mode 100644 index 45f9939b..00000000 --- a/src/atom/error/stacktrace.cpp +++ /dev/null @@ -1,147 +0,0 @@ -/* - * stacktrace.cpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-11-10 - -Description: Enhanced StackTrace with more details - -**************************************************/ - -#include "stacktrace.hpp" -#include "atom/function/abi.hpp" - -#include -#include -#include -#include - -#ifdef _WIN32 -// clang-format off -#include -#include -// clang-format on -#if !defined(__MINGW32__) && !defined(__MINGW64__) -#pragma comment(lib, "dbghelp.lib") -#endif -#elif defined(__APPLE__) || defined(__linux__) -#include -#include -#include -#endif - -namespace atom::error { - -namespace { -#if defined(__linux__) || defined(__APPLE__) -auto processString(const std::string& input) -> std::string { - size_t startIndex = input.find("_Z"); - if (startIndex == std::string::npos) { - return input; - } - size_t endIndex = input.find('+', startIndex); - if (endIndex == std::string::npos) { - return input; - } - std::string abiName = input.substr(startIndex, endIndex - startIndex); - abiName = meta::DemangleHelper::demangle(abiName); - std::string result = input; - result.replace(startIndex, endIndex - startIndex, abiName); - return result; -} -#endif - -auto prettifyStacktrace(const std::string& input) -> std::string { - std::string output = input; - static const std::vector> REPLACEMENTS = - {{"std::__1::", "std::"}, - {"__thiscall ", ""}, - {"__cdecl ", ""}, - {", std::allocator<[^<>]+>", ""}}; - - for (const auto& [from, to] : REPLACEMENTS) { - output = std::regex_replace(output, std::regex(from), to); - } - - // Clean up spaces in template arguments - output = - std::regex_replace(output, std::regex(R"(<\s*([^<> ]+)\s*>)"), "<$1>"); - - return output; -} - -} // unnamed namespace - -StackTrace::StackTrace() { capture(); } - -auto StackTrace::toString() const -> std::string { - std::ostringstream oss; - -#ifdef _WIN32 - auto* symbol = reinterpret_cast( - calloc(sizeof(SYMBOL_INFO) + 256 * sizeof(char), 1)); - symbol->MaxNameLen = 255; - symbol->SizeOfStruct = sizeof(SYMBOL_INFO); - - for (void* frame : frames_) { - DWORD64 displacement = 0; - if (SymFromAddr(GetCurrentProcess(), reinterpret_cast(frame), - &displacement, symbol) != 0) { - std::string symbolName = symbol->Name; - oss << "\t\t" << meta::DemangleHelper::demangle("_" + symbolName) - << " - 0x" << std::hex << symbol->Address << "\n"; - } - } - free(symbol); - -#elif defined(__APPLE__) || defined(__linux__) - for (int i = 0; i < num_frames_; ++i) { - Dl_info info; - if (dladdr(frames_[i], &info) && info.dli_sname) { - std::string symbol_name = - meta::DemangleHelper::demangle(info.dli_sname); - oss << "\t\t" << symbol_name << " (" << info.dli_fname << ")\n"; - } else { - std::string_view symbol(symbols_.get()[i]); - oss << "\t\t" << processString(std::string(symbol)) << "\n"; - } - } - -#else - oss << "\t\tStack trace not available on this platform.\n"; -#endif - - return prettifyStacktrace(oss.str()); -} - -void StackTrace::capture() { -#ifdef _WIN32 - constexpr int max_frames = 64; - frames_.resize(max_frames); - SymInitialize(GetCurrentProcess(), nullptr, TRUE); - - void* framePtrs[max_frames]; - WORD capturedFrames = - CaptureStackBackTrace(0, max_frames, framePtrs, nullptr); - - frames_.resize(capturedFrames); - std::copy_n(framePtrs, capturedFrames, frames_.begin()); - -#elif defined(__APPLE__) || defined(__linux__) - constexpr int MAX_FRAMES = 64; - void* framePtrs[MAX_FRAMES]; - - num_frames_ = backtrace(framePtrs, MAX_FRAMES); - symbols_.reset(backtrace_symbols(framePtrs, num_frames_)); - frames_.assign(framePtrs, framePtrs + num_frames_); - -#else - num_frames_ = 0; -#endif -} - -} // namespace atom::error diff --git a/src/atom/error/stacktrace.hpp b/src/atom/error/stacktrace.hpp deleted file mode 100644 index 493a018a..00000000 --- a/src/atom/error/stacktrace.hpp +++ /dev/null @@ -1,70 +0,0 @@ -/* - * stacktrace.hpp - * - * Copyright (C) 2023-2024 Max Qian - */ - -/************************************************* - -Date: 2023-11-10 - -Description: Enhanced StackTrace with more details - -**************************************************/ - -#ifndef ATOM_ERROR_STACKTRACE_HPP -#define ATOM_ERROR_STACKTRACE_HPP - -#include -#include -#include - -namespace atom::error { - -/** - * @brief Class for capturing and representing a stack trace. - * - * This class captures the stack trace of the current - * execution context and represents it as a string, including - * file names, line numbers, and symbols if available. - */ -class StackTrace { -public: - /** - * @brief Default constructor. - * - * Constructs a StackTrace object and captures the current stack trace. - */ - StackTrace(); - - /** - * @brief Get the string representation of the stack trace. - * - * @return A string representing the captured stack trace. - */ - [[nodiscard]] auto toString() const -> std::string; - -private: - /** - * @brief Capture the current stack trace. - * - * This method captures the current stack trace based on the operating - * system. - */ - void capture(); - -#ifdef _WIN32 - std::vector frames_; /**< Vector to store stack frames on Windows. */ -#elif defined(__APPLE__) || defined(__linux__) - std::unique_ptr symbols_{ - nullptr, - &free}; /**< Pointer to store stack symbols on macOS or Linux. */ - std::vector - frames_; /**< Vector to store raw stack frame pointers. */ - int num_frames_ = 0; /**< Number of stack frames captured. */ -#endif -}; - -} // namespace atom::error - -#endif diff --git a/src/atom/error/xmake.lua b/src/atom/error/xmake.lua deleted file mode 100644 index 36ae0f56..00000000 --- a/src/atom/error/xmake.lua +++ /dev/null @@ -1,64 +0,0 @@ -set_project("atom-error") -set_version("1.0.0") -set_xmakever("2.5.1") - --- Set the C++ standard -set_languages("cxx20") - --- Add required packages -add_requires("loguru") - --- Define libraries -local atom_error_libs = { - "atom-utils" -} - -local project_packages = { - "loguru", - "dl" -} - --- Source files -local source_files = { - "error_stack.cpp", - "exception.cpp", - "stacktrace.cpp" -} - --- Header files -local header_files = { - "error_code.hpp", - "error_stack.hpp", - "stacktrace.hpp" -} - --- Object Library -target("atom-error_object") - set_kind("object") - add_files(table.unpack(source_files)) - add_headerfiles(table.unpack(header_files)) - add_packages("loguru") - if is_plat("linux") then - add_syslinks("dl") - end -target_end() - --- Static Library -target("atom-error") - set_kind("static") - add_deps("atom-error_object") - add_files(table.unpack(source_files)) - add_headerfiles(table.unpack(header_files)) - add_packages("loguru") - add_deps("atom-utils") - if is_plat("linux") then - add_syslinks("dl") - end - add_includedirs(".") - set_targetdir("$(buildir)/lib") - set_installdir("$(installdir)/lib") - set_version("1.0.0", {build = "%Y%m%d%H%M"}) - on_install(function (target) - os.cp(target:targetfile(), path.join(target:installdir(), "lib")) - end) -target_end() diff --git a/src/atom/extra/beast/http.cpp b/src/atom/extra/beast/http.cpp deleted file mode 100644 index f74d7c94..00000000 --- a/src/atom/extra/beast/http.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "http.hpp" - -#include - -HttpClient::HttpClient(net::io_context& ioc) - : resolver_(net::make_strand(ioc)), stream_(net::make_strand(ioc)) {} - -void HttpClient::setDefaultHeader(const std::string& key, - const std::string& value) { - default_headers_[key] = value; -} - -void HttpClient::setTimeout(std::chrono::seconds timeout) { - timeout_ = timeout; -} - -auto HttpClient::uploadFile( - const std::string& host, const std::string& port, const std::string& target, - const std::string& filepath, - const std::string& field_name) -> http::response { - std::ifstream file(filepath, std::ios::binary); - if (!file) { - throw std::runtime_error("Failed to open file: " + filepath); - } - std::string fileContent((std::istreambuf_iterator(file)), - std::istreambuf_iterator()); - - std::string boundary = - "-------------------------" + std::to_string(std::time(nullptr)); - - std::string body = "--" + boundary + "\r\n"; - body += "Content-Disposition: form-data; name=\"" + field_name + - "\"; filename=\"" + - std::filesystem::path(filepath).filename().string() + "\"\r\n"; - body += "Content-Type: application/octet-stream\r\n\r\n"; - body += fileContent + "\r\n"; - body += "--" + boundary + "--\r\n"; - - std::string contentType = "multipart/form-data; boundary=" + boundary; - - return request(http::verb::post, host, port, target, 11, contentType, body); -} - -void HttpClient::downloadFile(const std::string& host, const std::string& port, - const std::string& target, - const std::string& filepath) { - auto res = request(http::verb::get, host, port, target); - std::ofstream outFile(filepath, std::ios::binary); - outFile << res.body(); -} - -void HttpClient::runWithThreadPool(size_t num_threads) { - net::thread_pool pool(num_threads); - - for (size_t i = 0; i < num_threads; ++i) { - net::post(pool, [this] { - // Example task: send a request in a thread from the pool - auto res = request(http::verb::get, "example.com", "80", "/"); - std::cout << "Response in thread pool: " << res << std::endl; - }); - } - - pool.join(); // Wait for all threads to finish -} diff --git a/src/atom/extra/beast/http.hpp b/src/atom/extra/beast/http.hpp deleted file mode 100644 index 6049ef50..00000000 --- a/src/atom/extra/beast/http.hpp +++ /dev/null @@ -1,484 +0,0 @@ -#ifndef HTTP_CLIENT_HPP -#define HTTP_CLIENT_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace beast = boost::beast; -namespace http = beast::http; -namespace net = boost::asio; -using tcp = boost::asio::ip::tcp; -using json = nlohmann::json; - -class HttpClient { -public: - /** - * @brief Constructs an HttpClient with the given I/O context. - * @param ioc The I/O context to use for asynchronous operations. - */ - explicit HttpClient(net::io_context& ioc); - - /** - * @brief Sets a default header for all requests. - * @param key The header key. - * @param value The header value. - */ - void setDefaultHeader(const std::string& key, const std::string& value); - - /** - * @brief Sets the timeout duration for the HTTP operations. - * @param timeout The timeout duration in seconds. - */ - void setTimeout(std::chrono::seconds timeout); - - /** - * @brief Sends a synchronous HTTP request. - * @tparam Body The type of the request body. - * @param method The HTTP method (verb). - * @param host The server host. - * @param port The server port. - * @param target The target URI. - * @param version The HTTP version (default is 11). - * @param content_type The content type of the request body. - * @param body The request body. - * @param headers Additional headers to include in the request. - * @return The HTTP response. - */ - template - auto request(http::verb method, const std::string& host, - const std::string& port, const std::string& target, - int version = 11, const std::string& content_type = "", - const std::string& body = "", - const std::unordered_map& headers = - {}) -> http::response; - - /** - * @brief Sends an asynchronous HTTP request. - * @tparam Body The type of the request body. - * @tparam ResponseHandler The type of the handler to call when the - * operation completes. - * @param method The HTTP method (verb). - * @param host The server host. - * @param port The server port. - * @param target The target URI. - * @param handler The handler to call when the operation completes. - * @param version The HTTP version (default is 11). - * @param content_type The content type of the request body. - * @param body The request body. - * @param headers Additional headers to include in the request. - */ - template - void asyncRequest( - http::verb method, const std::string& host, const std::string& port, - const std::string& target, ResponseHandler&& handler, int version = 11, - const std::string& content_type = "", const std::string& body = "", - const std::unordered_map& headers = {}); - - /** - * @brief Sends a synchronous HTTP request with a JSON body and returns a - * JSON response. - * @param method The HTTP method (verb). - * @param host The server host. - * @param port The server port. - * @param target The target URI. - * @param json_body The JSON body of the request. - * @param headers Additional headers to include in the request. - * @return The JSON response. - */ - auto jsonRequest(http::verb method, const std::string& host, - const std::string& port, const std::string& target, - const json& json_body = {}, - const std::unordered_map& - headers = {}) -> json; - - /** - * @brief Sends an asynchronous HTTP request with a JSON body and returns a - * JSON response. - * @tparam ResponseHandler The type of the handler to call when the - * operation completes. - * @param method The HTTP method (verb). - * @param host The server host. - * @param port The server port. - * @param target The target URI. - * @param handler The handler to call when the operation completes. - * @param json_body The JSON body of the request. - * @param headers Additional headers to include in the request. - */ - template - void asyncJsonRequest( - http::verb method, const std::string& host, const std::string& port, - const std::string& target, ResponseHandler&& handler, - const json& json_body = {}, - const std::unordered_map& headers = {}); - - /** - * @brief Uploads a file to the server. - * @param host The server host. - * @param port The server port. - * @param target The target URI. - * @param filepath The path to the file to upload. - * @param field_name The field name for the file (default is "file"). - * @return The HTTP response. - */ - auto uploadFile(const std::string& host, const std::string& port, - const std::string& target, const std::string& filepath, - const std::string& field_name = "file") - -> http::response; - - /** - * @brief Downloads a file from the server. - * @param host The server host. - * @param port The server port. - * @param target The target URI. - * @param filepath The path to save the downloaded file. - */ - void downloadFile(const std::string& host, const std::string& port, - const std::string& target, const std::string& filepath); - - /** - * @brief Sends a synchronous HTTP request with retry logic. - * @tparam Body The type of the request body. - * @param method The HTTP method (verb). - * @param host The server host. - * @param port The server port. - * @param target The target URI. - * @param retry_count The number of retry attempts (default is 3). - * @param version The HTTP version (default is 11). - * @param content_type The content type of the request body. - * @param body The request body. - * @param headers Additional headers to include in the request. - * @return The HTTP response. - */ - template - auto requestWithRetry( - http::verb method, const std::string& host, const std::string& port, - const std::string& target, int retry_count = 3, int version = 11, - const std::string& content_type = "", const std::string& body = "", - const std::unordered_map& headers = {}) - -> http::response; - - /** - * @brief Sends multiple synchronous HTTP requests in a batch. - * @tparam Body The type of the request body. - * @param requests A vector of tuples containing the HTTP method, host, - * port, and target for each request. - * @param headers Additional headers to include in each request. - * @return A vector of HTTP responses. - */ - template - std::vector> batchRequest( - const std::vector>& requests, - const std::unordered_map& headers = {}); - - /** - * @brief Sends multiple asynchronous HTTP requests in a batch. - * @tparam ResponseHandler The type of the handler to call when the - * operation completes. - * @param requests A vector of tuples containing the HTTP method, host, - * port, and target for each request. - * @param handler The handler to call when the operation completes. - * @param headers Additional headers to include in each request. - */ - template - void asyncBatchRequest( - const std::vector>& requests, - ResponseHandler&& handler, - const std::unordered_map& headers = {}); - - /** - * @brief Runs the I/O context with a thread pool. - * @param num_threads The number of threads in the pool. - */ - void runWithThreadPool(size_t num_threads); - - /** - * @brief Asynchronously downloads a file from the server. - * @tparam ResponseHandler The type of the handler to call when the - * operation completes. - * @param host The server host. - * @param port The server port. - * @param target The target URI. - * @param filepath The path to save the downloaded file. - * @param handler The handler to call when the operation completes. - */ - template - void asyncDownloadFile(const std::string& host, const std::string& port, - const std::string& target, - const std::string& filepath, - ResponseHandler&& handler); - -private: - tcp::resolver resolver_; ///< The resolver for DNS lookups. - beast::tcp_stream stream_; ///< The TCP stream for HTTP communication. - std::unordered_map - default_headers_; ///< Default headers for all requests. - std::chrono::seconds timeout_{ - 30}; ///< The timeout duration for HTTP operations. -}; - -template -auto HttpClient::request(http::verb method, const std::string& host, - const std::string& port, const std::string& target, - int version, const std::string& content_type, - const std::string& body, - const std::unordered_map& - headers) -> http::response { - http::request req{method, target, version}; - req.set(http::field::host, host); - req.set(http::field::user_agent, BOOST_BEAST_VERSION_STRING); - - for (const auto& [key, value] : default_headers_) { - req.set(key, value); - } - - for (const auto& [key, value] : headers) { - req.set(key, value); - } - - if (!content_type.empty()) { - req.set(http::field::content_type, content_type); - } - - if (!body.empty()) { - req.body() = body; - req.prepare_payload(); - } - - auto const results = resolver_.resolve(host, port); - stream_.connect(results); - - stream_.expires_after(timeout_); - - http::write(stream_, req); - - beast::flat_buffer buffer; - http::response res; - http::read(stream_, buffer, res); - - beast::error_code ec; - stream_.socket().shutdown(tcp::socket::shutdown_both, ec); - - return res; -} - -template -void HttpClient::asyncRequest( - http::verb method, const std::string& host, const std::string& port, - const std::string& target, ResponseHandler&& handler, int version, - const std::string& content_type, const std::string& body, - const std::unordered_map& headers) { - auto req = std::make_shared>( - method, target, version); - req->set(http::field::host, host); - req->set(http::field::user_agent, BOOST_BEAST_VERSION_STRING); - - for (const auto& [key, value] : default_headers_) { - req->set(key, value); - } - - for (const auto& [key, value] : headers) { - req->set(key, value); - } - - if (!content_type.empty()) { - req->set(http::field::content_type, content_type); - } - - if (!body.empty()) { - req->body() = body; - req->prepare_payload(); - } - - resolver_.async_resolve( - host, port, - [this, req, handler = std::forward(handler)]( - beast::error_code ec, tcp::resolver::results_type results) { - if (ec) { - return handler(ec, {}); - } - - stream_.async_connect( - results, [this, req, handler = std::move(handler)]( - beast::error_code ec, - tcp::resolver::results_type::endpoint_type) { - if (ec) { - return handler(ec, {}); - } - - stream_.expires_after(timeout_); - - http::async_write( - stream_, *req, - [this, req, handler = std::move(handler)]( - beast::error_code ec, std::size_t) { - if (ec) { - return handler(ec, {}); - } - - auto res = std::make_shared>(); - auto buffer = - std::make_shared(); - - http::async_read( - stream_, *buffer, *res, - [this, res, buffer, - handler = std::move(handler)]( - beast::error_code ec, std::size_t) { - stream_.socket().shutdown( - tcp::socket::shutdown_both, ec); - handler(ec, std::move(*res)); - }); - }); - }); - }); -} - -template -void HttpClient::asyncJsonRequest( - http::verb method, const std::string& host, const std::string& port, - const std::string& target, ResponseHandler&& handler, const json& json_body, - const std::unordered_map& headers) { - asyncRequest( - method, host, port, target, - [handler = std::forward(handler)]( - beast::error_code ec, http::response res) { - if (ec) { - handler(ec, {}); - } else { - try { - auto jv = json::parse(res.body()); - handler({}, std::move(jv)); - } catch (const json::parse_error& e) { - handler(beast::error_code{e.id, beast::generic_category()}, - {}); - } - } - }, - 11, "application/json", json_body.empty() ? "" : json_body.dump(), - headers); -} - -template -auto HttpClient::requestWithRetry( - http::verb method, const std::string& host, const std::string& port, - const std::string& target, int retry_count, int version, - const std::string& content_type, const std::string& body, - const std::unordered_map& headers) - -> http::response { - beast::error_code ec; - http::response response; - for (int attempt = 0; attempt < retry_count; ++attempt) { - try { - response = request(method, host, port, target, version, - content_type, body, headers); - // If no exception was thrown, return the response - return response; - } catch (const beast::system_error& e) { - ec = e.code(); - std::cerr << "Request attempt " << (attempt + 1) - << " failed: " << ec.message() << std::endl; - if (attempt + 1 == retry_count) { - throw; // Throw the exception if this was the last retry - } - } - } - return response; -} - -template -std::vector> HttpClient::batchRequest( - const std::vector>& requests, - const std::unordered_map& headers) { - std::vector> responses; - for (const auto& [method, host, port, target] : requests) { - try { - responses.push_back( - request(method, host, port, target, 11, "", "", headers)); - } catch (const std::exception& e) { - std::cerr << "Batch request failed for " << target << ": " - << e.what() << std::endl; - // Push an empty response if an exception occurs (or handle as - // needed) - responses.emplace_back(); - } - } - return responses; -} - -template -void HttpClient::asyncBatchRequest( - const std::vector>& requests, - ResponseHandler&& handler, - const std::unordered_map& headers) { - auto responses = - std::make_shared>>(); - auto remaining = std::make_shared>(requests.size()); - - for (const auto& [method, host, port, target] : requests) { - asyncRequest( - method, host, port, target, - [handler, responses, remaining]( - beast::error_code ec, http::response res) { - if (ec) { - std::cerr << "Error during batch request: " << ec.message() - << std::endl; - responses - ->emplace_back(); // Empty response in case of error - } else { - responses->emplace_back(std::move(res)); - } - - if (--(*remaining) == 0) { - handler(*responses); - } - }, - 11, "", "", headers); - } -} - -template -void HttpClient::asyncDownloadFile(const std::string& host, - const std::string& port, - const std::string& target, - const std::string& filepath, - ResponseHandler&& handler) { - asyncRequest( - http::verb::get, host, port, target, - [filepath, handler = std::forward(handler)]( - beast::error_code ec, http::response res) { - if (ec) { - handler(ec, false); - } else { - std::ofstream outFile(filepath, std::ios::binary); - if (!outFile) { - std::cerr << "Failed to open file for writing: " << filepath - << std::endl; - handler(beast::error_code{}, false); - return; - } - outFile << res.body(); - handler({}, true); // Download successful - } - }); -} - -#endif // HTTP_CLIENT_HPP diff --git a/src/atom/extra/beast/ws.cpp b/src/atom/extra/beast/ws.cpp deleted file mode 100644 index 550cba98..00000000 --- a/src/atom/extra/beast/ws.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include "ws.hpp" - -#if __has_include("atom/log/loguru.hpp") -#include "atom/log/loguru.hpp" -#else -#include -#endif - -WSClient::WSClient(net::io_context& ioc) - : resolver_(net::make_strand(ioc)), - ws_(net::make_strand(ioc)), - ping_timer_(ioc) {} - -void WSClient::setTimeout(std::chrono::seconds timeout) { timeout_ = timeout; } - -void WSClient::setReconnectOptions(int retries, std::chrono::seconds interval) { - max_retries_ = retries; - reconnect_interval_ = interval; -} - -void WSClient::setPingInterval(std::chrono::seconds interval) { - ping_interval_ = interval; -} - -void WSClient::connect(const std::string& host, const std::string& port) { - auto const results = resolver_.resolve(host, port); - beast::get_lowest_layer(ws_).connect(results->endpoint()); - ws_.handshake(host, "/"); - startPing(); -} - -void WSClient::send(const std::string& message) { - ws_.write(net::buffer(message)); -} - -std::string WSClient::receive() { - beast::flat_buffer buffer; - ws_.read(buffer); - return beast::buffers_to_string(buffer.data()); -} - -void WSClient::close() { ws_.close(websocket::close_code::normal); } - -void WSClient::startPing() { - if (ping_interval_.count() > 0) { - ping_timer_.expires_after(ping_interval_); - ping_timer_.async_wait([this](beast::error_code ec) { - if (!ec) { - ws_.async_ping({}, [this](beast::error_code ec) { - if (!ec) { - startPing(); - } - }); - } - }); - } -} - -template -void WSClient::handleConnectError(beast::error_code ec, - ConnectHandler&& handler) { - if (retry_count_ < max_retries_) { - ++retry_count_; - LOG_F(ERROR, "Failed to connect: {}. Retrying in {} seconds...", - ec.message(), reconnect_interval_.count()); - ws_.next_layer().close(); - ping_timer_.expires_after(reconnect_interval_); - ping_timer_.async_wait([this, handler = std::forward( - handler)](beast::error_code ec) { - if (!ec) { - asyncConnect("example.com", "80", - std::forward(handler)); - } - }); - } else { - LOG_F(ERROR, "Failed to connect: {}. Giving up.", ec.message()); - handler(ec); - } -} diff --git a/src/atom/extra/beast/ws.hpp b/src/atom/extra/beast/ws.hpp deleted file mode 100644 index 1aa9ac23..00000000 --- a/src/atom/extra/beast/ws.hpp +++ /dev/null @@ -1,246 +0,0 @@ -#ifndef WS_CLIENT_HPP -#define WS_CLIENT_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace beast = boost::beast; -namespace net = boost::asio; -namespace websocket = beast::websocket; -using tcp = boost::asio::ip::tcp; -using json = nlohmann::json; - -/** - * @class WSClient - * @brief A WebSocket client class for managing WebSocket connections and - * communication. - */ -class WSClient { -public: - /** - * @brief Constructs a WSClient with the given I/O context. - * @param ioc The I/O context to use for asynchronous operations. - */ - explicit WSClient(net::io_context& ioc); - - /** - * @brief Sets the timeout duration for the WebSocket operations. - * @param timeout The timeout duration in seconds. - */ - void setTimeout(std::chrono::seconds timeout); - - /** - * @brief Sets the reconnection options. - * @param retries The number of reconnection attempts. - * @param interval The interval between reconnection attempts in seconds. - */ - void setReconnectOptions(int retries, std::chrono::seconds interval); - - /** - * @brief Sets the interval for sending ping messages. - * @param interval The ping interval in seconds. - */ - void setPingInterval(std::chrono::seconds interval); - - /** - * @brief Connects to the WebSocket server. - * @param host The server host. - * @param port The server port. - */ - void connect(const std::string& host, const std::string& port); - - /** - * @brief Sends a message to the WebSocket server. - * @param message The message to send. - */ - void send(const std::string& message); - - /** - * @brief Receives a message from the WebSocket server. - * @return The received message. - */ - std::string receive(); - - /** - * @brief Closes the WebSocket connection. - */ - void close(); - - /** - * @brief Asynchronously connects to the WebSocket server. - * @tparam ConnectHandler The type of the handler to call when the operation - * completes. - * @param host The server host. - * @param port The server port. - * @param handler The handler to call when the operation completes. - */ - template - void asyncConnect(const std::string& host, const std::string& port, - ConnectHandler&& handler); - - /** - * @brief Asynchronously sends a message to the WebSocket server. - * @tparam WriteHandler The type of the handler to call when the operation - * completes. - * @param message The message to send. - * @param handler The handler to call when the operation completes. - */ - template - void asyncSend(const std::string& message, WriteHandler&& handler); - - /** - * @brief Asynchronously receives a message from the WebSocket server. - * @tparam ReadHandler The type of the handler to call when the operation - * completes. - * @param handler The handler to call when the operation completes. - */ - template - void asyncReceive(ReadHandler&& handler); - - /** - * @brief Asynchronously closes the WebSocket connection. - * @tparam CloseHandler The type of the handler to call when the operation - * completes. - * @param handler The handler to call when the operation completes. - */ - template - void asyncClose(CloseHandler&& handler); - - /** - * @brief Asynchronously sends a JSON object to the WebSocket server. - * @param jdata The JSON object to send. - * @param handler The handler to call when the operation completes. - */ - void asyncSendJson( - const json& jdata, - std::function handler); - - /** - * @brief Asynchronously receives a JSON object from the WebSocket server. - * @tparam JsonHandler The type of the handler to call when the operation - * completes. - * @param handler The handler to call when the operation completes. - */ - template - void asyncReceiveJson(JsonHandler&& handler); - -private: - /** - * @brief Starts the ping timer to send periodic ping messages. - */ - void startPing(); - - /** - * @brief Handles connection errors and retries if necessary. - * @tparam ConnectHandler The type of the handler to call when the operation - * completes. - * @param ec The error code. - * @param handler The handler to call when the operation completes. - */ - template - void handleConnectError(beast::error_code ec, ConnectHandler&& handler); - - tcp::resolver resolver_; ///< The resolver for DNS lookups. - websocket::stream ws_; ///< The WebSocket stream. - net::steady_timer ping_timer_; ///< The timer for sending ping messages. - std::chrono::seconds timeout_{ - 30}; ///< The timeout duration for WebSocket operations. - std::chrono::seconds ping_interval_{ - 10}; ///< The interval for sending ping messages. - std::chrono::seconds reconnect_interval_{ - 5}; ///< The interval between reconnection attempts. - int max_retries_ = 3; ///< The maximum number of reconnection attempts. - int retry_count_ = 0; ///< The current number of reconnection attempts. -}; - -template -void WSClient::asyncConnect(const std::string& host, const std::string& port, - ConnectHandler&& handler) { - retry_count_ = 0; - resolver_.async_resolve( - host, port, - [this, handler = std::forward(handler)]( - beast::error_code ec, tcp::resolver::results_type results) { - if (ec) { - handleConnectError(ec, handler); - return; - } - - beast::get_lowest_layer(ws_).async_connect( - results, [this, handler = std::move(handler), results]( - beast::error_code ec, - tcp::resolver::results_type::endpoint_type) { - if (ec) { - handleConnectError(ec, handler); - return; - } - - ws_.async_handshake(results->host_name(), "/", - [this, handler = std::move(handler)]( - beast::error_code ec) { - if (!ec) { - startPing(); - } - handler(ec); - }); - }); - }); -} - -template -void WSClient::asyncSend(const std::string& message, WriteHandler&& handler) { - ws_.async_write(net::buffer(message), - [handler = std::forward(handler)]( - beast::error_code ec, std::size_t bytes_transferred) { - handler(ec, bytes_transferred); - }); -} - -template -void WSClient::asyncReceive(ReadHandler&& handler) { - auto buffer = std::make_shared(); - ws_.async_read( - *buffer, [buffer, handler = std::forward(handler)]( - beast::error_code ec, std::size_t bytes_transferred) { - if (ec) { - handler(ec, ""); - } else { - handler(ec, beast::buffers_to_string(buffer->data())); - } - }); -} - -template -void WSClient::asyncClose(CloseHandler&& handler) { - ws_.async_close(websocket::close_code::normal, - [handler = std::forward(handler)]( - beast::error_code ec) { handler(ec); }); -} - -template -void WSClient::asyncReceiveJson(JsonHandler&& handler) { - asyncReceive([handler = std::forward(handler)]( - beast::error_code ec, const std::string& message) { - if (ec) { - handler(ec, {}); - } else { - try { - auto jdata = json::parse(message); - handler(ec, jdata); - } catch (const json::parse_error&) { - handler(beast::error_code{}, {}); - } - } - }); -} - -#endif // WS_CLIENT_HPP diff --git a/src/atom/extra/boost/charconv.hpp b/src/atom/extra/boost/charconv.hpp deleted file mode 100644 index 4191a516..00000000 --- a/src/atom/extra/boost/charconv.hpp +++ /dev/null @@ -1,277 +0,0 @@ -#ifndef ATOM_EXTRA_BOOST_CHARCONV_HPP -#define ATOM_EXTRA_BOOST_CHARCONV_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace atom::extra::boost { - -// Constants definition -constexpr int ALIGNMENT = 16; -constexpr int DEFAULT_BASE = 10; -constexpr size_t BUFFER_SIZE = 128; - -/** - * @brief Enum class representing different number formats. - */ -enum class NumberFormat { GENERAL, SCIENTIFIC, FIXED, HEX }; - -/** - * @brief Struct for specifying format options for number conversion. - */ -struct alignas(ALIGNMENT) FormatOptions { - NumberFormat format = NumberFormat::GENERAL; ///< The number format. - std::optional precision = - std::nullopt; ///< The precision for floating-point numbers. - bool uppercase = false; ///< Whether to use uppercase letters. - char thousandsSeparator = - '\0'; ///< The character to use as a thousands separator. -}; - -/** - * @brief Class for converting numbers to and from strings using Boost.CharConv. - */ -class BoostCharConv { -public: - /** - * @brief Converts an integer to a string. - * @tparam T The type of the integer. - * @param value The integer value to convert. - * @param base The base for the conversion (default is 10). - * @param options The format options for the conversion. - * @return The converted string. - * @throws std::runtime_error if the conversion fails. - */ - template - static auto intToString(T value, int base = DEFAULT_BASE, - const FormatOptions& options = {}) -> std::string { - static_assert(std::is_integral_v, - "intToString only works with integral types"); - - std::array buffer{}; // Buffer for conversion - auto result = - std::to_chars(buffer.data(), buffer.data() + buffer.size(), value, - base); // Standard to_chars - - if (result.ec == std::errc()) { - std::string str(buffer.data(), result.ptr); - if (options.thousandsSeparator != '\0') { - str = addThousandsSeparator(str, options.thousandsSeparator); - } - return options.uppercase ? toUpper(str) : str; - } - throw std::runtime_error("Int to string conversion failed: " + - std::make_error_code(result.ec).message()); - } - - /** - * @brief Converts a floating-point number to a string. - * @tparam T The type of the floating-point number. - * @param value The floating-point value to convert. - * @param options The format options for the conversion. - * @return The converted string. - * @throws std::runtime_error if the conversion fails. - */ - template - static auto floatToString(T value, const FormatOptions& options = {}) - -> std::string { - std::array buffer{}; - auto format = getFloatFormat(options.format); - auto result = options.precision - ? ::boost::charconv::to_chars( - buffer.data(), buffer.data() + buffer.size(), - value, format, *options.precision) - : ::boost::charconv::to_chars( - buffer.data(), buffer.data() + buffer.size(), - value, format); - if (result.ec == std::errc()) { - std::string str(buffer.data(), result.ptr); - if (options.thousandsSeparator != '\0') { - str = addThousandsSeparator(str, options.thousandsSeparator); - } - return options.uppercase ? toUpper(str) : str; - } - throw std::runtime_error("Float to string conversion failed: " + - std::make_error_code(result.ec).message()); - } - - /** - * @brief Converts a string to an integer. - * @tparam T The type of the integer. - * @param str The string to convert. - * @param base The base for the conversion (default is 10). - * @return The converted integer. - * @throws std::runtime_error if the conversion fails. - */ - template - static auto stringToInt(const std::string& str, - int base = DEFAULT_BASE) -> T { - T value; - auto result = ::boost::charconv::from_chars( - str.data(), str.data() + str.size(), value, base); - if (result.ec == std::errc() && result.ptr == str.data() + str.size()) { - return value; - } - throw std::runtime_error("String to int conversion failed: " + - std::make_error_code(result.ec).message()); - } - - /** - * @brief Converts a string to a floating-point number. - * @tparam T The type of the floating-point number. - * @param str The string to convert. - * @return The converted floating-point number. - * @throws std::runtime_error if the conversion fails. - */ - template - static auto stringToFloat(const std::string& str) -> T { - T value; - auto result = ::boost::charconv::from_chars( - str.data(), str.data() + str.size(), value); - if (result.ec == std::errc() && result.ptr == str.data() + str.size()) { - return value; - } - throw std::runtime_error("String to float conversion failed: " + - std::make_error_code(result.ec).message()); - } - - /** - * @brief Converts a value to a string using the appropriate conversion - * function. - * @tparam T The type of the value. - * @param value The value to convert. - * @param options The format options for the conversion. - * @return The converted string. - */ - template - static auto toString(T value, - const FormatOptions& options = {}) -> std::string { - if constexpr (std::is_integral_v) { - return intToString(value, DEFAULT_BASE, options); - } else if constexpr (std::is_floating_point_v) { - return floatToString(value, options); - } else { - static_assert(ALWAYS_FALSE, "Unsupported type for toString"); - } - } - - /** - * @brief Converts a string to a value using the appropriate conversion - * function. - * @tparam T The type of the value. - * @param str The string to convert. - * @param base The base for the conversion (default is 10). - * @return The converted value. - */ - template - static auto fromString(const std::string& str, - int base = DEFAULT_BASE) -> T { - if constexpr (std::is_integral_v) { - return stringToInt(str, base); - } else if constexpr (std::is_floating_point_v) { - return stringToFloat(str); - } else { - static_assert(ALWAYS_FALSE, "Unsupported type for fromString"); - } - } - - /** - * @brief Converts special floating-point values (NaN, Inf) to strings. - * @tparam T The type of the floating-point value. - * @param value The floating-point value to convert. - * @return The converted string. - */ - template - static auto specialValueToString(T value) -> std::string { - if (std::isnan(value)) { - return "NaN"; - } - if (std::isinf(value)) { - return value > 0 ? "Inf" : "-Inf"; - } - return toString(value); - } - -private: - template - static constexpr bool ALWAYS_FALSE = false; - - /** - * @brief Gets the Boost.CharConv format for floating-point numbers. - * @param format The number format. - * @return The Boost.CharConv format. - */ - static auto getFloatFormat(NumberFormat format) - -> ::boost::charconv::chars_format { - switch (format) { - case NumberFormat::SCIENTIFIC: - return ::boost::charconv::chars_format::scientific; - case NumberFormat::FIXED: - return ::boost::charconv::chars_format::fixed; - case NumberFormat::HEX: - return ::boost::charconv::chars_format::hex; - default: - return ::boost::charconv::chars_format::general; - } - } - - /** - * @brief Gets the Boost.CharConv format for integer numbers. - * @param format The number format. - * @return The Boost.CharConv format. - */ - static auto getIntegerFormat(NumberFormat format) - -> ::boost::charconv::chars_format { - return (format == NumberFormat::HEX) - ? ::boost::charconv::chars_format::hex - : ::boost::charconv::chars_format::general; - } - - /** - * @brief Adds a thousands separator to a string. - * @param str The string to modify. - * @param separator The character to use as a thousands separator. - * @return The modified string with thousands separators. - */ - static auto addThousandsSeparator(const std::string& str, - char separator) -> std::string { - std::string result; - int count = 0; - bool pastDecimalPoint = false; - for (char it : std::ranges::reverse_view(str)) { - if (it == '.') { - pastDecimalPoint = true; - } - if (!pastDecimalPoint && count > 0 && count % 3 == 0) { - result.push_back(separator); - } - result.push_back(it); - count++; - } - std::reverse(result.begin(), result.end()); - return result; - } - - /** - * @brief Converts a string to uppercase. - * @param str The string to convert. - * @return The converted uppercase string. - */ - static auto toUpper(std::string str) -> std::string { - for (char& character : str) { - character = std::toupper(character); - } - return str; - } -}; - -} // namespace atom::extra::boost - -#endif // ATOM_EXTRA_BOOST_CHARCONV_HPP diff --git a/src/atom/extra/boost/locale.hpp b/src/atom/extra/boost/locale.hpp deleted file mode 100644 index fddc71f7..00000000 --- a/src/atom/extra/boost/locale.hpp +++ /dev/null @@ -1,228 +0,0 @@ -#ifndef ATOM_EXTRA_BOOST_LOCALE_HPP -#define ATOM_EXTRA_BOOST_LOCALE_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace atom::extra::boost { - -/** - * @brief A wrapper class for Boost.Locale functionalities. - * - * This class provides various utilities for string conversion, Unicode - * normalization, tokenization, translation, case conversion, collation, date - * and time formatting, number formatting, currency formatting, and regex - * replacement using Boost.Locale. - */ -class LocaleWrapper { -public: - /** - * @brief Constructs a LocaleWrapper object with the specified locale. - * @param localeName The name of the locale to use. If empty, the global - * locale is used. - */ - explicit LocaleWrapper(const std::string& localeName = "") { - ::boost::locale::generator gen; - std::locale::global(gen(localeName)); - locale_ = std::locale(); - } - - /** - * @brief Converts a string to UTF-8 encoding. - * @param str The string to convert. - * @param fromCharset The original character set of the string. - * @return The UTF-8 encoded string. - */ - static auto toUtf8(const std::string& str, - const std::string& fromCharset) -> std::string { - return ::boost::locale::conv::to_utf(str, fromCharset); - } - - /** - * @brief Converts a UTF-8 encoded string to another character set. - * @param str The UTF-8 encoded string to convert. - * @param toCharset The target character set. - * @return The converted string. - */ - static auto fromUtf8(const std::string& str, - const std::string& toCharset) -> std::string { - return ::boost::locale::conv::from_utf(str, toCharset); - } - - /** - * @brief Normalizes a Unicode string. - * @param str The string to normalize. - * @param norm The normalization form to use (default is NFC). - * @return The normalized string. - */ - static auto normalize(const std::string& str, - ::boost::locale::norm_type norm = - ::boost::locale::norm_default) -> std::string { - return ::boost::locale::normalize(str, norm); - } - - /** - * @brief Tokenizes a string into words. - * @param str The string to tokenize. - * @param localeName The name of the locale to use for tokenization. - * @return A vector of tokens. - */ - static auto tokenize(const std::string& str, - const std::string& localeName = "") - -> std::vector { - ::boost::locale::generator gen; - std::locale loc = gen(localeName); - ::boost::locale::boundary::ssegment_index map( - ::boost::locale::boundary::word, str.begin(), str.end(), loc); - std::vector tokens; -#pragma unroll - for (const auto& token : map) { - tokens.push_back(token.str()); - } - return tokens; - } - - /** - * @brief Translates a string to the specified locale. - * @param str The string to translate. - * @param domain The domain for the translation (not used in this - * implementation). - * @param localeName The name of the locale to use for translation. - * @return The translated string. - */ - static auto translate(const std::string& str, const std::string& /*domain*/, - const std::string& localeName = "") -> std::string { - ::boost::locale::generator gen; - std::locale loc = gen(localeName); - return ::boost::locale::translate(str).str(loc); - } - - /** - * @brief Converts a string to uppercase. - * @param str The string to convert. - * @return The uppercase string. - */ - [[nodiscard]] auto toUpper(const std::string& str) const -> std::string { - return ::boost::locale::to_upper(str, locale_); - } - - /** - * @brief Converts a string to lowercase. - * @param str The string to convert. - * @return The lowercase string. - */ - [[nodiscard]] auto toLower(const std::string& str) const -> std::string { - return ::boost::locale::to_lower(str, locale_); - } - - /** - * @brief Converts a string to title case. - * @param str The string to convert. - * @return The title case string. - */ - [[nodiscard]] auto toTitle(const std::string& str) const -> std::string { - return ::boost::locale::to_title(str, locale_); - } - - /** - * @brief Compares two strings using locale-specific collation rules. - * @param str1 The first string to compare. - * @param str2 The second string to compare. - * @return An integer less than, equal to, or greater than zero if str1 is - * found, respectively, to be less than, to match, or be greater than str2. - */ - [[nodiscard]] auto compare(const std::string& str1, - const std::string& str2) const -> int { - return static_cast(::boost::locale::comparator< - char, ::boost::locale::collate_level::primary>( - locale_)(str1, str2)); - } - - /** - * @brief Formats a date and time according to the specified format. - * @param dateTime The date and time to format. - * @param format The format string. - * @return The formatted date and time string. - */ - [[nodiscard]] static auto formatDate( - const ::boost::posix_time::ptime& dateTime, - const std::string& format) -> std::string { - std::ostringstream oss; - oss.imbue(std::locale()); - oss << ::boost::locale::format(format) % dateTime; - return oss.str(); - } - - /** - * @brief Formats a number with the specified precision. - * @param number The number to format. - * @param precision The number of decimal places. - * @return The formatted number string. - */ - [[nodiscard]] static auto formatNumber(double number, - int precision = 2) -> std::string { - std::ostringstream oss; - oss.imbue(std::locale()); - oss << std::fixed << std::setprecision(precision) << number; - return oss.str(); - } - - /** - * @brief Formats a currency amount. - * @param amount The amount to format. - * @param currency The currency code. - * @return The formatted currency string. - */ - [[nodiscard]] static auto formatCurrency( - double amount, const std::string& currency) -> std::string { - std::ostringstream oss; - oss.imbue(std::locale()); - oss << ::boost::locale::as::currency << currency << amount; - return oss.str(); - } - - /** - * @brief Replaces occurrences of a regex pattern in a string with a format - * string. - * @param str The string to search. - * @param regex The regex pattern to search for. - * @param format The format string to replace with. - * @return The resulting string after replacements. - */ - [[nodiscard]] static auto regexReplace( - const std::string& str, const ::boost::regex& regex, - const std::string& format) -> std::string { - return ::boost::regex_replace( - str, regex, format, ::boost::match_default | ::boost::format_all); - } - - /** - * @brief Formats a string with named arguments. - * @tparam Args The types of the arguments. - * @param formatString The format string. - * @param args The arguments to format. - * @return The formatted string. - */ - template - [[nodiscard]] auto format(const std::string& formatString, - Args&&... args) const -> std::string { - return (::boost::locale::format(formatString) % ... % args) - .str(locale_); - } - -private: - std::locale locale_; ///< The locale used for various operations. - static constexpr std::size_t K_BUFFER_SIZE = - 4096; ///< Buffer size for internal operations. -}; - -} // namespace atom::extra::boost - -#endif // ATOM_EXTRA_BOOST_LOCALE_HPP diff --git a/src/atom/extra/boost/math.hpp b/src/atom/extra/boost/math.hpp deleted file mode 100644 index 8c8202fd..00000000 --- a/src/atom/extra/boost/math.hpp +++ /dev/null @@ -1,601 +0,0 @@ -#ifndef ATOM_EXTRA_BOOST_MATH_HPP -#define ATOM_EXTRA_BOOST_MATH_HPP - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include - -namespace atom::extra::boost { - -/** - * @brief Concept to check if a type is numeric. - * @tparam T The type to check. - */ -template -concept Numeric = std::is_arithmetic_v; - -/** - * @brief Wrapper class for special mathematical functions. - * @tparam T The numeric type. - */ -template -class SpecialFunctions { -public: - /** - * @brief Computes the beta function. - * @param alpha The alpha parameter. - * @param beta The beta parameter. - * @return The value of the beta function. - */ - static auto beta(T alpha, T beta) -> T { - return ::boost::math::beta(alpha, beta); - } - - /** - * @brief Computes the gamma function. - * @param value The input value. - * @return The value of the gamma function. - */ - static auto gamma(T value) -> T { return ::boost::math::tgamma(value); } - - /** - * @brief Computes the digamma function. - * @param value The input value. - * @return The value of the digamma function. - */ - static auto digamma(T value) -> T { return ::boost::math::digamma(value); } - - /** - * @brief Computes the error function. - * @param value The input value. - * @return The value of the error function. - */ - static auto erf(T value) -> T { return ::boost::math::erf(value); } - - /** - * @brief Computes the Bessel function of the first kind. - * @param order The order of the Bessel function. - * @param value The input value. - * @return The value of the Bessel function. - */ - static auto besselJ(int order, T value) -> T { - return ::boost::math::cyl_bessel_j(order, value); - } - - /** - * @brief Computes the Legendre polynomial. - * @param order The order of the polynomial. - * @param value The input value. - * @return The value of the Legendre polynomial. - */ - static auto legendreP(int order, T value) -> T { - return ::boost::math::legendre_p(order, value); - } -}; - -/** - * @brief Wrapper class for statistical functions. - * @tparam T The numeric type. - */ -template -class Statistics { -public: - /** - * @brief Computes the mean of a dataset. - * @param data The input dataset. - * @return The mean of the dataset. - */ - static auto mean(const std::vector& data) -> T { - return ::boost::math::statistics::mean(data); - } - - /** - * @brief Computes the variance of a dataset. - * @param data The input dataset. - * @return The variance of the dataset. - */ - static auto variance(const std::vector& data) -> T { - return ::boost::math::statistics::variance(data); - } - - /** - * @brief Computes the skewness of a dataset. - * @param data The input dataset. - * @return The skewness of the dataset. - */ - static auto skewness(const std::vector& data) -> T { - return ::boost::math::statistics::skewness(data); - } - - /** - * @brief Computes the kurtosis of a dataset. - * @param data The input dataset. - * @return The kurtosis of the dataset. - */ - static auto kurtosis(const std::vector& data) -> T { - return ::boost::math::statistics::kurtosis(data); - } -}; - -/** - * @brief Wrapper class for probability distributions. - * @tparam T The numeric type. - */ -template -class Distributions { -public: - /** - * @brief Wrapper class for normal distribution. - */ - class NormalDistribution { - private: - ::boost::math::normal_distribution distribution; - - public: - /** - * @brief Constructs a normal distribution with given mean and standard - * deviation. - * @param mean The mean of the distribution. - * @param stddev The standard deviation of the distribution. - */ - NormalDistribution(T mean, T stddev) : distribution(mean, stddev) {} - - /** - * @brief Computes the probability density function (PDF) at a given - * value. - * @param value The input value. - * @return The PDF value. - */ - [[nodiscard]] auto pdf(T value) const -> T { - return ::boost::math::pdf(distribution, value); - } - - /** - * @brief Computes the cumulative distribution function (CDF) at a given - * value. - * @param value The input value. - * @return The CDF value. - */ - [[nodiscard]] auto cdf(T value) const -> T { - return ::boost::math::cdf(distribution, value); - } - - /** - * @brief Computes the quantile (inverse CDF) at a given probability. - * @param probability The input probability. - * @return The quantile value. - */ - [[nodiscard]] auto quantile(T probability) const -> T { - return ::boost::math::quantile(distribution, probability); - } - }; - - /** - * @brief Wrapper class for Student's t-distribution. - */ - class StudentTDistribution { - private: - ::boost::math::students_t_distribution distribution; - - public: - /** - * @brief Constructs a Student's t-distribution with given degrees of - * freedom. - * @param degreesOfFreedom The degrees of freedom. - */ - explicit StudentTDistribution(T degreesOfFreedom) - : distribution(degreesOfFreedom) {} - - /** - * @brief Computes the probability density function (PDF) at a given - * value. - * @param value The input value. - * @return The PDF value. - */ - [[nodiscard]] auto pdf(T value) const -> T { - return ::boost::math::pdf(distribution, value); - } - - /** - * @brief Computes the cumulative distribution function (CDF) at a given - * value. - * @param value The input value. - * @return The CDF value. - */ - [[nodiscard]] auto cdf(T value) const -> T { - return ::boost::math::cdf(distribution, value); - } - - /** - * @brief Computes the quantile (inverse CDF) at a given probability. - * @param probability The input probability. - * @return The quantile value. - */ - [[nodiscard]] auto quantile(T probability) const -> T { - return ::boost::math::quantile(distribution, probability); - } - }; - - /** - * @brief Wrapper class for Poisson distribution. - */ - class PoissonDistribution { - private: - ::boost::math::poisson_distribution distribution; - - public: - /** - * @brief Constructs a Poisson distribution with given mean. - * @param mean The mean of the distribution. - */ - explicit PoissonDistribution(T mean) : distribution(mean) {} - - /** - * @brief Computes the probability density function (PDF) at a given - * value. - * @param value The input value. - * @return The PDF value. - */ - [[nodiscard]] auto pdf(T value) const -> T { - return ::boost::math::pdf(distribution, value); - } - - /** - * @brief Computes the cumulative distribution function (CDF) at a given - * value. - * @param value The input value. - * @return The CDF value. - */ - [[nodiscard]] auto cdf(T value) const -> T { - return ::boost::math::cdf(distribution, value); - } - }; - - /** - * @brief Wrapper class for exponential distribution. - */ - class ExponentialDistribution { - private: - ::boost::math::exponential_distribution distribution; - - public: - /** - * @brief Constructs an exponential distribution with given rate - * parameter. - * @param lambda The rate parameter. - */ - explicit ExponentialDistribution(T lambda) : distribution(lambda) {} - - /** - * @brief Computes the probability density function (PDF) at a given - * value. - * @param value The input value. - * @return The PDF value. - */ - [[nodiscard]] auto pdf(T value) const -> T { - return ::boost::math::pdf(distribution, value); - } - - /** - * @brief Computes the cumulative distribution function (CDF) at a given - * value. - * @param value The input value. - * @return The CDF value. - */ - [[nodiscard]] auto cdf(T value) const -> T { - return ::boost::math::cdf(distribution, value); - } - }; -}; - -/** - * @brief Wrapper class for numerical integration methods. - * @tparam T The numeric type. - */ -template -class NumericalIntegration { -public: - /** - * @brief Computes the integral of a function using the trapezoidal rule. - * @param func The function to integrate. - * @param start The start of the integration interval. - * @param end The end of the integration interval. - * @return The computed integral. - */ - static auto trapezoidal(std::function func, T start, T end) -> T { - return ::boost::math::quadrature::trapezoidal(func, start, end); - } -}; - -/** - * @brief Computes the factorial of a number using constexpr if for compile-time - * optimization. - * @tparam T The numeric type. - * @param number The input number. - * @return The factorial of the number. - */ -template -constexpr auto factorial(T number) -> T { - if constexpr (std::is_integral_v) { - if (number == 0 || number == 1) { - return 1; - } - return number * factorial(number - 1); - } else { - return std::tgamma(number + 1); - } -} - -/** - * @brief Transforms a range of data using a given function. - * @tparam Range The type of the input range. - * @tparam Func The type of the transformation function. - * @param range The input range. - * @param func The transformation function. - * @return A transformed view of the input range. - */ -template -auto transformRange(Range&& range, Func func) { - return std::ranges::transform_view(std::forward(range), func); -} - -/** - * @brief Wrapper class for optimization methods. - * @tparam T The numeric type. - */ -template -class Optimization { -public: - /** - * @brief Performs one-dimensional golden section search to find the minimum - * of a function. - * @param func The function to minimize. - * @param start The start of the search interval. - * @param end The end of the search interval. - * @param tolerance The tolerance for convergence. - * @return The point where the function attains its minimum. - */ - static auto goldenSectionSearch(std::function func, T start, T end, - T tolerance) -> T { - const T goldenRatio = 0.618033988749895; - T pointC = end - goldenRatio * (end - start); - T pointD = start + goldenRatio * (end - start); - - while (std::abs(pointC - pointD) > tolerance) { - if (func(pointC) < func(pointD)) { - end = pointD; - } else { - start = pointC; - } - pointC = end - goldenRatio * (end - start); - pointD = start + goldenRatio * (end - start); - } - - return (start + end) / 2; - } - - /** - * @brief Performs Newton-Raphson method to find the root of a function. - * @param func The function whose root is to be found. - * @param derivativeFunc The derivative of the function. - * @param initialGuess The initial guess for the root. - * @param tolerance The tolerance for convergence. - * @param maxIterations The maximum number of iterations. - * @return The root of the function. - * @throws std::runtime_error If the derivative is zero or maximum - * iterations are reached without convergence. - */ - static auto newtonRaphson(std::function func, - std::function derivativeFunc, - T initialGuess, T tolerance, - int maxIterations) -> T { - T currentGuess = initialGuess; - for (int i = 0; i < maxIterations; ++i) { - T funcValue = func(currentGuess); - if (std::abs(funcValue) < tolerance) { - return currentGuess; - } - T derivativeValue = derivativeFunc(currentGuess); - if (derivativeValue == 0) { - throw std::runtime_error( - "Derivative is zero. Cannot continue."); - } - currentGuess = currentGuess - funcValue / derivativeValue; - } - throw std::runtime_error("Max iterations reached without convergence."); - } -}; - -/** - * @brief Wrapper class for linear algebra operations. - * @tparam T The numeric type. - */ -template -class LinearAlgebra { -public: - using Matrix = ::boost::numeric::ublas::matrix; - using Vector = ::boost::numeric::ublas::vector; - - /** - * @brief Solves a linear system of equations Ax = b. - * @param matrix The matrix A. - * @param vector The vector b. - * @return The solution vector x. - */ - static auto solveLinearSystem(const Matrix& matrix, - const Vector& vector) -> Vector { - ::boost::numeric::ublas::permutation_matrix - permutationMatrix(matrix.size1()); - Matrix matrixCopy = matrix; - ::boost::numeric::ublas::lu_factorize(matrixCopy, permutationMatrix); - Vector solution = vector; - ::boost::numeric::ublas::lu_substitute(matrixCopy, permutationMatrix, - solution); - return solution; - } - - /** - * @brief Computes the determinant of a matrix. - * @param matrix The input matrix. - * @return The determinant of the matrix. - */ - static auto determinant(const Matrix& matrix) -> T { - Matrix matrixCopy = matrix; - ::boost::numeric::ublas::permutation_matrix - permutationMatrix(matrix.size1()); - ::boost::numeric::ublas::lu_factorize(matrixCopy, permutationMatrix); - T determinantValue = 1.0; - for (std::size_t i = 0; i < matrix.size1(); ++i) { - determinantValue *= matrixCopy(i, i); - } - return determinantValue * (permutationMatrix.size() % 2 == 1 ? -1 : 1); - } - - /** - * @brief Multiplies two matrices. - * @param matrix1 The first matrix. - * @param matrix2 The second matrix. - * @return The product of the two matrices. - */ - static auto multiply(const Matrix& matrix1, - const Matrix& matrix2) -> Matrix { - return ::boost::numeric::ublas::prod(matrix1, matrix2); - } - - /** - * @brief Computes the transpose of a matrix. - * @param matrix The input matrix. - * @return The transpose of the matrix. - */ - static auto transpose(const Matrix& matrix) -> Matrix { - return ::boost::numeric::ublas::trans(matrix); - } -}; - -/** - * @brief Wrapper class for solving ordinary differential equations (ODEs). - * @tparam T The numeric type. - */ -template -class ODESolver { -public: - using State = std::vector; - using SystemFunction = std::function; - - /** - * @brief Solves an ODE using the 4th order Runge-Kutta method. - * @param system The system function defining the ODE. - * @param initialState The initial state of the system. - * @param startTime The start time. - * @param endTime The end time. - * @param stepSize The step size. - * @return A vector of states representing the solution. - */ - static auto rungeKutta4(SystemFunction system, State initialState, - T startTime, T endTime, - T stepSize) -> std::vector { - std::vector solution; - ::boost::numeric::odeint::runge_kutta4 stepper; - ::boost::numeric::odeint::integrate_const( - stepper, system, initialState, startTime, endTime, stepSize, - [&solution](const State& state, T) { solution.push_back(state); }); - return solution; - } -}; - -/** - * @brief Wrapper class for financial mathematics functions. - * @tparam T The numeric type. - */ -template -class FinancialMath { -public: - /** - * @brief Computes the price of a European call option using the - * Black-Scholes formula. - * @param stockPrice The current stock price. - * @param strikePrice The strike price of the option. - * @param riskFreeRate The risk-free interest rate. - * @param volatility The volatility of the stock. - * @param timeToMaturity The time to maturity of the option. - * @return The price of the European call option. - */ - static auto blackScholesCall(T stockPrice, T strikePrice, T riskFreeRate, - T volatility, T timeToMaturity) -> T { - T d1 = - (std::log(stockPrice / strikePrice) + - (riskFreeRate + 0.5 * volatility * volatility) * timeToMaturity) / - (volatility * std::sqrt(timeToMaturity)); - T d2 = d1 - volatility * std::sqrt(timeToMaturity); - return stockPrice * ::boost::math::cdf( - ::boost::math::normal_distribution(), d1) - - strikePrice * std::exp(-riskFreeRate * timeToMaturity) * - ::boost::math::cdf(::boost::math::normal_distribution(), - d2); - } - - /** - * @brief Computes the modified duration of a bond. - * @param yield The yield to maturity. - * @param couponRate The coupon rate of the bond. - * @param faceValue The face value of the bond. - * @param periods The number of periods. - * @return The modified duration of the bond. - */ - static auto modifiedDuration(T yield, T couponRate, T faceValue, - int periods) -> T { - T periodYield = yield / periods; - T couponPayment = couponRate * faceValue / periods; - T numPeriods = static_cast(periods); - T presentValue = 0; - T weightedPresentValue = 0; - for (int i = 1; i <= periods; ++i) { - T discountFactor = std::pow(1 + periodYield, -i); - presentValue += couponPayment * discountFactor; - weightedPresentValue += i * couponPayment * discountFactor; - } - presentValue += faceValue * std::pow(1 + periodYield, -numPeriods); - weightedPresentValue += - numPeriods * faceValue * std::pow(1 + periodYield, -numPeriods); - return (weightedPresentValue / presentValue) / (1 + periodYield); - } - - // 计算债券价格 - static auto bondPrice(T yield, T couponRate, T faceValue, - int periods) -> T { - T periodYield = yield / periods; - T couponPayment = couponRate * faceValue / periods; - T presentValue = 0; - for (int i = 1; i <= periods; ++i) { - presentValue += couponPayment * std::pow(1 + periodYield, -i); - } - presentValue += faceValue * std::pow(1 + periodYield, -periods); - return presentValue; - } - - // 计算期权的隐含波动率 - static auto impliedVolatility(T marketPrice, T stockPrice, T strikePrice, - T riskFreeRate, T timeToMaturity) -> T { - auto objectiveFunction = [&](T volatility) { - return blackScholesCall(stockPrice, strikePrice, riskFreeRate, - volatility, timeToMaturity) - - marketPrice; - }; - return Optimization::newtonRaphson( - objectiveFunction, [](T) { return 1; }, 0.2, 1e-6, 100); - } -}; - -} // namespace atom::extra::boost - -#endif diff --git a/src/atom/extra/boost/regex.hpp b/src/atom/extra/boost/regex.hpp deleted file mode 100644 index 045af020..00000000 --- a/src/atom/extra/boost/regex.hpp +++ /dev/null @@ -1,315 +0,0 @@ -#ifndef ATOM_EXTRA_BOOST_REGEX_HPP -#define ATOM_EXTRA_BOOST_REGEX_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace atom::extra::boost { - -/** - * @class RegexWrapper - * @brief A wrapper class for Boost.Regex providing various regex operations. - */ -class RegexWrapper { -public: - /** - * @brief Constructs a RegexWrapper with the given pattern and flags. - * @param pattern The regex pattern. - * @param flags The regex syntax option flags. - */ - explicit RegexWrapper(std::string_view pattern, - ::boost::regex_constants::syntax_option_type flags = - ::boost::regex_constants::normal) - : regex_(pattern.data(), flags) {} - - /** - * @brief Matches the given string against the regex pattern. - * @tparam T The type of the input string, convertible to std::string_view. - * @param str The input string to match. - * @return True if the string matches the pattern, false otherwise. - */ - template - requires std::convertible_to - auto match(const T& str) const -> bool { - return ::boost::regex_match(std::string_view(str).begin(), - std::string_view(str).end(), regex_); - } - - /** - * @brief Searches the given string for the first match of the regex - * pattern. - * @tparam T The type of the input string, convertible to std::string_view. - * @param str The input string to search. - * @return An optional containing the first match if found, std::nullopt - * otherwise. - */ - template - requires std::convertible_to - auto search(const T& str) const -> std::optional { - ::boost::smatch what; - if (::boost::regex_search(std::string(str), what, regex_)) { - return what.str(); - } - return std::nullopt; - } - - /** - * @brief Searches the given string for all matches of the regex pattern. - * @tparam T The type of the input string, convertible to std::string_view. - * @param str The input string to search. - * @return A vector containing all matches found. - */ - template - requires std::convertible_to - auto searchAll(const T& str) const -> std::vector { - std::vector results; - std::string s(str); - ::boost::sregex_iterator iter(s.begin(), s.end(), regex_); - ::boost::sregex_iterator end; - for (; iter != end; ++iter) { - results.push_back(iter->str()); - } - return results; - } - - /** - * @brief Replaces all matches of the regex pattern in the given string with - * the replacement string. - * @tparam T The type of the input string, convertible to std::string_view. - * @tparam U The type of the replacement string, convertible to - * std::string_view. - * @param str The input string. - * @param replacement The replacement string. - * @return A new string with all matches replaced. - */ - template - requires std::convertible_to && - std::convertible_to - auto replace(const T& str, const U& replacement) const -> std::string { - return ::boost::regex_replace(std::string(str), regex_, - std::string(replacement)); - } - - /** - * @brief Splits the given string by the regex pattern. - * @tparam T The type of the input string, convertible to std::string_view. - * @param str The input string to split. - * @return A vector containing the split parts of the string. - */ - template - requires std::convertible_to - auto split(const T& str) const -> std::vector { - std::vector results; - std::string s(str); - ::boost::sregex_token_iterator iter(s.begin(), s.end(), regex_, -1); - ::boost::sregex_token_iterator end; - for (; iter != end; ++iter) { - results.push_back(*iter); - } - return results; - } - - /** - * @brief Matches the given string and returns the groups of each match. - * @tparam T The type of the input string, convertible to std::string_view. - * @param str The input string to match. - * @return A vector of pairs, each containing the full match and a vector of - * groups. - */ - template - requires std::convertible_to - auto matchGroups(const T& str) const - -> std::vector>> { - std::vector>> results; - ::boost::smatch what; - std::string s(str); - std::string::const_iterator start = s.begin(); - std::string::const_iterator end = s.end(); - while (::boost::regex_search(start, end, what, regex_)) { - std::vector groups; - for (size_t i = 1; i < what.size(); ++i) { - groups.push_back(what[i].str()); - } - results.emplace_back(what[0].str(), std::move(groups)); - start = what[0].second; - } - return results; - } - - /** - * @brief Applies a function to each match of the regex pattern in the given - * string. - * @tparam T The type of the input string, convertible to std::string_view. - * @tparam Func The type of the function to apply. - * @param str The input string. - * @param func The function to apply to each match. - */ - template - requires std::convertible_to && - std::invocable - void forEachMatch(const T& str, Func&& func) const { - std::string s(str); - ::boost::sregex_iterator iter(s.begin(), s.end(), regex_); - ::boost::sregex_iterator end; - for (; iter != end; ++iter) { - func(*iter); - } - } - - /** - * @brief Gets the regex pattern as a string. - * @return The regex pattern. - */ - [[nodiscard]] auto getPattern() const -> std::string { - return regex_.str(); - } - - /** - * @brief Sets a new regex pattern with optional flags. - * @param pattern The new regex pattern. - * @param flags The regex syntax option flags. - */ - void setPattern(std::string_view pattern, - ::boost::regex_constants::syntax_option_type flags = - ::boost::regex_constants::normal) { - regex_.assign(pattern.data(), flags); - } - - /** - * @brief Matches the given string and returns the named captures. - * @tparam T The type of the input string, convertible to std::string_view. - * @param str The input string to match. - * @return A map of named captures. - */ - template - requires std::convertible_to - auto namedCaptures(const T& str) const - -> std::map { - std::map result; - ::boost::smatch what; - if (::boost::regex_match(std::string(str), what, regex_)) { - for (size_t i = 1; i <= regex_.mark_count(); ++i) { - result[std::to_string(i)] = what[i].str(); - } - } - return result; - } - - /** - * @brief Checks if the given string is a valid match for the regex pattern. - * @tparam T The type of the input string, convertible to std::string_view. - * @param str The input string to check. - * @return True if the string is a valid match, false otherwise. - */ - template - requires std::convertible_to - auto isValid(const T& str) const -> bool { - try { - ::boost::regex_match(std::string_view(str).begin(), - std::string_view(str).end(), regex_); - return true; - } catch (const ::boost::regex_error&) { - return false; - } - } - - /** - * @brief Replaces all matches of the regex pattern in the given string - * using a callback function. - * @tparam T The type of the input string, convertible to std::string_view. - * @param str The input string. - * @param callback The callback function to generate replacements. - * @return A new string with all matches replaced by the callback results. - */ - template - requires std::convertible_to - auto replaceCallback( - const T& str, - const std::function& callback) - const -> std::string { - std::string result = std::string(str); - ::boost::sregex_iterator iter(result.begin(), result.end(), regex_); - ::boost::sregex_iterator end; - - std::vector> - replacements; - while (iter != end) { - const ::boost::smatch& match = *iter; - std::string replacement = callback(match); - replacements.emplace_back(match.position(), std::move(replacement)); - ++iter; - } - - for (auto iter = replacements.rbegin(); iter != replacements.rend(); - ++iter) { - result.replace(iter->first, iter->second.length(), iter->second); - } - - return result; - } - - /** - * @brief Escapes special characters in the given string for use in a regex - * pattern. - * @param str The input string to escape. - * @return The escaped string. - */ - [[nodiscard]] static auto escapeString(const std::string& str) - -> std::string { - return ::boost::regex_replace( - str, ::boost::regex(R"([.^$|()\[\]{}*+?\\])"), R"(\\&)", - ::boost::regex_constants::match_default | - ::boost::regex_constants::format_sed); - } - - /** - * @brief Benchmarks the match operation for the given string over a number - * of iterations. - * @tparam T The type of the input string, convertible to std::string_view. - * @param str The input string to match. - * @param iterations The number of iterations to run the benchmark. - * @return The average time per match operation in nanoseconds. - */ - template - requires std::convertible_to - auto benchmarkMatch(const T& str, int iterations = 1000) const - -> std::chrono::nanoseconds { - auto start = std::chrono::high_resolution_clock::now(); - for (int i = 0; i < iterations; ++i) { - ::boost::regex_match(std::string_view(str).begin(), - std::string_view(str).end(), regex_); - } - auto end = std::chrono::high_resolution_clock::now(); - return std::chrono::duration_cast(end - - start) / - iterations; - } - - /** - * @brief Checks if the given regex pattern is valid. - * @param pattern The regex pattern to check. - * @return True if the pattern is valid, false otherwise. - */ - static auto isValidRegex(const std::string& pattern) -> bool { - try { - ::boost::regex test(pattern); - return true; - } catch (const ::boost::regex_error&) { - return false; - } - } - -private: - ::boost::regex regex_; ///< The Boost.Regex object. -}; - -} // namespace atom::extra::boost - -#endif diff --git a/src/atom/extra/boost/system.hpp b/src/atom/extra/boost/system.hpp deleted file mode 100644 index 6d30b9f1..00000000 --- a/src/atom/extra/boost/system.hpp +++ /dev/null @@ -1,313 +0,0 @@ -#ifndef ATOM_EXTRA_BOOST_SYSTEM_HPP -#define ATOM_EXTRA_BOOST_SYSTEM_HPP - -#include -#include -#include - -#include -#include -#include - -namespace atom::extra::boost { - -/** - * @class Error - * @brief A wrapper class for Boost.System error codes. - */ -class Error { -public: - /** - * @brief Default constructor. - */ - Error() noexcept = default; - - /** - * @brief Constructs an Error from a Boost.System error code. - * @param error_code The Boost.System error code. - */ - explicit Error(const ::boost::system::error_code& error_code) noexcept - : m_ec_(error_code) {} - - /** - * @brief Constructs an Error from an error value and category. - * @param error_value The error value. - * @param error_category The error category. - */ - Error(int error_value, - const ::boost::system::error_category& error_category) noexcept - : m_ec_(error_value, error_category) {} - - /** - * @brief Gets the error value. - * @return The error value. - */ - [[nodiscard]] auto value() const noexcept -> int { return m_ec_.value(); } - - /** - * @brief Gets the error category. - * @return The error category. - */ - [[nodiscard]] auto category() const noexcept - -> const ::boost::system::error_category& { - return m_ec_.category(); - } - - /** - * @brief Gets the error message. - * @return The error message. - */ - [[nodiscard]] auto message() const -> std::string { - return m_ec_.message(); - } - - /** - * @brief Checks if the error code is valid. - * @return True if the error code is valid, false otherwise. - */ - [[nodiscard]] explicit operator bool() const noexcept { - return static_cast(m_ec_); - } - - /** - * @brief Converts to a Boost.System error code. - * @return The Boost.System error code. - */ - [[nodiscard]] auto toBoostErrorCode() const noexcept - -> ::boost::system::error_code { - return m_ec_; - } - - /** - * @brief Equality operator. - * @param other The other Error to compare. - * @return True if the errors are equal, false otherwise. - */ - [[nodiscard]] auto operator==(const Error& other) const noexcept -> bool { - return m_ec_ == other.m_ec_; - } - - /** - * @brief Inequality operator. - * @param other The other Error to compare. - * @return True if the errors are not equal, false otherwise. - */ - [[nodiscard]] auto operator!=(const Error& other) const noexcept -> bool { - return !(*this == other); - } - -private: - ::boost::system::error_code m_ec_; ///< The Boost.System error code. -}; - -/** - * @class Exception - * @brief A custom exception class for handling errors. - */ -class Exception : public std::system_error { -public: - /** - * @brief Constructs an Exception from an Error. - * @param error The Error object. - */ - explicit Exception(const Error& error) - : std::system_error(error.value(), error.category(), error.message()) {} - - /** - * @brief Gets the associated Error. - * @return The associated Error. - */ - [[nodiscard]] auto error() const noexcept -> Error { - return Error(::boost::system::error_code( - code().value(), ::boost::system::generic_category())); - } -}; - -/** - * @class Result - * @brief A class template for handling results with potential errors. - * @tparam T The type of the result value. - */ -template -class Result { -public: - using value_type = T; ///< The type of the result value. - - /** - * @brief Constructs a Result with a value. - * @param value The result value. - */ - explicit Result(T value) : m_value_(std::move(value)) {} - - /** - * @brief Constructs a Result with an Error. - * @param error The Error object. - */ - explicit Result(Error error) : m_error_(error) {} - - /** - * @brief Checks if the Result has a value. - * @return True if the Result has a value, false otherwise. - */ - [[nodiscard]] auto hasValue() const noexcept -> bool { return !m_error_; } - - /** - * @brief Gets the result value. - * @return The result value. - * @throws Exception if there is an error. - */ - [[nodiscard]] auto value() const& -> const T& { - if (!hasValue()) { - throw Exception(m_error_); - } - return *m_value_; - } - - /** - * @brief Gets the result value. - * @return The result value. - * @throws Exception if there is an error. - */ - [[nodiscard]] auto value() && -> T&& { - if (!hasValue()) { - throw Exception(m_error_); - } - return std::move(*m_value_); - } - - /** - * @brief Gets the associated Error. - * @return The associated Error. - */ - [[nodiscard]] auto error() const& noexcept -> const Error& { - return m_error_; - } - - /** - * @brief Gets the associated Error. - * @return The associated Error. - */ - [[nodiscard]] auto error() && noexcept -> Error { return m_error_; } - - /** - * @brief Checks if the Result has a value. - * @return True if the Result has a value, false otherwise. - */ - [[nodiscard]] explicit operator bool() const noexcept { return hasValue(); } - - /** - * @brief Gets the result value or a default value. - * @tparam U The type of the default value. - * @param default_value The default value. - * @return The result value or the default value. - */ - template - auto valueOr(U&& default_value) const& -> T { - return hasValue() ? value() - : static_cast(std::forward(default_value)); - } - - /** - * @brief Applies a function to the result value if it exists. - * @tparam F The type of the function. - * @param func The function to apply. - * @return A new Result with the function applied. - */ - template - auto map(F&& func) const -> Result> { - if (hasValue()) { - return Result>(func(*m_value_)); - } - return Result>(Error(m_error_)); - } - - /** - * @brief Applies a function to the result value if it exists. - * @tparam F The type of the function. - * @param func The function to apply. - * @return The result of the function. - */ - template - auto andThen(F&& func) const -> std::invoke_result_t { - if (hasValue()) { - return func(*m_value_); - } - return std::invoke_result_t(Error(m_error_)); - } - -private: - std::optional m_value_; ///< The result value. - Error m_error_; ///< The associated Error. -}; - -/** - * @class Result - * @brief A specialization of the Result class for void type. - */ -template <> -class Result { -public: - /** - * @brief Default constructor. - */ - Result() = default; - - /** - * @brief Constructs a Result with an Error. - * @param error The Error object. - */ - explicit Result(Error error) : m_error_(error) {} - - /** - * @brief Checks if the Result has a value. - * @return True if the Result has a value, false otherwise. - */ - [[nodiscard]] auto hasValue() const noexcept -> bool { return !m_error_; } - - /** - * @brief Gets the associated Error. - * @return The associated Error. - */ - [[nodiscard]] auto error() const& noexcept -> const Error& { - return m_error_; - } - - /** - * @brief Gets the associated Error. - * @return The associated Error. - */ - [[nodiscard]] auto error() && noexcept -> Error { return m_error_; } - - /** - * @brief Checks if the Result has a value. - * @return True if the Result has a value, false otherwise. - */ - [[nodiscard]] explicit operator bool() const noexcept { return hasValue(); } - -private: - Error m_error_; ///< The associated Error. -}; - -/** - * @brief Creates a Result from a function. - * @tparam F The type of the function. - * @param func The function to execute. - * @return A Result with the function's return value or an Error. - */ -template -auto makeResult(F&& func) -> Result> { - using return_type = std::invoke_result_t; - try { - return Result(func()); - } catch (const Exception& e) { - return Result(e.error()); - } catch (const std::exception&) { - return Result( - Error(::boost::system::errc::invalid_argument, - ::boost::system::generic_category())); - } -} - -} // namespace atom::extra::boost - -#endif // ATOM_EXTRA_BOOST_SYSTEM_HPP diff --git a/src/atom/extra/boost/uuid.hpp b/src/atom/extra/boost/uuid.hpp deleted file mode 100644 index f4c3bcca..00000000 --- a/src/atom/extra/boost/uuid.hpp +++ /dev/null @@ -1,293 +0,0 @@ -#ifndef ATOM_EXTRA_BOOST_UUID_HPP -#define ATOM_EXTRA_BOOST_UUID_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace atom::extra::boost { -constexpr size_t UUID_SIZE = 16; -constexpr int BASE64_RESERVE_SIZE = 22; -constexpr int SHIFT_40 = 40; -constexpr int SHIFT_32 = 32; -constexpr int SHIFT_24 = 24; -constexpr int SHIFT_16 = 16; -constexpr int SHIFT_8 = 8; -constexpr int BASE64_MASK = 63; -constexpr int BASE64_SHIFT_18 = 18; -constexpr int BASE64_SHIFT_12 = 12; -constexpr int BASE64_SHIFT_6 = 6; -constexpr uint64_t TIMESTAMP_DIVISOR = 10000000; -constexpr uint64_t UUID_EPOCH = 0x01B21DD213814000L; - -/** - * @class UUID - * @brief A wrapper class for Boost.UUID providing various UUID operations. - */ -class UUID { -private: - ::boost::uuids::uuid uuid_; ///< The Boost.UUID object. - -public: - /** - * @brief Default constructor that generates a random UUID (v4). - */ - UUID() : uuid_(::boost::uuids::random_generator()()) {} - - /** - * @brief Constructs a UUID from a string representation. - * @param str The string representation of the UUID. - */ - explicit UUID(const std::string& str) - : uuid_(::boost::uuids::string_generator()(str)) {} - - /** - * @brief Constructs a UUID from a Boost.UUID object. - * @param uuid The Boost.UUID object. - */ - explicit UUID(const ::boost::uuids::uuid& uuid) : uuid_(uuid) {} - - /** - * @brief Converts the UUID to a string representation. - * @return The string representation of the UUID. - */ - [[nodiscard]] auto toString() const -> std::string { - return ::boost::uuids::to_string(uuid_); - } - - /** - * @brief Checks if the UUID is nil (all zeros). - * @return True if the UUID is nil, false otherwise. - */ - [[nodiscard]] auto isNil() const -> bool { return uuid_.is_nil(); } - - /** - * @brief Compares this UUID with another UUID. - * @param other The other UUID to compare. - * @return The result of the comparison. - */ - auto operator<=>(const UUID& other) const -> std::strong_ordering { - return uuid_ <=> other.uuid_; - } - - /** - * @brief Checks if this UUID is equal to another UUID. - * @param other The other UUID to compare. - * @return True if the UUIDs are equal, false otherwise. - */ - auto operator==(const UUID& other) const -> bool { - return uuid_ == other.uuid_; - } - - /** - * @brief Formats the UUID as a string enclosed in curly braces. - * @return The formatted string. - */ - [[nodiscard]] auto format() const -> std::string { - return std::format("{{{}}}", toString()); - } - - /** - * @brief Converts the UUID to a vector of bytes. - * @return The vector of bytes representing the UUID. - */ - [[nodiscard]] auto toBytes() const -> std::vector { - return {uuid_.begin(), uuid_.end()}; - } - - /** - * @brief Constructs a UUID from a span of bytes. - * @param bytes The span of bytes. - * @return The constructed UUID. - * @throws std::invalid_argument if the span size is not 16 bytes. - */ - static auto fromBytes(const std::span& bytes) -> UUID { - if (bytes.size() != UUID_SIZE) { - throw std::invalid_argument("UUID must be exactly 16 bytes"); - } - ::boost::uuids::uuid uuid; - std::copy(bytes.begin(), bytes.end(), uuid.begin()); - return UUID(uuid); - } - - /** - * @brief Converts the UUID to a 64-bit unsigned integer. - * @return The 64-bit unsigned integer representation of the UUID. - */ - [[nodiscard]] auto toUint64() const -> uint64_t { - return ::boost::lexical_cast(uuid_); - } - - /** - * @brief Gets the DNS namespace UUID. - * @return The DNS namespace UUID. - */ - static auto namespaceDNS() -> UUID { - return UUID(::boost::uuids::ns::dns()); - } - - /** - * @brief Gets the URL namespace UUID. - * @return The URL namespace UUID. - */ - static auto namespaceURL() -> UUID { - return UUID(::boost::uuids::ns::url()); - } - - /** - * @brief Gets the OID namespace UUID. - * @return The OID namespace UUID. - */ - static auto namespaceOID() -> UUID { - return UUID(::boost::uuids::ns::oid()); - } - - /** - * @brief Generates a version 3 (MD5) UUID based on a namespace UUID and a - * name. - * @param namespace_uuid The namespace UUID. - * @param name The name. - * @return The generated UUID. - */ - static auto v3(const UUID& namespace_uuid, - const std::string& name) -> UUID { - return UUID(::boost::uuids::name_generator(namespace_uuid.uuid_)(name)); - } - - /** - * @brief Generates a version 5 (SHA-1) UUID based on a namespace UUID and a - * name. - * @param namespace_uuid The namespace UUID. - * @param name The name. - * @return The generated UUID. - */ - static auto v5(const UUID& namespace_uuid, - const std::string& name) -> UUID { - ::boost::uuids::name_generator_sha1 gen(namespace_uuid.uuid_); - return UUID(gen(name)); - } - - /** - * @brief Gets the version of the UUID. - * @return The version of the UUID. - */ - [[nodiscard]] auto version() const -> int { return uuid_.version(); } - - /** - * @brief Gets the variant of the UUID. - * @return The variant of the UUID. - */ - [[nodiscard]] auto variant() const -> int { return uuid_.variant(); } - - /** - * @brief Generates a version 1 (timestamp-based) UUID. - * @return The generated UUID. - */ - [[nodiscard]] static auto v1() -> UUID { - static ::boost::uuids::basic_random_generator gen; - return UUID(gen()); - } - - /** - * @brief Generates a version 4 (random) UUID. - * @return The generated UUID. - */ - [[nodiscard]] static auto v4() -> UUID { - return {}; // Default constructor already generates v4 UUID - } - - /** - * @brief Converts the UUID to a Base64 string representation. - * @return The Base64 string representation of the UUID. - */ - [[nodiscard]] auto toBase64() const -> std::string { - static const char* basE64Chars = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - std::string result; - result.reserve(BASE64_RESERVE_SIZE); - - auto bytes = toBytes(); - for (size_t i = 0; i < bytes.size(); i += 3) { - uint32_t num = - (bytes[i] << SHIFT_16) | - (i + 1 < bytes.size() ? bytes[i + 1] << SHIFT_8 : 0) | - (i + 2 < bytes.size() ? bytes[i + 2] : 0); - result += basE64Chars[(num >> BASE64_SHIFT_18) & BASE64_MASK]; - result += basE64Chars[(num >> BASE64_SHIFT_12) & BASE64_MASK]; - result += basE64Chars[(num >> BASE64_SHIFT_6) & BASE64_MASK]; - result += basE64Chars[num & BASE64_MASK]; - } - result.resize(BASE64_RESERVE_SIZE); // Remove padding - return result; - } - - /** - * @brief Gets the timestamp from a version 1 UUID. - * @return The timestamp as a std::chrono::system_clock::time_point. - * @throws std::runtime_error if the UUID is not version 1. - */ - [[nodiscard]] auto getTimestamp() const - -> std::chrono::system_clock::time_point { - if (version() != 1) { - throw std::runtime_error( - "Timestamp is only available for version 1 UUIDs"); - } - uint64_t timestamp = ((uint64_t)uuid_.data[6] << SHIFT_40) | - ((uint64_t)uuid_.data[7] << SHIFT_32) | - ((uint64_t)uuid_.data[4] << SHIFT_24) | - ((uint64_t)uuid_.data[5] << SHIFT_16) | - ((uint64_t)uuid_.data[0] << SHIFT_8) | - (uint64_t)uuid_.data[1]; - return std::chrono::system_clock::from_time_t(static_cast( - timestamp / TIMESTAMP_DIVISOR - UUID_EPOCH / TIMESTAMP_DIVISOR)); - } - - /** - * @brief Hash function for UUIDs. - * @tparam H The hash function type. - * @param h The hash function. - * @param uuid The UUID to hash. - * @return The hash value. - */ - template - friend auto abslHashValue(H h, const UUID& uuid) -> H { - return H::combine(std::move(h), uuid.uuid_); - } - - /** - * @brief Gets the underlying Boost.UUID object. - * @return The Boost.UUID object. - */ - [[nodiscard]] auto getUUID() const -> const ::boost::uuids::uuid& { - return uuid_; - } -}; -} // namespace atom::extra::boost - -namespace std { -/** - * @brief Specialization of std::hash for UUID. - */ -template <> -struct hash { - /** - * @brief Hash function for UUIDs. - * @param uuid The UUID to hash. - * @return The hash value. - */ - auto operator()(const atom::extra::boost::UUID& uuid) const -> size_t { - return ::boost::hash<::boost::uuids::uuid>()(uuid.getUUID()); - } -}; -} // namespace std - -#endif diff --git a/src/atom/extra/inicpp/common.hpp b/src/atom/extra/inicpp/common.hpp deleted file mode 100644 index 0a14b8d5..00000000 --- a/src/atom/extra/inicpp/common.hpp +++ /dev/null @@ -1,101 +0,0 @@ -#ifndef ATOM_EXTRA_INICPP_COMMON_HPP -#define ATOM_EXTRA_INICPP_COMMON_HPP - -#include -#include -#include -#include -#include - -#include "atom/macro.hpp" - -namespace inicpp { - -/** - * @brief Returns a string view of whitespace characters. - * @return A string view containing whitespace characters. - */ -ATOM_CONSTEXPR auto whitespaces() -> std::string_view { return " \t\n\r\f\v"; } - -/** - * @brief Returns a string view of indent characters. - * @return A string view containing indent characters. - */ -ATOM_CONSTEXPR auto indents() -> std::string_view { return " \t"; } - -/** - * @brief Trims leading and trailing whitespace from a string. - * @param str The string to trim. - */ -ATOM_INLINE void trim(std::string &str) { - auto first = str.find_first_not_of(whitespaces()); - auto last = str.find_last_not_of(whitespaces()); - - if (first == std::string::npos || last == std::string::npos) { - str.clear(); - } else { - str = str.substr(first, last - first + 1); - } -} - -/** - * @brief Converts a string view to a long integer. - * @param value The string view to convert. - * @return An optional containing the converted long integer, or std::nullopt if - * conversion fails. - */ -ATOM_INLINE auto strToLong(std::string_view value) -> std::optional { - long result; - auto [ptr, ec] = - std::from_chars(value.data(), value.data() + value.size(), result); - if (ec == std::errc()) { - return result; - } - return std::nullopt; -} - -/** - * @brief Converts a string view to an unsigned long integer. - * @param value The string view to convert. - * @return An optional containing the converted unsigned long integer, or - * std::nullopt if conversion fails. - */ -ATOM_INLINE auto strToULong(std::string_view value) - -> std::optional { - unsigned long result; - auto [ptr, ec] = - std::from_chars(value.data(), value.data() + value.size(), result); - if (ec == std::errc()) { - return result; - } - return std::nullopt; -} - -/** - * @struct StringInsensitiveLess - * @brief A comparator for case-insensitive string comparison. - */ -struct StringInsensitiveLess { - /** - * @brief Compares two strings in a case-insensitive manner. - * @param lhs The left-hand side string view. - * @param rhs The right-hand side string view. - * @return True if lhs is less than rhs, false otherwise. - */ - auto operator()(std::string_view lhs, std::string_view rhs) const -> bool { - auto tolower = [](unsigned char ctx) { return std::tolower(ctx); }; - - auto lhsRange = std::ranges::subrange(lhs.begin(), lhs.end()); - auto rhsRange = std::ranges::subrange(rhs.begin(), rhs.end()); - - return std::ranges::lexicographical_compare( - lhsRange, rhsRange, - [tolower](unsigned char first, unsigned char second) { - return tolower(first) < tolower(second); - }); - } -}; - -} // namespace inicpp - -#endif // ATOM_EXTRA_INICPP_COMMON_HPP diff --git a/src/atom/extra/inicpp/convert.hpp b/src/atom/extra/inicpp/convert.hpp deleted file mode 100644 index acfe7154..00000000 --- a/src/atom/extra/inicpp/convert.hpp +++ /dev/null @@ -1,427 +0,0 @@ -#ifndef ATOM_EXTRA_INICPP_CONVERT_HPP -#define ATOM_EXTRA_INICPP_CONVERT_HPP - -#include -#include -#include "common.hpp" - -namespace inicpp { - -/** - * @brief Template structure for converting between types and strings. - * @tparam T The type to convert. - */ -template -struct Convert {}; - -/** - * @brief Specialization of Convert for bool type. - */ -template <> -struct Convert { - /** - * @brief Decodes a string view to a bool. - * @param value The string view to decode. - * @param result The resulting bool. - * @throws std::invalid_argument if the string is not "TRUE" or "FALSE". - */ - void decode(std::string_view value, bool &result) { - std::string str(value); - std::ranges::transform(str, str.begin(), [](char c) { - return static_cast(::toupper(c)); - }); - - if (str == "TRUE") - result = true; - else if (str == "FALSE") - result = false; - else - throw std::invalid_argument("field is not a bool"); - } - - /** - * @brief Encodes a bool to a string. - * @param value The bool to encode. - * @param result The resulting string. - */ - void encode(const bool value, std::string &result) { - result = value ? "true" : "false"; - } -}; - -/** - * @brief Specialization of Convert for char type. - */ -template <> -struct Convert { - /** - * @brief Decodes a string view to a char. - * @param value The string view to decode. - * @param result The resulting char. - * @throws std::invalid_argument if the string is empty. - */ - void decode(std::string_view value, char &result) { - if (value.empty()) - throw std::invalid_argument("field is empty"); - result = value.front(); - } - - /** - * @brief Encodes a char to a string. - * @param value The char to encode. - * @param result The resulting string. - */ - void encode(const char value, std::string &result) { result = value; } -}; - -/** - * @brief Specialization of Convert for unsigned char type. - */ -template <> -struct Convert { - /** - * @brief Decodes a string view to an unsigned char. - * @param value The string view to decode. - * @param result The resulting unsigned char. - * @throws std::invalid_argument if the string is empty. - */ - void decode(std::string_view value, unsigned char &result) { - if (value.empty()) - throw std::invalid_argument("field is empty"); - result = value.front(); - } - - /** - * @brief Encodes an unsigned char to a string. - * @param value The unsigned char to encode. - * @param result The resulting string. - */ - void encode(const unsigned char value, std::string &result) { - result = value; - } -}; - -/** - * @brief Specialization of Convert for short type. - */ -template <> -struct Convert { - /** - * @brief Decodes a string view to a short. - * @param value The string view to decode. - * @param result The resulting short. - * @throws std::invalid_argument if the string cannot be converted to a - * short. - */ - void decode(std::string_view value, short &result) { - if (auto tmp = strToLong(value); tmp.has_value()) - result = static_cast(tmp.value()); - else - throw std::invalid_argument("field is not a short"); - } - - /** - * @brief Encodes a short to a string. - * @param value The short to encode. - * @param result The resulting string. - */ - void encode(const short value, std::string &result) { - result = std::to_string(value); - } -}; - -/** - * @brief Specialization of Convert for unsigned short type. - */ -template <> -struct Convert { - /** - * @brief Decodes a string view to an unsigned short. - * @param value The string view to decode. - * @param result The resulting unsigned short. - * @throws std::invalid_argument if the string cannot be converted to an - * unsigned short. - */ - void decode(std::string_view value, unsigned short &result) { - if (auto tmp = strToULong(value); tmp.has_value()) - result = static_cast(tmp.value()); - else - throw std::invalid_argument("field is not an unsigned short"); - } - - /** - * @brief Encodes an unsigned short to a string. - * @param value The unsigned short to encode. - * @param result The resulting string. - */ - void encode(const unsigned short value, std::string &result) { - result = std::to_string(value); - } -}; - -/** - * @brief Specialization of Convert for int type. - */ -template <> -struct Convert { - /** - * @brief Decodes a string view to an int. - * @param value The string view to decode. - * @param result The resulting int. - * @throws std::invalid_argument if the string cannot be converted to an - * int. - */ - void decode(std::string_view value, int &result) { - if (auto tmp = strToLong(value); tmp.has_value()) - result = static_cast(tmp.value()); - else - throw std::invalid_argument("field is not an int"); - } - - /** - * @brief Encodes an int to a string. - * @param value The int to encode. - * @param result The resulting string. - */ - void encode(const int value, std::string &result) { - result = std::to_string(value); - } -}; - -/** - * @brief Specialization of Convert for unsigned int type. - */ -template <> -struct Convert { - /** - * @brief Decodes a string view to an unsigned int. - * @param value The string view to decode. - * @param result The resulting unsigned int. - * @throws std::invalid_argument if the string cannot be converted to an - * unsigned int. - */ - void decode(std::string_view value, unsigned int &result) { - if (auto tmp = strToULong(value); tmp.has_value()) - result = static_cast(tmp.value()); - else - throw std::invalid_argument("field is not an unsigned int"); - } - - /** - * @brief Encodes an unsigned int to a string. - * @param value The unsigned int to encode. - * @param result The resulting string. - */ - void encode(const unsigned int value, std::string &result) { - result = std::to_string(value); - } -}; - -/** - * @brief Specialization of Convert for long type. - */ -template <> -struct Convert { - /** - * @brief Decodes a string view to a long. - * @param value The string view to decode. - * @param result The resulting long. - * @throws std::invalid_argument if the string cannot be converted to a - * long. - */ - void decode(std::string_view value, long &result) { - if (auto tmp = strToLong(value); tmp.has_value()) - result = tmp.value(); - else - throw std::invalid_argument("field is not a long"); - } - - /** - * @brief Encodes a long to a string. - * @param value The long to encode. - * @param result The resulting string. - */ - void encode(const long value, std::string &result) { - result = std::to_string(value); - } -}; - -/** - * @brief Specialization of Convert for unsigned long type. - */ -template <> -struct Convert { - /** - * @brief Decodes a string view to an unsigned long. - * @param value The string view to decode. - * @param result The resulting unsigned long. - * @throws std::invalid_argument if the string cannot be converted to an - * unsigned long. - */ - void decode(std::string_view value, unsigned long &result) { - if (auto tmp = strToULong(value); tmp.has_value()) - result = tmp.value(); - else - throw std::invalid_argument("field is not an unsigned long"); - } - - /** - * @brief Encodes an unsigned long to a string. - * @param value The unsigned long to encode. - * @param result The resulting string. - */ - void encode(const unsigned long value, std::string &result) { - result = std::to_string(value); - } -}; - -/** - * @brief Specialization of Convert for double type. - */ -template <> -struct Convert { - /** - * @brief Decodes a string view to a double. - * @param value The string view to decode. - * @param result The resulting double. - */ - void decode(std::string_view value, double &result) { - result = std::stod(std::string(value)); - } - - /** - * @brief Encodes a double to a string. - * @param value The double to encode. - * @param result The resulting string. - */ - void encode(const double value, std::string &result) { - result = std::to_string(value); - } -}; - -/** - * @brief Specialization of Convert for float type. - */ -template <> -struct Convert { - /** - * @brief Decodes a string view to a float. - * @param value The string view to decode. - * @param result The resulting float. - */ - void decode(std::string_view value, float &result) { - result = std::stof(std::string(value)); - } - - /** - * @brief Encodes a float to a string. - * @param value The float to encode. - * @param result The resulting string. - */ - void encode(const float value, std::string &result) { - result = std::to_string(value); - } -}; - -/** - * @brief Specialization of Convert for std::string type. - */ -template <> -struct Convert { - /** - * @brief Decodes a string view to a std::string. - * @param value The string view to decode. - * @param result The resulting std::string. - */ - void decode(std::string_view value, std::string &result) { result = value; } - - /** - * @brief Encodes a std::string to a string. - * @param value The std::string to encode. - * @param result The resulting string. - */ - void encode(const std::string &value, std::string &result) { - result = value; - } -}; - -#ifdef __cpp_lib_string_view -/** - * @brief Specialization of Convert for std::string_view type. - */ -template <> -struct Convert { - /** - * @brief Decodes a string view to a std::string_view. - * @param value The string view to decode. - * @param result The resulting std::string_view. - */ - void decode(std::string_view value, std::string_view &result) { - result = value; - } - - /** - * @brief Encodes a std::string_view to a string. - * @param value The std::string_view to encode. - * @param result The resulting string. - */ - void encode(std::string_view value, std::string &result) { result = value; } -}; -#endif - -/** - * @brief Specialization of Convert for const char* type. - */ -template <> -struct Convert { - /** - * @brief Encodes a const char* to a string. - * @param value The const char* to encode. - * @param result The resulting string. - */ - void encode(const char *const &value, std::string &result) { - result = value; - } - - /** - * @brief Decodes a string view to a const char*. - * @param value The string view to decode. - * @param result The resulting const char*. - */ - void decode(std::string_view value, const char *&result) { - result = value.data(); - } -}; - -/** - * @brief Specialization of Convert for char arrays. - * @tparam N The size of the char array. - */ -template -struct Convert { - /** - * @brief Decodes a string to a char array. - * @param value The string to decode. - * @param result The resulting char array. - * @throws std::invalid_argument if the string is too large for the char - * array. - */ - void decode(const std::string &value, char (&result)[N]) { - if (value.size() >= N) - throw std::invalid_argument( - "field value is too large for the char array"); - std::copy(value.begin(), value.end(), result); - result[value.size()] = '\0'; // Null-terminate the char array - } - - /** - * @brief Encodes a char array to a string. - * @param value The char array to encode. - * @param result The resulting string. - */ - void encode(const char (&value)[N], std::string &result) { result = value; } -}; - -} // namespace inicpp - -#endif // ATOM_EXTRA_INICPP_CONVERT_HPP diff --git a/src/atom/extra/inicpp/field.hpp b/src/atom/extra/inicpp/field.hpp deleted file mode 100644 index f3148b70..00000000 --- a/src/atom/extra/inicpp/field.hpp +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef ATOM_EXTRA_INICPP_INIFIELD_HPP -#define ATOM_EXTRA_INICPP_INIFIELD_HPP - -#include "convert.hpp" - -#include -#include - -namespace inicpp { - -class IniField { -private: - std::string value_; - -public: - IniField() = default; - explicit IniField(std::string value) : value_(std::move(value)) {} - IniField(const IniField &field) = default; - ~IniField() = default; - - template - T as() const { - Convert conv; - T result; - conv.decode(value_, result); - return result; - } - - template - IniField &operator=(const T &value) { - Convert conv; - conv.encode(value, value_); - return *this; - } - - IniField &operator=(const IniField &field) = default; -}; - -} // namespace inicpp - -#endif // ATOM_EXTRA_INICPP_INIFIELD_HPP diff --git a/src/atom/extra/inicpp/file.hpp b/src/atom/extra/inicpp/file.hpp deleted file mode 100644 index 43974d46..00000000 --- a/src/atom/extra/inicpp/file.hpp +++ /dev/null @@ -1,265 +0,0 @@ -#ifndef ATOM_EXTRA_INICPP_INIFILE_HPP -#define ATOM_EXTRA_INICPP_INIFILE_HPP - -#include -#include -#include -#include "section.hpp" - -#include "atom/error/exception.hpp" - -namespace inicpp { - -/** - * @class IniFileBase - * @brief A class for handling INI files with customizable comparison. - * @tparam Comparator The comparator type for section names. - */ -template -class IniFileBase - : public std::map, Comparator> { -private: - char fieldSep_ = '='; ///< The character used to separate fields. - char esc_ = '\\'; ///< The escape character. - std::vector commentPrefixes_ = { - "#", ";"}; ///< The prefixes for comments. - bool multiLineValues_ = false; ///< Flag to enable multi-line values. - bool overwriteDuplicateFields_ = - true; ///< Flag to allow overwriting duplicate fields. - - /** - * @brief Erases comments from a line. - * @param str The line to process. - * @param startpos The position to start searching for comments. - */ - void eraseComment(std::string &str, std::string::size_type startpos = 0) { - for (const auto &commentPrefix : commentPrefixes_) { - auto pos = str.find(commentPrefix, startpos); - if (pos != std::string::npos) { - // Check for escaped comment - if (pos > 0 && str[pos - 1] == esc_) { - str.erase(pos - 1, 1); - continue; - } - str.erase(pos); - } - } - } - - /** - * @brief Writes a string to an output stream with escaping. - * @param oss The output stream. - * @param str The string to write. - */ - void writeEscaped(std::ostream &oss, const std::string &str) const { - for (size_t i = 0; i < str.length(); ++i) { - auto prefixpos = std::ranges::find_if( - commentPrefixes_, [&](const std::string &prefix) { - return str.find(prefix, i) == i; - }); - - if (prefixpos != commentPrefixes_.end()) { - oss.put(esc_); - oss.write(prefixpos->c_str(), prefixpos->size()); - i += prefixpos->size() - 1; - } else if (multiLineValues_ && str[i] == '\n') { - oss.write("\n\t", 2); - } else { - oss.put(str[i]); - } - } - } - -public: - /** - * @brief Default constructor. - */ - IniFileBase() = default; - - /** - * @brief Constructs an IniFileBase from a file. - * @param filename The path to the INI file. - */ - explicit IniFileBase(const std::string &filename) { load(filename); } - - /** - * @brief Constructs an IniFileBase from an input stream. - * @param iss The input stream. - */ - explicit IniFileBase(std::istream &iss) { decode(iss); } - - /** - * @brief Destructor. - */ - ~IniFileBase() = default; - - /** - * @brief Sets the field separator character. - * @param sep The field separator character. - */ - void setFieldSep(char sep) { fieldSep_ = sep; } - - /** - * @brief Sets the comment prefixes. - * @param commentPrefixes The vector of comment prefixes. - */ - void setCommentPrefixes(const std::vector &commentPrefixes) { - commentPrefixes_ = commentPrefixes; - } - - /** - * @brief Sets the escape character. - * @param esc The escape character. - */ - void setEscapeChar(char esc) { esc_ = esc; } - - /** - * @brief Enables or disables multi-line values. - * @param enable True to enable multi-line values, false to disable. - */ - void setMultiLineValues(bool enable) { multiLineValues_ = enable; } - - /** - * @brief Allows or disallows overwriting duplicate fields. - * @param allowed True to allow overwriting, false to disallow. - */ - void allowOverwriteDuplicateFields(bool allowed) { - overwriteDuplicateFields_ = allowed; - } - - /** - * @brief Decodes an INI file from an input stream. - * @param iss The input stream. - */ - void decode(std::istream &iss) { - this->clear(); - std::string line; - IniSectionBase *currentSection = nullptr; - std::string multiLineValueFieldName; - - int lineNo = 0; - while (std::getline(iss, line)) { - ++lineNo; - eraseComment(line); - bool hasIndent = line.find_first_not_of(indents()) != 0; - trim(line); - - if (line.empty()) { - continue; - } - - if (line.front() == '[') { - // Section line - auto pos = line.find(']'); - if (pos == std::string::npos) { - THROW_LOGIC_ERROR("Section not closed at line " + - std::to_string(lineNo)); - } - if (pos == 1) { - THROW_LOGIC_ERROR("Empty section name at line " + - std::to_string(lineNo)); - } - - std::string secName = line.substr(1, pos - 1); - currentSection = &(*this)[secName]; - multiLineValueFieldName.clear(); - } else { - if (!currentSection) - THROW_LOGIC_ERROR("Field without section at line " + - std::to_string(lineNo)); - - auto pos = line.find(fieldSep_); - if (multiLineValues_ && hasIndent && - !multiLineValueFieldName.empty()) { - (*currentSection)[multiLineValueFieldName] = - (*currentSection)[multiLineValueFieldName] - .template as() + - "\n" + line; - } else if (pos == std::string::npos) { - THROW_LOGIC_ERROR("Field separator missing at line " + - std::to_string(lineNo)); - } else { - std::string name = line.substr(0, pos); - trim(name); - - if (!overwriteDuplicateFields_ && - currentSection->count(name)) { - THROW_LOGIC_ERROR("Duplicate field at line " + - std::to_string(lineNo)); - } - - std::string value = line.substr(pos + 1); - trim(value); - (*currentSection)[name] = value; - - multiLineValueFieldName = name; - } - } - } - } - - /** - * @brief Decodes an INI file from a string. - * @param content The string content of the INI file. - */ - void decode(const std::string &content) { - std::istringstream ss(content); - decode(ss); - } - - /** - * @brief Loads and decodes an INI file from a file path. - * @param fileName The path to the INI file. - */ - void load(const std::string &fileName) { - std::ifstream iss(fileName); - if (!iss.is_open()) { - THROW_FAIL_TO_OPEN_FILE("Unable to open file " + fileName); - } - decode(iss); - } - - /** - * @brief Encodes the INI file to an output stream. - * @param oss The output stream. - */ - void encode(std::ostream &oss) const { - for (const auto §ionPair : *this) { - oss << '[' << sectionPair.first << "]\n"; - for (const auto &fieldPair : sectionPair.second) { - oss << fieldPair.first << fieldSep_ - << fieldPair.second.template as() << "\n"; - } - } - } - - /** - * @brief Encodes the INI file to a string and returns it. - * @return The encoded INI file as a string. - */ - [[nodiscard]] auto encode() const -> std::string { - std::ostringstream sss; - encode(sss); - return sss.str(); - } - - /** - * @brief Saves the INI file to a given file path. - * @param fileName The path to the file. - */ - void save(const std::string &fileName) const { - std::ofstream oss(fileName); - if (!oss.is_open()) { - THROW_FAIL_TO_OPEN_FILE("Unable to open file " + fileName); - } - encode(oss); - } -}; - -using IniFile = IniFileBase>; ///< Case-sensitive INI file. -using IniFileCaseInsensitive = - IniFileBase; ///< Case-insensitive INI file. - -} // namespace inicpp - -#endif // ATOM_EXTRA_INICPP_INIFILE_HPP diff --git a/src/atom/extra/inicpp/inicpp.hpp b/src/atom/extra/inicpp/inicpp.hpp deleted file mode 100644 index 539ea15c..00000000 --- a/src/atom/extra/inicpp/inicpp.hpp +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef ATOM_EXTRA_INICPP_HPP -#define ATOM_EXTRA_INICPP_HPP - -#include "common.hpp" -#include "convert.hpp" -#include "field.hpp" -#include "file.hpp" -#include "section.hpp" - -#endif // ATOM_EXTRA_INICPP_HPP diff --git a/src/atom/extra/inicpp/section.hpp b/src/atom/extra/inicpp/section.hpp deleted file mode 100644 index 4a548f45..00000000 --- a/src/atom/extra/inicpp/section.hpp +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef ATOM_EXTRA_INICPP_INISECTION_HPP -#define ATOM_EXTRA_INICPP_INISECTION_HPP - -#include -#include - -#include "field.hpp" - -namespace inicpp { - -template -class IniSectionBase : public std::map { -public: - IniSectionBase() = default; - ~IniSectionBase() = default; -}; - -using IniSection = IniSectionBase>; -using IniSectionCaseInsensitive = IniSectionBase; - -} // namespace inicpp - -#endif // ATOM_EXTRA_INICPP_INISECTION_HPP diff --git a/src/atom/extra/injection/all.hpp b/src/atom/extra/injection/all.hpp deleted file mode 100644 index 83a941b3..00000000 --- a/src/atom/extra/injection/all.hpp +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#include "common.hpp" -#include "inject.hpp" -#include "resolver.hpp" -#include "binding.hpp" -#include "container.hpp" diff --git a/src/atom/extra/injection/binding.hpp b/src/atom/extra/injection/binding.hpp deleted file mode 100644 index 7069cacd..00000000 --- a/src/atom/extra/injection/binding.hpp +++ /dev/null @@ -1,146 +0,0 @@ -#pragma once - -#include "common.hpp" -#include "resolver.hpp" - -namespace atom::extra { - -/** - * @class BindingScope - * @brief A class template for managing the lifecycle of bindings. - * @tparam T The type of the binding. - * @tparam SymbolTypes The symbol types associated with the binding. - */ -template -class BindingScope { -public: - /** - * @brief Sets the binding to transient scope. - */ - void inTransientScope() { lifecycle_ = Lifecycle::Transient; } - - /** - * @brief Sets the binding to singleton scope. - */ - void inSingletonScope() { - lifecycle_ = Lifecycle::Singleton; - resolver_ = - std::make_shared>(resolver_); - } - - /** - * @brief Sets the binding to request scope. - */ - void inRequestScope() { lifecycle_ = Lifecycle::Request; } - -protected: - ResolverPtr - resolver_; ///< The resolver for the binding. - Lifecycle lifecycle_ = - Lifecycle::Transient; ///< The lifecycle of the binding. -}; - -/** - * @class BindingTo - * @brief A class template for binding to specific values or factories. - * @tparam T The type of the binding. - * @tparam SymbolTypes The symbol types associated with the binding. - */ -template -class BindingTo : public BindingScope { -public: - /** - * @brief Binds to a constant value. - * @param value The constant value to bind. - */ - void toConstantValue(T&& value) { - this->resolver_ = std::make_shared>( - std::forward(value)); - } - - /** - * @brief Binds to a dynamic value generated by a factory. - * @param factory The factory to generate the dynamic value. - * @return A reference to the BindingScope. - */ - BindingScope& toDynamicValue( - Factory&& factory) { - this->resolver_ = std::make_shared>( - std::move(factory)); - return *this; - } - - /** - * @brief Binds to another type. - * @tparam U The type to bind to. - * @return A reference to the BindingScope. - */ - template - BindingScope& to() { - this->resolver_ = - std::make_shared>(); - return *this; - } -}; - -/** - * @class Binding - * @brief A class template for managing bindings and resolving values. - * @tparam T The type of the binding. - * @tparam SymbolTypes The symbol types associated with the binding. - */ -template -class Binding : public BindingTo { -public: - /** - * @brief Resolves the value of the binding. - * @param context The context for resolving the value. - * @return The resolved value. - * @throws exceptions::ResolutionException if the resolver is not found. - */ - typename T::value resolve(const Context& context) { - if (!this->resolver_) { - throw exceptions::ResolutionException( - "atom::extra::Resolver not found. Malformed binding."); - } - return this->resolver_->resolve(context); - } - - /** - * @brief Adds a tag to the binding. - * @param tag The tag to add. - */ - void when(const Tag& tag) { tags_.push_back(tag); } - - /** - * @brief Sets the target name for the binding. - * @param name The target name. - */ - void whenTargetNamed(const std::string& name) { targetName_ = name; } - - /** - * @brief Checks if the binding matches a given tag. - * @param tag The tag to check. - * @return True if the binding matches the tag, false otherwise. - */ - bool matchesTag(const Tag& tag) const { - return std::find_if(tags_.begin(), tags_.end(), [&](const Tag& t) { - return t.name == tag.name; - }) != tags_.end(); - } - - /** - * @brief Checks if the binding matches a given target name. - * @param name The target name to check. - * @return True if the binding matches the target name, false otherwise. - */ - bool matchesTargetName(const std::string& name) const { - return targetName_ == name; - } - -private: - std::vector tags_; ///< The tags associated with the binding. - std::string targetName_; ///< The target name for the binding. -}; - -} // namespace atom::extra diff --git a/src/atom/extra/injection/common.hpp b/src/atom/extra/injection/common.hpp deleted file mode 100644 index 33e3d079..00000000 --- a/src/atom/extra/injection/common.hpp +++ /dev/null @@ -1,150 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -namespace atom::extra { - -// Forward declarations -template -class Container; - -template -struct Context { - Container& container; -}; - -// Concepts - -/** - * @brief Concept to check if a type is symbolic. - * @tparam T The type to check. - */ -template -concept Symbolic = requires { typename T::value; }; - -/** - * @brief Concept to check if a type is injectable. - * @tparam T The type to check. - */ -template -concept Injectable = requires { - { - T::template resolve(std::declval&>()) - } -> std::convertible_to>; -}; - -// Symbol - -/** - * @brief A struct representing a symbol for an interface. - * @tparam Interface The interface type. - */ -template -struct Symbol { - static_assert(!std::is_abstract_v, - "atom::extra::Container cannot bind/get abstract class value " - "(use a smart pointer instead)."); - using value = Interface; -}; - -// Factory - -/** - * @brief A type alias for a factory function. - * @tparam T The type to produce. - * @tparam SymbolTypes The symbol types associated with the factory. - */ -template -using Factory = std::function&)>; - -// Exceptions - -namespace exceptions { - -/** - * @brief Exception thrown when resolution fails. - */ -struct ResolutionException : public std::runtime_error { - using std::runtime_error::runtime_error; -}; - -} // namespace exceptions - -// Lifecycle - -/** - * @brief Enum representing the lifecycle of a binding. - */ -enum class Lifecycle { - Transient, ///< The binding is created anew each time. - Singleton, ///< The binding is created once and shared. - Request ///< The binding is created once per request. -}; - -// Tag - -/** - * @brief A struct representing a tag for a binding. - */ -struct Tag { - std::string name; ///< The name of the tag. - explicit Tag(std::string tag_name) : name(std::move(tag_name)) {} -}; - -// Named - -/** - * @brief A struct representing a named binding. - * @tparam T The type of the binding. - */ -template -struct Named { - std::string name; ///< The name of the binding. - using value = T; ///< The type of the binding. - explicit Named(std::string binding_name) : name(std::move(binding_name)) {} -}; - -// Multi - -/** - * @brief A struct representing a multi-binding. - * @tparam T The type of the binding. - */ -template -struct Multi { - using value = std::vector; ///< The type of the multi-binding. -}; - -// Lazy - -/** - * @brief A class representing a lazy binding. - * @tparam T The type of the binding. - */ -template -class Lazy { -public: - /** - * @brief Constructs a Lazy binding with a factory function. - * @param factory The factory function to produce the binding. - */ - explicit Lazy(std::function factory) : factory_(std::move(factory)) {} - - /** - * @brief Gets the value of the binding. - * @return The value of the binding. - */ - T get() const { return factory_(); } - -private: - std::function - factory_; ///< The factory function to produce the binding. -}; - -} // namespace atom::extra diff --git a/src/atom/extra/injection/container.hpp b/src/atom/extra/injection/container.hpp deleted file mode 100644 index 5c3b2967..00000000 --- a/src/atom/extra/injection/container.hpp +++ /dev/null @@ -1,134 +0,0 @@ -#pragma once - -#include -#include "binding.hpp" -#include "common.hpp" - -namespace atom::extra { - -/** - * @class Container - * @brief A dependency injection container for managing bindings and resolving - * dependencies. - * @tparam SymbolTypes The symbol types associated with the container. - */ -template -class Container { -public: - using BindingMap = - std::tuple...>; ///< The map of - ///< bindings. - - /** - * @brief Binds a symbol to a value or factory. - * @tparam T The symbol type to bind. - * @return A reference to the BindingTo object for further configuration. - */ - template - BindingTo& bind() { - static_assert((std::is_same_v || ...), - "atom::extra::Container symbol not registered"); - return std::get>(bindings_); - } - - /** - * @brief Resolves a value for a given symbol. - * @tparam T The symbol type to resolve. - * @return The resolved value. - */ - template - typename T::value get() { - return get(Tag("")); - } - - /** - * @brief Resolves a value for a given symbol and tag. - * @tparam T The symbol type to resolve. - * @param tag The tag to match. - * @return The resolved value. - * @throws exceptions::ResolutionException if no matching binding is found. - */ - template - typename T::value get(const Tag& tag) { - static_assert((std::is_same_v || ...), - "atom::extra::Container symbol not registered"); - auto& binding = std::get>(bindings_); - if (binding.matchesTag(tag)) { - return binding.resolve(context_); - } - throw exceptions::ResolutionException( - "No matching binding found for the given tag."); - } - - /** - * @brief Resolves a value for a given symbol and name. - * @tparam T The symbol type to resolve. - * @param name The name to match. - * @return The resolved value. - * @throws exceptions::ResolutionException if no matching binding is found. - */ - template - typename T::value getNamed(const std::string& name) { - static_assert((std::is_same_v || ...), - "atom::extra::Container symbol not registered"); - auto& binding = std::get>(bindings_); - if (binding.matchesTargetName(name)) { - return binding.resolve(context_); - } - throw exceptions::ResolutionException( - "No matching binding found for the given name."); - } - - /** - * @brief Resolves all values for a given symbol. - * @tparam T The symbol type to resolve. - * @return A vector of resolved values. - */ - template - std::vector getAll() { - static_assert((std::is_same_v || ...), - "atom::extra::Container symbol not registered"); - std::vector result; - auto& binding = std::get>(bindings_); - result.push_back(binding.resolve(context_)); - return result; - } - - /** - * @brief Checks if a binding exists for a given symbol. - * @tparam T The symbol type to check. - * @return True if a binding exists, false otherwise. - */ - template - bool hasBinding() const { - return std::get>(bindings_).resolver_ != - nullptr; - } - - /** - * @brief Unbinds a symbol, removing its binding. - * @tparam T The symbol type to unbind. - */ - template - void unbind() { - std::get>(bindings_).resolver_.reset(); - } - - /** - * @brief Creates a child container that inherits bindings from the parent. - * @return A unique pointer to the child container. - */ - std::unique_ptr createChildContainer() { - auto child = std::make_unique(); - child->parent_ = this; - return child; - } - -private: - BindingMap bindings_; ///< The map of bindings. - Context context_{ - *this}; ///< The context for resolving dependencies. - Container* parent_ = nullptr; ///< The parent container, if any. -}; - -} // namespace atom::extra diff --git a/src/atom/extra/injection/inject.hpp b/src/atom/extra/injection/inject.hpp deleted file mode 100644 index 13c6236b..00000000 --- a/src/atom/extra/injection/inject.hpp +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include "common.hpp" - -namespace atom::extra { - -template -struct Inject { - template - static auto resolve(const Context& context) { - return std::make_tuple(context.container.template get()...); - } -}; - -template > -struct InjectableA : Inject {}; - -} // namespace atom::extra diff --git a/src/atom/extra/injection/resolver.hpp b/src/atom/extra/injection/resolver.hpp deleted file mode 100644 index 3478be53..00000000 --- a/src/atom/extra/injection/resolver.hpp +++ /dev/null @@ -1,212 +0,0 @@ -#pragma once - -#include -#include "common.hpp" -#include "inject.hpp" - -namespace atom::extra { - -/** - * @class Resolver - * @brief An abstract base class for resolving dependencies. - * @tparam T The type of the dependency. - * @tparam SymbolTypes The symbol types associated with the resolver. - */ -template -class Resolver { -public: - /** - * @brief Virtual destructor. - */ - virtual ~Resolver() = default; - - /** - * @brief Resolves the dependency. - * @param context The context for resolving the dependency. - * @return The resolved dependency. - */ - virtual T resolve(const Context& context) = 0; -}; - -/** - * @brief A type alias for a shared pointer to a Resolver. - * @tparam T The type of the dependency. - * @tparam SymbolTypes The symbol types associated with the resolver. - */ -template -using ResolverPtr = std::shared_ptr>; - -/** - * @class ConstantResolver - * @brief A resolver that returns a constant value. - * @tparam T The type of the dependency. - * @tparam SymbolTypes The symbol types associated with the resolver. - */ -template -class ConstantResolver : public Resolver { -public: - /** - * @brief Constructs a ConstantResolver with a constant value. - * @param value The constant value to return. - */ - explicit ConstantResolver(T value) : value_(std::move(value)) {} - - /** - * @brief Resolves the dependency by returning the constant value. - * @param context The context for resolving the dependency. - * @return The constant value. - */ - T resolve(const Context&) override { return value_; } - -private: - T value_; ///< The constant value. -}; - -/** - * @class DynamicResolver - * @brief A resolver that returns a dynamic value generated by a factory. - * @tparam T The type of the dependency. - * @tparam SymbolTypes The symbol types associated with the resolver. - */ -template -class DynamicResolver : public Resolver { -public: - /** - * @brief Constructs a DynamicResolver with a factory function. - * @param factory The factory function to generate the dynamic value. - */ - explicit DynamicResolver(Factory factory) - : factory_(std::move(factory)) {} - - /** - * @brief Resolves the dependency by calling the factory function. - * @param context The context for resolving the dependency. - * @return The dynamic value generated by the factory. - */ - T resolve(const Context& context) override { - return factory_(context); - } - -private: - Factory factory_; ///< The factory function. -}; - -/** - * @class AutoResolver - * @brief A resolver that automatically resolves dependencies for a type. - * @tparam T The type of the dependency. - * @tparam U The type to instantiate. - * @tparam SymbolTypes The symbol types associated with the resolver. - */ -template -class AutoResolver : public Resolver { -public: - /** - * @brief Resolves the dependency by automatically instantiating the type. - * @param context The context for resolving the dependency. - * @return The instantiated type. - */ - T resolve(const Context& context) override { - return std::make_from_tuple( - InjectableA::template resolve(context)); - } -}; - -/** - * @class AutoResolver, U, SymbolTypes...> - * @brief A resolver that automatically resolves dependencies for a unique - * pointer type. - * @tparam T The type of the dependency. - * @tparam U The type to instantiate. - * @tparam SymbolTypes The symbol types associated with the resolver. - */ -template -class AutoResolver, U, SymbolTypes...> - : public Resolver, SymbolTypes...> { -public: - /** - * @brief Resolves the dependency by automatically instantiating the type as - * a unique pointer. - * @param context The context for resolving the dependency. - * @return The instantiated type as a unique pointer. - */ - std::unique_ptr resolve( - const Context& context) override { - return std::apply( - [](auto&&... deps) { - return std::make_unique( - std::forward(deps)...); - }, - InjectableA::template resolve(context)); - } -}; - -/** - * @class AutoResolver, U, SymbolTypes...> - * @brief A resolver that automatically resolves dependencies for a shared - * pointer type. - * @tparam T The type of the dependency. - * @tparam U The type to instantiate. - * @tparam SymbolTypes The symbol types associated with the resolver. - */ -template -class AutoResolver, U, SymbolTypes...> - : public Resolver, SymbolTypes...> { -public: - /** - * @brief Resolves the dependency by automatically instantiating the type as - * a shared pointer. - * @param context The context for resolving the dependency. - * @return The instantiated type as a shared pointer. - */ - std::shared_ptr resolve( - const Context& context) override { - return std::apply( - [](auto&&... deps) { - return std::make_shared( - std::forward(deps)...); - }, - InjectableA::template resolve(context)); - } -}; - -/** - * @class CachedResolver - * @brief A resolver that caches the resolved value. - * @tparam T The type of the dependency. - * @tparam SymbolTypes The symbol types associated with the resolver. - */ -template -class CachedResolver : public Resolver { - static_assert( - std::is_copy_constructible_v, - "atom::extra::CachedResolver requires a copy constructor. Are " - "you caching a unique_ptr?"); - -public: - /** - * @brief Constructs a CachedResolver with a parent resolver. - * @param parent The parent resolver to cache the value from. - */ - explicit CachedResolver(ResolverPtr parent) - : parent_(std::move(parent)) {} - - /** - * @brief Resolves the dependency by returning the cached value or resolving - * it from the parent. - * @param context The context for resolving the dependency. - * @return The cached value or the resolved value from the parent. - */ - T resolve(const Context& context) override { - if (!cached_.has_value()) { - cached_ = parent_->resolve(context); - } - return cached_.value(); - } - -private: - std::optional cached_; ///< The cached value. - ResolverPtr parent_; ///< The parent resolver. -}; - -} // namespace atom::extra diff --git a/src/atom/function/CMakeLists.txt b/src/atom/function/CMakeLists.txt deleted file mode 100644 index f9d558dc..00000000 --- a/src/atom/function/CMakeLists.txt +++ /dev/null @@ -1,46 +0,0 @@ -# CMakeLists.txt for Atom-Function -# This project is licensed under the terms of the GPL3 license. -# -# Project Name: Atom-Function -# Description: a library for meta programming in C++ -# Author: Max Qian -# License: GPL3 - -cmake_minimum_required(VERSION 3.20) -project(atom-function C CXX) - -list(APPEND ${PROJECT_NAME}_SOURCES - global_ptr.cpp -) - -# Headers -list(APPEND ${PROJECT_NAME}_HEADERS - global_ptr.hpp -) - -list(APPEND ${PROJECT_NAME}_LIBS -) - -# Build Object Library -add_library(${PROJECT_NAME}_OBJECT OBJECT) -set_property(TARGET ${PROJECT_NAME}_OBJECT PROPERTY POSITION_INDEPENDENT_CODE 1) - -target_link_libraries(${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) - -target_sources(${PROJECT_NAME}_OBJECT - PUBLIC - ${${PROJECT_NAME}_HEADERS} - PRIVATE - ${${PROJECT_NAME}_SOURCES} -) - -target_link_libraries(${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) - -add_library(${PROJECT_NAME} STATIC) - -target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_OBJECT ${${PROJECT_NAME}_LIBS}) -target_include_directories(${PROJECT_NAME} PUBLIC .) - -install(TARGETS ${PROJECT_NAME} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -) diff --git a/src/atom/function/abi.hpp b/src/atom/function/abi.hpp deleted file mode 100644 index a0a67dbf..00000000 --- a/src/atom/function/abi.hpp +++ /dev/null @@ -1,236 +0,0 @@ -/*! - * \file abi.hpp - * \brief A simple C++ ABI wrapper - * \author Max Qian - * \date 2024-5-25 - * \copyright Copyright (C) 2023-2024 Max Qian - */ - -#ifndef ATOM_META_ABI_HPP -#define ATOM_META_ABI_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _MSC_VER -// clang-format off -#include -#include -#pragma comment(lib, "dbghelp.lib") -// clang-format on -#else -#include -#endif - -#if ENABLE_DEBUG -#include -#include -#endif - -namespace atom::meta { - -constexpr std::size_t BUFFER_SIZE = 1024; - -class DemangleHelper { -public: - template - static auto demangleType() -> std::string { - return demangleInternal(typeid(T).name()); - } - - template - static auto demangleType(const T& instance) -> std::string { - return demangleInternal(typeid(instance).name()); - } - - static auto demangle(std::string_view mangled_name, - const std::optional& location = - std::nullopt) -> std::string { - std::string demangled = demangleInternal(mangled_name); - - if (location) { - demangled += " ("; - demangled += location->file_name(); - demangled += ":"; - demangled += std::to_string(location->line()); - demangled += ")"; - } - - return demangled; - } - - static auto demangleMany( - const std::vector& mangled_names, - const std::optional& location = std::nullopt) - -> std::vector { - std::vector demangledNames; - demangledNames.reserve(mangled_names.size()); - - for (const auto& name : mangled_names) { - demangledNames.push_back(demangle(name, location)); - } - - return demangledNames; - } - -#if ENABLE_DEBUG - static auto visualize(const std::string& demangled_name) -> std::string { - return visualizeType(demangled_name); - } -#endif - -private: - static auto demangleInternal(std::string_view mangled_name) -> std::string { - static std::unordered_map cache; - if (auto it = cache.find(mangled_name); it != cache.end()) { - return it->second; - } - -#ifdef _MSC_VER - std::array buffer; - DWORD length = UnDecorateSymbolName(mangled_name.data(), buffer.data(), - buffer.size(), UNDNAME_COMPLETE); - - std::string demangled = (length > 0) - ? std::string(buffer.data(), length) - : std::string(mangled_name); -#else - int status = -1; - std::unique_ptr demangledName( - abi::__cxa_demangle(mangled_name.data(), nullptr, nullptr, &status), - std::free); - - std::string demangled = (status == 0) ? std::string(demangledName.get()) - : std::string(mangled_name); -#endif - - cache[mangled_name] = demangled; - return demangled; - } - -#if ENABLE_DEBUG - static auto visualizeType(const std::string& type_name, - int indent_level = 0) -> std::string { - std::string indent(static_cast(indent_level) * 4, - ' '); // 4 spaces per indent level - std::string result; - - // Regular expressions for parsing - std::regex templateRegex(R"((\w+)<(.*)>)"); - std::regex functionRegex(R"(\((.*)\)\s*->\s*(.*))"); - std::regex ptrRegex(R"((.+)\s*\*\s*)"); - std::regex refRegex(R"((.+)\s*&\s*)"); - std::regex constRegex(R"((const\s+)(.+))"); - std::regex arrayRegex(R"((.+)\s*\[(\d+)\])"); - std::smatch match; - - if (std::regex_match(type_name, match, templateRegex)) { - // Template type - result += indent + "`-- " + match[1].str() + " [template]\n"; - std::string params = match[2].str(); - result += visualizeTemplateParams(params, indent_level + 1); - } else if (std::regex_match(type_name, match, functionRegex)) { - // Function type - result += indent + "`-- function\n"; - std::string params = match[1].str(); - std::string returnType = match[2].str(); - result += visualizeFunctionParams(params, indent_level + 1); - result += indent + " `-- R: " + - visualizeType(returnType, indent_level + 1) - .substr(indent.size() + 4); - } else if (std::regex_match(type_name, match, ptrRegex)) { - // Pointer type - result += indent + "`-- ptr\n"; - result += visualizeType(match[1].str(), indent_level + 1); - } else if (std::regex_match(type_name, match, refRegex)) { - // Reference type - result += indent + "`-- ref\n"; - result += visualizeType(match[1].str(), indent_level + 1); - } else if (std::regex_match(type_name, match, constRegex)) { - // Const type - result += indent + "`-- const\n"; - result += visualizeType(match[2].str(), indent_level + 1); - } else if (std::regex_match(type_name, match, arrayRegex)) { - // Array type - result += indent + "`-- array [N = " + match[2].str() + "]\n"; - result += visualizeType(match[1].str(), indent_level + 1); - } else { - // Simple type - result += indent + "`-- " + type_name + "\n"; - } - - return result; - } - - std::string visualizeTemplateParams(const std::string& params, - int indent_level) { - std::string indent(static_cast(indent_level) * 4, ' '); - std::string result; - int paramIndex = 0; - - size_t start = 0; - int angleBrackets = 0; - - for (size_t i = 0; i < params.size(); ++i) { - if (params[i] == '<') { - ++angleBrackets; - } else if (params[i] == '>') { - --angleBrackets; - } else if (params[i] == ',' && angleBrackets == 0) { - result += indent + "├── " + std::to_string(paramIndex++) + ": "; - result += visualizeType(params.substr(start, i - start), - indent_level + 1); - start = i + 1; - } - } - - result += indent + "└── " + std::to_string(paramIndex) + ": "; - result += visualizeType(params.substr(start), indent_level + 1); - - return result; - } - - static auto visualizeFunctionParams(const std::string& params, - int indent_level) -> std::string { - std::string indent(static_cast(indent_level) * 4, ' '); - std::string result; - int paramIndex = 0; - - size_t start = 0; - size_t end = 0; - int angleBrackets = 0; - - for (size_t i = 0; i < params.size(); ++i) { - if (params[i] == '<') { - ++angleBrackets; - } else if (params[i] == '>') { - --angleBrackets; - } else if (params[i] == ',' && angleBrackets == 0) { - end = i; - result += indent + "|-- " + std::to_string(paramIndex++) + - ": " + - visualizeType(params.substr(start, end - start), - indent_level + 1) - .substr(indent.size() + 4); - start = i + 1; - } - } - - result += indent + "|-- " + std::to_string(paramIndex++) + ": " + - visualizeType(params.substr(start), indent_level + 1) - .substr(indent.size() + 4); - - return result; - } -#endif -}; -} // namespace atom::meta - -#endif // ATOM_META_ABI_HPP diff --git a/src/atom/function/any.hpp b/src/atom/function/any.hpp deleted file mode 100644 index fec99269..00000000 --- a/src/atom/function/any.hpp +++ /dev/null @@ -1,573 +0,0 @@ -/*! - * \file any.hpp - * \brief Enhanced BoxedValue using C++20 features - * \author Max Qian - * \date 2023-12-28 - * \copyright Copyright (C) 2023-2024 Max Qian - */ - -#ifndef ATOM_META_ANY_HPP -#define ATOM_META_ANY_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "atom/macro.hpp" -#include "type_info.hpp" - -namespace atom::meta { - -/*! - * \class BoxedValue - * \brief A class that encapsulates a value of any type with additional - * metadata. - */ -class BoxedValue { -public: - /*! - * \struct VoidType - * \brief A placeholder type representing void. - */ - struct VoidType {}; - -private: - /*! - * \struct Data - * \brief Internal data structure to hold the value and its metadata. - */ - struct ATOM_ALIGNAS(128) Data { - std::any mObj; ///< The encapsulated value. - TypeInfo mTypeInfo; ///< Type information of the value. - std::shared_ptr>> - mAttrs; ///< Attributes associated with the value. - bool mIsRef = false; ///< Indicates if the value is a reference. - bool mReturnValue = - false; ///< Indicates if the value is a return value. - bool mReadonly = false; ///< Indicates if the value is read-only. - const void* mConstDataPtr = nullptr; ///< Pointer to the constant data. - std::chrono::time_point - mCreationTime; ///< Creation time. - std::chrono::time_point - mModificationTime; ///< Modification time. - int mAccessCount = 0; ///< Access count. - - /*! - * \brief Constructor for non-void types. - * \tparam T The type of the value. - * \param obj The value to be encapsulated. - * \param is_ref Indicates if the value is a reference. - * \param return_value Indicates if the value is a return value. - * \param readonly Indicates if the value is read-only. - */ - template - requires(!std::is_same_v, VoidType>) - Data(T&& obj, bool is_ref, bool return_value, bool readonly) - : mObj(std::forward(obj)), - mTypeInfo(userType>()), - mAttrs(nullptr), - mIsRef(is_ref), - mReturnValue(return_value), - mReadonly(readonly), - mConstDataPtr( - std::is_const_v> ? &obj : nullptr), - mCreationTime(std::chrono::system_clock::now()), - mModificationTime(std::chrono::system_clock::now()) {} - - /*! - * \brief Constructor for void type. - * \tparam T The type of the value. - * \param obj The value to be encapsulated. - * \param is_ref Indicates if the value is a reference. - * \param return_value Indicates if the value is a return value. - * \param readonly Indicates if the value is read-only. - */ - template - requires(std::is_same_v, VoidType>) - Data([[maybe_unused]] T&& obj, bool is_ref, bool return_value, - bool readonly) - : mTypeInfo(userType>()), - mAttrs(nullptr), - mIsRef(is_ref), - mReturnValue(return_value), - mReadonly(readonly), - mCreationTime(std::chrono::system_clock::now()), - mModificationTime(std::chrono::system_clock::now()) {} - }; - - std::shared_ptr m_data_; ///< Shared pointer to the internal data. - mutable std::shared_mutex m_mutex_; ///< Mutex for thread-safe access. - -public: - /*! - * \brief Constructor for any type. - * \tparam T The type of the value. - * \param value The value to be encapsulated. - * \param return_value Indicates if the value is a return value. - * \param readonly Indicates if the value is read-only. - */ - // clang-tidy: disable=hicpp-explicit-constructor - template - requires(!std::same_as>) - BoxedValue(T&& value, bool return_value = false, bool readonly = false) - : m_data_(std::make_shared( - std::forward(value), - std::is_reference_v || - std::is_same_v< - std::decay_t, - std::reference_wrapper>>, - return_value, readonly)) { - if constexpr (std::is_same_v< - std::decay_t, - std::reference_wrapper>>) { - m_data_->mIsRef = true; - } - } - - /*! - * \brief Default constructor for VoidType. - */ - BoxedValue() - : m_data_(std::make_shared(VoidType{}, false, false, false)) {} - - /*! - * \brief Constructor with shared data pointer. - * \param data Shared pointer to the internal data. - */ - BoxedValue(std::shared_ptr data) : m_data_(std::move(data)) {} - - /*! - * \brief Copy constructor. - * \param other The other BoxedValue to copy from. - */ - BoxedValue(const BoxedValue& other) { - std::shared_lock lock(other.m_mutex_); - if (other.m_data_) { - m_data_ = std::make_shared(*other.m_data_); - } else { - m_data_ = nullptr; - } - } - - /*! - * \brief Move constructor. - * \param other The other BoxedValue to move from. - */ - BoxedValue(BoxedValue&& other) noexcept { - std::unique_lock lock(other.m_mutex_); - m_data_ = std::move(other.m_data_); - other.m_data_ = nullptr; - } - - /*! - * \brief Copy assignment operator. - * \param other The other BoxedValue to copy from. - * \return Reference to this BoxedValue. - */ - auto operator=(const BoxedValue& other) -> BoxedValue& { - if (this != &other) { - std::unique_lock lock(m_mutex_); - std::shared_lock otherLock(other.m_mutex_); - m_data_ = std::make_shared(*other.m_data_); - } - return *this; - } - - /*! - * \brief Move assignment operator. - * \param other The other BoxedValue to move from. - * \return Reference to this BoxedValue. - */ - auto operator=(BoxedValue&& other) noexcept -> BoxedValue& { - if (this != &other) { - std::unique_lock lock(m_mutex_); - std::unique_lock otherLock(other.m_mutex_); - m_data_ = std::move(other.m_data_); - } - return *this; - } - - /*! - * \brief Assignment operator for any type. - * \tparam T The type of the value. - * \param value The value to be assigned. - * \return Reference to this BoxedValue. - */ - template - requires(!std::same_as>) - auto operator=(T&& value) -> BoxedValue& { - std::unique_lock lock(m_mutex_); - m_data_->mObj = std::forward(value); - m_data_->mTypeInfo = userType(); - m_data_->mModificationTime = std::chrono::system_clock::now(); - return *this; - } - - /*! - * \brief Assignment operator for constant values. - * \tparam T The type of the value. - * \param value The constant value to be assigned. - * \return Reference to this BoxedValue. - */ - template - auto operator=(const T& value) -> BoxedValue& { - std::unique_lock lock(m_mutex_); - m_data_->mObj = value; - m_data_->mTypeInfo = userType(); - m_data_->mReadonly = true; - m_data_->mModificationTime = std::chrono::system_clock::now(); - return *this; - } - - /*! - * \brief Constructor for constant values. - * \tparam T The type of the value. - * \param value The constant value to be encapsulated. - */ - template - BoxedValue(const T& value) - : m_data_(std::make_shared(value, false, false, true)) {} - - /*! - * \brief Swap function. - * \param rhs The other BoxedValue to swap with. - */ - void swap(BoxedValue& rhs) noexcept { - if (this != &rhs) { - std::scoped_lock lock(m_mutex_, rhs.m_mutex_); - std::swap(m_data_, rhs.m_data_); - } - } - - /*! - * \brief Check if the value is undefined. - * \return True if the value is undefined, false otherwise. - */ - [[nodiscard]] auto isUndef() const noexcept -> bool { - std::shared_lock lock(m_mutex_); - return !m_data_ || m_data_->mObj.type() == typeid(VoidType) || - !m_data_->mObj.has_value(); - } - - /*! - * \brief Check if the value is constant. - * \return True if the value is constant, false otherwise. - */ - [[nodiscard]] auto isConst() const noexcept -> bool { - std::shared_lock lock(m_mutex_); - return m_data_->mTypeInfo.isConst(); - } - - /*! - * \brief Check if the value is of a specific type. - * \param type_info The type information to check against. - * \return True if the value is of the specified type, false otherwise. - */ - [[nodiscard]] auto isType(const TypeInfo& type_info) const noexcept - -> bool { - std::shared_lock lock(m_mutex_); - return m_data_->mTypeInfo == type_info; - } - - /*! - * \brief Check if the value is a reference. - * \return True if the value is a reference, false otherwise. - */ - [[nodiscard]] auto isRef() const noexcept -> bool { - std::shared_lock lock(m_mutex_); - return m_data_->mIsRef; - } - - /*! - * \brief Check if the value is a return value. - * \return True if the value is a return value, false otherwise. - */ - [[nodiscard]] auto isReturnValue() const noexcept -> bool { - std::shared_lock lock(m_mutex_); - return m_data_->mReturnValue; - } - - /*! - * \brief Reset the return value flag. - */ - void resetReturnValue() noexcept { - std::unique_lock lock(m_mutex_); - m_data_->mReturnValue = false; - } - - /*! - * \brief Check if the value is read-only. - * \return True if the value is read-only, false otherwise. - */ - [[nodiscard]] auto isReadonly() const noexcept -> bool { - std::shared_lock lock(m_mutex_); - return m_data_->mReadonly; - } - - /*! - * \brief Check if the value is a constant data pointer. - * \return True if the value is a constant data pointer, false - * otherwise. - */ - [[nodiscard]] auto isConstDataPtr() const noexcept -> bool { - std::shared_lock lock(m_mutex_); - return m_data_->mConstDataPtr != nullptr; - } - - /*! - * \brief Get the encapsulated value. - * \return The encapsulated value. - */ - [[nodiscard]] auto get() const noexcept -> const std::any& { - std::shared_lock lock(m_mutex_); - m_data_->mAccessCount++; - return m_data_->mObj; - } - - /*! - * \brief Get the type information of the value. - * \return The type information of the value. - */ - [[nodiscard]] auto getTypeInfo() const noexcept -> const TypeInfo& { - std::shared_lock lock(m_mutex_); - return m_data_->mTypeInfo; - } - - /*! - * \brief Set an attribute. - * \param name The name of the attribute. - * \param value The value of the attribute. - * \return Reference to this BoxedValue. - */ - auto setAttr(const std::string& name, - const BoxedValue& value) -> BoxedValue& { - std::unique_lock lock(m_mutex_); - if (!m_data_->mAttrs) { - m_data_->mAttrs = std::make_shared< - std::unordered_map>>(); - } - (*m_data_->mAttrs)[name] = value.m_data_; - m_data_->mModificationTime = std::chrono::system_clock::now(); - return *this; - } - - /*! - * \brief Get an attribute. - * \param name The name of the attribute. - * \return The value of the attribute. - */ - [[nodiscard]] auto getAttr(const std::string& name) const -> BoxedValue { - std::shared_lock lock(m_mutex_); - if (m_data_->mAttrs) { - if (auto iter = m_data_->mAttrs->find(name); - iter != m_data_->mAttrs->end()) { - return BoxedValue(iter->second); - } - } - return {}; // Undefined BoxedValue - } - - /*! - * \brief List all attributes. - * \return A vector of attribute names. - */ - [[nodiscard]] auto listAttrs() const -> std::vector { - std::shared_lock lock(m_mutex_); - std::vector attrs; - if (m_data_->mAttrs) { - attrs.reserve(m_data_->mAttrs->size()); - for (const auto& entry : *m_data_->mAttrs) { - attrs.push_back(entry.first); - } - } - return attrs; - } - - /*! - * \brief Check if an attribute exists. - * \param name The name of the attribute. - * \return True if the attribute exists, false otherwise. - */ - [[nodiscard]] auto hasAttr(const std::string& name) const -> bool { - std::shared_lock lock(m_mutex_); - return m_data_->mAttrs && - m_data_->mAttrs->find(name) != m_data_->mAttrs->end(); - } - - /*! - * \brief Remove an attribute. - * \param name The name of the attribute. - */ - void removeAttr(const std::string& name) { - std::unique_lock lock(m_mutex_); - if (m_data_->mAttrs) { - m_data_->mAttrs->erase(name); - m_data_->mModificationTime = std::chrono::system_clock::now(); - } - } - - /*! - * \brief Check if the BoxedValue is null (i.e., contains an unset - * value). \return True if the BoxedValue is null, false otherwise. - */ - [[nodiscard]] auto isNull() const noexcept -> bool { - std::shared_lock lock(m_mutex_); - return !m_data_->mObj.has_value(); - } - - /*! - * \brief Get the pointer to the contained data. - * \return Pointer to the contained data. - */ - [[nodiscard]] auto getPtr() const noexcept -> void* { - std::shared_lock lock(m_mutex_); - return const_cast(m_data_->mConstDataPtr); - } - - /*! - * \brief Try to cast the internal value to a specified type. - * \tparam T The type to cast to. - * \return An optional containing the casted value if successful, - * std::nullopt otherwise. - */ - template - [[nodiscard]] auto tryCast() const noexcept -> std::optional { - std::shared_lock lock(m_mutex_); - try { - if constexpr (std::is_reference_v) { - if (m_data_->mObj.type() == - typeid( - std::reference_wrapper>)) { - return std::any_cast>>(m_data_->mObj) - .get(); - } - } - if (m_data_->mObj.type() == typeid(std::reference_wrapper)) { - return std::any_cast>(m_data_->mObj) - .get(); - } - if (isConst() || isReadonly()) { - using constT = std::add_const_t; - return std::any_cast(m_data_->mObj); - } - return std::any_cast(m_data_->mObj); - } catch (const std::bad_any_cast&) { - return std::nullopt; - } - } - - /*! - * \brief Check if the internal value can be cast to a specified type. - * \tparam T The type to check. - * \return True if the value can be cast to the specified type, false - * otherwise. - */ - template - [[nodiscard]] auto canCast() const noexcept -> bool { - std::shared_lock lock(m_mutex_); - try { - if constexpr (std::is_reference_v) { - return m_data_->mObj.type() == - typeid( - std::reference_wrapper>); - } else { - std::any_cast(m_data_->mObj); - return true; - } - } catch (const std::bad_any_cast&) { - return false; - } - } - - /*! - * \brief Get a debug string representation of the BoxedValue. - * \return A string representing the BoxedValue. - */ - [[nodiscard]] auto debugString() const -> std::string { - std::ostringstream oss; - oss << "BoxedValue<" << m_data_->mTypeInfo.name() << ">: "; - std::shared_lock lock(m_mutex_); - if (auto* intPtr = std::any_cast(&m_data_->mObj)) { - oss << *intPtr; - } else if (auto* doublePtr = std::any_cast(&m_data_->mObj)) { - oss << *doublePtr; - } else if (auto* strPtr = std::any_cast(&m_data_->mObj)) { - oss << *strPtr; - } else { - oss << "unknown type"; - } - return oss.str(); - } - - /*! - * \brief Destructor. - */ - ~BoxedValue() = default; -}; - -/*! - * \brief Helper function to create a BoxedValue instance. - * \tparam T The type of the value. - * \param value The value to be encapsulated. - * \return A BoxedValue instance. - */ -template -auto var(T&& value) -> BoxedValue { - using DecayedType = std::decay_t; - constexpr bool IS_REF_WRAPPER = - std::is_same_v>>; - return BoxedValue(std::forward(value), IS_REF_WRAPPER, false); -} - -/*! - * \brief Helper function to create a constant BoxedValue instance. - * \tparam T The type of the value. - * \param value The constant value to be encapsulated. - * \return A BoxedValue instance. - */ -template -auto constVar(const T& value) -> BoxedValue { - using DecayedType = std::decay_t; - constexpr bool IS_REF_WRAPPER = - std::is_same_v>>; - return BoxedValue(std::cref(value), IS_REF_WRAPPER, true); -} - -inline auto voidVar() -> BoxedValue { return {}; } - -/*! - * \brief Helper function to create a BoxedValue instance with additional - * options. \tparam T The type of the value. \param value The value to be - * encapsulated. \param is_return_value Indicates if the value is a return - * value. \param readonly Indicates if the value is read-only. \return A - * BoxedValue instance. - */ -template -auto makeBoxedValue(T&& value, bool is_return_value = false, - bool readonly = false) -> BoxedValue { - if constexpr (std::is_reference_v) { - return BoxedValue(std::ref(value), is_return_value, readonly); - } else { - return BoxedValue(std::forward(value), is_return_value, readonly); - } -} - -} // namespace atom::meta - -#endif // ATOM_META_ANY_HPP diff --git a/src/atom/function/anymeta.hpp b/src/atom/function/anymeta.hpp deleted file mode 100644 index e0d3e5c7..00000000 --- a/src/atom/function/anymeta.hpp +++ /dev/null @@ -1,318 +0,0 @@ -/*! - * \file anymeta.hpp - * \brief Enhanced Type Metadata with Dynamic Reflection, Method Overloads, and - * Event System \author Max Qian \date 2023-12-28 \copyright - * Copyright (C) 2023-2024 Max Qian - */ - -#ifndef ATOM_META_ANYMETA_HPP -#define ATOM_META_ANYMETA_HPP - -#include "any.hpp" -#include "type_info.hpp" - -#include -#include -#include -#include -#include -#include -#include - -#include "atom/error/exception.hpp" - -#include "atom/macro.hpp" - -namespace atom::meta { -class TypeMetadata { -public: - using MethodFunction = std::function)>; - using GetterFunction = std::function; - using SetterFunction = std::function; - using ConstructorFunction = - std::function)>; - using EventCallback = - std::function&)>; - - struct ATOM_ALIGNAS(64) Property { - GetterFunction getter; - SetterFunction setter; - BoxedValue default_value; - std::string description; - }; - - struct ATOM_ALIGNAS(32) Event { - std::vector> - listeners; // Pair of priority and callback - std::string description; - }; - -private: - std::unordered_map> - m_methods_; // Supports overloaded methods - std::unordered_map m_properties_; - std::unordered_map> - m_constructors_; - std::unordered_map m_events_; - -public: - // Add overloaded method to type metadata - void addMethod(const std::string& name, MethodFunction method) { - m_methods_[name].push_back(std::move(method)); - } - - // Remove method by name - void removeMethod(const std::string& name) { m_methods_.erase(name); } - - // Add property (getter and setter) to type metadata - void addProperty(const std::string& name, GetterFunction getter, - SetterFunction setter, BoxedValue default_value = {}, - const std::string& description = "") { - m_properties_[name] = {std::move(getter), std::move(setter), - std::move(default_value), description}; - } - - // Remove property by name - void removeProperty(const std::string& name) { m_properties_.erase(name); } - - // Add constructor to type metadata with an associated type name - void addConstructor(const std::string& type_name, - ConstructorFunction constructor) { - m_constructors_[type_name].push_back(std::move(constructor)); - } - - // Add event to type metadata - void addEvent(const std::string& event_name, - const std::string& description = "") { - m_events_[event_name].description = - description; // Creates an empty event with description - } - - // Remove event by name - void removeEvent(const std::string& event_name) { - m_events_.erase(event_name); - } - - // Add event listener to a specific event with priority - void addEventListener(const std::string& event_name, EventCallback callback, - int priority = 0) { - m_events_[event_name].listeners.emplace_back(priority, - std::move(callback)); - std::sort(m_events_[event_name].listeners.begin(), - m_events_[event_name].listeners.end(), - [](const auto& a, const auto& b) { - return a.first > b.first; // Higher priority first - }); - } - - // Fire event and notify listeners - void fireEvent(BoxedValue& obj, const std::string& event_name, - const std::vector& args) const { - if (auto eventIter = m_events_.find(event_name); - eventIter != m_events_.end()) { - for (const auto& [priority, listener] : - eventIter->second.listeners) { - listener(obj, args); - } - } else { - std::cerr << "Event " << event_name << " not found." << std::endl; - } - } - - // Retrieve all overloaded methods by name - [[nodiscard]] auto getMethods(const std::string& name) const - -> std::optional*> { - if (auto methodIter = m_methods_.find(name); - methodIter != m_methods_.end()) { - return &methodIter->second; - } - return std::nullopt; - } - - // Retrieve property by name - [[nodiscard]] auto getProperty(const std::string& name) const - -> std::optional { - if (auto propertyIter = m_properties_.find(name); - propertyIter != m_properties_.end()) { - return propertyIter->second; - } - return std::nullopt; - } - - // Retrieve constructor by index (defaults to the first constructor) - [[nodiscard]] auto getConstructor(const std::string& type_name, - size_t index = 0) const - -> std::optional { - if (auto constructorIter = m_constructors_.find(type_name); - constructorIter != m_constructors_.end()) { - if (index < constructorIter->second.size()) { - return constructorIter->second[index]; - } - } - return std::nullopt; - } - - // Retrieve event by name - [[nodiscard]] auto getEvent(const std::string& name) const - -> std::optional { - if (auto eventIter = m_events_.find(name); - eventIter != m_events_.end()) { - return &eventIter->second; - } - return std::nullopt; - } -}; - -class TypeRegistry { -private: - std::unordered_map m_registry_; - mutable std::shared_mutex m_mutex_; - -public: - // Singleton pattern to retrieve the global type registry - static auto instance() -> TypeRegistry& { - static TypeRegistry registry; - return registry; - } - - // Register a type and its metadata - void registerType(const std::string& name, TypeMetadata metadata) { - std::unique_lock lock(m_mutex_); - m_registry_[name] = std::move(metadata); - } - - // Retrieve metadata for a registered type - [[nodiscard]] auto getMetadata(const std::string& name) const - -> std::optional { - std::shared_lock lock(m_mutex_); - if (auto registryIter = m_registry_.find(name); - registryIter != m_registry_.end()) { - return registryIter->second; - } - return std::nullopt; - } -}; - -// Helper function to dynamically call overloaded methods on BoxedValue objects -inline auto callMethod(BoxedValue& obj, const std::string& method_name, - std::vector args) -> BoxedValue { - if (auto metadata = - TypeRegistry::instance().getMetadata(obj.getTypeInfo().name()); - metadata) { - if (auto methods = metadata->getMethods(method_name); methods) { - for (const auto& method : **methods) { - // TODO: FIX ME - 参数类型匹配逻辑: - // 确保传入的参数与方法期望的参数类型一致 - /* - auto argTypesMatch = true; - for (size_t i = 0; i < args.size(); ++i) { - if (args[i].getTypeInfo() != method.argument_type(i)) { - argTypesMatch = false; - break; - } - } - */ - // if (argTypesMatch) { - return method(args); - //} - } - } - } - THROW_NOT_FOUND("Method not found or no matching overload found"); -} - -// Helper function to dynamically get properties from BoxedValue objects -inline auto getProperty(const BoxedValue& obj, - const std::string& property_name) -> BoxedValue { - if (auto metadata = - TypeRegistry::instance().getMetadata(obj.getTypeInfo().name()); - metadata) { - if (auto property = metadata->getProperty(property_name); property) { - return (*property).getter( - obj); // 修复后的代码,正确调用 getter 函数 - } - } - THROW_NOT_FOUND("Property not found"); -} - -// Helper function to dynamically set properties on BoxedValue objects -inline void setProperty(BoxedValue& obj, const std::string& property_name, - const BoxedValue& value) { - if (auto metadata = - TypeRegistry::instance().getMetadata(obj.getTypeInfo().name()); - metadata) { - if (auto property = metadata->getProperty(property_name); property) { - property->setter(obj, value); - return; - } - } - THROW_NOT_FOUND("Property not found"); -} - -// Helper function to fire events on BoxedValue objects -inline void fireEvent(BoxedValue& obj, const std::string& event_name, - const std::vector& args) { - if (auto metadata = - TypeRegistry::instance().getMetadata(obj.getTypeInfo().name()); - metadata) { - metadata->fireEvent(obj, event_name, args); - } else { - std::cerr << "Event not found." << std::endl; - } -} - -// Factory function to dynamically construct an object by type name -inline auto createInstance(const std::string& type_name, - std::vector args) -> BoxedValue { - if (auto metadata = TypeRegistry::instance().getMetadata(type_name); - metadata) { - if (auto constructor = metadata->getConstructor(type_name); - constructor) { - return (*constructor)(std::move(args)); - } - } - THROW_NOT_FOUND("Constructor not found"); -} - -// Reflective registration of types, methods, properties, and events leveraging -// C++20 features -template -class TypeRegistrar { -public: - // Register a type with metadata - static void registerType(const std::string& type_name) { - TypeMetadata metadata; - - // Register default constructor - metadata.addConstructor( - type_name, [](std::vector args) -> BoxedValue { - if (args.empty()) { - return BoxedValue(T{}); // Default constructor - } - return BoxedValue{}; // Placeholder for more complex - // constructors - }); - - // Register events - metadata.addEvent("onCreate", "Triggered when an object is created"); - metadata.addEvent("onDestroy", "Triggered when an object is destroyed"); - - // Add methods, properties, events dynamically as needed - metadata.addMethod( - "print", [](std::vector args) -> BoxedValue { - if (!args.empty()) { - std::cout << "Method print called with value: " - << args[0].debugString() << std::endl; - return BoxedValue{}; - } - return BoxedValue{}; - }); - - // Register type in the global registry - TypeRegistry::instance().registerType(type_name, std::move(metadata)); - } -}; - -} // namespace atom::meta - -#endif // ATOM_META_ANYMETA_HPP diff --git a/src/atom/function/bind_first.hpp b/src/atom/function/bind_first.hpp deleted file mode 100644 index c01dcb16..00000000 --- a/src/atom/function/bind_first.hpp +++ /dev/null @@ -1,153 +0,0 @@ -/*! - * \file bind_first.hpp - * \brief An easy way to bind a function to an object - * \author Max Qian - * \date 2024-03-01 - * \copyright Copyright (C) 2023-2024 Max Qian - */ - -#ifndef ATOM_META_BIND_FIRST_HPP -#define ATOM_META_BIND_FIRST_HPP - -#include -#include -#include -#include - -namespace atom::meta { -template -constexpr auto getPointer(T *ptr) noexcept -> T * { - return ptr; -} - -template -auto getPointer(const std::reference_wrapper &ref) noexcept -> T * { - return &ref.get(); -} - -template -constexpr auto getPointer(const T &ref) noexcept -> const T * { - return &ref; -} - -template -constexpr auto removeConstPointer(const T *ptr) noexcept -> T * { - return const_cast(ptr); -} - -template -concept invocable = std::is_invocable_v; - -template -concept nothrow_invocable = std::is_nothrow_invocable_v; - -template -constexpr bool IS_INVOCABLE_V = invocable; - -template -constexpr bool IS_NOTHROW_INVOCABLE_V = std::is_nothrow_invocable_v; - -template -constexpr auto bindFirst(Ret (*func)(P1, Param...), O &&object) - requires invocable -{ - return [func, object = std::forward(object)](Param... param) -> Ret { - return func(object, std::forward(param)...); - }; -} - -template -constexpr auto bindFirst(Ret (Class::*func)(Param...), O &&object) - requires invocable -{ - return [func, object = std::forward(object)](Param... param) -> Ret { - return (removeConstPointer(getPointer(object))->*func)( - std::forward(param)...); - }; -} - -template -constexpr auto bindFirst(Ret (Class::*func)(Param...) const, O &&object) - requires invocable -{ - return [func, object = std::forward(object)](Param... param) -> Ret { - return (getPointer(object)->*func)(std::forward(param)...); - }; -} - -template -auto bindFirst(const std::function &func, O &&object) - requires invocable, O, Param...> -{ - return [func, object = std::forward(object)](Param... param) -> Ret { - return func(object, std::forward(param)...); - }; -} - -template -constexpr auto bindFirst(const F &funcObj, O &&object, - Ret (Class::*func)(P1, Param...) const) - requires invocable -{ - return [funcObj, object = std::forward(object), - func](Param... param) -> Ret { - return (funcObj.*func)(object, std::forward(param)...); - }; -} - -template -constexpr auto bindFirst(const F &func, O &&object) - requires invocable -{ - return bindFirst(func, std::forward(object), &F::operator()); -} - -template -constexpr auto bindFirst(F &&func, O &&object) - requires std::invocable -{ - return [func = std::forward(func), object = std::forward(object)]( - auto &&...param) -> decltype(auto) { - return std::invoke(func, object, - std::forward(param)...); - }; -} - -template -constexpr auto bindMember(T Class::*member, O &&object) noexcept { - return [member, object = std::forward(object)]() -> T & { - return removeConstPointer(getPointer(object))->*member; - }; -} - -template -constexpr auto bindStatic(Ret (*func)(Param...)) noexcept { - return [func](Param... param) -> Ret { - return func(std::forward(param)...); - }; -} - -template -auto asyncBindFirst(F &&func, Args &&...args) { - return std::async(std::launch::async, std::forward(func), - std::forward(args)...); -} - -template -constexpr auto bindFirstWithExceptionHandling(Ret (*func)(P1, Param...), - O &&object) - requires invocable -{ - return [func, object = std::forward(object)](Param... param) -> Ret { - try { - return func(object, std::forward(param)...); - } catch (const std::exception &e) { - throw; - } - }; -} - -} // namespace atom::meta - -#endif // ATOM_META_BIND_FIRST_HPP diff --git a/src/atom/function/concept.hpp b/src/atom/function/concept.hpp deleted file mode 100644 index feda85cc..00000000 --- a/src/atom/function/concept.hpp +++ /dev/null @@ -1,361 +0,0 @@ -/*! - * \file concept.hpp - * \brief C++ Concepts - * \author Max Qian - * \date 2024-03-01 - * \copyright Copyright (C) 2023-2024 Max Qian - */ - -#ifndef ATOM_META_CONCEPT_HPP -#define ATOM_META_CONCEPT_HPP - -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus < 202002L -#error "C++20 is required for this library" -#endif - -// ----------------------------------------------------------------------------- -// Function Concepts -// ----------------------------------------------------------------------------- - -template -concept Invocable = requires(F func, Args&&... args) { - { std::invoke(func, std::forward(args)...) }; -}; - -template -concept InvocableR = requires(F func, Args&&... args) { - { - std::invoke(func, std::forward(args)...) - } -> std::convertible_to; -}; - -template -concept NothrowInvocable = requires(F func, Args&&... args) { - { std::invoke(func, std::forward(args)...) } noexcept; -}; - -template -concept NothrowInvocableR = requires(F func, Args&&... args) { - { - std::invoke(func, std::forward(args)...) - } noexcept -> std::convertible_to; -}; - -template -concept FunctionPointer = std::is_function_v>; - -template -concept Callable = requires(T obj) { - { std::function{std::declval()} }; -}; - -template -concept CallableReturns = std::is_invocable_r_v; - -template -concept CallableNoexcept = requires(T obj, Args&&... args) { - { obj(std::forward(args)...) } noexcept; -}; - -template -concept StdFunction = requires { - typename T::result_type; - requires std::is_same_v< - T, std::function>; -}; - -// ----------------------------------------------------------------------------- -// Object Concepts -// ----------------------------------------------------------------------------- - -template -concept Relocatable = requires(T obj) { - { std::is_nothrow_move_constructible_v } -> std::convertible_to; - { std::is_nothrow_move_assignable_v } -> std::convertible_to; -}; - -template -concept DefaultConstructible = requires(T obj) { - { T() } -> std::same_as; -}; - -template -concept CopyConstructible = requires(T obj) { - { T(obj) } -> std::same_as; -}; - -template -concept CopyAssignable = requires(T obj) { - { obj = obj } -> std::same_as; -}; - -template -concept MoveAssignable = requires(T obj) { - { obj = std::move(obj) } -> std::same_as; -}; - -template -concept EqualityComparable = requires(T obj) { - { obj == obj } -> std::convertible_to; - { obj != obj } -> std::convertible_to; -}; - -template -concept LessThanComparable = requires(T obj) { - { obj < obj } -> std::convertible_to; -}; - -template -concept Hashable = requires(T obj) { - { std::hash{}(obj) } -> std::convertible_to; -}; - -template -concept Swappable = requires(T obj) { std::swap(obj, obj); }; - -template -concept Copyable = - std::is_copy_constructible_v && std::is_copy_assignable_v; - -template -concept Destructible = requires(T obj) { - { obj.~T() } -> std::same_as; -}; - -// ----------------------------------------------------------------------------- -// Type Concepts -// ----------------------------------------------------------------------------- - -template -concept Arithmetic = std::is_arithmetic_v; - -template -concept Integral = std::is_integral_v; - -template -concept FloatingPoint = std::is_floating_point_v; - -template -concept SignedInteger = std::is_integral_v && std::is_signed_v; - -template -concept UnsignedInteger = std::is_integral_v && std::is_unsigned_v; - -template -concept Number = Arithmetic || Integral || FloatingPoint; - -#if __has_include() -#include -template -concept ComplexNumber = requires(T obj) { - typename T::value_type; - requires std::is_same_v>; -}; -#endif - -template -concept Char = std::is_same_v; - -template -concept WChar = std::is_same_v; - -template -concept Char16 = std::is_same_v; - -template -concept Char32 = std::is_same_v; - -template -concept AnyChar = Char || WChar || Char16 || Char32; - -template -concept StringType = - std::is_same_v || std::is_same_v || - std::is_same_v || std::is_same_v || - std::is_same_v || std::is_same_v; - -template -concept IsBuiltIn = std::is_fundamental_v || StringType; - -template -concept Enum = std::is_enum_v; - -template -concept Pointer = std::is_pointer_v; - -template -concept UniquePointer = requires(T obj) { - requires std::is_same_v>; -}; - -template -concept SharedPointer = requires(T obj) { - requires std::is_same_v>; -}; - -template -concept WeakPointer = requires(T obj) { - requires std::is_same_v>; -}; - -template -concept SmartPointer = UniquePointer || SharedPointer || WeakPointer; - -template -concept Reference = std::is_reference_v; - -template -concept LvalueReference = std::is_lvalue_reference_v; - -template -concept RvalueReference = std::is_rvalue_reference_v; - -template -concept Const = std::is_const_v>; - -template -concept Trivial = std::is_trivial_v; - -template -concept TriviallyConstructible = std::is_trivially_constructible_v; - -template -concept TriviallyCopyable = - std::is_trivially_copyable_v && std::is_standard_layout_v; - -// ----------------------------------------------------------------------------- -// Container Concepts -// ----------------------------------------------------------------------------- - -#if __has_include() -#include - -template -concept Iterable = requires(T obj) { - { obj.begin() } -> std::forward_iterator; - { obj.end() } -> std::forward_iterator; -}; - -template -concept Container = requires(T obj) { - { obj.size() } -> std::convertible_to; - requires Iterable; -}; - -template -concept StringContainer = requires(T obj) { - typename T::value_type; - requires StringType || Char; - { obj.push_back(std::declval()) }; -}; - -template -concept NumberContainer = requires(T obj) { - typename T::value_type; - requires Number; - { obj.push_back(std::declval()) }; -}; - -template -concept AssociativeContainer = requires(T obj) { - typename T::key_type; - typename T::mapped_type; - requires Container; -}; - -template -concept Iterator = requires(T iter) { - { - *iter - } -> std::convertible_to::value_type>; - { ++iter } -> std::same_as; - { iter++ } -> std::convertible_to; -}; - -template -concept NotSequenceContainer = - !std::is_same_v> && - !std::is_same_v> && - !std::is_same_v>; - -template -concept NotAssociativeOrSequenceContainer = - !std::is_same_v> && - !std::is_same_v< - T, std::unordered_map> && - !std::is_same_v< - T, std::multimap> && - !std::is_same_v> && - !NotSequenceContainer; - -template -concept String = NotSequenceContainer && requires(T obj) { - { obj.size() } -> std::convertible_to; - { obj.empty() } -> std::convertible_to; - { obj.begin() } -> std::convertible_to; - { obj.end() } -> std::convertible_to; -}; - -// ----------------------------------------------------------------------------- -// Multi-threading Concepts -// ----------------------------------------------------------------------------- - -template -concept Lockable = requires(T obj) { - { obj.lock() } -> std::same_as; - { obj.unlock() } -> std::same_as; -}; - -template -concept SharedLockable = requires(T obj) { - { obj.lock_shared() } -> std::same_as; - { obj.unlock_shared() } -> std::same_as; -}; - -template -concept Mutex = Lockable && requires(T obj) { - { obj.try_lock() } -> std::same_as; -}; - -template -concept SharedMutex = SharedLockable && requires(T obj) { - { obj.try_lock_shared() } -> std::same_as; -}; - -// ----------------------------------------------------------------------------- -// Asynchronous Concepts -// ----------------------------------------------------------------------------- - -template -concept Future = requires(T obj) { - { obj.get() } -> std::same_as; - { obj.wait() } -> std::same_as; -}; - -template -concept Promise = requires(T obj) { - { - obj.set_value(std::declval()) - } -> std::same_as; - { - obj.set_exception(std::declval()) - } -> std::same_as; -}; - -template -concept AsyncResult = Future || Promise; - -#endif - -#endif diff --git a/src/atom/function/constructor.hpp b/src/atom/function/constructor.hpp deleted file mode 100644 index a15df8f9..00000000 --- a/src/atom/function/constructor.hpp +++ /dev/null @@ -1,245 +0,0 @@ -/*! - * \file constructors.hpp - * \brief C++ Function Constructors - * \author Max Qian - * \date 2024-03-01 - * \copyright Copyright (C) 2023-2024 Max Qian - */ - -#ifndef ATOM_META_CONSTRUCTOR_HPP -#define ATOM_META_CONSTRUCTOR_HPP - -#include -#include -#include - -#include "atom/error/exception.hpp" -#include "func_traits.hpp" - -namespace atom::meta { - -/*! - * \brief Binds a member function to an object. - * \tparam MemberFunc Type of the member function. - * \tparam ClassType Type of the class. - * \param member_func Pointer to the member function. - * \return A lambda that binds the member function to an object. - */ -template -auto bindMemberFunction(MemberFunc ClassType::*member_func) { - return [member_func](ClassType &obj, auto &&...params) { - if constexpr (FunctionTraits::is_const_member_function) { - return (std::as_const(obj).* - member_func)(std::forward(params)...); - } else { - return (obj.* - member_func)(std::forward(params)...); - } - }; -} - -/*! - * \brief Binds a static function. - * \tparam Func Type of the function. - * \param func The static function. - * \return The static function itself. - */ -template -auto bindStaticFunction(Func func) { - return func; -} - -/*! - * \brief Binds a member variable to an object. - * \tparam MemberType Type of the member variable. - * \tparam ClassType Type of the class. - * \param member_var Pointer to the member variable. - * \return A lambda that binds the member variable to an object. - */ -template -auto bindMemberVariable(MemberType ClassType::*member_var) { - return [member_var](ClassType &instance) -> MemberType & { - return instance.*member_var; - }; -} - -/*! - * \brief Builds a shared constructor for a class. - * \tparam Class Type of the class. - * \tparam Params Types of the constructor parameters. - * \param unused Unused parameter to deduce types. - * \return A lambda that constructs a shared pointer to the class. - */ -template -auto buildSharedConstructor(Class (* /*unused*/)(Params...)) { - return [](auto &&...params) { - return std::make_shared( - std::forward(params)...); - }; -} - -/*! - * \brief Builds a copy constructor for a class. - * \tparam Class Type of the class. - * \tparam Params Types of the constructor parameters. - * \param unused Unused parameter to deduce types. - * \return A lambda that constructs an instance of the class. - */ -template -auto buildCopyConstructor(Class (* /*unused*/)(Params...)) { - return [](auto &&...params) { - return Class(std::forward(params)...); - }; -} - -/*! - * \brief Builds a plain constructor for a class. - * \tparam Class Type of the class. - * \tparam Params Types of the constructor parameters. - * \param unused Unused parameter to deduce types. - * \return A lambda that constructs an instance of the class. - */ -template -auto buildPlainConstructor(Class (* /*unused*/)(Params...)) { - return [](auto &&...params) { - return Class(std::forward(params)...); - }; -} - -/*! - * \brief Builds a constructor for a class with specified arguments. - * \tparam Class Type of the class. - * \tparam Args Types of the constructor arguments. - * \return A lambda that constructs a shared pointer to the class. - */ -template -auto buildConstructor() { - return [](Args... args) -> std::shared_ptr { - return std::make_shared(std::forward(args)...); - }; -} - -/*! - * \brief Builds a default constructor for a class. - * \tparam Class Type of the class. - * \return A lambda that constructs an instance of the class. - */ -template -auto buildDefaultConstructor() { - return []() { return Class(); }; -} - -/*! - * \brief Constructs an instance of a class based on its traits. - * \tparam T Type of the function. - * \return A lambda that constructs an instance of the class. - */ -template -auto constructor() { - T *func = nullptr; - using ClassType = typename FunctionTraits::class_type; - - if constexpr (!std::is_copy_constructible_v) { - return buildSharedConstructor(func); - } else { - return buildCopyConstructor(func); - } -} - -/*! - * \brief Constructs an instance of a class with specified arguments. - * \tparam Class Type of the class. - * \tparam Args Types of the constructor arguments. - * \return A lambda that constructs a shared pointer to the class. - */ -template -auto constructor() { - return buildConstructor(); -} - -/*! - * \brief Constructs an instance of a class using the default constructor. - * \tparam Class Type of the class. - * \return A lambda that constructs an instance of the class. - * \throws Exception if the class is not default constructible. - */ -template -auto defaultConstructor() { - if constexpr (std::is_default_constructible_v) { - return buildDefaultConstructor(); - } else { - THROW_NOT_FOUND("Class is not default constructible"); - } -} - -/*! - * \brief Constructs an instance of a class using a move constructor. - * \tparam Class Type of the class. - * \return A lambda that constructs an instance of the class using a move - * constructor. - */ -template -auto buildMoveConstructor() { - return [](Class &&instance) { return Class(std::move(instance)); }; -} - -/*! - * \brief Constructs an instance of a class using an initializer list. - * \tparam Class Type of the class. - * \tparam T Type of the elements in the initializer list. - * \return A lambda that constructs an instance of the class using an - * initializer list. - */ -template -auto buildInitializerListConstructor() { - return [](std::initializer_list init_list) { return Class(init_list); }; -} - -/*! - * \brief Constructs an instance of a class asynchronously. - * \tparam Class Type of the class. - * \tparam Args Types of the constructor arguments. - * \return A future that constructs an instance of the class. - */ -template -auto asyncConstructor() { - return [](Args... args) -> std::future> { - return std::async( - std::launch::async, - [](Args... args) { - return std::make_shared(std::forward(args)...); - }, - std::forward(args)...); - }; -} - -/*! - * \brief Constructs a singleton instance of a class. - * \tparam Class Type of the class. - * \return A lambda that constructs a singleton instance of the class. - */ -template -auto singletonConstructor() { - return []() -> std::shared_ptr { - static std::shared_ptr instance = std::make_shared(); - return instance; - }; -} - -/*! - * \brief Constructs an instance of a class using a custom constructor. - * \tparam Class Type of the class. - * \tparam CustomConstructor Type of the custom constructor. - * \return A lambda that constructs an instance of the class using the custom - * constructor. - */ -template -auto customConstructor(CustomConstructor custom_constructor) { - return [custom_constructor](auto &&...args) { - return custom_constructor(std::forward(args)...); - }; -} - -} // namespace atom::meta - -#endif // ATOM_META_CONSTRUCTOR_HPP diff --git a/src/atom/function/conversion.hpp b/src/atom/function/conversion.hpp deleted file mode 100644 index 944a1bbc..00000000 --- a/src/atom/function/conversion.hpp +++ /dev/null @@ -1,513 +0,0 @@ -#ifndef ATOM_META_CONVERSION_HPP -#define ATOM_META_CONVERSION_HPP - -#include -#include -#include -#include -#include -#include "atom/macro.hpp" - -#if ENABLE_FASTHASH -#include "emhash/hash_table8.hpp" -#else -#include -#endif - -#include "atom/error/exception.hpp" -#include "type_info.hpp" - -namespace atom::meta { - -class BadConversionException : public error::RuntimeError { - using atom::error::RuntimeError::RuntimeError; -}; - -#define THROW_CONVERSION_ERROR(...) \ - throw BadConversionException(ATOM_FILE_NAME, ATOM_FILE_LINE, \ - ATOM_FUNC_NAME, __VA_ARGS__) - -class TypeConversionBase { -public: - ATOM_NODISCARD virtual auto convert(const std::any& from) const - -> std::any = 0; - ATOM_NODISCARD virtual auto convertDown(const std::any& toAny) const - -> std::any = 0; - - ATOM_NODISCARD virtual auto to() const ATOM_NOEXCEPT -> const TypeInfo& { - return toType; - } - ATOM_NODISCARD virtual auto from() const ATOM_NOEXCEPT -> const TypeInfo& { - return fromType; - } - - ATOM_NODISCARD auto getFromType() const ATOM_NOEXCEPT -> const TypeInfo& { - return fromType; - } - - ATOM_NODISCARD auto getToType() const ATOM_NOEXCEPT -> const TypeInfo& { - return toType; - } - - ATOM_NODISCARD virtual auto bidir() const ATOM_NOEXCEPT -> bool { - return true; - } - - virtual ~TypeConversionBase() = default; - - TypeConversionBase(const TypeConversionBase&) = default; - TypeConversionBase& operator=(const TypeConversionBase&) = default; - TypeConversionBase(TypeConversionBase&&) = default; - TypeConversionBase& operator=(TypeConversionBase&&) = default; - -protected: - TypeConversionBase(const TypeInfo& toTypeInfo, const TypeInfo& fromTypeInfo) - : toType(toTypeInfo), fromType(fromTypeInfo) {} - - TypeInfo toType; - TypeInfo fromType; -}; - -template -class StaticConversion : public TypeConversionBase { -public: - StaticConversion() : TypeConversionBase(userType(), userType()) {} - - ATOM_NODISCARD auto convert(const std::any& from) const - -> std::any override { - // Pointer types static conversion (upcasting) - try { - if constexpr (std::is_pointer_v && std::is_pointer_v) { - auto fromPtr = std::any_cast(from); - return std::any(static_cast(fromPtr)); - } - // Reference types static conversion (upcasting) - else if constexpr (std::is_reference_v && - std::is_reference_v) { - auto& fromRef = std::any_cast(from); - return std::any(static_cast(fromRef)); - - } else { - THROW_CONVERSION_ERROR("Failed to convert ", fromType.name(), - " to ", toType.name()); - } - } catch (const std::bad_cast&) { - THROW_CONVERSION_ERROR("Failed to convert ", fromType.name(), - " to ", toType.name()); - } - } - - ATOM_NODISCARD auto convertDown(const std::any& toAny) const - -> std::any override { - // Pointer types static conversion (downcasting) - try { - if constexpr (std::is_pointer_v && std::is_pointer_v) { - auto toPtr = std::any_cast(toAny); - return std::any(static_cast(toPtr)); - } - // Reference types static conversion (downcasting) - else if constexpr (std::is_reference_v && - std::is_reference_v) { - auto& toRef = std::any_cast(toAny); - return std::any(static_cast(toRef)); - - } else { - THROW_CONVERSION_ERROR("Failed to convert ", toType.name(), - " to ", fromType.name()); - } - } catch (const std::bad_cast&) { - THROW_CONVERSION_ERROR("Failed to convert ", toType.name(), " to ", - fromType.name()); - } - } -}; - -template -class DynamicConversion : public TypeConversionBase { -public: - DynamicConversion() - : TypeConversionBase(userType(), userType()) {} - - ATOM_NODISCARD auto convert(const std::any& from) const - -> std::any override { - // Pointer types dynamic conversion - if constexpr (std::is_pointer_v && std::is_pointer_v) { - auto fromPtr = std::any_cast(from); - auto convertedPtr = dynamic_cast(fromPtr); - if (!convertedPtr && fromPtr != nullptr) { - throw std::bad_cast(); - } - return std::any(convertedPtr); - } - // Reference types dynamic conversion - else if constexpr (std::is_reference_v && - std::is_reference_v) { - try { - auto& fromRef = std::any_cast(from); - return std::any(dynamic_cast(fromRef)); - } catch (const std::bad_cast&) { - THROW_CONVERSION_ERROR("Failed to convert ", fromType.name(), - " to ", toType.name()); - } - } else { - THROW_CONVERSION_ERROR("Failed to convert ", fromType.name(), - " to ", toType.name()); - } - } - - ATOM_NODISCARD auto convertDown(const std::any& toAny) const - -> std::any override { - // Pointer types dynamic conversion - if constexpr (std::is_pointer_v && std::is_pointer_v) { - auto toPtr = std::any_cast(toAny); - auto convertedPtr = dynamic_cast(toPtr); - if (!convertedPtr && toPtr != nullptr) { - throw std::bad_cast(); - } - return std::any(convertedPtr); - } - // Reference types dynamic conversion - else if constexpr (std::is_reference_v && - std::is_reference_v) { - try { - auto& toRef = std::any_cast(toAny); - return std::any(dynamic_cast(toRef)); - } catch (const std::bad_cast&) { - THROW_CONVERSION_ERROR("Failed to convert ", toType.name(), - " to ", fromType.name()); - } - } else { - THROW_CONVERSION_ERROR("Failed to convert ", toType.name(), " to ", - fromType.name()); - } - } -}; - -template -auto baseClass() -> std::shared_ptr { - if constexpr (std::is_polymorphic_v && - std::is_polymorphic_v) { - return std::make_shared>(); - } else { - return std::make_shared>(); - } -} - -// Specialized conversion for std::vector -template -class VectorConversion : public TypeConversionBase { -public: - VectorConversion() - : TypeConversionBase(userType>(), - userType>()) {} - - [[nodiscard]] auto convert(const std::any& from) const - -> std::any override { - try { - const auto& fromVec = std::any_cast&>(from); - std::vector toVec; - toVec.reserve(fromVec.size()); - - for (const auto& elem : fromVec) { - // Convert each element using dynamic cast - auto convertedElem = - std::dynamic_pointer_cast(elem); - if (!convertedElem) { - throw std::bad_cast(); - } - toVec.push_back(convertedElem); - } - - return std::any(toVec); - } catch (const std::bad_any_cast&) { - THROW_CONVERSION_ERROR("Failed to convert ", fromType.name(), - " to ", toType.name()); - } - } - - ATOM_NODISCARD auto convertDown(const std::any& toAny) const - -> std::any override { - try { - const auto& toVec = std::any_cast&>(toAny); - std::vector fromVec; - fromVec.reserve(toVec.size()); - - for (const auto& elem : toVec) { - // Convert each element using dynamic cast - auto convertedElem = - std::dynamic_pointer_cast( - elem); - if (!convertedElem) { - throw std::bad_cast(); - } - fromVec.push_back(convertedElem); - } - - return std::any(fromVec); - } catch (const std::bad_any_cast&) { - THROW_CONVERSION_ERROR("Failed to convert ", toType.name(), " to ", - fromType.name()); - } - } -}; - -template